diff options
| author | Siluxsept <ronny.horn.rh@gmail.com> | 2024-02-06 04:37:40 +0100 |
|---|---|---|
| committer | Siluxsept <ronny.horn.rh@gmail.com> | 2024-02-06 04:38:56 +0100 |
| commit | 8e8137ac800bdc27181743ec73d0e90e28b4e8af (patch) | |
| tree | 7e2fbc9d9e305e46414c21d08eeaeb1d56ccb0f0 | |
| parent | 9c2f9bfc860f0cd6f2d3320b5f72a0f4adf24b25 (diff) | |
merge branch lineage-20 into t13.0t13.0
https: //github.com/LineageOS/android_kernel_google_redbull
Change-Id: I4a450eb794cc99abf711ad3b5b82946092be84ba
625 files changed, 8230 insertions, 5089 deletions
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index d10bcca6c3fb..b3adbb33a868 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio @@ -135,7 +135,7 @@ Description: Raw capacitance measurement from channel Y. Units after application of scale and offset are nanofarads. -What: /sys/.../iio:deviceX/in_capacitanceY-in_capacitanceZ_raw +What: /sys/.../iio:deviceX/in_capacitanceY-capacitanceZ_raw KernelVersion: 3.2 Contact: linux-iio@vger.kernel.org Description: diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 92f656b29135..66d09b102bdb 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4169,6 +4169,18 @@ retain_initrd [RAM] Keep initrd memory after extraction + retbleed= [X86] Control mitigation of RETBleed (Arbitrary + Speculative Code Execution with Return Instructions) + vulnerability. + + off - unconditionally disable + auto - automatically select a migitation + + Selecting 'auto' will choose a mitigation method at run + time according to the CPU. + + Not specifying this option is equivalent to retbleed=auto. + rfkill.default_state= 0 "airplane mode". All wifi, bluetooth, wimax, gps, fm, etc. communication is blocked by default. @@ -4414,6 +4426,7 @@ eibrs - enhanced IBRS eibrs,retpoline - enhanced IBRS + Retpolines eibrs,lfence - enhanced IBRS + LFENCE + ibrs - use IBRS to protect kernel Not specifying this option is equivalent to spectre_v2=auto. diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt index 729e97eb40ba..c31fe4722c66 100644 --- a/Documentation/arm64/silicon-errata.txt +++ b/Documentation/arm64/silicon-errata.txt @@ -55,7 +55,9 @@ stable kernels. | ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 | | ARM | Cortex-A57 | #852523 | N/A | | ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 | +| ARM | Cortex-A57 | #1742098 | ARM64_ERRATUM_1742098 | | ARM | Cortex-A72 | #853709 | N/A | +| ARM | Cortex-A72 | #1655431 | ARM64_ERRATUM_1742098 | | ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 | | ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 | | ARM | Cortex-A76 | #1463225 | ARM64_ERRATUM_1463225 | diff --git a/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt new file mode 100644 index 000000000000..7e14e26676ec --- /dev/null +++ b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt @@ -0,0 +1,45 @@ +MOXA ART DMA Controller + +See dma.txt first + +Required properties: + +- compatible : Must be "moxa,moxart-dma" +- reg : Should contain registers location and length +- interrupts : Should contain an interrupt-specifier for the sole + interrupt generated by the device +- #dma-cells : Should be 1, a single cell holding a line request number + +Example: + + dma: dma@90500000 { + compatible = "moxa,moxart-dma"; + reg = <0x90500080 0x40>; + interrupts = <24 0>; + #dma-cells = <1>; + }; + + +Clients: + +DMA clients connected to the MOXA ART DMA controller must use the format +described in the dma.txt file, using a two-cell specifier for each channel: +a phandle plus one integer cells. +The two cells in order are: + +1. A phandle pointing to the DMA controller. +2. Peripheral identifier for the hardware handshaking interface. + +Example: +Use specific request line passing from dma +For example, MMC request line is 5 + + mmc: mmc@98e00000 { + compatible = "moxa,moxart-mmc"; + reg = <0x98e00000 0x5C>; + interrupts = <5 0>; + clocks = <&clk_apb>; + dmas = <&dma 5>, + <&dma 5>; + dma-names = "tx", "rx"; + }; diff --git a/Documentation/process/code-of-conduct-interpretation.rst b/Documentation/process/code-of-conduct-interpretation.rst index e899f14a4ba2..43da2cc2e3b9 100644 --- a/Documentation/process/code-of-conduct-interpretation.rst +++ b/Documentation/process/code-of-conduct-interpretation.rst @@ -51,7 +51,7 @@ the Technical Advisory Board (TAB) or other maintainers if you're uncertain how to handle situations that come up. It will not be considered a violation report unless you want it to be. If you are uncertain about approaching the TAB or any other maintainers, please -reach out to our conflict mediator, Mishi Choudhary <mishi@linux.com>. +reach out to our conflict mediator, Joanna Lee <jlee@linuxfoundation.org>. In the end, "be kind to each other" is really what the end goal is for everybody. We know everyone is human and we all fail at times, but the diff --git a/Documentation/trace/histogram.rst b/Documentation/trace/histogram.rst index c14dab13a47e..d2849713d37b 100644 --- a/Documentation/trace/histogram.rst +++ b/Documentation/trace/histogram.rst @@ -39,7 +39,7 @@ Documentation written by Tom Zanussi will use the event's kernel stacktrace as the key. The keywords 'keys' or 'key' can be used to specify keys, and the keywords 'values', 'vals', or 'val' can be used to specify values. Compound - keys consisting of up to two fields can be specified by the 'keys' + keys consisting of up to three fields can be specified by the 'keys' keyword. Hashing a compound key produces a unique entry in the table for each unique combination of component keys, and can be useful for providing more fine-grained summaries of event data. @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 261 +SUBLEVEL = 269 EXTRAVERSION = NAME = "People's Front" @@ -779,12 +779,12 @@ endif # Initialize all stack variables with a zero value. ifdef CONFIG_INIT_STACK_ALL_ZERO -# Future support for zero initialization is still being debated, see -# https://bugs.llvm.org/show_bug.cgi?id=45497. These flags are subject to being -# renamed or dropped. KBUILD_CFLAGS += -ftrivial-auto-var-init=zero +ifdef CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER +# https://github.com/llvm/llvm-project/issues/44842 KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang endif +endif KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) @@ -796,7 +796,9 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) else KBUILD_CFLAGS += -g endif -ifneq ($(LLVM_IAS),1) +ifeq ($(LLVM_IAS),1) +KBUILD_AFLAGS += -g +else KBUILD_AFLAGS += -Wa,-gdwarf-2 endif endif diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 26855fe067fb..8544e7d5fd62 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2102,6 +2102,7 @@ # required by qcom_glink_native.ko __irq_set_affinity sched_setaffinity + strscpy_pad # required by qcom_hwspinlock.ko devm_regmap_field_alloc diff --git a/android/abi_gki_aarch64_redbull b/android/abi_gki_aarch64_redbull index 26bf499cffe7..8822deac1782 100644 --- a/android/abi_gki_aarch64_redbull +++ b/android/abi_gki_aarch64_redbull @@ -2104,6 +2104,7 @@ # required by qcom_glink_native.ko __irq_set_affinity sched_setaffinity + strscpy_pad # required by qcom_hwspinlock.ko devm_regmap_field_alloc diff --git a/android/abi_gki_aarch64_redbull.xml b/android/abi_gki_aarch64_redbull.xml index e0209c279571..4c1c19a1c6e9 100644 --- a/android/abi_gki_aarch64_redbull.xml +++ b/android/abi_gki_aarch64_redbull.xml @@ -2068,6 +2068,7 @@ <elf-symbol name='strrchr' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes' crc='0x9f984513'/> <elf-symbol name='strreplace' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x7410aba2'/> <elf-symbol name='strscpy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xdd64e639'/> + <elf-symbol name='strscpy_pad' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfbb8a761'/> <elf-symbol name='strsep' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x85df9b6c'/> <elf-symbol name='strstr' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1e6d26a8'/> <elf-symbol name='suspend_set_ops' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9ac11b74'/> @@ -3583,7 +3584,7 @@ <pointer-type-def type-id='5ea5a07d' size-in-bits='64' id='f69fcfe1'/> <pointer-type-def type-id='449f791f' size-in-bits='64' id='cc3e2efb'/> <typedef-decl name='wait_queue_head_t' type-id='cff07063' filepath='include/linux/wait.h' line='39' column='1' id='b5ab048f'/> - <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/trace_events.h' line='256' column='1' id='7d3eb798'> + <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/trace_events.h' line='256' column='1' id='7d3eb798'> <data-member access='public'> <var-decl name='name' type-id='26a90f95' visibility='default' filepath='include/linux/trace_events.h' line='257' column='1'/> </data-member> @@ -8683,15 +8684,15 @@ <var-decl name='tail' type-id='fb55efa1' visibility='default' filepath='include/linux/bio.h' line='625' column='1'/> </data-member> </class-decl> - <class-decl name='blk_plug' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1328' column='1' id='718a7cd9'> + <class-decl name='blk_plug' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1336' column='1' id='718a7cd9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1329' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1337' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='mq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1330' column='1'/> + <var-decl name='mq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1338' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='cb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1331' column='1'/> + <var-decl name='cb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1339' column='1'/> </data-member> </class-decl> <class-decl name='bpf_map_ops' size-in-bits='1024' is-struct='yes' visibility='default' filepath='include/linux/bpf.h' line='29' column='1' id='90cdb889'> @@ -9984,282 +9985,282 @@ <var-decl name='reclaimed_slab' type-id='7359adad' visibility='default' filepath='include/linux/swap.h' line='130' column='1'/> </data-member> </class-decl> - <class-decl name='request_queue' size-in-bits='19968' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='436' column='1' id='caf652c6'> + <class-decl name='request_queue' size-in-bits='19968' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='444' column='1' id='caf652c6'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='queue_head' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='440' column='1'/> + <var-decl name='queue_head' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='448' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='last_merge' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='441' column='1'/> + <var-decl name='last_merge' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='449' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='elevator' type-id='07d0a3e7' visibility='default' filepath='include/linux/blkdev.h' line='442' column='1'/> + <var-decl name='elevator' type-id='07d0a3e7' visibility='default' filepath='include/linux/blkdev.h' line='450' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='nr_rqs' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='443' column='1'/> + <var-decl name='nr_rqs' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='451' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='nr_rqs_elvpriv' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='444' column='1'/> + <var-decl name='nr_rqs_elvpriv' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='452' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='stats' type-id='a0408c5a' visibility='default' filepath='include/linux/blkdev.h' line='446' column='1'/> + <var-decl name='stats' type-id='a0408c5a' visibility='default' filepath='include/linux/blkdev.h' line='454' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='rq_qos' type-id='c3a28778' visibility='default' filepath='include/linux/blkdev.h' line='447' column='1'/> + <var-decl name='rq_qos' type-id='c3a28778' visibility='default' filepath='include/linux/blkdev.h' line='455' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='root_rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blkdev.h' line='455' column='1'/> + <var-decl name='root_rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blkdev.h' line='463' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='request_fn' type-id='ea3f455e' visibility='default' filepath='include/linux/blkdev.h' line='457' column='1'/> + <var-decl name='request_fn' type-id='ea3f455e' visibility='default' filepath='include/linux/blkdev.h' line='465' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='make_request_fn' type-id='8f01ad5c' visibility='default' filepath='include/linux/blkdev.h' line='458' column='1'/> + <var-decl name='make_request_fn' type-id='8f01ad5c' visibility='default' filepath='include/linux/blkdev.h' line='466' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='poll_fn' type-id='5db4e929' visibility='default' filepath='include/linux/blkdev.h' line='459' column='1'/> + <var-decl name='poll_fn' type-id='5db4e929' visibility='default' filepath='include/linux/blkdev.h' line='467' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='prep_rq_fn' type-id='4c4bf79f' visibility='default' filepath='include/linux/blkdev.h' line='460' column='1'/> + <var-decl name='prep_rq_fn' type-id='4c4bf79f' visibility='default' filepath='include/linux/blkdev.h' line='468' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='unprep_rq_fn' type-id='da623346' visibility='default' filepath='include/linux/blkdev.h' line='461' column='1'/> + <var-decl name='unprep_rq_fn' type-id='da623346' visibility='default' filepath='include/linux/blkdev.h' line='469' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='softirq_done_fn' type-id='c803c0bf' visibility='default' filepath='include/linux/blkdev.h' line='462' column='1'/> + <var-decl name='softirq_done_fn' type-id='c803c0bf' visibility='default' filepath='include/linux/blkdev.h' line='470' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1664'> - <var-decl name='rq_timed_out_fn' type-id='e7a041a6' visibility='default' filepath='include/linux/blkdev.h' line='463' column='1'/> + <var-decl name='rq_timed_out_fn' type-id='e7a041a6' visibility='default' filepath='include/linux/blkdev.h' line='471' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1728'> - <var-decl name='dma_drain_needed' type-id='1b19faa1' visibility='default' filepath='include/linux/blkdev.h' line='464' column='1'/> + <var-decl name='dma_drain_needed' type-id='1b19faa1' visibility='default' filepath='include/linux/blkdev.h' line='472' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='lld_busy_fn' type-id='fcb4eacc' visibility='default' filepath='include/linux/blkdev.h' line='465' column='1'/> + <var-decl name='lld_busy_fn' type-id='fcb4eacc' visibility='default' filepath='include/linux/blkdev.h' line='473' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='init_rq_fn' type-id='872e42c4' visibility='default' filepath='include/linux/blkdev.h' line='467' column='1'/> + <var-decl name='init_rq_fn' type-id='872e42c4' visibility='default' filepath='include/linux/blkdev.h' line='475' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='exit_rq_fn' type-id='c099235a' visibility='default' filepath='include/linux/blkdev.h' line='469' column='1'/> + <var-decl name='exit_rq_fn' type-id='c099235a' visibility='default' filepath='include/linux/blkdev.h' line='477' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1984'> - <var-decl name='initialize_rq_fn' type-id='bbf015cd' visibility='default' filepath='include/linux/blkdev.h' line='471' column='1'/> + <var-decl name='initialize_rq_fn' type-id='bbf015cd' visibility='default' filepath='include/linux/blkdev.h' line='479' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2048'> - <var-decl name='mq_ops' type-id='e1962c5d' visibility='default' filepath='include/linux/blkdev.h' line='473' column='1'/> + <var-decl name='mq_ops' type-id='e1962c5d' visibility='default' filepath='include/linux/blkdev.h' line='481' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2112'> - <var-decl name='mq_map' type-id='807869d3' visibility='default' filepath='include/linux/blkdev.h' line='475' column='1'/> + <var-decl name='mq_map' type-id='807869d3' visibility='default' filepath='include/linux/blkdev.h' line='483' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='queue_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='478' column='1'/> + <var-decl name='queue_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='486' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='nr_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='479' column='1'/> + <var-decl name='nr_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='487' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2272'> - <var-decl name='queue_depth' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='481' column='1'/> + <var-decl name='queue_depth' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='489' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='queue_hw_ctx' type-id='3e195537' visibility='default' filepath='include/linux/blkdev.h' line='484' column='1'/> + <var-decl name='queue_hw_ctx' type-id='3e195537' visibility='default' filepath='include/linux/blkdev.h' line='492' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='nr_hw_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='485' column='1'/> + <var-decl name='nr_hw_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='493' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='end_sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='490' column='1'/> + <var-decl name='end_sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='498' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='boundary_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='491' column='1'/> + <var-decl name='boundary_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='499' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='delay_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='496' column='1'/> + <var-decl name='delay_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='504' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3648'> - <var-decl name='backing_dev_info' type-id='ef4fae1b' visibility='default' filepath='include/linux/blkdev.h' line='498' column='1'/> + <var-decl name='backing_dev_info' type-id='ef4fae1b' visibility='default' filepath='include/linux/blkdev.h' line='506' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3712'> - <var-decl name='queuedata' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='504' column='1'/> + <var-decl name='queuedata' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3776'> - <var-decl name='queue_flags' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='509' column='1'/> + <var-decl name='queue_flags' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='517' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3840'> - <var-decl name='pm_only' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='515' column='1'/> + <var-decl name='pm_only' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='523' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3872'> - <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='521' column='1'/> + <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3904'> - <var-decl name='bounce_gfp' type-id='3eb7c31c' visibility='default' filepath='include/linux/blkdev.h' line='526' column='1'/> + <var-decl name='bounce_gfp' type-id='3eb7c31c' visibility='default' filepath='include/linux/blkdev.h' line='534' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3936'> - <var-decl name='__queue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='533' column='1'/> + <var-decl name='__queue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='541' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3968'> - <var-decl name='queue_lock' type-id='cff2d845' visibility='default' filepath='include/linux/blkdev.h' line='534' column='1'/> + <var-decl name='queue_lock' type-id='cff2d845' visibility='default' filepath='include/linux/blkdev.h' line='542' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4032'> - <var-decl name='kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='539' column='1'/> + <var-decl name='kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='547' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4800'> - <var-decl name='mq_kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='544' column='1'/> + <var-decl name='mq_kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='552' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5568'> - <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/blkdev.h' line='551' column='1'/> + <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/blkdev.h' line='559' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5632'> - <var-decl name='rpm_status' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='552' column='1'/> + <var-decl name='rpm_status' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='560' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5664'> - <var-decl name='nr_pending' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='553' column='1'/> + <var-decl name='nr_pending' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='561' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5696'> - <var-decl name='nr_requests' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='559' column='1'/> + <var-decl name='nr_requests' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='567' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5760'> - <var-decl name='nr_congestion_on' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='560' column='1'/> + <var-decl name='nr_congestion_on' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='568' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5792'> - <var-decl name='nr_congestion_off' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='561' column='1'/> + <var-decl name='nr_congestion_off' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='569' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5824'> - <var-decl name='nr_batching' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='562' column='1'/> + <var-decl name='nr_batching' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='570' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5856'> - <var-decl name='dma_drain_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='564' column='1'/> + <var-decl name='dma_drain_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='572' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5888'> - <var-decl name='dma_drain_buffer' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='565' column='1'/> + <var-decl name='dma_drain_buffer' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='573' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5952'> - <var-decl name='dma_pad_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='566' column='1'/> + <var-decl name='dma_pad_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='574' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5984'> - <var-decl name='dma_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='567' column='1'/> + <var-decl name='dma_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='575' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6016'> - <var-decl name='queue_tags' type-id='7ea88d03' visibility='default' filepath='include/linux/blkdev.h' line='569' column='1'/> + <var-decl name='queue_tags' type-id='7ea88d03' visibility='default' filepath='include/linux/blkdev.h' line='577' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6080'> - <var-decl name='nr_sorted' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='571' column='1'/> + <var-decl name='nr_sorted' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='579' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6112'> - <var-decl name='in_flight' type-id='0d532ec1' visibility='default' filepath='include/linux/blkdev.h' line='572' column='1'/> + <var-decl name='in_flight' type-id='0d532ec1' visibility='default' filepath='include/linux/blkdev.h' line='580' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6176'> - <var-decl name='request_fn_active' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='579' column='1'/> + <var-decl name='request_fn_active' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='587' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6208'> - <var-decl name='ksm' type-id='6e3684aa' visibility='default' filepath='include/linux/blkdev.h' line='582' column='1'/> + <var-decl name='ksm' type-id='6e3684aa' visibility='default' filepath='include/linux/blkdev.h' line='590' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6272'> - <var-decl name='rq_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='585' column='1'/> + <var-decl name='rq_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='593' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6304'> - <var-decl name='poll_nsec' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='586' column='1'/> + <var-decl name='poll_nsec' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='594' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6336'> - <var-decl name='poll_cb' type-id='1f98c663' visibility='default' filepath='include/linux/blkdev.h' line='588' column='1'/> + <var-decl name='poll_cb' type-id='1f98c663' visibility='default' filepath='include/linux/blkdev.h' line='596' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6400'> - <var-decl name='poll_stat' type-id='8574e02e' visibility='default' filepath='include/linux/blkdev.h' line='589' column='1'/> + <var-decl name='poll_stat' type-id='8574e02e' visibility='default' filepath='include/linux/blkdev.h' line='597' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11520'> - <var-decl name='timeout' type-id='abe41e67' visibility='default' filepath='include/linux/blkdev.h' line='591' column='1'/> + <var-decl name='timeout' type-id='abe41e67' visibility='default' filepath='include/linux/blkdev.h' line='599' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11968'> - <var-decl name='timeout_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='592' column='1'/> + <var-decl name='timeout_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='600' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12352'> - <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='593' column='1'/> + <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='601' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12480'> - <var-decl name='icq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='595' column='1'/> + <var-decl name='icq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='603' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12608'> - <var-decl name='blkcg_pols' type-id='f066dd3c' visibility='default' filepath='include/linux/blkdev.h' line='597' column='1'/> + <var-decl name='blkcg_pols' type-id='f066dd3c' visibility='default' filepath='include/linux/blkdev.h' line='605' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12672'> - <var-decl name='root_blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='598' column='1'/> + <var-decl name='root_blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='606' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12736'> - <var-decl name='blkg_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='599' column='1'/> + <var-decl name='blkg_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='607' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12864'> - <var-decl name='limits' type-id='f0966d3d' visibility='default' filepath='include/linux/blkdev.h' line='602' column='1'/> + <var-decl name='limits' type-id='f0966d3d' visibility='default' filepath='include/linux/blkdev.h' line='610' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13696'> - <var-decl name='sg_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='630' column='1'/> + <var-decl name='sg_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='638' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13728'> - <var-decl name='sg_reserved_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='631' column='1'/> + <var-decl name='sg_reserved_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='639' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13760'> - <var-decl name='node' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='632' column='1'/> + <var-decl name='node' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='640' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13824'> - <var-decl name='fq' type-id='e118aff9' visibility='default' filepath='include/linux/blkdev.h' line='640' column='1'/> + <var-decl name='fq' type-id='e118aff9' visibility='default' filepath='include/linux/blkdev.h' line='648' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13888'> - <var-decl name='requeue_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='642' column='1'/> + <var-decl name='requeue_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='650' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14016'> - <var-decl name='requeue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='643' column='1'/> + <var-decl name='requeue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='651' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14080'> - <var-decl name='requeue_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='644' column='1'/> + <var-decl name='requeue_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='652' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15168'> - <var-decl name='sysfs_lock' type-id='925167dc' visibility='default' filepath='include/linux/blkdev.h' line='646' column='1'/> + <var-decl name='sysfs_lock' type-id='925167dc' visibility='default' filepath='include/linux/blkdev.h' line='654' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15424'> - <var-decl name='bypass_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='648' column='1'/> + <var-decl name='bypass_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='656' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15456'> - <var-decl name='mq_freeze_depth' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='649' column='1'/> + <var-decl name='mq_freeze_depth' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='657' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15488'> - <var-decl name='bsg_job_fn' type-id='826d9136' visibility='default' filepath='include/linux/blkdev.h' line='651' column='1'/> + <var-decl name='bsg_job_fn' type-id='826d9136' visibility='default' filepath='include/linux/blkdev.h' line='659' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15552'> - <var-decl name='bsg_dev' type-id='6a3af55b' visibility='default' filepath='include/linux/blkdev.h' line='652' column='1'/> + <var-decl name='bsg_dev' type-id='6a3af55b' visibility='default' filepath='include/linux/blkdev.h' line='660' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15808'> - <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blkdev.h' line='658' column='1'/> + <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blkdev.h' line='666' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15936'> - <var-decl name='mq_freeze_wq' type-id='b5ab048f' visibility='default' filepath='include/linux/blkdev.h' line='659' column='1'/> + <var-decl name='mq_freeze_wq' type-id='b5ab048f' visibility='default' filepath='include/linux/blkdev.h' line='667' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16128'> - <var-decl name='q_usage_counter' type-id='818799b4' visibility='default' filepath='include/linux/blkdev.h' line='660' column='1'/> + <var-decl name='q_usage_counter' type-id='818799b4' visibility='default' filepath='include/linux/blkdev.h' line='668' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16576'> - <var-decl name='all_q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='661' column='1'/> + <var-decl name='all_q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='669' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16704'> - <var-decl name='tag_set' type-id='cc26d15f' visibility='default' filepath='include/linux/blkdev.h' line='663' column='1'/> + <var-decl name='tag_set' type-id='cc26d15f' visibility='default' filepath='include/linux/blkdev.h' line='671' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16768'> - <var-decl name='tag_set_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='664' column='1'/> + <var-decl name='tag_set_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='672' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16896'> - <var-decl name='bio_split' type-id='dfa886b2' visibility='default' filepath='include/linux/blkdev.h' line='665' column='1'/> + <var-decl name='bio_split' type-id='dfa886b2' visibility='default' filepath='include/linux/blkdev.h' line='673' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19072'> - <var-decl name='mq_sysfs_init_done' type-id='b50a4934' visibility='default' filepath='include/linux/blkdev.h' line='672' column='1'/> + <var-decl name='mq_sysfs_init_done' type-id='b50a4934' visibility='default' filepath='include/linux/blkdev.h' line='680' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19136'> - <var-decl name='cmd_size' type-id='b59d7dce' visibility='default' filepath='include/linux/blkdev.h' line='674' column='1'/> + <var-decl name='cmd_size' type-id='b59d7dce' visibility='default' filepath='include/linux/blkdev.h' line='682' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19200'> - <var-decl name='rq_alloc_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='675' column='1'/> + <var-decl name='rq_alloc_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='683' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19264'> - <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='677' column='1'/> + <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='685' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19648'> - <var-decl name='write_hints' type-id='64af1365' visibility='default' filepath='include/linux/blkdev.h' line='680' column='1'/> + <var-decl name='write_hints' type-id='64af1365' visibility='default' filepath='include/linux/blkdev.h' line='688' column='1'/> </data-member> </class-decl> <class-decl name='robust_list_head' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/uapi/linux/futex.h' line='70' column='1' id='999b38a0'> @@ -11783,105 +11784,105 @@ <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/inetdevice.h' line='50' column='1'/> </data-member> </class-decl> - <class-decl name='inet6_dev' size-in-bits='5632' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='166' column='1' id='8db8de2b'> + <class-decl name='inet6_dev' size-in-bits='5632' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='174' column='1' id='8db8de2b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dev' type-id='68a2d05b' visibility='default' filepath='include/net/if_inet6.h' line='167' column='1'/> + <var-decl name='dev' type-id='68a2d05b' visibility='default' filepath='include/net/if_inet6.h' line='175' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='addr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='169' column='1'/> + <var-decl name='addr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='177' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='mc_list' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='171' column='1'/> + <var-decl name='mc_list' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='179' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='mc_tomb' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='172' column='1'/> + <var-decl name='mc_tomb' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='180' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mc_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='173' column='1'/> + <var-decl name='mc_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='181' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='mc_qrv' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='175' column='1'/> + <var-decl name='mc_qrv' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='183' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='360'> - <var-decl name='mc_gq_running' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='176' column='1'/> + <var-decl name='mc_gq_running' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='184' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='368'> - <var-decl name='mc_ifc_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='177' column='1'/> + <var-decl name='mc_ifc_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='185' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='376'> - <var-decl name='mc_dad_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='178' column='1'/> + <var-decl name='mc_dad_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='186' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='mc_v1_seen' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='180' column='1'/> + <var-decl name='mc_v1_seen' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='188' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='mc_qi' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='181' column='1'/> + <var-decl name='mc_qi' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='189' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='mc_qri' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='182' column='1'/> + <var-decl name='mc_qri' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='190' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='mc_maxdelay' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='183' column='1'/> + <var-decl name='mc_maxdelay' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='191' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='mc_gq_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='185' column='1'/> + <var-decl name='mc_gq_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='193' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='mc_ifc_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='186' column='1'/> + <var-decl name='mc_ifc_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='194' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='mc_dad_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='187' column='1'/> + <var-decl name='mc_dad_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='195' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1984'> - <var-decl name='ac_list' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='189' column='1'/> + <var-decl name='ac_list' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='197' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2048'> - <var-decl name='lock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='190' column='1'/> + <var-decl name='lock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='198' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2112'> - <var-decl name='refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='191' column='1'/> + <var-decl name='refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='199' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2144'> - <var-decl name='if_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/if_inet6.h' line='192' column='1'/> + <var-decl name='if_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/if_inet6.h' line='200' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='dead' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='193' column='1'/> + <var-decl name='dead' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='201' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2208'> - <var-decl name='desync_factor' type-id='19c2251e' visibility='default' filepath='include/net/if_inet6.h' line='195' column='1'/> + <var-decl name='desync_factor' type-id='19c2251e' visibility='default' filepath='include/net/if_inet6.h' line='203' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='rndid' type-id='d2f7b56a' visibility='default' filepath='include/net/if_inet6.h' line='196' column='1'/> + <var-decl name='rndid' type-id='d2f7b56a' visibility='default' filepath='include/net/if_inet6.h' line='204' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='tempaddr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='197' column='1'/> + <var-decl name='tempaddr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='205' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='token' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='199' column='1'/> + <var-decl name='token' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='207' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='nd_parms' type-id='affe0fe2' visibility='default' filepath='include/net/if_inet6.h' line='201' column='1'/> + <var-decl name='nd_parms' type-id='affe0fe2' visibility='default' filepath='include/net/if_inet6.h' line='209' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2624'> - <var-decl name='cnf' type-id='55e8af82' visibility='default' filepath='include/net/if_inet6.h' line='202' column='1'/> + <var-decl name='cnf' type-id='55e8af82' visibility='default' filepath='include/net/if_inet6.h' line='210' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4672'> - <var-decl name='stats' type-id='0e97f526' visibility='default' filepath='include/net/if_inet6.h' line='203' column='1'/> + <var-decl name='stats' type-id='0e97f526' visibility='default' filepath='include/net/if_inet6.h' line='211' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='rs_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='205' column='1'/> + <var-decl name='rs_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='213' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5376'> - <var-decl name='rs_interval' type-id='3158a266' visibility='default' filepath='include/net/if_inet6.h' line='206' column='1'/> + <var-decl name='rs_interval' type-id='3158a266' visibility='default' filepath='include/net/if_inet6.h' line='214' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5408'> - <var-decl name='rs_probes' type-id='8f048e17' visibility='default' filepath='include/net/if_inet6.h' line='207' column='1'/> + <var-decl name='rs_probes' type-id='8f048e17' visibility='default' filepath='include/net/if_inet6.h' line='215' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5440'> - <var-decl name='tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='209' column='1'/> + <var-decl name='tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='217' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='210' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='218' column='1'/> </data-member> </class-decl> <class-decl name='iw_public_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/net/iw_handler.h' line='420' column='1' id='44b3a0ac'> @@ -11933,18 +11934,18 @@ <var-decl name='x' type-id='e84913bd' visibility='default' filepath='include/linux/memcontrol.h' line='184' column='1'/> </data-member> </class-decl> - <class-decl name='mini_Qdisc' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='1115' column='1' id='b10d582f'> + <class-decl name='mini_Qdisc' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='1120' column='1' id='b10d582f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='filter_list' type-id='6dca061b' visibility='default' filepath='include/net/sch_generic.h' line='1116' column='1'/> + <var-decl name='filter_list' type-id='6dca061b' visibility='default' filepath='include/net/sch_generic.h' line='1121' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='cpu_bstats' type-id='b3542b31' visibility='default' filepath='include/net/sch_generic.h' line='1117' column='1'/> + <var-decl name='cpu_bstats' type-id='b3542b31' visibility='default' filepath='include/net/sch_generic.h' line='1122' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='cpu_qstats' type-id='338303f5' visibility='default' filepath='include/net/sch_generic.h' line='1118' column='1'/> + <var-decl name='cpu_qstats' type-id='338303f5' visibility='default' filepath='include/net/sch_generic.h' line='1123' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sch_generic.h' line='1119' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sch_generic.h' line='1124' column='1'/> </data-member> </class-decl> <class-decl name='netdev_queue' size-in-bits='3584' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='573' column='1' id='49a7c5a7'> @@ -12329,87 +12330,87 @@ <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='kernel/workqueue.c' line='222' column='1'/> </data-member> </class-decl> - <class-decl name='queue_limits' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='367' column='1' id='f0966d3d'> + <class-decl name='queue_limits' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='375' column='1' id='f0966d3d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='bounce_pfn' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='368' column='1'/> + <var-decl name='bounce_pfn' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='376' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='seg_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='369' column='1'/> + <var-decl name='seg_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='377' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='virt_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='370' column='1'/> + <var-decl name='virt_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='378' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='max_hw_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='372' column='1'/> + <var-decl name='max_hw_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='380' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='max_dev_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='373' column='1'/> + <var-decl name='max_dev_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='381' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='chunk_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='374' column='1'/> + <var-decl name='chunk_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='382' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='max_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='375' column='1'/> + <var-decl name='max_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='383' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='max_segment_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='376' column='1'/> + <var-decl name='max_segment_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='384' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='physical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='377' column='1'/> + <var-decl name='physical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='385' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='logical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='378' column='1'/> + <var-decl name='logical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='386' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='alignment_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='379' column='1'/> + <var-decl name='alignment_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='387' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='io_min' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='380' column='1'/> + <var-decl name='io_min' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='388' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='io_opt' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='381' column='1'/> + <var-decl name='io_opt' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='389' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='max_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='382' column='1'/> + <var-decl name='max_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='390' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='544'> - <var-decl name='max_hw_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='383' column='1'/> + <var-decl name='max_hw_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='391' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='max_write_same_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='384' column='1'/> + <var-decl name='max_write_same_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='392' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='max_write_zeroes_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='385' column='1'/> + <var-decl name='max_write_zeroes_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='393' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='discard_granularity' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='386' column='1'/> + <var-decl name='discard_granularity' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='394' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='672'> - <var-decl name='discard_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='387' column='1'/> + <var-decl name='discard_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='395' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='max_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='389' column='1'/> + <var-decl name='max_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='397' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='720'> - <var-decl name='max_integrity_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='390' column='1'/> + <var-decl name='max_integrity_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='398' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='736'> - <var-decl name='max_discard_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='391' column='1'/> + <var-decl name='max_discard_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='399' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='752'> - <var-decl name='misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='393' column='1'/> + <var-decl name='misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='401' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='760'> - <var-decl name='discard_misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='394' column='1'/> + <var-decl name='discard_misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='402' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='cluster' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='395' column='1'/> + <var-decl name='cluster' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='403' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='776'> - <var-decl name='raid_partial_stripes_expensive' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='396' column='1'/> + <var-decl name='raid_partial_stripes_expensive' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='404' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='zoned' type-id='a48b5528' visibility='default' filepath='include/linux/blkdev.h' line='397' column='1'/> + <var-decl name='zoned' type-id='a48b5528' visibility='default' filepath='include/linux/blkdev.h' line='405' column='1'/> </data-member> </class-decl> <class-decl name='rcu_sync' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/rcu_sync.h' line='32' column='1' id='638a7d75'> @@ -12437,27 +12438,27 @@ <var-decl name='task' type-id='f23e2572' visibility='default' filepath='include/linux/rcuwait.h' line='21' column='1'/> </data-member> </class-decl> - <class-decl name='request_list' size-in-bits='768' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='65' column='1' id='f9b33cd7'> + <class-decl name='request_list' size-in-bits='768' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='73' column='1' id='f9b33cd7'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='66' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='74' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='68' column='1'/> + <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='76' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='count' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='74' column='1'/> + <var-decl name='count' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='82' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='starved' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='75' column='1'/> + <var-decl name='starved' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='83' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='rq_pool' type-id='78713e8f' visibility='default' filepath='include/linux/blkdev.h' line='76' column='1'/> + <var-decl name='rq_pool' type-id='78713e8f' visibility='default' filepath='include/linux/blkdev.h' line='84' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='wait' type-id='9a200504' visibility='default' filepath='include/linux/blkdev.h' line='77' column='1'/> + <var-decl name='wait' type-id='9a200504' visibility='default' filepath='include/linux/blkdev.h' line='85' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='78' column='1'/> + <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='86' column='1'/> </data-member> </class-decl> <class-decl name='robust_list' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/futex.h' line='58' column='1' id='2d8e2e2d'> @@ -12870,12 +12871,12 @@ <var-decl name='ackreq' type-id='b50a4934' visibility='default' filepath='include/net/cfg802154.h' line='369' column='1'/> </data-member> </class-decl> - <class-decl name='wq_device' size-in-bits='7680' is-struct='yes' visibility='default' filepath='kernel/workqueue.c' line='5223' column='1' id='a88ecfc8'> + <class-decl name='wq_device' size-in-bits='7680' is-struct='yes' visibility='default' filepath='kernel/workqueue.c' line='5221' column='1' id='a88ecfc8'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='wq' type-id='242e3d19' visibility='default' filepath='kernel/workqueue.c' line='5224' column='1'/> + <var-decl name='wq' type-id='242e3d19' visibility='default' filepath='kernel/workqueue.c' line='5222' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='kernel/workqueue.c' line='5225' column='1'/> + <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='kernel/workqueue.c' line='5223' column='1'/> </data-member> </class-decl> <class-decl name='wq_flusher' size-in-bits='448' is-struct='yes' visibility='default' filepath='kernel/workqueue.c' line='228' column='1' id='c8eb0f4f'> @@ -13721,27 +13722,27 @@ </data-member> </class-decl> <class-decl name='blk_queue_stats' is-struct='yes' visibility='default' is-declaration-only='yes' id='99d089ec'/> - <class-decl name='blk_queue_tag' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='343' column='1' id='2e2b8e93'> + <class-decl name='blk_queue_tag' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='351' column='1' id='2e2b8e93'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tag_index' type-id='79808846' visibility='default' filepath='include/linux/blkdev.h' line='344' column='1'/> + <var-decl name='tag_index' type-id='79808846' visibility='default' filepath='include/linux/blkdev.h' line='352' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='tag_map' type-id='1d2c2b85' visibility='default' filepath='include/linux/blkdev.h' line='345' column='1'/> + <var-decl name='tag_map' type-id='1d2c2b85' visibility='default' filepath='include/linux/blkdev.h' line='353' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='346' column='1'/> + <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='354' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='real_max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='347' column='1'/> + <var-decl name='real_max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='355' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='348' column='1'/> + <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='356' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='alloc_policy' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='349' column='1'/> + <var-decl name='alloc_policy' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='357' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='next_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='350' column='1'/> + <var-decl name='next_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='358' column='1'/> </data-member> </class-decl> <class-decl name='blk_rq_stat' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blk_types.h' line='472' column='1' id='a3274c4b'> @@ -13790,60 +13791,60 @@ <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='block/blk-stat.h' line='62' column='1'/> </data-member> </class-decl> - <class-decl name='blkcg_gq' size-in-bits='5952' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='109' column='1' id='9467b853'> + <class-decl name='blkcg_gq' size-in-bits='5952' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='112' column='1' id='9467b853'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blk-cgroup.h' line='111' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blk-cgroup.h' line='114' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='112' column='1'/> + <var-decl name='q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='115' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='blkcg_node' type-id='03a4a074' visibility='default' filepath='include/linux/blk-cgroup.h' line='113' column='1'/> + <var-decl name='blkcg_node' type-id='03a4a074' visibility='default' filepath='include/linux/blk-cgroup.h' line='116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='114' column='1'/> + <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='117' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='wb_congested' type-id='d97a04ce' visibility='default' filepath='include/linux/blk-cgroup.h' line='120' column='1'/> + <var-decl name='wb_congested' type-id='d97a04ce' visibility='default' filepath='include/linux/blk-cgroup.h' line='123' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='parent' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='123' column='1'/> + <var-decl name='parent' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='126' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blk-cgroup.h' line='126' column='1'/> + <var-decl name='rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blk-cgroup.h' line='129' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='129' column='1'/> + <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='132' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1312'> - <var-decl name='online' type-id='b50a4934' visibility='default' filepath='include/linux/blk-cgroup.h' line='132' column='1'/> + <var-decl name='online' type-id='b50a4934' visibility='default' filepath='include/linux/blk-cgroup.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='stat_bytes' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='134' column='1'/> + <var-decl name='stat_bytes' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='137' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3264'> - <var-decl name='stat_ios' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='135' column='1'/> + <var-decl name='stat_ios' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5184'> - <var-decl name='pd' type-id='f5665670' visibility='default' filepath='include/linux/blk-cgroup.h' line='137' column='1'/> + <var-decl name='pd' type-id='f5665670' visibility='default' filepath='include/linux/blk-cgroup.h' line='140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blk-cgroup.h' line='139' column='1'/> + <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blk-cgroup.h' line='142' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5632'> - <var-decl name='use_delay' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='141' column='1'/> + <var-decl name='use_delay' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='144' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5696'> - <var-decl name='delay_nsec' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='142' column='1'/> + <var-decl name='delay_nsec' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5760'> - <var-decl name='delay_start' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='143' column='1'/> + <var-decl name='delay_start' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='146' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5824'> - <var-decl name='last_delay' type-id='91ce1af9' visibility='default' filepath='include/linux/blk-cgroup.h' line='144' column='1'/> + <var-decl name='last_delay' type-id='91ce1af9' visibility='default' filepath='include/linux/blk-cgroup.h' line='147' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5888'> - <var-decl name='last_use' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='145' column='1'/> + <var-decl name='last_use' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='148' column='1'/> </data-member> </class-decl> <class-decl name='bus_type' size-in-bits='1664' is-struct='yes' visibility='default' filepath='include/linux/device.h' line='124' column='1' id='b31bfc8a'> @@ -15014,18 +15015,18 @@ <var-decl name='android_kabi_reserved4' type-id='91ce1af9' visibility='default' filepath='include/linux/ipv6.h' line='86' column='1'/> </data-member> </class-decl> - <class-decl name='ipv6_devstat' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='159' column='1' id='0e97f526'> + <class-decl name='ipv6_devstat' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='167' column='1' id='0e97f526'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='proc_dir_entry' type-id='d077e928' visibility='default' filepath='include/net/if_inet6.h' line='160' column='1'/> + <var-decl name='proc_dir_entry' type-id='d077e928' visibility='default' filepath='include/net/if_inet6.h' line='168' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='ipv6' type-id='30897c4e' visibility='default' filepath='include/net/if_inet6.h' line='161' column='1'/> + <var-decl name='ipv6' type-id='30897c4e' visibility='default' filepath='include/net/if_inet6.h' line='169' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='icmpv6dev' type-id='6551bd60' visibility='default' filepath='include/net/if_inet6.h' line='162' column='1'/> + <var-decl name='icmpv6dev' type-id='6551bd60' visibility='default' filepath='include/net/if_inet6.h' line='170' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='icmpv6msgdev' type-id='793f0d19' visibility='default' filepath='include/net/if_inet6.h' line='163' column='1'/> + <var-decl name='icmpv6msgdev' type-id='793f0d19' visibility='default' filepath='include/net/if_inet6.h' line='171' column='1'/> </data-member> </class-decl> <class-decl name='irq_domain' size-in-bits='1408' is-struct='yes' visibility='default' filepath='include/linux/irqdomain.h' line='159' column='1' id='a667f60e'> @@ -15739,21 +15740,21 @@ </data-member> </class-decl> <class-decl name='pcpu_lstats' is-struct='yes' visibility='default' is-declaration-only='yes' id='b71b307b'/> - <class-decl name='pcpu_sw_netstats' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2417' column='1' id='101eeec5'> + <class-decl name='pcpu_sw_netstats' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2418' column='1' id='101eeec5'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='rx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2418' column='1'/> + <var-decl name='rx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2419' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='rx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2419' column='1'/> + <var-decl name='rx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2420' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='tx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2420' column='1'/> + <var-decl name='tx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2421' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='tx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2421' column='1'/> + <var-decl name='tx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2422' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='syncp' type-id='e4d85780' visibility='default' filepath='include/linux/netdevice.h' line='2422' column='1'/> + <var-decl name='syncp' type-id='e4d85780' visibility='default' filepath='include/linux/netdevice.h' line='2423' column='1'/> </data-member> </class-decl> <class-decl name='pcpu_vstats' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/net/veth.c' line='39' column='1' id='f21ec7ed'> @@ -15809,63 +15810,63 @@ <var-decl name='get_parent' type-id='e0677422' visibility='default' filepath='include/linux/proc_ns.h' line='24' column='1'/> </data-member> </class-decl> - <class-decl name='psi_group' size-in-bits='5440' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='128' column='1' id='12878ab3'> + <class-decl name='psi_group' size-in-bits='5440' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='125' column='1' id='12878ab3'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='avgs_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='130' column='1'/> + <var-decl name='avgs_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='127' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='pcpu' type-id='9dc40234' visibility='default' filepath='include/linux/psi_types.h' line='133' column='1'/> + <var-decl name='pcpu' type-id='9dc40234' visibility='default' filepath='include/linux/psi_types.h' line='130' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='avg_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='136' column='1'/> + <var-decl name='avg_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='133' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='avg_last_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='137' column='1'/> + <var-decl name='avg_last_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='134' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='avg_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='138' column='1'/> + <var-decl name='avg_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='avgs_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/psi_types.h' line='141' column='1'/> + <var-decl name='avgs_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/psi_types.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='total' type-id='a4295685' visibility='default' filepath='include/linux/psi_types.h' line='144' column='1'/> + <var-decl name='total' type-id='a4295685' visibility='default' filepath='include/linux/psi_types.h' line='141' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='avg' type-id='625e8699' visibility='default' filepath='include/linux/psi_types.h' line='145' column='1'/> + <var-decl name='avg' type-id='625e8699' visibility='default' filepath='include/linux/psi_types.h' line='142' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3456'> - <var-decl name='poll_scheduled' type-id='49178f86' visibility='default' filepath='include/linux/psi_types.h' line='148' column='1'/> + <var-decl name='poll_scheduled' type-id='49178f86' visibility='default' filepath='include/linux/psi_types.h' line='145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3520'> - <var-decl name='poll_kworker' type-id='c41f4539' visibility='default' filepath='include/linux/psi_types.h' line='149' column='1'/> + <var-decl name='poll_kworker' type-id='c41f4539' visibility='default' filepath='include/linux/psi_types.h' line='146' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3584'> - <var-decl name='poll_work' type-id='8fb867c9' visibility='default' filepath='include/linux/psi_types.h' line='150' column='1'/> + <var-decl name='poll_work' type-id='8fb867c9' visibility='default' filepath='include/linux/psi_types.h' line='147' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4352'> - <var-decl name='trigger_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='153' column='1'/> + <var-decl name='trigger_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='150' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4608'> - <var-decl name='triggers' type-id='72f469ec' visibility='default' filepath='include/linux/psi_types.h' line='156' column='1'/> + <var-decl name='triggers' type-id='72f469ec' visibility='default' filepath='include/linux/psi_types.h' line='153' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4736'> - <var-decl name='nr_triggers' type-id='586ea944' visibility='default' filepath='include/linux/psi_types.h' line='157' column='1'/> + <var-decl name='nr_triggers' type-id='586ea944' visibility='default' filepath='include/linux/psi_types.h' line='154' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4896'> - <var-decl name='poll_states' type-id='19c2251e' visibility='default' filepath='include/linux/psi_types.h' line='158' column='1'/> + <var-decl name='poll_states' type-id='19c2251e' visibility='default' filepath='include/linux/psi_types.h' line='155' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='poll_min_period' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='159' column='1'/> + <var-decl name='poll_min_period' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='156' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4992'> - <var-decl name='polling_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='162' column='1'/> + <var-decl name='polling_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='159' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5312'> - <var-decl name='polling_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='163' column='1'/> + <var-decl name='polling_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='160' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5376'> - <var-decl name='polling_until' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='164' column='1'/> + <var-decl name='polling_until' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='161' column='1'/> </data-member> </class-decl> <class-decl name='qdisc_skb_head' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='47' column='1' id='d34f2f01'> @@ -15929,108 +15930,108 @@ </data-member> </class-decl> <class-decl name='removed_region' is-struct='yes' visibility='default' is-declaration-only='yes' id='6e7f5ae8'/> - <class-decl name='request' size-in-bits='2432' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='153' column='1' id='ceee71ca'> + <class-decl name='request' size-in-bits='2432' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='161' column='1' id='ceee71ca'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='154' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='162' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='mq_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='155' column='1'/> + <var-decl name='mq_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='163' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='cpu' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='157' column='1'/> + <var-decl name='cpu' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='165' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='cmd_flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='158' column='1'/> + <var-decl name='cmd_flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='166' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rq_flags' type-id='3b445e53' visibility='default' filepath='include/linux/blkdev.h' line='159' column='1'/> + <var-decl name='rq_flags' type-id='3b445e53' visibility='default' filepath='include/linux/blkdev.h' line='167' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='internal_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='161' column='1'/> + <var-decl name='internal_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='169' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='__data_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='164' column='1'/> + <var-decl name='__data_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='172' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='165' column='1'/> + <var-decl name='tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='173' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='__sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='166' column='1'/> + <var-decl name='__sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='174' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='bio' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='168' column='1'/> + <var-decl name='bio' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='176' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='biotail' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='169' column='1'/> + <var-decl name='biotail' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='177' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='queuelist' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='171' column='1'/> + <var-decl name='queuelist' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='179' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='' type-id='2f76bc4b' visibility='default' filepath='include/linux/blkdev.h' line='180' column='1'/> + <var-decl name='' type-id='2f76bc4b' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='' type-id='df8866ad' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/> + <var-decl name='' type-id='df8866ad' visibility='default' filepath='include/linux/blkdev.h' line='198' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='' type-id='7fc3d482' visibility='default' filepath='include/linux/blkdev.h' line='203' column='1'/> + <var-decl name='' type-id='7fc3d482' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='rq_disk' type-id='33c599da' visibility='default' filepath='include/linux/blkdev.h' line='216' column='1'/> + <var-decl name='rq_disk' type-id='33c599da' visibility='default' filepath='include/linux/blkdev.h' line='224' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='part' type-id='84dc82b7' visibility='default' filepath='include/linux/blkdev.h' line='217' column='1'/> + <var-decl name='part' type-id='84dc82b7' visibility='default' filepath='include/linux/blkdev.h' line='225' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='219' column='1'/> + <var-decl name='start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='227' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='io_start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='221' column='1'/> + <var-decl name='io_start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='229' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='nr_phys_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='234' column='1'/> + <var-decl name='nr_phys_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='242' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1488'> - <var-decl name='write_hint' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='240' column='1'/> + <var-decl name='write_hint' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='248' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1504'> - <var-decl name='ioprio' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='241' column='1'/> + <var-decl name='ioprio' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='249' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='special' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='243' column='1'/> + <var-decl name='special' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='251' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='extra_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='245' column='1'/> + <var-decl name='extra_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='253' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1632'> - <var-decl name='state' type-id='4df77f20' visibility='default' filepath='include/linux/blkdev.h' line='247' column='1'/> + <var-decl name='state' type-id='4df77f20' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1664'> - <var-decl name='ref' type-id='64615833' visibility='default' filepath='include/linux/blkdev.h' line='248' column='1'/> + <var-decl name='ref' type-id='64615833' visibility='default' filepath='include/linux/blkdev.h' line='256' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1696'> - <var-decl name='timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='250' column='1'/> + <var-decl name='timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='258' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1728'> - <var-decl name='__deadline' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='253' column='1'/> + <var-decl name='__deadline' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='261' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/> + <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='263' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='' type-id='097c5bdb' visibility='default' filepath='include/linux/blkdev.h' line='257' column='1'/> + <var-decl name='' type-id='097c5bdb' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1'/> + <var-decl name='end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='273' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='end_io_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='266' column='1'/> + <var-decl name='end_io_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='274' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='next_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='269' column='1'/> + <var-decl name='next_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='277' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='rl' type-id='6a6224ef' visibility='default' filepath='include/linux/blkdev.h' line='272' column='1'/> + <var-decl name='rl' type-id='6a6224ef' visibility='default' filepath='include/linux/blkdev.h' line='280' column='1'/> </data-member> </class-decl> <class-decl name='return_instance' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/uprobes.h' line='96' column='1' id='c0342c43'> @@ -16806,7 +16807,7 @@ <pointer-type-def type-id='0e1f7cac' size-in-bits='64' id='90ad83aa'/> <pointer-type-def type-id='7d93f824' size-in-bits='64' id='b991f562'/> <pointer-type-def type-id='4e02eed6' size-in-bits='64' id='97fc66bc'/> - <enum-decl name='blk_zoned_model' filepath='include/linux/blkdev.h' line='361' column='1' id='a48b5528'> + <enum-decl name='blk_zoned_model' filepath='include/linux/blkdev.h' line='369' column='1' id='a48b5528'> <underlying-type type-id='9cac1fee'/> <enumerator name='BLK_ZONED_NONE' value='0'/> <enumerator name='BLK_ZONED_HA' value='1'/> @@ -16940,23 +16941,23 @@ <typedef-decl name='__le64' type-id='d3130597' filepath='include/uapi/linux/types.h' line='33' column='1' id='a30e8d1f'/> <pointer-type-def type-id='916c4095' size-in-bits='64' id='439be051'/> <pointer-type-def type-id='5753d902' size-in-bits='64' id='c4b7e554'/> - <typedef-decl name='bsg_job_fn' type-id='f6192657' filepath='include/linux/blkdev.h' line='327' column='1' id='46181ad5'/> + <typedef-decl name='bsg_job_fn' type-id='f6192657' filepath='include/linux/blkdev.h' line='335' column='1' id='46181ad5'/> <typedef-decl name='clockid_t' type-id='7eb128d4' filepath='include/linux/types.h' line='30' column='1' id='a1c3b834'/> <typedef-decl name='cpumask_var_t' type-id='db98c084' filepath='include/linux/cpumask.h' line='737' column='1' id='b16b461b'/> - <typedef-decl name='dma_drain_needed_fn' type-id='59bb6212' filepath='include/linux/blkdev.h' line='325' column='1' id='0128515a'/> - <typedef-decl name='exit_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='329' column='1' id='545e1b8d'/> - <typedef-decl name='init_rq_fn' type-id='b654143c' filepath='include/linux/blkdev.h' line='328' column='1' id='c1166eeb'/> - <typedef-decl name='lld_busy_fn' type-id='71f4dca2' filepath='include/linux/blkdev.h' line='326' column='1' id='47d86e15'/> - <typedef-decl name='make_request_fn' type-id='f8561c55' filepath='include/linux/blkdev.h' line='318' column='1' id='99cd4891'/> + <typedef-decl name='dma_drain_needed_fn' type-id='59bb6212' filepath='include/linux/blkdev.h' line='333' column='1' id='0128515a'/> + <typedef-decl name='exit_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='337' column='1' id='545e1b8d'/> + <typedef-decl name='init_rq_fn' type-id='b654143c' filepath='include/linux/blkdev.h' line='336' column='1' id='c1166eeb'/> + <typedef-decl name='lld_busy_fn' type-id='71f4dca2' filepath='include/linux/blkdev.h' line='334' column='1' id='47d86e15'/> + <typedef-decl name='make_request_fn' type-id='f8561c55' filepath='include/linux/blkdev.h' line='326' column='1' id='99cd4891'/> <typedef-decl name='mm_context_t' type-id='7319f51c' filepath='arch/arm64/include/asm/mmu.h' line='32' column='1' id='0eb9c3fd'/> <typedef-decl name='phy_interface_t' type-id='08f5ca19' filepath='include/linux/phy.h' line='93' column='1' id='d61bf978'/> <typedef-decl name='pm_message_t' type-id='c120b5da' filepath='include/linux/pm.h' line='64' column='1' id='08496218'/> - <typedef-decl name='poll_q_fn' type-id='3e0de906' filepath='include/linux/blkdev.h' line='319' column='1' id='db8c71fe'/> - <typedef-decl name='prep_rq_fn' type-id='0022f749' filepath='include/linux/blkdev.h' line='320' column='1' id='f77d29c2'/> - <typedef-decl name='request_fn_proc' type-id='a69d8a71' filepath='include/linux/blkdev.h' line='317' column='1' id='9f3af257'/> - <typedef-decl name='rq_timed_out_fn' type-id='56710942' filepath='include/linux/blkdev.h' line='336' column='1' id='eef687df'/> - <typedef-decl name='softirq_done_fn' type-id='45e743e9' filepath='include/linux/blkdev.h' line='324' column='1' id='c6e68338'/> - <typedef-decl name='unprep_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='321' column='1' id='e9b47ca9'/> + <typedef-decl name='poll_q_fn' type-id='3e0de906' filepath='include/linux/blkdev.h' line='327' column='1' id='db8c71fe'/> + <typedef-decl name='prep_rq_fn' type-id='0022f749' filepath='include/linux/blkdev.h' line='328' column='1' id='f77d29c2'/> + <typedef-decl name='request_fn_proc' type-id='a69d8a71' filepath='include/linux/blkdev.h' line='325' column='1' id='9f3af257'/> + <typedef-decl name='rq_timed_out_fn' type-id='56710942' filepath='include/linux/blkdev.h' line='344' column='1' id='eef687df'/> + <typedef-decl name='softirq_done_fn' type-id='45e743e9' filepath='include/linux/blkdev.h' line='332' column='1' id='c6e68338'/> + <typedef-decl name='unprep_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='329' column='1' id='e9b47ca9'/> <pointer-type-def type-id='19c2251e' size-in-bits='64' id='f9409001'/> <array-type-def dimensions='1' type-id='f9b06939' size-in-bits='256' id='e3dc4fdb'> <subrange length='32' type-id='7ff19f0f' id='ae5bde82'/> @@ -17232,53 +17233,53 @@ <var-decl name='map_queues' type-id='06a241cf' visibility='default' filepath='include/linux/blk-mq.h' line='175' column='1'/> </data-member> </class-decl> - <class-decl name='blkg_rwstat' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='73' column='1' id='247d0323'> + <class-decl name='blkg_rwstat' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='76' column='1' id='247d0323'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='cpu_cnt' type-id='68a92070' visibility='default' filepath='include/linux/blk-cgroup.h' line='74' column='1'/> + <var-decl name='cpu_cnt' type-id='68a92070' visibility='default' filepath='include/linux/blk-cgroup.h' line='77' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='aux_cnt' type-id='39e531ac' visibility='default' filepath='include/linux/blk-cgroup.h' line='75' column='1'/> + <var-decl name='aux_cnt' type-id='39e531ac' visibility='default' filepath='include/linux/blk-cgroup.h' line='78' column='1'/> </data-member> </class-decl> - <class-decl name='block_device_operations' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1985' column='1' id='dbd58b50'> + <class-decl name='block_device_operations' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1993' column='1' id='dbd58b50'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='open' type-id='2207988a' visibility='default' filepath='include/linux/blkdev.h' line='1986' column='1'/> + <var-decl name='open' type-id='2207988a' visibility='default' filepath='include/linux/blkdev.h' line='1994' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='release' type-id='156433b6' visibility='default' filepath='include/linux/blkdev.h' line='1987' column='1'/> + <var-decl name='release' type-id='156433b6' visibility='default' filepath='include/linux/blkdev.h' line='1995' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rw_page' type-id='55f833ce' visibility='default' filepath='include/linux/blkdev.h' line='1988' column='1'/> + <var-decl name='rw_page' type-id='55f833ce' visibility='default' filepath='include/linux/blkdev.h' line='1996' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1989' column='1'/> + <var-decl name='ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1997' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='compat_ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1990' column='1'/> + <var-decl name='compat_ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1998' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='check_events' type-id='4bf65d9d' visibility='default' filepath='include/linux/blkdev.h' line='1991' column='1'/> + <var-decl name='check_events' type-id='4bf65d9d' visibility='default' filepath='include/linux/blkdev.h' line='1999' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='media_changed' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='1994' column='1'/> + <var-decl name='media_changed' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='2002' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='unlock_native_capacity' type-id='dabeff1b' visibility='default' filepath='include/linux/blkdev.h' line='1995' column='1'/> + <var-decl name='unlock_native_capacity' type-id='dabeff1b' visibility='default' filepath='include/linux/blkdev.h' line='2003' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='revalidate_disk' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='1996' column='1'/> + <var-decl name='revalidate_disk' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='2004' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='getgeo' type-id='68a88aaa' visibility='default' filepath='include/linux/blkdev.h' line='1997' column='1'/> + <var-decl name='getgeo' type-id='68a88aaa' visibility='default' filepath='include/linux/blkdev.h' line='2005' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='swap_slot_free_notify' type-id='c4cac78c' visibility='default' filepath='include/linux/blkdev.h' line='1999' column='1'/> + <var-decl name='swap_slot_free_notify' type-id='c4cac78c' visibility='default' filepath='include/linux/blkdev.h' line='2007' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/blkdev.h' line='2000' column='1'/> + <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/blkdev.h' line='2008' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='pr_ops' type-id='08d45f21' visibility='default' filepath='include/linux/blkdev.h' line='2001' column='1'/> + <var-decl name='pr_ops' type-id='08d45f21' visibility='default' filepath='include/linux/blkdev.h' line='2009' column='1'/> </data-member> </class-decl> <class-decl name='blocking_notifier_head' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/linux/notifier.h' line='65' column='1' id='708c2394'> @@ -17761,74 +17762,74 @@ <var-decl name='bw_config' type-id='51403231' visibility='default' filepath='include/net/cfg80211.h' line='401' column='1'/> </data-member> </class-decl> - <class-decl name='ifacaddr6' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='145' column='1' id='1883cd3d'> + <class-decl name='ifacaddr6' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='153' column='1' id='1883cd3d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='aca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='146' column='1'/> + <var-decl name='aca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='154' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='aca_rt' type-id='fe454a75' visibility='default' filepath='include/net/if_inet6.h' line='147' column='1'/> + <var-decl name='aca_rt' type-id='fe454a75' visibility='default' filepath='include/net/if_inet6.h' line='155' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='aca_next' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='148' column='1'/> + <var-decl name='aca_next' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='156' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='aca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='149' column='1'/> + <var-decl name='aca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='157' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='aca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='150' column='1'/> + <var-decl name='aca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='158' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='aca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='151' column='1'/> + <var-decl name='aca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='159' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='aca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='152' column='1'/> + <var-decl name='aca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='160' column='1'/> </data-member> </class-decl> - <class-decl name='ifmcaddr6' size-in-bits='1280' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='119' column='1' id='cc23d6f1'> + <class-decl name='ifmcaddr6' size-in-bits='1280' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='127' column='1' id='cc23d6f1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='mca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='120' column='1'/> + <var-decl name='mca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='128' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='idev' type-id='f026b16b' visibility='default' filepath='include/net/if_inet6.h' line='121' column='1'/> + <var-decl name='idev' type-id='f026b16b' visibility='default' filepath='include/net/if_inet6.h' line='129' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='next' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='122' column='1'/> + <var-decl name='next' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='130' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='mca_sources' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='123' column='1'/> + <var-decl name='mca_sources' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='131' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mca_tomb' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='124' column='1'/> + <var-decl name='mca_tomb' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='132' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='mca_sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='125' column='1'/> + <var-decl name='mca_sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='133' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='mca_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='126' column='1'/> + <var-decl name='mca_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='134' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='mca_sfcount' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='127' column='1'/> + <var-decl name='mca_sfcount' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='mca_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='128' column='1'/> + <var-decl name='mca_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='136' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='mca_flags' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='129' column='1'/> + <var-decl name='mca_flags' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='137' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1056'> - <var-decl name='mca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='130' column='1'/> + <var-decl name='mca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='mca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='131' column='1'/> + <var-decl name='mca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='139' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1120'> - <var-decl name='mca_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='132' column='1'/> + <var-decl name='mca_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='mca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='133' column='1'/> + <var-decl name='mca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='141' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='mca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='134' column='1'/> + <var-decl name='mca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='142' column='1'/> </data-member> </class-decl> <class-decl name='in_ifaddr' size-in-bits='960' is-struct='yes' visibility='default' filepath='include/linux/inetdevice.h' line='139' column='1' id='b95a5ed3'> @@ -20311,7 +20312,7 @@ <enumerator name='DOMAIN_BUS_FSL_MC_MSI' value='6'/> <enumerator name='DOMAIN_BUS_WAKEUP' value='7'/> </enum-decl> - <enum-decl name='mq_rq_state' filepath='include/linux/blkdev.h' line='141' column='1' id='4df77f20'> + <enum-decl name='mq_rq_state' filepath='include/linux/blkdev.h' line='149' column='1' id='4df77f20'> <underlying-type type-id='9cac1fee'/> <enumerator name='MQ_RQ_IDLE' value='0'/> <enumerator name='MQ_RQ_IN_FLIGHT' value='1'/> @@ -20515,7 +20516,7 @@ <typedef-decl name='pgprot_t' type-id='051883a9' filepath='arch/arm64/include/asm/pgtable-types.h' line='53' column='1' id='2e2dcbd3'/> <typedef-decl name='pgtable_t' type-id='02f11ed4' filepath='arch/arm64/include/asm/page.h' line='42' column='1' id='c28b9700'/> <typedef-decl name='phandle' type-id='19c2251e' filepath='include/linux/of.h' line='28' column='1' id='6e394fba'/> - <typedef-decl name='req_flags_t' type-id='3f1a6b60' filepath='include/linux/blkdev.h' line='83' column='1' id='3b445e53'/> + <typedef-decl name='req_flags_t' type-id='3f1a6b60' filepath='include/linux/blkdev.h' line='91' column='1' id='3b445e53'/> <pointer-type-def type-id='fa5149d8' size-in-bits='64' id='c65c1382'/> <pointer-type-def type-id='dd9a5153' size-in-bits='64' id='c297924f'/> <pointer-type-def type-id='80310425' size-in-bits='64' id='d3210449'/> @@ -20542,12 +20543,12 @@ <subrange length='3' type-id='7ff19f0f' id='56f209d2'/> </array-type-def> <pointer-type-def type-id='0c7ab04d' size-in-bits='64' id='5224788d'/> - <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='257' column='1' id='097c5bdb'> + <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1' id='097c5bdb'> <data-member access='public'> - <var-decl name='csd' type-id='bb75ea85' visibility='default' filepath='include/linux/blkdev.h' line='258' column='1'/> + <var-decl name='csd' type-id='bb75ea85' visibility='default' filepath='include/linux/blkdev.h' line='266' column='1'/> </data-member> <data-member access='public'> - <var-decl name='fifo_time' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='259' column='1'/> + <var-decl name='fifo_time' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='267' column='1'/> </data-member> </union-decl> <union-decl name='__anonymous_union__7' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/in6.h' line='34' column='1' id='0efc37b8'> @@ -20561,12 +20562,12 @@ <var-decl name='u6_addr32' type-id='30180d4b' visibility='default' filepath='include/uapi/linux/in6.h' line='38' column='1'/> </data-member> </union-decl> - <union-decl name='__anonymous_union__13' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='203' column='1' id='7fc3d482'> + <union-decl name='__anonymous_union__13' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1' id='7fc3d482'> <data-member access='public'> - <var-decl name='elv' type-id='6d001302' visibility='default' filepath='include/linux/blkdev.h' line='207' column='1'/> + <var-decl name='elv' type-id='6d001302' visibility='default' filepath='include/linux/blkdev.h' line='215' column='1'/> </data-member> <data-member access='public'> - <var-decl name='flush' type-id='5596717b' visibility='default' filepath='include/linux/blkdev.h' line='213' column='1'/> + <var-decl name='flush' type-id='5596717b' visibility='default' filepath='include/linux/blkdev.h' line='221' column='1'/> </data-member> </union-decl> <union-decl name='__anonymous_union__20' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='304' column='1' id='cc072175'> @@ -20577,12 +20578,12 @@ <var-decl name='anon_name' type-id='80f4b756' visibility='default' filepath='include/linux/mm_types.h' line='309' column='1'/> </data-member> </union-decl> - <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='180' column='1' id='2f76bc4b'> + <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='2f76bc4b'> <data-member access='public'> - <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='181' column='1'/> + <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/> </data-member> <data-member access='public'> - <var-decl name='ipi_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='182' column='1'/> + <var-decl name='ipi_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/> </data-member> </union-decl> <union-decl name='__anonymous_union__29' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/iocontext.h' line='87' column='1' id='eb20ccf0'> @@ -20617,18 +20618,18 @@ <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/> </data-member> </union-decl> - <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1' id='df8866ad'> + <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='198' column='1' id='df8866ad'> <data-member access='public'> - <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='191' column='1'/> + <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='199' column='1'/> </data-member> <data-member access='public'> - <var-decl name='special_vec' type-id='40af3608' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/> + <var-decl name='special_vec' type-id='40af3608' visibility='default' filepath='include/linux/blkdev.h' line='200' column='1'/> </data-member> <data-member access='public'> - <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='193' column='1'/> + <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='201' column='1'/> </data-member> <data-member access='public'> - <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='194' column='1'/> + <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='202' column='1'/> </data-member> </union-decl> <union-decl name='__anonymous_union__42' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1' id='c7c27b50'> @@ -20861,33 +20862,33 @@ <var-decl name='bv_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/bvec.h' line='33' column='1'/> </data-member> </class-decl> - <class-decl name='blkcg' size-in-bits='3136' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='46' column='1' id='19b26952'> + <class-decl name='blkcg' size-in-bits='3136' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='49' column='1' id='19b26952'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='css' type-id='7f3df443' visibility='default' filepath='include/linux/blk-cgroup.h' line='47' column='1'/> + <var-decl name='css' type-id='7f3df443' visibility='default' filepath='include/linux/blk-cgroup.h' line='50' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blk-cgroup.h' line='48' column='1'/> + <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blk-cgroup.h' line='51' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='blkg_tree' type-id='1c8dedcf' visibility='default' filepath='include/linux/blk-cgroup.h' line='50' column='1'/> + <var-decl name='blkg_tree' type-id='1c8dedcf' visibility='default' filepath='include/linux/blk-cgroup.h' line='53' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='blkg_hint' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='51' column='1'/> + <var-decl name='blkg_hint' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='54' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='blkg_list' type-id='e151255a' visibility='default' filepath='include/linux/blk-cgroup.h' line='52' column='1'/> + <var-decl name='blkg_list' type-id='e151255a' visibility='default' filepath='include/linux/blk-cgroup.h' line='55' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='cpd' type-id='39e1fe03' visibility='default' filepath='include/linux/blk-cgroup.h' line='54' column='1'/> + <var-decl name='cpd' type-id='39e1fe03' visibility='default' filepath='include/linux/blk-cgroup.h' line='57' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2816'> - <var-decl name='all_blkcgs_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='56' column='1'/> + <var-decl name='all_blkcgs_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='59' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2944'> - <var-decl name='cgwb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='58' column='1'/> + <var-decl name='cgwb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='61' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3072'> - <var-decl name='cgwb_refcnt' type-id='64615833' visibility='default' filepath='include/linux/blk-cgroup.h' line='59' column='1'/> + <var-decl name='cgwb_refcnt' type-id='64615833' visibility='default' filepath='include/linux/blk-cgroup.h' line='62' column='1'/> </data-member> </class-decl> <class-decl name='bsg_ops' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/bsg.h' line='9' column='1' id='ebd46aa4'> @@ -23044,12 +23045,12 @@ <var-decl name='seq' type-id='19c2251e' visibility='default' filepath='include/net/netns/ipv6.h' line='107' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__10' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='204' column='1' id='6d001302'> + <class-decl name='__anonymous_struct__10' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='212' column='1' id='6d001302'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='icq' type-id='7c6e0e0c' visibility='default' filepath='include/linux/blkdev.h' line='205' column='1'/> + <var-decl name='icq' type-id='7c6e0e0c' visibility='default' filepath='include/linux/blkdev.h' line='213' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='priv' type-id='24ae0315' visibility='default' filepath='include/linux/blkdev.h' line='206' column='1'/> + <var-decl name='priv' type-id='24ae0315' visibility='default' filepath='include/linux/blkdev.h' line='214' column='1'/> </data-member> </class-decl> <class-decl name='__anonymous_struct__46' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1' id='5e3b2ede'> @@ -23103,15 +23104,15 @@ <var-decl name='frozen' type-id='f0981eeb' visibility='default' filepath='include/linux/mm_types.h' line='122' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__11' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='209' column='1' id='5596717b'> + <class-decl name='__anonymous_struct__11' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='217' column='1' id='5596717b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='seq' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='210' column='1'/> + <var-decl name='seq' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='218' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='219' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='saved_end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='212' column='1'/> + <var-decl name='saved_end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='220' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='3577ed21' size-in-bits='64' id='ac8cd584'/> @@ -23349,7 +23350,7 @@ <typedef-decl name='mempool_free_t' type-id='c039af2e' filepath='include/linux/mempool.h' line='14' column='1' id='27f2e0d9'/> <typedef-decl name='perf_overflow_handler_t' type-id='a8564695' filepath='include/linux/perf_event.h' line='521' column='1' id='20a2e4e6'/> <typedef-decl name='proc_handler' type-id='99803d40' filepath='include/linux/sysctl.h' line='40' column='1' id='8cf4128f'/> - <typedef-decl name='rq_end_io_fn' type-id='06c207bd' filepath='include/linux/blkdev.h' line='60' column='1' id='537d88b1'/> + <typedef-decl name='rq_end_io_fn' type-id='06c207bd' filepath='include/linux/blkdev.h' line='68' column='1' id='537d88b1'/> <pointer-type-def type-id='59145b91' size-in-bits='64' id='ae18a37d'/> <typedef-decl name='sigval_t' type-id='a094b870' filepath='include/uapi/asm-generic/siginfo.h' line='11' column='1' id='95506cfb'/> <typedef-decl name='siphash_key_t' type-id='a1908dcc' filepath='include/linux/siphash.h' line='22' column='1' id='7799da43'/> @@ -23600,12 +23601,12 @@ <var-decl name='decrypt' type-id='3347d7ed' visibility='default' filepath='include/linux/crypto.h' line='568' column='1'/> </data-member> </class-decl> - <class-decl name='blkg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='89' column='1' id='55eaf925'> + <class-decl name='blkg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='92' column='1' id='55eaf925'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='91' column='1'/> + <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='94' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='92' column='1'/> + <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='95' column='1'/> </data-member> </class-decl> <class-decl name='cfg80211_bss_selection' size-in-bits='96' is-struct='yes' visibility='default' filepath='include/net/cfg80211.h' line='2367' column='1' id='d24a933d'> @@ -24219,24 +24220,24 @@ <var-decl name='pgsize_bitmap' type-id='7359adad' visibility='default' filepath='include/linux/iommu.h' line='303' column='1'/> </data-member> </class-decl> - <class-decl name='ip6_sf_list' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='104' column='1' id='b83c8287'> + <class-decl name='ip6_sf_list' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='112' column='1' id='b83c8287'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sf_next' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='105' column='1'/> + <var-decl name='sf_next' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='113' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='sf_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='106' column='1'/> + <var-decl name='sf_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='114' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='sf_count' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='107' column='1'/> + <var-decl name='sf_count' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='115' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='sf_gsresp' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='108' column='1'/> + <var-decl name='sf_gsresp' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='328'> - <var-decl name='sf_oldin' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='109' column='1'/> + <var-decl name='sf_oldin' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='117' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='336'> - <var-decl name='sf_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='110' column='1'/> + <var-decl name='sf_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='118' column='1'/> </data-member> </class-decl> <class-decl name='ip_conntrack_stat' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/netfilter/nf_conntrack_common.h' line='7' column='1' id='be50a64d'> @@ -24695,9 +24696,9 @@ <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/pm_domain.h' line='124' column='1'/> </data-member> </class-decl> - <class-decl name='prot_inuse' size-in-bits='2048' is-struct='yes' visibility='default' filepath='net/core/sock.c' line='3164' column='1' id='ac763c5d'> + <class-decl name='prot_inuse' size-in-bits='2048' is-struct='yes' visibility='default' filepath='net/core/sock.c' line='3161' column='1' id='ac763c5d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='val' type-id='93e41790' visibility='default' filepath='net/core/sock.c' line='3165' column='1'/> + <var-decl name='val' type-id='93e41790' visibility='default' filepath='net/core/sock.c' line='3162' column='1'/> </data-member> </class-decl> <class-decl name='resource' size-in-bits='768' is-struct='yes' visibility='default' filepath='include/linux/ioport.h' line='20' column='1' id='5218160d'> @@ -25104,15 +25105,15 @@ <var-decl name='tmplt_priv' type-id='eaa32e2f' visibility='default' filepath='include/net/sch_generic.h' line='348' column='1'/> </data-member> </class-decl> - <class-decl name='tcp_fastopen_context' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1645' column='1' id='f77d4717'> + <class-decl name='tcp_fastopen_context' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1650' column='1' id='f77d4717'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tfm' type-id='75f72758' visibility='default' filepath='include/net/tcp.h' line='1646' column='1'/> + <var-decl name='tfm' type-id='75f72758' visibility='default' filepath='include/net/tcp.h' line='1651' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='key' type-id='9396cabb' visibility='default' filepath='include/net/tcp.h' line='1647' column='1'/> + <var-decl name='key' type-id='9396cabb' visibility='default' filepath='include/net/tcp.h' line='1652' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/tcp.h' line='1648' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/tcp.h' line='1653' column='1'/> </data-member> </class-decl> <class-decl name='tcp_mib' size-in-bits='1024' is-struct='yes' visibility='default' filepath='include/net/snmp.h' line='97' column='1' id='e1f906a3'> @@ -26929,60 +26930,60 @@ <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/sch_generic.h' line='307' column='1'/> </data-member> </class-decl> - <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1033' column='1' id='54718f09'> + <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1034' column='1' id='54718f09'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/net/tcp.h' line='1034' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/net/tcp.h' line='1035' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='key' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1035' column='1'/> + <var-decl name='key' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1036' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1036' column='1'/> + <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1037' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='init' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1039' column='1'/> + <var-decl name='init' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1040' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='release' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1041' column='1'/> + <var-decl name='release' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1042' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='ssthresh' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1044' column='1'/> + <var-decl name='ssthresh' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1045' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='cong_avoid' type-id='ece3af1e' visibility='default' filepath='include/net/tcp.h' line='1046' column='1'/> + <var-decl name='cong_avoid' type-id='ece3af1e' visibility='default' filepath='include/net/tcp.h' line='1047' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='set_state' type-id='f5feb7a4' visibility='default' filepath='include/net/tcp.h' line='1048' column='1'/> + <var-decl name='set_state' type-id='f5feb7a4' visibility='default' filepath='include/net/tcp.h' line='1049' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='cwnd_event' type-id='bfacbc7a' visibility='default' filepath='include/net/tcp.h' line='1050' column='1'/> + <var-decl name='cwnd_event' type-id='bfacbc7a' visibility='default' filepath='include/net/tcp.h' line='1051' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='in_ack_event' type-id='815f64bf' visibility='default' filepath='include/net/tcp.h' line='1052' column='1'/> + <var-decl name='in_ack_event' type-id='815f64bf' visibility='default' filepath='include/net/tcp.h' line='1053' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='undo_cwnd' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1054' column='1'/> + <var-decl name='undo_cwnd' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1055' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='pkts_acked' type-id='bffb5883' visibility='default' filepath='include/net/tcp.h' line='1056' column='1'/> + <var-decl name='pkts_acked' type-id='bffb5883' visibility='default' filepath='include/net/tcp.h' line='1057' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='min_tso_segs' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1058' column='1'/> + <var-decl name='min_tso_segs' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1059' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='sndbuf_expand' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1060' column='1'/> + <var-decl name='sndbuf_expand' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1061' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='cong_control' type-id='636d3a20' visibility='default' filepath='include/net/tcp.h' line='1064' column='1'/> + <var-decl name='cong_control' type-id='636d3a20' visibility='default' filepath='include/net/tcp.h' line='1065' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='get_info' type-id='14ca5c08' visibility='default' filepath='include/net/tcp.h' line='1066' column='1'/> + <var-decl name='get_info' type-id='14ca5c08' visibility='default' filepath='include/net/tcp.h' line='1067' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='name' type-id='ac1fa8c0' visibility='default' filepath='include/net/tcp.h' line='1069' column='1'/> + <var-decl name='name' type-id='ac1fa8c0' visibility='default' filepath='include/net/tcp.h' line='1070' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/tcp.h' line='1070' column='1'/> + <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/tcp.h' line='1071' column='1'/> </data-member> </class-decl> <class-decl name='tty_buffer' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/tty.h' line='58' column='1' id='2f351d1f'> @@ -27670,12 +27671,12 @@ <var-decl name='ctrl' type-id='2633d065' visibility='default' filepath='arch/arm64/include/asm/hw_breakpoint.h' line='37' column='1'/> </data-member> </class-decl> - <class-decl name='blkcg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='102' column='1' id='11fd1392'> + <class-decl name='blkcg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='105' column='1' id='11fd1392'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='104' column='1'/> + <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='107' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='105' column='1'/> + <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='108' column='1'/> </data-member> </class-decl> <class-decl name='bucket_table' size-in-bits='1024' is-struct='yes' visibility='default' filepath='include/linux/rhashtable.h' line='63' column='1' id='984972f4'> @@ -31174,15 +31175,15 @@ <var-decl name='bv_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/bvec.h' line='33' column='1'/> </data-member> </class-decl> - <class-decl name='blk_plug' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1328' column='1' id='718a7cd9'> + <class-decl name='blk_plug' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1336' column='1' id='718a7cd9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1329' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1337' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='mq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1330' column='1'/> + <var-decl name='mq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1338' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='cb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1331' column='1'/> + <var-decl name='cb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='1339' column='1'/> </data-member> </class-decl> <class-decl name='cdev' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/linux/cdev.h' line='14' column='1' id='22f86351'> @@ -33153,282 +33154,282 @@ </data-member> </class-decl> <class-decl name='removed_region' is-struct='yes' visibility='default' is-declaration-only='yes' id='6e7f5ae8'/> - <class-decl name='request_queue' size-in-bits='19968' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='436' column='1' id='caf652c6'> + <class-decl name='request_queue' size-in-bits='19968' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='444' column='1' id='caf652c6'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='queue_head' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='440' column='1'/> + <var-decl name='queue_head' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='448' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='last_merge' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='441' column='1'/> + <var-decl name='last_merge' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='449' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='elevator' type-id='07d0a3e7' visibility='default' filepath='include/linux/blkdev.h' line='442' column='1'/> + <var-decl name='elevator' type-id='07d0a3e7' visibility='default' filepath='include/linux/blkdev.h' line='450' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='nr_rqs' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='443' column='1'/> + <var-decl name='nr_rqs' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='451' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='nr_rqs_elvpriv' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='444' column='1'/> + <var-decl name='nr_rqs_elvpriv' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='452' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='stats' type-id='a0408c5a' visibility='default' filepath='include/linux/blkdev.h' line='446' column='1'/> + <var-decl name='stats' type-id='a0408c5a' visibility='default' filepath='include/linux/blkdev.h' line='454' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='rq_qos' type-id='c3a28778' visibility='default' filepath='include/linux/blkdev.h' line='447' column='1'/> + <var-decl name='rq_qos' type-id='c3a28778' visibility='default' filepath='include/linux/blkdev.h' line='455' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='root_rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blkdev.h' line='455' column='1'/> + <var-decl name='root_rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blkdev.h' line='463' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='request_fn' type-id='ea3f455e' visibility='default' filepath='include/linux/blkdev.h' line='457' column='1'/> + <var-decl name='request_fn' type-id='ea3f455e' visibility='default' filepath='include/linux/blkdev.h' line='465' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='make_request_fn' type-id='8f01ad5c' visibility='default' filepath='include/linux/blkdev.h' line='458' column='1'/> + <var-decl name='make_request_fn' type-id='8f01ad5c' visibility='default' filepath='include/linux/blkdev.h' line='466' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='poll_fn' type-id='5db4e929' visibility='default' filepath='include/linux/blkdev.h' line='459' column='1'/> + <var-decl name='poll_fn' type-id='5db4e929' visibility='default' filepath='include/linux/blkdev.h' line='467' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='prep_rq_fn' type-id='4c4bf79f' visibility='default' filepath='include/linux/blkdev.h' line='460' column='1'/> + <var-decl name='prep_rq_fn' type-id='4c4bf79f' visibility='default' filepath='include/linux/blkdev.h' line='468' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='unprep_rq_fn' type-id='da623346' visibility='default' filepath='include/linux/blkdev.h' line='461' column='1'/> + <var-decl name='unprep_rq_fn' type-id='da623346' visibility='default' filepath='include/linux/blkdev.h' line='469' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='softirq_done_fn' type-id='c803c0bf' visibility='default' filepath='include/linux/blkdev.h' line='462' column='1'/> + <var-decl name='softirq_done_fn' type-id='c803c0bf' visibility='default' filepath='include/linux/blkdev.h' line='470' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1664'> - <var-decl name='rq_timed_out_fn' type-id='e7a041a6' visibility='default' filepath='include/linux/blkdev.h' line='463' column='1'/> + <var-decl name='rq_timed_out_fn' type-id='e7a041a6' visibility='default' filepath='include/linux/blkdev.h' line='471' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1728'> - <var-decl name='dma_drain_needed' type-id='1b19faa1' visibility='default' filepath='include/linux/blkdev.h' line='464' column='1'/> + <var-decl name='dma_drain_needed' type-id='1b19faa1' visibility='default' filepath='include/linux/blkdev.h' line='472' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='lld_busy_fn' type-id='fcb4eacc' visibility='default' filepath='include/linux/blkdev.h' line='465' column='1'/> + <var-decl name='lld_busy_fn' type-id='fcb4eacc' visibility='default' filepath='include/linux/blkdev.h' line='473' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='init_rq_fn' type-id='872e42c4' visibility='default' filepath='include/linux/blkdev.h' line='467' column='1'/> + <var-decl name='init_rq_fn' type-id='872e42c4' visibility='default' filepath='include/linux/blkdev.h' line='475' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='exit_rq_fn' type-id='c099235a' visibility='default' filepath='include/linux/blkdev.h' line='469' column='1'/> + <var-decl name='exit_rq_fn' type-id='c099235a' visibility='default' filepath='include/linux/blkdev.h' line='477' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1984'> - <var-decl name='initialize_rq_fn' type-id='bbf015cd' visibility='default' filepath='include/linux/blkdev.h' line='471' column='1'/> + <var-decl name='initialize_rq_fn' type-id='bbf015cd' visibility='default' filepath='include/linux/blkdev.h' line='479' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2048'> - <var-decl name='mq_ops' type-id='e1962c5d' visibility='default' filepath='include/linux/blkdev.h' line='473' column='1'/> + <var-decl name='mq_ops' type-id='e1962c5d' visibility='default' filepath='include/linux/blkdev.h' line='481' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2112'> - <var-decl name='mq_map' type-id='807869d3' visibility='default' filepath='include/linux/blkdev.h' line='475' column='1'/> + <var-decl name='mq_map' type-id='807869d3' visibility='default' filepath='include/linux/blkdev.h' line='483' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='queue_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='478' column='1'/> + <var-decl name='queue_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='486' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='nr_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='479' column='1'/> + <var-decl name='nr_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='487' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2272'> - <var-decl name='queue_depth' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='481' column='1'/> + <var-decl name='queue_depth' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='489' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='queue_hw_ctx' type-id='3e195537' visibility='default' filepath='include/linux/blkdev.h' line='484' column='1'/> + <var-decl name='queue_hw_ctx' type-id='3e195537' visibility='default' filepath='include/linux/blkdev.h' line='492' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='nr_hw_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='485' column='1'/> + <var-decl name='nr_hw_queues' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='493' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='end_sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='490' column='1'/> + <var-decl name='end_sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='498' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='boundary_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='491' column='1'/> + <var-decl name='boundary_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='499' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='delay_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='496' column='1'/> + <var-decl name='delay_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='504' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3648'> - <var-decl name='backing_dev_info' type-id='ef4fae1b' visibility='default' filepath='include/linux/blkdev.h' line='498' column='1'/> + <var-decl name='backing_dev_info' type-id='ef4fae1b' visibility='default' filepath='include/linux/blkdev.h' line='506' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3712'> - <var-decl name='queuedata' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='504' column='1'/> + <var-decl name='queuedata' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3776'> - <var-decl name='queue_flags' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='509' column='1'/> + <var-decl name='queue_flags' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='517' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3840'> - <var-decl name='pm_only' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='515' column='1'/> + <var-decl name='pm_only' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='523' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3872'> - <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='521' column='1'/> + <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3904'> - <var-decl name='bounce_gfp' type-id='3eb7c31c' visibility='default' filepath='include/linux/blkdev.h' line='526' column='1'/> + <var-decl name='bounce_gfp' type-id='3eb7c31c' visibility='default' filepath='include/linux/blkdev.h' line='534' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3936'> - <var-decl name='__queue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='533' column='1'/> + <var-decl name='__queue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='541' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3968'> - <var-decl name='queue_lock' type-id='cff2d845' visibility='default' filepath='include/linux/blkdev.h' line='534' column='1'/> + <var-decl name='queue_lock' type-id='cff2d845' visibility='default' filepath='include/linux/blkdev.h' line='542' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4032'> - <var-decl name='kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='539' column='1'/> + <var-decl name='kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='547' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4800'> - <var-decl name='mq_kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='544' column='1'/> + <var-decl name='mq_kobj' type-id='b6ab8849' visibility='default' filepath='include/linux/blkdev.h' line='552' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5568'> - <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/blkdev.h' line='551' column='1'/> + <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/blkdev.h' line='559' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5632'> - <var-decl name='rpm_status' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='552' column='1'/> + <var-decl name='rpm_status' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='560' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5664'> - <var-decl name='nr_pending' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='553' column='1'/> + <var-decl name='nr_pending' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='561' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5696'> - <var-decl name='nr_requests' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='559' column='1'/> + <var-decl name='nr_requests' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='567' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5760'> - <var-decl name='nr_congestion_on' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='560' column='1'/> + <var-decl name='nr_congestion_on' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='568' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5792'> - <var-decl name='nr_congestion_off' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='561' column='1'/> + <var-decl name='nr_congestion_off' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='569' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5824'> - <var-decl name='nr_batching' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='562' column='1'/> + <var-decl name='nr_batching' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='570' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5856'> - <var-decl name='dma_drain_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='564' column='1'/> + <var-decl name='dma_drain_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='572' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5888'> - <var-decl name='dma_drain_buffer' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='565' column='1'/> + <var-decl name='dma_drain_buffer' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='573' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5952'> - <var-decl name='dma_pad_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='566' column='1'/> + <var-decl name='dma_pad_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='574' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5984'> - <var-decl name='dma_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='567' column='1'/> + <var-decl name='dma_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='575' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6016'> - <var-decl name='queue_tags' type-id='7ea88d03' visibility='default' filepath='include/linux/blkdev.h' line='569' column='1'/> + <var-decl name='queue_tags' type-id='7ea88d03' visibility='default' filepath='include/linux/blkdev.h' line='577' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6080'> - <var-decl name='nr_sorted' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='571' column='1'/> + <var-decl name='nr_sorted' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='579' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6112'> - <var-decl name='in_flight' type-id='0d532ec1' visibility='default' filepath='include/linux/blkdev.h' line='572' column='1'/> + <var-decl name='in_flight' type-id='0d532ec1' visibility='default' filepath='include/linux/blkdev.h' line='580' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6176'> - <var-decl name='request_fn_active' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='579' column='1'/> + <var-decl name='request_fn_active' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='587' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6208'> - <var-decl name='ksm' type-id='6e3684aa' visibility='default' filepath='include/linux/blkdev.h' line='582' column='1'/> + <var-decl name='ksm' type-id='6e3684aa' visibility='default' filepath='include/linux/blkdev.h' line='590' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6272'> - <var-decl name='rq_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='585' column='1'/> + <var-decl name='rq_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='593' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6304'> - <var-decl name='poll_nsec' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='586' column='1'/> + <var-decl name='poll_nsec' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='594' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6336'> - <var-decl name='poll_cb' type-id='1f98c663' visibility='default' filepath='include/linux/blkdev.h' line='588' column='1'/> + <var-decl name='poll_cb' type-id='1f98c663' visibility='default' filepath='include/linux/blkdev.h' line='596' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6400'> - <var-decl name='poll_stat' type-id='8574e02e' visibility='default' filepath='include/linux/blkdev.h' line='589' column='1'/> + <var-decl name='poll_stat' type-id='8574e02e' visibility='default' filepath='include/linux/blkdev.h' line='597' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11520'> - <var-decl name='timeout' type-id='abe41e67' visibility='default' filepath='include/linux/blkdev.h' line='591' column='1'/> + <var-decl name='timeout' type-id='abe41e67' visibility='default' filepath='include/linux/blkdev.h' line='599' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11968'> - <var-decl name='timeout_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='592' column='1'/> + <var-decl name='timeout_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='600' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12352'> - <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='593' column='1'/> + <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='601' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12480'> - <var-decl name='icq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='595' column='1'/> + <var-decl name='icq_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='603' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12608'> - <var-decl name='blkcg_pols' type-id='f066dd3c' visibility='default' filepath='include/linux/blkdev.h' line='597' column='1'/> + <var-decl name='blkcg_pols' type-id='f066dd3c' visibility='default' filepath='include/linux/blkdev.h' line='605' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12672'> - <var-decl name='root_blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='598' column='1'/> + <var-decl name='root_blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='606' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12736'> - <var-decl name='blkg_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='599' column='1'/> + <var-decl name='blkg_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='607' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12864'> - <var-decl name='limits' type-id='f0966d3d' visibility='default' filepath='include/linux/blkdev.h' line='602' column='1'/> + <var-decl name='limits' type-id='f0966d3d' visibility='default' filepath='include/linux/blkdev.h' line='610' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13696'> - <var-decl name='sg_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='630' column='1'/> + <var-decl name='sg_timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='638' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13728'> - <var-decl name='sg_reserved_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='631' column='1'/> + <var-decl name='sg_reserved_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='639' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13760'> - <var-decl name='node' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='632' column='1'/> + <var-decl name='node' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='640' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13824'> - <var-decl name='fq' type-id='e118aff9' visibility='default' filepath='include/linux/blkdev.h' line='640' column='1'/> + <var-decl name='fq' type-id='e118aff9' visibility='default' filepath='include/linux/blkdev.h' line='648' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13888'> - <var-decl name='requeue_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='642' column='1'/> + <var-decl name='requeue_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='650' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14016'> - <var-decl name='requeue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='643' column='1'/> + <var-decl name='requeue_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blkdev.h' line='651' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14080'> - <var-decl name='requeue_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='644' column='1'/> + <var-decl name='requeue_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/blkdev.h' line='652' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15168'> - <var-decl name='sysfs_lock' type-id='925167dc' visibility='default' filepath='include/linux/blkdev.h' line='646' column='1'/> + <var-decl name='sysfs_lock' type-id='925167dc' visibility='default' filepath='include/linux/blkdev.h' line='654' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15424'> - <var-decl name='bypass_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='648' column='1'/> + <var-decl name='bypass_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='656' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15456'> - <var-decl name='mq_freeze_depth' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='649' column='1'/> + <var-decl name='mq_freeze_depth' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='657' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15488'> - <var-decl name='bsg_job_fn' type-id='826d9136' visibility='default' filepath='include/linux/blkdev.h' line='651' column='1'/> + <var-decl name='bsg_job_fn' type-id='826d9136' visibility='default' filepath='include/linux/blkdev.h' line='659' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15552'> - <var-decl name='bsg_dev' type-id='6a3af55b' visibility='default' filepath='include/linux/blkdev.h' line='652' column='1'/> + <var-decl name='bsg_dev' type-id='6a3af55b' visibility='default' filepath='include/linux/blkdev.h' line='660' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15808'> - <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blkdev.h' line='658' column='1'/> + <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blkdev.h' line='666' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15936'> - <var-decl name='mq_freeze_wq' type-id='b5ab048f' visibility='default' filepath='include/linux/blkdev.h' line='659' column='1'/> + <var-decl name='mq_freeze_wq' type-id='b5ab048f' visibility='default' filepath='include/linux/blkdev.h' line='667' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16128'> - <var-decl name='q_usage_counter' type-id='818799b4' visibility='default' filepath='include/linux/blkdev.h' line='660' column='1'/> + <var-decl name='q_usage_counter' type-id='818799b4' visibility='default' filepath='include/linux/blkdev.h' line='668' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16576'> - <var-decl name='all_q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='661' column='1'/> + <var-decl name='all_q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='669' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16704'> - <var-decl name='tag_set' type-id='cc26d15f' visibility='default' filepath='include/linux/blkdev.h' line='663' column='1'/> + <var-decl name='tag_set' type-id='cc26d15f' visibility='default' filepath='include/linux/blkdev.h' line='671' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16768'> - <var-decl name='tag_set_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='664' column='1'/> + <var-decl name='tag_set_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='672' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16896'> - <var-decl name='bio_split' type-id='dfa886b2' visibility='default' filepath='include/linux/blkdev.h' line='665' column='1'/> + <var-decl name='bio_split' type-id='dfa886b2' visibility='default' filepath='include/linux/blkdev.h' line='673' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19072'> - <var-decl name='mq_sysfs_init_done' type-id='b50a4934' visibility='default' filepath='include/linux/blkdev.h' line='672' column='1'/> + <var-decl name='mq_sysfs_init_done' type-id='b50a4934' visibility='default' filepath='include/linux/blkdev.h' line='680' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19136'> - <var-decl name='cmd_size' type-id='b59d7dce' visibility='default' filepath='include/linux/blkdev.h' line='674' column='1'/> + <var-decl name='cmd_size' type-id='b59d7dce' visibility='default' filepath='include/linux/blkdev.h' line='682' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19200'> - <var-decl name='rq_alloc_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='675' column='1'/> + <var-decl name='rq_alloc_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='683' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19264'> - <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='677' column='1'/> + <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/blkdev.h' line='685' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='19648'> - <var-decl name='write_hints' type-id='64af1365' visibility='default' filepath='include/linux/blkdev.h' line='680' column='1'/> + <var-decl name='write_hints' type-id='64af1365' visibility='default' filepath='include/linux/blkdev.h' line='688' column='1'/> </data-member> </class-decl> <class-decl name='robust_list_head' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/uapi/linux/futex.h' line='70' column='1' id='999b38a0'> @@ -45381,13 +45382,13 @@ <var-decl name='key' type-id='00205383' visibility='default' filepath='include/linux/jump_label.h' line='289' column='1'/> </data-member> </class-decl> - <var-decl name='cpu_hwcap_keys' type-id='6288ed8b' mangled-name='cpu_hwcap_keys' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='88' column='1' elf-symbol-id='cpu_hwcap_keys'/> - <var-decl name='arm64_const_caps_ready' type-id='237c0d27' mangled-name='arm64_const_caps_ready' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='1750' column='1' elf-symbol-id='arm64_const_caps_ready'/> - <var-decl name='cpu_hwcaps' type-id='f066dd3c' mangled-name='cpu_hwcaps' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='51' column='1' elf-symbol-id='cpu_hwcaps'/> - <function-decl name='cpus_read_lock' mangled-name='cpus_read_lock' filepath='include/linux/cpu.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpus_read_lock'> + <var-decl name='cpu_hwcap_keys' type-id='6288ed8b' mangled-name='cpu_hwcap_keys' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='94' column='1' elf-symbol-id='cpu_hwcap_keys'/> + <var-decl name='arm64_const_caps_ready' type-id='237c0d27' mangled-name='arm64_const_caps_ready' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='1780' column='1' elf-symbol-id='arm64_const_caps_ready'/> + <var-decl name='cpu_hwcaps' type-id='f066dd3c' mangled-name='cpu_hwcaps' visibility='default' filepath='arch/arm64/kernel/cpufeature.c' line='55' column='1' elf-symbol-id='cpu_hwcaps'/> + <function-decl name='cpus_read_lock' mangled-name='cpus_read_lock' filepath='include/linux/cpu.h' line='119' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpus_read_lock'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cpus_read_unlock' mangled-name='cpus_read_unlock' filepath='include/linux/cpu.h' line='114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpus_read_unlock'> + <function-decl name='cpus_read_unlock' mangled-name='cpus_read_unlock' filepath='include/linux/cpu.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpus_read_unlock'> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -45510,7 +45511,7 @@ <parameter type-id='eaa32e2f'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='get_random_u32' mangled-name='get_random_u32' filepath='include/linux/random.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_random_u32'> + <function-decl name='get_random_u32' mangled-name='get_random_u32' filepath='include/linux/random.h' line='33' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_random_u32'> <return type-id='f0981eeb'/> </function-decl> <function-type size-in-bits='64' id='f0fa08f3'> @@ -45532,57 +45533,57 @@ <array-type-def dimensions='1' type-id='b92c8d0d' size-in-bits='1600' id='68a92070'> <subrange length='5' type-id='7ff19f0f' id='53010e10'/> </array-type-def> - <class-decl name='blkcg' size-in-bits='3136' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='46' column='1' id='19b26952'> + <class-decl name='blkcg' size-in-bits='3136' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='49' column='1' id='19b26952'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='css' type-id='7f3df443' visibility='default' filepath='include/linux/blk-cgroup.h' line='47' column='1'/> + <var-decl name='css' type-id='7f3df443' visibility='default' filepath='include/linux/blk-cgroup.h' line='50' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blk-cgroup.h' line='48' column='1'/> + <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/linux/blk-cgroup.h' line='51' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='blkg_tree' type-id='1c8dedcf' visibility='default' filepath='include/linux/blk-cgroup.h' line='50' column='1'/> + <var-decl name='blkg_tree' type-id='1c8dedcf' visibility='default' filepath='include/linux/blk-cgroup.h' line='53' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='blkg_hint' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='51' column='1'/> + <var-decl name='blkg_hint' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='54' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='blkg_list' type-id='e151255a' visibility='default' filepath='include/linux/blk-cgroup.h' line='52' column='1'/> + <var-decl name='blkg_list' type-id='e151255a' visibility='default' filepath='include/linux/blk-cgroup.h' line='55' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='cpd' type-id='39e1fe03' visibility='default' filepath='include/linux/blk-cgroup.h' line='54' column='1'/> + <var-decl name='cpd' type-id='39e1fe03' visibility='default' filepath='include/linux/blk-cgroup.h' line='57' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2816'> - <var-decl name='all_blkcgs_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='56' column='1'/> + <var-decl name='all_blkcgs_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='59' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2944'> - <var-decl name='cgwb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='58' column='1'/> + <var-decl name='cgwb_list' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='61' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3072'> - <var-decl name='cgwb_refcnt' type-id='64615833' visibility='default' filepath='include/linux/blk-cgroup.h' line='59' column='1'/> + <var-decl name='cgwb_refcnt' type-id='64615833' visibility='default' filepath='include/linux/blk-cgroup.h' line='62' column='1'/> </data-member> </class-decl> - <class-decl name='blkcg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='102' column='1' id='11fd1392'> + <class-decl name='blkcg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='105' column='1' id='11fd1392'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='104' column='1'/> + <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='107' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='105' column='1'/> + <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='108' column='1'/> </data-member> </class-decl> - <class-decl name='blkg_rwstat' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='73' column='1' id='247d0323'> + <class-decl name='blkg_rwstat' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='76' column='1' id='247d0323'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='cpu_cnt' type-id='68a92070' visibility='default' filepath='include/linux/blk-cgroup.h' line='74' column='1'/> + <var-decl name='cpu_cnt' type-id='68a92070' visibility='default' filepath='include/linux/blk-cgroup.h' line='77' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='aux_cnt' type-id='39e531ac' visibility='default' filepath='include/linux/blk-cgroup.h' line='75' column='1'/> + <var-decl name='aux_cnt' type-id='39e531ac' visibility='default' filepath='include/linux/blk-cgroup.h' line='78' column='1'/> </data-member> </class-decl> - <class-decl name='blkg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='89' column='1' id='55eaf925'> + <class-decl name='blkg_policy_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='92' column='1' id='55eaf925'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='91' column='1'/> + <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='94' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='92' column='1'/> + <var-decl name='plid' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='95' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='19b26952' size-in-bits='64' id='11bff950'/> @@ -45708,14 +45709,14 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='arch/arm64/kernel/traps.c' language='LANG_C89'> - <function-decl name='tracing_off' mangled-name='tracing_off' filepath='include/linux/kernel.h' line='641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tracing_off'> + <function-decl name='tracing_off' mangled-name='tracing_off' filepath='include/linux/kernel.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tracing_off'> <return type-id='48b5725f'/> </function-decl> <function-decl name='do_exit' mangled-name='do_exit' filepath='include/linux/kernel.h' line='307' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='do_exit'> <parameter type-id='bd54fe1a'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='find_vma' mangled-name='find_vma' filepath='include/linux/mm.h' line='2490' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='find_vma'> + <function-decl name='find_vma' mangled-name='find_vma' filepath='include/linux/mm.h' line='2492' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='find_vma'> <parameter type-id='df4b7819'/> <parameter type-id='7359adad'/> <return type-id='2ae08426'/> @@ -45730,7 +45731,7 @@ <parameter type-id='9b58df93'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='get_unmapped_area' mangled-name='get_unmapped_area' filepath='include/linux/mm.h' line='2368' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_unmapped_area'> + <function-decl name='get_unmapped_area' mangled-name='get_unmapped_area' filepath='include/linux/mm.h' line='2370' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_unmapped_area'> <parameter type-id='77e79a4b'/> <parameter type-id='7359adad'/> <parameter type-id='7359adad'/> @@ -46159,7 +46160,7 @@ <parameter type-id='eaa32e2f'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='remap_pfn_range' mangled-name='remap_pfn_range' filepath='include/linux/mm.h' line='2572' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='remap_pfn_range'> + <function-decl name='remap_pfn_range' mangled-name='remap_pfn_range' filepath='include/linux/mm.h' line='2574' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='remap_pfn_range'> <parameter type-id='2ae08426'/> <parameter type-id='7359adad'/> <parameter type-id='7359adad'/> @@ -46478,8 +46479,8 @@ </abi-instr> <abi-instr address-size='64' path='arch/arm64/mm/mmu.c' language='LANG_C89'> <var-decl name='kimage_voffset' type-id='91ce1af9' mangled-name='kimage_voffset' visibility='default' filepath='arch/arm64/mm/mmu.c' line='58' column='1' elf-symbol-id='kimage_voffset'/> - <function-decl name='kern_addr_valid' mangled-name='kern_addr_valid' filepath='arch/arm64/mm/mmu.c' line='1116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kern_addr_valid'> - <parameter type-id='7359adad' name='addr' filepath='arch/arm64/mm/mmu.c' line='1116' column='1'/> + <function-decl name='kern_addr_valid' mangled-name='kern_addr_valid' filepath='arch/arm64/mm/mmu.c' line='1122' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kern_addr_valid'> + <parameter type-id='7359adad' name='addr' filepath='arch/arm64/mm/mmu.c' line='1122' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -46687,6 +46688,10 @@ <parameter type-id='08c8d0fa'/> <return type-id='95e97e5e'/> </function-decl> + <function-decl name='cancel_work_sync' mangled-name='cancel_work_sync' filepath='include/linux/workqueue.h' line='486' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cancel_work_sync'> + <parameter type-id='83c1bde6'/> + <return type-id='c894953d'/> + </function-decl> <function-decl name='rb_prev' mangled-name='rb_prev' filepath='include/linux/rbtree.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rb_prev'> <parameter type-id='47b73425'/> <return type-id='e6532500'/> @@ -47158,105 +47163,105 @@ <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/inetdevice.h' line='50' column='1'/> </data-member> </class-decl> - <class-decl name='inet6_dev' size-in-bits='5632' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='166' column='1' id='8db8de2b'> + <class-decl name='inet6_dev' size-in-bits='5632' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='174' column='1' id='8db8de2b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dev' type-id='68a2d05b' visibility='default' filepath='include/net/if_inet6.h' line='167' column='1'/> + <var-decl name='dev' type-id='68a2d05b' visibility='default' filepath='include/net/if_inet6.h' line='175' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='addr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='169' column='1'/> + <var-decl name='addr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='177' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='mc_list' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='171' column='1'/> + <var-decl name='mc_list' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='179' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='mc_tomb' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='172' column='1'/> + <var-decl name='mc_tomb' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='180' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mc_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='173' column='1'/> + <var-decl name='mc_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='181' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='mc_qrv' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='175' column='1'/> + <var-decl name='mc_qrv' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='183' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='360'> - <var-decl name='mc_gq_running' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='176' column='1'/> + <var-decl name='mc_gq_running' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='184' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='368'> - <var-decl name='mc_ifc_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='177' column='1'/> + <var-decl name='mc_ifc_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='185' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='376'> - <var-decl name='mc_dad_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='178' column='1'/> + <var-decl name='mc_dad_count' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='186' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='mc_v1_seen' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='180' column='1'/> + <var-decl name='mc_v1_seen' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='188' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='mc_qi' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='181' column='1'/> + <var-decl name='mc_qi' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='189' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='mc_qri' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='182' column='1'/> + <var-decl name='mc_qri' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='190' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='mc_maxdelay' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='183' column='1'/> + <var-decl name='mc_maxdelay' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='191' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='mc_gq_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='185' column='1'/> + <var-decl name='mc_gq_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='193' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='mc_ifc_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='186' column='1'/> + <var-decl name='mc_ifc_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='194' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='mc_dad_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='187' column='1'/> + <var-decl name='mc_dad_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='195' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1984'> - <var-decl name='ac_list' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='189' column='1'/> + <var-decl name='ac_list' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='197' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2048'> - <var-decl name='lock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='190' column='1'/> + <var-decl name='lock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='198' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2112'> - <var-decl name='refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='191' column='1'/> + <var-decl name='refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='199' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2144'> - <var-decl name='if_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/if_inet6.h' line='192' column='1'/> + <var-decl name='if_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/if_inet6.h' line='200' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='dead' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='193' column='1'/> + <var-decl name='dead' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='201' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2208'> - <var-decl name='desync_factor' type-id='19c2251e' visibility='default' filepath='include/net/if_inet6.h' line='195' column='1'/> + <var-decl name='desync_factor' type-id='19c2251e' visibility='default' filepath='include/net/if_inet6.h' line='203' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='rndid' type-id='d2f7b56a' visibility='default' filepath='include/net/if_inet6.h' line='196' column='1'/> + <var-decl name='rndid' type-id='d2f7b56a' visibility='default' filepath='include/net/if_inet6.h' line='204' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='tempaddr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='197' column='1'/> + <var-decl name='tempaddr_list' type-id='72f469ec' visibility='default' filepath='include/net/if_inet6.h' line='205' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2432'> - <var-decl name='token' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='199' column='1'/> + <var-decl name='token' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='207' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='nd_parms' type-id='affe0fe2' visibility='default' filepath='include/net/if_inet6.h' line='201' column='1'/> + <var-decl name='nd_parms' type-id='affe0fe2' visibility='default' filepath='include/net/if_inet6.h' line='209' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2624'> - <var-decl name='cnf' type-id='55e8af82' visibility='default' filepath='include/net/if_inet6.h' line='202' column='1'/> + <var-decl name='cnf' type-id='55e8af82' visibility='default' filepath='include/net/if_inet6.h' line='210' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4672'> - <var-decl name='stats' type-id='0e97f526' visibility='default' filepath='include/net/if_inet6.h' line='203' column='1'/> + <var-decl name='stats' type-id='0e97f526' visibility='default' filepath='include/net/if_inet6.h' line='211' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='rs_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='205' column='1'/> + <var-decl name='rs_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='213' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5376'> - <var-decl name='rs_interval' type-id='3158a266' visibility='default' filepath='include/net/if_inet6.h' line='206' column='1'/> + <var-decl name='rs_interval' type-id='3158a266' visibility='default' filepath='include/net/if_inet6.h' line='214' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5408'> - <var-decl name='rs_probes' type-id='8f048e17' visibility='default' filepath='include/net/if_inet6.h' line='207' column='1'/> + <var-decl name='rs_probes' type-id='8f048e17' visibility='default' filepath='include/net/if_inet6.h' line='215' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5440'> - <var-decl name='tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='209' column='1'/> + <var-decl name='tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='217' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='210' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='218' column='1'/> </data-member> </class-decl> <class-decl name='iw_handler_def' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/iw_handler.h' line='324' column='1' id='9218f3f6'> @@ -47290,18 +47295,18 @@ <var-decl name='libipw' type-id='29244949' visibility='default' filepath='include/net/iw_handler.h' line='424' column='1'/> </data-member> </class-decl> - <class-decl name='mini_Qdisc' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='1115' column='1' id='b10d582f'> + <class-decl name='mini_Qdisc' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='1120' column='1' id='b10d582f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='filter_list' type-id='6dca061b' visibility='default' filepath='include/net/sch_generic.h' line='1116' column='1'/> + <var-decl name='filter_list' type-id='6dca061b' visibility='default' filepath='include/net/sch_generic.h' line='1121' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='cpu_bstats' type-id='b3542b31' visibility='default' filepath='include/net/sch_generic.h' line='1117' column='1'/> + <var-decl name='cpu_bstats' type-id='b3542b31' visibility='default' filepath='include/net/sch_generic.h' line='1122' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='cpu_qstats' type-id='338303f5' visibility='default' filepath='include/net/sch_generic.h' line='1118' column='1'/> + <var-decl name='cpu_qstats' type-id='338303f5' visibility='default' filepath='include/net/sch_generic.h' line='1123' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sch_generic.h' line='1119' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sch_generic.h' line='1124' column='1'/> </data-member> </class-decl> <class-decl name='ndisc_ops' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/ndisc.h' line='200' column='1' id='88ef330b'> @@ -49876,21 +49881,21 @@ <var-decl name='vstats' type-id='1200d79d' visibility='default' filepath='include/linux/netdevice.h' line='2031' column='1'/> </data-member> </union-decl> - <class-decl name='pcpu_sw_netstats' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2417' column='1' id='101eeec5'> + <class-decl name='pcpu_sw_netstats' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2418' column='1' id='101eeec5'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='rx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2418' column='1'/> + <var-decl name='rx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2419' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='rx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2419' column='1'/> + <var-decl name='rx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2420' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='tx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2420' column='1'/> + <var-decl name='tx_packets' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2421' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='tx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2421' column='1'/> + <var-decl name='tx_bytes' type-id='91ce1af9' visibility='default' filepath='include/linux/netdevice.h' line='2422' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='syncp' type-id='e4d85780' visibility='default' filepath='include/linux/netdevice.h' line='2422' column='1'/> + <var-decl name='syncp' type-id='e4d85780' visibility='default' filepath='include/linux/netdevice.h' line='2423' column='1'/> </data-member> </class-decl> <typedef-decl name='s16' type-id='b55def60' filepath='include/asm-generic/int-ll64.h' line='18' column='1' id='9b7e9486'/> @@ -50119,7 +50124,7 @@ <parameter type-id='74c91557'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='wake_up_process' mangled-name='wake_up_process' filepath='include/linux/sched.h' line='1921' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wake_up_process'> + <function-decl name='wake_up_process' mangled-name='wake_up_process' filepath='include/linux/sched.h' line='1920' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wake_up_process'> <parameter type-id='f23e2572'/> <return type-id='95e97e5e'/> </function-decl> @@ -50809,12 +50814,6 @@ <return type-id='7359adad'/> </function-decl> </abi-instr> - <abi-instr address-size='64' path='crypto/drbg.c' language='LANG_C89'> - <function-decl name='cancel_work_sync' mangled-name='cancel_work_sync' filepath='include/linux/workqueue.h' line='486' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cancel_work_sync'> - <parameter type-id='83c1bde6'/> - <return type-id='c894953d'/> - </function-decl> - </abi-instr> <abi-instr address-size='64' path='crypto/ecdh.c' language='LANG_C89'> <function-decl name='sg_copy_to_buffer' mangled-name='sg_copy_to_buffer' filepath='include/linux/scatterlist.h' line='298' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sg_copy_to_buffer'> <parameter type-id='bf3ef905'/> @@ -55331,10 +55330,10 @@ <pointer-type-def type-id='9325ec16' size-in-bits='64' id='abc80f30'/> </abi-instr> <abi-instr address-size='64' path='drivers/char/random.c' language='LANG_C89'> - <function-decl name='add_hwgenerator_randomness' mangled-name='add_hwgenerator_randomness' filepath='drivers/char/random.c' line='2265' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='add_hwgenerator_randomness'> - <parameter type-id='80f4b756' name='buffer' filepath='drivers/char/random.c' line='2265' column='1'/> - <parameter type-id='b59d7dce' name='count' filepath='drivers/char/random.c' line='2265' column='1'/> - <parameter type-id='b59d7dce' name='entropy' filepath='drivers/char/random.c' line='2266' column='1'/> + <function-decl name='add_hwgenerator_randomness' mangled-name='add_hwgenerator_randomness' filepath='drivers/char/random.c' line='867' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='add_hwgenerator_randomness'> + <parameter type-id='80f4b756' name='buf' filepath='drivers/char/random.c' line='867' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='drivers/char/random.c' line='867' column='1'/> + <parameter type-id='b59d7dce' name='entropy' filepath='drivers/char/random.c' line='867' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -55887,24 +55886,24 @@ <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='451' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='__clk_determine_rate' mangled-name='__clk_determine_rate' filepath='drivers/clk/clk.c' line='1568' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__clk_determine_rate'> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='1568' column='1'/> - <parameter type-id='23a0ad0a' name='req' filepath='drivers/clk/clk.c' line='1568' column='1'/> + <function-decl name='__clk_determine_rate' mangled-name='__clk_determine_rate' filepath='drivers/clk/clk.c' line='1585' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__clk_determine_rate'> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='1585' column='1'/> + <parameter type-id='23a0ad0a' name='req' filepath='drivers/clk/clk.c' line='1585' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='clk_aggregate_rate' mangled-name='clk_aggregate_rate' filepath='drivers/clk/clk.c' line='568' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_aggregate_rate'> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='568' column='1'/> - <parameter type-id='2a72cecc' name='parent' filepath='drivers/clk/clk.c' line='569' column='1'/> + <function-decl name='clk_aggregate_rate' mangled-name='clk_aggregate_rate' filepath='drivers/clk/clk.c' line='586' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_aggregate_rate'> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='586' column='1'/> + <parameter type-id='2a72cecc' name='parent' filepath='drivers/clk/clk.c' line='587' column='1'/> <return type-id='7359adad'/> </function-decl> - <function-decl name='__clk_mux_determine_rate_closest' mangled-name='__clk_mux_determine_rate_closest' filepath='drivers/clk/clk.c' line='596' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__clk_mux_determine_rate_closest'> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='596' column='1'/> - <parameter type-id='23a0ad0a' name='req' filepath='drivers/clk/clk.c' line='597' column='1'/> + <function-decl name='__clk_mux_determine_rate_closest' mangled-name='__clk_mux_determine_rate_closest' filepath='drivers/clk/clk.c' line='614' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__clk_mux_determine_rate_closest'> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='614' column='1'/> + <parameter type-id='23a0ad0a' name='req' filepath='drivers/clk/clk.c' line='615' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='clk_vote_vdd_level' mangled-name='clk_vote_vdd_level' filepath='drivers/clk/clk.c' line='698' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_vote_vdd_level'> - <parameter type-id='1652a0c5' name='vdd_class' filepath='drivers/clk/clk.c' line='698' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='drivers/clk/clk.c' line='698' column='1'/> + <function-decl name='clk_vote_vdd_level' mangled-name='clk_vote_vdd_level' filepath='drivers/clk/clk.c' line='716' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_vote_vdd_level'> + <parameter type-id='1652a0c5' name='vdd_class' filepath='drivers/clk/clk.c' line='716' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='drivers/clk/clk.c' line='716' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='regulator_set_voltage' mangled-name='regulator_set_voltage' filepath='include/linux/regulator/consumer.h' line='250' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_voltage'> @@ -55913,47 +55912,47 @@ <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='clk_unvote_vdd_level' mangled-name='clk_unvote_vdd_level' filepath='drivers/clk/clk.c' line='722' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_unvote_vdd_level'> - <parameter type-id='1652a0c5' name='vdd_class' filepath='drivers/clk/clk.c' line='722' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='drivers/clk/clk.c' line='722' column='1'/> - <return type-id='95e97e5e'/> - </function-decl> - <function-decl name='clk_vote_rate_vdd' mangled-name='clk_vote_rate_vdd' filepath='drivers/clk/clk.c' line='753' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_vote_rate_vdd'> - <parameter type-id='ba21e62b' name='core' filepath='drivers/clk/clk.c' line='753' column='1'/> - <parameter type-id='7359adad' name='rate' filepath='drivers/clk/clk.c' line='753' column='1'/> + <function-decl name='clk_unvote_vdd_level' mangled-name='clk_unvote_vdd_level' filepath='drivers/clk/clk.c' line='740' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_unvote_vdd_level'> + <parameter type-id='1652a0c5' name='vdd_class' filepath='drivers/clk/clk.c' line='740' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='drivers/clk/clk.c' line='740' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='clk_unvote_rate_vdd' mangled-name='clk_unvote_rate_vdd' filepath='drivers/clk/clk.c' line='771' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_unvote_rate_vdd'> + <function-decl name='clk_vote_rate_vdd' mangled-name='clk_vote_rate_vdd' filepath='drivers/clk/clk.c' line='771' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_vote_rate_vdd'> <parameter type-id='ba21e62b' name='core' filepath='drivers/clk/clk.c' line='771' column='1'/> <parameter type-id='7359adad' name='rate' filepath='drivers/clk/clk.c' line='771' column='1'/> + <return type-id='95e97e5e'/> + </function-decl> + <function-decl name='clk_unvote_rate_vdd' mangled-name='clk_unvote_rate_vdd' filepath='drivers/clk/clk.c' line='789' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_unvote_rate_vdd'> + <parameter type-id='ba21e62b' name='core' filepath='drivers/clk/clk.c' line='789' column='1'/> + <parameter type-id='7359adad' name='rate' filepath='drivers/clk/clk.c' line='789' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='clk_sync_state' mangled-name='clk_sync_state' filepath='drivers/clk/clk.c' line='1464' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_sync_state'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='1464' column='1'/> + <function-decl name='clk_sync_state' mangled-name='clk_sync_state' filepath='drivers/clk/clk.c' line='1481' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_sync_state'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='1481' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='clk_hw_round_rate' mangled-name='clk_hw_round_rate' filepath='drivers/clk/clk.c' line='1579' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_hw_round_rate'> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='1579' column='1'/> - <parameter type-id='7359adad' name='rate' filepath='drivers/clk/clk.c' line='1579' column='1'/> + <function-decl name='clk_hw_round_rate' mangled-name='clk_hw_round_rate' filepath='drivers/clk/clk.c' line='1596' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_hw_round_rate'> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='1596' column='1'/> + <parameter type-id='7359adad' name='rate' filepath='drivers/clk/clk.c' line='1596' column='1'/> <return type-id='7359adad'/> </function-decl> - <function-decl name='clk_get_parent' mangled-name='clk_get_parent' filepath='drivers/clk/clk.c' line='2738' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_get_parent'> - <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='2738' column='1'/> + <function-decl name='clk_get_parent' mangled-name='clk_get_parent' filepath='drivers/clk/clk.c' line='2761' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_get_parent'> + <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='2761' column='1'/> <return type-id='7d0bc0eb'/> </function-decl> - <function-decl name='clk_set_parent' mangled-name='clk_set_parent' filepath='drivers/clk/clk.c' line='2892' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_set_parent'> - <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='2892' column='1'/> - <parameter type-id='7d0bc0eb' name='parent' filepath='drivers/clk/clk.c' line='2892' column='1'/> + <function-decl name='clk_set_parent' mangled-name='clk_set_parent' filepath='drivers/clk/clk.c' line='2915' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_set_parent'> + <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='2915' column='1'/> + <parameter type-id='7d0bc0eb' name='parent' filepath='drivers/clk/clk.c' line='2915' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='clk_set_flags' mangled-name='clk_set_flags' filepath='drivers/clk/clk.c' line='3211' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_set_flags'> - <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='3211' column='1'/> - <parameter type-id='7359adad' name='flags' filepath='drivers/clk/clk.c' line='3211' column='1'/> + <function-decl name='clk_set_flags' mangled-name='clk_set_flags' filepath='drivers/clk/clk.c' line='3234' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='clk_set_flags'> + <parameter type-id='7d0bc0eb' name='clk' filepath='drivers/clk/clk.c' line='3234' column='1'/> + <parameter type-id='7359adad' name='flags' filepath='drivers/clk/clk.c' line='3234' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='devm_clk_register' mangled-name='devm_clk_register' filepath='drivers/clk/clk.c' line='4763' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_clk_register'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='4763' column='1'/> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='4763' column='1'/> + <function-decl name='devm_clk_register' mangled-name='devm_clk_register' filepath='drivers/clk/clk.c' line='4786' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_clk_register'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='4786' column='1'/> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='4786' column='1'/> <return type-id='7d0bc0eb'/> </function-decl> <function-decl name='dev_pm_opp_add' mangled-name='dev_pm_opp_add' filepath='include/linux/pm_opp.h' line='107' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_pm_opp_add'> @@ -55962,24 +55961,24 @@ <parameter type-id='7359adad'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='devm_clk_hw_register' mangled-name='devm_clk_hw_register' filepath='drivers/clk/clk.c' line='4794' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_clk_hw_register'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='4794' column='1'/> - <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='4794' column='1'/> + <function-decl name='devm_clk_hw_register' mangled-name='devm_clk_hw_register' filepath='drivers/clk/clk.c' line='4817' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_clk_hw_register'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='4817' column='1'/> + <parameter type-id='3aaeef89' name='hw' filepath='drivers/clk/clk.c' line='4817' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='of_clk_src_onecell_get' mangled-name='of_clk_src_onecell_get' filepath='drivers/clk/clk.c' line='5056' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_clk_src_onecell_get'> - <parameter type-id='51a94113' name='clkspec' filepath='drivers/clk/clk.c' line='5056' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/clk/clk.c' line='5056' column='1'/> + <function-decl name='of_clk_src_onecell_get' mangled-name='of_clk_src_onecell_get' filepath='drivers/clk/clk.c' line='5079' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_clk_src_onecell_get'> + <parameter type-id='51a94113' name='clkspec' filepath='drivers/clk/clk.c' line='5079' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/clk/clk.c' line='5079' column='1'/> <return type-id='7d0bc0eb'/> </function-decl> - <function-decl name='devm_of_clk_add_hw_provider' mangled-name='devm_of_clk_add_hw_provider' filepath='drivers/clk/clk.c' line='5160' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_of_clk_add_hw_provider'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='5160' column='1'/> - <parameter type-id='a5186342' name='get' filepath='drivers/clk/clk.c' line='5161' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/clk/clk.c' line='5163' column='1'/> + <function-decl name='devm_of_clk_add_hw_provider' mangled-name='devm_of_clk_add_hw_provider' filepath='drivers/clk/clk.c' line='5183' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_of_clk_add_hw_provider'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/clk/clk.c' line='5183' column='1'/> + <parameter type-id='a5186342' name='get' filepath='drivers/clk/clk.c' line='5184' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/clk/clk.c' line='5186' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='of_clk_get_from_provider' mangled-name='of_clk_get_from_provider' filepath='drivers/clk/clk.c' line='5283' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_clk_get_from_provider'> - <parameter type-id='51a94113' name='clkspec' filepath='drivers/clk/clk.c' line='5283' column='1'/> + <function-decl name='of_clk_get_from_provider' mangled-name='of_clk_get_from_provider' filepath='drivers/clk/clk.c' line='5306' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_clk_get_from_provider'> + <parameter type-id='51a94113' name='clkspec' filepath='drivers/clk/clk.c' line='5306' column='1'/> <return type-id='7d0bc0eb'/> </function-decl> <function-decl name='of_prop_next_u32' mangled-name='of_prop_next_u32' filepath='include/linux/of.h' line='543' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_prop_next_u32'> @@ -58939,17 +58938,17 @@ <parameter type-id='d504f73d' name='nb' filepath='drivers/extcon/extcon.c' line='995' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='extcon_find_edev_by_node' mangled-name='extcon_find_edev_by_node' filepath='drivers/extcon/extcon.c' line='1419' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_find_edev_by_node'> - <parameter type-id='9a537bbe' name='node' filepath='drivers/extcon/extcon.c' line='1419' column='1'/> + <function-decl name='extcon_find_edev_by_node' mangled-name='extcon_find_edev_by_node' filepath='drivers/extcon/extcon.c' line='1426' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_find_edev_by_node'> + <parameter type-id='9a537bbe' name='node' filepath='drivers/extcon/extcon.c' line='1426' column='1'/> <return type-id='c0d6fada'/> </function-decl> - <function-decl name='extcon_get_edev_by_phandle' mangled-name='extcon_get_edev_by_phandle' filepath='drivers/extcon/extcon.c' line='1441' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_get_edev_by_phandle'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/extcon/extcon.c' line='1441' column='1'/> - <parameter type-id='95e97e5e' name='index' filepath='drivers/extcon/extcon.c' line='1441' column='1'/> + <function-decl name='extcon_get_edev_by_phandle' mangled-name='extcon_get_edev_by_phandle' filepath='drivers/extcon/extcon.c' line='1448' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_get_edev_by_phandle'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/extcon/extcon.c' line='1448' column='1'/> + <parameter type-id='95e97e5e' name='index' filepath='drivers/extcon/extcon.c' line='1448' column='1'/> <return type-id='c0d6fada'/> </function-decl> - <function-decl name='extcon_get_edev_name' mangled-name='extcon_get_edev_name' filepath='drivers/extcon/extcon.c' line='1488' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_get_edev_name'> - <parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='1488' column='1'/> + <function-decl name='extcon_get_edev_name' mangled-name='extcon_get_edev_name' filepath='drivers/extcon/extcon.c' line='1495' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_get_edev_name'> + <parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='1495' column='1'/> <return type-id='80f4b756'/> </function-decl> </abi-instr> @@ -69892,13 +69891,13 @@ <pointer-type-def type-id='a7fa16d9' size-in-bits='64' id='c91d1bf1'/> <pointer-type-def type-id='20d6a08a' size-in-bits='64' id='7a134fac'/> <pointer-type-def type-id='9a9b3035' size-in-bits='64' id='7d8f7dd9'/> - <function-decl name='drm_dp_mst_topology_mgr_init' mangled-name='drm_dp_mst_topology_mgr_init' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3364' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_dp_mst_topology_mgr_init'> - <parameter type-id='88a6d23d' name='mgr' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3364' column='1'/> - <parameter type-id='8898134d' name='dev' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3365' column='1'/> - <parameter type-id='7c5f8cd8' name='aux' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3365' column='1'/> - <parameter type-id='95e97e5e' name='max_dpcd_transaction_bytes' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3366' column='1'/> - <parameter type-id='95e97e5e' name='max_payloads' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3367' column='1'/> - <parameter type-id='95e97e5e' name='conn_base_id' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3367' column='1'/> + <function-decl name='drm_dp_mst_topology_mgr_init' mangled-name='drm_dp_mst_topology_mgr_init' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3365' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_dp_mst_topology_mgr_init'> + <parameter type-id='88a6d23d' name='mgr' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3365' column='1'/> + <parameter type-id='8898134d' name='dev' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3366' column='1'/> + <parameter type-id='7c5f8cd8' name='aux' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3366' column='1'/> + <parameter type-id='95e97e5e' name='max_dpcd_transaction_bytes' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3367' column='1'/> + <parameter type-id='95e97e5e' name='max_payloads' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3368' column='1'/> + <parameter type-id='95e97e5e' name='conn_base_id' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3368' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='drm_dp_send_power_updown_phy' mangled-name='drm_dp_send_power_updown_phy' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='1838' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_dp_send_power_updown_phy'> @@ -70000,8 +69999,8 @@ <parameter type-id='95e97e5e' name='bpp' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3060' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='drm_dp_mst_topology_mgr_destroy' mangled-name='drm_dp_mst_topology_mgr_destroy' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3420' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_dp_mst_topology_mgr_destroy'> - <parameter type-id='88a6d23d' name='mgr' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3420' column='1'/> + <function-decl name='drm_dp_mst_topology_mgr_destroy' mangled-name='drm_dp_mst_topology_mgr_destroy' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3421' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_dp_mst_topology_mgr_destroy'> + <parameter type-id='88a6d23d' name='mgr' filepath='drivers/gpu/drm/drm_dp_mst_topology.c' line='3421' column='1'/> <return type-id='48b5725f'/> </function-decl> <class-decl name='edid' size-in-bits='1024' is-struct='yes' visibility='default' filepath='include/drm/drm_edid.h' line='297' column='1' id='a7fa16d9'> @@ -70365,19 +70364,19 @@ <parameter type-id='c91d1bf1' name='edid' filepath='drivers/gpu/drm/drm_edid.c' line='1490' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='drm_add_edid_modes' mangled-name='drm_add_edid_modes' filepath='drivers/gpu/drm/drm_edid.c' line='5112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_add_edid_modes'> - <parameter type-id='4db02c58' name='connector' filepath='drivers/gpu/drm/drm_edid.c' line='5112' column='1'/> - <parameter type-id='c91d1bf1' name='edid' filepath='drivers/gpu/drm/drm_edid.c' line='5112' column='1'/> + <function-decl name='drm_add_edid_modes' mangled-name='drm_add_edid_modes' filepath='drivers/gpu/drm/drm_edid.c' line='5105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_add_edid_modes'> + <parameter type-id='4db02c58' name='connector' filepath='drivers/gpu/drm/drm_edid.c' line='5105' column='1'/> + <parameter type-id='c91d1bf1' name='edid' filepath='drivers/gpu/drm/drm_edid.c' line='5105' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='drm_detect_hdmi_monitor' mangled-name='drm_detect_hdmi_monitor' filepath='drivers/gpu/drm/drm_edid.c' line='4588' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_detect_hdmi_monitor'> <parameter type-id='c91d1bf1' name='edid' filepath='drivers/gpu/drm/drm_edid.c' line='4588' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='drm_set_preferred_mode' mangled-name='drm_set_preferred_mode' filepath='drivers/gpu/drm/drm_edid.c' line='5237' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_set_preferred_mode'> - <parameter type-id='4db02c58' name='connector' filepath='drivers/gpu/drm/drm_edid.c' line='5237' column='1'/> - <parameter type-id='95e97e5e' name='hpref' filepath='drivers/gpu/drm/drm_edid.c' line='5238' column='1'/> - <parameter type-id='95e97e5e' name='vpref' filepath='drivers/gpu/drm/drm_edid.c' line='5238' column='1'/> + <function-decl name='drm_set_preferred_mode' mangled-name='drm_set_preferred_mode' filepath='drivers/gpu/drm/drm_edid.c' line='5230' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_set_preferred_mode'> + <parameter type-id='4db02c58' name='connector' filepath='drivers/gpu/drm/drm_edid.c' line='5230' column='1'/> + <parameter type-id='95e97e5e' name='hpref' filepath='drivers/gpu/drm/drm_edid.c' line='5231' column='1'/> + <parameter type-id='95e97e5e' name='vpref' filepath='drivers/gpu/drm/drm_edid.c' line='5231' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -70858,10 +70857,10 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='drivers/gpu/drm/drm_ioctl.c' language='LANG_C89'> - <function-decl name='drm_ioctl' mangled-name='drm_ioctl' filepath='drivers/gpu/drm/drm_ioctl.c' line='781' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_ioctl'> - <parameter type-id='77e79a4b' name='filp' filepath='drivers/gpu/drm/drm_ioctl.c' line='781' column='1'/> - <parameter type-id='f0981eeb' name='cmd' filepath='drivers/gpu/drm/drm_ioctl.c' line='782' column='1'/> - <parameter type-id='7359adad' name='arg' filepath='drivers/gpu/drm/drm_ioctl.c' line='782' column='1'/> + <function-decl name='drm_ioctl' mangled-name='drm_ioctl' filepath='drivers/gpu/drm/drm_ioctl.c' line='787' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_ioctl'> + <parameter type-id='77e79a4b' name='filp' filepath='drivers/gpu/drm/drm_ioctl.c' line='787' column='1'/> + <parameter type-id='f0981eeb' name='cmd' filepath='drivers/gpu/drm/drm_ioctl.c' line='788' column='1'/> + <parameter type-id='7359adad' name='arg' filepath='drivers/gpu/drm/drm_ioctl.c' line='788' column='1'/> <return type-id='bd54fe1a'/> </function-decl> </abi-instr> @@ -70990,33 +70989,33 @@ <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='mipi_dsi_host_unregister' mangled-name='mipi_dsi_host_unregister' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='313' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_host_unregister'> - <parameter type-id='c149fe34' name='host' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='313' column='1'/> + <function-decl name='mipi_dsi_host_unregister' mangled-name='mipi_dsi_host_unregister' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='314' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_host_unregister'> + <parameter type-id='c149fe34' name='host' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='314' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='mipi_dsi_create_packet' mangled-name='mipi_dsi_create_packet' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='445' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_create_packet'> - <parameter type-id='368a0122' name='packet' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='445' column='1'/> - <parameter type-id='001b67aa' name='msg' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='446' column='1'/> + <function-decl name='mipi_dsi_create_packet' mangled-name='mipi_dsi_create_packet' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='446' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_create_packet'> + <parameter type-id='368a0122' name='packet' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='446' column='1'/> + <parameter type-id='001b67aa' name='msg' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='447' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='mipi_dsi_dcs_write_buffer' mangled-name='mipi_dsi_dcs_write_buffer' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='656' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_write_buffer'> - <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='656' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='657' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='657' column='1'/> + <function-decl name='mipi_dsi_dcs_write_buffer' mangled-name='mipi_dsi_dcs_write_buffer' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='657' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_write_buffer'> + <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='657' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='658' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='658' column='1'/> <return type-id='79a0948f'/> </function-decl> - <function-decl name='mipi_dsi_dcs_write' mangled-name='mipi_dsi_dcs_write' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='699' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_write'> - <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='699' column='1'/> - <parameter type-id='f9b06939' name='cmd' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='699' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='700' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='700' column='1'/> + <function-decl name='mipi_dsi_dcs_write' mangled-name='mipi_dsi_dcs_write' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='700' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_write'> + <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='700' column='1'/> + <parameter type-id='f9b06939' name='cmd' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='700' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='701' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='701' column='1'/> <return type-id='79a0948f'/> </function-decl> - <function-decl name='mipi_dsi_dcs_read' mangled-name='mipi_dsi_dcs_read' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='739' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_read'> - <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='739' column='1'/> - <parameter type-id='f9b06939' name='cmd' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='739' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='739' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='740' column='1'/> + <function-decl name='mipi_dsi_dcs_read' mangled-name='mipi_dsi_dcs_read' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='740' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mipi_dsi_dcs_read'> + <parameter type-id='182be7cc' name='dsi' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='740' column='1'/> + <parameter type-id='f9b06939' name='cmd' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='740' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='740' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='drivers/gpu/drm/drm_mipi_dsi.c' line='741' column='1'/> <return type-id='79a0948f'/> </function-decl> <function-type size-in-bits='64' id='11ecaf45'> @@ -73570,15 +73569,15 @@ <parameter type-id='1dc6a898' name='address' filepath='drivers/i2c/i2c-core-base.c' line='885' column='1'/> <return type-id='3e31633b'/> </function-decl> - <function-decl name='i2c_get_dma_safe_msg_buf' mangled-name='i2c_get_dma_safe_msg_buf' filepath='drivers/i2c/i2c-core-base.c' line='2292' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='i2c_get_dma_safe_msg_buf'> - <parameter type-id='cd44bc95' name='msg' filepath='drivers/i2c/i2c-core-base.c' line='2292' column='1'/> - <parameter type-id='f0981eeb' name='threshold' filepath='drivers/i2c/i2c-core-base.c' line='2292' column='1'/> + <function-decl name='i2c_get_dma_safe_msg_buf' mangled-name='i2c_get_dma_safe_msg_buf' filepath='drivers/i2c/i2c-core-base.c' line='2293' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='i2c_get_dma_safe_msg_buf'> + <parameter type-id='cd44bc95' name='msg' filepath='drivers/i2c/i2c-core-base.c' line='2293' column='1'/> + <parameter type-id='f0981eeb' name='threshold' filepath='drivers/i2c/i2c-core-base.c' line='2293' column='1'/> <return type-id='8bff8096'/> </function-decl> - <function-decl name='i2c_put_dma_safe_msg_buf' mangled-name='i2c_put_dma_safe_msg_buf' filepath='drivers/i2c/i2c-core-base.c' line='2316' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='i2c_put_dma_safe_msg_buf'> - <parameter type-id='8bff8096' name='buf' filepath='drivers/i2c/i2c-core-base.c' line='2316' column='1'/> - <parameter type-id='cd44bc95' name='msg' filepath='drivers/i2c/i2c-core-base.c' line='2316' column='1'/> - <parameter type-id='b50a4934' name='xferred' filepath='drivers/i2c/i2c-core-base.c' line='2316' column='1'/> + <function-decl name='i2c_put_dma_safe_msg_buf' mangled-name='i2c_put_dma_safe_msg_buf' filepath='drivers/i2c/i2c-core-base.c' line='2317' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='i2c_put_dma_safe_msg_buf'> + <parameter type-id='8bff8096' name='buf' filepath='drivers/i2c/i2c-core-base.c' line='2317' column='1'/> + <parameter type-id='cd44bc95' name='msg' filepath='drivers/i2c/i2c-core-base.c' line='2317' column='1'/> + <parameter type-id='b50a4934' name='xferred' filepath='drivers/i2c/i2c-core-base.c' line='2317' column='1'/> <return type-id='48b5725f'/> </function-decl> <pointer-type-def type-id='2174d0b5' size-in-bits='64' id='49e46a4d'/> @@ -74473,27 +74472,27 @@ </data-member> </class-decl> <pointer-type-def type-id='63a6e12c' size-in-bits='64' id='2712709a'/> - <function-decl name='iio_channel_get' mangled-name='iio_channel_get' filepath='drivers/iio/inkern.c' line='333' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_get'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='333' column='1'/> - <parameter type-id='80f4b756' name='channel_name' filepath='drivers/iio/inkern.c' line='334' column='1'/> + <function-decl name='iio_channel_get' mangled-name='iio_channel_get' filepath='drivers/iio/inkern.c' line='335' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_get'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='335' column='1'/> + <parameter type-id='80f4b756' name='channel_name' filepath='drivers/iio/inkern.c' line='336' column='1'/> <return type-id='2712709a'/> </function-decl> - <function-decl name='iio_channel_release' mangled-name='iio_channel_release' filepath='drivers/iio/inkern.c' line='350' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_release'> - <parameter type-id='2712709a' name='channel' filepath='drivers/iio/inkern.c' line='350' column='1'/> + <function-decl name='iio_channel_release' mangled-name='iio_channel_release' filepath='drivers/iio/inkern.c' line='352' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_release'> + <parameter type-id='2712709a' name='channel' filepath='drivers/iio/inkern.c' line='352' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='devm_iio_channel_get' mangled-name='devm_iio_channel_get' filepath='drivers/iio/inkern.c' line='378' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_iio_channel_get'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='378' column='1'/> - <parameter type-id='80f4b756' name='channel_name' filepath='drivers/iio/inkern.c' line='379' column='1'/> + <function-decl name='devm_iio_channel_get' mangled-name='devm_iio_channel_get' filepath='drivers/iio/inkern.c' line='380' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devm_iio_channel_get'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='380' column='1'/> + <parameter type-id='80f4b756' name='channel_name' filepath='drivers/iio/inkern.c' line='381' column='1'/> <return type-id='2712709a'/> </function-decl> - <function-decl name='iio_channel_get_all' mangled-name='iio_channel_get_all' filepath='drivers/iio/inkern.c' line='407' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_get_all'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='407' column='1'/> + <function-decl name='iio_channel_get_all' mangled-name='iio_channel_get_all' filepath='drivers/iio/inkern.c' line='409' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_channel_get_all'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/iio/inkern.c' line='409' column='1'/> <return type-id='2712709a'/> </function-decl> - <function-decl name='iio_read_channel_processed' mangled-name='iio_read_channel_processed' filepath='drivers/iio/inkern.c' line='692' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_read_channel_processed'> - <parameter type-id='2712709a' name='chan' filepath='drivers/iio/inkern.c' line='692' column='1'/> - <parameter type-id='7292109c' name='val' filepath='drivers/iio/inkern.c' line='692' column='1'/> + <function-decl name='iio_read_channel_processed' mangled-name='iio_read_channel_processed' filepath='drivers/iio/inkern.c' line='716' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iio_read_channel_processed'> + <parameter type-id='2712709a' name='chan' filepath='drivers/iio/inkern.c' line='716' column='1'/> + <parameter type-id='7292109c' name='val' filepath='drivers/iio/inkern.c' line='716' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -75393,9 +75392,9 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='drivers/input/input.c' language='LANG_C89'> - <function-decl name='input_set_timestamp' mangled-name='input_set_timestamp' filepath='drivers/input/input.c' line='1929' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='input_set_timestamp'> - <parameter type-id='74b427eb' name='dev' filepath='drivers/input/input.c' line='1929' column='1'/> - <parameter type-id='fbc017ef' name='timestamp' filepath='drivers/input/input.c' line='1929' column='1'/> + <function-decl name='input_set_timestamp' mangled-name='input_set_timestamp' filepath='drivers/input/input.c' line='1940' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='input_set_timestamp'> + <parameter type-id='74b427eb' name='dev' filepath='drivers/input/input.c' line='1940' column='1'/> + <parameter type-id='fbc017ef' name='timestamp' filepath='drivers/input/input.c' line='1940' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='input_mt_destroy_slots' mangled-name='input_mt_destroy_slots' filepath='include/linux/input/mt.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='input_mt_destroy_slots'> @@ -79445,21 +79444,21 @@ <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1055' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_create_buffers' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2507' column='1' id='20d04fee'> + <class-decl name='v4l2_create_buffers' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2508' column='1' id='20d04fee'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2508' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2509' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2509' column='1'/> + <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2510' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='memory' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2510' column='1'/> + <var-decl name='memory' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2511' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='format' type-id='0a5711c9' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2511' column='1'/> + <var-decl name='format' type-id='0a5711c9' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2512' column='1'/> + <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2513' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_exportbuffer' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1135' column='1' id='b201a5c2'> @@ -79636,12 +79635,12 @@ <var-decl name='tv_usec' type-id='55c6233e' visibility='default' filepath='include/uapi/linux/time.h' line='18' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_format' size-in-bits='1664' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2285' column='1' id='0a5711c9'> + <class-decl name='v4l2_format' size-in-bits='1664' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2286' column='1' id='0a5711c9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2286' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2287' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='fmt' type-id='08bd2345' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2296' column='1'/> + <var-decl name='fmt' type-id='08bd2345' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2297' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_timecode' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='909' column='1' id='5f820012'> @@ -79698,30 +79697,30 @@ <qualified-type-def type-id='68597e64' const='yes' id='23cb2797'/> <qualified-type-def type-id='1e4ac06a' const='yes' id='1f063fe1'/> <typedef-decl name='__kernel_suseconds_t' type-id='6a11bd61' filepath='include/uapi/asm-generic/posix_types.h' line='41' column='1' id='55c6233e'/> - <union-decl name='__anonymous_union__7' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2287' column='1' id='08bd2345'> + <union-decl name='__anonymous_union__7' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2288' column='1' id='08bd2345'> <data-member access='public'> - <var-decl name='pix' type-id='e8f6102b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2288' column='1'/> + <var-decl name='pix' type-id='e8f6102b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2289' column='1'/> </data-member> <data-member access='public'> - <var-decl name='pix_mp' type-id='dece967b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2289' column='1'/> + <var-decl name='pix_mp' type-id='dece967b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2290' column='1'/> </data-member> <data-member access='public'> - <var-decl name='win' type-id='3a0ab346' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2290' column='1'/> + <var-decl name='win' type-id='3a0ab346' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2291' column='1'/> </data-member> <data-member access='public'> - <var-decl name='vbi' type-id='ae01ca89' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2291' column='1'/> + <var-decl name='vbi' type-id='ae01ca89' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2292' column='1'/> </data-member> <data-member access='public'> - <var-decl name='sliced' type-id='a2be7826' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2292' column='1'/> + <var-decl name='sliced' type-id='a2be7826' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2293' column='1'/> </data-member> <data-member access='public'> - <var-decl name='sdr' type-id='a37aff65' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2293' column='1'/> + <var-decl name='sdr' type-id='a37aff65' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2294' column='1'/> </data-member> <data-member access='public'> - <var-decl name='meta' type-id='1db7c88b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2294' column='1'/> + <var-decl name='meta' type-id='1db7c88b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2295' column='1'/> </data-member> <data-member access='public'> - <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2295' column='1'/> + <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2296' column='1'/> </data-member> </union-decl> <pointer-type-def type-id='8cd967bc' size-in-bits='64' id='00e8fe5a'/> @@ -79729,12 +79728,12 @@ <array-type-def dimensions='1' type-id='8f048e17' size-in-bits='1600' id='0530f1a6'> <subrange length='200' type-id='7ff19f0f' id='53119c2f'/> </array-type-def> - <class-decl name='v4l2_meta_format' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2270' column='1' id='1db7c88b'> + <class-decl name='v4l2_meta_format' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2271' column='1' id='1db7c88b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dataformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2271' column='1'/> + <var-decl name='dataformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2272' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2272' column='1'/> + <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2273' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_pix_format' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='479' column='1' id='e8f6102b'> @@ -79775,42 +79774,42 @@ <var-decl name='xfer_func' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='496' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_pix_format_mplane' size-in-bits='1536' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2235' column='1' id='dece967b'> + <class-decl name='v4l2_pix_format_mplane' size-in-bits='1536' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2236' column='1' id='dece967b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2236' column='1'/> + <var-decl name='width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2237' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2237' column='1'/> + <var-decl name='height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2238' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2238' column='1'/> + <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2239' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2239' column='1'/> + <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2240' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='colorspace' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2240' column='1'/> + <var-decl name='colorspace' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2241' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='plane_fmt' type-id='15b94482' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2242' column='1'/> + <var-decl name='plane_fmt' type-id='15b94482' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2243' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1440'> - <var-decl name='num_planes' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2243' column='1'/> + <var-decl name='num_planes' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2244' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1448'> - <var-decl name='flags' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2244' column='1'/> + <var-decl name='flags' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1456'> - <var-decl name='' type-id='29c254d4' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1'/> + <var-decl name='' type-id='29c254d4' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1464'> - <var-decl name='quantization' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2249' column='1'/> + <var-decl name='quantization' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2250' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='xfer_func' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2250' column='1'/> + <var-decl name='xfer_func' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2251' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1480'> - <var-decl name='reserved' type-id='c20b850f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2251' column='1'/> + <var-decl name='reserved' type-id='c20b850f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2252' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_plane' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='993' column='1' id='8cd967bc'> @@ -79830,55 +79829,55 @@ <var-decl name='reserved' type-id='9d263779' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1002' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sdr_format' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2259' column='1' id='a37aff65'> + <class-decl name='v4l2_sdr_format' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2260' column='1' id='a37aff65'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2260' column='1'/> + <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2261' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2261' column='1'/> + <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2262' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='26f0765c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2262' column='1'/> + <var-decl name='reserved' type-id='26f0765c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2263' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sliced_vbi_format' size-in-bits='896' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2114' column='1' id='a2be7826'> + <class-decl name='v4l2_sliced_vbi_format' size-in-bits='896' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2115' column='1' id='a2be7826'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2115' column='1'/> + <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16'> - <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2120' column='1'/> + <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2121' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='io_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2121' column='1'/> + <var-decl name='io_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2122' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2122' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2123' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_vbi_format' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2086' column='1' id='ae01ca89'> + <class-decl name='v4l2_vbi_format' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2087' column='1' id='ae01ca89'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sampling_rate' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2087' column='1'/> + <var-decl name='sampling_rate' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2088' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='offset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2088' column='1'/> + <var-decl name='offset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2089' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='samples_per_line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2089' column='1'/> + <var-decl name='samples_per_line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2090' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='sample_format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2090' column='1'/> + <var-decl name='sample_format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2091' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='start' type-id='e5d37c7b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2091' column='1'/> + <var-decl name='start' type-id='e5d37c7b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2092' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='count' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2092' column='1'/> + <var-decl name='count' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2093' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2093' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2094' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2094' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2095' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_window' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1187' column='1' id='3a0ab346'> @@ -80093,12 +80092,12 @@ <var-decl name='hsv_enc' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='493' column='1'/> </data-member> </union-decl> - <union-decl name='__anonymous_union__9' size-in-bits='8' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1' id='29c254d4'> + <union-decl name='__anonymous_union__9' size-in-bits='8' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1' id='29c254d4'> <data-member access='public'> - <var-decl name='ycbcr_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1'/> + <var-decl name='ycbcr_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2247' column='1'/> </data-member> <data-member access='public'> - <var-decl name='hsv_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2247' column='1'/> + <var-decl name='hsv_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2248' column='1'/> </data-member> </union-decl> <pointer-type-def type-id='aecf225c' size-in-bits='64' id='db634b6a'/> @@ -80122,15 +80121,15 @@ <var-decl name='next' type-id='db634b6a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1184' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_plane_pix_format' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2215' column='1' id='69ab6968'> + <class-decl name='v4l2_plane_pix_format' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2216' column='1' id='69ab6968'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sizeimage' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2216' column='1'/> + <var-decl name='sizeimage' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2217' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='bytesperline' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2217' column='1'/> + <var-decl name='bytesperline' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2218' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='81144473' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2218' column='1'/> + <var-decl name='reserved' type-id='81144473' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2219' column='1'/> </data-member> </class-decl> <class-decl name='vb2_plane' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/media/videobuf2-core.h' line='172' column='1' id='b3ad2c1c'> @@ -80488,107 +80487,107 @@ <array-type-def dimensions='1' type-id='9ac9cd61' size-in-bits='infinite' id='a892e311'> <subrange length='infinite' type-id='7ff19f0f' id='031f2035'/> </array-type-def> - <class-decl name='v4l2_event' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2427' column='1' id='967c1c06'> + <class-decl name='v4l2_event' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2428' column='1' id='967c1c06'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2428' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2429' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='u' type-id='454ee2bf' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2436' column='1'/> + <var-decl name='u' type-id='454ee2bf' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2437' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='pending' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2437' column='1'/> + <var-decl name='pending' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2438' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2438' column='1'/> + <var-decl name='sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2439' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='timestamp' type-id='a9c79a1f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2439' column='1'/> + <var-decl name='timestamp' type-id='a9c79a1f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2440' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2440' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2441' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2441' column='1'/> + <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2442' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2429' column='1' id='454ee2bf'> + <union-decl name='__anonymous_union__' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2430' column='1' id='454ee2bf'> <data-member access='public'> - <var-decl name='vsync' type-id='cbe6daf0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2430' column='1'/> + <var-decl name='vsync' type-id='cbe6daf0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2431' column='1'/> </data-member> <data-member access='public'> - <var-decl name='ctrl' type-id='ecd6d55a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2431' column='1'/> + <var-decl name='ctrl' type-id='ecd6d55a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2432' column='1'/> </data-member> <data-member access='public'> - <var-decl name='frame_sync' type-id='101c7fc2' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2432' column='1'/> + <var-decl name='frame_sync' type-id='101c7fc2' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2433' column='1'/> </data-member> <data-member access='public'> - <var-decl name='src_change' type-id='af41d400' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2433' column='1'/> + <var-decl name='src_change' type-id='af41d400' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2434' column='1'/> </data-member> <data-member access='public'> - <var-decl name='motion_det' type-id='f95c1b03' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2434' column='1'/> + <var-decl name='motion_det' type-id='f95c1b03' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2435' column='1'/> </data-member> <data-member access='public'> - <var-decl name='data' type-id='73b95420' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2435' column='1'/> + <var-decl name='data' type-id='73b95420' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2436' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_event_vsync' size-in-bits='8' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2378' column='1' id='cbe6daf0'> + <class-decl name='v4l2_event_vsync' size-in-bits='8' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2379' column='1' id='cbe6daf0'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='field' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2380' column='1'/> + <var-decl name='field' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2381' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_event_ctrl' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2388' column='1' id='ecd6d55a'> + <class-decl name='v4l2_event_ctrl' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2389' column='1' id='ecd6d55a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='changes' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2389' column='1'/> + <var-decl name='changes' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2390' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2390' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2391' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='' type-id='de5442d3' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2391' column='1'/> + <var-decl name='' type-id='de5442d3' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2392' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2395' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2396' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='minimum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2396' column='1'/> + <var-decl name='minimum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2397' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='maximum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2397' column='1'/> + <var-decl name='maximum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2398' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='step' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2398' column='1'/> + <var-decl name='step' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2399' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='default_value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2399' column='1'/> + <var-decl name='default_value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2400' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2391' column='1' id='de5442d3'> + <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2392' column='1' id='de5442d3'> <data-member access='public'> - <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2392' column='1'/> + <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2393' column='1'/> </data-member> <data-member access='public'> - <var-decl name='value64' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2393' column='1'/> + <var-decl name='value64' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2394' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_event_frame_sync' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2402' column='1' id='101c7fc2'> + <class-decl name='v4l2_event_frame_sync' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2403' column='1' id='101c7fc2'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='frame_sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2403' column='1'/> + <var-decl name='frame_sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2404' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_event_src_change' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2408' column='1' id='af41d400'> + <class-decl name='v4l2_event_src_change' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2409' column='1' id='af41d400'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='changes' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2409' column='1'/> + <var-decl name='changes' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2410' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_event_motion_det' size-in-bits='96' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2421' column='1' id='f95c1b03'> + <class-decl name='v4l2_event_motion_det' size-in-bits='96' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2422' column='1' id='f95c1b03'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2422' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2423' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='frame_sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2423' column='1'/> + <var-decl name='frame_sequence' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2424' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='region_mask' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2424' column='1'/> + <var-decl name='region_mask' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2425' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_subscribed_event_ops' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/media/v4l2-event.h' line='52' column='1' id='a81e67e2'> @@ -80730,18 +80729,18 @@ </data-member> </class-decl> <qualified-type-def type-id='1251351e' const='yes' id='ef7d00fd'/> - <class-decl name='v4l2_event_subscription' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2447' column='1' id='1251351e'> + <class-decl name='v4l2_event_subscription' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2448' column='1' id='1251351e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2448' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2449' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2449' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2450' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2450' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2451' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2451' column='1'/> + <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2452' column='1'/> </data-member> </class-decl> <enum-decl name='v4l2_priority' filepath='include/uapi/linux/videodev2.h' line='395' column='1' id='8b60a0b9'> @@ -81598,7 +81597,7 @@ </class-decl> <pointer-type-def type-id='0645931b' size-in-bits='64' id='1086b623'/> <pointer-type-def type-id='d26ed346' size-in-bits='64' id='b076d304'/> - <enum-decl name='v4l2_ctrl_type' filepath='include/uapi/linux/videodev2.h' line='1752' column='1' id='cf13dc99'> + <enum-decl name='v4l2_ctrl_type' filepath='include/uapi/linux/videodev2.h' line='1753' column='1' id='cf13dc99'> <underlying-type type-id='9cac1fee'/> <enumerator name='V4L2_CTRL_TYPE_INTEGER' value='1'/> <enumerator name='V4L2_CTRL_TYPE_BOOLEAN' value='2'/> @@ -81958,6 +81957,29 @@ <var-decl name='release' type-id='4da4101d' visibility='default' filepath='include/media/media-devnode.h' line='63' column='1'/> </data-member> </class-decl> + <union-decl name='v4l2_ctrl_ptr' size-in-bits='64' visibility='default' filepath='include/media/v4l2-ctrls.h' line='45' column='1' id='3f78e6a9'> + <data-member access='public'> + <var-decl name='p_s32' type-id='9f2cce4b' visibility='default' filepath='include/media/v4l2-ctrls.h' line='46' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p_s64' type-id='842ac8d6' visibility='default' filepath='include/media/v4l2-ctrls.h' line='47' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p_u8' type-id='8bff8096' visibility='default' filepath='include/media/v4l2-ctrls.h' line='48' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p_u16' type-id='26d4d46f' visibility='default' filepath='include/media/v4l2-ctrls.h' line='49' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p_u32' type-id='f9409001' visibility='default' filepath='include/media/v4l2-ctrls.h' line='50' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p_char' type-id='26a90f95' visibility='default' filepath='include/media/v4l2-ctrls.h' line='51' column='1'/> + </data-member> + <data-member access='public'> + <var-decl name='p' type-id='eaa32e2f' visibility='default' filepath='include/media/v4l2-ctrls.h' line='52' column='1'/> + </data-member> + </union-decl> <class-decl name='media_graph' size-in-bits='2240' is-struct='yes' visibility='default' filepath='include/media/media-entity.h' line='96' column='1' id='32ec86e0'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='stack' type-id='4cb10997' visibility='default' filepath='include/media/media-entity.h' line='100' column='1'/> @@ -82653,30 +82675,7 @@ <var-decl name='validate' type-id='f089c08b' visibility='default' filepath='include/media/v4l2-ctrls.h' line='92' column='1'/> </data-member> </class-decl> - <union-decl name='v4l2_ctrl_ptr' size-in-bits='64' visibility='default' filepath='include/media/v4l2-ctrls.h' line='45' column='1' id='3f78e6a9'> - <data-member access='public'> - <var-decl name='p_s32' type-id='9f2cce4b' visibility='default' filepath='include/media/v4l2-ctrls.h' line='46' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p_s64' type-id='842ac8d6' visibility='default' filepath='include/media/v4l2-ctrls.h' line='47' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p_u8' type-id='8bff8096' visibility='default' filepath='include/media/v4l2-ctrls.h' line='48' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p_u16' type-id='26d4d46f' visibility='default' filepath='include/media/v4l2-ctrls.h' line='49' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p_u32' type-id='f9409001' visibility='default' filepath='include/media/v4l2-ctrls.h' line='50' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p_char' type-id='26a90f95' visibility='default' filepath='include/media/v4l2-ctrls.h' line='51' column='1'/> - </data-member> - <data-member access='public'> - <var-decl name='p' type-id='eaa32e2f' visibility='default' filepath='include/media/v4l2-ctrls.h' line='52' column='1'/> - </data-member> - </union-decl> - <enum-decl name='v4l2_ctrl_type' filepath='include/uapi/linux/videodev2.h' line='1752' column='1' id='cf13dc99'> + <enum-decl name='v4l2_ctrl_type' filepath='include/uapi/linux/videodev2.h' line='1753' column='1' id='cf13dc99'> <underlying-type type-id='9cac1fee'/> <enumerator name='V4L2_CTRL_TYPE_INTEGER' value='1'/> <enumerator name='V4L2_CTRL_TYPE_BOOLEAN' value='2'/> @@ -83653,38 +83652,38 @@ <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='833' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_format' size-in-bits='1664' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2285' column='1' id='0a5711c9'> + <class-decl name='v4l2_format' size-in-bits='1664' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2286' column='1' id='0a5711c9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2286' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2287' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='fmt' type-id='08bd2345' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2296' column='1'/> + <var-decl name='fmt' type-id='08bd2345' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2297' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__7' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2287' column='1' id='08bd2345'> + <union-decl name='__anonymous_union__7' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2288' column='1' id='08bd2345'> <data-member access='public'> - <var-decl name='pix' type-id='e8f6102b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2288' column='1'/> + <var-decl name='pix' type-id='e8f6102b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2289' column='1'/> </data-member> <data-member access='public'> - <var-decl name='pix_mp' type-id='dece967b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2289' column='1'/> + <var-decl name='pix_mp' type-id='dece967b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2290' column='1'/> </data-member> <data-member access='public'> - <var-decl name='win' type-id='3a0ab346' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2290' column='1'/> + <var-decl name='win' type-id='3a0ab346' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2291' column='1'/> </data-member> <data-member access='public'> - <var-decl name='vbi' type-id='ae01ca89' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2291' column='1'/> + <var-decl name='vbi' type-id='ae01ca89' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2292' column='1'/> </data-member> <data-member access='public'> - <var-decl name='sliced' type-id='a2be7826' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2292' column='1'/> + <var-decl name='sliced' type-id='a2be7826' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2293' column='1'/> </data-member> <data-member access='public'> - <var-decl name='sdr' type-id='a37aff65' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2293' column='1'/> + <var-decl name='sdr' type-id='a37aff65' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2294' column='1'/> </data-member> <data-member access='public'> - <var-decl name='meta' type-id='1db7c88b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2294' column='1'/> + <var-decl name='meta' type-id='1db7c88b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2295' column='1'/> </data-member> <data-member access='public'> - <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2295' column='1'/> + <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2296' column='1'/> </data-member> </union-decl> <class-decl name='v4l2_pix_format' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='479' column='1' id='e8f6102b'> @@ -83733,61 +83732,61 @@ <var-decl name='hsv_enc' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='493' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_pix_format_mplane' size-in-bits='1536' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2235' column='1' id='dece967b'> + <class-decl name='v4l2_pix_format_mplane' size-in-bits='1536' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2236' column='1' id='dece967b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2236' column='1'/> + <var-decl name='width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2237' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2237' column='1'/> + <var-decl name='height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2238' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2238' column='1'/> + <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2239' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2239' column='1'/> + <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2240' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='colorspace' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2240' column='1'/> + <var-decl name='colorspace' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2241' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='plane_fmt' type-id='15b94482' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2242' column='1'/> + <var-decl name='plane_fmt' type-id='15b94482' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2243' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1440'> - <var-decl name='num_planes' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2243' column='1'/> + <var-decl name='num_planes' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2244' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1448'> - <var-decl name='flags' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2244' column='1'/> + <var-decl name='flags' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1456'> - <var-decl name='' type-id='29c254d4' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1'/> + <var-decl name='' type-id='29c254d4' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1464'> - <var-decl name='quantization' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2249' column='1'/> + <var-decl name='quantization' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2250' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='xfer_func' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2250' column='1'/> + <var-decl name='xfer_func' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2251' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1480'> - <var-decl name='reserved' type-id='c20b850f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2251' column='1'/> + <var-decl name='reserved' type-id='c20b850f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2252' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_plane_pix_format' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2215' column='1' id='69ab6968'> + <class-decl name='v4l2_plane_pix_format' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2216' column='1' id='69ab6968'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sizeimage' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2216' column='1'/> + <var-decl name='sizeimage' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2217' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='bytesperline' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2217' column='1'/> + <var-decl name='bytesperline' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2218' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='81144473' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2218' column='1'/> + <var-decl name='reserved' type-id='81144473' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2219' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__9' size-in-bits='8' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2245' column='1' id='29c254d4'> + <union-decl name='__anonymous_union__9' size-in-bits='8' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1' id='29c254d4'> <data-member access='public'> - <var-decl name='ycbcr_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2246' column='1'/> + <var-decl name='ycbcr_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2247' column='1'/> </data-member> <data-member access='public'> - <var-decl name='hsv_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2247' column='1'/> + <var-decl name='hsv_enc' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2248' column='1'/> </data-member> </union-decl> <class-decl name='v4l2_window' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1187' column='1' id='3a0ab346'> @@ -83835,63 +83834,63 @@ <var-decl name='next' type-id='db634b6a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1184' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_vbi_format' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2086' column='1' id='ae01ca89'> + <class-decl name='v4l2_vbi_format' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2087' column='1' id='ae01ca89'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sampling_rate' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2087' column='1'/> + <var-decl name='sampling_rate' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2088' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='offset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2088' column='1'/> + <var-decl name='offset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2089' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='samples_per_line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2089' column='1'/> + <var-decl name='samples_per_line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2090' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='sample_format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2090' column='1'/> + <var-decl name='sample_format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2091' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='start' type-id='e5d37c7b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2091' column='1'/> + <var-decl name='start' type-id='e5d37c7b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2092' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='count' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2092' column='1'/> + <var-decl name='count' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2093' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2093' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2094' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2094' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2095' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sliced_vbi_format' size-in-bits='896' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2114' column='1' id='a2be7826'> + <class-decl name='v4l2_sliced_vbi_format' size-in-bits='896' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2115' column='1' id='a2be7826'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2115' column='1'/> + <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16'> - <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2120' column='1'/> + <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2121' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='io_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2121' column='1'/> + <var-decl name='io_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2122' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2122' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2123' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sdr_format' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2259' column='1' id='a37aff65'> + <class-decl name='v4l2_sdr_format' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2260' column='1' id='a37aff65'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2260' column='1'/> + <var-decl name='pixelformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2261' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2261' column='1'/> + <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2262' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='26f0765c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2262' column='1'/> + <var-decl name='reserved' type-id='26f0765c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2263' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_meta_format' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2270' column='1' id='1db7c88b'> + <class-decl name='v4l2_meta_format' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2271' column='1' id='1db7c88b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dataformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2271' column='1'/> + <var-decl name='dataformat' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2272' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2272' column='1'/> + <var-decl name='buffersize' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2273' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_requestbuffers' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='966' column='1' id='879dea4a'> @@ -84043,21 +84042,21 @@ <var-decl name='reserved' type-id='9d263779' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1141' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_create_buffers' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2507' column='1' id='20d04fee'> + <class-decl name='v4l2_create_buffers' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2508' column='1' id='20d04fee'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2508' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2509' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2509' column='1'/> + <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2510' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='memory' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2510' column='1'/> + <var-decl name='memory' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2511' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='format' type-id='0a5711c9' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2511' column='1'/> + <var-decl name='format' type-id='0a5711c9' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2512' column='1'/> + <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2513' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_framebuffer' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1147' column='1' id='e2103cb1'> @@ -84117,278 +84116,278 @@ <enumerator name='V4L2_BUF_TYPE_META_CAPTURE' value='13'/> <enumerator name='V4L2_BUF_TYPE_PRIVATE' value='128'/> </enum-decl> - <class-decl name='v4l2_input' size-in-bits='640' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1633' column='1' id='f1bdbe5e'> + <class-decl name='v4l2_input' size-in-bits='640' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1634' column='1' id='f1bdbe5e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1634' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1635' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1635' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1636' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1636' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1637' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='audioset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1637' column='1'/> + <var-decl name='audioset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1638' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1638' column='1'/> + <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1639' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='std' type-id='692d176e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1639' column='1'/> + <var-decl name='std' type-id='692d176e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1640' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='status' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1640' column='1'/> + <var-decl name='status' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1641' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1641' column='1'/> + <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1642' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1642' column='1'/> + <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1643' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_output' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1685' column='1' id='97abd73b'> + <class-decl name='v4l2_output' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1686' column='1' id='97abd73b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1686' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1687' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1687' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1688' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1688' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1689' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='audioset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1689' column='1'/> + <var-decl name='audioset' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1690' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='modulator' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1690' column='1'/> + <var-decl name='modulator' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1691' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='std' type-id='692d176e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1691' column='1'/> + <var-decl name='std' type-id='692d176e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1692' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1692' column='1'/> + <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1693' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1693' column='1'/> + <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1694' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_queryctrl' size-in-bits='544' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1771' column='1' id='e162c03f'> + <class-decl name='v4l2_queryctrl' size-in-bits='544' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1772' column='1' id='e162c03f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1772' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1773' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1773' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1774' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1774' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1775' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='minimum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1775' column='1'/> + <var-decl name='minimum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1776' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='maximum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1776' column='1'/> + <var-decl name='maximum' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='step' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1'/> + <var-decl name='step' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1778' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='default_value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1778' column='1'/> + <var-decl name='default_value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1779' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1779' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1780' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1780' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1781' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_query_ext_ctrl' size-in-bits='1856' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1784' column='1' id='92bf903a'> + <class-decl name='v4l2_query_ext_ctrl' size-in-bits='1856' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1785' column='1' id='92bf903a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1785' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1786' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1786' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1787' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1787' column='1'/> + <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1788' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='minimum' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1788' column='1'/> + <var-decl name='minimum' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1789' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='maximum' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1789' column='1'/> + <var-decl name='maximum' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1790' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='step' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1790' column='1'/> + <var-decl name='step' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1791' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='default_value' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1791' column='1'/> + <var-decl name='default_value' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1792' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1792' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1793' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='elem_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1793' column='1'/> + <var-decl name='elem_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1794' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='elems' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1794' column='1'/> + <var-decl name='elems' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1795' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='672'> - <var-decl name='nr_of_dims' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1795' column='1'/> + <var-decl name='nr_of_dims' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1796' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='dims' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1796' column='1'/> + <var-decl name='dims' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1797' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='reserved' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1797' column='1'/> + <var-decl name='reserved' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1798' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_control' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1709' column='1' id='d6a7cd6f'> + <class-decl name='v4l2_control' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1710' column='1' id='d6a7cd6f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1710' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1711' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1711' column='1'/> + <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1712' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_ext_controls' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1729' column='1' id='1a041cb4'> + <class-decl name='v4l2_ext_controls' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1730' column='1' id='1a041cb4'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='' type-id='3e79fede' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1730' column='1'/> + <var-decl name='' type-id='3e79fede' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1731' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1736' column='1'/> + <var-decl name='count' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1737' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='error_idx' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1737' column='1'/> + <var-decl name='error_idx' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1738' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1738' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1739' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='controls' type-id='264baaf7' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1739' column='1'/> + <var-decl name='controls' type-id='264baaf7' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1740' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__12' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1730' column='1' id='3e79fede'> + <union-decl name='__anonymous_union__12' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1731' column='1' id='3e79fede'> <data-member access='public'> - <var-decl name='which' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1734' column='1'/> + <var-decl name='which' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1735' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_ext_control' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1714' column='1' id='99cd308f'> + <class-decl name='v4l2_ext_control' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1715' column='1' id='99cd308f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1715' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1716' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1716' column='1'/> + <var-decl name='size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1717' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved2' type-id='439be632' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1717' column='1'/> + <var-decl name='reserved2' type-id='439be632' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1718' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='' type-id='319b4f74' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1718' column='1'/> + <var-decl name='' type-id='319b4f74' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1719' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__13' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1718' column='1' id='319b4f74'> + <union-decl name='__anonymous_union__13' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1719' column='1' id='319b4f74'> <data-member access='public'> - <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1719' column='1'/> + <var-decl name='value' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1720' column='1'/> </data-member> <data-member access='public'> - <var-decl name='value64' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1720' column='1'/> + <var-decl name='value64' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1721' column='1'/> </data-member> <data-member access='public'> - <var-decl name='string' type-id='26a90f95' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1721' column='1'/> + <var-decl name='string' type-id='26a90f95' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1722' column='1'/> </data-member> <data-member access='public'> - <var-decl name='p_u8' type-id='474e5dcc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1722' column='1'/> + <var-decl name='p_u8' type-id='474e5dcc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1723' column='1'/> </data-member> <data-member access='public'> - <var-decl name='p_u16' type-id='2e5e3725' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1723' column='1'/> + <var-decl name='p_u16' type-id='2e5e3725' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1724' column='1'/> </data-member> <data-member access='public'> - <var-decl name='p_u32' type-id='cd1b45ab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1724' column='1'/> + <var-decl name='p_u32' type-id='cd1b45ab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1725' column='1'/> </data-member> <data-member access='public'> - <var-decl name='ptr' type-id='eaa32e2f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1725' column='1'/> + <var-decl name='ptr' type-id='eaa32e2f' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1726' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_querymenu' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1801' column='1' id='7647d8c9'> + <class-decl name='v4l2_querymenu' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1802' column='1' id='7647d8c9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1802' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1803' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1803' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1804' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='' type-id='3cef873b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1804' column='1'/> + <var-decl name='' type-id='3cef873b' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1805' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1808' column='1'/> + <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1809' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__14' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1804' column='1' id='3cef873b'> + <union-decl name='__anonymous_union__14' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1805' column='1' id='3cef873b'> <data-member access='public'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1805' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1806' column='1'/> </data-member> <data-member access='public'> - <var-decl name='value' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1806' column='1'/> + <var-decl name='value' type-id='49659421' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1807' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_audio' size-in-bits='416' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1951' column='1' id='014e0a24'> + <class-decl name='v4l2_audio' size-in-bits='416' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1952' column='1' id='014e0a24'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1952' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1953' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1953' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1954' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1954' column='1'/> + <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1955' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1955' column='1'/> + <var-decl name='mode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1956' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1956' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1957' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_audioout' size-in-bits='416' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1966' column='1' id='5b3ea0c8'> + <class-decl name='v4l2_audioout' size-in-bits='416' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1967' column='1' id='5b3ea0c8'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1967' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1968' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1968' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1969' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1969' column='1'/> + <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1970' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1970' column='1'/> + <var-decl name='mode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1971' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1971' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1972' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_modulator' size-in-bits='544' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1851' column='1' id='7c3a095f'> + <class-decl name='v4l2_modulator' size-in-bits='544' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1852' column='1' id='7c3a095f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1852' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1853' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1853' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1854' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1854' column='1'/> + <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1855' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1855' column='1'/> + <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1856' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1856' column='1'/> + <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1857' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='txsubchans' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1857' column='1'/> + <var-decl name='txsubchans' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1858' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1858' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1859' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1859' column='1'/> + <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1860' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_cropcap' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1225' column='1' id='d50348b4'> @@ -84461,115 +84460,115 @@ <var-decl name='jpeg_markers' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='945' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_enc_idx' size-in-bits='16576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1991' column='1' id='e5f6c4d2'> + <class-decl name='v4l2_enc_idx' size-in-bits='16576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1992' column='1' id='e5f6c4d2'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='entries' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1992' column='1'/> + <var-decl name='entries' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1993' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='entries_cap' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1993' column='1'/> + <var-decl name='entries_cap' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1994' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1994' column='1'/> + <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1995' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='entry' type-id='faa42463' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1995' column='1'/> + <var-decl name='entry' type-id='faa42463' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1996' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_enc_idx_entry' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1982' column='1' id='59b5b331'> + <class-decl name='v4l2_enc_idx_entry' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1983' column='1' id='59b5b331'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='offset' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1983' column='1'/> + <var-decl name='offset' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1984' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pts' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1984' column='1'/> + <var-decl name='pts' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1985' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='length' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1985' column='1'/> + <var-decl name='length' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1986' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1986' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1987' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1987' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1988' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_encoder_cmd' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2007' column='1' id='769f1ed1'> + <class-decl name='v4l2_encoder_cmd' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2008' column='1' id='769f1ed1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='cmd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2008' column='1'/> + <var-decl name='cmd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2009' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2009' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2010' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='' type-id='96b0dd6a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2010' column='1'/> + <var-decl name='' type-id='96b0dd6a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2011' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__15' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2010' column='1' id='96b0dd6a'> + <union-decl name='__anonymous_union__15' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2011' column='1' id='96b0dd6a'> <data-member access='public'> - <var-decl name='raw' type-id='f1fdc4dc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2013' column='1'/> + <var-decl name='raw' type-id='f1fdc4dc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2014' column='1'/> </data-member> </union-decl> - <class-decl name='__anonymous_struct__4' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2011' column='1' id='f1fdc4dc'> + <class-decl name='__anonymous_struct__4' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2012' column='1' id='f1fdc4dc'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='data' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2012' column='1'/> + <var-decl name='data' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2013' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_decoder_cmd' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2054' column='1' id='440818bd'> + <class-decl name='v4l2_decoder_cmd' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2055' column='1' id='440818bd'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='cmd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2055' column='1'/> + <var-decl name='cmd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2056' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2056' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2057' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='' type-id='ddc566bc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2057' column='1'/> + <var-decl name='' type-id='ddc566bc' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2058' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__16' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2057' column='1' id='ddc566bc'> + <union-decl name='__anonymous_union__16' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2058' column='1' id='ddc566bc'> <data-member access='public'> - <var-decl name='stop' type-id='e0122dec' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2060' column='1'/> + <var-decl name='stop' type-id='e0122dec' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2061' column='1'/> </data-member> <data-member access='public'> - <var-decl name='start' type-id='98d68d57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2070' column='1'/> + <var-decl name='start' type-id='98d68d57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2071' column='1'/> </data-member> <data-member access='public'> - <var-decl name='raw' type-id='62956517' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2074' column='1'/> + <var-decl name='raw' type-id='62956517' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2075' column='1'/> </data-member> </union-decl> - <class-decl name='__anonymous_struct__5' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2058' column='1' id='e0122dec'> + <class-decl name='__anonymous_struct__5' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2059' column='1' id='e0122dec'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pts' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2059' column='1'/> + <var-decl name='pts' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2060' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__6' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2062' column='1' id='98d68d57'> + <class-decl name='__anonymous_struct__6' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2063' column='1' id='98d68d57'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='speed' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2068' column='1'/> + <var-decl name='speed' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2069' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2069' column='1'/> + <var-decl name='format' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2070' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__7' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2072' column='1' id='62956517'> + <class-decl name='__anonymous_struct__7' size-in-bits='512' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2073' column='1' id='62956517'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='data' type-id='9d2cf33e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2073' column='1'/> + <var-decl name='data' type-id='9d2cf33e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2074' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_streamparm' size-in-bits='1632' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2301' column='1' id='2f896428'> + <class-decl name='v4l2_streamparm' size-in-bits='1632' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2302' column='1' id='2f896428'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2302' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2303' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='parm' type-id='1ccea1b5' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2307' column='1'/> + <var-decl name='parm' type-id='1ccea1b5' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2308' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__17' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2303' column='1' id='1ccea1b5'> + <union-decl name='__anonymous_union__17' size-in-bits='1600' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2304' column='1' id='1ccea1b5'> <data-member access='public'> - <var-decl name='capture' type-id='f88a5c22' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2304' column='1'/> + <var-decl name='capture' type-id='f88a5c22' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2305' column='1'/> </data-member> <data-member access='public'> - <var-decl name='output' type-id='b573e9f1' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2305' column='1'/> + <var-decl name='output' type-id='b573e9f1' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2306' column='1'/> </data-member> <data-member access='public'> - <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2306' column='1'/> + <var-decl name='raw_data' type-id='0530f1a6' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2307' column='1'/> </data-member> </union-decl> <class-decl name='v4l2_captureparm' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1200' column='1' id='f88a5c22'> @@ -84612,119 +84611,119 @@ <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1219' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_tuner' size-in-bits='672' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1837' column='1' id='fd240b02'> + <class-decl name='v4l2_tuner' size-in-bits='672' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1838' column='1' id='fd240b02'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1838' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1839' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1839' column='1'/> + <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1840' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1840' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1841' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1841' column='1'/> + <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1842' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1842' column='1'/> + <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1843' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1843' column='1'/> + <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1844' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='rxsubchans' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1844' column='1'/> + <var-decl name='rxsubchans' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1845' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='audmode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1845' column='1'/> + <var-decl name='audmode' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1846' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='signal' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1846' column='1'/> + <var-decl name='signal' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1847' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='afc' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1847' column='1'/> + <var-decl name='afc' type-id='3158a266' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1848' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='544'> - <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1848' column='1'/> + <var-decl name='reserved' type-id='3fa29bab' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1849' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_frequency' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1894' column='1' id='a15ecb0c'> + <class-decl name='v4l2_frequency' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1895' column='1' id='a15ecb0c'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1895' column='1'/> + <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1896' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1896' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1897' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='frequency' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1897' column='1'/> + <var-decl name='frequency' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1898' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1898' column='1'/> + <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1899' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_frequency_band' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1905' column='1' id='400ed05a'> + <class-decl name='v4l2_frequency_band' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1906' column='1' id='400ed05a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1906' column='1'/> + <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1907' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1907' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1908' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1908' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1909' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1909' column='1'/> + <var-decl name='capability' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1910' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1910' column='1'/> + <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1911' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1911' column='1'/> + <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1912' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='modulation' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1912' column='1'/> + <var-decl name='modulation' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1913' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='reserved' type-id='43885e7a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1913' column='1'/> + <var-decl name='reserved' type-id='43885e7a' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1914' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sliced_vbi_cap' size-in-bits='928' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2138' column='1' id='97ed0ee7'> + <class-decl name='v4l2_sliced_vbi_cap' size-in-bits='928' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2139' column='1' id='97ed0ee7'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2139' column='1'/> + <var-decl name='service_set' type-id='d315442e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16'> - <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2144' column='1'/> + <var-decl name='service_lines' type-id='025daa6d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2145' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2146' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2146' column='1'/> + <var-decl name='reserved' type-id='3fa05d14' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2147' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_hw_freq_seek' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1916' column='1' id='a5eead8f'> + <class-decl name='v4l2_hw_freq_seek' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1917' column='1' id='a5eead8f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1917' column='1'/> + <var-decl name='tuner' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1918' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1918' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1919' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='seek_upward' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1919' column='1'/> + <var-decl name='seek_upward' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1920' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='wrap_around' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1920' column='1'/> + <var-decl name='wrap_around' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1921' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='spacing' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1921' column='1'/> + <var-decl name='spacing' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1922' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1922' column='1'/> + <var-decl name='rangelow' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1923' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1923' column='1'/> + <var-decl name='rangehigh' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1924' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1924' column='1'/> + <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1925' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_frmsizeenum' size-in-bits='352' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='863' column='1' id='aba31911'> @@ -84822,20 +84821,20 @@ <var-decl name='step' type-id='5f37256e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='888' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_dv_timings' size-in-bits='1056' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1555' column='1' id='9a25f4b0'> + <class-decl name='v4l2_dv_timings' size-in-bits='1056' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1556' column='1' id='9a25f4b0'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1556' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1557' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='' type-id='d749ec6e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1557' column='1'/> + <var-decl name='' type-id='d749ec6e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1558' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__20' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1557' column='1' id='d749ec6e'> + <union-decl name='__anonymous_union__20' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1558' column='1' id='d749ec6e'> <data-member access='public'> - <var-decl name='bt' type-id='ecc13ba0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1558' column='1'/> + <var-decl name='bt' type-id='ecc13ba0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1559' column='1'/> </data-member> <data-member access='public'> - <var-decl name='reserved' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1559' column='1'/> + <var-decl name='reserved' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1560' column='1'/> </data-member> </union-decl> <class-decl name='v4l2_bt_timings' size-in-bits='992' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1439' column='1' id='ecc13ba0'> @@ -84900,69 +84899,69 @@ <var-decl name='reserved' type-id='0ddb15d8' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1459' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_enum_dv_timings' size-in-bits='1184' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1574' column='1' id='b6da1a0e'> + <class-decl name='v4l2_enum_dv_timings' size-in-bits='1184' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1575' column='1' id='b6da1a0e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1575' column='1'/> + <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1576' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='pad' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1576' column='1'/> + <var-decl name='pad' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1577' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1577' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1578' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='timings' type-id='9a25f4b0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1578' column='1'/> + <var-decl name='timings' type-id='9a25f4b0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1579' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_dv_timings_cap' size-in-bits='1152' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1619' column='1' id='cdb274e3'> + <class-decl name='v4l2_dv_timings_cap' size-in-bits='1152' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1620' column='1' id='cdb274e3'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1620' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1621' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='pad' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1621' column='1'/> + <var-decl name='pad' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1622' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1622' column='1'/> + <var-decl name='reserved' type-id='839e8989' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1623' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='' type-id='7bbb3c88' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1623' column='1'/> + <var-decl name='' type-id='7bbb3c88' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1624' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__21' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1623' column='1' id='7bbb3c88'> + <union-decl name='__anonymous_union__21' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1624' column='1' id='7bbb3c88'> <data-member access='public'> - <var-decl name='bt' type-id='e5bfe593' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1624' column='1'/> + <var-decl name='bt' type-id='e5bfe593' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1625' column='1'/> </data-member> <data-member access='public'> - <var-decl name='raw_data' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1625' column='1'/> + <var-decl name='raw_data' type-id='734a963c' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1626' column='1'/> </data-member> </union-decl> - <class-decl name='v4l2_bt_timings_cap' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1592' column='1' id='e5bfe593'> + <class-decl name='v4l2_bt_timings_cap' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1593' column='1' id='e5bfe593'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='min_width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1593' column='1'/> + <var-decl name='min_width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1594' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='max_width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1594' column='1'/> + <var-decl name='max_width' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1595' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='min_height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1595' column='1'/> + <var-decl name='min_height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1596' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='max_height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1596' column='1'/> + <var-decl name='max_height' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1597' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='min_pixelclock' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1597' column='1'/> + <var-decl name='min_pixelclock' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1598' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='max_pixelclock' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1598' column='1'/> + <var-decl name='max_pixelclock' type-id='d3130597' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1599' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='standards' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1599' column='1'/> + <var-decl name='standards' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1600' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1600' column='1'/> + <var-decl name='capabilities' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1601' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='reserved' type-id='9d2cf33e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1601' column='1'/> + <var-decl name='reserved' type-id='9d2cf33e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1602' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_edid' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/uapi/linux/v4l2-common.h' line='100' column='1' id='54bf0f36'> @@ -84982,18 +84981,18 @@ <var-decl name='edid' type-id='474e5dcc' visibility='default' filepath='include/uapi/linux/v4l2-common.h' line='105' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_event_subscription' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2447' column='1' id='1251351e'> + <class-decl name='v4l2_event_subscription' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2448' column='1' id='1251351e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2448' column='1'/> + <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2449' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2449' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2450' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2450' column='1'/> + <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2451' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2451' column='1'/> + <var-decl name='reserved' type-id='83a5454e' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2452' column='1'/> </data-member> </class-decl> <enum-decl name='v4l2_priority' filepath='include/uapi/linux/videodev2.h' line='395' column='1' id='8b60a0b9'> @@ -85230,21 +85229,21 @@ <var-decl name='type' type-id='19c2251e' visibility='default' filepath='include/media/v4l2-subdev.h' line='65' column='1'/> </data-member> </class-decl> - <class-decl name='v4l2_sliced_vbi_data' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2149' column='1' id='6fab59d9'> + <class-decl name='v4l2_sliced_vbi_data' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2150' column='1' id='6fab59d9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2150' column='1'/> + <var-decl name='id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2151' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2151' column='1'/> + <var-decl name='field' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2152' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2152' column='1'/> + <var-decl name='line' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2153' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2153' column='1'/> + <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2154' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='data' type-id='51dffe12' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2154' column='1'/> + <var-decl name='data' type-id='51dffe12' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2155' column='1'/> </data-member> </class-decl> <class-decl name='v4l2_subdev_ir_ops' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/media/v4l2-subdev.h' line='608' column='1' id='77a58158'> @@ -87230,18 +87229,18 @@ </abi-instr> <abi-instr address-size='64' path='drivers/net/bonding/bond_main.c' language='LANG_C89'> <pointer-type-def type-id='451e220e' size-in-bits='64' id='0736bee0'/> - <function-decl name='dev_get_stats' mangled-name='dev_get_stats' filepath='include/linux/netdevice.h' line='4225' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_stats'> + <function-decl name='dev_get_stats' mangled-name='dev_get_stats' filepath='include/linux/netdevice.h' line='4228' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_stats'> <parameter type-id='68a2d05b'/> <parameter type-id='bd3860fe'/> <return type-id='bd3860fe'/> </function-decl> - <function-decl name='netdev_rx_handler_register' mangled-name='netdev_rx_handler_register' filepath='include/linux/netdevice.h' line='3635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netdev_rx_handler_register'> + <function-decl name='netdev_rx_handler_register' mangled-name='netdev_rx_handler_register' filepath='include/linux/netdevice.h' line='3636' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netdev_rx_handler_register'> <parameter type-id='68a2d05b'/> <parameter type-id='0736bee0'/> <parameter type-id='eaa32e2f'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='netdev_rx_handler_unregister' mangled-name='netdev_rx_handler_unregister' filepath='include/linux/netdevice.h' line='3638' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netdev_rx_handler_unregister'> + <function-decl name='netdev_rx_handler_unregister' mangled-name='netdev_rx_handler_unregister' filepath='include/linux/netdevice.h' line='3639' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netdev_rx_handler_unregister'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -87282,7 +87281,7 @@ <parameter type-id='959ab461'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='ether_setup' mangled-name='ether_setup' filepath='include/linux/netdevice.h' line='4085' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='ether_setup'> + <function-decl name='ether_setup' mangled-name='ether_setup' filepath='include/linux/netdevice.h' line='4088' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='ether_setup'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -87290,11 +87289,11 @@ <parameter type-id='0fbf3cfd'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='netif_carrier_on' mangled-name='netif_carrier_on' filepath='include/linux/netdevice.h' line='3762' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_carrier_on'> + <function-decl name='netif_carrier_on' mangled-name='netif_carrier_on' filepath='include/linux/netdevice.h' line='3765' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_carrier_on'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='netif_carrier_off' mangled-name='netif_carrier_off' filepath='include/linux/netdevice.h' line='3764' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_carrier_off'> + <function-decl name='netif_carrier_off' mangled-name='netif_carrier_off' filepath='include/linux/netdevice.h' line='3767' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_carrier_off'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -87304,7 +87303,7 @@ <function-decl name='rtnl_unlock' mangled-name='rtnl_unlock' filepath='include/linux/rtnetlink.h' line='34' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rtnl_unlock'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='alloc_netdev_mqs' mangled-name='alloc_netdev_mqs' filepath='include/linux/netdevice.h' line='4088' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='alloc_netdev_mqs'> + <function-decl name='alloc_netdev_mqs' mangled-name='alloc_netdev_mqs' filepath='include/linux/netdevice.h' line='4091' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='alloc_netdev_mqs'> <parameter type-id='95e97e5e'/> <parameter type-id='80f4b756'/> <parameter type-id='002ac4a6'/> @@ -87313,11 +87312,11 @@ <parameter type-id='f0981eeb'/> <return type-id='68a2d05b'/> </function-decl> - <function-decl name='register_netdevice' mangled-name='register_netdevice' filepath='include/linux/netdevice.h' line='2658' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdevice'> + <function-decl name='register_netdevice' mangled-name='register_netdevice' filepath='include/linux/netdevice.h' line='2659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdevice'> <parameter type-id='68a2d05b'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='free_netdev' mangled-name='free_netdev' filepath='include/linux/netdevice.h' line='2667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_netdev'> + <function-decl name='free_netdev' mangled-name='free_netdev' filepath='include/linux/netdevice.h' line='2668' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_netdev'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -87468,6 +87467,13 @@ <return type-id='0fbf3cfd'/> </function-decl> </abi-instr> + <abi-instr address-size='64' path='drivers/net/ppp/ppp_generic.c' language='LANG_C89'> + <function-decl name='skb_queue_head' mangled-name='skb_queue_head' filepath='include/linux/skbuff.h' line='1882' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='skb_queue_head'> + <parameter type-id='03c386c6'/> + <parameter type-id='0fbf3cfd'/> + <return type-id='48b5725f'/> + </function-decl> + </abi-instr> <abi-instr address-size='64' path='drivers/net/ppp/ppp_mppe.c' language='LANG_C89'> <class-decl name='crypto_sync_skcipher' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/crypto/skcipher.h' line='68' column='1' id='a631cac2'> <data-member access='public' layout-offset-in-bits='0'> @@ -87639,7 +87645,7 @@ <pointer-type-def type-id='b95a5ed3' size-in-bits='64' id='3a639063'/> <pointer-type-def type-id='c2a59aaa' size-in-bits='64' id='26479c18'/> <pointer-type-def type-id='26479c18' size-in-bits='64' id='74bae2b6'/> - <function-decl name='unregister_netdevice_notifier' mangled-name='unregister_netdevice_notifier' filepath='include/linux/netdevice.h' line='2518' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_notifier'> + <function-decl name='unregister_netdevice_notifier' mangled-name='unregister_netdevice_notifier' filepath='include/linux/netdevice.h' line='2519' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_notifier'> <parameter type-id='d504f73d'/> <return type-id='95e97e5e'/> </function-decl> @@ -87695,7 +87701,7 @@ <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='register_netdevice_notifier' mangled-name='register_netdevice_notifier' filepath='include/linux/netdevice.h' line='2517' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdevice_notifier'> + <function-decl name='register_netdevice_notifier' mangled-name='register_netdevice_notifier' filepath='include/linux/netdevice.h' line='2518' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdevice_notifier'> <parameter type-id='d504f73d'/> <return type-id='95e97e5e'/> </function-decl> @@ -87724,11 +87730,11 @@ <parameter type-id='f0981eeb'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='dev_queue_xmit' mangled-name='dev_queue_xmit' filepath='include/linux/netdevice.h' line='2655' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_queue_xmit'> + <function-decl name='dev_queue_xmit' mangled-name='dev_queue_xmit' filepath='include/linux/netdevice.h' line='2656' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_queue_xmit'> <parameter type-id='0fbf3cfd'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='dev_get_by_name' mangled-name='dev_get_by_name' filepath='include/linux/netdevice.h' line='2640' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_by_name'> + <function-decl name='dev_get_by_name' mangled-name='dev_get_by_name' filepath='include/linux/netdevice.h' line='2641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_by_name'> <parameter type-id='a2bff676'/> <parameter type-id='80f4b756'/> <return type-id='68a2d05b'/> @@ -88102,7 +88108,7 @@ <pointer-type-def type-id='ff37489f' size-in-bits='64' id='790774ef'/> <pointer-type-def type-id='bb1a67f7' size-in-bits='64' id='5afbd3c3'/> <pointer-type-def type-id='0a042b05' size-in-bits='64' id='82398c35'/> - <function-decl name='netif_tx_stop_all_queues' mangled-name='netif_tx_stop_all_queues' filepath='include/linux/netdevice.h' line='3155' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_tx_stop_all_queues'> + <function-decl name='netif_tx_stop_all_queues' mangled-name='netif_tx_stop_all_queues' filepath='include/linux/netdevice.h' line='3156' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_tx_stop_all_queues'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -88181,7 +88187,7 @@ <parameter type-id='f0981eeb'/> <return type-id='8efea9e5'/> </function-decl> - <function-decl name='netif_schedule_queue' mangled-name='netif_schedule_queue' filepath='include/linux/netdevice.h' line='3078' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_schedule_queue'> + <function-decl name='netif_schedule_queue' mangled-name='netif_schedule_queue' filepath='include/linux/netdevice.h' line='3079' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_schedule_queue'> <parameter type-id='35b28c4f'/> <return type-id='48b5725f'/> </function-decl> @@ -88201,11 +88207,11 @@ <parameter type-id='f0981eeb'/> <return type-id='68a2d05b'/> </function-decl> - <function-decl name='register_netdev' mangled-name='register_netdev' filepath='include/linux/netdevice.h' line='4102' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdev'> + <function-decl name='register_netdev' mangled-name='register_netdev' filepath='include/linux/netdevice.h' line='4105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='register_netdev'> <parameter type-id='68a2d05b'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='unregister_netdev' mangled-name='unregister_netdev' filepath='include/linux/netdevice.h' line='4103' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdev'> + <function-decl name='unregister_netdev' mangled-name='unregister_netdev' filepath='include/linux/netdevice.h' line='4106' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdev'> <parameter type-id='68a2d05b'/> <return type-id='48b5725f'/> </function-decl> @@ -88215,7 +88221,7 @@ <parameter is-variadic='yes'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='netif_tx_wake_queue' mangled-name='netif_tx_wake_queue' filepath='include/linux/netdevice.h' line='3114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_tx_wake_queue'> + <function-decl name='netif_tx_wake_queue' mangled-name='netif_tx_wake_queue' filepath='include/linux/netdevice.h' line='3115' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_tx_wake_queue'> <parameter type-id='35b28c4f'/> <return type-id='48b5725f'/> </function-decl> @@ -91004,108 +91010,108 @@ <var-decl name='plen' type-id='95e97e5e' visibility='default' filepath='include/net/ip6_fib.h' line='105' column='1'/> </data-member> </class-decl> - <class-decl name='ifmcaddr6' size-in-bits='1280' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='119' column='1' id='cc23d6f1'> + <class-decl name='ifmcaddr6' size-in-bits='1280' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='127' column='1' id='cc23d6f1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='mca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='120' column='1'/> + <var-decl name='mca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='128' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='idev' type-id='f026b16b' visibility='default' filepath='include/net/if_inet6.h' line='121' column='1'/> + <var-decl name='idev' type-id='f026b16b' visibility='default' filepath='include/net/if_inet6.h' line='129' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='next' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='122' column='1'/> + <var-decl name='next' type-id='d1ca3a89' visibility='default' filepath='include/net/if_inet6.h' line='130' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='mca_sources' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='123' column='1'/> + <var-decl name='mca_sources' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='131' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='mca_tomb' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='124' column='1'/> + <var-decl name='mca_tomb' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='132' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='mca_sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='125' column='1'/> + <var-decl name='mca_sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='133' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='mca_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='126' column='1'/> + <var-decl name='mca_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='134' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='mca_sfcount' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='127' column='1'/> + <var-decl name='mca_sfcount' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='mca_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='128' column='1'/> + <var-decl name='mca_timer' type-id='abe41e67' visibility='default' filepath='include/net/if_inet6.h' line='136' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='mca_flags' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='129' column='1'/> + <var-decl name='mca_flags' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='137' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1056'> - <var-decl name='mca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='130' column='1'/> + <var-decl name='mca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='mca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='131' column='1'/> + <var-decl name='mca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='139' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1120'> - <var-decl name='mca_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='132' column='1'/> + <var-decl name='mca_lock' type-id='fb4018a0' visibility='default' filepath='include/net/if_inet6.h' line='140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='mca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='133' column='1'/> + <var-decl name='mca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='141' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='mca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='134' column='1'/> + <var-decl name='mca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='142' column='1'/> </data-member> </class-decl> - <class-decl name='ip6_sf_list' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='104' column='1' id='b83c8287'> + <class-decl name='ip6_sf_list' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='112' column='1' id='b83c8287'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sf_next' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='105' column='1'/> + <var-decl name='sf_next' type-id='60f4096f' visibility='default' filepath='include/net/if_inet6.h' line='113' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='sf_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='106' column='1'/> + <var-decl name='sf_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='114' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='sf_count' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='107' column='1'/> + <var-decl name='sf_count' type-id='f05e8e77' visibility='default' filepath='include/net/if_inet6.h' line='115' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='sf_gsresp' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='108' column='1'/> + <var-decl name='sf_gsresp' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='328'> - <var-decl name='sf_oldin' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='109' column='1'/> + <var-decl name='sf_oldin' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='117' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='336'> - <var-decl name='sf_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='110' column='1'/> + <var-decl name='sf_crcount' type-id='002ac4a6' visibility='default' filepath='include/net/if_inet6.h' line='118' column='1'/> </data-member> </class-decl> - <class-decl name='ifacaddr6' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='145' column='1' id='1883cd3d'> + <class-decl name='ifacaddr6' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='153' column='1' id='1883cd3d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='aca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='146' column='1'/> + <var-decl name='aca_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='154' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='aca_rt' type-id='fe454a75' visibility='default' filepath='include/net/if_inet6.h' line='147' column='1'/> + <var-decl name='aca_rt' type-id='fe454a75' visibility='default' filepath='include/net/if_inet6.h' line='155' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='aca_next' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='148' column='1'/> + <var-decl name='aca_next' type-id='034d7ded' visibility='default' filepath='include/net/if_inet6.h' line='156' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='aca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='149' column='1'/> + <var-decl name='aca_users' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='157' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='aca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='150' column='1'/> + <var-decl name='aca_refcnt' type-id='64615833' visibility='default' filepath='include/net/if_inet6.h' line='158' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='aca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='151' column='1'/> + <var-decl name='aca_cstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='159' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='aca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='152' column='1'/> + <var-decl name='aca_tstamp' type-id='7359adad' visibility='default' filepath='include/net/if_inet6.h' line='160' column='1'/> </data-member> </class-decl> - <class-decl name='ipv6_devstat' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='159' column='1' id='0e97f526'> + <class-decl name='ipv6_devstat' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='167' column='1' id='0e97f526'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='proc_dir_entry' type-id='d077e928' visibility='default' filepath='include/net/if_inet6.h' line='160' column='1'/> + <var-decl name='proc_dir_entry' type-id='d077e928' visibility='default' filepath='include/net/if_inet6.h' line='168' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='ipv6' type-id='30897c4e' visibility='default' filepath='include/net/if_inet6.h' line='161' column='1'/> + <var-decl name='ipv6' type-id='30897c4e' visibility='default' filepath='include/net/if_inet6.h' line='169' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='icmpv6dev' type-id='6551bd60' visibility='default' filepath='include/net/if_inet6.h' line='162' column='1'/> + <var-decl name='icmpv6dev' type-id='6551bd60' visibility='default' filepath='include/net/if_inet6.h' line='170' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='icmpv6msgdev' type-id='793f0d19' visibility='default' filepath='include/net/if_inet6.h' line='163' column='1'/> + <var-decl name='icmpv6msgdev' type-id='793f0d19' visibility='default' filepath='include/net/if_inet6.h' line='171' column='1'/> </data-member> </class-decl> <class-decl name='icmpv6_mib_device' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/snmp.h' line='80' column='1' id='1b8801b2'> @@ -92020,12 +92026,12 @@ <parameter type-id='7359adad'/> <return type-id='7359adad'/> </function-decl> - <function-decl name='unregister_netdevice_queue' mangled-name='unregister_netdevice_queue' filepath='include/linux/netdevice.h' line='2659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_queue'> + <function-decl name='unregister_netdevice_queue' mangled-name='unregister_netdevice_queue' filepath='include/linux/netdevice.h' line='2660' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_queue'> <parameter type-id='68a2d05b'/> <parameter type-id='e84b031a'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='netif_rx' mangled-name='netif_rx' filepath='include/linux/netdevice.h' line='3615' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_rx'> + <function-decl name='netif_rx' mangled-name='netif_rx' filepath='include/linux/netdevice.h' line='3616' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_rx'> <parameter type-id='0fbf3cfd'/> <return type-id='95e97e5e'/> </function-decl> @@ -92048,7 +92054,7 @@ <parameter type-id='c50361c5'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='synchronize_net' mangled-name='synchronize_net' filepath='include/linux/netdevice.h' line='2669' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='synchronize_net'> + <function-decl name='synchronize_net' mangled-name='synchronize_net' filepath='include/linux/netdevice.h' line='2670' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='synchronize_net'> <return type-id='48b5725f'/> </function-decl> <function-decl name='netif_napi_del' mangled-name='netif_napi_del' filepath='include/linux/netdevice.h' line='2279' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_napi_del'> @@ -92060,7 +92066,7 @@ <parameter type-id='95e97e5e'/> <return type-id='c894953d'/> </function-decl> - <function-decl name='napi_gro_receive' mangled-name='napi_gro_receive' filepath='include/linux/netdevice.h' line='3620' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='napi_gro_receive'> + <function-decl name='napi_gro_receive' mangled-name='napi_gro_receive' filepath='include/linux/netdevice.h' line='3621' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='napi_gro_receive'> <parameter type-id='c50361c5'/> <parameter type-id='0fbf3cfd'/> <return type-id='3facc5aa'/> @@ -93546,17 +93552,17 @@ <parameter type-id='fa0b179b'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='pci_request_acs' mangled-name='pci_request_acs' filepath='drivers/pci/pci.c' line='3067' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_request_acs'> + <function-decl name='pci_request_acs' mangled-name='pci_request_acs' filepath='drivers/pci/pci.c' line='3079' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_request_acs'> <return type-id='48b5725f'/> </function-decl> - <function-decl name='pci_request_region' mangled-name='pci_request_region' filepath='drivers/pci/pci.c' line='3655' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_request_region'> - <parameter type-id='85196e3f' name='pdev' filepath='drivers/pci/pci.c' line='3655' column='1'/> - <parameter type-id='95e97e5e' name='bar' filepath='drivers/pci/pci.c' line='3655' column='1'/> - <parameter type-id='80f4b756' name='res_name' filepath='drivers/pci/pci.c' line='3655' column='1'/> + <function-decl name='pci_request_region' mangled-name='pci_request_region' filepath='drivers/pci/pci.c' line='3667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_request_region'> + <parameter type-id='85196e3f' name='pdev' filepath='drivers/pci/pci.c' line='3667' column='1'/> + <parameter type-id='95e97e5e' name='bar' filepath='drivers/pci/pci.c' line='3667' column='1'/> + <parameter type-id='80f4b756' name='res_name' filepath='drivers/pci/pci.c' line='3667' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='pci_clear_master' mangled-name='pci_clear_master' filepath='drivers/pci/pci.c' line='4107' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_clear_master'> - <parameter type-id='85196e3f' name='dev' filepath='drivers/pci/pci.c' line='4107' column='1'/> + <function-decl name='pci_clear_master' mangled-name='pci_clear_master' filepath='drivers/pci/pci.c' line='4119' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pci_clear_master'> + <parameter type-id='85196e3f' name='dev' filepath='drivers/pci/pci.c' line='4119' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-type size-in-bits='64' id='d9435f47'> @@ -94765,35 +94771,35 @@ <var-decl name='max_uV' type-id='95e97e5e' visibility='default' filepath='drivers/regulator/internal.h' line='25' column='1'/> </data-member> </class-decl> - <function-decl name='regulator_get' mangled-name='regulator_get' filepath='drivers/regulator/core.c' line='1873' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='1873' column='1'/> - <parameter type-id='80f4b756' name='id' filepath='drivers/regulator/core.c' line='1873' column='1'/> + <function-decl name='regulator_get' mangled-name='regulator_get' filepath='drivers/regulator/core.c' line='1875' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='1875' column='1'/> + <parameter type-id='80f4b756' name='id' filepath='drivers/regulator/core.c' line='1875' column='1'/> <return type-id='850c13f6'/> </function-decl> - <function-decl name='regulator_get_optional' mangled-name='regulator_get_optional' filepath='drivers/regulator/core.c' line='1926' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_optional'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='1926' column='1'/> - <parameter type-id='80f4b756' name='id' filepath='drivers/regulator/core.c' line='1926' column='1'/> + <function-decl name='regulator_get_optional' mangled-name='regulator_get_optional' filepath='drivers/regulator/core.c' line='1928' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_optional'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='1928' column='1'/> + <parameter type-id='80f4b756' name='id' filepath='drivers/regulator/core.c' line='1928' column='1'/> <return type-id='850c13f6'/> </function-decl> - <function-decl name='regulator_put' mangled-name='regulator_put' filepath='drivers/regulator/core.c' line='1983' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_put'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='1983' column='1'/> + <function-decl name='regulator_put' mangled-name='regulator_put' filepath='drivers/regulator/core.c' line='1985' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_put'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='1985' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='regulator_disable_deferred' mangled-name='regulator_disable_deferred' filepath='drivers/regulator/core.c' line='2631' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_disable_deferred'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2631' column='1'/> - <parameter type-id='95e97e5e' name='ms' filepath='drivers/regulator/core.c' line='2631' column='1'/> + <function-decl name='regulator_disable_deferred' mangled-name='regulator_disable_deferred' filepath='drivers/regulator/core.c' line='2633' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_disable_deferred'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2633' column='1'/> + <parameter type-id='95e97e5e' name='ms' filepath='drivers/regulator/core.c' line='2633' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_is_enabled' mangled-name='regulator_is_enabled' filepath='drivers/regulator/core.c' line='2710' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_is_enabled'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2710' column='1'/> + <function-decl name='regulator_is_enabled' mangled-name='regulator_is_enabled' filepath='drivers/regulator/core.c' line='2712' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_is_enabled'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2712' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_count_voltages' mangled-name='regulator_count_voltages' filepath='drivers/regulator/core.c' line='2733' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_count_voltages'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2733' column='1'/> + <function-decl name='regulator_count_voltages' mangled-name='regulator_count_voltages' filepath='drivers/regulator/core.c' line='2735' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_count_voltages'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='2735' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_get_voltage' mangled-name='regulator_get_voltage' filepath='drivers/regulator/core.c' line='3541' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_voltage'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3541' column='1'/> + <function-decl name='regulator_get_voltage' mangled-name='regulator_get_voltage' filepath='drivers/regulator/core.c' line='3543' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_voltage'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3543' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='regulator_map_voltage_linear' mangled-name='regulator_map_voltage_linear' filepath='include/linux/regulator/driver.h' line='512' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_map_voltage_linear'> @@ -94802,50 +94808,50 @@ <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_set_current_limit' mangled-name='regulator_set_current_limit' filepath='drivers/regulator/core.c' line='3571' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_current_limit'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3571' column='1'/> - <parameter type-id='95e97e5e' name='min_uA' filepath='drivers/regulator/core.c' line='3572' column='1'/> - <parameter type-id='95e97e5e' name='max_uA' filepath='drivers/regulator/core.c' line='3572' column='1'/> + <function-decl name='regulator_set_current_limit' mangled-name='regulator_set_current_limit' filepath='drivers/regulator/core.c' line='3573' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_current_limit'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3573' column='1'/> + <parameter type-id='95e97e5e' name='min_uA' filepath='drivers/regulator/core.c' line='3574' column='1'/> + <parameter type-id='95e97e5e' name='max_uA' filepath='drivers/regulator/core.c' line='3574' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_set_mode' mangled-name='regulator_set_mode' filepath='drivers/regulator/core.c' line='3641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_mode'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3641' column='1'/> - <parameter type-id='f0981eeb' name='mode' filepath='drivers/regulator/core.c' line='3641' column='1'/> + <function-decl name='regulator_set_mode' mangled-name='regulator_set_mode' filepath='drivers/regulator/core.c' line='3643' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_mode'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3643' column='1'/> + <parameter type-id='f0981eeb' name='mode' filepath='drivers/regulator/core.c' line='3643' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_get_mode' mangled-name='regulator_get_mode' filepath='drivers/regulator/core.c' line='3700' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_mode'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3700' column='1'/> + <function-decl name='regulator_get_mode' mangled-name='regulator_get_mode' filepath='drivers/regulator/core.c' line='3702' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_mode'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3702' column='1'/> <return type-id='f0981eeb'/> </function-decl> - <function-decl name='regulator_set_load' mangled-name='regulator_set_load' filepath='drivers/regulator/core.c' line='3765' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_load'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3765' column='1'/> - <parameter type-id='95e97e5e' name='uA_load' filepath='drivers/regulator/core.c' line='3765' column='1'/> + <function-decl name='regulator_set_load' mangled-name='regulator_set_load' filepath='drivers/regulator/core.c' line='3767' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_set_load'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3767' column='1'/> + <parameter type-id='95e97e5e' name='uA_load' filepath='drivers/regulator/core.c' line='3767' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_register_notifier' mangled-name='regulator_register_notifier' filepath='drivers/regulator/core.c' line='3844' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_register_notifier'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3844' column='1'/> - <parameter type-id='d504f73d' name='nb' filepath='drivers/regulator/core.c' line='3845' column='1'/> + <function-decl name='regulator_register_notifier' mangled-name='regulator_register_notifier' filepath='drivers/regulator/core.c' line='3846' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_register_notifier'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3846' column='1'/> + <parameter type-id='d504f73d' name='nb' filepath='drivers/regulator/core.c' line='3847' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_unregister_notifier' mangled-name='regulator_unregister_notifier' filepath='drivers/regulator/core.c' line='3859' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_unregister_notifier'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3859' column='1'/> - <parameter type-id='d504f73d' name='nb' filepath='drivers/regulator/core.c' line='3860' column='1'/> + <function-decl name='regulator_unregister_notifier' mangled-name='regulator_unregister_notifier' filepath='drivers/regulator/core.c' line='3861' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_unregister_notifier'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='3861' column='1'/> + <parameter type-id='d504f73d' name='nb' filepath='drivers/regulator/core.c' line='3862' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_bulk_enable' mangled-name='regulator_bulk_enable' filepath='drivers/regulator/core.c' line='3941' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_bulk_enable'> - <parameter type-id='95e97e5e' name='num_consumers' filepath='drivers/regulator/core.c' line='3941' column='1'/> - <parameter type-id='776946b4' name='consumers' filepath='drivers/regulator/core.c' line='3942' column='1'/> + <function-decl name='regulator_bulk_enable' mangled-name='regulator_bulk_enable' filepath='drivers/regulator/core.c' line='3943' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_bulk_enable'> + <parameter type-id='95e97e5e' name='num_consumers' filepath='drivers/regulator/core.c' line='3943' column='1'/> + <parameter type-id='776946b4' name='consumers' filepath='drivers/regulator/core.c' line='3944' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_bulk_disable' mangled-name='regulator_bulk_disable' filepath='drivers/regulator/core.c' line='3993' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_bulk_disable'> - <parameter type-id='95e97e5e' name='num_consumers' filepath='drivers/regulator/core.c' line='3993' column='1'/> - <parameter type-id='776946b4' name='consumers' filepath='drivers/regulator/core.c' line='3994' column='1'/> + <function-decl name='regulator_bulk_disable' mangled-name='regulator_bulk_disable' filepath='drivers/regulator/core.c' line='3995' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_bulk_disable'> + <parameter type-id='95e97e5e' name='num_consumers' filepath='drivers/regulator/core.c' line='3995' column='1'/> + <parameter type-id='776946b4' name='consumers' filepath='drivers/regulator/core.c' line='3996' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='regulator_notifier_call_chain' mangled-name='regulator_notifier_call_chain' filepath='drivers/regulator/core.c' line='4084' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_notifier_call_chain'> - <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='4084' column='1'/> - <parameter type-id='7359adad' name='event' filepath='drivers/regulator/core.c' line='4085' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='drivers/regulator/core.c' line='4085' column='1'/> + <function-decl name='regulator_notifier_call_chain' mangled-name='regulator_notifier_call_chain' filepath='drivers/regulator/core.c' line='4086' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_notifier_call_chain'> + <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='4086' column='1'/> + <parameter type-id='7359adad' name='event' filepath='drivers/regulator/core.c' line='4087' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='drivers/regulator/core.c' line='4087' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='dev_get_regmap' mangled-name='dev_get_regmap' filepath='include/linux/regmap.h' line='1007' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_regmap'> @@ -94853,20 +94859,20 @@ <parameter type-id='80f4b756'/> <return type-id='29af9a71'/> </function-decl> - <function-decl name='regulator_sync_state' mangled-name='regulator_sync_state' filepath='drivers/regulator/core.c' line='4944' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_sync_state'> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='4944' column='1'/> + <function-decl name='regulator_sync_state' mangled-name='regulator_sync_state' filepath='drivers/regulator/core.c' line='4946' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_sync_state'> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/regulator/core.c' line='4946' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='rdev_get_drvdata' mangled-name='rdev_get_drvdata' filepath='drivers/regulator/core.c' line='5056' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdev_get_drvdata'> - <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='5056' column='1'/> + <function-decl name='rdev_get_drvdata' mangled-name='rdev_get_drvdata' filepath='drivers/regulator/core.c' line='5058' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdev_get_drvdata'> + <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='5058' column='1'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='regulator_get_drvdata' mangled-name='regulator_get_drvdata' filepath='drivers/regulator/core.c' line='5069' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_drvdata'> - <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='5069' column='1'/> + <function-decl name='regulator_get_drvdata' mangled-name='regulator_get_drvdata' filepath='drivers/regulator/core.c' line='5071' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='regulator_get_drvdata'> + <parameter type-id='850c13f6' name='regulator' filepath='drivers/regulator/core.c' line='5071' column='1'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='rdev_get_id' mangled-name='rdev_get_id' filepath='drivers/regulator/core.c' line='5090' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdev_get_id'> - <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='5090' column='1'/> + <function-decl name='rdev_get_id' mangled-name='rdev_get_id' filepath='drivers/regulator/core.c' line='5092' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdev_get_id'> + <parameter type-id='43c38462' name='rdev' filepath='drivers/regulator/core.c' line='5092' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -97353,17 +97359,17 @@ <parameter type-id='7292109c' name='resid' filepath='drivers/scsi/scsi_lib.c' line='262' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='scsi_block_requests' mangled-name='scsi_block_requests' filepath='drivers/scsi/scsi_lib.c' line='2443' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_block_requests'> - <parameter type-id='a970a64c' name='shost' filepath='drivers/scsi/scsi_lib.c' line='2443' column='1'/> + <function-decl name='scsi_block_requests' mangled-name='scsi_block_requests' filepath='drivers/scsi/scsi_lib.c' line='2442' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_block_requests'> + <parameter type-id='a970a64c' name='shost' filepath='drivers/scsi/scsi_lib.c' line='2442' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='scsi_unblock_requests' mangled-name='scsi_unblock_requests' filepath='drivers/scsi/scsi_lib.c' line='2469' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_unblock_requests'> - <parameter type-id='a970a64c' name='shost' filepath='drivers/scsi/scsi_lib.c' line='2469' column='1'/> + <function-decl name='scsi_unblock_requests' mangled-name='scsi_unblock_requests' filepath='drivers/scsi/scsi_lib.c' line='2468' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_unblock_requests'> + <parameter type-id='a970a64c' name='shost' filepath='drivers/scsi/scsi_lib.c' line='2468' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='scsi_set_cmd_timeout_override' mangled-name='scsi_set_cmd_timeout_override' filepath='drivers/scsi/scsi_lib.c' line='2496' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_set_cmd_timeout_override'> - <parameter type-id='eb572b74' name='sdev' filepath='drivers/scsi/scsi_lib.c' line='2496' column='1'/> - <parameter type-id='f0981eeb' name='timeout' filepath='drivers/scsi/scsi_lib.c' line='2497' column='1'/> + <function-decl name='scsi_set_cmd_timeout_override' mangled-name='scsi_set_cmd_timeout_override' filepath='drivers/scsi/scsi_lib.c' line='2495' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='scsi_set_cmd_timeout_override'> + <parameter type-id='eb572b74' name='sdev' filepath='drivers/scsi/scsi_lib.c' line='2495' column='1'/> + <parameter type-id='f0981eeb' name='timeout' filepath='drivers/scsi/scsi_lib.c' line='2496' column='1'/> <return type-id='48b5725f'/> </function-decl> <class-decl name='scsi_sense_hdr' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/scsi/scsi_common.h' line='50' column='1' id='d6746ce3'> @@ -98864,7 +98870,7 @@ <parameter type-id='f0981eeb'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='blk_queue_rq_timeout' mangled-name='blk_queue_rq_timeout' filepath='include/linux/blkdev.h' line='1253' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='blk_queue_rq_timeout'> + <function-decl name='blk_queue_rq_timeout' mangled-name='blk_queue_rq_timeout' filepath='include/linux/blkdev.h' line='1261' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='blk_queue_rq_timeout'> <parameter type-id='e7d2a5fc'/> <parameter type-id='f0981eeb'/> <return type-id='48b5725f'/> @@ -99077,7 +99083,7 @@ <parameter type-id='eaa32e2f'/> <return type-id='eaa32e2f'/> </function-type> - <enum-decl name='blk_eh_timer_return' filepath='include/linux/blkdev.h' line='331' column='1' id='0f4f6276'> + <enum-decl name='blk_eh_timer_return' filepath='include/linux/blkdev.h' line='339' column='1' id='0f4f6276'> <underlying-type type-id='9cac1fee'/> <enumerator name='BLK_EH_DONE' value='0'/> <enumerator name='BLK_EH_RESET_TIMER' value='1'/> @@ -100710,13 +100716,13 @@ <pointer-type-def type-id='636c7d8b' size-in-bits='64' id='0641a57f'/> <pointer-type-def type-id='4292193b' size-in-bits='64' id='7126cf8f'/> <pointer-type-def type-id='593ec809' size-in-bits='64' id='bbebd435'/> - <function-decl name='of_cpufreq_cooling_register' mangled-name='of_cpufreq_cooling_register' filepath='drivers/thermal/cpu_cooling.c' line='755' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_cpufreq_cooling_register'> - <parameter type-id='343c3ae4' name='policy' filepath='drivers/thermal/cpu_cooling.c' line='755' column='1'/> + <function-decl name='of_cpufreq_cooling_register' mangled-name='of_cpufreq_cooling_register' filepath='drivers/thermal/cpu_cooling.c' line='756' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_cpufreq_cooling_register'> + <parameter type-id='343c3ae4' name='policy' filepath='drivers/thermal/cpu_cooling.c' line='756' column='1'/> <return type-id='2feec21f'/> </function-decl> - <function-decl name='cpufreq_platform_cooling_register' mangled-name='cpufreq_platform_cooling_register' filepath='drivers/thermal/cpu_cooling.c' line='792' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpufreq_platform_cooling_register'> - <parameter type-id='343c3ae4' name='policy' filepath='drivers/thermal/cpu_cooling.c' line='792' column='1'/> - <parameter type-id='1c164590' name='plat_ops' filepath='drivers/thermal/cpu_cooling.c' line='793' column='1'/> + <function-decl name='cpufreq_platform_cooling_register' mangled-name='cpufreq_platform_cooling_register' filepath='drivers/thermal/cpu_cooling.c' line='793' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpufreq_platform_cooling_register'> + <parameter type-id='343c3ae4' name='policy' filepath='drivers/thermal/cpu_cooling.c' line='793' column='1'/> + <parameter type-id='1c164590' name='plat_ops' filepath='drivers/thermal/cpu_cooling.c' line='794' column='1'/> <return type-id='2feec21f'/> </function-decl> <function-type size-in-bits='64' id='8393eddc'> @@ -100753,13 +100759,13 @@ <parameter type-id='02e48bc6'/> <return type-id='7359adad'/> </function-decl> - <function-decl name='of_devfreq_cooling_register' mangled-name='of_devfreq_cooling_register' filepath='drivers/thermal/devfreq_cooling.c' line='614' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_devfreq_cooling_register'> - <parameter type-id='9a537bbe' name='np' filepath='drivers/thermal/devfreq_cooling.c' line='614' column='1'/> - <parameter type-id='f66fa7f4' name='df' filepath='drivers/thermal/devfreq_cooling.c' line='614' column='1'/> + <function-decl name='of_devfreq_cooling_register' mangled-name='of_devfreq_cooling_register' filepath='drivers/thermal/devfreq_cooling.c' line='615' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_devfreq_cooling_register'> + <parameter type-id='9a537bbe' name='np' filepath='drivers/thermal/devfreq_cooling.c' line='615' column='1'/> + <parameter type-id='f66fa7f4' name='df' filepath='drivers/thermal/devfreq_cooling.c' line='615' column='1'/> <return type-id='2feec21f'/> </function-decl> - <function-decl name='devfreq_cooling_unregister' mangled-name='devfreq_cooling_unregister' filepath='drivers/thermal/devfreq_cooling.c' line='634' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devfreq_cooling_unregister'> - <parameter type-id='2feec21f' name='cdev' filepath='drivers/thermal/devfreq_cooling.c' line='634' column='1'/> + <function-decl name='devfreq_cooling_unregister' mangled-name='devfreq_cooling_unregister' filepath='drivers/thermal/devfreq_cooling.c' line='635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='devfreq_cooling_unregister'> + <parameter type-id='2feec21f' name='cdev' filepath='drivers/thermal/devfreq_cooling.c' line='635' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='dev_pm_opp_find_freq_exact' mangled-name='dev_pm_opp_find_freq_exact' filepath='include/linux/pm_opp.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_pm_opp_find_freq_exact'> @@ -102014,7 +102020,7 @@ <pointer-type-def type-id='aa99b0ae' size-in-bits='64' id='c805a6f8'/> <pointer-type-def type-id='3636c828' size-in-bits='64' id='a902ee5a'/> <pointer-type-def type-id='a818b7a0' size-in-bits='64' id='7fa79446'/> - <function-decl name='uart_console_write' mangled-name='uart_console_write' filepath='include/linux/serial_core.h' line='412' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_console_write'> + <function-decl name='uart_console_write' mangled-name='uart_console_write' filepath='include/linux/serial_core.h' line='429' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_console_write'> <parameter type-id='af051c69'/> <parameter type-id='80f4b756'/> <parameter type-id='f0981eeb'/> @@ -102321,33 +102327,33 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='drivers/tty/serial/serial_core.c' language='LANG_C89'> - <class-decl name='uart_driver' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/serial_core.h' line='312' column='1' id='89f1cbf8'> + <class-decl name='uart_driver' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/serial_core.h' line='329' column='1' id='89f1cbf8'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/serial_core.h' line='313' column='1'/> + <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/serial_core.h' line='330' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='driver_name' type-id='80f4b756' visibility='default' filepath='include/linux/serial_core.h' line='314' column='1'/> + <var-decl name='driver_name' type-id='80f4b756' visibility='default' filepath='include/linux/serial_core.h' line='331' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='dev_name' type-id='80f4b756' visibility='default' filepath='include/linux/serial_core.h' line='315' column='1'/> + <var-decl name='dev_name' type-id='80f4b756' visibility='default' filepath='include/linux/serial_core.h' line='332' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='major' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='316' column='1'/> + <var-decl name='major' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='333' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='minor' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='317' column='1'/> + <var-decl name='minor' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='334' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='nr' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='318' column='1'/> + <var-decl name='nr' type-id='95e97e5e' visibility='default' filepath='include/linux/serial_core.h' line='335' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='cons' type-id='b9aa0100' visibility='default' filepath='include/linux/serial_core.h' line='319' column='1'/> + <var-decl name='cons' type-id='b9aa0100' visibility='default' filepath='include/linux/serial_core.h' line='336' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='state' type-id='533b348b' visibility='default' filepath='include/linux/serial_core.h' line='325' column='1'/> + <var-decl name='state' type-id='533b348b' visibility='default' filepath='include/linux/serial_core.h' line='342' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='tty_driver' type-id='c2b4b27b' visibility='default' filepath='include/linux/serial_core.h' line='326' column='1'/> + <var-decl name='tty_driver' type-id='c2b4b27b' visibility='default' filepath='include/linux/serial_core.h' line='343' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='89f1cbf8' size-in-bits='64' id='04a219de'/> @@ -102360,9 +102366,9 @@ <parameter type-id='95e97e5e' name='flow' filepath='drivers/tty/serial/serial_core.c' line='2027' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uart_add_one_port' mangled-name='uart_add_one_port' filepath='drivers/tty/serial/serial_core.c' line='2755' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_add_one_port'> - <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2755' column='1'/> - <parameter type-id='af051c69' name='uport' filepath='drivers/tty/serial/serial_core.c' line='2755' column='1'/> + <function-decl name='uart_add_one_port' mangled-name='uart_add_one_port' filepath='drivers/tty/serial/serial_core.c' line='2756' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_add_one_port'> + <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2756' column='1'/> + <parameter type-id='af051c69' name='uport' filepath='drivers/tty/serial/serial_core.c' line='2756' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='uart_write_wakeup' mangled-name='uart_write_wakeup' filepath='drivers/tty/serial/serial_core.c' line='95' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_write_wakeup'> @@ -102401,30 +102407,30 @@ <parameter type-id='af051c69' name='uport' filepath='drivers/tty/serial/serial_core.c' line='2181' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uart_register_driver' mangled-name='uart_register_driver' filepath='drivers/tty/serial/serial_core.c' line='2486' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_register_driver'> - <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2486' column='1'/> + <function-decl name='uart_register_driver' mangled-name='uart_register_driver' filepath='drivers/tty/serial/serial_core.c' line='2487' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_register_driver'> + <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2487' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uart_unregister_driver' mangled-name='uart_unregister_driver' filepath='drivers/tty/serial/serial_core.c' line='2553' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_unregister_driver'> - <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2553' column='1'/> + <function-decl name='uart_unregister_driver' mangled-name='uart_unregister_driver' filepath='drivers/tty/serial/serial_core.c' line='2554' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_unregister_driver'> + <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2554' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='uart_console_device' mangled-name='uart_console_device' filepath='drivers/tty/serial/serial_core.c' line='2567' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_console_device'> - <parameter type-id='b9aa0100' name='co' filepath='drivers/tty/serial/serial_core.c' line='2567' column='1'/> - <parameter type-id='7292109c' name='index' filepath='drivers/tty/serial/serial_core.c' line='2567' column='1'/> + <function-decl name='uart_console_device' mangled-name='uart_console_device' filepath='drivers/tty/serial/serial_core.c' line='2568' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_console_device'> + <parameter type-id='b9aa0100' name='co' filepath='drivers/tty/serial/serial_core.c' line='2568' column='1'/> + <parameter type-id='7292109c' name='index' filepath='drivers/tty/serial/serial_core.c' line='2568' column='1'/> <return type-id='c2b4b27b'/> </function-decl> - <function-decl name='uart_remove_one_port' mangled-name='uart_remove_one_port' filepath='drivers/tty/serial/serial_core.c' line='2858' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_remove_one_port'> - <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2858' column='1'/> - <parameter type-id='af051c69' name='uport' filepath='drivers/tty/serial/serial_core.c' line='2858' column='1'/> + <function-decl name='uart_remove_one_port' mangled-name='uart_remove_one_port' filepath='drivers/tty/serial/serial_core.c' line='2859' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_remove_one_port'> + <parameter type-id='04a219de' name='drv' filepath='drivers/tty/serial/serial_core.c' line='2859' column='1'/> + <parameter type-id='af051c69' name='uport' filepath='drivers/tty/serial/serial_core.c' line='2859' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='uart_insert_char' mangled-name='uart_insert_char' filepath='drivers/tty/serial/serial_core.c' line='3033' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_insert_char'> - <parameter type-id='af051c69' name='port' filepath='drivers/tty/serial/serial_core.c' line='3033' column='1'/> - <parameter type-id='f0981eeb' name='status' filepath='drivers/tty/serial/serial_core.c' line='3033' column='1'/> - <parameter type-id='f0981eeb' name='overrun' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1'/> - <parameter type-id='f0981eeb' name='ch' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1'/> - <parameter type-id='f0981eeb' name='flag' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1'/> + <function-decl name='uart_insert_char' mangled-name='uart_insert_char' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='uart_insert_char'> + <parameter type-id='af051c69' name='port' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1'/> + <parameter type-id='f0981eeb' name='status' filepath='drivers/tty/serial/serial_core.c' line='3034' column='1'/> + <parameter type-id='f0981eeb' name='overrun' filepath='drivers/tty/serial/serial_core.c' line='3035' column='1'/> + <parameter type-id='f0981eeb' name='ch' filepath='drivers/tty/serial/serial_core.c' line='3035' column='1'/> + <parameter type-id='f0981eeb' name='flag' filepath='drivers/tty/serial/serial_core.c' line='3035' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='device_property_read_u32_array' mangled-name='device_property_read_u32_array' filepath='include/linux/property.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='device_property_read_u32_array'> @@ -102448,21 +102454,21 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='drivers/tty/tty_buffer.c' language='LANG_C89'> - <function-decl name='tty_insert_flip_string_fixed_flag' mangled-name='tty_insert_flip_string_fixed_flag' filepath='drivers/tty/tty_buffer.c' line='306' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tty_insert_flip_string_fixed_flag'> - <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='306' column='1'/> - <parameter type-id='354f7eb9' name='chars' filepath='drivers/tty/tty_buffer.c' line='307' column='1'/> - <parameter type-id='a84c031d' name='flag' filepath='drivers/tty/tty_buffer.c' line='307' column='1'/> - <parameter type-id='b59d7dce' name='size' filepath='drivers/tty/tty_buffer.c' line='307' column='1'/> + <function-decl name='tty_insert_flip_string_fixed_flag' mangled-name='tty_insert_flip_string_fixed_flag' filepath='drivers/tty/tty_buffer.c' line='307' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tty_insert_flip_string_fixed_flag'> + <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='307' column='1'/> + <parameter type-id='354f7eb9' name='chars' filepath='drivers/tty/tty_buffer.c' line='308' column='1'/> + <parameter type-id='a84c031d' name='flag' filepath='drivers/tty/tty_buffer.c' line='308' column='1'/> + <parameter type-id='b59d7dce' name='size' filepath='drivers/tty/tty_buffer.c' line='308' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='__tty_insert_flip_char' mangled-name='__tty_insert_flip_char' filepath='drivers/tty/tty_buffer.c' line='374' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__tty_insert_flip_char'> - <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='374' column='1'/> - <parameter type-id='002ac4a6' name='ch' filepath='drivers/tty/tty_buffer.c' line='374' column='1'/> - <parameter type-id='a84c031d' name='flag' filepath='drivers/tty/tty_buffer.c' line='374' column='1'/> + <function-decl name='__tty_insert_flip_char' mangled-name='__tty_insert_flip_char' filepath='drivers/tty/tty_buffer.c' line='375' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__tty_insert_flip_char'> + <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='375' column='1'/> + <parameter type-id='002ac4a6' name='ch' filepath='drivers/tty/tty_buffer.c' line='375' column='1'/> + <parameter type-id='a84c031d' name='flag' filepath='drivers/tty/tty_buffer.c' line='375' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='tty_flip_buffer_push' mangled-name='tty_flip_buffer_push' filepath='drivers/tty/tty_buffer.c' line='552' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tty_flip_buffer_push'> - <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='552' column='1'/> + <function-decl name='tty_flip_buffer_push' mangled-name='tty_flip_buffer_push' filepath='drivers/tty/tty_buffer.c' line='541' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='tty_flip_buffer_push'> + <parameter type-id='ec77b5b8' name='port' filepath='drivers/tty/tty_buffer.c' line='541' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -102673,16 +102679,16 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='drivers/usb/core/hcd.c' language='LANG_C89'> - <function-decl name='__usb_create_hcd' mangled-name='__usb_create_hcd' filepath='drivers/usb/core/hcd.c' line='2584' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__usb_create_hcd'> - <parameter type-id='5aa12c86' name='driver' filepath='drivers/usb/core/hcd.c' line='2584' column='1'/> - <parameter type-id='fa0b179b' name='sysdev' filepath='drivers/usb/core/hcd.c' line='2585' column='1'/> - <parameter type-id='fa0b179b' name='dev' filepath='drivers/usb/core/hcd.c' line='2585' column='1'/> - <parameter type-id='80f4b756' name='bus_name' filepath='drivers/usb/core/hcd.c' line='2585' column='1'/> - <parameter type-id='fc4f83c1' name='primary_hcd' filepath='drivers/usb/core/hcd.c' line='2586' column='1'/> + <function-decl name='__usb_create_hcd' mangled-name='__usb_create_hcd' filepath='drivers/usb/core/hcd.c' line='2605' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__usb_create_hcd'> + <parameter type-id='5aa12c86' name='driver' filepath='drivers/usb/core/hcd.c' line='2605' column='1'/> + <parameter type-id='fa0b179b' name='sysdev' filepath='drivers/usb/core/hcd.c' line='2606' column='1'/> + <parameter type-id='fa0b179b' name='dev' filepath='drivers/usb/core/hcd.c' line='2606' column='1'/> + <parameter type-id='80f4b756' name='bus_name' filepath='drivers/usb/core/hcd.c' line='2606' column='1'/> + <parameter type-id='fc4f83c1' name='primary_hcd' filepath='drivers/usb/core/hcd.c' line='2607' column='1'/> <return type-id='fc4f83c1'/> </function-decl> - <function-decl name='usb_hcd_platform_shutdown' mangled-name='usb_hcd_platform_shutdown' filepath='drivers/usb/core/hcd.c' line='3084' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_hcd_platform_shutdown'> - <parameter type-id='db362995' name='dev' filepath='drivers/usb/core/hcd.c' line='3084' column='1'/> + <function-decl name='usb_hcd_platform_shutdown' mangled-name='usb_hcd_platform_shutdown' filepath='drivers/usb/core/hcd.c' line='3105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_hcd_platform_shutdown'> + <parameter type-id='db362995' name='dev' filepath='drivers/usb/core/hcd.c' line='3105' column='1'/> <return type-id='48b5725f'/> </function-decl> <pointer-type-def type-id='8f118d08' size-in-bits='64' id='5aa12c86'/> @@ -103897,8 +103903,8 @@ <parameter type-id='1a494567'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='usb_composite_setup_continue' mangled-name='usb_composite_setup_continue' filepath='drivers/usb/gadget/composite.c' line='2652' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_composite_setup_continue'> - <parameter type-id='2a895c01' name='cdev' filepath='drivers/usb/gadget/composite.c' line='2652' column='1'/> + <function-decl name='usb_composite_setup_continue' mangled-name='usb_composite_setup_continue' filepath='drivers/usb/gadget/composite.c' line='2660' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_composite_setup_continue'> + <parameter type-id='2a895c01' name='cdev' filepath='drivers/usb/gadget/composite.c' line='2660' column='1'/> <return type-id='48b5725f'/> </function-decl> <pointer-type-def type-id='e9546509' size-in-bits='64' id='2a895c01'/> @@ -104524,126 +104530,126 @@ <pointer-type-def type-id='1f03d7fe' size-in-bits='64' id='dd810384'/> </abi-instr> <abi-instr address-size='64' path='drivers/usb/gadget/function/f_audio_source.c' language='LANG_C89'> - <function-decl name='snd_pcm_period_elapsed' mangled-name='snd_pcm_period_elapsed' filepath='include/sound/pcm.h' line='1105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_period_elapsed'> + <function-decl name='snd_pcm_period_elapsed' mangled-name='snd_pcm_period_elapsed' filepath='include/sound/pcm.h' line='1109' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_period_elapsed'> <parameter type-id='06b2cd14'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='_snd_pcm_lib_alloc_vmalloc_buffer' mangled-name='_snd_pcm_lib_alloc_vmalloc_buffer' filepath='include/sound/pcm.h' line='1235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_snd_pcm_lib_alloc_vmalloc_buffer'> + <function-decl name='_snd_pcm_lib_alloc_vmalloc_buffer' mangled-name='_snd_pcm_lib_alloc_vmalloc_buffer' filepath='include/sound/pcm.h' line='1239' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_snd_pcm_lib_alloc_vmalloc_buffer'> <parameter type-id='06b2cd14'/> <parameter type-id='7359adad'/> <parameter type-id='f0981eeb'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_lib_free_vmalloc_buffer' mangled-name='snd_pcm_lib_free_vmalloc_buffer' filepath='include/sound/pcm.h' line='1237' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_lib_free_vmalloc_buffer'> + <function-decl name='snd_pcm_lib_free_vmalloc_buffer' mangled-name='snd_pcm_lib_free_vmalloc_buffer' filepath='include/sound/pcm.h' line='1241' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_lib_free_vmalloc_buffer'> <parameter type-id='06b2cd14'/> <return type-id='95e97e5e'/> </function-decl> <pointer-type-def type-id='362eec9e' size-in-bits='64' id='06b2cd14'/> - <class-decl name='snd_pcm_substream' size-in-bits='5248' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='464' column='1' id='362eec9e'> + <class-decl name='snd_pcm_substream' size-in-bits='5248' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='468' column='1' id='362eec9e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='465' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='469' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pstr' type-id='e5ffb4bb' visibility='default' filepath='include/sound/pcm.h' line='466' column='1'/> + <var-decl name='pstr' type-id='e5ffb4bb' visibility='default' filepath='include/sound/pcm.h' line='470' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='467' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='471' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='number' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='468' column='1'/> + <var-decl name='number' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='472' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/sound/pcm.h' line='469' column='1'/> + <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/sound/pcm.h' line='473' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='470' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='474' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='latency_pm_qos_req' type-id='cd6fc142' visibility='default' filepath='include/sound/pcm.h' line='471' column='1'/> + <var-decl name='latency_pm_qos_req' type-id='cd6fc142' visibility='default' filepath='include/sound/pcm.h' line='475' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2752'> - <var-decl name='buffer_bytes_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='472' column='1'/> + <var-decl name='buffer_bytes_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='476' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2816'> - <var-decl name='dma_buffer' type-id='c5addfb4' visibility='default' filepath='include/sound/pcm.h' line='473' column='1'/> + <var-decl name='dma_buffer' type-id='c5addfb4' visibility='default' filepath='include/sound/pcm.h' line='477' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3200'> - <var-decl name='dma_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='474' column='1'/> + <var-decl name='dma_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='478' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3264'> - <var-decl name='ops' type-id='f63b1a17' visibility='default' filepath='include/sound/pcm.h' line='476' column='1'/> + <var-decl name='ops' type-id='f63b1a17' visibility='default' filepath='include/sound/pcm.h' line='480' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3328'> - <var-decl name='runtime' type-id='17a05af6' visibility='default' filepath='include/sound/pcm.h' line='478' column='1'/> + <var-decl name='runtime' type-id='17a05af6' visibility='default' filepath='include/sound/pcm.h' line='482' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3392'> - <var-decl name='runtime_lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='479' column='1'/> + <var-decl name='runtime_lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='483' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3456'> - <var-decl name='timer' type-id='6ee1a870' visibility='default' filepath='include/sound/pcm.h' line='481' column='1'/> + <var-decl name='timer' type-id='6ee1a870' visibility='default' filepath='include/sound/pcm.h' line='485' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='timer_running' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='482' column='1'/> + <var-decl name='timer_running' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='486' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3584'> - <var-decl name='wait_time' type-id='bd54fe1a' visibility='default' filepath='include/sound/pcm.h' line='483' column='1'/> + <var-decl name='wait_time' type-id='bd54fe1a' visibility='default' filepath='include/sound/pcm.h' line='487' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3648'> - <var-decl name='next' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='485' column='1'/> + <var-decl name='next' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='489' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3712'> - <var-decl name='link_list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='487' column='1'/> + <var-decl name='link_list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='491' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3840'> - <var-decl name='self_group' type-id='5e60e97f' visibility='default' filepath='include/sound/pcm.h' line='488' column='1'/> + <var-decl name='self_group' type-id='5e60e97f' visibility='default' filepath='include/sound/pcm.h' line='492' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4352'> - <var-decl name='group' type-id='8042a887' visibility='default' filepath='include/sound/pcm.h' line='489' column='1'/> + <var-decl name='group' type-id='8042a887' visibility='default' filepath='include/sound/pcm.h' line='493' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4416'> - <var-decl name='file' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='491' column='1'/> + <var-decl name='file' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='495' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4480'> - <var-decl name='ref_count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='492' column='1'/> + <var-decl name='ref_count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='496' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4512'> - <var-decl name='mmap_count' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='493' column='1'/> + <var-decl name='mmap_count' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='497' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4544'> - <var-decl name='f_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='494' column='1'/> + <var-decl name='f_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='498' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4608'> - <var-decl name='pcm_release' type-id='897d1b6d' visibility='default' filepath='include/sound/pcm.h' line='495' column='1'/> + <var-decl name='pcm_release' type-id='897d1b6d' visibility='default' filepath='include/sound/pcm.h' line='499' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4672'> - <var-decl name='pid' type-id='b94e5398' visibility='default' filepath='include/sound/pcm.h' line='496' column='1'/> + <var-decl name='pid' type-id='b94e5398' visibility='default' filepath='include/sound/pcm.h' line='500' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4736'> - <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='502' column='1'/> + <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='506' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4800'> - <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='503' column='1'/> + <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='507' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4864'> - <var-decl name='proc_hw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='504' column='1'/> + <var-decl name='proc_hw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='508' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='proc_sw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='505' column='1'/> + <var-decl name='proc_sw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='509' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4992'> - <var-decl name='proc_status_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='506' column='1'/> + <var-decl name='proc_status_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='510' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5056'> - <var-decl name='proc_prealloc_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='507' column='1'/> + <var-decl name='proc_prealloc_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='511' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5120'> - <var-decl name='proc_prealloc_max_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='508' column='1'/> + <var-decl name='proc_prealloc_max_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='hw_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='514' column='1'/> + <var-decl name='hw_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='518' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='hw_no_buffer' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='515' column='1'/> + <var-decl name='hw_no_buffer' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='519' column='1'/> </data-member> </class-decl> <class-decl name='pm_qos_request' size-in-bits='2240' is-struct='yes' visibility='default' filepath='include/linux/pm_qos.h' line='57' column='1' id='cd6fc142'> @@ -104686,18 +104692,18 @@ <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/memalloc.h' line='69' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_group' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='455' column='1' id='5e60e97f'> + <class-decl name='snd_pcm_group' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='459' column='1' id='5e60e97f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='456' column='1'/> + <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='460' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='457' column='1'/> + <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='461' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='substreams' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='458' column='1'/> + <var-decl name='substreams' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='462' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='459' column='1'/> + <var-decl name='count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='463' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='71bae7c7' size-in-bits='64' id='f63b1a17'/> @@ -104760,54 +104766,54 @@ <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/info.h' line='92' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm' size-in-bits='18496' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='546' column='1' id='76f8f8bb'> + <class-decl name='snd_pcm' size-in-bits='18496' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='550' column='1' id='76f8f8bb'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='card' type-id='52704eb7' visibility='default' filepath='include/sound/pcm.h' line='547' column='1'/> + <var-decl name='card' type-id='52704eb7' visibility='default' filepath='include/sound/pcm.h' line='551' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='548' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='552' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='device' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='549' column='1'/> + <var-decl name='device' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='553' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='info_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='550' column='1'/> + <var-decl name='info_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='554' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='dev_class' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='551' column='1'/> + <var-decl name='dev_class' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='555' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='272'> - <var-decl name='dev_subclass' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='552' column='1'/> + <var-decl name='dev_subclass' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='556' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='id' type-id='59daf3ef' visibility='default' filepath='include/sound/pcm.h' line='553' column='1'/> + <var-decl name='id' type-id='59daf3ef' visibility='default' filepath='include/sound/pcm.h' line='557' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='name' type-id='aa5ff375' visibility='default' filepath='include/sound/pcm.h' line='554' column='1'/> + <var-decl name='name' type-id='aa5ff375' visibility='default' filepath='include/sound/pcm.h' line='558' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='streams' type-id='5e28cc39' visibility='default' filepath='include/sound/pcm.h' line='555' column='1'/> + <var-decl name='streams' type-id='5e28cc39' visibility='default' filepath='include/sound/pcm.h' line='559' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17856'> - <var-decl name='open_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='556' column='1'/> + <var-decl name='open_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='560' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18112'> - <var-decl name='open_wait' type-id='b5ab048f' visibility='default' filepath='include/sound/pcm.h' line='557' column='1'/> + <var-decl name='open_wait' type-id='b5ab048f' visibility='default' filepath='include/sound/pcm.h' line='561' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18304'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='558' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='562' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18368'> - <var-decl name='private_free' type-id='182096ce' visibility='default' filepath='include/sound/pcm.h' line='559' column='1'/> + <var-decl name='private_free' type-id='182096ce' visibility='default' filepath='include/sound/pcm.h' line='563' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18432'> - <var-decl name='internal' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='560' column='1'/> + <var-decl name='internal' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='564' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18440'> - <var-decl name='nonatomic' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='561' column='1'/> + <var-decl name='nonatomic' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='565' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_runtime' size-in-bits='6144' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='367' column='1' id='bc78c060'> + <class-decl name='snd_pcm_runtime' size-in-bits='6464' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='367' column='1' id='bc78c060'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='trigger_master' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='369' column='1'/> </data-member> @@ -104979,40 +104985,46 @@ <data-member access='public' layout-offset-in-bits='6016'> <var-decl name='driver_tstamp' type-id='a9c79a1f' visibility='default' filepath='include/sound/pcm.h' line='447' column='1'/> </data-member> + <data-member access='public' layout-offset-in-bits='6144'> + <var-decl name='buffer_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='454' column='1'/> + </data-member> + <data-member access='public' layout-offset-in-bits='6400'> + <var-decl name='buffer_accessing' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='455' column='1'/> + </data-member> </class-decl> - <class-decl name='snd_pcm_str' size-in-bits='8192' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='521' column='1' id='5d633b6b'> + <class-decl name='snd_pcm_str' size-in-bits='8192' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='525' column='1' id='5d633b6b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='522' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='526' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='523' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='527' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='substream_count' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='525' column='1'/> + <var-decl name='substream_count' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='substream_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='526' column='1'/> + <var-decl name='substream_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='530' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='substream' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='527' column='1'/> + <var-decl name='substream' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='531' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='533' column='1'/> + <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='537' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='534' column='1'/> + <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='538' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='chmap_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='540' column='1'/> + <var-decl name='chmap_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='544' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='vol_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='541' column='1'/> + <var-decl name='vol_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='545' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='usr_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='542' column='1'/> + <var-decl name='usr_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='546' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='include/sound/pcm.h' line='543' column='1'/> + <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='include/sound/pcm.h' line='547' column='1'/> </data-member> </class-decl> <class-decl name='snd_timer' size-in-bits='3520' is-struct='yes' visibility='default' filepath='include/sound/timer.h' line='72' column='1' id='73595e52'> @@ -106971,8 +106983,8 @@ <parameter type-id='49a58c0c' name='gadget' filepath='drivers/usb/gadget/udc/core.c' line='1322' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='usb_del_gadget_udc' mangled-name='usb_del_gadget_udc' filepath='drivers/usb/gadget/udc/core.c' line='1352' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_del_gadget_udc'> - <parameter type-id='49a58c0c' name='gadget' filepath='drivers/usb/gadget/udc/core.c' line='1352' column='1'/> + <function-decl name='usb_del_gadget_udc' mangled-name='usb_del_gadget_udc' filepath='drivers/usb/gadget/udc/core.c' line='1351' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='usb_del_gadget_udc'> + <parameter type-id='49a58c0c' name='gadget' filepath='drivers/usb/gadget/udc/core.c' line='1351' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -108847,242 +108859,242 @@ <array-type-def dimensions='1' type-id='72a973b7' size-in-bits='45632' id='cec4db9b'> <subrange length='31' type-id='7ff19f0f' id='ae5e1d19'/> </array-type-def> - <class-decl name='xhci_driver_overrides' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1923' column='1' id='8264b0e6'> + <class-decl name='xhci_driver_overrides' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1926' column='1' id='8264b0e6'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='extra_priv_size' type-id='b59d7dce' visibility='default' filepath='drivers/usb/host/xhci.h' line='1924' column='1'/> + <var-decl name='extra_priv_size' type-id='b59d7dce' visibility='default' filepath='drivers/usb/host/xhci.h' line='1927' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reset' type-id='3d4f6569' visibility='default' filepath='drivers/usb/host/xhci.h' line='1925' column='1'/> + <var-decl name='reset' type-id='3d4f6569' visibility='default' filepath='drivers/usb/host/xhci.h' line='1928' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='start' type-id='3d4f6569' visibility='default' filepath='drivers/usb/host/xhci.h' line='1926' column='1'/> + <var-decl name='start' type-id='3d4f6569' visibility='default' filepath='drivers/usb/host/xhci.h' line='1929' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_hcd' size-in-bits='43456' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1735' column='1' id='b8f49971'> + <class-decl name='xhci_hcd' size-in-bits='43456' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1738' column='1' id='b8f49971'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='main_hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1736' column='1'/> + <var-decl name='main_hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1739' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='shared_hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1737' column='1'/> + <var-decl name='shared_hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1740' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='cap_regs' type-id='8ed5fea6' visibility='default' filepath='drivers/usb/host/xhci.h' line='1739' column='1'/> + <var-decl name='cap_regs' type-id='8ed5fea6' visibility='default' filepath='drivers/usb/host/xhci.h' line='1742' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='op_regs' type-id='aba583a5' visibility='default' filepath='drivers/usb/host/xhci.h' line='1740' column='1'/> + <var-decl name='op_regs' type-id='aba583a5' visibility='default' filepath='drivers/usb/host/xhci.h' line='1743' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='run_regs' type-id='aaa546af' visibility='default' filepath='drivers/usb/host/xhci.h' line='1741' column='1'/> + <var-decl name='run_regs' type-id='aaa546af' visibility='default' filepath='drivers/usb/host/xhci.h' line='1744' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='dba' type-id='2966de59' visibility='default' filepath='drivers/usb/host/xhci.h' line='1742' column='1'/> + <var-decl name='dba' type-id='2966de59' visibility='default' filepath='drivers/usb/host/xhci.h' line='1745' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='ir_set' type-id='098bff2c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1744' column='1'/> + <var-decl name='ir_set' type-id='098bff2c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1747' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='sec_ir_set' type-id='0d627672' visibility='default' filepath='drivers/usb/host/xhci.h' line='1746' column='1'/> + <var-decl name='sec_ir_set' type-id='0d627672' visibility='default' filepath='drivers/usb/host/xhci.h' line='1749' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='core_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1748' column='1'/> + <var-decl name='core_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1751' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='544'> - <var-decl name='hcs_params1' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1751' column='1'/> + <var-decl name='hcs_params1' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1754' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='hcs_params2' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1752' column='1'/> + <var-decl name='hcs_params2' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1755' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='hcs_params3' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1753' column='1'/> + <var-decl name='hcs_params3' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1756' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='hcc_params' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1754' column='1'/> + <var-decl name='hcc_params' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1757' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='672'> - <var-decl name='hcc_params2' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1755' column='1'/> + <var-decl name='hcc_params2' type-id='3f1a6b60' visibility='default' filepath='drivers/usb/host/xhci.h' line='1758' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='drivers/usb/host/xhci.h' line='1757' column='1'/> + <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='drivers/usb/host/xhci.h' line='1760' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='736'> - <var-decl name='sbrn' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1760' column='1'/> + <var-decl name='sbrn' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1763' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='752'> - <var-decl name='hci_version' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1761' column='1'/> + <var-decl name='hci_version' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1764' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='max_slots' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1762' column='1'/> + <var-decl name='max_slots' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1765' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='776'> - <var-decl name='max_interrupters' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1763' column='1'/> + <var-decl name='max_interrupters' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1766' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='784'> - <var-decl name='max_ports' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1764' column='1'/> + <var-decl name='max_ports' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1767' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='792'> - <var-decl name='isoc_threshold' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1765' column='1'/> + <var-decl name='isoc_threshold' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1768' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='imod_interval' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1767' column='1'/> + <var-decl name='imod_interval' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1770' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='event_ring_max' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1768' column='1'/> + <var-decl name='event_ring_max' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1771' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='864'> - <var-decl name='page_size' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1770' column='1'/> + <var-decl name='page_size' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1773' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='page_shift' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1772' column='1'/> + <var-decl name='page_shift' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1775' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='928'> - <var-decl name='msix_count' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1774' column='1'/> + <var-decl name='msix_count' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1777' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='clk' type-id='7d0bc0eb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1776' column='1'/> + <var-decl name='clk' type-id='7d0bc0eb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1779' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='reg_clk' type-id='7d0bc0eb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1777' column='1'/> + <var-decl name='reg_clk' type-id='7d0bc0eb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1780' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='dcbaa' type-id='8fea74f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1779' column='1'/> + <var-decl name='dcbaa' type-id='8fea74f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1782' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='cmd_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='1780' column='1'/> + <var-decl name='cmd_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='1783' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='cmd_ring_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1781' column='1'/> + <var-decl name='cmd_ring_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1784' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='cmd_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1785' column='1'/> + <var-decl name='cmd_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1788' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='cmd_ring_reserved_trbs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1786' column='1'/> + <var-decl name='cmd_ring_reserved_trbs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1789' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='cmd_timer' type-id='5ad6e0ef' visibility='default' filepath='drivers/usb/host/xhci.h' line='1787' column='1'/> + <var-decl name='cmd_timer' type-id='5ad6e0ef' visibility='default' filepath='drivers/usb/host/xhci.h' line='1790' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='cmd_ring_stop_completion' type-id='f9fef04f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1788' column='1'/> + <var-decl name='cmd_ring_stop_completion' type-id='f9fef04f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1791' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2816'> - <var-decl name='current_cmd' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1789' column='1'/> + <var-decl name='current_cmd' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1792' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2880'> - <var-decl name='event_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='1790' column='1'/> + <var-decl name='event_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='1793' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2944'> - <var-decl name='erst' type-id='c86369aa' visibility='default' filepath='drivers/usb/host/xhci.h' line='1791' column='1'/> + <var-decl name='erst' type-id='c86369aa' visibility='default' filepath='drivers/usb/host/xhci.h' line='1794' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3200'> - <var-decl name='sec_event_ring' type-id='d5c806f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1794' column='1'/> + <var-decl name='sec_event_ring' type-id='d5c806f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1797' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3264'> - <var-decl name='sec_erst' type-id='d7409d08' visibility='default' filepath='drivers/usb/host/xhci.h' line='1795' column='1'/> + <var-decl name='sec_erst' type-id='d7409d08' visibility='default' filepath='drivers/usb/host/xhci.h' line='1798' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3328'> - <var-decl name='scratchpad' type-id='33e2a135' visibility='default' filepath='drivers/usb/host/xhci.h' line='1798' column='1'/> + <var-decl name='scratchpad' type-id='33e2a135' visibility='default' filepath='drivers/usb/host/xhci.h' line='1801' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3392'> - <var-decl name='lpm_failed_devs' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1800' column='1'/> + <var-decl name='lpm_failed_devs' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1803' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3520'> - <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1804' column='1'/> + <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1807' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3776'> - <var-decl name='lpm_command' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1806' column='1'/> + <var-decl name='lpm_command' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1809' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3840'> - <var-decl name='devs' type-id='5b466593' visibility='default' filepath='drivers/usb/host/xhci.h' line='1808' column='1'/> + <var-decl name='devs' type-id='5b466593' visibility='default' filepath='drivers/usb/host/xhci.h' line='1811' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20224'> - <var-decl name='rh_bw' type-id='69f4bad3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1810' column='1'/> + <var-decl name='rh_bw' type-id='69f4bad3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1813' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20288'> - <var-decl name='device_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1813' column='1'/> + <var-decl name='device_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1816' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20352'> - <var-decl name='segment_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1814' column='1'/> + <var-decl name='segment_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1817' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20416'> - <var-decl name='small_streams_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1815' column='1'/> + <var-decl name='small_streams_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1818' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20480'> - <var-decl name='medium_streams_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1816' column='1'/> + <var-decl name='medium_streams_pool' type-id='ab33c616' visibility='default' filepath='drivers/usb/host/xhci.h' line='1819' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20544'> - <var-decl name='xhc_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1819' column='1'/> + <var-decl name='xhc_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1822' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20576'> - <var-decl name='command' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1821' column='1'/> + <var-decl name='command' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1824' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20608'> - <var-decl name='s3' type-id='369534b9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1822' column='1'/> + <var-decl name='s3' type-id='369534b9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1825' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='20992'> - <var-decl name='quirks' type-id='3a47d82b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1838' column='1'/> + <var-decl name='quirks' type-id='3a47d82b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1841' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='21056'> - <var-decl name='num_active_eps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1887' column='1'/> + <var-decl name='num_active_eps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1890' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='21088'> - <var-decl name='limit_active_eps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1888' column='1'/> + <var-decl name='limit_active_eps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1891' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='21120'> - <var-decl name='bus_state' type-id='019ea9c2' visibility='default' filepath='drivers/usb/host/xhci.h' line='1890' column='1'/> + <var-decl name='bus_state' type-id='019ea9c2' visibility='default' filepath='drivers/usb/host/xhci.h' line='1893' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='41728'> - <var-decl name='hw_ports' type-id='4add39c5' visibility='default' filepath='drivers/usb/host/xhci.h' line='1891' column='1'/> + <var-decl name='hw_ports' type-id='4add39c5' visibility='default' filepath='drivers/usb/host/xhci.h' line='1894' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='41792'> - <var-decl name='usb2_rhub' type-id='d2c7a2c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1892' column='1'/> + <var-decl name='usb2_rhub' type-id='d2c7a2c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1895' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42048'> - <var-decl name='usb3_rhub' type-id='d2c7a2c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1893' column='1'/> + <var-decl name='usb3_rhub' type-id='d2c7a2c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1896' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sw_lpm_support' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1895' column='1'/> + <var-decl name='sw_lpm_support' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1898' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='hw_lpm_support' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1897' column='1'/> + <var-decl name='hw_lpm_support' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1900' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='broken_suspend' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1899' column='1'/> + <var-decl name='broken_suspend' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1902' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42368'> - <var-decl name='ext_caps' type-id='f9409001' visibility='default' filepath='drivers/usb/host/xhci.h' line='1901' column='1'/> + <var-decl name='ext_caps' type-id='f9409001' visibility='default' filepath='drivers/usb/host/xhci.h' line='1904' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42432'> - <var-decl name='num_ext_caps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1902' column='1'/> + <var-decl name='num_ext_caps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1905' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42496'> - <var-decl name='port_caps' type-id='aae3718c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1904' column='1'/> + <var-decl name='port_caps' type-id='aae3718c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1907' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42560'> - <var-decl name='num_port_caps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1905' column='1'/> + <var-decl name='num_port_caps' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1908' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='42624'> - <var-decl name='comp_mode_recovery_timer' type-id='abe41e67' visibility='default' filepath='drivers/usb/host/xhci.h' line='1907' column='1'/> + <var-decl name='comp_mode_recovery_timer' type-id='abe41e67' visibility='default' filepath='drivers/usb/host/xhci.h' line='1910' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43072'> - <var-decl name='port_status_u0' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1908' column='1'/> + <var-decl name='port_status_u0' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1911' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43104'> - <var-decl name='test_mode' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1909' column='1'/> + <var-decl name='test_mode' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1912' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43136'> - <var-decl name='debugfs_root' type-id='27675065' visibility='default' filepath='drivers/usb/host/xhci.h' line='1913' column='1'/> + <var-decl name='debugfs_root' type-id='27675065' visibility='default' filepath='drivers/usb/host/xhci.h' line='1916' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43200'> - <var-decl name='debugfs_slots' type-id='27675065' visibility='default' filepath='drivers/usb/host/xhci.h' line='1914' column='1'/> + <var-decl name='debugfs_slots' type-id='27675065' visibility='default' filepath='drivers/usb/host/xhci.h' line='1917' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43264'> - <var-decl name='regset_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1915' column='1'/> + <var-decl name='regset_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1918' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43392'> - <var-decl name='dbc' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1917' column='1'/> + <var-decl name='dbc' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1920' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='43456'> - <var-decl name='priv' type-id='c99b5ecd' visibility='default' filepath='drivers/usb/host/xhci.h' line='1919' column='1'/> + <var-decl name='priv' type-id='c99b5ecd' visibility='default' filepath='drivers/usb/host/xhci.h' line='1922' column='1'/> </data-member> </class-decl> <class-decl name='xhci_cap_regs' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='50' column='1' id='c38207f0'> @@ -109162,176 +109174,176 @@ </data-member> </class-decl> <typedef-decl name='__le64' type-id='d3130597' filepath='include/uapi/linux/types.h' line='33' column='1' id='a30e8d1f'/> - <class-decl name='xhci_run_regs' size-in-bits='33024' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='530' column='1' id='451804f7'> + <class-decl name='xhci_run_regs' size-in-bits='33024' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='533' column='1' id='451804f7'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='microframe_index' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='531' column='1'/> + <var-decl name='microframe_index' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='534' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='rsvd' type-id='e369592a' visibility='default' filepath='drivers/usb/host/xhci.h' line='532' column='1'/> + <var-decl name='rsvd' type-id='e369592a' visibility='default' filepath='drivers/usb/host/xhci.h' line='535' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='ir_set' type-id='6cdfafe7' visibility='default' filepath='drivers/usb/host/xhci.h' line='533' column='1'/> + <var-decl name='ir_set' type-id='6cdfafe7' visibility='default' filepath='drivers/usb/host/xhci.h' line='536' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_intr_reg' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='480' column='1' id='88aa5216'> + <class-decl name='xhci_intr_reg' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='483' column='1' id='88aa5216'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='irq_pending' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='481' column='1'/> + <var-decl name='irq_pending' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='484' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='irq_control' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='482' column='1'/> + <var-decl name='irq_control' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='485' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='erst_size' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='483' column='1'/> + <var-decl name='erst_size' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='486' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='rsvd' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='484' column='1'/> + <var-decl name='rsvd' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='487' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='erst_base' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='485' column='1'/> + <var-decl name='erst_base' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='488' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='erst_dequeue' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='486' column='1'/> + <var-decl name='erst_dequeue' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='489' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_doorbell_array' size-in-bits='8192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='545' column='1' id='63b99761'> + <class-decl name='xhci_doorbell_array' size-in-bits='8192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='548' column='1' id='63b99761'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='doorbell' type-id='8e6dd4be' visibility='default' filepath='drivers/usb/host/xhci.h' line='546' column='1'/> + <var-decl name='doorbell' type-id='8e6dd4be' visibility='default' filepath='drivers/usb/host/xhci.h' line='549' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_device_context_array' size-in-bits='16448' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1056' column='1' id='7848dffe'> + <class-decl name='xhci_device_context_array' size-in-bits='16448' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1059' column='1' id='7848dffe'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='dev_context_ptrs' type-id='fad2e2f3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1058' column='1'/> + <var-decl name='dev_context_ptrs' type-id='fad2e2f3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1061' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='16384'> - <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1060' column='1'/> + <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1063' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_ring' size-in-bits='832' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1590' column='1' id='df67c5d0'> + <class-decl name='xhci_ring' size-in-bits='832' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1593' column='1' id='df67c5d0'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='first_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1591' column='1'/> + <var-decl name='first_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1594' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='last_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1592' column='1'/> + <var-decl name='last_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1595' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='enqueue' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1593' column='1'/> + <var-decl name='enqueue' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1596' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='enq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1594' column='1'/> + <var-decl name='enq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1597' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='dequeue' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1595' column='1'/> + <var-decl name='dequeue' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1598' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='deq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1596' column='1'/> + <var-decl name='deq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1599' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='td_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1597' column='1'/> + <var-decl name='td_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1600' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='cycle_state' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1603' column='1'/> + <var-decl name='cycle_state' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1606' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='544'> - <var-decl name='stream_id' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1604' column='1'/> + <var-decl name='stream_id' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1607' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='num_segs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1605' column='1'/> + <var-decl name='num_segs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1608' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='num_trbs_free' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1606' column='1'/> + <var-decl name='num_trbs_free' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1609' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='num_trbs_free_temp' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1607' column='1'/> + <var-decl name='num_trbs_free_temp' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1610' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='672'> - <var-decl name='bounce_buf_len' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1608' column='1'/> + <var-decl name='bounce_buf_len' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1611' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='type' type-id='b61681fc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1609' column='1'/> + <var-decl name='type' type-id='b61681fc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1612' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='736'> - <var-decl name='last_td_was_short' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='1610' column='1'/> + <var-decl name='last_td_was_short' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='1613' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='trb_address_map' type-id='3cc57427' visibility='default' filepath='drivers/usb/host/xhci.h' line='1611' column='1'/> + <var-decl name='trb_address_map' type-id='3cc57427' visibility='default' filepath='drivers/usb/host/xhci.h' line='1614' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_segment' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1518' column='1' id='56e9279b'> + <class-decl name='xhci_segment' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1521' column='1' id='56e9279b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='trbs' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1519' column='1'/> + <var-decl name='trbs' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='1522' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='next' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1521' column='1'/> + <var-decl name='next' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1524' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1522' column='1'/> + <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1525' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='bounce_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1524' column='1'/> + <var-decl name='bounce_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1527' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='bounce_buf' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1525' column='1'/> + <var-decl name='bounce_buf' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1528' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='bounce_offs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1526' column='1'/> + <var-decl name='bounce_offs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='bounce_len' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1527' column='1'/> + <var-decl name='bounce_len' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1530' column='1'/> </data-member> </class-decl> - <union-decl name='xhci_trb' size-in-bits='128' visibility='default' filepath='drivers/usb/host/xhci.h' line='1334' column='1' id='73956807'> + <union-decl name='xhci_trb' size-in-bits='128' visibility='default' filepath='drivers/usb/host/xhci.h' line='1337' column='1' id='73956807'> <data-member access='public'> - <var-decl name='link' type-id='80702149' visibility='default' filepath='drivers/usb/host/xhci.h' line='1335' column='1'/> + <var-decl name='link' type-id='80702149' visibility='default' filepath='drivers/usb/host/xhci.h' line='1338' column='1'/> </data-member> <data-member access='public'> - <var-decl name='trans_event' type-id='b913a5e6' visibility='default' filepath='drivers/usb/host/xhci.h' line='1336' column='1'/> + <var-decl name='trans_event' type-id='b913a5e6' visibility='default' filepath='drivers/usb/host/xhci.h' line='1339' column='1'/> </data-member> <data-member access='public'> - <var-decl name='event_cmd' type-id='e5ddb711' visibility='default' filepath='drivers/usb/host/xhci.h' line='1337' column='1'/> + <var-decl name='event_cmd' type-id='e5ddb711' visibility='default' filepath='drivers/usb/host/xhci.h' line='1340' column='1'/> </data-member> <data-member access='public'> - <var-decl name='generic' type-id='c74233fc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1338' column='1'/> + <var-decl name='generic' type-id='c74233fc' visibility='default' filepath='drivers/usb/host/xhci.h' line='1341' column='1'/> </data-member> </union-decl> - <class-decl name='xhci_link_trb' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1204' column='1' id='80702149'> + <class-decl name='xhci_link_trb' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1207' column='1' id='80702149'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='segment_ptr' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1206' column='1'/> + <var-decl name='segment_ptr' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1209' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='intr_target' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1207' column='1'/> + <var-decl name='intr_target' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1210' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='control' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1208' column='1'/> + <var-decl name='control' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1211' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_transfer_event' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1069' column='1' id='b913a5e6'> + <class-decl name='xhci_transfer_event' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1072' column='1' id='b913a5e6'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='buffer' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1071' column='1'/> + <var-decl name='buffer' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1074' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='transfer_len' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1072' column='1'/> + <var-decl name='transfer_len' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1075' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='flags' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1074' column='1'/> + <var-decl name='flags' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1077' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_event_cmd' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1215' column='1' id='e5ddb711'> + <class-decl name='xhci_event_cmd' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1218' column='1' id='e5ddb711'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='cmd_trb' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1217' column='1'/> + <var-decl name='cmd_trb' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1220' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='status' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1218' column='1'/> + <var-decl name='status' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1221' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='flags' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1219' column='1'/> + <var-decl name='flags' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1222' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_generic_trb' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1330' column='1' id='c74233fc'> + <class-decl name='xhci_generic_trb' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1333' column='1' id='c74233fc'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='field' type-id='a36b3301' visibility='default' filepath='drivers/usb/host/xhci.h' line='1331' column='1'/> + <var-decl name='field' type-id='a36b3301' visibility='default' filepath='drivers/usb/host/xhci.h' line='1334' column='1'/> </data-member> </class-decl> - <enum-decl name='xhci_ring_type' filepath='drivers/usb/host/xhci.h' line='1558' column='1' id='b61681fc'> + <enum-decl name='xhci_ring_type' filepath='drivers/usb/host/xhci.h' line='1561' column='1' id='b61681fc'> <underlying-type type-id='9cac1fee'/> <enumerator name='TYPE_CTRL' value='0'/> <enumerator name='TYPE_ISOC' value='1'/> @@ -109341,369 +109353,369 @@ <enumerator name='TYPE_COMMAND' value='5'/> <enumerator name='TYPE_EVENT' value='6'/> </enum-decl> - <class-decl name='xhci_command' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='801' column='1' id='464bcd6b'> + <class-decl name='xhci_command' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='804' column='1' id='464bcd6b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='in_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='803' column='1'/> + <var-decl name='in_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='806' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='status' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='804' column='1'/> + <var-decl name='status' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='807' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='slot_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='805' column='1'/> + <var-decl name='slot_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='808' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='completion' type-id='389faaf7' visibility='default' filepath='drivers/usb/host/xhci.h' line='809' column='1'/> + <var-decl name='completion' type-id='389faaf7' visibility='default' filepath='drivers/usb/host/xhci.h' line='812' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='command_trb' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='810' column='1'/> + <var-decl name='command_trb' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='813' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='cmd_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='811' column='1'/> + <var-decl name='cmd_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='814' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_container_ctx' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='594' column='1' id='e03e0a67'> + <class-decl name='xhci_container_ctx' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='597' column='1' id='e03e0a67'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='type' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='595' column='1'/> + <var-decl name='type' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='598' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='size' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='599' column='1'/> + <var-decl name='size' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='602' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='bytes' type-id='8bff8096' visibility='default' filepath='drivers/usb/host/xhci.h' line='601' column='1'/> + <var-decl name='bytes' type-id='8bff8096' visibility='default' filepath='drivers/usb/host/xhci.h' line='604' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='602' column='1'/> + <var-decl name='dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='605' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_erst' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1622' column='1' id='c86369aa'> + <class-decl name='xhci_erst' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1625' column='1' id='c86369aa'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='entries' type-id='78faece1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1623' column='1'/> + <var-decl name='entries' type-id='78faece1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1626' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='num_entries' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1624' column='1'/> + <var-decl name='num_entries' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1627' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='erst_dma_addr' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1626' column='1'/> + <var-decl name='erst_dma_addr' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1629' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='erst_size' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1628' column='1'/> + <var-decl name='erst_size' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1631' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_erst_entry' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1614' column='1' id='cf081899'> + <class-decl name='xhci_erst_entry' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1617' column='1' id='cf081899'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='seg_addr' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1616' column='1'/> + <var-decl name='seg_addr' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1619' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='seg_size' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1617' column='1'/> + <var-decl name='seg_size' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1620' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='rsvd' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1619' column='1'/> + <var-decl name='rsvd' type-id='2f162548' visibility='default' filepath='drivers/usb/host/xhci.h' line='1622' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_scratchpad' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1631' column='1' id='656561a5'> + <class-decl name='xhci_scratchpad' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1634' column='1' id='656561a5'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sp_array' type-id='3df9fd28' visibility='default' filepath='drivers/usb/host/xhci.h' line='1632' column='1'/> + <var-decl name='sp_array' type-id='3df9fd28' visibility='default' filepath='drivers/usb/host/xhci.h' line='1635' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='sp_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1633' column='1'/> + <var-decl name='sp_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='1636' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='sp_buffers' type-id='63e171df' visibility='default' filepath='drivers/usb/host/xhci.h' line='1634' column='1'/> + <var-decl name='sp_buffers' type-id='63e171df' visibility='default' filepath='drivers/usb/host/xhci.h' line='1637' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_virt_device' size-in-bits='46208' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='996' column='1' id='7607667c'> + <class-decl name='xhci_virt_device' size-in-bits='46208' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='999' column='1' id='7607667c'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='udev' type-id='25e60cb2' visibility='default' filepath='drivers/usb/host/xhci.h' line='997' column='1'/> + <var-decl name='udev' type-id='25e60cb2' visibility='default' filepath='drivers/usb/host/xhci.h' line='1000' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='out_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1006' column='1'/> + <var-decl name='out_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1009' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='in_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1008' column='1'/> + <var-decl name='in_ctx' type-id='971e404f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1011' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='eps' type-id='cec4db9b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1009' column='1'/> + <var-decl name='eps' type-id='cec4db9b' visibility='default' filepath='drivers/usb/host/xhci.h' line='1012' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='45824'> - <var-decl name='fake_port' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1010' column='1'/> + <var-decl name='fake_port' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1013' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='45832'> - <var-decl name='real_port' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1011' column='1'/> + <var-decl name='real_port' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1014' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='45888'> - <var-decl name='bw_table' type-id='86f7f60e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1012' column='1'/> + <var-decl name='bw_table' type-id='86f7f60e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1015' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='45952'> - <var-decl name='tt_info' type-id='997bd29d' visibility='default' filepath='drivers/usb/host/xhci.h' line='1013' column='1'/> + <var-decl name='tt_info' type-id='997bd29d' visibility='default' filepath='drivers/usb/host/xhci.h' line='1016' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='46016'> - <var-decl name='flags' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1020' column='1'/> + <var-decl name='flags' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1023' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='46080'> - <var-decl name='current_mel' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1024' column='1'/> + <var-decl name='current_mel' type-id='1dc6a898' visibility='default' filepath='drivers/usb/host/xhci.h' line='1027' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='46144'> - <var-decl name='debugfs_private' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1026' column='1'/> + <var-decl name='debugfs_private' type-id='eaa32e2f' visibility='default' filepath='drivers/usb/host/xhci.h' line='1029' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_virt_ep' size-in-bits='1472' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='920' column='1' id='72a973b7'> + <class-decl name='xhci_virt_ep' size-in-bits='1472' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='923' column='1' id='72a973b7'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='921' column='1'/> + <var-decl name='ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='924' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='stream_info' type-id='46446973' visibility='default' filepath='drivers/usb/host/xhci.h' line='923' column='1'/> + <var-decl name='stream_info' type-id='46446973' visibility='default' filepath='drivers/usb/host/xhci.h' line='926' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='new_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='927' column='1'/> + <var-decl name='new_ring' type-id='52a50596' visibility='default' filepath='drivers/usb/host/xhci.h' line='930' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ep_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='928' column='1'/> + <var-decl name='ep_state' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='931' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='cancelled_td_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='940' column='1'/> + <var-decl name='cancelled_td_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='943' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='stop_cmd_timer' type-id='abe41e67' visibility='default' filepath='drivers/usb/host/xhci.h' line='942' column='1'/> + <var-decl name='stop_cmd_timer' type-id='abe41e67' visibility='default' filepath='drivers/usb/host/xhci.h' line='945' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='xhci' type-id='0c65b409' visibility='default' filepath='drivers/usb/host/xhci.h' line='943' column='1'/> + <var-decl name='xhci' type-id='0c65b409' visibility='default' filepath='drivers/usb/host/xhci.h' line='946' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='queued_deq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='948' column='1'/> + <var-decl name='queued_deq_seg' type-id='9689f21b' visibility='default' filepath='drivers/usb/host/xhci.h' line='951' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='queued_deq_ptr' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='949' column='1'/> + <var-decl name='queued_deq_ptr' type-id='2e0bb6d4' visibility='default' filepath='drivers/usb/host/xhci.h' line='952' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='skip' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='957' column='1'/> + <var-decl name='skip' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='960' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1056'> - <var-decl name='bw_info' type-id='0acb8a06' visibility='default' filepath='drivers/usb/host/xhci.h' line='959' column='1'/> + <var-decl name='bw_info' type-id='0acb8a06' visibility='default' filepath='drivers/usb/host/xhci.h' line='962' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='bw_endpoint_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='960' column='1'/> + <var-decl name='bw_endpoint_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='963' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='next_frame_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='962' column='1'/> + <var-decl name='next_frame_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='965' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1440'> - <var-decl name='use_extended_tbc' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='964' column='1'/> + <var-decl name='use_extended_tbc' type-id='b50a4934' visibility='default' filepath='drivers/usb/host/xhci.h' line='967' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_stream_info' size-in-bits='512' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='841' column='1' id='f4fc11c3'> + <class-decl name='xhci_stream_info' size-in-bits='512' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='844' column='1' id='f4fc11c3'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='stream_rings' type-id='d5c806f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='842' column='1'/> + <var-decl name='stream_rings' type-id='d5c806f4' visibility='default' filepath='drivers/usb/host/xhci.h' line='845' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='num_streams' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='844' column='1'/> + <var-decl name='num_streams' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='847' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='stream_ctx_array' type-id='f0bcc466' visibility='default' filepath='drivers/usb/host/xhci.h' line='848' column='1'/> + <var-decl name='stream_ctx_array' type-id='f0bcc466' visibility='default' filepath='drivers/usb/host/xhci.h' line='851' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='num_stream_ctxs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='849' column='1'/> + <var-decl name='num_stream_ctxs' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='852' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='ctx_array_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='850' column='1'/> + <var-decl name='ctx_array_dma' type-id='cf29c9b3' visibility='default' filepath='drivers/usb/host/xhci.h' line='853' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='trb_address_map' type-id='1c8dedcf' visibility='default' filepath='drivers/usb/host/xhci.h' line='852' column='1'/> + <var-decl name='trb_address_map' type-id='1c8dedcf' visibility='default' filepath='drivers/usb/host/xhci.h' line='855' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='free_streams_command' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='853' column='1'/> + <var-decl name='free_streams_command' type-id='5a32bd4b' visibility='default' filepath='drivers/usb/host/xhci.h' line='856' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_stream_ctx' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='819' column='1' id='3d90a2b0'> + <class-decl name='xhci_stream_ctx' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='822' column='1' id='3d90a2b0'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='stream_ring' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='821' column='1'/> + <var-decl name='stream_ring' type-id='a30e8d1f' visibility='default' filepath='drivers/usb/host/xhci.h' line='824' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='reserved' type-id='df700ea3' visibility='default' filepath='drivers/usb/host/xhci.h' line='823' column='1'/> + <var-decl name='reserved' type-id='df700ea3' visibility='default' filepath='drivers/usb/host/xhci.h' line='826' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_bw_info' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='865' column='1' id='0acb8a06'> + <class-decl name='xhci_bw_info' size-in-bits='192' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='868' column='1' id='0acb8a06'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ep_interval' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='867' column='1'/> + <var-decl name='ep_interval' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='870' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='mult' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='869' column='1'/> + <var-decl name='mult' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='872' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='num_packets' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='870' column='1'/> + <var-decl name='num_packets' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='873' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='max_packet_size' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='871' column='1'/> + <var-decl name='max_packet_size' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='874' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='max_esit_payload' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='872' column='1'/> + <var-decl name='max_esit_payload' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='875' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='type' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='873' column='1'/> + <var-decl name='type' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='876' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_interval_bw_table' size-in-bits='5312' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='985' column='1' id='2acb65d8'> + <class-decl name='xhci_interval_bw_table' size-in-bits='5312' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='988' column='1' id='2acb65d8'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='interval0_esit_payload' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='986' column='1'/> + <var-decl name='interval0_esit_payload' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='989' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='interval_bw' type-id='a234b4c6' visibility='default' filepath='drivers/usb/host/xhci.h' line='987' column='1'/> + <var-decl name='interval_bw' type-id='a234b4c6' visibility='default' filepath='drivers/usb/host/xhci.h' line='990' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5184'> - <var-decl name='bw_used' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='989' column='1'/> + <var-decl name='bw_used' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='992' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5216'> - <var-decl name='ss_bw_in' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='990' column='1'/> + <var-decl name='ss_bw_in' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='993' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5248'> - <var-decl name='ss_bw_out' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='991' column='1'/> + <var-decl name='ss_bw_out' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='994' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_interval_bw' size-in-bits='320' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='973' column='1' id='35bbecb3'> + <class-decl name='xhci_interval_bw' size-in-bits='320' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='976' column='1' id='35bbecb3'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='num_packets' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='974' column='1'/> + <var-decl name='num_packets' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='977' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='endpoints' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='978' column='1'/> + <var-decl name='endpoints' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='981' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='overhead' type-id='0955670c' visibility='default' filepath='drivers/usb/host/xhci.h' line='980' column='1'/> + <var-decl name='overhead' type-id='0955670c' visibility='default' filepath='drivers/usb/host/xhci.h' line='983' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_tt_bw_info' size-in-bits='5568' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1043' column='1' id='3e02e52d'> + <class-decl name='xhci_tt_bw_info' size-in-bits='5568' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1046' column='1' id='3e02e52d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tt_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1044' column='1'/> + <var-decl name='tt_list' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1047' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='slot_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1045' column='1'/> + <var-decl name='slot_id' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1048' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='ttport' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1046' column='1'/> + <var-decl name='ttport' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1049' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='bw_table' type-id='2acb65d8' visibility='default' filepath='drivers/usb/host/xhci.h' line='1047' column='1'/> + <var-decl name='bw_table' type-id='2acb65d8' visibility='default' filepath='drivers/usb/host/xhci.h' line='1050' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='active_eps' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1048' column='1'/> + <var-decl name='active_eps' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1051' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_root_port_bw_info' size-in-bits='5504' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1037' column='1' id='9b863e03'> + <class-decl name='xhci_root_port_bw_info' size-in-bits='5504' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1040' column='1' id='9b863e03'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tts' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1038' column='1'/> + <var-decl name='tts' type-id='72f469ec' visibility='default' filepath='drivers/usb/host/xhci.h' line='1041' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='num_active_tts' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1039' column='1'/> + <var-decl name='num_active_tts' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1042' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='bw_table' type-id='2acb65d8' visibility='default' filepath='drivers/usb/host/xhci.h' line='1040' column='1'/> + <var-decl name='bw_table' type-id='2acb65d8' visibility='default' filepath='drivers/usb/host/xhci.h' line='1043' column='1'/> </data-member> </class-decl> - <class-decl name='s3_save' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1659' column='1' id='369534b9'> + <class-decl name='s3_save' size-in-bits='384' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1662' column='1' id='369534b9'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='command' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1660' column='1'/> + <var-decl name='command' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1663' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='dev_nt' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1661' column='1'/> + <var-decl name='dev_nt' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1664' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='dcbaa_ptr' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1662' column='1'/> + <var-decl name='dcbaa_ptr' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1665' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='config_reg' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1663' column='1'/> + <var-decl name='config_reg' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1666' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='irq_pending' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1664' column='1'/> + <var-decl name='irq_pending' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1667' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='irq_control' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1665' column='1'/> + <var-decl name='irq_control' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1668' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='erst_size' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1666' column='1'/> + <var-decl name='erst_size' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1669' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='erst_base' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1667' column='1'/> + <var-decl name='erst_base' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1670' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='erst_dequeue' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1668' column='1'/> + <var-decl name='erst_dequeue' type-id='91ce1af9' visibility='default' filepath='drivers/usb/host/xhci.h' line='1671' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_bus_state' size-in-bits='10304' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1677' column='1' id='d9e4295a'> + <class-decl name='xhci_bus_state' size-in-bits='10304' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1680' column='1' id='d9e4295a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='bus_suspended' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1678' column='1'/> + <var-decl name='bus_suspended' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1681' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='next_statechange' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1679' column='1'/> + <var-decl name='next_statechange' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1682' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='port_c_suspend' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1683' column='1'/> + <var-decl name='port_c_suspend' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1686' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='suspended_ports' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1684' column='1'/> + <var-decl name='suspended_ports' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1687' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='port_remote_wakeup' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1685' column='1'/> + <var-decl name='port_remote_wakeup' type-id='19c2251e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1688' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='resume_done' type-id='bc3d3491' visibility='default' filepath='drivers/usb/host/xhci.h' line='1686' column='1'/> + <var-decl name='resume_done' type-id='bc3d3491' visibility='default' filepath='drivers/usb/host/xhci.h' line='1689' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='resuming_ports' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1688' column='1'/> + <var-decl name='resuming_ports' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1691' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='rexit_ports' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1690' column='1'/> + <var-decl name='rexit_ports' type-id='7359adad' visibility='default' filepath='drivers/usb/host/xhci.h' line='1693' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='rexit_done' type-id='fb518993' visibility='default' filepath='drivers/usb/host/xhci.h' line='1691' column='1'/> + <var-decl name='rexit_done' type-id='fb518993' visibility='default' filepath='drivers/usb/host/xhci.h' line='1694' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_port' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1717' column='1' id='7f16b755'> + <class-decl name='xhci_port' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1720' column='1' id='7f16b755'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='addr' type-id='3e77f659' visibility='default' filepath='drivers/usb/host/xhci.h' line='1718' column='1'/> + <var-decl name='addr' type-id='3e77f659' visibility='default' filepath='drivers/usb/host/xhci.h' line='1721' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='hw_portnum' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1719' column='1'/> + <var-decl name='hw_portnum' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1722' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='hcd_portnum' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1720' column='1'/> + <var-decl name='hcd_portnum' type-id='95e97e5e' visibility='default' filepath='drivers/usb/host/xhci.h' line='1723' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rhub' type-id='c39cf839' visibility='default' filepath='drivers/usb/host/xhci.h' line='1721' column='1'/> + <var-decl name='rhub' type-id='c39cf839' visibility='default' filepath='drivers/usb/host/xhci.h' line='1724' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='port_cap' type-id='aae3718c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1722' column='1'/> + <var-decl name='port_cap' type-id='aae3718c' visibility='default' filepath='drivers/usb/host/xhci.h' line='1725' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_hub' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1725' column='1' id='d2c7a2c1'> + <class-decl name='xhci_hub' size-in-bits='256' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1728' column='1' id='d2c7a2c1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ports' type-id='c942333d' visibility='default' filepath='drivers/usb/host/xhci.h' line='1726' column='1'/> + <var-decl name='ports' type-id='c942333d' visibility='default' filepath='drivers/usb/host/xhci.h' line='1729' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='num_ports' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1727' column='1'/> + <var-decl name='num_ports' type-id='f0981eeb' visibility='default' filepath='drivers/usb/host/xhci.h' line='1730' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1728' column='1'/> + <var-decl name='hcd' type-id='fc4f83c1' visibility='default' filepath='drivers/usb/host/xhci.h' line='1731' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='maj_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1730' column='1'/> + <var-decl name='maj_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1733' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='200'> - <var-decl name='min_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1731' column='1'/> + <var-decl name='min_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1734' column='1'/> </data-member> </class-decl> - <class-decl name='xhci_port_cap' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1709' column='1' id='644441a6'> + <class-decl name='xhci_port_cap' size-in-bits='128' is-struct='yes' visibility='default' filepath='drivers/usb/host/xhci.h' line='1712' column='1' id='644441a6'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='psi' type-id='f9409001' visibility='default' filepath='drivers/usb/host/xhci.h' line='1710' column='1'/> + <var-decl name='psi' type-id='f9409001' visibility='default' filepath='drivers/usb/host/xhci.h' line='1713' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='psi_count' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1711' column='1'/> + <var-decl name='psi_count' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1714' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='72'> - <var-decl name='psi_uid_count' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1712' column='1'/> + <var-decl name='psi_uid_count' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1715' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='80'> - <var-decl name='maj_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1713' column='1'/> + <var-decl name='maj_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1716' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='88'> - <var-decl name='min_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1714' column='1'/> + <var-decl name='min_rev' type-id='f9b06939' visibility='default' filepath='drivers/usb/host/xhci.h' line='1717' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='2f162548' size-in-bits='64' id='3e77f659'/> @@ -109742,22 +109754,22 @@ <parameter type-id='fc4f83c1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='xhci_init_driver' mangled-name='xhci_init_driver' filepath='drivers/usb/host/xhci.h' line='2081' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_init_driver'> + <function-decl name='xhci_init_driver' mangled-name='xhci_init_driver' filepath='drivers/usb/host/xhci.h' line='2084' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_init_driver'> <parameter type-id='c07d5ba3'/> <parameter type-id='9a55ba3d'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='xhci_suspend' mangled-name='xhci_suspend' filepath='drivers/usb/host/xhci.h' line='2086' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_suspend'> + <function-decl name='xhci_suspend' mangled-name='xhci_suspend' filepath='drivers/usb/host/xhci.h' line='2089' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_suspend'> <parameter type-id='0c65b409'/> <parameter type-id='c894953d'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='xhci_resume' mangled-name='xhci_resume' filepath='drivers/usb/host/xhci.h' line='2087' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_resume'> + <function-decl name='xhci_resume' mangled-name='xhci_resume' filepath='drivers/usb/host/xhci.h' line='2090' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_resume'> <parameter type-id='0c65b409'/> <parameter type-id='c894953d'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='xhci_gen_setup' mangled-name='xhci_gen_setup' filepath='drivers/usb/host/xhci.h' line='2079' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_gen_setup'> + <function-decl name='xhci_gen_setup' mangled-name='xhci_gen_setup' filepath='drivers/usb/host/xhci.h' line='2082' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_gen_setup'> <parameter type-id='fc4f83c1'/> <parameter type-id='da11b16a'/> <return type-id='95e97e5e'/> @@ -109769,8 +109781,8 @@ </function-type> </abi-instr> <abi-instr address-size='64' path='drivers/usb/host/xhci.c' language='LANG_C89'> - <function-decl name='xhci_run' mangled-name='xhci_run' filepath='drivers/usb/host/xhci.c' line='666' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_run'> - <parameter type-id='fc4f83c1' name='hcd' filepath='drivers/usb/host/xhci.c' line='666' column='1'/> + <function-decl name='xhci_run' mangled-name='xhci_run' filepath='drivers/usb/host/xhci.c' line='665' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='xhci_run'> + <parameter type-id='fc4f83c1' name='hcd' filepath='drivers/usb/host/xhci.c' line='665' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -110546,9 +110558,9 @@ <pointer-type-def type-id='eca93177' size-in-bits='64' id='5d33005f'/> <pointer-type-def type-id='57bfbe05' size-in-bits='64' id='09dbca85'/> <pointer-type-def type-id='345f1a5f' size-in-bits='64' id='2227a3ab'/> - <function-decl name='typec_register_port' mangled-name='typec_register_port' filepath='drivers/usb/typec/class.c' line='1545' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_register_port'> - <parameter type-id='fa0b179b' name='parent' filepath='drivers/usb/typec/class.c' line='1545' column='1'/> - <parameter type-id='287e28ea' name='cap' filepath='drivers/usb/typec/class.c' line='1546' column='1'/> + <function-decl name='typec_register_port' mangled-name='typec_register_port' filepath='drivers/usb/typec/class.c' line='1546' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_register_port'> + <parameter type-id='fa0b179b' name='parent' filepath='drivers/usb/typec/class.c' line='1546' column='1'/> + <parameter type-id='287e28ea' name='cap' filepath='drivers/usb/typec/class.c' line='1547' column='1'/> <return type-id='b977ca56'/> </function-decl> <function-decl name='typec_altmode_update_active' mangled-name='typec_altmode_update_active' filepath='drivers/usb/typec/class.c' line='292' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_altmode_update_active'> @@ -110598,35 +110610,35 @@ <parameter type-id='44ea1984' name='opmode' filepath='drivers/usb/typec/class.c' line='1380' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='typec_find_port_power_role' mangled-name='typec_find_port_power_role' filepath='drivers/usb/typec/class.c' line='1414' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_power_role'> - <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1414' column='1'/> + <function-decl name='typec_find_port_power_role' mangled-name='typec_find_port_power_role' filepath='drivers/usb/typec/class.c' line='1415' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_power_role'> + <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1415' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='typec_find_power_role' mangled-name='typec_find_power_role' filepath='drivers/usb/typec/class.c' line='1429' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_power_role'> - <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1429' column='1'/> + <function-decl name='typec_find_power_role' mangled-name='typec_find_power_role' filepath='drivers/usb/typec/class.c' line='1430' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_power_role'> + <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1430' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='typec_find_port_data_role' mangled-name='typec_find_port_data_role' filepath='drivers/usb/typec/class.c' line='1443' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_data_role'> - <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1443' column='1'/> + <function-decl name='typec_find_port_data_role' mangled-name='typec_find_port_data_role' filepath='drivers/usb/typec/class.c' line='1444' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_data_role'> + <parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1444' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='typec_set_orientation' mangled-name='typec_set_orientation' filepath='drivers/usb/typec/class.c' line='1460' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_set_orientation'> - <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1460' column='1'/> - <parameter type-id='131b0a9c' name='orientation' filepath='drivers/usb/typec/class.c' line='1461' column='1'/> + <function-decl name='typec_set_orientation' mangled-name='typec_set_orientation' filepath='drivers/usb/typec/class.c' line='1461' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_set_orientation'> + <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1461' column='1'/> + <parameter type-id='131b0a9c' name='orientation' filepath='drivers/usb/typec/class.c' line='1462' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='typec_set_mode' mangled-name='typec_set_mode' filepath='drivers/usb/typec/class.c' line='1497' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_set_mode'> - <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1497' column='1'/> - <parameter type-id='95e97e5e' name='mode' filepath='drivers/usb/typec/class.c' line='1497' column='1'/> + <function-decl name='typec_set_mode' mangled-name='typec_set_mode' filepath='drivers/usb/typec/class.c' line='1498' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_set_mode'> + <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1498' column='1'/> + <parameter type-id='95e97e5e' name='mode' filepath='drivers/usb/typec/class.c' line='1498' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='typec_port_register_altmode' mangled-name='typec_port_register_altmode' filepath='drivers/usb/typec/class.c' line='1516' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_port_register_altmode'> - <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1516' column='1'/> - <parameter type-id='064c3738' name='desc' filepath='drivers/usb/typec/class.c' line='1517' column='1'/> + <function-decl name='typec_port_register_altmode' mangled-name='typec_port_register_altmode' filepath='drivers/usb/typec/class.c' line='1517' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_port_register_altmode'> + <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1517' column='1'/> + <parameter type-id='064c3738' name='desc' filepath='drivers/usb/typec/class.c' line='1518' column='1'/> <return type-id='02913b69'/> </function-decl> - <function-decl name='typec_unregister_port' mangled-name='typec_unregister_port' filepath='drivers/usb/typec/class.c' line='1640' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_unregister_port'> - <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1640' column='1'/> + <function-decl name='typec_unregister_port' mangled-name='typec_unregister_port' filepath='drivers/usb/typec/class.c' line='1641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_unregister_port'> + <parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1641' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-type size-in-bits='64' id='307c65d0'> @@ -112103,7 +112115,7 @@ <parameter type-id='eaa32e2f'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='get_random_bytes' mangled-name='get_random_bytes' filepath='include/linux/random.h' line='38' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_random_bytes'> + <function-decl name='get_random_bytes' mangled-name='get_random_bytes' filepath='include/linux/random.h' line='31' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='get_random_bytes'> <parameter type-id='eaa32e2f'/> <parameter type-id='95e97e5e'/> <return type-id='48b5725f'/> @@ -112263,7 +112275,7 @@ <parameter type-id='f0981eeb'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='hex2bin' mangled-name='hex2bin' filepath='include/linux/kernel.h' line='608' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='hex2bin'> + <function-decl name='hex2bin' mangled-name='hex2bin' filepath='include/linux/kernel.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='hex2bin'> <parameter type-id='cf536864'/> <parameter type-id='80f4b756'/> <parameter type-id='7359adad'/> @@ -112286,15 +112298,15 @@ <parameter type-id='f0981eeb' name='fd' filepath='fs/file.c' line='621' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='fget' mangled-name='fget' filepath='fs/file.c' line='712' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fget'> - <parameter type-id='f0981eeb' name='fd' filepath='fs/file.c' line='712' column='1'/> + <function-decl name='fget' mangled-name='fget' filepath='fs/file.c' line='753' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='fget'> + <parameter type-id='f0981eeb' name='fd' filepath='fs/file.c' line='753' column='1'/> <return type-id='77e79a4b'/> </function-decl> - <function-decl name='iterate_fd' mangled-name='iterate_fd' filepath='fs/file.c' line='971' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iterate_fd'> - <parameter type-id='16c53416' name='files' filepath='fs/file.c' line='971' column='1'/> - <parameter type-id='f0981eeb' name='n' filepath='fs/file.c' line='971' column='1'/> - <parameter type-id='d092647b' name='f' filepath='fs/file.c' line='972' column='1'/> - <parameter type-id='eaa32e2f' name='p' filepath='fs/file.c' line='973' column='1'/> + <function-decl name='iterate_fd' mangled-name='iterate_fd' filepath='fs/file.c' line='1012' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iterate_fd'> + <parameter type-id='16c53416' name='files' filepath='fs/file.c' line='1012' column='1'/> + <parameter type-id='f0981eeb' name='n' filepath='fs/file.c' line='1012' column='1'/> + <parameter type-id='d092647b' name='f' filepath='fs/file.c' line='1013' column='1'/> + <parameter type-id='eaa32e2f' name='p' filepath='fs/file.c' line='1014' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-type size-in-bits='64' id='8b73b897'> @@ -112304,24 +112316,32 @@ <return type-id='95e97e5e'/> </function-type> </abi-instr> + <abi-instr address-size='64' path='fs/fs-writeback.c' language='LANG_C89'> + <function-decl name='strscpy_pad' mangled-name='strscpy_pad' filepath='include/linux/string.h' line='36' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='strscpy_pad'> + <parameter type-id='26a90f95'/> + <parameter type-id='80f4b756'/> + <parameter type-id='7359adad'/> + <return type-id='bd54fe1a'/> + </function-decl> + </abi-instr> <abi-instr address-size='64' path='fs/inode.c' language='LANG_C89'> <pointer-type-def type-id='805f2c4a' size-in-bits='64' id='1b7a05dc'/> - <function-decl name='unlock_new_inode' mangled-name='unlock_new_inode' filepath='fs/inode.c' line='976' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unlock_new_inode'> - <parameter type-id='7e666abe' name='inode' filepath='fs/inode.c' line='976' column='1'/> + <function-decl name='unlock_new_inode' mangled-name='unlock_new_inode' filepath='fs/inode.c' line='975' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unlock_new_inode'> + <parameter type-id='7e666abe' name='inode' filepath='fs/inode.c' line='975' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='iget5_locked' mangled-name='iget5_locked' filepath='fs/inode.c' line='1125' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iget5_locked'> - <parameter type-id='42c8f564' name='sb' filepath='fs/inode.c' line='1125' column='1'/> - <parameter type-id='7359adad' name='hashval' filepath='fs/inode.c' line='1125' column='1'/> - <parameter type-id='1b7a05dc' name='test' filepath='fs/inode.c' line='1126' column='1'/> - <parameter type-id='1b7a05dc' name='set' filepath='fs/inode.c' line='1127' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='fs/inode.c' line='1127' column='1'/> + <function-decl name='iget5_locked' mangled-name='iget5_locked' filepath='fs/inode.c' line='1124' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='iget5_locked'> + <parameter type-id='42c8f564' name='sb' filepath='fs/inode.c' line='1124' column='1'/> + <parameter type-id='7359adad' name='hashval' filepath='fs/inode.c' line='1124' column='1'/> + <parameter type-id='1b7a05dc' name='test' filepath='fs/inode.c' line='1125' column='1'/> + <parameter type-id='1b7a05dc' name='set' filepath='fs/inode.c' line='1126' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='fs/inode.c' line='1126' column='1'/> <return type-id='7e666abe'/> </function-decl> - <function-decl name='inode_set_flags' mangled-name='inode_set_flags' filepath='fs/inode.c' line='2113' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='inode_set_flags'> - <parameter type-id='7e666abe' name='inode' filepath='fs/inode.c' line='2113' column='1'/> - <parameter type-id='f0981eeb' name='flags' filepath='fs/inode.c' line='2113' column='1'/> - <parameter type-id='f0981eeb' name='mask' filepath='fs/inode.c' line='2114' column='1'/> + <function-decl name='inode_set_flags' mangled-name='inode_set_flags' filepath='fs/inode.c' line='2112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='inode_set_flags'> + <parameter type-id='7e666abe' name='inode' filepath='fs/inode.c' line='2112' column='1'/> + <parameter type-id='f0981eeb' name='flags' filepath='fs/inode.c' line='2112' column='1'/> + <parameter type-id='f0981eeb' name='mask' filepath='fs/inode.c' line='2113' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-type size-in-bits='64' id='805f2c4a'> @@ -112353,10 +112373,10 @@ <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/linux/xattr.h' line='74' column='1'/> </data-member> </class-decl> - <function-decl name='kernfs_find_and_get_ns' mangled-name='kernfs_find_and_get_ns' filepath='fs/kernfs/dir.c' line='903' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kernfs_find_and_get_ns'> - <parameter type-id='150efd3f' name='parent' filepath='fs/kernfs/dir.c' line='903' column='1'/> - <parameter type-id='80f4b756' name='name' filepath='fs/kernfs/dir.c' line='904' column='1'/> - <parameter type-id='eaa32e2f' name='ns' filepath='fs/kernfs/dir.c' line='904' column='1'/> + <function-decl name='kernfs_find_and_get_ns' mangled-name='kernfs_find_and_get_ns' filepath='fs/kernfs/dir.c' line='910' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kernfs_find_and_get_ns'> + <parameter type-id='150efd3f' name='parent' filepath='fs/kernfs/dir.c' line='910' column='1'/> + <parameter type-id='80f4b756' name='name' filepath='fs/kernfs/dir.c' line='911' column='1'/> + <parameter type-id='eaa32e2f' name='ns' filepath='fs/kernfs/dir.c' line='911' column='1'/> <return type-id='150efd3f'/> </function-decl> </abi-instr> @@ -112432,41 +112452,41 @@ <parameter type-id='b50a4934' name='want_excl' filepath='fs/namei.c' line='2984' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vfs_mkdir' mangled-name='vfs_mkdir' filepath='fs/namei.c' line='3884' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_mkdir'> - <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='3884' column='1'/> - <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='3884' column='1'/> - <parameter type-id='2594b00f' name='mode' filepath='fs/namei.c' line='3884' column='1'/> + <function-decl name='vfs_mkdir' mangled-name='vfs_mkdir' filepath='fs/namei.c' line='3886' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_mkdir'> + <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='3886' column='1'/> + <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='3886' column='1'/> + <parameter type-id='2594b00f' name='mode' filepath='fs/namei.c' line='3886' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vfs_rmdir' mangled-name='vfs_rmdir' filepath='fs/namei.c' line='3945' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_rmdir'> - <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='3945' column='1'/> - <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='3945' column='1'/> + <function-decl name='vfs_rmdir' mangled-name='vfs_rmdir' filepath='fs/namei.c' line='3947' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_rmdir'> + <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='3947' column='1'/> + <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='3947' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='d_delete' mangled-name='d_delete' filepath='include/linux/dcache.h' line='241' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='d_delete'> <parameter type-id='27675065'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='vfs_unlink' mangled-name='vfs_unlink' filepath='fs/namei.c' line='4066' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_unlink'> - <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='4066' column='1'/> - <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='4066' column='1'/> - <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4066' column='1'/> + <function-decl name='vfs_unlink' mangled-name='vfs_unlink' filepath='fs/namei.c' line='4068' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_unlink'> + <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='4068' column='1'/> + <parameter type-id='27675065' name='dentry' filepath='fs/namei.c' line='4068' column='1'/> + <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4068' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vfs_link' mangled-name='vfs_link' filepath='fs/namei.c' line='4281' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_link'> - <parameter type-id='27675065' name='old_dentry' filepath='fs/namei.c' line='4281' column='1'/> - <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='4281' column='1'/> - <parameter type-id='27675065' name='new_dentry' filepath='fs/namei.c' line='4281' column='1'/> - <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4281' column='1'/> + <function-decl name='vfs_link' mangled-name='vfs_link' filepath='fs/namei.c' line='4283' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_link'> + <parameter type-id='27675065' name='old_dentry' filepath='fs/namei.c' line='4283' column='1'/> + <parameter type-id='7e666abe' name='dir' filepath='fs/namei.c' line='4283' column='1'/> + <parameter type-id='27675065' name='new_dentry' filepath='fs/namei.c' line='4283' column='1'/> + <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4283' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vfs_rename' mangled-name='vfs_rename' filepath='fs/namei.c' line='4477' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_rename'> - <parameter type-id='7e666abe' name='old_dir' filepath='fs/namei.c' line='4477' column='1'/> - <parameter type-id='27675065' name='old_dentry' filepath='fs/namei.c' line='4477' column='1'/> - <parameter type-id='7e666abe' name='new_dir' filepath='fs/namei.c' line='4478' column='1'/> - <parameter type-id='27675065' name='new_dentry' filepath='fs/namei.c' line='4478' column='1'/> - <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4479' column='1'/> - <parameter type-id='f0981eeb' name='flags' filepath='fs/namei.c' line='4479' column='1'/> + <function-decl name='vfs_rename' mangled-name='vfs_rename' filepath='fs/namei.c' line='4479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vfs_rename'> + <parameter type-id='7e666abe' name='old_dir' filepath='fs/namei.c' line='4479' column='1'/> + <parameter type-id='27675065' name='old_dentry' filepath='fs/namei.c' line='4479' column='1'/> + <parameter type-id='7e666abe' name='new_dir' filepath='fs/namei.c' line='4480' column='1'/> + <parameter type-id='27675065' name='new_dentry' filepath='fs/namei.c' line='4480' column='1'/> + <parameter type-id='8f39c6fc' name='delegated_inode' filepath='fs/namei.c' line='4481' column='1'/> + <parameter type-id='f0981eeb' name='flags' filepath='fs/namei.c' line='4481' column='1'/> <return type-id='95e97e5e'/> </function-decl> <pointer-type-def type-id='7e666abe' size-in-bits='64' id='8f39c6fc'/> @@ -112904,24 +112924,24 @@ <typedef-decl name='proc_write_t' type-id='f71f3e00' filepath='include/linux/proc_fs.h' line='17' column='1' id='7c2b18ab'/> <typedef-decl name='nlink_t' type-id='19c2251e' filepath='include/linux/types.h' line='23' column='1' id='6fa67d85'/> <pointer-type-def type-id='56b34f46' size-in-bits='64' id='f71f3e00'/> - <function-decl name='_proc_mkdir' mangled-name='_proc_mkdir' filepath='fs/proc/generic.c' line='476' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_proc_mkdir'> - <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='476' column='1'/> - <parameter type-id='2594b00f' name='mode' filepath='fs/proc/generic.c' line='476' column='1'/> - <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='477' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='fs/proc/generic.c' line='477' column='1'/> - <parameter type-id='b50a4934' name='force_lookup' filepath='fs/proc/generic.c' line='477' column='1'/> + <function-decl name='_proc_mkdir' mangled-name='_proc_mkdir' filepath='fs/proc/generic.c' line='479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_proc_mkdir'> + <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='479' column='1'/> + <parameter type-id='2594b00f' name='mode' filepath='fs/proc/generic.c' line='479' column='1'/> + <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='480' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='fs/proc/generic.c' line='480' column='1'/> + <parameter type-id='b50a4934' name='force_lookup' filepath='fs/proc/generic.c' line='480' column='1'/> <return type-id='d077e928'/> </function-decl> - <function-decl name='proc_mkdir_data' mangled-name='proc_mkdir_data' filepath='fs/proc/generic.c' line='498' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='proc_mkdir_data'> - <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='498' column='1'/> - <parameter type-id='2594b00f' name='mode' filepath='fs/proc/generic.c' line='498' column='1'/> - <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='499' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='fs/proc/generic.c' line='499' column='1'/> + <function-decl name='proc_mkdir_data' mangled-name='proc_mkdir_data' filepath='fs/proc/generic.c' line='501' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='proc_mkdir_data'> + <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='501' column='1'/> + <parameter type-id='2594b00f' name='mode' filepath='fs/proc/generic.c' line='501' column='1'/> + <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='502' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='fs/proc/generic.c' line='502' column='1'/> <return type-id='d077e928'/> </function-decl> - <function-decl name='remove_proc_subtree' mangled-name='remove_proc_subtree' filepath='fs/proc/generic.c' line='708' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='remove_proc_subtree'> - <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='708' column='1'/> - <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='708' column='1'/> + <function-decl name='remove_proc_subtree' mangled-name='remove_proc_subtree' filepath='fs/proc/generic.c' line='711' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='remove_proc_subtree'> + <parameter type-id='80f4b756' name='name' filepath='fs/proc/generic.c' line='711' column='1'/> + <parameter type-id='d077e928' name='parent' filepath='fs/proc/generic.c' line='711' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-type size-in-bits='64' id='56b34f46'> @@ -114519,9 +114539,9 @@ <typedef-decl name='async_cookie_t' type-id='91ce1af9' filepath='include/linux/async.h' line='18' column='1' id='a7465fe4'/> <typedef-decl name='async_func_t' type-id='56ccc407' filepath='include/linux/async.h' line='19' column='1' id='5c19cb0c'/> <pointer-type-def type-id='8800ed53' size-in-bits='64' id='56ccc407'/> - <function-decl name='async_schedule' mangled-name='async_schedule' filepath='kernel/async.c' line='211' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='async_schedule'> - <parameter type-id='5c19cb0c' name='func' filepath='kernel/async.c' line='211' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='kernel/async.c' line='211' column='1'/> + <function-decl name='async_schedule' mangled-name='async_schedule' filepath='kernel/async.c' line='208' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='async_schedule'> + <parameter type-id='5c19cb0c' name='func' filepath='kernel/async.c' line='208' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='kernel/async.c' line='208' column='1'/> <return type-id='a7465fe4'/> </function-decl> <function-type size-in-bits='64' id='8800ed53'> @@ -114814,19 +114834,14 @@ <pointer-type-def type-id='05a6e6cc' size-in-bits='64' id='e9efa10a'/> <pointer-type-def type-id='63fc6210' size-in-bits='64' id='e9d22a06'/> <var-decl name='audit_enabled' type-id='19c2251e' mangled-name='audit_enabled' visibility='default' filepath='kernel/audit.c' line='86' column='1' elf-symbol-id='audit_enabled'/> - <function-decl name='audit_log' mangled-name='audit_log' filepath='kernel/audit.c' line='2385' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='audit_log'> - <parameter type-id='a9f319d2' name='ctx' filepath='kernel/audit.c' line='2385' column='1'/> - <parameter type-id='3eb7c31c' name='gfp_mask' filepath='kernel/audit.c' line='2385' column='1'/> - <parameter type-id='95e97e5e' name='type' filepath='kernel/audit.c' line='2385' column='1'/> - <parameter type-id='80f4b756' name='fmt' filepath='kernel/audit.c' line='2386' column='1'/> + <function-decl name='audit_log' mangled-name='audit_log' filepath='kernel/audit.c' line='2424' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='audit_log'> + <parameter type-id='a9f319d2' name='ctx' filepath='kernel/audit.c' line='2424' column='1'/> + <parameter type-id='3eb7c31c' name='gfp_mask' filepath='kernel/audit.c' line='2424' column='1'/> + <parameter type-id='95e97e5e' name='type' filepath='kernel/audit.c' line='2424' column='1'/> + <parameter type-id='80f4b756' name='fmt' filepath='kernel/audit.c' line='2425' column='1'/> <parameter is-variadic='yes'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='skb_queue_head' mangled-name='skb_queue_head' filepath='include/linux/skbuff.h' line='1882' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='skb_queue_head'> - <parameter type-id='03c386c6'/> - <parameter type-id='0fbf3cfd'/> - <return type-id='48b5725f'/> - </function-decl> <function-decl name='netlink_kernel_release' mangled-name='netlink_kernel_release' filepath='include/linux/netlink.h' line='113' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netlink_kernel_release'> <parameter type-id='f772df6d'/> <return type-id='48b5725f'/> @@ -114850,7 +114865,7 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='kernel/bpf/core.c' language='LANG_C89'> - <function-decl name='bin2hex' mangled-name='bin2hex' filepath='include/linux/kernel.h' line='609' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='bin2hex'> + <function-decl name='bin2hex' mangled-name='bin2hex' filepath='include/linux/kernel.h' line='613' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='bin2hex'> <parameter type-id='26a90f95'/> <parameter type-id='eaa32e2f'/> <parameter type-id='7359adad'/> @@ -115144,11 +115159,11 @@ <enumerator name='CPUHP_ONLINE' value='208'/> </enum-decl> <pointer-type-def type-id='db7d07ef' size-in-bits='64' id='f02a5e83'/> - <var-decl name='cpu_bit_bitmap' type-id='f959706c' mangled-name='cpu_bit_bitmap' visibility='default' filepath='kernel/cpu.c' line='2364' column='1' elf-symbol-id='cpu_bit_bitmap'/> - <var-decl name='__cpu_possible_mask' type-id='1354385d' mangled-name='__cpu_possible_mask' visibility='default' filepath='kernel/cpu.c' line='2382' column='1' elf-symbol-id='__cpu_possible_mask'/> - <var-decl name='__cpu_online_mask' type-id='1354385d' mangled-name='__cpu_online_mask' visibility='default' filepath='kernel/cpu.c' line='2386' column='1' elf-symbol-id='__cpu_online_mask'/> - <var-decl name='__cpu_present_mask' type-id='1354385d' mangled-name='__cpu_present_mask' visibility='default' filepath='kernel/cpu.c' line='2389' column='1' elf-symbol-id='__cpu_present_mask'/> - <var-decl name='__cpu_isolated_mask' type-id='1354385d' mangled-name='__cpu_isolated_mask' visibility='default' filepath='kernel/cpu.c' line='2395' column='1' elf-symbol-id='__cpu_isolated_mask'/> + <var-decl name='cpu_bit_bitmap' type-id='f959706c' mangled-name='cpu_bit_bitmap' visibility='default' filepath='kernel/cpu.c' line='2381' column='1' elf-symbol-id='cpu_bit_bitmap'/> + <var-decl name='__cpu_possible_mask' type-id='1354385d' mangled-name='__cpu_possible_mask' visibility='default' filepath='kernel/cpu.c' line='2399' column='1' elf-symbol-id='__cpu_possible_mask'/> + <var-decl name='__cpu_online_mask' type-id='1354385d' mangled-name='__cpu_online_mask' visibility='default' filepath='kernel/cpu.c' line='2403' column='1' elf-symbol-id='__cpu_online_mask'/> + <var-decl name='__cpu_present_mask' type-id='1354385d' mangled-name='__cpu_present_mask' visibility='default' filepath='kernel/cpu.c' line='2406' column='1' elf-symbol-id='__cpu_present_mask'/> + <var-decl name='__cpu_isolated_mask' type-id='1354385d' mangled-name='__cpu_isolated_mask' visibility='default' filepath='kernel/cpu.c' line='2412' column='1' elf-symbol-id='__cpu_isolated_mask'/> <function-decl name='sched_clock' mangled-name='sched_clock' filepath='include/linux/sched/clock.h' line='15' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_clock'> <return type-id='3a47d82b'/> </function-decl> @@ -115185,18 +115200,18 @@ <parameter type-id='d504f73d'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='__cpuhp_setup_state' mangled-name='__cpuhp_setup_state' filepath='kernel/cpu.c' line='1903' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cpuhp_setup_state'> - <parameter type-id='245a0e38' name='state' filepath='kernel/cpu.c' line='1903' column='1'/> - <parameter type-id='80f4b756' name='name' filepath='kernel/cpu.c' line='1904' column='1'/> - <parameter type-id='b50a4934' name='invoke' filepath='kernel/cpu.c' line='1904' column='1'/> - <parameter type-id='f02a5e83' name='startup' filepath='kernel/cpu.c' line='1905' column='1'/> - <parameter type-id='f02a5e83' name='teardown' filepath='kernel/cpu.c' line='1906' column='1'/> - <parameter type-id='b50a4934' name='multi_instance' filepath='kernel/cpu.c' line='1907' column='1'/> + <function-decl name='__cpuhp_setup_state' mangled-name='__cpuhp_setup_state' filepath='kernel/cpu.c' line='1920' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cpuhp_setup_state'> + <parameter type-id='245a0e38' name='state' filepath='kernel/cpu.c' line='1920' column='1'/> + <parameter type-id='80f4b756' name='name' filepath='kernel/cpu.c' line='1921' column='1'/> + <parameter type-id='b50a4934' name='invoke' filepath='kernel/cpu.c' line='1921' column='1'/> + <parameter type-id='f02a5e83' name='startup' filepath='kernel/cpu.c' line='1922' column='1'/> + <parameter type-id='f02a5e83' name='teardown' filepath='kernel/cpu.c' line='1923' column='1'/> + <parameter type-id='b50a4934' name='multi_instance' filepath='kernel/cpu.c' line='1924' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='__cpuhp_remove_state' mangled-name='__cpuhp_remove_state' filepath='kernel/cpu.c' line='2005' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cpuhp_remove_state'> - <parameter type-id='245a0e38' name='state' filepath='kernel/cpu.c' line='2005' column='1'/> - <parameter type-id='b50a4934' name='invoke' filepath='kernel/cpu.c' line='2005' column='1'/> + <function-decl name='__cpuhp_remove_state' mangled-name='__cpuhp_remove_state' filepath='kernel/cpu.c' line='2022' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cpuhp_remove_state'> + <parameter type-id='245a0e38' name='state' filepath='kernel/cpu.c' line='2022' column='1'/> + <parameter type-id='b50a4934' name='invoke' filepath='kernel/cpu.c' line='2022' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='atomic_notifier_chain_unregister' mangled-name='atomic_notifier_chain_unregister' filepath='include/linux/notifier.h' line='157' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='atomic_notifier_chain_unregister'> @@ -115468,10 +115483,10 @@ <pointer-type-def type-id='0ad68707' size-in-bits='64' id='b6a33eaf'/> <pointer-type-def type-id='0ef5c7e0' size-in-bits='64' id='b1253746'/> <pointer-type-def type-id='a752caf1' size-in-bits='64' id='4b860c99'/> - <function-decl name='perf_pmu_register' mangled-name='perf_pmu_register' filepath='kernel/events/core.c' line='9885' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_pmu_register'> - <parameter type-id='0906f5b9' name='pmu' filepath='kernel/events/core.c' line='9885' column='1'/> - <parameter type-id='80f4b756' name='name' filepath='kernel/events/core.c' line='9885' column='1'/> - <parameter type-id='95e97e5e' name='type' filepath='kernel/events/core.c' line='9885' column='1'/> + <function-decl name='perf_pmu_register' mangled-name='perf_pmu_register' filepath='kernel/events/core.c' line='9888' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_pmu_register'> + <parameter type-id='0906f5b9' name='pmu' filepath='kernel/events/core.c' line='9888' column='1'/> + <parameter type-id='80f4b756' name='name' filepath='kernel/events/core.c' line='9888' column='1'/> + <parameter type-id='95e97e5e' name='type' filepath='kernel/events/core.c' line='9888' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='perf_event_enable' mangled-name='perf_event_enable' filepath='kernel/events/core.c' line='2812' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_event_enable'> @@ -115777,8 +115792,8 @@ </abi-instr> <abi-instr address-size='64' path='kernel/irq/irqdesc.c' language='LANG_C89'> <var-decl name='nr_irqs' type-id='95e97e5e' mangled-name='nr_irqs' visibility='default' filepath='kernel/irq/irqdesc.c' line='130' column='1' elf-symbol-id='nr_irqs'/> - <function-decl name='generic_handle_irq' mangled-name='generic_handle_irq' filepath='kernel/irq/irqdesc.c' line='633' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='generic_handle_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/irqdesc.c' line='633' column='1'/> + <function-decl name='generic_handle_irq' mangled-name='generic_handle_irq' filepath='kernel/irq/irqdesc.c' line='635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='generic_handle_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/irqdesc.c' line='635' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='bitmap_find_next_zero_area_off' mangled-name='bitmap_find_next_zero_area_off' filepath='include/linux/bitmap.h' line='145' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='bitmap_find_next_zero_area_off'> @@ -115903,52 +115918,52 @@ <parameter type-id='95e97e5e' name='parent_irq' filepath='kernel/irq/manage.c' line='811' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='free_irq' mangled-name='free_irq' filepath='kernel/irq/manage.c' line='1810' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='1810' column='1'/> - <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='1810' column='1'/> + <function-decl name='free_irq' mangled-name='free_irq' filepath='kernel/irq/manage.c' line='1829' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='1829' column='1'/> + <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='1829' column='1'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='request_threaded_irq' mangled-name='request_threaded_irq' filepath='kernel/irq/manage.c' line='1877' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='request_threaded_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='1877' column='1'/> - <parameter type-id='29591c9a' name='handler' filepath='kernel/irq/manage.c' line='1877' column='1'/> - <parameter type-id='29591c9a' name='thread_fn' filepath='kernel/irq/manage.c' line='1878' column='1'/> - <parameter type-id='7359adad' name='irqflags' filepath='kernel/irq/manage.c' line='1878' column='1'/> - <parameter type-id='80f4b756' name='devname' filepath='kernel/irq/manage.c' line='1879' column='1'/> - <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='1879' column='1'/> + <function-decl name='request_threaded_irq' mangled-name='request_threaded_irq' filepath='kernel/irq/manage.c' line='1896' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='request_threaded_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='1896' column='1'/> + <parameter type-id='29591c9a' name='handler' filepath='kernel/irq/manage.c' line='1896' column='1'/> + <parameter type-id='29591c9a' name='thread_fn' filepath='kernel/irq/manage.c' line='1897' column='1'/> + <parameter type-id='7359adad' name='irqflags' filepath='kernel/irq/manage.c' line='1897' column='1'/> + <parameter type-id='80f4b756' name='devname' filepath='kernel/irq/manage.c' line='1898' column='1'/> + <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='1898' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='enable_percpu_irq' mangled-name='enable_percpu_irq' filepath='kernel/irq/manage.c' line='2004' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='enable_percpu_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2004' column='1'/> - <parameter type-id='f0981eeb' name='type' filepath='kernel/irq/manage.c' line='2004' column='1'/> + <function-decl name='enable_percpu_irq' mangled-name='enable_percpu_irq' filepath='kernel/irq/manage.c' line='2023' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='enable_percpu_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2023' column='1'/> + <parameter type-id='f0981eeb' name='type' filepath='kernel/irq/manage.c' line='2023' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='disable_percpu_irq' mangled-name='disable_percpu_irq' filepath='kernel/irq/manage.c' line='2063' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='disable_percpu_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2063' column='1'/> + <function-decl name='disable_percpu_irq' mangled-name='disable_percpu_irq' filepath='kernel/irq/manage.c' line='2082' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='disable_percpu_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2082' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='free_percpu_irq' mangled-name='free_percpu_irq' filepath='kernel/irq/manage.c' line='2148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_percpu_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2148' column='1'/> - <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='2148' column='1'/> + <function-decl name='free_percpu_irq' mangled-name='free_percpu_irq' filepath='kernel/irq/manage.c' line='2167' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_percpu_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2167' column='1'/> + <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='2167' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='__request_percpu_irq' mangled-name='__request_percpu_irq' filepath='kernel/irq/manage.c' line='2205' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__request_percpu_irq'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2205' column='1'/> - <parameter type-id='29591c9a' name='handler' filepath='kernel/irq/manage.c' line='2205' column='1'/> - <parameter type-id='7359adad' name='flags' filepath='kernel/irq/manage.c' line='2206' column='1'/> - <parameter type-id='80f4b756' name='devname' filepath='kernel/irq/manage.c' line='2206' column='1'/> - <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='2207' column='1'/> + <function-decl name='__request_percpu_irq' mangled-name='__request_percpu_irq' filepath='kernel/irq/manage.c' line='2224' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__request_percpu_irq'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2224' column='1'/> + <parameter type-id='29591c9a' name='handler' filepath='kernel/irq/manage.c' line='2224' column='1'/> + <parameter type-id='7359adad' name='flags' filepath='kernel/irq/manage.c' line='2225' column='1'/> + <parameter type-id='80f4b756' name='devname' filepath='kernel/irq/manage.c' line='2225' column='1'/> + <parameter type-id='eaa32e2f' name='dev_id' filepath='kernel/irq/manage.c' line='2226' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='irq_get_irqchip_state' mangled-name='irq_get_irqchip_state' filepath='kernel/irq/manage.c' line='2285' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='irq_get_irqchip_state'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2285' column='1'/> - <parameter type-id='0187da1c' name='which' filepath='kernel/irq/manage.c' line='2285' column='1'/> - <parameter type-id='d8e6b335' name='state' filepath='kernel/irq/manage.c' line='2286' column='1'/> + <function-decl name='irq_get_irqchip_state' mangled-name='irq_get_irqchip_state' filepath='kernel/irq/manage.c' line='2304' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='irq_get_irqchip_state'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2304' column='1'/> + <parameter type-id='0187da1c' name='which' filepath='kernel/irq/manage.c' line='2304' column='1'/> + <parameter type-id='d8e6b335' name='state' filepath='kernel/irq/manage.c' line='2305' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='irq_set_irqchip_state' mangled-name='irq_set_irqchip_state' filepath='kernel/irq/manage.c' line='2318' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='irq_set_irqchip_state'> - <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2318' column='1'/> - <parameter type-id='0187da1c' name='which' filepath='kernel/irq/manage.c' line='2318' column='1'/> - <parameter type-id='b50a4934' name='val' filepath='kernel/irq/manage.c' line='2319' column='1'/> + <function-decl name='irq_set_irqchip_state' mangled-name='irq_set_irqchip_state' filepath='kernel/irq/manage.c' line='2337' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='irq_set_irqchip_state'> + <parameter type-id='f0981eeb' name='irq' filepath='kernel/irq/manage.c' line='2337' column='1'/> + <parameter type-id='0187da1c' name='which' filepath='kernel/irq/manage.c' line='2337' column='1'/> + <parameter type-id='b50a4934' name='val' filepath='kernel/irq/manage.c' line='2338' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -116165,12 +116180,12 @@ <pointer-type-def type-id='9493d3c9' size-in-bits='64' id='eefd7061'/> <pointer-type-def type-id='68a2869e' size-in-bits='64' id='3a498c74'/> <pointer-type-def type-id='d2d812d1' size-in-bits='64' id='e525e121'/> - <function-decl name='module_layout' mangled-name='module_layout' filepath='kernel/module.c' line='4494' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='module_layout'> - <parameter type-id='2730d015' name='mod' filepath='kernel/module.c' line='4494' column='1'/> - <parameter type-id='3a498c74' name='ver' filepath='kernel/module.c' line='4495' column='1'/> - <parameter type-id='a7c6e908' name='kp' filepath='kernel/module.c' line='4496' column='1'/> - <parameter type-id='eefd7061' name='ks' filepath='kernel/module.c' line='4497' column='1'/> - <parameter type-id='e525e121' name='tp' filepath='kernel/module.c' line='4498' column='1'/> + <function-decl name='module_layout' mangled-name='module_layout' filepath='kernel/module.c' line='4479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='module_layout'> + <parameter type-id='2730d015' name='mod' filepath='kernel/module.c' line='4479' column='1'/> + <parameter type-id='3a498c74' name='ver' filepath='kernel/module.c' line='4480' column='1'/> + <parameter type-id='a7c6e908' name='kp' filepath='kernel/module.c' line='4481' column='1'/> + <parameter type-id='eefd7061' name='ks' filepath='kernel/module.c' line='4482' column='1'/> + <parameter type-id='e525e121' name='tp' filepath='kernel/module.c' line='4483' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='sysfs_remove_link' mangled-name='sysfs_remove_link' filepath='include/linux/sysfs.h' line='258' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sysfs_remove_link'> @@ -116604,12 +116619,12 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='kernel/printk/printk.c' language='LANG_C89'> - <var-decl name='console_suspend_enabled' type-id='b50a4934' mangled-name='console_suspend_enabled' visibility='default' filepath='kernel/printk/printk.c' line='2270' column='1' elf-symbol-id='console_suspend_enabled'/> + <var-decl name='console_suspend_enabled' type-id='b50a4934' mangled-name='console_suspend_enabled' visibility='default' filepath='kernel/printk/printk.c' line='2272' column='1' elf-symbol-id='console_suspend_enabled'/> <var-decl name='oops_in_progress' type-id='95e97e5e' mangled-name='oops_in_progress' visibility='default' filepath='kernel/printk/printk.c' line='75' column='1' elf-symbol-id='oops_in_progress'/> - <function-decl name='log_buf_addr_get' mangled-name='log_buf_addr_get' filepath='kernel/printk/printk.c' line='463' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='log_buf_addr_get'> + <function-decl name='log_buf_addr_get' mangled-name='log_buf_addr_get' filepath='kernel/printk/printk.c' line='465' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='log_buf_addr_get'> <return type-id='26a90f95'/> </function-decl> - <function-decl name='log_buf_len_get' mangled-name='log_buf_len_get' filepath='kernel/printk/printk.c' line='470' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='log_buf_len_get'> + <function-decl name='log_buf_len_get' mangled-name='log_buf_len_get' filepath='kernel/printk/printk.c' line='472' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='log_buf_len_get'> <return type-id='19c2251e'/> </function-decl> <function-decl name='vscnprintf' mangled-name='vscnprintf' filepath='include/linux/kernel.h' line='464' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vscnprintf'> @@ -116619,8 +116634,8 @@ <parameter type-id='5f919c1f'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='console_stop' mangled-name='console_stop' filepath='kernel/printk/printk.c' line='2651' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='console_stop'> - <parameter type-id='b9aa0100' name='console' filepath='kernel/printk/printk.c' line='2651' column='1'/> + <function-decl name='console_stop' mangled-name='console_stop' filepath='kernel/printk/printk.c' line='2653' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='console_stop'> + <parameter type-id='b9aa0100' name='console' filepath='kernel/printk/printk.c' line='2653' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -117333,60 +117348,60 @@ <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='block/blk-stat.h' line='62' column='1'/> </data-member> </class-decl> - <class-decl name='blkcg_gq' size-in-bits='5952' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='109' column='1' id='9467b853'> + <class-decl name='blkcg_gq' size-in-bits='5952' is-struct='yes' visibility='default' filepath='include/linux/blk-cgroup.h' line='112' column='1' id='9467b853'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blk-cgroup.h' line='111' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blk-cgroup.h' line='114' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='112' column='1'/> + <var-decl name='q_node' type-id='72f469ec' visibility='default' filepath='include/linux/blk-cgroup.h' line='115' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='blkcg_node' type-id='03a4a074' visibility='default' filepath='include/linux/blk-cgroup.h' line='113' column='1'/> + <var-decl name='blkcg_node' type-id='03a4a074' visibility='default' filepath='include/linux/blk-cgroup.h' line='116' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='114' column='1'/> + <var-decl name='blkcg' type-id='11bff950' visibility='default' filepath='include/linux/blk-cgroup.h' line='117' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='wb_congested' type-id='d97a04ce' visibility='default' filepath='include/linux/blk-cgroup.h' line='120' column='1'/> + <var-decl name='wb_congested' type-id='d97a04ce' visibility='default' filepath='include/linux/blk-cgroup.h' line='123' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='parent' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='123' column='1'/> + <var-decl name='parent' type-id='1146dea3' visibility='default' filepath='include/linux/blk-cgroup.h' line='126' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blk-cgroup.h' line='126' column='1'/> + <var-decl name='rl' type-id='f9b33cd7' visibility='default' filepath='include/linux/blk-cgroup.h' line='129' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='129' column='1'/> + <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='132' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1312'> - <var-decl name='online' type-id='b50a4934' visibility='default' filepath='include/linux/blk-cgroup.h' line='132' column='1'/> + <var-decl name='online' type-id='b50a4934' visibility='default' filepath='include/linux/blk-cgroup.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='stat_bytes' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='134' column='1'/> + <var-decl name='stat_bytes' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='137' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3264'> - <var-decl name='stat_ios' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='135' column='1'/> + <var-decl name='stat_ios' type-id='247d0323' visibility='default' filepath='include/linux/blk-cgroup.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5184'> - <var-decl name='pd' type-id='f5665670' visibility='default' filepath='include/linux/blk-cgroup.h' line='137' column='1'/> + <var-decl name='pd' type-id='f5665670' visibility='default' filepath='include/linux/blk-cgroup.h' line='140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blk-cgroup.h' line='139' column='1'/> + <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/blk-cgroup.h' line='142' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5632'> - <var-decl name='use_delay' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='141' column='1'/> + <var-decl name='use_delay' type-id='49178f86' visibility='default' filepath='include/linux/blk-cgroup.h' line='144' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5696'> - <var-decl name='delay_nsec' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='142' column='1'/> + <var-decl name='delay_nsec' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5760'> - <var-decl name='delay_start' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='143' column='1'/> + <var-decl name='delay_start' type-id='28ee064c' visibility='default' filepath='include/linux/blk-cgroup.h' line='146' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5824'> - <var-decl name='last_delay' type-id='91ce1af9' visibility='default' filepath='include/linux/blk-cgroup.h' line='144' column='1'/> + <var-decl name='last_delay' type-id='91ce1af9' visibility='default' filepath='include/linux/blk-cgroup.h' line='147' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5888'> - <var-decl name='last_use' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='145' column='1'/> + <var-decl name='last_use' type-id='95e97e5e' visibility='default' filepath='include/linux/blk-cgroup.h' line='148' column='1'/> </data-member> </class-decl> <class-decl name='bpf_prog' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/linux/filter.h' line='519' column='1' id='facd5338'> @@ -118234,9 +118249,9 @@ <var-decl name='inline_name' type-id='e84913bd' visibility='default' filepath='fs/proc/internal.h' line='66' column='1'/> </data-member> </class-decl> - <class-decl name='prot_inuse' size-in-bits='2048' is-struct='yes' visibility='default' filepath='net/core/sock.c' line='3164' column='1' id='ac763c5d'> + <class-decl name='prot_inuse' size-in-bits='2048' is-struct='yes' visibility='default' filepath='net/core/sock.c' line='3161' column='1' id='ac763c5d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='val' type-id='93e41790' visibility='default' filepath='net/core/sock.c' line='3165' column='1'/> + <var-decl name='val' type-id='93e41790' visibility='default' filepath='net/core/sock.c' line='3162' column='1'/> </data-member> </class-decl> <class-decl name='ring_buffer' size-in-bits='1920' is-struct='yes' visibility='default' filepath='kernel/events/internal.h' line='12' column='1' id='6efee8be'> @@ -118419,71 +118434,71 @@ <var-decl name='tun_src' type-id='ed512028' visibility='default' filepath='include/net/seg6.h' line='44' column='1'/> </data-member> </class-decl> - <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1033' column='1' id='54718f09'> + <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1034' column='1' id='54718f09'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/net/tcp.h' line='1034' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/net/tcp.h' line='1035' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='key' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1035' column='1'/> + <var-decl name='key' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1036' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1036' column='1'/> + <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1037' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='init' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1039' column='1'/> + <var-decl name='init' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1040' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='release' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1041' column='1'/> + <var-decl name='release' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1042' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='ssthresh' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1044' column='1'/> + <var-decl name='ssthresh' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1045' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='cong_avoid' type-id='ece3af1e' visibility='default' filepath='include/net/tcp.h' line='1046' column='1'/> + <var-decl name='cong_avoid' type-id='ece3af1e' visibility='default' filepath='include/net/tcp.h' line='1047' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='set_state' type-id='f5feb7a4' visibility='default' filepath='include/net/tcp.h' line='1048' column='1'/> + <var-decl name='set_state' type-id='f5feb7a4' visibility='default' filepath='include/net/tcp.h' line='1049' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='cwnd_event' type-id='bfacbc7a' visibility='default' filepath='include/net/tcp.h' line='1050' column='1'/> + <var-decl name='cwnd_event' type-id='bfacbc7a' visibility='default' filepath='include/net/tcp.h' line='1051' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='in_ack_event' type-id='815f64bf' visibility='default' filepath='include/net/tcp.h' line='1052' column='1'/> + <var-decl name='in_ack_event' type-id='815f64bf' visibility='default' filepath='include/net/tcp.h' line='1053' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='undo_cwnd' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1054' column='1'/> + <var-decl name='undo_cwnd' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1055' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='pkts_acked' type-id='bffb5883' visibility='default' filepath='include/net/tcp.h' line='1056' column='1'/> + <var-decl name='pkts_acked' type-id='bffb5883' visibility='default' filepath='include/net/tcp.h' line='1057' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='min_tso_segs' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1058' column='1'/> + <var-decl name='min_tso_segs' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1059' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='832'> - <var-decl name='sndbuf_expand' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1060' column='1'/> + <var-decl name='sndbuf_expand' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1061' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='896'> - <var-decl name='cong_control' type-id='636d3a20' visibility='default' filepath='include/net/tcp.h' line='1064' column='1'/> + <var-decl name='cong_control' type-id='636d3a20' visibility='default' filepath='include/net/tcp.h' line='1065' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='get_info' type-id='14ca5c08' visibility='default' filepath='include/net/tcp.h' line='1066' column='1'/> + <var-decl name='get_info' type-id='14ca5c08' visibility='default' filepath='include/net/tcp.h' line='1067' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='name' type-id='ac1fa8c0' visibility='default' filepath='include/net/tcp.h' line='1069' column='1'/> + <var-decl name='name' type-id='ac1fa8c0' visibility='default' filepath='include/net/tcp.h' line='1070' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/tcp.h' line='1070' column='1'/> + <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/tcp.h' line='1071' column='1'/> </data-member> </class-decl> - <class-decl name='tcp_fastopen_context' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1645' column='1' id='f77d4717'> + <class-decl name='tcp_fastopen_context' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1650' column='1' id='f77d4717'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tfm' type-id='75f72758' visibility='default' filepath='include/net/tcp.h' line='1646' column='1'/> + <var-decl name='tfm' type-id='75f72758' visibility='default' filepath='include/net/tcp.h' line='1651' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='key' type-id='9396cabb' visibility='default' filepath='include/net/tcp.h' line='1647' column='1'/> + <var-decl name='key' type-id='9396cabb' visibility='default' filepath='include/net/tcp.h' line='1652' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/tcp.h' line='1648' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/tcp.h' line='1653' column='1'/> </data-member> </class-decl> <class-decl name='timer_rand_state' is-struct='yes' visibility='default' is-declaration-only='yes' id='f308a7ce'/> @@ -119250,63 +119265,63 @@ <var-decl name='cputime' type-id='ad6873f4' visibility='default' filepath='include/linux/cgroup-defs.h' line='275' column='1'/> </data-member> </class-decl> - <class-decl name='psi_group' size-in-bits='5440' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='128' column='1' id='12878ab3'> + <class-decl name='psi_group' size-in-bits='5440' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='125' column='1' id='12878ab3'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='avgs_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='130' column='1'/> + <var-decl name='avgs_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='127' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='pcpu' type-id='9dc40234' visibility='default' filepath='include/linux/psi_types.h' line='133' column='1'/> + <var-decl name='pcpu' type-id='9dc40234' visibility='default' filepath='include/linux/psi_types.h' line='130' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='avg_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='136' column='1'/> + <var-decl name='avg_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='133' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='avg_last_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='137' column='1'/> + <var-decl name='avg_last_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='134' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='avg_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='138' column='1'/> + <var-decl name='avg_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='avgs_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/psi_types.h' line='141' column='1'/> + <var-decl name='avgs_work' type-id='5ad6e0ef' visibility='default' filepath='include/linux/psi_types.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='total' type-id='a4295685' visibility='default' filepath='include/linux/psi_types.h' line='144' column='1'/> + <var-decl name='total' type-id='a4295685' visibility='default' filepath='include/linux/psi_types.h' line='141' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2496'> - <var-decl name='avg' type-id='625e8699' visibility='default' filepath='include/linux/psi_types.h' line='145' column='1'/> + <var-decl name='avg' type-id='625e8699' visibility='default' filepath='include/linux/psi_types.h' line='142' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3456'> - <var-decl name='poll_scheduled' type-id='49178f86' visibility='default' filepath='include/linux/psi_types.h' line='148' column='1'/> + <var-decl name='poll_scheduled' type-id='49178f86' visibility='default' filepath='include/linux/psi_types.h' line='145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3520'> - <var-decl name='poll_kworker' type-id='c41f4539' visibility='default' filepath='include/linux/psi_types.h' line='149' column='1'/> + <var-decl name='poll_kworker' type-id='c41f4539' visibility='default' filepath='include/linux/psi_types.h' line='146' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3584'> - <var-decl name='poll_work' type-id='8fb867c9' visibility='default' filepath='include/linux/psi_types.h' line='150' column='1'/> + <var-decl name='poll_work' type-id='8fb867c9' visibility='default' filepath='include/linux/psi_types.h' line='147' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4352'> - <var-decl name='trigger_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='153' column='1'/> + <var-decl name='trigger_lock' type-id='925167dc' visibility='default' filepath='include/linux/psi_types.h' line='150' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4608'> - <var-decl name='triggers' type-id='72f469ec' visibility='default' filepath='include/linux/psi_types.h' line='156' column='1'/> + <var-decl name='triggers' type-id='72f469ec' visibility='default' filepath='include/linux/psi_types.h' line='153' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4736'> - <var-decl name='nr_triggers' type-id='586ea944' visibility='default' filepath='include/linux/psi_types.h' line='157' column='1'/> + <var-decl name='nr_triggers' type-id='586ea944' visibility='default' filepath='include/linux/psi_types.h' line='154' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4896'> - <var-decl name='poll_states' type-id='19c2251e' visibility='default' filepath='include/linux/psi_types.h' line='158' column='1'/> + <var-decl name='poll_states' type-id='19c2251e' visibility='default' filepath='include/linux/psi_types.h' line='155' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='poll_min_period' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='159' column='1'/> + <var-decl name='poll_min_period' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='156' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4992'> - <var-decl name='polling_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='162' column='1'/> + <var-decl name='polling_total' type-id='64af1365' visibility='default' filepath='include/linux/psi_types.h' line='159' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5312'> - <var-decl name='polling_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='163' column='1'/> + <var-decl name='polling_next_update' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='160' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5376'> - <var-decl name='polling_until' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='164' column='1'/> + <var-decl name='polling_until' type-id='91ce1af9' visibility='default' filepath='include/linux/psi_types.h' line='161' column='1'/> </data-member> </class-decl> <class-decl name='psi_group_cpu' size-in-bits='1024' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='56' column='1' id='956e764e'> @@ -122309,172 +122324,172 @@ <var-decl name='wq' type-id='242e3d19' visibility='default' filepath='include/linux/workqueue.h' line='135' column='1'/> </data-member> </class-decl> - <class-decl name='block_device_operations' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1985' column='1' id='dbd58b50'> + <class-decl name='block_device_operations' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='1993' column='1' id='dbd58b50'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='open' type-id='2207988a' visibility='default' filepath='include/linux/blkdev.h' line='1986' column='1'/> + <var-decl name='open' type-id='2207988a' visibility='default' filepath='include/linux/blkdev.h' line='1994' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='release' type-id='156433b6' visibility='default' filepath='include/linux/blkdev.h' line='1987' column='1'/> + <var-decl name='release' type-id='156433b6' visibility='default' filepath='include/linux/blkdev.h' line='1995' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rw_page' type-id='55f833ce' visibility='default' filepath='include/linux/blkdev.h' line='1988' column='1'/> + <var-decl name='rw_page' type-id='55f833ce' visibility='default' filepath='include/linux/blkdev.h' line='1996' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1989' column='1'/> + <var-decl name='ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1997' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='compat_ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1990' column='1'/> + <var-decl name='compat_ioctl' type-id='6ed32e60' visibility='default' filepath='include/linux/blkdev.h' line='1998' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='check_events' type-id='4bf65d9d' visibility='default' filepath='include/linux/blkdev.h' line='1991' column='1'/> + <var-decl name='check_events' type-id='4bf65d9d' visibility='default' filepath='include/linux/blkdev.h' line='1999' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='media_changed' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='1994' column='1'/> + <var-decl name='media_changed' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='2002' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='unlock_native_capacity' type-id='dabeff1b' visibility='default' filepath='include/linux/blkdev.h' line='1995' column='1'/> + <var-decl name='unlock_native_capacity' type-id='dabeff1b' visibility='default' filepath='include/linux/blkdev.h' line='2003' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='revalidate_disk' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='1996' column='1'/> + <var-decl name='revalidate_disk' type-id='f220106e' visibility='default' filepath='include/linux/blkdev.h' line='2004' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='getgeo' type-id='68a88aaa' visibility='default' filepath='include/linux/blkdev.h' line='1997' column='1'/> + <var-decl name='getgeo' type-id='68a88aaa' visibility='default' filepath='include/linux/blkdev.h' line='2005' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='swap_slot_free_notify' type-id='c4cac78c' visibility='default' filepath='include/linux/blkdev.h' line='1999' column='1'/> + <var-decl name='swap_slot_free_notify' type-id='c4cac78c' visibility='default' filepath='include/linux/blkdev.h' line='2007' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/blkdev.h' line='2000' column='1'/> + <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/blkdev.h' line='2008' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='pr_ops' type-id='08d45f21' visibility='default' filepath='include/linux/blkdev.h' line='2001' column='1'/> + <var-decl name='pr_ops' type-id='08d45f21' visibility='default' filepath='include/linux/blkdev.h' line='2009' column='1'/> </data-member> </class-decl> - <class-decl name='request' size-in-bits='2432' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='153' column='1' id='ceee71ca'> + <class-decl name='request' size-in-bits='2432' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='161' column='1' id='ceee71ca'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='154' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='162' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='mq_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='155' column='1'/> + <var-decl name='mq_ctx' type-id='9a335021' visibility='default' filepath='include/linux/blkdev.h' line='163' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='cpu' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='157' column='1'/> + <var-decl name='cpu' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='165' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='cmd_flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='158' column='1'/> + <var-decl name='cmd_flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='166' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='rq_flags' type-id='3b445e53' visibility='default' filepath='include/linux/blkdev.h' line='159' column='1'/> + <var-decl name='rq_flags' type-id='3b445e53' visibility='default' filepath='include/linux/blkdev.h' line='167' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='internal_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='161' column='1'/> + <var-decl name='internal_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='169' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='__data_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='164' column='1'/> + <var-decl name='__data_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='172' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='165' column='1'/> + <var-decl name='tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='173' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='__sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='166' column='1'/> + <var-decl name='__sector' type-id='a42536cd' visibility='default' filepath='include/linux/blkdev.h' line='174' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='bio' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='168' column='1'/> + <var-decl name='bio' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='176' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='biotail' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='169' column='1'/> + <var-decl name='biotail' type-id='fb55efa1' visibility='default' filepath='include/linux/blkdev.h' line='177' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='queuelist' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='171' column='1'/> + <var-decl name='queuelist' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='179' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='' type-id='2f76bc4b' visibility='default' filepath='include/linux/blkdev.h' line='180' column='1'/> + <var-decl name='' type-id='2f76bc4b' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='' type-id='df8866ad' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/> + <var-decl name='' type-id='df8866ad' visibility='default' filepath='include/linux/blkdev.h' line='198' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='960'> - <var-decl name='' type-id='7fc3d482' visibility='default' filepath='include/linux/blkdev.h' line='203' column='1'/> + <var-decl name='' type-id='7fc3d482' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='rq_disk' type-id='33c599da' visibility='default' filepath='include/linux/blkdev.h' line='216' column='1'/> + <var-decl name='rq_disk' type-id='33c599da' visibility='default' filepath='include/linux/blkdev.h' line='224' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='part' type-id='84dc82b7' visibility='default' filepath='include/linux/blkdev.h' line='217' column='1'/> + <var-decl name='part' type-id='84dc82b7' visibility='default' filepath='include/linux/blkdev.h' line='225' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='219' column='1'/> + <var-decl name='start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='227' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='io_start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='221' column='1'/> + <var-decl name='io_start_time_ns' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='229' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='nr_phys_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='234' column='1'/> + <var-decl name='nr_phys_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='242' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1488'> - <var-decl name='write_hint' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='240' column='1'/> + <var-decl name='write_hint' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='248' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1504'> - <var-decl name='ioprio' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='241' column='1'/> + <var-decl name='ioprio' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='249' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='special' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='243' column='1'/> + <var-decl name='special' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='251' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='extra_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='245' column='1'/> + <var-decl name='extra_len' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='253' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1632'> - <var-decl name='state' type-id='4df77f20' visibility='default' filepath='include/linux/blkdev.h' line='247' column='1'/> + <var-decl name='state' type-id='4df77f20' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1664'> - <var-decl name='ref' type-id='64615833' visibility='default' filepath='include/linux/blkdev.h' line='248' column='1'/> + <var-decl name='ref' type-id='64615833' visibility='default' filepath='include/linux/blkdev.h' line='256' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1696'> - <var-decl name='timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='250' column='1'/> + <var-decl name='timeout' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='258' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1728'> - <var-decl name='__deadline' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='253' column='1'/> + <var-decl name='__deadline' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='261' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/> + <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='263' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='' type-id='097c5bdb' visibility='default' filepath='include/linux/blkdev.h' line='257' column='1'/> + <var-decl name='' type-id='097c5bdb' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2176'> - <var-decl name='end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1'/> + <var-decl name='end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='273' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2240'> - <var-decl name='end_io_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='266' column='1'/> + <var-decl name='end_io_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='274' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2304'> - <var-decl name='next_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='269' column='1'/> + <var-decl name='next_rq' type-id='3dad1a48' visibility='default' filepath='include/linux/blkdev.h' line='277' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2368'> - <var-decl name='rl' type-id='6a6224ef' visibility='default' filepath='include/linux/blkdev.h' line='272' column='1'/> + <var-decl name='rl' type-id='6a6224ef' visibility='default' filepath='include/linux/blkdev.h' line='280' column='1'/> </data-member> </class-decl> - <typedef-decl name='req_flags_t' type-id='3f1a6b60' filepath='include/linux/blkdev.h' line='83' column='1' id='3b445e53'/> - <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='180' column='1' id='2f76bc4b'> + <typedef-decl name='req_flags_t' type-id='3f1a6b60' filepath='include/linux/blkdev.h' line='91' column='1' id='3b445e53'/> + <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='2f76bc4b'> <data-member access='public'> - <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='181' column='1'/> + <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/> </data-member> <data-member access='public'> - <var-decl name='ipi_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='182' column='1'/> + <var-decl name='ipi_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/> </data-member> </union-decl> - <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1' id='df8866ad'> + <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='198' column='1' id='df8866ad'> <data-member access='public'> - <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='191' column='1'/> + <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='199' column='1'/> </data-member> <data-member access='public'> - <var-decl name='special_vec' type-id='40af3608' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/> + <var-decl name='special_vec' type-id='40af3608' visibility='default' filepath='include/linux/blkdev.h' line='200' column='1'/> </data-member> <data-member access='public'> - <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='193' column='1'/> + <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='201' column='1'/> </data-member> <data-member access='public'> - <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='194' column='1'/> + <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='202' column='1'/> </data-member> </union-decl> <class-decl name='mem_cgroup_id' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/linux/memcontrol.h' line='79' column='1' id='18f7b101'> @@ -122959,70 +122974,70 @@ <var-decl name='map' type-id='c99b5ecd' visibility='default' filepath='include/linux/memcontrol.h' line='120' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__13' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='203' column='1' id='7fc3d482'> + <union-decl name='__anonymous_union__13' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1' id='7fc3d482'> <data-member access='public'> - <var-decl name='elv' type-id='6d001302' visibility='default' filepath='include/linux/blkdev.h' line='207' column='1'/> + <var-decl name='elv' type-id='6d001302' visibility='default' filepath='include/linux/blkdev.h' line='215' column='1'/> </data-member> <data-member access='public'> - <var-decl name='flush' type-id='5596717b' visibility='default' filepath='include/linux/blkdev.h' line='213' column='1'/> + <var-decl name='flush' type-id='5596717b' visibility='default' filepath='include/linux/blkdev.h' line='221' column='1'/> </data-member> </union-decl> - <class-decl name='__anonymous_struct__10' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='204' column='1' id='6d001302'> + <class-decl name='__anonymous_struct__10' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='212' column='1' id='6d001302'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='icq' type-id='7c6e0e0c' visibility='default' filepath='include/linux/blkdev.h' line='205' column='1'/> + <var-decl name='icq' type-id='7c6e0e0c' visibility='default' filepath='include/linux/blkdev.h' line='213' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='priv' type-id='24ae0315' visibility='default' filepath='include/linux/blkdev.h' line='206' column='1'/> + <var-decl name='priv' type-id='24ae0315' visibility='default' filepath='include/linux/blkdev.h' line='214' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__11' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='209' column='1' id='5596717b'> + <class-decl name='__anonymous_struct__11' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='217' column='1' id='5596717b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='seq' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='210' column='1'/> + <var-decl name='seq' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='218' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='219' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='saved_end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='212' column='1'/> + <var-decl name='saved_end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='220' column='1'/> </data-member> </class-decl> - <typedef-decl name='rq_end_io_fn' type-id='06c207bd' filepath='include/linux/blkdev.h' line='60' column='1' id='537d88b1'/> + <typedef-decl name='rq_end_io_fn' type-id='06c207bd' filepath='include/linux/blkdev.h' line='68' column='1' id='537d88b1'/> <typedef-decl name='blk_status_t' type-id='f9b06939' filepath='include/linux/blk_types.h' line='31' column='1' id='f4e2facd'/> - <enum-decl name='mq_rq_state' filepath='include/linux/blkdev.h' line='141' column='1' id='4df77f20'> + <enum-decl name='mq_rq_state' filepath='include/linux/blkdev.h' line='149' column='1' id='4df77f20'> <underlying-type type-id='9cac1fee'/> <enumerator name='MQ_RQ_IDLE' value='0'/> <enumerator name='MQ_RQ_IN_FLIGHT' value='1'/> <enumerator name='MQ_RQ_COMPLETE' value='2'/> </enum-decl> - <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='257' column='1' id='097c5bdb'> + <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='265' column='1' id='097c5bdb'> <data-member access='public'> - <var-decl name='csd' type-id='bb75ea85' visibility='default' filepath='include/linux/blkdev.h' line='258' column='1'/> + <var-decl name='csd' type-id='bb75ea85' visibility='default' filepath='include/linux/blkdev.h' line='266' column='1'/> </data-member> <data-member access='public'> - <var-decl name='fifo_time' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='259' column='1'/> + <var-decl name='fifo_time' type-id='91ce1af9' visibility='default' filepath='include/linux/blkdev.h' line='267' column='1'/> </data-member> </union-decl> - <class-decl name='request_list' size-in-bits='768' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='65' column='1' id='f9b33cd7'> + <class-decl name='request_list' size-in-bits='768' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='73' column='1' id='f9b33cd7'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='66' column='1'/> + <var-decl name='q' type-id='e7d2a5fc' visibility='default' filepath='include/linux/blkdev.h' line='74' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='68' column='1'/> + <var-decl name='blkg' type-id='1146dea3' visibility='default' filepath='include/linux/blkdev.h' line='76' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='count' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='74' column='1'/> + <var-decl name='count' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='82' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='starved' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='75' column='1'/> + <var-decl name='starved' type-id='e4266c7e' visibility='default' filepath='include/linux/blkdev.h' line='83' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='rq_pool' type-id='78713e8f' visibility='default' filepath='include/linux/blkdev.h' line='76' column='1'/> + <var-decl name='rq_pool' type-id='78713e8f' visibility='default' filepath='include/linux/blkdev.h' line='84' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='wait' type-id='9a200504' visibility='default' filepath='include/linux/blkdev.h' line='77' column='1'/> + <var-decl name='wait' type-id='9a200504' visibility='default' filepath='include/linux/blkdev.h' line='85' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='78' column='1'/> + <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='86' column='1'/> </data-member> </class-decl> <typedef-decl name='mempool_t' type-id='5932767e' filepath='include/linux/mempool.h' line='26' column='1' id='2745fad8'/> @@ -123315,44 +123330,44 @@ <var-decl name='store' type-id='1854489e' visibility='default' filepath='include/linux/elevator.h' line='136' column='1'/> </data-member> </class-decl> - <typedef-decl name='request_fn_proc' type-id='a69d8a71' filepath='include/linux/blkdev.h' line='317' column='1' id='9f3af257'/> - <typedef-decl name='make_request_fn' type-id='f8561c55' filepath='include/linux/blkdev.h' line='318' column='1' id='99cd4891'/> + <typedef-decl name='request_fn_proc' type-id='a69d8a71' filepath='include/linux/blkdev.h' line='325' column='1' id='9f3af257'/> + <typedef-decl name='make_request_fn' type-id='f8561c55' filepath='include/linux/blkdev.h' line='326' column='1' id='99cd4891'/> <typedef-decl name='blk_qc_t' type-id='f0981eeb' filepath='include/linux/blk_types.h' line='436' column='1' id='041bc907'/> - <typedef-decl name='poll_q_fn' type-id='3e0de906' filepath='include/linux/blkdev.h' line='319' column='1' id='db8c71fe'/> - <typedef-decl name='prep_rq_fn' type-id='0022f749' filepath='include/linux/blkdev.h' line='320' column='1' id='f77d29c2'/> - <typedef-decl name='unprep_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='321' column='1' id='e9b47ca9'/> - <typedef-decl name='softirq_done_fn' type-id='45e743e9' filepath='include/linux/blkdev.h' line='324' column='1' id='c6e68338'/> - <typedef-decl name='rq_timed_out_fn' type-id='56710942' filepath='include/linux/blkdev.h' line='336' column='1' id='eef687df'/> - <enum-decl name='blk_eh_timer_return' filepath='include/linux/blkdev.h' line='331' column='1' id='0f4f6276'> + <typedef-decl name='poll_q_fn' type-id='3e0de906' filepath='include/linux/blkdev.h' line='327' column='1' id='db8c71fe'/> + <typedef-decl name='prep_rq_fn' type-id='0022f749' filepath='include/linux/blkdev.h' line='328' column='1' id='f77d29c2'/> + <typedef-decl name='unprep_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='329' column='1' id='e9b47ca9'/> + <typedef-decl name='softirq_done_fn' type-id='45e743e9' filepath='include/linux/blkdev.h' line='332' column='1' id='c6e68338'/> + <typedef-decl name='rq_timed_out_fn' type-id='56710942' filepath='include/linux/blkdev.h' line='344' column='1' id='eef687df'/> + <enum-decl name='blk_eh_timer_return' filepath='include/linux/blkdev.h' line='339' column='1' id='0f4f6276'> <underlying-type type-id='9cac1fee'/> <enumerator name='BLK_EH_DONE' value='0'/> <enumerator name='BLK_EH_RESET_TIMER' value='1'/> </enum-decl> - <typedef-decl name='dma_drain_needed_fn' type-id='59bb6212' filepath='include/linux/blkdev.h' line='325' column='1' id='0128515a'/> - <typedef-decl name='lld_busy_fn' type-id='71f4dca2' filepath='include/linux/blkdev.h' line='326' column='1' id='47d86e15'/> - <typedef-decl name='init_rq_fn' type-id='b654143c' filepath='include/linux/blkdev.h' line='328' column='1' id='c1166eeb'/> - <typedef-decl name='exit_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='329' column='1' id='545e1b8d'/> - <class-decl name='blk_queue_tag' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='343' column='1' id='2e2b8e93'> + <typedef-decl name='dma_drain_needed_fn' type-id='59bb6212' filepath='include/linux/blkdev.h' line='333' column='1' id='0128515a'/> + <typedef-decl name='lld_busy_fn' type-id='71f4dca2' filepath='include/linux/blkdev.h' line='334' column='1' id='47d86e15'/> + <typedef-decl name='init_rq_fn' type-id='b654143c' filepath='include/linux/blkdev.h' line='336' column='1' id='c1166eeb'/> + <typedef-decl name='exit_rq_fn' type-id='307b74b6' filepath='include/linux/blkdev.h' line='337' column='1' id='545e1b8d'/> + <class-decl name='blk_queue_tag' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='351' column='1' id='2e2b8e93'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='tag_index' type-id='79808846' visibility='default' filepath='include/linux/blkdev.h' line='344' column='1'/> + <var-decl name='tag_index' type-id='79808846' visibility='default' filepath='include/linux/blkdev.h' line='352' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='tag_map' type-id='1d2c2b85' visibility='default' filepath='include/linux/blkdev.h' line='345' column='1'/> + <var-decl name='tag_map' type-id='1d2c2b85' visibility='default' filepath='include/linux/blkdev.h' line='353' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='346' column='1'/> + <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='354' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='real_max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='347' column='1'/> + <var-decl name='real_max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='355' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='348' column='1'/> + <var-decl name='refcnt' type-id='49178f86' visibility='default' filepath='include/linux/blkdev.h' line='356' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='alloc_policy' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='349' column='1'/> + <var-decl name='alloc_policy' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='357' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='next_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='350' column='1'/> + <var-decl name='next_tag' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='358' column='1'/> </data-member> </class-decl> <class-decl name='blk_rq_stat' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/blk_types.h' line='472' column='1' id='a3274c4b'> @@ -123372,96 +123387,96 @@ <var-decl name='batch' type-id='91ce1af9' visibility='default' filepath='include/linux/blk_types.h' line='477' column='1'/> </data-member> </class-decl> - <class-decl name='queue_limits' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='367' column='1' id='f0966d3d'> + <class-decl name='queue_limits' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/linux/blkdev.h' line='375' column='1' id='f0966d3d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='bounce_pfn' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='368' column='1'/> + <var-decl name='bounce_pfn' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='376' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='seg_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='369' column='1'/> + <var-decl name='seg_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='377' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='virt_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='370' column='1'/> + <var-decl name='virt_boundary_mask' type-id='7359adad' visibility='default' filepath='include/linux/blkdev.h' line='378' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='max_hw_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='372' column='1'/> + <var-decl name='max_hw_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='380' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='max_dev_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='373' column='1'/> + <var-decl name='max_dev_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='381' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='chunk_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='374' column='1'/> + <var-decl name='chunk_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='382' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='max_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='375' column='1'/> + <var-decl name='max_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='383' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='max_segment_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='376' column='1'/> + <var-decl name='max_segment_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='384' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='physical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='377' column='1'/> + <var-decl name='physical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='385' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='logical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='378' column='1'/> + <var-decl name='logical_block_size' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='386' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='alignment_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='379' column='1'/> + <var-decl name='alignment_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='387' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='io_min' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='380' column='1'/> + <var-decl name='io_min' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='388' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='io_opt' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='381' column='1'/> + <var-decl name='io_opt' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='389' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='max_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='382' column='1'/> + <var-decl name='max_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='390' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='544'> - <var-decl name='max_hw_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='383' column='1'/> + <var-decl name='max_hw_discard_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='391' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='max_write_same_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='384' column='1'/> + <var-decl name='max_write_same_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='392' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='608'> - <var-decl name='max_write_zeroes_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='385' column='1'/> + <var-decl name='max_write_zeroes_sectors' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='393' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='discard_granularity' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='386' column='1'/> + <var-decl name='discard_granularity' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='394' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='672'> - <var-decl name='discard_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='387' column='1'/> + <var-decl name='discard_alignment' type-id='f0981eeb' visibility='default' filepath='include/linux/blkdev.h' line='395' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='max_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='389' column='1'/> + <var-decl name='max_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='397' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='720'> - <var-decl name='max_integrity_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='390' column='1'/> + <var-decl name='max_integrity_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='398' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='736'> - <var-decl name='max_discard_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='391' column='1'/> + <var-decl name='max_discard_segments' type-id='8efea9e5' visibility='default' filepath='include/linux/blkdev.h' line='399' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='752'> - <var-decl name='misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='393' column='1'/> + <var-decl name='misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='401' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='760'> - <var-decl name='discard_misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='394' column='1'/> + <var-decl name='discard_misaligned' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='402' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='cluster' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='395' column='1'/> + <var-decl name='cluster' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='403' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='776'> - <var-decl name='raid_partial_stripes_expensive' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='396' column='1'/> + <var-decl name='raid_partial_stripes_expensive' type-id='002ac4a6' visibility='default' filepath='include/linux/blkdev.h' line='404' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='zoned' type-id='a48b5528' visibility='default' filepath='include/linux/blkdev.h' line='397' column='1'/> + <var-decl name='zoned' type-id='a48b5528' visibility='default' filepath='include/linux/blkdev.h' line='405' column='1'/> </data-member> </class-decl> - <enum-decl name='blk_zoned_model' filepath='include/linux/blkdev.h' line='361' column='1' id='a48b5528'> + <enum-decl name='blk_zoned_model' filepath='include/linux/blkdev.h' line='369' column='1' id='a48b5528'> <underlying-type type-id='9cac1fee'/> <enumerator name='BLK_ZONED_NONE' value='0'/> <enumerator name='BLK_ZONED_HA' value='1'/> <enumerator name='BLK_ZONED_HM' value='2'/> </enum-decl> - <typedef-decl name='bsg_job_fn' type-id='f6192657' filepath='include/linux/blkdev.h' line='327' column='1' id='46181ad5'/> + <typedef-decl name='bsg_job_fn' type-id='f6192657' filepath='include/linux/blkdev.h' line='335' column='1' id='46181ad5'/> <class-decl name='bsg_class_device' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/bsg.h' line='17' column='1' id='6a3af55b'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='class_dev' type-id='fa0b179b' visibility='default' filepath='include/linux/bsg.h' line='18' column='1'/> @@ -125958,19 +125973,19 @@ </abi-instr> <abi-instr address-size='64' path='kernel/sys.c' language='LANG_C89'> <var-decl name='overflowuid' type-id='95e97e5e' mangled-name='overflowuid' visibility='default' filepath='kernel/sys.c' line='138' column='1' elf-symbol-id='overflowuid'/> - <function-decl name='set_user_nice' mangled-name='set_user_nice' filepath='include/linux/sched.h' line='1836' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_user_nice'> + <function-decl name='set_user_nice' mangled-name='set_user_nice' filepath='include/linux/sched.h' line='1835' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_user_nice'> <parameter type-id='f23e2572'/> <parameter type-id='bd54fe1a'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='kernel/sysctl.c' language='LANG_C89'> - <function-decl name='proc_doulongvec_minmax' mangled-name='proc_doulongvec_minmax' filepath='kernel/sysctl.c' line='3286' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='proc_doulongvec_minmax'> - <parameter type-id='631dc3c1' name='table' filepath='kernel/sysctl.c' line='3286' column='1'/> - <parameter type-id='95e97e5e' name='write' filepath='kernel/sysctl.c' line='3286' column='1'/> - <parameter type-id='eaa32e2f' name='buffer' filepath='kernel/sysctl.c' line='3287' column='1'/> - <parameter type-id='78c01427' name='lenp' filepath='kernel/sysctl.c' line='3287' column='1'/> - <parameter type-id='b53e8dbb' name='ppos' filepath='kernel/sysctl.c' line='3287' column='1'/> + <function-decl name='proc_doulongvec_minmax' mangled-name='proc_doulongvec_minmax' filepath='kernel/sysctl.c' line='3315' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='proc_doulongvec_minmax'> + <parameter type-id='631dc3c1' name='table' filepath='kernel/sysctl.c' line='3315' column='1'/> + <parameter type-id='95e97e5e' name='write' filepath='kernel/sysctl.c' line='3315' column='1'/> + <parameter type-id='eaa32e2f' name='buffer' filepath='kernel/sysctl.c' line='3316' column='1'/> + <parameter type-id='78c01427' name='lenp' filepath='kernel/sysctl.c' line='3316' column='1'/> + <parameter type-id='b53e8dbb' name='ppos' filepath='kernel/sysctl.c' line='3316' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -126672,14 +126687,14 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='kernel/trace/trace_events.c' language='LANG_C89'> - <function-decl name='trace_event_raw_init' mangled-name='trace_event_raw_init' filepath='kernel/trace/trace_events.c' line='225' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_raw_init'> - <parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='225' column='1'/> + <function-decl name='trace_event_raw_init' mangled-name='trace_event_raw_init' filepath='kernel/trace/trace_events.c' line='226' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_raw_init'> + <parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='226' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='trace_event_reg' mangled-name='trace_event_reg' filepath='kernel/trace/trace_events.c' line='287' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_reg'> - <parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='287' column='1'/> - <parameter type-id='7fa6eeb8' name='type' filepath='kernel/trace/trace_events.c' line='288' column='1'/> - <parameter type-id='eaa32e2f' name='data' filepath='kernel/trace/trace_events.c' line='288' column='1'/> + <function-decl name='trace_event_reg' mangled-name='trace_event_reg' filepath='kernel/trace/trace_events.c' line='288' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_reg'> + <parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='288' column='1'/> + <parameter type-id='7fa6eeb8' name='type' filepath='kernel/trace/trace_events.c' line='289' column='1'/> + <parameter type-id='eaa32e2f' name='data' filepath='kernel/trace/trace_events.c' line='289' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -127106,12 +127121,12 @@ <var-decl name='no_numa' type-id='b50a4934' visibility='default' filepath='include/linux/workqueue.h' line='161' column='1'/> </data-member> </class-decl> - <class-decl name='wq_device' size-in-bits='7680' is-struct='yes' visibility='default' filepath='kernel/workqueue.c' line='5223' column='1' id='a88ecfc8'> + <class-decl name='wq_device' size-in-bits='7680' is-struct='yes' visibility='default' filepath='kernel/workqueue.c' line='5221' column='1' id='a88ecfc8'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='wq' type-id='242e3d19' visibility='default' filepath='kernel/workqueue.c' line='5224' column='1'/> + <var-decl name='wq' type-id='242e3d19' visibility='default' filepath='kernel/workqueue.c' line='5222' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='kernel/workqueue.c' line='5225' column='1'/> + <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='kernel/workqueue.c' line='5223' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='b0355154' size-in-bits='64' id='a7a31b92'/> @@ -127120,12 +127135,12 @@ <pointer-type-def type-id='2fe6f208' size-in-bits='64' id='cfd15e7e'/> <pointer-type-def type-id='a88ecfc8' size-in-bits='64' id='5cebc26e'/> <pointer-type-def type-id='c8eb0f4f' size-in-bits='64' id='ec037527'/> - <function-decl name='__alloc_workqueue_key' mangled-name='__alloc_workqueue_key' filepath='kernel/workqueue.c' line='4112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__alloc_workqueue_key'> - <parameter type-id='80f4b756' name='fmt' filepath='kernel/workqueue.c' line='4112' column='1'/> - <parameter type-id='f0981eeb' name='flags' filepath='kernel/workqueue.c' line='4113' column='1'/> - <parameter type-id='95e97e5e' name='max_active' filepath='kernel/workqueue.c' line='4114' column='1'/> - <parameter type-id='a57283f9' name='key' filepath='kernel/workqueue.c' line='4115' column='1'/> - <parameter type-id='80f4b756' name='lock_name' filepath='kernel/workqueue.c' line='4116' column='1'/> + <function-decl name='__alloc_workqueue_key' mangled-name='__alloc_workqueue_key' filepath='kernel/workqueue.c' line='4110' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__alloc_workqueue_key'> + <parameter type-id='80f4b756' name='fmt' filepath='kernel/workqueue.c' line='4110' column='1'/> + <parameter type-id='f0981eeb' name='flags' filepath='kernel/workqueue.c' line='4111' column='1'/> + <parameter type-id='95e97e5e' name='max_active' filepath='kernel/workqueue.c' line='4112' column='1'/> + <parameter type-id='a57283f9' name='key' filepath='kernel/workqueue.c' line='4113' column='1'/> + <parameter type-id='80f4b756' name='lock_name' filepath='kernel/workqueue.c' line='4114' column='1'/> <parameter is-variadic='yes'/> <return type-id='242e3d19'/> </function-decl> @@ -127158,12 +127173,12 @@ <parameter type-id='95e97e5e'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='flush_delayed_work' mangled-name='flush_delayed_work' filepath='kernel/workqueue.c' line='3108' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='flush_delayed_work'> - <parameter type-id='1a7ee447' name='dwork' filepath='kernel/workqueue.c' line='3108' column='1'/> + <function-decl name='flush_delayed_work' mangled-name='flush_delayed_work' filepath='kernel/workqueue.c' line='3106' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='flush_delayed_work'> + <parameter type-id='1a7ee447' name='dwork' filepath='kernel/workqueue.c' line='3106' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='destroy_workqueue' mangled-name='destroy_workqueue' filepath='kernel/workqueue.c' line='4214' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='destroy_workqueue'> - <parameter type-id='242e3d19' name='wq' filepath='kernel/workqueue.c' line='4214' column='1'/> + <function-decl name='destroy_workqueue' mangled-name='destroy_workqueue' filepath='kernel/workqueue.c' line='4212' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='destroy_workqueue'> + <parameter type-id='242e3d19' name='wq' filepath='kernel/workqueue.c' line='4212' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='kthread_stop' mangled-name='kthread_stop' filepath='include/linux/kthread.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kthread_stop'> @@ -127401,8 +127416,8 @@ <parameter type-id='e84b031a' name='next' filepath='lib/list_debug.c' line='21' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='__list_del_entry_valid' mangled-name='__list_del_entry_valid' filepath='lib/list_debug.c' line='38' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__list_del_entry_valid'> - <parameter type-id='e84b031a' name='entry' filepath='lib/list_debug.c' line='38' column='1'/> + <function-decl name='__list_del_entry_valid' mangled-name='__list_del_entry_valid' filepath='lib/list_debug.c' line='42' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__list_del_entry_valid'> + <parameter type-id='e84b031a' name='entry' filepath='lib/list_debug.c' line='42' column='1'/> <return type-id='b50a4934'/> </function-decl> </abi-instr> @@ -127654,29 +127669,29 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='lib/vsprintf.c' language='LANG_C89'> - <function-decl name='vsnprintf' mangled-name='vsnprintf' filepath='lib/vsprintf.c' line='2272' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vsnprintf'> - <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2272' column='1'/> - <parameter type-id='b59d7dce' name='size' filepath='lib/vsprintf.c' line='2272' column='1'/> - <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2272' column='1'/> - <parameter type-id='2aee9912' name='args' filepath='lib/vsprintf.c' line='2272' column='1'/> + <function-decl name='vsnprintf' mangled-name='vsnprintf' filepath='lib/vsprintf.c' line='2274' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vsnprintf'> + <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2274' column='1'/> + <parameter type-id='b59d7dce' name='size' filepath='lib/vsprintf.c' line='2274' column='1'/> + <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2274' column='1'/> + <parameter type-id='2aee9912' name='args' filepath='lib/vsprintf.c' line='2274' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snprintf' mangled-name='snprintf' filepath='lib/vsprintf.c' line='2469' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snprintf'> - <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2469' column='1'/> - <parameter type-id='b59d7dce' name='size' filepath='lib/vsprintf.c' line='2469' column='1'/> - <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2469' column='1'/> + <function-decl name='snprintf' mangled-name='snprintf' filepath='lib/vsprintf.c' line='2471' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snprintf'> + <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2471' column='1'/> + <parameter type-id='b59d7dce' name='size' filepath='lib/vsprintf.c' line='2471' column='1'/> + <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2471' column='1'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sprintf' mangled-name='sprintf' filepath='lib/vsprintf.c' line='2538' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sprintf'> - <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2538' column='1'/> - <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2538' column='1'/> + <function-decl name='sprintf' mangled-name='sprintf' filepath='lib/vsprintf.c' line='2540' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sprintf'> + <parameter type-id='26a90f95' name='buf' filepath='lib/vsprintf.c' line='2540' column='1'/> + <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='2540' column='1'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sscanf' mangled-name='sscanf' filepath='lib/vsprintf.c' line='3229' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sscanf'> - <parameter type-id='80f4b756' name='buf' filepath='lib/vsprintf.c' line='3229' column='1'/> - <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='3229' column='1'/> + <function-decl name='sscanf' mangled-name='sscanf' filepath='lib/vsprintf.c' line='3231' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sscanf'> + <parameter type-id='80f4b756' name='buf' filepath='lib/vsprintf.c' line='3231' column='1'/> + <parameter type-id='80f4b756' name='fmt' filepath='lib/vsprintf.c' line='3231' column='1'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> @@ -128137,9 +128152,9 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='mm/memblock.c' language='LANG_C89'> - <function-decl name='memblock_overlaps_memory' mangled-name='memblock_overlaps_memory' filepath='mm/memblock.c' line='1750' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='memblock_overlaps_memory'> - <parameter type-id='2522883d' name='base' filepath='mm/memblock.c' line='1750' column='1'/> - <parameter type-id='2522883d' name='size' filepath='mm/memblock.c' line='1751' column='1'/> + <function-decl name='memblock_overlaps_memory' mangled-name='memblock_overlaps_memory' filepath='mm/memblock.c' line='1756' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='memblock_overlaps_memory'> + <parameter type-id='2522883d' name='base' filepath='mm/memblock.c' line='1756' column='1'/> + <parameter type-id='2522883d' name='size' filepath='mm/memblock.c' line='1757' column='1'/> <return type-id='b50a4934'/> </function-decl> </abi-instr> @@ -128147,28 +128162,28 @@ <var-decl name='memcg_sockets_enabled_key' type-id='237c0d27' mangled-name='memcg_sockets_enabled_key' visibility='default' filepath='mm/memcontrol.c' line='6320' column='1' elf-symbol-id='memcg_sockets_enabled_key'/> </abi-instr> <abi-instr address-size='64' path='mm/memory.c' language='LANG_C89'> - <function-decl name='vm_insert_page' mangled-name='vm_insert_page' filepath='mm/memory.c' line='1812' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_page'> - <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='1812' column='1'/> - <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='1812' column='1'/> - <parameter type-id='02f11ed4' name='page' filepath='mm/memory.c' line='1813' column='1'/> + <function-decl name='vm_insert_page' mangled-name='vm_insert_page' filepath='mm/memory.c' line='1825' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_page'> + <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='1825' column='1'/> + <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='1825' column='1'/> + <parameter type-id='02f11ed4' name='page' filepath='mm/memory.c' line='1826' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vm_insert_pfn' mangled-name='vm_insert_pfn' filepath='mm/memory.c' line='1903' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_pfn'> - <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='1903' column='1'/> - <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='1903' column='1'/> - <parameter type-id='7359adad' name='pfn' filepath='mm/memory.c' line='1904' column='1'/> + <function-decl name='vm_insert_pfn' mangled-name='vm_insert_pfn' filepath='mm/memory.c' line='1916' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_pfn'> + <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='1916' column='1'/> + <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='1916' column='1'/> + <parameter type-id='7359adad' name='pfn' filepath='mm/memory.c' line='1917' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vm_insert_mixed' mangled-name='vm_insert_mixed' filepath='mm/memory.c' line='2007' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_mixed'> - <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='2007' column='1'/> - <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='2007' column='1'/> - <parameter type-id='abe59ef3' name='pfn' filepath='mm/memory.c' line='2008' column='1'/> + <function-decl name='vm_insert_mixed' mangled-name='vm_insert_mixed' filepath='mm/memory.c' line='2020' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_insert_mixed'> + <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='2020' column='1'/> + <parameter type-id='7359adad' name='addr' filepath='mm/memory.c' line='2020' column='1'/> + <parameter type-id='abe59ef3' name='pfn' filepath='mm/memory.c' line='2021' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vm_iomap_memory' mangled-name='vm_iomap_memory' filepath='mm/memory.c' line='2215' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_iomap_memory'> - <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='2215' column='1'/> - <parameter type-id='2522883d' name='start' filepath='mm/memory.c' line='2215' column='1'/> - <parameter type-id='7359adad' name='len' filepath='mm/memory.c' line='2215' column='1'/> + <function-decl name='vm_iomap_memory' mangled-name='vm_iomap_memory' filepath='mm/memory.c' line='2228' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vm_iomap_memory'> + <parameter type-id='2ae08426' name='vma' filepath='mm/memory.c' line='2228' column='1'/> + <parameter type-id='2522883d' name='start' filepath='mm/memory.c' line='2228' column='1'/> + <parameter type-id='7359adad' name='len' filepath='mm/memory.c' line='2228' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -128204,24 +128219,24 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='mm/mmap.c' language='LANG_C89'> - <class-decl name='vm_unmapped_area_info' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/mm.h' line='2409' column='1' id='867dcb9c'> + <class-decl name='vm_unmapped_area_info' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/mm.h' line='2411' column='1' id='867dcb9c'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2411' column='1'/> + <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2413' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='length' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2412' column='1'/> + <var-decl name='length' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2414' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='low_limit' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2413' column='1'/> + <var-decl name='low_limit' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2415' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='high_limit' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2414' column='1'/> + <var-decl name='high_limit' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2416' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='align_mask' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2415' column='1'/> + <var-decl name='align_mask' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2417' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='align_offset' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2416' column='1'/> + <var-decl name='align_offset' type-id='7359adad' visibility='default' filepath='include/linux/mm.h' line='2418' column='1'/> </data-member> </class-decl> <pointer-type-def type-id='867dcb9c' size-in-bits='64' id='452b82fa'/> @@ -128233,8 +128248,8 @@ <parameter type-id='7359adad'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='unmapped_area_topdown' mangled-name='unmapped_area_topdown' filepath='mm/mmap.c' line='1954' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unmapped_area_topdown'> - <parameter type-id='452b82fa' name='info' filepath='mm/mmap.c' line='1954' column='1'/> + <function-decl name='unmapped_area_topdown' mangled-name='unmapped_area_topdown' filepath='mm/mmap.c' line='1957' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unmapped_area_topdown'> + <parameter type-id='452b82fa' name='info' filepath='mm/mmap.c' line='1957' column='1'/> <return type-id='7359adad'/> </function-decl> </abi-instr> @@ -128260,14 +128275,14 @@ <abi-instr address-size='64' path='mm/page_alloc.c' language='LANG_C89'> <pointer-type-def type-id='6a7d16bb' size-in-bits='64' id='f461c050'/> <var-decl name='totalram_pages' type-id='7359adad' mangled-name='totalram_pages' visibility='default' filepath='mm/page_alloc.c' line='130' column='1' elf-symbol-id='totalram_pages'/> - <function-decl name='__free_pages' mangled-name='__free_pages' filepath='mm/page_alloc.c' line='4691' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__free_pages'> - <parameter type-id='02f11ed4' name='page' filepath='mm/page_alloc.c' line='4691' column='1'/> - <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4691' column='1'/> + <function-decl name='__free_pages' mangled-name='__free_pages' filepath='mm/page_alloc.c' line='4725' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__free_pages'> + <parameter type-id='02f11ed4' name='page' filepath='mm/page_alloc.c' line='4725' column='1'/> + <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4725' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='adjust_managed_page_count' mangled-name='adjust_managed_page_count' filepath='mm/page_alloc.c' line='7262' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='adjust_managed_page_count'> - <parameter type-id='02f11ed4' name='page' filepath='mm/page_alloc.c' line='7262' column='1'/> - <parameter type-id='bd54fe1a' name='count' filepath='mm/page_alloc.c' line='7262' column='1'/> + <function-decl name='adjust_managed_page_count' mangled-name='adjust_managed_page_count' filepath='mm/page_alloc.c' line='7314' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='adjust_managed_page_count'> + <parameter type-id='02f11ed4' name='page' filepath='mm/page_alloc.c' line='7314' column='1'/> + <parameter type-id='bd54fe1a' name='count' filepath='mm/page_alloc.c' line='7314' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='zone_watermark_ok_safe' mangled-name='zone_watermark_ok_safe' filepath='mm/page_alloc.c' line='3407' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='zone_watermark_ok_safe'> @@ -128277,24 +128292,24 @@ <parameter type-id='95e97e5e' name='classzone_idx' filepath='mm/page_alloc.c' line='3408' column='1'/> <return type-id='b50a4934'/> </function-decl> - <function-decl name='__alloc_pages_nodemask' mangled-name='__alloc_pages_nodemask' filepath='mm/page_alloc.c' line='4601' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__alloc_pages_nodemask'> - <parameter type-id='3eb7c31c' name='gfp_mask' filepath='mm/page_alloc.c' line='4601' column='1'/> - <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4601' column='1'/> - <parameter type-id='95e97e5e' name='preferred_nid' filepath='mm/page_alloc.c' line='4601' column='1'/> - <parameter type-id='f461c050' name='nodemask' filepath='mm/page_alloc.c' line='4602' column='1'/> + <function-decl name='__alloc_pages_nodemask' mangled-name='__alloc_pages_nodemask' filepath='mm/page_alloc.c' line='4635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__alloc_pages_nodemask'> + <parameter type-id='3eb7c31c' name='gfp_mask' filepath='mm/page_alloc.c' line='4635' column='1'/> + <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4635' column='1'/> + <parameter type-id='95e97e5e' name='preferred_nid' filepath='mm/page_alloc.c' line='4635' column='1'/> + <parameter type-id='f461c050' name='nodemask' filepath='mm/page_alloc.c' line='4636' column='1'/> <return type-id='02f11ed4'/> </function-decl> - <function-decl name='__get_free_pages' mangled-name='__get_free_pages' filepath='mm/page_alloc.c' line='4666' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__get_free_pages'> - <parameter type-id='3eb7c31c' name='gfp_mask' filepath='mm/page_alloc.c' line='4666' column='1'/> - <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4666' column='1'/> + <function-decl name='__get_free_pages' mangled-name='__get_free_pages' filepath='mm/page_alloc.c' line='4700' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__get_free_pages'> + <parameter type-id='3eb7c31c' name='gfp_mask' filepath='mm/page_alloc.c' line='4700' column='1'/> + <parameter type-id='f0981eeb' name='order' filepath='mm/page_alloc.c' line='4700' column='1'/> <return type-id='7359adad'/> </function-decl> - <function-decl name='free_pages_exact' mangled-name='free_pages_exact' filepath='mm/page_alloc.c' line='4885' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_pages_exact'> - <parameter type-id='eaa32e2f' name='virt' filepath='mm/page_alloc.c' line='4885' column='1'/> - <parameter type-id='b59d7dce' name='size' filepath='mm/page_alloc.c' line='4885' column='1'/> + <function-decl name='free_pages_exact' mangled-name='free_pages_exact' filepath='mm/page_alloc.c' line='4931' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='free_pages_exact'> + <parameter type-id='eaa32e2f' name='virt' filepath='mm/page_alloc.c' line='4931' column='1'/> + <parameter type-id='b59d7dce' name='size' filepath='mm/page_alloc.c' line='4931' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='nr_free_buffer_pages' mangled-name='nr_free_buffer_pages' filepath='mm/page_alloc.c' line='4933' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nr_free_buffer_pages'> + <function-decl name='nr_free_buffer_pages' mangled-name='nr_free_buffer_pages' filepath='mm/page_alloc.c' line='4979' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='nr_free_buffer_pages'> <return type-id='7359adad'/> </function-decl> </abi-instr> @@ -128323,10 +128338,10 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='mm/shmem.c' language='LANG_C89'> - <function-decl name='shmem_truncate_range' mangled-name='shmem_truncate_range' filepath='mm/shmem.c' line='993' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='shmem_truncate_range'> - <parameter type-id='7e666abe' name='inode' filepath='mm/shmem.c' line='993' column='1'/> - <parameter type-id='69bf7bee' name='lstart' filepath='mm/shmem.c' line='993' column='1'/> - <parameter type-id='69bf7bee' name='lend' filepath='mm/shmem.c' line='993' column='1'/> + <function-decl name='shmem_truncate_range' mangled-name='shmem_truncate_range' filepath='mm/shmem.c' line='998' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='shmem_truncate_range'> + <parameter type-id='7e666abe' name='inode' filepath='mm/shmem.c' line='998' column='1'/> + <parameter type-id='69bf7bee' name='lstart' filepath='mm/shmem.c' line='998' column='1'/> + <parameter type-id='69bf7bee' name='lend' filepath='mm/shmem.c' line='998' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='generic_fillattr' mangled-name='generic_fillattr' filepath='include/linux/fs.h' line='3209' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='generic_fillattr'> @@ -128515,9 +128530,9 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='mm/util.c' language='LANG_C89'> - <function-decl name='vmemdup_user' mangled-name='vmemdup_user' filepath='mm/util.c' line='182' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vmemdup_user'> - <parameter type-id='eaa32e2f' name='src' filepath='mm/util.c' line='182' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='mm/util.c' line='182' column='1'/> + <function-decl name='vmemdup_user' mangled-name='vmemdup_user' filepath='mm/util.c' line='183' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vmemdup_user'> + <parameter type-id='eaa32e2f' name='src' filepath='mm/util.c' line='183' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='mm/util.c' line='183' column='1'/> <return type-id='eaa32e2f'/> </function-decl> </abi-instr> @@ -128941,7 +128956,7 @@ <var-decl name='dist' type-id='1dc6a898' visibility='default' filepath='include/linux/cpu_rmap.h' line='33' column='1'/> </data-member> </class-decl> - <enum-decl name='skb_free_reason' filepath='include/linux/netdevice.h' line='3566' column='1' id='1f17c6b4'> + <enum-decl name='skb_free_reason' filepath='include/linux/netdevice.h' line='3567' column='1' id='1f17c6b4'> <underlying-type type-id='9cac1fee'/> <enumerator name='SKB_REASON_CONSUMED' value='0'/> <enumerator name='SKB_REASON_DROPPED' value='1'/> @@ -129182,7 +129197,7 @@ <subrange length='64' type-id='7ff19f0f' id='b10be967'/> </array-type-def> <pointer-type-def type-id='2a693ac3' size-in-bits='64' id='896f1b83'/> - <function-decl name='net_enable_timestamp' mangled-name='net_enable_timestamp' filepath='include/linux/netdevice.h' line='4386' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='net_enable_timestamp'> + <function-decl name='net_enable_timestamp' mangled-name='net_enable_timestamp' filepath='include/linux/netdevice.h' line='4389' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='net_enable_timestamp'> <return type-id='48b5725f'/> </function-decl> <function-decl name='sock_wfree' mangled-name='sock_wfree' filepath='net/core/sock.c' line='1824' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_wfree'> @@ -129204,107 +129219,107 @@ <parameter type-id='7292109c' name='errcode' filepath='net/core/sock.c' line='2123' column='1'/> <return type-id='0fbf3cfd'/> </function-decl> - <function-decl name='__sk_mem_schedule' mangled-name='__sk_mem_schedule' filepath='net/core/sock.c' line='2507' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__sk_mem_schedule'> - <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2507' column='1'/> - <parameter type-id='95e97e5e' name='size' filepath='net/core/sock.c' line='2507' column='1'/> - <parameter type-id='95e97e5e' name='kind' filepath='net/core/sock.c' line='2507' column='1'/> + <function-decl name='__sk_mem_schedule' mangled-name='__sk_mem_schedule' filepath='net/core/sock.c' line='2504' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__sk_mem_schedule'> + <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2504' column='1'/> + <parameter type-id='95e97e5e' name='size' filepath='net/core/sock.c' line='2504' column='1'/> + <parameter type-id='95e97e5e' name='kind' filepath='net/core/sock.c' line='2504' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='__sk_mem_reclaim' mangled-name='__sk_mem_reclaim' filepath='net/core/sock.c' line='2544' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__sk_mem_reclaim'> - <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2544' column='1'/> - <parameter type-id='95e97e5e' name='amount' filepath='net/core/sock.c' line='2544' column='1'/> + <function-decl name='__sk_mem_reclaim' mangled-name='__sk_mem_reclaim' filepath='net/core/sock.c' line='2541' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__sk_mem_reclaim'> + <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2541' column='1'/> + <parameter type-id='95e97e5e' name='amount' filepath='net/core/sock.c' line='2541' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='sock_no_socketpair' mangled-name='sock_no_socketpair' filepath='net/core/sock.c' line='2579' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_socketpair'> - <parameter type-id='13103032' name='sock1' filepath='net/core/sock.c' line='2579' column='1'/> - <parameter type-id='13103032' name='sock2' filepath='net/core/sock.c' line='2579' column='1'/> + <function-decl name='sock_no_socketpair' mangled-name='sock_no_socketpair' filepath='net/core/sock.c' line='2576' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_socketpair'> + <parameter type-id='13103032' name='sock1' filepath='net/core/sock.c' line='2576' column='1'/> + <parameter type-id='13103032' name='sock2' filepath='net/core/sock.c' line='2576' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_accept' mangled-name='sock_no_accept' filepath='net/core/sock.c' line='2585' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_accept'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2585' column='1'/> - <parameter type-id='13103032' name='newsock' filepath='net/core/sock.c' line='2585' column='1'/> - <parameter type-id='95e97e5e' name='flags' filepath='net/core/sock.c' line='2585' column='1'/> - <parameter type-id='b50a4934' name='kern' filepath='net/core/sock.c' line='2586' column='1'/> + <function-decl name='sock_no_accept' mangled-name='sock_no_accept' filepath='net/core/sock.c' line='2582' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_accept'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2582' column='1'/> + <parameter type-id='13103032' name='newsock' filepath='net/core/sock.c' line='2582' column='1'/> + <parameter type-id='95e97e5e' name='flags' filepath='net/core/sock.c' line='2582' column='1'/> + <parameter type-id='b50a4934' name='kern' filepath='net/core/sock.c' line='2583' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_listen' mangled-name='sock_no_listen' filepath='net/core/sock.c' line='2605' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_listen'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2605' column='1'/> - <parameter type-id='95e97e5e' name='backlog' filepath='net/core/sock.c' line='2605' column='1'/> + <function-decl name='sock_no_listen' mangled-name='sock_no_listen' filepath='net/core/sock.c' line='2602' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_listen'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2602' column='1'/> + <parameter type-id='95e97e5e' name='backlog' filepath='net/core/sock.c' line='2602' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_shutdown' mangled-name='sock_no_shutdown' filepath='net/core/sock.c' line='2611' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_shutdown'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2611' column='1'/> - <parameter type-id='95e97e5e' name='how' filepath='net/core/sock.c' line='2611' column='1'/> + <function-decl name='sock_no_shutdown' mangled-name='sock_no_shutdown' filepath='net/core/sock.c' line='2608' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_shutdown'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2608' column='1'/> + <parameter type-id='95e97e5e' name='how' filepath='net/core/sock.c' line='2608' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_setsockopt' mangled-name='sock_no_setsockopt' filepath='net/core/sock.c' line='2617' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_setsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2617' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='2617' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='2617' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='2618' column='1'/> - <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='2618' column='1'/> + <function-decl name='sock_no_setsockopt' mangled-name='sock_no_setsockopt' filepath='net/core/sock.c' line='2614' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_setsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2614' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='2614' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='2614' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='2615' column='1'/> + <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='2615' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_getsockopt' mangled-name='sock_no_getsockopt' filepath='net/core/sock.c' line='2624' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_getsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2624' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='2624' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='2624' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='2625' column='1'/> - <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='2625' column='1'/> + <function-decl name='sock_no_getsockopt' mangled-name='sock_no_getsockopt' filepath='net/core/sock.c' line='2621' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_getsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2621' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='2621' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='2621' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='2622' column='1'/> + <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='2622' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_no_mmap' mangled-name='sock_no_mmap' filepath='net/core/sock.c' line='2650' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_mmap'> - <parameter type-id='77e79a4b' name='file' filepath='net/core/sock.c' line='2650' column='1'/> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2650' column='1'/> - <parameter type-id='2ae08426' name='vma' filepath='net/core/sock.c' line='2650' column='1'/> + <function-decl name='sock_no_mmap' mangled-name='sock_no_mmap' filepath='net/core/sock.c' line='2647' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_no_mmap'> + <parameter type-id='77e79a4b' name='file' filepath='net/core/sock.c' line='2647' column='1'/> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='2647' column='1'/> + <parameter type-id='2ae08426' name='vma' filepath='net/core/sock.c' line='2647' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_get_timestamp' mangled-name='sock_get_timestamp' filepath='net/core/sock.c' line='2952' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_get_timestamp'> - <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2952' column='1'/> - <parameter type-id='896f1b83' name='userstamp' filepath='net/core/sock.c' line='2952' column='1'/> + <function-decl name='sock_get_timestamp' mangled-name='sock_get_timestamp' filepath='net/core/sock.c' line='2949' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_get_timestamp'> + <parameter type-id='f772df6d' name='sk' filepath='net/core/sock.c' line='2949' column='1'/> + <parameter type-id='896f1b83' name='userstamp' filepath='net/core/sock.c' line='2949' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_common_getsockopt' mangled-name='sock_common_getsockopt' filepath='net/core/sock.c' line='3046' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_common_getsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3046' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3046' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3046' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3047' column='1'/> - <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='3047' column='1'/> + <function-decl name='sock_common_getsockopt' mangled-name='sock_common_getsockopt' filepath='net/core/sock.c' line='3043' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_common_getsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3043' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3043' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3043' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3044' column='1'/> + <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='3044' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='compat_sock_common_getsockopt' mangled-name='compat_sock_common_getsockopt' filepath='net/core/sock.c' line='3056' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='compat_sock_common_getsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3056' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3056' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3056' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3057' column='1'/> - <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='3057' column='1'/> + <function-decl name='compat_sock_common_getsockopt' mangled-name='compat_sock_common_getsockopt' filepath='net/core/sock.c' line='3053' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='compat_sock_common_getsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3053' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3053' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3053' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3054' column='1'/> + <parameter type-id='7292109c' name='optlen' filepath='net/core/sock.c' line='3054' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_common_setsockopt' mangled-name='sock_common_setsockopt' filepath='net/core/sock.c' line='3087' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_common_setsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3087' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3087' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3087' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3088' column='1'/> - <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='3088' column='1'/> + <function-decl name='sock_common_setsockopt' mangled-name='sock_common_setsockopt' filepath='net/core/sock.c' line='3084' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_common_setsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3084' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3084' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3084' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3085' column='1'/> + <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='3085' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='compat_sock_common_setsockopt' mangled-name='compat_sock_common_setsockopt' filepath='net/core/sock.c' line='3097' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='compat_sock_common_setsockopt'> - <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3097' column='1'/> - <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3097' column='1'/> - <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3097' column='1'/> - <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3098' column='1'/> - <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='3098' column='1'/> + <function-decl name='compat_sock_common_setsockopt' mangled-name='compat_sock_common_setsockopt' filepath='net/core/sock.c' line='3094' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='compat_sock_common_setsockopt'> + <parameter type-id='13103032' name='sock' filepath='net/core/sock.c' line='3094' column='1'/> + <parameter type-id='95e97e5e' name='level' filepath='net/core/sock.c' line='3094' column='1'/> + <parameter type-id='95e97e5e' name='optname' filepath='net/core/sock.c' line='3094' column='1'/> + <parameter type-id='26a90f95' name='optval' filepath='net/core/sock.c' line='3095' column='1'/> + <parameter type-id='f0981eeb' name='optlen' filepath='net/core/sock.c' line='3095' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='sock_prot_inuse_add' mangled-name='sock_prot_inuse_add' filepath='net/core/sock.c' line='3170' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_prot_inuse_add'> - <parameter type-id='a2bff676' name='net' filepath='net/core/sock.c' line='3170' column='1'/> - <parameter type-id='d2524501' name='prot' filepath='net/core/sock.c' line='3170' column='1'/> - <parameter type-id='95e97e5e' name='val' filepath='net/core/sock.c' line='3170' column='1'/> + <function-decl name='sock_prot_inuse_add' mangled-name='sock_prot_inuse_add' filepath='net/core/sock.c' line='3167' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sock_prot_inuse_add'> + <parameter type-id='a2bff676' name='net' filepath='net/core/sock.c' line='3167' column='1'/> + <parameter type-id='d2524501' name='prot' filepath='net/core/sock.c' line='3167' column='1'/> + <parameter type-id='95e97e5e' name='val' filepath='net/core/sock.c' line='3167' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='sk_busy_loop_end' mangled-name='sk_busy_loop_end' filepath='net/core/sock.c' line='3529' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sk_busy_loop_end'> - <parameter type-id='eaa32e2f' name='p' filepath='net/core/sock.c' line='3529' column='1'/> - <parameter type-id='7359adad' name='start_time' filepath='net/core/sock.c' line='3529' column='1'/> + <function-decl name='sk_busy_loop_end' mangled-name='sk_busy_loop_end' filepath='net/core/sock.c' line='3526' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sk_busy_loop_end'> + <parameter type-id='eaa32e2f' name='p' filepath='net/core/sock.c' line='3526' column='1'/> + <parameter type-id='7359adad' name='start_time' filepath='net/core/sock.c' line='3526' column='1'/> <return type-id='b50a4934'/> </function-decl> </abi-instr> @@ -129804,10 +129819,10 @@ <parameter type-id='a976bab6' name='p' filepath='net/ipv4/af_inet.c' line='1169' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='snmp_get_cpu_field' mangled-name='snmp_get_cpu_field' filepath='net/ipv4/af_inet.c' line='1610' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snmp_get_cpu_field'> - <parameter type-id='eaa32e2f' name='mib' filepath='net/ipv4/af_inet.c' line='1610' column='1'/> - <parameter type-id='95e97e5e' name='cpu' filepath='net/ipv4/af_inet.c' line='1610' column='1'/> - <parameter type-id='95e97e5e' name='offt' filepath='net/ipv4/af_inet.c' line='1610' column='1'/> + <function-decl name='snmp_get_cpu_field' mangled-name='snmp_get_cpu_field' filepath='net/ipv4/af_inet.c' line='1613' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snmp_get_cpu_field'> + <parameter type-id='eaa32e2f' name='mib' filepath='net/ipv4/af_inet.c' line='1613' column='1'/> + <parameter type-id='95e97e5e' name='cpu' filepath='net/ipv4/af_inet.c' line='1613' column='1'/> + <parameter type-id='95e97e5e' name='offt' filepath='net/ipv4/af_inet.c' line='1613' column='1'/> <return type-id='91ce1af9'/> </function-decl> <pointer-type-def type-id='6a4401f0' size-in-bits='64' id='a976bab6'/> @@ -129865,15 +129880,15 @@ <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/net/protocol.h' line='74' column='1'/> </data-member> </class-decl> - <class-decl name='offload_callbacks' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2401' column='1' id='cbdbefb1'> + <class-decl name='offload_callbacks' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/linux/netdevice.h' line='2402' column='1' id='cbdbefb1'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='gso_segment' type-id='c256a724' visibility='default' filepath='include/linux/netdevice.h' line='2402' column='1'/> + <var-decl name='gso_segment' type-id='c256a724' visibility='default' filepath='include/linux/netdevice.h' line='2403' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='gro_receive' type-id='54aa9dbd' visibility='default' filepath='include/linux/netdevice.h' line='2404' column='1'/> + <var-decl name='gro_receive' type-id='54aa9dbd' visibility='default' filepath='include/linux/netdevice.h' line='2405' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='gro_complete' type-id='0aeca82c' visibility='default' filepath='include/linux/netdevice.h' line='2406' column='1'/> + <var-decl name='gro_complete' type-id='0aeca82c' visibility='default' filepath='include/linux/netdevice.h' line='2407' column='1'/> </data-member> </class-decl> <qualified-type-def type-id='6785038a' const='yes' id='dfc5bf71'/> @@ -129998,18 +130013,18 @@ </class-decl> </abi-instr> <abi-instr address-size='64' path='net/ipv4/inet_hashtables.c' language='LANG_C89'> - <function-decl name='inet_sk_set_state' mangled-name='inet_sk_set_state' filepath='include/net/inet_sock.h' line='313' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='inet_sk_set_state'> + <function-decl name='inet_sk_set_state' mangled-name='inet_sk_set_state' filepath='include/net/inet_sock.h' line='314' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='inet_sk_set_state'> <parameter type-id='f772df6d'/> <parameter type-id='95e97e5e'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='net/ipv4/ip_output.c' language='LANG_C89'> - <function-decl name='__ip_queue_xmit' mangled-name='__ip_queue_xmit' filepath='net/ipv4/ip_output.c' line='428' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__ip_queue_xmit'> - <parameter type-id='f772df6d' name='sk' filepath='net/ipv4/ip_output.c' line='428' column='1'/> - <parameter type-id='0fbf3cfd' name='skb' filepath='net/ipv4/ip_output.c' line='428' column='1'/> - <parameter type-id='b1fd62ba' name='fl' filepath='net/ipv4/ip_output.c' line='428' column='1'/> - <parameter type-id='8f048e17' name='tos' filepath='net/ipv4/ip_output.c' line='429' column='1'/> + <function-decl name='__ip_queue_xmit' mangled-name='__ip_queue_xmit' filepath='net/ipv4/ip_output.c' line='435' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__ip_queue_xmit'> + <parameter type-id='f772df6d' name='sk' filepath='net/ipv4/ip_output.c' line='435' column='1'/> + <parameter type-id='0fbf3cfd' name='skb' filepath='net/ipv4/ip_output.c' line='435' column='1'/> + <parameter type-id='b1fd62ba' name='fl' filepath='net/ipv4/ip_output.c' line='435' column='1'/> + <parameter type-id='8f048e17' name='tos' filepath='net/ipv4/ip_output.c' line='436' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -130479,7 +130494,7 @@ </class-decl> </abi-instr> <abi-instr address-size='64' path='net/ipv6/ip6_vti.c' language='LANG_C89'> - <function-decl name='unregister_netdevice_many' mangled-name='unregister_netdevice_many' filepath='include/linux/netdevice.h' line='2660' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_many'> + <function-decl name='unregister_netdevice_many' mangled-name='unregister_netdevice_many' filepath='include/linux/netdevice.h' line='2661' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unregister_netdevice_many'> <parameter type-id='e84b031a'/> <return type-id='48b5725f'/> </function-decl> @@ -131471,7 +131486,7 @@ <var-decl name='nulls_head' type-id='af86905d' visibility='default' filepath='include/net/inet_hashtables.h' line='120' column='1'/> </data-member> </union-decl> - <enum-decl name='tcp_ca_event' filepath='include/net/tcp.h' line='971' column='1' id='5f51e977'> + <enum-decl name='tcp_ca_event' filepath='include/net/tcp.h' line='972' column='1' id='5f51e977'> <underlying-type type-id='9cac1fee'/> <enumerator name='CA_EVENT_TX_START' value='0'/> <enumerator name='CA_EVENT_CWND_RESTART' value='1'/> @@ -131480,56 +131495,56 @@ <enumerator name='CA_EVENT_ECN_NO_CE' value='4'/> <enumerator name='CA_EVENT_ECN_IS_CE' value='5'/> </enum-decl> - <class-decl name='ack_sample' size-in-bits='96' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1003' column='1' id='cd7d3c9d'> + <class-decl name='ack_sample' size-in-bits='96' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1004' column='1' id='cd7d3c9d'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pkts_acked' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1004' column='1'/> + <var-decl name='pkts_acked' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1005' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='rtt_us' type-id='a7832498' visibility='default' filepath='include/net/tcp.h' line='1005' column='1'/> + <var-decl name='rtt_us' type-id='a7832498' visibility='default' filepath='include/net/tcp.h' line='1006' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='in_flight' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1006' column='1'/> + <var-decl name='in_flight' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1007' column='1'/> </data-member> </class-decl> - <class-decl name='rate_sample' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1017' column='1' id='a084c932'> + <class-decl name='rate_sample' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1018' column='1' id='a084c932'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='prior_mstamp' type-id='91ce1af9' visibility='default' filepath='include/net/tcp.h' line='1018' column='1'/> + <var-decl name='prior_mstamp' type-id='91ce1af9' visibility='default' filepath='include/net/tcp.h' line='1019' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='prior_delivered' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1019' column='1'/> + <var-decl name='prior_delivered' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1020' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='delivered' type-id='a7832498' visibility='default' filepath='include/net/tcp.h' line='1020' column='1'/> + <var-decl name='delivered' type-id='a7832498' visibility='default' filepath='include/net/tcp.h' line='1021' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='interval_us' type-id='bd54fe1a' visibility='default' filepath='include/net/tcp.h' line='1021' column='1'/> + <var-decl name='interval_us' type-id='bd54fe1a' visibility='default' filepath='include/net/tcp.h' line='1022' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='snd_interval_us' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1022' column='1'/> + <var-decl name='snd_interval_us' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1023' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='rcv_interval_us' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1023' column='1'/> + <var-decl name='rcv_interval_us' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1024' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='rtt_us' type-id='bd54fe1a' visibility='default' filepath='include/net/tcp.h' line='1024' column='1'/> + <var-decl name='rtt_us' type-id='bd54fe1a' visibility='default' filepath='include/net/tcp.h' line='1025' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='losses' type-id='95e97e5e' visibility='default' filepath='include/net/tcp.h' line='1025' column='1'/> + <var-decl name='losses' type-id='95e97e5e' visibility='default' filepath='include/net/tcp.h' line='1026' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='352'> - <var-decl name='acked_sacked' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1026' column='1'/> + <var-decl name='acked_sacked' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1027' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='prior_in_flight' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1027' column='1'/> + <var-decl name='prior_in_flight' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1028' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='416'> - <var-decl name='is_app_limited' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1028' column='1'/> + <var-decl name='is_app_limited' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1029' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='424'> - <var-decl name='is_retrans' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1029' column='1'/> + <var-decl name='is_retrans' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1030' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='432'> - <var-decl name='is_ack_delayed' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1030' column='1'/> + <var-decl name='is_ack_delayed' type-id='b50a4934' visibility='default' filepath='include/net/tcp.h' line='1031' column='1'/> </data-member> </class-decl> <qualified-type-def type-id='cd7d3c9d' const='yes' id='67a1c23c'/> @@ -131932,20 +131947,20 @@ </class-decl> <pointer-type-def type-id='f7a1d399' size-in-bits='64' id='8438f281'/> <pointer-type-def type-id='64a9bab2' size-in-bits='64' id='bfc146e4'/> - <function-decl name='__netlink_kernel_create' mangled-name='__netlink_kernel_create' filepath='net/netlink/af_netlink.c' line='2025' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__netlink_kernel_create'> - <parameter type-id='a2bff676' name='net' filepath='net/netlink/af_netlink.c' line='2025' column='1'/> - <parameter type-id='95e97e5e' name='unit' filepath='net/netlink/af_netlink.c' line='2025' column='1'/> - <parameter type-id='2730d015' name='module' filepath='net/netlink/af_netlink.c' line='2025' column='1'/> - <parameter type-id='8438f281' name='cfg' filepath='net/netlink/af_netlink.c' line='2026' column='1'/> + <function-decl name='__netlink_kernel_create' mangled-name='__netlink_kernel_create' filepath='net/netlink/af_netlink.c' line='2031' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__netlink_kernel_create'> + <parameter type-id='a2bff676' name='net' filepath='net/netlink/af_netlink.c' line='2031' column='1'/> + <parameter type-id='95e97e5e' name='unit' filepath='net/netlink/af_netlink.c' line='2031' column='1'/> + <parameter type-id='2730d015' name='module' filepath='net/netlink/af_netlink.c' line='2031' column='1'/> + <parameter type-id='8438f281' name='cfg' filepath='net/netlink/af_netlink.c' line='2032' column='1'/> <return type-id='f772df6d'/> </function-decl> - <function-decl name='__nlmsg_put' mangled-name='__nlmsg_put' filepath='net/netlink/af_netlink.c' line='2165' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__nlmsg_put'> - <parameter type-id='0fbf3cfd' name='skb' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> - <parameter type-id='19c2251e' name='portid' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> - <parameter type-id='19c2251e' name='seq' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> - <parameter type-id='95e97e5e' name='type' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> - <parameter type-id='95e97e5e' name='len' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> - <parameter type-id='95e97e5e' name='flags' filepath='net/netlink/af_netlink.c' line='2165' column='1'/> + <function-decl name='__nlmsg_put' mangled-name='__nlmsg_put' filepath='net/netlink/af_netlink.c' line='2171' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__nlmsg_put'> + <parameter type-id='0fbf3cfd' name='skb' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> + <parameter type-id='19c2251e' name='portid' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> + <parameter type-id='19c2251e' name='seq' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> + <parameter type-id='95e97e5e' name='type' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> + <parameter type-id='95e97e5e' name='len' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> + <parameter type-id='95e97e5e' name='flags' filepath='net/netlink/af_netlink.c' line='2171' column='1'/> <return type-id='c2074578'/> </function-decl> <function-type size-in-bits='64' id='64a9bab2'> @@ -131979,7 +131994,7 @@ <parameter type-id='f0981eeb'/> <return type-id='f0981eeb'/> </function-decl> - <function-decl name='netif_receive_skb' mangled-name='netif_receive_skb' filepath='include/linux/netdevice.h' line='3617' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_receive_skb'> + <function-decl name='netif_receive_skb' mangled-name='netif_receive_skb' filepath='include/linux/netdevice.h' line='3618' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_receive_skb'> <parameter type-id='0fbf3cfd'/> <return type-id='95e97e5e'/> </function-decl> @@ -132039,7 +132054,7 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='net/sched/em_meta.c' language='LANG_C89'> - <function-decl name='dev_get_by_index_rcu' mangled-name='dev_get_by_index_rcu' filepath='include/linux/netdevice.h' line='2674' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_by_index_rcu'> + <function-decl name='dev_get_by_index_rcu' mangled-name='dev_get_by_index_rcu' filepath='include/linux/netdevice.h' line='2675' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dev_get_by_index_rcu'> <parameter type-id='a2bff676'/> <parameter type-id='95e97e5e'/> <return type-id='68a2d05b'/> @@ -132058,7 +132073,7 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='net/sched/sch_netem.c' language='LANG_C89'> - <function-decl name='prandom_u32' mangled-name='prandom_u32' filepath='include/linux/prandom.h' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='prandom_u32'> + <function-decl name='prandom_u32' mangled-name='prandom_u32' filepath='include/linux/prandom.h' line='15' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='prandom_u32'> <return type-id='f0981eeb'/> </function-decl> <function-decl name='rb_last' mangled-name='rb_last' filepath='include/linux/rbtree.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rb_last'> @@ -135565,22 +135580,22 @@ <pointer-type-def type-id='49354cf3' size-in-bits='64' id='8baf5297'/> <pointer-type-def type-id='68523a94' size-in-bits='64' id='666fb412'/> <pointer-type-def type-id='3b132996' size-in-bits='64' id='d0299fd8'/> - <function-decl name='wiphy_new_nm' mangled-name='wiphy_new_nm' filepath='net/wireless/core.c' line='383' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_new_nm'> - <parameter type-id='8bfdd055' name='ops' filepath='net/wireless/core.c' line='383' column='1'/> - <parameter type-id='95e97e5e' name='sizeof_priv' filepath='net/wireless/core.c' line='383' column='1'/> - <parameter type-id='80f4b756' name='requested_name' filepath='net/wireless/core.c' line='384' column='1'/> + <function-decl name='wiphy_new_nm' mangled-name='wiphy_new_nm' filepath='net/wireless/core.c' line='384' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_new_nm'> + <parameter type-id='8bfdd055' name='ops' filepath='net/wireless/core.c' line='384' column='1'/> + <parameter type-id='95e97e5e' name='sizeof_priv' filepath='net/wireless/core.c' line='384' column='1'/> + <parameter type-id='80f4b756' name='requested_name' filepath='net/wireless/core.c' line='385' column='1'/> <return type-id='666fb412'/> </function-decl> - <function-decl name='wiphy_free' mangled-name='wiphy_free' filepath='net/wireless/core.c' line='1001' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_free'> - <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='1001' column='1'/> + <function-decl name='wiphy_free' mangled-name='wiphy_free' filepath='net/wireless/core.c' line='1002' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_free'> + <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='1002' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='wiphy_register' mangled-name='wiphy_register' filepath='net/wireless/core.c' line='631' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_register'> - <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='631' column='1'/> + <function-decl name='wiphy_register' mangled-name='wiphy_register' filepath='net/wireless/core.c' line='632' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_register'> + <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='632' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='wiphy_unregister' mangled-name='wiphy_unregister' filepath='net/wireless/core.c' line='929' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_unregister'> - <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='929' column='1'/> + <function-decl name='wiphy_unregister' mangled-name='wiphy_unregister' filepath='net/wireless/core.c' line='930' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='wiphy_unregister'> + <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/core.c' line='930' column='1'/> <return type-id='48b5725f'/> </function-decl> <function-decl name='cfg80211_put_bss' mangled-name='cfg80211_put_bss' filepath='include/net/cfg80211.h' line='5455' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_put_bss'> @@ -136690,124 +136705,124 @@ </data-member> </class-decl> <pointer-type-def type-id='cc4b6920' size-in-bits='64' id='76db5996'/> - <function-decl name='__cfg80211_alloc_event_skb' mangled-name='__cfg80211_alloc_event_skb' filepath='net/wireless/nl80211.c' line='9310' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_alloc_event_skb'> - <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/nl80211.c' line='9310' column='1'/> - <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='9311' column='1'/> - <parameter type-id='187e1e49' name='cmd' filepath='net/wireless/nl80211.c' line='9312' column='1'/> - <parameter type-id='320b0ded' name='attr' filepath='net/wireless/nl80211.c' line='9313' column='1'/> - <parameter type-id='95e97e5e' name='vendor_event_idx' filepath='net/wireless/nl80211.c' line='9314' column='1'/> - <parameter type-id='95e97e5e' name='approxlen' filepath='net/wireless/nl80211.c' line='9315' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='9315' column='1'/> + <function-decl name='__cfg80211_alloc_event_skb' mangled-name='__cfg80211_alloc_event_skb' filepath='net/wireless/nl80211.c' line='9311' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_alloc_event_skb'> + <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/nl80211.c' line='9311' column='1'/> + <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='9312' column='1'/> + <parameter type-id='187e1e49' name='cmd' filepath='net/wireless/nl80211.c' line='9313' column='1'/> + <parameter type-id='320b0ded' name='attr' filepath='net/wireless/nl80211.c' line='9314' column='1'/> + <parameter type-id='95e97e5e' name='vendor_event_idx' filepath='net/wireless/nl80211.c' line='9315' column='1'/> + <parameter type-id='95e97e5e' name='approxlen' filepath='net/wireless/nl80211.c' line='9316' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='9316' column='1'/> <return type-id='0fbf3cfd'/> </function-decl> - <function-decl name='__cfg80211_send_event_skb' mangled-name='__cfg80211_send_event_skb' filepath='net/wireless/nl80211.c' line='9342' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_send_event_skb'> - <parameter type-id='0fbf3cfd' name='skb' filepath='net/wireless/nl80211.c' line='9342' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='9342' column='1'/> + <function-decl name='__cfg80211_send_event_skb' mangled-name='__cfg80211_send_event_skb' filepath='net/wireless/nl80211.c' line='9343' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_send_event_skb'> + <parameter type-id='0fbf3cfd' name='skb' filepath='net/wireless/nl80211.c' line='9343' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='9343' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='__cfg80211_alloc_reply_skb' mangled-name='__cfg80211_alloc_reply_skb' filepath='net/wireless/nl80211.c' line='12748' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_alloc_reply_skb'> - <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/nl80211.c' line='12748' column='1'/> - <parameter type-id='187e1e49' name='cmd' filepath='net/wireless/nl80211.c' line='12749' column='1'/> - <parameter type-id='320b0ded' name='attr' filepath='net/wireless/nl80211.c' line='12750' column='1'/> - <parameter type-id='95e97e5e' name='approxlen' filepath='net/wireless/nl80211.c' line='12751' column='1'/> + <function-decl name='__cfg80211_alloc_reply_skb' mangled-name='__cfg80211_alloc_reply_skb' filepath='net/wireless/nl80211.c' line='12761' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__cfg80211_alloc_reply_skb'> + <parameter type-id='666fb412' name='wiphy' filepath='net/wireless/nl80211.c' line='12761' column='1'/> + <parameter type-id='187e1e49' name='cmd' filepath='net/wireless/nl80211.c' line='12762' column='1'/> + <parameter type-id='320b0ded' name='attr' filepath='net/wireless/nl80211.c' line='12763' column='1'/> + <parameter type-id='95e97e5e' name='approxlen' filepath='net/wireless/nl80211.c' line='12764' column='1'/> <return type-id='0fbf3cfd'/> </function-decl> - <function-decl name='cfg80211_vendor_cmd_reply' mangled-name='cfg80211_vendor_cmd_reply' filepath='net/wireless/nl80211.c' line='12765' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_vendor_cmd_reply'> - <parameter type-id='0fbf3cfd' name='skb' filepath='net/wireless/nl80211.c' line='12765' column='1'/> + <function-decl name='cfg80211_vendor_cmd_reply' mangled-name='cfg80211_vendor_cmd_reply' filepath='net/wireless/nl80211.c' line='12778' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_vendor_cmd_reply'> + <parameter type-id='0fbf3cfd' name='skb' filepath='net/wireless/nl80211.c' line='12778' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='cfg80211_rx_unprot_mlme_mgmt' mangled-name='cfg80211_rx_unprot_mlme_mgmt' filepath='net/wireless/nl80211.c' line='14569' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_rx_unprot_mlme_mgmt'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='14569' column='1'/> - <parameter type-id='bbaf3419' name='buf' filepath='net/wireless/nl80211.c' line='14569' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='net/wireless/nl80211.c' line='14570' column='1'/> + <function-decl name='cfg80211_rx_unprot_mlme_mgmt' mangled-name='cfg80211_rx_unprot_mlme_mgmt' filepath='net/wireless/nl80211.c' line='14582' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_rx_unprot_mlme_mgmt'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='14582' column='1'/> + <parameter type-id='bbaf3419' name='buf' filepath='net/wireless/nl80211.c' line='14582' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='net/wireless/nl80211.c' line='14583' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_ready_on_channel' mangled-name='cfg80211_ready_on_channel' filepath='net/wireless/nl80211.c' line='15026' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ready_on_channel'> - <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15026' column='1'/> - <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15026' column='1'/> - <parameter type-id='ec00acfb' name='chan' filepath='net/wireless/nl80211.c' line='15027' column='1'/> - <parameter type-id='f0981eeb' name='duration' filepath='net/wireless/nl80211.c' line='15028' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15028' column='1'/> + <function-decl name='cfg80211_ready_on_channel' mangled-name='cfg80211_ready_on_channel' filepath='net/wireless/nl80211.c' line='15039' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ready_on_channel'> + <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15039' column='1'/> + <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15039' column='1'/> + <parameter type-id='ec00acfb' name='chan' filepath='net/wireless/nl80211.c' line='15040' column='1'/> + <parameter type-id='f0981eeb' name='duration' filepath='net/wireless/nl80211.c' line='15041' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15041' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_remain_on_channel_expired' mangled-name='cfg80211_remain_on_channel_expired' filepath='net/wireless/nl80211.c' line='15040' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_remain_on_channel_expired'> - <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15040' column='1'/> - <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15040' column='1'/> - <parameter type-id='ec00acfb' name='chan' filepath='net/wireless/nl80211.c' line='15041' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15042' column='1'/> + <function-decl name='cfg80211_remain_on_channel_expired' mangled-name='cfg80211_remain_on_channel_expired' filepath='net/wireless/nl80211.c' line='15053' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_remain_on_channel_expired'> + <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15053' column='1'/> + <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15053' column='1'/> + <parameter type-id='ec00acfb' name='chan' filepath='net/wireless/nl80211.c' line='15054' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15055' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_new_sta' mangled-name='cfg80211_new_sta' filepath='net/wireless/nl80211.c' line='15053' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_new_sta'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15053' column='1'/> - <parameter type-id='bbaf3419' name='mac_addr' filepath='net/wireless/nl80211.c' line='15053' column='1'/> - <parameter type-id='7af1dc96' name='sinfo' filepath='net/wireless/nl80211.c' line='15054' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15054' column='1'/> + <function-decl name='cfg80211_new_sta' mangled-name='cfg80211_new_sta' filepath='net/wireless/nl80211.c' line='15066' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_new_sta'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15066' column='1'/> + <parameter type-id='bbaf3419' name='mac_addr' filepath='net/wireless/nl80211.c' line='15066' column='1'/> + <parameter type-id='7af1dc96' name='sinfo' filepath='net/wireless/nl80211.c' line='15067' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15067' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_del_sta_sinfo' mangled-name='cfg80211_del_sta_sinfo' filepath='net/wireless/nl80211.c' line='15077' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_del_sta_sinfo'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15077' column='1'/> - <parameter type-id='bbaf3419' name='mac_addr' filepath='net/wireless/nl80211.c' line='15077' column='1'/> - <parameter type-id='7af1dc96' name='sinfo' filepath='net/wireless/nl80211.c' line='15078' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15078' column='1'/> + <function-decl name='cfg80211_del_sta_sinfo' mangled-name='cfg80211_del_sta_sinfo' filepath='net/wireless/nl80211.c' line='15090' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_del_sta_sinfo'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15090' column='1'/> + <parameter type-id='bbaf3419' name='mac_addr' filepath='net/wireless/nl80211.c' line='15090' column='1'/> + <parameter type-id='7af1dc96' name='sinfo' filepath='net/wireless/nl80211.c' line='15091' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15091' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_mgmt_tx_status' mangled-name='cfg80211_mgmt_tx_status' filepath='net/wireless/nl80211.c' line='15261' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_mgmt_tx_status'> - <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15261' column='1'/> - <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15261' column='1'/> - <parameter type-id='bbaf3419' name='buf' filepath='net/wireless/nl80211.c' line='15262' column='1'/> - <parameter type-id='b59d7dce' name='len' filepath='net/wireless/nl80211.c' line='15262' column='1'/> - <parameter type-id='b50a4934' name='ack' filepath='net/wireless/nl80211.c' line='15262' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15262' column='1'/> + <function-decl name='cfg80211_mgmt_tx_status' mangled-name='cfg80211_mgmt_tx_status' filepath='net/wireless/nl80211.c' line='15274' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_mgmt_tx_status'> + <parameter type-id='63c7e8e1' name='wdev' filepath='net/wireless/nl80211.c' line='15274' column='1'/> + <parameter type-id='91ce1af9' name='cookie' filepath='net/wireless/nl80211.c' line='15274' column='1'/> + <parameter type-id='bbaf3419' name='buf' filepath='net/wireless/nl80211.c' line='15275' column='1'/> + <parameter type-id='b59d7dce' name='len' filepath='net/wireless/nl80211.c' line='15275' column='1'/> + <parameter type-id='b50a4934' name='ack' filepath='net/wireless/nl80211.c' line='15275' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15275' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_gtk_rekey_notify' mangled-name='cfg80211_gtk_rekey_notify' filepath='net/wireless/nl80211.c' line='15575' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_gtk_rekey_notify'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15575' column='1'/> - <parameter type-id='bbaf3419' name='bssid' filepath='net/wireless/nl80211.c' line='15575' column='1'/> - <parameter type-id='bbaf3419' name='replay_ctr' filepath='net/wireless/nl80211.c' line='15576' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15576' column='1'/> + <function-decl name='cfg80211_gtk_rekey_notify' mangled-name='cfg80211_gtk_rekey_notify' filepath='net/wireless/nl80211.c' line='15588' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_gtk_rekey_notify'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15588' column='1'/> + <parameter type-id='bbaf3419' name='bssid' filepath='net/wireless/nl80211.c' line='15588' column='1'/> + <parameter type-id='bbaf3419' name='replay_ctr' filepath='net/wireless/nl80211.c' line='15589' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15589' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_pmksa_candidate_notify' mangled-name='cfg80211_pmksa_candidate_notify' filepath='net/wireless/nl80211.c' line='15632' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_pmksa_candidate_notify'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15632' column='1'/> - <parameter type-id='95e97e5e' name='index' filepath='net/wireless/nl80211.c' line='15632' column='1'/> - <parameter type-id='bbaf3419' name='bssid' filepath='net/wireless/nl80211.c' line='15633' column='1'/> - <parameter type-id='b50a4934' name='preauth' filepath='net/wireless/nl80211.c' line='15633' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15633' column='1'/> + <function-decl name='cfg80211_pmksa_candidate_notify' mangled-name='cfg80211_pmksa_candidate_notify' filepath='net/wireless/nl80211.c' line='15645' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_pmksa_candidate_notify'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15645' column='1'/> + <parameter type-id='95e97e5e' name='index' filepath='net/wireless/nl80211.c' line='15645' column='1'/> + <parameter type-id='bbaf3419' name='bssid' filepath='net/wireless/nl80211.c' line='15646' column='1'/> + <parameter type-id='b50a4934' name='preauth' filepath='net/wireless/nl80211.c' line='15646' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='15646' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_ch_switch_notify' mangled-name='cfg80211_ch_switch_notify' filepath='net/wireless/nl80211.c' line='15684' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ch_switch_notify'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15684' column='1'/> - <parameter type-id='0953fbfe' name='chandef' filepath='net/wireless/nl80211.c' line='15685' column='1'/> + <function-decl name='cfg80211_ch_switch_notify' mangled-name='cfg80211_ch_switch_notify' filepath='net/wireless/nl80211.c' line='15697' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ch_switch_notify'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='15697' column='1'/> + <parameter type-id='0953fbfe' name='chandef' filepath='net/wireless/nl80211.c' line='15698' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_tdls_oper_request' mangled-name='cfg80211_tdls_oper_request' filepath='net/wireless/nl80211.c' line='16086' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_tdls_oper_request'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='16086' column='1'/> - <parameter type-id='bbaf3419' name='peer' filepath='net/wireless/nl80211.c' line='16086' column='1'/> - <parameter type-id='ee1b00fc' name='oper' filepath='net/wireless/nl80211.c' line='16087' column='1'/> - <parameter type-id='1dc6a898' name='reason_code' filepath='net/wireless/nl80211.c' line='16088' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16088' column='1'/> + <function-decl name='cfg80211_tdls_oper_request' mangled-name='cfg80211_tdls_oper_request' filepath='net/wireless/nl80211.c' line='16100' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_tdls_oper_request'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='16100' column='1'/> + <parameter type-id='bbaf3419' name='peer' filepath='net/wireless/nl80211.c' line='16100' column='1'/> + <parameter type-id='ee1b00fc' name='oper' filepath='net/wireless/nl80211.c' line='16101' column='1'/> + <parameter type-id='1dc6a898' name='reason_code' filepath='net/wireless/nl80211.c' line='16102' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16102' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_ft_event' mangled-name='cfg80211_ft_event' filepath='net/wireless/nl80211.c' line='16190' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ft_event'> - <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16190' column='1'/> - <parameter type-id='76db5996' name='ft_event' filepath='net/wireless/nl80211.c' line='16191' column='1'/> + <function-decl name='cfg80211_ft_event' mangled-name='cfg80211_ft_event' filepath='net/wireless/nl80211.c' line='16204' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ft_event'> + <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16204' column='1'/> + <parameter type-id='76db5996' name='ft_event' filepath='net/wireless/nl80211.c' line='16205' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_ap_stopped' mangled-name='cfg80211_ap_stopped' filepath='net/wireless/nl80211.c' line='16272' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ap_stopped'> - <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16272' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16272' column='1'/> + <function-decl name='cfg80211_ap_stopped' mangled-name='cfg80211_ap_stopped' filepath='net/wireless/nl80211.c' line='16286' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_ap_stopped'> + <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16286' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16286' column='1'/> <return type-id='48b5725f'/> </function-decl> - <function-decl name='cfg80211_external_auth_request' mangled-name='cfg80211_external_auth_request' filepath='net/wireless/nl80211.c' line='16312' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_external_auth_request'> - <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='16312' column='1'/> - <parameter type-id='2b041d55' name='params' filepath='net/wireless/nl80211.c' line='16313' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16314' column='1'/> + <function-decl name='cfg80211_external_auth_request' mangled-name='cfg80211_external_auth_request' filepath='net/wireless/nl80211.c' line='16326' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_external_auth_request'> + <parameter type-id='68a2d05b' name='dev' filepath='net/wireless/nl80211.c' line='16326' column='1'/> + <parameter type-id='2b041d55' name='params' filepath='net/wireless/nl80211.c' line='16327' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16328' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='cfg80211_update_owe_info_event' mangled-name='cfg80211_update_owe_info_event' filepath='net/wireless/nl80211.c' line='16353' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_update_owe_info_event'> - <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16353' column='1'/> - <parameter type-id='37104a66' name='owe_info' filepath='net/wireless/nl80211.c' line='16354' column='1'/> - <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16355' column='1'/> + <function-decl name='cfg80211_update_owe_info_event' mangled-name='cfg80211_update_owe_info_event' filepath='net/wireless/nl80211.c' line='16367' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cfg80211_update_owe_info_event'> + <parameter type-id='68a2d05b' name='netdev' filepath='net/wireless/nl80211.c' line='16367' column='1'/> + <parameter type-id='37104a66' name='owe_info' filepath='net/wireless/nl80211.c' line='16368' column='1'/> + <parameter type-id='3eb7c31c' name='gfp' filepath='net/wireless/nl80211.c' line='16369' column='1'/> <return type-id='48b5725f'/> </function-decl> </abi-instr> @@ -137489,11 +137504,11 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='net/xfrm/xfrm_policy.c' language='LANG_C89'> - <function-decl name='__xfrm_policy_check' mangled-name='__xfrm_policy_check' filepath='net/xfrm/xfrm_policy.c' line='2319' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__xfrm_policy_check'> - <parameter type-id='f772df6d' name='sk' filepath='net/xfrm/xfrm_policy.c' line='2319' column='1'/> - <parameter type-id='95e97e5e' name='dir' filepath='net/xfrm/xfrm_policy.c' line='2319' column='1'/> - <parameter type-id='0fbf3cfd' name='skb' filepath='net/xfrm/xfrm_policy.c' line='2319' column='1'/> - <parameter type-id='8efea9e5' name='family' filepath='net/xfrm/xfrm_policy.c' line='2320' column='1'/> + <function-decl name='__xfrm_policy_check' mangled-name='__xfrm_policy_check' filepath='net/xfrm/xfrm_policy.c' line='2316' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__xfrm_policy_check'> + <parameter type-id='f772df6d' name='sk' filepath='net/xfrm/xfrm_policy.c' line='2316' column='1'/> + <parameter type-id='95e97e5e' name='dir' filepath='net/xfrm/xfrm_policy.c' line='2316' column='1'/> + <parameter type-id='0fbf3cfd' name='skb' filepath='net/xfrm/xfrm_policy.c' line='2316' column='1'/> + <parameter type-id='8efea9e5' name='family' filepath='net/xfrm/xfrm_policy.c' line='2317' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -137581,8 +137596,8 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='security/selinux/selinuxfs.c' language='LANG_C89'> - <function-decl name='hex_to_bin' mangled-name='hex_to_bin' filepath='include/linux/kernel.h' line='607' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='hex_to_bin'> - <parameter type-id='a84c031d'/> + <function-decl name='hex_to_bin' mangled-name='hex_to_bin' filepath='include/linux/kernel.h' line='610' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='hex_to_bin'> + <parameter type-id='002ac4a6'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -139664,10 +139679,10 @@ <enumerator name='SND_JACK_BTN_5' value='1024'/> </enum-decl> <pointer-type-def type-id='fe091efd' size-in-bits='64' id='5a798ea9'/> - <function-decl name='snd_jack_set_key' mangled-name='snd_jack_set_key' filepath='sound/core/jack.c' line='335' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_jack_set_key'> - <parameter type-id='0f5a7eb8' name='jack' filepath='sound/core/jack.c' line='335' column='1'/> - <parameter type-id='7851d449' name='type' filepath='sound/core/jack.c' line='335' column='1'/> - <parameter type-id='95e97e5e' name='keytype' filepath='sound/core/jack.c' line='336' column='1'/> + <function-decl name='snd_jack_set_key' mangled-name='snd_jack_set_key' filepath='sound/core/jack.c' line='342' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_jack_set_key'> + <parameter type-id='0f5a7eb8' name='jack' filepath='sound/core/jack.c' line='342' column='1'/> + <parameter type-id='7851d449' name='type' filepath='sound/core/jack.c' line='342' column='1'/> + <parameter type-id='95e97e5e' name='keytype' filepath='sound/core/jack.c' line='343' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-type size-in-bits='64' id='fe091efd'> @@ -139727,54 +139742,54 @@ <var-decl name='mask' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='306' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_volume_elem' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1467' column='1' id='2ee25a20'> + <class-decl name='snd_pcm_volume_elem' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1471' column='1' id='2ee25a20'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='volume' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1468' column='1'/> + <var-decl name='volume' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1472' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_volume' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1472' column='1' id='03397d2e'> + <class-decl name='snd_pcm_volume' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1476' column='1' id='03397d2e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1473' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1477' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1474' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1478' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1475' column='1'/> + <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1479' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='volume' type-id='9476d097' visibility='default' filepath='include/sound/pcm.h' line='1476' column='1'/> + <var-decl name='volume' type-id='9476d097' visibility='default' filepath='include/sound/pcm.h' line='1480' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='max_length' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1477' column='1'/> + <var-decl name='max_length' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1481' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1478' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1482' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_usr_elem' size-in-bits='4096' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1491' column='1' id='f9ce5970'> + <class-decl name='snd_pcm_usr_elem' size-in-bits='4096' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1495' column='1' id='f9ce5970'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='val' type-id='79d32e77' visibility='default' filepath='include/sound/pcm.h' line='1492' column='1'/> + <var-decl name='val' type-id='79d32e77' visibility='default' filepath='include/sound/pcm.h' line='1496' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_usr' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1496' column='1' id='cdad71be'> + <class-decl name='snd_pcm_usr' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1500' column='1' id='cdad71be'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1497' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1501' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1498' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1502' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1499' column='1'/> + <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1503' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='usr' type-id='433983f9' visibility='default' filepath='include/sound/pcm.h' line='1500' column='1'/> + <var-decl name='usr' type-id='433983f9' visibility='default' filepath='include/sound/pcm.h' line='1504' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='max_length' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1501' column='1'/> + <var-decl name='max_length' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1505' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1502' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1506' column='1'/> </data-member> </class-decl> <qualified-type-def type-id='f5f6e55e' const='yes' id='fa3724eb'/> @@ -139787,7 +139802,7 @@ <pointer-type-def type-id='c04d3da4' size-in-bits='64' id='4797e68a'/> <pointer-type-def type-id='03397d2e' size-in-bits='64' id='bc08cff4'/> <pointer-type-def type-id='bc08cff4' size-in-bits='64' id='dfdf3a7a'/> - <var-decl name='snd_pcm_std_chmaps' type-id='93f82aba' mangled-name='snd_pcm_std_chmaps' visibility='default' filepath='sound/core/pcm_lib.c' line='2284' column='1' elf-symbol-id='snd_pcm_std_chmaps'/> + <var-decl name='snd_pcm_std_chmaps' type-id='93f82aba' mangled-name='snd_pcm_std_chmaps' visibility='default' filepath='sound/core/pcm_lib.c' line='2289' column='1' elf-symbol-id='snd_pcm_std_chmaps'/> <function-decl name='snd_pcm_hw_constraint_list' mangled-name='snd_pcm_hw_constraint_list' filepath='sound/core/pcm_lib.c' line='1279' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_hw_constraint_list'> <parameter type-id='17a05af6' name='runtime' filepath='sound/core/pcm_lib.c' line='1279' column='1'/> <parameter type-id='f0981eeb' name='cond' filepath='sound/core/pcm_lib.c' line='1280' column='1'/> @@ -139808,32 +139823,32 @@ <parameter type-id='eaa32e2f' name='arg' filepath='sound/core/pcm_lib.c' line='1786' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_add_volume_ctls' mangled-name='snd_pcm_add_volume_ctls' filepath='sound/core/pcm_lib.c' line='2523' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_volume_ctls'> - <parameter type-id='4c9f335b' name='pcm' filepath='sound/core/pcm_lib.c' line='2523' column='1'/> - <parameter type-id='95e97e5e' name='stream' filepath='sound/core/pcm_lib.c' line='2523' column='1'/> - <parameter type-id='9476d097' name='volume' filepath='sound/core/pcm_lib.c' line='2524' column='1'/> - <parameter type-id='95e97e5e' name='max_length' filepath='sound/core/pcm_lib.c' line='2525' column='1'/> - <parameter type-id='7359adad' name='private_value' filepath='sound/core/pcm_lib.c' line='2526' column='1'/> - <parameter type-id='dfdf3a7a' name='info_ret' filepath='sound/core/pcm_lib.c' line='2527' column='1'/> + <function-decl name='snd_pcm_add_volume_ctls' mangled-name='snd_pcm_add_volume_ctls' filepath='sound/core/pcm_lib.c' line='2528' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_volume_ctls'> + <parameter type-id='4c9f335b' name='pcm' filepath='sound/core/pcm_lib.c' line='2528' column='1'/> + <parameter type-id='95e97e5e' name='stream' filepath='sound/core/pcm_lib.c' line='2528' column='1'/> + <parameter type-id='9476d097' name='volume' filepath='sound/core/pcm_lib.c' line='2529' column='1'/> + <parameter type-id='95e97e5e' name='max_length' filepath='sound/core/pcm_lib.c' line='2530' column='1'/> + <parameter type-id='7359adad' name='private_value' filepath='sound/core/pcm_lib.c' line='2531' column='1'/> + <parameter type-id='dfdf3a7a' name='info_ret' filepath='sound/core/pcm_lib.c' line='2532' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_add_usr_ctls' mangled-name='snd_pcm_add_usr_ctls' filepath='sound/core/pcm_lib.c' line='2612' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_usr_ctls'> - <parameter type-id='4c9f335b' name='pcm' filepath='sound/core/pcm_lib.c' line='2612' column='1'/> - <parameter type-id='95e97e5e' name='stream' filepath='sound/core/pcm_lib.c' line='2612' column='1'/> - <parameter type-id='433983f9' name='usr' filepath='sound/core/pcm_lib.c' line='2613' column='1'/> - <parameter type-id='95e97e5e' name='max_length' filepath='sound/core/pcm_lib.c' line='2614' column='1'/> - <parameter type-id='95e97e5e' name='max_kctrl_str_len' filepath='sound/core/pcm_lib.c' line='2614' column='1'/> - <parameter type-id='7359adad' name='private_value' filepath='sound/core/pcm_lib.c' line='2615' column='1'/> - <parameter type-id='4797e68a' name='info_ret' filepath='sound/core/pcm_lib.c' line='2616' column='1'/> + <function-decl name='snd_pcm_add_usr_ctls' mangled-name='snd_pcm_add_usr_ctls' filepath='sound/core/pcm_lib.c' line='2617' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_usr_ctls'> + <parameter type-id='4c9f335b' name='pcm' filepath='sound/core/pcm_lib.c' line='2617' column='1'/> + <parameter type-id='95e97e5e' name='stream' filepath='sound/core/pcm_lib.c' line='2617' column='1'/> + <parameter type-id='433983f9' name='usr' filepath='sound/core/pcm_lib.c' line='2618' column='1'/> + <parameter type-id='95e97e5e' name='max_length' filepath='sound/core/pcm_lib.c' line='2619' column='1'/> + <parameter type-id='95e97e5e' name='max_kctrl_str_len' filepath='sound/core/pcm_lib.c' line='2619' column='1'/> + <parameter type-id='7359adad' name='private_value' filepath='sound/core/pcm_lib.c' line='2620' column='1'/> + <parameter type-id='4797e68a' name='info_ret' filepath='sound/core/pcm_lib.c' line='2621' column='1'/> <return type-id='95e97e5e'/> </function-decl> <qualified-type-def type-id='09098b3b' const='yes' id='3b0abfc6'/> - <class-decl name='snd_pcm_chmap_elem' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1407' column='1' id='09098b3b'> + <class-decl name='snd_pcm_chmap_elem' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1411' column='1' id='09098b3b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='channels' type-id='002ac4a6' visibility='default' filepath='include/sound/pcm.h' line='1408' column='1'/> + <var-decl name='channels' type-id='002ac4a6' visibility='default' filepath='include/sound/pcm.h' line='1412' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='8'> - <var-decl name='map' type-id='92ab2118' visibility='default' filepath='include/sound/pcm.h' line='1409' column='1'/> + <var-decl name='map' type-id='92ab2118' visibility='default' filepath='include/sound/pcm.h' line='1413' column='1'/> </data-member> </class-decl> <array-type-def dimensions='1' type-id='002ac4a6' size-in-bits='120' id='92ab2118'> @@ -139841,30 +139856,30 @@ </array-type-def> </abi-instr> <abi-instr address-size='64' path='sound/core/pcm_memory.c' language='LANG_C89'> - <function-decl name='snd_pcm_lib_get_vmalloc_page' mangled-name='snd_pcm_lib_get_vmalloc_page' filepath='sound/core/pcm_memory.c' line='449' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_lib_get_vmalloc_page'> - <parameter type-id='06b2cd14' name='substream' filepath='sound/core/pcm_memory.c' line='449' column='1'/> - <parameter type-id='7359adad' name='offset' filepath='sound/core/pcm_memory.c' line='450' column='1'/> + <function-decl name='snd_pcm_lib_get_vmalloc_page' mangled-name='snd_pcm_lib_get_vmalloc_page' filepath='sound/core/pcm_memory.c' line='452' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_lib_get_vmalloc_page'> + <parameter type-id='06b2cd14' name='substream' filepath='sound/core/pcm_memory.c' line='452' column='1'/> + <parameter type-id='7359adad' name='offset' filepath='sound/core/pcm_memory.c' line='453' column='1'/> <return type-id='02f11ed4'/> </function-decl> </abi-instr> <abi-instr address-size='64' path='sound/core/pcm_native.c' language='LANG_C89'> - <function-decl name='snd_pcm_stop' mangled-name='snd_pcm_stop' filepath='sound/core/pcm_native.c' line='1348' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_stop'> - <parameter type-id='06b2cd14' name='substream' filepath='sound/core/pcm_native.c' line='1348' column='1'/> - <parameter type-id='33158de9' name='state' filepath='sound/core/pcm_native.c' line='1348' column='1'/> + <function-decl name='snd_pcm_stop' mangled-name='snd_pcm_stop' filepath='sound/core/pcm_native.c' line='1394' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_stop'> + <parameter type-id='06b2cd14' name='substream' filepath='sound/core/pcm_native.c' line='1394' column='1'/> + <parameter type-id='33158de9' name='state' filepath='sound/core/pcm_native.c' line='1394' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_format_physical_width' mangled-name='snd_pcm_format_physical_width' filepath='include/sound/pcm.h' line='1095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_format_physical_width'> + <function-decl name='snd_pcm_format_physical_width' mangled-name='snd_pcm_format_physical_width' filepath='include/sound/pcm.h' line='1099' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_format_physical_width'> <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_hw_constraint_minmax' mangled-name='snd_pcm_hw_constraint_minmax' filepath='include/sound/pcm.h' line='1020' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_hw_constraint_minmax'> + <function-decl name='snd_pcm_hw_constraint_minmax' mangled-name='snd_pcm_hw_constraint_minmax' filepath='include/sound/pcm.h' line='1024' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_hw_constraint_minmax'> <parameter type-id='17a05af6'/> <parameter type-id='95e97e5e'/> <parameter type-id='f0981eeb'/> <parameter type-id='f0981eeb'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_hw_constraint_integer' mangled-name='snd_pcm_hw_constraint_integer' filepath='include/sound/pcm.h' line='1022' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_hw_constraint_integer'> + <function-decl name='snd_pcm_hw_constraint_integer' mangled-name='snd_pcm_hw_constraint_integer' filepath='include/sound/pcm.h' line='1026' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_hw_constraint_integer'> <parameter type-id='17a05af6'/> <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> @@ -141597,193 +141612,193 @@ <var-decl name='restart' type-id='ab756384' visibility='default' filepath='include/sound/pcm.h' line='97' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_substream' size-in-bits='5248' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='464' column='1' id='362eec9e'> + <class-decl name='snd_pcm_substream' size-in-bits='5248' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='468' column='1' id='362eec9e'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='465' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='469' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pstr' type-id='e5ffb4bb' visibility='default' filepath='include/sound/pcm.h' line='466' column='1'/> + <var-decl name='pstr' type-id='e5ffb4bb' visibility='default' filepath='include/sound/pcm.h' line='470' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='467' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='471' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='number' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='468' column='1'/> + <var-decl name='number' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='472' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/sound/pcm.h' line='469' column='1'/> + <var-decl name='name' type-id='16dc656a' visibility='default' filepath='include/sound/pcm.h' line='473' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='480'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='470' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='474' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='latency_pm_qos_req' type-id='cd6fc142' visibility='default' filepath='include/sound/pcm.h' line='471' column='1'/> + <var-decl name='latency_pm_qos_req' type-id='cd6fc142' visibility='default' filepath='include/sound/pcm.h' line='475' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2752'> - <var-decl name='buffer_bytes_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='472' column='1'/> + <var-decl name='buffer_bytes_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='476' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2816'> - <var-decl name='dma_buffer' type-id='c5addfb4' visibility='default' filepath='include/sound/pcm.h' line='473' column='1'/> + <var-decl name='dma_buffer' type-id='c5addfb4' visibility='default' filepath='include/sound/pcm.h' line='477' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3200'> - <var-decl name='dma_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='474' column='1'/> + <var-decl name='dma_max' type-id='b59d7dce' visibility='default' filepath='include/sound/pcm.h' line='478' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3264'> - <var-decl name='ops' type-id='f63b1a17' visibility='default' filepath='include/sound/pcm.h' line='476' column='1'/> + <var-decl name='ops' type-id='f63b1a17' visibility='default' filepath='include/sound/pcm.h' line='480' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3328'> - <var-decl name='runtime' type-id='17a05af6' visibility='default' filepath='include/sound/pcm.h' line='478' column='1'/> + <var-decl name='runtime' type-id='17a05af6' visibility='default' filepath='include/sound/pcm.h' line='482' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3392'> - <var-decl name='runtime_lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='479' column='1'/> + <var-decl name='runtime_lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='483' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3456'> - <var-decl name='timer' type-id='6ee1a870' visibility='default' filepath='include/sound/pcm.h' line='481' column='1'/> + <var-decl name='timer' type-id='6ee1a870' visibility='default' filepath='include/sound/pcm.h' line='485' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='timer_running' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='482' column='1'/> + <var-decl name='timer_running' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='486' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3584'> - <var-decl name='wait_time' type-id='bd54fe1a' visibility='default' filepath='include/sound/pcm.h' line='483' column='1'/> + <var-decl name='wait_time' type-id='bd54fe1a' visibility='default' filepath='include/sound/pcm.h' line='487' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3648'> - <var-decl name='next' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='485' column='1'/> + <var-decl name='next' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='489' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3712'> - <var-decl name='link_list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='487' column='1'/> + <var-decl name='link_list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='491' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3840'> - <var-decl name='self_group' type-id='5e60e97f' visibility='default' filepath='include/sound/pcm.h' line='488' column='1'/> + <var-decl name='self_group' type-id='5e60e97f' visibility='default' filepath='include/sound/pcm.h' line='492' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4352'> - <var-decl name='group' type-id='8042a887' visibility='default' filepath='include/sound/pcm.h' line='489' column='1'/> + <var-decl name='group' type-id='8042a887' visibility='default' filepath='include/sound/pcm.h' line='493' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4416'> - <var-decl name='file' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='491' column='1'/> + <var-decl name='file' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='495' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4480'> - <var-decl name='ref_count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='492' column='1'/> + <var-decl name='ref_count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='496' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4512'> - <var-decl name='mmap_count' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='493' column='1'/> + <var-decl name='mmap_count' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='497' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4544'> - <var-decl name='f_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='494' column='1'/> + <var-decl name='f_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='498' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4608'> - <var-decl name='pcm_release' type-id='897d1b6d' visibility='default' filepath='include/sound/pcm.h' line='495' column='1'/> + <var-decl name='pcm_release' type-id='897d1b6d' visibility='default' filepath='include/sound/pcm.h' line='499' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4672'> - <var-decl name='pid' type-id='b94e5398' visibility='default' filepath='include/sound/pcm.h' line='496' column='1'/> + <var-decl name='pid' type-id='b94e5398' visibility='default' filepath='include/sound/pcm.h' line='500' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4736'> - <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='502' column='1'/> + <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='506' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4800'> - <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='503' column='1'/> + <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='507' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4864'> - <var-decl name='proc_hw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='504' column='1'/> + <var-decl name='proc_hw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='508' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='proc_sw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='505' column='1'/> + <var-decl name='proc_sw_params_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='509' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4992'> - <var-decl name='proc_status_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='506' column='1'/> + <var-decl name='proc_status_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='510' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5056'> - <var-decl name='proc_prealloc_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='507' column='1'/> + <var-decl name='proc_prealloc_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='511' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5120'> - <var-decl name='proc_prealloc_max_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='508' column='1'/> + <var-decl name='proc_prealloc_max_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='512' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='hw_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='514' column='1'/> + <var-decl name='hw_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='518' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='hw_no_buffer' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='515' column='1'/> + <var-decl name='hw_no_buffer' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='519' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm' size-in-bits='18496' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='546' column='1' id='76f8f8bb'> + <class-decl name='snd_pcm' size-in-bits='18496' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='550' column='1' id='76f8f8bb'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='card' type-id='52704eb7' visibility='default' filepath='include/sound/pcm.h' line='547' column='1'/> + <var-decl name='card' type-id='52704eb7' visibility='default' filepath='include/sound/pcm.h' line='551' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='548' column='1'/> + <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='552' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='device' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='549' column='1'/> + <var-decl name='device' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='553' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='224'> - <var-decl name='info_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='550' column='1'/> + <var-decl name='info_flags' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='554' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='dev_class' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='551' column='1'/> + <var-decl name='dev_class' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='555' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='272'> - <var-decl name='dev_subclass' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='552' column='1'/> + <var-decl name='dev_subclass' type-id='8efea9e5' visibility='default' filepath='include/sound/pcm.h' line='556' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='id' type-id='59daf3ef' visibility='default' filepath='include/sound/pcm.h' line='553' column='1'/> + <var-decl name='id' type-id='59daf3ef' visibility='default' filepath='include/sound/pcm.h' line='557' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='800'> - <var-decl name='name' type-id='aa5ff375' visibility='default' filepath='include/sound/pcm.h' line='554' column='1'/> + <var-decl name='name' type-id='aa5ff375' visibility='default' filepath='include/sound/pcm.h' line='558' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='streams' type-id='5e28cc39' visibility='default' filepath='include/sound/pcm.h' line='555' column='1'/> + <var-decl name='streams' type-id='5e28cc39' visibility='default' filepath='include/sound/pcm.h' line='559' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17856'> - <var-decl name='open_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='556' column='1'/> + <var-decl name='open_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='560' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18112'> - <var-decl name='open_wait' type-id='b5ab048f' visibility='default' filepath='include/sound/pcm.h' line='557' column='1'/> + <var-decl name='open_wait' type-id='b5ab048f' visibility='default' filepath='include/sound/pcm.h' line='561' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18304'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='558' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='562' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18368'> - <var-decl name='private_free' type-id='182096ce' visibility='default' filepath='include/sound/pcm.h' line='559' column='1'/> + <var-decl name='private_free' type-id='182096ce' visibility='default' filepath='include/sound/pcm.h' line='563' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18432'> - <var-decl name='internal' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='560' column='1'/> + <var-decl name='internal' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='564' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='18440'> - <var-decl name='nonatomic' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='561' column='1'/> + <var-decl name='nonatomic' type-id='b50a4934' visibility='default' filepath='include/sound/pcm.h' line='565' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_str' size-in-bits='8192' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='521' column='1' id='5d633b6b'> + <class-decl name='snd_pcm_str' size-in-bits='8192' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='525' column='1' id='5d633b6b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='522' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='526' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='523' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='527' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='substream_count' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='525' column='1'/> + <var-decl name='substream_count' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='substream_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='526' column='1'/> + <var-decl name='substream_opened' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='530' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='substream' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='527' column='1'/> + <var-decl name='substream' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='531' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='533' column='1'/> + <var-decl name='proc_root' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='537' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='534' column='1'/> + <var-decl name='proc_info_entry' type-id='b9608bfc' visibility='default' filepath='include/sound/pcm.h' line='538' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='chmap_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='540' column='1'/> + <var-decl name='chmap_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='544' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='vol_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='541' column='1'/> + <var-decl name='vol_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='545' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='usr_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='542' column='1'/> + <var-decl name='usr_kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='546' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='include/sound/pcm.h' line='543' column='1'/> + <var-decl name='dev' type-id='66e487eb' visibility='default' filepath='include/sound/pcm.h' line='547' column='1'/> </data-member> </class-decl> <class-decl name='pm_qos_request' size-in-bits='2240' is-struct='yes' visibility='default' filepath='include/linux/pm_qos.h' line='57' column='1' id='cd6fc142'> @@ -141840,7 +141855,7 @@ <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/sound/memalloc.h' line='36' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_runtime' size-in-bits='6144' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='367' column='1' id='bc78c060'> + <class-decl name='snd_pcm_runtime' size-in-bits='6464' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='367' column='1' id='bc78c060'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='trigger_master' type-id='06b2cd14' visibility='default' filepath='include/sound/pcm.h' line='369' column='1'/> </data-member> @@ -142012,6 +142027,12 @@ <data-member access='public' layout-offset-in-bits='6016'> <var-decl name='driver_tstamp' type-id='a9c79a1f' visibility='default' filepath='include/sound/pcm.h' line='447' column='1'/> </data-member> + <data-member access='public' layout-offset-in-bits='6144'> + <var-decl name='buffer_mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='454' column='1'/> + </data-member> + <data-member access='public' layout-offset-in-bits='6400'> + <var-decl name='buffer_accessing' type-id='49178f86' visibility='default' filepath='include/sound/pcm.h' line='455' column='1'/> + </data-member> </class-decl> <typedef-decl name='snd_pcm_uframes_t' type-id='7359adad' filepath='include/uapi/sound/asound.h' line='163' column='1' id='df412e35'/> <typedef-decl name='snd_pcm_sframes_t' type-id='bd54fe1a' filepath='include/uapi/sound/asound.h' line='164' column='1' id='721b74e7'/> @@ -142211,18 +142232,18 @@ <var-decl name='accuracy' type-id='19c2251e' visibility='default' filepath='include/sound/pcm.h' line='347' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_group' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='455' column='1' id='5e60e97f'> + <class-decl name='snd_pcm_group' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='459' column='1' id='5e60e97f'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='456' column='1'/> + <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/sound/pcm.h' line='460' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='457' column='1'/> + <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='include/sound/pcm.h' line='461' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='substreams' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='458' column='1'/> + <var-decl name='substreams' type-id='72f469ec' visibility='default' filepath='include/sound/pcm.h' line='462' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='459' column='1'/> + <var-decl name='count' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='463' column='1'/> </data-member> </class-decl> <class-decl name='snd_soc_dpcm_runtime' size-in-bits='5376' is-struct='yes' visibility='default' filepath='include/sound/soc-dpcm.h' line='93' column='1' id='c1c63dde'> @@ -142727,12 +142748,12 @@ <var-decl name='blk_size' type-id='3f1a6b60' visibility='default' filepath='include/uapi/sound/compress_params.h' line='426' column='1'/> </data-member> </class-decl> - <class-decl name='snd_compr_metadata' size-in-bits='288' is-struct='yes' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='198' column='1' id='92ee9b60'> + <class-decl name='snd_compr_metadata' size-in-bits='288' is-struct='yes' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='202' column='1' id='92ee9b60'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='key' type-id='3f1a6b60' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='199' column='1'/> + <var-decl name='key' type-id='3f1a6b60' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='203' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='value' type-id='7f84eb57' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='200' column='1'/> + <var-decl name='value' type-id='7f84eb57' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='204' column='1'/> </data-member> </class-decl> <class-decl name='snd_compr_tstamp' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/uapi/sound/compress_offload.h' line='68' column='1' id='32b4223a'> @@ -143769,35 +143790,35 @@ <var-decl name='jack_zones' type-id='72f469ec' visibility='default' filepath='include/sound/soc.h' line='734' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_chmap_elem' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1407' column='1' id='09098b3b'> + <class-decl name='snd_pcm_chmap_elem' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1411' column='1' id='09098b3b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='channels' type-id='002ac4a6' visibility='default' filepath='include/sound/pcm.h' line='1408' column='1'/> + <var-decl name='channels' type-id='002ac4a6' visibility='default' filepath='include/sound/pcm.h' line='1412' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='8'> - <var-decl name='map' type-id='92ab2118' visibility='default' filepath='include/sound/pcm.h' line='1409' column='1'/> + <var-decl name='map' type-id='92ab2118' visibility='default' filepath='include/sound/pcm.h' line='1413' column='1'/> </data-member> </class-decl> - <class-decl name='snd_pcm_chmap' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1413' column='1' id='e8a73faf'> + <class-decl name='snd_pcm_chmap' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/sound/pcm.h' line='1417' column='1' id='e8a73faf'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1414' column='1'/> + <var-decl name='pcm' type-id='4c9f335b' visibility='default' filepath='include/sound/pcm.h' line='1418' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1415' column='1'/> + <var-decl name='stream' type-id='95e97e5e' visibility='default' filepath='include/sound/pcm.h' line='1419' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1416' column='1'/> + <var-decl name='kctl' type-id='7a5054b7' visibility='default' filepath='include/sound/pcm.h' line='1420' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='chmap' type-id='ddec2084' visibility='default' filepath='include/sound/pcm.h' line='1417' column='1'/> + <var-decl name='chmap' type-id='ddec2084' visibility='default' filepath='include/sound/pcm.h' line='1421' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='max_channels' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='1418' column='1'/> + <var-decl name='max_channels' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='1422' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='channel_mask' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='1419' column='1'/> + <var-decl name='channel_mask' type-id='f0981eeb' visibility='default' filepath='include/sound/pcm.h' line='1423' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1420' column='1'/> + <var-decl name='private_data' type-id='eaa32e2f' visibility='default' filepath='include/sound/pcm.h' line='1424' column='1'/> </data-member> </class-decl> <qualified-type-def type-id='33d73f3b' const='yes' id='9625db14'/> @@ -144009,7 +144030,7 @@ <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_add_chmap_ctls' mangled-name='snd_pcm_add_chmap_ctls' filepath='include/sound/pcm.h' line='1448' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_chmap_ctls'> + <function-decl name='snd_pcm_add_chmap_ctls' mangled-name='snd_pcm_add_chmap_ctls' filepath='include/sound/pcm.h' line='1452' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_add_chmap_ctls'> <parameter type-id='4c9f335b'/> <parameter type-id='95e97e5e'/> <parameter type-id='ddec2084'/> @@ -144028,7 +144049,7 @@ <parameter type-id='7a5054b7'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_pcm_format_width' mangled-name='snd_pcm_format_width' filepath='include/sound/pcm.h' line='1094' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_format_width'> + <function-decl name='snd_pcm_format_width' mangled-name='snd_pcm_format_width' filepath='include/sound/pcm.h' line='1098' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_pcm_format_width'> <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> </function-decl> @@ -144809,19 +144830,19 @@ <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='569' column='1'/> <return type-id='810606ec'/> </function-decl> - <function-decl name='snd_soc_dapm_mux_update_power' mangled-name='snd_soc_dapm_mux_update_power' filepath='sound/soc/soc-dapm.c' line='2279' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_mux_update_power'> - <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='2279' column='1'/> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='2280' column='1'/> - <parameter type-id='95e97e5e' name='mux' filepath='sound/soc/soc-dapm.c' line='2280' column='1'/> - <parameter type-id='acf1578a' name='e' filepath='sound/soc/soc-dapm.c' line='2280' column='1'/> - <parameter type-id='33146de3' name='update' filepath='sound/soc/soc-dapm.c' line='2281' column='1'/> + <function-decl name='snd_soc_dapm_mux_update_power' mangled-name='snd_soc_dapm_mux_update_power' filepath='sound/soc/soc-dapm.c' line='2277' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_mux_update_power'> + <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='2277' column='1'/> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='2278' column='1'/> + <parameter type-id='95e97e5e' name='mux' filepath='sound/soc/soc-dapm.c' line='2278' column='1'/> + <parameter type-id='acf1578a' name='e' filepath='sound/soc/soc-dapm.c' line='2278' column='1'/> + <parameter type-id='33146de3' name='update' filepath='sound/soc/soc-dapm.c' line='2279' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_mixer_update_power' mangled-name='snd_soc_dapm_mixer_update_power' filepath='sound/soc/soc-dapm.c' line='2344' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_mixer_update_power'> - <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='2344' column='1'/> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='2345' column='1'/> - <parameter type-id='95e97e5e' name='connect' filepath='sound/soc/soc-dapm.c' line='2345' column='1'/> - <parameter type-id='33146de3' name='update' filepath='sound/soc/soc-dapm.c' line='2346' column='1'/> + <function-decl name='snd_soc_dapm_mixer_update_power' mangled-name='snd_soc_dapm_mixer_update_power' filepath='sound/soc/soc-dapm.c' line='2342' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_mixer_update_power'> + <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='2342' column='1'/> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='2343' column='1'/> + <parameter type-id='95e97e5e' name='connect' filepath='sound/soc/soc-dapm.c' line='2343' column='1'/> + <parameter type-id='33146de3' name='update' filepath='sound/soc/soc-dapm.c' line='2344' column='1'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='snd_soc_component_update_bits' mangled-name='snd_soc_component_update_bits' filepath='include/sound/soc.h' line='1362' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_component_update_bits'> @@ -144831,29 +144852,29 @@ <parameter type-id='f0981eeb'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_get_volsw' mangled-name='snd_soc_dapm_get_volsw' filepath='sound/soc/soc-dapm.c' line='3188' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_get_volsw'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3188' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3189' column='1'/> + <function-decl name='snd_soc_dapm_get_volsw' mangled-name='snd_soc_dapm_get_volsw' filepath='sound/soc/soc-dapm.c' line='3186' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_get_volsw'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3186' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3187' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_put_volsw' mangled-name='snd_soc_dapm_put_volsw' filepath='sound/soc/soc-dapm.c' line='3251' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_put_volsw'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3251' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3252' column='1'/> + <function-decl name='snd_soc_dapm_put_volsw' mangled-name='snd_soc_dapm_put_volsw' filepath='sound/soc/soc-dapm.c' line='3249' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_put_volsw'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3249' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3250' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_get_enum_double' mangled-name='snd_soc_dapm_get_enum_double' filepath='sound/soc/soc-dapm.c' line='3343' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_get_enum_double'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3343' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3344' column='1'/> + <function-decl name='snd_soc_dapm_get_enum_double' mangled-name='snd_soc_dapm_get_enum_double' filepath='sound/soc/soc-dapm.c' line='3340' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_get_enum_double'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3340' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3341' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_put_enum_double' mangled-name='snd_soc_dapm_put_enum_double' filepath='sound/soc/soc-dapm.c' line='3384' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_put_enum_double'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3384' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3385' column='1'/> + <function-decl name='snd_soc_dapm_put_enum_double' mangled-name='snd_soc_dapm_put_enum_double' filepath='sound/soc/soc-dapm.c' line='3381' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_put_enum_double'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-dapm.c' line='3381' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-dapm.c' line='3382' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_dapm_ignore_suspend' mangled-name='snd_soc_dapm_ignore_suspend' filepath='sound/soc/soc-dapm.c' line='4562' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_ignore_suspend'> - <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='4562' column='1'/> - <parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-dapm.c' line='4563' column='1'/> + <function-decl name='snd_soc_dapm_ignore_suspend' mangled-name='snd_soc_dapm_ignore_suspend' filepath='sound/soc/soc-dapm.c' line='4558' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_dapm_ignore_suspend'> + <parameter type-id='70d004a5' name='dapm' filepath='sound/soc/soc-dapm.c' line='4558' column='1'/> + <parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-dapm.c' line='4559' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -144945,41 +144966,41 @@ <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='304' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_get_volsw_sx' mangled-name='snd_soc_get_volsw_sx' filepath='sound/soc/soc-ops.c' line='365' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_get_volsw_sx'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='365' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='366' column='1'/> + <function-decl name='snd_soc_get_volsw_sx' mangled-name='snd_soc_get_volsw_sx' filepath='sound/soc/soc-ops.c' line='385' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_get_volsw_sx'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='385' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='386' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_put_volsw_sx' mangled-name='snd_soc_put_volsw_sx' filepath='sound/soc/soc-ops.c' line='409' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_put_volsw_sx'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='409' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='410' column='1'/> + <function-decl name='snd_soc_put_volsw_sx' mangled-name='snd_soc_put_volsw_sx' filepath='sound/soc/soc-ops.c' line='429' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_put_volsw_sx'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='429' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='430' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_info_volsw_range' mangled-name='snd_soc_info_volsw_range' filepath='sound/soc/soc-ops.c' line='456' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_info_volsw_range'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='456' column='1'/> - <parameter type-id='0e291009' name='uinfo' filepath='sound/soc/soc-ops.c' line='457' column='1'/> + <function-decl name='snd_soc_info_volsw_range' mangled-name='snd_soc_info_volsw_range' filepath='sound/soc/soc-ops.c' line='483' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_info_volsw_range'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='483' column='1'/> + <parameter type-id='0e291009' name='uinfo' filepath='sound/soc/soc-ops.c' line='484' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_put_volsw_range' mangled-name='snd_soc_put_volsw_range' filepath='sound/soc/soc-ops.c' line='486' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_put_volsw_range'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='486' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='487' column='1'/> + <function-decl name='snd_soc_put_volsw_range' mangled-name='snd_soc_put_volsw_range' filepath='sound/soc/soc-ops.c' line='513' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_put_volsw_range'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='513' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='514' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_get_volsw_range' mangled-name='snd_soc_get_volsw_range' filepath='sound/soc/soc-ops.c' line='538' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_get_volsw_range'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='538' column='1'/> - <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='539' column='1'/> + <function-decl name='snd_soc_get_volsw_range' mangled-name='snd_soc_get_volsw_range' filepath='sound/soc/soc-ops.c' line='586' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_get_volsw_range'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='586' column='1'/> + <parameter type-id='144a5d4c' name='ucontrol' filepath='sound/soc/soc-ops.c' line='587' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_bytes_info_ext' mangled-name='snd_soc_bytes_info_ext' filepath='sound/soc/soc-ops.c' line='756' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_bytes_info_ext'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='756' column='1'/> - <parameter type-id='0e291009' name='ucontrol' filepath='sound/soc/soc-ops.c' line='757' column='1'/> + <function-decl name='snd_soc_bytes_info_ext' mangled-name='snd_soc_bytes_info_ext' filepath='sound/soc/soc-ops.c' line='804' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_bytes_info_ext'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='804' column='1'/> + <parameter type-id='0e291009' name='ucontrol' filepath='sound/soc/soc-ops.c' line='805' column='1'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='snd_soc_bytes_tlv_callback' mangled-name='snd_soc_bytes_tlv_callback' filepath='sound/soc/soc-ops.c' line='768' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_bytes_tlv_callback'> - <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='768' column='1'/> - <parameter type-id='95e97e5e' name='op_flag' filepath='sound/soc/soc-ops.c' line='768' column='1'/> - <parameter type-id='f0981eeb' name='size' filepath='sound/soc/soc-ops.c' line='769' column='1'/> - <parameter type-id='807869d3' name='tlv' filepath='sound/soc/soc-ops.c' line='769' column='1'/> + <function-decl name='snd_soc_bytes_tlv_callback' mangled-name='snd_soc_bytes_tlv_callback' filepath='sound/soc/soc-ops.c' line='816' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_bytes_tlv_callback'> + <parameter type-id='7a5054b7' name='kcontrol' filepath='sound/soc/soc-ops.c' line='816' column='1'/> + <parameter type-id='95e97e5e' name='op_flag' filepath='sound/soc/soc-ops.c' line='816' column='1'/> + <parameter type-id='f0981eeb' name='size' filepath='sound/soc/soc-ops.c' line='817' column='1'/> + <parameter type-id='807869d3' name='tlv' filepath='sound/soc/soc-ops.c' line='817' column='1'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> @@ -146245,7 +146266,7 @@ <parameter type-id='051883a9'/> <return type-id='eaa32e2f'/> </function-decl> - <function-decl name='remap_pfn_range' filepath='include/linux/mm.h' line='2572' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='remap_pfn_range' filepath='include/linux/mm.h' line='2574' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='2ae08426'/> <parameter type-id='7359adad'/> <parameter type-id='7359adad'/> @@ -146314,7 +146335,7 @@ <abi-instr address-size='64' path='drivers/platform/msm/ipa/ipa_v3/ipa_intf.c' language='LANG_C89'> </abi-instr> <abi-instr address-size='64' path='drivers/platform/msm/ipa/ipa_v3/ipa_nat.c' language='LANG_C89'> - <function-decl name='vm_iomap_memory' filepath='include/linux/mm.h' line='2583' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='vm_iomap_memory' filepath='include/linux/mm.h' line='2585' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='2ae08426'/> <parameter type-id='3a47d82b'/> <parameter type-id='7359adad'/> @@ -146740,11 +146761,11 @@ <parameter type-id='24e1ec7e'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='vm_get_page_prot' filepath='include/linux/mm.h' line='2553' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='vm_get_page_prot' filepath='include/linux/mm.h' line='2555' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='7359adad'/> <return type-id='051883a9'/> </function-decl> - <function-decl name='vm_insert_mixed' filepath='include/linux/mm.h' line='2579' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='vm_insert_mixed' filepath='include/linux/mm.h' line='2581' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='2ae08426'/> <parameter type-id='7359adad'/> <parameter type-id='8444d1f8'/> @@ -147028,7 +147049,7 @@ <abi-instr address-size='64' path='techpack/audio/asoc/msm-compress-q6-v2.c' language='LANG_C89'> </abi-instr> <abi-instr address-size='64' path='techpack/audio/asoc/msm-dai-fe.c' language='LANG_C89'> - <function-decl name='snd_pcm_hw_constraint_list' filepath='include/sound/pcm.h' line='1023' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='snd_pcm_hw_constraint_list' filepath='include/sound/pcm.h' line='1027' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='17a05af6'/> <parameter type-id='f0981eeb'/> <parameter type-id='95e97e5e'/> @@ -147049,7 +147070,7 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='techpack/audio/asoc/msm-lsm-client.c' language='LANG_C89'> - <function-decl name='snd_pcm_hw_constraint_step' filepath='include/sound/pcm.h' line='1043' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='snd_pcm_hw_constraint_step' filepath='include/sound/pcm.h' line='1047' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='17a05af6'/> <parameter type-id='f0981eeb'/> <parameter type-id='95e97e5e'/> @@ -147058,7 +147079,7 @@ </function-decl> </abi-instr> <abi-instr address-size='64' path='techpack/audio/asoc/msm-pcm-afe-v2.c' language='LANG_C89'> - <function-decl name='snd_pcm_stop' filepath='include/sound/pcm.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='snd_pcm_stop' filepath='include/sound/pcm.h' line='605' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='06b2cd14'/> <parameter type-id='95e97e5e'/> <return type-id='95e97e5e'/> @@ -147141,7 +147162,7 @@ </abi-corpus> <abi-corpus version='2.0' path='qcom_glink_native.ko' architecture='elf-arm-aarch64'> <abi-instr address-size='64' path='drivers/rpmsg/qcom_glink_native.c' language='LANG_C89'> - <function-decl name='sched_setaffinity' filepath='include/linux/sched.h' line='2098' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='sched_setaffinity' filepath='include/linux/sched.h' line='2097' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='95e97e5e'/> <parameter type-id='5f8a1ac4'/> <return type-id='bd54fe1a'/> @@ -147493,7 +147514,7 @@ <array-type-def dimensions='1' type-id='7359adad' size-in-bits='704' id='d2a95b2f'> <subrange length='11' type-id='7ff19f0f' id='847bc017'/> </array-type-def> - <class-decl name='sctp_endpoint' size-in-bits='2112' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1284' column='1' id='fe4590ea'> + <class-decl name='sctp_endpoint' size-in-bits='2240' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1284' column='1' id='fe4590ea'> <data-member access='public' layout-offset-in-bits='0'> <var-decl name='base' type-id='a3dbc45f' visibility='default' filepath='include/net/sctp/structs.h' line='1286' column='1'/> </data-member> @@ -147545,6 +147566,9 @@ <data-member access='public' layout-offset-in-bits='2048'> <var-decl name='peer_secid' type-id='19c2251e' visibility='default' filepath='include/net/sctp/structs.h' line='1350' column='1'/> </data-member> + <data-member access='public' layout-offset-in-bits='2112'> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sctp/structs.h' line='1351' column='1'/> + </data-member> </class-decl> <class-decl name='sctp_ep_common' size-in-bits='1152' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1232' column='1' id='a3dbc45f'> <data-member access='public' layout-offset-in-bits='0'> @@ -148328,380 +148352,380 @@ </data-member> </class-decl> <typedef-decl name='sctp_assoc_t' type-id='3158a266' filepath='include/uapi/linux/sctp.h' line='60' column='1' id='a3aeb14d'/> - <class-decl name='sctp_association' size-in-bits='18048' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1558' column='1' id='267bc227'> + <class-decl name='sctp_association' size-in-bits='18048' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1559' column='1' id='267bc227'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='base' type-id='a3dbc45f' visibility='default' filepath='include/net/sctp/structs.h' line='1564' column='1'/> + <var-decl name='base' type-id='a3dbc45f' visibility='default' filepath='include/net/sctp/structs.h' line='1565' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='asocs' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1567' column='1'/> + <var-decl name='asocs' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1568' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='assoc_id' type-id='a3aeb14d' visibility='default' filepath='include/net/sctp/structs.h' line='1570' column='1'/> + <var-decl name='assoc_id' type-id='a3aeb14d' visibility='default' filepath='include/net/sctp/structs.h' line='1571' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='ep' type-id='21c8c372' visibility='default' filepath='include/net/sctp/structs.h' line='1573' column='1'/> + <var-decl name='ep' type-id='21c8c372' visibility='default' filepath='include/net/sctp/structs.h' line='1574' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='c' type-id='b722521e' visibility='default' filepath='include/net/sctp/structs.h' line='1576' column='1'/> + <var-decl name='c' type-id='b722521e' visibility='default' filepath='include/net/sctp/structs.h' line='1577' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2560'> - <var-decl name='peer' type-id='369931cc' visibility='default' filepath='include/net/sctp/structs.h' line='1734' column='1'/> + <var-decl name='peer' type-id='369931cc' visibility='default' filepath='include/net/sctp/structs.h' line='1735' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4672'> - <var-decl name='state' type-id='1f1fa7e0' visibility='default' filepath='include/net/sctp/structs.h' line='1749' column='1'/> + <var-decl name='state' type-id='1f1fa7e0' visibility='default' filepath='include/net/sctp/structs.h' line='1750' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4704'> - <var-decl name='overall_error_count' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1754' column='1'/> + <var-decl name='overall_error_count' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1755' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4736'> - <var-decl name='cookie_life' type-id='fbc017ef' visibility='default' filepath='include/net/sctp/structs.h' line='1757' column='1'/> + <var-decl name='cookie_life' type-id='fbc017ef' visibility='default' filepath='include/net/sctp/structs.h' line='1758' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4800'> - <var-decl name='rto_initial' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1763' column='1'/> + <var-decl name='rto_initial' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1764' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4864'> - <var-decl name='rto_max' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1764' column='1'/> + <var-decl name='rto_max' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1765' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4928'> - <var-decl name='rto_min' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1765' column='1'/> + <var-decl name='rto_min' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1766' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4992'> - <var-decl name='max_burst' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1768' column='1'/> + <var-decl name='max_burst' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1769' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5024'> - <var-decl name='max_retrans' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1774' column='1'/> + <var-decl name='max_retrans' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1775' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5056'> - <var-decl name='pf_retrans' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1780' column='1'/> + <var-decl name='pf_retrans' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1781' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5088'> - <var-decl name='max_init_attempts' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1783' column='1'/> + <var-decl name='max_init_attempts' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1784' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5104'> - <var-decl name='init_retries' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1786' column='1'/> + <var-decl name='init_retries' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1787' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5120'> - <var-decl name='max_init_timeo' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1789' column='1'/> + <var-decl name='max_init_timeo' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1790' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5184'> - <var-decl name='hbinterval' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1795' column='1'/> + <var-decl name='hbinterval' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1796' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5248'> - <var-decl name='pathmaxrxt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1800' column='1'/> + <var-decl name='pathmaxrxt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1801' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5280'> - <var-decl name='flowlabel' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1802' column='1'/> + <var-decl name='flowlabel' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1803' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5312'> - <var-decl name='dscp' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1803' column='1'/> + <var-decl name='dscp' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1804' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5320'> - <var-decl name='pmtu_pending' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1806' column='1'/> + <var-decl name='pmtu_pending' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1807' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5344'> - <var-decl name='pathmtu' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1811' column='1'/> + <var-decl name='pathmtu' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1812' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5376'> - <var-decl name='param_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1814' column='1'/> + <var-decl name='param_flags' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1815' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5408'> - <var-decl name='sackfreq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1816' column='1'/> + <var-decl name='sackfreq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1817' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5440'> - <var-decl name='sackdelay' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1818' column='1'/> + <var-decl name='sackdelay' type-id='7359adad' visibility='default' filepath='include/net/sctp/structs.h' line='1819' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5504'> - <var-decl name='timeouts' type-id='d2a95b2f' visibility='default' filepath='include/net/sctp/structs.h' line='1820' column='1'/> + <var-decl name='timeouts' type-id='d2a95b2f' visibility='default' filepath='include/net/sctp/structs.h' line='1821' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6208'> - <var-decl name='timers' type-id='38cb9d7d' visibility='default' filepath='include/net/sctp/structs.h' line='1821' column='1'/> + <var-decl name='timers' type-id='38cb9d7d' visibility='default' filepath='include/net/sctp/structs.h' line='1822' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11136'> - <var-decl name='shutdown_last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1824' column='1'/> + <var-decl name='shutdown_last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1825' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11200'> - <var-decl name='init_last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1827' column='1'/> + <var-decl name='init_last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1828' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11264'> - <var-decl name='shutdown_retries' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1830' column='1'/> + <var-decl name='shutdown_retries' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1831' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11296'> - <var-decl name='next_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1839' column='1'/> + <var-decl name='next_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1840' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11328'> - <var-decl name='ctsn_ack_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1850' column='1'/> + <var-decl name='ctsn_ack_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1851' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11360'> - <var-decl name='adv_peer_ack_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1853' column='1'/> + <var-decl name='adv_peer_ack_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1854' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11392'> - <var-decl name='highest_sacked' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1856' column='1'/> + <var-decl name='highest_sacked' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1857' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11424'> - <var-decl name='fast_recovery_exit' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1859' column='1'/> + <var-decl name='fast_recovery_exit' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1860' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11456'> - <var-decl name='fast_recovery' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1862' column='1'/> + <var-decl name='fast_recovery' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1863' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11472'> - <var-decl name='unack_data' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1867' column='1'/> + <var-decl name='unack_data' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1868' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11488'> - <var-decl name='rtx_data_chunks' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1872' column='1'/> + <var-decl name='rtx_data_chunks' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1873' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11520'> - <var-decl name='rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1877' column='1'/> + <var-decl name='rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1878' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11552'> - <var-decl name='a_rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1880' column='1'/> + <var-decl name='a_rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1881' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11584'> - <var-decl name='rwnd_over' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1885' column='1'/> + <var-decl name='rwnd_over' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1886' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11616'> - <var-decl name='rwnd_press' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1891' column='1'/> + <var-decl name='rwnd_press' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1892' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11648'> - <var-decl name='sndbuf_used' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1897' column='1'/> + <var-decl name='sndbuf_used' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1898' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11680'> - <var-decl name='rmem_alloc' type-id='49178f86' visibility='default' filepath='include/net/sctp/structs.h' line='1902' column='1'/> + <var-decl name='rmem_alloc' type-id='49178f86' visibility='default' filepath='include/net/sctp/structs.h' line='1903' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11712'> - <var-decl name='wait' type-id='b5ab048f' visibility='default' filepath='include/net/sctp/structs.h' line='1907' column='1'/> + <var-decl name='wait' type-id='b5ab048f' visibility='default' filepath='include/net/sctp/structs.h' line='1908' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11904'> - <var-decl name='frag_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1910' column='1'/> + <var-decl name='frag_point' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1911' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11936'> - <var-decl name='user_frag' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1911' column='1'/> + <var-decl name='user_frag' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1912' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='11968'> - <var-decl name='init_err_counter' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1914' column='1'/> + <var-decl name='init_err_counter' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1915' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12000'> - <var-decl name='init_cycle' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1917' column='1'/> + <var-decl name='init_cycle' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1918' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12032'> - <var-decl name='default_stream' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1920' column='1'/> + <var-decl name='default_stream' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1921' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12048'> - <var-decl name='default_flags' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1921' column='1'/> + <var-decl name='default_flags' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1922' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12064'> - <var-decl name='default_ppid' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1922' column='1'/> + <var-decl name='default_ppid' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1923' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12096'> - <var-decl name='default_context' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1923' column='1'/> + <var-decl name='default_context' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1924' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12128'> - <var-decl name='default_timetolive' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1924' column='1'/> + <var-decl name='default_timetolive' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1925' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12160'> - <var-decl name='default_rcv_context' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1927' column='1'/> + <var-decl name='default_rcv_context' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1928' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12224'> - <var-decl name='stream' type-id='5d589748' visibility='default' filepath='include/net/sctp/structs.h' line='1930' column='1'/> + <var-decl name='stream' type-id='5d589748' visibility='default' filepath='include/net/sctp/structs.h' line='1931' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='12736'> - <var-decl name='outqueue' type-id='3f05a6f7' visibility='default' filepath='include/net/sctp/structs.h' line='1933' column='1'/> + <var-decl name='outqueue' type-id='3f05a6f7' visibility='default' filepath='include/net/sctp/structs.h' line='1934' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='13632'> - <var-decl name='ulpq' type-id='fc610076' visibility='default' filepath='include/net/sctp/structs.h' line='1938' column='1'/> + <var-decl name='ulpq' type-id='fc610076' visibility='default' filepath='include/net/sctp/structs.h' line='1939' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14336'> - <var-decl name='last_ecne_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1941' column='1'/> + <var-decl name='last_ecne_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1942' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14368'> - <var-decl name='last_cwr_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1944' column='1'/> + <var-decl name='last_cwr_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1945' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14400'> - <var-decl name='numduptsns' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1947' column='1'/> + <var-decl name='numduptsns' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1948' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14464'> - <var-decl name='addip_last_asconf' type-id='bc5a0505' visibility='default' filepath='include/net/sctp/structs.h' line='1972' column='1'/> + <var-decl name='addip_last_asconf' type-id='bc5a0505' visibility='default' filepath='include/net/sctp/structs.h' line='1973' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14528'> - <var-decl name='asconf_ack_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1983' column='1'/> + <var-decl name='asconf_ack_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1984' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14656'> - <var-decl name='addip_chunk_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='2013' column='1'/> + <var-decl name='addip_chunk_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='2014' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14784'> - <var-decl name='addip_serial' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2035' column='1'/> + <var-decl name='addip_serial' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2036' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14816'> - <var-decl name='src_out_of_asoc_ok' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='2036' column='1'/> + <var-decl name='src_out_of_asoc_ok' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='2037' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14848'> - <var-decl name='asconf_addr_del_pending' type-id='21fb907b' visibility='default' filepath='include/net/sctp/structs.h' line='2037' column='1'/> + <var-decl name='asconf_addr_del_pending' type-id='21fb907b' visibility='default' filepath='include/net/sctp/structs.h' line='2038' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14912'> - <var-decl name='new_transport' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='2038' column='1'/> + <var-decl name='new_transport' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='2039' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='14976'> - <var-decl name='endpoint_shared_keys' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='2044' column='1'/> + <var-decl name='endpoint_shared_keys' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='2045' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15104'> - <var-decl name='asoc_shared_key' type-id='7ef32664' visibility='default' filepath='include/net/sctp/structs.h' line='2049' column='1'/> + <var-decl name='asoc_shared_key' type-id='7ef32664' visibility='default' filepath='include/net/sctp/structs.h' line='2050' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15168'> - <var-decl name='shkey' type-id='003cb2a5' visibility='default' filepath='include/net/sctp/structs.h' line='2050' column='1'/> + <var-decl name='shkey' type-id='003cb2a5' visibility='default' filepath='include/net/sctp/structs.h' line='2051' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15232'> - <var-decl name='default_hmac_id' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='2055' column='1'/> + <var-decl name='default_hmac_id' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='2056' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15248'> - <var-decl name='active_key_id' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='2057' column='1'/> + <var-decl name='active_key_id' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='2058' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='need_ecne' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2059' column='1'/> + <var-decl name='need_ecne' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2060' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='temp' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2060' column='1'/> + <var-decl name='temp' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2061' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='force_delay' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2061' column='1'/> + <var-decl name='force_delay' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2062' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3'> - <var-decl name='intl_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2062' column='1'/> + <var-decl name='intl_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2063' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4'> - <var-decl name='prsctp_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2063' column='1'/> + <var-decl name='prsctp_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2064' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5'> - <var-decl name='reconf_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2064' column='1'/> + <var-decl name='reconf_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2065' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15272'> - <var-decl name='strreset_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2066' column='1'/> + <var-decl name='strreset_enable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2067' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15280'> - <var-decl name='strreset_outstanding' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2067' column='1'/> + <var-decl name='strreset_outstanding' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='2068' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15296'> - <var-decl name='strreset_outseq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2069' column='1'/> + <var-decl name='strreset_outseq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2070' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15328'> - <var-decl name='strreset_inseq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2070' column='1'/> + <var-decl name='strreset_inseq' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='2071' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15360'> - <var-decl name='strreset_result' type-id='839e8989' visibility='default' filepath='include/net/sctp/structs.h' line='2071' column='1'/> + <var-decl name='strreset_result' type-id='839e8989' visibility='default' filepath='include/net/sctp/structs.h' line='2072' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15424'> - <var-decl name='strreset_chunk' type-id='bc5a0505' visibility='default' filepath='include/net/sctp/structs.h' line='2073' column='1'/> + <var-decl name='strreset_chunk' type-id='bc5a0505' visibility='default' filepath='include/net/sctp/structs.h' line='2074' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='15488'> - <var-decl name='stats' type-id='a61fff59' visibility='default' filepath='include/net/sctp/structs.h' line='2075' column='1'/> + <var-decl name='stats' type-id='a61fff59' visibility='default' filepath='include/net/sctp/structs.h' line='2076' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17472'> - <var-decl name='sent_cnt_removable' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='2077' column='1'/> + <var-decl name='sent_cnt_removable' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='2078' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17536'> - <var-decl name='abandoned_unsent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='2079' column='1'/> + <var-decl name='abandoned_unsent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='2080' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17728'> - <var-decl name='abandoned_sent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='2080' column='1'/> + <var-decl name='abandoned_sent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='2081' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='17920'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sctp/structs.h' line='2082' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/sctp/structs.h' line='2083' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__' size-in-bits='2112' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1579' column='1' id='369931cc'> + <class-decl name='__anonymous_struct__' size-in-bits='2112' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1580' column='1' id='369931cc'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='transport_addr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1595' column='1'/> + <var-decl name='transport_addr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1596' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1601' column='1'/> + <var-decl name='rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1602' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='transport_count' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1610' column='1'/> + <var-decl name='transport_count' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1611' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='176'> - <var-decl name='port' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1615' column='1'/> + <var-decl name='port' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1616' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='primary_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1632' column='1'/> + <var-decl name='primary_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1633' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='primary_addr' type-id='308313bc' visibility='default' filepath='include/net/sctp/structs.h' line='1637' column='1'/> + <var-decl name='primary_addr' type-id='308313bc' visibility='default' filepath='include/net/sctp/structs.h' line='1638' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='active_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1643' column='1'/> + <var-decl name='active_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1644' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='576'> - <var-decl name='retran_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1655' column='1'/> + <var-decl name='retran_path' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1656' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='640'> - <var-decl name='last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1658' column='1'/> + <var-decl name='last_sent_to' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1659' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='704'> - <var-decl name='last_data_from' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1661' column='1'/> + <var-decl name='last_data_from' type-id='a896a45d' visibility='default' filepath='include/net/sctp/structs.h' line='1662' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='768'> - <var-decl name='tsn_map' type-id='ca0d6ffd' visibility='default' filepath='include/net/sctp/structs.h' line='1683' column='1'/> + <var-decl name='tsn_map' type-id='ca0d6ffd' visibility='default' filepath='include/net/sctp/structs.h' line='1684' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='addip_disabled_mask' type-id='84a5c3d4' visibility='default' filepath='include/net/sctp/structs.h' line='1688' column='1'/> + <var-decl name='addip_disabled_mask' type-id='84a5c3d4' visibility='default' filepath='include/net/sctp/structs.h' line='1689' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='ecn_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1691' column='1'/> + <var-decl name='ecn_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1692' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='ipv4_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1692' column='1'/> + <var-decl name='ipv4_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1693' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='ipv6_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1693' column='1'/> + <var-decl name='ipv6_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1694' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3'> - <var-decl name='hostname_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1694' column='1'/> + <var-decl name='hostname_address' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1695' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4'> - <var-decl name='asconf_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1695' column='1'/> + <var-decl name='asconf_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1696' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5'> - <var-decl name='prsctp_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1696' column='1'/> + <var-decl name='prsctp_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1697' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6'> - <var-decl name='reconf_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1697' column='1'/> + <var-decl name='reconf_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1698' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='7'> - <var-decl name='auth_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1698' column='1'/> + <var-decl name='auth_capable' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1699' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sack_needed' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1710' column='1'/> + <var-decl name='sack_needed' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1711' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='sack_generation' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1711' column='1'/> + <var-decl name='sack_generation' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1712' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='zero_window_announced' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1712' column='1'/> + <var-decl name='zero_window_announced' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1713' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1568'> - <var-decl name='sack_cnt' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1713' column='1'/> + <var-decl name='sack_cnt' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1714' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='adaptation_ind' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1715' column='1'/> + <var-decl name='adaptation_ind' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1716' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1632'> - <var-decl name='i' type-id='27a8bf73' visibility='default' filepath='include/net/sctp/structs.h' line='1717' column='1'/> + <var-decl name='i' type-id='27a8bf73' visibility='default' filepath='include/net/sctp/structs.h' line='1718' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='cookie' type-id='eaa32e2f' visibility='default' filepath='include/net/sctp/structs.h' line='1718' column='1'/> + <var-decl name='cookie' type-id='eaa32e2f' visibility='default' filepath='include/net/sctp/structs.h' line='1719' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='cookie_len' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1719' column='1'/> + <var-decl name='cookie_len' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='1720' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1888'> - <var-decl name='addip_serial' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1725' column='1'/> + <var-decl name='addip_serial' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1726' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='peer_random' type-id='15a669d9' visibility='default' filepath='include/net/sctp/structs.h' line='1731' column='1'/> + <var-decl name='peer_random' type-id='15a669d9' visibility='default' filepath='include/net/sctp/structs.h' line='1732' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1984'> - <var-decl name='peer_chunks' type-id='0aaea792' visibility='default' filepath='include/net/sctp/structs.h' line='1732' column='1'/> + <var-decl name='peer_chunks' type-id='0aaea792' visibility='default' filepath='include/net/sctp/structs.h' line='1733' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2048'> - <var-decl name='peer_hmacs' type-id='979aaf09' visibility='default' filepath='include/net/sctp/structs.h' line='1733' column='1'/> + <var-decl name='peer_hmacs' type-id='979aaf09' visibility='default' filepath='include/net/sctp/structs.h' line='1734' column='1'/> </data-member> </class-decl> <class-decl name='sctp_transport' size-in-bits='5696' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='783' column='1' id='820437dd'> @@ -149076,96 +149100,96 @@ <var-decl name='do_auto_asconf' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='244' column='1'/> </data-member> </class-decl> - <class-decl name='inet_sock' size-in-bits='8000' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='177' column='1' id='cec16d30'> + <class-decl name='inet_sock' size-in-bits='8000' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='178' column='1' id='cec16d30'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sk' type-id='a240f41d' visibility='default' filepath='include/net/inet_sock.h' line='179' column='1'/> + <var-decl name='sk' type-id='a240f41d' visibility='default' filepath='include/net/inet_sock.h' line='180' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6400'> - <var-decl name='pinet6' type-id='6d320b83' visibility='default' filepath='include/net/inet_sock.h' line='181' column='1'/> + <var-decl name='pinet6' type-id='6d320b83' visibility='default' filepath='include/net/inet_sock.h' line='182' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6464'> - <var-decl name='inet_saddr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='189' column='1'/> + <var-decl name='inet_saddr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='190' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6496'> - <var-decl name='uc_ttl' type-id='b55def60' visibility='default' filepath='include/net/inet_sock.h' line='190' column='1'/> + <var-decl name='uc_ttl' type-id='b55def60' visibility='default' filepath='include/net/inet_sock.h' line='191' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6512'> - <var-decl name='cmsg_flags' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='191' column='1'/> + <var-decl name='cmsg_flags' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='192' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6528'> - <var-decl name='inet_sport' type-id='84a5c3d4' visibility='default' filepath='include/net/inet_sock.h' line='192' column='1'/> + <var-decl name='inet_sport' type-id='84a5c3d4' visibility='default' filepath='include/net/inet_sock.h' line='193' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6544'> - <var-decl name='inet_id' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='193' column='1'/> + <var-decl name='inet_id' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='194' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6592'> - <var-decl name='inet_opt' type-id='70119ea2' visibility='default' filepath='include/net/inet_sock.h' line='195' column='1'/> + <var-decl name='inet_opt' type-id='70119ea2' visibility='default' filepath='include/net/inet_sock.h' line='196' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6656'> - <var-decl name='rx_dst_ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='196' column='1'/> + <var-decl name='rx_dst_ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='197' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6688'> - <var-decl name='tos' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='197' column='1'/> + <var-decl name='tos' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='198' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6696'> - <var-decl name='min_ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='198' column='1'/> + <var-decl name='min_ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='199' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6704'> - <var-decl name='mc_ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='199' column='1'/> + <var-decl name='mc_ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='200' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6712'> - <var-decl name='pmtudisc' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='200' column='1'/> + <var-decl name='pmtudisc' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='201' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='recverr' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='201' column='1'/> + <var-decl name='recverr' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='202' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='is_icsk' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='202' column='1'/> + <var-decl name='is_icsk' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='203' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='2'> - <var-decl name='freebind' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='203' column='1'/> + <var-decl name='freebind' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='204' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='3'> - <var-decl name='hdrincl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='204' column='1'/> + <var-decl name='hdrincl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='205' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='4'> - <var-decl name='mc_loop' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='205' column='1'/> + <var-decl name='mc_loop' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='206' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='5'> - <var-decl name='transparent' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='206' column='1'/> + <var-decl name='transparent' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='207' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6'> - <var-decl name='mc_all' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='207' column='1'/> + <var-decl name='mc_all' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='208' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='7'> - <var-decl name='nodefrag' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='208' column='1'/> + <var-decl name='nodefrag' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='209' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='bind_address_no_port' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='209' column='1'/> + <var-decl name='bind_address_no_port' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='210' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1'> - <var-decl name='defer_connect' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='210' column='1'/> + <var-decl name='defer_connect' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='211' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6736'> - <var-decl name='rcv_tos' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='214' column='1'/> + <var-decl name='rcv_tos' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='215' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6744'> - <var-decl name='convert_csum' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='215' column='1'/> + <var-decl name='convert_csum' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='216' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6752'> - <var-decl name='uc_index' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='216' column='1'/> + <var-decl name='uc_index' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='217' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6784'> - <var-decl name='mc_index' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='217' column='1'/> + <var-decl name='mc_index' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='218' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6816'> - <var-decl name='mc_addr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='218' column='1'/> + <var-decl name='mc_addr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='219' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6848'> - <var-decl name='mc_list' type-id='b49efd08' visibility='default' filepath='include/net/inet_sock.h' line='219' column='1'/> + <var-decl name='mc_list' type-id='b49efd08' visibility='default' filepath='include/net/inet_sock.h' line='220' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='6912'> - <var-decl name='cork' type-id='da785a0b' visibility='default' filepath='include/net/inet_sock.h' line='220' column='1'/> + <var-decl name='cork' type-id='da785a0b' visibility='default' filepath='include/net/inet_sock.h' line='221' column='1'/> </data-member> </class-decl> <class-decl name='ipv6_pinfo' size-in-bits='1280' is-struct='yes' visibility='default' filepath='include/linux/ipv6.h' line='213' column='1' id='bcad3f73'> @@ -149338,49 +149362,49 @@ <var-decl name='recvfragsize' type-id='d315442e' visibility='default' filepath='include/linux/ipv6.h' line='266' column='1'/> </data-member> </class-decl> - <class-decl name='ipv6_mc_socklist' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='94' column='1' id='8f725b86'> + <class-decl name='ipv6_mc_socklist' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='102' column='1' id='8f725b86'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='95' column='1'/> + <var-decl name='addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='103' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='96' column='1'/> + <var-decl name='ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='104' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='next' type-id='3d802c7c' visibility='default' filepath='include/net/if_inet6.h' line='97' column='1'/> + <var-decl name='next' type-id='3d802c7c' visibility='default' filepath='include/net/if_inet6.h' line='105' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='sflock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='98' column='1'/> + <var-decl name='sflock' type-id='ac16795b' visibility='default' filepath='include/net/if_inet6.h' line='106' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='99' column='1'/> + <var-decl name='sfmode' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='107' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='sflist' type-id='b25391b7' visibility='default' filepath='include/net/if_inet6.h' line='100' column='1'/> + <var-decl name='sflist' type-id='b25391b7' visibility='default' filepath='include/net/if_inet6.h' line='108' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='101' column='1'/> + <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/net/if_inet6.h' line='109' column='1'/> </data-member> </class-decl> - <class-decl name='ip6_sf_socklist' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='83' column='1' id='3df0f7af'> + <class-decl name='ip6_sf_socklist' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='91' column='1' id='3df0f7af'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='sl_max' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='84' column='1'/> + <var-decl name='sl_max' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='92' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='sl_count' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='85' column='1'/> + <var-decl name='sl_count' type-id='f0981eeb' visibility='default' filepath='include/net/if_inet6.h' line='93' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='sl_addr' type-id='0fdf6c82' visibility='default' filepath='include/net/if_inet6.h' line='86' column='1'/> + <var-decl name='sl_addr' type-id='0fdf6c82' visibility='default' filepath='include/net/if_inet6.h' line='94' column='1'/> </data-member> </class-decl> - <class-decl name='ipv6_ac_socklist' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='139' column='1' id='dcf61f1a'> + <class-decl name='ipv6_ac_socklist' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/if_inet6.h' line='147' column='1' id='dcf61f1a'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='acl_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='140' column='1'/> + <var-decl name='acl_addr' type-id='f6ed712a' visibility='default' filepath='include/net/if_inet6.h' line='148' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='acl_ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='141' column='1'/> + <var-decl name='acl_ifindex' type-id='95e97e5e' visibility='default' filepath='include/net/if_inet6.h' line='149' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='acl_next' type-id='0d2afef8' visibility='default' filepath='include/net/if_inet6.h' line='142' column='1'/> + <var-decl name='acl_next' type-id='0d2afef8' visibility='default' filepath='include/net/if_inet6.h' line='150' column='1'/> </data-member> </class-decl> <class-decl name='ipv6_fl_socklist' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/net/ipv6.h' line='290' column='1' id='05198978'> @@ -149463,50 +149487,50 @@ <var-decl name='__data' type-id='5e6516ee' visibility='default' filepath='include/net/inet_sock.h' line='59' column='1'/> </data-member> </class-decl> - <class-decl name='inet_cork_full' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='148' column='1' id='da785a0b'> + <class-decl name='inet_cork_full' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='149' column='1' id='da785a0b'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='base' type-id='c466cd59' visibility='default' filepath='include/net/inet_sock.h' line='149' column='1'/> + <var-decl name='base' type-id='c466cd59' visibility='default' filepath='include/net/inet_sock.h' line='150' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='fl' type-id='2117397c' visibility='default' filepath='include/net/inet_sock.h' line='150' column='1'/> + <var-decl name='fl' type-id='2117397c' visibility='default' filepath='include/net/inet_sock.h' line='151' column='1'/> </data-member> </class-decl> - <class-decl name='inet_cork' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='133' column='1' id='c466cd59'> + <class-decl name='inet_cork' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/inet_sock.h' line='134' column='1' id='c466cd59'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/net/inet_sock.h' line='134' column='1'/> + <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/net/inet_sock.h' line='135' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='addr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='135' column='1'/> + <var-decl name='addr' type-id='78a133c2' visibility='default' filepath='include/net/inet_sock.h' line='136' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='opt' type-id='57b94931' visibility='default' filepath='include/net/inet_sock.h' line='136' column='1'/> + <var-decl name='opt' type-id='57b94931' visibility='default' filepath='include/net/inet_sock.h' line='137' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='fragsize' type-id='f0981eeb' visibility='default' filepath='include/net/inet_sock.h' line='137' column='1'/> + <var-decl name='fragsize' type-id='f0981eeb' visibility='default' filepath='include/net/inet_sock.h' line='138' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='160'> - <var-decl name='length' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='138' column='1'/> + <var-decl name='length' type-id='95e97e5e' visibility='default' filepath='include/net/inet_sock.h' line='139' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='dst' type-id='141b6427' visibility='default' filepath='include/net/inet_sock.h' line='139' column='1'/> + <var-decl name='dst' type-id='141b6427' visibility='default' filepath='include/net/inet_sock.h' line='140' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='tx_flags' type-id='f9b06939' visibility='default' filepath='include/net/inet_sock.h' line='140' column='1'/> + <var-decl name='tx_flags' type-id='f9b06939' visibility='default' filepath='include/net/inet_sock.h' line='141' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='264'> - <var-decl name='ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='141' column='1'/> + <var-decl name='ttl' type-id='8f048e17' visibility='default' filepath='include/net/inet_sock.h' line='142' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='272'> - <var-decl name='tos' type-id='b55def60' visibility='default' filepath='include/net/inet_sock.h' line='142' column='1'/> + <var-decl name='tos' type-id='b55def60' visibility='default' filepath='include/net/inet_sock.h' line='143' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='288'> - <var-decl name='priority' type-id='a84c031d' visibility='default' filepath='include/net/inet_sock.h' line='143' column='1'/> + <var-decl name='priority' type-id='a84c031d' visibility='default' filepath='include/net/inet_sock.h' line='144' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='304'> - <var-decl name='gso_size' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='144' column='1'/> + <var-decl name='gso_size' type-id='d315442e' visibility='default' filepath='include/net/inet_sock.h' line='145' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='transmit_time' type-id='91ce1af9' visibility='default' filepath='include/net/inet_sock.h' line='145' column='1'/> + <var-decl name='transmit_time' type-id='91ce1af9' visibility='default' filepath='include/net/inet_sock.h' line='146' column='1'/> </data-member> </class-decl> <enum-decl name='sctp_socket_type' filepath='include/net/sctp/structs.h' line='155' column='1' id='a2848923'> @@ -149831,21 +149855,21 @@ <var-decl name='dup_tsns' type-id='c433ccde' visibility='default' filepath='include/net/sctp/tsnmap.h' line='91' column='1'/> </data-member> </class-decl> - <class-decl name='sctp_inithdr_host' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1389' column='1' id='27a8bf73'> + <class-decl name='sctp_inithdr_host' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1390' column='1' id='27a8bf73'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='init_tag' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1390' column='1'/> + <var-decl name='init_tag' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1391' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='a_rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1391' column='1'/> + <var-decl name='a_rwnd' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1392' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='num_outbound_streams' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1392' column='1'/> + <var-decl name='num_outbound_streams' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1393' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='80'> - <var-decl name='num_inbound_streams' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1393' column='1'/> + <var-decl name='num_inbound_streams' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1394' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='96'> - <var-decl name='initial_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1394' column='1'/> + <var-decl name='initial_tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1395' column='1'/> </data-member> </class-decl> <enum-decl name='sctp_state' filepath='include/net/sctp/constants.h' line='183' column='1' id='1f1fa7e0'> @@ -149859,111 +149883,111 @@ <enumerator name='SCTP_STATE_SHUTDOWN_RECEIVED' value='6'/> <enumerator name='SCTP_STATE_SHUTDOWN_ACK_SENT' value='7'/> </enum-decl> - <class-decl name='sctp_stream' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1446' column='1' id='5d589748'> + <class-decl name='sctp_stream' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1447' column='1' id='5d589748'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='out' type-id='0a2cf25a' visibility='default' filepath='include/net/sctp/structs.h' line='1447' column='1'/> + <var-decl name='out' type-id='0a2cf25a' visibility='default' filepath='include/net/sctp/structs.h' line='1448' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='in' type-id='0a2cf25a' visibility='default' filepath='include/net/sctp/structs.h' line='1448' column='1'/> + <var-decl name='in' type-id='0a2cf25a' visibility='default' filepath='include/net/sctp/structs.h' line='1449' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='outcnt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1449' column='1'/> + <var-decl name='outcnt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1450' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='144'> - <var-decl name='incnt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1450' column='1'/> + <var-decl name='incnt' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1451' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='out_curr' type-id='afea7be7' visibility='default' filepath='include/net/sctp/structs.h' line='1452' column='1'/> + <var-decl name='out_curr' type-id='afea7be7' visibility='default' filepath='include/net/sctp/structs.h' line='1453' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='' type-id='a8c68999' visibility='default' filepath='include/net/sctp/structs.h' line='1453' column='1'/> + <var-decl name='' type-id='a8c68999' visibility='default' filepath='include/net/sctp/structs.h' line='1454' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='448'> - <var-decl name='si' type-id='4756430a' visibility='default' filepath='include/net/sctp/structs.h' line='1467' column='1'/> + <var-decl name='si' type-id='4756430a' visibility='default' filepath='include/net/sctp/structs.h' line='1468' column='1'/> </data-member> </class-decl> - <class-decl name='sctp_stream_out' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1424' column='1' id='e1cc0cef'> + <class-decl name='sctp_stream_out' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1425' column='1' id='e1cc0cef'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='' type-id='2fa3e348' visibility='default' filepath='include/net/sctp/structs.h' line='1425' column='1'/> + <var-decl name='' type-id='2fa3e348' visibility='default' filepath='include/net/sctp/structs.h' line='1426' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='32'> - <var-decl name='mid_uo' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1429' column='1'/> + <var-decl name='mid_uo' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='1430' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='64'> - <var-decl name='ext' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1430' column='1'/> + <var-decl name='ext' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1431' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='state' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1431' column='1'/> + <var-decl name='state' type-id='8f048e17' visibility='default' filepath='include/net/sctp/structs.h' line='1432' column='1'/> </data-member> </class-decl> - <class-decl name='sctp_stream_out_ext' size-in-bits='704' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1407' column='1' id='b1534e13'> + <class-decl name='sctp_stream_out_ext' size-in-bits='704' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1408' column='1' id='b1534e13'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='abandoned_unsent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='1408' column='1'/> + <var-decl name='abandoned_unsent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='1409' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='192'> - <var-decl name='abandoned_sent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='1409' column='1'/> + <var-decl name='abandoned_sent' type-id='ce780e99' visibility='default' filepath='include/net/sctp/structs.h' line='1410' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='384'> - <var-decl name='outq' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1410' column='1'/> + <var-decl name='outq' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='512'> - <var-decl name='' type-id='9e52d2e6' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1'/> + <var-decl name='' type-id='9e52d2e6' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__8' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1' id='9e52d2e6'> + <union-decl name='__anonymous_union__8' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1' id='9e52d2e6'> <data-member access='public'> - <var-decl name='' type-id='d6cf19bc' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1'/> + <var-decl name='' type-id='d6cf19bc' visibility='default' filepath='include/net/sctp/structs.h' line='1413' column='1'/> </data-member> <data-member access='public'> - <var-decl name='' type-id='a0b3b210' visibility='default' filepath='include/net/sctp/structs.h' line='1418' column='1'/> + <var-decl name='' type-id='a0b3b210' visibility='default' filepath='include/net/sctp/structs.h' line='1419' column='1'/> </data-member> </union-decl> - <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1' id='d6cf19bc'> + <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1413' column='1' id='d6cf19bc'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='prio_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1414' column='1'/> + <var-decl name='prio_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1415' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='prio_head' type-id='a4d33055' visibility='default' filepath='include/net/sctp/structs.h' line='1415' column='1'/> + <var-decl name='prio_head' type-id='a4d33055' visibility='default' filepath='include/net/sctp/structs.h' line='1416' column='1'/> </data-member> </class-decl> - <class-decl name='sctp_stream_priorities' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1397' column='1' id='2ac108d5'> + <class-decl name='sctp_stream_priorities' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1398' column='1' id='2ac108d5'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='prio_sched' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1399' column='1'/> + <var-decl name='prio_sched' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1400' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='active' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1401' column='1'/> + <var-decl name='active' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1402' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='256'> - <var-decl name='next' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1403' column='1'/> + <var-decl name='next' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1404' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='320'> - <var-decl name='prio' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1404' column='1'/> + <var-decl name='prio' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='1405' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__4' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1418' column='1' id='a0b3b210'> + <class-decl name='__anonymous_struct__4' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1419' column='1' id='a0b3b210'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='rr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1419' column='1'/> + <var-decl name='rr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1420' column='1'/> </data-member> </class-decl> - <union-decl name='__anonymous_union__9' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1453' column='1' id='a8c68999'> + <union-decl name='__anonymous_union__9' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1454' column='1' id='a8c68999'> <data-member access='public'> - <var-decl name='' type-id='eccd5622' visibility='default' filepath='include/net/sctp/structs.h' line='1455' column='1'/> + <var-decl name='' type-id='eccd5622' visibility='default' filepath='include/net/sctp/structs.h' line='1456' column='1'/> </data-member> <data-member access='public'> - <var-decl name='' type-id='b3609355' visibility='default' filepath='include/net/sctp/structs.h' line='1460' column='1'/> + <var-decl name='' type-id='b3609355' visibility='default' filepath='include/net/sctp/structs.h' line='1461' column='1'/> </data-member> </union-decl> - <class-decl name='__anonymous_struct__5' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1455' column='1' id='eccd5622'> + <class-decl name='__anonymous_struct__5' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1456' column='1' id='eccd5622'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='prio_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1457' column='1'/> + <var-decl name='prio_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1458' column='1'/> </data-member> </class-decl> - <class-decl name='__anonymous_struct__6' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1460' column='1' id='b3609355'> + <class-decl name='__anonymous_struct__6' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1461' column='1' id='b3609355'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='rr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1462' column='1'/> + <var-decl name='rr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1463' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='128'> - <var-decl name='rr_next' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1464' column='1'/> + <var-decl name='rr_next' type-id='5fea6783' visibility='default' filepath='include/net/sctp/structs.h' line='1465' column='1'/> </data-member> </class-decl> <class-decl name='sctp_stream_interleave' size-in-bits='832' is-struct='yes' visibility='default' filepath='include/net/sctp/stream_interleave.h' line='34' column='1' id='b02cca2c'> @@ -150065,54 +150089,54 @@ <var-decl name='cork' type-id='a84c031d' visibility='default' filepath='include/net/sctp/structs.h' line='1105' column='1'/> </data-member> </class-decl> - <class-decl name='sctp_priv_assoc_stats' size-in-bits='1984' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1511' column='1' id='a61fff59'> + <class-decl name='sctp_priv_assoc_stats' size-in-bits='1984' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1512' column='1' id='a61fff59'> <data-member access='public' layout-offset-in-bits='0'> - <var-decl name='obs_rto_ipaddr' type-id='b4f14516' visibility='default' filepath='include/net/sctp/structs.h' line='1517' column='1'/> + <var-decl name='obs_rto_ipaddr' type-id='b4f14516' visibility='default' filepath='include/net/sctp/structs.h' line='1518' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1024'> - <var-decl name='max_obs_rto' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1518' column='1'/> + <var-decl name='max_obs_rto' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1519' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1088'> - <var-decl name='isacks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1520' column='1'/> + <var-decl name='isacks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1521' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1152'> - <var-decl name='osacks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1521' column='1'/> + <var-decl name='osacks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1522' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1216'> - <var-decl name='opackets' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1523' column='1'/> + <var-decl name='opackets' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1524' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1280'> - <var-decl name='ipackets' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1524' column='1'/> + <var-decl name='ipackets' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1525' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1344'> - <var-decl name='rtxchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1526' column='1'/> + <var-decl name='rtxchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1527' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1408'> - <var-decl name='outofseqtsns' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1528' column='1'/> + <var-decl name='outofseqtsns' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1529' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1472'> - <var-decl name='idupchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1530' column='1'/> + <var-decl name='idupchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1531' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1536'> - <var-decl name='gapcnt' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1532' column='1'/> + <var-decl name='gapcnt' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1533' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1600'> - <var-decl name='ouodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1534' column='1'/> + <var-decl name='ouodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1535' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1664'> - <var-decl name='iuodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1535' column='1'/> + <var-decl name='iuodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1536' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1728'> - <var-decl name='oodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1537' column='1'/> + <var-decl name='oodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1538' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1792'> - <var-decl name='iodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1538' column='1'/> + <var-decl name='iodchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1539' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1856'> - <var-decl name='octrlchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1540' column='1'/> + <var-decl name='octrlchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1541' column='1'/> </data-member> <data-member access='public' layout-offset-in-bits='1920'> - <var-decl name='ictrlchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1541' column='1'/> + <var-decl name='ictrlchunks' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='1542' column='1'/> </data-member> </class-decl> <class-decl name='sctp_datamsg' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/sctp/structs.h' line='530' column='1' id='b5d87351'> @@ -150908,7 +150932,7 @@ <parameter type-id='feb5d2c7'/> <return type-id='95e97e5e'/> </function-decl> - <function-decl name='mac_pton' filepath='include/linux/kernel.h' line='611' column='1' visibility='default' binding='global' size-in-bits='64'> + <function-decl name='mac_pton' filepath='include/linux/kernel.h' line='615' column='1' visibility='default' binding='global' size-in-bits='64'> <parameter type-id='80f4b756'/> <parameter type-id='cf536864'/> <return type-id='c894953d'/> diff --git a/arch/arc/include/asm/io.h b/arch/arc/include/asm/io.h index 2f39d9b3886e..19d0cab60a39 100644 --- a/arch/arc/include/asm/io.h +++ b/arch/arc/include/asm/io.h @@ -35,7 +35,7 @@ static inline void ioport_unmap(void __iomem *addr) { } -extern void iounmap(const void __iomem *addr); +extern void iounmap(const volatile void __iomem *addr); #define ioremap_nocache(phy, sz) ioremap(phy, sz) #define ioremap_wc(phy, sz) ioremap(phy, sz) diff --git a/arch/arc/mm/ioremap.c b/arch/arc/mm/ioremap.c index 9881bd740ccc..0719b1280ef8 100644 --- a/arch/arc/mm/ioremap.c +++ b/arch/arc/mm/ioremap.c @@ -95,7 +95,7 @@ void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size, EXPORT_SYMBOL(ioremap_prot); -void iounmap(const void __iomem *addr) +void iounmap(const volatile void __iomem *addr) { /* weird double cast to handle phys_addr_t > 32 bits */ if (arc_uncached_addr_space((phys_addr_t)(u32)addr)) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a54591789ee3..8d2b2c9ad134 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -69,7 +69,7 @@ config ARM select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU select HAVE_EXIT_THREAD select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL) - select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL) + select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL && !CC_IS_CLANG) select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) && (CC_IS_GCC || CLANG_VERSION >= 100000) select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_GCC_PLUGINS @@ -2017,7 +2017,6 @@ config CMDLINE choice prompt "Kernel command line type" if CMDLINE != "" default CMDLINE_FROM_BOOTLOADER - depends on ATAGS config CMDLINE_FROM_BOOTLOADER bool "Use bootloader kernel arguments if available" diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index c341f109b2d0..547ffbb2a112 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug @@ -70,11 +70,6 @@ config ARM_UNWIND the performance is not affected. Currently, this feature only works with EABI compilers. If unsure say Y. -config OLD_MCOUNT - bool - depends on FUNCTION_TRACER && FRAME_POINTER - default y - config DEBUG_USER bool "Verbose user fault messages" help diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index ab7014976c82..b83eb053320f 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -114,6 +114,13 @@ #endif .endm + .macro be32tocpu, val, tmp +#ifndef __ARMEB__ + /* convert to little endian */ + rev_l \val, \tmp +#endif + .endm + .section ".start", #alloc, #execinstr /* * sort out different calling conventions @@ -305,13 +312,7 @@ restart: adr r0, LC0 /* Get the initial DTB size */ ldr r5, [r6, #4] -#ifndef __ARMEB__ - /* convert to little endian */ - eor r1, r5, r5, ror #16 - bic r1, r1, #0x00ff0000 - mov r5, r5, ror #8 - eor r5, r5, r1, lsr #8 -#endif + be32tocpu r5, r1 /* 50% DTB growth should be good enough */ add r5, r5, r5, lsr #1 /* preserve 64-bit alignment */ @@ -364,13 +365,7 @@ restart: adr r0, LC0 /* Get the current DTB size */ ldr r5, [r6, #4] -#ifndef __ARMEB__ - /* convert r5 (dtb size) to little endian */ - eor r1, r5, r5, ror #16 - bic r1, r1, #0x00ff0000 - mov r5, r5, ror #8 - eor r5, r5, r1, lsr #8 -#endif + be32tocpu r5, r1 /* preserve 64-bit alignment */ add r5, r5, #7 diff --git a/arch/arm/boot/dts/am335x-pcm-953.dtsi b/arch/arm/boot/dts/am335x-pcm-953.dtsi index 572fbd254690..495c55e5b5db 100644 --- a/arch/arm/boot/dts/am335x-pcm-953.dtsi +++ b/arch/arm/boot/dts/am335x-pcm-953.dtsi @@ -15,22 +15,20 @@ compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx"; /* Power */ - regulators { - vcc3v3: fixedregulator@1 { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - }; + vcc3v3: fixedregulator1 { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; - vcc1v8: fixedregulator@2 { - compatible = "regulator-fixed"; - regulator-name = "vcc1v8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - }; + vcc1v8: fixedregulator2 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; }; /* User IO */ diff --git a/arch/arm/boot/dts/armada-385-turris-omnia.dts b/arch/arm/boot/dts/armada-385-turris-omnia.dts index fde4c302f08e..92e08486ec81 100644 --- a/arch/arm/boot/dts/armada-385-turris-omnia.dts +++ b/arch/arm/boot/dts/armada-385-turris-omnia.dts @@ -307,7 +307,7 @@ marvell,function = "spi0"; }; - spi0cs1_pins: spi0cs1-pins { + spi0cs2_pins: spi0cs2-pins { marvell,pins = "mpp26"; marvell,function = "spi0"; }; @@ -342,7 +342,7 @@ }; }; - /* MISO, MOSI, SCLK and CS1 are routed to pin header CN11 */ + /* MISO, MOSI, SCLK and CS2 are routed to pin header CN11 */ }; &uart0 { diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi index ec1f17ab6753..0b990761d80a 100644 --- a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi +++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi @@ -39,6 +39,13 @@ }; + usb1 { + pinctrl_usb1_vbus_gpio: usb1_vbus_gpio { + atmel,pins = + <AT91_PIOC 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PC5 GPIO */ + }; + }; + mmc0_slot1 { pinctrl_board_mmc0_slot1: mmc0_slot1-board { atmel,pins = @@ -84,6 +91,8 @@ }; usb1: gadget@fffa4000 { + pinctrl-0 = <&pinctrl_usb1_vbus_gpio>; + pinctrl-names = "default"; atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>; status = "okay"; }; diff --git a/arch/arm/boot/dts/exynos4412-midas.dtsi b/arch/arm/boot/dts/exynos4412-midas.dtsi index 60fbad25b5f2..93c8918e599b 100644 --- a/arch/arm/boot/dts/exynos4412-midas.dtsi +++ b/arch/arm/boot/dts/exynos4412-midas.dtsi @@ -525,7 +525,7 @@ clocks = <&camera 1>; clock-names = "extclk"; samsung,camclk-out = <1>; - gpios = <&gpm1 6 GPIO_ACTIVE_HIGH>; + gpios = <&gpm1 6 GPIO_ACTIVE_LOW>; port { is_s5k6a3_ep: endpoint { diff --git a/arch/arm/boot/dts/exynos4412-origen.dts b/arch/arm/boot/dts/exynos4412-origen.dts index 346f71932457..e5bfa76185a2 100644 --- a/arch/arm/boot/dts/exynos4412-origen.dts +++ b/arch/arm/boot/dts/exynos4412-origen.dts @@ -87,7 +87,7 @@ }; &ehci { - samsung,vbus-gpio = <&gpx3 5 1>; + samsung,vbus-gpio = <&gpx3 5 GPIO_ACTIVE_HIGH>; status = "okay"; port@1 { diff --git a/arch/arm/boot/dts/imx6dl.dtsi b/arch/arm/boot/dts/imx6dl.dtsi index f0607eb41df4..079f77c7e0f0 100644 --- a/arch/arm/boot/dts/imx6dl.dtsi +++ b/arch/arm/boot/dts/imx6dl.dtsi @@ -81,6 +81,9 @@ ocram: sram@900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; }; diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 0193ee6fe964..a28dce3c6457 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -158,6 +158,9 @@ ocram: sram@900000 { compatible = "mmio-sram"; reg = <0x00900000 0x40000>; + ranges = <0 0x00900000 0x40000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; }; diff --git a/arch/arm/boot/dts/imx6qp.dtsi b/arch/arm/boot/dts/imx6qp.dtsi index d91f92f944c5..3633383db706 100644 --- a/arch/arm/boot/dts/imx6qp.dtsi +++ b/arch/arm/boot/dts/imx6qp.dtsi @@ -9,12 +9,18 @@ ocram2: sram@940000 { compatible = "mmio-sram"; reg = <0x00940000 0x20000>; + ranges = <0 0x00940000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; }; ocram3: sram@960000 { compatible = "mmio-sram"; reg = <0x00960000 0x20000>; + ranges = <0 0x00960000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6QDL_CLK_OCRAM>; }; diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi index 9d19183f40e1..afde0ed6d71a 100644 --- a/arch/arm/boot/dts/imx6sl.dtsi +++ b/arch/arm/boot/dts/imx6sl.dtsi @@ -118,6 +118,9 @@ ocram: sram@900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6SL_CLK_OCRAM>; }; diff --git a/arch/arm/boot/dts/imx6sll.dtsi b/arch/arm/boot/dts/imx6sll.dtsi index 7c7d5c47578e..d7d092a5522a 100644 --- a/arch/arm/boot/dts/imx6sll.dtsi +++ b/arch/arm/boot/dts/imx6sll.dtsi @@ -131,6 +131,9 @@ ocram: sram@900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; }; L2: l2-cache@a02000 { diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi index ae0728df542e..b9ab1118be30 100644 --- a/arch/arm/boot/dts/imx6sx.dtsi +++ b/arch/arm/boot/dts/imx6sx.dtsi @@ -167,12 +167,18 @@ ocram_s: sram@8f8000 { compatible = "mmio-sram"; reg = <0x008f8000 0x4000>; + ranges = <0 0x008f8000 0x4000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6SX_CLK_OCRAM_S>; }; ocram: sram@900000 { compatible = "mmio-sram"; reg = <0x00900000 0x20000>; + ranges = <0 0x00900000 0x20000>; + #address-cells = <1>; + #size-cells = <1>; clocks = <&clks IMX6SX_CLK_OCRAM>; }; diff --git a/arch/arm/boot/dts/imx7d-sdb.dts b/arch/arm/boot/dts/imx7d-sdb.dts index 317f1bcc56e2..bd2c3c8f4ebb 100644 --- a/arch/arm/boot/dts/imx7d-sdb.dts +++ b/arch/arm/boot/dts/imx7d-sdb.dts @@ -163,12 +163,7 @@ interrupt-parent = <&gpio2>; interrupts = <29 0>; pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>; - ti,x-min = /bits/ 16 <0>; - ti,x-max = /bits/ 16 <0>; - ti,y-min = /bits/ 16 <0>; - ti,y-max = /bits/ 16 <0>; - ti,pressure-max = /bits/ 16 <0>; - ti,x-plate-ohms = /bits/ 16 <400>; + touchscreen-max-pressure = <255>; wakeup-source; }; }; diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi index 7b151acb9984..88b70ba1c8fe 100644 --- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi +++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi @@ -10,6 +10,11 @@ ocp@f1000000 { pinctrl: pin-controller@10000 { + /* Non-default UART pins */ + pmx_uart0: pmx-uart0 { + marvell,pins = "mpp4", "mpp5"; + }; + pmx_power_hdd: pmx-power-hdd { marvell,pins = "mpp10"; marvell,function = "gpo"; @@ -213,22 +218,11 @@ &mdio { status = "okay"; - ethphy0: ethernet-phy@0 { - reg = <0>; - }; - ethphy1: ethernet-phy@8 { reg = <8>; }; }; -ð0 { - status = "okay"; - ethernet0-port@0 { - phy-handle = <ðphy0>; - }; -}; - ð1 { status = "okay"; ethernet1-port@0 { diff --git a/arch/arm/boot/dts/moxart-uc7112lx.dts b/arch/arm/boot/dts/moxart-uc7112lx.dts index 4a962a26482d..59d8775a3a93 100644 --- a/arch/arm/boot/dts/moxart-uc7112lx.dts +++ b/arch/arm/boot/dts/moxart-uc7112lx.dts @@ -80,7 +80,7 @@ clocks = <&ref12>; }; -&sdhci { +&mmc { status = "okay"; }; diff --git a/arch/arm/boot/dts/moxart.dtsi b/arch/arm/boot/dts/moxart.dtsi index da7b3237bfe9..804a2bc6ec82 100644 --- a/arch/arm/boot/dts/moxart.dtsi +++ b/arch/arm/boot/dts/moxart.dtsi @@ -93,8 +93,8 @@ clock-names = "PCLK"; }; - sdhci: sdhci@98e00000 { - compatible = "moxa,moxart-sdhci"; + mmc: mmc@98e00000 { + compatible = "moxa,moxart-mmc"; reg = <0x98e00000 0x5C>; interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk_apb>; diff --git a/arch/arm/boot/dts/rk3036-evb.dts b/arch/arm/boot/dts/rk3036-evb.dts index 2a7e6624efb9..ea23ba98625e 100644 --- a/arch/arm/boot/dts/rk3036-evb.dts +++ b/arch/arm/boot/dts/rk3036-evb.dts @@ -31,7 +31,7 @@ &i2c1 { status = "okay"; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; diff --git a/arch/arm/boot/dts/rk3188-radxarock.dts b/arch/arm/boot/dts/rk3188-radxarock.dts index 4a2890618f6f..720d0136f1ab 100644 --- a/arch/arm/boot/dts/rk3188-radxarock.dts +++ b/arch/arm/boot/dts/rk3188-radxarock.dts @@ -67,7 +67,7 @@ #sound-dai-cells = <0>; }; - ir_recv: gpio-ir-receiver { + ir_recv: ir-receiver { compatible = "gpio-ir-receiver"; gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi index 3b7cae6f4127..24efc9b31d89 100644 --- a/arch/arm/boot/dts/rk3188.dtsi +++ b/arch/arm/boot/dts/rk3188.dtsi @@ -509,7 +509,6 @@ &global_timer { interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; - status = "disabled"; }; &local_timer { diff --git a/arch/arm/boot/dts/rk3288-evb-act8846.dts b/arch/arm/boot/dts/rk3288-evb-act8846.dts index 6592c809e2a5..ccc07740ee3d 100644 --- a/arch/arm/boot/dts/rk3288-evb-act8846.dts +++ b/arch/arm/boot/dts/rk3288-evb-act8846.dts @@ -53,7 +53,7 @@ vin-supply = <&vcc_sys>; }; - hym8563@51 { + rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; diff --git a/arch/arm/boot/dts/rk3288-firefly.dtsi b/arch/arm/boot/dts/rk3288-firefly.dtsi index a6ff7eac4aa8..8970b7ad1a6b 100644 --- a/arch/arm/boot/dts/rk3288-firefly.dtsi +++ b/arch/arm/boot/dts/rk3288-firefly.dtsi @@ -233,7 +233,7 @@ vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts index 504ab1177aa7..ec7c7bf5ae95 100644 --- a/arch/arm/boot/dts/rk3288-miqi.dts +++ b/arch/arm/boot/dts/rk3288-miqi.dts @@ -146,7 +146,7 @@ vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; diff --git a/arch/arm/boot/dts/rk3288-rock2-square.dts b/arch/arm/boot/dts/rk3288-rock2-square.dts index 6a30cadad88a..47dd843ae629 100644 --- a/arch/arm/boot/dts/rk3288-rock2-square.dts +++ b/arch/arm/boot/dts/rk3288-rock2-square.dts @@ -166,7 +166,7 @@ }; &i2c0 { - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; diff --git a/arch/arm/boot/dts/rk3xxx.dtsi b/arch/arm/boot/dts/rk3xxx.dtsi index 86a0d98d28ff..1b6429843bd4 100644 --- a/arch/arm/boot/dts/rk3xxx.dtsi +++ b/arch/arm/boot/dts/rk3xxx.dtsi @@ -108,6 +108,13 @@ reg = <0x1013c200 0x20>; interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>; clocks = <&cru CORE_PERI>; + status = "disabled"; + /* The clock source and the sched_clock provided by the arm_global_timer + * on Rockchip rk3066a/rk3188 are quite unstable because their rates + * depend on the CPU frequency. + * Keep the arm_global_timer disabled in order to have the + * DW_APB_TIMER (rk3066a) or ROCKCHIP_TIMER (rk3188) selected by default. + */ }; local_timer: local-timer@1013c600 { diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index c7fa0c0ff447..ceca29dac149 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -506,4 +506,21 @@ THUMB( orr \reg , \reg , #PSR_T_BIT ) #define _ASM_NOKPROBE(entry) #endif + /* + * rev_l - byte-swap a 32-bit value + * + * @val: source/destination register + * @tmp: scratch register + */ + .macro rev_l, val:req, tmp:req + .if __LINUX_ARM_ARCH__ < 6 + eor \tmp, \val, \val, ror #16 + bic \tmp, \tmp, #0x00ff0000 + mov \val, \val, ror #8 + eor \val, \val, \tmp, lsr #8 + .else + rev \val, \val + .endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */ diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h index faeb6b1c0089..15bd9af13497 100644 --- a/arch/arm/include/asm/ftrace.h +++ b/arch/arm/include/asm/ftrace.h @@ -16,9 +16,6 @@ extern void __gnu_mcount_nc(void); #ifdef CONFIG_DYNAMIC_FTRACE struct dyn_arch_ftrace { -#ifdef CONFIG_OLD_MCOUNT - bool old_mcount; -#endif #ifdef CONFIG_ARM_MODULE_PLTS struct module *mod; #endif diff --git a/arch/arm/include/asm/perf_event.h b/arch/arm/include/asm/perf_event.h index 4f9dec489931..c5d27140834e 100644 --- a/arch/arm/include/asm/perf_event.h +++ b/arch/arm/include/asm/perf_event.h @@ -21,7 +21,7 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs); #define perf_arch_fetch_caller_regs(regs, __ip) { \ (regs)->ARM_pc = (__ip); \ - (regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \ + frame_pointer((regs)) = (unsigned long) __builtin_frame_address(0); \ (regs)->ARM_sp = current_stack_pointer; \ (regs)->ARM_cpsr = SVC_MODE; \ } diff --git a/arch/arm/include/asm/pgtable-nommu.h b/arch/arm/include/asm/pgtable-nommu.h index a0d726a47c8a..e7ca798513c1 100644 --- a/arch/arm/include/asm/pgtable-nommu.h +++ b/arch/arm/include/asm/pgtable-nommu.h @@ -55,12 +55,6 @@ typedef pte_t *pte_addr_t; /* - * ZERO_PAGE is a global shared page that is always zero: used - * for zero-mapped memory areas etc.. - */ -#define ZERO_PAGE(vaddr) (virt_to_page(0)) - -/* * Mark the prot value as uncacheable and unbufferable. */ #define pgprot_noncached(prot) (prot) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index a757401129f9..fdc3bc07061f 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -13,6 +13,15 @@ #include <linux/const.h> #include <asm/proc-fns.h> +#ifndef __ASSEMBLY__ +/* + * ZERO_PAGE is a global shared page that is always zero: used + * for zero-mapped memory areas etc.. + */ +extern struct page *empty_zero_page; +#define ZERO_PAGE(vaddr) (empty_zero_page) +#endif + #ifndef CONFIG_MMU #include <asm-generic/4level-fixup.h> @@ -166,13 +175,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, #define __S111 __PAGE_SHARED_EXEC #ifndef __ASSEMBLY__ -/* - * ZERO_PAGE is a global shared page that is always zero: used - * for zero-mapped memory areas etc.. - */ -extern struct page *empty_zero_page; -#define ZERO_PAGE(vaddr) (empty_zero_page) - extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 783fbb4de5f9..8fa2dc21d332 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c @@ -167,9 +167,6 @@ EXPORT_SYMBOL(_find_next_bit_be); #endif #ifdef CONFIG_FUNCTION_TRACER -#ifdef CONFIG_OLD_MCOUNT -EXPORT_SYMBOL(mcount); -#endif EXPORT_SYMBOL(__gnu_mcount_nc); #endif diff --git a/arch/arm/kernel/entry-ftrace.S b/arch/arm/kernel/entry-ftrace.S index efcd9f25a14b..0be69e551a64 100644 --- a/arch/arm/kernel/entry-ftrace.S +++ b/arch/arm/kernel/entry-ftrace.S @@ -15,23 +15,8 @@ * start of every function. In mcount, apart from the function's address (in * lr), we need to get hold of the function's caller's address. * - * Older GCCs (pre-4.4) inserted a call to a routine called mcount like this: - * - * bl mcount - * - * These versions have the limitation that in order for the mcount routine to - * be able to determine the function's caller's address, an APCS-style frame - * pointer (which is set up with something like the code below) is required. - * - * mov ip, sp - * push {fp, ip, lr, pc} - * sub fp, ip, #4 - * - * With EABI, these frame pointers are not available unless -mapcs-frame is - * specified, and if building as Thumb-2, not even then. - * - * Newer GCCs (4.4+) solve this problem by introducing a new version of mcount, - * with call sites like: + * Newer GCCs (4.4+) solve this problem by using a version of mcount with call + * sites like: * * push {lr} * bl __gnu_mcount_nc @@ -46,17 +31,10 @@ * allows it to be clobbered in subroutines and doesn't use it to hold * parameters.) * - * When using dynamic ftrace, we patch out the mcount call by a "mov r0, r0" - * for the mcount case, and a "pop {lr}" for the __gnu_mcount_nc case (see - * arch/arm/kernel/ftrace.c). + * When using dynamic ftrace, we patch out the mcount call by a "pop {lr}" + * instead of the __gnu_mcount_nc call (see arch/arm/kernel/ftrace.c). */ -#ifndef CONFIG_OLD_MCOUNT -#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)) -#error Ftrace requires CONFIG_FRAME_POINTER=y with GCC older than 4.4.0. -#endif -#endif - .macro mcount_adjust_addr rd, rn bic \rd, \rn, #1 @ clear the Thumb bit if present sub \rd, \rd, #MCOUNT_INSN_SIZE @@ -209,51 +187,6 @@ ftrace_graph_call\suffix: mcount_exit .endm -#ifdef CONFIG_OLD_MCOUNT -/* - * mcount - */ - -.macro mcount_enter - stmdb sp!, {r0-r3, lr} -.endm - -.macro mcount_get_lr reg - ldr \reg, [fp, #-4] -.endm - -.macro mcount_exit - ldr lr, [fp, #-4] - ldmia sp!, {r0-r3, pc} -.endm - -ENTRY(mcount) -#ifdef CONFIG_DYNAMIC_FTRACE - stmdb sp!, {lr} - ldr lr, [fp, #-4] - ldmia sp!, {pc} -#else - __mcount _old -#endif -ENDPROC(mcount) - -#ifdef CONFIG_DYNAMIC_FTRACE -ENTRY(ftrace_caller_old) - __ftrace_caller _old -ENDPROC(ftrace_caller_old) -#endif - -#ifdef CONFIG_FUNCTION_GRAPH_TRACER -ENTRY(ftrace_graph_caller_old) - __ftrace_graph_caller -ENDPROC(ftrace_graph_caller_old) -#endif - -.purgem mcount_enter -.purgem mcount_get_lr -.purgem mcount_exit -#endif - /* * __gnu_mcount_nc */ diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c index 51839250e49a..12b6da56f88d 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c @@ -47,30 +47,6 @@ void arch_ftrace_update_code(int command) stop_machine(__ftrace_modify_code, &command, NULL); } -#ifdef CONFIG_OLD_MCOUNT -#define OLD_MCOUNT_ADDR ((unsigned long) mcount) -#define OLD_FTRACE_ADDR ((unsigned long) ftrace_caller_old) - -#define OLD_NOP 0xe1a00000 /* mov r0, r0 */ - -static unsigned long ftrace_nop_replace(struct dyn_ftrace *rec) -{ - return rec->arch.old_mcount ? OLD_NOP : NOP; -} - -static unsigned long adjust_address(struct dyn_ftrace *rec, unsigned long addr) -{ - if (!rec->arch.old_mcount) - return addr; - - if (addr == MCOUNT_ADDR) - addr = OLD_MCOUNT_ADDR; - else if (addr == FTRACE_ADDR) - addr = OLD_FTRACE_ADDR; - - return addr; -} -#else static unsigned long ftrace_nop_replace(struct dyn_ftrace *rec) { return NOP; @@ -80,7 +56,6 @@ static unsigned long adjust_address(struct dyn_ftrace *rec, unsigned long addr) { return addr; } -#endif int ftrace_arch_code_modify_prepare(void) { @@ -151,15 +126,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func) } #endif -#ifdef CONFIG_OLD_MCOUNT - if (!ret) { - pc = (unsigned long)&ftrace_call_old; - new = ftrace_call_replace(pc, (unsigned long)func, true); - - ret = ftrace_modify_code(pc, 0, new, false); - } -#endif - return ret; } @@ -233,16 +199,6 @@ int ftrace_make_nop(struct module *mod, new = ftrace_nop_replace(rec); ret = ftrace_modify_code(ip, old, new, true); -#ifdef CONFIG_OLD_MCOUNT - if (ret == -EINVAL && addr == MCOUNT_ADDR) { - rec->arch.old_mcount = true; - - old = ftrace_call_replace(ip, adjust_address(rec, addr), true); - new = ftrace_nop_replace(rec); - ret = ftrace_modify_code(ip, old, new, true); - } -#endif - return ret; } @@ -305,13 +261,6 @@ static int ftrace_modify_graph_caller(bool enable) #endif -#ifdef CONFIG_OLD_MCOUNT - if (!ret) - ret = __ftrace_modify_caller(&ftrace_graph_call_old, - ftrace_graph_caller_old, - enable); -#endif - return ret; } diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 1c6062d240c8..4063fc1f435b 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -393,8 +393,10 @@ static void __init mxs_machine_init(void) root = of_find_node_by_path("/"); ret = of_property_read_string(root, "model", &soc_dev_attr->machine); - if (ret) + if (ret) { + kfree(soc_dev_attr); return; + } soc_dev_attr->family = "Freescale MXS Family"; soc_dev_attr->soc_id = mxs_get_soc_id(); diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c index 7d67c70bbded..e803fd16248b 100644 --- a/arch/arm/mm/nommu.c +++ b/arch/arm/mm/nommu.c @@ -25,6 +25,13 @@ unsigned long vectors_base; +/* + * empty_zero_page is a special page that is used for + * zero-initialized data and COW. + */ +struct page *empty_zero_page; +EXPORT_SYMBOL(empty_zero_page); + #ifdef CONFIG_ARM_MPU struct mpu_rgn_info mpu_rgn_info; #endif @@ -147,9 +154,21 @@ void __init adjust_lowmem_bounds(void) */ void __init paging_init(const struct machine_desc *mdesc) { + void *zero_page; + early_trap_init((void *)vectors_base); mpu_setup(); + + /* allocate the zero page. */ + zero_page = memblock_alloc(PAGE_SIZE, PAGE_SIZE); + if (!zero_page) + panic("%s: Failed to allocate %lu bytes align=0x%lx\n", + __func__, PAGE_SIZE, PAGE_SIZE); + bootmem_init(); + + empty_zero_page = virt_to_page(zero_page); + flush_dcache_page(empty_zero_page); } /* diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index e902203562ca..2b5f90913d26 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -562,6 +562,22 @@ config ARM64_ERRATUM_1542419 If unsure, say Y. +config ARM64_ERRATUM_1742098 + bool "Cortex-A57/A72: 1742098: ELR recorded incorrectly on interrupt taken between cryptographic instructions in a sequence" + depends on COMPAT + default y + help + This option removes the AES hwcap for aarch32 user-space to + workaround erratum 1742098 on Cortex-A57 and Cortex-A72. + + Affected parts may corrupt the AES state if an interrupt is + taken between a pair of AES instructions. These instructions + are only present if the cryptography extensions are present. + All software should have a fallback implementation for CPUs + that don't implement the cryptography extensions. + + If unsure, say Y. + config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts index 1e6a71066c16..ea990543d929 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts @@ -203,7 +203,7 @@ cap-sd-highspeed; cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; disable-wp; - max-frequency = <150000000>; + max-frequency = <40000000>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; vmmc-supply = <&vcc3v3_baseboard>; diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 85f9393a4ea2..d324fc9b3937 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -497,7 +497,6 @@ CONFIG_HARDENED_USERCOPY=y CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER_PATH="" CONFIG_SECURITY_SELINUX=y -CONFIG_INIT_STACK_ALL_ZERO=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_CRYPTO_ADIANTUM=y CONFIG_CRYPTO_BLAKE2B=y diff --git a/arch/arm64/configs/redbull_defconfig b/arch/arm64/configs/redbull_defconfig index 113c493549b8..d9409dbc3bc6 100644 --- a/arch/arm64/configs/redbull_defconfig +++ b/arch/arm64/configs/redbull_defconfig @@ -683,7 +683,6 @@ CONFIG_HARDENED_USERCOPY_PAGESPAN=y CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER_PATH="" CONFIG_SECURITY_SELINUX=y -CONFIG_INIT_STACK_ALL_ZERO=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_CRYPTO_NIAP_FPT_TST_EXT_11=y CONFIG_CRYPTO_GCM=y diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h index 57b4863e5695..60bb4b10bb55 100644 --- a/arch/arm64/include/asm/cpucaps.h +++ b/arch/arm64/include/asm/cpucaps.h @@ -57,8 +57,9 @@ #define ARM64_WORKAROUND_1542418 36 #define ARM64_WORKAROUND_1542419 37 #define ARM64_SPECTRE_BHB 38 +#define ARM64_WORKAROUND_1742098 39 -/* kabi: reserve 39 - 62 for future cpu capabilities */ +/* kabi: reserve 40 - 62 for future cpu capabilities */ #define ARM64_NCAPS 62 #endif /* __ASM_CPUCAPS_H */ diff --git a/arch/arm64/include/asm/vdso/compat_gettimeofday.h b/arch/arm64/include/asm/vdso/compat_gettimeofday.h index 7e7d70fffa5b..1366bd97428c 100644 --- a/arch/arm64/include/asm/vdso/compat_gettimeofday.h +++ b/arch/arm64/include/asm/vdso/compat_gettimeofday.h @@ -20,6 +20,8 @@ #define BUILD_VDSO32 1 +#define VDSO_HAS_32BIT_FALLBACK 1 + static __always_inline int gettimeofday_fallback(struct __kernel_old_timeval *_tv, struct timezone *_tz) @@ -56,6 +58,23 @@ long clock_gettime_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) } static __always_inline +long clock_gettime32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) +{ + register struct old_timespec32 *ts asm("r1") = _ts; + register clockid_t clkid asm("r0") = _clkid; + register long ret asm ("r0"); + register long nr asm("r7") = __NR_compat_clock_gettime; + + asm volatile( + " swi #0\n" + : "=r" (ret) + : "r" (clkid), "r" (ts), "r" (nr) + : "memory"); + + return ret; +} + +static __always_inline int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) { register struct __kernel_timespec *ts asm("r1") = _ts; @@ -72,6 +91,27 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) return ret; } +static __always_inline +int clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts) +{ + register struct old_timespec32 *ts asm("r1") = _ts; + register clockid_t clkid asm("r0") = _clkid; + register long ret asm ("r0"); + register long nr asm("r7") = __NR_compat_clock_getres; + + /* The checks below are required for ABI consistency with arm */ + if ((_clkid >= MAX_CLOCKS) && (_ts == NULL)) + return -EINVAL; + + asm volatile( + " swi #0\n" + : "=r" (ret) + : "r" (clkid), "r" (ts), "r" (nr) + : "memory"); + + return ret; +} + static __always_inline u64 __arch_get_hw_counter(s32 clock_mode) { u64 res; diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c index e78c032fafc1..dfef42b590c6 100644 --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -143,9 +143,12 @@ static void install_bp_hardening_cb(bp_hardening_cb_t fn, __copy_hyp_vect_bpi(slot, hyp_vecs_start, hyp_vecs_end); } - __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); - __this_cpu_write(bp_hardening_data.fn, fn); - __this_cpu_write(bp_hardening_data.template_start, hyp_vecs_start); + if (fn != __this_cpu_read(bp_hardening_data.fn)) { + __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); + __this_cpu_write(bp_hardening_data.fn, fn); + __this_cpu_write(bp_hardening_data.template_start, + hyp_vecs_start); + } spin_unlock(&bp_lock); } #else @@ -732,6 +735,14 @@ static const struct midr_range arm64_workaround_845719_cpus[] = { #endif +#ifdef CONFIG_ARM64_ERRATUM_1742098 +static struct midr_range broken_aarch32_aes[] = { + MIDR_RANGE(MIDR_CORTEX_A57, 0, 1, 0xf, 0xf), + MIDR_ALL_VERSIONS(MIDR_CORTEX_A72), + {}, +}; +#endif + const struct arm64_cpu_capabilities arm64_errata[] = { #if defined(CONFIG_ARM64_ERRATUM_826319) || \ defined(CONFIG_ARM64_ERRATUM_827319) || \ @@ -946,6 +957,14 @@ const struct arm64_cpu_capabilities arm64_errata[] = { .cpu_enable = cpu_enable_trap_ctr_access, }, #endif +#ifdef CONFIG_ARM64_ERRATUM_1742098 + { + .desc = "ARM erratum 1742098", + .capability = ARM64_WORKAROUND_1742098, + CAP_MIDR_RANGE_LIST(broken_aarch32_aes), + .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, + }, +#endif { } }; @@ -1248,8 +1267,11 @@ static void kvm_setup_bhb_slot(const char *hyp_vecs_start) __copy_hyp_vect_bpi(slot, hyp_vecs_start, hyp_vecs_end); } - __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); - __this_cpu_write(bp_hardening_data.template_start, hyp_vecs_start); + if (hyp_vecs_start != __this_cpu_read(bp_hardening_data.template_start)) { + __this_cpu_write(bp_hardening_data.hyp_vectors_slot, slot); + __this_cpu_write(bp_hardening_data.template_start, + hyp_vecs_start); + } spin_unlock(&bp_lock); } #else @@ -1285,7 +1307,13 @@ void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *entry) } else if (spectre_bhb_loop_affected(SCOPE_LOCAL_CPU)) { switch (spectre_bhb_loop_affected(SCOPE_SYSTEM)) { case 8: - kvm_setup_bhb_slot(__spectre_bhb_loop_k8_start); + /* + * A57/A72-r0 will already have selected the + * spectre-indirect vector, which is sufficient + * for BHB too. + */ + if (!__this_cpu_read(bp_hardening_data.fn)) + kvm_setup_bhb_slot(__spectre_bhb_loop_k8_start); break; case 24: kvm_setup_bhb_slot(__spectre_bhb_loop_k24_start); diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index c4bf3bef2fee..89b3c3eecac9 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -31,6 +31,7 @@ #include <asm/cpufeature.h> #include <asm/cpu_ops.h> #include <asm/fpsimd.h> +#include <asm/hwcap.h> #include <asm/mmu_context.h> #include <asm/processor.h> #include <asm/sysreg.h> @@ -1156,6 +1157,14 @@ static void cpu_enable_ssbs(const struct arm64_cpu_capabilities *__unused) } #endif /* CONFIG_ARM64_SSBD */ +static void elf_hwcap_fixup(void) +{ +#ifdef CONFIG_ARM64_ERRATUM_1742098 + if (cpus_have_const_cap(ARM64_WORKAROUND_1742098)) + compat_elf_hwcap2 &= ~COMPAT_HWCAP2_AES; +#endif /* ARM64_ERRATUM_1742098 */ +} + static const struct arm64_cpu_capabilities arm64_features[] = { { .desc = "GIC system register CPU interface", @@ -1804,8 +1813,10 @@ void __init setup_cpu_features(void) mark_const_caps_ready(); setup_elf_hwcaps(arm64_elf_hwcaps); - if (system_supports_32bit_el0()) + if (system_supports_32bit_el0()) { setup_elf_hwcaps(compat_elf_hwcaps); + elf_hwcap_fixup(); + } if (system_uses_ttbr0_pan()) pr_info("emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching\n"); diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index 4f9acb5fbe97..5b425ed9cd82 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -16,6 +16,14 @@ #include <asm/efi.h> +static bool region_is_misaligned(const efi_memory_desc_t *md) +{ + if (PAGE_SIZE == EFI_PAGE_SIZE) + return false; + return !PAGE_ALIGNED(md->phys_addr) || + !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT); +} + /* * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be * executable, everything else can be mapped with the XN bits @@ -29,14 +37,22 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md) if (type == EFI_MEMORY_MAPPED_IO) return PROT_DEVICE_nGnRE; - if (WARN_ONCE(!PAGE_ALIGNED(md->phys_addr), - "UEFI Runtime regions are not aligned to 64 KB -- buggy firmware?")) + if (region_is_misaligned(md)) { + static bool __initdata code_is_misaligned; + /* - * If the region is not aligned to the page size of the OS, we - * can not use strict permissions, since that would also affect - * the mapping attributes of the adjacent regions. + * Regions that are not aligned to the OS page size cannot be + * mapped with strict permissions, as those might interfere + * with the permissions that are needed by the adjacent + * region's mapping. However, if we haven't encountered any + * misaligned runtime code regions so far, we can safely use + * non-executable permissions for non-code regions. */ - return pgprot_val(PAGE_KERNEL_EXEC); + code_is_misaligned |= (type == EFI_RUNTIME_SERVICES_CODE); + + return code_is_misaligned ? pgprot_val(PAGE_KERNEL_EXEC) + : pgprot_val(PAGE_KERNEL); + } /* R-- */ if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) == @@ -66,19 +82,16 @@ int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE || md->type == EFI_RUNTIME_SERVICES_DATA); - if (!PAGE_ALIGNED(md->phys_addr) || - !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT)) { - /* - * If the end address of this region is not aligned to page - * size, the mapping is rounded up, and may end up sharing a - * page frame with the next UEFI memory region. If we create - * a block entry now, we may need to split it again when mapping - * the next region, and support for that is going to be removed - * from the MMU routines. So avoid block mappings altogether in - * that case. - */ + /* + * If this region is not aligned to the page size used by the OS, the + * mapping will be rounded outwards, and may end up sharing a page + * frame with an adjacent runtime memory region. Given that the page + * table descriptor covering the shared page will be rewritten when the + * adjacent region gets mapped, we must avoid block mappings here so we + * don't have to worry about splitting them when that happens. + */ + if (region_is_misaligned(md)) page_mappings_only = true; - } create_pgd_mapping(mm, md->phys_addr, md->virt_addr, md->num_pages << EFI_PAGE_SHIFT, @@ -106,6 +119,9 @@ int __init efi_set_mapping_permissions(struct mm_struct *mm, BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE && md->type != EFI_RUNTIME_SERVICES_DATA); + if (region_is_misaligned(md)) + return 0; + /* * Calling apply_to_page_range() is only safe on regions that are * guaranteed to be mapped down to pages. Since we are only called diff --git a/arch/mips/bcm47xx/prom.c b/arch/mips/bcm47xx/prom.c index 135a5407f015..d26d9a6f6ee7 100644 --- a/arch/mips/bcm47xx/prom.c +++ b/arch/mips/bcm47xx/prom.c @@ -85,7 +85,7 @@ static __init void prom_init_mem(void) pr_debug("Assume 128MB RAM\n"); break; } - if (!memcmp(prom_init, prom_init + mem, 32)) + if (!memcmp((void *)prom_init, (void *)prom_init + mem, 32)) break; } lowmem = mem; @@ -162,7 +162,7 @@ void __init bcm47xx_prom_highmem_init(void) off = EXTVBASE + __pa(off); for (extmem = 128 << 20; extmem < 512 << 20; extmem <<= 1) { - if (!memcmp(prom_init, (void *)(off + extmem), 16)) + if (!memcmp((void *)prom_init, (void *)(off + extmem), 16)) break; } extmem -= lowmem; diff --git a/arch/mips/include/asm/fw/fw.h b/arch/mips/include/asm/fw/fw.h index d0ef8b4892bb..d0494ce4b337 100644 --- a/arch/mips/include/asm/fw/fw.h +++ b/arch/mips/include/asm/fw/fw.h @@ -26,6 +26,6 @@ extern char *fw_getcmdline(void); extern void fw_meminit(void); extern char *fw_getenv(char *name); extern unsigned long fw_getenvl(char *name); -extern void fw_init_early_console(char port); +extern void fw_init_early_console(void); #endif /* __ASM_FW_H_ */ diff --git a/arch/mips/pic32/pic32mzda/early_console.c b/arch/mips/pic32/pic32mzda/early_console.c index 8ed4961b1271..c00c6149ee30 100644 --- a/arch/mips/pic32/pic32mzda/early_console.c +++ b/arch/mips/pic32/pic32mzda/early_console.c @@ -35,7 +35,7 @@ #define U_BRG(x) (UART_BASE(x) + 0x40) static void __iomem *uart_base; -static char console_port = -1; +static int console_port = -1; static int __init configure_uart_pins(int port) { @@ -55,7 +55,7 @@ static int __init configure_uart_pins(int port) return 0; } -static void __init configure_uart(char port, int baud) +static void __init configure_uart(int port, int baud) { u32 pbclk; @@ -68,7 +68,7 @@ static void __init configure_uart(char port, int baud) uart_base + PIC32_SET(U_STA(port))); } -static void __init setup_early_console(char port, int baud) +static void __init setup_early_console(int port, int baud) { if (configure_uart_pins(port)) return; @@ -138,16 +138,15 @@ _out: return baud; } -void __init fw_init_early_console(char port) +void __init fw_init_early_console(void) { char *arch_cmdline = pic32_getcmdline(); - int baud = -1; + int baud, port; uart_base = ioremap_nocache(PIC32_BASE_UART, 0xc00); baud = get_baud_from_cmdline(arch_cmdline); - if (port == -1) - port = get_port_from_cmdline(arch_cmdline); + port = get_port_from_cmdline(arch_cmdline); if (port == -1) port = EARLY_CONSOLE_PORT; diff --git a/arch/mips/pic32/pic32mzda/init.c b/arch/mips/pic32/pic32mzda/init.c index 406c6c5cec29..cf2625551b45 100644 --- a/arch/mips/pic32/pic32mzda/init.c +++ b/arch/mips/pic32/pic32mzda/init.c @@ -68,7 +68,7 @@ void __init plat_mem_setup(void) strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); #ifdef CONFIG_EARLY_PRINTK - fw_init_early_console(-1); + fw_init_early_console(); #endif pic32_config_init(); } diff --git a/arch/nios2/boot/Makefile b/arch/nios2/boot/Makefile index 2ba23a679732..70139de9a0df 100644 --- a/arch/nios2/boot/Makefile +++ b/arch/nios2/boot/Makefile @@ -20,7 +20,7 @@ $(obj)/vmlinux.bin: vmlinux FORCE $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE $(call if_changed,gzip) -$(obj)/vmImage: $(obj)/vmlinux.gz +$(obj)/vmImage: $(obj)/vmlinux.gz FORCE $(call if_changed,uimage) @$(kecho) 'Kernel: $@ is ready' diff --git a/arch/parisc/include/asm/hardware.h b/arch/parisc/include/asm/hardware.h index d6e1ed145031..f4eab68e25a9 100644 --- a/arch/parisc/include/asm/hardware.h +++ b/arch/parisc/include/asm/hardware.h @@ -10,12 +10,12 @@ #define SVERSION_ANY_ID PA_SVERSION_ANY_ID struct hp_hardware { - unsigned short hw_type:5; /* HPHW_xxx */ - unsigned short hversion; - unsigned long sversion:28; - unsigned short opt; - const char name[80]; /* The hardware description */ -}; + unsigned int hw_type:8; /* HPHW_xxx */ + unsigned int hversion:12; + unsigned int sversion:12; + unsigned char opt; + unsigned char name[59]; /* The hardware description */ +} __packed; struct parisc_device; diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 592e8cec16dd..01a2ed59d2f2 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c @@ -861,15 +861,13 @@ void __init walk_central_bus(void) &root); } -static void print_parisc_device(struct parisc_device *dev) +static __init void print_parisc_device(struct parisc_device *dev) { - char hw_path[64]; - static int count; + static int count __initdata; - print_pa_hwpath(dev, hw_path); - pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", - ++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type, - dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); + pr_info("%d. %s at %pap { type:%d, hv:%#x, sv:%#x, rev:%#x }", + ++count, dev->name, &(dev->hpa.start), dev->id.hw_type, + dev->id.hversion, dev->id.sversion, dev->id.hversion_rev); if (dev->num_addrs) { int k; @@ -1058,7 +1056,7 @@ static __init int qemu_print_iodc_data(struct device *lin_dev, void *data) -static int print_one_device(struct device * dev, void * data) +static __init int print_one_device(struct device * dev, void * data) { struct parisc_device * pdev = to_parisc_device(dev); diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 26654d0c2af7..5987ae0d8fbb 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -165,7 +165,7 @@ CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8 CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power9,-mtune=power8) else CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5)) -CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4) +CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4 endif else ifdef CONFIG_PPC_BOOK3E_64 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64 diff --git a/arch/powerpc/boot/dts/fsl/e500v1_power_isa.dtsi b/arch/powerpc/boot/dts/fsl/e500v1_power_isa.dtsi new file mode 100644 index 000000000000..7e2a90cde72e --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/e500v1_power_isa.dtsi @@ -0,0 +1,51 @@ +/* + * e500v1 Power ISA Device Tree Source (include) + * + * Copyright 2012 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Freescale Semiconductor nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/ { + cpus { + power-isa-version = "2.03"; + power-isa-b; // Base + power-isa-e; // Embedded + power-isa-atb; // Alternate Time Base + power-isa-cs; // Cache Specification + power-isa-e.le; // Embedded.Little-Endian + power-isa-e.pm; // Embedded.Performance Monitor + power-isa-ecl; // Embedded Cache Locking + power-isa-mmc; // Memory Coherence + power-isa-sp; // Signal Processing Engine + power-isa-sp.fs; // SPE.Embedded Float Scalar Single + power-isa-sp.fv; // SPE.Embedded Float Vector + mmu-type = "power-embedded"; + }; +}; diff --git a/arch/powerpc/boot/dts/fsl/mpc8540ads.dts b/arch/powerpc/boot/dts/fsl/mpc8540ads.dts index e6d0b166d68d..b4314aa6769c 100644 --- a/arch/powerpc/boot/dts/fsl/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/fsl/mpc8540ads.dts @@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8540ADS"; diff --git a/arch/powerpc/boot/dts/fsl/mpc8541cds.dts b/arch/powerpc/boot/dts/fsl/mpc8541cds.dts index 9fa2c734a988..48492c621edf 100644 --- a/arch/powerpc/boot/dts/fsl/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/fsl/mpc8541cds.dts @@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8541CDS"; diff --git a/arch/powerpc/boot/dts/fsl/mpc8555cds.dts b/arch/powerpc/boot/dts/fsl/mpc8555cds.dts index 272f08caea92..325c817dedeb 100644 --- a/arch/powerpc/boot/dts/fsl/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/fsl/mpc8555cds.dts @@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8555CDS"; diff --git a/arch/powerpc/boot/dts/fsl/mpc8560ads.dts b/arch/powerpc/boot/dts/fsl/mpc8560ads.dts index 7a822b08aa35..b5fb5ae3ed68 100644 --- a/arch/powerpc/boot/dts/fsl/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/fsl/mpc8560ads.dts @@ -11,7 +11,7 @@ /dts-v1/; -/include/ "e500v2_power_isa.dtsi" +/include/ "e500v1_power_isa.dtsi" / { model = "MPC8560ADS"; diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index 7cecc3bd953b..bd68c3259fad 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c @@ -338,6 +338,7 @@ struct pci_dn *pci_add_device_node_info(struct pci_controller *hose, INIT_LIST_HEAD(&pdn->list); parent = of_get_parent(dn); pdn->parent = parent ? PCI_DN(parent) : NULL; + of_node_put(parent); if (pdn->parent) list_add_tail(&pdn->list, &pdn->parent->child_list); diff --git a/arch/powerpc/math-emu/math_efp.c b/arch/powerpc/math-emu/math_efp.c index 581f404caa1d..b9848179dbaa 100644 --- a/arch/powerpc/math-emu/math_efp.c +++ b/arch/powerpc/math-emu/math_efp.c @@ -21,6 +21,7 @@ #include <linux/types.h> #include <linux/prctl.h> +#include <linux/module.h> #include <linux/uaccess.h> #include <asm/reg.h> diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c index edf9032e2e5c..96a3d23132ba 100644 --- a/arch/powerpc/platforms/powernv/opal.c +++ b/arch/powerpc/platforms/powernv/opal.c @@ -740,6 +740,7 @@ static void opal_export_attrs(void) kobj = kobject_create_and_add("exports", opal_kobj); if (!kobj) { pr_warn("kobject_create_and_add() of exports failed\n"); + of_node_put(np); return; } diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index df95102e732c..44aedb6b9f55 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c @@ -216,8 +216,10 @@ static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) dev_err(&pdev->dev, "node %pOF has an invalid fsl,msi phandle %u\n", hose->dn, np->phandle); + of_node_put(np); return -EINVAL; } + of_node_put(np); } for_each_pci_msi_entry(entry, pdev) { diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index b6c972941881..e6d09ad417e5 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -49,9 +49,16 @@ ifeq ($(CONFIG_RISCV_ISA_C),y) KBUILD_ARCH_C = c endif -KBUILD_AFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)fd$(KBUILD_ARCH_C) +# Newer binutils versions default to ISA spec version 20191213 which moves some +# instructions from the I extension to the Zicsr and Zifencei extensions. +toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zicsr_zifencei) +ifeq ($(toolchain-need-zicsr-zifencei),y) + KBUILD_ARCH_ZISCR_ZIFENCEI = _zicsr_zifencei +endif + +KBUILD_AFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)fd$(KBUILD_ARCH_C)$(KBUILD_ARCH_ZISCR_ZIFENCEI) -KBUILD_CFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)$(KBUILD_ARCH_C) +KBUILD_CFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)$(KBUILD_ARCH_C)$(KBUILD_ARCH_ZISCR_ZIFENCEI) KBUILD_CFLAGS += -mno-save-restore KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET) diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index d7c6ca7c95ae..64180108072c 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -104,6 +104,8 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, { struct pt_regs *childregs = task_pt_regs(p); + memset(&p->thread.s, 0, sizeof(p->thread.s)); + /* p->thread holds context to be restored by __switch_to() */ if (unlikely(p->flags & PF_KTHREAD)) { /* Kernel thread */ diff --git a/arch/riscv/kernel/sys_riscv.c b/arch/riscv/kernel/sys_riscv.c index 516aaa19daf2..3a9d42e6616e 100644 --- a/arch/riscv/kernel/sys_riscv.c +++ b/arch/riscv/kernel/sys_riscv.c @@ -26,9 +26,6 @@ static long riscv_sys_mmap(unsigned long addr, unsigned long len, if (unlikely(offset & (~PAGE_MASK >> page_shift_offset))) return -EINVAL; - if (unlikely((prot & PROT_WRITE) && !(prot & PROT_READ))) - return -EINVAL; - return ksys_mmap_pgoff(addr, len, prot, flags, fd, offset >> (PAGE_SHIFT - page_shift_offset)); } diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile index 1dd134fc0d84..ba833b79051f 100644 --- a/arch/riscv/kernel/vdso/Makefile +++ b/arch/riscv/kernel/vdso/Makefile @@ -17,6 +17,9 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) obj-y += vdso.o vdso-syms.o CPPFLAGS_vdso.lds += -P -C -U$(ARCH) +ifneq ($(filter vgettimeofday, $(vdso-syms)),) +CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY +endif # Disable gcov profiling for VDSO code GCOV_PROFILE := n diff --git a/arch/riscv/kernel/vdso/vdso.lds.S b/arch/riscv/kernel/vdso/vdso.lds.S index cd1d47e0724b..8910712f6fb2 100644 --- a/arch/riscv/kernel/vdso/vdso.lds.S +++ b/arch/riscv/kernel/vdso/vdso.lds.S @@ -70,9 +70,11 @@ VERSION LINUX_4.15 { global: __vdso_rt_sigreturn; +#ifdef HAS_VGETTIMEOFDAY __vdso_gettimeofday; __vdso_clock_gettime; __vdso_clock_getres; +#endif __vdso_getcpu; __vdso_flush_icache; local: *; diff --git a/arch/s390/include/asm/futex.h b/arch/s390/include/asm/futex.h index 5e97a4353147..7837c791f7e8 100644 --- a/arch/s390/include/asm/futex.h +++ b/arch/s390/include/asm/futex.h @@ -16,7 +16,8 @@ "3: jl 1b\n" \ " lhi %0,0\n" \ "4: sacf 768\n" \ - EX_TABLE(0b,4b) EX_TABLE(2b,4b) EX_TABLE(3b,4b) \ + EX_TABLE(0b,4b) EX_TABLE(1b,4b) \ + EX_TABLE(2b,4b) EX_TABLE(3b,4b) \ : "=d" (ret), "=&d" (oldval), "=&d" (newval), \ "=m" (*uaddr) \ : "0" (-EFAULT), "d" (oparg), "a" (uaddr), \ diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c index 376f6b6dfb3c..7fb7d4dc18dc 100644 --- a/arch/s390/kernel/crash_dump.c +++ b/arch/s390/kernel/crash_dump.c @@ -45,7 +45,7 @@ struct save_area { u64 fprs[16]; u32 fpc; u32 prefix; - u64 todpreg; + u32 todpreg; u64 timer; u64 todcmp; u64 vxrs_low[16]; diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c index 17d73b71df1d..df5d44a7c3de 100644 --- a/arch/s390/kvm/vsie.c +++ b/arch/s390/kvm/vsie.c @@ -376,8 +376,10 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) if (test_kvm_cpu_feat(vcpu->kvm, KVM_S390_VM_CPU_FEAT_CEI)) scb_s->eca |= scb_o->eca & ECA_CEI; /* Epoch Extension */ - if (test_kvm_facility(vcpu->kvm, 139)) + if (test_kvm_facility(vcpu->kvm, 139)) { scb_s->ecd |= scb_o->ecd & ECD_MEF; + scb_s->epdx = scb_o->epdx; + } /* etoken */ if (test_kvm_facility(vcpu->kvm, 156)) diff --git a/arch/sh/include/asm/sections.h b/arch/sh/include/asm/sections.h index 8edb824049b9..0cb0ca149ac3 100644 --- a/arch/sh/include/asm/sections.h +++ b/arch/sh/include/asm/sections.h @@ -4,7 +4,7 @@ #include <asm-generic/sections.h> -extern long __machvec_start, __machvec_end; +extern char __machvec_start[], __machvec_end[]; extern char __uncached_start, __uncached_end; extern char __start_eh_frame[], __stop_eh_frame[]; diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c index ec05f491c347..a9f797a76e7c 100644 --- a/arch/sh/kernel/machvec.c +++ b/arch/sh/kernel/machvec.c @@ -22,8 +22,8 @@ #define MV_NAME_SIZE 32 #define for_each_mv(mv) \ - for ((mv) = (struct sh_machine_vector *)&__machvec_start; \ - (mv) && (unsigned long)(mv) < (unsigned long)&__machvec_end; \ + for ((mv) = (struct sh_machine_vector *)__machvec_start; \ + (mv) && (unsigned long)(mv) < (unsigned long)__machvec_end; \ (mv)++) static struct sh_machine_vector * __init get_mv_byname(const char *name) @@ -89,8 +89,8 @@ void __init sh_mv_setup(void) if (!machvec_selected) { unsigned long machvec_size; - machvec_size = ((unsigned long)&__machvec_end - - (unsigned long)&__machvec_start); + machvec_size = ((unsigned long)__machvec_end - + (unsigned long)__machvec_start); /* * Sanity check for machvec section alignment. Ensure @@ -104,7 +104,7 @@ void __init sh_mv_setup(void) * vector (usually the only one) from .machvec.init. */ if (machvec_size >= sizeof(struct sh_machine_vector)) - sh_mv = *(struct sh_machine_vector *)&__machvec_start; + sh_mv = *(struct sh_machine_vector *)__machvec_start; } printk(KERN_NOTICE "Booting machvec: %s\n", get_system_type()); diff --git a/arch/um/configs/x86_64_defconfig b/arch/um/configs/x86_64_defconfig index 4974b9d0ca8a..47b68ff2acb5 100644 --- a/arch/um/configs/x86_64_defconfig +++ b/arch/um/configs/x86_64_defconfig @@ -70,3 +70,4 @@ CONFIG_TMPFS=y CONFIG_NLS=y CONFIG_DEBUG_INFO=y CONFIG_DEBUG_KERNEL=y +CONFIG_INIT_STACK_NONE=y diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index a818ccef30ca..c23f8857a798 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c @@ -77,7 +77,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) static void *c_start(struct seq_file *m, loff_t *pos) { - return *pos < NR_CPUS ? cpu_data + *pos : NULL; + return *pos < nr_cpu_ids ? cpu_data + *pos : NULL; } static void *c_next(struct seq_file *m, void *v, loff_t *pos) diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index f46e2b26facb..25b026e43c87 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -432,7 +432,6 @@ CONFIG_HARDENED_USERCOPY=y CONFIG_STATIC_USERMODEHELPER=y CONFIG_STATIC_USERMODEHELPER_PATH="" CONFIG_SECURITY_SELINUX=y -CONFIG_INIT_STACK_ALL_ZERO=y CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y CONFIG_CRYPTO_ADIANTUM=y CONFIG_CRYPTO_BLAKE2B=y diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h index 993dd06c8923..806729a7172f 100644 --- a/arch/x86/entry/calling.h +++ b/arch/x86/entry/calling.h @@ -6,6 +6,8 @@ #include <asm/percpu.h> #include <asm/asm-offsets.h> #include <asm/processor-flags.h> +#include <asm/msr.h> +#include <asm/nospec-branch.h> /* @@ -146,27 +148,19 @@ For 32-bit we have the following conventions - kernel is built with .endm -.macro POP_REGS pop_rdi=1 skip_r11rcx=0 +.macro POP_REGS pop_rdi=1 popq %r15 popq %r14 popq %r13 popq %r12 popq %rbp popq %rbx - .if \skip_r11rcx - popq %rsi - .else popq %r11 - .endif popq %r10 popq %r9 popq %r8 popq %rax - .if \skip_r11rcx - popq %rsi - .else popq %rcx - .endif popq %rdx popq %rsi .if \pop_rdi @@ -317,6 +311,62 @@ For 32-bit we have the following conventions - kernel is built with #endif /* + * IBRS kernel mitigation for Spectre_v2. + * + * Assumes full context is established (PUSH_REGS, CR3 and GS) and it clobbers + * the regs it uses (AX, CX, DX). Must be called before the first RET + * instruction (NOTE! UNTRAIN_RET includes a RET instruction) + * + * The optional argument is used to save/restore the current value, + * which is used on the paranoid paths. + * + * Assumes x86_spec_ctrl_{base,current} to have SPEC_CTRL_IBRS set. + */ +.macro IBRS_ENTER save_reg + ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_KERNEL_IBRS + movl $MSR_IA32_SPEC_CTRL, %ecx + +.ifnb \save_reg + rdmsr + shl $32, %rdx + or %rdx, %rax + mov %rax, \save_reg + test $SPEC_CTRL_IBRS, %eax + jz .Ldo_wrmsr_\@ + lfence + jmp .Lend_\@ +.Ldo_wrmsr_\@: +.endif + + movq PER_CPU_VAR(x86_spec_ctrl_current), %rdx + movl %edx, %eax + shr $32, %rdx + wrmsr +.Lend_\@: +.endm + +/* + * Similar to IBRS_ENTER, requires KERNEL GS,CR3 and clobbers (AX, CX, DX) + * regs. Must be called after the last RET. + */ +.macro IBRS_EXIT save_reg + ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_KERNEL_IBRS + movl $MSR_IA32_SPEC_CTRL, %ecx + +.ifnb \save_reg + mov \save_reg, %rdx +.else + movq PER_CPU_VAR(x86_spec_ctrl_current), %rdx + andl $(~SPEC_CTRL_IBRS), %edx +.endif + + movl %edx, %eax + shr $32, %rdx + wrmsr +.Lend_\@: +.endm + +/* * Mitigate Spectre v1 for conditional swapgs code paths. * * FENCE_SWAPGS_USER_ENTRY is used in the user entry swapgs code path, to diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index 37d9016d4768..78b308f2f2ea 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -643,7 +643,6 @@ ENTRY(__switch_to_asm) movl %ebx, PER_CPU_VAR(stack_canary)+stack_canary_offset #endif -#ifdef CONFIG_RETPOLINE /* * When switching from a shallower to a deeper call stack * the RSB may either underflow or use entries populated @@ -652,7 +651,6 @@ ENTRY(__switch_to_asm) * speculative execution to prevent attack. */ FILL_RETURN_BUFFER %ebx, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_CTXSW -#endif /* restore callee-saved registers */ popfl diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index dfe26f3cfffc..3f418aedef8d 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -235,6 +235,10 @@ GLOBAL(entry_SYSCALL_64_after_hwframe) /* IRQs are off. */ movq %rax, %rdi movq %rsp, %rsi + + /* clobbers %rax, make sure it is after saving the syscall nr */ + IBRS_ENTER + call do_syscall_64 /* returns with IRQs disabled */ TRACE_IRQS_IRETQ /* we're about to change IF */ @@ -311,8 +315,8 @@ GLOBAL(entry_SYSCALL_64_after_hwframe) * perf profiles. Nothing jumps here. */ syscall_return_via_sysret: - /* rcx and r11 are already restored (see code above) */ - POP_REGS pop_rdi=0 skip_r11rcx=1 + IBRS_EXIT + POP_REGS pop_rdi=0 /* * Now all regs are restored except RSP and RDI. @@ -363,7 +367,6 @@ ENTRY(__switch_to_asm) movq %rbx, PER_CPU_VAR(irq_stack_union)+stack_canary_offset #endif -#ifdef CONFIG_RETPOLINE /* * When switching from a shallower to a deeper call stack * the RSB may either underflow or use entries populated @@ -372,7 +375,6 @@ ENTRY(__switch_to_asm) * speculative execution to prevent attack. */ FILL_RETURN_BUFFER %r12, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_CTXSW -#endif /* restore callee-saved registers */ popfq @@ -685,6 +687,7 @@ GLOBAL(retint_user) TRACE_IRQS_IRETQ GLOBAL(swapgs_restore_regs_and_return_to_usermode) + IBRS_EXIT #ifdef CONFIG_DEBUG_ENTRY /* Assert that pt_regs indicates user mode. */ testb $3, CS(%rsp) @@ -1250,7 +1253,13 @@ ENTRY(paranoid_entry) */ FENCE_SWAPGS_KERNEL_ENTRY - ret + /* + * Once we have CR3 and %GS setup save and set SPEC_CTRL. Just like + * CR3 above, keep the old value in a callee saved register. + */ + IBRS_ENTER save_reg=%r15 + + RET END(paranoid_entry) /* @@ -1278,12 +1287,20 @@ ENTRY(paranoid_exit) jmp .Lparanoid_exit_restore .Lparanoid_exit_no_swapgs: TRACE_IRQS_IRETQ_DEBUG + + /* + * Must restore IBRS state before both CR3 and %GS since we need access + * to the per-CPU x86_spec_ctrl_shadow variable. + */ + IBRS_EXIT save_reg=%r15 + /* Always restore stashed CR3 value (see paranoid_entry) */ RESTORE_CR3 scratch_reg=%rbx save_reg=%r14 .Lparanoid_exit_restore: jmp restore_regs_and_return_to_kernel END(paranoid_exit) + /* * Save all registers in pt_regs, and switch GS if needed. */ @@ -1303,6 +1320,7 @@ ENTRY(error_entry) FENCE_SWAPGS_USER_ENTRY /* We have user CR3. Change to kernel CR3. */ SWITCH_TO_KERNEL_CR3 scratch_reg=%rax + IBRS_ENTER .Lerror_entry_from_usermode_after_swapgs: /* Put us onto the real thread stack. */ @@ -1367,6 +1385,7 @@ ENTRY(error_entry) SWAPGS FENCE_SWAPGS_USER_ENTRY SWITCH_TO_KERNEL_CR3 scratch_reg=%rax + IBRS_ENTER /* * Pretend that the exception came from user mode: set up pt_regs @@ -1472,6 +1491,8 @@ ENTRY(nmi) PUSH_AND_CLEAR_REGS rdx=(%rdx) ENCODE_FRAME_POINTER + IBRS_ENTER + /* * At this point we no longer need to worry about stack damage * due to nesting -- we're on the normal thread stack and we're @@ -1695,6 +1716,9 @@ end_repeat_nmi: movq $-1, %rsi call do_nmi + /* Always restore stashed SPEC_CTRL value (see paranoid_entry) */ + IBRS_EXIT save_reg=%r15 + /* Always restore stashed CR3 value (see paranoid_entry) */ RESTORE_CR3 scratch_reg=%r15 save_reg=%r14 diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S index 40d2834a8101..85dd05de648c 100644 --- a/arch/x86/entry/entry_64_compat.S +++ b/arch/x86/entry/entry_64_compat.S @@ -4,7 +4,6 @@ * * Copyright 2000-2002 Andi Kleen, SuSE Labs. */ -#include "calling.h" #include <asm/asm-offsets.h> #include <asm/current.h> #include <asm/errno.h> @@ -17,6 +16,8 @@ #include <linux/linkage.h> #include <linux/err.h> +#include "calling.h" + .section .entry.text, "ax" /* @@ -106,6 +107,8 @@ ENTRY(entry_SYSENTER_compat) xorl %r15d, %r15d /* nospec r15 */ cld + IBRS_ENTER + /* * SYSENTER doesn't filter flags, so we need to clear NT and AC * ourselves. To save a few cycles, we can check whether @@ -253,6 +256,8 @@ GLOBAL(entry_SYSCALL_compat_after_hwframe) */ TRACE_IRQS_OFF + IBRS_ENTER + movq %rsp, %rdi call do_fast_syscall_32 /* XEN PV guests always use IRET path */ @@ -262,6 +267,9 @@ GLOBAL(entry_SYSCALL_compat_after_hwframe) /* Opportunistic SYSRET */ sysret32_from_system_call: TRACE_IRQS_ON /* User mode traces as IRQs on. */ + + IBRS_EXIT + movq RBX(%rsp), %rbx /* pt_regs->rbx */ movq RBP(%rsp), %rbp /* pt_regs->rbp */ movq EFLAGS(%rsp), %r11 /* pt_regs->flags (in r11) */ @@ -403,6 +411,7 @@ ENTRY(entry_INT80_compat) * gate turned them off. */ TRACE_IRQS_OFF + IBRS_ENTER movq %rsp, %rdi call do_int80_syscall_32 diff --git a/arch/x86/include/asm/cpu_device_id.h b/arch/x86/include/asm/cpu_device_id.h index 884466592943..cdf39decf734 100644 --- a/arch/x86/include/asm/cpu_device_id.h +++ b/arch/x86/include/asm/cpu_device_id.h @@ -1,16 +1,26 @@ /* SPDX-License-Identifier: GPL-2.0 */ -#ifndef _CPU_DEVICE_ID -#define _CPU_DEVICE_ID 1 +#ifndef _ASM_X86_CPU_DEVICE_ID +#define _ASM_X86_CPU_DEVICE_ID /* * Declare drivers belonging to specific x86 CPUs * Similar in spirit to pci_device_id and related PCI functions + * + * The wildcard initializers are in mod_devicetable.h because + * file2alias needs them. Sigh. */ - #include <linux/mod_devicetable.h> +/* Get the INTEL_FAM* model defines */ +#include <asm/intel-family.h> +/* And the X86_VENDOR_* ones */ +#include <asm/processor.h> -#define X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins) +/* Centaur FAM6 models */ +#define X86_CENTAUR_FAM6_C7_A 0xa +#define X86_CENTAUR_FAM6_C7_D 0xd +#define X86_CENTAUR_FAM6_NANO 0xf +#define X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins) /** * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY @@ -23,8 +33,11 @@ * format is unsigned long. The supplied value, pointer * etc. is casted to unsigned long internally. * - * Backport version to keep the SRBDS pile consistant. No shorter variants - * required for this. + * Use only if you need all selectors. Otherwise use one of the shorter + * macros of the X86_MATCH_* family. If there is no matching shorthand + * macro, consider to add one. If you really need to wrap one of the macros + * into another macro at the usage site for good reasons, then please + * start this local macro with X86_MATCH to allow easy grepping. */ #define X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \ _steppings, _feature, _data) { \ @@ -36,6 +49,147 @@ .driver_data = (unsigned long) _data \ } +/** + * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Macro for CPU matching + * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY + * The name is expanded to X86_VENDOR_@_vendor + * @_family: The family number or X86_FAMILY_ANY + * @_model: The model number, model constant or X86_MODEL_ANY + * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY + * @_data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is + * set to wildcards. + */ +#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, feature, data) \ + X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \ + X86_STEPPING_ANY, feature, data) + +/** + * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature + * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY + * The name is expanded to X86_VENDOR_@vendor + * @family: The family number or X86_FAMILY_ANY + * @feature: A X86_FEATURE bit + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are + * set to wildcards. + */ +#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data) \ + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, \ + X86_MODEL_ANY, feature, data) + +/** + * X86_MATCH_VENDOR_FEATURE - Macro for matching vendor and CPU feature + * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY + * The name is expanded to X86_VENDOR_@vendor + * @feature: A X86_FEATURE bit + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are + * set to wildcards. + */ +#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data) \ + X86_MATCH_VENDOR_FAM_FEATURE(vendor, X86_FAMILY_ANY, feature, data) + +/** + * X86_MATCH_FEATURE - Macro for matching a CPU feature + * @feature: A X86_FEATURE bit + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are + * set to wildcards. + */ +#define X86_MATCH_FEATURE(feature, data) \ + X86_MATCH_VENDOR_FEATURE(ANY, feature, data) + +/* Transitional to keep the existing code working */ +#define X86_FEATURE_MATCH(feature) X86_MATCH_FEATURE(feature, NULL) + +/** + * X86_MATCH_VENDOR_FAM_MODEL - Match vendor, family and model + * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY + * The name is expanded to X86_VENDOR_@vendor + * @family: The family number or X86_FAMILY_ANY + * @model: The model number, model constant or X86_MODEL_ANY + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are + * set to wildcards. + */ +#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data) \ + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, \ + X86_FEATURE_ANY, data) + +/** + * X86_MATCH_VENDOR_FAM - Match vendor and family + * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY + * The name is expanded to X86_VENDOR_@vendor + * @family: The family number or X86_FAMILY_ANY + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * All other missing arguments to X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are + * set of wildcards. + */ +#define X86_MATCH_VENDOR_FAM(vendor, family, data) \ + X86_MATCH_VENDOR_FAM_MODEL(vendor, family, X86_MODEL_ANY, data) + +/** + * X86_MATCH_INTEL_FAM6_MODEL - Match vendor INTEL, family 6 and model + * @model: The model name without the INTEL_FAM6_ prefix or ANY + * The model name is expanded to INTEL_FAM6_@model internally + * @data: Driver specific data or NULL. The internal storage + * format is unsigned long. The supplied value, pointer + * etc. is casted to unsigned long internally. + * + * The vendor is set to INTEL, the family to 6 and all other missing + * arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are set to wildcards. + * + * See X86_MATCH_VENDOR_FAM_MODEL_FEATURE() for further information. + */ +#define X86_MATCH_INTEL_FAM6_MODEL(model, data) \ + X86_MATCH_VENDOR_FAM_MODEL(INTEL, 6, INTEL_FAM6_##model, data) + +/* + * Match specific microcode revisions. + * + * vendor/family/model/stepping must be all set. + * + * Only checks against the boot CPU. When mixed-stepping configs are + * valid for a CPU model, add a quirk for every valid stepping and + * do the fine-tuning in the quirk handler. + */ + +struct x86_cpu_desc { + u8 x86_family; + u8 x86_vendor; + u8 x86_model; + u8 x86_stepping; + u32 x86_microcode_rev; +}; + +#define INTEL_CPU_DESC(model, stepping, revision) { \ + .x86_family = 6, \ + .x86_vendor = X86_VENDOR_INTEL, \ + .x86_model = (model), \ + .x86_stepping = (stepping), \ + .x86_microcode_rev = (revision), \ +} + extern const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match); +extern bool x86_cpu_has_min_microcode_rev(const struct x86_cpu_desc *table); -#endif +#endif /* _ASM_X86_CPU_DEVICE_ID */ diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index e9b79bac9b2a..bd4374f56651 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -202,8 +202,8 @@ #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ #define X86_FEATURE_PTI ( 7*32+11) /* Kernel Page Table Isolation enabled */ -#define X86_FEATURE_RETPOLINE ( 7*32+12) /* "" Generic Retpoline mitigation for Spectre variant 2 */ -#define X86_FEATURE_RETPOLINE_LFENCE ( 7*32+13) /* "" Use LFENCE for Spectre variant 2 */ +#define X86_FEATURE_KERNEL_IBRS ( 7*32+12) /* "" Set/clear IBRS on kernel entry/exit */ +#define X86_FEATURE_RSB_VMEXIT ( 7*32+13) /* "" Fill RSB on VM-Exit */ #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ #define X86_FEATURE_CDP_L2 ( 7*32+15) /* Code and Data Prioritization L2 */ #define X86_FEATURE_MSR_SPEC_CTRL ( 7*32+16) /* "" MSR SPEC_CTRL is implemented */ @@ -283,7 +283,16 @@ #define X86_FEATURE_CQM_MBM_LOCAL (11*32+ 3) /* LLC Local MBM monitoring */ #define X86_FEATURE_FENCE_SWAPGS_USER (11*32+ 4) /* "" LFENCE in user entry SWAPGS path */ #define X86_FEATURE_FENCE_SWAPGS_KERNEL (11*32+ 5) /* "" LFENCE in kernel entry SWAPGS path */ -#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+ 6) /* "" Fill RSB on VM exit when EIBRS is enabled */ +/* FREE! (11*32+ 6) */ +/* FREE! (11*32+ 7) */ +/* FREE! (11*32+ 8) */ +/* FREE! (11*32+ 9) */ +/* FREE! (11*32+10) */ +#define X86_FEATURE_RRSBA_CTRL (11*32+11) /* "" RET prediction control */ +#define X86_FEATURE_RETPOLINE (11*32+12) /* "" Generic Retpoline mitigation for Spectre variant 2 */ +#define X86_FEATURE_RETPOLINE_LFENCE (11*32+13) /* "" Use LFENCE for Spectre variant 2 */ +#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17) /* "" Fill RSB on VM exit when EIBRS is enabled */ +#define X86_FEATURE_MSR_TSX_CTRL (11*32+18) /* "" MSR IA32_TSX_CTRL (Intel) implemented */ /* AMD-defined CPU features, CPUID level 0x80000008 (EBX), word 13 */ #define X86_FEATURE_CLZERO (13*32+ 0) /* CLZERO instruction */ @@ -296,6 +305,7 @@ #define X86_FEATURE_AMD_SSBD (13*32+24) /* "" Speculative Store Bypass Disable */ #define X86_FEATURE_VIRT_SSBD (13*32+25) /* Virtualized Speculative Store Bypass Disable */ #define X86_FEATURE_AMD_SSB_NO (13*32+26) /* "" Speculative Store Bypass is fixed in hardware. */ +#define X86_FEATURE_BTC_NO (13*32+29) /* "" Not vulnerable to Branch Type Confusion */ /* Thermal and Power Management Leaf, CPUID level 0x00000006 (EAX), word 14 */ #define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */ @@ -397,6 +407,7 @@ #define X86_BUG_SRBDS X86_BUG(24) /* CPU may leak RNG bits if not mitigated */ #define X86_BUG_MMIO_STALE_DATA X86_BUG(25) /* CPU is affected by Processor MMIO Stale Data vulnerabilities */ #define X86_BUG_MMIO_UNKNOWN X86_BUG(26) /* CPU is too old and its MMIO Stale Data status is unknown */ -#define X86_BUG_EIBRS_PBRSB X86_BUG(27) /* EIBRS is vulnerable to Post Barrier RSB Predictions */ +#define X86_BUG_RETBLEED X86_BUG(27) /* CPU is affected by RETBleed */ +#define X86_BUG_EIBRS_PBRSB X86_BUG(28) /* EIBRS is vulnerable to Post Barrier RSB Predictions */ #endif /* _ASM_X86_CPUFEATURES_H */ diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index 00e01d215f74..e1bd23641fc6 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -682,7 +682,7 @@ struct hv_enlightened_vmcs { u64 guest_rip; u32 hv_clean_fields; - u32 hv_padding_32; + u32 padding32_1; u32 hv_synthetic_controls; struct { u32 nested_flush_hypercall:1; @@ -690,7 +690,7 @@ struct hv_enlightened_vmcs { u32 reserved:30; } hv_enlightenments_control; u32 hv_vp_id; - + u32 padding32_2; u64 hv_vm_id; u64 partition_assist_page; u64 padding64_4[4]; diff --git a/arch/x86/include/asm/intel-family.h b/arch/x86/include/asm/intel-family.h index db06f16627b0..1f2f52a34086 100644 --- a/arch/x86/include/asm/intel-family.h +++ b/arch/x86/include/asm/intel-family.h @@ -13,6 +13,9 @@ * that group keep the CPUID for the variants sorted by model number. */ +/* Wildcard match for FAM6 so X86_MATCH_INTEL_FAM6_MODEL(ANY) works */ +#define INTEL_FAM6_ANY X86_MODEL_ANY + #define INTEL_FAM6_CORE_YONAH 0x0E #define INTEL_FAM6_CORE2_MEROM 0x0F @@ -101,6 +104,9 @@ #define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */ #define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */ +/* Family 5 */ +#define INTEL_FAM5_QUARK_X1000 0x09 /* Quark X1000 SoC */ + /* Useful macros */ #define INTEL_CPU_FAM_ANY(_family, _model, _driver_data) \ { \ diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index 7a73799537bf..0bd07699dba3 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -47,6 +47,8 @@ #define SPEC_CTRL_STIBP BIT(SPEC_CTRL_STIBP_SHIFT) /* STIBP mask */ #define SPEC_CTRL_SSBD_SHIFT 2 /* Speculative Store Bypass Disable bit */ #define SPEC_CTRL_SSBD BIT(SPEC_CTRL_SSBD_SHIFT) /* Speculative Store Bypass Disable */ +#define SPEC_CTRL_RRSBA_DIS_S_SHIFT 6 /* Disable RRSBA behavior */ +#define SPEC_CTRL_RRSBA_DIS_S BIT(SPEC_CTRL_RRSBA_DIS_S_SHIFT) #define MSR_IA32_PRED_CMD 0x00000049 /* Prediction Command */ #define PRED_CMD_IBPB BIT(0) /* Indirect Branch Prediction Barrier */ @@ -73,6 +75,7 @@ #define MSR_IA32_ARCH_CAPABILITIES 0x0000010a #define ARCH_CAP_RDCL_NO BIT(0) /* Not susceptible to Meltdown */ #define ARCH_CAP_IBRS_ALL BIT(1) /* Enhanced IBRS support */ +#define ARCH_CAP_RSBA BIT(2) /* RET may use alternative branch predictors */ #define ARCH_CAP_SKIP_VMENTRY_L1DFLUSH BIT(3) /* Skip L1D flush on vmentry */ #define ARCH_CAP_SSB_NO BIT(4) /* * Not susceptible to Speculative Store Bypass @@ -120,6 +123,13 @@ * bit available to control VERW * behavior. */ +#define ARCH_CAP_RRSBA BIT(19) /* + * Indicates RET may use predictors + * other than the RSB. With eIBRS + * enabled predictions in kernel mode + * are restricted to targets in + * kernel. + */ #define ARCH_CAP_PBRSB_NO BIT(24) /* * Not susceptible to Post-Barrier * Return Stack Buffer Predictions. @@ -389,6 +399,11 @@ #define MSR_AMD64_OSVW_STATUS 0xc0010141 #define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_DC_CFG 0xc0011022 + +#define MSR_AMD64_DE_CFG 0xc0011029 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE BIT_ULL(MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT) + #define MSR_AMD64_BU_CFG2 0xc001102a #define MSR_AMD64_IBSFETCHCTL 0xc0011030 #define MSR_AMD64_IBSFETCHLINAD 0xc0011031 @@ -457,9 +472,6 @@ #define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL #define FAM10H_MMIO_CONF_BASE_SHIFT 20 #define MSR_FAM10H_NODE_ID 0xc001100c -#define MSR_F10H_DECFG 0xc0011029 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT 1 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE BIT_ULL(MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT) /* K8 MSRs */ #define MSR_K8_TOP_MEM1 0xc001001a diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index 17a236a8b237..8dba996e9f9e 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -9,6 +9,7 @@ #include <asm/alternative-asm.h> #include <asm/cpufeatures.h> #include <asm/msr-index.h> +#include <asm/percpu.h> /* * Fill the CPU return stack buffer. @@ -70,12 +71,11 @@ add $(BITS_PER_LONG/8) * nr, sp; #endif -/* Sequence to mitigate PBRSB on eIBRS CPUs */ -#define __ISSUE_UNBALANCED_RET_GUARD(sp) \ - call 881f; \ +#define ISSUE_UNBALANCED_RET_GUARD(sp) \ + call 992f; \ int3; \ -881: \ - add $(BITS_PER_LONG/8), sp; \ +992: \ + add $(BITS_PER_LONG/8), sp; \ lfence; #ifdef __ASSEMBLY__ @@ -165,13 +165,11 @@ * monstrosity above, manually. */ .macro FILL_RETURN_BUFFER reg:req nr:req ftr:req -#ifdef CONFIG_RETPOLINE ANNOTATE_NOSPEC_ALTERNATIVE ALTERNATIVE "jmp .Lskip_rsb_\@", \ __stringify(__FILL_RETURN_BUFFER(\reg,\nr,%_ASM_SP)) \ \ftr .Lskip_rsb_\@: -#endif .endm #else /* __ASSEMBLY__ */ @@ -252,6 +250,7 @@ enum spectre_v2_mitigation { SPECTRE_V2_EIBRS, SPECTRE_V2_EIBRS_RETPOLINE, SPECTRE_V2_EIBRS_LFENCE, + SPECTRE_V2_IBRS, }; /* The indirect branch speculation control variants */ @@ -280,26 +279,21 @@ extern char __indirect_thunk_end[]; * retpoline and IBRS mitigations for Spectre v2 need this; only on future * CPUs with IBRS_ALL *might* it be avoided. */ -static inline void vmexit_fill_RSB(void) +static __always_inline void vmexit_fill_RSB(void) { #ifdef CONFIG_RETPOLINE unsigned long loops; asm volatile (ANNOTATE_NOSPEC_ALTERNATIVE - ALTERNATIVE("jmp 910f", - __stringify(__FILL_RETURN_BUFFER(%0, RSB_CLEAR_LOOPS, %1)), - X86_FEATURE_RETPOLINE) + ALTERNATIVE_2("jmp 910f", "", X86_FEATURE_RSB_VMEXIT, + "jmp 911f", X86_FEATURE_RSB_VMEXIT_LITE) + __stringify(__FILL_RETURN_BUFFER(%0, RSB_CLEAR_LOOPS, %1)) + "911:" + __stringify(ISSUE_UNBALANCED_RET_GUARD(%1)) "910:" : "=r" (loops), ASM_CALL_CONSTRAINT : : "memory" ); #endif - asm volatile (ANNOTATE_NOSPEC_ALTERNATIVE - ALTERNATIVE("jmp 920f", - __stringify(__ISSUE_UNBALANCED_RET_GUARD(%0)), - X86_FEATURE_RSB_VMEXIT_LITE) - "920:" - : ASM_CALL_CONSTRAINT - : : "memory" ); } static __always_inline @@ -322,6 +316,9 @@ static inline void indirect_branch_prediction_barrier(void) /* The Intel SPEC CTRL MSR base value cache */ extern u64 x86_spec_ctrl_base; +DECLARE_PER_CPU(u64, x86_spec_ctrl_current); +extern void update_spec_ctrl_cond(u64 val); +extern u64 spec_ctrl_current(void); /* * With retpoline, we must use IBRS to restrict branch prediction @@ -331,18 +328,16 @@ extern u64 x86_spec_ctrl_base; */ #define firmware_restrict_branch_speculation_start() \ do { \ - u64 val = x86_spec_ctrl_base | SPEC_CTRL_IBRS; \ - \ preempt_disable(); \ - alternative_msr_write(MSR_IA32_SPEC_CTRL, val, \ + alternative_msr_write(MSR_IA32_SPEC_CTRL, \ + spec_ctrl_current() | SPEC_CTRL_IBRS, \ X86_FEATURE_USE_IBRS_FW); \ } while (0) #define firmware_restrict_branch_speculation_end() \ do { \ - u64 val = x86_spec_ctrl_base; \ - \ - alternative_msr_write(MSR_IA32_SPEC_CTRL, val, \ + alternative_msr_write(MSR_IA32_SPEC_CTRL, \ + spec_ctrl_current(), \ X86_FEATURE_USE_IBRS_FW); \ preempt_enable(); \ } while (0) diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 98c23126f751..e017f64e09d6 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -789,8 +789,6 @@ static void init_amd_gh(struct cpuinfo_x86 *c) set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); } -#define MSR_AMD64_DE_CFG 0xC0011029 - static void init_amd_ln(struct cpuinfo_x86 *c) { /* @@ -885,12 +883,21 @@ static void init_amd_zn(struct cpuinfo_x86 *c) { set_cpu_cap(c, X86_FEATURE_ZEN); - /* - * Fix erratum 1076: CPB feature bit not being set in CPUID. - * Always set it, except when running under a hypervisor. - */ - if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_CPB)) - set_cpu_cap(c, X86_FEATURE_CPB); + /* Fix up CPUID bits, but only if not virtualised. */ + if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { + + /* Erratum 1076: CPB feature bit not being set in CPUID. */ + if (!cpu_has(c, X86_FEATURE_CPB)) + set_cpu_cap(c, X86_FEATURE_CPB); + + /* + * Zen3 (Fam19 model < 0x10) parts are not susceptible to + * Branch Type Confusion, but predate the allocation of the + * BTC_NO bit. + */ + if (c->x86 == 0x19 && !cpu_has(c, X86_FEATURE_BTC_NO)) + set_cpu_cap(c, X86_FEATURE_BTC_NO); + } } static void init_amd(struct cpuinfo_x86 *c) @@ -951,16 +958,16 @@ static void init_amd(struct cpuinfo_x86 *c) * msr_set_bit() uses the safe accessors, too, even if the MSR * is not present. */ - msr_set_bit(MSR_F10H_DECFG, - MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT); + msr_set_bit(MSR_AMD64_DE_CFG, + MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT); /* * Verify that the MSR write was successful (could be running * under a hypervisor) and only then assume that LFENCE is * serializing. */ - ret = rdmsrl_safe(MSR_F10H_DECFG, &val); - if (!ret && (val & MSR_F10H_DECFG_LFENCE_SERIALIZE)) { + ret = rdmsrl_safe(MSR_AMD64_DE_CFG, &val); + if (!ret && (val & MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT)) { /* A serializing LFENCE stops RDTSC speculation */ set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); } else { diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 501d09d59abc..f1f57acca139 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -37,6 +37,8 @@ static void __init spectre_v1_select_mitigation(void); static void __init spectre_v2_select_mitigation(void); +static void __init retbleed_select_mitigation(void); +static void __init spectre_v2_user_select_mitigation(void); static void __init ssb_select_mitigation(void); static void __init l1tf_select_mitigation(void); static void __init mds_select_mitigation(void); @@ -46,16 +48,47 @@ static void __init taa_select_mitigation(void); static void __init mmio_select_mitigation(void); static void __init srbds_select_mitigation(void); -/* The base value of the SPEC_CTRL MSR that always has to be preserved. */ +/* The base value of the SPEC_CTRL MSR without task-specific bits set */ u64 x86_spec_ctrl_base; EXPORT_SYMBOL_GPL(x86_spec_ctrl_base); + +/* The current value of the SPEC_CTRL MSR with task-specific bits set */ +DEFINE_PER_CPU(u64, x86_spec_ctrl_current); +EXPORT_SYMBOL_GPL(x86_spec_ctrl_current); + static DEFINE_MUTEX(spec_ctrl_mutex); +/* Update SPEC_CTRL MSR and its cached copy unconditionally */ +static void update_spec_ctrl(u64 val) +{ + this_cpu_write(x86_spec_ctrl_current, val); + wrmsrl(MSR_IA32_SPEC_CTRL, val); +} + /* - * The vendor and possibly platform specific bits which can be modified in - * x86_spec_ctrl_base. + * Keep track of the SPEC_CTRL MSR value for the current task, which may differ + * from x86_spec_ctrl_base due to STIBP/SSB in __speculation_ctrl_update(). */ -static u64 __ro_after_init x86_spec_ctrl_mask = SPEC_CTRL_IBRS; +void update_spec_ctrl_cond(u64 val) +{ + if (this_cpu_read(x86_spec_ctrl_current) == val) + return; + + this_cpu_write(x86_spec_ctrl_current, val); + + /* + * When KERNEL_IBRS this MSR is written on return-to-user, unless + * forced the update can be delayed until that time. + */ + if (!cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS)) + wrmsrl(MSR_IA32_SPEC_CTRL, val); +} + +u64 spec_ctrl_current(void) +{ + return this_cpu_read(x86_spec_ctrl_current); +} +EXPORT_SYMBOL_GPL(spec_ctrl_current); /* * AMD specific MSR info for Speculative Store Bypass control. @@ -105,13 +138,21 @@ void __init check_bugs(void) if (boot_cpu_has(X86_FEATURE_MSR_SPEC_CTRL)) rdmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base); - /* Allow STIBP in MSR_SPEC_CTRL if supported */ - if (boot_cpu_has(X86_FEATURE_STIBP)) - x86_spec_ctrl_mask |= SPEC_CTRL_STIBP; - /* Select the proper CPU mitigations before patching alternatives: */ spectre_v1_select_mitigation(); spectre_v2_select_mitigation(); + /* + * retbleed_select_mitigation() relies on the state set by + * spectre_v2_select_mitigation(); specifically it wants to know about + * spectre_v2=ibrs. + */ + retbleed_select_mitigation(); + /* + * spectre_v2_user_select_mitigation() relies on the state set by + * retbleed_select_mitigation(); specifically the STIBP selection is + * forced for UNRET. + */ + spectre_v2_user_select_mitigation(); ssb_select_mitigation(); l1tf_select_mitigation(); md_clear_select_mitigation(); @@ -151,31 +192,17 @@ void __init check_bugs(void) #endif } +/* + * NOTE: For VMX, this function is not called in the vmexit path. + * It uses vmx_spec_ctrl_restore_host() instead. + */ void x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool setguest) { - u64 msrval, guestval, hostval = x86_spec_ctrl_base; + u64 msrval, guestval = guest_spec_ctrl, hostval = spec_ctrl_current(); struct thread_info *ti = current_thread_info(); - /* Is MSR_SPEC_CTRL implemented ? */ if (static_cpu_has(X86_FEATURE_MSR_SPEC_CTRL)) { - /* - * Restrict guest_spec_ctrl to supported values. Clear the - * modifiable bits in the host base value and or the - * modifiable bits from the guest value. - */ - guestval = hostval & ~x86_spec_ctrl_mask; - guestval |= guest_spec_ctrl & x86_spec_ctrl_mask; - - /* SSBD controlled in MSR_SPEC_CTRL */ - if (static_cpu_has(X86_FEATURE_SPEC_CTRL_SSBD) || - static_cpu_has(X86_FEATURE_AMD_SSBD)) - hostval |= ssbd_tif_to_spec_ctrl(ti->flags); - - /* Conditional STIBP enabled? */ - if (static_branch_unlikely(&switch_to_cond_stibp)) - hostval |= stibp_tif_to_spec_ctrl(ti->flags); - if (hostval != guestval) { msrval = setguest ? guestval : hostval; wrmsrl(MSR_IA32_SPEC_CTRL, msrval); @@ -705,12 +732,103 @@ static int __init nospectre_v1_cmdline(char *str) } early_param("nospectre_v1", nospectre_v1_cmdline); -#undef pr_fmt -#define pr_fmt(fmt) "Spectre V2 : " fmt - static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init = SPECTRE_V2_NONE; +#undef pr_fmt +#define pr_fmt(fmt) "RETBleed: " fmt + +enum retbleed_mitigation { + RETBLEED_MITIGATION_NONE, + RETBLEED_MITIGATION_IBRS, + RETBLEED_MITIGATION_EIBRS, +}; + +enum retbleed_mitigation_cmd { + RETBLEED_CMD_OFF, + RETBLEED_CMD_AUTO, +}; + +const char * const retbleed_strings[] = { + [RETBLEED_MITIGATION_NONE] = "Vulnerable", + [RETBLEED_MITIGATION_IBRS] = "Mitigation: IBRS", + [RETBLEED_MITIGATION_EIBRS] = "Mitigation: Enhanced IBRS", +}; + +static enum retbleed_mitigation retbleed_mitigation __ro_after_init = + RETBLEED_MITIGATION_NONE; +static enum retbleed_mitigation_cmd retbleed_cmd __ro_after_init = + RETBLEED_CMD_AUTO; + +static int __init retbleed_parse_cmdline(char *str) +{ + if (!str) + return -EINVAL; + + if (!strcmp(str, "off")) + retbleed_cmd = RETBLEED_CMD_OFF; + else if (!strcmp(str, "auto")) + retbleed_cmd = RETBLEED_CMD_AUTO; + else + pr_err("Unknown retbleed option (%s). Defaulting to 'auto'\n", str); + + return 0; +} +early_param("retbleed", retbleed_parse_cmdline); + +#define RETBLEED_UNTRAIN_MSG "WARNING: BTB untrained return thunk mitigation is only effective on AMD/Hygon!\n" +#define RETBLEED_COMPILER_MSG "WARNING: kernel not compiled with RETPOLINE or -mfunction-return capable compiler!\n" +#define RETBLEED_INTEL_MSG "WARNING: Spectre v2 mitigation leaves CPU vulnerable to RETBleed attacks, data leaks possible!\n" + +static void __init retbleed_select_mitigation(void) +{ + if (!boot_cpu_has_bug(X86_BUG_RETBLEED) || cpu_mitigations_off()) + return; + + switch (retbleed_cmd) { + case RETBLEED_CMD_OFF: + return; + + case RETBLEED_CMD_AUTO: + default: + /* + * The Intel mitigation (IBRS) was already selected in + * spectre_v2_select_mitigation(). + */ + + break; + } + + switch (retbleed_mitigation) { + default: + break; + } + + /* + * Let IBRS trump all on Intel without affecting the effects of the + * retbleed= cmdline option. + */ + if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) { + switch (spectre_v2_enabled) { + case SPECTRE_V2_IBRS: + retbleed_mitigation = RETBLEED_MITIGATION_IBRS; + break; + case SPECTRE_V2_EIBRS: + case SPECTRE_V2_EIBRS_RETPOLINE: + case SPECTRE_V2_EIBRS_LFENCE: + retbleed_mitigation = RETBLEED_MITIGATION_EIBRS; + break; + default: + pr_err(RETBLEED_INTEL_MSG); + } + } + + pr_info("%s\n", retbleed_strings[retbleed_mitigation]); +} + +#undef pr_fmt +#define pr_fmt(fmt) "Spectre V2 : " fmt + static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init = SPECTRE_V2_USER_NONE; static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init = @@ -740,6 +858,7 @@ static inline const char *spectre_v2_module_string(void) { return ""; } #define SPECTRE_V2_LFENCE_MSG "WARNING: LFENCE mitigation is not recommended for this CPU, data leaks possible!\n" #define SPECTRE_V2_EIBRS_EBPF_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible via Spectre v2 BHB attacks!\n" #define SPECTRE_V2_EIBRS_LFENCE_EBPF_SMT_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS+LFENCE mitigation and SMT, data leaks possible via Spectre v2 BHB attacks!\n" +#define SPECTRE_V2_IBRS_PERF_MSG "WARNING: IBRS mitigation selected on Enhanced IBRS CPU, this may cause unnecessary performance loss\n" #ifdef CONFIG_BPF_SYSCALL void unpriv_ebpf_notify(int new_state) @@ -781,6 +900,7 @@ enum spectre_v2_mitigation_cmd { SPECTRE_V2_CMD_EIBRS, SPECTRE_V2_CMD_EIBRS_RETPOLINE, SPECTRE_V2_CMD_EIBRS_LFENCE, + SPECTRE_V2_CMD_IBRS, }; enum spectre_v2_user_cmd { @@ -821,13 +941,15 @@ static void __init spec_v2_user_print_cond(const char *reason, bool secure) pr_info("spectre_v2_user=%s forced on command line.\n", reason); } +static __ro_after_init enum spectre_v2_mitigation_cmd spectre_v2_cmd; + static enum spectre_v2_user_cmd __init -spectre_v2_parse_user_cmdline(enum spectre_v2_mitigation_cmd v2_cmd) +spectre_v2_parse_user_cmdline(void) { char arg[20]; int ret, i; - switch (v2_cmd) { + switch (spectre_v2_cmd) { case SPECTRE_V2_CMD_NONE: return SPECTRE_V2_USER_CMD_NONE; case SPECTRE_V2_CMD_FORCE: @@ -853,15 +975,16 @@ spectre_v2_parse_user_cmdline(enum spectre_v2_mitigation_cmd v2_cmd) return SPECTRE_V2_USER_CMD_AUTO; } -static inline bool spectre_v2_in_eibrs_mode(enum spectre_v2_mitigation mode) +static inline bool spectre_v2_in_ibrs_mode(enum spectre_v2_mitigation mode) { - return (mode == SPECTRE_V2_EIBRS || - mode == SPECTRE_V2_EIBRS_RETPOLINE || - mode == SPECTRE_V2_EIBRS_LFENCE); + return mode == SPECTRE_V2_IBRS || + mode == SPECTRE_V2_EIBRS || + mode == SPECTRE_V2_EIBRS_RETPOLINE || + mode == SPECTRE_V2_EIBRS_LFENCE; } static void __init -spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd) +spectre_v2_user_select_mitigation(void) { enum spectre_v2_user_mitigation mode = SPECTRE_V2_USER_NONE; bool smt_possible = IS_ENABLED(CONFIG_SMP); @@ -874,7 +997,7 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd) cpu_smt_control == CPU_SMT_NOT_SUPPORTED) smt_possible = false; - cmd = spectre_v2_parse_user_cmdline(v2_cmd); + cmd = spectre_v2_parse_user_cmdline(); switch (cmd) { case SPECTRE_V2_USER_CMD_NONE: goto set_mode; @@ -922,12 +1045,12 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd) } /* - * If no STIBP, enhanced IBRS is enabled or SMT impossible, STIBP is not - * required. + * If no STIBP, IBRS or enhanced IBRS is enabled, or SMT impossible, + * STIBP is not required. */ if (!boot_cpu_has(X86_FEATURE_STIBP) || !smt_possible || - spectre_v2_in_eibrs_mode(spectre_v2_enabled)) + spectre_v2_in_ibrs_mode(spectre_v2_enabled)) return; /* @@ -952,6 +1075,7 @@ static const char * const spectre_v2_strings[] = { [SPECTRE_V2_EIBRS] = "Mitigation: Enhanced IBRS", [SPECTRE_V2_EIBRS_LFENCE] = "Mitigation: Enhanced IBRS + LFENCE", [SPECTRE_V2_EIBRS_RETPOLINE] = "Mitigation: Enhanced IBRS + Retpolines", + [SPECTRE_V2_IBRS] = "Mitigation: IBRS", }; static const struct { @@ -969,6 +1093,7 @@ static const struct { { "eibrs,lfence", SPECTRE_V2_CMD_EIBRS_LFENCE, false }, { "eibrs,retpoline", SPECTRE_V2_CMD_EIBRS_RETPOLINE, false }, { "auto", SPECTRE_V2_CMD_AUTO, false }, + { "ibrs", SPECTRE_V2_CMD_IBRS, false }, }; static void __init spec_v2_print_cond(const char *reason, bool secure) @@ -1031,6 +1156,24 @@ static enum spectre_v2_mitigation_cmd __init spectre_v2_parse_cmdline(void) return SPECTRE_V2_CMD_AUTO; } + if (cmd == SPECTRE_V2_CMD_IBRS && boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) { + pr_err("%s selected but not Intel CPU. Switching to AUTO select\n", + mitigation_options[i].option); + return SPECTRE_V2_CMD_AUTO; + } + + if (cmd == SPECTRE_V2_CMD_IBRS && !boot_cpu_has(X86_FEATURE_IBRS)) { + pr_err("%s selected but CPU doesn't have IBRS. Switching to AUTO select\n", + mitigation_options[i].option); + return SPECTRE_V2_CMD_AUTO; + } + + if (cmd == SPECTRE_V2_CMD_IBRS && boot_cpu_has(X86_FEATURE_XENPV)) { + pr_err("%s selected but running as XenPV guest. Switching to AUTO select\n", + mitigation_options[i].option); + return SPECTRE_V2_CMD_AUTO; + } + spec_v2_print_cond(mitigation_options[i].option, mitigation_options[i].secure); return cmd; @@ -1046,6 +1189,22 @@ static enum spectre_v2_mitigation __init spectre_v2_select_retpoline(void) return SPECTRE_V2_RETPOLINE; } +/* Disable in-kernel use of non-RSB RET predictors */ +static void __init spec_ctrl_disable_kernel_rrsba(void) +{ + u64 ia32_cap; + + if (!boot_cpu_has(X86_FEATURE_RRSBA_CTRL)) + return; + + ia32_cap = x86_read_arch_cap_msr(); + + if (ia32_cap & ARCH_CAP_RRSBA) { + x86_spec_ctrl_base |= SPEC_CTRL_RRSBA_DIS_S; + update_spec_ctrl(x86_spec_ctrl_base); + } +} + static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_mitigation mode) { /* @@ -1070,19 +1229,24 @@ static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_ */ switch (mode) { case SPECTRE_V2_NONE: - /* These modes already fill RSB at vmexit */ - case SPECTRE_V2_LFENCE: - case SPECTRE_V2_RETPOLINE: - case SPECTRE_V2_EIBRS_RETPOLINE: return; case SPECTRE_V2_EIBRS_LFENCE: case SPECTRE_V2_EIBRS: - if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) { + if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB) && + (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)) { setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT_LITE); pr_info("Spectre v2 / PBRSB-eIBRS: Retire a single CALL on VMEXIT\n"); } return; + + case SPECTRE_V2_EIBRS_RETPOLINE: + case SPECTRE_V2_RETPOLINE: + case SPECTRE_V2_LFENCE: + case SPECTRE_V2_IBRS: + setup_force_cpu_cap(X86_FEATURE_RSB_VMEXIT); + pr_info("Spectre v2 / SpectreRSB : Filling RSB on VMEXIT\n"); + return; } pr_warn_once("Unknown Spectre v2 mode, disabling RSB mitigation at VM exit"); @@ -1113,6 +1277,14 @@ static void __init spectre_v2_select_mitigation(void) break; } + if (boot_cpu_has_bug(X86_BUG_RETBLEED) && + retbleed_cmd != RETBLEED_CMD_OFF && + boot_cpu_has(X86_FEATURE_IBRS) && + boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) { + mode = SPECTRE_V2_IBRS; + break; + } + mode = spectre_v2_select_retpoline(); break; @@ -1129,6 +1301,10 @@ static void __init spectre_v2_select_mitigation(void) mode = spectre_v2_select_retpoline(); break; + case SPECTRE_V2_CMD_IBRS: + mode = SPECTRE_V2_IBRS; + break; + case SPECTRE_V2_CMD_EIBRS: mode = SPECTRE_V2_EIBRS; break; @@ -1145,10 +1321,9 @@ static void __init spectre_v2_select_mitigation(void) if (mode == SPECTRE_V2_EIBRS && unprivileged_ebpf_enabled()) pr_err(SPECTRE_V2_EIBRS_EBPF_MSG); - if (spectre_v2_in_eibrs_mode(mode)) { - /* Force it so VMEXIT will restore correctly */ + if (spectre_v2_in_ibrs_mode(mode)) { x86_spec_ctrl_base |= SPEC_CTRL_IBRS; - wrmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base); + update_spec_ctrl(x86_spec_ctrl_base); } switch (mode) { @@ -1156,6 +1331,12 @@ static void __init spectre_v2_select_mitigation(void) case SPECTRE_V2_EIBRS: break; + case SPECTRE_V2_IBRS: + setup_force_cpu_cap(X86_FEATURE_KERNEL_IBRS); + if (boot_cpu_has(X86_FEATURE_IBRS_ENHANCED)) + pr_warn(SPECTRE_V2_IBRS_PERF_MSG); + break; + case SPECTRE_V2_LFENCE: case SPECTRE_V2_EIBRS_LFENCE: setup_force_cpu_cap(X86_FEATURE_RETPOLINE_LFENCE); @@ -1167,16 +1348,56 @@ static void __init spectre_v2_select_mitigation(void) break; } + /* + * Disable alternate RSB predictions in kernel when indirect CALLs and + * JMPs gets protection against BHI and Intramode-BTI, but RET + * prediction from a non-RSB predictor is still a risk. + */ + if (mode == SPECTRE_V2_EIBRS_LFENCE || + mode == SPECTRE_V2_EIBRS_RETPOLINE || + mode == SPECTRE_V2_RETPOLINE) + spec_ctrl_disable_kernel_rrsba(); + spectre_v2_enabled = mode; pr_info("%s\n", spectre_v2_strings[mode]); /* - * If spectre v2 protection has been enabled, unconditionally fill - * RSB during a context switch; this protects against two independent - * issues: + * If Spectre v2 protection has been enabled, fill the RSB during a + * context switch. In general there are two types of RSB attacks + * across context switches, for which the CALLs/RETs may be unbalanced. + * + * 1) RSB underflow + * + * Some Intel parts have "bottomless RSB". When the RSB is empty, + * speculated return targets may come from the branch predictor, + * which could have a user-poisoned BTB or BHB entry. + * + * AMD has it even worse: *all* returns are speculated from the BTB, + * regardless of the state of the RSB. + * + * When IBRS or eIBRS is enabled, the "user -> kernel" attack + * scenario is mitigated by the IBRS branch prediction isolation + * properties, so the RSB buffer filling wouldn't be necessary to + * protect against this type of attack. + * + * The "user -> user" attack scenario is mitigated by RSB filling. * - * - RSB underflow (and switch to BTB) on Skylake+ - * - SpectreRSB variant of spectre v2 on X86_BUG_SPECTRE_V2 CPUs + * 2) Poisoned RSB entry + * + * If the 'next' in-kernel return stack is shorter than 'prev', + * 'next' could be tricked into speculating with a user-poisoned RSB + * entry. + * + * The "user -> kernel" attack scenario is mitigated by SMEP and + * eIBRS. + * + * The "user -> user" scenario, also known as SpectreBHB, requires + * RSB clearing. + * + * So to mitigate all cases, unconditionally fill RSB on context + * switches. + * + * FIXME: Is this pointless for retbleed-affected AMD? */ setup_force_cpu_cap(X86_FEATURE_RSB_CTXSW); pr_info("Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch\n"); @@ -1184,28 +1405,29 @@ static void __init spectre_v2_select_mitigation(void) spectre_v2_determine_rsb_fill_type_at_vmexit(mode); /* - * Retpoline means the kernel is safe because it has no indirect - * branches. Enhanced IBRS protects firmware too, so, enable restricted - * speculation around firmware calls only when Enhanced IBRS isn't - * supported. + * Retpoline protects the kernel, but doesn't protect firmware. IBRS + * and Enhanced IBRS protect firmware too, so enable IBRS around + * firmware calls only when IBRS / Enhanced IBRS aren't otherwise + * enabled. * * Use "mode" to check Enhanced IBRS instead of boot_cpu_has(), because * the user might select retpoline on the kernel command line and if * the CPU supports Enhanced IBRS, kernel might un-intentionally not * enable IBRS around firmware calls. */ - if (boot_cpu_has(X86_FEATURE_IBRS) && !spectre_v2_in_eibrs_mode(mode)) { + if (boot_cpu_has(X86_FEATURE_IBRS) && !spectre_v2_in_ibrs_mode(mode)) { setup_force_cpu_cap(X86_FEATURE_USE_IBRS_FW); pr_info("Enabling Restricted Speculation for firmware calls\n"); } /* Set up IBPB and STIBP depending on the general spectre V2 command */ - spectre_v2_user_select_mitigation(cmd); + spectre_v2_cmd = cmd; } static void update_stibp_msr(void * __unused) { - wrmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base); + u64 val = spec_ctrl_current() | (x86_spec_ctrl_base & SPEC_CTRL_STIBP); + update_spec_ctrl(val); } /* Update x86_spec_ctrl_base in case SMT state changed. */ @@ -1422,16 +1644,6 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void) } /* - * If SSBD is controlled by the SPEC_CTRL MSR, then set the proper - * bit in the mask to allow guests to use the mitigation even in the - * case where the host does not enable it. - */ - if (static_cpu_has(X86_FEATURE_SPEC_CTRL_SSBD) || - static_cpu_has(X86_FEATURE_AMD_SSBD)) { - x86_spec_ctrl_mask |= SPEC_CTRL_SSBD; - } - - /* * We have three CPU feature flags that are in play here: * - X86_BUG_SPEC_STORE_BYPASS - CPU is susceptible. * - X86_FEATURE_SSBD - CPU is able to turn off speculative store bypass @@ -1448,7 +1660,7 @@ static enum ssb_mitigation __init __ssb_select_mitigation(void) x86_amd_ssb_disable(); } else { x86_spec_ctrl_base |= SPEC_CTRL_SSBD; - wrmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base); + update_spec_ctrl(x86_spec_ctrl_base); } } @@ -1653,7 +1865,7 @@ int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which) void x86_spec_ctrl_setup_ap(void) { if (boot_cpu_has(X86_FEATURE_MSR_SPEC_CTRL)) - wrmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base); + update_spec_ctrl(x86_spec_ctrl_base); if (ssb_mode == SPEC_STORE_BYPASS_DISABLE) x86_amd_ssb_disable(); @@ -1888,7 +2100,7 @@ static ssize_t mmio_stale_data_show_state(char *buf) static char *stibp_state(void) { - if (spectre_v2_in_eibrs_mode(spectre_v2_enabled)) + if (spectre_v2_in_ibrs_mode(spectre_v2_enabled)) return ""; switch (spectre_v2_user_stibp) { @@ -1922,7 +2134,7 @@ static char *pbrsb_eibrs_state(void) { if (boot_cpu_has_bug(X86_BUG_EIBRS_PBRSB)) { if (boot_cpu_has(X86_FEATURE_RSB_VMEXIT_LITE) || - boot_cpu_has(X86_FEATURE_RETPOLINE)) + boot_cpu_has(X86_FEATURE_RSB_VMEXIT)) return ", PBRSB-eIBRS: SW sequence"; else return ", PBRSB-eIBRS: Vulnerable"; @@ -1958,6 +2170,11 @@ static ssize_t srbds_show_state(char *buf) return sprintf(buf, "%s\n", srbds_strings[srbds_mitigation]); } +static ssize_t retbleed_show_state(char *buf) +{ + return sprintf(buf, "%s\n", retbleed_strings[retbleed_mitigation]); +} + static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr, char *buf, unsigned int bug) { @@ -2004,6 +2221,9 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr case X86_BUG_MMIO_UNKNOWN: return mmio_stale_data_show_state(buf); + case X86_BUG_RETBLEED: + return retbleed_show_state(buf); + default: break; } @@ -2063,4 +2283,9 @@ ssize_t cpu_show_mmio_stale_data(struct device *dev, struct device_attribute *at else return cpu_show_common(dev, attr, buf, X86_BUG_MMIO_STALE_DATA); } + +ssize_t cpu_show_retbleed(struct device *dev, struct device_attribute *attr, char *buf) +{ + return cpu_show_common(dev, attr, buf, X86_BUG_RETBLEED); +} #endif diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index d1ff35b8c979..9f0ac012be5a 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -954,8 +954,8 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c) #define MSBDS_ONLY BIT(5) #define NO_SWAPGS BIT(6) #define NO_ITLB_MULTIHIT BIT(7) -#define NO_EIBRS_PBRSB BIT(8) -#define NO_MMIO BIT(9) +#define NO_MMIO BIT(8) +#define NO_EIBRS_PBRSB BIT(9) #define VULNWL(_vendor, _family, _model, _whitelist) \ { X86_VENDOR_##_vendor, _family, _model, X86_FEATURE_ANY, _whitelist } @@ -1022,48 +1022,55 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = { {} }; +#define VULNBL(vendor, family, model, blacklist) \ + X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, blacklist) + #define VULNBL_INTEL_STEPPINGS(model, steppings, issues) \ X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(INTEL, 6, \ INTEL_FAM6_##model, steppings, \ X86_FEATURE_ANY, issues) +#define VULNBL_AMD(family, blacklist) \ + VULNBL(AMD, family, X86_MODEL_ANY, blacklist) + #define SRBDS BIT(0) /* CPU is affected by X86_BUG_MMIO_STALE_DATA */ #define MMIO BIT(1) /* CPU is affected by Shared Buffers Data Sampling (SBDS), a variant of X86_BUG_MMIO_STALE_DATA */ #define MMIO_SBDS BIT(2) +/* CPU is affected by RETbleed, speculating where you would not expect it */ +#define RETBLEED BIT(3) static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = { VULNBL_INTEL_STEPPINGS(IVYBRIDGE, X86_STEPPING_ANY, SRBDS), VULNBL_INTEL_STEPPINGS(HASWELL_CORE, X86_STEPPING_ANY, SRBDS), VULNBL_INTEL_STEPPINGS(HASWELL_ULT, X86_STEPPING_ANY, SRBDS), VULNBL_INTEL_STEPPINGS(HASWELL_GT3E, X86_STEPPING_ANY, SRBDS), - VULNBL_INTEL_STEPPINGS(HASWELL_X, BIT(2) | BIT(4), MMIO), - VULNBL_INTEL_STEPPINGS(BROADWELL_XEON_D,X86_STEPPINGS(0x3, 0x5), MMIO), + VULNBL_INTEL_STEPPINGS(HASWELL_X, X86_STEPPING_ANY, MMIO), + VULNBL_INTEL_STEPPINGS(BROADWELL_XEON_D,X86_STEPPING_ANY, MMIO), VULNBL_INTEL_STEPPINGS(BROADWELL_GT3E, X86_STEPPING_ANY, SRBDS), VULNBL_INTEL_STEPPINGS(BROADWELL_X, X86_STEPPING_ANY, MMIO), VULNBL_INTEL_STEPPINGS(BROADWELL_CORE, X86_STEPPING_ANY, SRBDS), - VULNBL_INTEL_STEPPINGS(SKYLAKE_MOBILE, X86_STEPPINGS(0x3, 0x3), SRBDS | MMIO), - VULNBL_INTEL_STEPPINGS(SKYLAKE_MOBILE, X86_STEPPING_ANY, SRBDS), - VULNBL_INTEL_STEPPINGS(SKYLAKE_X, BIT(3) | BIT(4) | BIT(6) | - BIT(7) | BIT(0xB), MMIO), - VULNBL_INTEL_STEPPINGS(SKYLAKE_DESKTOP, X86_STEPPINGS(0x3, 0x3), SRBDS | MMIO), - VULNBL_INTEL_STEPPINGS(SKYLAKE_DESKTOP, X86_STEPPING_ANY, SRBDS), - VULNBL_INTEL_STEPPINGS(KABYLAKE_MOBILE, X86_STEPPINGS(0x9, 0xC), SRBDS | MMIO), - VULNBL_INTEL_STEPPINGS(KABYLAKE_MOBILE, X86_STEPPINGS(0x0, 0x8), SRBDS), - VULNBL_INTEL_STEPPINGS(KABYLAKE_DESKTOP,X86_STEPPINGS(0x9, 0xD), SRBDS | MMIO), - VULNBL_INTEL_STEPPINGS(KABYLAKE_DESKTOP,X86_STEPPINGS(0x0, 0x8), SRBDS), - VULNBL_INTEL_STEPPINGS(ICELAKE_MOBILE, X86_STEPPINGS(0x5, 0x5), MMIO | MMIO_SBDS), - VULNBL_INTEL_STEPPINGS(ICELAKE_XEON_D, X86_STEPPINGS(0x1, 0x1), MMIO), - VULNBL_INTEL_STEPPINGS(ICELAKE_X, X86_STEPPINGS(0x4, 0x6), MMIO), - VULNBL_INTEL_STEPPINGS(COMETLAKE, BIT(2) | BIT(3) | BIT(5), MMIO | MMIO_SBDS), - VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPINGS(0x1, 0x1), MMIO | MMIO_SBDS), - VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPINGS(0x0, 0x0), MMIO), - VULNBL_INTEL_STEPPINGS(LAKEFIELD, X86_STEPPINGS(0x1, 0x1), MMIO | MMIO_SBDS), - VULNBL_INTEL_STEPPINGS(ROCKETLAKE, X86_STEPPINGS(0x1, 0x1), MMIO), - VULNBL_INTEL_STEPPINGS(ATOM_TREMONT, X86_STEPPINGS(0x1, 0x1), MMIO | MMIO_SBDS), + VULNBL_INTEL_STEPPINGS(SKYLAKE_MOBILE, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(SKYLAKE_X, X86_STEPPING_ANY, MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(SKYLAKE_DESKTOP, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(KABYLAKE_MOBILE, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(KABYLAKE_DESKTOP,X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(CANNONLAKE_MOBILE,X86_STEPPING_ANY, RETBLEED), + VULNBL_INTEL_STEPPINGS(ICELAKE_MOBILE, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED), + VULNBL_INTEL_STEPPINGS(ICELAKE_XEON_D, X86_STEPPING_ANY, MMIO), + VULNBL_INTEL_STEPPINGS(ICELAKE_X, X86_STEPPING_ANY, MMIO), + VULNBL_INTEL_STEPPINGS(COMETLAKE, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED), + VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED), + VULNBL_INTEL_STEPPINGS(LAKEFIELD, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED), + VULNBL_INTEL_STEPPINGS(ROCKETLAKE, X86_STEPPING_ANY, MMIO | RETBLEED), + VULNBL_INTEL_STEPPINGS(ATOM_TREMONT, X86_STEPPING_ANY, MMIO | MMIO_SBDS), VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_X, X86_STEPPING_ANY, MMIO), - VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_L, X86_STEPPINGS(0x0, 0x0), MMIO | MMIO_SBDS), + VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_L, X86_STEPPING_ANY, MMIO | MMIO_SBDS), + + VULNBL_AMD(0x15, RETBLEED), + VULNBL_AMD(0x16, RETBLEED), + VULNBL_AMD(0x17, RETBLEED), {} }; @@ -1169,6 +1176,11 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) setup_force_cpu_bug(X86_BUG_MMIO_UNKNOWN); } + if (!cpu_has(c, X86_FEATURE_BTC_NO)) { + if (cpu_matches(cpu_vuln_blacklist, RETBLEED) || (ia32_cap & ARCH_CAP_RSBA)) + setup_force_cpu_bug(X86_BUG_RETBLEED); + } + if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) && !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) && !(ia32_cap & ARCH_CAP_PBRSB_NO)) diff --git a/arch/x86/kernel/cpu/match.c b/arch/x86/kernel/cpu/match.c index 751e59057466..ad6776081e60 100644 --- a/arch/x86/kernel/cpu/match.c +++ b/arch/x86/kernel/cpu/match.c @@ -16,12 +16,17 @@ * respective wildcard entries. * * A typical table entry would be to match a specific CPU - * { X86_VENDOR_INTEL, 6, 0x12 } - * or to match a specific CPU feature - * { X86_FEATURE_MATCH(X86_FEATURE_FOOBAR) } + * + * X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_BROADWELL, + * X86_FEATURE_ANY, NULL); * * Fields can be wildcarded with %X86_VENDOR_ANY, %X86_FAMILY_ANY, - * %X86_MODEL_ANY, %X86_FEATURE_ANY or 0 (except for vendor) + * %X86_MODEL_ANY, %X86_FEATURE_ANY (except for vendor) + * + * asm/cpu_device_id.h contains a set of useful macros which are shortcuts + * for various common selections. The above can be shortened to: + * + * X86_MATCH_INTEL_FAM6_MODEL(BROADWELL, NULL); * * Arrays used to match for this should also be declared using * MODULE_DEVICE_TABLE(x86cpu, ...) @@ -53,3 +58,34 @@ const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match) return NULL; } EXPORT_SYMBOL(x86_match_cpu); + +static const struct x86_cpu_desc * +x86_match_cpu_with_stepping(const struct x86_cpu_desc *match) +{ + struct cpuinfo_x86 *c = &boot_cpu_data; + const struct x86_cpu_desc *m; + + for (m = match; m->x86_family | m->x86_model; m++) { + if (c->x86_vendor != m->x86_vendor) + continue; + if (c->x86 != m->x86_family) + continue; + if (c->x86_model != m->x86_model) + continue; + if (c->x86_stepping != m->x86_stepping) + continue; + return m; + } + return NULL; +} + +bool x86_cpu_has_min_microcode_rev(const struct x86_cpu_desc *table) +{ + const struct x86_cpu_desc *res = x86_match_cpu_with_stepping(table); + + if (!res || res->x86_microcode_rev > boot_cpu_data.microcode) + return false; + + return true; +} +EXPORT_SYMBOL_GPL(x86_cpu_has_min_microcode_rev); diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index a4e7e100ed26..8396c77e9323 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -222,7 +222,13 @@ apply_microcode_early_amd(u32 cpuid_1_eax, void *ucode, size_t size, bool save_p return ret; native_rdmsr(MSR_AMD64_PATCH_LEVEL, rev, dummy); - if (rev >= mc->hdr.patch_id) + + /* + * Allow application of the same revision to pick up SMT-specific + * changes even if the revision of the other SMT thread is already + * up-to-date. + */ + if (rev > mc->hdr.patch_id) return ret; if (!__apply_microcode_amd(mc)) { @@ -304,8 +310,12 @@ void load_ucode_amd_ap(unsigned int cpuid_1_eax) native_rdmsr(MSR_AMD64_PATCH_LEVEL, rev, dummy); - /* Check whether we have saved a new patch already: */ - if (*new_rev && rev < mc->hdr.patch_id) { + /* + * Check whether a new patch has been saved already. Also, allow application of + * the same revision in order to pick up SMT-thread-specific configuration even + * if the sibling SMT thread already has an up-to-date revision. + */ + if (*new_rev && rev <= mc->hdr.patch_id) { if (!__apply_microcode_amd(mc)) { *new_rev = mc->hdr.patch_id; return; diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index 5a52672e3f8b..90bd155d7e7a 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c @@ -21,6 +21,7 @@ struct cpuid_bit { static const struct cpuid_bit cpuid_bits[] = { { X86_FEATURE_APERFMPERF, CPUID_ECX, 0, 0x00000006, 0 }, { X86_FEATURE_EPB, CPUID_ECX, 3, 0x00000006, 0 }, + { X86_FEATURE_RRSBA_CTRL, CPUID_EDX, 2, 0x00000007, 2 }, { X86_FEATURE_CQM_LLC, CPUID_EDX, 1, 0x0000000f, 0 }, { X86_FEATURE_CQM_OCCUP_LLC, CPUID_EDX, 0, 0x0000000f, 1 }, { X86_FEATURE_CQM_MBM_TOTAL, CPUID_EDX, 1, 0x0000000f, 1 }, diff --git a/arch/x86/kernel/cpu/tsx.c b/arch/x86/kernel/cpu/tsx.c index 032509adf9de..88a553ee7704 100644 --- a/arch/x86/kernel/cpu/tsx.c +++ b/arch/x86/kernel/cpu/tsx.c @@ -55,24 +55,6 @@ void tsx_enable(void) wrmsrl(MSR_IA32_TSX_CTRL, tsx); } -static bool __init tsx_ctrl_is_supported(void) -{ - u64 ia32_cap = x86_read_arch_cap_msr(); - - /* - * TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this - * MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. - * - * TSX control (aka MSR_IA32_TSX_CTRL) is only available after a - * microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES - * bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get - * MSR_IA32_TSX_CTRL support even after a microcode update. Thus, - * tsx= cmdline requests will do nothing on CPUs without - * MSR_IA32_TSX_CTRL support. - */ - return !!(ia32_cap & ARCH_CAP_TSX_CTRL_MSR); -} - static enum tsx_ctrl_states x86_get_tsx_auto_mode(void) { if (boot_cpu_has_bug(X86_BUG_TAA)) @@ -86,9 +68,22 @@ void __init tsx_init(void) char arg[5] = {}; int ret; - if (!tsx_ctrl_is_supported()) + /* + * TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this + * MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. + * + * TSX control (aka MSR_IA32_TSX_CTRL) is only available after a + * microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES + * bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get + * MSR_IA32_TSX_CTRL support even after a microcode update. Thus, + * tsx= cmdline requests will do nothing on CPUs without + * MSR_IA32_TSX_CTRL support. + */ + if (!(x86_read_arch_cap_msr() & ARCH_CAP_TSX_CTRL_MSR)) return; + setup_force_cpu_cap(X86_FEATURE_MSR_TSX_CTRL); + ret = cmdline_find_option(boot_command_line, "tsx", arg, sizeof(arg)); if (ret >= 0) { if (!strcmp(arg, "on")) { diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index cd138bfd926c..e8d40a5979ec 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -434,7 +434,7 @@ static __always_inline void __speculation_ctrl_update(unsigned long tifp, } if (updmsr) - wrmsrl(MSR_IA32_SPEC_CTRL, msr); + update_spec_ctrl_cond(msr); } static unsigned long speculation_ctrl_update_tif(struct task_struct *tsk) diff --git a/arch/x86/kernel/unwind_orc.c b/arch/x86/kernel/unwind_orc.c index 5c48d2c4cabe..0c0f0eda327d 100644 --- a/arch/x86/kernel/unwind_orc.c +++ b/arch/x86/kernel/unwind_orc.c @@ -668,7 +668,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task, /* Otherwise, skip ahead to the user-specified starting frame: */ while (!unwind_done(state) && (!on_stack(&state->stack_info, first_frame, sizeof(long)) || - state->sp < (unsigned long)first_frame)) + state->sp <= (unsigned long)first_frame)) unwind_next_frame(state); return; diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 0489ffc3dfe5..768a765c49b0 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -680,6 +680,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, g_phys_as = phys_as; entry->eax = g_phys_as | (virt_as << 8); + entry->ecx &= ~(GENMASK(31, 16) | GENMASK(11, 8)); entry->edx = 0; /* * IBRS, IBPB and VIRT_SSBD aren't necessarily present in diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 25bdd06969b3..0cb75d29e67b 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -759,8 +759,7 @@ static int linearize(struct x86_emulate_ctxt *ctxt, ctxt->mode, linear); } -static inline int assign_eip(struct x86_emulate_ctxt *ctxt, ulong dst, - enum x86emul_mode mode) +static inline int assign_eip(struct x86_emulate_ctxt *ctxt, ulong dst) { ulong linear; int rc; @@ -770,41 +769,71 @@ static inline int assign_eip(struct x86_emulate_ctxt *ctxt, ulong dst, if (ctxt->op_bytes != sizeof(unsigned long)) addr.ea = dst & ((1UL << (ctxt->op_bytes << 3)) - 1); - rc = __linearize(ctxt, addr, &max_size, 1, false, true, mode, &linear); + rc = __linearize(ctxt, addr, &max_size, 1, false, true, ctxt->mode, &linear); if (rc == X86EMUL_CONTINUE) ctxt->_eip = addr.ea; return rc; } +static inline int emulator_recalc_and_set_mode(struct x86_emulate_ctxt *ctxt) +{ + u64 efer; + struct desc_struct cs; + u16 selector; + u32 base3; + + ctxt->ops->get_msr(ctxt, MSR_EFER, &efer); + + if (!(ctxt->ops->get_cr(ctxt, 0) & X86_CR0_PE)) { + /* Real mode. cpu must not have long mode active */ + if (efer & EFER_LMA) + return X86EMUL_UNHANDLEABLE; + ctxt->mode = X86EMUL_MODE_REAL; + return X86EMUL_CONTINUE; + } + + if (ctxt->eflags & X86_EFLAGS_VM) { + /* Protected/VM86 mode. cpu must not have long mode active */ + if (efer & EFER_LMA) + return X86EMUL_UNHANDLEABLE; + ctxt->mode = X86EMUL_MODE_VM86; + return X86EMUL_CONTINUE; + } + + if (!ctxt->ops->get_segment(ctxt, &selector, &cs, &base3, VCPU_SREG_CS)) + return X86EMUL_UNHANDLEABLE; + + if (efer & EFER_LMA) { + if (cs.l) { + /* Proper long mode */ + ctxt->mode = X86EMUL_MODE_PROT64; + } else if (cs.d) { + /* 32 bit compatibility mode*/ + ctxt->mode = X86EMUL_MODE_PROT32; + } else { + ctxt->mode = X86EMUL_MODE_PROT16; + } + } else { + /* Legacy 32 bit / 16 bit mode */ + ctxt->mode = cs.d ? X86EMUL_MODE_PROT32 : X86EMUL_MODE_PROT16; + } + + return X86EMUL_CONTINUE; +} + static inline int assign_eip_near(struct x86_emulate_ctxt *ctxt, ulong dst) { - return assign_eip(ctxt, dst, ctxt->mode); + return assign_eip(ctxt, dst); } -static int assign_eip_far(struct x86_emulate_ctxt *ctxt, ulong dst, - const struct desc_struct *cs_desc) +static int assign_eip_far(struct x86_emulate_ctxt *ctxt, ulong dst) { - enum x86emul_mode mode = ctxt->mode; - int rc; + int rc = emulator_recalc_and_set_mode(ctxt); -#ifdef CONFIG_X86_64 - if (ctxt->mode >= X86EMUL_MODE_PROT16) { - if (cs_desc->l) { - u64 efer = 0; + if (rc != X86EMUL_CONTINUE) + return rc; - ctxt->ops->get_msr(ctxt, MSR_EFER, &efer); - if (efer & EFER_LMA) - mode = X86EMUL_MODE_PROT64; - } else - mode = X86EMUL_MODE_PROT32; /* temporary value */ - } -#endif - if (mode == X86EMUL_MODE_PROT16 || mode == X86EMUL_MODE_PROT32) - mode = cs_desc->d ? X86EMUL_MODE_PROT32 : X86EMUL_MODE_PROT16; - rc = assign_eip(ctxt, dst, mode); - if (rc == X86EMUL_CONTINUE) - ctxt->mode = mode; - return rc; + return assign_eip(ctxt, dst); } static inline int jmp_rel(struct x86_emulate_ctxt *ctxt, int rel) @@ -1975,7 +2004,7 @@ static int em_pop_sreg(struct x86_emulate_ctxt *ctxt) if (rc != X86EMUL_CONTINUE) return rc; - if (ctxt->modrm_reg == VCPU_SREG_SS) + if (seg == VCPU_SREG_SS) ctxt->interruptibility = KVM_X86_SHADOW_INT_MOV_SS; if (ctxt->op_bytes > 2) rsp_increment(ctxt, ctxt->op_bytes - 2); @@ -2192,7 +2221,7 @@ static int em_jmp_far(struct x86_emulate_ctxt *ctxt) if (rc != X86EMUL_CONTINUE) return rc; - rc = assign_eip_far(ctxt, ctxt->src.val, &new_desc); + rc = assign_eip_far(ctxt, ctxt->src.val); /* Error handling is not implemented. */ if (rc != X86EMUL_CONTINUE) return X86EMUL_UNHANDLEABLE; @@ -2273,7 +2302,7 @@ static int em_ret_far(struct x86_emulate_ctxt *ctxt) &new_desc); if (rc != X86EMUL_CONTINUE) return rc; - rc = assign_eip_far(ctxt, eip, &new_desc); + rc = assign_eip_far(ctxt, eip); /* Error handling is not implemented. */ if (rc != X86EMUL_CONTINUE) return X86EMUL_UNHANDLEABLE; @@ -2895,6 +2924,7 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS); ctxt->_eip = rdx; + ctxt->mode = usermode; *reg_write(ctxt, VCPU_REGS_RSP) = rcx; return X86EMUL_CONTINUE; @@ -3491,7 +3521,7 @@ static int em_call_far(struct x86_emulate_ctxt *ctxt) if (rc != X86EMUL_CONTINUE) return rc; - rc = assign_eip_far(ctxt, ctxt->src.val, &new_desc); + rc = assign_eip_far(ctxt, ctxt->src.val); if (rc != X86EMUL_CONTINUE) goto fail; @@ -3638,11 +3668,25 @@ static int em_movbe(struct x86_emulate_ctxt *ctxt) static int em_cr_write(struct x86_emulate_ctxt *ctxt) { - if (ctxt->ops->set_cr(ctxt, ctxt->modrm_reg, ctxt->src.val)) + int cr_num = ctxt->modrm_reg; + int r; + + if (ctxt->ops->set_cr(ctxt, cr_num, ctxt->src.val)) return emulate_gp(ctxt, 0); /* Disable writeback. */ ctxt->dst.type = OP_NONE; + + if (cr_num == 0) { + /* + * CR0 write might have updated CR0.PE and/or CR0.PG + * which can affect the cpu's execution mode. + */ + r = emulator_recalc_and_set_mode(ctxt); + if (r != X86EMUL_CONTINUE) + return r; + } + return X86EMUL_CONTINUE; } diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index e1492a67e988..cd3432df0d24 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -50,6 +50,7 @@ #include <asm/kvm_para.h> #include <asm/irq_remapping.h> #include <asm/spec-ctrl.h> +#include <asm/cpu_device_id.h> #include <asm/virtext.h> #include "trace.h" @@ -4154,9 +4155,9 @@ static int svm_get_msr_feature(struct kvm_msr_entry *msr) msr->data = 0; switch (msr->index) { - case MSR_F10H_DECFG: - if (boot_cpu_has(X86_FEATURE_LFENCE_RDTSC)) - msr->data |= MSR_F10H_DECFG_LFENCE_SERIALIZE; + case MSR_AMD64_DE_CFG: + if (cpu_feature_enabled(X86_FEATURE_LFENCE_RDTSC)) + msr->data |= MSR_AMD64_DE_CFG_LFENCE_SERIALIZE; break; default: return 1; @@ -4258,7 +4259,7 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data = 0x1E; } break; - case MSR_F10H_DECFG: + case MSR_AMD64_DE_CFG: msr_info->data = svm->msr_decfg; break; default: @@ -4445,7 +4446,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) case MSR_VM_IGNNE: vcpu_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data); break; - case MSR_F10H_DECFG: { + case MSR_AMD64_DE_CFG: { struct kvm_msr_entry msr_entry; msr_entry.index = msr->index; diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 20ce794584a3..9bb696d7300c 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -41,6 +41,7 @@ #include <asm/asm.h> #include <asm/cpu.h> +#include <asm/cpu_device_id.h> #include <asm/io.h> #include <asm/desc.h> #include <asm/vmx.h> @@ -2132,9 +2133,9 @@ static __always_inline void vmx_disable_fb_clear(struct vcpu_vmx *vmx) if (!vmx->disable_fb_clear) return; - rdmsrl(MSR_IA32_MCU_OPT_CTRL, msr); + msr = __rdmsr(MSR_IA32_MCU_OPT_CTRL); msr |= FB_CLEAR_DIS; - wrmsrl(MSR_IA32_MCU_OPT_CTRL, msr); + native_wrmsrl(MSR_IA32_MCU_OPT_CTRL, msr); /* Cache the MSR value to avoid reading it later */ vmx->msr_ia32_mcu_opt_ctrl = msr; } @@ -2145,7 +2146,7 @@ static __always_inline void vmx_enable_fb_clear(struct vcpu_vmx *vmx) return; vmx->msr_ia32_mcu_opt_ctrl &= ~FB_CLEAR_DIS; - wrmsrl(MSR_IA32_MCU_OPT_CTRL, vmx->msr_ia32_mcu_opt_ctrl); + native_wrmsrl(MSR_IA32_MCU_OPT_CTRL, vmx->msr_ia32_mcu_opt_ctrl); } static void vmx_update_fb_clear_dis(struct kvm_vcpu *vcpu, struct vcpu_vmx *vmx) @@ -10759,10 +10760,35 @@ static void vmx_update_hv_timer(struct kvm_vcpu *vcpu) vmx->loaded_vmcs->hv_timer_armed = false; } +u64 __always_inline vmx_spec_ctrl_restore_host(struct vcpu_vmx *vmx) +{ + u64 guestval, hostval = this_cpu_read(x86_spec_ctrl_current); + + if (!cpu_feature_enabled(X86_FEATURE_MSR_SPEC_CTRL)) + return 0; + + guestval = __rdmsr(MSR_IA32_SPEC_CTRL); + + /* + * + * For legacy IBRS, the IBRS bit always needs to be written after + * transitioning from a less privileged predictor mode, regardless of + * whether the guest/host values differ. + */ + if (cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS) || + guestval != hostval) + native_wrmsrl(MSR_IA32_SPEC_CTRL, hostval); + + barrier_nospec(); + + return guestval; +} + static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) { struct vcpu_vmx *vmx = to_vmx(vcpu); unsigned long cr3, cr4, evmcs_rsp; + u64 spec_ctrl; /* Record the guest's net vcpu time for enforced NMI injections. */ if (unlikely(!enable_vnmi && @@ -10988,9 +11014,24 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) #endif ); - /* Eliminate branch target predictions from guest mode */ + /* + * IMPORTANT: RSB filling and SPEC_CTRL handling must be done before + * the first unbalanced RET after vmexit! + * + * For retpoline or IBRS, RSB filling is needed to prevent poisoned RSB + * entries and (in some cases) RSB underflow. + * + * eIBRS has its own protection against poisoned RSB, so it doesn't + * need the RSB filling sequence. But it does need to be enabled, and a + * single call to retire, before the first unbalanced RET. + * + * So no RETs before vmx_spec_ctrl_restore_host() below. + */ vmexit_fill_RSB(); + /* Save this for below */ + spec_ctrl = vmx_spec_ctrl_restore_host(vmx); + vmx_enable_fb_clear(vmx); /* @@ -11009,9 +11050,7 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) * save it. */ if (unlikely(!msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL))) - vmx->spec_ctrl = native_read_msr(MSR_IA32_SPEC_CTRL); - - x86_spec_ctrl_restore_host(vmx->spec_ctrl, 0); + vmx->spec_ctrl = spec_ctrl; /* All fields are clean at this point */ if (static_branch_unlikely(&enable_evmcs)) @@ -13276,14 +13315,6 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12, */ vmcs12_save_pending_event(vcpu, vmcs12); } - - /* - * Drop what we picked up for L2 via vmx_complete_interrupts. It is - * preserved above and would only end up incorrectly in L1. - */ - vcpu->arch.nmi_injected = false; - kvm_clear_exception_queue(vcpu); - kvm_clear_interrupt_queue(vcpu); } /* @@ -13617,6 +13648,17 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason, nested_vmx_abort(vcpu, VMX_ABORT_SAVE_GUEST_MSR_FAIL); } + /* + * Drop events/exceptions that were queued for re-injection to L2 + * (picked up via vmx_complete_interrupts()), as well as exceptions + * that were pending for L2. Note, this must NOT be hoisted above + * prepare_vmcs12(), events/exceptions queued for re-injection need to + * be captured in vmcs12 (see vmcs12_save_pending_event()). + */ + vcpu->arch.nmi_injected = false; + kvm_clear_exception_queue(vcpu); + kvm_clear_interrupt_queue(vcpu); + vmx_switch_vmcs(vcpu, &vmx->vmcs01); vm_entry_controls_reset_shadow(vmx); vm_exit_controls_reset_shadow(vmx); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index be4697d91bb2..8fe615df8e5b 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1156,7 +1156,7 @@ static u32 msr_based_features[] = { MSR_IA32_VMX_EPT_VPID_CAP, MSR_IA32_VMX_VMFUNC, - MSR_F10H_DECFG, + MSR_AMD64_DE_CFG, MSR_IA32_UCODE_REV, MSR_IA32_ARCH_CAPABILITIES, }; @@ -9736,9 +9736,9 @@ void kvm_arch_end_assignment(struct kvm *kvm) } EXPORT_SYMBOL_GPL(kvm_arch_end_assignment); -bool kvm_arch_has_assigned_device(struct kvm *kvm) +bool noinstr kvm_arch_has_assigned_device(struct kvm *kvm) { - return atomic_read(&kvm->arch.assigned_device_count); + return arch_atomic_read(&kvm->arch.assigned_device_count); } EXPORT_SYMBOL_GPL(kvm_arch_has_assigned_device); diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index adc77904fc3e..7da9b427044c 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -171,9 +171,15 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, * Mappings have to be page-aligned */ offset = phys_addr & ~PAGE_MASK; - phys_addr &= PHYSICAL_PAGE_MASK; + phys_addr &= PAGE_MASK; size = PAGE_ALIGN(last_addr+1) - phys_addr; + /* + * Mask out any bits not part of the actual physical + * address, like memory encryption bits. + */ + phys_addr &= PHYSICAL_PAGE_MASK; + retval = reserve_memtype(phys_addr, (u64)phys_addr + size, pcm, &new_pcm); if (retval) { diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c index 794824948263..75cd943f03a7 100644 --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c @@ -527,15 +527,23 @@ static int pm_cpu_check(const struct x86_cpu_id *c) static void pm_save_spec_msr(void) { - u32 spec_msr_id[] = { - MSR_IA32_SPEC_CTRL, - MSR_IA32_TSX_CTRL, - MSR_TSX_FORCE_ABORT, - MSR_IA32_MCU_OPT_CTRL, - MSR_AMD64_LS_CFG, + struct msr_enumeration { + u32 msr_no; + u32 feature; + } msr_enum[] = { + { MSR_IA32_SPEC_CTRL, X86_FEATURE_MSR_SPEC_CTRL }, + { MSR_IA32_TSX_CTRL, X86_FEATURE_MSR_TSX_CTRL }, + { MSR_TSX_FORCE_ABORT, X86_FEATURE_TSX_FORCE_ABORT }, + { MSR_IA32_MCU_OPT_CTRL, X86_FEATURE_SRBDS_CTRL }, + { MSR_AMD64_LS_CFG, X86_FEATURE_LS_CFG_SSBD }, + { MSR_AMD64_DE_CFG, X86_FEATURE_LFENCE_RDTSC }, }; + int i; - msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id)); + for (i = 0; i < ARRAY_SIZE(msr_enum); i++) { + if (boot_cpu_has(msr_enum[i].feature)) + msr_build_context(&msr_enum[i].msr_no, 1); + } } static int pm_check_save_msr(void) diff --git a/arch/x86/um/shared/sysdep/syscalls_32.h b/arch/x86/um/shared/sysdep/syscalls_32.h index 68fd2cf526fd..f6e9f84397e7 100644 --- a/arch/x86/um/shared/sysdep/syscalls_32.h +++ b/arch/x86/um/shared/sysdep/syscalls_32.h @@ -6,10 +6,9 @@ #include <asm/unistd.h> #include <sysdep/ptrace.h> -typedef long syscall_handler_t(struct pt_regs); +typedef long syscall_handler_t(struct syscall_args); extern syscall_handler_t *sys_call_table[]; #define EXECUTE_SYSCALL(syscall, regs) \ - ((long (*)(struct syscall_args)) \ - (*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs)) + ((*sys_call_table[syscall]))(SYSCALL_ARGS(®s->regs)) diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c index 5bd949da7a4a..b69ab2409430 100644 --- a/arch/x86/um/tls_32.c +++ b/arch/x86/um/tls_32.c @@ -65,9 +65,6 @@ static int get_free_idx(struct task_struct* task) struct thread_struct *t = &task->thread; int idx; - if (!t->arch.tls_array) - return GDT_ENTRY_TLS_MIN; - for (idx = 0; idx < GDT_ENTRY_TLS_ENTRIES; idx++) if (!t->arch.tls_array[idx].present) return idx + GDT_ENTRY_TLS_MIN; @@ -242,9 +239,6 @@ static int get_tls_entry(struct task_struct *task, struct user_desc *info, { struct thread_struct *t = &task->thread; - if (!t->arch.tls_array) - goto clear; - if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX) return -EINVAL; diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index 87a3a3df7e30..781152b8ded8 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -416,6 +416,8 @@ static struct bfq_io_cq *bfq_bic_lookup(struct bfq_data *bfqd, */ void bfq_schedule_dispatch(struct bfq_data *bfqd) { + lockdep_assert_held(&bfqd->lock); + if (bfqd->queued != 0) { bfq_log(bfqd, "schedule dispatch"); blk_mq_run_hw_queues(bfqd->queue, true); @@ -5274,8 +5276,8 @@ bfq_idle_slice_timer_body(struct bfq_data *bfqd, struct bfq_queue *bfqq) bfq_bfqq_expire(bfqd, bfqq, true, reason); schedule_dispatch: - spin_unlock_irqrestore(&bfqd->lock, flags); bfq_schedule_dispatch(bfqd); + spin_unlock_irqrestore(&bfqd->lock, flags); } /* diff --git a/block/blk-mq.c b/block/blk-mq.c index ae70b4809bec..9c61d9c7383d 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2650,7 +2650,7 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, blk_mq_add_queue_tag_set(set, q); blk_mq_map_swqueue(q); - if (!(set->flags & BLK_MQ_F_NO_SCHED)) { + if (!(set->flags & (BLK_MQ_F_NO_SCHED | BLK_MQ_F_NO_SCHED_BY_DEFAULT))) { int ret; ret = elevator_init_mq(q); diff --git a/block/sed-opal.c b/block/sed-opal.c index 119640897293..9651c40e093a 100644 --- a/block/sed-opal.c +++ b/block/sed-opal.c @@ -94,8 +94,8 @@ struct opal_dev { u64 lowest_lba; size_t pos; - u8 cmd[IO_BUFFER_LENGTH]; - u8 resp[IO_BUFFER_LENGTH]; + u8 *cmd; + u8 *resp; struct parsed_resp parsed; size_t prev_d_len; @@ -2028,6 +2028,8 @@ void free_opal_dev(struct opal_dev *dev) if (!dev) return; clean_opal_dev(dev); + kfree(dev->resp); + kfree(dev->cmd); kfree(dev); } EXPORT_SYMBOL(free_opal_dev); @@ -2040,16 +2042,38 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) if (!dev) return NULL; + /* + * Presumably DMA-able buffers must be cache-aligned. Kmalloc makes + * sure the allocated buffer is DMA-safe in that regard. + */ + dev->cmd = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL); + if (!dev->cmd) + goto err_free_dev; + + dev->resp = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL); + if (!dev->resp) + goto err_free_cmd; + INIT_LIST_HEAD(&dev->unlk_lst); mutex_init(&dev->dev_lock); dev->data = data; dev->send_recv = send_recv; if (check_opal_support(dev) != 0) { pr_debug("Opal is not supported on this device\n"); - kfree(dev); - return NULL; + goto err_free_resp; } return dev; + +err_free_resp: + kfree(dev->resp); + +err_free_cmd: + kfree(dev->cmd); + +err_free_dev: + kfree(dev); + + return NULL; } EXPORT_SYMBOL(init_opal_dev); diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c index 943b1dc2d0b3..e05309bc41cc 100644 --- a/drivers/acpi/acpi_extlog.c +++ b/drivers/acpi/acpi_extlog.c @@ -13,6 +13,7 @@ #include <linux/ratelimit.h> #include <linux/edac.h> #include <linux/ras.h> +#include <acpi/ghes.h> #include <asm/cpu.h> #include <asm/mce.h> @@ -141,8 +142,8 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, int cpu = mce->extcpu; struct acpi_hest_generic_status *estatus, *tmp; struct acpi_hest_generic_data *gdata; - const guid_t *fru_id = &guid_null; - char *fru_text = ""; + const guid_t *fru_id; + char *fru_text; guid_t *sec_type; static u32 err_seq; @@ -163,17 +164,23 @@ static int extlog_print(struct notifier_block *nb, unsigned long val, /* log event via trace */ err_seq++; - gdata = (struct acpi_hest_generic_data *)(tmp + 1); - if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID) - fru_id = (guid_t *)gdata->fru_id; - if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT) - fru_text = gdata->fru_text; - sec_type = (guid_t *)gdata->section_type; - if (guid_equal(sec_type, &CPER_SEC_PLATFORM_MEM)) { - struct cper_sec_mem_err *mem = (void *)(gdata + 1); - if (gdata->error_data_length >= sizeof(*mem)) - trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, - (u8)gdata->error_severity); + apei_estatus_for_each_section(tmp, gdata) { + if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID) + fru_id = (guid_t *)gdata->fru_id; + else + fru_id = &guid_null; + if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT) + fru_text = gdata->fru_text; + else + fru_text = ""; + sec_type = (guid_t *)gdata->section_type; + if (guid_equal(sec_type, &CPER_SEC_PLATFORM_MEM)) { + struct cper_sec_mem_err *mem = (void *)(gdata + 1); + + if (gdata->error_data_length >= sizeof(*mem)) + trace_extlog_mem_event(mem, err_seq, fru_id, fru_text, + (u8)gdata->error_severity); + } } out: diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c index ac54fc03cf81..eb7fca6f9444 100644 --- a/drivers/acpi/acpi_video.c +++ b/drivers/acpi/acpi_video.c @@ -511,6 +511,22 @@ static const struct dmi_system_id video_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE R830"), }, }, + { + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Satellite Z830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE Z830"), + }, + }, + { + .callback = video_disable_backlight_sysfs_if, + .ident = "Toshiba Portege Z830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE Z830"), + }, + }, /* * Some machine's _DOD IDs don't have bit 31(Device ID Scheme) set * but the IDs actually follow the Device ID Scheme. diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c index 490ae990bd3c..0ec74ab2a399 100644 --- a/drivers/acpi/video_detect.c +++ b/drivers/acpi/video_detect.c @@ -448,6 +448,70 @@ static const struct dmi_system_id video_detect_dmi_table[] = { }, }, /* + * More Tongfang devices with the same issue as the Clevo NL5xRU and + * NL5xNU/TUXEDO Aura 15 Gen1 and Gen2. See the description above. + */ + { + .callback = video_detect_force_native, + .ident = "TongFang GKxNRxx", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GKxNRxx"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GKxNRxx", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"), + DMI_MATCH(DMI_BOARD_NAME, "POLARIS1501A1650TI"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GKxNRxx", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"), + DMI_MATCH(DMI_BOARD_NAME, "POLARIS1501A2060"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GKxNRxx", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"), + DMI_MATCH(DMI_BOARD_NAME, "POLARIS1701A1650TI"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GKxNRxx", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"), + DMI_MATCH(DMI_BOARD_NAME, "POLARIS1701A2060"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GMxNGxx", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GMxNGxx"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GMxZGxx", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GMxZGxx"), + }, + }, + { + .callback = video_detect_force_native, + .ident = "TongFang GMxRGxx", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GMxRGxx"), + }, + }, + /* * Desktops which falsely report a backlight and which our heuristics * for this do not catch. */ diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h index 9290e787abdc..d5b9f9689877 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h @@ -265,7 +265,7 @@ enum { PCS_7 = 0x94, /* 7+ port PCS (Denverton) */ /* em constants */ - EM_MAX_SLOTS = 8, + EM_MAX_SLOTS = SATA_PMP_MAX_PORTS, EM_MAX_RETRY = 5, /* em_ctl bits */ diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c index b00799d208f5..46e61a1ab968 100644 --- a/drivers/ata/ahci_imx.c +++ b/drivers/ata/ahci_imx.c @@ -1250,4 +1250,4 @@ module_platform_driver(imx_ahci_driver); MODULE_DESCRIPTION("Freescale i.MX AHCI SATA platform driver"); MODULE_AUTHOR("Richard Zhu <Hong-Xing.Zhu@freescale.com>"); MODULE_LICENSE("GPL"); -MODULE_ALIAS("ahci:imx"); +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c index 6a55aac0c60f..63086f90bbf8 100644 --- a/drivers/ata/libahci_platform.c +++ b/drivers/ata/libahci_platform.c @@ -421,14 +421,24 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev, } } - hpriv->nports = child_nodes = of_get_child_count(dev->of_node); + /* + * Too many sub-nodes most likely means having something wrong with + * the firmware. + */ + child_nodes = of_get_child_count(dev->of_node); + if (child_nodes > AHCI_MAX_PORTS) { + rc = -EINVAL; + goto err_out; + } /* * If no sub-node was found, we still need to set nports to * one in order to be able to use the * ahci_platform_[en|dis]able_[phys|regulators] functions. */ - if (!child_nodes) + if (child_nodes) + hpriv->nports = child_nodes; + else hpriv->nports = 1; hpriv->phys = devm_kcalloc(dev, hpriv->nports, sizeof(*hpriv->phys), GFP_KERNEL); diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c index 43a91495ee67..f04f4f977400 100644 --- a/drivers/ata/libata-transport.c +++ b/drivers/ata/libata-transport.c @@ -317,7 +317,6 @@ int ata_tport_add(struct device *parent, tport_err: transport_destroy_device(dev); put_device(dev); - ata_host_put(ap->host); return error; } diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c index 52cea1b3ea70..591778024054 100644 --- a/drivers/ata/pata_legacy.c +++ b/drivers/ata/pata_legacy.c @@ -292,9 +292,10 @@ static void pdc20230_set_piomode(struct ata_port *ap, struct ata_device *adev) outb(inb(0x1F4) & 0x07, 0x1F4); rt = inb(0x1F3); - rt &= 0x07 << (3 * adev->devno); + rt &= ~(0x07 << (3 * !adev->devno)); if (pio) - rt |= (1 + 3 * pio) << (3 * adev->devno); + rt |= (1 + 3 * pio) << (3 * !adev->devno); + outb(rt, 0x1F3); udelay(100); outb(inb(0x1F2) | 0x01, 0x1F2); diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index b89bca8d4d47..494147994c5d 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -669,6 +669,12 @@ ssize_t __weak cpu_show_mmio_stale_data(struct device *dev, return sysfs_emit(buf, "Not affected\n"); } +ssize_t __weak cpu_show_retbleed(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "Not affected\n"); +} + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL); @@ -679,6 +685,7 @@ static DEVICE_ATTR(tsx_async_abort, 0444, cpu_show_tsx_async_abort, NULL); static DEVICE_ATTR(itlb_multihit, 0444, cpu_show_itlb_multihit, NULL); static DEVICE_ATTR(srbds, 0444, cpu_show_srbds, NULL); static DEVICE_ATTR(mmio_stale_data, 0444, cpu_show_mmio_stale_data, NULL); +static DEVICE_ATTR(retbleed, 0444, cpu_show_retbleed, NULL); static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr, @@ -691,6 +698,7 @@ static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_itlb_multihit.attr, &dev_attr_srbds.attr, &dev_attr_mmio_stale_data.attr, + &dev_attr_retbleed.attr, NULL }; diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 52c292d0908a..e865aa4b2504 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2459,6 +2459,10 @@ static int genpd_iterate_idle_states(struct device_node *dn, np = it.node; if (!of_match_node(idle_state_match, np)) continue; + + if (!of_device_is_available(np)) + continue; + if (states) { ret = genpd_parse_state(&states[i], np); if (ret) { diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index c9c532a2262a..2f237708a6fe 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -2770,7 +2770,7 @@ static int init_submitter(struct drbd_device *device) enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsigned int minor) { struct drbd_resource *resource = adm_ctx->resource; - struct drbd_connection *connection; + struct drbd_connection *connection, *n; struct drbd_device *device; struct drbd_peer_device *peer_device, *tmp_peer_device; struct gendisk *disk; @@ -2898,7 +2898,7 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig out_idr_remove_vol: idr_remove(&connection->peer_devices, vnr); out_idr_remove_from_resource: - for_each_connection(connection, resource) { + for_each_connection_safe(connection, n, resource) { peer_device = idr_remove(&connection->peer_devices, vnr); if (peer_device) kref_put(&connection->kref, drbd_destroy_connection); diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 2dc6008d89e7..5ea3febb75b1 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -82,6 +82,8 @@ #include <linux/uaccess.h> +#define LOOP_DEFAULT_HW_Q_DEPTH (128) + static DEFINE_IDR(loop_index_idr); static DEFINE_MUTEX(loop_ctl_mutex); @@ -1923,6 +1925,30 @@ module_param(max_loop, int, 0444); MODULE_PARM_DESC(max_loop, "Maximum number of loop devices"); module_param(max_part, int, 0444); MODULE_PARM_DESC(max_part, "Maximum number of partitions per loop device"); + +static int hw_queue_depth = LOOP_DEFAULT_HW_Q_DEPTH; + +static int loop_set_hw_queue_depth(const char *s, const struct kernel_param *p) +{ + int qd, ret; + + ret = kstrtoint(s, 10, &qd); + if (ret < 0) + return ret; + if (qd < 1) + return -EINVAL; + hw_queue_depth = qd; + return 0; +} + +static const struct kernel_param_ops loop_hw_qdepth_param_ops = { + .set = loop_set_hw_queue_depth, + .get = param_get_int, +}; +device_param_cb(hw_queue_depth, &loop_hw_qdepth_param_ops, &hw_queue_depth, + 0444); +MODULE_PARM_DESC(hw_queue_depth, "Queue depth for each hardware queue. Default: 128"); + MODULE_LICENSE("GPL"); MODULE_ALIAS_BLOCKDEV_MAJOR(LOOP_MAJOR); @@ -2072,10 +2098,11 @@ static int loop_add(struct loop_device **l, int i) err = -ENOMEM; lo->tag_set.ops = &loop_mq_ops; lo->tag_set.nr_hw_queues = 1; - lo->tag_set.queue_depth = 128; + lo->tag_set.queue_depth = hw_queue_depth; lo->tag_set.numa_node = NUMA_NO_NODE; lo->tag_set.cmd_size = sizeof(struct loop_cmd); - lo->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_SG_MERGE; + lo->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_SG_MERGE | + BLK_MQ_F_NO_SCHED_BY_DEFAULT; lo->tag_set.driver_data = lo; err = blk_mq_alloc_tag_set(&lo->tag_set); diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 2ef7eec6461c..cc66983e8b6a 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -1271,10 +1271,12 @@ static int nbd_start_device_ioctl(struct nbd_device *nbd, struct block_device *b mutex_unlock(&nbd->config_lock); ret = wait_event_interruptible(config->recv_wq, atomic_read(&config->recv_threads) == 0); - if (ret) + if (ret) { sock_shutdown(nbd); - flush_workqueue(nbd->recv_workq); + nbd_clear_que(nbd); + } + flush_workqueue(nbd->recv_workq); mutex_lock(&nbd->config_lock); nbd_bdev_reset(bdev); /* user requested, ignore socket errors */ diff --git a/drivers/bus/sunxi-rsb.c b/drivers/bus/sunxi-rsb.c index b85d013a9185..d3fb350dc9ee 100644 --- a/drivers/bus/sunxi-rsb.c +++ b/drivers/bus/sunxi-rsb.c @@ -268,6 +268,9 @@ EXPORT_SYMBOL_GPL(sunxi_rsb_driver_register); /* common code that starts a transfer */ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) { + u32 int_mask, status; + bool timeout; + if (readl(rsb->regs + RSB_CTRL) & RSB_CTRL_START_TRANS) { dev_dbg(rsb->dev, "RSB transfer still in progress\n"); return -EBUSY; @@ -275,13 +278,23 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) reinit_completion(&rsb->complete); - writel(RSB_INTS_LOAD_BSY | RSB_INTS_TRANS_ERR | RSB_INTS_TRANS_OVER, - rsb->regs + RSB_INTE); + int_mask = RSB_INTS_LOAD_BSY | RSB_INTS_TRANS_ERR | RSB_INTS_TRANS_OVER; + writel(int_mask, rsb->regs + RSB_INTE); writel(RSB_CTRL_START_TRANS | RSB_CTRL_GLOBAL_INT_ENB, rsb->regs + RSB_CTRL); - if (!wait_for_completion_io_timeout(&rsb->complete, - msecs_to_jiffies(100))) { + if (irqs_disabled()) { + timeout = readl_poll_timeout_atomic(rsb->regs + RSB_INTS, + status, (status & int_mask), + 10, 100000); + writel(status, rsb->regs + RSB_INTS); + } else { + timeout = !wait_for_completion_io_timeout(&rsb->complete, + msecs_to_jiffies(100)); + status = rsb->status; + } + + if (timeout) { dev_dbg(rsb->dev, "RSB timeout\n"); /* abort the transfer */ @@ -293,18 +306,18 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb) return -ETIMEDOUT; } - if (rsb->status & RSB_INTS_LOAD_BSY) { + if (status & RSB_INTS_LOAD_BSY) { dev_dbg(rsb->dev, "RSB busy\n"); return -EBUSY; } - if (rsb->status & RSB_INTS_TRANS_ERR) { - if (rsb->status & RSB_INTS_TRANS_ERR_ACK) { + if (status & RSB_INTS_TRANS_ERR) { + if (status & RSB_INTS_TRANS_ERR_ACK) { dev_dbg(rsb->dev, "RSB slave nack\n"); return -EINVAL; } - if (rsb->status & RSB_INTS_TRANS_ERR_DATA) { + if (status & RSB_INTS_TRANS_ERR_DATA) { dev_dbg(rsb->dev, "RSB transfer data error\n"); return -EIO; } diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 54b86490d9ca..9f1caa7eb8d1 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -893,8 +893,8 @@ static const struct memdev { #endif [5] = { "zero", 0666, &zero_fops, 0 }, [7] = { "full", 0666, &full_fops, 0 }, - [8] = { "random", 0666, &random_fops, 0 }, - [9] = { "urandom", 0666, &urandom_fops, 0 }, + [8] = { "random", 0666, &random_fops, FMODE_NOWAIT }, + [9] = { "urandom", 0666, &urandom_fops, FMODE_NOWAIT }, #ifdef CONFIG_PRINTK [11] = { "kmsg", 0644, &kmsg_fops, 0 }, #endif diff --git a/drivers/char/random.c b/drivers/char/random.c index 1579a5862ea0..76ea13d7d379 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -891,20 +891,23 @@ void __init add_bootloader_randomness(const void *buf, size_t len) } struct fast_pool { - struct work_struct mix; unsigned long pool[4]; unsigned long last; unsigned int count; + struct timer_list mix; }; +static void mix_interrupt_randomness(struct timer_list *work); + static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = { #ifdef CONFIG_64BIT #define FASTMIX_PERM SIPHASH_PERMUTATION - .pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 } + .pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 }, #else #define FASTMIX_PERM HSIPHASH_PERMUTATION - .pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 } + .pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 }, #endif + .mix = __TIMER_INITIALIZER(mix_interrupt_randomness, 0) }; /* @@ -946,7 +949,7 @@ int __cold random_online_cpu(unsigned int cpu) } #endif -static void mix_interrupt_randomness(struct work_struct *work) +static void mix_interrupt_randomness(struct timer_list *work) { struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix); /* @@ -977,7 +980,7 @@ static void mix_interrupt_randomness(struct work_struct *work) local_irq_enable(); mix_pool_bytes(pool, sizeof(pool)); - credit_init_bits(max(1u, (count & U16_MAX) / 64)); + credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8)); memzero_explicit(pool, sizeof(pool)); } @@ -1000,10 +1003,11 @@ void add_interrupt_randomness(int irq) if (new_count < 1024 && !time_is_before_jiffies(fast_pool->last + HZ)) return; - if (unlikely(!fast_pool->mix.func)) - INIT_WORK(&fast_pool->mix, mix_interrupt_randomness); fast_pool->count |= MIX_INFLIGHT; - queue_work_on(raw_smp_processor_id(), system_highpri_wq, &fast_pool->mix); + if (!timer_pending(&fast_pool->mix)) { + fast_pool->mix.expires = jiffies; + add_timer_on(&fast_pool->mix, raw_smp_processor_id()); + } } EXPORT_SYMBOL_GPL(add_interrupt_randomness); @@ -1295,6 +1299,11 @@ static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter) { int ret; + if (!crng_ready() && + ((kiocb->ki_flags & IOCB_NOWAIT) || + (kiocb->ki_filp->f_flags & O_NONBLOCK))) + return -EAGAIN; + ret = wait_for_random_bytes(); if (ret != 0) return ret; diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c index 8a1d565740ef..7a1b7ab124ee 100644 --- a/drivers/clk/bcm/clk-bcm2835.c +++ b/drivers/clk/bcm/clk-bcm2835.c @@ -950,9 +950,9 @@ static u32 bcm2835_clock_choose_div(struct clk_hw *hw, return div; } -static long bcm2835_clock_rate_from_divisor(struct bcm2835_clock *clock, - unsigned long parent_rate, - u32 div) +static unsigned long bcm2835_clock_rate_from_divisor(struct bcm2835_clock *clock, + unsigned long parent_rate, + u32 div) { const struct bcm2835_clock_data *data = clock->data; u64 temp; @@ -1737,7 +1737,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { .load_mask = CM_PLLC_LOADPER, .hold_mask = CM_PLLC_HOLDPER, .fixed_divider = 1, - .flags = CLK_SET_RATE_PARENT), + .flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT), /* * PLLD is the display PLL, used to drive DSI display panels. diff --git a/drivers/clk/berlin/bg2.c b/drivers/clk/berlin/bg2.c index 0b4b44a2579e..6efc3e02da47 100644 --- a/drivers/clk/berlin/bg2.c +++ b/drivers/clk/berlin/bg2.c @@ -499,12 +499,15 @@ static void __init berlin2_clock_setup(struct device_node *np) int n, ret; clk_data = kzalloc(struct_size(clk_data, hws, MAX_CLKS), GFP_KERNEL); - if (!clk_data) + if (!clk_data) { + of_node_put(parent_np); return; + } clk_data->num = MAX_CLKS; hws = clk_data->hws; gbase = of_iomap(parent_np, 0); + of_node_put(parent_np); if (!gbase) return; diff --git a/drivers/clk/berlin/bg2q.c b/drivers/clk/berlin/bg2q.c index 9b9db743df25..5bcd8406ac93 100644 --- a/drivers/clk/berlin/bg2q.c +++ b/drivers/clk/berlin/bg2q.c @@ -285,19 +285,23 @@ static void __init berlin2q_clock_setup(struct device_node *np) int n, ret; clk_data = kzalloc(struct_size(clk_data, hws, MAX_CLKS), GFP_KERNEL); - if (!clk_data) + if (!clk_data) { + of_node_put(parent_np); return; + } clk_data->num = MAX_CLKS; hws = clk_data->hws; gbase = of_iomap(parent_np, 0); if (!gbase) { + of_node_put(parent_np); pr_err("%pOF: Unable to map global base\n", np); return; } /* BG2Q CPU PLL is not part of global registers */ cpupll_base = of_iomap(parent_np, 1); + of_node_put(parent_np); if (!cpupll_base) { pr_err("%pOF: Unable to map cpupll base\n", np); iounmap(gbase); diff --git a/drivers/clk/clk-oxnas.c b/drivers/clk/clk-oxnas.c index e51e0023fc6e..a92bf71f03ac 100644 --- a/drivers/clk/clk-oxnas.c +++ b/drivers/clk/clk-oxnas.c @@ -218,7 +218,7 @@ static const struct of_device_id oxnas_stdclk_dt_ids[] = { static int oxnas_stdclk_probe(struct platform_device *pdev) { - struct device_node *np = pdev->dev.of_node; + struct device_node *np = pdev->dev.of_node, *parent_np; const struct oxnas_stdclk_data *data; const struct of_device_id *id; struct regmap *regmap; @@ -230,7 +230,9 @@ static int oxnas_stdclk_probe(struct platform_device *pdev) return -ENODEV; data = id->data; - regmap = syscon_node_to_regmap(of_get_parent(np)); + parent_np = of_get_parent(np); + regmap = syscon_node_to_regmap(parent_np); + of_node_put(parent_np); if (IS_ERR(regmap)) { dev_err(&pdev->dev, "failed to have parent regmap\n"); return PTR_ERR(regmap); diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c index 625d11091330..1e5025c127bd 100644 --- a/drivers/clk/tegra/clk-tegra114.c +++ b/drivers/clk/tegra/clk-tegra114.c @@ -1348,6 +1348,7 @@ static void __init tegra114_clock_init(struct device_node *np) } pmc_base = of_iomap(node, 0); + of_node_put(node); if (!pmc_base) { pr_err("Can't map pmc registers\n"); WARN_ON(1); diff --git a/drivers/clk/tegra/clk-tegra20.c b/drivers/clk/tegra/clk-tegra20.c index 68551effb5ca..5859b8ee1478 100644 --- a/drivers/clk/tegra/clk-tegra20.c +++ b/drivers/clk/tegra/clk-tegra20.c @@ -1152,6 +1152,7 @@ static void __init tegra20_clock_init(struct device_node *np) } pmc_base = of_iomap(node, 0); + of_node_put(node); if (!pmc_base) { pr_err("Can't map pmc registers\n"); BUG(); diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c index 7264e9731034..f97c4b0a9164 100644 --- a/drivers/clk/tegra/clk-tegra210.c +++ b/drivers/clk/tegra/clk-tegra210.c @@ -3529,6 +3529,7 @@ static void __init tegra210_clock_init(struct device_node *np) } pmc_base = of_iomap(node, 0); + of_node_put(node); if (!pmc_base) { pr_err("Can't map pmc registers\n"); WARN_ON(1); diff --git a/drivers/clk/ti/clk-dra7-atl.c b/drivers/clk/ti/clk-dra7-atl.c index beb672a215b6..a4b6f3ac2d34 100644 --- a/drivers/clk/ti/clk-dra7-atl.c +++ b/drivers/clk/ti/clk-dra7-atl.c @@ -252,14 +252,16 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev) if (rc) { pr_err("%s: failed to lookup atl clock %d\n", __func__, i); - return -EINVAL; + ret = -EINVAL; + goto pm_put; } clk = of_clk_get_from_provider(&clkspec); if (IS_ERR(clk)) { pr_err("%s: failed to get atl clock %d from provider\n", __func__, i); - return PTR_ERR(clk); + ret = PTR_ERR(clk); + goto pm_put; } cdesc = to_atl_desc(__clk_get_hw(clk)); @@ -292,8 +294,9 @@ static int of_dra7_atl_clk_probe(struct platform_device *pdev) if (cdesc->enabled) atl_clk_enable(__clk_get_hw(clk)); } - pm_runtime_put_sync(cinfo->dev); +pm_put: + pm_runtime_put_sync(cinfo->dev); return ret; } diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index 9e86404a361f..40c969432f45 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c @@ -47,6 +47,7 @@ #include <asm/msr.h> #include <asm/processor.h> #include <asm/cpufeature.h> +#include <asm/cpu_device_id.h> MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski"); MODULE_DESCRIPTION("ACPI Processor P-States Driver"); diff --git a/drivers/cpufreq/amd_freq_sensitivity.c b/drivers/cpufreq/amd_freq_sensitivity.c index be926d9a66e5..4b4f128c3488 100644 --- a/drivers/cpufreq/amd_freq_sensitivity.c +++ b/drivers/cpufreq/amd_freq_sensitivity.c @@ -21,6 +21,7 @@ #include <asm/msr.h> #include <asm/cpufeature.h> +#include <asm/cpu_device_id.h> #include "cpufreq_ondemand.h" diff --git a/drivers/crypto/cavium/cpt/cptpf_main.c b/drivers/crypto/cavium/cpt/cptpf_main.c index 06ad85ab5e86..7416f30ee976 100644 --- a/drivers/crypto/cavium/cpt/cptpf_main.c +++ b/drivers/crypto/cavium/cpt/cptpf_main.c @@ -257,6 +257,7 @@ static int cpt_ucode_load_fw(struct cpt_device *cpt, const u8 *fw, bool is_ae) const struct firmware *fw_entry; struct device *dev = &cpt->pdev->dev; struct ucode_header *ucode; + unsigned int code_length; struct microcode *mcode; int j, ret = 0; @@ -267,11 +268,12 @@ static int cpt_ucode_load_fw(struct cpt_device *cpt, const u8 *fw, bool is_ae) ucode = (struct ucode_header *)fw_entry->data; mcode = &cpt->mcode[cpt->next_mc_idx]; memcpy(mcode->version, (u8 *)fw_entry->data, CPT_UCODE_VERSION_SZ); - mcode->code_size = ntohl(ucode->code_length) * 2; - if (!mcode->code_size) { + code_length = ntohl(ucode->code_length); + if (code_length == 0 || code_length >= INT_MAX / 2) { ret = -EINVAL; goto fw_release; } + mcode->code_size = code_length * 2; mcode->is_ae = is_ae; mcode->core_mask = 0ULL; diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c index c52718b37f8f..adcae1077fd3 100644 --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c @@ -252,6 +252,8 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first) ATC_SPIP_BOUNDARY(first->boundary)); channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) | ATC_DPIP_BOUNDARY(first->boundary)); + /* Don't allow CPU to reorder channel enable. */ + wmb(); dma_writel(atdma, CHER, atchan->mask); vdbg_dump_regs(atchan); @@ -312,7 +314,8 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) struct at_desc *desc_first = atc_first_active(atchan); struct at_desc *desc; int ret; - u32 ctrla, dscr, trials; + u32 ctrla, dscr; + unsigned int i; /* * If the cookie doesn't match to the currently running transfer then @@ -382,7 +385,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) dscr = channel_readl(atchan, DSCR); rmb(); /* ensure DSCR is read before CTRLA */ ctrla = channel_readl(atchan, CTRLA); - for (trials = 0; trials < ATC_MAX_DSCR_TRIALS; ++trials) { + for (i = 0; i < ATC_MAX_DSCR_TRIALS; ++i) { u32 new_dscr; rmb(); /* ensure DSCR is read after CTRLA */ @@ -408,7 +411,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) rmb(); /* ensure DSCR is read before CTRLA */ ctrla = channel_readl(atchan, CTRLA); } - if (unlikely(trials >= ATC_MAX_DSCR_TRIALS)) + if (unlikely(i == ATC_MAX_DSCR_TRIALS)) return -ETIMEDOUT; /* for the first descriptor we can be more accurate */ @@ -556,10 +559,6 @@ static void atc_handle_error(struct at_dma_chan *atchan) bad_desc = atc_first_active(atchan); list_del_init(&bad_desc->desc_node); - /* As we are stopped, take advantage to push queued descriptors - * in active_list */ - list_splice_init(&atchan->queue, atchan->active_list.prev); - /* Try to restart the controller */ if (!list_empty(&atchan->active_list)) atc_dostart(atchan, atc_first_active(atchan)); @@ -680,19 +679,11 @@ static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx) spin_lock_irqsave(&atchan->lock, flags); cookie = dma_cookie_assign(tx); - if (list_empty(&atchan->active_list)) { - dev_vdbg(chan2dev(tx->chan), "tx_submit: started %u\n", - desc->txd.cookie); - atc_dostart(atchan, desc); - list_add_tail(&desc->desc_node, &atchan->active_list); - } else { - dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n", - desc->txd.cookie); - list_add_tail(&desc->desc_node, &atchan->queue); - } - + list_add_tail(&desc->desc_node, &atchan->queue); spin_unlock_irqrestore(&atchan->lock, flags); + dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n", + desc->txd.cookie); return cookie; } @@ -1967,7 +1958,11 @@ static int __init at_dma_probe(struct platform_device *pdev) dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "", plat_dat->nr_channels); - dma_async_device_register(&atdma->dma_common); + err = dma_async_device_register(&atdma->dma_common); + if (err) { + dev_err(&pdev->dev, "Unable to register: %d.\n", err); + goto err_dma_async_device_register; + } /* * Do not return an error if the dmac node is not present in order to @@ -1987,6 +1982,7 @@ static int __init at_dma_probe(struct platform_device *pdev) err_of_dma_controller_register: dma_async_device_unregister(&atdma->dma_common); +err_dma_async_device_register: dma_pool_destroy(atdma->memset_pool); err_memset_pool_create: dma_pool_destroy(atdma->dma_desc_pool); diff --git a/drivers/dma/at_hdmac_regs.h b/drivers/dma/at_hdmac_regs.h index ef3f227ce3e6..00517cbd3a31 100644 --- a/drivers/dma/at_hdmac_regs.h +++ b/drivers/dma/at_hdmac_regs.h @@ -168,13 +168,13 @@ /* LLI == Linked List Item; aka DMA buffer descriptor */ struct at_lli { /* values that are not changed by hardware */ - dma_addr_t saddr; - dma_addr_t daddr; + u32 saddr; + u32 daddr; /* value that may get written back: */ - u32 ctrla; + u32 ctrla; /* more values that are not changed by hardware */ - u32 ctrlb; - dma_addr_t dscr; /* chain to next lli */ + u32 ctrlb; + u32 dscr; /* chain to next lli */ }; /** diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c index 890cadf3ec5d..e86a3d19b718 100644 --- a/drivers/dma/ioat/dma.c +++ b/drivers/dma/ioat/dma.c @@ -653,7 +653,7 @@ static void __cleanup(struct ioatdma_chan *ioat_chan, dma_addr_t phys_complete) if (active - i == 0) { dev_dbg(to_dev(ioat_chan), "%s: cancel completion timeout\n", __func__); - mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); + mod_timer_pending(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); } /* microsecond delay by sysfs variable per pending descriptor */ @@ -679,7 +679,7 @@ static void ioat_cleanup(struct ioatdma_chan *ioat_chan) if (chanerr & (IOAT_CHANERR_HANDLE_MASK | IOAT_CHANERR_RECOVER_MASK)) { - mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); + mod_timer_pending(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); ioat_eh(ioat_chan); } } @@ -876,7 +876,7 @@ static void check_active(struct ioatdma_chan *ioat_chan) } if (test_and_clear_bit(IOAT_CHAN_ACTIVE, &ioat_chan->state)) - mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); + mod_timer_pending(&ioat_chan->timer, jiffies + IDLE_TIMEOUT); } void ioat_timer_event(struct timer_list *t) diff --git a/drivers/dma/mv_xor_v2.c b/drivers/dma/mv_xor_v2.c index 462adf7e4e95..62864b3e120f 100644 --- a/drivers/dma/mv_xor_v2.c +++ b/drivers/dma/mv_xor_v2.c @@ -906,6 +906,7 @@ static int mv_xor_v2_remove(struct platform_device *pdev) tasklet_kill(&xor_dev->irq_tasklet); clk_disable_unprepare(xor_dev->clk); + clk_disable_unprepare(xor_dev->reg_clk); return 0; } diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c index 3f38df6b51f2..0ba70be4ea85 100644 --- a/drivers/dma/xilinx/xilinx_dma.c +++ b/drivers/dma/xilinx/xilinx_dma.c @@ -2654,7 +2654,7 @@ static int xilinx_dma_probe(struct platform_device *pdev) if (err < 0) { dev_err(xdev->dev, "missing xlnx,num-fstores property\n"); - return err; + goto disable_clks; } err = of_property_read_u32(node, "xlnx,flush-fsync", @@ -2674,7 +2674,11 @@ static int xilinx_dma_probe(struct platform_device *pdev) xdev->ext_addr = false; /* Set the dma mask bits */ - dma_set_mask_and_coherent(xdev->dev, DMA_BIT_MASK(addr_width)); + err = dma_set_mask_and_coherent(xdev->dev, DMA_BIT_MASK(addr_width)); + if (err < 0) { + dev_err(xdev->dev, "DMA mask error %d\n", err); + goto disable_clks; + } /* Initialize the DMA engine */ xdev->common.dev = &pdev->dev; diff --git a/drivers/firmware/arm_scmi/scmi_pm_domain.c b/drivers/firmware/arm_scmi/scmi_pm_domain.c index 177874adccf0..b0c8962b9885 100644 --- a/drivers/firmware/arm_scmi/scmi_pm_domain.c +++ b/drivers/firmware/arm_scmi/scmi_pm_domain.c @@ -106,9 +106,28 @@ static int scmi_pm_domain_probe(struct scmi_device *sdev) scmi_pd_data->domains = domains; scmi_pd_data->num_domains = num_domains; + dev_set_drvdata(dev, scmi_pd_data); + return of_genpd_add_provider_onecell(np, scmi_pd_data); } +static void scmi_pm_domain_remove(struct scmi_device *sdev) +{ + int i; + struct genpd_onecell_data *scmi_pd_data; + struct device *dev = &sdev->dev; + struct device_node *np = dev->of_node; + + of_genpd_del_provider(np); + + scmi_pd_data = dev_get_drvdata(dev); + for (i = 0; i < scmi_pd_data->num_domains; i++) { + if (!scmi_pd_data->domains[i]) + continue; + pm_genpd_remove(scmi_pd_data->domains[i]); + } +} + static const struct scmi_device_id scmi_id_table[] = { { SCMI_PROTOCOL_POWER }, { }, @@ -118,6 +137,7 @@ MODULE_DEVICE_TABLE(scmi, scmi_id_table); static struct scmi_driver scmi_power_domain_driver = { .name = "scmi-power-domain", .probe = scmi_pm_domain_probe, + .remove = scmi_pm_domain_remove, .id_table = scmi_id_table, }; module_scmi_driver(scmi_power_domain_driver); diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 7098744f9276..f0ef2643b70e 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -556,7 +556,7 @@ int __init efi_config_parse_tables(void *config_tables, int count, int sz, seed = early_memremap(efi.rng_seed, sizeof(*seed)); if (seed != NULL) { - size = seed->size; + size = min(seed->size, EFI_RANDOM_SEED_SIZE); early_memunmap(seed, sizeof(*seed)); } else { pr_err("Could not map UEFI random seed!\n"); diff --git a/drivers/firmware/efi/libstub/fdt.c b/drivers/firmware/efi/libstub/fdt.c index dba296a44f4e..2a1a587edef9 100644 --- a/drivers/firmware/efi/libstub/fdt.c +++ b/drivers/firmware/efi/libstub/fdt.c @@ -301,14 +301,6 @@ efi_status_t allocate_new_fdt_and_exit_boot(efi_system_table_t *sys_table, goto fail; } - /* - * Now that we have done our final memory allocation (and free) - * we can get the memory map key needed for exit_boot_services(). - */ - status = efi_get_memory_map(sys_table, &map); - if (status != EFI_SUCCESS) - goto fail_free_new_fdt; - status = update_fdt(sys_table, (void *)fdt_addr, fdt_size, (void *)*new_fdt_addr, MAX_FDT_SIZE, cmdline_ptr, initrd_addr, initrd_size); diff --git a/drivers/firmware/google/gsmi.c b/drivers/firmware/google/gsmi.c index 62337be07afc..2e3ef0eb6e82 100644 --- a/drivers/firmware/google/gsmi.c +++ b/drivers/firmware/google/gsmi.c @@ -661,6 +661,15 @@ static struct notifier_block gsmi_die_notifier = { static int gsmi_panic_callback(struct notifier_block *nb, unsigned long reason, void *arg) { + + /* + * Panic callbacks are executed with all other CPUs stopped, + * so we must not attempt to spin waiting for gsmi_dev.lock + * to be released. + */ + if (spin_is_locked(&gsmi_dev.lock)) + return NOTIFY_DONE; + gsmi_shutdown_reason(GSMI_SHUTDOWN_PANIC); return NOTIFY_DONE; } diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c index 5b4ca6142270..5133fe0a0abe 100644 --- a/drivers/fsi/fsi-core.c +++ b/drivers/fsi/fsi-core.c @@ -1279,6 +1279,9 @@ int fsi_master_register(struct fsi_master *master) mutex_init(&master->scan_lock); master->idx = ida_simple_get(&master_ida, 0, INT_MAX, GFP_KERNEL); + if (master->idx < 0) + return master->idx; + dev_set_name(&master->dev, "fsi%d", master->idx); rc = device_register(&master->dev); diff --git a/drivers/gpio/gpio-amd8111.c b/drivers/gpio/gpio-amd8111.c index fdcebe59510d..68d95051dd0e 100644 --- a/drivers/gpio/gpio-amd8111.c +++ b/drivers/gpio/gpio-amd8111.c @@ -231,7 +231,10 @@ found: ioport_unmap(gp.pm); goto out; } + return 0; + out: + pci_dev_put(pdev); return err; } @@ -239,6 +242,7 @@ static void __exit amd_gpio_exit(void) { gpiochip_remove(&gp.chip); ioport_unmap(gp.pm); + pci_dev_put(gp.pdev); } module_init(amd_gpio_init); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c index 3e4305c3c983..86ceefb8b8fb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c @@ -1638,10 +1638,12 @@ amdgpu_connector_add(struct amdgpu_device *adev, adev->mode_info.dither_property, AMDGPU_FMT_DITHER_DISABLE); - if (amdgpu_audio != 0) + if (amdgpu_audio != 0) { drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.audio_property, AMDGPU_AUDIO_AUTO); + amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; + } subpixel_order = SubPixelHorizontalRGB; connector->interlace_allowed = true; @@ -1746,6 +1748,7 @@ amdgpu_connector_add(struct amdgpu_device *adev, drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.audio_property, AMDGPU_AUDIO_AUTO); + amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property, @@ -1794,6 +1797,7 @@ amdgpu_connector_add(struct amdgpu_device *adev, drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.audio_property, AMDGPU_AUDIO_AUTO); + amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property, @@ -1839,6 +1843,7 @@ amdgpu_connector_add(struct amdgpu_device *adev, drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.audio_property, AMDGPU_AUDIO_AUTO); + amdgpu_connector->audio = AMDGPU_AUDIO_AUTO; } drm_object_attach_property(&amdgpu_connector->base.base, adev->mode_info.dither_property, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index 98d20efe54d0..68f702f2eec3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -330,11 +330,9 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, if (r) goto release_object; - if (args->flags & AMDGPU_GEM_USERPTR_REGISTER) { - r = amdgpu_mn_register(bo, args->addr); - if (r) - goto release_object; - } + r = amdgpu_mn_register(bo, args->addr); + if (r) + goto release_object; if (args->flags & AMDGPU_GEM_USERPTR_VALIDATE) { r = amdgpu_ttm_tt_get_user_pages(bo->tbo.ttm, diff --git a/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c b/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c index 6ca288fb5fb9..2d46bc527b21 100644 --- a/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c +++ b/drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c @@ -26,12 +26,12 @@ #include "bw_fixed.h" -#define MIN_I64 \ - (int64_t)(-(1LL << 63)) - #define MAX_I64 \ (int64_t)((1ULL << 63) - 1) +#define MIN_I64 \ + (-MAX_I64 - 1) + #define FRACTIONAL_PART_MASK \ ((1ULL << BW_FIXED_BITS_PER_FRACTIONAL_PART) - 1) diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c index f0f2ce6da827..e67753a3d9d3 100644 --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c @@ -324,7 +324,8 @@ static const struct dce_audio_registers audio_regs[] = { audio_regs(2), audio_regs(3), audio_regs(4), - audio_regs(5) + audio_regs(5), + audio_regs(6), }; #define DCE120_AUD_COMMON_MASK_SH_LIST(mask_sh)\ diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511.h b/drivers/gpu/drm/bridge/adv7511/adv7511.h index 73d8ccb97742..d214865c2459 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511.h +++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h @@ -383,10 +383,7 @@ void adv7511_cec_irq_process(struct adv7511 *adv7511, unsigned int irq1); #else static inline int adv7511_cec_init(struct device *dev, struct adv7511 *adv7511) { - unsigned int offset = adv7511->type == ADV7533 ? - ADV7533_REG_CEC_OFFSET : 0; - - regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL + offset, + regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL, ADV7511_CEC_CTRL_POWER_DOWN); return 0; } diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_cec.c b/drivers/gpu/drm/bridge/adv7511/adv7511_cec.c index a20a45c0b353..ddd1305b82b2 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_cec.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_cec.c @@ -316,7 +316,7 @@ int adv7511_cec_init(struct device *dev, struct adv7511 *adv7511) goto err_cec_alloc; } - regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL + offset, 0); + regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL, 0); /* cec soft reset */ regmap_write(adv7511->regmap_cec, ADV7511_REG_CEC_SOFT_RESET + offset, 0x01); @@ -343,7 +343,7 @@ err_cec_alloc: dev_info(dev, "Initializing CEC failed with error %d, disabling CEC\n", ret); err_cec_parse_dt: - regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL + offset, + regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL, ADV7511_CEC_CTRL_POWER_DOWN); return ret == -EPROBE_DEFER ? ret : 0; } diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c index a8d776edccc1..07e3a8aaa0e4 100644 --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c @@ -290,7 +290,9 @@ static void ge_b850v3_lvds_remove(void) * This check is to avoid both the drivers * removing the bridge in their remove() function */ - if (!ge_b850v3_lvds_ptr) + if (!ge_b850v3_lvds_ptr || + !ge_b850v3_lvds_ptr->stdp2690_i2c || + !ge_b850v3_lvds_ptr->stdp4028_i2c) goto out; drm_bridge_remove(&ge_b850v3_lvds_ptr->bridge); diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index df27ead9efdf..5a672aaa110b 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -458,7 +458,13 @@ EXPORT_SYMBOL(drm_invalid_op); */ static int drm_copy_field(char __user *buf, size_t *buf_len, const char *value) { - int len; + size_t len; + + /* don't attempt to copy a NULL pointer */ + if (WARN_ONCE(!value, "BUG: the value to copy was not set!")) { + *buf_len = 0; + return 0; + } /* don't overflow userbuf */ len = strlen(value); diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 28a7c3c65cb8..9b48830f5c81 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -305,6 +305,7 @@ static int mipi_dsi_remove_device_fn(struct device *dev, void *priv) { struct mipi_dsi_device *dsi = to_mipi_dsi_device(dev); + mipi_dsi_detach(dsi); mipi_dsi_device_unregister(dsi); return 0; diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c index 265df1e67eb3..7a2a148b8ec6 100644 --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c @@ -95,6 +95,18 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), }, .driver_data = (void *)&lcd800x1280_rightside_up, + }, { /* Acer Switch V 10 (SW5-017) */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, + }, { /* Anbernic Win600 */ + .matches = { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Win600"), + }, + .driver_data = (void *)&lcd720x1280_rightside_up, }, { /* Asus T100HA */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c index 82e2ca17a441..15f21f60fc8a 100644 --- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c @@ -55,13 +55,13 @@ static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachme goto err_unpin_pages; } - ret = sg_alloc_table(st, obj->mm.pages->nents, GFP_KERNEL); + ret = sg_alloc_table(st, obj->mm.pages->orig_nents, GFP_KERNEL); if (ret) goto err_free; src = obj->mm.pages->sgl; dst = st->sgl; - for (i = 0; i < obj->mm.pages->nents; i++) { + for (i = 0; i < obj->mm.pages->orig_nents; i++) { sg_set_page(dst, sg_page(src), src->length, 0); dst = sg_next(dst); src = sg_next(src); diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c index c19c1dfbfcdc..de3996fe90be 100644 --- a/drivers/gpu/drm/imx/imx-tve.c +++ b/drivers/gpu/drm/imx/imx-tve.c @@ -243,8 +243,9 @@ static int imx_tve_connector_get_modes(struct drm_connector *connector) return ret; } -static int imx_tve_connector_mode_valid(struct drm_connector *connector, - struct drm_display_mode *mode) +static enum drm_mode_status +imx_tve_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) { struct imx_tve *tve = con_to_tve(connector); unsigned long rate; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index c88bb92282df..57b40cf0f199 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -654,12 +654,10 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms) _dpu_kms_mmu_destroy(dpu_kms); if (dpu_kms->catalog) { - for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { - u32 vbif_idx = dpu_kms->catalog->vbif[i].id; - - if ((vbif_idx < VBIF_MAX) && dpu_kms->hw_vbif[vbif_idx]) { - dpu_hw_vbif_destroy(dpu_kms->hw_vbif[vbif_idx]); - dpu_kms->hw_vbif[vbif_idx] = NULL; + for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { + if (dpu_kms->hw_vbif[i]) { + dpu_hw_vbif_destroy(dpu_kms->hw_vbif[i]); + dpu_kms->hw_vbif[i] = NULL; } } } @@ -1094,7 +1092,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { u32 vbif_idx = dpu_kms->catalog->vbif[i].id; - dpu_kms->hw_vbif[i] = dpu_hw_vbif_init(vbif_idx, + dpu_kms->hw_vbif[vbif_idx] = dpu_hw_vbif_init(vbif_idx, dpu_kms->vbif[vbif_idx], dpu_kms->catalog); if (IS_ERR_OR_NULL(dpu_kms->hw_vbif[vbif_idx])) { rc = PTR_ERR(dpu_kms->hw_vbif[vbif_idx]); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c index 295528292296..24d009e066ab 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c @@ -18,6 +18,14 @@ #include "dpu_hw_vbif.h" #include "dpu_trace.h" +static struct dpu_hw_vbif *dpu_get_vbif(struct dpu_kms *dpu_kms, enum dpu_vbif vbif_idx) +{ + if (vbif_idx < ARRAY_SIZE(dpu_kms->hw_vbif)) + return dpu_kms->hw_vbif[vbif_idx]; + + return NULL; +} + /** * _dpu_vbif_wait_for_xin_halt - wait for the xin to halt * @vbif: Pointer to hardware vbif driver @@ -155,11 +163,11 @@ exit: void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, struct dpu_vbif_set_ot_params *params) { - struct dpu_hw_vbif *vbif = NULL; + struct dpu_hw_vbif *vbif; struct dpu_hw_mdp *mdp; bool forced_on = false; u32 ot_lim; - int ret, i; + int ret; if (!dpu_kms) { DPU_ERROR("invalid arguments\n"); @@ -167,12 +175,7 @@ void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, } mdp = dpu_kms->hw_mdp; - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { - if (dpu_kms->hw_vbif[i] && - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) - vbif = dpu_kms->hw_vbif[i]; - } - + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); if (!vbif || !mdp) { DPU_DEBUG("invalid arguments vbif %d mdp %d\n", vbif != 0, mdp != 0); @@ -217,7 +220,7 @@ exit: void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, struct dpu_vbif_set_qos_params *params) { - struct dpu_hw_vbif *vbif = NULL; + struct dpu_hw_vbif *vbif; struct dpu_hw_mdp *mdp; bool forced_on = false; const struct dpu_vbif_qos_tbl *qos_tbl; @@ -229,13 +232,7 @@ void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, } mdp = dpu_kms->hw_mdp; - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { - if (dpu_kms->hw_vbif[i] && - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) { - vbif = dpu_kms->hw_vbif[i]; - break; - } - } + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); if (!vbif || !vbif->cap) { DPU_ERROR("invalid vbif %d\n", params->vbif_idx); diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c index 5368e621999c..0bfa7e68408a 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c @@ -74,8 +74,9 @@ static int mdp4_lvds_connector_get_modes(struct drm_connector *connector) return ret; } -static int mdp4_lvds_connector_mode_valid(struct drm_connector *connector, - struct drm_display_mode *mode) +static enum drm_mode_status +mdp4_lvds_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) { struct mdp4_lvds_connector *mdp4_lvds_connector = to_mdp4_lvds_connector(connector); diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 5cf6eac9c1d3..4c8b147bb339 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -200,6 +200,12 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, return -EINVAL; priv = dev->dev_private; + + if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) { + DRM_DEV_ERROR(dev->dev, "too many bridges\n"); + return -ENOSPC; + } + msm_dsi->dev = dev; ret = msm_dsi_host_modeset_init(msm_dsi->host, dev); diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 0b7cb90d2826..e03f08757b25 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -299,6 +299,11 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, struct platform_device *pdev = hdmi->pdev; int ret; + if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) { + DRM_DEV_ERROR(dev->dev, "too many bridges\n"); + return -ENOSPC; + } + hdmi->dev = dev; hdmi->encoder = encoder; diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c index 868dd1ef3b69..f210560a4831 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -394,7 +394,12 @@ static int __init vc4_drm_register(void) if (ret) return ret; - return platform_driver_register(&vc4_platform_driver); + ret = platform_driver_register(&vc4_platform_driver); + if (ret) + platform_unregister_drivers(component_drivers, + ARRAY_SIZE(component_drivers)); + + return ret; } static void __exit vc4_drm_unregister(void) diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c index 8e7facb6514e..ae0354ceb2a3 100644 --- a/drivers/gpu/drm/vc4/vc4_vec.c +++ b/drivers/gpu/drm/vc4/vc4_vec.c @@ -291,7 +291,7 @@ static void vc4_vec_ntsc_j_mode_set(struct vc4_vec *vec) static const struct drm_display_mode ntsc_mode = { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 13500, 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, - 480, 480 + 3, 480 + 3 + 3, 480 + 3 + 3 + 16, 0, + 480, 480 + 7, 480 + 7 + 6, 525, 0, DRM_MODE_FLAG_INTERLACE) }; @@ -313,7 +313,7 @@ static void vc4_vec_pal_m_mode_set(struct vc4_vec *vec) static const struct drm_display_mode pal_mode = { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 13500, 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, - 576, 576 + 2, 576 + 2 + 3, 576 + 2 + 3 + 20, 0, + 576, 576 + 4, 576 + 4 + 6, 625, 0, DRM_MODE_FLAG_INTERLACE) }; diff --git a/drivers/gpu/msm/adreno.h b/drivers/gpu/msm/adreno.h index c20fa219cf2c..87ac337caf12 100644 --- a/drivers/gpu/msm/adreno.h +++ b/drivers/gpu/msm/adreno.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2008-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef __ADRENO_H #define __ADRENO_H @@ -16,9 +16,6 @@ #define DEVICE_3D_NAME "kgsl-3d" #define DEVICE_3D0_NAME "kgsl-3d0" -/* Index to preemption scratch buffer to store KMD postamble */ -#define KMD_POSTAMBLE_IDX 100 - /* ADRENO_DEVICE - Given a kgsl_device return the adreno device struct */ #define ADRENO_DEVICE(device) \ container_of(device, struct adreno_device, dev) diff --git a/drivers/gpu/msm/adreno_a6xx_preempt.c b/drivers/gpu/msm/adreno_a6xx_preempt.c index a58f8b2c899a..6eafa1244715 100644 --- a/drivers/gpu/msm/adreno_a6xx_preempt.c +++ b/drivers/gpu/msm/adreno_a6xx_preempt.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved. */ #include "adreno.h" @@ -558,8 +558,8 @@ unsigned int a6xx_preemption_pre_ibsubmit( * preemption */ if (!adreno_dev->perfcounter) { - u64 kmd_postamble_addr = - PREEMPT_SCRATCH_ADDR(adreno_dev, KMD_POSTAMBLE_IDX); + u64 kmd_postamble_addr = SCRATCH_POSTAMBLE_ADDR + (KGSL_DEVICE(adreno_dev)); *cmds++ = cp_type7_packet(CP_SET_AMBLE, 3); *cmds++ = lower_32_bits(kmd_postamble_addr); @@ -763,6 +763,8 @@ void a6xx_preemption_close(struct adreno_device *adreno_dev) int a6xx_preemption_init(struct adreno_device *adreno_dev) { + u32 flags = ADRENO_FEATURE(adreno_dev, ADRENO_APRIV) ? + KGSL_MEMDESC_PRIVILEGED : 0; struct kgsl_device *device = KGSL_DEVICE(adreno_dev); struct adreno_preemption *preempt = &adreno_dev->preempt; struct adreno_ringbuffer *rb; @@ -777,8 +779,8 @@ int a6xx_preemption_init(struct adreno_device *adreno_dev) timer_setup(&preempt->timer, _a6xx_preemption_timer, 0); - ret = kgsl_allocate_global(device, &preempt->scratch, PAGE_SIZE, 0, 0, - "preemption_scratch"); + ret = kgsl_allocate_global(device, &preempt->scratch, PAGE_SIZE, 0, + flags, "preemption_scratch"); /* Allocate mem for storing preemption switch record */ FOR_EACH_RINGBUFFER(adreno_dev, rb, i) { @@ -788,14 +790,15 @@ int a6xx_preemption_init(struct adreno_device *adreno_dev) } /* - * First 8 dwords of the preemption scratch buffer is used to store the - * address for CP to save/restore VPC data. Reserve 11 dwords in the - * preemption scratch buffer from index KMD_POSTAMBLE_IDX for KMD - * postamble pm4 packets + * First 28 dwords of the device scratch buffer are used to store + * shadow rb data. Reserve 11 dwords in the device scratch buffer + * from SCRATCH_POSTAMBLE_OFFSET for KMD postamble pm4 packets. + * This should be in *device->scratch* so that userspace cannot + * access it. */ if (!adreno_dev->perfcounter) { - u32 *postamble = preempt->scratch.hostptr + - (KMD_POSTAMBLE_IDX * sizeof(u64)); + u32 *postamble = device->scratch.hostptr + + SCRATCH_POSTAMBLE_OFFSET; u32 count = 0; postamble[count++] = cp_type7_packet(CP_REG_RMW, 3); diff --git a/drivers/gpu/msm/kgsl.h b/drivers/gpu/msm/kgsl.h index 5a1549607cee..95b1909f47a9 100644 --- a/drivers/gpu/msm/kgsl.h +++ b/drivers/gpu/msm/kgsl.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2008-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef __KGSL_H #define __KGSL_H @@ -69,6 +70,11 @@ #define SCRATCH_RPTR_GPU_ADDR(dev, id) \ ((dev)->scratch.gpuaddr + SCRATCH_RPTR_OFFSET(id)) +/* OFFSET to KMD postamble packets in scratch buffer */ +#define SCRATCH_POSTAMBLE_OFFSET (100 * sizeof(u64)) +#define SCRATCH_POSTAMBLE_ADDR(dev) \ + ((dev)->scratch.gpuaddr + SCRATCH_POSTAMBLE_OFFSET) + /* Timestamp window used to detect rollovers (half of integer range) */ #define KGSL_TIMESTAMP_WINDOW 0x80000000 diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 4549fbb74156..62656636d30c 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1131,6 +1131,9 @@ static s32 snto32(__u32 value, unsigned n) if (!value || !n) return 0; + if (n > 32) + n = 32; + switch (n) { case 8: return ((__s8)value); case 16: return ((__s16)value); diff --git a/drivers/hid/hid-hyperv.c b/drivers/hid/hid-hyperv.c index 4d1496f60071..8f2bf70218bf 100644 --- a/drivers/hid/hid-hyperv.c +++ b/drivers/hid/hid-hyperv.c @@ -500,7 +500,7 @@ static int mousevsc_probe(struct hv_device *device, ret = hid_add_device(hid_dev); if (ret) - goto probe_err1; + goto probe_err2; ret = hid_parse(hid_dev); diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 41531174762a..2e994fbc558f 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -793,6 +793,7 @@ #define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540 #define USB_DEVICE_ID_MADCATZ_RAT5 0x1705 #define USB_DEVICE_ID_MADCATZ_RAT9 0x1709 +#define USB_DEVICE_ID_MADCATZ_MMO7 0x1713 #define USB_VENDOR_ID_MCC 0x09db #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c index ef80c592b88a..a85e805ca2c0 100644 --- a/drivers/hid/hid-lg4ff.c +++ b/drivers/hid/hid-lg4ff.c @@ -878,6 +878,12 @@ static ssize_t lg4ff_alternate_modes_store(struct device *dev, struct device_att return -ENOMEM; i = strlen(lbuf); + + if (i == 0) { + kfree(lbuf); + return -EINVAL; + } + if (lbuf[i-1] == '\n') { if (i == 1) { kfree(lbuf); diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c index 8af62696f2ca..5604175c0661 100644 --- a/drivers/hid/hid-magicmouse.c +++ b/drivers/hid/hid-magicmouse.c @@ -343,7 +343,7 @@ static int magicmouse_raw_event(struct hid_device *hdev, magicmouse_raw_event(hdev, report, data + 2, data[1]); magicmouse_raw_event(hdev, report, data + 2 + data[1], size - 2 - data[1]); - break; + return 0; default: return 0; } diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index ce027eda9b17..4b1c223be993 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c @@ -1154,7 +1154,7 @@ static void mt_touch_report(struct hid_device *hid, int contact_count = -1; /* sticky fingers release in progress, abort */ - if (test_and_set_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags)) + if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags)) return; scantime = *app->scantime; @@ -1235,7 +1235,7 @@ static void mt_touch_report(struct hid_device *hid, del_timer(&td->release_timer); } - clear_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags); + clear_bit_unlock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags); } static int mt_touch_input_configured(struct hid_device *hdev, @@ -1672,11 +1672,11 @@ static void mt_expired_timeout(struct timer_list *t) * An input report came in just before we release the sticky fingers, * it will take care of the sticky fingers. */ - if (test_and_set_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags)) + if (test_and_set_bit_lock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags)) return; if (test_bit(MT_IO_FLAGS_PENDING_SLOTS, &td->mt_io_flags)) mt_release_contacts(hdev); - clear_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags); + clear_bit_unlock(MT_IO_FLAGS_RUNNING, &td->mt_io_flags); } static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id) diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index b89c2faee4cd..aa33ba159e0e 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -623,6 +623,7 @@ static const struct hid_device_id hid_have_special_driver[] = { { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) }, { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT5) }, { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_RAT9) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_MMO7) }, #endif #if IS_ENABLED(CONFIG_HID_SAMSUNG) { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) }, diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c index 5be8de70c651..c9cec00b4e6e 100644 --- a/drivers/hid/hid-roccat.c +++ b/drivers/hid/hid-roccat.c @@ -260,6 +260,8 @@ int roccat_report_event(int minor, u8 const *data) if (!new_value) return -ENOMEM; + mutex_lock(&device->cbuf_lock); + report = &device->cbuf[device->cbuf_end]; /* passing NULL is safe */ @@ -279,6 +281,8 @@ int roccat_report_event(int minor, u8 const *data) reader->cbuf_start = (reader->cbuf_start + 1) % ROCCAT_CBUF_SIZE; } + mutex_unlock(&device->cbuf_lock); + wake_up_interruptible(&device->wait); return 0; } diff --git a/drivers/hid/hid-saitek.c b/drivers/hid/hid-saitek.c index 683861f324e3..95e004d9b110 100644 --- a/drivers/hid/hid-saitek.c +++ b/drivers/hid/hid-saitek.c @@ -191,6 +191,8 @@ static const struct hid_device_id saitek_devices[] = { .driver_data = SAITEK_RELEASE_MODE_RAT7 }, { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7), .driver_data = SAITEK_RELEASE_MODE_MMO7 }, + { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_MMO7), + .driver_data = SAITEK_RELEASE_MODE_MMO7 }, { } }; diff --git a/drivers/hsi/controllers/omap_ssi_core.c b/drivers/hsi/controllers/omap_ssi_core.c index 129c5e6bc654..15ecc4bc8de6 100644 --- a/drivers/hsi/controllers/omap_ssi_core.c +++ b/drivers/hsi/controllers/omap_ssi_core.c @@ -560,6 +560,7 @@ static int ssi_probe(struct platform_device *pd) if (!childpdev) { err = -ENODEV; dev_err(&pd->dev, "failed to create ssi controller port\n"); + of_node_put(child); goto out3; } } diff --git a/drivers/hsi/controllers/omap_ssi_port.c b/drivers/hsi/controllers/omap_ssi_port.c index 2ada82d2ec8c..e6149fd43b62 100644 --- a/drivers/hsi/controllers/omap_ssi_port.c +++ b/drivers/hsi/controllers/omap_ssi_port.c @@ -253,10 +253,10 @@ static int ssi_start_dma(struct hsi_msg *msg, int lch) if (msg->ttype == HSI_MSG_READ) { err = dma_map_sg(&ssi->device, msg->sgt.sgl, msg->sgt.nents, DMA_FROM_DEVICE); - if (err < 0) { + if (!err) { dev_dbg(&ssi->device, "DMA map SG failed !\n"); pm_runtime_put_autosuspend(omap_port->pdev); - return err; + return -EIO; } csdp = SSI_DST_BURST_4x32_BIT | SSI_DST_MEMORY_PORT | SSI_SRC_SINGLE_ACCESS0 | SSI_SRC_PERIPHERAL_PORT | @@ -270,10 +270,10 @@ static int ssi_start_dma(struct hsi_msg *msg, int lch) } else { err = dma_map_sg(&ssi->device, msg->sgt.sgl, msg->sgt.nents, DMA_TO_DEVICE); - if (err < 0) { + if (!err) { dev_dbg(&ssi->device, "DMA map SG failed !\n"); pm_runtime_put_autosuspend(omap_port->pdev); - return err; + return -EIO; } csdp = SSI_SRC_BURST_4x32_BIT | SSI_SRC_MEMORY_PORT | SSI_DST_SINGLE_ACCESS0 | SSI_DST_PERIPHERAL_PORT | diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index a3f6933f94e3..ccfa5ceb43c0 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -508,13 +508,17 @@ static void vmbus_add_channel_work(struct work_struct *work) * Add the new device to the bus. This will kick off device-driver * binding which eventually invokes the device driver's AddDevice() * method. + * + * If vmbus_device_register() fails, the 'device_obj' is freed in + * vmbus_device_release() as called by device_unregister() in the + * error path of vmbus_device_register(). In the outside error + * path, there's no need to free it. */ ret = vmbus_device_register(newchannel->device_obj); if (ret != 0) { pr_err("unable to add child device object (relid %d)\n", newchannel->offermsg.child_relid); - kfree(newchannel->device_obj); goto err_deq_chan; } diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 9cbe0b00ebf7..a2a304e7d10c 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1634,6 +1634,7 @@ int vmbus_device_register(struct hv_device *child_device_obj) ret = device_register(&child_device_obj->device); if (ret) { pr_err("Unable to register child device\n"); + put_device(&child_device_obj->device); return ret; } diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 10645c9bb7be..1b2f750577da 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c @@ -59,9 +59,6 @@ MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius"); #define TOTAL_ATTRS (MAX_CORE_ATTRS + 1) #define MAX_CORE_DATA (NUM_REAL_CORES + BASE_SYSFS_ATTR_NO) -#define TO_CORE_ID(cpu) (cpu_data(cpu).cpu_core_id) -#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO) - #ifdef CONFIG_SMP #define for_each_sibling(i, cpu) \ for_each_cpu(i, topology_sibling_cpumask(cpu)) @@ -104,6 +101,8 @@ struct temp_data { struct platform_data { struct device *hwmon_dev; u16 pkg_id; + u16 cpu_map[NUM_REAL_CORES]; + struct ida ida; struct cpumask cpumask; struct temp_data *core_data[MAX_CORE_DATA]; struct device_attribute name_attr; @@ -256,10 +255,13 @@ static int adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev) */ if (host_bridge && host_bridge->vendor == PCI_VENDOR_ID_INTEL) { for (i = 0; i < ARRAY_SIZE(tjmax_pci_table); i++) { - if (host_bridge->device == tjmax_pci_table[i].device) + if (host_bridge->device == tjmax_pci_table[i].device) { + pci_dev_put(host_bridge); return tjmax_pci_table[i].tjmax; + } } } + pci_dev_put(host_bridge); for (i = 0; i < ARRAY_SIZE(tjmax_table); i++) { if (strstr(c->x86_model_id, tjmax_table[i].id)) @@ -454,7 +456,7 @@ static struct temp_data *init_temp_data(unsigned int cpu, int pkg_flag) MSR_IA32_THERM_STATUS; tdata->is_pkg_data = pkg_flag; tdata->cpu = cpu; - tdata->cpu_core_id = TO_CORE_ID(cpu); + tdata->cpu_core_id = topology_core_id(cpu); tdata->attr_size = MAX_CORE_ATTRS; mutex_init(&tdata->update_lock); return tdata; @@ -467,7 +469,7 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, struct platform_data *pdata = platform_get_drvdata(pdev); struct cpuinfo_x86 *c = &cpu_data(cpu); u32 eax, edx; - int err, attr_no; + int err, index, attr_no; /* * Find attr number for sysfs: @@ -475,14 +477,26 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, * The attr number is always core id + 2 * The Pkgtemp will always show up as temp1_*, if available */ - attr_no = pkg_flag ? PKG_SYSFS_ATTR_NO : TO_ATTR_NO(cpu); + if (pkg_flag) { + attr_no = PKG_SYSFS_ATTR_NO; + } else { + index = ida_alloc(&pdata->ida, GFP_KERNEL); + if (index < 0) + return index; + pdata->cpu_map[index] = topology_core_id(cpu); + attr_no = index + BASE_SYSFS_ATTR_NO; + } - if (attr_no > MAX_CORE_DATA - 1) - return -ERANGE; + if (attr_no > MAX_CORE_DATA - 1) { + err = -ERANGE; + goto ida_free; + } tdata = init_temp_data(cpu, pkg_flag); - if (!tdata) - return -ENOMEM; + if (!tdata) { + err = -ENOMEM; + goto ida_free; + } /* Test if we can access the status register */ err = rdmsr_safe_on_cpu(cpu, tdata->status_reg, &eax, &edx); @@ -518,6 +532,9 @@ static int create_core_data(struct platform_device *pdev, unsigned int cpu, exit_free: pdata->core_data[attr_no] = NULL; kfree(tdata); +ida_free: + if (!pkg_flag) + ida_free(&pdata->ida, index); return err; } @@ -532,11 +549,18 @@ static void coretemp_remove_core(struct platform_data *pdata, int indx) { struct temp_data *tdata = pdata->core_data[indx]; + /* if we errored on add then this is already gone */ + if (!tdata) + return; + /* Remove the sysfs attributes */ sysfs_remove_group(&pdata->hwmon_dev->kobj, &tdata->attr_group); kfree(pdata->core_data[indx]); pdata->core_data[indx] = NULL; + + if (indx >= BASE_SYSFS_ATTR_NO) + ida_free(&pdata->ida, indx - BASE_SYSFS_ATTR_NO); } static int coretemp_probe(struct platform_device *pdev) @@ -550,6 +574,7 @@ static int coretemp_probe(struct platform_device *pdev) return -ENOMEM; pdata->pkg_id = pdev->id; + ida_init(&pdata->ida); platform_set_drvdata(pdev, pdata); pdata->hwmon_dev = devm_hwmon_device_register_with_groups(dev, DRVNAME, @@ -566,6 +591,7 @@ static int coretemp_remove(struct platform_device *pdev) if (pdata->core_data[i]) coretemp_remove_core(pdata, i); + ida_destroy(&pdata->ida); return 0; } @@ -660,7 +686,7 @@ static int coretemp_cpu_offline(unsigned int cpu) struct platform_device *pdev = coretemp_get_pdev(cpu); struct platform_data *pd; struct temp_data *tdata; - int indx, target; + int i, indx = -1, target; /* * Don't execute this on suspend as the device remove locks @@ -673,12 +699,19 @@ static int coretemp_cpu_offline(unsigned int cpu) if (!pdev) return 0; - /* The core id is too big, just return */ - indx = TO_ATTR_NO(cpu); - if (indx > MAX_CORE_DATA - 1) + pd = platform_get_drvdata(pdev); + + for (i = 0; i < NUM_REAL_CORES; i++) { + if (pd->cpu_map[i] == topology_core_id(cpu)) { + indx = i + BASE_SYSFS_ATTR_NO; + break; + } + } + + /* Too many cores and this core is not populated, just return */ + if (indx < 0) return 0; - pd = platform_get_drvdata(pdev); tdata = pd->core_data[indx]; cpumask_clear_cpu(cpu, &pd->cpumask); diff --git a/drivers/hwmon/i5500_temp.c b/drivers/hwmon/i5500_temp.c index 400e0675a90b..03fa12c78109 100644 --- a/drivers/hwmon/i5500_temp.c +++ b/drivers/hwmon/i5500_temp.c @@ -117,7 +117,7 @@ static int i5500_temp_probe(struct pci_dev *pdev, u32 tstimer; s8 tsfsc; - err = pci_enable_device(pdev); + err = pcim_enable_device(pdev); if (err) { dev_err(&pdev->dev, "Failed to enable device\n"); return err; diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c index ab72cabf5a95..e289c845f970 100644 --- a/drivers/hwmon/ibmpex.c +++ b/drivers/hwmon/ibmpex.c @@ -517,6 +517,7 @@ static void ibmpex_register_bmc(int iface, struct device *dev) return; out_register: + list_del(&data->list); hwmon_device_unregister(data->hwmon_dev); out_user: ipmi_destroy_user(data->user); diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c index 52acb185a29c..03ce9b7d6456 100644 --- a/drivers/i2c/busses/i2c-xiic.c +++ b/drivers/i2c/busses/i2c-xiic.c @@ -893,6 +893,7 @@ static struct platform_driver xiic_i2c_driver = { module_platform_driver(xiic_i2c_driver); +MODULE_ALIAS("platform:" DRIVER_NAME); MODULE_AUTHOR("info@mocean-labs.com"); MODULE_DESCRIPTION("Xilinx I2C bus driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index c4bb67ed8da3..6360c045e3d0 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c @@ -58,11 +58,13 @@ #include <linux/tick.h> #include <trace/events/power.h> #include <linux/sched.h> +#include <linux/sched/smt.h> #include <linux/notifier.h> #include <linux/cpu.h> #include <linux/moduleparam.h> #include <asm/cpu_device_id.h> #include <asm/intel-family.h> +#include <asm/nospec-branch.h> #include <asm/mwait.h> #include <asm/msr.h> @@ -110,6 +112,12 @@ static struct cpuidle_state *cpuidle_state_table; #define CPUIDLE_FLAG_TLB_FLUSHED 0x10000 /* + * Disable IBRS across idle (when KERNEL_IBRS), is exclusive vs IRQ_ENABLE + * above. + */ +#define CPUIDLE_FLAG_IBRS BIT(16) + +/* * MWAIT takes an 8-bit "hint" in EAX "suggesting" * the C-state (top nibble) and sub-state (bottom nibble) * 0x00 means "MWAIT(C1)", 0x10 means "MWAIT(C2)" etc. @@ -119,6 +127,24 @@ static struct cpuidle_state *cpuidle_state_table; #define flg2MWAIT(flags) (((flags) >> 24) & 0xFF) #define MWAIT2flg(eax) ((eax & 0xFF) << 24) +static __cpuidle int intel_idle_ibrs(struct cpuidle_device *dev, + struct cpuidle_driver *drv, int index) +{ + bool smt_active = sched_smt_active(); + u64 spec_ctrl = spec_ctrl_current(); + int ret; + + if (smt_active) + wrmsrl(MSR_IA32_SPEC_CTRL, 0); + + ret = intel_idle(dev, drv, index); + + if (smt_active) + wrmsrl(MSR_IA32_SPEC_CTRL, spec_ctrl); + + return ret; +} + /* * States are indexed by the cstate number, * which is also the index into the MWAIT hint array. @@ -617,7 +643,7 @@ static struct cpuidle_state skl_cstates[] = { { .name = "C6", .desc = "MWAIT 0x20", - .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 85, .target_residency = 200, .enter = &intel_idle, @@ -625,7 +651,7 @@ static struct cpuidle_state skl_cstates[] = { { .name = "C7s", .desc = "MWAIT 0x33", - .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 124, .target_residency = 800, .enter = &intel_idle, @@ -633,7 +659,7 @@ static struct cpuidle_state skl_cstates[] = { { .name = "C8", .desc = "MWAIT 0x40", - .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 200, .target_residency = 800, .enter = &intel_idle, @@ -641,7 +667,7 @@ static struct cpuidle_state skl_cstates[] = { { .name = "C9", .desc = "MWAIT 0x50", - .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 480, .target_residency = 5000, .enter = &intel_idle, @@ -649,7 +675,7 @@ static struct cpuidle_state skl_cstates[] = { { .name = "C10", .desc = "MWAIT 0x60", - .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 890, .target_residency = 5000, .enter = &intel_idle, @@ -678,7 +704,7 @@ static struct cpuidle_state skx_cstates[] = { { .name = "C6", .desc = "MWAIT 0x20", - .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED | CPUIDLE_FLAG_IBRS, .exit_latency = 133, .target_residency = 600, .enter = &intel_idle, @@ -1384,6 +1410,11 @@ static void __init intel_idle_cpuidle_driver_init(void) drv->states[drv->state_count] = /* structure copy */ cpuidle_state_table[cstate]; + if (cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS) && + cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_IBRS) { + drv->states[drv->state_count].enter = intel_idle_ibrs; + } + drv->state_count += 1; } diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c index 129c3adad4c0..b355899f54cc 100644 --- a/drivers/iio/adc/at91-sama5d2_adc.c +++ b/drivers/iio/adc/at91-sama5d2_adc.c @@ -81,7 +81,7 @@ #define AT91_SAMA5D2_MR_ANACH BIT(23) /* Tracking Time */ #define AT91_SAMA5D2_MR_TRACKTIM(v) ((v) << 24) -#define AT91_SAMA5D2_MR_TRACKTIM_MAX 0xff +#define AT91_SAMA5D2_MR_TRACKTIM_MAX 0xf /* Transfer Time */ #define AT91_SAMA5D2_MR_TRANSFER(v) ((v) << 28) #define AT91_SAMA5D2_MR_TRANSFER_MAX 0x3 @@ -1329,8 +1329,10 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, *val = tmp_val; mutex_unlock(&st->lock); iio_device_release_direct_mode(indio_dev); + if (ret > 0) + ret = at91_adc_adjust_val_osr(st, val); - return at91_adc_adjust_val_osr(st, val); + return ret; } if (chan->type == IIO_PRESSURE) { ret = iio_device_claim_direct_mode(indio_dev); @@ -1343,8 +1345,10 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev, *val = tmp_val; mutex_unlock(&st->lock); iio_device_release_direct_mode(indio_dev); + if (ret > 0) + ret = at91_adc_adjust_val_osr(st, val); - return at91_adc_adjust_val_osr(st, val); + return ret; } /* in this case we have a voltage channel */ diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index 596841a3c4db..93f4bb7ace34 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c @@ -617,8 +617,10 @@ static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *idev, trig->ops = &at91_adc_trigger_ops; ret = iio_trigger_register(trig); - if (ret) + if (ret) { + iio_trigger_free(trig); return NULL; + } return trig; } diff --git a/drivers/iio/dac/ad5593r.c b/drivers/iio/dac/ad5593r.c index fc11ea098f98..3d807522a35f 100644 --- a/drivers/iio/dac/ad5593r.c +++ b/drivers/iio/dac/ad5593r.c @@ -15,6 +15,8 @@ #include <linux/of.h> #include <linux/acpi.h> +#include <asm/unaligned.h> + #define AD5593R_MODE_CONF (0 << 4) #define AD5593R_MODE_DAC_WRITE (1 << 4) #define AD5593R_MODE_ADC_READBACK (4 << 4) @@ -22,6 +24,24 @@ #define AD5593R_MODE_GPIO_READBACK (6 << 4) #define AD5593R_MODE_REG_READBACK (7 << 4) +static int ad5593r_read_word(struct i2c_client *i2c, u8 reg, u16 *value) +{ + int ret; + u8 buf[2]; + + ret = i2c_smbus_write_byte(i2c, reg); + if (ret < 0) + return ret; + + ret = i2c_master_recv(i2c, buf, sizeof(buf)); + if (ret < 0) + return ret; + + *value = get_unaligned_be16(buf); + + return 0; +} + static int ad5593r_write_dac(struct ad5592r_state *st, unsigned chan, u16 value) { struct i2c_client *i2c = to_i2c_client(st->dev); @@ -40,13 +60,7 @@ static int ad5593r_read_adc(struct ad5592r_state *st, unsigned chan, u16 *value) if (val < 0) return (int) val; - val = i2c_smbus_read_word_swapped(i2c, AD5593R_MODE_ADC_READBACK); - if (val < 0) - return (int) val; - - *value = (u16) val; - - return 0; + return ad5593r_read_word(i2c, AD5593R_MODE_ADC_READBACK, value); } static int ad5593r_reg_write(struct ad5592r_state *st, u8 reg, u16 value) @@ -60,25 +74,19 @@ static int ad5593r_reg_write(struct ad5592r_state *st, u8 reg, u16 value) static int ad5593r_reg_read(struct ad5592r_state *st, u8 reg, u16 *value) { struct i2c_client *i2c = to_i2c_client(st->dev); - s32 val; - - val = i2c_smbus_read_word_swapped(i2c, AD5593R_MODE_REG_READBACK | reg); - if (val < 0) - return (int) val; - *value = (u16) val; - - return 0; + return ad5593r_read_word(i2c, AD5593R_MODE_REG_READBACK | reg, value); } static int ad5593r_gpio_read(struct ad5592r_state *st, u8 *value) { struct i2c_client *i2c = to_i2c_client(st->dev); - s32 val; + u16 val; + int ret; - val = i2c_smbus_read_word_swapped(i2c, AD5593R_MODE_GPIO_READBACK); - if (val < 0) - return (int) val; + ret = ad5593r_read_word(i2c, AD5593R_MODE_GPIO_READBACK, &val); + if (ret) + return ret; *value = (u8) val; diff --git a/drivers/iio/health/afe4403.c b/drivers/iio/health/afe4403.c index 63210a3b1b87..ae5682101181 100644 --- a/drivers/iio/health/afe4403.c +++ b/drivers/iio/health/afe4403.c @@ -253,14 +253,14 @@ static int afe4403_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct afe4403_data *afe = iio_priv(indio_dev); - unsigned int reg = afe4403_channel_values[chan->address]; - unsigned int field = afe4403_channel_leds[chan->address]; + unsigned int reg, field; int ret; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_RAW: + reg = afe4403_channel_values[chan->address]; ret = afe4403_read(afe, reg, val); if (ret) return ret; @@ -270,6 +270,7 @@ static int afe4403_read_raw(struct iio_dev *indio_dev, case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + field = afe4403_channel_leds[chan->address]; ret = regmap_field_read(afe->fields[field], val); if (ret) return ret; diff --git a/drivers/iio/health/afe4404.c b/drivers/iio/health/afe4404.c index 23e1ac6501a1..a081cdfd7071 100644 --- a/drivers/iio/health/afe4404.c +++ b/drivers/iio/health/afe4404.c @@ -258,20 +258,20 @@ static int afe4404_read_raw(struct iio_dev *indio_dev, int *val, int *val2, long mask) { struct afe4404_data *afe = iio_priv(indio_dev); - unsigned int value_reg = afe4404_channel_values[chan->address]; - unsigned int led_field = afe4404_channel_leds[chan->address]; - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; + unsigned int value_reg, led_field, offdac_field; int ret; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_RAW: + value_reg = afe4404_channel_values[chan->address]; ret = regmap_read(afe->regmap, value_reg, val); if (ret) return ret; return IIO_VAL_INT; case IIO_CHAN_INFO_OFFSET: + offdac_field = afe4404_channel_offdacs[chan->address]; ret = regmap_field_read(afe->fields[offdac_field], val); if (ret) return ret; @@ -281,6 +281,7 @@ static int afe4404_read_raw(struct iio_dev *indio_dev, case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + led_field = afe4404_channel_leds[chan->address]; ret = regmap_field_read(afe->fields[led_field], val); if (ret) return ret; @@ -303,19 +304,20 @@ static int afe4404_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct afe4404_data *afe = iio_priv(indio_dev); - unsigned int led_field = afe4404_channel_leds[chan->address]; - unsigned int offdac_field = afe4404_channel_offdacs[chan->address]; + unsigned int led_field, offdac_field; switch (chan->type) { case IIO_INTENSITY: switch (mask) { case IIO_CHAN_INFO_OFFSET: + offdac_field = afe4404_channel_offdacs[chan->address]; return regmap_field_write(afe->fields[offdac_field], val); } break; case IIO_CURRENT: switch (mask) { case IIO_CHAN_INFO_RAW: + led_field = afe4404_channel_leds[chan->address]; return regmap_field_write(afe->fields[led_field], val); } break; diff --git a/drivers/iio/industrialio-sw-trigger.c b/drivers/iio/industrialio-sw-trigger.c index bc6b7fb43e3a..b4b177c16865 100644 --- a/drivers/iio/industrialio-sw-trigger.c +++ b/drivers/iio/industrialio-sw-trigger.c @@ -61,8 +61,12 @@ int iio_register_sw_trigger_type(struct iio_sw_trigger_type *t) t->group = configfs_register_default_group(iio_triggers_group, t->name, &iio_trigger_type_group_type); - if (IS_ERR(t->group)) + if (IS_ERR(t->group)) { + mutex_lock(&iio_trigger_types_lock); + list_del(&t->list); + mutex_unlock(&iio_trigger_types_lock); ret = PTR_ERR(t->group); + } return ret; } diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index cebf99bd50e0..4ddae695102b 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -139,9 +139,10 @@ static int __of_iio_channel_get(struct iio_channel *channel, idev = bus_find_device(&iio_bus_type, NULL, iiospec.np, iio_dev_node_match); - of_node_put(iiospec.np); - if (idev == NULL) + if (idev == NULL) { + of_node_put(iiospec.np); return -EPROBE_DEFER; + } indio_dev = dev_to_iio_dev(idev); channel->indio_dev = indio_dev; @@ -149,6 +150,7 @@ static int __of_iio_channel_get(struct iio_channel *channel, index = indio_dev->info->of_xlate(indio_dev, &iiospec); else index = __of_iio_simple_xlate(indio_dev, &iiospec); + of_node_put(iiospec.np); if (index < 0) goto err_put; channel->channel = &indio_dev->channels[index]; diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig index d66ea754ffff..485362f0a213 100644 --- a/drivers/iio/light/Kconfig +++ b/drivers/iio/light/Kconfig @@ -238,6 +238,8 @@ config RPR0521 tristate "ROHM RPR0521 ALS and proximity sensor driver" depends on I2C select REGMAP_I2C + select IIO_BUFFER + select IIO_TRIGGERED_BUFFER help Say Y here if you want to build support for ROHM's RPR0521 ambient light and proximity sensor device. diff --git a/drivers/iio/light/apds9960.c b/drivers/iio/light/apds9960.c index 1f112ae15f3c..4d4386774965 100644 --- a/drivers/iio/light/apds9960.c +++ b/drivers/iio/light/apds9960.c @@ -55,9 +55,6 @@ #define APDS9960_REG_CONTROL_PGAIN_MASK_SHIFT 2 #define APDS9960_REG_CONFIG_2 0x90 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK 0x60 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT 5 - #define APDS9960_REG_ID 0x92 #define APDS9960_REG_STATUS 0x93 @@ -78,6 +75,9 @@ #define APDS9960_REG_GCONF_1_GFIFO_THRES_MASK_SHIFT 6 #define APDS9960_REG_GCONF_2 0xa3 +#define APDS9960_REG_GCONF_2_GGAIN_MASK 0x60 +#define APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT 5 + #define APDS9960_REG_GOFFSET_U 0xa4 #define APDS9960_REG_GOFFSET_D 0xa5 #define APDS9960_REG_GPULSE 0xa6 @@ -396,9 +396,9 @@ static int apds9960_set_pxs_gain(struct apds9960_data *data, int val) } ret = regmap_update_bits(data->regmap, - APDS9960_REG_CONFIG_2, - APDS9960_REG_CONFIG_2_GGAIN_MASK, - idx << APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT); + APDS9960_REG_GCONF_2, + APDS9960_REG_GCONF_2_GGAIN_MASK, + idx << APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT); if (!ret) data->pxs_gain = idx; mutex_unlock(&data->lock); diff --git a/drivers/iio/light/tsl2583.c b/drivers/iio/light/tsl2583.c index 23295fec5be5..23e5911d97a3 100644 --- a/drivers/iio/light/tsl2583.c +++ b/drivers/iio/light/tsl2583.c @@ -866,7 +866,7 @@ static int tsl2583_probe(struct i2c_client *clientp, TSL2583_POWER_OFF_DELAY_MS); pm_runtime_use_autosuspend(&clientp->dev); - ret = devm_iio_device_register(indio_dev->dev.parent, indio_dev); + ret = iio_device_register(indio_dev); if (ret) { dev_err(&clientp->dev, "%s: iio registration failed\n", __func__); diff --git a/drivers/iio/pressure/ms5611.h b/drivers/iio/pressure/ms5611.h index ead9e9f85894..afcd622841dd 100644 --- a/drivers/iio/pressure/ms5611.h +++ b/drivers/iio/pressure/ms5611.h @@ -28,13 +28,6 @@ enum { MS5607, }; -struct ms5611_chip_info { - u16 prom[MS5611_PROM_WORDS_NB]; - - int (*temp_and_pressure_compensate)(struct ms5611_chip_info *chip_info, - s32 *temp, s32 *pressure); -}; - /* * OverSampling Rate descriptor. * Warning: cmd MUST be kept aligned on a word boundary (see @@ -53,12 +46,15 @@ struct ms5611_state { const struct ms5611_osr *pressure_osr; const struct ms5611_osr *temp_osr; - int (*reset)(struct device *dev); - int (*read_prom_word)(struct device *dev, int index, u16 *word); - int (*read_adc_temp_and_pressure)(struct device *dev, + u16 prom[MS5611_PROM_WORDS_NB]; + + int (*reset)(struct ms5611_state *st); + int (*read_prom_word)(struct ms5611_state *st, int index, u16 *word); + int (*read_adc_temp_and_pressure)(struct ms5611_state *st, s32 *temp, s32 *pressure); - struct ms5611_chip_info *chip_info; + int (*compensate_temp_and_pressure)(struct ms5611_state *st, s32 *temp, + s32 *pressure); struct regulator *vdd; }; diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c index f4ea886fdde4..5c7a734ede54 100644 --- a/drivers/iio/pressure/ms5611_core.c +++ b/drivers/iio/pressure/ms5611_core.c @@ -88,8 +88,7 @@ static int ms5611_read_prom(struct iio_dev *indio_dev) struct ms5611_state *st = iio_priv(indio_dev); for (i = 0; i < MS5611_PROM_WORDS_NB; i++) { - ret = st->read_prom_word(&indio_dev->dev, - i, &st->chip_info->prom[i]); + ret = st->read_prom_word(st, i, &st->prom[i]); if (ret < 0) { dev_err(&indio_dev->dev, "failed to read prom at %d\n", i); @@ -97,7 +96,7 @@ static int ms5611_read_prom(struct iio_dev *indio_dev) } } - if (!ms5611_prom_is_valid(st->chip_info->prom, MS5611_PROM_WORDS_NB)) { + if (!ms5611_prom_is_valid(st->prom, MS5611_PROM_WORDS_NB)) { dev_err(&indio_dev->dev, "PROM integrity check failed\n"); return -ENODEV; } @@ -111,28 +110,27 @@ static int ms5611_read_temp_and_pressure(struct iio_dev *indio_dev, int ret; struct ms5611_state *st = iio_priv(indio_dev); - ret = st->read_adc_temp_and_pressure(&indio_dev->dev, temp, pressure); + ret = st->read_adc_temp_and_pressure(st, temp, pressure); if (ret < 0) { dev_err(&indio_dev->dev, "failed to read temperature and pressure\n"); return ret; } - return st->chip_info->temp_and_pressure_compensate(st->chip_info, - temp, pressure); + return st->compensate_temp_and_pressure(st, temp, pressure); } -static int ms5611_temp_and_pressure_compensate(struct ms5611_chip_info *chip_info, +static int ms5611_temp_and_pressure_compensate(struct ms5611_state *st, s32 *temp, s32 *pressure) { s32 t = *temp, p = *pressure; s64 off, sens, dt; - dt = t - (chip_info->prom[5] << 8); - off = ((s64)chip_info->prom[2] << 16) + ((chip_info->prom[4] * dt) >> 7); - sens = ((s64)chip_info->prom[1] << 15) + ((chip_info->prom[3] * dt) >> 8); + dt = t - (st->prom[5] << 8); + off = ((s64)st->prom[2] << 16) + ((st->prom[4] * dt) >> 7); + sens = ((s64)st->prom[1] << 15) + ((st->prom[3] * dt) >> 8); - t = 2000 + ((chip_info->prom[6] * dt) >> 23); + t = 2000 + ((st->prom[6] * dt) >> 23); if (t < 2000) { s64 off2, sens2, t2; @@ -158,17 +156,17 @@ static int ms5611_temp_and_pressure_compensate(struct ms5611_chip_info *chip_inf return 0; } -static int ms5607_temp_and_pressure_compensate(struct ms5611_chip_info *chip_info, +static int ms5607_temp_and_pressure_compensate(struct ms5611_state *st, s32 *temp, s32 *pressure) { s32 t = *temp, p = *pressure; s64 off, sens, dt; - dt = t - (chip_info->prom[5] << 8); - off = ((s64)chip_info->prom[2] << 17) + ((chip_info->prom[4] * dt) >> 6); - sens = ((s64)chip_info->prom[1] << 16) + ((chip_info->prom[3] * dt) >> 7); + dt = t - (st->prom[5] << 8); + off = ((s64)st->prom[2] << 17) + ((st->prom[4] * dt) >> 6); + sens = ((s64)st->prom[1] << 16) + ((st->prom[3] * dt) >> 7); - t = 2000 + ((chip_info->prom[6] * dt) >> 23); + t = 2000 + ((st->prom[6] * dt) >> 23); if (t < 2000) { s64 off2, sens2, t2, tmp; @@ -199,7 +197,7 @@ static int ms5611_reset(struct iio_dev *indio_dev) int ret; struct ms5611_state *st = iio_priv(indio_dev); - ret = st->reset(&indio_dev->dev); + ret = st->reset(st); if (ret < 0) { dev_err(&indio_dev->dev, "failed to reset device\n"); return ret; @@ -346,15 +344,6 @@ static int ms5611_write_raw(struct iio_dev *indio_dev, static const unsigned long ms5611_scan_masks[] = {0x3, 0}; -static struct ms5611_chip_info chip_info_tbl[] = { - [MS5611] = { - .temp_and_pressure_compensate = ms5611_temp_and_pressure_compensate, - }, - [MS5607] = { - .temp_and_pressure_compensate = ms5607_temp_and_pressure_compensate, - } -}; - static const struct iio_chan_spec ms5611_channels[] = { { .type = IIO_PRESSURE, @@ -437,7 +426,20 @@ int ms5611_probe(struct iio_dev *indio_dev, struct device *dev, struct ms5611_state *st = iio_priv(indio_dev); mutex_init(&st->lock); - st->chip_info = &chip_info_tbl[type]; + + switch (type) { + case MS5611: + st->compensate_temp_and_pressure = + ms5611_temp_and_pressure_compensate; + break; + case MS5607: + st->compensate_temp_and_pressure = + ms5607_temp_and_pressure_compensate; + break; + default: + return -EINVAL; + } + st->temp_osr = &ms5611_avail_temp_osr[ARRAY_SIZE(ms5611_avail_temp_osr) - 1]; st->pressure_osr = diff --git a/drivers/iio/pressure/ms5611_i2c.c b/drivers/iio/pressure/ms5611_i2c.c index 55fb5fc0b6ea..d78db17d6568 100644 --- a/drivers/iio/pressure/ms5611_i2c.c +++ b/drivers/iio/pressure/ms5611_i2c.c @@ -21,17 +21,15 @@ #include "ms5611.h" -static int ms5611_i2c_reset(struct device *dev) +static int ms5611_i2c_reset(struct ms5611_state *st) { - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); - return i2c_smbus_write_byte(st->client, MS5611_RESET); } -static int ms5611_i2c_read_prom_word(struct device *dev, int index, u16 *word) +static int ms5611_i2c_read_prom_word(struct ms5611_state *st, int index, + u16 *word) { int ret; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); ret = i2c_smbus_read_word_swapped(st->client, MS5611_READ_PROM_WORD + (index << 1)); @@ -58,11 +56,10 @@ static int ms5611_i2c_read_adc(struct ms5611_state *st, s32 *val) return 0; } -static int ms5611_i2c_read_adc_temp_and_pressure(struct device *dev, +static int ms5611_i2c_read_adc_temp_and_pressure(struct ms5611_state *st, s32 *temp, s32 *pressure) { int ret; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); const struct ms5611_osr *osr = st->temp_osr; ret = i2c_smbus_write_byte(st->client, osr->cmd); diff --git a/drivers/iio/pressure/ms5611_spi.c b/drivers/iio/pressure/ms5611_spi.c index 932e05001e1a..42983d0736be 100644 --- a/drivers/iio/pressure/ms5611_spi.c +++ b/drivers/iio/pressure/ms5611_spi.c @@ -16,18 +16,17 @@ #include "ms5611.h" -static int ms5611_spi_reset(struct device *dev) +static int ms5611_spi_reset(struct ms5611_state *st) { u8 cmd = MS5611_RESET; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); return spi_write_then_read(st->client, &cmd, 1, NULL, 0); } -static int ms5611_spi_read_prom_word(struct device *dev, int index, u16 *word) +static int ms5611_spi_read_prom_word(struct ms5611_state *st, int index, + u16 *word) { int ret; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); ret = spi_w8r16be(st->client, MS5611_READ_PROM_WORD + (index << 1)); if (ret < 0) @@ -38,11 +37,10 @@ static int ms5611_spi_read_prom_word(struct device *dev, int index, u16 *word) return 0; } -static int ms5611_spi_read_adc(struct device *dev, s32 *val) +static int ms5611_spi_read_adc(struct ms5611_state *st, s32 *val) { int ret; u8 buf[3] = { MS5611_READ_ADC }; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); ret = spi_write_then_read(st->client, buf, 1, buf, 3); if (ret < 0) @@ -53,11 +51,10 @@ static int ms5611_spi_read_adc(struct device *dev, s32 *val) return 0; } -static int ms5611_spi_read_adc_temp_and_pressure(struct device *dev, +static int ms5611_spi_read_adc_temp_and_pressure(struct ms5611_state *st, s32 *temp, s32 *pressure) { int ret; - struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); const struct ms5611_osr *osr = st->temp_osr; /* @@ -69,7 +66,7 @@ static int ms5611_spi_read_adc_temp_and_pressure(struct device *dev, return ret; usleep_range(osr->conv_usec, osr->conv_usec + (osr->conv_usec / 10UL)); - ret = ms5611_spi_read_adc(dev, temp); + ret = ms5611_spi_read_adc(st, temp); if (ret < 0) return ret; @@ -79,7 +76,7 @@ static int ms5611_spi_read_adc_temp_and_pressure(struct device *dev, return ret; usleep_range(osr->conv_usec, osr->conv_usec + (osr->conv_usec / 10UL)); - return ms5611_spi_read_adc(dev, pressure); + return ms5611_spi_read_adc(st, pressure); } static int ms5611_spi_probe(struct spi_device *spi) @@ -95,7 +92,7 @@ static int ms5611_spi_probe(struct spi_device *spi) spi_set_drvdata(spi, indio_dev); spi->mode = SPI_MODE_0; - spi->max_speed_hz = 20000000; + spi->max_speed_hz = min(spi->max_speed_hz, 20000000U); spi->bits_per_word = 8; ret = spi_setup(spi); if (ret < 0) diff --git a/drivers/iio/trigger/iio-trig-sysfs.c b/drivers/iio/trigger/iio-trig-sysfs.c index cccc07e637a4..9daba4b16a58 100644 --- a/drivers/iio/trigger/iio-trig-sysfs.c +++ b/drivers/iio/trigger/iio-trig-sysfs.c @@ -211,9 +211,13 @@ static int iio_sysfs_trigger_remove(int id) static int __init iio_sysfs_trig_init(void) { + int ret; device_initialize(&iio_sysfs_trig_dev); dev_set_name(&iio_sysfs_trig_dev, "iio_sysfs_trigger"); - return device_add(&iio_sysfs_trig_dev); + ret = device_add(&iio_sysfs_trig_dev); + if (ret) + put_device(&iio_sysfs_trig_dev); + return ret; } module_init(iio_sysfs_trig_init); diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c index 2a82661620fe..72ec9d36799f 100644 --- a/drivers/infiniband/hw/qedr/main.c +++ b/drivers/infiniband/hw/qedr/main.c @@ -338,6 +338,10 @@ static int qedr_alloc_resources(struct qedr_dev *dev) spin_lock_init(&dev->qpidr.idr_lock); idr_init(&dev->qpidr.idr); dev->iwarp_wq = create_singlethread_workqueue("qedr_iwarpq"); + if (!dev->iwarp_wq) { + rc = -ENOMEM; + goto err1; + } } /* Allocate Status blocks for CNQ */ @@ -345,7 +349,7 @@ static int qedr_alloc_resources(struct qedr_dev *dev) GFP_KERNEL); if (!dev->sb_array) { rc = -ENOMEM; - goto err1; + goto err_destroy_wq; } dev->cnq_array = kcalloc(dev->num_cnq, @@ -399,6 +403,9 @@ err3: kfree(dev->cnq_array); err2: kfree(dev->sb_array); +err_destroy_wq: + if (IS_IWARP(dev)) + destroy_workqueue(dev->iwarp_wq); err1: kfree(dev->sgid_tbl); return rc; diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c index a4b5374deac8..6320390f531c 100644 --- a/drivers/infiniband/sw/rxe/rxe_qp.c +++ b/drivers/infiniband/sw/rxe/rxe_qp.c @@ -799,7 +799,9 @@ void rxe_qp_destroy(struct rxe_qp *qp) rxe_cleanup_task(&qp->comp.task); /* flush out any receive wr's or pending requests */ - __rxe_do_task(&qp->req.task); + if (qp->req.task.func) + __rxe_do_task(&qp->req.task); + if (qp->sq.queue) { __rxe_do_task(&qp->comp.task); __rxe_do_task(&qp->req.task); @@ -839,8 +841,10 @@ static void rxe_qp_do_cleanup(struct work_struct *work) free_rd_atomic_resources(qp); - kernel_sock_shutdown(qp->sk, SHUT_RDWR); - sock_release(qp->sk); + if (qp->sk) { + kernel_sock_shutdown(qp->sk, SHUT_RDWR); + sock_release(qp->sk); + } } /* called when the last reference to the qp is dropped */ diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 4423db71eda7..c125cd42faee 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -126,6 +126,8 @@ static const struct xpad_device { u8 xtype; } xpad_device[] = { { 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 }, { 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX }, @@ -256,6 +258,7 @@ static const struct xpad_device { { 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE }, { 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, + { 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX }, @@ -272,6 +275,7 @@ static const struct xpad_device { { 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX }, { 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 }, { 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 }, + { 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE }, @@ -336,6 +340,7 @@ static const struct xpad_device { { 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 }, + { 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 }, { 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE }, @@ -345,6 +350,14 @@ static const struct xpad_device { { 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, + { 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, + { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 }, { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX }, @@ -430,6 +443,7 @@ static const signed short xpad_abs_triggers[] = { static const struct usb_device_id xpad_table[] = { { USB_INTERFACE_INFO('X', 'B', 0) }, /* X-Box USB-IF not approved class */ XPAD_XBOX360_VENDOR(0x0079), /* GPD Win 2 Controller */ + XPAD_XBOX360_VENDOR(0x03eb), /* Wooting Keyboards (Legacy) */ XPAD_XBOX360_VENDOR(0x044f), /* Thrustmaster X-Box 360 controllers */ XPAD_XBOX360_VENDOR(0x045e), /* Microsoft X-Box 360 controllers */ XPAD_XBOXONE_VENDOR(0x045e), /* Microsoft X-Box One controllers */ @@ -440,6 +454,7 @@ static const struct usb_device_id xpad_table[] = { { USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */ XPAD_XBOXONE_VENDOR(0x0738), /* Mad Catz FightStick TE 2 */ XPAD_XBOX360_VENDOR(0x07ff), /* Mad Catz GamePad */ + XPAD_XBOX360_VENDOR(0x0c12), /* Zeroplus X-Box 360 controllers */ XPAD_XBOX360_VENDOR(0x0e6f), /* 0x0e6f X-Box 360 controllers */ XPAD_XBOXONE_VENDOR(0x0e6f), /* 0x0e6f X-Box One controllers */ XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */ @@ -460,8 +475,12 @@ static const struct usb_device_id xpad_table[] = { XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA Controllers */ XPAD_XBOX360_VENDOR(0x24c6), /* PowerA Controllers */ XPAD_XBOXONE_VENDOR(0x24c6), /* PowerA Controllers */ + XPAD_XBOX360_VENDOR(0x2563), /* OneXPlayer Gamepad */ + XPAD_XBOX360_VENDOR(0x260d), /* Dareu H101 */ + XPAD_XBOXONE_VENDOR(0x2dc8), /* 8BitDo Pro 2 Wired Controller for Xbox */ XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Duke X-Box One pad */ XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */ + XPAD_XBOX360_VENDOR(0x31e3), /* Wooting Keyboards */ XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */ { } }; @@ -1978,7 +1997,6 @@ static struct usb_driver xpad_driver = { .disconnect = xpad_disconnect, .suspend = xpad_suspend, .resume = xpad_resume, - .reset_resume = xpad_resume, .id_table = xpad_table, }; diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index c6d393114502..7dc8ca5fd75f 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -192,6 +192,7 @@ static const char * const smbus_pnp_ids[] = { "SYN3221", /* HP 15-ay000 */ "SYN323d", /* HP Spectre X360 13-w013dx */ "SYN3257", /* HP Envy 13-ad105ng */ + "SYN3286", /* HP Laptop 15-da3001TU */ NULL }; diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 082afbf088d6..c9b51511b33d 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c @@ -1544,8 +1544,6 @@ static int i8042_probe(struct platform_device *dev) { int error; - i8042_platform_device = dev; - if (i8042_reset == I8042_RESET_ALWAYS) { error = i8042_controller_selftest(); if (error) @@ -1583,7 +1581,6 @@ static int i8042_probe(struct platform_device *dev) i8042_free_aux_ports(); /* in case KBD failed but AUX not */ i8042_free_irqs(); i8042_controller_reset(false); - i8042_platform_device = NULL; return error; } @@ -1593,7 +1590,6 @@ static int i8042_remove(struct platform_device *dev) i8042_unregister_ports(); i8042_free_irqs(); i8042_controller_reset(false); - i8042_platform_device = NULL; return 0; } diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index 017786d62f47..3ea851583724 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -804,6 +804,7 @@ int __init dmar_dev_scope_init(void) info = dmar_alloc_pci_notify_info(dev, BUS_NOTIFY_ADD_DEVICE); if (!info) { + pci_dev_put(dev); return dmar_dev_scope_status; } else { dmar_pci_bus_add_dev(info); diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index dcb865d19309..1b25f5c0dfad 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -2800,6 +2800,7 @@ static int __init si_domain_init(int hw) if (md_domain_init(si_domain, DEFAULT_DOMAIN_ADDRESS_WIDTH)) { domain_exit(si_domain); + si_domain = NULL; return -EFAULT; } @@ -3502,6 +3503,10 @@ free_iommu: disable_dmar_iommu(iommu); free_dmar_iommu(iommu); } + if (si_domain) { + domain_exit(si_domain); + si_domain = NULL; + } kfree(g_iommus); diff --git a/drivers/iommu/omap-iommu-debug.c b/drivers/iommu/omap-iommu-debug.c index 5ce55fabc9d8..726702d01522 100644 --- a/drivers/iommu/omap-iommu-debug.c +++ b/drivers/iommu/omap-iommu-debug.c @@ -35,12 +35,12 @@ static inline bool is_omap_iommu_detached(struct omap_iommu *obj) ssize_t bytes; \ const char *str = "%20s: %08x\n"; \ const int maxcol = 32; \ - bytes = snprintf(p, maxcol, str, __stringify(name), \ + if (len < maxcol) \ + goto out; \ + bytes = scnprintf(p, maxcol, str, __stringify(name), \ iommu_read_reg(obj, MMU_##name)); \ p += bytes; \ len -= bytes; \ - if (len < maxcol) \ - goto out; \ } while (0) static ssize_t diff --git a/drivers/isdn/hardware/mISDN/netjet.c b/drivers/isdn/hardware/mISDN/netjet.c index 4a342daac98d..45b6aaf3de4a 100644 --- a/drivers/isdn/hardware/mISDN/netjet.c +++ b/drivers/isdn/hardware/mISDN/netjet.c @@ -970,7 +970,7 @@ nj_release(struct tiger_hw *card) } if (card->irq > 0) free_irq(card->irq, card); - if (card->isac.dch.dev.dev.class) + if (device_is_registered(&card->isac.dch.dev.dev)) mISDN_unregister_device(&card->isac.dch.dev); for (i = 0; i < 2; i++) { diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c index f5a06a6fb297..e542439f4950 100644 --- a/drivers/isdn/mISDN/core.c +++ b/drivers/isdn/mISDN/core.c @@ -231,7 +231,7 @@ mISDN_register_device(struct mISDNdevice *dev, err = get_free_devid(); if (err < 0) - goto error1; + return err; dev->id = err; device_initialize(&dev->dev); @@ -242,11 +242,12 @@ mISDN_register_device(struct mISDNdevice *dev, if (debug & DEBUG_CORE) printk(KERN_DEBUG "mISDN_register %s %d\n", dev_name(&dev->dev), dev->id); + dev->dev.class = &mISDN_class; + err = create_stack(dev); if (err) goto error1; - dev->dev.class = &mISDN_class; dev->dev.platform_data = dev; dev->dev.parent = parent; dev_set_drvdata(&dev->dev, dev); @@ -258,8 +259,8 @@ mISDN_register_device(struct mISDNdevice *dev, error3: delete_stack(dev); - return err; error1: + put_device(&dev->dev); return err; } diff --git a/drivers/isdn/mISDN/dsp_pipeline.c b/drivers/isdn/mISDN/dsp_pipeline.c index e72b4e73cd61..796cae691560 100644 --- a/drivers/isdn/mISDN/dsp_pipeline.c +++ b/drivers/isdn/mISDN/dsp_pipeline.c @@ -97,6 +97,7 @@ int mISDN_dsp_element_register(struct mISDN_dsp_element *elem) if (!entry) return -ENOMEM; + INIT_LIST_HEAD(&entry->list); entry->elem = elem; entry->dev.class = elements_class; @@ -131,7 +132,7 @@ err2: device_unregister(&entry->dev); return ret; err1: - kfree(entry); + put_device(&entry->dev); return ret; } EXPORT_SYMBOL(mISDN_dsp_element_register); diff --git a/drivers/isdn/mISDN/l1oip.h b/drivers/isdn/mISDN/l1oip.h index 7ea10db20e3a..48133d022812 100644 --- a/drivers/isdn/mISDN/l1oip.h +++ b/drivers/isdn/mISDN/l1oip.h @@ -59,6 +59,7 @@ struct l1oip { int bundle; /* bundle channels in one frm */ int codec; /* codec to use for transmis. */ int limit; /* limit number of bchannels */ + bool shutdown; /* if card is released */ /* timer */ struct timer_list keep_tl; diff --git a/drivers/isdn/mISDN/l1oip_core.c b/drivers/isdn/mISDN/l1oip_core.c index b05022f94f18..2f4a01ab25e8 100644 --- a/drivers/isdn/mISDN/l1oip_core.c +++ b/drivers/isdn/mISDN/l1oip_core.c @@ -289,7 +289,7 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask, p = frame; /* restart timer */ - if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ)) + if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ) && !hc->shutdown) mod_timer(&hc->keep_tl, jiffies + L1OIP_KEEPALIVE * HZ); else hc->keep_tl.expires = jiffies + L1OIP_KEEPALIVE * HZ; @@ -615,7 +615,9 @@ multiframe: goto multiframe; /* restart timer */ - if (time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) || !hc->timeout_on) { + if ((time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) || + !hc->timeout_on) && + !hc->shutdown) { hc->timeout_on = 1; mod_timer(&hc->timeout_tl, jiffies + L1OIP_TIMEOUT * HZ); } else /* only adjust timer */ @@ -1247,11 +1249,10 @@ release_card(struct l1oip *hc) { int ch; - if (timer_pending(&hc->keep_tl)) - del_timer(&hc->keep_tl); + hc->shutdown = true; - if (timer_pending(&hc->timeout_tl)) - del_timer(&hc->timeout_tl); + del_timer_sync(&hc->keep_tl); + del_timer_sync(&hc->timeout_tl); cancel_work_sync(&hc->workq); diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c b/drivers/mailbox/bcm-flexrm-mailbox.c index 96bcabfebc23..543c4a4a8fca 100644 --- a/drivers/mailbox/bcm-flexrm-mailbox.c +++ b/drivers/mailbox/bcm-flexrm-mailbox.c @@ -634,15 +634,15 @@ static int flexrm_spu_dma_map(struct device *dev, struct brcm_message *msg) rc = dma_map_sg(dev, msg->spu.src, sg_nents(msg->spu.src), DMA_TO_DEVICE); - if (rc < 0) - return rc; + if (!rc) + return -EIO; rc = dma_map_sg(dev, msg->spu.dst, sg_nents(msg->spu.dst), DMA_FROM_DEVICE); - if (rc < 0) { + if (!rc) { dma_unmap_sg(dev, msg->spu.src, sg_nents(msg->spu.src), DMA_TO_DEVICE); - return rc; + return -EIO; } return 0; diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c index d9fa5ace66eb..37b91226a35e 100644 --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -2127,10 +2127,6 @@ static void integrity_writer(struct work_struct *w) unsigned prev_free_sectors; - /* the following test is not needed, but it tests the replay code */ - if (unlikely(dm_post_suspending(ic->ti)) && !ic->meta_dev) - return; - spin_lock_irq(&ic->endio_wait.lock); write_start = ic->committed_section; write_sections = ic->n_committed_sections; @@ -2466,8 +2462,7 @@ static void dm_integrity_postsuspend(struct dm_target *ti) drain_workqueue(ic->commit_wq); if (ic->mode == 'J') { - if (ic->meta_dev) - queue_work(ic->writer_wq, &ic->writer_work); + queue_work(ic->writer_wq, &ic->writer_work); drain_workqueue(ic->writer_wq); dm_integrity_flush_buffers(ic, true); } diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index e2bacaa074cc..e61f5d95f685 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -573,7 +573,7 @@ static void list_version_get_needed(struct target_type *tt, void *needed_param) size_t *needed = needed_param; *needed += sizeof(struct dm_target_versions); - *needed += strlen(tt->name); + *needed += strlen(tt->name) + 1; *needed += ALIGN_MASK; } @@ -628,7 +628,7 @@ static int list_versions(struct file *filp, struct dm_ioctl *param, size_t param iter_info.old_vers = NULL; iter_info.vers = vers; iter_info.flags = 0; - iter_info.end = (char *)vers+len; + iter_info.end = (char *)vers + needed; /* * Now loop through filling out the names & versions. diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index 2a782c4f4710..252ef0eab41c 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -70,8 +70,8 @@ static void dump_zones(struct mddev *mddev) int len = 0; for (k = 0; k < conf->strip_zone[j].nb_dev; k++) - len += snprintf(line+len, 200-len, "%s%s", k?"/":"", - bdevname(conf->devlist[j*raid_disks + len += scnprintf(line+len, 200-len, "%s%s", k?"/":"", + bdevname(conf->devlist[j*raid_disks + k]->bdev, b)); pr_debug("md: zone%d=[%s]\n", j, line); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 6f04473f0838..7fe0619c487a 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -44,6 +44,7 @@ */ #include <linux/blkdev.h> +#include <linux/delay.h> #include <linux/kthread.h> #include <linux/raid/pq.h> #include <linux/async_tx.h> @@ -3723,7 +3724,7 @@ static void handle_stripe_fill(struct stripe_head *sh, * back cache (prexor with orig_page, and then xor with * page) in the read path */ - if (s->injournal && s->failed) { + if (s->to_read && s->injournal && s->failed) { if (test_bit(STRIPE_R5C_CACHING, &sh->state)) r5c_make_stripe_write_out(sh); goto out; @@ -6329,7 +6330,18 @@ static void raid5d(struct md_thread *thread) spin_unlock_irq(&conf->device_lock); md_check_recovery(mddev); spin_lock_irq(&conf->device_lock); + + /* + * Waiting on MD_SB_CHANGE_PENDING below may deadlock + * seeing md_check_recovery() is needed to clear + * the flag when using mdmon. + */ + continue; } + + wait_event_lock_irq(mddev->sb_wait, + !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags), + conf->device_lock); } pr_debug("%d stripes handled\n", handled); diff --git a/drivers/media/dvb-frontends/drxk_hard.c b/drivers/media/dvb-frontends/drxk_hard.c index 84ac3f73f8fe..100a3a0b2db3 100644 --- a/drivers/media/dvb-frontends/drxk_hard.c +++ b/drivers/media/dvb-frontends/drxk_hard.c @@ -6694,7 +6694,7 @@ static int drxk_read_snr(struct dvb_frontend *fe, u16 *snr) static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) { struct drxk_state *state = fe->demodulator_priv; - u16 err; + u16 err = 0; dprintk(1, "\n"); diff --git a/drivers/media/pci/cx88/cx88-vbi.c b/drivers/media/pci/cx88/cx88-vbi.c index 58489ea0c1da..7cf2271866d0 100644 --- a/drivers/media/pci/cx88/cx88-vbi.c +++ b/drivers/media/pci/cx88/cx88-vbi.c @@ -144,11 +144,10 @@ static int buffer_prepare(struct vb2_buffer *vb) return -EINVAL; vb2_set_plane_payload(vb, 0, size); - cx88_risc_buffer(dev->pci, &buf->risc, sgt->sgl, - 0, VBI_LINE_LENGTH * lines, - VBI_LINE_LENGTH, 0, - lines); - return 0; + return cx88_risc_buffer(dev->pci, &buf->risc, sgt->sgl, + 0, VBI_LINE_LENGTH * lines, + VBI_LINE_LENGTH, 0, + lines); } static void buffer_finish(struct vb2_buffer *vb) diff --git a/drivers/media/pci/cx88/cx88-video.c b/drivers/media/pci/cx88/cx88-video.c index 248fb3b6833c..2bc5080198bb 100644 --- a/drivers/media/pci/cx88/cx88-video.c +++ b/drivers/media/pci/cx88/cx88-video.c @@ -452,6 +452,7 @@ static int queue_setup(struct vb2_queue *q, static int buffer_prepare(struct vb2_buffer *vb) { + int ret; struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); struct cx8800_dev *dev = vb->vb2_queue->drv_priv; struct cx88_core *core = dev->core; @@ -466,35 +467,35 @@ static int buffer_prepare(struct vb2_buffer *vb) switch (core->field) { case V4L2_FIELD_TOP: - cx88_risc_buffer(dev->pci, &buf->risc, - sgt->sgl, 0, UNSET, - buf->bpl, 0, core->height); + ret = cx88_risc_buffer(dev->pci, &buf->risc, + sgt->sgl, 0, UNSET, + buf->bpl, 0, core->height); break; case V4L2_FIELD_BOTTOM: - cx88_risc_buffer(dev->pci, &buf->risc, - sgt->sgl, UNSET, 0, - buf->bpl, 0, core->height); + ret = cx88_risc_buffer(dev->pci, &buf->risc, + sgt->sgl, UNSET, 0, + buf->bpl, 0, core->height); break; case V4L2_FIELD_SEQ_TB: - cx88_risc_buffer(dev->pci, &buf->risc, - sgt->sgl, - 0, buf->bpl * (core->height >> 1), - buf->bpl, 0, - core->height >> 1); + ret = cx88_risc_buffer(dev->pci, &buf->risc, + sgt->sgl, + 0, buf->bpl * (core->height >> 1), + buf->bpl, 0, + core->height >> 1); break; case V4L2_FIELD_SEQ_BT: - cx88_risc_buffer(dev->pci, &buf->risc, - sgt->sgl, - buf->bpl * (core->height >> 1), 0, - buf->bpl, 0, - core->height >> 1); + ret = cx88_risc_buffer(dev->pci, &buf->risc, + sgt->sgl, + buf->bpl * (core->height >> 1), 0, + buf->bpl, 0, + core->height >> 1); break; case V4L2_FIELD_INTERLACED: default: - cx88_risc_buffer(dev->pci, &buf->risc, - sgt->sgl, 0, buf->bpl, - buf->bpl, buf->bpl, - core->height >> 1); + ret = cx88_risc_buffer(dev->pci, &buf->risc, + sgt->sgl, 0, buf->bpl, + buf->bpl, buf->bpl, + core->height >> 1); break; } dprintk(2, @@ -502,7 +503,7 @@ static int buffer_prepare(struct vb2_buffer *vb) buf, buf->vb.vb2_buf.index, core->width, core->height, dev->fmt->depth, dev->fmt->name, (unsigned long)buf->risc.dma); - return 0; + return ret; } static void buffer_finish(struct vb2_buffer *vb) diff --git a/drivers/media/platform/cros-ec-cec/cros-ec-cec.c b/drivers/media/platform/cros-ec-cec/cros-ec-cec.c index 7bc4d8a9af28..1f35770245d1 100644 --- a/drivers/media/platform/cros-ec-cec/cros-ec-cec.c +++ b/drivers/media/platform/cros-ec-cec/cros-ec-cec.c @@ -44,6 +44,8 @@ static void handle_cec_message(struct cros_ec_cec *cros_ec_cec) uint8_t *cec_message = cros_ec->event_data.data.cec_message; unsigned int len = cros_ec->event_size; + if (len > CEC_MAX_MSG_SIZE) + len = CEC_MAX_MSG_SIZE; cros_ec_cec->rx_msg.len = len; memcpy(cros_ec_cec->rx_msg.msg, cec_message, len); diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c index 0f3f82bd4d20..6f59fe02c727 100644 --- a/drivers/media/platform/exynos4-is/fimc-is.c +++ b/drivers/media/platform/exynos4-is/fimc-is.c @@ -217,6 +217,7 @@ static int fimc_is_register_subdevs(struct fimc_is *is) if (ret < 0 || index >= FIMC_IS_SENSORS_NUM) { of_node_put(child); + of_node_put(i2c_bus); return ret; } index++; diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c index e3972dbf4c9a..177a1bf2b8e0 100644 --- a/drivers/media/platform/qcom/venus/vdec.c +++ b/drivers/media/platform/qcom/venus/vdec.c @@ -155,6 +155,8 @@ vdec_try_fmt_common(struct venus_inst *inst, struct v4l2_format *f) else return NULL; fmt = find_format(inst, pixmp->pixelformat, f->type); + if (!fmt) + return NULL; } pixmp->width = clamp(pixmp->width, frame_width_min(inst), diff --git a/drivers/media/platform/s5p-cec/s5p_cec.c b/drivers/media/platform/s5p-cec/s5p_cec.c index 3032247c63a5..554c8f2b60b8 100644 --- a/drivers/media/platform/s5p-cec/s5p_cec.c +++ b/drivers/media/platform/s5p-cec/s5p_cec.c @@ -116,6 +116,8 @@ static irqreturn_t s5p_cec_irq_handler(int irq, void *priv) dev_dbg(cec->dev, "Buffer overrun (worker did not process previous message)\n"); cec->rx = STATE_BUSY; cec->msg.len = status >> 24; + if (cec->msg.len > CEC_MAX_MSG_SIZE) + cec->msg.len = CEC_MAX_MSG_SIZE; cec->msg.rx_status = CEC_RX_STATUS_OK; s5p_cec_get_rx_buf(cec, cec->msg.len, cec->msg.msg); diff --git a/drivers/media/platform/vivid/vivid-core.c b/drivers/media/platform/vivid/vivid-core.c index b603ca412387..e8cd189ec9ef 100644 --- a/drivers/media/platform/vivid/vivid-core.c +++ b/drivers/media/platform/vivid/vivid-core.c @@ -297,6 +297,28 @@ static int vidioc_g_fbuf(struct file *file, void *fh, struct v4l2_framebuffer *a return vivid_vid_out_g_fbuf(file, fh, a); } +/* + * Only support the framebuffer of one of the vivid instances. + * Anything else is rejected. + */ +bool vivid_validate_fb(const struct v4l2_framebuffer *a) +{ + struct vivid_dev *dev; + int i; + + for (i = 0; i < n_devs; i++) { + dev = vivid_devs[i]; + if (!dev || !dev->video_pbase) + continue; + if ((unsigned long)a->base == dev->video_pbase && + a->fmt.width <= dev->display_width && + a->fmt.height <= dev->display_height && + a->fmt.bytesperline <= dev->display_byte_stride) + return true; + } + return false; +} + static int vidioc_s_fbuf(struct file *file, void *fh, const struct v4l2_framebuffer *a) { struct video_device *vdev = video_devdata(file); diff --git a/drivers/media/platform/vivid/vivid-core.h b/drivers/media/platform/vivid/vivid-core.h index cd4c8230563c..6ea4448dfb7c 100644 --- a/drivers/media/platform/vivid/vivid-core.h +++ b/drivers/media/platform/vivid/vivid-core.h @@ -551,4 +551,6 @@ static inline bool vivid_is_hdmi_out(const struct vivid_dev *dev) return dev->output_type[dev->output] == HDMI; } +bool vivid_validate_fb(const struct v4l2_framebuffer *a); + #endif diff --git a/drivers/media/platform/vivid/vivid-vid-cap.c b/drivers/media/platform/vivid/vivid-vid-cap.c index c58ae489f39c..48f2c9c96fc9 100644 --- a/drivers/media/platform/vivid/vivid-vid-cap.c +++ b/drivers/media/platform/vivid/vivid-vid-cap.c @@ -441,6 +441,12 @@ void vivid_update_format_cap(struct vivid_dev *dev, bool keep_controls) tpg_reset_source(&dev->tpg, dev->src_rect.width, dev->src_rect.height, dev->field_cap); dev->crop_cap = dev->src_rect; dev->crop_bounds_cap = dev->src_rect; + if (dev->bitmap_cap && + (dev->compose_cap.width != dev->crop_cap.width || + dev->compose_cap.height != dev->crop_cap.height)) { + vfree(dev->bitmap_cap); + dev->bitmap_cap = NULL; + } dev->compose_cap = dev->crop_cap; if (V4L2_FIELD_HAS_T_OR_B(dev->field_cap)) dev->compose_cap.height /= 2; @@ -871,6 +877,8 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection struct vivid_dev *dev = video_drvdata(file); struct v4l2_rect *crop = &dev->crop_cap; struct v4l2_rect *compose = &dev->compose_cap; + unsigned orig_compose_w = compose->width; + unsigned orig_compose_h = compose->height; unsigned factor = V4L2_FIELD_HAS_T_OR_B(dev->field_cap) ? 2 : 1; int ret; @@ -987,17 +995,17 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection s->r.height /= factor; } v4l2_rect_map_inside(&s->r, &dev->fmt_cap_rect); - if (dev->bitmap_cap && (compose->width != s->r.width || - compose->height != s->r.height)) { - vfree(dev->bitmap_cap); - dev->bitmap_cap = NULL; - } *compose = s->r; break; default: return -EINVAL; } + if (dev->bitmap_cap && (compose->width != orig_compose_w || + compose->height != orig_compose_h)) { + vfree(dev->bitmap_cap); + dev->bitmap_cap = NULL; + } tpg_s_crop_compose(&dev->tpg, crop, compose); return 0; } @@ -1240,7 +1248,14 @@ int vivid_vid_cap_s_fbuf(struct file *file, void *fh, return -EINVAL; if (a->fmt.bytesperline < (a->fmt.width * fmt->bit_depth[0]) / 8) return -EINVAL; - if (a->fmt.height * a->fmt.bytesperline < a->fmt.sizeimage) + if (a->fmt.bytesperline > a->fmt.sizeimage / a->fmt.height) + return -EINVAL; + + /* + * Only support the framebuffer of one of the vivid instances. + * Anything else is rejected. + */ + if (!vivid_validate_fb(a)) return -EINVAL; dev->fb_vbase_cap = phys_to_virt((unsigned long)a->base); diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c index 6d95ec1e9a6b..9177db789b07 100644 --- a/drivers/media/platform/xilinx/xilinx-vipp.c +++ b/drivers/media/platform/xilinx/xilinx-vipp.c @@ -464,7 +464,7 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev) { struct device_node *ports; struct device_node *port; - int ret; + int ret = 0; ports = of_get_child_by_name(xdev->dev->of_node, "ports"); if (ports == NULL) { @@ -474,13 +474,14 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev) for_each_child_of_node(ports, port) { ret = xvip_graph_dma_init_one(xdev, port); - if (ret < 0) { + if (ret) { of_node_put(port); - return ret; + break; } } - return 0; + of_node_put(ports); + return ret; } static void xvip_graph_cleanup(struct xvip_composite_device *xdev) diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c b/drivers/media/v4l2-core/v4l2-dv-timings.c index af38c989ff33..ec7d7f643ea7 100644 --- a/drivers/media/v4l2-core/v4l2-dv-timings.c +++ b/drivers/media/v4l2-core/v4l2-dv-timings.c @@ -145,6 +145,8 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t, const struct v4l2_bt_timings *bt = &t->bt; const struct v4l2_bt_timings_cap *cap = &dvcap->bt; u32 caps = cap->capabilities; + const u32 max_vert = 10240; + u32 max_hor = 3 * bt->width; if (t->type != V4L2_DV_BT_656_1120) return false; @@ -161,6 +163,26 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t, (bt->interlaced && !(caps & V4L2_DV_BT_CAP_INTERLACED)) || (!bt->interlaced && !(caps & V4L2_DV_BT_CAP_PROGRESSIVE))) return false; + + /* sanity checks for the blanking timings */ + if (!bt->interlaced && + (bt->il_vbackporch || bt->il_vsync || bt->il_vfrontporch)) + return false; + /* + * Some video receivers cannot properly separate the frontporch, + * backporch and sync values, and instead they only have the total + * blanking. That can be assigned to any of these three fields. + * So just check that none of these are way out of range. + */ + if (bt->hfrontporch > max_hor || + bt->hsync > max_hor || bt->hbackporch > max_hor) + return false; + if (bt->vfrontporch > max_vert || + bt->vsync > max_vert || bt->vbackporch > max_vert) + return false; + if (bt->interlaced && (bt->il_vfrontporch > max_vert || + bt->il_vsync > max_vert || bt->il_vbackporch > max_vert)) + return false; return fnc == NULL || fnc(t, fnc_handle); } EXPORT_SYMBOL_GPL(v4l2_valid_dv_timings); diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c index fc237b820c4f..75c51007768e 100644 --- a/drivers/media/v4l2-core/v4l2-mem2mem.c +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c @@ -445,19 +445,14 @@ int v4l2_m2m_reqbufs(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, } EXPORT_SYMBOL_GPL(v4l2_m2m_reqbufs); -int v4l2_m2m_querybuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, - struct v4l2_buffer *buf) +static void v4l2_m2m_adjust_mem_offset(struct vb2_queue *vq, + struct v4l2_buffer *buf) { - struct vb2_queue *vq; - int ret = 0; - unsigned int i; - - vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); - ret = vb2_querybuf(vq, buf); - /* Adjust MMAP memory offsets for the CAPTURE queue */ if (buf->memory == V4L2_MEMORY_MMAP && !V4L2_TYPE_IS_OUTPUT(vq->type)) { if (V4L2_TYPE_IS_MULTIPLANAR(vq->type)) { + unsigned int i; + for (i = 0; i < buf->length; ++i) buf->m.planes[i].m.mem_offset += DST_QUEUE_OFF_BASE; @@ -465,8 +460,23 @@ int v4l2_m2m_querybuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, buf->m.offset += DST_QUEUE_OFF_BASE; } } +} - return ret; +int v4l2_m2m_querybuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, + struct v4l2_buffer *buf) +{ + struct vb2_queue *vq; + int ret; + + vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); + ret = vb2_querybuf(vq, buf); + if (ret) + return ret; + + /* Adjust MMAP memory offsets for the CAPTURE queue */ + v4l2_m2m_adjust_mem_offset(vq, buf); + + return 0; } EXPORT_SYMBOL_GPL(v4l2_m2m_querybuf); @@ -478,10 +488,15 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); ret = vb2_qbuf(vq, buf); - if (!ret) - v4l2_m2m_try_schedule(m2m_ctx); + if (ret) + return ret; - return ret; + /* Adjust MMAP memory offsets for the CAPTURE queue */ + v4l2_m2m_adjust_mem_offset(vq, buf); + + v4l2_m2m_try_schedule(m2m_ctx); + + return 0; } EXPORT_SYMBOL_GPL(v4l2_m2m_qbuf); @@ -489,9 +504,17 @@ int v4l2_m2m_dqbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, struct v4l2_buffer *buf) { struct vb2_queue *vq; + int ret; vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); - return vb2_dqbuf(vq, buf, file->f_flags & O_NONBLOCK); + ret = vb2_dqbuf(vq, buf, file->f_flags & O_NONBLOCK); + if (ret) + return ret; + + /* Adjust MMAP memory offsets for the CAPTURE queue */ + v4l2_m2m_adjust_mem_offset(vq, buf); + + return 0; } EXPORT_SYMBOL_GPL(v4l2_m2m_dqbuf); @@ -503,10 +526,15 @@ int v4l2_m2m_prepare_buf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, vq = v4l2_m2m_get_vq(m2m_ctx, buf->type); ret = vb2_prepare_buf(vq, buf); - if (!ret) - v4l2_m2m_try_schedule(m2m_ctx); + if (ret) + return ret; - return ret; + /* Adjust MMAP memory offsets for the CAPTURE queue */ + v4l2_m2m_adjust_mem_offset(vq, buf); + + v4l2_m2m_try_schedule(m2m_ctx); + + return 0; } EXPORT_SYMBOL_GPL(v4l2_m2m_prepare_buf); diff --git a/drivers/memory/of_memory.c b/drivers/memory/of_memory.c index 2f5ed7366eec..83a559d48f93 100644 --- a/drivers/memory/of_memory.c +++ b/drivers/memory/of_memory.c @@ -135,6 +135,7 @@ const struct lpddr2_timings *of_get_ddr_timings(struct device_node *np_ddr, for_each_child_of_node(np_ddr, np_tim) { if (of_device_is_compatible(np_tim, tim_compat)) { if (of_do_get_timings(np_tim, &timings[i])) { + of_node_put(np_tim); devm_kfree(dev, timings); goto default_timings; } diff --git a/drivers/mfd/fsl-imx25-tsadc.c b/drivers/mfd/fsl-imx25-tsadc.c index dbb85caaafed..2718fcb26786 100644 --- a/drivers/mfd/fsl-imx25-tsadc.c +++ b/drivers/mfd/fsl-imx25-tsadc.c @@ -89,6 +89,19 @@ static int mx25_tsadc_setup_irq(struct platform_device *pdev, return 0; } +static int mx25_tsadc_unset_irq(struct platform_device *pdev) +{ + struct mx25_tsadc *tsadc = platform_get_drvdata(pdev); + int irq = platform_get_irq(pdev, 0); + + if (irq) { + irq_set_chained_handler_and_data(irq, NULL, NULL); + irq_domain_remove(tsadc->domain); + } + + return 0; +} + static void mx25_tsadc_setup_clk(struct platform_device *pdev, struct mx25_tsadc *tsadc) { @@ -176,18 +189,21 @@ static int mx25_tsadc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, tsadc); - return devm_of_platform_populate(dev); + ret = devm_of_platform_populate(dev); + if (ret) + goto err_irq; + + return 0; + +err_irq: + mx25_tsadc_unset_irq(pdev); + + return ret; } static int mx25_tsadc_remove(struct platform_device *pdev) { - struct mx25_tsadc *tsadc = platform_get_drvdata(pdev); - int irq = platform_get_irq(pdev, 0); - - if (irq) { - irq_set_chained_handler_and_data(irq, NULL, NULL); - irq_domain_remove(tsadc->domain); - } + mx25_tsadc_unset_irq(pdev); return 0; } diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c index 274306d98ac1..75a2a793ac14 100644 --- a/drivers/mfd/intel_soc_pmic_core.c +++ b/drivers/mfd/intel_soc_pmic_core.c @@ -118,6 +118,7 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c, return 0; err_del_irq_chip: + pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup)); regmap_del_irq_chip(pmic->irq, pmic->irq_chip_data); return ret; } diff --git a/drivers/mfd/lp8788-irq.c b/drivers/mfd/lp8788-irq.c index 792d51bae20f..ae65928f35f0 100644 --- a/drivers/mfd/lp8788-irq.c +++ b/drivers/mfd/lp8788-irq.c @@ -179,6 +179,7 @@ int lp8788_irq_init(struct lp8788 *lp, int irq) IRQF_TRIGGER_FALLING | IRQF_ONESHOT, "lp8788-irq", irqd); if (ret) { + irq_domain_remove(lp->irqdm); dev_err(lp->dev, "failed to create a thread for IRQ_N\n"); return ret; } @@ -192,4 +193,6 @@ void lp8788_irq_exit(struct lp8788 *lp) { if (lp->irq) free_irq(lp->irq, lp->irqdm); + if (lp->irqdm) + irq_domain_remove(lp->irqdm); } diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c index acf616559512..e47150cdf747 100644 --- a/drivers/mfd/lp8788.c +++ b/drivers/mfd/lp8788.c @@ -199,8 +199,16 @@ static int lp8788_probe(struct i2c_client *cl, const struct i2c_device_id *id) if (ret) return ret; - return mfd_add_devices(lp->dev, -1, lp8788_devs, - ARRAY_SIZE(lp8788_devs), NULL, 0, NULL); + ret = mfd_add_devices(lp->dev, -1, lp8788_devs, + ARRAY_SIZE(lp8788_devs), NULL, 0, NULL); + if (ret) + goto err_exit_irq; + + return 0; + +err_exit_irq: + lp8788_irq_exit(lp); + return ret; } static int lp8788_remove(struct i2c_client *cl) diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c index ec1ac61a21ed..6254b4025b5e 100644 --- a/drivers/mfd/sm501.c +++ b/drivers/mfd/sm501.c @@ -1738,7 +1738,12 @@ static struct platform_driver sm501_plat_driver = { static int __init sm501_base_init(void) { - platform_driver_register(&sm501_plat_driver); + int ret; + + ret = platform_driver_register(&sm501_plat_driver); + if (ret < 0) + return ret; + return pci_register_driver(&sm501_pci_driver); } diff --git a/drivers/misc/vmw_vmci/vmci_queue_pair.c b/drivers/misc/vmw_vmci/vmci_queue_pair.c index db433d285eff..e353ad27ad30 100644 --- a/drivers/misc/vmw_vmci/vmci_queue_pair.c +++ b/drivers/misc/vmw_vmci/vmci_queue_pair.c @@ -865,6 +865,7 @@ static int qp_notify_peer_local(bool attach, struct vmci_handle handle) u32 context_id = vmci_get_context_id(); struct vmci_event_qp ev; + memset(&ev, 0, sizeof(ev)); ev.msg.hdr.dst = vmci_make_handle(context_id, VMCI_EVENT_HANDLER); ev.msg.hdr.src = vmci_make_handle(VMCI_HYPERVISOR_CONTEXT_ID, VMCI_CONTEXT_RESOURCE_ID); @@ -1476,6 +1477,7 @@ static int qp_notify_peer(bool attach, * kernel. */ + memset(&ev, 0, sizeof(ev)); ev.msg.hdr.dst = vmci_make_handle(peer_id, VMCI_EVENT_HANDLER); ev.msg.hdr.src = vmci_make_handle(VMCI_HYPERVISOR_CONTEXT_ID, VMCI_CONTEXT_RESOURCE_ID); diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 57b788a69720..e62e64172c81 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -2384,7 +2384,13 @@ u32 mmc_select_voltage(struct mmc_host *host, u32 ocr) mmc_power_cycle(host, ocr); } else { bit = fls(ocr) - 1; - ocr &= 3 << bit; + /* + * The bit variable represents the highest voltage bit set in + * the OCR register. + * To keep a range of 2 values (e.g. 3.2V/3.3V and 3.3V/3.4V), + * we must shift the mask '3' with (bit - 1). + */ + ocr &= 3 << (bit - 1); if (bit != host->ios.vdd) dev_warn(mmc_dev(host), "exceeding card's volts\n"); } diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index 966267280b6f..2b8b82c47c22 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -884,7 +884,8 @@ try_again: * the CCS bit is set as well. We deliberately deviate from the spec in * regards to this, which allows UHS-I to be supported for SDSC cards. */ - if (!mmc_host_is_spi(host) && rocr && (*rocr & 0x01000000)) { + if (!mmc_host_is_spi(host) && (ocr & SD_OCR_S18R) && + rocr && (*rocr & SD_ROCR_S18A)) { err = mmc_set_uhs_voltage(host, pocr); if (err == -EAGAIN) { retries--; diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c index b6d8203e46eb..8aebdc4ff623 100644 --- a/drivers/mmc/core/sdio_bus.c +++ b/drivers/mmc/core/sdio_bus.c @@ -264,7 +264,8 @@ static void sdio_release_func(struct device *dev) { struct sdio_func *func = dev_to_sdio_func(dev); - sdio_free_func_cis(func); + if (!(func->card->quirks & MMC_QUIRK_NONSTD_SDIO)) + sdio_free_func_cis(func); kfree(func->info); kfree(func->tmpbuf); diff --git a/drivers/mmc/host/au1xmmc.c b/drivers/mmc/host/au1xmmc.c index 9b4be67330dd..7cd0551aec78 100644 --- a/drivers/mmc/host/au1xmmc.c +++ b/drivers/mmc/host/au1xmmc.c @@ -1118,8 +1118,9 @@ out5: if (host->platdata && host->platdata->cd_setup && !(mmc->caps & MMC_CAP_NEEDS_POLL)) host->platdata->cd_setup(mmc, 0); -out_clk: + clk_disable_unprepare(host->clk); +out_clk: clk_put(host->clk); out_irq: free_irq(host->irq, host); diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index a00d6f592254..0e641aa080ba 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -1529,6 +1529,8 @@ static int amd_probe(struct sdhci_pci_chip *chip) } } + pci_dev_put(smbus_dev); + if (gen == AMD_CHIPSET_BEFORE_ML || gen == AMD_CHIPSET_CZ) chip->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD; diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 06ae97e69a91..e2a54538cea8 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -13,6 +13,7 @@ * - JMicron (hardware and technical support) */ +#include <linux/bitfield.h> #include <linux/delay.h> #include <linux/ktime.h> #include <linux/highmem.h> @@ -344,6 +345,7 @@ static void sdhci_init(struct sdhci_host *host, int soft) if (soft) { /* force clock reconfiguration */ host->clock = 0; + host->reinit_uhs = true; mmc->ops->set_ios(mmc, &mmc->ios); } } @@ -1569,10 +1571,9 @@ u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock, clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL); pre_val = sdhci_get_preset_value(host); - div = (pre_val & SDHCI_PRESET_SDCLK_FREQ_MASK) - >> SDHCI_PRESET_SDCLK_FREQ_SHIFT; + div = FIELD_GET(SDHCI_PRESET_SDCLK_FREQ_MASK, pre_val); if (host->clk_mul && - (pre_val & SDHCI_PRESET_CLKGEN_SEL_MASK)) { + (pre_val & SDHCI_PRESET_CLKGEN_SEL)) { clk = SDHCI_PROG_CLOCK_MODE; real_div = div + 1; clk_mul = host->clk_mul; @@ -2056,13 +2057,48 @@ void sdhci_cfg_irq(struct sdhci_host *host, bool enable, bool sync) } EXPORT_SYMBOL(sdhci_cfg_irq); +static bool sdhci_timing_has_preset(unsigned char timing) +{ + switch (timing) { + case MMC_TIMING_UHS_SDR12: + case MMC_TIMING_UHS_SDR25: + case MMC_TIMING_UHS_SDR50: + case MMC_TIMING_UHS_SDR104: + case MMC_TIMING_UHS_DDR50: + case MMC_TIMING_MMC_DDR52: + return true; + }; + return false; +} + +static bool sdhci_preset_needed(struct sdhci_host *host, unsigned char timing) +{ + return !(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN) && + sdhci_timing_has_preset(timing); +} + +static bool sdhci_presetable_values_change(struct sdhci_host *host, struct mmc_ios *ios) +{ + /* + * Preset Values are: Driver Strength, Clock Generator and SDCLK/RCLK + * Frequency. Check if preset values need to be enabled, or the Driver + * Strength needs updating. Note, clock changes are handled separately. + */ + return !host->preset_enabled && + (sdhci_preset_needed(host, ios->timing) || host->drv_type != ios->drv_type); +} + void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) { struct sdhci_host *host = mmc_priv(mmc); unsigned long flags; + bool reinit_uhs = host->reinit_uhs; + bool turning_on_clk = false; u8 ctrl; int ret; + host->reinit_uhs = false; + if (ios->power_mode == MMC_POWER_UNDEFINED) return; @@ -2150,6 +2186,17 @@ void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) host->ops->set_bus_width(host, ios->bus_width); + /* + * Special case to avoid multiple clock changes during voltage + * switching. + */ + if (!reinit_uhs && + turning_on_clk && + host->timing == ios->timing && + host->version >= SDHCI_SPEC_300 && + !sdhci_presetable_values_change(host, ios)) + return; + ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); if (!(host->quirks & SDHCI_QUIRK_NO_HISPD_BIT)) { @@ -2193,6 +2240,7 @@ void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) } sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2); + host->drv_type = ios->drv_type; } else { /* * According to SDHC Spec v3.00, if the Preset Value @@ -2224,19 +2272,14 @@ void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) host->ops->set_uhs_signaling(host, ios->timing); host->timing = ios->timing; - if (!(host->quirks2 & SDHCI_QUIRK2_PRESET_VALUE_BROKEN) && - ((ios->timing == MMC_TIMING_UHS_SDR12) || - (ios->timing == MMC_TIMING_UHS_SDR25) || - (ios->timing == MMC_TIMING_UHS_SDR50) || - (ios->timing == MMC_TIMING_UHS_SDR104) || - (ios->timing == MMC_TIMING_UHS_DDR50) || - (ios->timing == MMC_TIMING_MMC_DDR52))) { + if (sdhci_preset_needed(host, ios->timing)) { u16 preset; sdhci_enable_preset_value(host, true); preset = sdhci_get_preset_value(host); - ios->drv_type = (preset & SDHCI_PRESET_DRV_MASK) - >> SDHCI_PRESET_DRV_SHIFT; + ios->drv_type = FIELD_GET(SDHCI_PRESET_DRV_MASK, + preset); + host->drv_type = ios->drv_type; } /* Re-enable SD Clock */ @@ -3742,6 +3785,7 @@ int sdhci_resume_host(struct sdhci_host *host) sdhci_init(host, 0); host->pwr = 0; host->clock = 0; + host->reinit_uhs = true; mmc->ops->set_ios(mmc, &mmc->ios); } else { sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER)); @@ -3805,6 +3849,7 @@ int sdhci_runtime_resume_host(struct sdhci_host *host) /* Force clock and power re-program */ host->pwr = 0; host->clock = 0; + host->reinit_uhs = true; mmc->ops->start_signal_voltage_switch(mmc, &mmc->ios); mmc->ops->set_ios(mmc, &mmc->ios); diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index cb1b70500b02..0c5680703a10 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -13,6 +13,7 @@ #ifndef __SDHCI_HW_H #define __SDHCI_HW_H +#include <linux/bits.h> #include <linux/scatterlist.h> #include <linux/compiler.h> #include <linux/types.h> @@ -266,12 +267,9 @@ #define SDHCI_PRESET_FOR_SDR104 0x6C #define SDHCI_PRESET_FOR_DDR50 0x6E #define SDHCI_PRESET_FOR_HS400 0x74 /* Non-standard */ -#define SDHCI_PRESET_DRV_MASK 0xC000 -#define SDHCI_PRESET_DRV_SHIFT 14 -#define SDHCI_PRESET_CLKGEN_SEL_MASK 0x400 -#define SDHCI_PRESET_CLKGEN_SEL_SHIFT 10 -#define SDHCI_PRESET_SDCLK_FREQ_MASK 0x3FF -#define SDHCI_PRESET_SDCLK_FREQ_SHIFT 0 +#define SDHCI_PRESET_DRV_MASK GENMASK(15, 14) +#define SDHCI_PRESET_CLKGEN_SEL BIT(10) +#define SDHCI_PRESET_SDCLK_FREQ_MASK GENMASK(9, 0) #define SDHCI_SLOT_INT_STATUS 0xFC @@ -600,6 +598,8 @@ struct sdhci_host { unsigned int clock; /* Current clock (MHz) */ u8 pwr; /* Current voltage */ + u8 drv_type; /* Current UHS-I driver type */ + bool reinit_uhs; /* Force UHS-related re-initialization */ bool runtime_suspended; /* Host is runtime suspended */ bool bus_on; /* Bus power prevents runtime suspend */ diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c index 3ba42f508014..f8b169684693 100644 --- a/drivers/mmc/host/wmt-sdmmc.c +++ b/drivers/mmc/host/wmt-sdmmc.c @@ -853,7 +853,7 @@ static int wmt_mci_probe(struct platform_device *pdev) if (IS_ERR(priv->clk_sdmmc)) { dev_err(&pdev->dev, "Error getting clock\n"); ret = PTR_ERR(priv->clk_sdmmc); - goto fail5; + goto fail5_and_a_half; } ret = clk_prepare_enable(priv->clk_sdmmc); @@ -870,6 +870,9 @@ static int wmt_mci_probe(struct platform_device *pdev) return 0; fail6: clk_put(priv->clk_sdmmc); +fail5_and_a_half: + dma_free_coherent(&pdev->dev, mmc->max_blk_count * 16, + priv->dma_desc_buffer, priv->dma_desc_device_addr); fail5: free_irq(dma_irq, priv); fail4: diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c index 512bd4c2eec0..740a09c9f67a 100644 --- a/drivers/mtd/devices/docg3.c +++ b/drivers/mtd/devices/docg3.c @@ -1990,9 +1990,14 @@ static int __init docg3_probe(struct platform_device *pdev) dev_err(dev, "No I/O memory resource defined\n"); return ret; } - base = devm_ioremap(dev, ress->start, DOC_IOSPACE_SIZE); ret = -ENOMEM; + base = devm_ioremap(dev, ress->start, DOC_IOSPACE_SIZE); + if (!base) { + dev_err(dev, "devm_ioremap dev failed\n"); + return ret; + } + cascade = devm_kcalloc(dev, DOC_MAX_NBFLOORS, sizeof(*cascade), GFP_KERNEL); if (!cascade) diff --git a/drivers/mtd/nand/raw/atmel/nand-controller.c b/drivers/mtd/nand/raw/atmel/nand-controller.c index b2ffd22fec31..0a420b068adb 100644 --- a/drivers/mtd/nand/raw/atmel/nand-controller.c +++ b/drivers/mtd/nand/raw/atmel/nand-controller.c @@ -398,6 +398,7 @@ static int atmel_nand_dma_transfer(struct atmel_nand_controller *nc, dma_async_issue_pending(nc->dmac); wait_for_completion(&finished); + dma_unmap_single(nc->dev, buf_dma, len, dir); return 0; diff --git a/drivers/mtd/spi-nor/intel-spi.c b/drivers/mtd/spi-nor/intel-spi.c index d60cbf23d9aa..642a6f9071f2 100644 --- a/drivers/mtd/spi-nor/intel-spi.c +++ b/drivers/mtd/spi-nor/intel-spi.c @@ -116,7 +116,7 @@ #define ERASE_OPCODE_SHIFT 8 #define ERASE_OPCODE_MASK (0xff << ERASE_OPCODE_SHIFT) #define ERASE_64K_OPCODE_SHIFT 16 -#define ERASE_64K_OPCODE_MASK (0xff << ERASE_OPCODE_SHIFT) +#define ERASE_64K_OPCODE_MASK (0xff << ERASE_64K_OPCODE_SHIFT) #define INTEL_SPI_TIMEOUT 5000 /* ms */ #define INTEL_SPI_FIFO_SZ 64 diff --git a/drivers/net/can/cc770/cc770_isa.c b/drivers/net/can/cc770/cc770_isa.c index fcd34698074f..9f2bc66572e4 100644 --- a/drivers/net/can/cc770/cc770_isa.c +++ b/drivers/net/can/cc770/cc770_isa.c @@ -272,22 +272,24 @@ static int cc770_isa_probe(struct platform_device *pdev) if (err) { dev_err(&pdev->dev, "couldn't register device (err=%d)\n", err); - goto exit_unmap; + goto exit_free; } dev_info(&pdev->dev, "device registered (reg_base=0x%p, irq=%d)\n", priv->reg_base, dev->irq); return 0; - exit_unmap: +exit_free: + free_cc770dev(dev); +exit_unmap: if (mem[idx]) iounmap(base); - exit_release: +exit_release: if (mem[idx]) release_mem_region(mem[idx], iosize); else release_region(port[idx], iosize); - exit: +exit: return err; } diff --git a/drivers/net/can/mscan/mpc5xxx_can.c b/drivers/net/can/mscan/mpc5xxx_can.c index 2949a381a94d..21993ba7ae2a 100644 --- a/drivers/net/can/mscan/mpc5xxx_can.c +++ b/drivers/net/can/mscan/mpc5xxx_can.c @@ -336,14 +336,14 @@ static int mpc5xxx_can_probe(struct platform_device *ofdev) &mscan_clksrc); if (!priv->can.clock.freq) { dev_err(&ofdev->dev, "couldn't get MSCAN clock properties\n"); - goto exit_free_mscan; + goto exit_put_clock; } err = register_mscandev(dev, mscan_clksrc); if (err) { dev_err(&ofdev->dev, "registering %s failed (err=%d)\n", DRV_NAME, err); - goto exit_free_mscan; + goto exit_put_clock; } dev_info(&ofdev->dev, "MSCAN at 0x%p, irq %d, clock %d Hz\n", @@ -351,7 +351,9 @@ static int mpc5xxx_can_probe(struct platform_device *ofdev) return 0; -exit_free_mscan: +exit_put_clock: + if (data->put_clock) + data->put_clock(ofdev); free_candev(dev); exit_dispose_irq: irq_dispose_mapping(irq); diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index a1634834b640..cb1388267fe0 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -1079,7 +1079,7 @@ static irqreturn_t rcar_canfd_global_interrupt(int irq, void *dev_id) struct rcar_canfd_global *gpriv = dev_id; struct net_device *ndev; struct rcar_canfd_channel *priv; - u32 sts, gerfl; + u32 sts, cc, gerfl; u32 ch, ridx; /* Global error interrupts still indicate a condition specific @@ -1097,7 +1097,9 @@ static irqreturn_t rcar_canfd_global_interrupt(int irq, void *dev_id) /* Handle Rx interrupts */ sts = rcar_canfd_read(priv->base, RCANFD_RFSTS(ridx)); - if (likely(sts & RCANFD_RFSTS_RFIF)) { + cc = rcar_canfd_read(priv->base, RCANFD_RFCC(ridx)); + if (likely(sts & RCANFD_RFSTS_RFIF && + cc & RCANFD_RFCC_RFIE)) { if (napi_schedule_prep(&priv->napi)) { /* Disable Rx FIFO interrupts */ rcar_canfd_clear_bit(priv->base, diff --git a/drivers/net/can/sja1000/sja1000_isa.c b/drivers/net/can/sja1000/sja1000_isa.c index 1a2ae6ce8d87..b11f3431fd85 100644 --- a/drivers/net/can/sja1000/sja1000_isa.c +++ b/drivers/net/can/sja1000/sja1000_isa.c @@ -213,22 +213,24 @@ static int sja1000_isa_probe(struct platform_device *pdev) if (err) { dev_err(&pdev->dev, "registering %s failed (err=%d)\n", DRV_NAME, err); - goto exit_unmap; + goto exit_free; } dev_info(&pdev->dev, "%s device registered (reg_base=0x%p, irq=%d)\n", DRV_NAME, priv->reg_base, dev->irq); return 0; - exit_unmap: +exit_free: + free_sja1000dev(dev); +exit_unmap: if (mem[idx]) iounmap(base); - exit_release: +exit_release: if (mem[idx]) release_mem_region(mem[idx], iosize); else release_region(port[idx], iosize); - exit: +exit: return err; } diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c index d4e6b40f0ed4..ffdee5aeb8a9 100644 --- a/drivers/net/can/usb/esd_usb2.c +++ b/drivers/net/can/usb/esd_usb2.c @@ -239,6 +239,10 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv, u8 rxerr = msg->msg.rx.data[2]; u8 txerr = msg->msg.rx.data[3]; + netdev_dbg(priv->netdev, + "CAN_ERR_EV_EXT: dlc=%#02x state=%02x ecc=%02x rec=%02x tec=%02x\n", + msg->msg.rx.dlc, state, ecc, rxerr, txerr); + skb = alloc_can_err_skb(priv->netdev, &cf); if (skb == NULL) { stats->rx_dropped++; @@ -265,6 +269,8 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv, break; default: priv->can.state = CAN_STATE_ERROR_ACTIVE; + txerr = 0; + rxerr = 0; break; } } else { diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb.h b/drivers/net/can/usb/kvaser_usb/kvaser_usb.h index 61e67986b625..62958f04a2f2 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb.h +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb.h @@ -178,6 +178,8 @@ struct kvaser_usb_dev_cfg { extern const struct kvaser_usb_dev_ops kvaser_usb_hydra_dev_ops; extern const struct kvaser_usb_dev_ops kvaser_usb_leaf_dev_ops; +void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv); + int kvaser_usb_recv_cmd(const struct kvaser_usb *dev, void *cmd, int len, int *actual_len); diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c index 6e2c15626624..379df22d5123 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c @@ -453,7 +453,7 @@ static void kvaser_usb_reset_tx_urb_contexts(struct kvaser_usb_net_priv *priv) /* This method might sleep. Do not call it in the atomic context * of URB completions. */ -static void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv) +void kvaser_usb_unlink_tx_urbs(struct kvaser_usb_net_priv *priv) { usb_kill_anchored_urbs(&priv->tx_submitted); kvaser_usb_reset_tx_urb_contexts(priv); @@ -691,6 +691,7 @@ static int kvaser_usb_init_one(struct kvaser_usb *dev, int channel) init_usb_anchor(&priv->tx_submitted); init_completion(&priv->start_comp); init_completion(&priv->stop_comp); + init_completion(&priv->flush_comp); priv->can.ctrlmode_supported = 0; priv->dev = dev; diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c index 01d4a731b579..45d278724883 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c @@ -1845,7 +1845,7 @@ static int kvaser_usb_hydra_start_chip(struct kvaser_usb_net_priv *priv) { int err; - init_completion(&priv->start_comp); + reinit_completion(&priv->start_comp); err = kvaser_usb_hydra_send_simple_cmd(priv->dev, CMD_START_CHIP_REQ, priv->channel); @@ -1863,7 +1863,7 @@ static int kvaser_usb_hydra_stop_chip(struct kvaser_usb_net_priv *priv) { int err; - init_completion(&priv->stop_comp); + reinit_completion(&priv->stop_comp); /* Make sure we do not report invalid BUS_OFF from CMD_CHIP_STATE_EVENT * see comment in kvaser_usb_hydra_update_state() @@ -1886,7 +1886,7 @@ static int kvaser_usb_hydra_flush_queue(struct kvaser_usb_net_priv *priv) { int err; - init_completion(&priv->flush_comp); + reinit_completion(&priv->flush_comp); err = kvaser_usb_hydra_send_simple_cmd(priv->dev, CMD_FLUSH_QUEUE, priv->channel); diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c index 5e281249ad5f..15380cc08ee6 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c @@ -309,6 +309,38 @@ struct kvaser_cmd { } u; } __packed; +#define CMD_SIZE_ANY 0xff +#define kvaser_fsize(field) sizeof_field(struct kvaser_cmd, field) + +static const u8 kvaser_usb_leaf_cmd_sizes_leaf[] = { + [CMD_START_CHIP_REPLY] = kvaser_fsize(u.simple), + [CMD_STOP_CHIP_REPLY] = kvaser_fsize(u.simple), + [CMD_GET_CARD_INFO_REPLY] = kvaser_fsize(u.cardinfo), + [CMD_TX_ACKNOWLEDGE] = kvaser_fsize(u.tx_acknowledge_header), + [CMD_GET_SOFTWARE_INFO_REPLY] = kvaser_fsize(u.leaf.softinfo), + [CMD_RX_STD_MESSAGE] = kvaser_fsize(u.leaf.rx_can), + [CMD_RX_EXT_MESSAGE] = kvaser_fsize(u.leaf.rx_can), + [CMD_LEAF_LOG_MESSAGE] = kvaser_fsize(u.leaf.log_message), + [CMD_CHIP_STATE_EVENT] = kvaser_fsize(u.leaf.chip_state_event), + [CMD_CAN_ERROR_EVENT] = kvaser_fsize(u.leaf.error_event), + /* ignored events: */ + [CMD_FLUSH_QUEUE_REPLY] = CMD_SIZE_ANY, +}; + +static const u8 kvaser_usb_leaf_cmd_sizes_usbcan[] = { + [CMD_START_CHIP_REPLY] = kvaser_fsize(u.simple), + [CMD_STOP_CHIP_REPLY] = kvaser_fsize(u.simple), + [CMD_GET_CARD_INFO_REPLY] = kvaser_fsize(u.cardinfo), + [CMD_TX_ACKNOWLEDGE] = kvaser_fsize(u.tx_acknowledge_header), + [CMD_GET_SOFTWARE_INFO_REPLY] = kvaser_fsize(u.usbcan.softinfo), + [CMD_RX_STD_MESSAGE] = kvaser_fsize(u.usbcan.rx_can), + [CMD_RX_EXT_MESSAGE] = kvaser_fsize(u.usbcan.rx_can), + [CMD_CHIP_STATE_EVENT] = kvaser_fsize(u.usbcan.chip_state_event), + [CMD_CAN_ERROR_EVENT] = kvaser_fsize(u.usbcan.error_event), + /* ignored events: */ + [CMD_USBCAN_CLOCK_OVERFLOW_EVENT] = CMD_SIZE_ANY, +}; + /* Summary of a kvaser error event, for a unified Leaf/Usbcan error * handling. Some discrepancies between the two families exist: * @@ -396,6 +428,43 @@ static const struct kvaser_usb_dev_cfg kvaser_usb_leaf_imx_dev_cfg_32mhz = { .bittiming_const = &kvaser_usb_flexc_bittiming_const, }; +static int kvaser_usb_leaf_verify_size(const struct kvaser_usb *dev, + const struct kvaser_cmd *cmd) +{ + /* buffer size >= cmd->len ensured by caller */ + u8 min_size = 0; + + switch (dev->driver_info->family) { + case KVASER_LEAF: + if (cmd->id < ARRAY_SIZE(kvaser_usb_leaf_cmd_sizes_leaf)) + min_size = kvaser_usb_leaf_cmd_sizes_leaf[cmd->id]; + break; + case KVASER_USBCAN: + if (cmd->id < ARRAY_SIZE(kvaser_usb_leaf_cmd_sizes_usbcan)) + min_size = kvaser_usb_leaf_cmd_sizes_usbcan[cmd->id]; + break; + } + + if (min_size == CMD_SIZE_ANY) + return 0; + + if (min_size) { + min_size += CMD_HEADER_LEN; + if (cmd->len >= min_size) + return 0; + + dev_err_ratelimited(&dev->intf->dev, + "Received command %u too short (size %u, needed %u)", + cmd->id, cmd->len, min_size); + return -EIO; + } + + dev_warn_ratelimited(&dev->intf->dev, + "Unhandled command (%d, size %d)\n", + cmd->id, cmd->len); + return -EINVAL; +} + static void * kvaser_usb_leaf_frame_to_cmd(const struct kvaser_usb_net_priv *priv, const struct sk_buff *skb, int *frame_len, @@ -503,6 +572,9 @@ static int kvaser_usb_leaf_wait_cmd(const struct kvaser_usb *dev, u8 id, end: kfree(buf); + if (err == 0) + err = kvaser_usb_leaf_verify_size(dev, cmd); + return err; } @@ -1137,6 +1209,9 @@ static void kvaser_usb_leaf_stop_chip_reply(const struct kvaser_usb *dev, static void kvaser_usb_leaf_handle_command(const struct kvaser_usb *dev, const struct kvaser_cmd *cmd) { + if (kvaser_usb_leaf_verify_size(dev, cmd) < 0) + return; + switch (cmd->id) { case CMD_START_CHIP_REPLY: kvaser_usb_leaf_start_chip_reply(dev, cmd); @@ -1249,7 +1324,7 @@ static int kvaser_usb_leaf_start_chip(struct kvaser_usb_net_priv *priv) { int err; - init_completion(&priv->start_comp); + reinit_completion(&priv->start_comp); err = kvaser_usb_leaf_send_simple_cmd(priv->dev, CMD_START_CHIP, priv->channel); @@ -1267,7 +1342,7 @@ static int kvaser_usb_leaf_stop_chip(struct kvaser_usb_net_priv *priv) { int err; - init_completion(&priv->stop_comp); + reinit_completion(&priv->stop_comp); err = kvaser_usb_leaf_send_simple_cmd(priv->dev, CMD_STOP_CHIP, priv->channel); @@ -1355,9 +1430,13 @@ static int kvaser_usb_leaf_set_mode(struct net_device *netdev, switch (mode) { case CAN_MODE_START: + kvaser_usb_unlink_tx_urbs(priv); + err = kvaser_usb_leaf_simple_cmd_async(priv, CMD_START_CHIP); if (err) return err; + + priv->can.state = CAN_STATE_ERROR_ACTIVE; break; default: return -EOPNOTSUPP; diff --git a/drivers/net/dsa/dsa_loop.c b/drivers/net/dsa/dsa_loop.c index 990de7c54b46..30f8f0117a30 100644 --- a/drivers/net/dsa/dsa_loop.c +++ b/drivers/net/dsa/dsa_loop.c @@ -333,6 +333,17 @@ static struct mdio_driver dsa_loop_drv = { #define NUM_FIXED_PHYS (DSA_LOOP_NUM_PORTS - 2) +static void dsa_loop_phydevs_unregister(void) +{ + unsigned int i; + + for (i = 0; i < NUM_FIXED_PHYS; i++) + if (!IS_ERR(phydevs[i])) { + fixed_phy_unregister(phydevs[i]); + phy_device_free(phydevs[i]); + } +} + static int __init dsa_loop_init(void) { struct fixed_phy_status status = { @@ -340,23 +351,23 @@ static int __init dsa_loop_init(void) .speed = SPEED_100, .duplex = DUPLEX_FULL, }; - unsigned int i; + unsigned int i, ret; for (i = 0; i < NUM_FIXED_PHYS; i++) phydevs[i] = fixed_phy_register(PHY_POLL, &status, -1, NULL); - return mdio_driver_register(&dsa_loop_drv); + ret = mdio_driver_register(&dsa_loop_drv); + if (ret) + dsa_loop_phydevs_unregister(); + + return ret; } module_init(dsa_loop_init); static void __exit dsa_loop_exit(void) { - unsigned int i; - mdio_driver_unregister(&dsa_loop_drv); - for (i = 0; i < NUM_FIXED_PHYS; i++) - if (!IS_ERR(phydevs[i])) - fixed_phy_unregister(phydevs[i]); + dsa_loop_phydevs_unregister(); } module_exit(dsa_loop_exit); diff --git a/drivers/net/dsa/lan9303-core.c b/drivers/net/dsa/lan9303-core.c index 70ce37cd94af..03dc075ff4e8 100644 --- a/drivers/net/dsa/lan9303-core.c +++ b/drivers/net/dsa/lan9303-core.c @@ -966,7 +966,7 @@ static const struct lan9303_mib_desc lan9303_mib[] = { { .offset = LAN9303_MAC_TX_BRDCST_CNT_0, .name = "TxBroad", }, { .offset = LAN9303_MAC_TX_PAUSE_CNT_0, .name = "TxPause", }, { .offset = LAN9303_MAC_TX_MULCST_CNT_0, .name = "TxMulti", }, - { .offset = LAN9303_MAC_RX_UNDSZE_CNT_0, .name = "TxUnderRun", }, + { .offset = LAN9303_MAC_RX_UNDSZE_CNT_0, .name = "RxShort", }, { .offset = LAN9303_MAC_TX_64_CNT_0, .name = "Tx64Byte", }, { .offset = LAN9303_MAC_TX_127_CNT_0, .name = "Tx128Byte", }, { .offset = LAN9303_MAC_TX_255_CNT_0, .name = "Tx256Byte", }, diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c index a20e95b39cf7..4df8da8f5e7e 100644 --- a/drivers/net/ethernet/aeroflex/greth.c +++ b/drivers/net/ethernet/aeroflex/greth.c @@ -262,6 +262,7 @@ static int greth_init_rings(struct greth_private *greth) if (dma_mapping_error(greth->dev, dma_addr)) { if (netif_msg_ifup(greth)) dev_err(greth->dev, "Could not create initial DMA mapping\n"); + dev_kfree_skb(skb); goto cleanup; } greth->rx_skbuff[i] = skb; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 714aead72c57..d54e6e138aaf 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -238,6 +238,7 @@ enum xgbe_sfp_speed { #define XGBE_SFP_BASE_BR_1GBE_MAX 0x0d #define XGBE_SFP_BASE_BR_10GBE_MIN 0x64 #define XGBE_SFP_BASE_BR_10GBE_MAX 0x68 +#define XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX 0x78 #define XGBE_SFP_BASE_CU_CABLE_LEN 18 @@ -283,6 +284,8 @@ struct xgbe_sfp_eeprom { #define XGBE_BEL_FUSE_VENDOR "BEL-FUSE " #define XGBE_BEL_FUSE_PARTNO "1GBT-SFP06 " +#define XGBE_MOLEX_VENDOR "Molex Inc. " + struct xgbe_sfp_ascii { union { char vendor[XGBE_SFP_BASE_VENDOR_NAME_LEN + 1]; @@ -833,7 +836,11 @@ static bool xgbe_phy_sfp_bit_rate(struct xgbe_sfp_eeprom *sfp_eeprom, break; case XGBE_SFP_SPEED_10000: min = XGBE_SFP_BASE_BR_10GBE_MIN; - max = XGBE_SFP_BASE_BR_10GBE_MAX; + if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_NAME], + XGBE_MOLEX_VENDOR, XGBE_SFP_BASE_VENDOR_NAME_LEN) == 0) + max = XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX; + else + max = XGBE_SFP_BASE_BR_10GBE_MAX; break; default: return false; @@ -1138,7 +1145,10 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata) } /* Determine the type of SFP */ - if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_SR) + if (phy_data->sfp_cable == XGBE_SFP_CABLE_PASSIVE && + xgbe_phy_sfp_bit_rate(sfp_eeprom, XGBE_SFP_SPEED_10000)) + phy_data->sfp_base = XGBE_SFP_BASE_10000_CR; + else if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_SR) phy_data->sfp_base = XGBE_SFP_BASE_10000_SR; else if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_LR) phy_data->sfp_base = XGBE_SFP_BASE_10000_LR; @@ -1154,9 +1164,6 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata) phy_data->sfp_base = XGBE_SFP_BASE_1000_CX; else if (sfp_base[XGBE_SFP_BASE_1GBE_CC] & XGBE_SFP_BASE_1GBE_CC_T) phy_data->sfp_base = XGBE_SFP_BASE_1000_T; - else if ((phy_data->sfp_cable == XGBE_SFP_CABLE_PASSIVE) && - xgbe_phy_sfp_bit_rate(sfp_eeprom, XGBE_SFP_SPEED_10000)) - phy_data->sfp_base = XGBE_SFP_BASE_10000_CR; switch (phy_data->sfp_base) { case XGBE_SFP_BASE_1000_T: diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c index 86811de191ed..f27391abd7da 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -1015,8 +1015,10 @@ static int xgene_enet_open(struct net_device *ndev) xgene_enet_napi_enable(pdata); ret = xgene_enet_register_irq(ndev); - if (ret) + if (ret) { + xgene_enet_napi_disable(pdata); return ret; + } if (ndev->phydev) { phy_start(ndev->phydev); diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c index 4c94d9218bba..50c5afc46eb0 100644 --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c @@ -1566,7 +1566,6 @@ void bgmac_enet_remove(struct bgmac *bgmac) phy_disconnect(bgmac->net_dev->phydev); netif_napi_del(&bgmac->napi); bgmac_dma_free(bgmac); - free_netdev(bgmac->net_dev); } EXPORT_SYMBOL_GPL(bgmac_enet_remove); diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index 2610acf9ac36..53b1b05f905e 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -788,6 +788,7 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp, BNX2X_ERR("skb_put is about to fail... pad %d len %d rx_buf_size %d\n", pad, len, fp->rx_buf_size); bnx2x_panic(); + bnx2x_frag_free(fp, new_data); return; } #endif diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c index b3ff8d13c31a..83868f49b6c7 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c @@ -806,16 +806,20 @@ static void bnx2x_vf_enable_traffic(struct bnx2x *bp, struct bnx2x_virtf *vf) static u8 bnx2x_vf_is_pcie_pending(struct bnx2x *bp, u8 abs_vfid) { - struct pci_dev *dev; struct bnx2x_virtf *vf = bnx2x_vf_by_abs_fid(bp, abs_vfid); + struct pci_dev *dev; + bool pending; if (!vf) return false; dev = pci_get_domain_bus_and_slot(vf->domain, vf->bus, vf->devfn); - if (dev) - return bnx2x_is_pcie_pending(dev); - return false; + if (!dev) + return false; + pending = bnx2x_is_pcie_pending(dev); + pci_dev_put(dev); + + return pending; } int bnx2x_vf_flr_clnup_epilog(struct bnx2x *bp, u8 abs_vfid) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 5e30299bcf64..dc106212259a 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -8327,8 +8327,8 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, rcu_read_lock(); hlist_for_each_entry_rcu(fltr, head, hash) { if (bnxt_fltr_match(fltr, new_fltr)) { + rc = fltr->sw_id; rcu_read_unlock(); - rc = 0; goto err_free; } } @@ -9383,8 +9383,16 @@ static struct pci_driver bnxt_pci_driver = { static int __init bnxt_init(void) { + int err; + bnxt_debug_init(); - return pci_register_driver(&bnxt_pci_driver); + err = pci_register_driver(&bnxt_pci_driver); + if (err) { + bnxt_debug_exit(); + return err; + } + + return 0; } static void __exit bnxt_exit(void) diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c index e5fc89813852..3cde9a2a0ab7 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -1447,8 +1447,10 @@ static acpi_status bgx_acpi_match_id(acpi_handle handle, u32 lvl, return AE_OK; } - if (strncmp(string.pointer, bgx_sel, 4)) + if (strncmp(string.pointer, bgx_sel, 4)) { + kfree(string.pointer); return AE_OK; + } acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1, bgx_acpi_register_phy, NULL, bgx, NULL); diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c index c82469ab7aba..2c72e716b973 100644 --- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c @@ -1304,6 +1304,7 @@ static int cxgb_up(struct adapter *adap) if (ret < 0) { CH_ERR(adap, "failed to bind qsets, err %d\n", ret); t3_intr_disable(adap); + quiesce_rx(adap); free_irq_resources(adap); err = ret; goto out; diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index fcd5d845e99a..e97ab9545a79 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -623,7 +623,7 @@ fec_enet_txq_put_data_tso(struct fec_enet_priv_tx_q *txq, struct sk_buff *skb, dev_kfree_skb_any(skb); if (net_ratelimit()) netdev_err(ndev, "Tx DMA memory map failed\n"); - return NETDEV_TX_BUSY; + return NETDEV_TX_OK; } bdp->cbd_datlen = cpu_to_fec16(size); @@ -685,7 +685,7 @@ fec_enet_txq_put_hdr_tso(struct fec_enet_priv_tx_q *txq, dev_kfree_skb_any(skb); if (net_ratelimit()) netdev_err(ndev, "Tx DMA memory map failed\n"); - return NETDEV_TX_BUSY; + return NETDEV_TX_OK; } } diff --git a/drivers/net/ethernet/freescale/fman/mac.c b/drivers/net/ethernet/freescale/fman/mac.c index 713abcd9371f..390849faf4cd 100644 --- a/drivers/net/ethernet/freescale/fman/mac.c +++ b/drivers/net/ethernet/freescale/fman/mac.c @@ -891,12 +891,21 @@ _return: return err; } +static int mac_remove(struct platform_device *pdev) +{ + struct mac_device *mac_dev = platform_get_drvdata(pdev); + + platform_device_unregister(mac_dev->priv->eth_dev); + return 0; +} + static struct platform_driver mac_driver = { .driver = { .name = KBUILD_MODNAME, .of_match_table = mac_match, }, .probe = mac_probe, + .remove = mac_remove, }; builtin_platform_driver(mac_driver); diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c index 99fe2c210d0f..61f4b6e50d29 100644 --- a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c +++ b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c @@ -98,7 +98,7 @@ static int do_pd_setup(struct fs_enet_private *fep) return -EINVAL; fep->fec.fecp = of_iomap(ofdev->dev.of_node, 0); - if (!fep->fcc.fccp) + if (!fep->fec.fecp) return -EINVAL; return 0; diff --git a/drivers/net/ethernet/hisilicon/hisi_femac.c b/drivers/net/ethernet/hisilicon/hisi_femac.c index 2c2808830e95..f29040520ca0 100644 --- a/drivers/net/ethernet/hisilicon/hisi_femac.c +++ b/drivers/net/ethernet/hisilicon/hisi_femac.c @@ -295,7 +295,7 @@ static int hisi_femac_rx(struct net_device *dev, int limit) skb->protocol = eth_type_trans(skb, dev); napi_gro_receive(&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos = (pos + 1) % rxq->num; if (rx_pkts_num >= limit) diff --git a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c index b63871ef8a40..e69a64a50127 100644 --- a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c +++ b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c @@ -554,7 +554,7 @@ static int hix5hd2_rx(struct net_device *dev, int limit) skb->protocol = eth_type_trans(skb, dev); napi_gro_receive(&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos = dma_ring_incr(pos, RX_DESC_NUM); } diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c b/drivers/net/ethernet/hisilicon/hns/hnae.c index b758b3e79337..38aa4b74a6ab 100644 --- a/drivers/net/ethernet/hisilicon/hns/hnae.c +++ b/drivers/net/ethernet/hisilicon/hns/hnae.c @@ -423,8 +423,10 @@ int hnae_ae_register(struct hnae_ae_dev *hdev, struct module *owner) hdev->cls_dev.release = hnae_release; (void)dev_set_name(&hdev->cls_dev, "hnae%d", hdev->id); ret = device_register(&hdev->cls_dev); - if (ret) + if (ret) { + put_device(&hdev->cls_dev); return ret; + } __module_get(THIS_MODULE); diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c index 5a1fe49030b1..25f579a924d6 100644 --- a/drivers/net/ethernet/ibm/ehea/ehea_main.c +++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c @@ -2916,6 +2916,7 @@ static struct device *ehea_register_port(struct ehea_port *port, ret = of_device_register(&port->ofdev); if (ret) { pr_err("failed to register device. ret=%d\n", ret); + put_device(&port->ofdev.dev); goto out; } diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 398f5951d11c..0629f87a20be 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -5877,9 +5877,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, e1000_tx_queue(tx_ring, tx_flags, count); /* Make sure there is space in the ring for the next send. */ e1000_maybe_stop_tx(tx_ring, - (MAX_SKB_FRAGS * + ((MAX_SKB_FRAGS + 1) * DIV_ROUND_UP(PAGE_SIZE, - adapter->tx_fifo_limit) + 2)); + adapter->tx_fifo_limit) + 4)); if (!skb->xmit_more || netif_xmit_stopped(netdev_get_tx_queue(netdev, 0))) { diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index 6a70e62836f8..fbfd43a7e592 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -2699,10 +2699,17 @@ static int i40e_get_rss_hash_opts(struct i40e_pf *pf, struct ethtool_rxnfc *cmd) if (cmd->flow_type == TCP_V4_FLOW || cmd->flow_type == UDP_V4_FLOW) { - if (i_set & I40E_L3_SRC_MASK) - cmd->data |= RXH_IP_SRC; - if (i_set & I40E_L3_DST_MASK) - cmd->data |= RXH_IP_DST; + if (hw->mac.type == I40E_MAC_X722) { + if (i_set & I40E_X722_L3_SRC_MASK) + cmd->data |= RXH_IP_SRC; + if (i_set & I40E_X722_L3_DST_MASK) + cmd->data |= RXH_IP_DST; + } else { + if (i_set & I40E_L3_SRC_MASK) + cmd->data |= RXH_IP_SRC; + if (i_set & I40E_L3_DST_MASK) + cmd->data |= RXH_IP_DST; + } } else if (cmd->flow_type == TCP_V6_FLOW || cmd->flow_type == UDP_V6_FLOW) { if (i_set & I40E_L3_V6_SRC_MASK) @@ -3009,12 +3016,15 @@ static int i40e_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd, /** * i40e_get_rss_hash_bits - Read RSS Hash bits from register + * @hw: hw structure * @nfc: pointer to user request * @i_setc: bits currently set * * Returns value of bits to be set per user request **/ -static u64 i40e_get_rss_hash_bits(struct ethtool_rxnfc *nfc, u64 i_setc) +static u64 i40e_get_rss_hash_bits(struct i40e_hw *hw, + struct ethtool_rxnfc *nfc, + u64 i_setc) { u64 i_set = i_setc; u64 src_l3 = 0, dst_l3 = 0; @@ -3033,8 +3043,13 @@ static u64 i40e_get_rss_hash_bits(struct ethtool_rxnfc *nfc, u64 i_setc) dst_l3 = I40E_L3_V6_DST_MASK; } else if (nfc->flow_type == TCP_V4_FLOW || nfc->flow_type == UDP_V4_FLOW) { - src_l3 = I40E_L3_SRC_MASK; - dst_l3 = I40E_L3_DST_MASK; + if (hw->mac.type == I40E_MAC_X722) { + src_l3 = I40E_X722_L3_SRC_MASK; + dst_l3 = I40E_X722_L3_DST_MASK; + } else { + src_l3 = I40E_L3_SRC_MASK; + dst_l3 = I40E_L3_DST_MASK; + } } else { /* Any other flow type are not supported here */ return i_set; @@ -3052,6 +3067,7 @@ static u64 i40e_get_rss_hash_bits(struct ethtool_rxnfc *nfc, u64 i_setc) return i_set; } +#define FLOW_PCTYPES_SIZE 64 /** * i40e_set_rss_hash_opt - Enable/Disable flow types for RSS hash * @pf: pointer to the physical function struct @@ -3064,9 +3080,11 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc) struct i40e_hw *hw = &pf->hw; u64 hena = (u64)i40e_read_rx_ctl(hw, I40E_PFQF_HENA(0)) | ((u64)i40e_read_rx_ctl(hw, I40E_PFQF_HENA(1)) << 32); - u8 flow_pctype = 0; + DECLARE_BITMAP(flow_pctypes, FLOW_PCTYPES_SIZE); u64 i_set, i_setc; + bitmap_zero(flow_pctypes, FLOW_PCTYPES_SIZE); + if (pf->flags & I40E_FLAG_MFP_ENABLED) { dev_err(&pf->pdev->dev, "Change of RSS hash input set is not supported when MFP mode is enabled\n"); @@ -3082,36 +3100,35 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc) switch (nfc->flow_type) { case TCP_V4_FLOW: - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV4_TCP; + set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_TCP, flow_pctypes); if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) - hena |= - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK); + set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK, + flow_pctypes); break; case TCP_V6_FLOW: - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV6_TCP; + set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_TCP, flow_pctypes); if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) - hena |= - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK); - if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) - hena |= - BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK); + set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK, + flow_pctypes); break; case UDP_V4_FLOW: - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV4_UDP; - if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) - hena |= - BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | - BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP); - + set_bit(I40E_FILTER_PCTYPE_NONF_IPV4_UDP, flow_pctypes); + if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) { + set_bit(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP, + flow_pctypes); + set_bit(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP, + flow_pctypes); + } hena |= BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4); break; case UDP_V6_FLOW: - flow_pctype = I40E_FILTER_PCTYPE_NONF_IPV6_UDP; - if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) - hena |= - BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | - BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP); - + set_bit(I40E_FILTER_PCTYPE_NONF_IPV6_UDP, flow_pctypes); + if (pf->hw_features & I40E_HW_MULTIPLE_TCP_UDP_RSS_PCTYPE) { + set_bit(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP, + flow_pctypes); + set_bit(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP, + flow_pctypes); + } hena |= BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6); break; case AH_ESP_V4_FLOW: @@ -3144,17 +3161,20 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc) return -EINVAL; } - if (flow_pctype) { - i_setc = (u64)i40e_read_rx_ctl(hw, I40E_GLQF_HASH_INSET(0, - flow_pctype)) | - ((u64)i40e_read_rx_ctl(hw, I40E_GLQF_HASH_INSET(1, - flow_pctype)) << 32); - i_set = i40e_get_rss_hash_bits(nfc, i_setc); - i40e_write_rx_ctl(hw, I40E_GLQF_HASH_INSET(0, flow_pctype), - (u32)i_set); - i40e_write_rx_ctl(hw, I40E_GLQF_HASH_INSET(1, flow_pctype), - (u32)(i_set >> 32)); - hena |= BIT_ULL(flow_pctype); + if (bitmap_weight(flow_pctypes, FLOW_PCTYPES_SIZE)) { + u8 flow_id; + + for_each_set_bit(flow_id, flow_pctypes, FLOW_PCTYPES_SIZE) { + i_setc = (u64)i40e_read_rx_ctl(hw, I40E_GLQF_HASH_INSET(0, flow_id)) | + ((u64)i40e_read_rx_ctl(hw, I40E_GLQF_HASH_INSET(1, flow_id)) << 32); + i_set = i40e_get_rss_hash_bits(&pf->hw, nfc, i_setc); + + i40e_write_rx_ctl(hw, I40E_GLQF_HASH_INSET(0, flow_id), + (u32)i_set); + i40e_write_rx_ctl(hw, I40E_GLQF_HASH_INSET(1, flow_id), + (u32)(i_set >> 32)); + hena |= BIT_ULL(flow_id); + } } i40e_write_rx_ctl(hw, I40E_PFQF_HENA(0), (u32)hena); @@ -3830,11 +3850,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi, return -EOPNOTSUPP; /* First 4 bytes of L4 header */ - if (usr_ip4_spec->l4_4_bytes == htonl(0xFFFFFFFF)) - new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK; - else if (!usr_ip4_spec->l4_4_bytes) - new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK); - else + if (usr_ip4_spec->l4_4_bytes) return -EOPNOTSUPP; /* Filtering on Type of Service is not supported. */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 9669d8c8b6c7..8a5baaf403ae 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -9368,6 +9368,21 @@ static int i40e_rebuild_channels(struct i40e_vsi *vsi) } /** + * i40e_clean_xps_state - clean xps state for every tx_ring + * @vsi: ptr to the VSI + **/ +static void i40e_clean_xps_state(struct i40e_vsi *vsi) +{ + int i; + + if (vsi->tx_rings) + for (i = 0; i < vsi->num_queue_pairs; i++) + if (vsi->tx_rings[i]) + clear_bit(__I40E_TX_XPS_INIT_DONE, + vsi->tx_rings[i]->state); +} + +/** * i40e_prep_for_reset - prep for the core to reset * @pf: board private structure * @lock_acquired: indicates whether or not the lock has been acquired @@ -9398,8 +9413,10 @@ static void i40e_prep_for_reset(struct i40e_pf *pf, bool lock_acquired) rtnl_unlock(); for (v = 0; v < pf->num_alloc_vsi; v++) { - if (pf->vsi[v]) + if (pf->vsi[v]) { + i40e_clean_xps_state(pf->vsi[v]); pf->vsi[v]->seid = 0; + } } i40e_shutdown_adminq(&pf->hw); diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h index 7df969c59855..2e40a50ebfab 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_type.h +++ b/drivers/net/ethernet/intel/i40e/i40e_type.h @@ -1462,6 +1462,10 @@ struct i40e_lldp_variables { #define I40E_PFQF_CTL_0_HASHLUTSIZE_512 0x00010000 /* INPUT SET MASK for RSS, flow director, and flexible payload */ +#define I40E_X722_L3_SRC_SHIFT 49 +#define I40E_X722_L3_SRC_MASK (0x3ULL << I40E_X722_L3_SRC_SHIFT) +#define I40E_X722_L3_DST_SHIFT 41 +#define I40E_X722_L3_DST_MASK (0x3ULL << I40E_X722_L3_DST_SHIFT) #define I40E_L3_SRC_SHIFT 47 #define I40E_L3_SRC_MASK (0x3ULL << I40E_L3_SRC_SHIFT) #define I40E_L3_V6_SRC_SHIFT 43 diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 973350b34e08..240083201dbf 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -1227,10 +1227,12 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr) if (test_bit(__I40E_VF_RESETS_DISABLED, pf->state)) return true; - /* If the VFs have been disabled, this means something else is - * resetting the VF, so we shouldn't continue. - */ - if (test_and_set_bit(__I40E_VF_DISABLE, pf->state)) + /* Bail out if VFs are disabled. */ + if (test_bit(__I40E_VF_DISABLE, pf->state)) + return true; + + /* If VF is being reset already we don't need to continue. */ + if (test_and_set_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) return true; i40e_trigger_vf_reset(vf, flr); @@ -1267,7 +1269,8 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr) i40e_cleanup_reset_vf(vf); i40e_flush(hw); - clear_bit(__I40E_VF_DISABLE, pf->state); + usleep_range(20000, 40000); + clear_bit(I40E_VF_STATE_RESETTING, &vf->vf_states); return true; } @@ -1300,8 +1303,12 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) return false; /* Begin reset on all VFs at once */ - for (v = 0; v < pf->num_alloc_vfs; v++) - i40e_trigger_vf_reset(&pf->vf[v], flr); + for (v = 0; v < pf->num_alloc_vfs; v++) { + vf = &pf->vf[v]; + /* If VF is being reset no need to trigger reset again */ + if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) + i40e_trigger_vf_reset(&pf->vf[v], flr); + } /* HW requires some time to make sure it can flush the FIFO for a VF * when it resets it. Poll the VPGEN_VFRSTAT register for each VF in @@ -1317,9 +1324,11 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) */ while (v < pf->num_alloc_vfs) { vf = &pf->vf[v]; - reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); - if (!(reg & I40E_VPGEN_VFRSTAT_VFRD_MASK)) - break; + if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) { + reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); + if (!(reg & I40E_VPGEN_VFRSTAT_VFRD_MASK)) + break; + } /* If the current VF has finished resetting, move on * to the next VF in sequence. @@ -1347,6 +1356,10 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) if (pf->vf[v].lan_vsi_idx == 0) continue; + /* If VF is reset in another thread just continue */ + if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) + continue; + i40e_vsi_stop_rings_no_wait(pf->vsi[pf->vf[v].lan_vsi_idx]); } @@ -1358,6 +1371,10 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) if (pf->vf[v].lan_vsi_idx == 0) continue; + /* If VF is reset in another thread just continue */ + if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) + continue; + i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[v].lan_vsi_idx]); } @@ -1367,10 +1384,16 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) mdelay(50); /* Finish the reset on each VF */ - for (v = 0; v < pf->num_alloc_vfs; v++) + for (v = 0; v < pf->num_alloc_vfs; v++) { + /* If VF is reset in another thread just continue */ + if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) + continue; + i40e_cleanup_reset_vf(&pf->vf[v]); + } i40e_flush(hw); + usleep_range(20000, 40000); clear_bit(__I40E_VF_DISABLE, pf->state); return true; diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h index bf67d62e2b5f..1e001b2bd761 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h @@ -37,6 +37,7 @@ enum i40e_vf_states { I40E_VF_STATE_MC_PROMISC, I40E_VF_STATE_UC_PROMISC, I40E_VF_STATE_PRE_ENABLE, + I40E_VF_STATE_RESETTING }; /* VF capabilities */ diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 2e17625e6c35..d0f5b92bead7 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -1399,6 +1399,8 @@ static int igb_intr_test(struct igb_adapter *adapter, u64 *data) *data = 1; return -1; } + wr32(E1000_IVAR_MISC, E1000_IVAR_VALID << 8); + wr32(E1000_EIMS, BIT(0)); } else if (adapter->flags & IGB_FLAG_HAS_MSI) { shared_int = false; if (request_irq(irq, diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c index e08301d833e2..8c58ae565073 100644 --- a/drivers/net/ethernet/lantiq_etop.c +++ b/drivers/net/ethernet/lantiq_etop.c @@ -480,7 +480,6 @@ ltq_etop_tx(struct sk_buff *skb, struct net_device *dev) len = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; if ((desc->ctl & (LTQ_DMA_OWN | LTQ_DMA_C)) || ch->skb[ch->dma.desc]) { - dev_kfree_skb_any(skb); netdev_err(dev, "tx ring full\n"); netif_tx_stop_queue(txq); return NETDEV_TX_BUSY; diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index 59007d6cd36d..2bfad889fdec 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -2495,6 +2495,7 @@ out_free: for (i = 0; i < mp->rxq_count; i++) rxq_deinit(mp->rxq + i); out: + napi_disable(&mp->napi); free_irq(dev->irq, dev); return err; diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 382d010e1294..fd1311681200 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -3620,7 +3620,7 @@ static void mvneta_percpu_elect(struct mvneta_port *pp) /* Use the cpu associated to the rxq when it is online, in all * the other cases, use the cpu 0 which can't be offline. */ - if (cpu_online(pp->rxq_def)) + if (pp->rxq_def < nr_cpu_ids && cpu_online(pp->rxq_def)) elected_cpu = pp->rxq_def; max_cpu = num_present_cpus(); diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h index 46911b67b039..23f60bc5d48f 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h @@ -1107,5 +1107,6 @@ void mvpp2_percpu_write_relaxed(struct mvpp2 *priv, int cpu, u32 offset, void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name); void mvpp2_dbgfs_cleanup(struct mvpp2 *priv); +void mvpp2_dbgfs_exit(void); #endif diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c index 87d9cbe10cec..004e0fac5455 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c @@ -648,6 +648,13 @@ static int mvpp2_dbgfs_port_init(struct dentry *parent, return 0; } +static struct dentry *mvpp2_root; + +void mvpp2_dbgfs_exit(void) +{ + debugfs_remove(mvpp2_root); +} + void mvpp2_dbgfs_cleanup(struct mvpp2 *priv) { debugfs_remove_recursive(priv->dbgfs_dir); @@ -655,10 +662,9 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *priv) void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name) { - struct dentry *mvpp2_dir, *mvpp2_root; + struct dentry *mvpp2_dir; int ret, i; - mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL); if (!mvpp2_root) mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL); diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 52fdb200a0c7..788fe627e78a 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -5417,7 +5417,18 @@ static struct platform_driver mvpp2_driver = { }, }; -module_platform_driver(mvpp2_driver); +static int __init mvpp2_driver_init(void) +{ + return platform_driver_register(&mvpp2_driver); +} +module_init(mvpp2_driver_init); + +static void __exit mvpp2_driver_exit(void) +{ + platform_driver_unregister(&mvpp2_driver); + mvpp2_dbgfs_exit(); +} +module_exit(mvpp2_driver_exit); MODULE_DESCRIPTION("Marvell PPv2 Ethernet Driver - www.marvell.com"); MODULE_AUTHOR("Marcin Wojtas <mw@semihalf.com>"); diff --git a/drivers/net/ethernet/mellanox/mlx4/qp.c b/drivers/net/ethernet/mellanox/mlx4/qp.c index 427e7a31862c..d7f2890c254f 100644 --- a/drivers/net/ethernet/mellanox/mlx4/qp.c +++ b/drivers/net/ethernet/mellanox/mlx4/qp.c @@ -697,7 +697,8 @@ static int mlx4_create_zones(struct mlx4_dev *dev, err = mlx4_bitmap_init(*bitmap + k, 1, MLX4_QP_TABLE_RAW_ETH_SIZE - 1, 0, 0); - mlx4_bitmap_alloc_range(*bitmap + k, 1, 1, 0); + if (!err) + mlx4_bitmap_alloc_range(*bitmap + k, 1, 1, 0); } if (err) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index a686082762df..14cdac980520 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -1324,8 +1324,8 @@ static ssize_t outlen_write(struct file *filp, const char __user *buf, return -EFAULT; err = sscanf(outlen_str, "%d", &outlen); - if (err < 0) - return err; + if (err != 1) + return -EINVAL; ptr = kzalloc(outlen, GFP_KERNEL); if (!ptr) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c index a22e932a00b0..ef9f932f0226 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c @@ -600,7 +600,7 @@ static void mlx5_tracer_handle_timestamp_trace(struct mlx5_fw_tracer *tracer, trace_timestamp = (timestamp_event.timestamp & MASK_52_7) | (str_frmt->timestamp & MASK_6_0); else - trace_timestamp = ((timestamp_event.timestamp & MASK_52_7) - 1) | + trace_timestamp = ((timestamp_event.timestamp - 1) & MASK_52_7) | (str_frmt->timestamp & MASK_6_0); mlx5_tracer_print_trace(str_frmt, dev, trace_timestamp); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c index c467f5e981f6..70087f2542b2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c @@ -117,7 +117,6 @@ static bool mlx5e_ipsec_update_esn_state(struct mlx5e_ipsec_sa_entry *sa_entry) struct xfrm_replay_state_esn *replay_esn; u32 seq_bottom; u8 overlap; - u32 *esn; if (!(sa_entry->x->props.flags & XFRM_STATE_ESN)) { sa_entry->esn_state.trigger = 0; @@ -130,11 +129,9 @@ static bool mlx5e_ipsec_update_esn_state(struct mlx5e_ipsec_sa_entry *sa_entry) sa_entry->esn_state.esn = xfrm_replay_seqhi(sa_entry->x, htonl(seq_bottom)); - esn = &sa_entry->esn_state.esn; sa_entry->esn_state.trigger = 1; if (unlikely(overlap && seq_bottom < MLX5E_IPSEC_ESN_SCOPE_MID)) { - ++(*esn); sa_entry->esn_state.overlap = 0; return true; } else if (unlikely(!overlap && diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c index 623a05d78343..beec87ec15f5 100644 --- a/drivers/net/ethernet/micrel/ksz884x.c +++ b/drivers/net/ethernet/micrel/ksz884x.c @@ -6936,7 +6936,7 @@ static int pcidev_init(struct pci_dev *pdev, const struct pci_device_id *id) char banner[sizeof(version)]; struct ksz_switch *sw = NULL; - result = pci_enable_device(pdev); + result = pcim_enable_device(pdev); if (result) return result; diff --git a/drivers/net/ethernet/microchip/encx24j600-regmap.c b/drivers/net/ethernet/microchip/encx24j600-regmap.c index 46181559d1f1..4a8d9633e082 100644 --- a/drivers/net/ethernet/microchip/encx24j600-regmap.c +++ b/drivers/net/ethernet/microchip/encx24j600-regmap.c @@ -367,7 +367,7 @@ static int regmap_encx24j600_phy_reg_read(void *context, unsigned int reg, goto err_out; usleep_range(26, 100); - while ((ret = regmap_read(ctx->regmap, MISTAT, &mistat) != 0) && + while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) && (mistat & BUSY)) cpu_relax(); @@ -405,7 +405,7 @@ static int regmap_encx24j600_phy_reg_write(void *context, unsigned int reg, goto err_out; usleep_range(26, 100); - while ((ret = regmap_read(ctx->regmap, MISTAT, &mistat) != 0) && + while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) && (mistat & BUSY)) cpu_relax(); diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c index 85a54215616c..0a8483c615d4 100644 --- a/drivers/net/ethernet/neterion/s2io.c +++ b/drivers/net/ethernet/neterion/s2io.c @@ -7126,9 +7126,8 @@ static int s2io_card_up(struct s2io_nic *sp) if (ret) { DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n", dev->name); - s2io_reset(sp); - free_rx_buffers(sp); - return -ENOMEM; + ret = -ENOMEM; + goto err_fill_buff; } DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i, ring->rx_bufs_left); @@ -7166,18 +7165,16 @@ static int s2io_card_up(struct s2io_nic *sp) /* Enable Rx Traffic and interrupts on the NIC */ if (start_nic(sp)) { DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name); - s2io_reset(sp); - free_rx_buffers(sp); - return -ENODEV; + ret = -ENODEV; + goto err_out; } /* Add interrupt service routine */ if (s2io_add_isr(sp) != 0) { if (sp->config.intr_type == MSI_X) s2io_rem_isr(sp); - s2io_reset(sp); - free_rx_buffers(sp); - return -ENODEV; + ret = -ENODEV; + goto err_out; } timer_setup(&sp->alarm_timer, s2io_alarm_handle, 0); @@ -7197,6 +7194,20 @@ static int s2io_card_up(struct s2io_nic *sp) } return 0; + +err_out: + if (config->napi) { + if (config->intr_type == MSI_X) { + for (i = 0; i < sp->config.rx_ring_num; i++) + napi_disable(&sp->mac_control.rings[i].napi); + } else { + napi_disable(&sp->napi); + } + } +err_fill_buff: + s2io_reset(sp); + free_rx_buffers(sp); + return ret; } /** diff --git a/drivers/net/ethernet/ni/nixge.c b/drivers/net/ethernet/ni/nixge.c index a791d7932b0e..abbb25f1384c 100644 --- a/drivers/net/ethernet/ni/nixge.c +++ b/drivers/net/ethernet/ni/nixge.c @@ -833,6 +833,7 @@ static int nixge_open(struct net_device *ndev) err_rx_irq: free_irq(priv->tx_irq, ndev); err_tx_irq: + napi_disable(&priv->napi); phy_stop(phy); phy_disconnect(phy); tasklet_kill(&priv->dma_err_tasklet); diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index 5a45648e3124..d85d51201e36 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -1177,6 +1177,7 @@ static void pch_gbe_tx_queue(struct pch_gbe_adapter *adapter, buffer_info->dma = 0; buffer_info->time_stamp = 0; tx_ring->next_to_use = ring_num; + dev_kfree_skb_any(skb); return; } buffer_info->mapped = true; @@ -2491,6 +2492,7 @@ static void pch_gbe_remove(struct pci_dev *pdev) unregister_netdev(netdev); pch_gbe_phy_hw_reset(&adapter->hw); + pci_dev_put(adapter->ptp_pdev); free_netdev(netdev); } @@ -2572,7 +2574,7 @@ static int pch_gbe_probe(struct pci_dev *pdev, /* setup the private structure */ ret = pch_gbe_sw_init(adapter); if (ret) - goto err_free_netdev; + goto err_put_dev; /* Initialize PHY */ ret = pch_gbe_init_phy(adapter); @@ -2630,6 +2632,8 @@ static int pch_gbe_probe(struct pci_dev *pdev, err_free_adapter: pch_gbe_phy_hw_reset(&adapter->hw); +err_put_dev: + pci_dev_put(adapter->ptp_pdev); err_free_netdev: free_netdev(netdev); return ret; diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c index 51e17a635d4b..7a65a1534e41 100644 --- a/drivers/net/ethernet/qlogic/qla3xxx.c +++ b/drivers/net/ethernet/qlogic/qla3xxx.c @@ -2477,6 +2477,7 @@ static netdev_tx_t ql3xxx_send(struct sk_buff *skb, skb_shinfo(skb)->nr_frags); if (tx_cb->seg_count == -1) { netdev_err(ndev, "%s: invalid segment count!\n", __func__); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c index d857d44547a5..b3f1f1bd52a8 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c @@ -2993,7 +2993,7 @@ static void qlcnic_83xx_recover_driver_lock(struct qlcnic_adapter *adapter) QLCWRX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK, val); dev_info(&adapter->pdev->dev, "%s: lock recovery initiated\n", __func__); - msleep(QLC_83XX_DRV_LOCK_RECOVERY_DELAY); + mdelay(QLC_83XX_DRV_LOCK_RECOVERY_DELAY); val = QLCRDX(adapter->ahw, QLC_83XX_RECOVER_DRV_LOCK); id = ((val >> 2) & 0xF); if (id == adapter->portnum) { @@ -3029,7 +3029,7 @@ int qlcnic_83xx_lock_driver(struct qlcnic_adapter *adapter) if (status) break; - msleep(QLC_83XX_DRV_LOCK_WAIT_DELAY); + mdelay(QLC_83XX_DRV_LOCK_WAIT_DELAY); i++; if (i == 1) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index c24b7ea37e39..9077014f6f40 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2310,6 +2310,7 @@ static int __maybe_unused ravb_resume(struct device *dev) ret = ravb_open(ndev); if (ret < 0) return ret; + ravb_set_rx_mode(ndev); netif_device_attach(ndev); } diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index 3693a59b6d01..5c0629b4fccc 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -1549,11 +1549,13 @@ static int netsec_register_mdio(struct netsec_priv *priv, u32 phy_addr) ret = PTR_ERR(priv->phydev); dev_err(priv->dev, "get_phy_device err(%d)\n", ret); priv->phydev = NULL; + mdiobus_unregister(bus); return -ENODEV; } ret = phy_device_register(priv->phydev); if (ret) { + phy_device_free(priv->phydev); mdiobus_unregister(bus); dev_err(priv->dev, "phy_device_register err(%d)\n", ret); diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 9762e687fc73..9e040eb629ed 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -114,10 +114,10 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev) axi->axi_lpi_en = of_property_read_bool(np, "snps,lpi_en"); axi->axi_xit_frm = of_property_read_bool(np, "snps,xit_frm"); - axi->axi_kbbe = of_property_read_bool(np, "snps,axi_kbbe"); - axi->axi_fb = of_property_read_bool(np, "snps,axi_fb"); - axi->axi_mb = of_property_read_bool(np, "snps,axi_mb"); - axi->axi_rb = of_property_read_bool(np, "snps,axi_rb"); + axi->axi_kbbe = of_property_read_bool(np, "snps,kbbe"); + axi->axi_fb = of_property_read_bool(np, "snps,fb"); + axi->axi_mb = of_property_read_bool(np, "snps,mb"); + axi->axi_rb = of_property_read_bool(np, "snps,rb"); if (of_property_read_u32(np, "snps,wr_osr_lmt", &axi->axi_wr_osr_lmt)) axi->axi_wr_osr_lmt = 1; diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c index 777fa59f5e0c..1eeddfea389c 100644 --- a/drivers/net/hamradio/bpqether.c +++ b/drivers/net/hamradio/bpqether.c @@ -537,7 +537,7 @@ static int bpq_device_event(struct notifier_block *this, if (!net_eq(dev_net(dev), &init_net)) return NOTIFY_DONE; - if (!dev_is_ethdev(dev)) + if (!dev_is_ethdev(dev) && !bpq_get_ax25_dev(dev)) return NOTIFY_DONE; switch (event) { diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index dfa801315da6..e02ff5e33e2d 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -950,6 +950,9 @@ struct net_device_context { u32 vf_alloc; /* Serial number of the VF to team with */ u32 vf_serial; + + /* completion variable to confirm vf association */ + struct completion vf_add; }; /* Per channel data */ diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c index 77a9a753d979..092c5f315b49 100644 --- a/drivers/net/hyperv/netvsc.c +++ b/drivers/net/hyperv/netvsc.c @@ -1227,6 +1227,10 @@ static void netvsc_send_vf(struct net_device *ndev, net_device_ctx->vf_alloc = nvmsg->msg.v4_msg.vf_assoc.allocated; net_device_ctx->vf_serial = nvmsg->msg.v4_msg.vf_assoc.serial; + + if (net_device_ctx->vf_alloc) + complete(&net_device_ctx->vf_add); + netdev_info(ndev, "VF slot %u %s\n", net_device_ctx->vf_serial, net_device_ctx->vf_alloc ? "added" : "removed"); diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index f094e4bc2175..9528932361a8 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2121,6 +2121,7 @@ static struct net_device *get_netvsc_byslot(const struct net_device *vf_netdev) { struct device *parent = vf_netdev->dev.parent; struct net_device_context *ndev_ctx; + struct net_device *ndev; struct pci_dev *pdev; u32 serial; @@ -2147,6 +2148,18 @@ static struct net_device *get_netvsc_byslot(const struct net_device *vf_netdev) return hv_get_drvdata(ndev_ctx->device_ctx); } + /* Fallback path to check synthetic vf with + * help of mac addr + */ + list_for_each_entry(ndev_ctx, &netvsc_dev_list, list) { + ndev = hv_get_drvdata(ndev_ctx->device_ctx); + if (ether_addr_equal(vf_netdev->perm_addr, ndev->perm_addr)) { + netdev_notice(vf_netdev, + "falling back to mac addr based matching\n"); + return ndev; + } + } + netdev_notice(vf_netdev, "no netdev found for vf serial:%u\n", serial); return NULL; @@ -2216,6 +2229,11 @@ static int netvsc_vf_changed(struct net_device *vf_netdev) if (!netvsc_dev) return NOTIFY_DONE; + if (vf_is_up && !net_device_ctx->vf_alloc) { + netdev_info(ndev, "Waiting for the VF association from host\n"); + wait_for_completion(&net_device_ctx->vf_add); + } + netvsc_switch_datapath(ndev, vf_is_up); netdev_info(ndev, "Data path switched %s VF: %s\n", vf_is_up ? "to" : "from", vf_netdev->name); @@ -2237,6 +2255,7 @@ static int netvsc_unregister_vf(struct net_device *vf_netdev) netdev_info(ndev, "VF unregistering: %s\n", vf_netdev->name); + reinit_completion(&net_device_ctx->vf_add); netdev_rx_handler_unregister(vf_netdev); netdev_upper_dev_unlink(vf_netdev, ndev); RCU_INIT_POINTER(net_device_ctx->vf_netdev, NULL); @@ -2274,6 +2293,7 @@ static int netvsc_probe(struct hv_device *dev, INIT_DELAYED_WORK(&net_device_ctx->dwork, netvsc_link_change); + init_completion(&net_device_ctx->vf_add); spin_lock_init(&net_device_ctx->lock); INIT_LIST_HEAD(&net_device_ctx->reconfig_events); INIT_DELAYED_WORK(&net_device_ctx->vf_takeover, netvsc_vf_setup); diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index 7c5db4f73cce..917edb3d04b7 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -925,7 +925,7 @@ static int ca8210_spi_transfer( dev_dbg(&spi->dev, "%s called\n", __func__); - cas_ctl = kmalloc(sizeof(*cas_ctl), GFP_ATOMIC); + cas_ctl = kzalloc(sizeof(*cas_ctl), GFP_ATOMIC); if (!cas_ctl) return -ENOMEM; diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c index fa3a4db517d6..57110246e71e 100644 --- a/drivers/net/ieee802154/cc2520.c +++ b/drivers/net/ieee802154/cc2520.c @@ -978,7 +978,7 @@ static int cc2520_hw_init(struct cc2520_private *priv) if (timeout-- <= 0) { dev_err(&priv->spi->dev, "oscillator start failed!\n"); - return ret; + return -ETIMEDOUT; } udelay(1); } while (!(status & CC2520_STATUS_XOSC32M_STABLE)); diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index e226a96da3a3..e1f95fd08d72 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -1137,7 +1137,7 @@ void macvlan_common_setup(struct net_device *dev) { ether_setup(dev); - dev->min_mtu = 0; + /* ether_setup() has set dev->min_mtu to ETH_MIN_MTU. */ dev->max_mtu = ETH_MAX_MTU; dev->priv_flags &= ~IFF_TX_SKB_SHARING; netif_keep_dst(dev); @@ -1471,8 +1471,10 @@ destroy_macvlan_port: /* the macvlan port may be freed by macvlan_uninit when fail to register. * so we destroy the macvlan port only when it's valid. */ - if (create && macvlan_port_get_rtnl(lowerdev)) + if (create && macvlan_port_get_rtnl(lowerdev)) { + macvlan_flush_sources(port, vlan); macvlan_port_destroy(port->dev); + } return err; } EXPORT_SYMBOL_GPL(macvlan_common_newlink); diff --git a/drivers/net/ntb_netdev.c b/drivers/net/ntb_netdev.c index df8d49ad48c3..33974e7519ce 100644 --- a/drivers/net/ntb_netdev.c +++ b/drivers/net/ntb_netdev.c @@ -506,7 +506,14 @@ static int __init ntb_netdev_init_module(void) rc = ntb_transport_register_client_dev(KBUILD_MODNAME); if (rc) return rc; - return ntb_transport_register_client(&ntb_netdev_client); + + rc = ntb_transport_register_client(&ntb_netdev_client); + if (rc) { + ntb_transport_unregister_client_dev(KBUILD_MODNAME); + return rc; + } + + return 0; } module_init(ntb_netdev_init_module); diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index efdac68da7f4..1d1fbd7bd6fc 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -412,7 +412,7 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner) bus->reset(bus); for (i = 0; i < PHY_MAX_ADDR; i++) { - if ((bus->phy_mask & (1 << i)) == 0) { + if ((bus->phy_mask & BIT(i)) == 0) { struct phy_device *phydev; phydev = mdiobus_scan(bus, i); diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index a03d0627efb0..4d29865d97a4 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1083,6 +1083,7 @@ error: error_module_put: module_put(d->driver->owner); + d->driver = NULL; error_put_device: put_device(d); if (ndev_owner != bus->owner) diff --git a/drivers/net/plip/plip.c b/drivers/net/plip/plip.c index feb92ecd1880..06d59e3af664 100644 --- a/drivers/net/plip/plip.c +++ b/drivers/net/plip/plip.c @@ -448,12 +448,12 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, } rcv->state = PLIP_PK_DONE; if (rcv->skb) { - kfree_skb(rcv->skb); + dev_kfree_skb_irq(rcv->skb); rcv->skb = NULL; } snd->state = PLIP_PK_DONE; if (snd->skb) { - dev_kfree_skb(snd->skb); + dev_consume_skb_irq(snd->skb); snd->skb = NULL; } spin_unlock_irq(&nl->lock); diff --git a/drivers/net/thunderbolt.c b/drivers/net/thunderbolt.c index 4b5af2413970..51b5442fbc66 100644 --- a/drivers/net/thunderbolt.c +++ b/drivers/net/thunderbolt.c @@ -1342,12 +1342,21 @@ static int __init tbnet_init(void) TBNET_MATCH_FRAGS_ID); ret = tb_register_property_dir("network", tbnet_dir); - if (ret) { - tb_property_free_dir(tbnet_dir); - return ret; - } + if (ret) + goto err_free_dir; + + ret = tb_register_service_driver(&tbnet_driver); + if (ret) + goto err_unregister; - return tb_register_service_driver(&tbnet_driver); + return 0; + +err_unregister: + tb_unregister_property_dir("network", tbnet_dir); +err_free_dir: + tb_property_free_dir(tbnet_dir); + + return ret; } module_init(tbnet_init); diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 0afb39a98e68..76e7572e9ad4 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -756,7 +756,6 @@ static void __tun_detach(struct tun_file *tfile, bool clean) if (tun) xdp_rxq_info_unreg(&tfile->xdp_rxq); ptr_ring_cleanup(&tfile->tx_ring, tun_ptr_free); - sock_put(&tfile->sk); } } @@ -772,6 +771,9 @@ static void tun_detach(struct tun_file *tfile, bool clean) if (dev) netdev_state_change(dev); rtnl_unlock(); + + if (clean) + sock_put(&tfile->sk); } static void tun_detach_all(struct net_device *dev) @@ -1473,7 +1475,8 @@ static struct sk_buff *tun_napi_alloc_frags(struct tun_file *tfile, int err; int i; - if (it->nr_segs > MAX_SKB_FRAGS + 1) + if (it->nr_segs > MAX_SKB_FRAGS + 1 || + len > (ETH_MAX_MTU - NET_SKB_PAD - NET_IP_ALIGN)) return ERR_PTR(-EMSGSIZE); local_bh_disable(); @@ -1965,17 +1968,25 @@ drop: headlen = eth_get_headlen(skb->data, skb_headlen(skb)); if (unlikely(headlen > skb_headlen(skb))) { + WARN_ON_ONCE(1); + err = -ENOMEM; this_cpu_inc(tun->pcpu_stats->rx_dropped); +napi_busy: napi_free_frags(&tfile->napi); rcu_read_unlock(); mutex_unlock(&tfile->napi_mutex); - WARN_ON(1); - return -ENOMEM; + return err; } - local_bh_disable(); - napi_gro_frags(&tfile->napi); - local_bh_enable(); + if (likely(napi_schedule_prep(&tfile->napi))) { + local_bh_disable(); + napi_gro_frags(&tfile->napi); + napi_complete(&tfile->napi); + local_bh_enable(); + } else { + err = -EBUSY; + goto napi_busy; + } mutex_unlock(&tfile->napi_mutex); } else if (tfile->napi_enabled) { struct sk_buff_head *queue = &tfile->sk.sk_write_queue; diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index 778bd9aaba9f..17b932505be0 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c @@ -777,6 +777,13 @@ static const struct usb_device_id products[] = { }, #endif +/* Lenovo ThinkPad OneLink+ Dock (based on Realtek RTL8153) */ +{ + USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3054, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + /* ThinkPad USB-C Dock (based on Realtek RTL8153) */ { USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM, diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 56115792bea1..24ce49b311c4 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -1317,6 +1317,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */ {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1031, 3)}, /* Telit LE910C1-EUX */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x103a, 0)}, /* Telit LE910C4-WWX */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1040, 2)}, /* Telit LE922A */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1050, 2)}, /* Telit FN980 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1060, 2)}, /* Telit LN920 */ @@ -1376,6 +1377,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */ {QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/ {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ + {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 */ /* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 4764e4f54cef..9c17332c19fd 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1386,7 +1386,9 @@ static void intr_callback(struct urb *urb) "Stop submitting intr, status %d\n", status); return; case -EOVERFLOW: - netif_info(tp, intr, tp->netdev, "intr status -EOVERFLOW\n"); + if (net_ratelimit()) + netif_info(tp, intr, tp->netdev, + "intr status -EOVERFLOW\n"); goto resubmit; /* -EPIPE: should clear the halt */ default: @@ -5325,6 +5327,7 @@ static const struct usb_device_id rtl8152_table[] = { {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927)}, {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3054)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3069)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)}, diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c index 3ec922bed2d8..6233805fc032 100644 --- a/drivers/net/wan/lapbether.c +++ b/drivers/net/wan/lapbether.c @@ -406,7 +406,7 @@ static int lapbeth_device_event(struct notifier_block *this, if (dev_net(dev) != &init_net) return NOTIFY_DONE; - if (!dev_is_ethdev(dev)) + if (!dev_is_ethdev(dev) && !lapbeth_get_x25_dev(dev)) return NOTIFY_DONE; switch (event) { diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 6e4096fd6633..07308571665c 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -819,11 +819,36 @@ static int ath10k_peer_delete(struct ath10k *ar, u32 vdev_id, const u8 *addr) return 0; } +static void ath10k_peer_map_cleanup(struct ath10k *ar, struct ath10k_peer *peer) +{ + int peer_id, i; + + lockdep_assert_held(&ar->conf_mutex); + + for_each_set_bit(peer_id, peer->peer_ids, + ATH10K_MAX_NUM_PEER_IDS) { + ar->peer_map[peer_id] = NULL; + } + + /* Double check that peer is properly un-referenced from + * the peer_map + */ + for (i = 0; i < ARRAY_SIZE(ar->peer_map); i++) { + if (ar->peer_map[i] == peer) { + ath10k_warn(ar, "removing stale peer_map entry for %pM (ptr %pK idx %d)\n", + peer->addr, peer, i); + ar->peer_map[i] = NULL; + } + } + + list_del(&peer->list); + kfree(peer); + ar->num_peers--; +} + static void ath10k_peer_cleanup(struct ath10k *ar, u32 vdev_id) { struct ath10k_peer *peer, *tmp; - int peer_id; - int i; lockdep_assert_held(&ar->conf_mutex); @@ -835,25 +860,7 @@ static void ath10k_peer_cleanup(struct ath10k *ar, u32 vdev_id) ath10k_warn(ar, "removing stale peer %pM from vdev_id %d\n", peer->addr, vdev_id); - for_each_set_bit(peer_id, peer->peer_ids, - ATH10K_MAX_NUM_PEER_IDS) { - ar->peer_map[peer_id] = NULL; - } - - /* Double check that peer is properly un-referenced from - * the peer_map - */ - for (i = 0; i < ARRAY_SIZE(ar->peer_map); i++) { - if (ar->peer_map[i] == peer) { - ath10k_warn(ar, "removing stale peer_map entry for %pM (ptr %pK idx %d)\n", - peer->addr, peer, i); - ar->peer_map[i] = NULL; - } - } - - list_del(&peer->list); - kfree(peer); - ar->num_peers--; + ath10k_peer_map_cleanup(ar, peer); } spin_unlock_bh(&ar->data_lock); } @@ -6371,10 +6378,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw, /* Clean up the peer object as well since we * must have failed to do this above. */ - list_del(&peer->list); - ar->peer_map[i] = NULL; - kfree(peer); - ar->num_peers--; + ath10k_peer_map_cleanup(ar, peer); } } spin_unlock_bh(&ar->data_lock); diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c index e37de14bc502..6d69cf69fd86 100644 --- a/drivers/net/wireless/ath/ath9k/htc_hst.c +++ b/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -367,33 +367,27 @@ ret: } static void ath9k_htc_fw_panic_report(struct htc_target *htc_handle, - struct sk_buff *skb) + struct sk_buff *skb, u32 len) { uint32_t *pattern = (uint32_t *)skb->data; - switch (*pattern) { - case 0x33221199: - { + if (*pattern == 0x33221199 && len >= sizeof(struct htc_panic_bad_vaddr)) { struct htc_panic_bad_vaddr *htc_panic; htc_panic = (struct htc_panic_bad_vaddr *) skb->data; dev_err(htc_handle->dev, "ath: firmware panic! " "exccause: 0x%08x; pc: 0x%08x; badvaddr: 0x%08x.\n", htc_panic->exccause, htc_panic->pc, htc_panic->badvaddr); - break; - } - case 0x33221299: - { + return; + } + if (*pattern == 0x33221299) { struct htc_panic_bad_epid *htc_panic; htc_panic = (struct htc_panic_bad_epid *) skb->data; dev_err(htc_handle->dev, "ath: firmware panic! " "bad epid: 0x%08x\n", htc_panic->epid); - break; - } - default: - dev_err(htc_handle->dev, "ath: unknown panic pattern!\n"); - break; + return; } + dev_err(htc_handle->dev, "ath: unknown panic pattern!\n"); } /* @@ -414,16 +408,26 @@ void ath9k_htc_rx_msg(struct htc_target *htc_handle, if (!htc_handle || !skb) return; + /* A valid message requires len >= 8. + * + * sizeof(struct htc_frame_hdr) == 8 + * sizeof(struct htc_ready_msg) == 8 + * sizeof(struct htc_panic_bad_vaddr) == 16 + * sizeof(struct htc_panic_bad_epid) == 8 + */ + if (unlikely(len < sizeof(struct htc_frame_hdr))) + goto invalid; htc_hdr = (struct htc_frame_hdr *) skb->data; epid = htc_hdr->endpoint_id; if (epid == 0x99) { - ath9k_htc_fw_panic_report(htc_handle, skb); + ath9k_htc_fw_panic_report(htc_handle, skb, len); kfree_skb(skb); return; } if (epid < 0 || epid >= ENDPOINT_MAX) { +invalid: if (pipe_id != USB_REG_IN_PIPE) dev_kfree_skb_any(skb); else @@ -435,21 +439,30 @@ void ath9k_htc_rx_msg(struct htc_target *htc_handle, /* Handle trailer */ if (htc_hdr->flags & HTC_FLAGS_RECV_TRAILER) { - if (be32_to_cpu(*(__be32 *) skb->data) == 0x00C60000) + if (be32_to_cpu(*(__be32 *) skb->data) == 0x00C60000) { /* Move past the Watchdog pattern */ htc_hdr = (struct htc_frame_hdr *)(skb->data + 4); + len -= 4; + } } /* Get the message ID */ + if (unlikely(len < sizeof(struct htc_frame_hdr) + sizeof(__be16))) + goto invalid; msg_id = (__be16 *) ((void *) htc_hdr + sizeof(struct htc_frame_hdr)); /* Now process HTC messages */ switch (be16_to_cpu(*msg_id)) { case HTC_MSG_READY_ID: + if (unlikely(len < sizeof(struct htc_ready_msg))) + goto invalid; htc_process_target_rdy(htc_handle, htc_hdr); break; case HTC_MSG_CONNECT_SERVICE_RESPONSE_ID: + if (unlikely(len < sizeof(struct htc_frame_hdr) + + sizeof(struct htc_conn_svc_rspmsg))) + goto invalid; htc_process_conn_rsp(htc_handle, htc_hdr); break; default: diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index db4c541f58ae..31bf2eb47b49 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -270,6 +270,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb, struct brcmf_pub *drvr = ifp->drvr; struct ethhdr *eh; int head_delta; + unsigned int tx_bytes = skb->len; brcmf_dbg(DATA, "Enter, bsscfgidx=%d\n", ifp->bsscfgidx); @@ -341,7 +342,7 @@ done: ndev->stats.tx_dropped++; } else { ndev->stats.tx_packets++; - ndev->stats.tx_bytes += skb->len; + ndev->stats.tx_bytes += tx_bytes; } /* Return ok: we always eat the packet */ diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c index e7eaa57d11d9..4a900d8d98b8 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c @@ -237,6 +237,10 @@ static void brcmf_fweh_event_worker(struct work_struct *work) brcmf_fweh_event_name(event->code), event->code, event->emsg.ifidx, event->emsg.bsscfgidx, event->emsg.addr); + if (event->emsg.bsscfgidx >= BRCMF_MAX_IFS) { + brcmf_err("invalid bsscfg index: %u\n", event->emsg.bsscfgidx); + goto event_free; + } /* convert event message */ emsg_be = &event->emsg; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c index ffa243e2e2d0..581a23549ee5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c @@ -163,12 +163,12 @@ static int brcmf_pno_set_random(struct brcmf_if *ifp, struct brcmf_pno_info *pi) struct brcmf_pno_macaddr_le pfn_mac; u8 *mac_addr = NULL; u8 *mac_mask = NULL; - int err, i; + int err, i, ri; - for (i = 0; i < pi->n_reqs; i++) - if (pi->reqs[i]->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { - mac_addr = pi->reqs[i]->mac_addr; - mac_mask = pi->reqs[i]->mac_addr_mask; + for (ri = 0; ri < pi->n_reqs; ri++) + if (pi->reqs[ri]->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { + mac_addr = pi->reqs[ri]->mac_addr; + mac_mask = pi->reqs[ri]->mac_addr_mask; break; } @@ -190,7 +190,7 @@ static int brcmf_pno_set_random(struct brcmf_if *ifp, struct brcmf_pno_info *pi) pfn_mac.mac[0] |= 0x02; brcmf_dbg(SCAN, "enabling random mac: reqid=%llu mac=%pM\n", - pi->reqs[i]->reqid, pfn_mac.mac); + pi->reqs[ri]->reqid, pfn_mac.mac); err = brcmf_fil_iovar_data_set(ifp, "pfn_macaddr", &pfn_mac, sizeof(pfn_mac)); if (err) diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 7de92af2af02..22738ba7d65b 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -686,6 +686,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, struct hwsim_vif_priv *vp = (void *)vif->drv_priv; struct sk_buff *skb; struct ieee80211_hdr *hdr; + struct ieee80211_tx_info *cb; if (!vp->assoc) return; @@ -707,6 +708,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, memcpy(hdr->addr2, mac, ETH_ALEN); memcpy(hdr->addr3, vp->bssid, ETH_ALEN); + cb = IEEE80211_SKB_CB(skb); + cb->control.rates[0].count = 1; + cb->control.rates[1].idx = -1; + rcu_read_lock(); mac80211_hwsim_tx_frame(data->hw, skb, rcu_dereference(vif->chanctx_conf)->def.chan); @@ -3270,6 +3275,8 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2, rx_status.band = data2->channel->band; rx_status.rate_idx = nla_get_u32(info->attrs[HWSIM_ATTR_RX_RATE]); + if (rx_status.rate_idx >= data2->hw->wiphy->bands[rx_status.band]->n_bitrates) + goto out; rx_status.signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]); memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c index a567bc273ffc..c9fa56b721b2 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -3658,7 +3658,10 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); - rt2800_bbp_write(rt2x00dev, 86, 0); + if (rt2x00_rt(rt2x00dev, RT6352)) + rt2800_bbp_write(rt2x00dev, 86, 0x38); + else + rt2800_bbp_write(rt2x00dev, 86, 0); } if (rf->channel <= 14) { @@ -3838,7 +3841,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, reg += 2 * rt2x00dev->lna_gain; rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); - rt2800_iq_calibrate(rt2x00dev, rf->channel); + if (rt2x00_rt(rt2x00dev, RT5592)) + rt2800_iq_calibrate(rt2x00dev, rf->channel); } bbp = rt2800_bbp_read(rt2x00dev, 4); @@ -5317,7 +5321,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); } else if (rt2x00_rt(rt2x00dev, RT6352)) { rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000401); - rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x000C0000); + rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x000C0001); rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); rt2800_register_write(rt2x00dev, MIMO_PS_CFG, 0x00000002); rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0x00150F0F); @@ -5569,6 +5573,27 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) reg = rt2800_register_read(rt2x00dev, US_CYC_CNT); rt2x00_set_field32(®, US_CYC_CNT_CLOCK_CYCLE, 125); rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); + } else if (rt2x00_is_soc(rt2x00dev)) { + struct clk *clk = clk_get_sys("bus", NULL); + int rate; + + if (IS_ERR(clk)) { + clk = clk_get_sys("cpu", NULL); + + if (IS_ERR(clk)) { + rate = 125; + } else { + rate = clk_get_rate(clk) / 3000000; + clk_put(clk); + } + } else { + rate = clk_get_rate(clk) / 1000000; + clk_put(clk); + } + + reg = rt2800_register_read(rt2x00dev, US_CYC_CNT); + rt2x00_set_field32(®, US_CYC_CNT_CLOCK_CYCLE, rate); + rt2800_register_write(rt2x00dev, US_CYC_CNT, reg); } reg = rt2800_register_read(rt2x00dev, HT_FBK_CFG0); diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index b80cff96dea1..38f06ee98b35 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -1879,13 +1879,6 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv) /* We have 8 bits to indicate validity */ map_addr = offset * 8; - if (map_addr >= EFUSE_MAP_LEN) { - dev_warn(dev, "%s: Illegal map_addr (%04x), " - "efuse corrupt!\n", - __func__, map_addr); - ret = -EINVAL; - goto exit; - } for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { /* Check word enable condition in the section */ if (word_mask & BIT(i)) { @@ -1896,6 +1889,13 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv) ret = rtl8xxxu_read_efuse8(priv, efuse_addr++, &val8); if (ret) goto exit; + if (map_addr >= EFUSE_MAP_LEN - 1) { + dev_warn(dev, "%s: Illegal map_addr (%04x), " + "efuse corrupt!\n", + __func__, map_addr); + ret = -EINVAL; + goto exit; + } priv->efuse_wifi.raw[map_addr++] = val8; ret = rtl8xxxu_read_efuse8(priv, efuse_addr++, &val8); @@ -2930,12 +2930,12 @@ bool rtl8xxxu_gen2_simularity_compare(struct rtl8xxxu_priv *priv, } if (!(simubitmap & 0x30) && priv->tx_paths > 1) { - /* path B RX OK */ + /* path B TX OK */ for (i = 4; i < 6; i++) result[3][i] = result[c1][i]; } - if (!(simubitmap & 0x30) && priv->tx_paths > 1) { + if (!(simubitmap & 0xc0) && priv->tx_paths > 1) { /* path B RX OK */ for (i = 6; i < 8; i++) result[3][i] = result[c1][i]; @@ -4955,6 +4955,8 @@ static void rtl8xxxu_tx(struct ieee80211_hw *hw, if (control && control->sta) sta = control->sta; + queue = rtl8xxxu_queue_select(hw, skb); + tx_desc = skb_push(skb, tx_desc_size); memset(tx_desc, 0, tx_desc_size); @@ -4967,7 +4969,6 @@ static void rtl8xxxu_tx(struct ieee80211_hw *hw, is_broadcast_ether_addr(ieee80211_get_DA(hdr))) tx_desc->txdw0 |= TXDESC_BROADMULTICAST; - queue = rtl8xxxu_queue_select(hw, skb); tx_desc->txdw1 = cpu_to_le32(queue << TXDESC_QUEUE_SHIFT); if (tx_info->control.hw_key) { diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h index 751254dcee3b..92d30ebdb111 100644 --- a/drivers/net/xen-netback/common.h +++ b/drivers/net/xen-netback/common.h @@ -48,7 +48,6 @@ #include <linux/debugfs.h> typedef unsigned int pending_ring_idx_t; -#define INVALID_PENDING_RING_IDX (~0U) struct pending_tx_info { struct xen_netif_tx_request req; /* tx request */ @@ -82,8 +81,6 @@ struct xenvif_rx_meta { /* Discriminate from any valid pending_idx value. */ #define INVALID_PENDING_IDX 0xFFFF -#define MAX_BUFFER_OFFSET XEN_PAGE_SIZE - #define MAX_PENDING_REQS XEN_NETIF_TX_RING_SIZE /* The maximum number of frags is derived from the size of a grant (same @@ -346,11 +343,6 @@ void xenvif_free(struct xenvif *vif); int xenvif_xenbus_init(void); void xenvif_xenbus_fini(void); -int xenvif_schedulable(struct xenvif *vif); - -int xenvif_queue_stopped(struct xenvif_queue *queue); -void xenvif_wake_queue(struct xenvif_queue *queue); - /* (Un)Map communication rings. */ void xenvif_unmap_frontend_data_rings(struct xenvif_queue *queue); int xenvif_map_frontend_data_rings(struct xenvif_queue *queue, @@ -373,17 +365,13 @@ int xenvif_dealloc_kthread(void *data); irqreturn_t xenvif_ctrl_irq_fn(int irq, void *data); bool xenvif_have_rx_work(struct xenvif_queue *queue, bool test_kthread); -void xenvif_rx_action(struct xenvif_queue *queue); -void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb); +bool xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb); void xenvif_carrier_on(struct xenvif *vif); /* Callback from stack when TX packet can be released */ void xenvif_zerocopy_callback(struct ubuf_info *ubuf, bool zerocopy_success); -/* Unmap a pending page and release it back to the guest */ -void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx); - static inline pending_ring_idx_t nr_pending_reqs(struct xenvif_queue *queue) { return MAX_PENDING_REQS - diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index 3b5fdb24ef1b..df2027082763 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -70,7 +70,7 @@ void xenvif_skb_zerocopy_complete(struct xenvif_queue *queue) wake_up(&queue->dealloc_wq); } -int xenvif_schedulable(struct xenvif *vif) +static int xenvif_schedulable(struct xenvif *vif) { return netif_running(vif->dev) && test_bit(VIF_STATUS_CONNECTED, &vif->status) && @@ -178,20 +178,6 @@ irqreturn_t xenvif_interrupt(int irq, void *dev_id) return IRQ_HANDLED; } -int xenvif_queue_stopped(struct xenvif_queue *queue) -{ - struct net_device *dev = queue->vif->dev; - unsigned int id = queue->id; - return netif_tx_queue_stopped(netdev_get_tx_queue(dev, id)); -} - -void xenvif_wake_queue(struct xenvif_queue *queue) -{ - struct net_device *dev = queue->vif->dev; - unsigned int id = queue->id; - netif_tx_wake_queue(netdev_get_tx_queue(dev, id)); -} - static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev, select_queue_fallback_t fallback) @@ -269,14 +255,16 @@ xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) skb_clear_hash(skb); - xenvif_rx_queue_tail(queue, skb); + if (!xenvif_rx_queue_tail(queue, skb)) + goto drop; + xenvif_kick_thread(queue); return NETDEV_TX_OK; drop: vif->dev->stats.tx_dropped++; - dev_kfree_skb(skb); + dev_kfree_skb_any(skb); return NETDEV_TX_OK; } diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index 4d0d5501ca56..fc389f2bba7a 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -105,6 +105,8 @@ static void make_tx_response(struct xenvif_queue *queue, s8 st); static void push_tx_responses(struct xenvif_queue *queue); +static void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx); + static inline int tx_work_todo(struct xenvif_queue *queue); static inline unsigned long idx_to_pfn(struct xenvif_queue *queue, @@ -323,10 +325,13 @@ static int xenvif_count_requests(struct xenvif_queue *queue, struct xenvif_tx_cb { - u16 pending_idx; + u16 copy_pending_idx[XEN_NETBK_LEGACY_SLOTS_MAX + 1]; + u8 copy_count; }; #define XENVIF_TX_CB(skb) ((struct xenvif_tx_cb *)(skb)->cb) +#define copy_pending_idx(skb, i) (XENVIF_TX_CB(skb)->copy_pending_idx[i]) +#define copy_count(skb) (XENVIF_TX_CB(skb)->copy_count) static inline void xenvif_tx_create_map_op(struct xenvif_queue *queue, u16 pending_idx, @@ -361,31 +366,93 @@ static inline struct sk_buff *xenvif_alloc_skb(unsigned int size) return skb; } -static struct gnttab_map_grant_ref *xenvif_get_requests(struct xenvif_queue *queue, - struct sk_buff *skb, - struct xen_netif_tx_request *txp, - struct gnttab_map_grant_ref *gop, - unsigned int frag_overflow, - struct sk_buff *nskb) +static void xenvif_get_requests(struct xenvif_queue *queue, + struct sk_buff *skb, + struct xen_netif_tx_request *first, + struct xen_netif_tx_request *txfrags, + unsigned *copy_ops, + unsigned *map_ops, + unsigned int frag_overflow, + struct sk_buff *nskb, + unsigned int extra_count, + unsigned int data_len) { struct skb_shared_info *shinfo = skb_shinfo(skb); skb_frag_t *frags = shinfo->frags; - u16 pending_idx = XENVIF_TX_CB(skb)->pending_idx; - int start; + u16 pending_idx; pending_ring_idx_t index; unsigned int nr_slots; + struct gnttab_copy *cop = queue->tx_copy_ops + *copy_ops; + struct gnttab_map_grant_ref *gop = queue->tx_map_ops + *map_ops; + struct xen_netif_tx_request *txp = first; + + nr_slots = shinfo->nr_frags + 1; + + copy_count(skb) = 0; - nr_slots = shinfo->nr_frags; + /* Create copy ops for exactly data_len bytes into the skb head. */ + __skb_put(skb, data_len); + while (data_len > 0) { + int amount = data_len > txp->size ? txp->size : data_len; - /* Skip first skb fragment if it is on same page as header fragment. */ - start = (frag_get_pending_idx(&shinfo->frags[0]) == pending_idx); + cop->source.u.ref = txp->gref; + cop->source.domid = queue->vif->domid; + cop->source.offset = txp->offset; - for (shinfo->nr_frags = start; shinfo->nr_frags < nr_slots; - shinfo->nr_frags++, txp++, gop++) { + cop->dest.domid = DOMID_SELF; + cop->dest.offset = (offset_in_page(skb->data + + skb_headlen(skb) - + data_len)) & ~XEN_PAGE_MASK; + cop->dest.u.gmfn = virt_to_gfn(skb->data + skb_headlen(skb) + - data_len); + + cop->len = amount; + cop->flags = GNTCOPY_source_gref; + + index = pending_index(queue->pending_cons); + pending_idx = queue->pending_ring[index]; + callback_param(queue, pending_idx).ctx = NULL; + copy_pending_idx(skb, copy_count(skb)) = pending_idx; + copy_count(skb)++; + + cop++; + data_len -= amount; + + if (amount == txp->size) { + /* The copy op covered the full tx_request */ + + memcpy(&queue->pending_tx_info[pending_idx].req, + txp, sizeof(*txp)); + queue->pending_tx_info[pending_idx].extra_count = + (txp == first) ? extra_count : 0; + + if (txp == first) + txp = txfrags; + else + txp++; + queue->pending_cons++; + nr_slots--; + } else { + /* The copy op partially covered the tx_request. + * The remainder will be mapped. + */ + txp->offset += amount; + txp->size -= amount; + } + } + + for (shinfo->nr_frags = 0; shinfo->nr_frags < nr_slots; + shinfo->nr_frags++, gop++) { index = pending_index(queue->pending_cons++); pending_idx = queue->pending_ring[index]; - xenvif_tx_create_map_op(queue, pending_idx, txp, 0, gop); + xenvif_tx_create_map_op(queue, pending_idx, txp, + txp == first ? extra_count : 0, gop); frag_set_pending_idx(&frags[shinfo->nr_frags], pending_idx); + + if (txp == first) + txp = txfrags; + else + txp++; } if (frag_overflow) { @@ -406,7 +473,8 @@ static struct gnttab_map_grant_ref *xenvif_get_requests(struct xenvif_queue *que skb_shinfo(skb)->frag_list = nskb; } - return gop; + (*copy_ops) = cop - queue->tx_copy_ops; + (*map_ops) = gop - queue->tx_map_ops; } static inline void xenvif_grant_handle_set(struct xenvif_queue *queue, @@ -442,7 +510,7 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue, struct gnttab_copy **gopp_copy) { struct gnttab_map_grant_ref *gop_map = *gopp_map; - u16 pending_idx = XENVIF_TX_CB(skb)->pending_idx; + u16 pending_idx; /* This always points to the shinfo of the skb being checked, which * could be either the first or the one on the frag_list */ @@ -453,24 +521,37 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue, struct skb_shared_info *first_shinfo = NULL; int nr_frags = shinfo->nr_frags; const bool sharedslot = nr_frags && - frag_get_pending_idx(&shinfo->frags[0]) == pending_idx; - int i, err; + frag_get_pending_idx(&shinfo->frags[0]) == + copy_pending_idx(skb, copy_count(skb) - 1); + int i, err = 0; - /* Check status of header. */ - err = (*gopp_copy)->status; - if (unlikely(err)) { - if (net_ratelimit()) - netdev_dbg(queue->vif->dev, - "Grant copy of header failed! status: %d pending_idx: %u ref: %u\n", - (*gopp_copy)->status, - pending_idx, - (*gopp_copy)->source.u.ref); - /* The first frag might still have this slot mapped */ - if (!sharedslot) - xenvif_idx_release(queue, pending_idx, - XEN_NETIF_RSP_ERROR); + for (i = 0; i < copy_count(skb); i++) { + int newerr; + + /* Check status of header. */ + pending_idx = copy_pending_idx(skb, i); + + newerr = (*gopp_copy)->status; + if (likely(!newerr)) { + /* The first frag might still have this slot mapped */ + if (i < copy_count(skb) - 1 || !sharedslot) + xenvif_idx_release(queue, pending_idx, + XEN_NETIF_RSP_OKAY); + } else { + err = newerr; + if (net_ratelimit()) + netdev_dbg(queue->vif->dev, + "Grant copy of header failed! status: %d pending_idx: %u ref: %u\n", + (*gopp_copy)->status, + pending_idx, + (*gopp_copy)->source.u.ref); + /* The first frag might still have this slot mapped */ + if (i < copy_count(skb) - 1 || !sharedslot) + xenvif_idx_release(queue, pending_idx, + XEN_NETIF_RSP_ERROR); + } + (*gopp_copy)++; } - (*gopp_copy)++; check_frags: for (i = 0; i < nr_frags; i++, gop_map++) { @@ -517,14 +598,6 @@ check_frags: if (err) continue; - /* First error: if the header haven't shared a slot with the - * first frag, release it as well. - */ - if (!sharedslot) - xenvif_idx_release(queue, - XENVIF_TX_CB(skb)->pending_idx, - XEN_NETIF_RSP_OKAY); - /* Invalidate preceding fragments of this skb. */ for (j = 0; j < i; j++) { pending_idx = frag_get_pending_idx(&shinfo->frags[j]); @@ -794,7 +867,6 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, unsigned *copy_ops, unsigned *map_ops) { - struct gnttab_map_grant_ref *gop = queue->tx_map_ops; struct sk_buff *skb, *nskb; int ret; unsigned int frag_overflow; @@ -876,8 +948,12 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, continue; } + data_len = (txreq.size > XEN_NETBACK_TX_COPY_LEN) ? + XEN_NETBACK_TX_COPY_LEN : txreq.size; + ret = xenvif_count_requests(queue, &txreq, extra_count, txfrags, work_to_do); + if (unlikely(ret < 0)) break; @@ -903,9 +979,8 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, index = pending_index(queue->pending_cons); pending_idx = queue->pending_ring[index]; - data_len = (txreq.size > XEN_NETBACK_TX_COPY_LEN && - ret < XEN_NETBK_LEGACY_SLOTS_MAX) ? - XEN_NETBACK_TX_COPY_LEN : txreq.size; + if (ret >= XEN_NETBK_LEGACY_SLOTS_MAX - 1 && data_len < txreq.size) + data_len = txreq.size; skb = xenvif_alloc_skb(data_len); if (unlikely(skb == NULL)) { @@ -916,8 +991,6 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, } skb_shinfo(skb)->nr_frags = ret; - if (data_len < txreq.size) - skb_shinfo(skb)->nr_frags++; /* At this point shinfo->nr_frags is in fact the number of * slots, which can be as large as XEN_NETBK_LEGACY_SLOTS_MAX. */ @@ -979,54 +1052,19 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, type); } - XENVIF_TX_CB(skb)->pending_idx = pending_idx; - - __skb_put(skb, data_len); - queue->tx_copy_ops[*copy_ops].source.u.ref = txreq.gref; - queue->tx_copy_ops[*copy_ops].source.domid = queue->vif->domid; - queue->tx_copy_ops[*copy_ops].source.offset = txreq.offset; - - queue->tx_copy_ops[*copy_ops].dest.u.gmfn = - virt_to_gfn(skb->data); - queue->tx_copy_ops[*copy_ops].dest.domid = DOMID_SELF; - queue->tx_copy_ops[*copy_ops].dest.offset = - offset_in_page(skb->data) & ~XEN_PAGE_MASK; - - queue->tx_copy_ops[*copy_ops].len = data_len; - queue->tx_copy_ops[*copy_ops].flags = GNTCOPY_source_gref; - - (*copy_ops)++; - - if (data_len < txreq.size) { - frag_set_pending_idx(&skb_shinfo(skb)->frags[0], - pending_idx); - xenvif_tx_create_map_op(queue, pending_idx, &txreq, - extra_count, gop); - gop++; - } else { - frag_set_pending_idx(&skb_shinfo(skb)->frags[0], - INVALID_PENDING_IDX); - memcpy(&queue->pending_tx_info[pending_idx].req, - &txreq, sizeof(txreq)); - queue->pending_tx_info[pending_idx].extra_count = - extra_count; - } - - queue->pending_cons++; - - gop = xenvif_get_requests(queue, skb, txfrags, gop, - frag_overflow, nskb); + xenvif_get_requests(queue, skb, &txreq, txfrags, copy_ops, + map_ops, frag_overflow, nskb, extra_count, + data_len); __skb_queue_tail(&queue->tx_queue, skb); queue->tx.req_cons = idx; - if (((gop-queue->tx_map_ops) >= ARRAY_SIZE(queue->tx_map_ops)) || + if ((*map_ops >= ARRAY_SIZE(queue->tx_map_ops)) || (*copy_ops >= ARRAY_SIZE(queue->tx_copy_ops))) break; } - (*map_ops) = gop - queue->tx_map_ops; return; } @@ -1105,9 +1143,8 @@ static int xenvif_tx_submit(struct xenvif_queue *queue) while ((skb = __skb_dequeue(&queue->tx_queue)) != NULL) { struct xen_netif_tx_request *txp; u16 pending_idx; - unsigned data_len; - pending_idx = XENVIF_TX_CB(skb)->pending_idx; + pending_idx = copy_pending_idx(skb, 0); txp = &queue->pending_tx_info[pending_idx].req; /* Check the remap error code. */ @@ -1126,18 +1163,6 @@ static int xenvif_tx_submit(struct xenvif_queue *queue) continue; } - data_len = skb->len; - callback_param(queue, pending_idx).ctx = NULL; - if (data_len < txp->size) { - /* Append the packet payload as a fragment. */ - txp->offset += data_len; - txp->size -= data_len; - } else { - /* Schedule a response immediately. */ - xenvif_idx_release(queue, pending_idx, - XEN_NETIF_RSP_OKAY); - } - if (txp->flags & XEN_NETTXF_csum_blank) skb->ip_summed = CHECKSUM_PARTIAL; else if (txp->flags & XEN_NETTXF_data_validated) @@ -1314,7 +1339,7 @@ static inline void xenvif_tx_dealloc_action(struct xenvif_queue *queue) /* Called after netfront has transmitted */ int xenvif_tx_action(struct xenvif_queue *queue, int budget) { - unsigned nr_mops, nr_cops = 0; + unsigned nr_mops = 0, nr_cops = 0; int work_done, ret; if (unlikely(!tx_work_todo(queue))) @@ -1401,7 +1426,7 @@ static void push_tx_responses(struct xenvif_queue *queue) notify_remote_via_irq(queue->tx_irq); } -void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx) +static void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx) { int ret; struct gnttab_unmap_grant_ref tx_unmap_op; diff --git a/drivers/net/xen-netback/rx.c b/drivers/net/xen-netback/rx.c index 85a5a622ec18..ab216970137c 100644 --- a/drivers/net/xen-netback/rx.c +++ b/drivers/net/xen-netback/rx.c @@ -82,9 +82,10 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue) return false; } -void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) +bool xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) { unsigned long flags; + bool ret = true; spin_lock_irqsave(&queue->rx_queue.lock, flags); @@ -92,8 +93,7 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) struct net_device *dev = queue->vif->dev; netif_tx_stop_queue(netdev_get_tx_queue(dev, queue->id)); - kfree_skb(skb); - queue->vif->dev->stats.rx_dropped++; + ret = false; } else { if (skb_queue_empty(&queue->rx_queue)) xenvif_update_needed_slots(queue, skb); @@ -104,6 +104,8 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) } spin_unlock_irqrestore(&queue->rx_queue.lock, flags); + + return ret; } static struct sk_buff *xenvif_rx_dequeue(struct xenvif_queue *queue) @@ -473,7 +475,7 @@ static void xenvif_rx_skb(struct xenvif_queue *queue) #define RX_BATCH_SIZE 64 -void xenvif_rx_action(struct xenvif_queue *queue) +static void xenvif_rx_action(struct xenvif_queue *queue) { struct sk_buff_head completed_skbs; unsigned int work_done = 0; diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 4b75ecb19d89..8c3f9f041594 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -1624,6 +1624,12 @@ static int netfront_resume(struct xenbus_device *dev) netif_tx_unlock_bh(info->netdev); xennet_disconnect_backend(info); + + rtnl_lock(); + if (info->queues) + xennet_destroy_queues(info); + rtnl_unlock(); + return 0; } diff --git a/drivers/nfc/nfcmrvl/i2c.c b/drivers/nfc/nfcmrvl/i2c.c index 919b4d2f5d8b..fa6db971bee9 100644 --- a/drivers/nfc/nfcmrvl/i2c.c +++ b/drivers/nfc/nfcmrvl/i2c.c @@ -151,10 +151,15 @@ static int nfcmrvl_i2c_nci_send(struct nfcmrvl_private *priv, ret = -EREMOTEIO; } else ret = 0; + } + + if (ret) { kfree_skb(skb); + return ret; } - return ret; + consume_skb(skb); + return 0; } static void nfcmrvl_i2c_nci_update_config(struct nfcmrvl_private *priv, diff --git a/drivers/nfc/s3fwrn5/core.c b/drivers/nfc/s3fwrn5/core.c index 64b58455e620..f23a1e4d7e1e 100644 --- a/drivers/nfc/s3fwrn5/core.c +++ b/drivers/nfc/s3fwrn5/core.c @@ -108,11 +108,15 @@ static int s3fwrn5_nci_send(struct nci_dev *ndev, struct sk_buff *skb) } ret = s3fwrn5_write(info, skb); - if (ret < 0) + if (ret < 0) { kfree_skb(skb); + mutex_unlock(&info->mutex); + return ret; + } + consume_skb(skb); mutex_unlock(&info->mutex); - return ret; + return 0; } static int s3fwrn5_nci_post_setup(struct nci_dev *ndev) diff --git a/drivers/nfc/st-nci/se.c b/drivers/nfc/st-nci/se.c index 5d6e7e931bc6..cdf9e915c974 100644 --- a/drivers/nfc/st-nci/se.c +++ b/drivers/nfc/st-nci/se.c @@ -338,7 +338,7 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev, * AID 81 5 to 16 * PARAMETERS 82 0 to 255 */ - if (skb->len < NFC_MIN_AID_LENGTH + 2 && + if (skb->len < NFC_MIN_AID_LENGTH + 2 || skb->data[0] != NFC_EVT_TRANSACTION_AID_TAG) return -EPROTO; @@ -352,8 +352,10 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev, /* Check next byte is PARAMETERS tag (82) */ if (skb->data[transaction->aid_len + 2] != - NFC_EVT_TRANSACTION_PARAMS_TAG) + NFC_EVT_TRANSACTION_PARAMS_TAG) { + devm_kfree(dev, transaction); return -EPROTO; + } transaction->params_len = skb->data[transaction->aid_len + 3]; memcpy(transaction->params, skb->data + diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index eb3733c1bc86..68874201348c 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2320,7 +2320,6 @@ static int nvme_init_subsystem(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) nvme_init_subnqn(subsys, ctrl, id); memcpy(subsys->serial, id->sn, sizeof(subsys->serial)); memcpy(subsys->model, id->mn, sizeof(subsys->model)); - memcpy(subsys->firmware_rev, id->fr, sizeof(subsys->firmware_rev)); subsys->vendor_id = le16_to_cpu(id->vid); subsys->cmic = id->cmic; @@ -2464,10 +2463,6 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) if (!ctrl->identified) { int i; - ret = nvme_init_subsystem(ctrl, id); - if (ret) - goto out_free; - /* * Check for quirks. Quirk can depend on firmware version, * so, in principle, the set of quirks present can change @@ -2480,7 +2475,13 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) if (quirk_matches(id, &core_quirks[i])) ctrl->quirks |= core_quirks[i].quirks; } + + ret = nvme_init_subsystem(ctrl, id); + if (ret) + goto out_free; } + memcpy(ctrl->subsys->firmware_rev, id->fr, + sizeof(ctrl->subsys->firmware_rev)); if (force_apst && (ctrl->quirks & NVME_QUIRK_NO_DEEPEST_PS)) { dev_warn(ctrl->device, "forcibly allowing all power states due to nvme_core.force_apst -- use at your own risk\n"); @@ -2674,11 +2675,17 @@ static long nvme_dev_ioctl(struct file *file, unsigned int cmd, case NVME_IOCTL_IO_CMD: return nvme_dev_user_cmd(ctrl, argp); case NVME_IOCTL_RESET: + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; dev_warn(ctrl->device, "resetting controller\n"); return nvme_reset_ctrl_sync(ctrl); case NVME_IOCTL_SUBSYS_RESET: + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; return nvme_reset_subsystem(ctrl); case NVME_IOCTL_RESCAN: + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; nvme_queue_scan(ctrl); return 0; default: diff --git a/drivers/of/property.c b/drivers/of/property.c index b71f8cb02413..6735cf6cc5e1 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -919,8 +919,10 @@ of_fwnode_get_reference_args(const struct fwnode_handle *fwnode, nargs, index, &of_args); if (ret < 0) return ret; - if (!args) + if (!args) { + of_node_put(of_args.np); return 0; + } args->nargs = of_args.args_count; args->fwnode = of_fwnode_handle(of_args.np); diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c index 144c77dfe4b1..eb9137faccf7 100644 --- a/drivers/parisc/iosapic.c +++ b/drivers/parisc/iosapic.c @@ -889,6 +889,7 @@ int iosapic_serial_irq(struct parisc_device *dev) return vi->txn_irq; } +EXPORT_SYMBOL(iosapic_serial_irq); #endif diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index dee5b9e35ffd..d99ac73a1d89 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c @@ -474,7 +474,7 @@ static size_t parport_pc_fifo_write_block_pio(struct parport *port, const unsigned char *bufp = buf; size_t left = length; unsigned long expire = jiffies + port->physport->cad->timeout; - const int fifo = FIFO(port); + const unsigned long fifo = FIFO(port); int poll_for = 8; /* 80 usecs */ const struct parport_pc_private *priv = port->physport->private_data; const int fifo_depth = priv->fifo_depth; diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index d21fa04fa44d..c35c61816903 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c @@ -209,6 +209,17 @@ static int pci_revert_fw_address(struct resource *res, struct pci_dev *dev, root = pci_find_parent_resource(dev, res); if (!root) { + /* + * If dev is behind a bridge, accesses will only reach it + * if res is inside the relevant bridge window. + */ + if (pci_upstream_bridge(dev)) + return -ENXIO; + + /* + * On the root bus, assume the host bridge will forward + * everything. + */ if (res->flags & IORESOURCE_IO) root = &ioport_resource; else diff --git a/drivers/phy/qualcomm/phy-qcom-usb-hsic.c b/drivers/phy/qualcomm/phy-qcom-usb-hsic.c index c110563a73cb..00926df4bc5b 100644 --- a/drivers/phy/qualcomm/phy-qcom-usb-hsic.c +++ b/drivers/phy/qualcomm/phy-qcom-usb-hsic.c @@ -57,8 +57,10 @@ static int qcom_usb_hsic_phy_power_on(struct phy *phy) /* Configure pins for HSIC functionality */ pins_default = pinctrl_lookup_state(uphy->pctl, PINCTRL_STATE_DEFAULT); - if (IS_ERR(pins_default)) - return PTR_ERR(pins_default); + if (IS_ERR(pins_default)) { + ret = PTR_ERR(pins_default); + goto err_ulpi; + } ret = pinctrl_select_state(uphy->pctl, pins_default); if (ret) diff --git a/drivers/phy/st/phy-stm32-usbphyc.c b/drivers/phy/st/phy-stm32-usbphyc.c index 1255cd1d9a60..5056662d2927 100644 --- a/drivers/phy/st/phy-stm32-usbphyc.c +++ b/drivers/phy/st/phy-stm32-usbphyc.c @@ -393,6 +393,8 @@ static int stm32_usbphyc_probe(struct platform_device *pdev) ret = of_property_read_u32(child, "reg", &index); if (ret || index > usbphyc->nphys) { dev_err(&phy->dev, "invalid reg property: %d\n", ret); + if (!ret) + ret = -EINVAL; goto put_child; } diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c index 177ee1136e34..6f5acfcba57c 100644 --- a/drivers/pinctrl/devicetree.c +++ b/drivers/pinctrl/devicetree.c @@ -235,6 +235,8 @@ int pinctrl_dt_to_map(struct pinctrl *p, struct pinctrl_dev *pctldev) for (state = 0; ; state++) { /* Retrieve the pinctrl-* property */ propname = kasprintf(GFP_KERNEL, "pinctrl-%d", state); + if (!propname) + return -ENOMEM; prop = of_find_property(np, propname, &size); kfree(propname); if (!prop) { diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index 5e0adb00b430..f9eb37bb3905 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c @@ -423,9 +423,14 @@ static void __intel_gpio_set_direction(void __iomem *padcfg0, bool input) writel(value, padcfg0); } +static int __intel_gpio_get_gpio_mode(u32 value) +{ + return (value & PADCFG0_PMODE_MASK) >> PADCFG0_PMODE_SHIFT; +} + static int intel_gpio_get_gpio_mode(void __iomem *padcfg0) { - return (readl(padcfg0) & PADCFG0_PMODE_MASK) >> PADCFG0_PMODE_SHIFT; + return __intel_gpio_get_gpio_mode(readl(padcfg0)); } static void intel_gpio_set_gpio_mode(void __iomem *padcfg0) @@ -1429,6 +1434,7 @@ EXPORT_SYMBOL_GPL(intel_pinctrl_probe); static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned pin) { const struct pin_desc *pd = pin_desc_get(pctrl->pctldev, pin); + u32 value; if (!pd || !intel_pad_usable(pctrl, pin)) return false; @@ -1443,6 +1449,25 @@ static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned pin) gpiochip_line_is_irq(&pctrl->chip, pin)) return true; + /* + * The firmware on some systems may configure GPIO pins to be + * an interrupt source in so called "direct IRQ" mode. In such + * cases the GPIO controller driver has no idea if those pins + * are being used or not. At the same time, there is a known bug + * in the firmwares that don't restore the pin settings correctly + * after suspend, i.e. by an unknown reason the Rx value becomes + * inverted. + * + * Hence, let's save and restore the pins that are configured + * as GPIOs in the input mode with GPIROUTIOXAPIC bit set. + * + * See https://bugzilla.kernel.org/show_bug.cgi?id=214749. + */ + value = readl(intel_get_padcfg(pctrl, pin, PADCFG0)); + if ((value & PADCFG0_GPIROUTIOXAPIC) && (value & PADCFG0_GPIOTXDIS) && + (__intel_gpio_get_gpio_mode(value) == PADCFG0_PMODE_GPIO)) + return true; + return false; } diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index c2f807bf3489..2b50030ad97e 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -703,7 +703,7 @@ static int pcs_allocate_pin_table(struct pcs_device *pcs) mux_bytes = pcs->width / BITS_PER_BYTE; - if (pcs->bits_per_mux) { + if (pcs->bits_per_mux && pcs->fmask) { pcs->bits_per_pin = fls(pcs->fmask); nr_pins = (pcs->size * BITS_PER_BYTE) / pcs->bits_per_pin; num_pins_in_register = pcs->width / pcs->bits_per_pin; diff --git a/drivers/platform/chrome/chromeos_laptop.c b/drivers/platform/chrome/chromeos_laptop.c index 24326eecd787..096e8e5b2cde 100644 --- a/drivers/platform/chrome/chromeos_laptop.c +++ b/drivers/platform/chrome/chromeos_laptop.c @@ -716,6 +716,7 @@ static int __init chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop, const struct chromeos_laptop *src) { + struct i2c_peripheral *i2c_peripherals; struct i2c_peripheral *i2c_dev; struct i2c_board_info *info; int i; @@ -724,17 +725,15 @@ chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop, if (!src->num_i2c_peripherals) return 0; - cros_laptop->i2c_peripherals = kmemdup(src->i2c_peripherals, - src->num_i2c_peripherals * - sizeof(*src->i2c_peripherals), - GFP_KERNEL); - if (!cros_laptop->i2c_peripherals) + i2c_peripherals = kmemdup(src->i2c_peripherals, + src->num_i2c_peripherals * + sizeof(*src->i2c_peripherals), + GFP_KERNEL); + if (!i2c_peripherals) return -ENOMEM; - cros_laptop->num_i2c_peripherals = src->num_i2c_peripherals; - - for (i = 0; i < cros_laptop->num_i2c_peripherals; i++) { - i2c_dev = &cros_laptop->i2c_peripherals[i]; + for (i = 0; i < src->num_i2c_peripherals; i++) { + i2c_dev = &i2c_peripherals[i]; info = &i2c_dev->board_info; error = chromeos_laptop_setup_irq(i2c_dev); @@ -752,16 +751,19 @@ chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop, } } + cros_laptop->i2c_peripherals = i2c_peripherals; + cros_laptop->num_i2c_peripherals = src->num_i2c_peripherals; + return 0; err_out: while (--i >= 0) { - i2c_dev = &cros_laptop->i2c_peripherals[i]; + i2c_dev = &i2c_peripherals[i]; info = &i2c_dev->board_info; if (info->properties) property_entries_free(info->properties); } - kfree(cros_laptop->i2c_peripherals); + kfree(i2c_peripherals); return error; } diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index c73ce07b66c9..9387a370b2ff 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -552,6 +552,15 @@ static const struct dmi_system_id acer_quirks[] __initconst = { }, { .callback = set_force_caps, + .ident = "Acer Aspire Switch V 10 SW5-017", + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + .driver_data = (void *)ACER_CAP_KBD_DOCK, + }, + { + .callback = set_force_caps, .ident = "Acer One 10 (S1003)", .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 339b753ba447..3723ae37993d 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -1176,6 +1176,8 @@ static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, cpu_to_le32(ports_available)); + pci_dev_put(xhci_pdev); + pr_info("set USB_INTEL_XUSB2PR old: 0x%04x, new: 0x%04x\n", orig_ports_available, ports_available); } diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c index f911410bb4c7..c65b800310f3 100644 --- a/drivers/platform/x86/hp-wmi.c +++ b/drivers/platform/x86/hp-wmi.c @@ -76,6 +76,7 @@ enum hp_wmi_event_ids { HPWMI_PEAKSHIFT_PERIOD = 0x0F, HPWMI_BATTERY_CHARGE_PERIOD = 0x10, HPWMI_SANITIZATION_MODE = 0x17, + HPWMI_SMART_EXPERIENCE_APP = 0x21, }; struct bios_args { @@ -634,6 +635,8 @@ static void hp_wmi_notify(u32 value, void *context) break; case HPWMI_SANITIZATION_MODE: break; + case HPWMI_SMART_EXPERIENCE_APP: + break; default: pr_info("Unknown event_id - %d - 0x%x\n", event_id, event_data); break; @@ -894,8 +897,16 @@ static int __init hp_wmi_bios_setup(struct platform_device *device) wwan_rfkill = NULL; rfkill2_count = 0; - if (hp_wmi_rfkill_setup(device)) - hp_wmi_rfkill2_setup(device); + /* + * In pre-2009 BIOS, command 1Bh return 0x4 to indicate that + * BIOS no longer controls the power for the wireless + * devices. All features supported by this command will no + * longer be supported. + */ + if (!hp_wmi_bios_2009_later()) { + if (hp_wmi_rfkill_setup(device)) + hp_wmi_rfkill2_setup(device); + } err = device_create_file(&device->dev, &dev_attr_display); if (err) diff --git a/drivers/platform/x86/msi-laptop.c b/drivers/platform/x86/msi-laptop.c index d5bfcc602090..42b31c549db0 100644 --- a/drivers/platform/x86/msi-laptop.c +++ b/drivers/platform/x86/msi-laptop.c @@ -609,11 +609,10 @@ static const struct dmi_system_id msi_dmi_table[] __initconst = { { .ident = "MSI S270", .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "MICRO-STAR INT'L CO.,LTD"), + DMI_MATCH(DMI_SYS_VENDOR, "MICRO-STAR INT"), DMI_MATCH(DMI_PRODUCT_NAME, "MS-1013"), DMI_MATCH(DMI_PRODUCT_VERSION, "0131"), - DMI_MATCH(DMI_CHASSIS_VENDOR, - "MICRO-STAR INT'L CO.,LTD") + DMI_MATCH(DMI_CHASSIS_VENDOR, "MICRO-STAR INT") }, .driver_data = &quirk_old_ec_model, .callback = dmi_check_cb @@ -646,8 +645,7 @@ static const struct dmi_system_id msi_dmi_table[] __initconst = { DMI_MATCH(DMI_SYS_VENDOR, "NOTEBOOK"), DMI_MATCH(DMI_PRODUCT_NAME, "SAM2000"), DMI_MATCH(DMI_PRODUCT_VERSION, "0131"), - DMI_MATCH(DMI_CHASSIS_VENDOR, - "MICRO-STAR INT'L CO.,LTD") + DMI_MATCH(DMI_CHASSIS_VENDOR, "MICRO-STAR INT") }, .driver_data = &quirk_old_ec_model, .callback = dmi_check_cb @@ -1061,8 +1059,7 @@ static int __init msi_init(void) return -EINVAL; /* Register backlight stuff */ - - if (quirks->old_ec_model || + if (quirks->old_ec_model && acpi_video_get_backlight_type() == acpi_backlight_vendor) { struct backlight_properties props; memset(&props, 0, sizeof(struct backlight_properties)); @@ -1130,6 +1127,8 @@ fail_create_attr: fail_create_group: if (quirks->load_scm_model) { i8042_remove_filter(msi_laptop_i8042_filter); + cancel_delayed_work_sync(&msi_touchpad_dwork); + input_unregister_device(msi_laptop_input_dev); cancel_delayed_work_sync(&msi_rfkill_dwork); cancel_work_sync(&msi_rfkill_work); rfkill_cleanup(); @@ -1150,6 +1149,7 @@ static void __exit msi_cleanup(void) { if (quirks->load_scm_model) { i8042_remove_filter(msi_laptop_i8042_filter); + cancel_delayed_work_sync(&msi_touchpad_dwork); input_unregister_device(msi_laptop_input_dev); cancel_delayed_work_sync(&msi_rfkill_dwork); cancel_work_sync(&msi_rfkill_work); diff --git a/drivers/power/supply/adp5061.c b/drivers/power/supply/adp5061.c index 939fd3d8fb1a..1ad044330599 100644 --- a/drivers/power/supply/adp5061.c +++ b/drivers/power/supply/adp5061.c @@ -428,11 +428,11 @@ static int adp5061_get_chg_type(struct adp5061_state *st, if (ret < 0) return ret; - chg_type = adp5061_chg_type[ADP5061_CHG_STATUS_1_CHG_STATUS(status1)]; - if (chg_type > ADP5061_CHG_FAST_CV) + chg_type = ADP5061_CHG_STATUS_1_CHG_STATUS(status1); + if (chg_type >= ARRAY_SIZE(adp5061_chg_type)) val->intval = POWER_SUPPLY_STATUS_UNKNOWN; else - val->intval = chg_type; + val->intval = adp5061_chg_type[chg_type]; return ret; } diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c index 8cbfcce57a06..ae6721333c0f 100644 --- a/drivers/powercap/intel_rapl.c +++ b/drivers/powercap/intel_rapl.c @@ -1068,6 +1068,9 @@ static u64 rapl_compute_time_window_core(struct rapl_package *rp, u64 value, y = value & 0x1f; value = (1 << y) * (4 + f) * rp->time_unit / 4; } else { + if (value < rp->time_unit) + return 0; + do_div(value, rp->time_unit); y = ilog2(value); f = div64_u64(4 * (value - (1 << y)), 1 << y); diff --git a/drivers/regulator/qcom_rpm-regulator.c b/drivers/regulator/qcom_rpm-regulator.c index 88dc0b0f003c..b64baea6d533 100644 --- a/drivers/regulator/qcom_rpm-regulator.c +++ b/drivers/regulator/qcom_rpm-regulator.c @@ -820,6 +820,12 @@ static const struct rpm_regulator_data rpm_pm8018_regulators[] = { }; static const struct rpm_regulator_data rpm_pm8058_regulators[] = { + { "s0", QCOM_RPM_PM8058_SMPS0, &pm8058_smps, "vdd_s0" }, + { "s1", QCOM_RPM_PM8058_SMPS1, &pm8058_smps, "vdd_s1" }, + { "s2", QCOM_RPM_PM8058_SMPS2, &pm8058_smps, "vdd_s2" }, + { "s3", QCOM_RPM_PM8058_SMPS3, &pm8058_smps, "vdd_s3" }, + { "s4", QCOM_RPM_PM8058_SMPS4, &pm8058_smps, "vdd_s4" }, + { "l0", QCOM_RPM_PM8058_LDO0, &pm8058_nldo, "vdd_l0_l1_lvs" }, { "l1", QCOM_RPM_PM8058_LDO1, &pm8058_nldo, "vdd_l0_l1_lvs" }, { "l2", QCOM_RPM_PM8058_LDO2, &pm8058_pldo, "vdd_l2_l11_l12" }, @@ -847,12 +853,6 @@ static const struct rpm_regulator_data rpm_pm8058_regulators[] = { { "l24", QCOM_RPM_PM8058_LDO24, &pm8058_nldo, "vdd_l23_l24_l25" }, { "l25", QCOM_RPM_PM8058_LDO25, &pm8058_nldo, "vdd_l23_l24_l25" }, - { "s0", QCOM_RPM_PM8058_SMPS0, &pm8058_smps, "vdd_s0" }, - { "s1", QCOM_RPM_PM8058_SMPS1, &pm8058_smps, "vdd_s1" }, - { "s2", QCOM_RPM_PM8058_SMPS2, &pm8058_smps, "vdd_s2" }, - { "s3", QCOM_RPM_PM8058_SMPS3, &pm8058_smps, "vdd_s3" }, - { "s4", QCOM_RPM_PM8058_SMPS4, &pm8058_smps, "vdd_s4" }, - { "lvs0", QCOM_RPM_PM8058_LVS0, &pm8058_switch, "vdd_l0_l1_lvs" }, { "lvs1", QCOM_RPM_PM8058_LVS1, &pm8058_switch, "vdd_l0_l1_lvs" }, @@ -861,6 +861,12 @@ static const struct rpm_regulator_data rpm_pm8058_regulators[] = { }; static const struct rpm_regulator_data rpm_pm8901_regulators[] = { + { "s0", QCOM_RPM_PM8901_SMPS0, &pm8901_ftsmps, "vdd_s0" }, + { "s1", QCOM_RPM_PM8901_SMPS1, &pm8901_ftsmps, "vdd_s1" }, + { "s2", QCOM_RPM_PM8901_SMPS2, &pm8901_ftsmps, "vdd_s2" }, + { "s3", QCOM_RPM_PM8901_SMPS3, &pm8901_ftsmps, "vdd_s3" }, + { "s4", QCOM_RPM_PM8901_SMPS4, &pm8901_ftsmps, "vdd_s4" }, + { "l0", QCOM_RPM_PM8901_LDO0, &pm8901_nldo, "vdd_l0" }, { "l1", QCOM_RPM_PM8901_LDO1, &pm8901_pldo, "vdd_l1" }, { "l2", QCOM_RPM_PM8901_LDO2, &pm8901_pldo, "vdd_l2" }, @@ -869,12 +875,6 @@ static const struct rpm_regulator_data rpm_pm8901_regulators[] = { { "l5", QCOM_RPM_PM8901_LDO5, &pm8901_pldo, "vdd_l5" }, { "l6", QCOM_RPM_PM8901_LDO6, &pm8901_pldo, "vdd_l6" }, - { "s0", QCOM_RPM_PM8901_SMPS0, &pm8901_ftsmps, "vdd_s0" }, - { "s1", QCOM_RPM_PM8901_SMPS1, &pm8901_ftsmps, "vdd_s1" }, - { "s2", QCOM_RPM_PM8901_SMPS2, &pm8901_ftsmps, "vdd_s2" }, - { "s3", QCOM_RPM_PM8901_SMPS3, &pm8901_ftsmps, "vdd_s3" }, - { "s4", QCOM_RPM_PM8901_SMPS4, &pm8901_ftsmps, "vdd_s4" }, - { "lvs0", QCOM_RPM_PM8901_LVS0, &pm8901_switch, "lvs0_in" }, { "lvs1", QCOM_RPM_PM8901_LVS1, &pm8901_switch, "lvs1_in" }, { "lvs2", QCOM_RPM_PM8901_LVS2, &pm8901_switch, "lvs2_in" }, diff --git a/drivers/regulator/twl6030-regulator.c b/drivers/regulator/twl6030-regulator.c index 219cbd910dbf..485d25f683d8 100644 --- a/drivers/regulator/twl6030-regulator.c +++ b/drivers/regulator/twl6030-regulator.c @@ -71,6 +71,7 @@ struct twlreg_info { #define TWL6030_CFG_STATE_SLEEP 0x03 #define TWL6030_CFG_STATE_GRP_SHIFT 5 #define TWL6030_CFG_STATE_APP_SHIFT 2 +#define TWL6030_CFG_STATE_MASK 0x03 #define TWL6030_CFG_STATE_APP_MASK (0x03 << TWL6030_CFG_STATE_APP_SHIFT) #define TWL6030_CFG_STATE_APP(v) (((v) & TWL6030_CFG_STATE_APP_MASK) >>\ TWL6030_CFG_STATE_APP_SHIFT) @@ -131,13 +132,14 @@ static int twl6030reg_is_enabled(struct regulator_dev *rdev) if (grp < 0) return grp; grp &= P1_GRP_6030; + val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE); + val = TWL6030_CFG_STATE_APP(val); } else { + val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE); + val &= TWL6030_CFG_STATE_MASK; grp = 1; } - val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE); - val = TWL6030_CFG_STATE_APP(val); - return grp && (val == TWL6030_CFG_STATE_ON); } @@ -190,7 +192,12 @@ static int twl6030reg_get_status(struct regulator_dev *rdev) val = twlreg_read(info, TWL_MODULE_PM_RECEIVER, VREG_STATE); - switch (TWL6030_CFG_STATE_APP(val)) { + if (info->features & TWL6032_SUBCLASS) + val &= TWL6030_CFG_STATE_MASK; + else + val = TWL6030_CFG_STATE_APP(val); + + switch (val) { case TWL6030_CFG_STATE_ON: return REGULATOR_STATUS_NORMAL; diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c index 571d1bd186ad..696cb1b46a96 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -1817,7 +1817,7 @@ static void qcom_glink_rx_close(struct qcom_glink *glink, unsigned int rcid) kthread_cancel_work_sync(&channel->intent_work); if (channel->rpdev) { - strlcpy(chinfo.name, channel->name, sizeof(chinfo.name)); + strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name)); chinfo.src = RPMSG_ADDR_ANY; chinfo.dst = RPMSG_ADDR_ANY; diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c index 7b39cbf5773d..b1d600b9b2ac 100644 --- a/drivers/rpmsg/qcom_smd.c +++ b/drivers/rpmsg/qcom_smd.c @@ -1259,7 +1259,7 @@ static int qcom_smd_create_device(struct qcom_smd_channel *channel) /* Assign public information to the rpmsg_device */ rpdev = &qsdev->rpdev; - strncpy(rpdev->id.name, channel->name, RPMSG_NAME_SIZE); + strscpy_pad(rpdev->id.name, channel->name, RPMSG_NAME_SIZE); rpdev->src = RPMSG_ADDR_ANY; rpdev->dst = RPMSG_ADDR_ANY; @@ -1493,7 +1493,7 @@ static void qcom_channel_state_worker(struct work_struct *work) spin_unlock_irqrestore(&edge->channels_lock, flags); - strncpy(chinfo.name, channel->name, sizeof(chinfo.name)); + strscpy_pad(chinfo.name, channel->name, sizeof(chinfo.name)); chinfo.src = RPMSG_ADDR_ANY; chinfo.dst = RPMSG_ADDR_ANY; smd_ipc(channel->edge->ipc, false, NULL, diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index a2e34c853ca9..4d6fd3205be7 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c @@ -3788,7 +3788,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev, struct dasd_device *basedev; struct req_iterator iter; struct dasd_ccw_req *cqr; - unsigned int first_offs; unsigned int trkcount; unsigned long *idaws; unsigned int size; @@ -3822,7 +3821,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev, last_trk = (blk_rq_pos(req) + blk_rq_sectors(req) - 1) / DASD_RAW_SECTORS_PER_TRACK; trkcount = last_trk - first_trk + 1; - first_offs = 0; if (rq_data_dir(req) == READ) cmd = DASD_ECKD_CCW_READ_TRACK; @@ -3866,13 +3864,13 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev, if (use_prefix) { prefix_LRE(ccw++, data, first_trk, last_trk, cmd, basedev, - startdev, 1, first_offs + 1, trkcount, 0, 0); + startdev, 1, 0, trkcount, 0, 0); } else { define_extent(ccw++, data, first_trk, last_trk, cmd, basedev, 0); ccw[-1].flags |= CCW_FLAG_CC; data += sizeof(struct DE_eckd_data); - locate_record_ext(ccw++, data, first_trk, first_offs + 1, + locate_record_ext(ccw++, data, first_trk, 0, trkcount, cmd, basedev, 0, 0); } diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index 27521fc3ef5a..ea2cd8ecc3a5 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c @@ -2009,7 +2009,7 @@ static int twa_probe(struct pci_dev *pdev, const struct pci_device_id *dev_id) retval = pci_enable_device(pdev); if (retval) { TW_PRINTK(host, TW_DRIVER, 0x34, "Failed to enable pci device"); - goto out_disable_device; + return -ENODEV; } pci_set_master(pdev); diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index b253523217b8..01e27285b26b 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c @@ -3345,11 +3345,6 @@ err2: err1: scsi_host_put(lport->host); err0: - if (qedf) { - QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_DISC, "Probe done.\n"); - - clear_bit(QEDF_PROBING, &qedf->flags); - } return rc; } diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c index 9b20643ab49d..124a5d0ec05c 100644 --- a/drivers/scsi/stex.c +++ b/drivers/scsi/stex.c @@ -673,16 +673,17 @@ stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)) return 0; case PASSTHRU_CMD: if (cmd->cmnd[1] == PASSTHRU_GET_DRVVER) { - struct st_drvver ver; + const struct st_drvver ver = { + .major = ST_VER_MAJOR, + .minor = ST_VER_MINOR, + .oem = ST_OEM, + .build = ST_BUILD_VER, + .signature[0] = PASSTHRU_SIGNATURE, + .console_id = host->max_id - 1, + .host_no = hba->host->host_no, + }; size_t cp_len = sizeof(ver); - ver.major = ST_VER_MAJOR; - ver.minor = ST_VER_MINOR; - ver.oem = ST_OEM; - ver.build = ST_BUILD_VER; - ver.signature[0] = PASSTHRU_SIGNATURE; - ver.console_id = host->max_id - 1; - ver.host_no = hba->host->host_no; cp_len = scsi_sg_copy_from_buffer(cmd, &ver, cp_len); cmd->result = sizeof(ver) == cp_len ? DID_OK << 16 | COMMAND_COMPLETE << 8 : diff --git a/drivers/siox/siox-core.c b/drivers/siox/siox-core.c index f8c08fb9891d..e0ffef6e9386 100644 --- a/drivers/siox/siox-core.c +++ b/drivers/siox/siox-core.c @@ -835,6 +835,8 @@ static struct siox_device *siox_device_add(struct siox_master *smaster, err_device_register: /* don't care to make the buffer smaller again */ + put_device(&sdevice->dev); + sdevice = NULL; err_buf_alloc: siox_master_unlock(smaster); diff --git a/drivers/soc/qcom/smem_state.c b/drivers/soc/qcom/smem_state.c index e0bd2fab70f8..6e4d3a914bb1 100644 --- a/drivers/soc/qcom/smem_state.c +++ b/drivers/soc/qcom/smem_state.c @@ -144,6 +144,7 @@ static void qcom_smem_state_release(struct kref *ref) struct qcom_smem_state *state = container_of(ref, struct qcom_smem_state, refcount); list_del(&state->list); + of_node_put(state->of_node); kfree(state); } @@ -177,7 +178,7 @@ struct qcom_smem_state *qcom_smem_state_register(struct device_node *of_node, kref_init(&state->refcount); - state->of_node = of_node; + state->of_node = of_node_get(of_node); state->ops = *ops; state->priv = priv; diff --git a/drivers/soc/qcom/smsm.c b/drivers/soc/qcom/smsm.c index 6d74f6ff4006..58cd1949407a 100644 --- a/drivers/soc/qcom/smsm.c +++ b/drivers/soc/qcom/smsm.c @@ -522,7 +522,7 @@ static int qcom_smsm_probe(struct platform_device *pdev) for (id = 0; id < smsm->num_hosts; id++) { ret = smsm_parse_ipc(smsm, id); if (ret < 0) - return ret; + goto out_put; } /* Acquire the main SMSM state vector */ @@ -530,13 +530,14 @@ static int qcom_smsm_probe(struct platform_device *pdev) smsm->num_entries * sizeof(u32)); if (ret < 0 && ret != -EEXIST) { dev_err(&pdev->dev, "unable to allocate shared state entry\n"); - return ret; + goto out_put; } states = qcom_smem_get(QCOM_SMEM_HOST_ANY, SMEM_SMSM_SHARED_STATE, NULL); if (IS_ERR(states)) { dev_err(&pdev->dev, "Unable to acquire shared state entry\n"); - return PTR_ERR(states); + ret = PTR_ERR(states); + goto out_put; } /* Acquire the list of interrupt mask vectors */ @@ -544,13 +545,14 @@ static int qcom_smsm_probe(struct platform_device *pdev) ret = qcom_smem_alloc(QCOM_SMEM_HOST_ANY, SMEM_SMSM_CPU_INTR_MASK, size); if (ret < 0 && ret != -EEXIST) { dev_err(&pdev->dev, "unable to allocate smsm interrupt mask\n"); - return ret; + goto out_put; } intr_mask = qcom_smem_get(QCOM_SMEM_HOST_ANY, SMEM_SMSM_CPU_INTR_MASK, NULL); if (IS_ERR(intr_mask)) { dev_err(&pdev->dev, "unable to acquire shared memory interrupt mask\n"); - return PTR_ERR(intr_mask); + ret = PTR_ERR(intr_mask); + goto out_put; } /* Setup the reference to the local state bits */ @@ -561,7 +563,8 @@ static int qcom_smsm_probe(struct platform_device *pdev) smsm->state = qcom_smem_state_register(local_node, &smsm_state_ops, smsm); if (IS_ERR(smsm->state)) { dev_err(smsm->dev, "failed to register qcom_smem_state\n"); - return PTR_ERR(smsm->state); + ret = PTR_ERR(smsm->state); + goto out_put; } /* Register handlers for remote processor entries of interest. */ @@ -591,16 +594,19 @@ static int qcom_smsm_probe(struct platform_device *pdev) } platform_set_drvdata(pdev, smsm); + of_node_put(local_node); return 0; unwind_interfaces: + of_node_put(node); for (id = 0; id < smsm->num_entries; id++) if (smsm->entries[id].domain) irq_domain_remove(smsm->entries[id].domain); qcom_smem_state_unregister(smsm->state); - +out_put: + of_node_put(local_node); return ret; } diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index 5b6f3655c366..ec2296a4c44d 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c @@ -429,8 +429,7 @@ static unsigned int mx51_ecspi_clkdiv(struct spi_imx_data *spi_imx, unsigned int pre, post; unsigned int fin = spi_imx->spi_clk; - if (unlikely(fspi > fin)) - return 0; + fspi = min(fspi, fin); post = fls(fin) - fls(fspi); if (fin > fspi << post) diff --git a/drivers/spi/spi-omap-100k.c b/drivers/spi/spi-omap-100k.c index 2eeb0fe2eed2..022f5bccef81 100644 --- a/drivers/spi/spi-omap-100k.c +++ b/drivers/spi/spi-omap-100k.c @@ -425,6 +425,7 @@ static int omap1_spi100k_probe(struct platform_device *pdev) return status; err_fck: + pm_runtime_disable(&pdev->dev); clk_disable_unprepare(spi100k->fck); err_ick: clk_disable_unprepare(spi100k->ick); diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c index cb74fd1af205..1ca678bcb527 100644 --- a/drivers/spi/spi-qup.c +++ b/drivers/spi/spi-qup.c @@ -1172,8 +1172,10 @@ static int spi_qup_pm_resume_runtime(struct device *device) return ret; ret = clk_prepare_enable(controller->cclk); - if (ret) + if (ret) { + clk_disable_unprepare(controller->iclk); return ret; + } /* Disable clocks auto gaiting */ config = readl_relaxed(controller->base + QUP_CONFIG); @@ -1219,14 +1221,25 @@ static int spi_qup_resume(struct device *device) return ret; ret = clk_prepare_enable(controller->cclk); - if (ret) + if (ret) { + clk_disable_unprepare(controller->iclk); return ret; + } ret = spi_qup_set_state(controller, QUP_STATE_RESET); if (ret) - return ret; + goto disable_clk; - return spi_master_resume(master); + ret = spi_master_resume(master); + if (ret) + goto disable_clk; + + return 0; + +disable_clk: + clk_disable_unprepare(controller->cclk); + clk_disable_unprepare(controller->iclk); + return ret; } #endif /* CONFIG_PM_SLEEP */ diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 1d948fee1a03..d9420561236c 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -84,6 +84,7 @@ #define S3C64XX_SPI_ST_TX_FIFORDY (1<<0) #define S3C64XX_SPI_PACKET_CNT_EN (1<<16) +#define S3C64XX_SPI_PACKET_CNT_MASK GENMASK(15, 0) #define S3C64XX_SPI_PND_TX_UNDERRUN_CLR (1<<4) #define S3C64XX_SPI_PND_TX_OVERRUN_CLR (1<<3) @@ -654,6 +655,13 @@ static int s3c64xx_spi_prepare_message(struct spi_master *master, return 0; } +static size_t s3c64xx_spi_max_transfer_size(struct spi_device *spi) +{ + struct spi_controller *ctlr = spi->controller; + + return ctlr->can_dma ? S3C64XX_SPI_PACKET_CNT_MASK : SIZE_MAX; +} + static int s3c64xx_spi_transfer_one(struct spi_master *master, struct spi_device *spi, struct spi_transfer *xfer) @@ -1118,6 +1126,7 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) master->prepare_transfer_hardware = s3c64xx_spi_prepare_transfer; master->prepare_message = s3c64xx_spi_prepare_message; master->transfer_one = s3c64xx_spi_transfer_one; + master->max_transfer_size = s3c64xx_spi_max_transfer_size; master->num_chipselect = sci->num_cs; master->dma_alignment = 8; master->bits_per_word_mask = SPI_BPW_MASK(32) | SPI_BPW_MASK(16) | diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c index 8d692f16d90a..b8565da54a72 100644 --- a/drivers/spi/spi-stm32.c +++ b/drivers/spi/spi-stm32.c @@ -255,7 +255,7 @@ static int stm32_spi_prepare_mbr(struct stm32_spi *spi, u32 speed_hz) u32 div, mbrdiv; /* Ensure spi->clk_rate is even */ - div = DIV_ROUND_UP(spi->clk_rate & ~0x1, speed_hz); + div = DIV_ROUND_CLOSEST(spi->clk_rate & ~0x1, speed_hz); /* * SPI framework set xfer->speed_hz to master->max_speed_hz if diff --git a/drivers/staging/mt7621-spi/spi-mt7621.c b/drivers/staging/mt7621-spi/spi-mt7621.c index 75ed48f60c8c..b73823830e3a 100644 --- a/drivers/staging/mt7621-spi/spi-mt7621.c +++ b/drivers/staging/mt7621-spi/spi-mt7621.c @@ -442,11 +442,9 @@ static int mt7621_spi_probe(struct platform_device *pdev) return PTR_ERR(base); clk = devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(clk)) { - dev_err(&pdev->dev, "unable to get SYS clock, err=%d\n", - status); - return PTR_ERR(clk); - } + if (IS_ERR(clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(clk), + "unable to get SYS clock\n"); status = clk_prepare_enable(clk); if (status) diff --git a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_rx.c b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_rx.c index 13a9cc5e0a4d..ee5a75f34587 100644 --- a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_rx.c +++ b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_rx.c @@ -2054,8 +2054,15 @@ done: next = nbuf->next; rx_tlv_hdr = qdf_nbuf_data(nbuf); /* Get TID from struct cb->tid_val, save to tid */ - if (qdf_nbuf_is_rx_chfrag_start(nbuf)) + if (qdf_nbuf_is_rx_chfrag_start(nbuf)) { tid = qdf_nbuf_get_tid_val(nbuf); + if (tid >= CDP_MAX_DATA_TIDS) { + DP_STATS_INC(soc, rx.err.rx_invalid_tid_err, 1); + qdf_nbuf_free(nbuf); + nbuf = next; + continue; + } + } /* * Check if DMA completed -- msdu_done is the last bit diff --git a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_stats.c b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_stats.c index 6162e734e77f..db96381cbc36 100644 --- a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_stats.c +++ b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_stats.c @@ -5671,5 +5671,7 @@ dp_print_soc_rx_stats(struct dp_soc *soc) DP_PRINT_STATS("REO Error(0-14):%s", reo_error); DP_PRINT_STATS("REO CMD SEND FAIL: %d", soc->stats.rx.err.reo_cmd_send_fail); + DP_PRINT_STATS("Rx invalid TID count:%d", + soc->stats.rx.err.rx_invalid_tid_err); } diff --git a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_types.h b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_types.h index 363e98087873..506766cdb3d0 100644 --- a/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_types.h +++ b/drivers/staging/qca-wifi-host-cmn/dp/wifi3.0/dp_types.h @@ -784,6 +784,8 @@ struct dp_soc_stats { uint32_t reo_err_oor_sg_count; /* RX msdu rejected count on delivery to vdev stack_fn*/ uint32_t rejected; + /* Rx invalid tid count */ + uint32_t rx_invalid_tid_err; } err; /* packet count per core - per ring */ diff --git a/drivers/staging/qcacld-3.0/core/cds/src/cds_api.c b/drivers/staging/qcacld-3.0/core/cds/src/cds_api.c index d8ebd1db36f9..01b1f958ac8b 100644 --- a/drivers/staging/qcacld-3.0/core/cds/src/cds_api.c +++ b/drivers/staging/qcacld-3.0/core/cds/src/cds_api.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2747,7 +2748,7 @@ uint32_t cds_get_arp_stats_gw_ip(void *context) void cds_incr_arp_stats_tx_tgt_delivered(void) { struct hdd_context *hdd_ctx; - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_ctx = gp_cds_context->hdd_context; if (!hdd_ctx) { @@ -2755,9 +2756,14 @@ void cds_incr_arp_stats_tx_tgt_delivered(void) return; } - hdd_for_each_adapter(hdd_ctx, adapter) { - if (QDF_STA_MODE == adapter->device_mode) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (QDF_STA_MODE == adapter->device_mode) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; + } + dev_put(adapter->dev); } if (adapter) @@ -2772,7 +2778,7 @@ void cds_incr_arp_stats_tx_tgt_delivered(void) void cds_incr_arp_stats_tx_tgt_acked(void) { struct hdd_context *hdd_ctx; - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_ctx = gp_cds_context->hdd_context; if (!hdd_ctx) { @@ -2780,9 +2786,14 @@ void cds_incr_arp_stats_tx_tgt_acked(void) return; } - hdd_for_each_adapter(hdd_ctx, adapter) { - if (QDF_STA_MODE == adapter->device_mode) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (QDF_STA_MODE == adapter->device_mode) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; + } + dev_put(adapter->dev); } if (adapter) diff --git a/drivers/staging/qcacld-3.0/core/hdd/inc/wlan_hdd_main.h b/drivers/staging/qcacld-3.0/core/hdd/inc/wlan_hdd_main.h index b1a59e179a5c..7fcfd7983ce2 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/inc/wlan_hdd_main.h +++ b/drivers/staging/qcacld-3.0/core/hdd/inc/wlan_hdd_main.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2236,25 +2237,31 @@ QDF_STATUS hdd_adapter_iterate(hdd_adapter_iterate_cb cb, void *context); /** - * hdd_for_each_adapter - adapter iterator macro + * __hdd_take_ref_and_fetch_front_adapter - Helper macro to lock, fetch front + * adapter, take ref and unlock. * @hdd_ctx: the global HDD context * @adapter: an hdd_adapter pointer to use as a cursor */ -#define hdd_for_each_adapter(hdd_ctx, adapter) \ - for (hdd_get_front_adapter(hdd_ctx, &adapter); \ - adapter; \ - hdd_get_next_adapter(hdd_ctx, adapter, &adapter)) +#define __hdd_take_ref_and_fetch_front_adapter(hdd_ctx, adapter) \ + qdf_spin_lock_bh(&hdd_ctx->hdd_adapter_lock), \ + hdd_get_front_adapter_no_lock(hdd_ctx, &adapter), \ + (adapter) ? dev_hold(adapter->dev) : (false), \ + qdf_spin_unlock_bh(&hdd_ctx->hdd_adapter_lock) /** - * __hdd_take_ref_and_fetch_front_adapter - Helper macro to lock, fetch front - * adapter, take ref and unlock. + * __hdd_take_ref_and_fetch_front_adapter_safe - Helper macro to lock, fetch + * front and next adapters, take ref and unlock. * @hdd_ctx: the global HDD context * @adapter: an hdd_adapter pointer to use as a cursor + * @next_adapter: hdd_adapter pointer to next adapter */ -#define __hdd_take_ref_and_fetch_front_adapter(hdd_ctx, adapter) \ +#define __hdd_take_ref_and_fetch_front_adapter_safe(hdd_ctx, adapter, \ + next_adapter) \ qdf_spin_lock_bh(&hdd_ctx->hdd_adapter_lock), \ hdd_get_front_adapter_no_lock(hdd_ctx, &adapter), \ (adapter) ? dev_hold(adapter->dev) : (false), \ + hdd_get_next_adapter_no_lock(hdd_ctx, adapter, &next_adapter), \ + (next_adapter) ? dev_hold(next_adapter->dev) : (false), \ qdf_spin_unlock_bh(&hdd_ctx->hdd_adapter_lock) /** @@ -2270,36 +2277,60 @@ QDF_STATUS hdd_adapter_iterate(hdd_adapter_iterate_cb cb, qdf_spin_unlock_bh(&hdd_ctx->hdd_adapter_lock) /** + * __hdd_take_ref_and_fetch_next_adapter_safe - Helper macro to lock, fetch next + * adapter, take ref and unlock. + * @hdd_ctx: the global HDD context + * @adapter: hdd_adapter pointer to use as a cursor + * @next_adapter: hdd_adapter pointer to next adapter + */ +#define __hdd_take_ref_and_fetch_next_adapter_safe(hdd_ctx, adapter, \ + next_adapter) \ + qdf_spin_lock_bh(&hdd_ctx->hdd_adapter_lock), \ + adapter = next_adapter, \ + hdd_get_next_adapter_no_lock(hdd_ctx, adapter, &next_adapter), \ + (next_adapter) ? dev_hold(next_adapter->dev) : (false), \ + qdf_spin_unlock_bh(&hdd_ctx->hdd_adapter_lock) + +/** * __hdd_is_adapter_valid - Helper macro to return true/false for valid adapter. * @adapter: an hdd_adapter pointer to use as a cursor */ #define __hdd_is_adapter_valid(_adapter) !!_adapter /** - * hdd_for_each_adapter_dev_held - Adapter iterator with dev_hold called + * hdd_for_each_adapter_dev_held_safe - Adapter iterator with dev_hold called + * in a delete safe manner * @hdd_ctx: the global HDD context * @adapter: an hdd_adapter pointer to use as a cursor + * @next_adapter: hdd_adapter pointer to the next adapter * * This iterator will take the reference of the netdev associated with the - * given adapter so as to prevent it from being removed in other context. - * If the control goes inside the loop body then the dev_hold has been invoked. + * given adapter so as to prevent it from being removed in other context. It + * also takes the reference of the next adapter if exist. This avoids infinite + * loop due to deletion of the adapter list entry inside the loop. Deletion of + * list entry will make the list entry to point to self. If the control goes + * inside the loop body then the dev_hold has been invoked. * * ***** NOTE ***** * Before the end of each iteration, dev_put(adapter->dev) must be * called. Not calling this will keep hold of a reference, thus preventing - * unregister of the netdevice. + * unregister of the netdevice. If the loop is terminated in between with + * return/goto/break statements, dev_put(next_adapter->dev) must be done + * along with dev_put(adapter->dev) before termination of the loop. * * Usage example: - * hdd_for_each_adapter_dev_held(hdd_ctx, adapter) { - * <work involving adapter> - * <some more work> - * dev_put(adapter->dev) - * } - */ -#define hdd_for_each_adapter_dev_held(hdd_ctx, adapter) \ - for (__hdd_take_ref_and_fetch_front_adapter(hdd_ctx, adapter); \ + * hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + * <work involving adapter> + * <some more work> + * dev_put(adapter->dev) + * } + */ +#define hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) \ + for (__hdd_take_ref_and_fetch_front_adapter_safe(hdd_ctx, adapter, \ + next_adapter); \ __hdd_is_adapter_valid(adapter); \ - __hdd_take_ref_and_fetch_next_adapter(hdd_ctx, adapter)) + __hdd_take_ref_and_fetch_next_adapter_safe(hdd_ctx, adapter, \ + next_adapter)) /** * wlan_hdd_get_adapter_by_vdev_id_from_objmgr() - Fetch adapter from objmgr diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_assoc.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_assoc.c index 2badd954e668..918c381afec2 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_assoc.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_assoc.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -380,7 +381,7 @@ hdd_conn_get_connected_cipher_algo(struct hdd_station_ctx *sta_ctx, struct hdd_adapter *hdd_get_sta_connection_in_progress( struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct hdd_station_ctx *hdd_sta_ctx; if (!hdd_ctx) { @@ -388,7 +389,7 @@ struct hdd_adapter *hdd_get_sta_connection_in_progress( return NULL; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); if ((QDF_STA_MODE == adapter->device_mode) || (QDF_P2P_CLIENT_MODE == adapter->device_mode) || @@ -397,6 +398,9 @@ struct hdd_adapter *hdd_get_sta_connection_in_progress( hdd_sta_ctx->conn_info.conn_state) { hdd_debug("vdev_id %d: Connection is in progress", adapter->vdev_id); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; } else if ((eConnectionState_Associated == hdd_sta_ctx->conn_info.conn_state) && @@ -405,9 +409,13 @@ struct hdd_adapter *hdd_get_sta_connection_in_progress( adapter->vdev_id)) { hdd_debug("vdev_id %d: Key exchange is in progress", adapter->vdev_id); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; } } + dev_put(adapter->dev); } return NULL; } diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c index 64a766dc21db..40ed3d0c0170 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg80211.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -5153,11 +5154,11 @@ wlan_hdd_set_no_dfs_flag_config_policy[QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_MAX static bool wlan_hdd_check_dfs_channel_for_adapter(struct hdd_context *hdd_ctx, enum QDF_OPMODE device_mode) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_ap_ctx *ap_ctx; struct hdd_station_ctx *sta_ctx; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if ((device_mode == adapter->device_mode) && (device_mode == QDF_SAP_MODE)) { ap_ctx = @@ -5174,6 +5175,9 @@ static bool wlan_hdd_check_dfs_channel_for_adapter(struct hdd_context *hdd_ctx, hdd_ctx->pdev, ap_ctx->operating_channel)) { hdd_err("SAP running on DFS channel"); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } } @@ -5192,9 +5196,13 @@ static bool wlan_hdd_check_dfs_channel_for_adapter(struct hdd_context *hdd_ctx, wlan_reg_get_channel_state(hdd_ctx->pdev, sta_ctx->conn_info.channel))) { hdd_err("client connected on DFS channel"); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } } + dev_put(adapter->dev); } return false; @@ -10272,13 +10280,15 @@ static enum sta_roam_policy_dfs_mode wlan_hdd_get_sta_roam_dfs_mode( */ uint8_t hdd_get_sap_operating_band(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; uint8_t operating_channel = 0; uint8_t sap_operating_band = 0; - hdd_for_each_adapter(hdd_ctx, adapter) { - if (adapter->device_mode != QDF_SAP_MODE) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (adapter->device_mode != QDF_SAP_MODE) { + dev_put(adapter->dev); continue; + } operating_channel = adapter->session.ap.operating_channel; if (IS_24G_CH(operating_channel)) @@ -10287,6 +10297,8 @@ uint8_t hdd_get_sap_operating_band(struct hdd_context *hdd_ctx) sap_operating_band = BAND_5G; else sap_operating_band = BAND_ALL; + + dev_put(adapter->dev); } return sap_operating_band; diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_hostapd.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_hostapd.c index 884253412072..173833cf8c1e 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_hostapd.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_hostapd.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2861,7 +2862,7 @@ static int hdd_softap_unpack_ie(mac_handle_t mac_handle, */ static bool hdd_is_any_sta_connecting(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct hdd_station_ctx *sta_ctx; if (!hdd_ctx) { @@ -2869,7 +2870,7 @@ static bool hdd_is_any_sta_connecting(struct hdd_context *hdd_ctx) return false; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); if ((adapter->device_mode == QDF_STA_MODE) || (adapter->device_mode == QDF_P2P_CLIENT_MODE) || @@ -2878,9 +2879,13 @@ static bool hdd_is_any_sta_connecting(struct hdd_context *hdd_ctx) eConnectionState_Connecting) { hdd_debug("vdev_id %d: connecting", adapter->vdev_id); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } } + dev_put(adapter->dev); } return false; @@ -3327,7 +3332,7 @@ bool hdd_sap_destroy_ctx(struct hdd_adapter *adapter) void hdd_sap_destroy_ctx_all(struct hdd_context *hdd_ctx, bool is_ssr) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; /* sap_ctx is not destroyed as it will be leveraged for sap restart */ if (is_ssr) @@ -3335,9 +3340,10 @@ void hdd_sap_destroy_ctx_all(struct hdd_context *hdd_ctx, bool is_ssr) hdd_debug("destroying all the sap context"); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->device_mode == QDF_SAP_MODE) hdd_sap_destroy_ctx(adapter); + dev_put(adapter->dev); } } diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ioctl.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ioctl.c index 702c15bf674f..62ffd934324c 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ioctl.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ioctl.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -6002,6 +6003,7 @@ static int drv_cmd_max_tx_power(struct hdd_adapter *adapter, uint8_t *value = command; struct qdf_mac_addr bssid = QDF_MAC_ADDR_BCAST_INIT; struct qdf_mac_addr selfmac = QDF_MAC_ADDR_BCAST_INIT; + struct hdd_adapter *next_adapter = NULL; ret = hdd_parse_setmaxtxpower_command(value, &tx_power); if (ret) { @@ -6009,7 +6011,7 @@ static int drv_cmd_max_tx_power(struct hdd_adapter *adapter, return ret; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { /* Assign correct self MAC address */ qdf_copy_macaddr(&bssid, &adapter->mac_addr); @@ -6027,9 +6029,13 @@ static int drv_cmd_max_tx_power(struct hdd_adapter *adapter, if (QDF_STATUS_SUCCESS != status) { hdd_err("Set max tx power failed"); ret = -EINVAL; + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); goto exit; } hdd_debug("Set max tx power success"); + dev_put(adapter->dev); } exit: diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ipa.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ipa.c index c121e5fdfebf..e76fa222f4a4 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ipa.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_ipa.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -33,7 +34,7 @@ void hdd_ipa_set_tx_flow_info(void) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_station_ctx *sta_ctx; struct hdd_ap_ctx *hdd_ap_ctx; struct hdd_hostapd_state *hostapd_state; @@ -70,7 +71,7 @@ void hdd_ipa_set_tx_flow_info(void) psoc = hdd_ctx->psoc; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { switch (adapter->device_mode) { case QDF_STA_MODE: sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); @@ -202,6 +203,7 @@ void hdd_ipa_set_tx_flow_info(void) if (!preAdapterContext) { hdd_err("SCC: Previous adapter context NULL"); + dev_put(adapter->dev); continue; } @@ -250,6 +252,7 @@ void hdd_ipa_set_tx_flow_info(void) if (!adapter5) { hdd_err("MCC: 5GHz adapter context NULL"); + dev_put(adapter->dev); continue; } adapter5->tx_flow_low_watermark = @@ -278,6 +281,7 @@ void hdd_ipa_set_tx_flow_info(void) if (!adapter2_4) { hdd_err("MCC: 2.4GHz adapter context NULL"); + dev_put(adapter->dev); continue; } adapter2_4->tx_flow_low_watermark = @@ -310,6 +314,7 @@ void hdd_ipa_set_tx_flow_info(void) } targetChannel = 0; #endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */ + dev_put(adapter->dev); } } diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c index f1c5c0bcd6ed..bf44251b7383 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -370,10 +371,12 @@ void hdd_start_complete(int ret) */ static void hdd_set_rps_cpu_mask(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_send_rps_ind(adapter); + dev_put(adapter->dev); + } } #ifdef QCA_HL_NETDEV_FLOW_CONTROL @@ -2281,7 +2284,7 @@ exit: bool hdd_dfs_indicate_radar(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_ap_ctx *ap_ctx; bool dfs_disable_channel_switch = false; @@ -2298,7 +2301,7 @@ bool hdd_dfs_indicate_radar(struct hdd_context *hdd_ctx) return true; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(adapter); if ((QDF_SAP_MODE == adapter->device_mode || @@ -2314,6 +2317,7 @@ bool hdd_dfs_indicate_radar(struct hdd_context *hdd_ctx) cds_get_context(QDF_MODULE_ID_SOC), adapter->txrx_vdev); } + dev_put(adapter->dev); } return true; @@ -2968,14 +2972,20 @@ int hdd_assemble_rate_code(uint8_t preamble, uint8_t nss, uint8_t rate) */ static bool hdd_wapi_security_sta_exist(void) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if ((adapter->device_mode == QDF_STA_MODE) && adapter->wapi_info.wapi_mode && - (adapter->wapi_info.wapi_auth_mode != WAPI_AUTH_MODE_OPEN)) + (adapter->wapi_info.wapi_auth_mode != + WAPI_AUTH_MODE_OPEN)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; + } + dev_put(adapter->dev); } return false; } @@ -3012,17 +3022,21 @@ static enum policy_mgr_con_mode wlan_hdd_get_mode_for_non_connected_vdev( */ static bool hdd_is_chan_switch_in_progress(void) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if ((adapter->device_mode == QDF_SAP_MODE || adapter->device_mode == QDF_P2P_GO_MODE) && qdf_atomic_read(&adapter->ch_switch_in_progress)) { hdd_debug("channel switch progress for vdev_id %d", adapter->vdev_id); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } + dev_put(adapter->dev); } return false; @@ -5325,13 +5339,17 @@ static void hdd_cleanup_adapter(struct hdd_context *hdd_ctx, static QDF_STATUS hdd_check_for_existing_macaddr(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (!qdf_mem_cmp(adapter->mac_addr.bytes, mac_addr, sizeof(tSirMacAddr))) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return QDF_STATUS_E_FAILURE; } + dev_put(adapter->dev); } return QDF_STATUS_SUCCESS; @@ -6568,27 +6586,31 @@ QDF_STATUS hdd_stop_adapter(struct hdd_context *hdd_ctx, */ void hdd_deinit_all_adapters(struct hdd_context *hdd_ctx, bool rtnl_held) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_enter(); - hdd_for_each_adapter(hdd_ctx, adapter) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_deinit_adapter(hdd_ctx, adapter, rtnl_held); + dev_put(adapter->dev); + } hdd_exit(); } QDF_STATUS hdd_stop_all_adapters(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_enter(); if (hdd_ctx->sap_pre_cac_work.fn) cds_flush_work(&hdd_ctx->sap_pre_cac_work); - hdd_for_each_adapter(hdd_ctx, adapter) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_stop_adapter(hdd_ctx, adapter); + dev_put(adapter->dev); + } hdd_exit(); @@ -6652,7 +6674,7 @@ static void hdd_adapter_abort_tx_flow(struct hdd_adapter *adapter) QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_station_ctx *sta_ctx; struct qdf_mac_addr peer_macaddr; bool value; @@ -6664,7 +6686,7 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx) if (hdd_ctx->sap_pre_cac_work.fn) cds_flush_work(&hdd_ctx->sap_pre_cac_work); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_info("[SSR] reset adapter with device mode %s(%d)", qdf_opmode_str(adapter->device_mode), adapter->device_mode); @@ -6770,6 +6792,7 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx) /* Destroy vdev which will be recreated during reinit. */ hdd_vdev_destroy(adapter); + dev_put(adapter->dev); } hdd_exit(); @@ -6779,17 +6802,22 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx) bool hdd_is_any_interface_open(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) { hdd_info("FTM mode, don't close the module"); return true; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (test_bit(DEVICE_IFACE_OPENED, &adapter->event_flags) || - test_bit(SME_SESSION_OPENED, &adapter->event_flags)) + test_bit(SME_SESSION_OPENED, &adapter->event_flags)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; + } + dev_put(adapter->dev); } return false; @@ -7483,16 +7511,18 @@ static void hdd_delete_sta(struct hdd_adapter *adapter) QDF_STATUS hdd_start_all_adapters(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; eConnectionState conn_state; bool value; hdd_enter(); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (!hdd_is_interface_up(adapter) && - adapter->device_mode != QDF_NDI_MODE) + adapter->device_mode != QDF_NDI_MODE) { + dev_put(adapter->dev); continue; + } hdd_debug("[SSR] start adapter with device mode %s(%d)", qdf_opmode_str(adapter->device_mode), @@ -7603,14 +7633,19 @@ QDF_STATUS hdd_start_all_adapters(struct hdd_context *hdd_ctx) * applicable to all interfaces */ wlan_hdd_cfg80211_register_frames(adapter); + dev_put(adapter->dev); } - hdd_for_each_adapter(hdd_ctx, adapter) { - if (!hdd_is_interface_up(adapter)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (!hdd_is_interface_up(adapter)) { + dev_put(adapter->dev); continue; + } if (adapter->device_mode == QDF_P2P_GO_MODE) hdd_stop_p2p_go(adapter); + + dev_put(adapter->dev); } hdd_exit(); @@ -7805,15 +7840,19 @@ QDF_STATUS hdd_adapter_iterate(hdd_adapter_iterate_cb cb, void *context) struct hdd_adapter *hdd_get_adapter_by_rand_macaddr( struct hdd_context *hdd_ctx, tSirMacAddr mac_addr) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if ((adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_CLIENT_MODE || adapter->device_mode == QDF_P2P_DEVICE_MODE) && ucfg_p2p_check_random_mac(hdd_ctx->psoc, - adapter->vdev_id, mac_addr)) + adapter->vdev_id, mac_addr)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } } return NULL; @@ -7822,12 +7861,17 @@ struct hdd_adapter *hdd_get_adapter_by_rand_macaddr( struct hdd_adapter *hdd_get_adapter_by_macaddr(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (!qdf_mem_cmp(adapter->mac_addr.bytes, - mac_addr, sizeof(tSirMacAddr))) + mac_addr, sizeof(tSirMacAddr))) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } + dev_put(adapter->dev); } return NULL; @@ -7836,11 +7880,16 @@ struct hdd_adapter *hdd_get_adapter_by_macaddr(struct hdd_context *hdd_ctx, struct hdd_adapter *hdd_get_adapter_by_vdev(struct hdd_context *hdd_ctx, uint32_t vdev_id) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { - if (adapter->vdev_id == vdev_id) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (adapter->vdev_id == vdev_id) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } + dev_put(adapter->dev); } return NULL; @@ -7849,13 +7898,17 @@ struct hdd_adapter *hdd_get_adapter_by_vdev(struct hdd_context *hdd_ctx, struct hdd_adapter *hdd_adapter_get_by_reference(struct hdd_context *hdd_ctx, struct hdd_adapter *reference) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter == reference) { dev_hold(adapter->dev); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } + dev_put(adapter->dev); } return adapter; @@ -7869,11 +7922,16 @@ void hdd_adapter_put(struct hdd_adapter *adapter) struct hdd_adapter *hdd_get_adapter_by_iface_name(struct hdd_context *hdd_ctx, const char *iface_name) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { - if (!qdf_str_cmp(adapter->dev->name, iface_name)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (!qdf_str_cmp(adapter->dev->name, iface_name)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } + dev_put(adapter->dev); } return NULL; @@ -7892,11 +7950,16 @@ struct hdd_adapter *hdd_get_adapter_by_iface_name(struct hdd_context *hdd_ctx, struct hdd_adapter *hdd_get_adapter(struct hdd_context *hdd_ctx, enum QDF_OPMODE mode) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { - if (adapter->device_mode == mode) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (adapter->device_mode == mode) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } + dev_put(adapter->dev); } return NULL; @@ -7940,10 +8003,10 @@ enum QDF_OPMODE hdd_get_device_mode(uint32_t vdev_id) uint8_t hdd_get_operating_channel(struct hdd_context *hdd_ctx, enum QDF_OPMODE mode) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; uint8_t operatingChannel = 0; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (mode == adapter->device_mode) { switch (adapter->device_mode) { case QDF_STA_MODE: @@ -7970,10 +8033,13 @@ uint8_t hdd_get_operating_channel(struct hdd_context *hdd_ctx, default: break; } - /* Found the device of interest. break the loop */ + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } + dev_put(adapter->dev); } return operatingChannel; @@ -7982,11 +8048,11 @@ uint8_t hdd_get_operating_channel(struct hdd_context *hdd_ctx, static inline QDF_STATUS hdd_unregister_wext_all_adapters(struct hdd_context * hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_enter(); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_CLIENT_MODE || adapter->device_mode == QDF_IBSS_MODE || @@ -7995,6 +8061,7 @@ static inline QDF_STATUS hdd_unregister_wext_all_adapters(struct hdd_context * adapter->device_mode == QDF_P2P_GO_MODE) { hdd_unregister_wext(adapter->dev); } + dev_put(adapter->dev); } hdd_exit(); @@ -8004,11 +8071,11 @@ static inline QDF_STATUS hdd_unregister_wext_all_adapters(struct hdd_context * QDF_STATUS hdd_abort_mac_scan_all_adapters(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_enter(); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_CLIENT_MODE || adapter->device_mode == QDF_IBSS_MODE || @@ -8019,6 +8086,7 @@ QDF_STATUS hdd_abort_mac_scan_all_adapters(struct hdd_context *hdd_ctx) adapter->vdev_id, INVALID_SCAN_ID, true); } + dev_put(adapter->dev); } hdd_exit(); @@ -8035,11 +8103,10 @@ QDF_STATUS hdd_abort_mac_scan_all_adapters(struct hdd_context *hdd_ctx) */ static QDF_STATUS hdd_abort_sched_scan_all_adapters(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; int err; - - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_CLIENT_MODE || adapter->device_mode == QDF_IBSS_MODE || @@ -8050,6 +8117,7 @@ static QDF_STATUS hdd_abort_sched_scan_all_adapters(struct hdd_context *hdd_ctx) if (err) hdd_err("Unable to stop scheduled scan"); } + dev_put(adapter->dev); } hdd_exit(); @@ -8401,11 +8469,16 @@ QDF_STATUS hdd_post_cds_enable_config(struct hdd_context *hdd_ctx) struct hdd_adapter *hdd_get_first_valid_adapter(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { - if (adapter && adapter->magic == WLAN_HDD_ADAPTER_MAGIC) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (adapter && adapter->magic == WLAN_HDD_ADAPTER_MAGIC) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return adapter; + } + dev_put(adapter->dev); } return NULL; @@ -8600,10 +8673,12 @@ static void hdd_display_periodic_stats(struct hdd_context *hdd_ctx, */ static void hdd_clear_rps_cpu_mask(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { hdd_send_rps_disable_ind(adapter); + dev_put(adapter->dev); + } } #ifdef CLD_PM_QOS @@ -9006,7 +9081,8 @@ static void hdd_ipa_set_perf_level(struct hdd_context *hdd_ctx, #define HDD_BW_GET_DIFF(_x, _y) (unsigned long)((ULONG_MAX - (_y)) + (_x) + 1) static void __hdd_bus_bw_work_handler(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter = NULL, *con_sap_adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL, + *con_sap_adapter = NULL; uint64_t tx_packets = 0, rx_packets = 0; uint64_t fwd_tx_packets = 0, fwd_rx_packets = 0; uint64_t fwd_tx_packets_diff = 0, fwd_rx_packets_diff = 0; @@ -9022,19 +9098,22 @@ static void __hdd_bus_bw_work_handler(struct hdd_context *hdd_ctx) if (hdd_ctx->is_wiphy_suspended) return; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { /* * Validate magic so we don't end up accessing * an invalid adapter. */ - if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC) + if (adapter->magic != WLAN_HDD_ADAPTER_MAGIC) { + dev_put(adapter->dev); continue; + } if ((adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_CLIENT_MODE) && WLAN_HDD_GET_STATION_CTX_PTR(adapter)->conn_info.conn_state != eConnectionState_Associated) { + dev_put(adapter->dev); continue; } @@ -9042,6 +9121,7 @@ static void __hdd_bus_bw_work_handler(struct hdd_context *hdd_ctx) adapter->device_mode == QDF_P2P_GO_MODE) && WLAN_HDD_GET_AP_CTX_PTR(adapter)->ap_active == false) { + dev_put(adapter->dev); continue; } @@ -9087,6 +9167,7 @@ static void __hdd_bus_bw_work_handler(struct hdd_context *hdd_ctx) adapter->prev_fwd_rx_packets = fwd_rx_packets; qdf_spin_unlock_bh(&hdd_ctx->bus_bw_lock); connected = true; + dev_put(adapter->dev); } if (!connected) { @@ -9270,7 +9351,7 @@ hdd_display_netif_queue_history_compact(struct hdd_context *hdd_ctx) char temp_str[20 * WLAN_REASON_TYPE_MAX]; char *comb_log_str; uint32_t comb_log_str_size; - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; comb_log_str_size = (ADAP_NETIFQ_LOG_LEN * WLAN_MAX_VDEVS) + 1; comb_log_str = qdf_mem_malloc(comb_log_str_size); @@ -9279,7 +9360,7 @@ hdd_display_netif_queue_history_compact(struct hdd_context *hdd_ctx) bytes_written = 0; - hdd_for_each_adapter_dev_held(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { curr_time = qdf_system_ticks(); total = curr_time - adapter->start_time; delta = curr_time - adapter->last_time; @@ -9438,14 +9519,14 @@ void wlan_hdd_display_netif_queue_history(struct hdd_context *hdd_ctx, enum qdf_stats_verbosity_level verb_lvl) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; if (verb_lvl == QDF_STATS_VERBOSITY_LEVEL_LOW) { hdd_display_netif_queue_history_compact(hdd_ctx); return; } - hdd_for_each_adapter_dev_held(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->vdev_id == CDP_INVALID_VDEV_ID) { dev_put(adapter->dev); continue; @@ -9464,9 +9545,9 @@ wlan_hdd_display_netif_queue_history(struct hdd_context *hdd_ctx, */ void wlan_hdd_clear_netif_queue_history(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { qdf_mem_zero(adapter->queue_oper_stats, sizeof(adapter->queue_oper_stats)); qdf_mem_zero(adapter->queue_oper_history, @@ -9475,6 +9556,7 @@ void wlan_hdd_clear_netif_queue_history(struct hdd_context *hdd_ctx) adapter->start_time = adapter->last_time = qdf_system_ticks(); adapter->total_pause_time = 0; adapter->total_unpause_time = 0; + dev_put(adapter->dev); } } @@ -9722,7 +9804,7 @@ hdd_store_sap_restart_channel(uint8_t restart_chan, uint8_t *restart_chan_store) */ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; uint32_t i; bool found = false; uint8_t restart_chan_store[SAP_MAX_NUM_SESSION] = {0}; @@ -9734,13 +9816,13 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) bool is_vendor_acs_support = cfg_default(CFG_USER_AUTO_CHANNEL_SELECTION); - hdd_for_each_adapter(hdd_ctxt, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctxt, adapter, next_adapter) { if (!(adapter->device_mode == QDF_SAP_MODE && adapter->session.ap.sap_config.acs_cfg.acs_mode)) { - hdd_debug("skip device mode:%d acs:%d", - adapter->device_mode, - adapter->session.ap.sap_config. - acs_cfg.acs_mode); + hdd_debug_rl("skip device mode:%d acs:%d", + adapter->device_mode, + adapter->session.ap.sap_config.acs_cfg.acs_mode); + dev_put(adapter->dev); continue; } @@ -9779,6 +9861,7 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) restart_chan_store); hdd_debug("ch:%d is safe. no need to change channel", adapter->session.ap.operating_channel); + dev_put(adapter->dev); continue; } @@ -9797,6 +9880,7 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) if (is_vendor_acs_support && is_acs_support_for_dfs_ltecoex) { hdd_update_acs_timer_reason(adapter, QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX); + dev_put(adapter->dev); continue; } @@ -9838,6 +9922,9 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) CSA_REASON_UNSAFE_CHANNEL); hdd_switch_sap_channel(adapter, restart_chan, true); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return; } else { @@ -9845,9 +9932,14 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt) wlan_hdd_send_svc_nlink_msg( hdd_ctxt->radio_index, WLAN_SVC_LTE_COEX_IND, NULL, 0); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return; } } + /* dev_put has to be done here */ + dev_put(adapter->dev); } } @@ -10014,7 +10106,7 @@ wlan_hdd_get_adapter_by_vdev_id_from_objmgr(struct hdd_context *hdd_ctx, void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind) { struct hdd_context *hdd_ctx = NULL; - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; int i, num_adapters; uint8_t vdev_id[WLAN_MAX_VDEVS]; struct ieee80211_mgmt *mgmt = @@ -10040,7 +10132,8 @@ void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind) } } else if (SME_SESSION_ID_BROADCAST == frame_ind->sessionId) { num_adapters = 0; - hdd_for_each_adapter_dev_held(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, + next_adapter) { vdev_id[num_adapters] = adapter->vdev_id; num_adapters++; /* dev_put has to be done here */ @@ -12769,7 +12862,7 @@ static void hdd_state_info_dump(char **buf_ptr, uint16_t *size) { struct hdd_context *hdd_ctx; struct hdd_station_ctx *hdd_sta_ctx; - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; uint16_t len = 0; char *buf = *buf_ptr; @@ -12787,7 +12880,7 @@ static void hdd_state_info_dump(char **buf_ptr, uint16_t *size) "\n is_scheduler_suspended %d", hdd_ctx->is_scheduler_suspended); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->dev) len += scnprintf(buf + len, *size - len, "\n device name: %s", adapter->dev->name); @@ -12805,6 +12898,7 @@ static void hdd_state_info_dump(char **buf_ptr, uint16_t *size) default: break; } + dev_put(adapter->dev); } *size -= len; @@ -13606,14 +13700,14 @@ void wlan_hdd_disable_roaming(struct hdd_adapter *cur_adapter, uint32_t mlme_operation_requestor) { struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(cur_adapter); - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct csr_roam_profile *roam_profile; struct hdd_station_ctx *sta_ctx; if (!policy_mgr_is_sta_active_connection_exists(hdd_ctx->psoc)) return; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { roam_profile = hdd_roam_profile(adapter); sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); @@ -13626,6 +13720,7 @@ void wlan_hdd_disable_roaming(struct hdd_adapter *cur_adapter, REASON_DRIVER_DISABLED, mlme_operation_requestor); } + dev_put(adapter->dev); } } @@ -13633,14 +13728,14 @@ void wlan_hdd_enable_roaming(struct hdd_adapter *cur_adapter, uint32_t mlme_operation_requestor) { struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(cur_adapter); - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct csr_roam_profile *roam_profile; struct hdd_station_ctx *sta_ctx; if (!policy_mgr_is_sta_active_connection_exists(hdd_ctx->psoc)) return; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { roam_profile = hdd_roam_profile(adapter); sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); @@ -13653,6 +13748,7 @@ void wlan_hdd_enable_roaming(struct hdd_adapter *cur_adapter, REASON_DRIVER_ENABLED, mlme_operation_requestor); } + dev_put(adapter->dev); } } @@ -13774,7 +13870,7 @@ void wlan_hdd_auto_shutdown_cb(void) void wlan_hdd_auto_shutdown_enable(struct hdd_context *hdd_ctx, bool enable) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; bool ap_connected = false, sta_connected = false; mac_handle_t mac_handle; @@ -13797,12 +13893,16 @@ void wlan_hdd_auto_shutdown_enable(struct hdd_context *hdd_ctx, bool enable) /* To enable shutdown timer check conncurrency */ if (policy_mgr_concurrent_open_sessions_running(hdd_ctx->psoc)) { - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, + next_adapter) { if (adapter->device_mode == QDF_STA_MODE) { if (WLAN_HDD_GET_STATION_CTX_PTR(adapter)-> conn_info.conn_state == eConnectionState_Associated) { sta_connected = true; + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } } @@ -13811,9 +13911,13 @@ void wlan_hdd_auto_shutdown_enable(struct hdd_context *hdd_ctx, bool enable) if (WLAN_HDD_GET_AP_CTX_PTR(adapter)-> ap_active == true) { ap_connected = true; + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } } + dev_put(adapter->dev); } } @@ -13837,11 +13941,11 @@ hdd_get_con_sap_adapter(struct hdd_adapter *this_sap_adapter, bool check_start_bss) { struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(this_sap_adapter); - struct hdd_adapter *adapter, *con_sap_adapter; + struct hdd_adapter *adapter, *con_sap_adapter, *next_adapter = NULL; con_sap_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter && ((adapter->device_mode == QDF_SAP_MODE) || (adapter->device_mode == QDF_P2P_GO_MODE)) && adapter != this_sap_adapter) { @@ -13849,13 +13953,20 @@ hdd_get_con_sap_adapter(struct hdd_adapter *this_sap_adapter, if (test_bit(SOFTAP_BSS_STARTED, &adapter->event_flags)) { con_sap_adapter = adapter; + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } } else { con_sap_adapter = adapter; + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); break; } } + dev_put(adapter->dev); } return con_sap_adapter; @@ -13876,24 +13987,35 @@ static inline bool hdd_adapter_is_ap(struct hdd_adapter *adapter) static bool hdd_any_adapter_is_assoc(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (hdd_adapter_is_sta(adapter) && WLAN_HDD_GET_STATION_CTX_PTR(adapter)-> conn_info.conn_state == eConnectionState_Associated) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } if (hdd_adapter_is_ap(adapter) && WLAN_HDD_GET_AP_CTX_PTR(adapter)->ap_active) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; } if (adapter->device_mode == QDF_NDI_MODE && WLAN_HDD_GET_STATION_CTX_PTR(adapter)-> - conn_info.conn_state == eConnectionState_NdiConnected) + conn_info.conn_state == eConnectionState_NdiConnected) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return true; + } + dev_put(adapter->dev); } return false; diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_nan_datapath.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_nan_datapath.c index bb17165435d8..7b532400a8bc 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_nan_datapath.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_nan_datapath.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -120,27 +121,36 @@ static int hdd_close_ndi(struct hdd_adapter *adapter) */ static bool hdd_is_ndp_allowed(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_station_ctx *sta_ctx; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { switch (adapter->device_mode) { case QDF_P2P_GO_MODE: case QDF_SAP_MODE: if (test_bit(SOFTAP_BSS_STARTED, - &adapter->event_flags)) + &adapter->event_flags)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return false; + } break; case QDF_P2P_CLIENT_MODE: case QDF_IBSS_MODE: sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); if (hdd_conn_is_connected(sta_ctx) || - hdd_is_connecting(sta_ctx)) + hdd_is_connecting(sta_ctx)) { + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return false; + } break; default: break; } + dev_put(adapter->dev); } return true; @@ -491,7 +501,7 @@ error_init_txrx: int hdd_ndi_open(char *iface_name) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct qdf_mac_addr random_ndi_mac; struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); uint8_t ndi_adapter_count = 0; @@ -503,9 +513,10 @@ int hdd_ndi_open(char *iface_name) return -EINVAL; } - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (WLAN_HDD_IS_NDI(adapter)) ndi_adapter_count++; + dev_put(adapter->dev); } if (ndi_adapter_count >= MAX_NDI_ADAPTERS) { hdd_err("Can't allow more than %d NDI adapters", diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_oemdata.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_oemdata.c index d23a256a8409..76597c4f0560 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_oemdata.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_oemdata.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -186,7 +187,7 @@ static void send_oem_reg_rsp_nlink_msg(void) uint8_t *num_interfaces; uint8_t *device_mode; uint8_t *vdev_id; - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; /* OEM msg is always to a specific process & cannot be a broadcast */ if (p_hdd_ctx->oem_pid == 0) { @@ -217,7 +218,7 @@ static void send_oem_reg_rsp_nlink_msg(void) *num_interfaces = 0; /* Iterate through each adapter and fill device mode and vdev id */ - hdd_for_each_adapter(p_hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(p_hdd_ctx, adapter, next_adapter) { device_mode = buf++; vdev_id = buf++; *device_mode = adapter->device_mode; @@ -226,6 +227,7 @@ static void send_oem_reg_rsp_nlink_msg(void) hdd_debug("num_interfaces: %d, device_mode: %d, vdev_id: %d", *num_interfaces, *device_mode, *vdev_id); + dev_put(adapter->dev); } ani_hdr->length = diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_periodic_sta_stats.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_periodic_sta_stats.c index 1627f8528a1f..11a66f05cefc 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_periodic_sta_stats.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_periodic_sta_stats.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -41,7 +42,7 @@ void hdd_periodic_sta_stats_init(struct hdd_adapter *adapter) void hdd_periodic_sta_stats_display(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; struct hdd_stats sta_stats; struct hdd_config *hdd_cfg; char *dev_name; @@ -50,17 +51,20 @@ void hdd_periodic_sta_stats_display(struct hdd_context *hdd_ctx) if (!hdd_ctx) return; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { should_log = false; - if (adapter->device_mode != QDF_STA_MODE) + if (adapter->device_mode != QDF_STA_MODE) { + dev_put(adapter->dev); continue; + } hdd_cfg = hdd_ctx->config; qdf_mutex_acquire(&adapter->sta_periodic_stats_lock); if (!adapter->is_sta_periodic_stats_enabled) { qdf_mutex_release(&adapter->sta_periodic_stats_lock); + dev_put(adapter->dev); continue; } @@ -89,6 +93,7 @@ void hdd_periodic_sta_stats_display(struct hdd_context *hdd_ctx) hdd_nofl_info("%s: Rx DNS responses: %d", dev_name, sta_stats.hdd_dns_stats.rx_dns_rsp_count); } + dev_put(adapter->dev); } } diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c index 1cd8fb24ad60..c271246fa5df 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_power.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -1163,7 +1164,7 @@ hdd_suspend_wlan(void) { struct hdd_context *hdd_ctx; QDF_STATUS status; - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; uint32_t conn_state_mask = 0; hdd_info("WLAN being suspended by OS"); @@ -1180,9 +1181,11 @@ hdd_suspend_wlan(void) return -EINVAL; } - hdd_for_each_adapter(hdd_ctx, adapter) { - if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) { + dev_put(adapter->dev); continue; + } /* stop all TX queues before suspend */ hdd_debug("Disabling queues for dev mode %s", @@ -1197,6 +1200,7 @@ hdd_suspend_wlan(void) /* Configure supported OffLoads */ hdd_enable_host_offloads(adapter, pmo_apps_suspend); hdd_update_conn_state_mask(adapter, &conn_state_mask); + dev_put(adapter->dev); } status = ucfg_pmo_psoc_user_space_suspend_req(hdd_ctx->psoc, @@ -1221,7 +1225,7 @@ hdd_suspend_wlan(void) static int hdd_resume_wlan(void) { struct hdd_context *hdd_ctx; - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; QDF_STATUS status; hdd_info("WLAN being resumed by OS"); @@ -1242,9 +1246,11 @@ static int hdd_resume_wlan(void) hdd_wlan_suspend_resume_event(HDD_WLAN_EARLY_RESUME); /*loop through all adapters. Concurrency */ - hdd_for_each_adapter(hdd_ctx, adapter) { - if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) { + dev_put(adapter->dev); continue; + } /* Disable supported OffLoads */ hdd_disable_host_offloads(adapter, pmo_apps_resume); @@ -1258,6 +1264,8 @@ static int hdd_resume_wlan(void) if (adapter->device_mode == QDF_STA_MODE) status = hdd_disable_default_pkt_filters(adapter); + + dev_put(adapter->dev); } ucfg_ipa_resume(hdd_ctx->pdev); @@ -1290,17 +1298,18 @@ void hdd_svc_fw_shutdown_ind(struct device *dev) */ static void hdd_ssr_restart_sap(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; hdd_enter(); - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (adapter->device_mode == QDF_SAP_MODE) { if (test_bit(SOFTAP_INIT_DONE, &adapter->event_flags)) { hdd_debug("Restart prev SAP session"); wlan_hdd_start_sap(adapter, true); } } + dev_put(adapter->dev); } hdd_exit(); @@ -1416,9 +1425,9 @@ static inline void hdd_wlan_ssr_reinit_event(void) */ static void hdd_send_default_scan_ies(struct hdd_context *hdd_ctx) { - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { if (hdd_is_interface_up(adapter) && (adapter->device_mode == QDF_STA_MODE || adapter->device_mode == QDF_P2P_DEVICE_MODE) && @@ -1428,6 +1437,7 @@ static void hdd_send_default_scan_ies(struct hdd_context *hdd_ctx) adapter->scan_info.default_scan_ies, adapter->scan_info.default_scan_ies_len); } + dev_put(adapter->dev); } } @@ -1833,7 +1843,7 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, struct cfg80211_wowlan *wow) { struct hdd_context *hdd_ctx = wiphy_priv(wiphy); - struct hdd_adapter *adapter; + struct hdd_adapter *adapter, *next_adapter = NULL; mac_handle_t mac_handle; int rc; @@ -1866,9 +1876,11 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, * "dfs_cac_block_tx" is set to true when RADAR is found and stay true * until CAC is done for a SoftAP which is in started state. */ - hdd_for_each_adapter(hdd_ctx, adapter) { - if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) { + dev_put(adapter->dev); continue; + } if (QDF_SAP_MODE == adapter->device_mode) { if (BSS_START == @@ -1879,6 +1891,9 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, hdd_err("RADAR detection in progress, do not allow suspend"); wlan_hdd_inc_suspend_stats(hdd_ctx, SUSPEND_FAIL_RADAR); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return -EAGAIN; } else if (!ucfg_pmo_get_enable_sap_suspend( hdd_ctx->psoc)) { @@ -1886,6 +1901,9 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, * suspend */ hdd_err("SAP does not support suspend!!"); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return -EOPNOTSUPP; } } else if (QDF_P2P_GO_MODE == adapter->device_mode) { @@ -1895,9 +1913,13 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, * suspend */ hdd_err("GO does not support suspend!!"); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return -EOPNOTSUPP; } } + dev_put(adapter->dev); } /* p2p cleanup task based on scheduler */ ucfg_p2p_cleanup_tx_by_psoc(hdd_ctx->psoc); @@ -1909,11 +1931,14 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, } /* flush any pending powersave timers */ - hdd_for_each_adapter(hdd_ctx, adapter) { - if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { + if (wlan_hdd_validate_vdev_id(adapter->vdev_id)) { + dev_put(adapter->dev); continue; + } sme_ps_timer_flush_sync(mac_handle, adapter->vdev_id); + dev_put(adapter->dev); } /* diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_regulatory.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_regulatory.c index c18c49ff98b6..ef87381db622 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_regulatory.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_regulatory.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -749,6 +750,7 @@ int hdd_reg_set_country(struct hdd_context *hdd_ctx, char *country_code) int hdd_reg_set_band(struct net_device *dev, u8 ui_band) { struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev); + struct hdd_adapter *next_adapter = NULL; mac_handle_t mac_handle; enum band_info band; QDF_STATUS status; @@ -813,7 +815,7 @@ int hdd_reg_set_band(struct net_device *dev, u8 ui_band) current_band, band); mac_handle = hdd_ctx->mac_handle; - hdd_for_each_adapter(hdd_ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter) { wlan_abort_scan(hdd_ctx->pdev, INVAL_PDEV_ID, adapter->vdev_id, INVALID_SCAN_ID, false); connected_band = hdd_conn_get_connected_band( @@ -843,10 +845,14 @@ int hdd_reg_set_band(struct net_device *dev, u8 ui_band) if (status) { hdd_err("Hdd disconnect failed, status: %d", status); + dev_put(adapter->dev); + if (next_adapter) + dev_put(next_adapter->dev); return -EINVAL; } } ucfg_scan_flush_results(hdd_ctx->pdev, NULL); + dev_put(adapter->dev); } if (QDF_IS_STATUS_ERROR(ucfg_reg_set_band(hdd_ctx->pdev, band))) { diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_stats.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_stats.c index e09beade5245..ccbcba36c524 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_stats.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_stats.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -6592,13 +6593,13 @@ int wlan_hdd_get_temperature(struct hdd_adapter *adapter, int *temperature) void wlan_hdd_display_txrx_stats(struct hdd_context *ctx) { - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *next_adapter = NULL; struct hdd_tx_rx_stats *stats; int i = 0; uint32_t total_rx_pkt, total_rx_dropped, total_rx_delv, total_rx_refused; - hdd_for_each_adapter_dev_held(ctx, adapter) { + hdd_for_each_adapter_dev_held_safe(ctx, adapter, next_adapter) { total_rx_pkt = 0; total_rx_dropped = 0; total_rx_delv = 0; diff --git a/drivers/staging/qcacld-3.0/core/mac/src/dph/dph_hash_table.c b/drivers/staging/qcacld-3.0/core/mac/src/dph/dph_hash_table.c index 3e7bdea01597..2783a6e39bfc 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/dph/dph_hash_table.c +++ b/drivers/staging/qcacld-3.0/core/mac/src/dph/dph_hash_table.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -242,6 +243,7 @@ tpDphHashNode dph_init_sta_state(struct mac_context *mac, tSirMacAddr staAddr, sta->is_disassoc_deauth_in_progress = 0; sta->sta_deletion_in_progress = false; sta->valid = 1; + sta->is_key_installed = 0; return sta; } diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/include/lim_api.h b/drivers/staging/qcacld-3.0/core/mac/src/pe/include/lim_api.h index d312a47c9f56..88c7d877c5a1 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/pe/include/lim_api.h +++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/include/lim_api.h @@ -116,6 +116,15 @@ void pe_stop(struct mac_context *mac); #ifdef WLAN_FEATURE_11W /** + * is_mgmt_protected - check RMF enabled for the peer + * @vdev_id: vdev id + * @peer_mac_addr: peer mac address + * + * Return: True if RMF enabled and key is installed + */ +bool is_mgmt_protected(uint32_t vdev_id, const uint8_t *peer_mac_addr); + +/** * lim_stop_pmfcomeback_timer() - stop pmf comeback timer * @session: Pointer to PE session * @@ -126,6 +135,12 @@ void lim_stop_pmfcomeback_timer(struct pe_session *session); static inline void lim_stop_pmfcomeback_timer(struct pe_session *session) { } + +static inline bool +is_mgmt_protected(uint32_t vdev_id, const uint8_t *peer_mac_addr) +{ + return false; +} #endif /** diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_api.c b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_api.c index 55d26d86d608..fb92d2e4c3a9 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_api.c +++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_api.c @@ -621,18 +621,8 @@ static void pe_shutdown_notifier_cb(void *ctx) } #ifdef WLAN_FEATURE_11W -/** - * is_mgmt_protected - check RMF enabled for the peer - * @vdev_id: vdev id - * @peer_mac_addr: peer mac address - * - * The function check the mgmt frame protection enabled or not - * for station mode and AP mode - * - * Return: true, if the connection is RMF enabled. - */ -static bool is_mgmt_protected(uint32_t vdev_id, - const uint8_t *peer_mac_addr) +bool is_mgmt_protected(uint32_t vdev_id, + const uint8_t *peer_mac_addr) { uint16_t aid; tpDphHashNode sta_ds; @@ -667,22 +657,6 @@ static bool is_mgmt_protected(uint32_t vdev_id, return protected; } -#else -/** - * is_mgmt_protected - check RMF enabled for the peer - * @vdev_id: vdev id - * @peer_mac_addr: peer mac address - * - * The function check the mgmt frame protection enabled or not - * for station mode and AP mode - * - * Return: true, if the connection is RMF enabled. - */ -static bool is_mgmt_protected(uint32_t vdev_id, - const uint8_t *peer_mac_addr) -{ - return false; -} #endif static void p2p_register_callbacks(struct mac_context *mac_ctx) diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_auth_frame.c b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_auth_frame.c index 5b25cb504423..5bac24eb0a7a 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_auth_frame.c +++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_auth_frame.c @@ -1265,6 +1265,14 @@ lim_process_auth_frame(struct mac_context *mac_ctx, uint8_t *rx_pkt_info, return; } + /* Duplicate Auth frame from peer */ + auth_node = lim_search_pre_auth_list(mac_ctx, mac_hdr->sa); + if (auth_node && (auth_node->seq_num == curr_seq_num)) { + pe_err("Received an already processed auth frame with seq_num : %d", + curr_seq_num); + return; + } + /* save seq number and mac_addr in pe_session */ pe_session->prev_auth_seq_num = curr_seq_num; qdf_mem_copy(pe_session->prev_auth_mac_addr, mac_hdr->sa, ETH_ALEN); @@ -1408,7 +1416,6 @@ lim_process_auth_frame(struct mac_context *mac_ctx, uint8_t *rx_pkt_info, * Authentication frame3 and there is a context for requesting * STA. If not, reject with unspecified failure status code */ - auth_node = lim_search_pre_auth_list(mac_ctx, mac_hdr->sa); if (!auth_node) { pe_err("rx Auth frame with no preauth ctx with WEP bit set " QDF_MAC_ADDR_STR, diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_deauth_frame.c b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_deauth_frame.c index 18d02f7b5271..89f8409e5dec 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_deauth_frame.c +++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_deauth_frame.c @@ -121,8 +121,8 @@ lim_process_deauth_frame(struct mac_context *mac, uint8_t *pRxPacketInfo, } #ifdef WLAN_FEATURE_11W /* PMF: If this session is a PMF session, then ensure that this frame was protected */ - if (pe_session->limRmfEnabled - && (WMA_GET_RX_DPU_FEEDBACK(pRxPacketInfo) & + if (is_mgmt_protected(pe_session->vdev_id, (const uint8_t *)pHdr->sa) && + (WMA_GET_RX_DPU_FEEDBACK(pRxPacketInfo) & DPU_FEEDBACK_UNPROTECTED_ERROR)) { pe_debug("received an unprotected deauth from AP"); /* diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_disassoc_frame.c b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_disassoc_frame.c index 5c9869b9b048..56763d92d7e7 100644 --- a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_disassoc_frame.c +++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_process_disassoc_frame.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -113,8 +114,8 @@ lim_process_disassoc_frame(struct mac_context *mac, uint8_t *pRxPacketInfo, } #ifdef WLAN_FEATURE_11W /* PMF: If this session is a PMF session, then ensure that this frame was protected */ - if (pe_session->limRmfEnabled - && (WMA_GET_RX_DPU_FEEDBACK(pRxPacketInfo) & + if (is_mgmt_protected(pe_session->vdev_id, (const uint8_t *)pHdr->sa) && + (WMA_GET_RX_DPU_FEEDBACK(pRxPacketInfo) & DPU_FEEDBACK_UNPROTECTED_ERROR)) { pe_err("received an unprotected disassoc from AP"); /* diff --git a/drivers/staging/qcacld-3.0/core/wma/src/wma_mgmt.c b/drivers/staging/qcacld-3.0/core/wma/src/wma_mgmt.c index b11950a37653..7456601cd7cd 100644 --- a/drivers/staging/qcacld-3.0/core/wma/src/wma_mgmt.c +++ b/drivers/staging/qcacld-3.0/core/wma/src/wma_mgmt.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -4442,7 +4443,7 @@ int wma_form_rx_packet(qdf_nbuf_t buf, if (status) return status; } else if (wma_find_vdev_by_addr(wma_handle, wh->i_addr1, - &vdev_id) == QDF_STATUS_SUCCESS) { + &vdev_id)) { status = wma_check_and_process_rmf_frame(wma_handle, vdev_id, &wh, diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c index d4a74f7ddf6b..5e4e2f423e42 100644 --- a/drivers/staging/speakup/main.c +++ b/drivers/staging/speakup/main.c @@ -1778,7 +1778,7 @@ static void speakup_con_update(struct vc_data *vc) { unsigned long flags; - if (!speakup_console[vc->vc_num] || spk_parked) + if (!speakup_console[vc->vc_num] || spk_parked || !synth) return; if (!spin_trylock_irqsave(&speakup_info.spinlock, flags)) /* Speakup output, discard */ diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c index 76f434c1c088..4c4432adb6c9 100644 --- a/drivers/staging/vt6655/device_main.c +++ b/drivers/staging/vt6655/device_main.c @@ -567,7 +567,7 @@ err_free_rd: kfree(desc->rd_info); err_free_desc: - while (--i) { + while (i--) { desc = &priv->aRD0Ring[i]; device_free_rx_buf(priv, desc); kfree(desc->rd_info); @@ -613,7 +613,7 @@ err_free_rd: kfree(desc->rd_info); err_free_desc: - while (--i) { + while (i--) { desc = &priv->aRD1Ring[i]; device_free_rx_buf(priv, desc); kfree(desc->rd_info); @@ -677,7 +677,7 @@ static int device_init_td0_ring(struct vnt_private *priv) return 0; err_free_desc: - while (--i) { + while (i--) { desc = &priv->apTD0Rings[i]; kfree(desc->td_info); } @@ -717,7 +717,7 @@ static int device_init_td1_ring(struct vnt_private *priv) return 0; err_free_desc: - while (--i) { + while (i--) { desc = &priv->apTD1Rings[i]; kfree(desc->td_info); } diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index bc8918f382e4..80b74db4048b 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c @@ -409,6 +409,7 @@ static int tcm_loop_setup_hba_bus(struct tcm_loop_hba *tl_hba, int tcm_loop_host ret = device_register(&tl_hba->dev); if (ret) { pr_err("device_register() failed for tl_hba->dev: %d\n", ret); + put_device(&tl_hba->dev); return -ENODEV; } @@ -1103,7 +1104,7 @@ check_len: */ ret = tcm_loop_setup_hba_bus(tl_hba, tcm_loop_hba_no_cnt); if (ret) - goto out; + return ERR_PTR(ret); sh = tl_hba->sh; tcm_loop_hba_no_cnt++; diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c index 8e8328347c0e..dffefcde0628 100644 --- a/drivers/thermal/intel_powerclamp.c +++ b/drivers/thermal/intel_powerclamp.c @@ -549,9 +549,7 @@ static int start_power_clamp(void) get_online_cpus(); /* prefer BSP */ - control_cpu = 0; - if (!cpu_online(control_cpu)) - control_cpu = smp_processor_id(); + control_cpu = cpumask_first(cpu_online_mask); clamping = true; schedule_delayed_work(&poll_pkg_cstate_work, 0); diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index f6d2be13b32e..4a890011eba3 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -1413,7 +1413,7 @@ static struct gsm_control *gsm_control_send(struct gsm_mux *gsm, unsigned int command, u8 *data, int clen) { struct gsm_control *ctrl = kzalloc(sizeof(struct gsm_control), - GFP_KERNEL); + GFP_ATOMIC); unsigned long flags; if (ctrl == NULL) return NULL; diff --git a/drivers/tty/serial/8250/8250_lpss.c b/drivers/tty/serial/8250/8250_lpss.c index 98dbc796353f..448388ec03e2 100644 --- a/drivers/tty/serial/8250/8250_lpss.c +++ b/drivers/tty/serial/8250/8250_lpss.c @@ -246,8 +246,13 @@ static int lpss8250_dma_setup(struct lpss8250 *lpss, struct uart_8250_port *port struct dw_dma_slave *rx_param, *tx_param; struct device *dev = port->port.dev; - if (!lpss->dma_param.dma_dev) + if (!lpss->dma_param.dma_dev) { + dma = port->dma; + if (dma) + goto out_configuration_only; + return 0; + } rx_param = devm_kzalloc(dev, sizeof(*rx_param), GFP_KERNEL); if (!rx_param) @@ -258,16 +263,18 @@ static int lpss8250_dma_setup(struct lpss8250 *lpss, struct uart_8250_port *port return -ENOMEM; *rx_param = lpss->dma_param; - dma->rxconf.src_maxburst = lpss->dma_maxburst; - *tx_param = lpss->dma_param; - dma->txconf.dst_maxburst = lpss->dma_maxburst; dma->fn = lpss8250_dma_filter; dma->rx_param = rx_param; dma->tx_param = tx_param; port->dma = dma; + +out_configuration_only: + dma->rxconf.src_maxburst = lpss->dma_maxburst; + dma->txconf.dst_maxburst = lpss->dma_maxburst; + return 0; } diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c index c1166b45c288..b9352d3bb2ed 100644 --- a/drivers/tty/serial/8250/8250_omap.c +++ b/drivers/tty/serial/8250/8250_omap.c @@ -162,27 +162,10 @@ static void omap8250_set_mctrl(struct uart_port *port, unsigned int mctrl) static void omap_8250_mdr1_errataset(struct uart_8250_port *up, struct omap8250_priv *priv) { - u8 timeout = 255; - serial_out(up, UART_OMAP_MDR1, priv->mdr1); udelay(2); serial_out(up, UART_FCR, up->fcr | UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR); - /* - * Wait for FIFO to empty: when empty, RX_FIFO_E bit is 0 and - * TX_FIFO_E bit is 1. - */ - while (UART_LSR_THRE != (serial_in(up, UART_LSR) & - (UART_LSR_THRE | UART_LSR_DR))) { - timeout--; - if (!timeout) { - /* Should *never* happen. we warn and carry on */ - dev_crit(up->port.dev, "Errata i202: timedout %x\n", - serial_in(up, UART_LSR)); - break; - } - udelay(1); - } } static void omap_8250_get_divisor(struct uart_port *port, unsigned int baud, @@ -261,6 +244,7 @@ static void omap8250_restore_regs(struct uart_8250_port *up) { struct omap8250_priv *priv = up->port.private_data; struct uart_8250_dma *dma = up->dma; + u8 mcr = serial8250_in_MCR(up); if (dma && dma->tx_running) { /* @@ -277,7 +261,7 @@ static void omap8250_restore_regs(struct uart_8250_port *up) serial_out(up, UART_EFR, UART_EFR_ECB); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A); - serial8250_out_MCR(up, UART_MCR_TCRTLR); + serial8250_out_MCR(up, mcr | UART_MCR_TCRTLR); serial_out(up, UART_FCR, up->fcr); omap8250_update_scr(up, priv); @@ -293,7 +277,8 @@ static void omap8250_restore_regs(struct uart_8250_port *up) serial_out(up, UART_LCR, 0); /* drop TCR + TLR access, we setup XON/XOFF later */ - serial8250_out_MCR(up, up->mcr); + serial8250_out_MCR(up, mcr); + serial_out(up, UART_IER, up->ier); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); @@ -602,7 +587,6 @@ static int omap_8250_startup(struct uart_port *port) pm_runtime_get_sync(port->dev); - up->mcr = 0; serial_out(up, UART_FCR, UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); serial_out(up, UART_LCR, UART_LCR_WLEN8); @@ -1279,6 +1263,7 @@ static int omap8250_remove(struct platform_device *pdev) pm_runtime_dont_use_autosuspend(&pdev->dev); pm_runtime_put_sync(&pdev->dev); + flush_work(&priv->qos_work); pm_runtime_disable(&pdev->dev); serial8250_unregister_port(priv->line); pm_qos_remove_request(&priv->pm_qos_request); diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index f11d1202566e..311a92482ff4 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -1865,10 +1865,13 @@ EXPORT_SYMBOL_GPL(serial8250_modem_status); static bool handle_rx_dma(struct uart_8250_port *up, unsigned int iir) { switch (iir & 0x3f) { - case UART_IIR_RX_TIMEOUT: - serial8250_rx_dma_flush(up); + case UART_IIR_RDI: + if (!up->dma->rx_running) + break; /* fall-through */ case UART_IIR_RLSI: + case UART_IIR_RX_TIMEOUT: + serial8250_rx_dma_flush(up); return true; } return up->dma->rx_dma(up); diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig index f005eaf8bc57..a9ddd76d4170 100644 --- a/drivers/tty/serial/8250/Kconfig +++ b/drivers/tty/serial/8250/Kconfig @@ -106,7 +106,7 @@ config SERIAL_8250_CONSOLE config SERIAL_8250_GSC tristate - depends on SERIAL_8250 && GSC + depends on SERIAL_8250 && PARISC default SERIAL_8250 config SERIAL_8250_DMA diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index aeda1fe71eeb..819f340a8a7a 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -2510,6 +2510,7 @@ static const struct dev_pm_ops imx_uart_pm_ops = { .suspend_noirq = imx_uart_suspend_noirq, .resume_noirq = imx_uart_resume_noirq, .freeze_noirq = imx_uart_suspend_noirq, + .thaw_noirq = imx_uart_resume_noirq, .restore_noirq = imx_uart_resume_noirq, .suspend = imx_uart_suspend, .resume = imx_uart_resume, diff --git a/drivers/tty/serial/jsm/jsm_driver.c b/drivers/tty/serial/jsm/jsm_driver.c index 592e51d8944e..07e9be9865c7 100644 --- a/drivers/tty/serial/jsm/jsm_driver.c +++ b/drivers/tty/serial/jsm/jsm_driver.c @@ -212,7 +212,8 @@ static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent) break; default: - return -ENXIO; + rc = -ENXIO; + goto out_kfree_brd; } rc = request_irq(brd->irq, brd->bd_ops->intr, IRQF_SHARED, "JSM", brd); diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index c22bd40fc6f0..ded9f16d08eb 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -365,6 +365,8 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id) isrstatus &= ~CDNS_UART_IXR_TXEMPTY; } + isrstatus &= port->read_status_mask; + isrstatus &= ~port->ignore_status_mask; /* * Skip RX processing if RX is disabled as RXEMPTY will never be set * as read bytes will not be removed from the FIFO. diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c index 6ed4b00dba96..7a2a9559693f 100644 --- a/drivers/usb/chipidea/otg_fsm.c +++ b/drivers/usb/chipidea/otg_fsm.c @@ -256,8 +256,10 @@ static void ci_otg_del_timer(struct ci_hdrc *ci, enum otg_fsm_timer t) ci->enabled_otg_timer_bits &= ~(1 << t); if (ci->next_otg_timer == t) { if (ci->enabled_otg_timer_bits == 0) { + spin_unlock_irqrestore(&ci->lock, flags); /* No enabled timers after delete it */ hrtimer_cancel(&ci->otg_fsm_hrtimer); + spin_lock_irqsave(&ci->lock, flags); ci->next_otg_timer = NUM_OTG_FSM_TIMERS; } else { /* Find the next timer */ diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index f8f2de7899a9..35a11f7bcb65 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -362,6 +362,9 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x0781, 0x5583), .driver_info = USB_QUIRK_NO_LPM }, { USB_DEVICE(0x0781, 0x5591), .driver_info = USB_QUIRK_NO_LPM }, + /* Realforce 87U Keyboard */ + { USB_DEVICE(0x0853, 0x011b), .driver_info = USB_QUIRK_NO_LPM }, + /* M-Systems Flash Disk Pioneers */ { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -388,6 +391,15 @@ static const struct usb_device_id usb_quirk_list[] = { /* Kingston DataTraveler 3.0 */ { USB_DEVICE(0x0951, 0x1666), .driver_info = USB_QUIRK_NO_LPM }, + /* NVIDIA Jetson devices in Force Recovery mode */ + { USB_DEVICE(0x0955, 0x7018), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7019), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7418), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7721), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7c18), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7e19), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x0955, 0x7f21), .driver_info = USB_QUIRK_RESET_RESUME }, + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */ { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF }, @@ -438,6 +450,10 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x1532, 0x0116), .driver_info = USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL }, + /* Lenovo ThinkPad OneLink+ Dock twin hub controllers (VIA Labs VL812) */ + { USB_DEVICE(0x17ef, 0x1018), .driver_info = USB_QUIRK_RESET_RESUME }, + { USB_DEVICE(0x17ef, 0x1019), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Lenovo USB-C to Ethernet Adapter RTL8153-04 */ { USB_DEVICE(0x17ef, 0x720c), .driver_info = USB_QUIRK_NO_LPM }, diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index cce1c4326722..ed466544d070 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1224,8 +1224,8 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb, trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS; } - /* always enable Interrupt on Missed ISOC */ - trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; + if (!no_interrupt && !chain) + trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; break; case USB_ENDPOINT_XFER_BULK: @@ -3086,6 +3086,10 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_SHORT && !chain) return 1; + if ((trb->ctrl & DWC3_TRB_CTRL_ISP_IMI) && + DWC3_TRB_SIZE_TRBSTS(trb->size) == DWC3_TRBSTS_MISSED_ISOC) + return 1; + if ((trb->ctrl & DWC3_TRB_CTRL_IOC) || (trb->ctrl & DWC3_TRB_CTRL_LST)) return 1; diff --git a/drivers/usb/gadget/function/f_printer.c b/drivers/usb/gadget/function/f_printer.c index 2a1868b2d24c..dd5eb6202fe1 100644 --- a/drivers/usb/gadget/function/f_printer.c +++ b/drivers/usb/gadget/function/f_printer.c @@ -87,7 +87,7 @@ struct printer_dev { u8 printer_cdev_open; wait_queue_head_t wait; unsigned q_len; - char *pnp_string; /* We don't own memory! */ + char **pnp_string; /* We don't own memory! */ struct usb_function function; }; @@ -963,16 +963,16 @@ static int printer_func_setup(struct usb_function *f, if ((wIndex>>8) != dev->interface) break; - if (!dev->pnp_string) { + if (!*dev->pnp_string) { value = 0; break; } - value = strlen(dev->pnp_string); + value = strlen(*dev->pnp_string); buf[0] = (value >> 8) & 0xFF; buf[1] = value & 0xFF; - memcpy(buf + 2, dev->pnp_string, value); + memcpy(buf + 2, *dev->pnp_string, value); DBG(dev, "1284 PNP String: %x %s\n", value, - dev->pnp_string); + *dev->pnp_string); break; case GET_PORT_STATUS: /* Get Port Status */ @@ -1435,7 +1435,7 @@ static struct usb_function *gprinter_alloc(struct usb_function_instance *fi) kref_init(&dev->kref); ++opts->refcnt; dev->minor = opts->minor; - dev->pnp_string = opts->pnp_string; + dev->pnp_string = &opts->pnp_string; dev->q_len = opts->q_len; mutex_unlock(&opts->lock); diff --git a/drivers/usb/gadget/udc/bdc/bdc_udc.c b/drivers/usb/gadget/udc/bdc/bdc_udc.c index 7bfd58c846f7..71ed3a15130f 100644 --- a/drivers/usb/gadget/udc/bdc/bdc_udc.c +++ b/drivers/usb/gadget/udc/bdc/bdc_udc.c @@ -151,6 +151,7 @@ static void bdc_uspc_disconnected(struct bdc *bdc, bool reinit) bdc->delayed_status = false; bdc->reinit = reinit; bdc->test_mode = false; + usb_gadget_set_state(&bdc->gadget, USB_STATE_NOTATTACHED); } /* TNotify wkaeup timer */ diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 276c6fc9fd33..472f537494f2 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -650,7 +650,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci, num_stream_ctxs, &stream_info->ctx_array_dma, mem_flags); if (!stream_info->stream_ctx_array) - goto cleanup_ctx; + goto cleanup_ring_array; memset(stream_info->stream_ctx_array, 0, sizeof(struct xhci_stream_ctx)*num_stream_ctxs); @@ -711,6 +711,11 @@ cleanup_rings: } xhci_free_command(xhci, stream_info->free_streams_command); cleanup_ctx: + xhci_free_stream_ctx(xhci, + stream_info->num_stream_ctxs, + stream_info->stream_ctx_array, + stream_info->ctx_array_dma); +cleanup_ring_array: kfree(stream_info->stream_rings); cleanup_info: kfree(stream_info); @@ -901,15 +906,19 @@ void xhci_free_virt_device(struct xhci_hcd *xhci, int slot_id) if (dev->eps[i].stream_info) xhci_free_stream_info(xhci, dev->eps[i].stream_info); - /* Endpoints on the TT/root port lists should have been removed - * when usb_disable_device() was called for the device. - * We can't drop them anyway, because the udev might have gone - * away by this point, and we can't tell what speed it was. + /* + * Endpoints are normally deleted from the bandwidth list when + * endpoints are dropped, before device is freed. + * If host is dying or being removed then endpoints aren't + * dropped cleanly, so delete the endpoint from list here. + * Only applicable for hosts with software bandwidth checking. */ - if (!list_empty(&dev->eps[i].bw_endpoint_list)) - xhci_warn(xhci, "Slot %u endpoint %u " - "not removed from BW list!\n", - slot_id, i); + + if (!list_empty(&dev->eps[i].bw_endpoint_list)) { + list_del_init(&dev->eps[i].bw_endpoint_list); + xhci_dbg(xhci, "Slot %u endpoint %u not removed from BW list!\n", + slot_id, i); + } } /* If this is a hub, free the TT(s) from the TT list */ xhci_free_tt_info(xhci, dev, slot_id); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index e6bbb9195554..7f640603b103 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -242,8 +242,14 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_BROKEN_STREAMS; if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && - pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) + pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) { + /* + * try to tame the ASMedia 1042 controller which reports 0.96 + * but appears to behave more like 1.0 + */ + xhci->quirks |= XHCI_SPURIOUS_SUCCESS; xhci->quirks |= XHCI_BROKEN_STREAMS; + } if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI) { xhci->quirks |= XHCI_TRUST_TX_LENGTH; diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 8d5ec16502c8..e0e333178d2b 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1189,7 +1189,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) /* re-initialize the HC on Restore Error, or Host Controller Error */ if (temp & (STS_SRE | STS_HCE)) { reinit_xhc = true; - xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp); + if (!xhci->broken_suspend) + xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp); } if (reinit_xhc) { diff --git a/drivers/usb/misc/idmouse.c b/drivers/usb/misc/idmouse.c index bb24527f3c70..ba2b6fbab9b8 100644 --- a/drivers/usb/misc/idmouse.c +++ b/drivers/usb/misc/idmouse.c @@ -178,10 +178,6 @@ static int idmouse_create_image(struct usb_idmouse *dev) bytes_read += bulk_read; } - /* reset the device */ -reset: - ftip_command(dev, FTIP_RELEASE, 0, 0); - /* check for valid image */ /* right border should be black (0x00) */ for (bytes_read = sizeof(HEADER)-1 + WIDTH-1; bytes_read < IMGSIZE; bytes_read += WIDTH) @@ -193,6 +189,10 @@ reset: if (dev->bulk_in_buffer[bytes_read] != 0xFF) return -EAGAIN; + /* reset the device */ +reset: + ftip_command(dev, FTIP_RELEASE, 0, 0); + /* should be IMGSIZE == 65040 */ dev_dbg(&dev->interface->dev, "read %d bytes fingerprint data\n", bytes_read); diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c index f48a23adbc35..094e812e9e69 100644 --- a/drivers/usb/mon/mon_bin.c +++ b/drivers/usb/mon/mon_bin.c @@ -1268,6 +1268,11 @@ static int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma) { /* don't do anything here: "fault" will set up page table entries */ vma->vm_ops = &mon_bin_vm_ops; + + if (vma->vm_flags & VM_WRITE) + return -EPERM; + + vma->vm_flags &= ~VM_MAYWRITE; vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; vma->vm_private_data = filp->private_data; mon_bin_vma_open(vma); diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index 4622400ba4dd..8e83995fc3bd 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c @@ -760,6 +760,9 @@ static void rxstate(struct musb *musb, struct musb_request *req) musb_writew(epio, MUSB_RXCSR, csr); buffer_aint_mapped: + fifo_count = min_t(unsigned int, + request->length - request->actual, + (unsigned int)fifo_count); musb_read_fifo(musb_ep->hw_ep, fifo_count, (u8 *) (request->buf + request->actual)); request->actual += fifo_count; diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 623b54a5cd49..1afffa92420a 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -1304,8 +1304,7 @@ static u32 get_ftdi_divisor(struct tty_struct *tty, case 38400: div_value = ftdi_sio_b38400; break; case 57600: div_value = ftdi_sio_b57600; break; case 115200: div_value = ftdi_sio_b115200; break; - } /* baud */ - if (div_value == 0) { + default: dev_dbg(dev, "%s - Baudrate (%d) requested is not supported\n", __func__, baud); div_value = ftdi_sio_b9600; diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 560e628912e5..ebb293627129 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -162,6 +162,8 @@ static void option_instat_callback(struct urb *urb); #define NOVATELWIRELESS_PRODUCT_G2 0xA010 #define NOVATELWIRELESS_PRODUCT_MC551 0xB001 +#define UBLOX_VENDOR_ID 0x1546 + /* AMOI PRODUCTS */ #define AMOI_VENDOR_ID 0x1614 #define AMOI_PRODUCT_H01 0x0800 @@ -240,7 +242,6 @@ static void option_instat_callback(struct urb *urb); #define QUECTEL_PRODUCT_UC15 0x9090 /* These u-blox products use Qualcomm's vendor ID */ #define UBLOX_PRODUCT_R410M 0x90b2 -#define UBLOX_PRODUCT_R6XX 0x90fa /* These Yuga products use Qualcomm's vendor ID */ #define YUGA_PRODUCT_CLM920_NC5 0x9625 @@ -581,6 +582,9 @@ static void option_instat_callback(struct urb *urb); #define OPPO_VENDOR_ID 0x22d9 #define OPPO_PRODUCT_R11 0x276c +/* Sierra Wireless products */ +#define SIERRA_VENDOR_ID 0x1199 +#define SIERRA_PRODUCT_EM9191 0x90d3 /* Device flags */ @@ -1124,8 +1128,16 @@ static const struct usb_device_id option_ids[] = { /* u-blox products using Qualcomm vendor ID */ { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M), .driver_info = RSVD(1) | RSVD(3) }, - { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R6XX), + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x908b), /* u-blox LARA-R6 00B */ + .driver_info = RSVD(4) }, + { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x90fa), .driver_info = RSVD(3) }, + /* u-blox products */ + { USB_DEVICE(UBLOX_VENDOR_ID, 0x1341) }, /* u-blox LARA-L6 */ + { USB_DEVICE(UBLOX_VENDOR_ID, 0x1342), /* u-blox LARA-L6 (RMNET) */ + .driver_info = RSVD(4) }, + { USB_DEVICE(UBLOX_VENDOR_ID, 0x1343), /* u-blox LARA-L6 (ECM) */ + .driver_info = RSVD(4) }, /* Quectel products using Quectel vendor ID */ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff), .driver_info = NUMEP2 }, @@ -2167,6 +2179,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x010a, 0xff) }, /* Fibocom MA510 (ECM mode) */ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ @@ -2176,6 +2189,8 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index 3f437f07356b..b7ba15d0ed6c 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c @@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = { {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */ {DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */ + {DEVICE_SWI(0x413c, 0x81c2)}, /* Dell Wireless 5811e */ {DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */ {DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */ {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */ diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 6a59950a63a0..b270be141b8e 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h @@ -1275,12 +1275,6 @@ UNUSUAL_DEV( 0x090a, 0x1200, 0x0000, 0x9999, USB_SC_RBC, USB_PR_BULK, NULL, 0 ), -UNUSUAL_DEV(0x090c, 0x1000, 0x1100, 0x1100, - "Samsung", - "Flash Drive FIT", - USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_MAX_SECTORS_64), - /* aeb */ UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff, "Feiya", diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index 9f67717eaf45..08d49f34c785 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c @@ -354,7 +354,7 @@ vhost_vsock_alloc_pkt(struct vhost_virtqueue *vq, return NULL; } - pkt->buf = kmalloc(pkt->len, GFP_KERNEL); + pkt->buf = kvmalloc(pkt->len, GFP_KERNEL); if (!pkt->buf) { kfree(pkt); return NULL; diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 417f4bcc1182..9fcd583b7835 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -579,7 +579,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info, if (scr_readw(r) != vc->vc_video_erase_char) break; if (r != q && new_rows >= rows + logo_lines) { - save = kmalloc(array3_size(logo_lines, new_cols, 2), + save = kzalloc(array3_size(logo_lines, new_cols, 2), GFP_KERNEL); if (save) { int i = cols < new_cols ? cols : new_cols; diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c index da54a84d2e62..b0134835af20 100644 --- a/drivers/video/fbdev/smscufx.c +++ b/drivers/video/fbdev/smscufx.c @@ -100,7 +100,6 @@ struct ufx_data { struct kref kref; int fb_count; bool virtualized; /* true when physical usb device not present */ - struct delayed_work free_framebuffer_work; atomic_t usb_active; /* 0 = update virtual buffer, but no usb traffic */ atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */ u8 *edid; /* null until we read edid from hw or get from sysfs */ @@ -140,6 +139,8 @@ static int ufx_submit_urb(struct ufx_data *dev, struct urb * urb, size_t len); static int ufx_alloc_urb_list(struct ufx_data *dev, int count, size_t size); static void ufx_free_urb_list(struct ufx_data *dev); +static DEFINE_MUTEX(disconnect_mutex); + /* reads a control register */ static int ufx_reg_read(struct ufx_data *dev, u32 index, u32 *data) { @@ -1073,9 +1074,13 @@ static int ufx_ops_open(struct fb_info *info, int user) if (user == 0 && !console) return -EBUSY; + mutex_lock(&disconnect_mutex); + /* If the USB device is gone, we don't accept new opens */ - if (dev->virtualized) + if (dev->virtualized) { + mutex_unlock(&disconnect_mutex); return -ENODEV; + } dev->fb_count++; @@ -1099,6 +1104,8 @@ static int ufx_ops_open(struct fb_info *info, int user) pr_debug("open /dev/fb%d user=%d fb_info=%p count=%d", info->node, user, info, dev->fb_count); + mutex_unlock(&disconnect_mutex); + return 0; } @@ -1111,15 +1118,24 @@ static void ufx_free(struct kref *kref) { struct ufx_data *dev = container_of(kref, struct ufx_data, kref); - /* this function will wait for all in-flight urbs to complete */ - if (dev->urbs.count > 0) - ufx_free_urb_list(dev); + kfree(dev); +} - pr_debug("freeing ufx_data %p", dev); +static void ufx_ops_destory(struct fb_info *info) +{ + struct ufx_data *dev = info->par; + int node = info->node; - kfree(dev); + /* Assume info structure is freed after this point */ + framebuffer_release(info); + + pr_debug("fb_info for /dev/fb%d has been freed", node); + + /* release reference taken by kref_init in probe() */ + kref_put(&dev->kref, ufx_free); } + static void ufx_release_urb_work(struct work_struct *work) { struct urb_node *unode = container_of(work, struct urb_node, @@ -1128,14 +1144,9 @@ static void ufx_release_urb_work(struct work_struct *work) up(&unode->dev->urbs.limit_sem); } -static void ufx_free_framebuffer_work(struct work_struct *work) +static void ufx_free_framebuffer(struct ufx_data *dev) { - struct ufx_data *dev = container_of(work, struct ufx_data, - free_framebuffer_work.work); struct fb_info *info = dev->info; - int node = info->node; - - unregister_framebuffer(info); if (info->cmap.len != 0) fb_dealloc_cmap(&info->cmap); @@ -1147,11 +1158,6 @@ static void ufx_free_framebuffer_work(struct work_struct *work) dev->info = NULL; - /* Assume info structure is freed after this point */ - framebuffer_release(info); - - pr_debug("fb_info for /dev/fb%d has been freed", node); - /* ref taken in probe() as part of registering framebfufer */ kref_put(&dev->kref, ufx_free); } @@ -1163,11 +1169,13 @@ static int ufx_ops_release(struct fb_info *info, int user) { struct ufx_data *dev = info->par; + mutex_lock(&disconnect_mutex); + dev->fb_count--; /* We can't free fb_info here - fbmem will touch it when we return */ if (dev->virtualized && (dev->fb_count == 0)) - schedule_delayed_work(&dev->free_framebuffer_work, HZ); + ufx_free_framebuffer(dev); if ((dev->fb_count == 0) && (info->fbdefio)) { fb_deferred_io_cleanup(info); @@ -1181,6 +1189,8 @@ static int ufx_ops_release(struct fb_info *info, int user) kref_put(&dev->kref, ufx_free); + mutex_unlock(&disconnect_mutex); + return 0; } @@ -1287,6 +1297,7 @@ static struct fb_ops ufx_ops = { .fb_blank = ufx_ops_blank, .fb_check_var = ufx_ops_check_var, .fb_set_par = ufx_ops_set_par, + .fb_destroy = ufx_ops_destory, }; /* Assumes &info->lock held by caller @@ -1670,9 +1681,6 @@ static int ufx_usb_probe(struct usb_interface *interface, goto destroy_modedb; } - INIT_DELAYED_WORK(&dev->free_framebuffer_work, - ufx_free_framebuffer_work); - retval = ufx_reg_read(dev, 0x3000, &id_rev); check_warn_goto_error(retval, "error %d reading 0x3000 register from device", retval); dev_dbg(dev->gdev, "ID_REV register value 0x%08x", id_rev); @@ -1745,8 +1753,12 @@ e_nomem: static void ufx_usb_disconnect(struct usb_interface *interface) { struct ufx_data *dev; + struct fb_info *info; + + mutex_lock(&disconnect_mutex); dev = usb_get_intfdata(interface); + info = dev->info; pr_debug("USB disconnect starting\n"); @@ -1760,12 +1772,17 @@ static void ufx_usb_disconnect(struct usb_interface *interface) /* if clients still have us open, will be freed on last close */ if (dev->fb_count == 0) - schedule_delayed_work(&dev->free_framebuffer_work, 0); + ufx_free_framebuffer(dev); - /* release reference taken by kref_init in probe() */ - kref_put(&dev->kref, ufx_free); + /* this function will wait for all in-flight urbs to complete */ + if (dev->urbs.count > 0) + ufx_free_urb_list(dev); + + pr_debug("freeing ufx_data %p", dev); + + unregister_framebuffer(info); - /* consider ufx_data freed */ + mutex_unlock(&disconnect_mutex); } static struct usb_driver ufx_driver = { diff --git a/drivers/video/fbdev/stifb.c b/drivers/video/fbdev/stifb.c index 9e88e3f594c2..9530ed46f435 100644 --- a/drivers/video/fbdev/stifb.c +++ b/drivers/video/fbdev/stifb.c @@ -1257,7 +1257,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref) /* limit fbsize to max visible screen size */ if (fix->smem_len > yres*fix->line_length) - fix->smem_len = yres*fix->line_length; + fix->smem_len = ALIGN(yres*fix->line_length, 4*1024*1024); fix->accel = FB_ACCEL_NONE; diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index 27d955c5d9f9..e5d4a1e1411d 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c @@ -387,8 +387,7 @@ int gntdev_map_grant_pages(struct gntdev_grant_map *map) for (i = 0; i < map->count; i++) { if (map->map_ops[i].status == GNTST_okay) { map->unmap_ops[i].handle = map->map_ops[i].handle; - if (!use_ptemod) - alloced++; + alloced++; } else if (!err) err = -EINVAL; @@ -397,8 +396,7 @@ int gntdev_map_grant_pages(struct gntdev_grant_map *map) if (use_ptemod) { if (map->kmap_ops[i].status == GNTST_okay) { - if (map->map_ops[i].status == GNTST_okay) - alloced++; + alloced++; map->kunmap_ops[i].handle = map->kmap_ops[i].handle; } else if (!err) err = -EINVAL; @@ -414,20 +412,42 @@ static void __unmap_grant_pages_done(int result, unsigned int i; struct gntdev_grant_map *map = data->data; unsigned int offset = data->unmap_ops - map->unmap_ops; + int successful_unmaps = 0; + int live_grants; for (i = 0; i < data->count; i++) { + if (map->unmap_ops[offset + i].status == GNTST_okay && + map->unmap_ops[offset + i].handle != -1) + successful_unmaps++; + WARN_ON(map->unmap_ops[offset+i].status && map->unmap_ops[offset+i].handle != -1); pr_debug("unmap handle=%d st=%d\n", map->unmap_ops[offset+i].handle, map->unmap_ops[offset+i].status); map->unmap_ops[offset+i].handle = -1; + if (use_ptemod) { + if (map->kunmap_ops[offset + i].status == GNTST_okay && + map->kunmap_ops[offset + i].handle != -1) + successful_unmaps++; + + WARN_ON(map->kunmap_ops[offset+i].status && + map->kunmap_ops[offset+i].handle != -1); + pr_debug("kunmap handle=%u st=%d\n", + map->kunmap_ops[offset+i].handle, + map->kunmap_ops[offset+i].status); + map->kunmap_ops[offset+i].handle = -1; + } } + /* * Decrease the live-grant counter. This must happen after the loop to * prevent premature reuse of the grants by gnttab_mmap(). */ - atomic_sub(data->count, &map->live_grants); + live_grants = atomic_sub_return(successful_unmaps, &map->live_grants); + if (WARN_ON(live_grants < 0)) + pr_err("%s: live_grants became negative (%d) after unmapping %d pages!\n", + __func__, live_grants, successful_unmaps); /* Release reference taken by __unmap_grant_pages */ gntdev_put_map(NULL, map); diff --git a/drivers/xen/pcpu.c b/drivers/xen/pcpu.c index cdc6daa7a9f6..9cf7085a260b 100644 --- a/drivers/xen/pcpu.c +++ b/drivers/xen/pcpu.c @@ -228,7 +228,7 @@ static int register_pcpu(struct pcpu *pcpu) err = device_register(dev); if (err) { - pcpu_release(dev); + put_device(dev); return err; } diff --git a/drivers/xen/platform-pci.c b/drivers/xen/platform-pci.c index 4cec8146609a..c7e190e5db30 100644 --- a/drivers/xen/platform-pci.c +++ b/drivers/xen/platform-pci.c @@ -150,7 +150,7 @@ static int platform_pci_probe(struct pci_dev *pdev, if (ret) { dev_warn(&pdev->dev, "Unable to set the evtchn callback " "err=%d\n", ret); - goto out; + goto irq_out; } } @@ -158,13 +158,16 @@ static int platform_pci_probe(struct pci_dev *pdev, grant_frames = alloc_xen_mmio(PAGE_SIZE * max_nr_gframes); ret = gnttab_setup_auto_xlat_frames(grant_frames); if (ret) - goto out; + goto irq_out; ret = gnttab_init(); if (ret) goto grant_out; return 0; grant_out: gnttab_free_auto_xlat_frames(); +irq_out: + if (!xen_have_vector_callback) + free_irq(pdev->irq, pdev); out: pci_release_region(pdev, 0); mem_out: diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 3fe15d6f4087..a1eb573fbb10 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -136,6 +136,7 @@ struct share_check { u64 root_objectid; u64 inum; int share_count; + bool have_delayed_delete_refs; }; static inline int extent_is_shared(struct share_check *sc) @@ -588,6 +589,18 @@ unode_aux_to_inode_list(struct ulist_node *node) return (struct extent_inode_elem *)(uintptr_t)node->aux; } +static void free_leaf_list(struct ulist *ulist) +{ + struct ulist_node *node; + struct ulist_iterator uiter; + + ULIST_ITER_INIT(&uiter); + while ((node = ulist_next(ulist, &uiter))) + free_inode_elem_list(unode_aux_to_inode_list(node)); + + ulist_free(ulist); +} + /* * We maintain three seperate rbtrees: one for direct refs, one for * indirect refs which have a key, and one for indirect refs which do not @@ -702,7 +715,11 @@ static int resolve_indirect_refs(struct btrfs_fs_info *fs_info, cond_resched(); } out: - ulist_free(parents); + /* + * We may have inode lists attached to refs in the parents ulist, so we + * must free them before freeing the ulist and its refs. + */ + free_leaf_list(parents); return ret; } @@ -760,16 +777,11 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info, struct share_check *sc) { struct btrfs_delayed_ref_node *node; - struct btrfs_delayed_extent_op *extent_op = head->extent_op; struct btrfs_key key; - struct btrfs_key tmp_op_key; struct rb_node *n; int count; int ret = 0; - if (extent_op && extent_op->update_key) - btrfs_disk_key_to_cpu(&tmp_op_key, &extent_op->key); - spin_lock(&head->lock); for (n = rb_first(&head->ref_tree); n; n = rb_next(n)) { node = rb_entry(n, struct btrfs_delayed_ref_node, @@ -796,10 +808,16 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info, case BTRFS_TREE_BLOCK_REF_KEY: { /* NORMAL INDIRECT METADATA backref */ struct btrfs_delayed_tree_ref *ref; + struct btrfs_key *key_ptr = NULL; + + if (head->extent_op && head->extent_op->update_key) { + btrfs_disk_key_to_cpu(&key, &head->extent_op->key); + key_ptr = &key; + } ref = btrfs_delayed_node_to_tree_ref(node); ret = add_indirect_ref(fs_info, preftrees, ref->root, - &tmp_op_key, ref->level + 1, + key_ptr, ref->level + 1, node->bytenr, count, sc, GFP_ATOMIC); break; @@ -825,13 +843,22 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info, key.offset = ref->offset; /* - * Found a inum that doesn't match our known inum, we - * know it's shared. + * If we have a share check context and a reference for + * another inode, we can't exit immediately. This is + * because even if this is a BTRFS_ADD_DELAYED_REF + * reference we may find next a BTRFS_DROP_DELAYED_REF + * which cancels out this ADD reference. + * + * If this is a DROP reference and there was no previous + * ADD reference, then we need to signal that when we + * process references from the extent tree (through + * add_inline_refs() and add_keyed_refs()), we should + * not exit early if we find a reference for another + * inode, because one of the delayed DROP references + * may cancel that reference in the extent tree. */ - if (sc && sc->inum && ref->objectid != sc->inum) { - ret = BACKREF_FOUND_SHARED; - goto out; - } + if (sc && count < 0) + sc->have_delayed_delete_refs = true; ret = add_indirect_ref(fs_info, preftrees, ref->root, &key, 0, node->bytenr, count, sc, @@ -861,7 +888,7 @@ static int add_delayed_refs(const struct btrfs_fs_info *fs_info, } if (!ret) ret = extent_is_shared(sc); -out: + spin_unlock(&head->lock); return ret; } @@ -965,7 +992,8 @@ static int add_inline_refs(const struct btrfs_fs_info *fs_info, key.type = BTRFS_EXTENT_DATA_KEY; key.offset = btrfs_extent_data_ref_offset(leaf, dref); - if (sc && sc->inum && key.objectid != sc->inum) { + if (sc && sc->inum && key.objectid != sc->inum && + !sc->have_delayed_delete_refs) { ret = BACKREF_FOUND_SHARED; break; } @@ -975,6 +1003,7 @@ static int add_inline_refs(const struct btrfs_fs_info *fs_info, ret = add_indirect_ref(fs_info, preftrees, root, &key, 0, bytenr, count, sc, GFP_NOFS); + break; } default: @@ -1064,7 +1093,8 @@ static int add_keyed_refs(struct btrfs_fs_info *fs_info, key.type = BTRFS_EXTENT_DATA_KEY; key.offset = btrfs_extent_data_ref_offset(leaf, dref); - if (sc && sc->inum && key.objectid != sc->inum) { + if (sc && sc->inum && key.objectid != sc->inum && + !sc->have_delayed_delete_refs) { ret = BACKREF_FOUND_SHARED; break; } @@ -1346,24 +1376,6 @@ out: return ret; } -static void free_leaf_list(struct ulist *blocks) -{ - struct ulist_node *node = NULL; - struct extent_inode_elem *eie; - struct ulist_iterator uiter; - - ULIST_ITER_INIT(&uiter); - while ((node = ulist_next(blocks, &uiter))) { - if (!node->aux) - continue; - eie = unode_aux_to_inode_list(node); - free_inode_elem_list(eie); - node->aux = 0; - } - - ulist_free(blocks); -} - /* * Finds all leafs with a reference to the specified combination of bytenr and * offset. key_list_head will point to a list of corresponding keys (caller must @@ -1490,6 +1502,7 @@ int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr) .root_objectid = root->objectid, .inum = inum, .share_count = 0, + .have_delayed_delete_refs = false, }; tmp = ulist_alloc(GFP_NOFS); @@ -1528,6 +1541,7 @@ int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr) break; bytenr = node->val; shared.share_count = 0; + shared.have_delayed_delete_refs = false; cond_resched(); } diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c index 665ec85cb09b..ecc33e3a3c06 100644 --- a/fs/btrfs/export.c +++ b/fs/btrfs/export.c @@ -58,7 +58,7 @@ static int btrfs_encode_fh(struct inode *inode, u32 *fh, int *max_len, } struct dentry *btrfs_get_dentry(struct super_block *sb, u64 objectid, - u64 root_objectid, u32 generation, + u64 root_objectid, u64 generation, int check_generation) { struct btrfs_fs_info *fs_info = btrfs_sb(sb); diff --git a/fs/btrfs/export.h b/fs/btrfs/export.h index f32f4113c976..5afb7ca42828 100644 --- a/fs/btrfs/export.h +++ b/fs/btrfs/export.h @@ -19,7 +19,7 @@ struct btrfs_fid { } __attribute__ ((packed)); struct dentry *btrfs_get_dentry(struct super_block *sb, u64 objectid, - u64 root_objectid, u32 generation, + u64 root_objectid, u64 generation, int check_generation); struct dentry *btrfs_get_parent(struct dentry *child); diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 717385b7f66f..752b5d265284 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -2759,6 +2759,8 @@ static int btrfs_ioctl_get_subvol_info(struct file *file, void __user *argp) } } + btrfs_free_path(path); + path = NULL; if (copy_to_user(argp, subvol_info, sizeof(*subvol_info))) ret = -EFAULT; @@ -2849,6 +2851,8 @@ static int btrfs_ioctl_get_subvol_rootref(struct file *file, void __user *argp) } out: + btrfs_free_path(path); + if (!ret || ret == -EOVERFLOW) { rootrefs->num_items = found; /* update min_treeid for next search */ @@ -2860,7 +2864,6 @@ out: } kfree(rootrefs); - btrfs_free_path(path); return ret; } @@ -4886,6 +4889,8 @@ static long btrfs_ioctl_ino_to_path(struct btrfs_root *root, void __user *arg) ipath->fspath->val[i] = rel_ptr; } + btrfs_free_path(path); + path = NULL; ret = copy_to_user((void __user *)(unsigned long)ipa->fspath, ipath->fspath, size); if (ret) { @@ -4956,21 +4961,20 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info, size = min_t(u32, loi->size, SZ_16M); } - path = btrfs_alloc_path(); - if (!path) { - ret = -ENOMEM; - goto out; - } - inodes = init_data_container(size); if (IS_ERR(inodes)) { ret = PTR_ERR(inodes); - inodes = NULL; - goto out; + goto out_loi; } + path = btrfs_alloc_path(); + if (!path) { + ret = -ENOMEM; + goto out; + } ret = iterate_inodes_from_logical(loi->logical, fs_info, path, build_ino_list, inodes, ignore_offset); + btrfs_free_path(path); if (ret == -EINVAL) ret = -ENOENT; if (ret < 0) @@ -4982,7 +4986,6 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info, ret = -EFAULT; out: - btrfs_free_path(path); kvfree(inodes); out_loi: kfree(loi); diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 7bda5586e433..69b43df186a8 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -1035,6 +1035,21 @@ out_add_root: fs_info->qgroup_rescan_running = true; btrfs_queue_work(fs_info->qgroup_rescan_workers, &fs_info->qgroup_rescan_work); + } else { + /* + * We have set both BTRFS_FS_QUOTA_ENABLED and + * BTRFS_QGROUP_STATUS_FLAG_ON, so we can only fail with + * -EINPROGRESS. That can happen because someone started the + * rescan worker by calling quota rescan ioctl before we + * attempted to initialize the rescan worker. Failure due to + * quotas disabled in the meanwhile is not possible, because + * we are holding a write lock on fs_info->subvol_sem, which + * is also acquired when disabling quotas. + * Ignore such error, and any other error would need to undo + * everything we did in the transaction we just committed. + */ + ASSERT(ret == -EINPROGRESS); + ret = 0; } out_free_path: @@ -2353,14 +2368,7 @@ int btrfs_qgroup_inherit(struct btrfs_trans_handle *trans, u64 srcid, dstgroup->rsv_rfer = inherit->lim.rsv_rfer; dstgroup->rsv_excl = inherit->lim.rsv_excl; - ret = update_qgroup_limit_item(trans, dstgroup); - if (ret) { - fs_info->qgroup_flags |= BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT; - btrfs_info(fs_info, - "unable to update quota limit for %llu", - dstgroup->qgroupid); - goto unlock; - } + qgroup_dirty(fs_info, dstgroup); } if (srcid) { diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c index 82d874b10438..86c6ff2cc689 100644 --- a/fs/btrfs/tests/btrfs-tests.c +++ b/fs/btrfs/tests/btrfs-tests.c @@ -174,7 +174,7 @@ void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info) void btrfs_free_dummy_root(struct btrfs_root *root) { - if (!root) + if (IS_ERR_OR_NULL(root)) return; /* Will be freed by btrfs_free_fs_roots */ if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state))) diff --git a/fs/btrfs/tests/qgroup-tests.c b/fs/btrfs/tests/qgroup-tests.c index d07dd26194b1..9b43907324a3 100644 --- a/fs/btrfs/tests/qgroup-tests.c +++ b/fs/btrfs/tests/qgroup-tests.c @@ -230,21 +230,21 @@ static int test_no_shared_qgroup(struct btrfs_root *root, ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &old_roots, false); if (ret) { - ulist_free(old_roots); test_err("couldn't find old roots: %d", ret); return ret; } ret = insert_normal_tree_ref(root, nodesize, nodesize, 0, BTRFS_FS_TREE_OBJECTID); - if (ret) + if (ret) { + ulist_free(old_roots); return ret; + } ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &new_roots, false); if (ret) { ulist_free(old_roots); - ulist_free(new_roots); test_err("couldn't find old roots: %d", ret); return ret; } @@ -256,31 +256,33 @@ static int test_no_shared_qgroup(struct btrfs_root *root, return ret; } + /* btrfs_qgroup_account_extent() always frees the ulists passed to it. */ + old_roots = NULL; + new_roots = NULL; + if (btrfs_verify_qgroup_counts(fs_info, BTRFS_FS_TREE_OBJECTID, nodesize, nodesize)) { test_err("qgroup counts didn't match expected values"); return -EINVAL; } - old_roots = NULL; - new_roots = NULL; ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &old_roots, false); if (ret) { - ulist_free(old_roots); test_err("couldn't find old roots: %d", ret); return ret; } ret = remove_extent_item(root, nodesize, nodesize); - if (ret) + if (ret) { + ulist_free(old_roots); return -EINVAL; + } ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &new_roots, false); if (ret) { ulist_free(old_roots); - ulist_free(new_roots); test_err("couldn't find old roots: %d", ret); return ret; } @@ -331,21 +333,21 @@ static int test_multiple_refs(struct btrfs_root *root, ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &old_roots, false); if (ret) { - ulist_free(old_roots); test_err("couldn't find old roots: %d", ret); return ret; } ret = insert_normal_tree_ref(root, nodesize, nodesize, 0, BTRFS_FS_TREE_OBJECTID); - if (ret) + if (ret) { + ulist_free(old_roots); return ret; + } ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &new_roots, false); if (ret) { ulist_free(old_roots); - ulist_free(new_roots); test_err("couldn't find old roots: %d", ret); return ret; } @@ -366,21 +368,21 @@ static int test_multiple_refs(struct btrfs_root *root, ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &old_roots, false); if (ret) { - ulist_free(old_roots); test_err("couldn't find old roots: %d", ret); return ret; } ret = add_tree_ref(root, nodesize, nodesize, 0, BTRFS_FIRST_FREE_OBJECTID); - if (ret) + if (ret) { + ulist_free(old_roots); return ret; + } ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &new_roots, false); if (ret) { ulist_free(old_roots); - ulist_free(new_roots); test_err("couldn't find old roots: %d", ret); return ret; } @@ -407,21 +409,21 @@ static int test_multiple_refs(struct btrfs_root *root, ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &old_roots, false); if (ret) { - ulist_free(old_roots); test_err("couldn't find old roots: %d", ret); return ret; } ret = remove_extent_ref(root, nodesize, nodesize, 0, BTRFS_FIRST_FREE_OBJECTID); - if (ret) + if (ret) { + ulist_free(old_roots); return ret; + } ret = btrfs_find_all_roots(&trans, fs_info, nodesize, 0, &new_roots, false); if (ret) { ulist_free(old_roots); - ulist_free(new_roots); test_err("couldn't find old roots: %d", ret); return ret; } diff --git a/fs/buffer.c b/fs/buffer.c index 8d7bfb4510ec..3ee17ab3e7c9 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2358,7 +2358,7 @@ int generic_cont_expand_simple(struct inode *inode, loff_t size) { struct address_space *mapping = inode->i_mapping; struct page *page; - void *fsdata; + void *fsdata = NULL; int err; err = inode_newsize_ok(inode, size); @@ -2384,7 +2384,7 @@ static int cont_expand_zero(struct file *file, struct address_space *mapping, struct inode *inode = mapping->host; unsigned int blocksize = i_blocksize(inode); struct page *page; - void *fsdata; + void *fsdata = NULL; pgoff_t index, curidx; loff_t curpos; unsigned zerofrom, offset, len; diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 4ce2752c8b71..95d7906fb9ea 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -446,6 +446,12 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, if (dentry->d_name.len > NAME_MAX) return -ENAMETOOLONG; + /* + * Do not truncate the file, since atomic_open is called before the + * permission check. The caller will do the truncation afterward. + */ + flags &= ~O_TRUNC; + if (flags & O_CREAT) { if (ceph_quota_is_max_files_exceeded(dir)) return -EDQUOT; @@ -478,9 +484,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, req->r_parent = dir; set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags); - err = ceph_mdsc_do_request(mdsc, - (flags & (O_CREAT|O_TRUNC)) ? dir : NULL, - req); + err = ceph_mdsc_do_request(mdsc, (flags & O_CREAT) ? dir : NULL, req); err = ceph_handle_snapdir(req, dentry, err); if (err) goto out_req; diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index 5cf7b5f4db94..a5ef8275440d 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c @@ -671,14 +671,17 @@ int ceph_update_snap_trace(struct ceph_mds_client *mdsc, struct ceph_mds_snap_realm *ri; /* encoded */ __le64 *snaps; /* encoded */ __le64 *prior_parent_snaps; /* encoded */ - struct ceph_snap_realm *realm = NULL; + struct ceph_snap_realm *realm; struct ceph_snap_realm *first_realm = NULL; - int invalidate = 0; + struct ceph_snap_realm *realm_to_rebuild = NULL; + int rebuild_snapcs; int err = -ENOMEM; LIST_HEAD(dirty_realms); dout("update_snap_trace deletion=%d\n", deletion); more: + realm = NULL; + rebuild_snapcs = 0; ceph_decode_need(&p, e, sizeof(*ri), bad); ri = p; p += sizeof(*ri); @@ -702,7 +705,7 @@ more: err = adjust_snap_realm_parent(mdsc, realm, le64_to_cpu(ri->parent)); if (err < 0) goto fail; - invalidate += err; + rebuild_snapcs += err; if (le64_to_cpu(ri->seq) > realm->seq) { dout("update_snap_trace updating %llx %p %lld -> %lld\n", @@ -727,22 +730,30 @@ more: if (realm->seq > mdsc->last_snap_seq) mdsc->last_snap_seq = realm->seq; - invalidate = 1; + rebuild_snapcs = 1; } else if (!realm->cached_context) { dout("update_snap_trace %llx %p seq %lld new\n", realm->ino, realm, realm->seq); - invalidate = 1; + rebuild_snapcs = 1; } else { dout("update_snap_trace %llx %p seq %lld unchanged\n", realm->ino, realm, realm->seq); } - dout("done with %llx %p, invalidated=%d, %p %p\n", realm->ino, - realm, invalidate, p, e); + dout("done with %llx %p, rebuild_snapcs=%d, %p %p\n", realm->ino, + realm, rebuild_snapcs, p, e); + + /* + * this will always track the uppest parent realm from which + * we need to rebuild the snapshot contexts _downward_ in + * hierarchy. + */ + if (rebuild_snapcs) + realm_to_rebuild = realm; - /* invalidate when we reach the _end_ (root) of the trace */ - if (invalidate && p >= e) - rebuild_snap_realms(realm, &dirty_realms); + /* rebuild_snapcs when we reach the _end_ (root) of the trace */ + if (realm_to_rebuild && p >= e) + rebuild_snap_realms(realm_to_rebuild, &dirty_realms); if (!first_realm) first_realm = realm; diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c index 54f32f9143a9..5a7020e767e4 100644 --- a/fs/cifs/ioctl.c +++ b/fs/cifs/ioctl.c @@ -149,7 +149,7 @@ long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) rc = put_user(ExtAttrBits & FS_FL_USER_VISIBLE, (int __user *)arg); - if (rc != EOPNOTSUPP) + if (rc != -EOPNOTSUPP) break; } #endif /* CONFIG_CIFS_POSIX */ @@ -178,7 +178,7 @@ long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) * pSMBFile->fid.netfid, * extAttrBits, * &ExtAttrMask); - * if (rc != EOPNOTSUPP) + * if (rc != -EOPNOTSUPP) * break; */ diff --git a/fs/dlm/ast.c b/fs/dlm/ast.c index 47ee66d70109..0b6fc9f8e8a7 100644 --- a/fs/dlm/ast.c +++ b/fs/dlm/ast.c @@ -200,13 +200,13 @@ void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status, if (!prev_seq) { kref_get(&lkb->lkb_ref); + mutex_lock(&ls->ls_cb_mutex); if (test_bit(LSFL_CB_DELAY, &ls->ls_flags)) { - mutex_lock(&ls->ls_cb_mutex); list_add(&lkb->lkb_cb_list, &ls->ls_cb_delay); - mutex_unlock(&ls->ls_cb_mutex); } else { queue_work(ls->ls_callback_wq, &lkb->lkb_cb_work); } + mutex_unlock(&ls->ls_cb_mutex); } out: mutex_unlock(&lkb->lkb_cb_mutex); @@ -286,7 +286,9 @@ void dlm_callback_stop(struct dlm_ls *ls) void dlm_callback_suspend(struct dlm_ls *ls) { + mutex_lock(&ls->ls_cb_mutex); set_bit(LSFL_CB_DELAY, &ls->ls_flags); + mutex_unlock(&ls->ls_cb_mutex); if (ls->ls_callback_wq) flush_workqueue(ls->ls_callback_wq); diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c index 35bfb681bf13..d4e204473e76 100644 --- a/fs/dlm/lock.c +++ b/fs/dlm/lock.c @@ -2890,24 +2890,24 @@ static int set_unlock_args(uint32_t flags, void *astarg, struct dlm_args *args) static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb, struct dlm_args *args) { - int rv = -EINVAL; + int rv = -EBUSY; if (args->flags & DLM_LKF_CONVERT) { - if (lkb->lkb_flags & DLM_IFL_MSTCPY) + if (lkb->lkb_status != DLM_LKSTS_GRANTED) goto out; - if (args->flags & DLM_LKF_QUECVT && - !__quecvt_compat_matrix[lkb->lkb_grmode+1][args->mode+1]) + if (lkb->lkb_wait_type) goto out; - rv = -EBUSY; - if (lkb->lkb_status != DLM_LKSTS_GRANTED) + if (is_overlap(lkb)) goto out; - if (lkb->lkb_wait_type) + rv = -EINVAL; + if (lkb->lkb_flags & DLM_IFL_MSTCPY) goto out; - if (is_overlap(lkb)) + if (args->flags & DLM_LKF_QUECVT && + !__quecvt_compat_matrix[lkb->lkb_grmode+1][args->mode+1]) goto out; } diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 26d562701973..625f4a37b5f9 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -505,6 +505,12 @@ loff_t ext4_llseek(struct file *file, loff_t offset, int whence) inode_unlock_shared(inode); break; } + /* + * Make sure inline data cannot be created anymore since we are going + * to allocate blocks for DIO. We know the inode does not have any + * inline data now because ext4_dio_supported() checked for that. + */ + ext4_clear_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA); if (offset < 0) return offset; diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index c1e6bafbbd56..fefecce5cddf 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1319,6 +1319,13 @@ retry_grab: page = grab_cache_page_write_begin(mapping, index, flags); if (!page) return -ENOMEM; + /* + * The same as page allocation, we prealloc buffer heads before + * starting the handle. + */ + if (!page_has_buffers(page)) + create_empty_buffers(page, inode->i_sb->s_blocksize, 0); + unlock_page(page); retry_journal: diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c index 37ce665ae1d2..4a72583c7559 100644 --- a/fs/ext4/migrate.c +++ b/fs/ext4/migrate.c @@ -443,7 +443,8 @@ int ext4_ext_migrate(struct inode *inode) * already is extent-based, error out. */ if (!ext4_has_feature_extents(inode->i_sb) || - (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) + ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS) || + ext4_has_inline_data(inode)) return -EINVAL; if (S_ISLNK(inode->i_mode) && inode->i_blocks == 0) diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index dd23c97ae951..8737d1bcdb6e 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -2092,7 +2092,7 @@ retry: goto out; } - if (ext4_blocks_count(es) == n_blocks_count) + if (ext4_blocks_count(es) == n_blocks_count && n_blocks_count_retry == 0) goto out; err = ext4_alloc_flex_bg_array(sb, n_group + 1); diff --git a/fs/ext4/super.c b/fs/ext4/super.c index efe8941723d4..d0b088c11eec 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -3230,6 +3230,7 @@ static int ext4_lazyinit_thread(void *arg) unsigned long next_wakeup, cur; BUG_ON(NULL == eli); + set_freezable(); cont_thread: while (true) { @@ -5912,7 +5913,7 @@ static int ext4_write_info(struct super_block *sb, int type) handle_t *handle; /* Data block + inode block */ - handle = ext4_journal_start(d_inode(sb->s_root), EXT4_HT_QUOTA, 2); + handle = ext4_journal_start_sb(sb, EXT4_HT_QUOTA, 2); if (IS_ERR(handle)) return PTR_ERR(handle); ret = dquot_commit_info(sb, type); diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c index 866e72b29bd5..761fd42c93f2 100644 --- a/fs/f2fs/extent_cache.c +++ b/fs/f2fs/extent_cache.c @@ -804,9 +804,8 @@ void f2fs_drop_extent_tree(struct inode *inode) if (!f2fs_may_extent_tree(inode)) return; - set_inode_flag(inode, FI_NO_EXTENT); - write_lock(&et->lock); + set_inode_flag(inode, FI_NO_EXTENT); __free_extent_tree(sbi, et); if (et->largest.len) { et->largest.len = 0; diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 17001f4e9f84..e5e7a8101aa6 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c @@ -172,7 +172,10 @@ static int gfs2_check_sb(struct gfs2_sbd *sdp, int silent) pr_warn("Invalid superblock size\n"); return -EINVAL; } - + if (sb->sb_bsize_shift != ffs(sb->sb_bsize) - 1) { + pr_warn("Invalid block size shift\n"); + return -EINVAL; + } return 0; } @@ -369,8 +372,10 @@ static int init_names(struct gfs2_sbd *sdp, int silent) if (!table[0]) table = sdp->sd_vfs->s_id; - strlcpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN); - strlcpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN); + BUILD_BUG_ON(GFS2_LOCKNAME_LEN > GFS2_FSNAME_LEN); + + strscpy(sdp->sd_proto_name, proto, GFS2_LOCKNAME_LEN); + strscpy(sdp->sd_table_name, table, GFS2_LOCKNAME_LEN); table = sdp->sd_table_name; while ((table = strchr(table, '/'))) diff --git a/fs/inode.c b/fs/inode.c index 213e68ba2b08..8e9b32293624 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -167,8 +167,6 @@ int inode_init_always(struct super_block *sb, struct inode *inode) inode->i_wb_frn_history = 0; #endif - if (security_inode_alloc(inode)) - goto out; spin_lock_init(&inode->i_lock); lockdep_set_class(&inode->i_lock, &sb->s_type->i_lock_key); @@ -196,11 +194,12 @@ int inode_init_always(struct super_block *sb, struct inode *inode) inode->i_fsnotify_mask = 0; #endif inode->i_flctx = NULL; + + if (unlikely(security_inode_alloc(inode))) + return -ENOMEM; this_cpu_inc(nr_inodes); return 0; -out: - return -ENOMEM; } EXPORT_SYMBOL(inode_init_always); diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c index 99627d3438e5..5a4e3aa8baf7 100644 --- a/fs/kernfs/dir.c +++ b/fs/kernfs/dir.c @@ -1513,8 +1513,11 @@ int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name, mutex_lock(&kernfs_mutex); kn = kernfs_find_ns(parent, name, ns); - if (kn) + if (kn) { + kernfs_get(kn); __kernfs_remove(kn); + kernfs_put(kn); + } mutex_unlock(&kernfs_mutex); diff --git a/fs/namei.c b/fs/namei.c index b8ece8e40d1a..d7f4c149bd98 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -4910,7 +4910,7 @@ int __page_symlink(struct inode *inode, const char *symname, int len, int nofs) { struct address_space *mapping = inode->i_mapping; struct page *page; - void *fsdata; + void *fsdata = NULL; int err; unsigned int flags = 0; if (nofs) diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c index c97ec2fa0bbc..50d352011ea6 100644 --- a/fs/nfs/nfs4client.c +++ b/fs/nfs/nfs4client.c @@ -340,6 +340,7 @@ int nfs40_init_client(struct nfs_client *clp) ret = nfs4_setup_slot_table(tbl, NFS4_MAX_SLOT_TABLE, "NFSv4.0 transport Slot table"); if (ret) { + nfs4_shutdown_slot_table(tbl); kfree(tbl); return ret; } diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index f9f76594b866..9a0f48f7f2b8 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -6613,6 +6613,7 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata) { struct nfs4_lockdata *data = calldata; struct nfs4_lock_state *lsp = data->lsp; + struct nfs_server *server = NFS_SERVER(d_inode(data->ctx->dentry)); dprintk("%s: begin!\n", __func__); @@ -6622,8 +6623,7 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata) data->rpc_status = task->tk_status; switch (task->tk_status) { case 0: - renew_lease(NFS_SERVER(d_inode(data->ctx->dentry)), - data->timestamp); + renew_lease(server, data->timestamp); if (data->arg.new_lock && !data->cancelled) { data->fl.fl_flags &= ~(FL_SLEEP | FL_ACCESS); if (locks_lock_inode_wait(lsp->ls_state->inode, &data->fl) < 0) @@ -6644,6 +6644,8 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata) if (!nfs4_stateid_match(&data->arg.open_stateid, &lsp->ls_state->open_stateid)) goto out_restart; + else if (nfs4_async_handle_error(task, server, lsp->ls_state, NULL) == -EAGAIN) + goto out_restart; } else if (!nfs4_stateid_match(&data->arg.lock_stateid, &lsp->ls_stateid)) goto out_restart; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 30576a10a1f4..5ab021f87ecf 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -1736,6 +1736,7 @@ static void nfs4_state_mark_reclaim_helper(struct nfs_client *clp, static void nfs4_state_start_reclaim_reboot(struct nfs_client *clp) { + set_bit(NFS4CLNT_RECLAIM_REBOOT, &clp->cl_state); /* Mark all delegations for reclaim */ nfs_delegation_mark_reclaim(clp); nfs4_state_mark_reclaim_helper(clp, nfs4_state_mark_reclaim_reboot); @@ -2589,6 +2590,7 @@ static void nfs4_state_manager(struct nfs_client *clp) if (status < 0) goto out_error; nfs4_state_end_reclaim_reboot(clp); + continue; } /* Detect expired delegations... */ diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index f67c5de1aeb8..96b79bd90631 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -3594,7 +3594,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, if (resp->xdr.buf->page_len && test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)) { WARN_ON_ONCE(1); - return nfserr_resource; + return nfserr_serverfault; } xdr_commit_encode(xdr); diff --git a/fs/nilfs2/dat.c b/fs/nilfs2/dat.c index a3523a243e11..e2a5320f2718 100644 --- a/fs/nilfs2/dat.c +++ b/fs/nilfs2/dat.c @@ -111,6 +111,13 @@ static void nilfs_dat_commit_free(struct inode *dat, kunmap_atomic(kaddr); nilfs_dat_commit_entry(dat, req); + + if (unlikely(req->pr_desc_bh == NULL || req->pr_bitmap_bh == NULL)) { + nilfs_error(dat->i_sb, + "state inconsistency probably due to duplicate use of vblocknr = %llu", + (unsigned long long)req->pr_entry_nr); + return; + } nilfs_palloc_commit_free_entry(dat, req); } diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index 35b0bfe9324f..cf01aa55dd44 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c @@ -340,6 +340,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode) struct inode *inode; struct nilfs_inode_info *ii; struct nilfs_root *root; + struct buffer_head *bh; int err = -ENOMEM; ino_t ino; @@ -355,11 +356,26 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode) ii->i_state = BIT(NILFS_I_NEW); ii->i_root = root; - err = nilfs_ifile_create_inode(root->ifile, &ino, &ii->i_bh); + err = nilfs_ifile_create_inode(root->ifile, &ino, &bh); if (unlikely(err)) goto failed_ifile_create_inode; /* reference count of i_bh inherits from nilfs_mdt_read_block() */ + if (unlikely(ino < NILFS_USER_INO)) { + nilfs_msg(sb, KERN_WARNING, + "inode bitmap is inconsistent for reserved inodes"); + do { + brelse(bh); + err = nilfs_ifile_create_inode(root->ifile, &ino, &bh); + if (unlikely(err)) + goto failed_ifile_create_inode; + } while (ino < NILFS_USER_INO); + + nilfs_msg(sb, KERN_INFO, + "repaired inode bitmap for reserved inodes"); + } + ii->i_bh = bh; + atomic64_inc(&root->inodes_count); inode_init_owner(inode, dir, mode); inode->i_ino = ino; @@ -451,6 +467,8 @@ int nilfs_read_inode_common(struct inode *inode, inode->i_atime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec); inode->i_ctime.tv_nsec = le32_to_cpu(raw_inode->i_ctime_nsec); inode->i_mtime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec); + if (nilfs_is_metadata_file_inode(inode) && !S_ISREG(inode->i_mode)) + return -EIO; /* this inode is for metadata and corrupted */ if (inode->i_nlink == 0) return -ESTALE; /* this inode is deleted */ diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index eb3ac7619088..11914b3585b3 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c @@ -322,7 +322,7 @@ void nilfs_relax_pressure_in_lock(struct super_block *sb) struct the_nilfs *nilfs = sb->s_fs_info; struct nilfs_sc_info *sci = nilfs->ns_writer; - if (!sci || !sci->sc_flush_request) + if (sb_rdonly(sb) || unlikely(!sci) || !sci->sc_flush_request) return; set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags); @@ -880,9 +880,11 @@ static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci) nilfs_mdt_mark_dirty(nilfs->ns_cpfile); nilfs_cpfile_put_checkpoint( nilfs->ns_cpfile, nilfs->ns_cno, bh_cp); - } else - WARN_ON(err == -EINVAL || err == -ENOENT); - + } else if (err == -EINVAL || err == -ENOENT) { + nilfs_error(sci->sc_super, + "checkpoint creation failed due to metadata corruption."); + err = -EIO; + } return err; } @@ -896,7 +898,11 @@ static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci) err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, 0, &raw_cp, &bh_cp); if (unlikely(err)) { - WARN_ON(err == -EINVAL || err == -ENOENT); + if (err == -EINVAL || err == -ENOENT) { + nilfs_error(sci->sc_super, + "checkpoint finalization failed due to metadata corruption."); + err = -EIO; + } goto failed_ibh; } raw_cp->cp_snapshot_list.ssl_next = 0; @@ -2237,7 +2243,7 @@ int nilfs_construct_segment(struct super_block *sb) struct nilfs_transaction_info *ti; int err; - if (!sci) + if (sb_rdonly(sb) || unlikely(!sci)) return -EROFS; /* A call inside transactions causes a deadlock. */ @@ -2276,7 +2282,7 @@ int nilfs_construct_dsync_segment(struct super_block *sb, struct inode *inode, struct nilfs_transaction_info ti; int err = 0; - if (!sci) + if (sb_rdonly(sb) || unlikely(!sci)) return -EROFS; nilfs_transaction_lock(sb, &ti, 0); @@ -2772,11 +2778,12 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root) if (nilfs->ns_writer) { /* - * This happens if the filesystem was remounted - * read/write after nilfs_error degenerated it into a - * read-only mount. + * This happens if the filesystem is made read-only by + * __nilfs_error or nilfs_remount and then remounted + * read/write. In these cases, reuse the existing + * writer. */ - nilfs_detach_log_writer(sb); + return 0; } nilfs->ns_writer = nilfs_segctor_new(sb, root); @@ -2786,10 +2793,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root) inode_attach_wb(nilfs->ns_bdev->bd_inode, NULL); err = nilfs_segctor_start_thread(nilfs->ns_writer); - if (err) { - kfree(nilfs->ns_writer); - nilfs->ns_writer = NULL; - } + if (unlikely(err)) + nilfs_detach_log_writer(sb); + return err; } diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c index bf3f8f05c89b..150845a43225 100644 --- a/fs/nilfs2/sufile.c +++ b/fs/nilfs2/sufile.c @@ -498,14 +498,22 @@ void nilfs_sufile_do_free(struct inode *sufile, __u64 segnum, int nilfs_sufile_mark_dirty(struct inode *sufile, __u64 segnum) { struct buffer_head *bh; + void *kaddr; + struct nilfs_segment_usage *su; int ret; + down_write(&NILFS_MDT(sufile)->mi_sem); ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh); if (!ret) { mark_buffer_dirty(bh); nilfs_mdt_mark_dirty(sufile); + kaddr = kmap_atomic(bh->b_page); + su = nilfs_sufile_block_get_segment_usage(sufile, segnum, bh, kaddr); + nilfs_segment_usage_set_dirty(su); + kunmap_atomic(kaddr); brelse(bh); } + up_write(&NILFS_MDT(sufile)->mi_sem); return ret; } diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c index 2a3ad1270133..5e4d7d19102c 100644 --- a/fs/nilfs2/super.c +++ b/fs/nilfs2/super.c @@ -1138,8 +1138,6 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data) if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb)) goto out; if (*flags & SB_RDONLY) { - /* Shutting down log writer */ - nilfs_detach_log_writer(sb); sb->s_flags |= SB_RDONLY; /* diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c index 931870768556..fb61c33c6004 100644 --- a/fs/nilfs2/the_nilfs.c +++ b/fs/nilfs2/the_nilfs.c @@ -695,9 +695,7 @@ int nilfs_count_free_blocks(struct the_nilfs *nilfs, sector_t *nblocks) { unsigned long ncleansegs; - down_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem); ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile); - up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem); *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment; return 0; } diff --git a/fs/ntfs/attrib.c b/fs/ntfs/attrib.c index 62b49197e5f6..0a7efbe2adb3 100644 --- a/fs/ntfs/attrib.c +++ b/fs/ntfs/attrib.c @@ -608,17 +608,37 @@ static int ntfs_attr_find(const ATTR_TYPE type, const ntfschar *name, for (;; a = (ATTR_RECORD*)((u8*)a + le32_to_cpu(a->length))) { u8 *mrec_end = (u8 *)ctx->mrec + le32_to_cpu(ctx->mrec->bytes_allocated); - u8 *name_end = (u8 *)a + le16_to_cpu(a->name_offset) + - a->name_length * sizeof(ntfschar); - if ((u8*)a < (u8*)ctx->mrec || (u8*)a > mrec_end || - name_end > mrec_end) + u8 *name_end; + + /* check whether ATTR_RECORD wrap */ + if ((u8 *)a < (u8 *)ctx->mrec) + break; + + /* check whether Attribute Record Header is within bounds */ + if ((u8 *)a > mrec_end || + (u8 *)a + sizeof(ATTR_RECORD) > mrec_end) + break; + + /* check whether ATTR_RECORD's name is within bounds */ + name_end = (u8 *)a + le16_to_cpu(a->name_offset) + + a->name_length * sizeof(ntfschar); + if (name_end > mrec_end) break; + ctx->attr = a; if (unlikely(le32_to_cpu(a->type) > le32_to_cpu(type) || a->type == AT_END)) return -ENOENT; if (unlikely(!a->length)) break; + + /* check whether ATTR_RECORD's length wrap */ + if ((u8 *)a + le32_to_cpu(a->length) < (u8 *)a) + break; + /* check whether ATTR_RECORD's length is within bounds */ + if ((u8 *)a + le32_to_cpu(a->length) > mrec_end) + break; + if (a->type != type) continue; /* diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c index 0acd1f02b146..97d34de2a8f3 100644 --- a/fs/ntfs/inode.c +++ b/fs/ntfs/inode.c @@ -1854,6 +1854,13 @@ int ntfs_read_inode_mount(struct inode *vi) goto err_out; } + /* Sanity check offset to the first attribute */ + if (le16_to_cpu(m->attrs_offset) >= le32_to_cpu(m->bytes_allocated)) { + ntfs_error(sb, "Incorrect mft offset to the first attribute %u in superblock.", + le16_to_cpu(m->attrs_offset)); + goto err_out; + } + /* Need this to sanity check attribute list references to $MFT. */ vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number); diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index b7ca84bc3df7..d437b2192522 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c @@ -245,6 +245,7 @@ static int ocfs2_mknod(struct inode *dir, handle_t *handle = NULL; struct ocfs2_super *osb; struct ocfs2_dinode *dirfe; + struct ocfs2_dinode *fe = NULL; struct buffer_head *new_fe_bh = NULL; struct inode *inode = NULL; struct ocfs2_alloc_context *inode_ac = NULL; @@ -395,6 +396,7 @@ static int ocfs2_mknod(struct inode *dir, goto leave; } + fe = (struct ocfs2_dinode *) new_fe_bh->b_data; if (S_ISDIR(mode)) { status = ocfs2_fill_new_dir(osb, handle, dir, inode, new_fe_bh, data_ac, meta_ac); @@ -460,8 +462,11 @@ static int ocfs2_mknod(struct inode *dir, leave: if (status < 0 && did_quota_inode) dquot_free_inode(inode); - if (handle) + if (handle) { + if (status < 0 && fe) + ocfs2_set_links_count(fe, 0); ocfs2_commit_trans(osb, handle); + } ocfs2_inode_unlock(dir, 1); if (did_block_signals) @@ -639,18 +644,9 @@ static int ocfs2_mknod_locked(struct ocfs2_super *osb, return status; } - status = __ocfs2_mknod_locked(dir, inode, dev, new_fe_bh, + return __ocfs2_mknod_locked(dir, inode, dev, new_fe_bh, parent_fe_bh, handle, inode_ac, fe_blkno, suballoc_loc, suballoc_bit); - if (status < 0) { - u64 bg_blkno = ocfs2_which_suballoc_group(fe_blkno, suballoc_bit); - int tmp = ocfs2_free_suballoc_bits(handle, inode_ac->ac_inode, - inode_ac->ac_bh, suballoc_bit, bg_blkno, 1); - if (tmp) - mlog_errno(tmp); - } - - return status; } static int ocfs2_mkdir(struct inode *dir, @@ -2031,8 +2027,11 @@ bail: ocfs2_clusters_to_bytes(osb->sb, 1)); if (status < 0 && did_quota_inode) dquot_free_inode(inode); - if (handle) + if (handle) { + if (status < 0 && fe) + ocfs2_set_links_count(fe, 0); ocfs2_commit_trans(osb, handle); + } ocfs2_inode_unlock(dir, 1); if (did_block_signals) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 8474d54862c7..d368196ead58 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -906,7 +906,7 @@ static int show_smaps_rollup(struct seq_file *m, void *v) last_vma_end = vma->vm_end; } - show_vma_header_prefix(m, priv->mm->mmap->vm_start, + show_vma_header_prefix(m, priv->mm->mmap ? priv->mm->mmap->vm_start : 0, last_vma_end, 0, 0, 0, 0); seq_pad(m, ' '); seq_puts(m, "[rollup]\n"); diff --git a/fs/quota/quota_tree.c b/fs/quota/quota_tree.c index 833cd3e3758b..ae2ed96d4847 100644 --- a/fs/quota/quota_tree.c +++ b/fs/quota/quota_tree.c @@ -79,6 +79,35 @@ static ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf) return ret; } +static inline int do_check_range(struct super_block *sb, const char *val_name, + uint val, uint min_val, uint max_val) +{ + if (val < min_val || val > max_val) { + quota_error(sb, "Getting %s %u out of range %u-%u", + val_name, val, min_val, max_val); + return -EUCLEAN; + } + + return 0; +} + +static int check_dquot_block_header(struct qtree_mem_dqinfo *info, + struct qt_disk_dqdbheader *dh) +{ + int err = 0; + + err = do_check_range(info->dqi_sb, "dqdh_next_free", + le32_to_cpu(dh->dqdh_next_free), 0, + info->dqi_blocks - 1); + if (err) + return err; + err = do_check_range(info->dqi_sb, "dqdh_prev_free", + le32_to_cpu(dh->dqdh_prev_free), 0, + info->dqi_blocks - 1); + + return err; +} + /* Remove empty block from list and return it */ static int get_free_dqblk(struct qtree_mem_dqinfo *info) { @@ -93,6 +122,9 @@ static int get_free_dqblk(struct qtree_mem_dqinfo *info) ret = read_blk(info, blk, buf); if (ret < 0) goto out_buf; + ret = check_dquot_block_header(info, dh); + if (ret) + goto out_buf; info->dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); } else { @@ -240,6 +272,9 @@ static uint find_free_dqentry(struct qtree_mem_dqinfo *info, *err = read_blk(info, blk, buf); if (*err < 0) goto out_buf; + *err = check_dquot_block_header(info, dh); + if (*err) + goto out_buf; } else { blk = get_free_dqblk(info); if ((int)blk < 0) { @@ -432,6 +467,9 @@ static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot, goto out_buf; } dh = (struct qt_disk_dqdbheader *)buf; + ret = check_dquot_block_header(info, dh); + if (ret) + goto out_buf; le16_add_cpu(&dh->dqdh_entries, -1); if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ ret = remove_free_dqentry(info, buf, blk); diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 1dfb9c36e6da..d13ded8e2c30 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -241,7 +241,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir, poffset - lfi); else { if (!copy_name) { - copy_name = kmalloc(UDF_NAME_LEN, + copy_name = kmalloc(UDF_NAME_LEN_CS0, GFP_NOFS); if (!copy_name) { fi = ERR_PTR(-ENOMEM); diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 222e2697c9f2..38b360d2d2f2 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -244,6 +244,7 @@ #define DATA_DATA \ *(.xiptext) \ *(DATA_MAIN) \ + *(.data..decrypted) \ *(.ref.data) \ *(.data..shared_aligned) /* percpu related */ \ MEM_KEEP(init.data*) \ @@ -847,7 +848,6 @@ #ifdef CONFIG_AMD_MEM_ENCRYPT #define PERCPU_DECRYPTED_SECTION \ . = ALIGN(PAGE_SIZE); \ - *(.data..decrypted) \ *(.data..percpu..decrypted) \ . = ALIGN(PAGE_SIZE); #else diff --git a/include/linux/ata.h b/include/linux/ata.h index 40d150ad7e07..981eb1cb7e49 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -581,6 +581,18 @@ struct ata_bmdma_prd { ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ ((id)[ATA_ID_FEATURE_SUPP] & (1 << 2))) +#define ata_id_has_devslp(id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8))) +#define ata_id_has_ncq_autosense(id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7))) +#define ata_id_has_dipm(id) \ + ((((id)[ATA_ID_SATA_CAPABILITY] != 0x0000) && \ + ((id)[ATA_ID_SATA_CAPABILITY] != 0xffff)) && \ + ((id)[ATA_ID_FEATURE_SUPP] & (1 << 3))) #define ata_id_iordy_disable(id) ((id)[ATA_ID_CAPABILITY] & (1 << 10)) #define ata_id_has_iordy(id) ((id)[ATA_ID_CAPABILITY] & (1 << 11)) #define ata_id_u32(id,n) \ @@ -593,9 +605,6 @@ struct ata_bmdma_prd { #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) #define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4)) -#define ata_id_has_devslp(id) ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)) -#define ata_id_has_ncq_autosense(id) \ - ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7)) static inline bool ata_id_has_hipm(const u16 *id) { @@ -607,17 +616,6 @@ static inline bool ata_id_has_hipm(const u16 *id) return val & (1 << 9); } -static inline bool ata_id_has_dipm(const u16 *id) -{ - u16 val = id[ATA_ID_FEATURE_SUPP]; - - if (val == 0 || val == 0xffff) - return false; - - return val & (1 << 3); -} - - static inline bool ata_id_has_fua(const u16 *id) { if ((id[ATA_ID_CFSSE] & 0xC000) != 0x4000) @@ -786,16 +784,21 @@ static inline bool ata_id_has_read_log_dma_ext(const u16 *id) static inline bool ata_id_has_sense_reporting(const u16 *id) { - if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) + if (!(id[ATA_ID_CFS_ENABLE_2] & BIT(15))) + return false; + if ((id[ATA_ID_COMMAND_SET_3] & (BIT(15) | BIT(14))) != BIT(14)) return false; - return id[ATA_ID_COMMAND_SET_3] & (1 << 6); + return id[ATA_ID_COMMAND_SET_3] & BIT(6); } static inline bool ata_id_sense_reporting_enabled(const u16 *id) { - if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) + if (!ata_id_has_sense_reporting(id)) + return false; + /* ata_id_has_sense_reporting() == true, word 86 must have bit 15 set */ + if ((id[ATA_ID_COMMAND_SET_4] & (BIT(15) | BIT(14))) != BIT(14)) return false; - return id[ATA_ID_COMMAND_SET_4] & (1 << 6); + return id[ATA_ID_COMMAND_SET_4] & BIT(6); } /** diff --git a/include/linux/bits.h b/include/linux/bits.h index 3cfc1bb7b99a..6a6c603b7eac 100644 --- a/include/linux/bits.h +++ b/include/linux/bits.h @@ -3,13 +3,23 @@ #define __LINUX_BITS_H #include <linux/const.h> +#ifdef __GENKSYMS__ #include <vdso/bits.h> -#include <asm/bitsperlong.h> - +/* + * Old version of this macro to preserve the CRC signatures of some drm symbols. + * Crazy but true... + */ #define BIT_ULL(nr) (1ULL << (nr)) #define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) +#else +#include <asm/bitsperlong.h> + +#define BIT(nr) (UL(1) << (nr)) +#define BIT_ULL(nr) (ULL(1) << (nr)) +#define BIT_MASK(nr) (UL(1) << ((nr) % BITS_PER_LONG)) +#endif #define BIT_WORD(nr) ((nr) / BITS_PER_LONG) -#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG)) +#define BIT_ULL_MASK(nr) (ULL(1) << ((nr) % BITS_PER_LONG_LONG)) #define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG) #define BITS_PER_BYTE 8 @@ -19,10 +29,11 @@ * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. */ #define GENMASK(h, l) \ - (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) + (((~UL(0)) - (UL(1) << (l)) + 1) & \ + (~UL(0) >> (BITS_PER_LONG - 1 - (h)))) #define GENMASK_ULL(h, l) \ - (((~0ULL) - (1ULL << (l)) + 1) & \ - (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) + (((~ULL(0)) - (ULL(1) << (l)) + 1) & \ + (~ULL(0) >> (BITS_PER_LONG_LONG - 1 - (h)))) #endif /* __LINUX_BITS_H */ diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 2885dce1ad49..f78b726f1a72 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -188,7 +188,13 @@ enum { BLK_MQ_F_TAG_SHARED = 1 << 1, BLK_MQ_F_SG_MERGE = 1 << 2, BLK_MQ_F_BLOCKING = 1 << 5, + /* Do not allow an I/O scheduler to be configured. */ BLK_MQ_F_NO_SCHED = 1 << 6, + /* + * Select 'none' during queue registration in case of a single hwq + * or shared hwqs instead of 'mq-deadline'. + */ + BLK_MQ_F_NO_SCHED_BY_DEFAULT = 1 << 7, BLK_MQ_F_ALLOC_POLICY_START_BIT = 8, BLK_MQ_F_ALLOC_POLICY_BITS = 1, diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 0d9f2148cb3e..1323a551861e 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -69,6 +69,7 @@ struct css_task_iter { struct list_head iters_node; /* css_set->task_iters */ }; +extern struct file_system_type cgroup_fs_type; extern struct cgroup_root cgrp_dfl_root; extern struct css_set init_css_set; diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 4fd3c885dd05..9dc44bdeebca 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -68,6 +68,8 @@ extern ssize_t cpu_show_srbds(struct device *dev, struct device_attribute *attr, extern ssize_t cpu_show_mmio_stale_data(struct device *dev, struct device_attribute *attr, char *buf); +extern ssize_t cpu_show_retbleed(struct device *dev, + struct device_attribute *attr, char *buf); extern __printf(4, 5) struct device *cpu_device_create(struct device *parent, void *drvdata, diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index b3419da1a776..77a16b2eb42f 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -168,7 +168,7 @@ static inline int ddebug_remove_module(const char *mod) static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *modname) { - if (strstr(param, "dyndbg")) { + if (!strcmp(param, "dyndbg")) { /* avoid pr_warn(), which wants pr_fmt() fully defined */ printk(KERN_WARNING "dyndbg param is supported only in " "CONFIG_DYNAMIC_DEBUG builds\n"); diff --git a/include/linux/efi.h b/include/linux/efi.h index ec89e8bcc92f..789a194e18a4 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -1655,7 +1655,7 @@ efi_status_t efi_exit_boot_services(efi_system_table_t *sys_table, void *priv, efi_exit_boot_map_processing priv_func); -#define EFI_RANDOM_SEED_SIZE 64U +#define EFI_RANDOM_SEED_SIZE 32U // BLAKE2S_HASH_SIZE struct linux_efi_random_seed { u32 size; diff --git a/include/linux/iova.h b/include/linux/iova.h index 5c105c9f416e..ffd98376103b 100644 --- a/include/linux/iova.h +++ b/include/linux/iova.h @@ -135,7 +135,7 @@ static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova) return iova >> iova_shift(iovad); } -#if IS_ENABLED(CONFIG_IOMMU_IOVA) +#if IS_REACHABLE(CONFIG_IOMMU_IOVA) int iova_cache_get(void); void iova_cache_put(void); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 4f96aef4e8b8..f67ab4e9b665 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -928,7 +928,7 @@ static inline void kvm_arch_end_assignment(struct kvm *kvm) { } -static inline bool kvm_arch_has_assigned_device(struct kvm *kvm) +static __always_inline bool kvm_arch_has_assigned_device(struct kvm *kvm) { return false; } diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h index 5d0767cb424a..4ed52879ce55 100644 --- a/include/linux/mmdebug.h +++ b/include/linux/mmdebug.h @@ -38,7 +38,7 @@ void dump_mm(const struct mm_struct *mm); } \ } while (0) #define VM_WARN_ON_ONCE_PAGE(cond, page) ({ \ - static bool __section(".data.once") __warned; \ + static bool __section(.data.once) __warned; \ int __ret_warn_once = !!(cond); \ \ if (unlikely(__ret_warn_once && !__warned)) { \ diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index bee6b7183ddc..c05f6d4b2e09 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -660,9 +660,7 @@ struct x86_cpu_id { __u16 steppings; }; -#define X86_FEATURE_MATCH(x) \ - { X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY, x } - +/* Wild cards for x86_cpu_id::vendor, family, model and feature */ #define X86_VENDOR_ANY 0xffff #define X86_FAMILY_ANY 0 #define X86_MODEL_ANY 0 diff --git a/include/linux/once.h b/include/linux/once.h index ae6f4eb41cbe..3a6671d961b9 100644 --- a/include/linux/once.h +++ b/include/linux/once.h @@ -5,10 +5,18 @@ #include <linux/types.h> #include <linux/jump_label.h> +/* Helpers used from arbitrary contexts. + * Hard irqs are blocked, be cautious. + */ bool __do_once_start(bool *done, unsigned long *flags); void __do_once_done(bool *done, struct static_key_true *once_key, unsigned long *flags, struct module *mod); +/* Variant for process contexts only. */ +bool __do_once_slow_start(bool *done); +void __do_once_slow_done(bool *done, struct static_key_true *once_key, + struct module *mod); + /* Call a function exactly once. The idea of DO_ONCE() is to perform * a function call such as initialization of random seeds, etc, only * once, where DO_ONCE() can live in the fast-path. After @func has @@ -52,9 +60,29 @@ void __do_once_done(bool *done, struct static_key_true *once_key, ___ret; \ }) +/* Variant of DO_ONCE() for process/sleepable contexts. */ +#define DO_ONCE_SLOW(func, ...) \ + ({ \ + bool ___ret = false; \ + static bool __section(.data.once) ___done = false; \ + static DEFINE_STATIC_KEY_TRUE(___once_key); \ + if (static_branch_unlikely(&___once_key)) { \ + ___ret = __do_once_slow_start(&___done); \ + if (unlikely(___ret)) { \ + func(__VA_ARGS__); \ + __do_once_slow_done(&___done, &___once_key, \ + THIS_MODULE); \ + } \ + } \ + ___ret; \ + }) + #define get_random_once(buf, nbytes) \ DO_ONCE(get_random_bytes, (buf), (nbytes)) #define get_random_once_wait(buf, nbytes) \ DO_ONCE(get_random_bytes_wait, (buf), (nbytes)) \ +#define get_random_slow_once(buf, nbytes) \ + DO_ONCE_SLOW(get_random_bytes, (buf), (nbytes)) + #endif /* _LINUX_ONCE_H */ diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 4216a7391d2f..9a843fe1e4db 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -264,7 +264,7 @@ struct tcp_sock { u32 packets_out; /* Packets which are "in flight" */ u32 retrans_out; /* Retransmitted packets out */ u32 max_packets_out; /* max packets_out in last window */ - u32 max_packets_seq; /* right edge of max_packets_out flight */ + u32 cwnd_usage_seq; /* right edge of cwnd usage tracking flight */ u16 urg_data; /* Saved octet of OOB data and control flags */ u8 ecn_flags; /* ECN status bits. */ diff --git a/include/net/ieee802154_netdev.h b/include/net/ieee802154_netdev.h index c4b31601cd53..588c86f67796 100644 --- a/include/net/ieee802154_netdev.h +++ b/include/net/ieee802154_netdev.h @@ -23,6 +23,22 @@ #ifndef IEEE802154_NETDEVICE_H #define IEEE802154_NETDEVICE_H +#define IEEE802154_REQUIRED_SIZE(struct_type, member) \ + (offsetof(typeof(struct_type), member) + \ + sizeof(((typeof(struct_type) *)(NULL))->member)) + +#define IEEE802154_ADDR_OFFSET \ + offsetof(typeof(struct sockaddr_ieee802154), addr) + +#define IEEE802154_MIN_NAMELEN (IEEE802154_ADDR_OFFSET + \ + IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, addr_type)) + +#define IEEE802154_NAMELEN_SHORT (IEEE802154_ADDR_OFFSET + \ + IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, short_addr)) + +#define IEEE802154_NAMELEN_LONG (IEEE802154_ADDR_OFFSET + \ + IEEE802154_REQUIRED_SIZE(struct ieee802154_addr_sa, hwaddr)) + #include <net/af_ieee802154.h> #include <linux/netdevice.h> #include <linux/skbuff.h> @@ -173,6 +189,33 @@ static inline void ieee802154_devaddr_to_raw(void *raw, __le64 addr) memcpy(raw, &temp, IEEE802154_ADDR_LEN); } +static inline int +ieee802154_sockaddr_check_size(struct sockaddr_ieee802154 *daddr, int len) +{ + struct ieee802154_addr_sa *sa; + int ret = 0; + + sa = &daddr->addr; + if (len < IEEE802154_MIN_NAMELEN) + return -EINVAL; + switch (sa->addr_type) { + case IEEE802154_ADDR_NONE: + break; + case IEEE802154_ADDR_SHORT: + if (len < IEEE802154_NAMELEN_SHORT) + ret = -EINVAL; + break; + case IEEE802154_ADDR_LONG: + if (len < IEEE802154_NAMELEN_LONG) + ret = -EINVAL; + break; + default: + ret = -EINVAL; + break; + } + return ret; +} + static inline void ieee802154_addr_from_sa(struct ieee802154_addr *a, const struct ieee802154_addr_sa *sa) { diff --git a/include/net/sock.h b/include/net/sock.h index 26824005da21..3847fe792e69 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -402,7 +402,7 @@ struct sock { #ifdef CONFIG_XFRM struct xfrm_policy __rcu *sk_policy[2]; #endif - struct dst_entry *sk_rx_dst; + struct dst_entry __rcu *sk_rx_dst; struct dst_entry __rcu *sk_dst_cache; atomic_t sk_omem_alloc; int sk_sndbuf; diff --git a/include/net/tcp.h b/include/net/tcp.h index 0e81733aa074..c228edf3ea21 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -1247,11 +1247,14 @@ static inline bool tcp_is_cwnd_limited(const struct sock *sk) { const struct tcp_sock *tp = tcp_sk(sk); + if (tp->is_cwnd_limited) + return true; + /* If in slow start, ensure cwnd grows to twice what was ACKed. */ if (tcp_in_slow_start(tp)) return tp->snd_cwnd < 2 * tp->max_packets_out; - return tp->is_cwnd_limited; + return false; } /* BBR congestion control needs pacing. diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 77685e931c59..f91bc3db9f84 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h @@ -233,7 +233,7 @@ static inline struct scsi_data_buffer *scsi_out(struct scsi_cmnd *cmd) } static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd, - void *buf, int buflen) + const void *buf, int buflen) { return sg_copy_from_buffer(scsi_sglist(cmd), scsi_sg_count(cmd), buf, buflen); diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h index 818ae690ab79..b163911b1d39 100644 --- a/include/uapi/linux/audit.h +++ b/include/uapi/linux/audit.h @@ -177,7 +177,7 @@ #define AUDIT_MAX_KEY_LEN 256 #define AUDIT_BITMASK_SIZE 64 #define AUDIT_WORD(nr) ((__u32)((nr)/32)) -#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32)) +#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr)*32)) #define AUDIT_SYSCALL_CLASSES 16 #define AUDIT_CLASS_DIR_WRITE 0 diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h index 240fdb9a60f6..6e0d68e841cd 100644 --- a/include/uapi/linux/capability.h +++ b/include/uapi/linux/capability.h @@ -376,7 +376,7 @@ struct vfs_ns_cap_data { */ #define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */ -#define CAP_TO_MASK(x) (1 << ((x) & 31)) /* mask for indexed __u32 */ +#define CAP_TO_MASK(x) (1U << ((x) & 31)) /* mask for indexed __u32 */ #endif /* _UAPI_LINUX_CAPABILITY_H */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index b8b0d7a12fd8..f4c69b266b5a 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -1544,7 +1544,8 @@ struct v4l2_bt_timings { ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ - (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) + ((bt)->interlaced ? \ + ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0)) #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h index 96442d540116..eff43aeaea1a 100644 --- a/include/vdso/datapage.h +++ b/include/vdso/datapage.h @@ -10,7 +10,6 @@ #include <uapi/linux/types.h> #include <uapi/asm-generic/errno-base.h> -#include <vdso/bits.h> #include <vdso/clocksource.h> #include <vdso/ktime.h> #include <vdso/limits.h> @@ -20,14 +19,16 @@ #include <vdso/time32.h> #include <vdso/time64.h> +#define BIT_VDSO(nr) (1UL << (nr)) + #define VDSO_BASES (CLOCK_TAI + 1) -#define VDSO_HRES (BIT(CLOCK_REALTIME) | \ - BIT(CLOCK_MONOTONIC) | \ - BIT(CLOCK_BOOTTIME) | \ - BIT(CLOCK_TAI)) -#define VDSO_COARSE (BIT(CLOCK_REALTIME_COARSE) | \ - BIT(CLOCK_MONOTONIC_COARSE)) -#define VDSO_RAW (BIT(CLOCK_MONOTONIC_RAW)) +#define VDSO_HRES (BIT_VDSO(CLOCK_REALTIME) | \ + BIT_VDSO(CLOCK_MONOTONIC) | \ + BIT_VDSO(CLOCK_BOOTTIME) | \ + BIT_VDSO(CLOCK_TAI)) +#define VDSO_COARSE (BIT_VDSO(CLOCK_REALTIME_COARSE) | \ + BIT_VDSO(CLOCK_MONOTONIC_COARSE)) +#define VDSO_RAW (BIT_VDSO(CLOCK_MONOTONIC_RAW)) #define CS_HRES_COARSE 0 #define CS_RAW 1 diff --git a/ipc/sem.c b/ipc/sem.c index 2bf535dd0b93..cc6af85d1b15 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -2148,6 +2148,7 @@ static long do_semtimedop(int semid, struct sembuf __user *tsops, * scenarios where we were awakened externally, during the * window between wake_q_add() and wake_up_q(). */ + rcu_read_lock(); error = READ_ONCE(queue.status); if (error != -EINTR) { /* @@ -2157,10 +2158,10 @@ static long do_semtimedop(int semid, struct sembuf __user *tsops, * overwritten by the previous owner of the semaphore. */ smp_mb(); + rcu_read_unlock(); goto out_free; } - rcu_read_lock(); locknum = sem_lock(sma, sops, nsops); if (!ipc_valid_object(&sma->sem_perm)) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 471cc5c117a5..62e05b6283c0 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -1660,7 +1660,7 @@ static int btf_struct_resolve(struct btf_verifier_env *env, if (v->next_member) { const struct btf_type *last_member_type; const struct btf_member *last_member; - u16 last_member_type_id; + u32 last_member_type_id; last_member = btf_type_member(v->t) + v->next_member - 1; last_member_type_id = last_member->type; diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index e940c1f65938..02e5bdb82a9a 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2325,7 +2325,9 @@ static int bpf_task_fd_query(const union bpf_attr *attr, if (attr->task_fd_query.flags != 0) return -EINVAL; + rcu_read_lock(); task = get_pid_task(find_vpid(pid), PIDTYPE_PID); + rcu_read_unlock(); if (!task) return -ENOENT; diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h index 33258e9a62a5..ace4026fce84 100644 --- a/kernel/cgroup/cgroup-internal.h +++ b/kernel/cgroup/cgroup-internal.h @@ -148,7 +148,6 @@ extern struct mutex cgroup_mutex; extern spinlock_t css_set_lock; extern struct cgroup_subsys *cgroup_subsys[]; extern struct list_head cgroup_roots; -extern struct file_system_type cgroup_fs_type; /* iterate across the hierarchies */ #define for_each_root(root) \ diff --git a/kernel/cpu.c b/kernel/cpu.c index c13f079484fe..494307f87d3b 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1469,7 +1469,9 @@ int __boot_cpu_id; /* Horrific hacks because we can't add more to cpuhp_hp_states. */ static int random_and_perf_prepare_fusion(unsigned int cpu) { +#ifdef CONFIG_PERF_EVENTS perf_event_init_cpu(cpu); +#endif random_prepare_cpu(cpu); return 0; } diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c index 60c7be5ff5c8..bd5e918c8570 100644 --- a/kernel/gcov/gcc_4_7.c +++ b/kernel/gcov/gcc_4_7.c @@ -33,6 +33,13 @@ #define GCOV_TAG_FUNCTION_LENGTH 3 +/* Since GCC 12.1 sizes are in BYTES and not in WORDS (4B). */ +#if (__GNUC__ >= 12) +#define GCOV_UNIT_SIZE 4 +#else +#define GCOV_UNIT_SIZE 1 +#endif + static struct gcov_info *gcov_info_head; /** @@ -451,12 +458,18 @@ static size_t convert_to_gcda(char *buffer, struct gcov_info *info) pos += store_gcov_u32(buffer, pos, info->version); pos += store_gcov_u32(buffer, pos, info->stamp); +#if (__GNUC__ >= 12) + /* Use zero as checksum of the compilation unit. */ + pos += store_gcov_u32(buffer, pos, 0); +#endif + for (fi_idx = 0; fi_idx < info->n_functions; fi_idx++) { fi_ptr = info->functions[fi_idx]; /* Function record. */ pos += store_gcov_u32(buffer, pos, GCOV_TAG_FUNCTION); - pos += store_gcov_u32(buffer, pos, GCOV_TAG_FUNCTION_LENGTH); + pos += store_gcov_u32(buffer, pos, + GCOV_TAG_FUNCTION_LENGTH * GCOV_UNIT_SIZE); pos += store_gcov_u32(buffer, pos, fi_ptr->ident); pos += store_gcov_u32(buffer, pos, fi_ptr->lineno_checksum); pos += store_gcov_u32(buffer, pos, fi_ptr->cfg_checksum); @@ -470,7 +483,8 @@ static size_t convert_to_gcda(char *buffer, struct gcov_info *info) /* Counter record. */ pos += store_gcov_u32(buffer, pos, GCOV_TAG_FOR_COUNTER(ct_idx)); - pos += store_gcov_u32(buffer, pos, ci_ptr->num * 2); + pos += store_gcov_u32(buffer, pos, + ci_ptr->num * 2 * GCOV_UNIT_SIZE); for (cv_idx = 0; cv_idx < ci_ptr->num; cv_idx++) { pos += store_gcov_u64(buffer, pos, diff --git a/kernel/kprobes.c b/kernel/kprobes.c index b2f01e61f0ee..33aba4e2e3e3 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -2172,8 +2172,11 @@ int enable_kprobe(struct kprobe *kp) if (!kprobes_all_disarmed && kprobe_disabled(p)) { p->flags &= ~KPROBE_FLAG_DISABLED; ret = arm_kprobe(p); - if (ret) + if (ret) { p->flags |= KPROBE_FLAG_DISABLED; + if (p != kp) + kp->flags |= KPROBE_FLAG_DISABLED; + } } out: mutex_unlock(&kprobe_mutex); diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 5bc349805e03..20277ad6b7d2 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -563,9 +563,23 @@ void klp_reverse_transition(void) /* Called from copy_process() during fork */ void klp_copy_process(struct task_struct *child) { - child->patch_state = current->patch_state; - /* TIF_PATCH_PENDING gets copied in setup_thread_stack() */ + /* + * The parent process may have gone through a KLP transition since + * the thread flag was copied in setup_thread_stack earlier. Bring + * the task flag up to date with the parent here. + * + * The operation is serialized against all klp_*_transition() + * operations by the tasklist_lock. The only exception is + * klp_update_patch_state(current), but we cannot race with + * that because we are current. + */ + if (test_tsk_thread_flag(current, TIF_PATCH_PENDING)) + set_tsk_thread_flag(child, TIF_PATCH_PENDING); + else + clear_tsk_thread_flag(child, TIF_PATCH_PENDING); + + child->patch_state = current->patch_state; } /* diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 6abdfdf571ee..6737ae6ffbae 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -626,7 +626,7 @@ static void power_down(void) int error; if (hibernation_mode == HIBERNATION_SUSPEND) { - error = suspend_devices_and_enter(PM_SUSPEND_MEM); + error = suspend_devices_and_enter(mem_sleep_current); if (error) { hibernation_mode = hibernation_ops ? HIBERNATION_PLATFORM : diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 7053507e3c72..b7b41d07b277 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -2463,13 +2463,14 @@ int proc_dostring(struct ctl_table *table, int write, (char __user *)buffer, lenp, ppos); } -static size_t proc_skip_spaces(char **buf) +static void proc_skip_spaces(char **buf, size_t *size) { - size_t ret; - char *tmp = skip_spaces(*buf); - ret = tmp - *buf; - *buf = tmp; - return ret; + while (*size) { + if (!isspace(**buf)) + break; + (*size)--; + (*buf)++; + } } static void proc_skip_char(char **buf, size_t *size, const char v) @@ -2538,13 +2539,12 @@ static int proc_get_long(char **buf, size_t *size, unsigned long *val, bool *neg, const char *perm_tr, unsigned perm_tr_len, char *tr) { - int len; char *p, tmp[TMPBUFLEN]; + ssize_t len = *size; - if (!*size) + if (len <= 0) return -EINVAL; - len = *size; if (len > TMPBUFLEN - 1) len = TMPBUFLEN - 1; @@ -2707,7 +2707,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, bool neg; if (write) { - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (!left) break; @@ -2738,7 +2738,7 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, if (!write && !first && left && !err) err = proc_put_char(&buffer, &left, '\n'); if (write && !err && left) - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (write) { kfree(kbuf); if (first) @@ -2787,7 +2787,7 @@ static int do_proc_douintvec_w(unsigned int *tbl_data, if (IS_ERR(kbuf)) return -EINVAL; - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (!left) { err = -EINVAL; goto out_free; @@ -2807,7 +2807,7 @@ static int do_proc_douintvec_w(unsigned int *tbl_data, } if (!err && left) - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); out_free: kfree(kbuf); @@ -3241,7 +3241,7 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int if (write) { bool neg; - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (!left) break; @@ -3274,7 +3274,7 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int if (!write && !first && left && !err) err = proc_put_char(&buffer, &left, '\n'); if (write && !err) - left -= proc_skip_spaces(&p); + proc_skip_spaces(&p, &left); if (write) { kfree(kbuf); if (first) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index cbaea3f8f90a..3f5f26173d33 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -1332,6 +1332,7 @@ static int ftrace_add_mod(struct trace_array *tr, if (!ftrace_mod) return -ENOMEM; + INIT_LIST_HEAD(&ftrace_mod->list); ftrace_mod->func = kstrdup(func, GFP_KERNEL); ftrace_mod->module = kstrdup(module, GFP_KERNEL); ftrace_mod->enable = enable; @@ -3034,7 +3035,7 @@ static int ftrace_allocate_records(struct ftrace_page *pg, int count) /* if we can't allocate this size, try something smaller */ if (!order) return -ENOMEM; - order >>= 1; + order--; goto again; } @@ -5055,8 +5056,12 @@ int ftrace_regex_release(struct inode *inode, struct file *file) if (filter_hash) { orig_hash = &iter->ops->func_hash->filter_hash; - if (iter->tr && !list_empty(&iter->tr->mod_trace)) - iter->hash->flags |= FTRACE_HASH_FL_MOD; + if (iter->tr) { + if (list_empty(&iter->tr->mod_trace)) + iter->hash->flags &= ~FTRACE_HASH_FL_MOD; + else + iter->hash->flags |= FTRACE_HASH_FL_MOD; + } } else orig_hash = &iter->ops->func_hash->notrace_hash; @@ -6226,7 +6231,7 @@ void __init ftrace_init(void) } pr_info("ftrace: allocating %ld entries in %ld pages\n", - count, count / ENTRIES_PER_PAGE + 1); + count, DIV_ROUND_UP(count, ENTRIES_PER_PAGE)); last_ftrace_enabled = ftrace_enabled = 1; diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 987d3447bf2a..5e5b0c067f61 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -542,8 +542,9 @@ static void rb_wake_up_waiters(struct irq_work *work) struct rb_irq_work *rbwork = container_of(work, struct rb_irq_work, work); wake_up_all(&rbwork->waiters); - if (rbwork->wakeup_full) { + if (rbwork->full_waiters_pending || rbwork->wakeup_full) { rbwork->wakeup_full = false; + rbwork->full_waiters_pending = false; wake_up_all(&rbwork->full_waiters); } } @@ -1327,9 +1328,9 @@ static void rb_free_cpu_buffer(struct ring_buffer_per_cpu *cpu_buffer) free_buffer_page(cpu_buffer->reader_page); - rb_head_page_deactivate(cpu_buffer); - if (head) { + rb_head_page_deactivate(cpu_buffer); + list_for_each_entry_safe(bpage, tmp, head, list) { list_del_init(&bpage->list); free_buffer_page(bpage); @@ -2156,6 +2157,9 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, /* Mark the rest of the page with padding */ rb_event_set_padding(event); + /* Make sure the padding is visible before the write update */ + smp_wmb(); + /* Set the write back to the previous setting */ local_sub(length, &tail_page->write); return; @@ -2167,6 +2171,9 @@ rb_reset_tail(struct ring_buffer_per_cpu *cpu_buffer, /* time delta must be non zero */ event->time_delta = 1; + /* Make sure the padding is visible before the tail_page->write update */ + smp_wmb(); + /* Set write to end of buffer */ length = (tail + length) - BUF_PAGE_SIZE; local_sub(length, &tail_page->write); @@ -3812,6 +3819,33 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) arch_spin_unlock(&cpu_buffer->lock); local_irq_restore(flags); + /* + * The writer has preempt disable, wait for it. But not forever + * Although, 1 second is pretty much "forever" + */ +#define USECS_WAIT 1000000 + for (nr_loops = 0; nr_loops < USECS_WAIT; nr_loops++) { + /* If the write is past the end of page, a writer is still updating it */ + if (likely(!reader || rb_page_write(reader) <= BUF_PAGE_SIZE)) + break; + + udelay(1); + + /* Get the latest version of the reader write value */ + smp_rmb(); + } + + /* The writer is not moving forward? Something is wrong */ + if (RB_WARN_ON(cpu_buffer, nr_loops == USECS_WAIT)) + reader = NULL; + + /* + * Make sure we see any padding after the write update + * (see rb_reset_tail()) + */ + smp_rmb(); + + return reader; } @@ -4770,7 +4804,15 @@ int ring_buffer_read_page(struct ring_buffer *buffer, unsigned int pos = 0; unsigned int size; - if (full) + /* + * If a full page is expected, this can still be returned + * if there's been a previous partial read and the + * rest of the page can be read and the commit page is off + * the reader page. + */ + if (full && + (!read || (len < (commit - read)) || + cpu_buffer->reader_page == cpu_buffer->commit_page)) goto out_unlock; if (len > (commit - read)) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 10b2a4f15088..b8d4a6968eec 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -261,8 +261,10 @@ config FRAME_WARN int "Warn for stack frames larger than (needs gcc 4.4)" range 0 8192 default 2048 if GCC_PLUGIN_LATENT_ENTROPY - default 1280 if (!64BIT && PARISC) - default 1024 if (!64BIT && !PARISC) + default 2048 if PARISC + default 1536 if (!64BIT && XTENSA) + default 1280 if KASAN && !64BIT + default 1024 if !64BIT default 2048 if 64BIT help Tell gcc to warn at build time for stack frames larger than this. @@ -1618,8 +1620,14 @@ config NETDEV_NOTIFIER_ERROR_INJECT If unsure, say N. config FUNCTION_ERROR_INJECTION - def_bool y + bool "Fault-injections of functions" depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES + help + Add fault injections into various functions that are annotated with + ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return + value of theses functions. This is useful to test error paths of code. + + If unsure, say N config FAULT_INJECTION bool "Fault-injection framework" diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 7366a7614898..75353bdbace0 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -327,10 +327,6 @@ static int ddebug_parse_query(char *words[], int nwords, } memset(query, 0, sizeof(*query)); - if (modname) - /* support $modname.dyndbg=<multiple queries> */ - query->module = modname; - for (i = 0; i < nwords; i += 2) { if (!strcmp(words[i], "func")) { rc = check_set(&query->function, words[i+1], "func"); @@ -379,6 +375,13 @@ static int ddebug_parse_query(char *words[], int nwords, if (rc) return rc; } + if (!query->module && modname) + /* + * support $modname.dyndbg=<multiple queries>, when + * not given in the query itself + */ + query->module = modname; + vpr_info_dq(query, "parsed"); return 0; } diff --git a/lib/once.c b/lib/once.c index 59149bf3bfb4..351f66aad310 100644 --- a/lib/once.c +++ b/lib/once.c @@ -66,3 +66,33 @@ void __do_once_done(bool *done, struct static_key_true *once_key, once_disable_jump(once_key, mod); } EXPORT_SYMBOL(__do_once_done); + +static DEFINE_MUTEX(once_mutex); + +bool __do_once_slow_start(bool *done) + __acquires(once_mutex) +{ + mutex_lock(&once_mutex); + if (*done) { + mutex_unlock(&once_mutex); + /* Keep sparse happy by restoring an even lock count on + * this mutex. In case we return here, we don't call into + * __do_once_done but return early in the DO_ONCE_SLOW() macro. + */ + __acquire(once_mutex); + return false; + } + + return true; +} +EXPORT_SYMBOL(__do_once_slow_start); + +void __do_once_slow_done(bool *done, struct static_key_true *once_key, + struct module *mod) + __releases(once_mutex) +{ + *done = true; + mutex_unlock(&once_mutex); + once_disable_jump(once_key, mod); +} +EXPORT_SYMBOL(__do_once_slow_done); diff --git a/mm/filemap.c b/mm/filemap.c index 95d2f744b04b..334e59884101 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3295,7 +3295,7 @@ ssize_t generic_perform_write(struct file *file, unsigned long offset; /* Offset into pagecache page */ unsigned long bytes; /* Bytes to write to page */ size_t copied; /* Bytes copied from user */ - void *fsdata; + void *fsdata = NULL; offset = (pos & (PAGE_SIZE - 1)); bytes = min_t(unsigned long, PAGE_SIZE - offset, diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c431ca81dad5..5779c1bc6f44 100644 --- a/mm/frame_vector.c +++ b/mm/frame_vector.c @@ -37,7 +37,6 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, struct mm_struct *mm = current->mm; struct vm_area_struct *vma; int ret = 0; - int err; int locked; if (nr_frames == 0) @@ -74,32 +73,14 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, vec->is_pfns = false; ret = get_user_pages_locked(start, nr_frames, gup_flags, (struct page **)(vec->ptrs), &locked); - goto out; + if (likely(ret > 0)) + goto out; } - vec->got_ref = false; - vec->is_pfns = true; - do { - unsigned long *nums = frame_vector_pfns(vec); - - while (ret < nr_frames && start + PAGE_SIZE <= vma->vm_end) { - err = follow_pfn(vma, start, &nums[ret]); - if (err) { - if (ret == 0) - ret = err; - goto out; - } - start += PAGE_SIZE; - ret++; - } - /* - * We stop if we have enough pages or if VMA doesn't completely - * cover the tail page. - */ - if (ret >= nr_frames || start < vma->vm_end) - break; - vma = find_vma_intersection(mm, start, start + 1); - } while (vma && vma->vm_flags & (VM_IO | VM_PFNMAP)); + /* This used to (racily) return non-refcounted pfns. Let people know */ + WARN_ONCE(1, "get_vaddr_frames() cannot follow VM_IO mapping"); + vec->nr_frames = 0; + out: if (locked) up_read(&mm->mmap_sem); diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 45e874fafdd7..47e98a5726c4 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2116,11 +2116,11 @@ struct page *alloc_huge_page(struct vm_area_struct *vma, page = alloc_buddy_huge_page_with_mpol(h, vma, addr); if (!page) goto out_uncharge_cgroup; + spin_lock(&hugetlb_lock); if (!avoid_reserve && vma_has_reserves(vma, gbl_chg)) { SetPagePrivate(page); h->resv_huge_pages--; } - spin_lock(&hugetlb_lock); list_move(&page->lru, &h->hugepage_activelist); /* Fall through */ } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f3aa6e6214d5..bc4c61dcf95c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4120,6 +4120,7 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, unsigned int efd, cfd; struct fd efile; struct fd cfile; + struct dentry *cdentry; const char *name; char *endp; int ret; @@ -4171,6 +4172,16 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, goto out_put_cfile; /* + * The control file must be a regular cgroup1 file. As a regular cgroup + * file can't be renamed, it's safe to access its name afterwards. + */ + cdentry = cfile.file->f_path.dentry; + if (cdentry->d_sb->s_type != &cgroup_fs_type || !d_is_reg(cdentry)) { + ret = -EINVAL; + goto out_put_cfile; + } + + /* * Determine the event callbacks and set them in @event. This used * to be done via struct cftype but cgroup core no longer knows * about these events. The following is crude but the whole thing @@ -4178,7 +4189,7 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, * * DO NOT ADD NEW FILES. */ - name = cfile.file->f_path.dentry->d_name.name; + name = cdentry->d_name.name; if (!strcmp(name, "memory.usage_in_bytes")) { event->register_event = mem_cgroup_usage_register_event; @@ -4202,7 +4213,7 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, * automatically removed on cgroup destruction but the removal is * asynchronous, so take an extra ref on @css. */ - cfile_css = css_tryget_online_from_dir(cfile.file->f_path.dentry->d_parent, + cfile_css = css_tryget_online_from_dir(cdentry->d_parent, &memory_cgrp_subsys); ret = -EINVAL; if (IS_ERR(cfile_css)) diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index 9268f808afc0..0ef3d2ede6e6 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -133,7 +133,7 @@ struct p9_conn { struct list_head unsent_req_list; struct p9_req_t *rreq; struct p9_req_t *wreq; - char tmp_buf[7]; + char tmp_buf[P9_HDRSZ]; struct p9_fcall rc; int wpos; int wsize; @@ -215,11 +215,15 @@ static void p9_conn_cancel(struct p9_conn *m, int err) list_for_each_entry_safe(req, rtmp, &m->req_list, req_list) { list_move(&req->req_list, &cancel_list); + req->status = REQ_STATUS_ERROR; } list_for_each_entry_safe(req, rtmp, &m->unsent_req_list, req_list) { list_move(&req->req_list, &cancel_list); + req->status = REQ_STATUS_ERROR; } + spin_unlock(&m->client->lock); + list_for_each_entry_safe(req, rtmp, &cancel_list, req_list) { p9_debug(P9_DEBUG_ERROR, "call back req %p\n", req); list_del(&req->req_list); @@ -227,7 +231,6 @@ static void p9_conn_cancel(struct p9_conn *m, int err) req->t_err = err; p9_client_cb(m->client, req, REQ_STATUS_ERROR); } - spin_unlock(&m->client->lock); } static __poll_t @@ -303,7 +306,7 @@ static void p9_read_work(struct work_struct *work) if (!m->rc.sdata) { m->rc.sdata = m->tmp_buf; m->rc.offset = 0; - m->rc.capacity = 7; /* start by reading header */ + m->rc.capacity = P9_HDRSZ; /* start by reading header */ } clear_bit(Rpending, &m->wsched); @@ -326,7 +329,7 @@ static void p9_read_work(struct work_struct *work) p9_debug(P9_DEBUG_TRANS, "got new header\n"); /* Header size */ - m->rc.size = 7; + m->rc.size = P9_HDRSZ; err = p9_parse_header(&m->rc, &m->rc.size, NULL, NULL, 0); if (err) { p9_debug(P9_DEBUG_ERROR, @@ -835,11 +838,14 @@ static int p9_fd_open(struct p9_client *client, int rfd, int wfd) goto out_free_ts; if (!(ts->rd->f_mode & FMODE_READ)) goto out_put_rd; + /* prevent workers from hanging on IO when fd is a pipe */ + ts->rd->f_flags |= O_NONBLOCK; ts->wr = fget(wfd); if (!ts->wr) goto out_put_rd; if (!(ts->wr->f_mode & FMODE_WRITE)) goto out_put_wr; + ts->wr->f_flags |= O_NONBLOCK; client->trans = ts; client->status = Connected; @@ -861,8 +867,10 @@ static int p9_socket_open(struct p9_client *client, struct socket *csocket) struct file *file; p = kzalloc(sizeof(struct p9_trans_fd), GFP_KERNEL); - if (!p) + if (!p) { + sock_release(csocket); return -ENOMEM; + } csocket->sk->sk_allocation = GFP_NOIO; file = sock_alloc_file(csocket, 0, NULL); diff --git a/net/9p/trans_xen.c b/net/9p/trans_xen.c index ac60ddfcd88b..6459c2356ff9 100644 --- a/net/9p/trans_xen.c +++ b/net/9p/trans_xen.c @@ -230,6 +230,14 @@ static void p9_xen_response(struct work_struct *work) continue; } + if (h.size > req->rc.capacity) { + dev_warn(&priv->dev->dev, + "requested packet size too big: %d for tag %d with capacity %zd\n", + h.size, h.tag, req->rc.capacity); + req->status = REQ_STATUS_ERROR; + goto recv_error; + } + memcpy(&req->rc, &h, sizeof(h)); req->rc.offset = 0; @@ -239,6 +247,7 @@ static void p9_xen_response(struct work_struct *work) masked_prod, &masked_cons, XEN_9PFS_RING_SIZE); +recv_error: virt_mb(); cons += h.size; ring->intf->in_cons = cons; diff --git a/net/atm/mpoa_proc.c b/net/atm/mpoa_proc.c index 46d6cd9a36ae..c4e9538ac144 100644 --- a/net/atm/mpoa_proc.c +++ b/net/atm/mpoa_proc.c @@ -222,11 +222,12 @@ static ssize_t proc_mpc_write(struct file *file, const char __user *buff, if (!page) return -ENOMEM; - for (p = page, len = 0; len < nbytes; p++, len++) { + for (p = page, len = 0; len < nbytes; p++) { if (get_user(*p, buff++)) { free_page((unsigned long)page); return -EFAULT; } + len += 1; if (*p == '\0' || *p == '\n') break; } diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c index 9a75f9b00b51..4530ffb2481a 100644 --- a/net/bluetooth/6lowpan.c +++ b/net/bluetooth/6lowpan.c @@ -1014,6 +1014,7 @@ static int get_l2cap_conn(char *buf, bdaddr_t *addr, u8 *addr_type, hci_dev_lock(hdev); hcon = hci_conn_hash_lookup_le(hdev, addr, *addr_type); hci_dev_unlock(hdev); + hci_dev_put(hdev); if (!hcon) return -ENOENT; diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c index ee60c30f3be2..798f8f485e5a 100644 --- a/net/bluetooth/af_bluetooth.c +++ b/net/bluetooth/af_bluetooth.c @@ -743,7 +743,7 @@ static int __init bt_init(void) err = bt_sysfs_init(); if (err < 0) - return err; + goto cleanup_led; err = sock_register(&bt_sock_family_ops); if (err) @@ -779,6 +779,8 @@ unregister_socket: sock_unregister(PF_BLUETOOTH); cleanup_sysfs: bt_sysfs_cleanup(); +cleanup_led: + bt_leds_cleanup(); return err; } diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c index b69d88b88d2e..ccd2c377bf83 100644 --- a/net/bluetooth/hci_sysfs.c +++ b/net/bluetooth/hci_sysfs.c @@ -48,6 +48,9 @@ void hci_conn_add_sysfs(struct hci_conn *conn) BT_DBG("conn %p", conn); + if (device_is_registered(&conn->dev)) + return; + dev_set_name(&conn->dev, "%s:%d", hdev->name, conn->handle); if (device_add(&conn->dev) < 0) { diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 65d20bdff023..fd6cd47a6c5a 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -63,6 +63,9 @@ static void l2cap_send_disconn_req(struct l2cap_chan *chan, int err); static void l2cap_tx(struct l2cap_chan *chan, struct l2cap_ctrl *control, struct sk_buff_head *skbs, u8 event); +static void l2cap_retrans_timeout(struct work_struct *work); +static void l2cap_monitor_timeout(struct work_struct *work); +static void l2cap_ack_timeout(struct work_struct *work); static inline u8 bdaddr_type(u8 link_type, u8 bdaddr_type) { @@ -470,6 +473,9 @@ struct l2cap_chan *l2cap_chan_create(void) write_unlock(&chan_list_lock); INIT_DELAYED_WORK(&chan->chan_timer, l2cap_chan_timeout); + INIT_DELAYED_WORK(&chan->retrans_timer, l2cap_retrans_timeout); + INIT_DELAYED_WORK(&chan->monitor_timer, l2cap_monitor_timeout); + INIT_DELAYED_WORK(&chan->ack_timer, l2cap_ack_timeout); chan->state = BT_OPEN; @@ -1818,7 +1824,7 @@ static struct l2cap_chan *l2cap_global_chan_by_psm(int state, __le16 psm, if (link_type == LE_LINK && c->src_type == BDADDR_BREDR) continue; - if (c->psm == psm) { + if (c->chan_type != L2CAP_CHAN_FIXED && c->psm == psm) { int src_match, dst_match; int src_any, dst_any; @@ -3154,10 +3160,6 @@ int l2cap_ertm_init(struct l2cap_chan *chan) chan->rx_state = L2CAP_RX_STATE_RECV; chan->tx_state = L2CAP_TX_STATE_XMIT; - INIT_DELAYED_WORK(&chan->retrans_timer, l2cap_retrans_timeout); - INIT_DELAYED_WORK(&chan->monitor_timer, l2cap_monitor_timeout); - INIT_DELAYED_WORK(&chan->ack_timer, l2cap_ack_timeout); - skb_queue_head_init(&chan->srej_q); err = l2cap_seq_list_init(&chan->srej_list, chan->tx_win); @@ -3549,7 +3551,8 @@ done: l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, sizeof(rfc), (unsigned long) &rfc, endptr - ptr); - if (test_bit(FLAG_EFS_ENABLE, &chan->flags)) { + if (remote_efs && + test_bit(FLAG_EFS_ENABLE, &chan->flags)) { chan->remote_id = efs.id; chan->remote_stype = efs.stype; chan->remote_msdu = le16_to_cpu(efs.msdu); @@ -4047,6 +4050,12 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, } } + chan = l2cap_chan_hold_unless_zero(chan); + if (!chan) { + err = -EBADSLT; + goto unlock; + } + err = 0; l2cap_chan_lock(chan); @@ -4076,6 +4085,7 @@ static int l2cap_connect_create_rsp(struct l2cap_conn *conn, } l2cap_chan_unlock(chan); + l2cap_chan_put(chan); unlock: mutex_unlock(&conn->chan_lock); @@ -5543,6 +5553,19 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn, BT_DBG("psm 0x%2.2x scid 0x%4.4x mtu %u mps %u", __le16_to_cpu(psm), scid, mtu, mps); + /* BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 3, Part A + * page 1059: + * + * Valid range: 0x0001-0x00ff + * + * Table 4.15: L2CAP_LE_CREDIT_BASED_CONNECTION_REQ SPSM ranges + */ + if (!psm || __le16_to_cpu(psm) > L2CAP_PSM_LE_DYN_END) { + result = L2CAP_CR_BAD_PSM; + chan = NULL; + goto response; + } + /* Check if we have socket listening on psm */ pchan = l2cap_global_chan_by_psm(BT_LISTEN, psm, &conn->hcon->src, &conn->hcon->dst, LE_LINK); @@ -6246,6 +6269,7 @@ static int l2cap_rx_state_recv(struct l2cap_chan *chan, struct l2cap_ctrl *control, struct sk_buff *skb, u8 event) { + struct l2cap_ctrl local_control; int err = 0; bool skb_in_use = false; @@ -6270,15 +6294,32 @@ static int l2cap_rx_state_recv(struct l2cap_chan *chan, chan->buffer_seq = chan->expected_tx_seq; skb_in_use = true; + /* l2cap_reassemble_sdu may free skb, hence invalidate + * control, so make a copy in advance to use it after + * l2cap_reassemble_sdu returns and to avoid the race + * condition, for example: + * + * The current thread calls: + * l2cap_reassemble_sdu + * chan->ops->recv == l2cap_sock_recv_cb + * __sock_queue_rcv_skb + * Another thread calls: + * bt_sock_recvmsg + * skb_recv_datagram + * skb_free_datagram + * Then the current thread tries to access control, but + * it was freed by skb_free_datagram. + */ + local_control = *control; err = l2cap_reassemble_sdu(chan, skb, control); if (err) break; - if (control->final) { + if (local_control.final) { if (!test_and_clear_bit(CONN_REJ_ACT, &chan->conn_state)) { - control->final = 0; - l2cap_retransmit_all(chan, control); + local_control.final = 0; + l2cap_retransmit_all(chan, &local_control); l2cap_ertm_send(chan); } } @@ -6658,11 +6699,27 @@ static int l2cap_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control, static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control, struct sk_buff *skb) { + /* l2cap_reassemble_sdu may free skb, hence invalidate control, so store + * the txseq field in advance to use it after l2cap_reassemble_sdu + * returns and to avoid the race condition, for example: + * + * The current thread calls: + * l2cap_reassemble_sdu + * chan->ops->recv == l2cap_sock_recv_cb + * __sock_queue_rcv_skb + * Another thread calls: + * bt_sock_recvmsg + * skb_recv_datagram + * skb_free_datagram + * Then the current thread tries to access control, but it was freed by + * skb_free_datagram. + */ + u16 txseq = control->txseq; + BT_DBG("chan %p, control %p, skb %p, state %d", chan, control, skb, chan->rx_state); - if (l2cap_classify_txseq(chan, control->txseq) == - L2CAP_TXSEQ_EXPECTED) { + if (l2cap_classify_txseq(chan, txseq) == L2CAP_TXSEQ_EXPECTED) { l2cap_pass_to_tx(chan, control); BT_DBG("buffer_seq %d->%d", chan->buffer_seq, @@ -6685,8 +6742,8 @@ static int l2cap_stream_rx(struct l2cap_chan *chan, struct l2cap_ctrl *control, } } - chan->last_acked_seq = control->txseq; - chan->expected_tx_seq = __next_seq(chan, control->txseq); + chan->last_acked_seq = txseq; + chan->expected_tx_seq = __next_seq(chan, txseq); return 0; } @@ -6924,6 +6981,7 @@ static void l2cap_data_channel(struct l2cap_conn *conn, u16 cid, return; } + l2cap_chan_hold(chan); l2cap_chan_lock(chan); } else { BT_DBG("unknown cid 0x%4.4x", cid); diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c index f4078830ea50..e0c6dfae42d8 100644 --- a/net/bpf/test_run.c +++ b/net/bpf/test_run.c @@ -87,6 +87,7 @@ static void *bpf_test_init(const union bpf_attr *kattr, u32 size, if (size < ETH_HLEN || size > PAGE_SIZE - headroom - tailroom) return ERR_PTR(-EINVAL); + size = SKB_DATA_ALIGN(size); data = kzalloc(size + headroom + tailroom, GFP_USER); if (!data) return ERR_PTR(-ENOMEM); diff --git a/net/caif/chnl_net.c b/net/caif/chnl_net.c index 8aeece7aa9e9..ece140ad0ac1 100644 --- a/net/caif/chnl_net.c +++ b/net/caif/chnl_net.c @@ -314,9 +314,6 @@ static int chnl_net_open(struct net_device *dev) if (result == 0) { pr_debug("connect timeout\n"); - caif_disconnect_client(dev_net(dev), &priv->chnl); - priv->state = CAIF_DISCONNECTED; - pr_debug("state disconnected\n"); result = -ETIMEDOUT; goto error; } diff --git a/net/can/bcm.c b/net/can/bcm.c index 3c825b158fb5..74e555a22de7 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -273,6 +273,7 @@ static void bcm_can_tx(struct bcm_op *op) struct sk_buff *skb; struct net_device *dev; struct canfd_frame *cf = op->frames + op->cfsiz * op->currframe; + int err; /* no target device? => exit */ if (!op->ifindex) @@ -297,11 +298,11 @@ static void bcm_can_tx(struct bcm_op *op) /* send with loopback */ skb->dev = dev; can_skb_set_owner(skb, op->sk); - can_send(skb, 1); + err = can_send(skb, 1); + if (!err) + op->frames_abs++; - /* update statistics */ op->currframe++; - op->frames_abs++; /* reached last frame? */ if (op->currframe >= op->nframes) diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 369ca7b3146c..6529ea1dd88f 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -312,7 +312,7 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) write_lock_bh(&tbl->lock); neigh_flush_dev(tbl, dev); pneigh_ifdown_and_unlock(tbl, dev); - pneigh_queue_purge(&tbl->proxy_queue, dev_net(dev)); + pneigh_queue_purge(&tbl->proxy_queue, dev ? dev_net(dev) : NULL); if (skb_queue_empty_lockless(&tbl->proxy_queue)) del_timer_sync(&tbl->proxy_timer); return 0; diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 3368624be5ec..56c240c98a56 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -112,6 +112,7 @@ static int net_assign_generic(struct net *net, unsigned int id, void *data) static int ops_init(const struct pernet_operations *ops, struct net *net) { + struct net_generic *ng; int err = -ENOMEM; void *data = NULL; @@ -130,7 +131,13 @@ static int ops_init(const struct pernet_operations *ops, struct net *net) if (!err) return 0; + if (ops->id && ops->size) { cleanup: + ng = rcu_dereference_protected(net->gen, + lockdep_is_held(&pernet_ops_rwsem)); + ng->ptr[*ops->id] = NULL; + } + kfree(data); out: diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 39d134a7955c..1768e0c56866 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3563,23 +3563,25 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, int pos; int dummy; - if (list_skb && !list_skb->head_frag && skb_headlen(list_skb) && - (skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY)) { - /* gso_size is untrusted, and we have a frag_list with a linear - * non head_frag head. - * - * (we assume checking the first list_skb member suffices; - * i.e if either of the list_skb members have non head_frag - * head, then the first one has too). - * - * If head_skb's headlen does not fit requested gso_size, it - * means that the frag_list members do NOT terminate on exact - * gso_size boundaries. Hence we cannot perform skb_frag_t page - * sharing. Therefore we must fallback to copying the frag_list - * skbs; we do so by disabling SG. - */ - if (mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) - features &= ~NETIF_F_SG; + if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) && + mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) { + struct sk_buff *check_skb; + + for (check_skb = list_skb; check_skb; check_skb = check_skb->next) { + if (skb_headlen(check_skb) && !check_skb->head_frag) { + /* gso_size is untrusted, and we have a frag_list with + * a linear non head_frag item. + * + * If head_skb's headlen does not fit requested gso_size, + * it means that the frag_list members do NOT terminate + * on exact gso_size boundaries. Hence we cannot perform + * skb_frag_t page sharing. Therefore we must fallback to + * copying the frag_list skbs; we do so by disabling SG. + */ + features &= ~NETIF_F_SG; + break; + } + } } __skb_push(head_skb, doffset); diff --git a/net/core/stream.c b/net/core/stream.c index 3d98774cf128..7b411a91a81c 100644 --- a/net/core/stream.c +++ b/net/core/stream.c @@ -159,7 +159,8 @@ int sk_stream_wait_memory(struct sock *sk, long *timeo_p) *timeo_p = current_timeo; } out: - remove_wait_queue(sk_sleep(sk), &wait); + if (!sock_flag(sk, SOCK_DEAD)) + remove_wait_queue(sk_sleep(sk), &wait); return err; do_error: diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index 7e93087d1366..c021d5dde8f7 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c @@ -134,6 +134,8 @@ failure: * This unhashes the socket and releases the local port, if necessary. */ dccp_set_state(sk, DCCP_CLOSED); + if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) + inet_reset_saddr(sk); ip_rt_put(rt); sk->sk_route_caps = 0; inet->inet_dport = 0; diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c index ae4851fdbe9e..72803e1ea10a 100644 --- a/net/dccp/ipv6.c +++ b/net/dccp/ipv6.c @@ -957,6 +957,8 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr, late_failure: dccp_set_state(sk, DCCP_CLOSED); + if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) + inet_reset_saddr(sk); __sk_dst_reset(sk); failure: inet->inet_dport = 0; diff --git a/net/hsr/hsr_forward.c b/net/hsr/hsr_forward.c index 04b5450c5a55..adfb49760678 100644 --- a/net/hsr/hsr_forward.c +++ b/net/hsr/hsr_forward.c @@ -207,17 +207,18 @@ static void hsr_deliver_master(struct sk_buff *skb, struct net_device *dev, struct hsr_node *node_src) { bool was_multicast_frame; - int res; + int res, recv_len; was_multicast_frame = (skb->pkt_type == PACKET_MULTICAST); hsr_addr_subst_source(node_src, skb); skb_pull(skb, ETH_HLEN); + recv_len = skb->len; res = netif_rx(skb); if (res == NET_RX_DROP) { dev->stats.rx_dropped++; } else { dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += recv_len; if (was_multicast_frame) dev->stats.multicast++; } diff --git a/net/ieee802154/socket.c b/net/ieee802154/socket.c index 14c6fac039f9..ee1536de5fca 100644 --- a/net/ieee802154/socket.c +++ b/net/ieee802154/socket.c @@ -213,8 +213,9 @@ static int raw_bind(struct sock *sk, struct sockaddr *_uaddr, int len) int err = 0; struct net_device *dev = NULL; - if (len < sizeof(*uaddr)) - return -EINVAL; + err = ieee802154_sockaddr_check_size(uaddr, len); + if (err < 0) + return err; uaddr = (struct sockaddr_ieee802154 *)_uaddr; if (uaddr->family != AF_IEEE802154) @@ -284,6 +285,10 @@ static int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) err = -EMSGSIZE; goto out_dev; } + if (!size) { + err = 0; + goto out_dev; + } hlen = LL_RESERVED_SPACE(dev); tlen = dev->needed_tailroom; @@ -509,11 +514,14 @@ static int dgram_bind(struct sock *sk, struct sockaddr *uaddr, int len) ro->bound = 0; - if (len < sizeof(*addr)) + err = ieee802154_sockaddr_check_size(addr, len); + if (err < 0) goto out; - if (addr->family != AF_IEEE802154) + if (addr->family != AF_IEEE802154) { + err = -EINVAL; goto out; + } ieee802154_addr_from_sa(&haddr, &addr->addr); dev = ieee802154_get_dev(sock_net(sk), &haddr); @@ -580,8 +588,9 @@ static int dgram_connect(struct sock *sk, struct sockaddr *uaddr, struct dgram_sock *ro = dgram_sk(sk); int err = 0; - if (len < sizeof(*addr)) - return -EINVAL; + err = ieee802154_sockaddr_check_size(addr, len); + if (err < 0) + return err; if (addr->family != AF_IEEE802154) return -EINVAL; @@ -620,6 +629,7 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) struct ieee802154_mac_cb *cb; struct dgram_sock *ro = dgram_sk(sk); struct ieee802154_addr dst_addr; + DECLARE_SOCKADDR(struct sockaddr_ieee802154*, daddr, msg->msg_name); int hlen, tlen; int err; @@ -628,10 +638,20 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) return -EOPNOTSUPP; } - if (!ro->connected && !msg->msg_name) - return -EDESTADDRREQ; - else if (ro->connected && msg->msg_name) - return -EISCONN; + if (msg->msg_name) { + if (ro->connected) + return -EISCONN; + if (msg->msg_namelen < IEEE802154_MIN_NAMELEN) + return -EINVAL; + err = ieee802154_sockaddr_check_size(daddr, msg->msg_namelen); + if (err < 0) + return err; + ieee802154_addr_from_sa(&dst_addr, &daddr->addr); + } else { + if (!ro->connected) + return -EDESTADDRREQ; + dst_addr = ro->dst_addr; + } if (!ro->bound) dev = dev_getfirstbyhwtype(sock_net(sk), ARPHRD_IEEE802154); @@ -667,16 +687,6 @@ static int dgram_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) cb = mac_cb_init(skb); cb->type = IEEE802154_FC_TYPE_DATA; cb->ackreq = ro->want_ack; - - if (msg->msg_name) { - DECLARE_SOCKADDR(struct sockaddr_ieee802154*, - daddr, msg->msg_name); - - ieee802154_addr_from_sa(&dst_addr, &daddr->addr); - } else { - dst_addr = ro->dst_addr; - } - cb->secen = ro->secen; cb->secen_override = ro->secen_override; cb->seclevel = ro->seclevel; diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index 2e12f848203a..8acfa1487478 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig @@ -388,6 +388,16 @@ config INET_IPCOMP If unsure, say Y. +config INET_TABLE_PERTURB_ORDER + int "INET: Source port perturbation table size (as power of 2)" if EXPERT + default 16 + help + Source port perturbation table size (as power of 2) for + RFC 6056 3.3.4. Algorithm 4: Double-Hash Port Selection Algorithm. + + The default is almost always what you want. + Only change this if you know what you are doing. + config INET_XFRM_TUNNEL tristate select INET_TUNNEL diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index c1ce752069dd..4c2d73f62de2 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -159,7 +159,7 @@ void inet_sock_destruct(struct sock *sk) kfree(rcu_dereference_protected(inet->inet_opt, 1)); dst_release(rcu_dereference_check(sk->sk_dst_cache, 1)); - dst_release(sk->sk_rx_dst); + dst_release(rcu_dereference_protected(sk->sk_rx_dst, 1)); sk_refcnt_debug_dec(sk); } EXPORT_SYMBOL(inet_sock_destruct); diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 5295a579ec82..3c58019f0718 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -718,13 +718,13 @@ EXPORT_SYMBOL_GPL(inet_unhash); * Note that we use 32bit integers (vs RFC 'short integers') * because 2^16 is not a multiple of num_ephemeral and this * property might be used by clever attacker. + * * RFC claims using TABLE_LENGTH=10 buckets gives an improvement, though - * attacks were since demonstrated, thus we use 65536 instead to really - * give more isolation and privacy, at the expense of 256kB of kernel - * memory. + * attacks were since demonstrated, thus we use 65536 by default instead + * to really give more isolation and privacy, at the expense of 256kB + * of kernel memory. */ -#define INET_TABLE_PERTURB_SHIFT 16 -#define INET_TABLE_PERTURB_SIZE (1 << INET_TABLE_PERTURB_SHIFT) +#define INET_TABLE_PERTURB_SIZE (1 << CONFIG_INET_TABLE_PERTURB_ORDER) static u32 *table_perturb; int __inet_hash_connect(struct inet_timewait_death_row *death_row, @@ -765,8 +765,8 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row, if (likely(remaining > 1)) remaining &= ~1U; - net_get_random_once(table_perturb, - INET_TABLE_PERTURB_SIZE * sizeof(*table_perturb)); + get_random_slow_once(table_perturb, + INET_TABLE_PERTURB_SIZE * sizeof(*table_perturb)); index = port_offset & (INET_TABLE_PERTURB_SIZE - 1); offset = READ_ONCE(table_perturb[index]) + (port_offset >> 32); diff --git a/net/ipv4/netfilter/nft_fib_ipv4.c b/net/ipv4/netfilter/nft_fib_ipv4.c index e50976e3c213..3b2e8ac45d4e 100644 --- a/net/ipv4/netfilter/nft_fib_ipv4.c +++ b/net/ipv4/netfilter/nft_fib_ipv4.c @@ -95,6 +95,9 @@ void nft_fib4_eval(const struct nft_expr *expr, struct nft_regs *regs, else oif = NULL; + if (priv->flags & NFTA_FIB_F_IIF) + fl4.flowi4_oif = l3mdev_master_ifindex_rcu(oif); + if (nft_hook(pkt) == NF_INET_PRE_ROUTING && nft_fib_is_loopback(pkt->skb, nft_in(pkt))) { nft_fib_store_result(dest, priv, pkt, diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 9c04159b4858..0a271598676e 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -2617,6 +2617,8 @@ int tcp_disconnect(struct sock *sk, int flags) icsk->icsk_probes_out = 0; tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; tp->snd_cwnd_cnt = 0; + tp->is_cwnd_limited = 0; + tp->max_packets_out = 0; tp->window_clamp = 0; tp->delivered = 0; tp->delivered_ce = 0; @@ -2634,8 +2636,7 @@ int tcp_disconnect(struct sock *sk, int flags) icsk->icsk_ack.rcv_mss = TCP_MIN_MSS; memset(&tp->rx_opt, 0, sizeof(tp->rx_opt)); __sk_dst_reset(sk); - dst_release(sk->sk_rx_dst); - sk->sk_rx_dst = NULL; + dst_release(xchg((__force struct dst_entry **)&sk->sk_rx_dst, NULL)); tcp_saved_syn_free(tp); tp->compressed_ack = 0; tp->segs_in = 0; @@ -3700,12 +3701,16 @@ static void __tcp_alloc_md5sig_pool(void) * to memory. See smp_rmb() in tcp_get_md5sig_pool() */ smp_wmb(); - tcp_md5sig_pool_populated = true; + /* Paired with READ_ONCE() from tcp_alloc_md5sig_pool() + * and tcp_get_md5sig_pool(). + */ + WRITE_ONCE(tcp_md5sig_pool_populated, true); } bool tcp_alloc_md5sig_pool(void) { - if (unlikely(!tcp_md5sig_pool_populated)) { + /* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ + if (unlikely(!READ_ONCE(tcp_md5sig_pool_populated))) { mutex_lock(&tcp_md5sig_mutex); if (!tcp_md5sig_pool_populated) @@ -3713,7 +3718,8 @@ bool tcp_alloc_md5sig_pool(void) mutex_unlock(&tcp_md5sig_mutex); } - return tcp_md5sig_pool_populated; + /* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ + return READ_ONCE(tcp_md5sig_pool_populated); } EXPORT_SYMBOL(tcp_alloc_md5sig_pool); @@ -3729,7 +3735,8 @@ struct tcp_md5sig_pool *tcp_get_md5sig_pool(void) { local_bh_disable(); - if (tcp_md5sig_pool_populated) { + /* Paired with WRITE_ONCE() from __tcp_alloc_md5sig_pool() */ + if (READ_ONCE(tcp_md5sig_pool_populated)) { /* coupled with smp_wmb() in __tcp_alloc_md5sig_pool() */ smp_rmb(); return this_cpu_ptr(&tcp_md5sig_pool); diff --git a/net/ipv4/tcp_cdg.c b/net/ipv4/tcp_cdg.c index 06fbe102a425..10daea1fcefc 100644 --- a/net/ipv4/tcp_cdg.c +++ b/net/ipv4/tcp_cdg.c @@ -374,6 +374,7 @@ static void tcp_cdg_init(struct sock *sk) struct cdg *ca = inet_csk_ca(sk); struct tcp_sock *tp = tcp_sk(sk); + ca->gradients = NULL; /* We silently fall back to window = 1 if allocation fails. */ if (window > 1) ca->gradients = kcalloc(window, sizeof(ca->gradients[0]), @@ -387,6 +388,7 @@ static void tcp_cdg_release(struct sock *sk) struct cdg *ca = inet_csk_ca(sk); kfree(ca->gradients); + ca->gradients = NULL; } static struct tcp_congestion_ops tcp_cdg __read_mostly = { diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 5f67a50e3e91..449ac51aed34 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2035,7 +2035,8 @@ void tcp_enter_loss(struct sock *sk) */ static bool tcp_check_sack_reneging(struct sock *sk, int flag) { - if (flag & FLAG_SACK_RENEGING) { + if (flag & FLAG_SACK_RENEGING && + flag & FLAG_SND_UNA_ADVANCED) { struct tcp_sock *tp = tcp_sk(sk); unsigned long delay = max(usecs_to_jiffies(tp->srtt_us >> 4), msecs_to_jiffies(10)); @@ -5553,7 +5554,7 @@ void tcp_rcv_established(struct sock *sk, struct sk_buff *skb) trace_tcp_probe(sk, skb); tcp_mstamp_refresh(tp); - if (unlikely(!sk->sk_rx_dst)) + if (unlikely(!rcu_access_pointer(sk->sk_rx_dst))) inet_csk(sk)->icsk_af_ops->sk_rx_dst_set(sk, skb); /* * Header prediction. diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 03bff4f66e58..ee5a598a6301 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -328,6 +328,8 @@ failure: * if necessary. */ tcp_set_state(sk, TCP_CLOSE); + if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) + inet_reset_saddr(sk); ip_rt_put(rt); sk->sk_route_caps = 0; inet->inet_dport = 0; @@ -1544,15 +1546,18 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) struct sock *rsk; if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ - struct dst_entry *dst = sk->sk_rx_dst; + struct dst_entry *dst; + + dst = rcu_dereference_protected(sk->sk_rx_dst, + lockdep_sock_is_held(sk)); sock_rps_save_rxhash(sk, skb); sk_mark_napi_id(sk, skb); if (dst) { if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif || !dst->ops->check(dst, 0)) { + RCU_INIT_POINTER(sk->sk_rx_dst, NULL); dst_release(dst); - sk->sk_rx_dst = NULL; } } tcp_rcv_established(sk, skb); @@ -1627,7 +1632,7 @@ int tcp_v4_early_demux(struct sk_buff *skb) skb->sk = sk; skb->destructor = sock_edemux; if (sk_fullsock(sk)) { - struct dst_entry *dst = READ_ONCE(sk->sk_rx_dst); + struct dst_entry *dst = rcu_dereference(sk->sk_rx_dst); if (dst) dst = dst_check(dst, 0); @@ -1932,7 +1937,7 @@ void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) struct dst_entry *dst = skb_dst(skb); if (dst && dst_hold_safe(dst)) { - sk->sk_rx_dst = dst; + rcu_assign_pointer(sk->sk_rx_dst, dst); inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; } } diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 9a6be252390e..405f729bdc08 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1638,15 +1638,20 @@ static void tcp_cwnd_validate(struct sock *sk, bool is_cwnd_limited) const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops; struct tcp_sock *tp = tcp_sk(sk); - /* Track the maximum number of outstanding packets in each - * window, and remember whether we were cwnd-limited then. + /* Track the strongest available signal of the degree to which the cwnd + * is fully utilized. If cwnd-limited then remember that fact for the + * current window. If not cwnd-limited then track the maximum number of + * outstanding packets in the current window. (If cwnd-limited then we + * chose to not update tp->max_packets_out to avoid an extra else + * clause with no functional impact.) */ - if (!before(tp->snd_una, tp->max_packets_seq) || - tp->packets_out > tp->max_packets_out || - is_cwnd_limited) { - tp->max_packets_out = tp->packets_out; - tp->max_packets_seq = tp->snd_nxt; + if (!before(tp->snd_una, tp->cwnd_usage_seq) || + is_cwnd_limited || + (!tp->is_cwnd_limited && + tp->packets_out > tp->max_packets_out)) { tp->is_cwnd_limited = is_cwnd_limited; + tp->max_packets_out = tp->packets_out; + tp->cwnd_usage_seq = tp->snd_nxt; } if (tcp_is_cwnd_limited(sk)) { diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index befceed911ee..5c0fca672075 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -2083,7 +2083,7 @@ bool udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst) struct dst_entry *old; if (dst_hold_safe(dst)) { - old = xchg(&sk->sk_rx_dst, dst); + old = xchg((__force struct dst_entry **)&sk->sk_rx_dst, dst); dst_release(old); return old != dst; } @@ -2273,7 +2273,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, struct dst_entry *dst = skb_dst(skb); int ret; - if (unlikely(sk->sk_rx_dst != dst)) + if (unlikely(rcu_dereference(sk->sk_rx_dst) != dst)) udp_sk_rx_dst_set(sk, dst); ret = udp_unicast_rcv_skb(sk, skb, uh); @@ -2431,7 +2431,7 @@ int udp_v4_early_demux(struct sk_buff *skb) skb->sk = sk; skb->destructor = sock_efree; - dst = READ_ONCE(sk->sk_rx_dst); + dst = rcu_dereference(sk->sk_rx_dst); if (dst) dst = dst_check(dst, 0); diff --git a/net/ipv6/addrlabel.c b/net/ipv6/addrlabel.c index c7dc8b2de6c2..7fdd433b968e 100644 --- a/net/ipv6/addrlabel.c +++ b/net/ipv6/addrlabel.c @@ -437,6 +437,7 @@ static void ip6addrlbl_putmsg(struct nlmsghdr *nlh, { struct ifaddrlblmsg *ifal = nlmsg_data(nlh); ifal->ifal_family = AF_INET6; + ifal->__ifal_reserved = 0; ifal->ifal_prefixlen = prefixlen; ifal->ifal_flags = 0; ifal->ifal_index = ifindex; diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 59d3944a6c9b..fa5454023265 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -734,6 +734,9 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, ipv6_hdr(skb)->payload_len = htons(first_len - sizeof(struct ipv6hdr)); + /* We prevent @rt from being freed. */ + rcu_read_lock(); + for (;;) { /* Prepare header of the next frame, * before previous one went down. */ @@ -776,6 +779,7 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, if (err == 0) { IP6_INC_STATS(net, ip6_dst_idev(&rt->dst), IPSTATS_MIB_FRAGOKS); + rcu_read_unlock(); return 0; } @@ -783,6 +787,7 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, IP6_INC_STATS(net, ip6_dst_idev(&rt->dst), IPSTATS_MIB_FRAGFAILS); + rcu_read_unlock(); return err; slow_path_clean: diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 4e1da6cb9ed7..4f958d24f9e4 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c @@ -166,6 +166,12 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, rtnl_lock(); lock_sock(sk); + /* Another thread has converted the socket into IPv4 with + * IPV6_ADDRFORM concurrently. + */ + if (unlikely(sk->sk_family != AF_INET6)) + goto unlock; + switch (optname) { case IPV6_ADDRFORM: @@ -913,6 +919,7 @@ pref_skip_coa: break; } +unlock: release_sock(sk); if (needs_rtnl) rtnl_unlock(); diff --git a/net/ipv6/netfilter/nft_fib_ipv6.c b/net/ipv6/netfilter/nft_fib_ipv6.c index 36be3cf0adef..fa71e40789ed 100644 --- a/net/ipv6/netfilter/nft_fib_ipv6.c +++ b/net/ipv6/netfilter/nft_fib_ipv6.c @@ -41,6 +41,9 @@ static int nft_fib6_flowi_init(struct flowi6 *fl6, const struct nft_fib *priv, if (ipv6_addr_type(&fl6->daddr) & IPV6_ADDR_LINKLOCAL) { lookup_flags |= RT6_LOOKUP_F_IFACE; fl6->flowi6_oif = get_ifindex(dev ? dev : pkt->skb->dev); + } else if ((priv->flags & NFTA_FIB_F_IIF) && + (netif_is_l3_master(dev) || netif_is_l3_slave(dev))) { + fl6->flowi6_oif = dev->ifindex; } if (ipv6_addr_type(&fl6->saddr) & IPV6_ADDR_UNICAST) @@ -189,7 +192,8 @@ void nft_fib6_eval(const struct nft_expr *expr, struct nft_regs *regs, if (rt->rt6i_flags & (RTF_REJECT | RTF_ANYCAST | RTF_LOCAL)) goto put_rt_err; - if (oif && oif != rt->rt6i_idev->dev) + if (oif && oif != rt->rt6i_idev->dev && + l3mdev_master_ifindex_rcu(rt->rt6i_idev->dev) != oif->ifindex) goto put_rt_err; switch (priv->result) { diff --git a/net/ipv6/route.c b/net/ipv6/route.c index fa6661f1db76..b5b3fa3e33da 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -5350,10 +5350,16 @@ static void __net_exit ip6_route_net_exit(struct net *net) static int __net_init ip6_route_net_init_late(struct net *net) { #ifdef CONFIG_PROC_FS - proc_create_net("ipv6_route", 0, net->proc_net, &ipv6_route_seq_ops, - sizeof(struct ipv6_route_iter)); - proc_create_net_single("rt6_stats", 0444, net->proc_net, - rt6_stats_seq_show, NULL); + if (!proc_create_net("ipv6_route", 0, net->proc_net, + &ipv6_route_seq_ops, + sizeof(struct ipv6_route_iter))) + return -ENOMEM; + + if (!proc_create_net_single("rt6_stats", 0444, net->proc_net, + rt6_stats_seq_show, NULL)) { + remove_proc_entry("ipv6_route", net->proc_net); + return -ENOMEM; + } #endif return 0; } diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 2dccd895b632..3052e531f4ee 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -97,7 +97,7 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) if (dst && dst_hold_safe(dst)) { const struct rt6_info *rt = (const struct rt6_info *)dst; - sk->sk_rx_dst = dst; + rcu_assign_pointer(sk->sk_rx_dst, dst); inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; inet6_sk(sk)->rx_dst_cookie = rt6_get_cookie(rt); } @@ -327,6 +327,8 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr, late_failure: tcp_set_state(sk, TCP_CLOSE); + if (!(sk->sk_userlocks & SOCK_BINDADDR_LOCK)) + inet_reset_saddr(sk); failure: inet->inet_dport = 0; sk->sk_route_caps = 0; @@ -1344,15 +1346,18 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) opt_skb = skb_clone(skb, sk_gfp_mask(sk, GFP_ATOMIC)); if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ - struct dst_entry *dst = sk->sk_rx_dst; + struct dst_entry *dst; + + dst = rcu_dereference_protected(sk->sk_rx_dst, + lockdep_sock_is_held(sk)); sock_rps_save_rxhash(sk, skb); sk_mark_napi_id(sk, skb); if (dst) { if (inet_sk(sk)->rx_dst_ifindex != skb->skb_iif || dst->ops->check(dst, np->rx_dst_cookie) == NULL) { + RCU_INIT_POINTER(sk->sk_rx_dst, NULL); dst_release(dst); - sk->sk_rx_dst = NULL; } } @@ -1697,7 +1702,7 @@ static void tcp_v6_early_demux(struct sk_buff *skb) skb->sk = sk; skb->destructor = sock_edemux; if (sk_fullsock(sk)) { - struct dst_entry *dst = READ_ONCE(sk->sk_rx_dst); + struct dst_entry *dst = rcu_dereference(sk->sk_rx_dst); if (dst) dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie); diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index d409d324f536..eb306282a221 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -856,7 +856,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, struct dst_entry *dst = skb_dst(skb); int ret; - if (unlikely(sk->sk_rx_dst != dst)) + if (unlikely(rcu_dereference(sk->sk_rx_dst) != dst)) udp6_sk_rx_dst_set(sk, dst); if (!uh->check && !udp_sk(sk)->no_check6_rx) { @@ -968,7 +968,7 @@ static void udp_v6_early_demux(struct sk_buff *skb) skb->sk = sk; skb->destructor = sock_efree; - dst = READ_ONCE(sk->sk_rx_dst); + dst = rcu_dereference(sk->sk_rx_dst); if (dst) dst = dst_check(dst, inet6_sk(sk)->rx_dst_cookie); diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 30232591cf2b..1925fb91e514 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c @@ -416,9 +416,13 @@ int __init xfrm6_init(void) if (ret) goto out_state; - register_pernet_subsys(&xfrm6_net_ops); + ret = register_pernet_subsys(&xfrm6_net_ops); + if (ret) + goto out_protocol; out: return ret; +out_protocol: + xfrm6_protocol_fini(); out_state: xfrm6_state_fini(); out_policy: diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c index 9206b6c1be74..319d55c096b1 100644 --- a/net/kcm/kcmsock.c +++ b/net/kcm/kcmsock.c @@ -164,7 +164,8 @@ static void kcm_rcv_ready(struct kcm_sock *kcm) /* Buffer limit is okay now, add to ready list */ list_add_tail(&kcm->wait_rx_list, &kcm->mux->kcm_rx_waiters); - kcm->rx_wait = true; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_wait, true); } static void kcm_rfree(struct sk_buff *skb) @@ -180,7 +181,7 @@ static void kcm_rfree(struct sk_buff *skb) /* For reading rx_wait and rx_psock without holding lock */ smp_mb__after_atomic(); - if (!kcm->rx_wait && !kcm->rx_psock && + if (!READ_ONCE(kcm->rx_wait) && !READ_ONCE(kcm->rx_psock) && sk_rmem_alloc_get(sk) < sk->sk_rcvlowat) { spin_lock_bh(&mux->rx_lock); kcm_rcv_ready(kcm); @@ -223,7 +224,7 @@ static void requeue_rx_msgs(struct kcm_mux *mux, struct sk_buff_head *head) struct sk_buff *skb; struct kcm_sock *kcm; - while ((skb = __skb_dequeue(head))) { + while ((skb = skb_dequeue(head))) { /* Reset destructor to avoid calling kcm_rcv_ready */ skb->destructor = sock_rfree; skb_orphan(skb); @@ -239,7 +240,8 @@ try_again: if (kcm_queue_rcv_skb(&kcm->sk, skb)) { /* Should mean socket buffer full */ list_del(&kcm->wait_rx_list); - kcm->rx_wait = false; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_wait, false); /* Commit rx_wait to read in kcm_free */ smp_wmb(); @@ -282,10 +284,12 @@ static struct kcm_sock *reserve_rx_kcm(struct kcm_psock *psock, kcm = list_first_entry(&mux->kcm_rx_waiters, struct kcm_sock, wait_rx_list); list_del(&kcm->wait_rx_list); - kcm->rx_wait = false; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_wait, false); psock->rx_kcm = kcm; - kcm->rx_psock = psock; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_psock, psock); spin_unlock_bh(&mux->rx_lock); @@ -312,7 +316,8 @@ static void unreserve_rx_kcm(struct kcm_psock *psock, spin_lock_bh(&mux->rx_lock); psock->rx_kcm = NULL; - kcm->rx_psock = NULL; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_psock, NULL); /* Commit kcm->rx_psock before sk_rmem_alloc_get to sync with * kcm_rfree @@ -1084,53 +1089,18 @@ out_error: return err; } -static struct sk_buff *kcm_wait_data(struct sock *sk, int flags, - long timeo, int *err) -{ - struct sk_buff *skb; - - while (!(skb = skb_peek(&sk->sk_receive_queue))) { - if (sk->sk_err) { - *err = sock_error(sk); - return NULL; - } - - if (sock_flag(sk, SOCK_DONE)) - return NULL; - - if ((flags & MSG_DONTWAIT) || !timeo) { - *err = -EAGAIN; - return NULL; - } - - sk_wait_data(sk, &timeo, NULL); - - /* Handle signals */ - if (signal_pending(current)) { - *err = sock_intr_errno(timeo); - return NULL; - } - } - - return skb; -} - static int kcm_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, int flags) { + int noblock = flags & MSG_DONTWAIT; struct sock *sk = sock->sk; struct kcm_sock *kcm = kcm_sk(sk); int err = 0; - long timeo; struct strp_msg *stm; int copied = 0; struct sk_buff *skb; - timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); - - lock_sock(sk); - - skb = kcm_wait_data(sk, flags, timeo, &err); + skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) goto out; @@ -1161,14 +1131,11 @@ msg_finished: /* Finished with message */ msg->msg_flags |= MSG_EOR; KCM_STATS_INCR(kcm->stats.rx_msgs); - skb_unlink(skb, &sk->sk_receive_queue); - kfree_skb(skb); } } out: - release_sock(sk); - + skb_free_datagram(sk, skb); return copied ? : err; } @@ -1176,9 +1143,9 @@ static ssize_t kcm_splice_read(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags) { + int noblock = flags & MSG_DONTWAIT; struct sock *sk = sock->sk; struct kcm_sock *kcm = kcm_sk(sk); - long timeo; struct strp_msg *stm; int err = 0; ssize_t copied; @@ -1186,11 +1153,7 @@ static ssize_t kcm_splice_read(struct socket *sock, loff_t *ppos, /* Only support splice for SOCKSEQPACKET */ - timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); - - lock_sock(sk); - - skb = kcm_wait_data(sk, flags, timeo, &err); + skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) goto err_out; @@ -1218,13 +1181,11 @@ static ssize_t kcm_splice_read(struct socket *sock, loff_t *ppos, * finish reading the message. */ - release_sock(sk); - + skb_free_datagram(sk, skb); return copied; err_out: - release_sock(sk); - + skb_free_datagram(sk, skb); return err; } @@ -1244,7 +1205,8 @@ static void kcm_recv_disable(struct kcm_sock *kcm) if (!kcm->rx_psock) { if (kcm->rx_wait) { list_del(&kcm->wait_rx_list); - kcm->rx_wait = false; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_wait, false); } requeue_rx_msgs(mux, &kcm->sk.sk_receive_queue); @@ -1797,7 +1759,8 @@ static void kcm_done(struct kcm_sock *kcm) if (kcm->rx_wait) { list_del(&kcm->wait_rx_list); - kcm->rx_wait = false; + /* paired with lockless reads in kcm_rfree() */ + WRITE_ONCE(kcm->rx_wait, false); } /* Move any pending receive messages to other kcm sockets */ requeue_rx_msgs(mux, &sk->sk_receive_queue); @@ -1842,10 +1805,10 @@ static int kcm_release(struct socket *sock) kcm = kcm_sk(sk); mux = kcm->mux; + lock_sock(sk); sock_orphan(sk); kfree_skb(kcm->seq_skb); - lock_sock(sk); /* Purge queue under lock to avoid race condition with tx_work trying * to act when queue is nonempty. If tx_work runs after this point * it will just return. diff --git a/net/key/af_key.c b/net/key/af_key.c index 337c6bc8211e..976b67089ac1 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c @@ -2915,7 +2915,7 @@ static int count_ah_combs(const struct xfrm_tmpl *t) break; if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } return sz + sizeof(struct sadb_prop); @@ -2933,7 +2933,7 @@ static int count_esp_combs(const struct xfrm_tmpl *t) if (!ealg->pfkey_supported) continue; - if (!(ealg_tmpl_set(t, ealg) && ealg->available)) + if (!(ealg_tmpl_set(t, ealg))) continue; for (k = 1; ; k++) { @@ -2944,16 +2944,17 @@ static int count_esp_combs(const struct xfrm_tmpl *t) if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } } return sz + sizeof(struct sadb_prop); } -static void dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) +static int dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) { struct sadb_prop *p; + int sz = 0; int i; p = skb_put(skb, sizeof(struct sadb_prop)); @@ -2981,13 +2982,17 @@ static void dump_ah_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) c->sadb_comb_soft_addtime = 20*60*60; c->sadb_comb_hard_usetime = 8*60*60; c->sadb_comb_soft_usetime = 7*60*60; + sz += sizeof(*c); } } + + return sz + sizeof(*p); } -static void dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) +static int dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) { struct sadb_prop *p; + int sz = 0; int i, k; p = skb_put(skb, sizeof(struct sadb_prop)); @@ -3029,8 +3034,11 @@ static void dump_esp_combs(struct sk_buff *skb, const struct xfrm_tmpl *t) c->sadb_comb_soft_addtime = 20*60*60; c->sadb_comb_hard_usetime = 8*60*60; c->sadb_comb_soft_usetime = 7*60*60; + sz += sizeof(*c); } } + + return sz + sizeof(*p); } static int key_notify_policy_expire(struct xfrm_policy *xp, const struct km_event *c) @@ -3160,6 +3168,7 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct struct sadb_x_sec_ctx *sec_ctx; struct xfrm_sec_ctx *xfrm_ctx; int ctx_size = 0; + int alg_size = 0; sockaddr_size = pfkey_sockaddr_size(x->props.family); if (!sockaddr_size) @@ -3171,16 +3180,16 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct sizeof(struct sadb_x_policy); if (x->id.proto == IPPROTO_AH) - size += count_ah_combs(t); + alg_size = count_ah_combs(t); else if (x->id.proto == IPPROTO_ESP) - size += count_esp_combs(t); + alg_size = count_esp_combs(t); if ((xfrm_ctx = x->security)) { ctx_size = PFKEY_ALIGN8(xfrm_ctx->ctx_len); size += sizeof(struct sadb_x_sec_ctx) + ctx_size; } - skb = alloc_skb(size + 16, GFP_ATOMIC); + skb = alloc_skb(size + alg_size + 16, GFP_ATOMIC); if (skb == NULL) return -ENOMEM; @@ -3234,10 +3243,13 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct pol->sadb_x_policy_priority = xp->priority; /* Set sadb_comb's. */ + alg_size = 0; if (x->id.proto == IPPROTO_AH) - dump_ah_combs(skb, t); + alg_size = dump_ah_combs(skb, t); else if (x->id.proto == IPPROTO_ESP) - dump_esp_combs(skb, t); + alg_size = dump_esp_combs(skb, t); + + hdr->sadb_msg_len += alg_size / 8; /* security context */ if (xfrm_ctx) { diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 9348caf1c611..5659af1bec17 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -3136,9 +3136,6 @@ static int ieee80211_set_csa_beacon(struct ieee80211_sub_if_data *sdata, case NL80211_IFTYPE_MESH_POINT: { struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; - if (params->chandef.width != sdata->vif.bss_conf.chandef.width) - return -EINVAL; - /* changes into another band are not supported */ if (sdata->vif.bss_conf.chandef.chan->band != params->chandef.chan->band) diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index 06b44c3c831a..71ebdc85755c 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c @@ -731,7 +731,7 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) { - kfree_skb(skb); + ieee80211_free_txskb(&sdata->local->hw, skb); sdata->u.mesh.mshstats.dropped_frames_no_route++; } diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c index bd88a9b80773..8c2aedf3fa74 100644 --- a/net/mac802154/iface.c +++ b/net/mac802154/iface.c @@ -669,6 +669,7 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name, sdata->dev = ndev; sdata->wpan_dev.wpan_phy = local->hw.phy; sdata->local = local; + INIT_LIST_HEAD(&sdata->wpan_dev.list); /* setup type-dependent data */ ret = ieee802154_setup_sdata(sdata, type); diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c index 060ccd0e14ce..dc1a384bc137 100644 --- a/net/mac802154/rx.c +++ b/net/mac802154/rx.c @@ -140,7 +140,7 @@ static int ieee802154_parse_frame_start(struct sk_buff *skb, struct ieee802154_hdr *hdr) { int hlen; - struct ieee802154_mac_cb *cb = mac_cb_init(skb); + struct ieee802154_mac_cb *cb = mac_cb(skb); skb_reset_mac_header(skb); @@ -302,8 +302,9 @@ void ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi) { struct ieee802154_local *local = hw_to_local(hw); + struct ieee802154_mac_cb *cb = mac_cb_init(skb); - mac_cb(skb)->lqi = lqi; + cb->lqi = lqi; skb->pkt_type = IEEE802154_RX_MSG; skb_queue_tail(&local->skb_queue, skb); tasklet_schedule(&local->tasklet); diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c index 80759aadd3e0..21149f4e0b6e 100644 --- a/net/netfilter/ipvs/ip_vs_app.c +++ b/net/netfilter/ipvs/ip_vs_app.c @@ -604,13 +604,19 @@ static const struct seq_operations ip_vs_app_seq_ops = { int __net_init ip_vs_app_net_init(struct netns_ipvs *ipvs) { INIT_LIST_HEAD(&ipvs->app_list); - proc_create_net("ip_vs_app", 0, ipvs->net->proc_net, &ip_vs_app_seq_ops, - sizeof(struct seq_net_private)); +#ifdef CONFIG_PROC_FS + if (!proc_create_net("ip_vs_app", 0, ipvs->net->proc_net, + &ip_vs_app_seq_ops, + sizeof(struct seq_net_private))) + return -ENOMEM; +#endif return 0; } void __net_exit ip_vs_app_net_cleanup(struct netns_ipvs *ipvs) { unregister_ip_vs_app(ipvs, NULL /* all */); +#ifdef CONFIG_PROC_FS remove_proc_entry("ip_vs_app", ipvs->net->proc_net); +#endif } diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index 95c35aa639ec..51679d1e2d7d 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c @@ -1230,8 +1230,8 @@ static inline int todrop_entry(struct ip_vs_conn *cp) * The drop rate array needs tuning for real environments. * Called from timer bh only => no locking */ - static const char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; - static char todrop_counter[9] = {0}; + static const signed char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + static signed char todrop_counter[9] = {0}; int i; /* if the conn entry hasn't lasted for 60 seconds, don't drop it. @@ -1378,20 +1378,36 @@ int __net_init ip_vs_conn_net_init(struct netns_ipvs *ipvs) { atomic_set(&ipvs->conn_count, 0); - proc_create_net("ip_vs_conn", 0, ipvs->net->proc_net, - &ip_vs_conn_seq_ops, sizeof(struct ip_vs_iter_state)); - proc_create_net("ip_vs_conn_sync", 0, ipvs->net->proc_net, - &ip_vs_conn_sync_seq_ops, - sizeof(struct ip_vs_iter_state)); +#ifdef CONFIG_PROC_FS + if (!proc_create_net("ip_vs_conn", 0, ipvs->net->proc_net, + &ip_vs_conn_seq_ops, + sizeof(struct ip_vs_iter_state))) + goto err_conn; + + if (!proc_create_net("ip_vs_conn_sync", 0, ipvs->net->proc_net, + &ip_vs_conn_sync_seq_ops, + sizeof(struct ip_vs_iter_state))) + goto err_conn_sync; +#endif + return 0; + +#ifdef CONFIG_PROC_FS +err_conn_sync: + remove_proc_entry("ip_vs_conn", ipvs->net->proc_net); +err_conn: + return -ENOMEM; +#endif } void __net_exit ip_vs_conn_net_cleanup(struct netns_ipvs *ipvs) { /* flush all the connection entries first */ ip_vs_conn_flush(ipvs); +#ifdef CONFIG_PROC_FS remove_proc_entry("ip_vs_conn", ipvs->net->proc_net); remove_proc_entry("ip_vs_conn_sync", ipvs->net->proc_net); +#endif } int __init ip_vs_conn_init(void) diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c index 0580e5326641..66608e6c5b0e 100644 --- a/net/nfc/nci/core.c +++ b/net/nfc/nci/core.c @@ -542,7 +542,7 @@ static int nci_open_device(struct nci_dev *ndev) skb_queue_purge(&ndev->tx_q); ndev->ops->close(ndev); - ndev->flags = 0; + ndev->flags &= BIT(NCI_UNREG); } done: diff --git a/net/nfc/nci/data.c b/net/nfc/nci/data.c index 9e3f9460f14f..5d46d8dfad72 100644 --- a/net/nfc/nci/data.c +++ b/net/nfc/nci/data.c @@ -291,8 +291,10 @@ void nci_rx_data_packet(struct nci_dev *ndev, struct sk_buff *skb) nci_plen(skb->data)); conn_info = nci_get_conn_info_by_conn_id(ndev, nci_conn_id(skb->data)); - if (!conn_info) + if (!conn_info) { + kfree_skb(skb); return; + } /* strip the nci data header */ skb_pull(skb, NCI_DATA_HDR_SIZE); diff --git a/net/nfc/nci/ntf.c b/net/nfc/nci/ntf.c index 1e8c1a12aaec..4f75453c07aa 100644 --- a/net/nfc/nci/ntf.c +++ b/net/nfc/nci/ntf.c @@ -230,6 +230,8 @@ static int nci_add_new_protocol(struct nci_dev *ndev, target->sens_res = nfca_poll->sens_res; target->sel_res = nfca_poll->sel_res; target->nfcid1_len = nfca_poll->nfcid1_len; + if (target->nfcid1_len > ARRAY_SIZE(target->nfcid1)) + return -EPROTO; if (target->nfcid1_len > 0) { memcpy(target->nfcid1, nfca_poll->nfcid1, target->nfcid1_len); @@ -238,6 +240,8 @@ static int nci_add_new_protocol(struct nci_dev *ndev, nfcb_poll = (struct rf_tech_specific_params_nfcb_poll *)params; target->sensb_res_len = nfcb_poll->sensb_res_len; + if (target->sensb_res_len > ARRAY_SIZE(target->sensb_res)) + return -EPROTO; if (target->sensb_res_len > 0) { memcpy(target->sensb_res, nfcb_poll->sensb_res, target->sensb_res_len); @@ -246,6 +250,8 @@ static int nci_add_new_protocol(struct nci_dev *ndev, nfcf_poll = (struct rf_tech_specific_params_nfcf_poll *)params; target->sensf_res_len = nfcf_poll->sensf_res_len; + if (target->sensf_res_len > ARRAY_SIZE(target->sensf_res)) + return -EPROTO; if (target->sensf_res_len > 0) { memcpy(target->sensf_res, nfcf_poll->sensf_res, target->sensf_res_len); diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index f350faef044d..e9a10a66b4ca 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -249,10 +249,17 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key) upcall.portid = ovs_vport_find_upcall_portid(p, skb); upcall.mru = OVS_CB(skb)->mru; error = ovs_dp_upcall(dp, skb, key, &upcall, 0); - if (unlikely(error)) - kfree_skb(skb); - else + switch (error) { + case 0: + case -EAGAIN: + case -ERESTARTSYS: + case -EINTR: consume_skb(skb); + break; + default: + kfree_skb(skb); + break; + } stats_counter = &stats->n_missed; goto out; } @@ -519,8 +526,9 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *skb, out: if (err) skb_tx_error(skb); - kfree_skb(user_skb); - kfree_skb(nskb); + consume_skb(user_skb); + consume_skb(nskb); + return err; } @@ -1543,7 +1551,8 @@ static void ovs_dp_reset_user_features(struct sk_buff *skb, struct genl_info *in if (IS_ERR(dp)) return; - WARN(dp->user_features, "Dropping previously announced user features\n"); + pr_warn("%s: Dropping previously announced user features\n", + ovs_dp_name(dp)); dp->user_features = 0; } diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 511253d7bb1f..5f3964635262 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2209,8 +2209,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, if (skb->ip_summed == CHECKSUM_PARTIAL) status |= TP_STATUS_CSUMNOTREADY; else if (skb->pkt_type != PACKET_OUTGOING && - (skb->ip_summed == CHECKSUM_COMPLETE || - skb_csum_unnecessary(skb))) + skb_csum_unnecessary(skb)) status |= TP_STATUS_CSUM_VALID; if (snaplen > res) @@ -3452,8 +3451,7 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, if (skb->ip_summed == CHECKSUM_PARTIAL) aux.tp_status |= TP_STATUS_CSUMNOTREADY; else if (skb->pkt_type != PACKET_OUTGOING && - (skb->ip_summed == CHECKSUM_COMPLETE || - skb_csum_unnecessary(skb))) + skb_csum_unnecessary(skb)) aux.tp_status |= TP_STATUS_CSUM_VALID; aux.tp_len = origlen; diff --git a/net/rds/tcp.c b/net/rds/tcp.c index d4e6466d3989..645cbb17c13a 100644 --- a/net/rds/tcp.c +++ b/net/rds/tcp.c @@ -176,10 +176,10 @@ void rds_tcp_reset_callbacks(struct socket *sock, */ atomic_set(&cp->cp_state, RDS_CONN_RESETTING); wait_event(cp->cp_waitq, !test_bit(RDS_IN_XMIT, &cp->cp_flags)); - lock_sock(osock->sk); /* reset receive side state for rds_tcp_data_recv() for osock */ cancel_delayed_work_sync(&cp->cp_send_w); cancel_delayed_work_sync(&cp->cp_recv_w); + lock_sock(osock->sk); if (tc->t_tinc) { rds_inc_put(&tc->t_tinc->ti_inc); tc->t_tinc = NULL; diff --git a/net/rose/rose_link.c b/net/rose/rose_link.c index 62055d3069d2..f3d7105c6cdd 100644 --- a/net/rose/rose_link.c +++ b/net/rose/rose_link.c @@ -239,6 +239,9 @@ void rose_transmit_clear_request(struct rose_neigh *neigh, unsigned int lci, uns unsigned char *dptr; int len; + if (!neigh->dev) + return; + len = AX25_BPQ_HEADER_LEN + AX25_MAX_HEADER_LEN + ROSE_MIN_LEN + 3; if ((skb = alloc_skb(len, GFP_ATOMIC)) == NULL) diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 18c207b85d51..01a177cfa533 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -2149,8 +2149,12 @@ retry: static void cake_reset(struct Qdisc *sch) { + struct cake_sched_data *q = qdisc_priv(sch); u32 c; + if (!q->tins) + return; + for (c = 0; c < CAKE_MAX_TINS; c++) cake_clear_tin(sch, c); } diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index 0424aa747c34..afe0c2d689b1 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c @@ -63,6 +63,7 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, { struct red_sched_data *q = qdisc_priv(sch); struct Qdisc *child = q->qdisc; + unsigned int len; int ret; q->vars.qavg = red_calc_qavg(&q->parms, @@ -98,9 +99,10 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, break; } + len = qdisc_pkt_len(skb); ret = qdisc_enqueue(skb, child, to_free); if (likely(ret == NET_XMIT_SUCCESS)) { - qdisc_qstats_backlog_inc(sch, skb); + sch->qstats.backlog += len; sch->q.qlen++; } else if (net_xmit_drop_count(ret)) { q->stats.pdrop++; diff --git a/net/sctp/auth.c b/net/sctp/auth.c index 9e0c98df20da..9cf61a18098a 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c @@ -886,12 +886,17 @@ int sctp_auth_set_key(struct sctp_endpoint *ep, } list_del_init(&shkey->key_list); - sctp_auth_shkey_release(shkey); list_add(&cur_key->key_list, sh_keys); - if (asoc && asoc->active_key_id == auth_key->sca_keynumber) - sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL); + if (asoc && asoc->active_key_id == auth_key->sca_keynumber && + sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL)) { + list_del_init(&cur_key->key_list); + sctp_auth_shkey_release(cur_key); + list_add(&shkey->key_list, sh_keys); + return -ENOMEM; + } + sctp_auth_shkey_release(shkey); return 0; } @@ -920,8 +925,13 @@ int sctp_auth_set_active_key(struct sctp_endpoint *ep, return -EINVAL; if (asoc) { + __u16 active_key_id = asoc->active_key_id; + asoc->active_key_id = key_id; - sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL); + if (sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL)) { + asoc->active_key_id = active_key_id; + return -ENOMEM; + } } else ep->active_key_id = key_id; diff --git a/net/tipc/discover.c b/net/tipc/discover.c index c138d68e8a69..0436c8f2967d 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c @@ -146,8 +146,8 @@ static bool tipc_disc_addr_trial_msg(struct tipc_discoverer *d, { struct net *net = d->net; struct tipc_net *tn = tipc_net(net); - bool trial = time_before(jiffies, tn->addr_trial_end); u32 self = tipc_own_addr(net); + bool trial = time_before(jiffies, tn->addr_trial_end) && !self; if (mtyp == DSC_TRIAL_FAIL_MSG) { if (!trial) @@ -208,7 +208,10 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *skb, u32 self; int err; - skb_linearize(skb); + if (skb_linearize(skb)) { + kfree_skb(skb); + return; + } hdr = buf_msg(skb); if (caps & TIPC_NODE_ID128) diff --git a/net/tipc/link.c b/net/tipc/link.c index 0d2ee4eb131f..ee4aca974622 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c @@ -1595,7 +1595,9 @@ static int tipc_link_proto_rcv(struct tipc_link *l, struct sk_buff *skb, if (tipc_own_addr(l->net) > msg_prevnode(hdr)) l->net_plane = msg_net_plane(hdr); - skb_linearize(skb); + if (skb_linearize(skb)) + goto exit; + hdr = buf_msg(skb); data = msg_data(hdr); diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index 5086e27d3011..59e8e17d8da9 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c @@ -865,7 +865,7 @@ static int tipc_nl_compat_name_table_dump_header(struct tipc_nl_compat_msg *msg) }; ntq = (struct tipc_name_table_query *)TLV_DATA(msg->req); - if (TLV_GET_DATA_LEN(msg->req) < sizeof(struct tipc_name_table_query)) + if (TLV_GET_DATA_LEN(msg->req) < (int)sizeof(struct tipc_name_table_query)) return -EINVAL; depth = ntohl(ntq->depth); diff --git a/net/tipc/topsrv.c b/net/tipc/topsrv.c index 1c4733153d74..d3bb19cd0ec0 100644 --- a/net/tipc/topsrv.c +++ b/net/tipc/topsrv.c @@ -184,7 +184,7 @@ static void tipc_conn_close(struct tipc_conn *con) conn_put(con); } -static struct tipc_conn *tipc_conn_alloc(struct tipc_topsrv *s) +static struct tipc_conn *tipc_conn_alloc(struct tipc_topsrv *s, struct socket *sock) { struct tipc_conn *con; int ret; @@ -210,10 +210,12 @@ static struct tipc_conn *tipc_conn_alloc(struct tipc_topsrv *s) } con->conid = ret; s->idr_in_use++; - spin_unlock_bh(&s->idr_lock); set_bit(CF_CONNECTED, &con->flags); con->server = s; + con->sock = sock; + conn_get(con); + spin_unlock_bh(&s->idr_lock); return con; } @@ -457,17 +459,24 @@ static void tipc_conn_data_ready(struct sock *sk) static void tipc_topsrv_accept(struct work_struct *work) { struct tipc_topsrv *srv = container_of(work, struct tipc_topsrv, awork); - struct socket *lsock = srv->listener; - struct socket *newsock; + struct socket *newsock, *lsock; struct tipc_conn *con; struct sock *newsk; int ret; + spin_lock_bh(&srv->idr_lock); + if (!srv->listener) { + spin_unlock_bh(&srv->idr_lock); + return; + } + lsock = srv->listener; + spin_unlock_bh(&srv->idr_lock); + while (1) { ret = kernel_accept(lsock, &newsock, O_NONBLOCK); if (ret < 0) return; - con = tipc_conn_alloc(srv); + con = tipc_conn_alloc(srv, newsock); if (IS_ERR(con)) { ret = PTR_ERR(con); sock_release(newsock); @@ -479,11 +488,11 @@ static void tipc_topsrv_accept(struct work_struct *work) newsk->sk_data_ready = tipc_conn_data_ready; newsk->sk_write_space = tipc_conn_write_space; newsk->sk_user_data = con; - con->sock = newsock; write_unlock_bh(&newsk->sk_callback_lock); /* Wake up receive process in case of 'SYN+' message */ newsk->sk_data_ready(newsk); + conn_put(con); } } @@ -496,7 +505,7 @@ static void tipc_topsrv_listener_data_ready(struct sock *sk) read_lock_bh(&sk->sk_callback_lock); srv = sk->sk_user_data; - if (srv->listener) + if (srv) queue_work(srv->rcv_wq, &srv->awork); read_unlock_bh(&sk->sk_callback_lock); } @@ -575,19 +584,19 @@ bool tipc_topsrv_kern_subscr(struct net *net, u32 port, u32 type, u32 lower, sub.seq.upper = upper; sub.timeout = TIPC_WAIT_FOREVER; sub.filter = filter; - *(u32 *)&sub.usr_handle = port; + *(u64 *)&sub.usr_handle = (u64)port; - con = tipc_conn_alloc(tipc_topsrv(net)); + con = tipc_conn_alloc(tipc_topsrv(net), NULL); if (IS_ERR(con)) return false; *conid = con->conid; - con->sock = NULL; rc = tipc_conn_rcv_sub(tipc_topsrv(net), con, &sub); - if (rc >= 0) - return true; + if (rc) + conn_put(con); + conn_put(con); - return false; + return !rc; } void tipc_topsrv_kern_unsubscr(struct net *net, int conid) @@ -706,8 +715,9 @@ static void tipc_topsrv_stop(struct net *net) __module_get(lsock->sk->sk_prot_creator->owner); srv->listener = NULL; spin_unlock_bh(&srv->idr_lock); - sock_release(lsock); + tipc_topsrv_work_stop(srv); + sock_release(lsock); idr_destroy(&srv->conn_idr); kfree(srv); } diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c index c04d4ca1bf6b..b4eccf886872 100644 --- a/net/vmw_vsock/virtio_transport_common.c +++ b/net/vmw_vsock/virtio_transport_common.c @@ -1083,7 +1083,7 @@ EXPORT_SYMBOL_GPL(virtio_transport_recv_pkt); void virtio_transport_free_pkt(struct virtio_vsock_pkt *pkt) { - kfree(pkt->buf); + kvfree(pkt->buf); kfree(pkt); } EXPORT_SYMBOL_GPL(virtio_transport_free_pkt); diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 80bbae969278..731e9d7835ba 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -1088,6 +1088,8 @@ static void regdb_fw_cb(const struct firmware *fw, void *context) static int query_regdb_file(const char *alpha2) { + int err; + ASSERT_RTNL(); if (regdb) @@ -1097,9 +1099,13 @@ static int query_regdb_file(const char *alpha2) if (!alpha2) return -ENOMEM; - return request_firmware_nowait(THIS_MODULE, true, "regulatory.db", - ®_pdev->dev, GFP_KERNEL, - (void *)alpha2, regdb_fw_cb); + err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db", + ®_pdev->dev, GFP_KERNEL, + (void *)alpha2, regdb_fw_cb); + if (err) + kfree(alpha2); + + return err; } int reg_reload_regdb(void) diff --git a/net/x25/x25_dev.c b/net/x25/x25_dev.c index 30f71620d4e3..24f2676e3b66 100644 --- a/net/x25/x25_dev.c +++ b/net/x25/x25_dev.c @@ -122,7 +122,7 @@ int x25_lapb_receive_frame(struct sk_buff *skb, struct net_device *dev, if (!pskb_may_pull(skb, 1)) { x25_neigh_put(nb); - return 0; + goto drop; } switch (skb->data[0]) { diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c index a00ec715aa46..32aed1d0f6ee 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c @@ -216,6 +216,7 @@ static void ipcomp_free_scratches(void) vfree(*per_cpu_ptr(scratches, i)); free_percpu(scratches); + ipcomp_scratches = NULL; } static void * __percpu *ipcomp_alloc_scratches(void) diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn index 6b15c3b6c012..0af8cf6c61fc 100644 --- a/scripts/Makefile.extrawarn +++ b/scripts/Makefile.extrawarn @@ -73,5 +73,6 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-zero-length) KBUILD_CFLAGS += $(call cc-disable-warning, uninitialized) KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) +KBUILD_CFLAGS += $(call cc-disable-warning, cast-function-type-strict) endif endif diff --git a/scripts/extract-cert.c b/scripts/extract-cert.c index b071bf476fea..dd1a4bd706a2 100644 --- a/scripts/extract-cert.c +++ b/scripts/extract-cert.c @@ -23,6 +23,13 @@ #include <openssl/err.h> #include <openssl/engine.h> +/* + * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. + * + * Remove this if/when that API is no longer used + */ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #define PKEY_ID_PKCS7 2 static __attribute__((noreturn)) diff --git a/scripts/faddr2line b/scripts/faddr2line index 70f8c3ecd555..42c46f498021 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -73,7 +73,8 @@ command -v ${ADDR2LINE} >/dev/null 2>&1 || die "${ADDR2LINE} isn't installed" find_dir_prefix() { local objfile=$1 - local start_kernel_addr=$(${READELF} --symbols --wide $objfile | ${AWK} '$8 == "start_kernel" {printf "0x%s", $2}') + local start_kernel_addr=$(${READELF} --symbols --wide $objfile | sed 's/\[.*\]//' | + ${AWK} '$8 == "start_kernel" {printf "0x%s", $2}') [[ -z $start_kernel_addr ]] && return local file_line=$(${ADDR2LINE} -e $objfile $start_kernel_addr) @@ -177,7 +178,7 @@ __faddr2line() { found=2 break fi - done < <(${READELF} --symbols --wide $objfile | ${AWK} -v sec=$sym_sec '$7 == sec' | sort --key=2) + done < <(${READELF} --symbols --wide $objfile | sed 's/\[.*\]//' | ${AWK} -v sec=$sym_sec '$7 == sec' | sort --key=2) if [[ $found = 0 ]]; then warn "can't find symbol: sym_name: $sym_name sym_sec: $sym_sec sym_addr: $sym_addr sym_elf_size: $sym_elf_size" @@ -258,7 +259,7 @@ __faddr2line() { DONE=1 - done < <(${READELF} --symbols --wide $objfile | ${AWK} -v fn=$sym_name '$4 == "FUNC" && $8 == fn') + done < <(${READELF} --symbols --wide $objfile | sed 's/\[.*\]//' | ${AWK} -v fn=$sym_name '$4 == "FUNC" && $8 == fn') } [[ $# -lt 2 ]] && usage diff --git a/scripts/selinux/install_policy.sh b/scripts/selinux/install_policy.sh index 0b86c47baf7d..481d88b2c582 100755 --- a/scripts/selinux/install_policy.sh +++ b/scripts/selinux/install_policy.sh @@ -57,7 +57,7 @@ fi cd /etc/selinux/dummy/contexts/files $SF file_contexts / -mounts=`cat /proc/$$/mounts | egrep "ext2|ext3|xfs|jfs|ext4|ext4dev|gfs2" | awk '{ print $2 '}` +mounts=`cat /proc/$$/mounts | grep -E "ext2|ext3|xfs|jfs|ext4|ext4dev|gfs2" | awk '{ print $2 '}` $SF file_contexts $mounts diff --git a/scripts/sign-file.c b/scripts/sign-file.c index fbd34b8e8f57..7434e9ea926e 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -30,6 +30,13 @@ #include <openssl/engine.h> /* + * OpenSSL 3.0 deprecates the OpenSSL's ENGINE API. + * + * Remove this if/when that API is no longer used + */ +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + +/* * Use CMS if we have openssl-1.0.0 or newer available - otherwise we have to * assume that it's not available and its header file is missing and that we * should use PKCS#7 instead. Switching to the older PKCS#7 format restricts diff --git a/security/Kconfig.hardening b/security/Kconfig.hardening index 234250ce0b6c..e0423eaed45e 100644 --- a/security/Kconfig.hardening +++ b/security/Kconfig.hardening @@ -22,13 +22,23 @@ menu "Memory initialization" config CC_HAS_AUTO_VAR_INIT_PATTERN def_bool $(cc-option,-ftrivial-auto-var-init=pattern) -config CC_HAS_AUTO_VAR_INIT_ZERO +config CC_HAS_AUTO_VAR_INIT_ZERO_BARE + def_bool $(cc-option,-ftrivial-auto-var-init=zero) + +config CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER + # Clang 16 and later warn about using the -enable flag, but it + # is required before then. def_bool $(cc-option,-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang) + depends on !CC_HAS_AUTO_VAR_INIT_ZERO_BARE + +config CC_HAS_AUTO_VAR_INIT_ZERO + def_bool CC_HAS_AUTO_VAR_INIT_ZERO_BARE || CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER choice prompt "Initialize kernel stack variables at function entry" default GCC_PLUGIN_STRUCTLEAK_BYREF_ALL if COMPILE_TEST && GCC_PLUGINS default INIT_STACK_ALL_PATTERN if COMPILE_TEST && CC_HAS_AUTO_VAR_INIT_PATTERN + default INIT_STACK_ALL_ZERO if CC_HAS_AUTO_VAR_INIT_ZERO default INIT_STACK_NONE help This option enables initialization of stack variables at @@ -39,11 +49,11 @@ choice syscalls. This chooses the level of coverage over classes of potentially - uninitialized variables. The selected class will be + uninitialized variables. The selected class of variable will be initialized before use in a function. config INIT_STACK_NONE - bool "no automatic initialization (weakest)" + bool "no automatic stack variable initialization (weakest)" help Disable automatic stack variable initialization. This leaves the kernel vulnerable to the standard @@ -51,7 +61,7 @@ choice and information exposures. config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL - bool "zero-init anything passed by reference (very strong)" + bool "zero-init everything passed by reference (very strong)" depends on GCC_PLUGINS select GCC_PLUGIN_STRUCTLEAK help @@ -61,33 +71,44 @@ choice of uninitialized stack variable exploits and information exposures. + As a side-effect, this keeps a lot of variables on the + stack that can otherwise be optimized out, so combining + this with CONFIG_KASAN_STACK can lead to a stack overflow + and is disallowed. + config INIT_STACK_ALL_PATTERN - bool "0xAA-init everything on the stack (strongest)" + bool "pattern-init everything (strongest)" depends on CC_HAS_AUTO_VAR_INIT_PATTERN help - Initializes everything on the stack with a 0xAA - pattern. This is intended to eliminate all classes - of uninitialized stack variable exploits and information - exposures, even variables that were warned to have been - left uninitialized. + Initializes everything on the stack (including padding) + with a specific debug value. This is intended to eliminate + all classes of uninitialized stack variable exploits and + information exposures, even variables that were warned about + having been left uninitialized. Pattern initialization is known to provoke many existing bugs related to uninitialized locals, e.g. pointers receive - non-NULL values, buffer sizes and indices are very big. + non-NULL values, buffer sizes and indices are very big. The + pattern is situation-specific; Clang on 64-bit uses 0xAA + repeating for all types and padding except float and double + which use 0xFF repeating (-NaN). Clang on 32-bit uses 0xFF + repeating for all types and padding. config INIT_STACK_ALL_ZERO - bool "zero-init everything on the stack (strongest and safest)" + bool "zero-init everything (strongest and safest)" depends on CC_HAS_AUTO_VAR_INIT_ZERO help - Initializes everything on the stack with a zero - value. This is intended to eliminate all classes - of uninitialized stack variable exploits and information - exposures, even variables that were warned to have been - left uninitialized. - - Zero initialization provides safe defaults for strings, - pointers, indices and sizes, and is therefore - more suitable as a security mitigation measure. + Initializes everything on the stack (including padding) + with a zero value. This is intended to eliminate all + classes of uninitialized stack variable exploits and + information exposures, even variables that were warned + about having been left uninitialized. + + Zero initialization provides safe defaults for strings + (immediately NUL-terminated), pointers (NULL), indices + (index 0), and sizes (0 length), so it is therefore more + suitable as a production security mitigation than pattern + initialization. endchoice diff --git a/security/commoncap.c b/security/commoncap.c index 876cfe01d939..28b204eacc7a 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -397,8 +397,10 @@ int cap_inode_getsecurity(struct inode *inode, const char *name, void **buffer, &tmpbuf, size, GFP_NOFS); dput(dentry); - if (ret < 0 || !tmpbuf) - return ret; + if (ret < 0 || !tmpbuf) { + size = ret; + goto out_free; + } fs_ns = inode->i_sb->s_user_ns; cap = (struct vfs_cap_data *) tmpbuf; diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c index 000b58522106..2811e1f1e2fa 100644 --- a/sound/aoa/soundbus/i2sbus/core.c +++ b/sound/aoa/soundbus/i2sbus/core.c @@ -148,6 +148,7 @@ static int i2sbus_get_and_fixup_rsrc(struct device_node *np, int index, return rc; } +/* Returns 1 if added, 0 for otherwise; don't return a negative value! */ /* FIXME: look at device node refcounting */ static int i2sbus_add_dev(struct macio_dev *macio, struct i2sbus_control *control, @@ -213,7 +214,7 @@ static int i2sbus_add_dev(struct macio_dev *macio, * either as the second one in that case is just a modem. */ if (!ok) { kfree(dev); - return -ENODEV; + return 0; } mutex_init(&dev->lock); @@ -302,6 +303,10 @@ static int i2sbus_add_dev(struct macio_dev *macio, if (soundbus_add_one(&dev->sound)) { printk(KERN_DEBUG "i2sbus: device registration error!\n"); + if (dev->sound.ofdev.dev.kobj.state_initialized) { + soundbus_dev_put(&dev->sound); + return 0; + } goto err; } diff --git a/sound/core/pcm_dmaengine.c b/sound/core/pcm_dmaengine.c index 8eb58c709b14..6f6da1128edc 100644 --- a/sound/core/pcm_dmaengine.c +++ b/sound/core/pcm_dmaengine.c @@ -139,12 +139,14 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_set_config_from_dai_data); static void dmaengine_pcm_dma_complete(void *arg) { + unsigned int new_pos; struct snd_pcm_substream *substream = arg; struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream); - prtd->pos += snd_pcm_lib_period_bytes(substream); - if (prtd->pos >= snd_pcm_lib_buffer_bytes(substream)) - prtd->pos = 0; + new_pos = prtd->pos + snd_pcm_lib_period_bytes(substream); + if (new_pos >= snd_pcm_lib_buffer_bytes(substream)) + new_pos = 0; + prtd->pos = new_pos; snd_pcm_period_elapsed(substream); } diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c index f4f855d7a791..d84c7271c2f1 100644 --- a/sound/core/rawmidi.c +++ b/sound/core/rawmidi.c @@ -1655,10 +1655,8 @@ static int snd_rawmidi_free(struct snd_rawmidi *rmidi) snd_info_free_entry(rmidi->proc_entry); rmidi->proc_entry = NULL; - mutex_lock(®ister_mutex); if (rmidi->ops && rmidi->ops->dev_unregister) rmidi->ops->dev_unregister(rmidi); - mutex_unlock(®ister_mutex); snd_rawmidi_free_substreams(&rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT]); snd_rawmidi_free_substreams(&rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT]); diff --git a/sound/core/seq/seq_memory.c b/sound/core/seq/seq_memory.c index 5b0388202bac..ac854beb8347 100644 --- a/sound/core/seq/seq_memory.c +++ b/sound/core/seq/seq_memory.c @@ -126,15 +126,19 @@ EXPORT_SYMBOL(snd_seq_dump_var_event); * expand the variable length event to linear buffer space. */ -static int seq_copy_in_kernel(char **bufptr, const void *src, int size) +static int seq_copy_in_kernel(void *ptr, void *src, int size) { + char **bufptr = ptr; + memcpy(*bufptr, src, size); *bufptr += size; return 0; } -static int seq_copy_in_user(char __user **bufptr, const void *src, int size) +static int seq_copy_in_user(void *ptr, void *src, int size) { + char __user **bufptr = ptr; + if (copy_to_user(*bufptr, src, size)) return -EFAULT; *bufptr += size; @@ -163,8 +167,7 @@ int snd_seq_expand_var_event(const struct snd_seq_event *event, int count, char return newlen; } err = snd_seq_dump_var_event(event, - in_kernel ? (snd_seq_dump_func_t)seq_copy_in_kernel : - (snd_seq_dump_func_t)seq_copy_in_user, + in_kernel ? seq_copy_in_kernel : seq_copy_in_user, &buf); return err < 0 ? err : newlen; } diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c index 0a5c66229a22..cb065746d5c4 100644 --- a/sound/core/sound_oss.c +++ b/sound/core/sound_oss.c @@ -177,7 +177,6 @@ int snd_unregister_oss_device(int type, struct snd_card *card, int dev) mutex_unlock(&sound_oss_mutex); return -ENOENT; } - unregister_sound_special(minor); switch (SNDRV_MINOR_OSS_DEVICE(minor)) { case SNDRV_MINOR_OSS_PCM: track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_AUDIO); @@ -189,12 +188,18 @@ int snd_unregister_oss_device(int type, struct snd_card *card, int dev) track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1); break; } - if (track2 >= 0) { - unregister_sound_special(track2); + if (track2 >= 0) snd_oss_minors[track2] = NULL; - } snd_oss_minors[minor] = NULL; mutex_unlock(&sound_oss_mutex); + + /* call unregister_sound_special() outside sound_oss_mutex; + * otherwise may deadlock, as it can trigger the release of a card + */ + unregister_sound_special(minor); + if (track2 >= 0) + unregister_sound_special(track2); + kfree(mptr); return 0; } diff --git a/sound/hda/hdac_sysfs.c b/sound/hda/hdac_sysfs.c index fb2aa344981e..ce2af695a19a 100644 --- a/sound/hda/hdac_sysfs.c +++ b/sound/hda/hdac_sysfs.c @@ -346,8 +346,10 @@ static int add_widget_node(struct kobject *parent, hda_nid_t nid, return -ENOMEM; kobject_init(kobj, &widget_ktype); err = kobject_add(kobj, parent, "%02x", nid); - if (err < 0) + if (err < 0) { + kobject_put(kobj); return err; + } err = sysfs_create_group(kobj, group); if (err < 0) { kobject_put(kobj); diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 34d75d4fb93f..a276c4283c7b 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c @@ -1965,6 +1965,7 @@ static int snd_ac97_dev_register(struct snd_device *device) snd_ac97_get_short_name(ac97)); if ((err = device_register(&ac97->dev)) < 0) { ac97_err(ac97, "Can't register ac97 bus\n"); + put_device(&ac97->dev); ac97->dev.bus = NULL; return err; } diff --git a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h index e3e31f07d766..631eafc4143e 100644 --- a/sound/pci/au88x0/au88x0.h +++ b/sound/pci/au88x0/au88x0.h @@ -153,7 +153,7 @@ struct snd_vortex { #ifndef CHIP_AU8810 stream_t dma_wt[NR_WT]; wt_voice_t wt_voice[NR_WT]; /* WT register cache. */ - char mixwt[(NR_WT / NR_WTPB) * 6]; /* WT mixin objects */ + s8 mixwt[(NR_WT / NR_WTPB) * 6]; /* WT mixin objects */ #endif /* Global resources */ @@ -247,8 +247,8 @@ static int vortex_alsafmt_aspfmt(snd_pcm_format_t alsafmt, vortex_t *v); static void vortex_connect_default(vortex_t * vortex, int en); static int vortex_adb_allocroute(vortex_t * vortex, int dma, int nr_ch, int dir, int type, int subdev); -static char vortex_adb_checkinout(vortex_t * vortex, int resmap[], int out, - int restype); +static int vortex_adb_checkinout(vortex_t * vortex, int resmap[], int out, + int restype); #ifndef CHIP_AU8810 static int vortex_wt_allocroute(vortex_t * vortex, int dma, int nr_ch); static void vortex_wt_connect(vortex_t * vortex, int en); diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c index 2e5b460a847c..49e5bd078ad0 100644 --- a/sound/pci/au88x0/au88x0_core.c +++ b/sound/pci/au88x0/au88x0_core.c @@ -2004,7 +2004,7 @@ static int resnum[VORTEX_RESOURCE_LAST] = out: Mean checkout if != 0. Else mean Checkin resource. restype: Indicates type of resource to be checked in or out. */ -static char +static int vortex_adb_checkinout(vortex_t * vortex, int resmap[], int out, int restype) { int i, qty = resnum[restype], resinuse = 0; diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index d3d26be93cd2..40d596248fab 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2638,7 +2638,8 @@ static const struct pci_device_id azx_ids[] = { .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM }, /* Poulsbo */ { PCI_DEVICE(0x8086, 0x811b), - .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE }, + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE | + AZX_DCAPS_POSFIX_LPIB }, /* Oaktrail */ { PCI_DEVICE(0x8086, 0x080a), .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE }, diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index 004a7772bb5d..23f00ba993cb 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -1070,6 +1070,7 @@ static const struct snd_pci_quirk ca0132_quirks[] = { SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI), SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI), SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI), + SND_PCI_QUIRK(0x3842, 0x1055, "EVGA Z390 DARK", QUIRK_R3DI), SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D), {} }; diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index cb556390de22..9670db6ad1e1 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -7081,7 +7081,6 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1028, 0x0871, "Dell Precision 3630", ALC255_FIXUP_DELL_HEADSET_MIC), SND_PCI_QUIRK(0x1028, 0x0872, "Dell Precision 3630", ALC255_FIXUP_DELL_HEADSET_MIC), SND_PCI_QUIRK(0x1028, 0x0873, "Dell Precision 3930", ALC255_FIXUP_DUMMY_LINEOUT_VERB), - SND_PCI_QUIRK(0x1028, 0x087d, "Dell Precision 5530", ALC289_FIXUP_DUAL_SPK), SND_PCI_QUIRK(0x1028, 0x08ad, "Dell WYSE AIO", ALC225_FIXUP_DELL_WYSE_AIO_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x08ae, "Dell WYSE NB", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0935, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB), diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 13e752f8b3f7..0708b5019910 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -1769,6 +1769,7 @@ static int sgtl5000_i2c_remove(struct i2c_client *client) { struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client); + regmap_write(sgtl5000->regmap, SGTL5000_CHIP_CLK_CTRL, SGTL5000_CHIP_CLK_CTRL_DEFAULT); regmap_write(sgtl5000->regmap, SGTL5000_CHIP_DIG_POWER, SGTL5000_DIG_POWER_DEFAULT); regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, SGTL5000_ANA_POWER_DEFAULT); diff --git a/sound/soc/fsl/eukrea-tlv320.c b/sound/soc/fsl/eukrea-tlv320.c index 30a3d68b5c03..3705b003f528 100644 --- a/sound/soc/fsl/eukrea-tlv320.c +++ b/sound/soc/fsl/eukrea-tlv320.c @@ -87,7 +87,7 @@ static int eukrea_tlv320_probe(struct platform_device *pdev) int ret; int int_port = 0, ext_port; struct device_node *np = pdev->dev.of_node; - struct device_node *ssi_np = NULL, *codec_np = NULL; + struct device_node *ssi_np = NULL, *codec_np = NULL, *tmp_np = NULL; eukrea_tlv320.dev = &pdev->dev; if (np) { @@ -144,7 +144,7 @@ static int eukrea_tlv320_probe(struct platform_device *pdev) } if (machine_is_eukrea_cpuimx27() || - of_find_compatible_node(NULL, NULL, "fsl,imx21-audmux")) { + (tmp_np = of_find_compatible_node(NULL, NULL, "fsl,imx21-audmux"))) { imx_audmux_v1_configure_port(MX27_AUDMUX_HPCR1_SSI0, IMX_AUDMUX_V1_PCR_SYN | IMX_AUDMUX_V1_PCR_TFSDIR | @@ -159,10 +159,11 @@ static int eukrea_tlv320_probe(struct platform_device *pdev) IMX_AUDMUX_V1_PCR_SYN | IMX_AUDMUX_V1_PCR_RXDSEL(MX27_AUDMUX_HPCR1_SSI0) ); + of_node_put(tmp_np); } else if (machine_is_eukrea_cpuimx25sd() || machine_is_eukrea_cpuimx35sd() || machine_is_eukrea_cpuimx51sd() || - of_find_compatible_node(NULL, NULL, "fsl,imx31-audmux")) { + (tmp_np = of_find_compatible_node(NULL, NULL, "fsl,imx31-audmux"))) { if (!np) ext_port = machine_is_eukrea_cpuimx25sd() ? 4 : 3; @@ -179,6 +180,7 @@ static int eukrea_tlv320_probe(struct platform_device *pdev) IMX_AUDMUX_V2_PTCR_SYN, IMX_AUDMUX_V2_PDCR_RXDSEL(int_port) ); + of_node_put(tmp_np); } else { if (np) { /* The eukrea,asoc-tlv320 driver was explicitly diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index df02898dcd13..c13c48bec0bb 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3948,10 +3948,23 @@ EXPORT_SYMBOL_GPL(snd_soc_of_get_dai_link_codecs); static int __init snd_soc_init(void) { + int ret; + snd_soc_debugfs_init(); - snd_soc_util_init(); + ret = snd_soc_util_init(); + if (ret) + goto err_util_init; - return platform_driver_register(&soc_driver); + ret = platform_driver_register(&soc_driver); + if (ret) + goto err_register; + return 0; + +err_register: + snd_soc_util_exit(); +err_util_init: + snd_soc_debugfs_exit(); + return ret; } module_init(snd_soc_init); diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index e4de035b8c35..d6276467d3e5 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -1367,6 +1367,8 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe, return; be_substream = snd_soc_dpcm_get_substream(be, stream); + if (!be_substream) + return; list_for_each_entry(dpcm, &be->dpcm[stream].fe_clients, list_fe) { if (dpcm->fe == fe) diff --git a/sound/soc/soc-utils.c b/sound/soc/soc-utils.c index e0c93496c0cd..ba7e5ee30f66 100644 --- a/sound/soc/soc-utils.c +++ b/sound/soc/soc-utils.c @@ -373,7 +373,7 @@ int __init snd_soc_util_init(void) return ret; } -void __exit snd_soc_util_exit(void) +void snd_soc_util_exit(void) { platform_driver_unregister(&soc_dummy_driver); platform_device_unregister(soc_dummy_dev); diff --git a/sound/synth/emux/emux.c b/sound/synth/emux/emux.c index d8140ad98d5f..6f6f40fbe548 100644 --- a/sound/synth/emux/emux.c +++ b/sound/synth/emux/emux.c @@ -138,15 +138,10 @@ EXPORT_SYMBOL(snd_emux_register); */ int snd_emux_free(struct snd_emux *emu) { - unsigned long flags; - if (! emu) return -EINVAL; - spin_lock_irqsave(&emu->voice_lock, flags); - if (emu->timer_active) - del_timer(&emu->tlist); - spin_unlock_irqrestore(&emu->voice_lock, flags); + del_timer_sync(&emu->tlist); snd_emux_proc_free(emu); snd_emux_delete_virmidi(emu); diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index 727ef9889e94..e428d8b36c00 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -86,12 +86,13 @@ static inline unsigned get_usb_high_speed_rate(unsigned int rate) */ static void release_urb_ctx(struct snd_urb_ctx *u) { - if (u->buffer_size) + if (u->urb && u->buffer_size) usb_free_coherent(u->ep->chip->dev, u->buffer_size, u->urb->transfer_buffer, u->urb->transfer_dma); usb_free_urb(u->urb); u->urb = NULL; + u->buffer_size = 0; } static const char *usb_error_string(int err) @@ -816,6 +817,7 @@ static int sync_ep_set_params(struct snd_usb_endpoint *ep) if (!ep->syncbuf) return -ENOMEM; + ep->nurbs = SYNC_URBS; for (i = 0; i < SYNC_URBS; i++) { struct snd_urb_ctx *u = &ep->urb[i]; u->index = i; @@ -835,8 +837,6 @@ static int sync_ep_set_params(struct snd_usb_endpoint *ep) u->urb->complete = snd_complete_urb; } - ep->nurbs = SYNC_URBS; - return 0; out_of_memory: diff --git a/sound/usb/midi.c b/sound/usb/midi.c index c9c604f0e1ff..78637bfafd09 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -1149,10 +1149,8 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) port = &umidi->endpoints[i].out->ports[j]; break; } - if (!port) { - snd_BUG(); + if (!port) return -ENXIO; - } substream->runtime->private_data = port; port->state = STATE_UNKNOWN; diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 1e0d94603692..e72f744bc305 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -2110,6 +2110,10 @@ YAMAHA_DEVICE(0x7010, "UB99"), } }, { + /* M-Audio Micro */ + USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a), +}, +{ USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030), .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { /* .vendor_name = "M-Audio", */ @@ -3527,6 +3531,64 @@ ALC1220_VB_DESKTOP(0x26ce, 0x0a01), /* Asrock TRX40 Creator */ }, /* + * MacroSilicon MS2100/MS2106 based AV capture cards + * + * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch. + * They also need QUIRK_AUDIO_ALIGN_TRANSFER, which makes one wonder if + * they pretend to be 96kHz mono as a workaround for stereo being broken + * by that... + * + * They also have an issue with initial stream alignment that causes the + * channels to be swapped and out of phase, which is dealt with in quirks.c. + */ +{ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | + USB_DEVICE_ID_MATCH_INT_CLASS | + USB_DEVICE_ID_MATCH_INT_SUBCLASS, + .idVendor = 0x534d, + .idProduct = 0x0021, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL, + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "MacroSilicon", + .product_name = "MS210x", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = &(const struct snd_usb_audio_quirk[]) { + { + .ifnum = 2, + .type = QUIRK_AUDIO_ALIGN_TRANSFER, + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_STANDARD_MIXER, + }, + { + .ifnum = 3, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 2, + .iface = 3, + .altsetting = 1, + .altset_idx = 1, + .attributes = 0, + .endpoint = 0x82, + .ep_attr = USB_ENDPOINT_XFER_ISOC | + USB_ENDPOINT_SYNC_ASYNC, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 48000, + .rate_max = 48000, + } + }, + { + .ifnum = -1 + } + } + } +}, + +/* * MacroSilicon MS2109 based HDMI capture cards * * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch. diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 75a5a78009c8..45b7e60b915b 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1406,6 +1406,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, /* XMOS based USB DACs */ switch (chip->usb_id) { case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */ + case USB_ID(0x21ed, 0xd75a): /* Accuphase DAC-60 option card */ case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */ case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */ if (fp->altsetting == 2) diff --git a/techpack/camera/drivers/cam_req_mgr/cam_mem_mgr.c b/techpack/camera/drivers/cam_req_mgr/cam_mem_mgr.c index 9e056cb65d24..77622e2984dc 100644 --- a/techpack/camera/drivers/cam_req_mgr/cam_mem_mgr.c +++ b/techpack/camera/drivers/cam_req_mgr/cam_mem_mgr.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020, 2022 The Linux Foundation. All rights reserved. */ #include <linux/module.h> @@ -682,7 +682,7 @@ int cam_mem_mgr_alloc_and_map(struct cam_mem_mgr_alloc_cmd *cmd) if (rc) { CAM_ERR(CAM_MEM, "Failed in map_hw_va, len=%llu, flags=0x%x, fd=%d, region=%d, num_hdl=%d, rc=%d", - cmd->len, cmd->flags, fd, region, + len, cmd->flags, fd, region, cmd->num_hdl, rc); goto map_hw_fail; } @@ -708,7 +708,7 @@ int cam_mem_mgr_alloc_and_map(struct cam_mem_mgr_alloc_cmd *cmd) tbl.bufq[idx].kmdvaddr = kvaddr; tbl.bufq[idx].vaddr = hw_vaddr; tbl.bufq[idx].dma_buf = dmabuf; - tbl.bufq[idx].len = cmd->len; + tbl.bufq[idx].len = len; tbl.bufq[idx].num_hdl = cmd->num_hdl; memcpy(tbl.bufq[idx].hdls, cmd->mmu_hdls, sizeof(int32_t) * cmd->num_hdl); diff --git a/techpack/camera/drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c b/techpack/camera/drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c index cc619cbe3e5e..a4b0937ac355 100644 --- a/techpack/camera/drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c +++ b/techpack/camera/drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #include <linux/module.h> @@ -991,7 +992,16 @@ static int32_t cam_eeprom_init_pkt_parser(struct cam_eeprom_ctrl_t *e_ctrl, rc = -EINVAL; goto end; } + + if ((num_map + 1) >= + (MSM_EEPROM_MAX_MEM_MAP_CNT * + MSM_EEPROM_MEMORY_MAP_MAX_SIZE)) { + CAM_ERR(CAM_EEPROM, "OOB error"); + rc = -EINVAL; + goto end; + } /* Configure the following map slave address */ + map[num_map + 1].saddr = i2c_info->slave_addr; rc = cam_eeprom_update_slaveInfo(e_ctrl, cmd_buf); diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h index beab4d4e4a35..5882ff3e7094 100644 --- a/tools/arch/x86/include/asm/cpufeatures.h +++ b/tools/arch/x86/include/asm/cpufeatures.h @@ -271,6 +271,7 @@ /* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:0 (EDX), word 11 */ #define X86_FEATURE_CQM_LLC (11*32+ 1) /* LLC QoS if 1 */ +#define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17) /* "" Fill RSB on VM-Exit when EIBRS is enabled */ /* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:1 (EDX), word 12 */ #define X86_FEATURE_CQM_OCCUP_LLC (12*32+ 0) /* LLC occupancy monitoring */ diff --git a/tools/bpf/bpftool/btf_dumper.c b/tools/bpf/bpftool/btf_dumper.c index 1e7c619228a2..2da43d930ed3 100644 --- a/tools/bpf/bpftool/btf_dumper.c +++ b/tools/bpf/bpftool/btf_dumper.c @@ -164,7 +164,7 @@ static int btf_dumper_int(const struct btf_type *t, __u8 bit_offset, *(char *)data); break; case BTF_INT_BOOL: - jsonw_bool(jw, *(int *)data); + jsonw_bool(jw, *(bool *)data); break; default: /* shouldn't happen */ diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c index 55272fef3b50..d60a252577f0 100644 --- a/tools/iio/iio_utils.c +++ b/tools/iio/iio_utils.c @@ -546,6 +546,10 @@ static int calc_digits(int num) { int count = 0; + /* It takes a digit to represent zero */ + if (!num) + return 1; + while (num != 0) { num /= 10; count++; diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index f7c4dcb9d582..05cbdb6e6be8 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -1678,11 +1678,19 @@ struct sym_args { bool near; }; +static bool kern_sym_name_match(const char *kname, const char *name) +{ + size_t n = strlen(name); + + return !strcmp(kname, name) || + (!strncmp(kname, name, n) && kname[n] == '\t'); +} + static bool kern_sym_match(struct sym_args *args, const char *name, char type) { /* A function with the same name, and global or the n'th found or any */ return kallsyms__is_function(type) && - !strcmp(name, args->name) && + kern_sym_name_match(name, args->name) && ((args->global && isupper(type)) || (args->selected && ++(args->cnt) == args->idx) || (!args->global && !args->selected)); diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index 256b4755c087..e90f1044a839 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -2373,6 +2373,7 @@ static const char * const intel_pt_info_fmts[] = { [INTEL_PT_SNAPSHOT_MODE] = " Snapshot mode %"PRId64"\n", [INTEL_PT_PER_CPU_MMAPS] = " Per-cpu maps %"PRId64"\n", [INTEL_PT_MTC_BIT] = " MTC bit %#"PRIx64"\n", + [INTEL_PT_MTC_FREQ_BITS] = " MTC freq bits %#"PRIx64"\n", [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n", [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n", [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n", @@ -2387,8 +2388,12 @@ static void intel_pt_print_info(u64 *arr, int start, int finish) if (!dump_trace) return; - for (i = start; i <= finish; i++) - fprintf(stdout, intel_pt_info_fmts[i], arr[i]); + for (i = start; i <= finish; i++) { + const char *fmt = intel_pt_info_fmts[i]; + + if (fmt) + fprintf(stdout, fmt, arr[i]); + } } static void intel_pt_print_info_str(const char *name, const char *str) diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/testing/selftests/futex/functional/Makefile index 30996306cabc..479531f5865d 100644 --- a/tools/testing/selftests/futex/functional/Makefile +++ b/tools/testing/selftests/futex/functional/Makefile @@ -3,11 +3,11 @@ INCLUDES := -I../include -I../../ CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES) LDFLAGS := $(LDFLAGS) -pthread -lrt -HEADERS := \ +LOCAL_HDRS := \ ../include/futextest.h \ ../include/atomic.h \ ../include/logging.h -TEST_GEN_FILES := \ +TEST_GEN_PROGS := \ futex_wait_timeout \ futex_wait_wouldblock \ futex_requeue_pi \ @@ -21,5 +21,3 @@ TEST_PROGS := run.sh top_srcdir = ../../../../.. KSFT_KHDR_INSTALL := 1 include ../../lib.mk - -$(TEST_GEN_FILES): $(HEADERS) diff --git a/tools/testing/selftests/intel_pstate/Makefile b/tools/testing/selftests/intel_pstate/Makefile index 7340fd6a9a9f..9fc1a40b0127 100644 --- a/tools/testing/selftests/intel_pstate/Makefile +++ b/tools/testing/selftests/intel_pstate/Makefile @@ -2,10 +2,10 @@ CFLAGS := $(CFLAGS) -Wall -D_GNU_SOURCE LDLIBS := $(LDLIBS) -lm -uname_M := $(shell uname -m 2>/dev/null || echo not) -ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/) +ARCH ?= $(shell uname -m 2>/dev/null || echo not) +ARCH_PROCESSED := $(shell echo $(ARCH) | sed -e s/i.86/x86/ -e s/x86_64/x86/) -ifeq (x86,$(ARCH)) +ifeq (x86,$(ARCH_PROCESSED)) TEST_GEN_FILES := msr aperf endif diff --git a/tools/testing/selftests/kvm/include/x86.h b/tools/testing/selftests/kvm/include/x86.h index a7667a613bbc..68b69f13a50d 100644 --- a/tools/testing/selftests/kvm/include/x86.h +++ b/tools/testing/selftests/kvm/include/x86.h @@ -614,6 +614,11 @@ void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_x86_state *s #define MSR_AMD64_OSVW_STATUS 0xc0010141 #define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_DC_CFG 0xc0011022 + +#define MSR_AMD64_DE_CFG 0xc0011029 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1 +#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE BIT_ULL(MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT) + #define MSR_AMD64_BU_CFG2 0xc001102a #define MSR_AMD64_IBSFETCHCTL 0xc0011030 #define MSR_AMD64_IBSFETCHLINAD 0xc0011031 @@ -664,9 +669,6 @@ void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_x86_state *s #define FAM10H_MMIO_CONF_BASE_MASK 0xfffffffULL #define FAM10H_MMIO_CONF_BASE_SHIFT 20 #define MSR_FAM10H_NODE_ID 0xc001100c -#define MSR_F10H_DECFG 0xc0011029 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT 1 -#define MSR_F10H_DECFG_LFENCE_SERIALIZE BIT_ULL(MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT) /* K8 MSRs */ #define MSR_K8_TOP_MEM1 0xc001001a diff --git a/tools/testing/selftests/net/rtnetlink.sh b/tools/testing/selftests/net/rtnetlink.sh index ff665de788ef..10733aae2b8d 100755 --- a/tools/testing/selftests/net/rtnetlink.sh +++ b/tools/testing/selftests/net/rtnetlink.sh @@ -681,7 +681,7 @@ kci_test_ipsec_offload() tmpl proto esp src $srcip dst $dstip spi 9 \ mode transport reqid 42 check_err $? - ip x p add dir out src $dstip/24 dst $srcip/24 \ + ip x p add dir in src $dstip/24 dst $srcip/24 \ tmpl proto esp src $dstip dst $srcip spi 9 \ mode transport reqid 42 check_err $? diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh index 5a7a62d76a50..19864f1cb27a 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm.sh @@ -194,6 +194,14 @@ do shift done +if test -z "$TORTURE_INITRD" || tools/testing/selftests/rcutorture/bin/mkinitrd.sh +then + : +else + echo No initrd and unable to create one, aborting test >&2 + exit 1 +fi + CONFIGFRAG=${KVM}/configs/${TORTURE_SUITE}; export CONFIGFRAG if test -z "$configs" diff --git a/tools/testing/selftests/rcutorture/bin/mkinitrd.sh b/tools/testing/selftests/rcutorture/bin/mkinitrd.sh new file mode 100755 index 000000000000..ae773760f396 --- /dev/null +++ b/tools/testing/selftests/rcutorture/bin/mkinitrd.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# +# Create an initrd directory if one does not already exist. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, you can access it online at +# http://www.gnu.org/licenses/gpl-2.0.html. +# +# Copyright (C) IBM Corporation, 2013 +# +# Author: Connor Shu <Connor.Shu@ibm.com> + +D=tools/testing/selftests/rcutorture + +# Prerequisite checks +[ -z "$D" ] && echo >&2 "No argument supplied" && exit 1 +if [ ! -d "$D" ]; then + echo >&2 "$D does not exist: Malformed kernel source tree?" + exit 1 +fi +if [ -d "$D/initrd" ]; then + echo "$D/initrd already exists, no need to create it" + exit 0 +fi + +T=${TMPDIR-/tmp}/mkinitrd.sh.$$ +trap 'rm -rf $T' 0 2 +mkdir $T + +cat > $T/init << '__EOF___' +#!/bin/sh +while : +do + sleep 1000000 +done +__EOF___ + +# Try using dracut to create initrd +command -v dracut >/dev/null 2>&1 || { echo >&2 "Dracut not installed"; exit 1; } +echo Creating $D/initrd using dracut. + +# Filesystem creation +dracut --force --no-hostonly --no-hostonly-cmdline --module "base" $T/initramfs.img +cd $D +mkdir initrd +cd initrd +zcat $T/initramfs.img | cpio -id +cp $T/init init +echo Done creating $D/initrd using dracut +exit 0 diff --git a/tools/vm/slabinfo-gnuplot.sh b/tools/vm/slabinfo-gnuplot.sh index 0cf28aa6f21c..b809beee6e2a 100644 --- a/tools/vm/slabinfo-gnuplot.sh +++ b/tools/vm/slabinfo-gnuplot.sh @@ -157,7 +157,7 @@ do_preprocess() let lines=3 out=`basename "$in"`"-slabs-by-loss" `cat "$in" | grep -A "$lines" 'Slabs sorted by loss' |\ - egrep -iv '\-\-|Name|Slabs'\ + grep -E -iv '\-\-|Name|Slabs'\ | awk '{print $1" "$4+$2*$3" "$4}' > "$out"` if [ $? -eq 0 ]; then do_slabs_plotting "$out" @@ -166,7 +166,7 @@ do_preprocess() let lines=3 out=`basename "$in"`"-slabs-by-size" `cat "$in" | grep -A "$lines" 'Slabs sorted by size' |\ - egrep -iv '\-\-|Name|Slabs'\ + grep -E -iv '\-\-|Name|Slabs'\ | awk '{print $1" "$4" "$4-$2*$3}' > "$out"` if [ $? -eq 0 ]; then do_slabs_plotting "$out" diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c index f139b1c62ca3..cb36774a750c 100644 --- a/virt/kvm/arm/vgic/vgic-its.c +++ b/virt/kvm/arm/vgic/vgic-its.c @@ -1915,7 +1915,7 @@ static int scan_its_table(struct vgic_its *its, gpa_t base, int size, u32 esz, memset(entry, 0, esz); - while (len > 0) { + while (true) { int next_offset; size_t byte_offset; @@ -1928,6 +1928,9 @@ static int scan_its_table(struct vgic_its *its, gpa_t base, int size, u32 esz, return next_offset; byte_offset = next_offset * esz; + if (byte_offset >= len) + break; + id += next_offset; gpa += byte_offset; len -= byte_offset; |
