diff --git a/BUILD.bazel b/BUILD.bazel index 2a95ec15d4d2..a9f5348d052e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -6,6 +6,7 @@ load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels") load( "//build/kernel/kleaf:kernel.bzl", + "checkpatch", "ddk_headers", "kernel_abi", "kernel_build", @@ -40,6 +41,11 @@ _GKI_X86_64_MAKE_GOALS = [ "modules", ] +checkpatch( + name = "checkpatch", + checkpatch_pl = "scripts/checkpatch.pl", +) + write_file( name = "gki_system_dlkm_modules", out = "android/gki_system_dlkm_modules", diff --git a/Documentation/arm64/silicon-errata.rst b/Documentation/arm64/silicon-errata.rst index 808ade4cc008..3283f49006d6 100644 --- a/Documentation/arm64/silicon-errata.rst +++ b/Documentation/arm64/silicon-errata.rst @@ -139,6 +139,9 @@ stable kernels. | ARM | MMU-500 | #841119,826419 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 | ++----------------+-----------------+-----------------+-----------------------------+ ++----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 | +----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 | diff --git a/Documentation/userspace-api/media/v4l/pixfmt-packed-yuv.rst b/Documentation/userspace-api/media/v4l/pixfmt-packed-yuv.rst index bf283a1b5581..9f111ed594d2 100644 --- a/Documentation/userspace-api/media/v4l/pixfmt-packed-yuv.rst +++ b/Documentation/userspace-api/media/v4l/pixfmt-packed-yuv.rst @@ -257,12 +257,45 @@ the second byte and Y'\ :sub:`7-0` in the third byte. - The padding bits contain undefined values that must be ignored by all applications and drivers. +The next table lists the packed YUV 4:4:4 formats with 12 bits per component. +Expand the bits per component to 16 bits, data in the high bits, zeros in the low bits, +arranged in little endian order, storing 1 pixel in 6 bytes. + +.. flat-table:: Packed YUV 4:4:4 Image Formats (12bpc) + :header-rows: 1 + :stub-columns: 0 + + * - Identifier + - Code + - Byte 1-0 + - Byte 3-2 + - Byte 5-4 + - Byte 7-6 + - Byte 9-8 + - Byte 11-10 + + * .. _V4L2-PIX-FMT-YUV48-12: + + - ``V4L2_PIX_FMT_YUV48_12`` + - 'Y312' + + - Y'\ :sub:`0` + - Cb\ :sub:`0` + - Cr\ :sub:`0` + - Y'\ :sub:`1` + - Cb\ :sub:`1` + - Cr\ :sub:`1` 4:2:2 Subsampling ================= These formats, commonly referred to as YUYV or YUY2, subsample the chroma -components horizontally by 2, storing 2 pixels in 4 bytes. +components horizontally by 2, storing 2 pixels in a container. The container +is 32-bits for 8-bit formats, and 64-bits for 10+-bit formats. + +The packed YUYV formats with more than 8 bits per component are stored as four +16-bit little-endian words. Each word's most significant bits contain one +component, and the least significant bits are zero padding. .. raw:: latex @@ -270,7 +303,7 @@ components horizontally by 2, storing 2 pixels in 4 bytes. .. tabularcolumns:: |p{3.4cm}|p{1.2cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}| -.. flat-table:: Packed YUV 4:2:2 Formats +.. flat-table:: Packed YUV 4:2:2 Formats in 32-bit container :header-rows: 1 :stub-columns: 0 @@ -337,6 +370,46 @@ components horizontally by 2, storing 2 pixels in 4 bytes. - Y'\ :sub:`3` - Cb\ :sub:`2` +.. tabularcolumns:: |p{3.4cm}|p{1.2cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}|p{0.8cm}| + +.. flat-table:: Packed YUV 4:2:2 Formats in 64-bit container + :header-rows: 1 + :stub-columns: 0 + + * - Identifier + - Code + - Word 0 + - Word 1 + - Word 2 + - Word 3 + * .. _V4L2-PIX-FMT-Y210: + + - ``V4L2_PIX_FMT_Y210`` + - 'Y210' + + - Y'\ :sub:`0` (bits 15-6) + - Cb\ :sub:`0` (bits 15-6) + - Y'\ :sub:`1` (bits 15-6) + - Cr\ :sub:`0` (bits 15-6) + * .. _V4L2-PIX-FMT-Y212: + + - ``V4L2_PIX_FMT_Y212`` + - 'Y212' + + - Y'\ :sub:`0` (bits 15-4) + - Cb\ :sub:`0` (bits 15-4) + - Y'\ :sub:`1` (bits 15-4) + - Cr\ :sub:`0` (bits 15-4) + * .. _V4L2-PIX-FMT-Y216: + + - ``V4L2_PIX_FMT_Y216`` + - 'Y216' + + - Y'\ :sub:`0` (bits 15-0) + - Cb\ :sub:`0` (bits 15-0) + - Y'\ :sub:`1` (bits 15-0) + - Cr\ :sub:`0` (bits 15-0) + .. raw:: latex \normalsize diff --git a/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst b/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst index 30f51cd33f99..4b8cbbc77b1b 100644 --- a/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst +++ b/Documentation/userspace-api/media/v4l/pixfmt-rgb.rst @@ -762,6 +762,48 @@ nomenclature that instead use the order of components as seen in a 24- or \normalsize +12 Bits Per Component +============================== + +These formats store an RGB triplet in six or eight bytes, with 12 bits per component. +Expand the bits per component to 16 bits, data in the high bits, zeros in the low bits, +arranged in little endian order. + +.. raw:: latex + + \small + +.. flat-table:: RGB Formats With 12 Bits Per Component + :header-rows: 1 + + * - Identifier + - Code + - Byte 1-0 + - Byte 3-2 + - Byte 5-4 + - Byte 7-6 + * .. _V4L2-PIX-FMT-BGR48-12: + + - ``V4L2_PIX_FMT_BGR48_12`` + - 'B312' + + - B\ :sub:`15-4` + - G\ :sub:`15-4` + - R\ :sub:`15-4` + - + * .. _V4L2-PIX-FMT-ABGR64-12: + + - ``V4L2_PIX_FMT_ABGR64_12`` + - 'B412' + + - B\ :sub:`15-4` + - G\ :sub:`15-4` + - R\ :sub:`15-4` + - A\ :sub:`15-4` + +.. raw:: latex + + \normalsize Deprecated RGB Formats ====================== diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst index 6a387f9df3ba..26fd46fa4971 100644 --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst @@ -103,6 +103,17 @@ are often referred to as greyscale formats. - ... - ... + * .. _V4L2-PIX-FMT-Y012: + + - ``V4L2_PIX_FMT_Y012`` + - 'Y012' + + - Y'\ :sub:`0`\ [3:0] `0000` + - Y'\ :sub:`0`\ [11:4] + - ... + - ... + - ... + * .. _V4L2-PIX-FMT-Y14: - ``V4L2_PIX_FMT_Y14`` @@ -146,3 +157,7 @@ are often referred to as greyscale formats. than 16 bits. For example, 10 bits per pixel uses values in the range 0 to 1023. For the IPU3_Y10 format 25 pixels are packed into 32 bytes, which leaves the 6 most significant bits of the last byte padded with 0. + + For Y012 and Y12 formats, Y012 places its data in the 12 high bits, with + padding zeros in the 4 low bits, in contrast to the Y12 format, which has + its padding located in the most significant bits of the 16 bit word. diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst index f1d5bb7b806d..72324274f20c 100644 --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst @@ -123,6 +123,20 @@ All components are stored with the same number of bits per component. - Cb, Cr - Yes - 4x4 tiles + * - V4L2_PIX_FMT_P012 + - 'P012' + - 12 + - 4:2:0 + - Cb, Cr + - Yes + - Linear + * - V4L2_PIX_FMT_P012M + - 'PM12' + - 12 + - 4:2:0 + - Cb, Cr + - No + - Linear * - V4L2_PIX_FMT_NV16 - 'NV16' - 8 @@ -586,6 +600,86 @@ Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian ord - Cb\ :sub:`11` - Cr\ :sub:`11` +.. _V4L2-PIX-FMT-P012: +.. _V4L2-PIX-FMT-P012M: + +P012 and P012M +-------------- + +P012 is like NV12 with 12 bits per component, expanded to 16 bits. +Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian order. + +.. flat-table:: Sample 4x4 P012 Image + :header-rows: 0 + :stub-columns: 0 + + * - start + 0: + - Y'\ :sub:`00` + - Y'\ :sub:`01` + - Y'\ :sub:`02` + - Y'\ :sub:`03` + * - start + 8: + - Y'\ :sub:`10` + - Y'\ :sub:`11` + - Y'\ :sub:`12` + - Y'\ :sub:`13` + * - start + 16: + - Y'\ :sub:`20` + - Y'\ :sub:`21` + - Y'\ :sub:`22` + - Y'\ :sub:`23` + * - start + 24: + - Y'\ :sub:`30` + - Y'\ :sub:`31` + - Y'\ :sub:`32` + - Y'\ :sub:`33` + * - start + 32: + - Cb\ :sub:`00` + - Cr\ :sub:`00` + - Cb\ :sub:`01` + - Cr\ :sub:`01` + * - start + 40: + - Cb\ :sub:`10` + - Cr\ :sub:`10` + - Cb\ :sub:`11` + - Cr\ :sub:`11` + +.. flat-table:: Sample 4x4 P012M Image + :header-rows: 0 + :stub-columns: 0 + + * - start0 + 0: + - Y'\ :sub:`00` + - Y'\ :sub:`01` + - Y'\ :sub:`02` + - Y'\ :sub:`03` + * - start0 + 8: + - Y'\ :sub:`10` + - Y'\ :sub:`11` + - Y'\ :sub:`12` + - Y'\ :sub:`13` + * - start0 + 16: + - Y'\ :sub:`20` + - Y'\ :sub:`21` + - Y'\ :sub:`22` + - Y'\ :sub:`23` + * - start0 + 24: + - Y'\ :sub:`30` + - Y'\ :sub:`31` + - Y'\ :sub:`32` + - Y'\ :sub:`33` + * - + * - start1 + 0: + - Cb\ :sub:`00` + - Cr\ :sub:`00` + - Cb\ :sub:`01` + - Cr\ :sub:`01` + * - start1 + 8: + - Cb\ :sub:`10` + - Cr\ :sub:`10` + - Cb\ :sub:`11` + - Cr\ :sub:`11` + Fully Planar YUV Formats ======================== diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index ee26cdf9dd3d..c22a52854e13 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -203,6 +203,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x29600806 } +pointer_reference { + id: 0x00cc5f1f + kind: POINTER + pointee_type_id: 0x29719ae3 +} pointer_reference { id: 0x00d1ba62 kind: POINTER @@ -248,6 +253,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x29b83e1a } +pointer_reference { + id: 0x00fff809 + kind: POINTER + pointee_type_id: 0x29bf06ba +} pointer_reference { id: 0x010934b0 kind: POINTER @@ -438,6 +448,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2cf89e50 } +pointer_reference { + id: 0x01ae5751 + kind: POINTER + pointee_type_id: 0x2cf9bbda +} pointer_reference { id: 0x01b63d17 kind: POINTER @@ -1258,6 +1273,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x38da44ec } +pointer_reference { + id: 0x04a9576c + kind: POINTER + pointee_type_id: 0x38e5bb2f +} pointer_reference { id: 0x04ac88c5 kind: POINTER @@ -1303,6 +1323,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x39185662 } +pointer_reference { + id: 0x04d7fcdd + kind: POINTER + pointee_type_id: 0x391f15ea +} pointer_reference { id: 0x04dad728 kind: POINTER @@ -2153,6 +2178,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0a52df14 } +pointer_reference { + id: 0x080d391b + kind: POINTER + pointee_type_id: 0x0a7402f1 +} +pointer_reference { + id: 0x080d3f98 + kind: POINTER + pointee_type_id: 0x0a7418fc +} +pointer_reference { + id: 0x080e08ce + kind: POINTER + pointee_type_id: 0x0a78c5a5 +} pointer_reference { id: 0x080fbe64 kind: POINTER @@ -2328,6 +2368,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0942f1ca } +pointer_reference { + id: 0x08c420f1 + kind: POINTER + pointee_type_id: 0x09506558 +} pointer_reference { id: 0x08e43718 kind: POINTER @@ -2668,11 +2713,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0x03cc00a2 } +pointer_reference { + id: 0x0a67a4e3 + kind: POINTER + pointee_type_id: 0x03de7511 +} pointer_reference { id: 0x0a6c2073 kind: POINTER pointee_type_id: 0x03f06751 } +pointer_reference { + id: 0x0a70ce1b + kind: POINTER + pointee_type_id: 0x0383def3 +} pointer_reference { id: 0x0a747547 kind: POINTER @@ -2693,6 +2748,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x00447895 } +pointer_reference { + id: 0x0a8304ff + kind: POINTER + pointee_type_id: 0x004cf563 +} pointer_reference { id: 0x0a85fcb6 kind: POINTER @@ -2713,6 +2773,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0028f2f5 } +pointer_reference { + id: 0x0a9e3ca3 + kind: POINTER + pointee_type_id: 0x00381413 +} pointer_reference { id: 0x0aa1f0ee kind: POINTER @@ -3033,6 +3098,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x04a91d68 } +pointer_reference { + id: 0x0bbb7f1b + kind: POINTER + pointee_type_id: 0x04ad1af1 +} pointer_reference { id: 0x0bbc5d54 kind: POINTER @@ -3043,6 +3113,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x04b89667 } +pointer_reference { + id: 0x0bbfad26 + kind: POINTER + pointee_type_id: 0x04be5205 +} pointer_reference { id: 0x0bc3e3e1 kind: POINTER @@ -4048,6 +4123,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x19832066 } +pointer_reference { + id: 0x0cf3d8fe + kind: POINTER + pointee_type_id: 0x198f8565 +} pointer_reference { id: 0x0cf80951 kind: POINTER @@ -4243,6 +4323,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1e3b8bac } +pointer_reference { + id: 0x0d1f55de + kind: POINTER + pointee_type_id: 0x1e3db1e5 +} pointer_reference { id: 0x0d20d38c kind: POINTER @@ -4278,6 +4363,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1edfcb66 } +pointer_reference { + id: 0x0d27dc9d + kind: POINTER + pointee_type_id: 0x1edf94e9 +} pointer_reference { id: 0x0d2958f6 kind: POINTER @@ -5083,6 +5173,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1d5cf24d } +pointer_reference { + id: 0x0dc966bc + kind: POINTER + pointee_type_id: 0x1d657c6d +} pointer_reference { id: 0x0dc9e98b kind: POINTER @@ -5348,6 +5443,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12725ea0 } +pointer_reference { + id: 0x0e0dc148 + kind: POINTER + pointee_type_id: 0x1277e3bd +} pointer_reference { id: 0x0e0dc9f3 kind: POINTER @@ -5513,6 +5613,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x129eb456 } +pointer_reference { + id: 0x0e38185b + kind: POINTER + pointee_type_id: 0x12a087f3 +} pointer_reference { id: 0x0e395200 kind: POINTER @@ -5573,6 +5678,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x13525403 } +pointer_reference { + id: 0x0e44c87b + kind: POINTER + pointee_type_id: 0x1353c771 +} pointer_reference { id: 0x0e44f9f8 kind: POINTER @@ -5643,6 +5753,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x13797fb7 } +pointer_reference { + id: 0x0e4e7ccb + kind: POINTER + pointee_type_id: 0x137915b0 +} pointer_reference { id: 0x0e4f7e58 kind: POINTER @@ -6848,6 +6963,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1705e250 } +pointer_reference { + id: 0x0f56bda3 + kind: POINTER + pointee_type_id: 0x171a1012 +} +pointer_reference { + id: 0x0f596314 + kind: POINTER + pointee_type_id: 0x17256acc +} pointer_reference { id: 0x0f5a291c kind: POINTER @@ -6873,6 +6998,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x172e6ba7 } +pointer_reference { + id: 0x0f5c0d73 + kind: POINTER + pointee_type_id: 0x1730d353 +} pointer_reference { id: 0x0f5e0dda kind: POINTER @@ -6923,6 +7053,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x17ce1ca0 } +pointer_reference { + id: 0x0f657fc1 + kind: POINTER + pointee_type_id: 0x17d51999 +} +pointer_reference { + id: 0x0f67218c + kind: POINTER + pointee_type_id: 0x17dc60ac +} pointer_reference { id: 0x0f677ef9 kind: POINTER @@ -7943,6 +8083,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6df67d28 } +pointer_reference { + id: 0x120033c5 + kind: POINTER + pointee_type_id: 0x6240298a +} pointer_reference { id: 0x1200e2aa kind: POINTER @@ -8053,6 +8198,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6101d583 } +pointer_reference { + id: 0x12d9a766 + kind: POINTER + pointee_type_id: 0x61267b05 +} +pointer_reference { + id: 0x12e0cbae + kind: POINTER + pointee_type_id: 0x61c3c826 +} pointer_reference { id: 0x12e24ee1 kind: POINTER @@ -8093,6 +8248,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x664d9cb2 } +pointer_reference { + id: 0x130aa721 + kind: POINTER + pointee_type_id: 0x666a7a1b +} pointer_reference { id: 0x13185ce8 kind: POINTER @@ -8283,6 +8443,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x65b569e7 } +pointer_reference { + id: 0x13fe8737 + kind: POINTER + pointee_type_id: 0x65bafa41 +} pointer_reference { id: 0x14191d75 kind: POINTER @@ -8428,6 +8593,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x79e2d3b1 } +pointer_reference { + id: 0x14f37d47 + kind: POINTER + pointee_type_id: 0x798d1382 +} pointer_reference { id: 0x14fb0ab0 kind: POINTER @@ -8838,6 +9008,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x76e78cd9 } +pointer_reference { + id: 0x173696bc + kind: POINTER + pointee_type_id: 0x769abc6d +} pointer_reference { id: 0x1740e61d kind: POINTER @@ -8978,6 +9153,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x755b6647 } +pointer_reference { + id: 0x17d51999 + kind: POINTER + pointee_type_id: 0x751480f9 +} pointer_reference { id: 0x17dabdcd kind: POINTER @@ -9438,6 +9618,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4d320115 } +pointer_reference { + id: 0x19df035f + kind: POINTER + pointee_type_id: 0x4d3cebe1 +} pointer_reference { id: 0x19e0c64c kind: POINTER @@ -9723,6 +9908,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x475137a2 } +pointer_reference { + id: 0x1b4a1f75 + kind: POINTER + pointee_type_id: 0x47689b48 +} pointer_reference { id: 0x1b4ce091 kind: POINTER @@ -9863,6 +10053,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x45a8a3c4 } +pointer_reference { + id: 0x1bfb2a60 + kind: POINTER + pointee_type_id: 0x45ac4f1e +} pointer_reference { id: 0x1c126813 kind: POINTER @@ -10828,6 +11023,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x551d0131 } +pointer_reference { + id: 0x1fdf8df4 + kind: POINTER + pointee_type_id: 0x553ed14c +} pointer_reference { id: 0x1fe51930 kind: POINTER @@ -11398,6 +11598,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa0815516 } +pointer_reference { + id: 0x22b357e9 + kind: POINTER + pointee_type_id: 0xa08db938 +} pointer_reference { id: 0x22b3ece7 kind: POINTER @@ -11618,6 +11823,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa57d1db8 } +pointer_reference { + id: 0x23d822f9 + kind: POINTER + pointee_type_id: 0xa5206d7a +} pointer_reference { id: 0x23d902f6 kind: POINTER @@ -11938,11 +12148,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xbceec39a } -pointer_reference { - id: 0x25b57283 - kind: POINTER - pointee_type_id: 0xbc952c91 -} pointer_reference { id: 0x25b73daa kind: POINTER @@ -12373,6 +12578,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb4a26738 } +pointer_reference { + id: 0x27c7b3cb + kind: POINTER + pointee_type_id: 0xb55e29b2 +} pointer_reference { id: 0x27cf73eb kind: POINTER @@ -12808,16 +13018,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x8de7c9fe } +pointer_reference { + id: 0x29ef8105 + kind: POINTER + pointee_type_id: 0x8dfee289 +} pointer_reference { id: 0x29f9c70b kind: POINTER pointee_type_id: 0x8da7fab2 } -pointer_reference { - id: 0x2a0586b2 - kind: POINTER - pointee_type_id: 0x8256fc56 -} pointer_reference { id: 0x2a0a605f kind: POINTER @@ -13053,6 +13263,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x86a9103f } +pointer_reference { + id: 0x2b4b15b4 + kind: POINTER + pointee_type_id: 0x876cb04d +} pointer_reference { id: 0x2b584612 kind: POINTER @@ -13413,6 +13628,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9ac13218 } +pointer_reference { + id: 0x2c209d56 + kind: POINTER + pointee_type_id: 0x9ac293c4 +} pointer_reference { id: 0x2c210d23 kind: POINTER @@ -15393,6 +15613,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9921a72c } +pointer_reference { + id: 0x2cd9dff0 + kind: POINTER + pointee_type_id: 0x9927995d +} pointer_reference { id: 0x2cda29dd kind: POINTER @@ -15473,6 +15698,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x99c11430 } +pointer_reference { + id: 0x2ce2190b + kind: POINTER + pointee_type_id: 0x99c882b3 +} pointer_reference { id: 0x2ce315c4 kind: POINTER @@ -15773,6 +16003,26 @@ pointer_reference { kind: POINTER pointee_type_id: 0x99be88a0 } +pointer_reference { + id: 0x2d000b85 + kind: POINTER + pointee_type_id: 0x9e40c88b +} +pointer_reference { + id: 0x2d00157c + kind: POINTER + pointee_type_id: 0x9e40b36c +} +pointer_reference { + id: 0x2d004103 + kind: POINTER + pointee_type_id: 0x9e41e293 +} +pointer_reference { + id: 0x2d004a69 + kind: POINTER + pointee_type_id: 0x9e41cf39 +} pointer_reference { id: 0x2d008d0e kind: POINTER @@ -15783,21 +16033,61 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e448e2a } +pointer_reference { + id: 0x2d018e8d + kind: POINTER + pointee_type_id: 0x9e46dca9 +} +pointer_reference { + id: 0x2d01e009 + kind: POINTER + pointee_type_id: 0x9e4766bb +} pointer_reference { id: 0x2d0240fc kind: POINTER pointee_type_id: 0x9e49e56e } +pointer_reference { + id: 0x2d02e4d4 + kind: POINTER + pointee_type_id: 0x9e4b75cd +} +pointer_reference { + id: 0x2d033017 + kind: POINTER + pointee_type_id: 0x9e4c26c1 +} pointer_reference { id: 0x2d036f50 kind: POINTER pointee_type_id: 0x9e4d5bdd } +pointer_reference { + id: 0x2d0429c2 + kind: POINTER + pointee_type_id: 0x9e504197 +} +pointer_reference { + id: 0x2d044ee7 + kind: POINTER + pointee_type_id: 0x9e51dd03 +} +pointer_reference { + id: 0x2d046cf4 + kind: POINTER + pointee_type_id: 0x9e51554f +} pointer_reference { id: 0x2d04a781 kind: POINTER pointee_type_id: 0x9e52789b } +pointer_reference { + id: 0x2d0679a1 + kind: POINTER + pointee_type_id: 0x9e590019 +} pointer_reference { id: 0x2d06e5cd kind: POINTER @@ -15813,6 +16103,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e5ef2fc } +pointer_reference { + id: 0x2d081f17 + kind: POINTER + pointee_type_id: 0x9e609ac2 +} +pointer_reference { + id: 0x2d085064 + kind: POINTER + pointee_type_id: 0x9e61a70c +} pointer_reference { id: 0x2d08a576 kind: POINTER @@ -15828,6 +16128,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e663e24 } +pointer_reference { + id: 0x2d0a0361 + kind: POINTER + pointee_type_id: 0x9e68eb19 +} +pointer_reference { + id: 0x2d0ab1eb + kind: POINTER + pointee_type_id: 0x9e6a2131 +} pointer_reference { id: 0x2d0b7a8e kind: POINTER @@ -15853,6 +16163,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e792fe6 } +pointer_reference { + id: 0x2d0e9268 + kind: POINTER + pointee_type_id: 0x9e7aaf3f +} pointer_reference { id: 0x2d0fdd7c kind: POINTER @@ -15888,6 +16203,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e026d74 } +pointer_reference { + id: 0x2d11ffb5 + kind: POINTER + pointee_type_id: 0x9e071849 +} pointer_reference { id: 0x2d126960 kind: POINTER @@ -15903,6 +16223,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e11d049 } +pointer_reference { + id: 0x2d154530 + kind: POINTER + pointee_type_id: 0x9e15f25c +} +pointer_reference { + id: 0x2d161d5c + kind: POINTER + pointee_type_id: 0x9e1893ee +} pointer_reference { id: 0x2d164af6 kind: POINTER @@ -15913,6 +16243,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e19651e } +pointer_reference { + id: 0x2d16aeaf + kind: POINTER + pointee_type_id: 0x9e1a5c22 +} pointer_reference { id: 0x2d16b2fd kind: POINTER @@ -15973,6 +16308,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e2ef574 } +pointer_reference { + id: 0x2d1c1d12 + kind: POINTER + pointee_type_id: 0x9e3092d5 +} pointer_reference { id: 0x2d1c7478 kind: POINTER @@ -16303,6 +16643,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9ebfed71 } +pointer_reference { + id: 0x2d3ffbc6 + kind: POINTER + pointee_type_id: 0x9ebf0984 +} pointer_reference { id: 0x2d4051be kind: POINTER @@ -16408,6 +16753,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f6f73ed } +pointer_reference { + id: 0x2d4c6881 + kind: POINTER + pointee_type_id: 0x9f71449b +} pointer_reference { id: 0x2d4eaa35 kind: POINTER @@ -16423,6 +16773,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f7fc723 } +pointer_reference { + id: 0x2d4fcd25 + kind: POINTER + pointee_type_id: 0x9f7fd20b +} pointer_reference { id: 0x2d50c295 kind: POINTER @@ -16463,6 +16818,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f1dcaea } +pointer_reference { + id: 0x2d594ead + kind: POINTER + pointee_type_id: 0x9f25dc29 +} pointer_reference { id: 0x2d59c606 kind: POINTER @@ -16693,6 +17053,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f87b817 } +pointer_reference { + id: 0x2d7368ed + kind: POINTER + pointee_type_id: 0x9f8d452b +} +pointer_reference { + id: 0x2d739f19 + kind: POINTER + pointee_type_id: 0x9f8e9af9 +} pointer_reference { id: 0x2d7549b3 kind: POINTER @@ -16733,6 +17103,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9fa3b723 } +pointer_reference { + id: 0x2d7ab985 + kind: POINTER + pointee_type_id: 0x9faa0088 +} +pointer_reference { + id: 0x2d7ac448 + kind: POINTER + pointee_type_id: 0x9fabf7be +} pointer_reference { id: 0x2d7ae3a5 kind: POINTER @@ -16933,6 +17313,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9c7d7af2 } +pointer_reference { + id: 0x2d8fd28a + kind: POINTER + pointee_type_id: 0x9c7facb4 +} pointer_reference { id: 0x2d8fdd2c kind: POINTER @@ -17218,6 +17603,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9cf48276 } +pointer_reference { + id: 0x2dae0c91 + kind: POINTER + pointee_type_id: 0x9cf8d4d9 +} pointer_reference { id: 0x2dae560d kind: POINTER @@ -17848,6 +18238,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9de31a69 } +pointer_reference { + id: 0x2de928d9 + kind: POINTER + pointee_type_id: 0x9de445fa +} pointer_reference { id: 0x2de9a54b kind: POINTER @@ -17953,6 +18348,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9da05299 } +pointer_reference { + id: 0x2df84197 + kind: POINTER + pointee_type_id: 0x9da1e0c3 +} pointer_reference { id: 0x2df9d3a1 kind: POINTER @@ -18118,21 +18518,56 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9266fead } +pointer_reference { + id: 0x2e0a2548 + kind: POINTER + pointee_type_id: 0x926873bc +} +pointer_reference { + id: 0x2e0a26c5 + kind: POINTER + pointee_type_id: 0x92687d88 +} pointer_reference { id: 0x2e0a4508 kind: POINTER pointee_type_id: 0x9269f2bc } +pointer_reference { + id: 0x2e0ab0cf + kind: POINTER + pointee_type_id: 0x926a25a2 +} +pointer_reference { + id: 0x2e0abaa7 + kind: POINTER + pointee_type_id: 0x926a0c03 +} +pointer_reference { + id: 0x2e0abbc6 + kind: POINTER + pointee_type_id: 0x926a0987 +} pointer_reference { id: 0x2e0ac0be kind: POINTER pointee_type_id: 0x926be467 } +pointer_reference { + id: 0x2e0ad762 + kind: POINTER + pointee_type_id: 0x926bbb17 +} pointer_reference { id: 0x2e0b4b4b kind: POINTER pointee_type_id: 0x926dcbb0 } +pointer_reference { + id: 0x2e0b7ad3 + kind: POINTER + pointee_type_id: 0x926d0dd0 +} pointer_reference { id: 0x2e0b807c kind: POINTER @@ -18188,6 +18623,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x920d4b76 } +pointer_reference { + id: 0x2e1466a0 + kind: POINTER + pointee_type_id: 0x92117c1d +} pointer_reference { id: 0x2e152fbb kind: POINTER @@ -18278,6 +18718,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92c2d86d } +pointer_reference { + id: 0x2e20981d + kind: POINTER + pointee_type_id: 0x92c286e9 +} pointer_reference { id: 0x2e215a2d kind: POINTER @@ -18343,6 +18788,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92f4a3cb } +pointer_reference { + id: 0x2e2ef220 + kind: POINTER + pointee_type_id: 0x92fb2e1e +} +pointer_reference { + id: 0x2e2f03e7 + kind: POINTER + pointee_type_id: 0x92fce902 +} pointer_reference { id: 0x2e2ff28a kind: POINTER @@ -18453,6 +18908,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9352af9c } +pointer_reference { + id: 0x2e477ad3 + kind: POINTER + pointee_type_id: 0x935d0dd3 +} pointer_reference { id: 0x2e47a18c kind: POINTER @@ -18553,6 +19013,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9313a933 } +pointer_reference { + id: 0x2e54f1b8 + kind: POINTER + pointee_type_id: 0x9313207d +} pointer_reference { id: 0x2e5535c9 kind: POINTER @@ -18583,6 +19048,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x931806a8 } +pointer_reference { + id: 0x2e5686ce + kind: POINTER + pointee_type_id: 0x931afda4 +} pointer_reference { id: 0x2e56b2c6 kind: POINTER @@ -18718,6 +19188,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x938c1916 } +pointer_reference { + id: 0x2e735a06 + kind: POINTER + pointee_type_id: 0x938d8e84 +} pointer_reference { id: 0x2e73c057 kind: POINTER @@ -18733,6 +19208,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93907678 } +pointer_reference { + id: 0x2e7505e0 + kind: POINTER + pointee_type_id: 0x9394f11e +} pointer_reference { id: 0x2e76071a kind: POINTER @@ -18788,6 +19268,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93b941f7 } +pointer_reference { + id: 0x2e7ffbfe + kind: POINTER + pointee_type_id: 0x93bf0967 +} pointer_reference { id: 0x2e804bb7 kind: POINTER @@ -21518,6 +22003,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xeba4823c } +pointer_reference { + id: 0x307eba5c + kind: POINTER + pointee_type_id: 0xebba0fee +} pointer_reference { id: 0x30887d17 kind: POINTER @@ -21783,6 +22273,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xeec4d3d8 } +pointer_reference { + id: 0x3121a074 + kind: POINTER + pointee_type_id: 0xeec6674e +} pointer_reference { id: 0x31287056 kind: POINTER @@ -22058,6 +22553,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xed225d89 } +pointer_reference { + id: 0x31d9e79a + kind: POINTER + pointee_type_id: 0xed2778f4 +} pointer_reference { id: 0x31da1e83 kind: POINTER @@ -22208,11 +22708,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe2a728bc } +pointer_reference { + id: 0x323d798e + kind: POINTER + pointee_type_id: 0xe2b500a6 +} pointer_reference { id: 0x3240bbe7 kind: POINTER pointee_type_id: 0xe3420903 } +pointer_reference { + id: 0x3247ae94 + kind: POINTER + pointee_type_id: 0xe35e5ccd +} pointer_reference { id: 0x324a2d7b kind: POINTER @@ -22548,6 +23058,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe644a39b } +pointer_reference { + id: 0x33086ec3 + kind: POINTER + pointee_type_id: 0xe6615d93 +} pointer_reference { id: 0x330db442 kind: POINTER @@ -22743,6 +23258,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe7c3994d } +pointer_reference { + id: 0x33642722 + kind: POINTER + pointee_type_id: 0xe7d07a15 +} pointer_reference { id: 0x33657329 kind: POINTER @@ -22838,6 +23358,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe42d7586 } +pointer_reference { + id: 0x339b8baf + kind: POINTER + pointee_type_id: 0xe42ec820 +} pointer_reference { id: 0x339ebb61 kind: POINTER @@ -23008,6 +23533,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe5ac437d } +pointer_reference { + id: 0x33fd261b + kind: POINTER + pointee_type_id: 0xe5b47ef3 +} pointer_reference { id: 0x34016e82 kind: POINTER @@ -23273,6 +23803,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf8453f2e } +pointer_reference { + id: 0x34818c51 + kind: POINTER + pointee_type_id: 0xf846d7da +} pointer_reference { id: 0x3486508f kind: POINTER @@ -23753,6 +24288,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfc53e789 } +pointer_reference { + id: 0x358546f6 + kind: POINTER + pointee_type_id: 0xfc55fd47 +} pointer_reference { id: 0x358a1c52 kind: POINTER @@ -23838,6 +24378,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfc8ba4d2 } +pointer_reference { + id: 0x35b3ea42 + kind: POINTER + pointee_type_id: 0xfc8f4f95 +} pointer_reference { id: 0x35bad1e5 kind: POINTER @@ -23993,6 +24538,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf25d597f } +pointer_reference { + id: 0x3609467c + kind: POINTER + pointee_type_id: 0xf265ff6f +} pointer_reference { id: 0x360c66c5 kind: POINTER @@ -24633,6 +25183,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf7e2e2fa } +pointer_reference { + id: 0x376c8705 + kind: POINTER + pointee_type_id: 0xf7f2fa8a +} pointer_reference { id: 0x376d0d4f kind: POINTER @@ -24683,6 +25238,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf4616560 } +pointer_reference { + id: 0x378dbf55 + kind: POINTER + pointee_type_id: 0xf4761bc8 +} pointer_reference { id: 0x37944814 kind: POINTER @@ -24923,6 +25483,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca62a8b3 } +pointer_reference { + id: 0x38090ad2 + kind: POINTER + pointee_type_id: 0xca64cdd4 +} pointer_reference { id: 0x380a78f0 kind: POINTER @@ -24998,6 +25563,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcaaeb726 } +pointer_reference { + id: 0x383bad14 + kind: POINTER + pointee_type_id: 0xcaae52cc +} pointer_reference { id: 0x383bcea3 kind: POINTER @@ -25053,6 +25623,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcb720070 } +pointer_reference { + id: 0x384d1346 + kind: POINTER + pointee_type_id: 0xcb74ab84 +} pointer_reference { id: 0x384ff235 kind: POINTER @@ -25433,6 +26008,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xce9dd989 } +pointer_reference { + id: 0x39388fd3 + kind: POINTER + pointee_type_id: 0xcea2d9d1 +} pointer_reference { id: 0x393f044a kind: POINTER @@ -25588,6 +26168,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcc1251bf } +pointer_reference { + id: 0x3999579d + kind: POINTER + pointee_type_id: 0xcc25b8e9 +} pointer_reference { id: 0x399f63b7 kind: POINTER @@ -26133,6 +26718,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc60bc51e } +pointer_reference { + id: 0x3b143836 + kind: POINTER + pointee_type_id: 0xc6100647 +} pointer_reference { id: 0x3b19594b kind: POINTER @@ -26263,6 +26853,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc77aa47c } +pointer_reference { + id: 0x3b5017f2 + kind: POINTER + pointee_type_id: 0xc700b957 +} pointer_reference { id: 0x3b54fdd3 kind: POINTER @@ -26418,6 +27013,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5725d9a } +pointer_reference { + id: 0x3bcd0c02 + kind: POINTER + pointee_type_id: 0xc574d697 +} pointer_reference { id: 0x3bd2bf42 kind: POINTER @@ -26503,11 +27103,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0xda60e9a6 } +pointer_reference { + id: 0x3c087d20 + kind: POINTER + pointee_type_id: 0xda61121d +} pointer_reference { id: 0x3c0933ca kind: POINTER pointee_type_id: 0xda6429b7 } +pointer_reference { + id: 0x3c0cf46a + kind: POINTER + pointee_type_id: 0xda733736 +} pointer_reference { id: 0x3c0e9e79 kind: POINTER @@ -26618,6 +27228,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdb0ebdcd } +pointer_reference { + id: 0x3c53e119 + kind: POINTER + pointee_type_id: 0xdb0f62fb +} pointer_reference { id: 0x3c53eefd kind: POINTER @@ -26923,6 +27538,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdf4d92db } +pointer_reference { + id: 0x3d46e073 + kind: POINTER + pointee_type_id: 0xdf5b6752 +} pointer_reference { id: 0x3d4bf55f kind: POINTER @@ -27013,6 +27633,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdfba2774 } +pointer_reference { + id: 0x3d801074 + kind: POINTER + pointee_type_id: 0xdc40a74d +} pointer_reference { id: 0x3d828cd9 kind: POINTER @@ -27353,6 +27978,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd2e0ae36 } +pointer_reference { + id: 0x3e292ad1 + kind: POINTER + pointee_type_id: 0xd2e44dd9 +} pointer_reference { id: 0x3e29be7b kind: POINTER @@ -27883,6 +28513,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd41e888f } +pointer_reference { + id: 0x3f985801 + kind: POINTER + pointee_type_id: 0xd421869b +} pointer_reference { id: 0x3f9adc09 kind: POINTER @@ -27943,6 +28578,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd559247f } +pointer_reference { + id: 0x3fca7642 + kind: POINTER + pointee_type_id: 0xd5693f95 +} pointer_reference { id: 0x3fd0b78c kind: POINTER @@ -28798,6 +29438,11 @@ typedef { name: "hfn_t" referred_type_id: 0x92233392 } +typedef { + id: 0xee72cbfc + name: "ino_t" + referred_type_id: 0x21d43a7b +} typedef { id: 0x7e8f5c14 name: "int32" @@ -29948,6 +30593,11 @@ typedef { name: "uuid_t" referred_type_id: 0x0b526877 } +typedef { + id: 0x9de445fa + name: "v4l2_check_dv_timings_fnc" + referred_type_id: 0xf2553153 +} typedef { id: 0x7c355df7 name: "v4l2_ctrl_notify_fnc" @@ -30303,6 +30953,11 @@ qualified { qualifier: CONST qualified_type_id: 0x658ec0e0 } +qualified { + id: 0xc574d697 + qualifier: CONST + qualified_type_id: 0x6594ecd4 +} qualified { id: 0xc596e113 qualifier: CONST @@ -30333,6 +30988,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6798ba36 } +qualified { + id: 0xc6100647 + qualifier: CONST + qualified_type_id: 0x6807af97 +} qualified { id: 0xc62583b0 qualifier: CONST @@ -30638,6 +31298,11 @@ qualified { qualifier: CONST qualified_type_id: 0x5d8fb74a } +qualified { + id: 0xcb74ab84 + qualifier: CONST + qualified_type_id: 0x5d95189a +} qualified { id: 0xcb987dd0 qualifier: CONST @@ -31408,6 +32073,11 @@ qualified { qualifier: CONST qualified_type_id: 0x19d71054 } +qualified { + id: 0xda733736 + qualifier: CONST + qualified_type_id: 0x198b6a50 +} qualified { id: 0xda7a9f79 qualifier: CONST @@ -31433,6 +32103,11 @@ qualified { qualifier: CONST qualified_type_id: 0x1c7ac324 } +qualified { + id: 0xdb0f62fb + qualifier: CONST + qualified_type_id: 0x1c7a3d65 +} qualified { id: 0xdb10d97a qualifier: CONST @@ -31693,6 +32368,11 @@ qualified { qualifier: CONST qualified_type_id: 0x0d6c22fa } +qualified { + id: 0xdf5b6752 + qualifier: CONST + qualified_type_id: 0x0d2a2bc0 +} qualified { id: 0xdf6f33e0 qualifier: CONST @@ -31883,6 +32563,11 @@ qualified { qualifier: CONST qualified_type_id: 0xfa2455af } +qualified { + id: 0xe2b500a6 + qualifier: CONST + qualified_type_id: 0xfa93b413 +} qualified { id: 0xe2cebd77 qualifier: CONST @@ -32028,6 +32713,11 @@ qualified { qualifier: CONST qualified_type_id: 0xe6f6bb7d } +qualified { + id: 0xe5b47ef3 + qualifier: CONST + qualified_type_id: 0xe6964d46 +} qualified { id: 0xe5d16cd3 qualifier: CONST @@ -32328,6 +33018,11 @@ qualified { qualifier: CONST qualified_type_id: 0xded5be7b } +qualified { + id: 0xebba0fee + qualifier: CONST + qualified_type_id: 0xdeaf8933 +} qualified { id: 0xebc0e0d9 qualifier: CONST @@ -32433,6 +33128,11 @@ qualified { qualifier: CONST qualified_type_id: 0xc460028a } +qualified { + id: 0xed2778f4 + qualifier: CONST + qualified_type_id: 0xc4da5559 +} qualified { id: 0xed32e285 qualifier: CONST @@ -32533,6 +33233,11 @@ qualified { qualifier: CONST qualified_type_id: 0xcaab19b4 } +qualified { + id: 0xeec6674e + qualifier: CONST + qualified_type_id: 0xcb5e2bb0 +} qualified { id: 0xeee127c5 qualifier: CONST @@ -32728,6 +33433,11 @@ qualified { qualifier: CONST qualified_type_id: 0xa0bcedf5 } +qualified { + id: 0xf4761bc8 + qualifier: CONST + qualified_type_id: 0xa19fd9aa +} qualified { id: 0xf4a306a1 qualifier: CONST @@ -32908,6 +33618,11 @@ qualified { qualifier: CONST qualified_type_id: 0xae5a9933 } +qualified { + id: 0xf7f2fa8a + qualifier: CONST + qualified_type_id: 0xaf8c5ca0 +} qualified { id: 0xf824f490 qualifier: CONST @@ -34037,6 +34752,11 @@ array { number_of_elements: 64 element_type_id: 0x295c7202 } +array { + id: 0x3a8e7b26 + number_of_elements: 3 + element_type_id: 0xa12e384a +} array { id: 0x3b24b1ed number_of_elements: 20 @@ -34662,6 +35382,11 @@ array { number_of_elements: 7 element_type_id: 0x295c7202 } +array { + id: 0x62a5e001 + number_of_elements: 13 + element_type_id: 0x92233392 +} array { id: 0x62e6d4e3 number_of_elements: 34 @@ -34962,6 +35687,11 @@ array { number_of_elements: 256 element_type_id: 0x2eab5b8a } +array { + id: 0x729479be + number_of_elements: 2 + element_type_id: 0x78f4e574 +} array { id: 0x7349866a number_of_elements: 49 @@ -35422,6 +36152,11 @@ array { number_of_elements: 4 element_type_id: 0x0ab21434 } +array { + id: 0x8fb3c5ee + number_of_elements: 1 + element_type_id: 0xe9e88d93 +} array { id: 0x8fc9368a number_of_elements: 1 @@ -35862,6 +36597,11 @@ array { number_of_elements: 4 element_type_id: 0xe62ebf07 } +array { + id: 0xb637307e + number_of_elements: 4 + element_type_id: 0xe9e88d93 +} array { id: 0xb6bc1f4d number_of_elements: 17 @@ -36473,6 +37213,10 @@ array { id: 0xdf3f459c element_type_id: 0x6c1b2db0 } +array { + id: 0xdf70f6ef + element_type_id: 0x6d25e07f +} array { id: 0xdfed0371 element_type_id: 0x6f523604 @@ -36870,6 +37614,10 @@ array { number_of_elements: 44 element_type_id: 0x5d8155a5 } +array { + id: 0xfca4258b + element_type_id: 0xe276adef +} array { id: 0xfd17183f element_type_id: 0xe4ba5b3d @@ -37123,6 +37871,10 @@ member { id: 0x26e6f511 type_id: 0x14b5a454 } +member { + id: 0x27000c61 + type_id: 0x132e4197 +} member { id: 0x27031642 type_id: 0x13222919 @@ -37513,6 +38265,11 @@ member { id: 0x3190e1a6 type_id: 0x496df688 } +member { + id: 0x31a5da6f + type_id: 0x49b90a29 + offset: 59264 +} member { id: 0x31aa1057 type_id: 0x49861740 @@ -37543,6 +38300,11 @@ member { type_id: 0x48ff9190 offset: 192 } +member { + id: 0x31fb35e2 + type_id: 0x48c28092 + offset: 128 +} member { id: 0x321ecf49 type_id: 0x47554d36 @@ -37975,6 +38737,10 @@ member { type_id: 0x56faddc1 offset: 840 } +member { + id: 0x36752b74 + type_id: 0x56faddc1 +} member { id: 0x36961302 type_id: 0x557609c1 @@ -38176,6 +38942,11 @@ member { type_id: 0x69fa9768 offset: 256 } +member { + id: 0x39d6d358 + type_id: 0x6875099c + offset: 32 +} member { id: 0x39e9b87f type_id: 0x6888b6e5 @@ -38419,6 +39190,11 @@ member { type_id: 0x7edb75e7 offset: 96 } +member { + id: 0x3c8c9122 + type_id: 0x7d1c3635 + offset: 256 +} member { id: 0x3cac7aec type_id: 0x7d9f9ba1 @@ -39196,6 +39972,12 @@ member { type_id: 0x1162409a offset: 16 } +member { + id: 0xf4a9b31e + name: "__data" + type_id: 0xd359db99 + offset: 128 +} member { id: 0xf4b20642 name: "__data" @@ -39380,6 +40162,12 @@ member { type_id: 0x3a8cf6d8 offset: 64 } +member { + id: 0x86165645 + name: "__pad2" + type_id: 0x5d8155a5 + offset: 120 +} member { id: 0x86715b21 name: "__pad2" @@ -39741,6 +40529,20 @@ member { type_id: 0x4585663f offset: 384 } +member { + id: 0x370a9ced + name: "__unused_1" + type_id: 0xe8034002 + offset: 448 + bitsize: 7 +} +member { + id: 0x8c5039ca + name: "__unused_2" + type_id: 0xe8034002 + offset: 465 + bitsize: 6 +} member { id: 0x206928e2 name: "__use" @@ -39930,6 +40732,12 @@ member { name: "_msg" type_id: 0x3e10b518 } +member { + id: 0x3e75936d + name: "_net" + type_id: 0xb335d16f + offset: 3136 +} member { id: 0x3e759921 name: "_net" @@ -41014,6 +41822,11 @@ member { type_id: 0x6d7f5ff6 offset: 688 } +member { + id: 0x7980c676 + name: "acl_addr" + type_id: 0x6d25e07f +} member { id: 0xf17c8f4c name: "acl_cnt" @@ -41026,6 +41839,12 @@ member { type_id: 0x020f69fc offset: 128 } +member { + id: 0xa102d1d4 + name: "acl_ifindex" + type_id: 0x6720d32f + offset: 128 +} member { id: 0xdc1b3211 name: "acl_last_tx" @@ -41038,6 +41857,12 @@ member { type_id: 0x4585663f offset: 13152 } +member { + id: 0x23f246a8 + name: "acl_next" + type_id: 0x01ae5751 + offset: 192 +} member { id: 0xe08e16a4 name: "acl_num" @@ -42080,6 +42905,12 @@ member { type_id: 0xe02e14d6 offset: 256 } +member { + id: 0x24cfa4f0 + name: "addr" + type_id: 0xe276adef + offset: 32 +} member { id: 0x24d1edc6 name: "addr" @@ -42125,6 +42956,12 @@ member { type_id: 0x2d8abcdd offset: 256 } +member { + id: 0x09692cc4 + name: "addr2sockaddr" + type_id: 0x0f56bda3 + offset: 576 +} member { id: 0x29cfb070 name: "addr2str" @@ -42307,6 +43144,12 @@ member { type_id: 0x33756485 offset: 512 } +member { + id: 0x30e26822 + name: "address" + type_id: 0x33756485 + offset: 256 +} member { id: 0x30e26c68 name: "address" @@ -42613,6 +43456,13 @@ member { type_id: 0x901eaf6a offset: 39112 } +member { + id: 0xec6d552f + name: "advanced" + type_id: 0x295c7202 + offset: 174 + bitsize: 1 +} member { id: 0x686a7031 name: "advertised" @@ -42678,6 +43528,12 @@ member { type_id: 0x6d7f5ff6 offset: 50368 } +member { + id: 0x1d3891d6 + name: "advmss" + type_id: 0x914dbfdc + offset: 13696 +} member { id: 0x1ffcf224 name: "ae" @@ -43063,6 +43919,11 @@ member { name: "all" type_id: 0x7584e7da } +member { + id: 0xee87ba00 + name: "all" + type_id: 0xe8034002 +} member { id: 0xeebc7141 name: "all" @@ -44050,12 +44911,6 @@ member { type_id: 0x92233392 offset: 2496 } -member { - id: 0x2d0811d3 - name: "android_kabi_reserved1" - type_id: 0x92233392 - offset: 59264 -} member { id: 0x2d0811f9 name: "android_kabi_reserved1" @@ -44367,6 +45222,12 @@ member { type_id: 0x92233392 offset: 4096 } +member { + id: 0x2d08191c + name: "android_kabi_reserved1" + type_id: 0x92233392 + offset: 8576 +} member { id: 0x2d08193b name: "android_kabi_reserved1" @@ -44493,6 +45354,12 @@ member { type_id: 0x92233392 offset: 1152 } +member { + id: 0x2d081c07 + name: "android_kabi_reserved1" + type_id: 0x92233392 + offset: 11392 +} member { id: 0x2d081c0d name: "android_kabi_reserved1" @@ -44637,6 +45504,12 @@ member { type_id: 0x92233392 offset: 1856 } +member { + id: 0x2d081e39 + name: "android_kabi_reserved1" + type_id: 0x92233392 + offset: 18880 +} member { id: 0x2d081eb7 name: "android_kabi_reserved1" @@ -45182,6 +46055,12 @@ member { type_id: 0x92233392 offset: 2176 } +member { + id: 0x63760c6b + name: "android_kabi_reserved2" + type_id: 0x92233392 + offset: 8640 +} member { id: 0x63760c9c name: "android_kabi_reserved2" @@ -46603,6 +47482,12 @@ member { name: "apoll_events" type_id: 0xb94e10c7 } +member { + id: 0x484997ff + name: "app_limited" + type_id: 0xc9082b19 + offset: 15328 +} member { id: 0x6e3edc08 name: "appearance" @@ -47544,6 +48429,12 @@ member { type_id: 0x399c459b offset: 512 } +member { + id: 0x168605e8 + name: "ato" + type_id: 0xe62ebf07 + offset: 32 +} member { id: 0x176dead7 name: "atomic" @@ -48602,12 +49493,24 @@ member { offset: 65 bitsize: 1 } +member { + id: 0x773b8f3f + name: "auto_dump" + type_id: 0x6d7f5ff6 + offset: 904 +} member { id: 0xaa0ea302 name: "auto_flowlabels" type_id: 0x295c7202 offset: 632 } +member { + id: 0xea4e825c + name: "auto_recover" + type_id: 0x6d7f5ff6 + offset: 896 +} member { id: 0xc5fa3041 name: "auto_runtime_pm" @@ -48652,6 +49555,20 @@ member { offset: 256 bitsize: 1 } +member { + id: 0x6854e737 + name: "autoflowlabel" + type_id: 0xe8034002 + offset: 571 + bitsize: 1 +} +member { + id: 0xe803bc2e + name: "autoflowlabel_set" + type_id: 0xe8034002 + offset: 572 + bitsize: 1 +} member { id: 0xf1e86eba name: "automatic_shrinking" @@ -49991,6 +50908,11 @@ member { type_id: 0xe9735eb8 offset: 832 } +member { + id: 0x853440fd + name: "base" + type_id: 0xeeae7608 +} member { id: 0x853678f4 name: "base" @@ -51297,6 +52219,13 @@ member { type_id: 0x2c16e301 offset: 1088 } +member { + id: 0x87d4aa19 + name: "bind_address_no_port" + type_id: 0xb3e7bac9 + offset: 7112 + bitsize: 1 +} member { id: 0x23af1384 name: "bind_bucket_cachep" @@ -51633,6 +52562,11 @@ member { type_id: 0x7a6db264 offset: 216 } +member { + id: 0xd74e0402 + name: "bits" + type_id: 0x1b949b56 +} member { id: 0xd78825be name: "bits" @@ -51714,6 +52648,12 @@ member { type_id: 0x326dfde1 offset: 256 } +member { + id: 0x4a47d75f + name: "bitwidth" + type_id: 0x4585663f + offset: 96 +} member { id: 0x9cc8208d name: "bkops" @@ -52652,6 +53592,13 @@ member { type_id: 0x6d7f5ff6 offset: 12928 } +member { + id: 0xf5c438ad + name: "bpf_chg_cc_inprogress" + type_id: 0x295c7202 + offset: 18216 + bitsize: 1 +} member { id: 0xa9117c13 name: "bpf_cookie" @@ -52716,6 +53663,12 @@ member { type_id: 0xc9082b19 offset: 33920 } +member { + id: 0xa6861f94 + name: "bpf_sock_ops_cb_flags" + type_id: 0x295c7202 + offset: 18208 +} member { id: 0xede394b6 name: "bpf_storage" @@ -54966,6 +55919,12 @@ member { type_id: 0xf435685e offset: 320 } +member { + id: 0x3ed6f46c + name: "bytes_acked" + type_id: 0x92233392 + offset: 12736 +} member { id: 0x4d36c98b name: "bytes_ext_ops" @@ -55001,12 +55960,30 @@ member { type_id: 0xf435685e offset: 128 } +member { + id: 0xda945faa + name: "bytes_received" + type_id: 0x92233392 + offset: 12352 +} +member { + id: 0xd77f2af8 + name: "bytes_retrans" + type_id: 0x92233392 + offset: 17984 +} member { id: 0xf2787e23 name: "bytes_rx" type_id: 0x3a3eb2f9 offset: 512 } +member { + id: 0x840adfe0 + name: "bytes_sent" + type_id: 0x92233392 + offset: 12672 +} member { id: 0x8cf55cde name: "bytes_transferred" @@ -57177,6 +58154,12 @@ member { type_id: 0x208118b2 offset: 8640 } +member { + id: 0x08477548 + name: "cell_size" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0xc909929f name: "cells" @@ -58641,6 +59624,25 @@ member { type_id: 0xe62ebf07 offset: 160 } +member { + id: 0x6c3076ab + name: "chrono_start" + type_id: 0xc9082b19 + offset: 13728 +} +member { + id: 0x4b0fd146 + name: "chrono_stat" + type_id: 0x2087fff2 + offset: 13760 +} +member { + id: 0x5514b7d1 + name: "chrono_type" + type_id: 0x295c7202 + offset: 13856 + bitsize: 2 +} member { id: 0x0c0ce1e9 name: "chunk_mask" @@ -58917,6 +59919,12 @@ member { type_id: 0x3104c07e offset: 1280 } +member { + id: 0x1dfe157e + name: "cipso" + type_id: 0x5d8155a5 + offset: 112 +} member { id: 0xcf891492 name: "cis" @@ -59166,6 +60174,12 @@ member { type_id: 0x6720d32f offset: 9088 } +member { + id: 0x200938c6 + name: "cleanup" + type_id: 0x0a8304ff + offset: 448 +} member { id: 0x200c257e name: "cleanup" @@ -59940,6 +60954,12 @@ member { name: "clockid" type_id: 0x4478ba6b } +member { + id: 0xf6c2da43 + name: "clone" + type_id: 0x0dc966bc + offset: 448 +} member { id: 0xcf60e1c3 name: "cloned" @@ -60637,6 +61657,12 @@ member { name: "cmp" type_id: 0x36fc2198 } +member { + id: 0x9e4ebac2 + name: "cmsg_flags" + type_id: 0xe8034002 + offset: 6960 +} member { id: 0x141e1b04 name: "cnf" @@ -61336,6 +62362,12 @@ member { name: "common" type_id: 0xfb3bb098 } +member { + id: 0x999f46a7 + name: "comp" + type_id: 0x3fcbf304 + offset: 3648 +} member { id: 0x999f496f name: "comp" @@ -61929,6 +62961,12 @@ member { type_id: 0x35aebc23 offset: 64 } +member { + id: 0xe5d87fc5 + name: "component" + type_id: 0x3e10b518 + offset: 64 +} member { id: 0xe5eb95e0 name: "component" @@ -62071,6 +63109,24 @@ member { type_id: 0x6d7f5ff6 offset: 672 } +member { + id: 0x4aed4e02 + name: "compressed_ack" + type_id: 0x295c7202 + offset: 13712 +} +member { + id: 0x036494f3 + name: "compressed_ack_rcv_nxt" + type_id: 0xc9082b19 + offset: 12992 +} +member { + id: 0xe98a4697 + name: "compressed_ack_timer" + type_id: 0xcd7704bf + offset: 16320 +} member { id: 0xfb567eb3 name: "compressed_header_size" @@ -62548,6 +63604,12 @@ member { type_id: 0x7bfd6d29 offset: 3648 } +member { + id: 0x495c1c6d + name: "conn_request" + type_id: 0x2c210d23 + offset: 256 +} member { id: 0x220e0197 name: "conn_state" @@ -63228,6 +64290,12 @@ member { name: "controller" type_id: 0xc9082b19 } +member { + id: 0xd8dc9c99 + name: "controller" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x608f2d5b name: "controller_data" @@ -63240,6 +64308,13 @@ member { type_id: 0x18bd6530 offset: 7552 } +member { + id: 0x1db19505 + name: "controller_valid" + type_id: 0x295c7202 + offset: 145 + bitsize: 1 +} member { id: 0x474fe3e5 name: "controls" @@ -63294,6 +64369,12 @@ member { type_id: 0x1e4bcad9 offset: 320 } +member { + id: 0x3c401b61 + name: "convert_csum" + type_id: 0xb3e7bac9 + offset: 7128 +} member { id: 0x3f2fb089 name: "convert_ctx_access" @@ -63323,6 +64404,11 @@ member { type_id: 0x0fec2355 offset: 64 } +member { + id: 0x5846e373 + name: "cookie" + type_id: 0x0cb73b55 +} member { id: 0x5852e92d name: "cookie" @@ -63439,6 +64525,18 @@ member { type_id: 0xedf277ba offset: 192 } +member { + id: 0x5414dc08 + name: "copied" + type_id: 0x6720d32f + offset: 320 +} +member { + id: 0x1ec2d3d6 + name: "copied_seq" + type_id: 0xc9082b19 + offset: 12512 +} member { id: 0x58138131 name: "copied_timestamp" @@ -63666,12 +64764,24 @@ member { type_id: 0xedf277ba offset: 1472 } +member { + id: 0xa608f9d7 + name: "cork" + type_id: 0x60790295 + offset: 7296 +} member { id: 0xa64d7141 name: "cork" type_id: 0x25fbbcbe offset: 256 } +member { + id: 0xa677c461 + name: "cork" + type_id: 0x1f434195 + offset: 1088 +} member { id: 0x7105015a name: "cork_bytes" @@ -65032,6 +66142,12 @@ member { type_id: 0x70e54b38 offset: 64 } +member { + id: 0x0f89928e + name: "create" + type_id: 0x0aee7ba0 + offset: 320 +} member { id: 0x0fae5380 name: "create" @@ -66025,6 +67141,12 @@ member { type_id: 0x0d68946d offset: 64 } +member { + id: 0xec94e17c + name: "ctx" + type_id: 0x0d12f45b + offset: 256 +} member { id: 0xeca4247d name: "ctx" @@ -66370,6 +67492,12 @@ member { name: "cur_seq" type_id: 0x92233392 } +member { + id: 0x80fbe8a7 + name: "cur_snapshots" + type_id: 0xc9082b19 + offset: 864 +} member { id: 0x8b31830e name: "cur_stack" @@ -66781,6 +67909,12 @@ member { type_id: 0x0f9357d8 offset: 192 } +member { + id: 0xd7cfbd25 + name: "cwnd_usage_seq" + type_id: 0xc9082b19 + offset: 14592 +} member { id: 0x1d7a6d67 name: "cwr" @@ -67250,6 +68384,12 @@ member { type_id: 0xe276adef offset: 32 } +member { + id: 0xca75de5a + name: "daddr_cache" + type_id: 0x3b461cc8 + offset: 320 +} member { id: 0xf25f00aa name: "dai_elems" @@ -67936,6 +69076,12 @@ member { type_id: 0x29de0844 offset: 64 } +member { + id: 0xffbef712 + name: "data" + type_id: 0x2cdbb77a + offset: 192 +} member { id: 0xffc40278 name: "data" @@ -68284,6 +69430,18 @@ member { type_id: 0x4585663f offset: 800 } +member { + id: 0x7ecbe350 + name: "data_segs_in" + type_id: 0xc9082b19 + offset: 12448 +} +member { + id: 0xdb2f5379 + name: "data_segs_out" + type_id: 0xc9082b19 + offset: 12640 +} member { id: 0x9e8ccb80 name: "data_shift" @@ -68966,6 +70124,12 @@ member { type_id: 0x74d29cf1 offset: 288 } +member { + id: 0xbc5ebfd1 + name: "deathrow" + type_id: 0x5e8dc7f4 + offset: 448 +} member { id: 0x6b1d26fa name: "debounce_period_us" @@ -69677,6 +70841,13 @@ member { type_id: 0x6d7f5ff6 offset: 4096 } +member { + id: 0x35577470 + name: "defer_connect" + type_id: 0xb3e7bac9 + offset: 7114 + bitsize: 1 +} member { id: 0x81689872 name: "defer_count" @@ -70121,12 +71292,24 @@ member { type_id: 0x6d7f5ff6 offset: 480 } +member { + id: 0x986caa86 + name: "delivered" + type_id: 0xc9082b19 + offset: 15232 +} member { id: 0x9871b666 name: "delivered" type_id: 0xd41e888f offset: 128 } +member { + id: 0xe06780dd + name: "delivered_ce" + type_id: 0xc9082b19 + offset: 15264 +} member { id: 0xe07a91f0 name: "delivered_ce" @@ -70139,6 +71322,12 @@ member { type_id: 0xd3c80119 offset: 3008 } +member { + id: 0xc6e15ebb + name: "delivered_mstamp" + type_id: 0x92233392 + offset: 15424 +} member { id: 0xb362d7b2 name: "dellink" @@ -71059,6 +72248,12 @@ member { type_id: 0x0d27055d offset: 128 } +member { + id: 0xa4170b6e + name: "destructor" + type_id: 0x0d27dc9d + offset: 64 +} member { id: 0xa4b58e4f name: "destructor" @@ -71675,6 +72870,12 @@ member { type_id: 0x0258f96e offset: 2880 } +member { + id: 0xce3bb522 + name: "dev" + type_id: 0x0258f96e + offset: 3072 +} member { id: 0xce3bb837 name: "dev" @@ -73022,15 +74223,26 @@ member { offset: 6816 } member { - id: 0x5685a7bf + id: 0x56ace115 name: "devlink" - type_id: 0x25b57283 + type_id: 0x0cf3d8fe offset: 256 } member { - id: 0x5685afdd + id: 0x56ace1be name: "devlink" - type_id: 0x25b57283 + type_id: 0x0cf3d8fe +} +member { + id: 0x56ace87c + name: "devlink" + type_id: 0x0cf3d8fe + offset: 128 +} +member { + id: 0x56ace977 + name: "devlink" + type_id: 0x0cf3d8fe offset: 192 } member { @@ -73038,6 +74250,12 @@ member { name: "devlink_port" type_id: 0x3b68ec61 } +member { + id: 0xeb76e483 + name: "devlink_port" + type_id: 0x3b68ec61 + offset: 320 +} member { id: 0xf45f2394 name: "devlink_rate" @@ -73323,6 +74541,12 @@ member { type_id: 0x295c7202 offset: 224 } +member { + id: 0x30b83368 + name: "diagnose" + type_id: 0x2e2f03e7 + offset: 192 +} member { id: 0xc3552be5 name: "dialed_frequency" @@ -75533,6 +76757,13 @@ member { type_id: 0x03913382 offset: 6336 } +member { + id: 0x4b741bd1 + name: "dontfrag" + type_id: 0xe8034002 + offset: 570 + bitsize: 1 +} member { id: 0xbd60b76c name: "doorbell" @@ -75686,6 +76917,18 @@ member { offset: 1034 bitsize: 1 } +member { + id: 0x32a55865 + name: "dpipe_headers" + type_id: 0x27c7b3cb + offset: 1472 +} +member { + id: 0x3d9266c0 + name: "dpipe_table_list" + type_id: 0xd3c80119 + offset: 448 +} member { id: 0x95152d3f name: "dplen" @@ -76694,6 +77937,26 @@ member { name: "dsa" type_id: 0x0a5c3627 } +member { + id: 0x09aae020 + name: "dsack" + type_id: 0x914dbfdc + offset: 130 + bitsize: 1 +} +member { + id: 0x7efdf5c5 + name: "dsack_dups" + type_id: 0xc9082b19 + offset: 12800 +} +member { + id: 0x28f28f83 + name: "dsack_seen" + type_id: 0x295c7202 + offset: 173 + bitsize: 1 +} member { id: 0x3c3a7c4f name: "dsc" @@ -76896,6 +78159,12 @@ member { type_id: 0x1259e377 offset: 64 } +member { + id: 0xbbe3f808 + name: "dst" + type_id: 0x1259e377 + offset: 192 +} member { id: 0xbbf78102 name: "dst" @@ -76908,12 +78177,24 @@ member { type_id: 0xe8034002 offset: 48 } +member { + id: 0xebf05092 + name: "dst0opt" + type_id: 0x33642722 + offset: 192 +} member { id: 0x5493d7f6 name: "dst1" type_id: 0xe8034002 offset: 80 } +member { + id: 0xfb3c6654 + name: "dst1opt" + type_id: 0x33642722 + offset: 320 +} member { id: 0x59edf322 name: "dst_addr" @@ -76950,6 +78231,12 @@ member { type_id: 0x78f4e574 offset: 64 } +member { + id: 0x3e931a99 + name: "dst_cookie" + type_id: 0xe62ebf07 + offset: 640 +} member { id: 0x24a0666b name: "dst_csets" @@ -77092,6 +78379,13 @@ member { type_id: 0xe8034002 offset: 144 } +member { + id: 0xcc7711fa + name: "dstopts" + type_id: 0xe8034002 + offset: 8 + bitsize: 1 +} member { id: 0x58e808e0 name: "dt" @@ -77278,6 +78572,12 @@ member { type_id: 0x2f1d9bf5 offset: 960 } +member { + id: 0x0a7d4966 + name: "dump" + type_id: 0x2e2ef220 + offset: 128 +} member { id: 0x0a7e5e7c name: "dump" @@ -77314,6 +78614,24 @@ member { type_id: 0x425c572c offset: 7808 } +member { + id: 0x210293e8 + name: "dump_fmsg" + type_id: 0x23d822f9 + offset: 384 +} +member { + id: 0x33fc8cf5 + name: "dump_lock" + type_id: 0xa7c362b0 + offset: 448 +} +member { + id: 0x352c4ca4 + name: "dump_real_ts" + type_id: 0x92233392 + offset: 1024 +} member { id: 0xc82958b0 name: "dump_segments" @@ -77338,6 +78656,12 @@ member { type_id: 0x2f288c5c offset: 832 } +member { + id: 0x1e719a84 + name: "dump_ts" + type_id: 0x92233392 + offset: 960 +} member { id: 0xa92e0890 name: "dump_vendor_regs" @@ -77380,6 +78704,13 @@ member { type_id: 0x2f2aa245 offset: 64 } +member { + id: 0x330d862e + name: "dup_ack_counter" + type_id: 0x295c7202 + offset: 13720 + bitsize: 2 +} member { id: 0x74874671 name: "dup_xol_addr" @@ -77439,6 +78770,12 @@ member { type_id: 0x2a0a605f offset: 832 } +member { + id: 0xac4c8092 + name: "duplicate_sack" + type_id: 0x8fb3c5ee + offset: 17152 +} member { id: 0xe631c0e0 name: "duplicated" @@ -77963,6 +79300,12 @@ member { type_id: 0x4585663f offset: 1568 } +member { + id: 0x3dfa7679 + name: "ecn_flags" + type_id: 0x295c7202 + offset: 14640 +} member { id: 0xd4971fcb name: "ed" @@ -79050,6 +80393,13 @@ member { name: "enabled" type_id: 0x74d29cf1 } +member { + id: 0x7a56a000 + name: "enabled" + type_id: 0xc9082b19 + offset: 95 + bitsize: 1 +} member { id: 0x7a56a64a name: "enabled" @@ -79460,6 +80810,18 @@ member { type_id: 0xd0ccb483 offset: 64 } +member { + id: 0xd5a56009 + name: "end_seq" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0xd5a564b1 + name: "end_seq" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0x357800a2 name: "end_station" @@ -80472,6 +81834,12 @@ member { offset: 6530 bitsize: 1 } +member { + id: 0x0b6ea206 + name: "error_count" + type_id: 0x92233392 + offset: 1088 +} member { id: 0x0b9ba55b name: "error_count" @@ -80674,6 +82042,42 @@ member { type_id: 0x39470e64 offset: 256 } +member { + id: 0x2d2ca64a + name: "eswitch_encap_mode_get" + type_id: 0x2d046cf4 + offset: 1408 +} +member { + id: 0x0e5d040f + name: "eswitch_encap_mode_set" + type_id: 0x2df84197 + offset: 1472 +} +member { + id: 0xff091101 + name: "eswitch_inline_mode_get" + type_id: 0x2d3ffbc6 + offset: 1280 +} +member { + id: 0xf81283dc + name: "eswitch_inline_mode_set" + type_id: 0x2d161d5c + offset: 1344 +} +member { + id: 0x67ecafb3 + name: "eswitch_mode_get" + type_id: 0x2d11ffb5 + offset: 1152 +} +member { + id: 0x06f3214d + name: "eswitch_mode_set" + type_id: 0x2dae0c91 + offset: 1216 +} member { id: 0xca94b2d4 name: "eth_tp_mdix" @@ -81800,6 +83204,12 @@ member { type_id: 0x3fcbf304 offset: 1024 } +member { + id: 0x9633fcdf + name: "exp" + type_id: 0x6d7f5ff6 + offset: 136 +} member { id: 0x964efc36 name: "exp" @@ -81979,6 +83389,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x91036748 + name: "expires" + type_id: 0x33756485 + offset: 704 +} member { id: 0x91036cb7 name: "expires" @@ -82845,6 +84261,11 @@ member { type_id: 0x6720d32f offset: 672 } +member { + id: 0xe37696ac + name: "faddr" + type_id: 0xe276adef +} member { id: 0x0bad70a4 name: "fade_length" @@ -82961,6 +84382,12 @@ member { name: "family" type_id: 0xc93e017b } +member { + id: 0x9e9c9ad1 + name: "family" + type_id: 0xc93e017b + offset: 112 +} member { id: 0x9ebdabf6 name: "family" @@ -83007,6 +84434,18 @@ member { name: "fast_io" type_id: 0x6d7f5ff6 } +member { + id: 0xcee88548 + name: "fast_ipv6_only" + type_id: 0x6d7f5ff6 + offset: 336 +} +member { + id: 0xfd693ce8 + name: "fast_rcv_saddr" + type_id: 0xe276adef + offset: 288 +} member { id: 0xd0fd5f6f name: "fast_reconnect" @@ -83019,6 +84458,12 @@ member { type_id: 0xc93e017b offset: 704 } +member { + id: 0x247ebe29 + name: "fast_sk_family" + type_id: 0xc93e017b + offset: 320 +} member { id: 0xe96aa3ec name: "fast_start_pfn" @@ -83043,6 +84488,12 @@ member { type_id: 0x6d7f5ff6 offset: 4992 } +member { + id: 0x6398a0a9 + name: "fast_v6_rcv_saddr" + type_id: 0x6d25e07f + offset: 160 +} member { id: 0xbe23cb67 name: "fastchannel_db_ring" @@ -83055,6 +84506,63 @@ member { type_id: 0x0d53cd40 offset: 192 } +member { + id: 0xa42f5b5e + name: "fastopen_client_fail" + type_id: 0x295c7202 + offset: 13862 + bitsize: 2 +} +member { + id: 0x5d29f448 + name: "fastopen_connect" + type_id: 0x295c7202 + offset: 13859 + bitsize: 1 +} +member { + id: 0x72c8b468 + name: "fastopen_no_cookie" + type_id: 0x295c7202 + offset: 13860 + bitsize: 1 +} +member { + id: 0x349100e3 + name: "fastopen_req" + type_id: 0x04a9576c + offset: 18688 +} +member { + id: 0x7a4a99f1 + name: "fastopen_rsk" + type_id: 0x27847a9a + offset: 18752 +} +member { + id: 0x5aaa76bb + name: "fastopenq" + type_id: 0xce180920 + offset: 320 +} +member { + id: 0xa6e81f22 + name: "fastreuse" + type_id: 0x5ab350f8 + offset: 112 +} +member { + id: 0x244da0b8 + name: "fastreuseport" + type_id: 0x5ab350f8 + offset: 120 +} +member { + id: 0x73b4d4d5 + name: "fastuid" + type_id: 0xe90b32b7 + offset: 128 +} member { id: 0xa3521312 name: "fasync" @@ -84129,6 +85637,12 @@ member { type_id: 0x92233392 offset: 7744 } +member { + id: 0xc58a570e + name: "features" + type_id: 0x92233392 + offset: 2496 +} member { id: 0xc5a16345 name: "features" @@ -84333,6 +85847,11 @@ member { type_id: 0x318f8bcb offset: 256 } +member { + id: 0x4e824c05 + name: "fh" + type_id: 0x982afc69 +} member { id: 0x2db4ae9c name: "fh_list" @@ -84948,6 +86467,12 @@ member { type_id: 0x7dbd382e offset: 352 } +member { + id: 0x784a4b9b + name: "fields" + type_id: 0x19df035f + offset: 128 +} member { id: 0x788054c9 name: "fields" @@ -84971,6 +86496,12 @@ member { type_id: 0x2db9a683 offset: 256 } +member { + id: 0x361d56de + name: "fields_count" + type_id: 0x4585663f + offset: 192 +} member { id: 0x53870b05 name: "fiemap" @@ -85861,6 +87392,12 @@ member { type_id: 0x3846864c offset: 6720 } +member { + id: 0xc8ee40be + name: "first_tx_mstamp" + type_id: 0x92233392 + offset: 15360 +} member { id: 0x7fb051f9 name: "firstuse" @@ -85947,6 +87484,18 @@ member { type_id: 0x0ece1cac offset: 832 } +member { + id: 0x75129e6a + name: "fl" + type_id: 0x0bbb7f1b + offset: 64 +} +member { + id: 0x75577b27 + name: "fl" + type_id: 0x4e5da42b + offset: 448 +} member { id: 0x0476553f name: "fl_blocked_member" @@ -86029,6 +87578,12 @@ member { type_id: 0x3d3ea9eb offset: 1408 } +member { + id: 0x1f4e61c9 + name: "fl_net" + type_id: 0x0ca27481 + offset: 768 +} member { id: 0xda5f8429 name: "fl_ops" @@ -87517,6 +89072,12 @@ member { type_id: 0x0d9a8731 offset: 1600 } +member { + id: 0x5ef8d6d5 + name: "flash_update" + type_id: 0x2d16aeaf + offset: 1600 +} member { id: 0x4ad49fc7 name: "flat" @@ -87553,6 +89114,11 @@ member { type_id: 0x03e0374b offset: 64 } +member { + id: 0xdf2fd72b + name: "flavour" + type_id: 0x03e0374b +} member { id: 0x9a18c6a2 name: "flc_flock" @@ -87636,6 +89202,12 @@ member { type_id: 0xb3e7bac9 offset: 416 } +member { + id: 0x2ac20e0b + name: "flow_label" + type_id: 0xe276adef + offset: 384 +} member { id: 0xe809ed63 name: "flow_limit" @@ -88805,6 +90377,12 @@ member { type_id: 0x06835e9c offset: 1792 } +member { + id: 0x3c1c76af + name: "frag_size" + type_id: 0xe62ebf07 + offset: 416 +} member { id: 0x3c33517f name: "frag_size" @@ -88899,6 +90477,12 @@ member { type_id: 0x34544a3f offset: 192 } +member { + id: 0xe25ba6f2 + name: "fragsize" + type_id: 0x4585663f + offset: 128 +} member { id: 0x16107977 name: "frame" @@ -89617,6 +91201,13 @@ member { type_id: 0x038cb58c offset: 64 } +member { + id: 0x0ccb8adb + name: "freebind" + type_id: 0xb3e7bac9 + offset: 7106 + bitsize: 1 +} member { id: 0xedafcd8e name: "freehigh" @@ -90058,6 +91649,13 @@ member { type_id: 0x0fd41724 offset: 384 } +member { + id: 0xdaf769b4 + name: "frto" + type_id: 0x295c7202 + offset: 13871 + bitsize: 1 +} member { id: 0x9442b15a name: "fs" @@ -90802,6 +92400,11 @@ member { type_id: 0x0faae5b1 offset: 96 } +member { + id: 0x91e86fed + name: "fw" + type_id: 0x33011141 +} member { id: 0x51f9c40d name: "fw_download" @@ -91412,6 +93015,18 @@ member { name: "generic" type_id: 0x09dc021e } +member { + id: 0x4257f83b + name: "generic" + type_id: 0x6d7f5ff6 + offset: 80 +} +member { + id: 0x4257f846 + name: "generic" + type_id: 0x6d7f5ff6 + offset: 64 +} member { id: 0x42d6db26 name: "generic" @@ -92121,12 +93736,24 @@ member { type_id: 0x2db9b3cf offset: 128 } +member { + id: 0x1d9b9b9d + name: "get_info" + type_id: 0x2e735a06 + offset: 320 +} member { id: 0x1d9baad0 name: "get_info" type_id: 0x2e43a9f5 offset: 640 } +member { + id: 0xbaa156f0 + name: "get_info_size" + type_id: 0x2cd9dff0 + offset: 384 +} member { id: 0x8e932e8e name: "get_ino_and_lblk_bits" @@ -92460,6 +94087,12 @@ member { type_id: 0x0cbb9c80 offset: 320 } +member { + id: 0xcf06c106 + name: "get_page" + type_id: 0x2b4b15b4 + offset: 128 +} member { id: 0xacf61961 name: "get_params" @@ -93137,6 +94770,12 @@ member { type_id: 0x2c451522 offset: 640 } +member { + id: 0xd9ad3ae7 + name: "getsockopt" + type_id: 0x2c451522 + offset: 512 +} member { id: 0xd9adeb4d name: "getsockopt" @@ -93285,6 +94924,12 @@ member { type_id: 0xe742397c offset: 576 } +member { + id: 0x55f132cc + name: "global" + type_id: 0x6d7f5ff6 + offset: 224 +} member { id: 0x9e65d647 name: "global" @@ -93616,6 +95261,12 @@ member { type_id: 0x1f3595db offset: 128 } +member { + id: 0x62d28eb5 + name: "graceful_period" + type_id: 0x92233392 + offset: 832 +} member { id: 0x0277381e name: "graft" @@ -94110,6 +95761,18 @@ member { type_id: 0x2584a3b9 offset: 2240 } +member { + id: 0x085eba8a + name: "gso_segs" + type_id: 0x914dbfdc + offset: 12304 +} +member { + id: 0xeaa4b2c9 + name: "gso_size" + type_id: 0xe8034002 + offset: 304 +} member { id: 0xcf0db7be name: "gso_skb" @@ -95699,6 +97362,19 @@ member { type_id: 0x295c7202 offset: 480 } +member { + id: 0x3cd68edd + name: "hdrincl" + type_id: 0xb3e7bac9 + offset: 7107 + bitsize: 1 +} +member { + id: 0xd608b573 + name: "hdrlen" + type_id: 0xb3e7bac9 + offset: 8 +} member { id: 0xd6dc741c name: "hdrlen" @@ -96098,6 +97774,17 @@ member { name: "headers" type_id: 0x0524ca5a } +member { + id: 0x614c39f2 + name: "headers" + type_id: 0x0f657fc1 +} +member { + id: 0x958f08da + name: "headers_count" + type_id: 0x4585663f + offset: 64 +} member { id: 0x3e17b5ef name: "headroom" @@ -96145,6 +97832,12 @@ member { type_id: 0xc9082b19 offset: 896 } +member { + id: 0x768a691a + name: "health_state" + type_id: 0x295c7202 + offset: 912 +} member { id: 0x049198e2 name: "heap" @@ -96382,6 +98075,12 @@ member { type_id: 0x33756485 offset: 64 } +member { + id: 0x39a33a5e + name: "hi" + type_id: 0xe8034002 + offset: 16 +} member { id: 0xf5cc8294 name: "hibern8_exit_cnt" @@ -96514,6 +98213,12 @@ member { type_id: 0x5395485e offset: 3712 } +member { + id: 0x60f3e5b5 + name: "high_seq" + type_id: 0xc9082b19 + offset: 17856 +} member { id: 0x15795ada name: "high_speed" @@ -96550,6 +98255,12 @@ member { type_id: 0x3b04bc55 offset: 12992 } +member { + id: 0x6da3106a + name: "highest_sack" + type_id: 0x054f691a + offset: 17728 +} member { id: 0x2ca966e1 name: "highest_zoneidx" @@ -96869,12 +98580,38 @@ member { type_id: 0xe8a3834b offset: 1152 } +member { + id: 0x46cd5abc + name: "hop_limit" + type_id: 0x007e8ce4 + offset: 455 + bitsize: 9 +} member { id: 0x9f4d6a46 name: "hop_limit" type_id: 0x0faae5b1 offset: 32 } +member { + id: 0x9f6b950b + name: "hop_limit" + type_id: 0x295c7202 + offset: 64 +} +member { + id: 0x111085fe + name: "hopopt" + type_id: 0x33642722 + offset: 128 +} +member { + id: 0xede7771d + name: "hopopts" + type_id: 0xe8034002 + offset: 6 + bitsize: 1 +} member { id: 0xe90d2c02 name: "hops" @@ -99003,6 +100740,11 @@ member { offset: 3664 bitsize: 1 } +member { + id: 0xe50fbded + name: "ib_net" + type_id: 0xb335d16f +} member { id: 0xe8f0d6c1 name: "ib_window_map" @@ -99224,6 +100966,201 @@ member { type_id: 0x80c20070 offset: 192 } +member { + id: 0x2a778fa0 + name: "icsk_accept_queue" + type_id: 0xf05a506e + offset: 8704 +} +member { + id: 0xc36d8395 + name: "icsk_ack" + type_id: 0x260445a5 + offset: 11008 +} +member { + id: 0xeb6a5fa1 + name: "icsk_af_ops" + type_id: 0x384d1346 + offset: 10624 +} +member { + id: 0xb27d04f5 + name: "icsk_backoff" + type_id: 0xb3e7bac9 + offset: 10968 +} +member { + id: 0xf1a367c5 + name: "icsk_bind2_hash" + type_id: 0x0a67a4e3 + offset: 9408 +} +member { + id: 0xa53e6076 + name: "icsk_bind_hash" + type_id: 0x33086ec3 + offset: 9344 +} +member { + id: 0x8e756dfb + name: "icsk_ca_dst_locked" + type_id: 0xb3e7bac9 + offset: 10951 + bitsize: 1 +} +member { + id: 0x9b3f0555 + name: "icsk_ca_initialized" + type_id: 0xb3e7bac9 + offset: 10949 + bitsize: 1 +} +member { + id: 0x2b917283 + name: "icsk_ca_ops" + type_id: 0x30ba0612 + offset: 10560 +} +member { + id: 0xa86967ec + name: "icsk_ca_priv" + type_id: 0x62a5e001 + offset: 11456 +} +member { + id: 0x5c570222 + name: "icsk_ca_setsockopt" + type_id: 0xb3e7bac9 + offset: 10950 + bitsize: 1 +} +member { + id: 0x8adfff2f + name: "icsk_ca_state" + type_id: 0xb3e7bac9 + offset: 10944 + bitsize: 5 +} +member { + id: 0x411180b7 + name: "icsk_clean_acked" + type_id: 0x0fab66ce + offset: 10816 +} +member { + id: 0xcfd1f1ed + name: "icsk_delack_max" + type_id: 0xe62ebf07 + offset: 10496 +} +member { + id: 0xbf3d6991 + name: "icsk_delack_timer" + type_id: 0xd298e888 + offset: 9984 +} +member { + id: 0xd7cc2503 + name: "icsk_ext_hdr_len" + type_id: 0xe8034002 + offset: 10992 +} +member { + id: 0x9bd0d4a0 + name: "icsk_inet" + type_id: 0xd2a4529d +} +member { + id: 0xc75c6970 + name: "icsk_mtup" + type_id: 0x249bcdf3 + offset: 11200 +} +member { + id: 0xfd5174f1 + name: "icsk_pending" + type_id: 0xb3e7bac9 + offset: 10960 +} +member { + id: 0x9796567d + name: "icsk_pmtu_cookie" + type_id: 0xe62ebf07 + offset: 10528 +} +member { + id: 0x2d061585 + name: "icsk_probes_out" + type_id: 0xb3e7bac9 + offset: 10984 +} +member { + id: 0xf4f5c9e8 + name: "icsk_probes_tstamp" + type_id: 0xc9082b19 + offset: 11328 +} +member { + id: 0x3adf52b3 + name: "icsk_retransmit_timer" + type_id: 0xd298e888 + offset: 9536 +} +member { + id: 0x6bd77d33 + name: "icsk_retransmits" + type_id: 0xb3e7bac9 + offset: 10952 +} +member { + id: 0xaa84a388 + name: "icsk_rto" + type_id: 0xe62ebf07 + offset: 10432 +} +member { + id: 0x7c9184fd + name: "icsk_rto_min" + type_id: 0xe62ebf07 + offset: 10464 +} +member { + id: 0x2446b1e6 + name: "icsk_syn_retries" + type_id: 0xb3e7bac9 + offset: 10976 +} +member { + id: 0x5392fe03 + name: "icsk_sync_mss" + type_id: 0x383bad14 + offset: 10880 +} +member { + id: 0xe54062f3 + name: "icsk_timeout" + type_id: 0x33756485 + offset: 9472 +} +member { + id: 0x69ab5d87 + name: "icsk_ulp_data" + type_id: 0x18bd6530 + offset: 10752 +} +member { + id: 0x50d22351 + name: "icsk_ulp_ops" + type_id: 0x378dbf55 + offset: 10688 +} +member { + id: 0x973a1269 + name: "icsk_user_timeout" + type_id: 0xc9082b19 + offset: 11360 +} member { id: 0xa75f3275 name: "icv_len" @@ -99679,6 +101616,18 @@ member { name: "id" type_id: 0x914dbfdc } +member { + id: 0xccbe65b2 + name: "id" + type_id: 0x914dbfdc + offset: 80 +} +member { + id: 0xccbe65cf + name: "id" + type_id: 0x914dbfdc + offset: 64 +} member { id: 0xccc14505 name: "id" @@ -101947,6 +103896,11 @@ member { type_id: 0xe62ebf07 offset: 128 } +member { + id: 0xadf00094 + name: "index" + type_id: 0xc9082b19 +} member { id: 0xadf006ed name: "index" @@ -102025,6 +103979,35 @@ member { type_id: 0x1d33485a offset: 4992 } +member { + id: 0x07676cab + name: "inet_conn" + type_id: 0x82dbb487 +} +member { + id: 0x78639f81 + name: "inet_id" + type_id: 0xe8034002 + offset: 7056 +} +member { + id: 0x38f59a08 + name: "inet_opt" + type_id: 0x38090ad2 + offset: 6976 +} +member { + id: 0x8be10b49 + name: "inet_saddr" + type_id: 0xe276adef + offset: 6912 +} +member { + id: 0x674b03be + name: "inet_sport" + type_id: 0x7584e7da + offset: 7040 +} member { id: 0x3e2089f0 name: "inexact_bins" @@ -102234,6 +104217,12 @@ member { type_id: 0x4585663f offset: 224 } +member { + id: 0xe0c4d82e + name: "info_get" + type_id: 0x2d0679a1 + offset: 1536 +} member { id: 0x2f8cd3f3 name: "info_ident" @@ -102484,6 +104473,12 @@ member { type_id: 0x2c24424a offset: 384 } +member { + id: 0x1ac6e8a5 + name: "init" + type_id: 0x2c24424a + offset: 128 +} member { id: 0x1ac72504 name: "init" @@ -102609,6 +104604,12 @@ member { offset: 608 bitsize: 1 } +member { + id: 0x3ecaad84 + name: "init_action" + type_id: 0x322b7a90 + offset: 32 +} member { id: 0xc9830a15 name: "init_addr" @@ -102639,6 +104640,12 @@ member { type_id: 0x0c7ce901 offset: 64 } +member { + id: 0xb36eb0c7 + name: "init_burst" + type_id: 0x92233392 + offset: 128 +} member { id: 0xed4a99de name: "init_callback" @@ -102693,12 +104700,23 @@ member { type_id: 0x295c7202 offset: 128 } +member { + id: 0xedc364a3 + name: "init_fs" + type_id: 0x22b357e9 +} member { id: 0x35f4d7c6 name: "init_fs_context" type_id: 0x2f05fd8b offset: 128 } +member { + id: 0xa4c7afe2 + name: "init_group_id" + type_id: 0x914dbfdc + offset: 192 +} member { id: 0xf587a1e9 name: "init_hctx" @@ -102753,12 +104771,24 @@ member { type_id: 0xc9082b19 offset: 864 } +member { + id: 0xf53cc107 + name: "init_policer_id" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0x015559ae name: "init_qp_minus26" type_id: 0x901eaf6a offset: 32 } +member { + id: 0x2b41bb63 + name: "init_rate" + type_id: 0x92233392 + offset: 64 +} member { id: 0xf8fed40c name: "init_ready" @@ -102788,6 +104818,12 @@ member { type_id: 0x3292450a offset: 64 } +member { + id: 0xcc9b87bc + name: "init_shared_fs" + type_id: 0x2ce2190b + offset: 64 +} member { id: 0x7ab1d042 name: "init_speed" @@ -103116,6 +105152,11 @@ member { type_id: 0xd5df6730 offset: 256 } +member { + id: 0x0ca7cb72 + name: "ino" + type_id: 0xee72cbfc +} member { id: 0x0cdb9a21 name: "ino" @@ -104295,6 +106336,18 @@ member { type_id: 0x0c5a56fb offset: 512 } +member { + id: 0x6a15223b + name: "invalidate_fs" + type_id: 0x08c420f1 + offset: 384 +} +member { + id: 0x6f43a794 + name: "invalidate_inode" + type_id: 0x080e08ce + offset: 320 +} member { id: 0x17dabd89 name: "invalidate_lock" @@ -104307,6 +106360,12 @@ member { type_id: 0x475137a2 offset: 576 } +member { + id: 0x107f64d3 + name: "invalidate_page" + type_id: 0x080d3f98 + offset: 256 +} member { id: 0xa4356576 name: "invalidate_seq" @@ -105500,6 +107559,17 @@ member { type_id: 0x23317b59 offset: 256 } +member { + id: 0xce9a5c98 + name: "ipi6_addr" + type_id: 0x6d25e07f +} +member { + id: 0x8e98680e + name: "ipi6_ifindex" + type_id: 0x6720d32f + offset: 128 +} member { id: 0xe69d21c0 name: "ipi_list" @@ -105575,6 +107645,11 @@ member { type_id: 0x34544a3f offset: 1152 } +member { + id: 0xfa946861 + name: "ipv4_nh" + type_id: 0xc9082b19 +} member { id: 0x3b9e102b name: "ipv6" @@ -105603,6 +107678,12 @@ member { name: "ipv6" type_id: 0x09547003 } +member { + id: 0xe2141007 + name: "ipv6_ac_list" + type_id: 0x01ae5751 + offset: 768 +} member { id: 0x12832f3f name: "ipv6_dev_find" @@ -105615,12 +107696,29 @@ member { type_id: 0x221aed72 offset: 128 } +member { + id: 0x1e958d31 + name: "ipv6_fl_list" + type_id: 0x3f985801 + offset: 832 +} member { id: 0xcf78c1e2 name: "ipv6_fragment" type_id: 0x2d271bc7 offset: 1344 } +member { + id: 0xfce07b0f + name: "ipv6_mc_list" + type_id: 0x12e0cbae + offset: 704 +} +member { + id: 0xab39140b + name: "ipv6_nh" + type_id: 0x6d25e07f +} member { id: 0xdf622691 name: "ipv6_route_input" @@ -106484,6 +108582,13 @@ member { offset: 9248 bitsize: 1 } +member { + id: 0xb9615f80 + name: "is_changed" + type_id: 0x5d8155a5 + offset: 98 + bitsize: 1 +} member { id: 0xcf3f1b2e name: "is_child_subreaper" @@ -106515,6 +108620,13 @@ member { type_id: 0x6d7f5ff6 offset: 128 } +member { + id: 0xb9645bc8 + name: "is_cwnd_limited" + type_id: 0x295c7202 + offset: 13887 + bitsize: 1 +} member { id: 0x454d50bd name: "is_dead" @@ -106658,6 +108770,13 @@ member { type_id: 0x6d7f5ff6 offset: 64 } +member { + id: 0x1facb5a4 + name: "is_icsk" + type_id: 0xb3e7bac9 + offset: 7105 + bitsize: 1 +} member { id: 0xbbefba04 name: "is_initialized" @@ -106955,6 +109074,13 @@ member { type_id: 0x6d7f5ff6 offset: 968 } +member { + id: 0xb9f127f6 + name: "is_sack_reneg" + type_id: 0x295c7202 + offset: 13861 + bitsize: 1 +} member { id: 0x7855a324 name: "is_second_field" @@ -107002,6 +109128,13 @@ member { type_id: 0x295c7202 offset: 464 } +member { + id: 0x1e6a6587 + name: "is_strictroute" + type_id: 0x5d8155a5 + offset: 96 + bitsize: 1 +} member { id: 0x3fe7857f name: "is_string" @@ -107347,6 +109480,11 @@ member { name: "item" type_id: 0x3f8fe745 } +member { + id: 0x990317f0 + name: "item_list" + type_id: 0xd3c80119 +} member { id: 0xa70d7362 name: "item_ptr" @@ -107899,6 +110037,24 @@ member { type_id: 0x0f054e36 offset: 704 } +member { + id: 0xb4c1a226 + name: "keepalive_intvl" + type_id: 0x4585663f + offset: 18144 +} +member { + id: 0xeb2f3b5f + name: "keepalive_probes" + type_id: 0x295c7202 + offset: 14648 +} +member { + id: 0x9e7c1e77 + name: "keepalive_time" + type_id: 0x4585663f + offset: 18112 +} member { id: 0x3f65622e name: "keepout" @@ -107911,6 +110067,12 @@ member { type_id: 0x340dea21 offset: 8384 } +member { + id: 0x632a4ba2 + name: "kern_flags" + type_id: 0xc9082b19 + offset: 256 +} member { id: 0x3afd0925 name: "kern_hyp_va" @@ -108134,6 +110296,11 @@ member { type_id: 0x92233392 offset: 640 } +member { + id: 0x20c5e9f7 + name: "key" + type_id: 0x93e3596e +} member { id: 0x20c661f5 name: "key" @@ -109110,6 +111277,12 @@ member { type_id: 0x295c7202 offset: 328 } +member { + id: 0xe6f3661d + name: "l3mdev" + type_id: 0x6720d32f + offset: 64 +} member { id: 0xa2b82643 name: "l3num" @@ -109176,6 +111349,12 @@ member { type_id: 0x3e10b518 offset: 8768 } +member { + id: 0x05cb6176 + name: "label" + type_id: 0xe276adef + offset: 64 +} member { id: 0x05cb61ce name: "label" @@ -109528,6 +111707,12 @@ member { type_id: 0x92233392 offset: 2624 } +member { + id: 0x8762b004 + name: "last_delivered" + type_id: 0xc9082b19 + offset: 128 +} member { id: 0x0c7f9894 name: "last_delta" @@ -109783,6 +111968,12 @@ member { type_id: 0x33756485 offset: 128 } +member { + id: 0x41099e1a + name: "last_oow_ack_time" + type_id: 0xc9082b19 + offset: 12960 +} member { id: 0x7c2533b6 name: "last_overrun" @@ -109878,6 +112069,12 @@ member { type_id: 0x33756485 offset: 5504 } +member { + id: 0x41fdc1b3 + name: "last_recovery_ts" + type_id: 0x92233392 + offset: 1216 +} member { id: 0xc6b95840 name: "last_reset" @@ -109927,6 +112124,12 @@ member { type_id: 0x3ef55b88 offset: 64 } +member { + id: 0x4c233807 + name: "last_seg_size" + type_id: 0xe8034002 + offset: 160 +} member { id: 0xadd33b5a name: "last_seq" @@ -110123,6 +112326,12 @@ member { type_id: 0xedf277ba offset: 64 } +member { + id: 0xccd48510 + name: "lastuse" + type_id: 0x33756485 + offset: 640 +} member { id: 0xccd48a1b name: "lastuse" @@ -110951,6 +113160,12 @@ member { type_id: 0x0baa70a7 offset: 192 } +member { + id: 0xb82c6bed + name: "len" + type_id: 0x29b77961 + offset: 128 +} member { id: 0xb82c8b76 name: "len" @@ -111256,6 +113471,12 @@ member { type_id: 0x6720d32f offset: 64 } +member { + id: 0xb50a4f6b + name: "length" + type_id: 0x6720d32f + offset: 160 +} member { id: 0xb518ea7e name: "length" @@ -111833,11 +114054,23 @@ member { offset: 576 } member { - id: 0xd1c402eb + id: 0xd1e477a3 name: "linecard" - type_id: 0x2a0586b2 + type_id: 0x0a70ce1b offset: 2688 } +member { + id: 0x2bafedce + name: "linecard_list" + type_id: 0xd3c80119 + offset: 1920 +} +member { + id: 0x66da3728 + name: "linecards_lock" + type_id: 0xa7c362b0 + offset: 2048 +} member { id: 0xc4fd637a name: "linedur_ns" @@ -111869,6 +114102,18 @@ member { type_id: 0xc9082b19 offset: 8192 } +member { + id: 0xe93fdbc8 + name: "linger" + type_id: 0x33756485 + offset: 320 +} +member { + id: 0x0ab38392 + name: "linger2" + type_id: 0x6720d32f + offset: 18176 +} member { id: 0x55610d26 name: "link" @@ -112980,6 +115225,11 @@ member { offset: 34 bitsize: 1 } +member { + id: 0x9f6503ee + name: "lo" + type_id: 0xe8034002 +} member { id: 0x9fbe75ca name: "lo" @@ -113185,6 +115435,12 @@ member { type_id: 0x2d2736e0 offset: 768 } +member { + id: 0x5b66efeb + name: "local_port_range" + type_id: 0x3fbb6cee + offset: 8512 +} member { id: 0x11369f07 name: "local_sdu_itime" @@ -113644,6 +115900,12 @@ member { type_id: 0xa7c362b0 offset: 1152 } +member { + id: 0x2d4b3330 + name: "lock" + type_id: 0xa7c362b0 + offset: 3200 +} member { id: 0x2d4b353f name: "lock" @@ -113893,6 +116155,12 @@ member { type_id: 0x1b44744f offset: 1280 } +member { + id: 0x5f5e621d + name: "lock_key" + type_id: 0x475137a2 + offset: 3584 +} member { id: 0x5f5e64df name: "lock_key" @@ -114558,6 +116826,18 @@ member { type_id: 0x299c4193 offset: 576 } +member { + id: 0x14a57188 + name: "lost" + type_id: 0xc9082b19 + offset: 15296 +} +member { + id: 0x36a89416 + name: "lost_cnt_hint" + type_id: 0x6720d32f + offset: 17792 +} member { id: 0xc431d6f2 name: "lost_events" @@ -114586,12 +116866,24 @@ member { name: "lost_msgs" type_id: 0x6f3d464c } +member { + id: 0x2d8724a1 + name: "lost_out" + type_id: 0xc9082b19 + offset: 15680 +} member { id: 0xa0d3e60e name: "lost_samples" type_id: 0x1f4573ef offset: 7808 } +member { + id: 0x86cd98a0 + name: "lost_skb_hint" + type_id: 0x054f691a + offset: 16896 +} member { id: 0xe4294f6c name: "low" @@ -114864,6 +117156,12 @@ member { type_id: 0x1dd474ea offset: 832 } +member { + id: 0x9d3fc94e + name: "lrcvtime" + type_id: 0xe62ebf07 + offset: 128 +} member { id: 0x5434db0f name: "lru" @@ -114981,6 +117279,12 @@ member { type_id: 0x4585663f offset: 1312 } +member { + id: 0xcaaa728e + name: "lsndtime" + type_id: 0xc9082b19 + offset: 12928 +} member { id: 0xabed406f name: "lsr_save_mask" @@ -115870,6 +118174,12 @@ member { name: "map" type_id: 0x04b193cc } +member { + id: 0x8df2c9e6 + name: "map" + type_id: 0x04b193cc + offset: 128 +} member { id: 0x8df87907 name: "map" @@ -116086,6 +118396,12 @@ member { name: "map_id" type_id: 0xe62ebf07 } +member { + id: 0x86e8bd6c + name: "map_id" + type_id: 0xc9082b19 + offset: 192 +} member { id: 0xa32be5db name: "map_ifindex" @@ -116353,6 +118669,12 @@ member { type_id: 0x6e73208e offset: 192 } +member { + id: 0x2a093f90 + name: "map_type" + type_id: 0x6e73208e + offset: 224 +} member { id: 0x2a81612b name: "map_type" @@ -116471,6 +118793,12 @@ member { type_id: 0xc9082b19 offset: 3008 } +member { + id: 0x8b645ad4 + name: "mapping_type" + type_id: 0xe09c0936 + offset: 128 +} member { id: 0x4971df2a name: "mappings" @@ -116542,6 +118870,12 @@ member { name: "mark" type_id: 0xc9082b19 } +member { + id: 0x8196ad18 + name: "mark" + type_id: 0xc9082b19 + offset: 384 +} member { id: 0x81b98a1e name: "mark" @@ -117550,6 +119884,12 @@ member { type_id: 0x4585663f offset: 96 } +member { + id: 0x9c062023 + name: "max_burst" + type_id: 0x92233392 + offset: 320 +} member { id: 0x9c5d053e name: "max_burst" @@ -118348,6 +120688,12 @@ member { type_id: 0x4585663f offset: 96 } +member { + id: 0x1d340096 + name: "max_packets_out" + type_id: 0xc9082b19 + offset: 14560 +} member { id: 0xc09a441d name: "max_page" @@ -118466,6 +120812,12 @@ member { type_id: 0x4585663f offset: 224 } +member { + id: 0x6bf829f7 + name: "max_qlen" + type_id: 0x6720d32f + offset: 192 +} member { id: 0xfbb3d064 name: "max_queue" @@ -118496,6 +120848,12 @@ member { type_id: 0x33756485 offset: 320 } +member { + id: 0x5cea623b + name: "max_rate" + type_id: 0x92233392 + offset: 192 +} member { id: 0xf3d009b3 name: "max_ratio" @@ -118848,6 +121206,12 @@ member { type_id: 0x295c7202 offset: 672 } +member { + id: 0x2a2e382b + name: "max_snapshots" + type_id: 0xc9082b19 + offset: 832 +} member { id: 0x9213bcc2 name: "max_socks" @@ -119179,6 +121543,12 @@ member { type_id: 0xc9082b19 offset: 2048 } +member { + id: 0xb0b5b654 + name: "max_window" + type_id: 0xc9082b19 + offset: 13376 +} member { id: 0x02a4136b name: "max_workers" @@ -119551,6 +121921,26 @@ member { type_id: 0x4f5972f9 offset: 5056 } +member { + id: 0x5a22c9ad + name: "mc_addr" + type_id: 0xe276adef + offset: 7200 +} +member { + id: 0x1b81e20c + name: "mc_all" + type_id: 0xe8034002 + offset: 573 + bitsize: 1 +} +member { + id: 0x1bda0ea3 + name: "mc_all" + type_id: 0xb3e7bac9 + offset: 7110 + bitsize: 1 +} member { id: 0xedd041f2 name: "mc_autojoin_sk" @@ -119617,12 +122007,24 @@ member { type_id: 0xf1159c31 offset: 1728 } +member { + id: 0x02fcf451 + name: "mc_index" + type_id: 0x6720d32f + offset: 7168 +} member { id: 0x9c4c6ca6 name: "mc_list" type_id: 0x2d5e3e76 offset: 192 } +member { + id: 0x9c6a8ab2 + name: "mc_list" + type_id: 0x0bbfad26 + offset: 7232 +} member { id: 0x9c6ad1bd name: "mc_list" @@ -119635,6 +122037,20 @@ member { type_id: 0xa7c362b0 offset: 6528 } +member { + id: 0xa582fe9b + name: "mc_loop" + type_id: 0xe8034002 + offset: 464 + bitsize: 1 +} +member { + id: 0xa5d9163f + name: "mc_loop" + type_id: 0xb3e7bac9 + offset: 7108 + bitsize: 1 +} member { id: 0x99f606f1 name: "mc_maxdelay" @@ -119719,6 +122135,12 @@ member { type_id: 0xf313e71a offset: 352 } +member { + id: 0x7008fda6 + name: "mc_ttl" + type_id: 0xb3e7bac9 + offset: 7088 +} member { id: 0xd4582df4 name: "mc_v1_seen" @@ -119796,6 +122218,19 @@ member { type_id: 0xf1159c31 offset: 576 } +member { + id: 0x34d8f2b6 + name: "mcast_hops" + type_id: 0x007e8ce4 + offset: 471 + bitsize: 9 +} +member { + id: 0xe14bd1fe + name: "mcast_oif" + type_id: 0x6720d32f + offset: 512 +} member { id: 0x2cf10ddb name: "mcgrp_offset" @@ -119932,6 +122367,18 @@ member { type_id: 0x16239d0c offset: 64 } +member { + id: 0xf098d631 + name: "mdev_max_us" + type_id: 0xc9082b19 + offset: 14208 +} +member { + id: 0x00d04522 + name: "mdev_us" + type_id: 0xc9082b19 + offset: 14176 +} member { id: 0xc96faa23 name: "mdio" @@ -120763,6 +123210,12 @@ member { type_id: 0x1e937ceb offset: 704 } +member { + id: 0xd492332a + name: "metadata_cap" + type_id: 0xc9082b19 + offset: 224 +} member { id: 0xf7b6b92a name: "metadata_ops" @@ -121222,6 +123675,12 @@ member { type_id: 0xc9082b19 offset: 96 } +member { + id: 0x7b580056 + name: "min_burst" + type_id: 0x92233392 + offset: 384 +} member { id: 0x603d49ac name: "min_capacity" @@ -121395,6 +123854,12 @@ member { type_id: 0x295c7202 offset: 16 } +member { + id: 0x78ae54cb + name: "min_hopcount" + type_id: 0xb3e7bac9 + offset: 576 +} member { id: 0x402764fb name: "min_hw_heartbeat_ms" @@ -121483,6 +123948,12 @@ member { type_id: 0x295c7202 offset: 8 } +member { + id: 0x7843c8a8 + name: "min_rate" + type_id: 0x92233392 + offset: 256 +} member { id: 0x78e29322 name: "min_rate" @@ -121573,6 +124044,12 @@ member { type_id: 0x1a3a7059 offset: 384 } +member { + id: 0xa28c3827 + name: "min_ttl" + type_id: 0xb3e7bac9 + offset: 7080 +} member { id: 0x47fc27ee name: "min_tx_rate" @@ -124051,6 +126528,11 @@ member { type_id: 0x0483e6f8 offset: 384 } +member { + id: 0xe2057d5b + name: "msg" + type_id: 0x054f691a +} member { id: 0xe260f8b5 name: "msg" @@ -124464,6 +126946,23 @@ member { type_id: 0x914dbfdc offset: 1152 } +member { + id: 0x8571ffda + name: "mss_cache" + type_id: 0xc9082b19 + offset: 13408 +} +member { + id: 0x5ddbff68 + name: "mss_clamp" + type_id: 0x914dbfdc + offset: 176 +} +member { + id: 0xf3d1e1b3 + name: "mstamp" + type_id: 0x92233392 +} member { id: 0xeb62513d name: "mt" @@ -124547,6 +127046,24 @@ member { type_id: 0x0faae5b1 offset: 64 } +member { + id: 0x3641013e + name: "mtu_info" + type_id: 0xc9082b19 + offset: 18624 +} +member { + id: 0x541b592a + name: "mtu_probe" + type_id: 0x0904167f + offset: 18560 +} +member { + id: 0x2e3a46f9 + name: "mtu_reduced" + type_id: 0x0f626ee5 + offset: 640 +} member { id: 0x3a75162c name: "mtx" @@ -124589,6 +127106,12 @@ member { type_id: 0x6720d32f offset: 64 } +member { + id: 0xe7efca93 + name: "multi" + type_id: 0xf86b845e + offset: 64 +} member { id: 0xfcd3aab9 name: "multi_block" @@ -125498,6 +128021,12 @@ member { type_id: 0x42201dce offset: 128 } +member { + id: 0x0d994758 + name: "name" + type_id: 0x42201dce + offset: 512 +} member { id: 0x0d9948a1 name: "name" @@ -127332,6 +129861,12 @@ member { type_id: 0x4585663f offset: 384 } +member { + id: 0xe3a3de7e + name: "nested_devlink" + type_id: 0x0cf3d8fe + offset: 1024 +} member { id: 0x5f6b4acf name: "nested_policy" @@ -127407,6 +129942,18 @@ member { type_id: 0x92233392 offset: 30720 } +member { + id: 0x171ea46a + name: "net_frag_header_len" + type_id: 0x914dbfdc + offset: 400 +} +member { + id: 0x729f250d + name: "net_header_len" + type_id: 0x914dbfdc + offset: 384 +} member { id: 0x61d0c33e name: "net_id" @@ -127806,6 +130353,11 @@ member { name: "next" type_id: 0x3846864c } +member { + id: 0x11cc9887 + name: "next" + type_id: 0x3f985801 +} member { id: 0x11ccea6a name: "next" @@ -127907,6 +130459,12 @@ member { name: "next" type_id: 0x2d5e3e76 } +member { + id: 0x11e1e8dd + name: "next" + type_id: 0x12e0cbae + offset: 192 +} member { id: 0x11e57880 name: "next" @@ -128049,6 +130607,11 @@ member { type_id: 0x0b561305 offset: 64 } +member { + id: 0x11f8bba0 + name: "next" + type_id: 0x0bbb7f1b +} member { id: 0x11f8e110 name: "next" @@ -128282,6 +130845,11 @@ member { name: "next_rcu" type_id: 0x2d5e3e76 } +member { + id: 0x11613e69 + name: "next_rcu" + type_id: 0x0bbfad26 +} member { id: 0x4074d0ef name: "next_request" @@ -128382,6 +130950,11 @@ member { name: "nextevt" type_id: 0x92233392 } +member { + id: 0xe85e1d32 + name: "nexthdr" + type_id: 0xb3e7bac9 +} member { id: 0xe8c4a21b name: "nexthdr" @@ -128400,6 +130973,12 @@ member { type_id: 0x81cadb9e offset: 4608 } +member { + id: 0xe2d3a144 + name: "nexthop" + type_id: 0xe276adef + offset: 32 +} member { id: 0xd02f52bb name: "nf" @@ -128554,6 +131133,12 @@ member { name: "nh" type_id: 0x1f9da9a8 } +member { + id: 0x713b460f + name: "nh" + type_id: 0x1e9c55da + offset: 288 +} member { id: 0xdb1c1848 name: "nh_all" @@ -128582,6 +131167,11 @@ member { name: "nh_entry" type_id: 0x17b2105b } +member { + id: 0xd51ec347 + name: "nh_family" + type_id: 0xc9082b19 +} member { id: 0x9fb787a3 name: "nh_flags" @@ -129344,6 +131934,18 @@ member { name: "node" type_id: 0x6c32e522 } +member { + id: 0x0f3ca80d + name: "node" + type_id: 0x49a73111 + offset: 384 +} +member { + id: 0x0f3ca934 + name: "node" + type_id: 0x49a73111 + offset: 256 +} member { id: 0x0f3ca99f name: "node" @@ -129641,6 +132243,13 @@ member { name: "node_zones" type_id: 0x8cbe1332 } +member { + id: 0xb932820e + name: "nodefrag" + type_id: 0xb3e7bac9 + offset: 7111 + bitsize: 1 +} member { id: 0xd988ce91 name: "nodeinfo" @@ -129854,6 +132463,13 @@ member { offset: 86 bitsize: 1 } +member { + id: 0xa073f76a + name: "nonagle" + type_id: 0x295c7202 + offset: 13864 + bitsize: 4 +} member { id: 0x5cf54d0d name: "nonatomic" @@ -130256,6 +132872,12 @@ member { type_id: 0x04b89667 offset: 9088 } +member { + id: 0xfdfb52fb + name: "notsent_lowat" + type_id: 0xc9082b19 + offset: 15616 +} member { id: 0xf8489542 name: "now_frame" @@ -130920,6 +133542,12 @@ member { type_id: 0xfc0e1dbd offset: 768 } +member { + id: 0xe3b1b19e + name: "nr_pages" + type_id: 0x33756485 + offset: 64 +} member { id: 0xe3b1b2b8 name: "nr_pages" @@ -133073,6 +135701,12 @@ member { type_id: 0x4585663f offset: 6272 } +member { + id: 0x7cf21fa8 + name: "num_sacks" + type_id: 0x295c7202 + offset: 152 +} member { id: 0xbcb6b731 name: "num_sample_rates" @@ -133871,6 +136505,13 @@ member { type_id: 0x0e156b94 offset: 736 } +member { + id: 0x4f7607b0 + name: "odstopts" + type_id: 0xe8034002 + offset: 9 + bitsize: 1 +} member { id: 0xc03481fc name: "oemid" @@ -134662,6 +137303,13 @@ member { type_id: 0x087aa58e offset: 5632 } +member { + id: 0xba0eaaec + name: "ohopopts" + type_id: 0xe8034002 + offset: 7 + bitsize: 1 +} member { id: 0xa5064bbb name: "oifindex" @@ -135046,6 +137694,12 @@ member { type_id: 0xb0312d5a offset: 7776 } +member { + id: 0x78ec3163 + name: "ooo_last_skb" + type_id: 0x054f691a + offset: 17088 +} member { id: 0xdfd3d3d5 name: "ooo_okay" @@ -135863,6 +138517,12 @@ member { type_id: 0x3d1ec847 offset: 64 } +member { + id: 0xafb646e8 + name: "ops" + type_id: 0x3d46e073 + offset: 256 +} member { id: 0xafb6613a name: "ops" @@ -136024,6 +138684,12 @@ member { type_id: 0x32e20efe offset: 17088 } +member { + id: 0xafba248b + name: "ops" + type_id: 0x3121a074 + offset: 2432 +} member { id: 0xafba3fb1 name: "ops" @@ -136058,6 +138724,11 @@ member { name: "ops" type_id: 0x31c93a7f } +member { + id: 0xafbad944 + name: "ops" + type_id: 0x31d9e79a +} member { id: 0xafbb0869 name: "ops" @@ -136088,6 +138759,12 @@ member { type_id: 0x3068cb56 offset: 64 } +member { + id: 0xafbb76d0 + name: "ops" + type_id: 0x307eba5c + offset: 192 +} member { id: 0xafbba914 name: "ops" @@ -136269,17 +138946,46 @@ member { type_id: 0xa7c362b0 offset: 640 } +member { + id: 0xf64ae666 + name: "opt" + type_id: 0x00cc5f1f + offset: 64 +} member { id: 0xf6548174 name: "opt" type_id: 0x1eafac69 } +member { + id: 0xf6635680 + name: "opt" + type_id: 0x29719ae3 + offset: 128 +} member { id: 0xf6637b68 name: "opt" type_id: 0x295c7202 offset: 128 } +member { + id: 0xf676260e + name: "opt" + type_id: 0x3c087d20 + offset: 256 +} +member { + id: 0xf67626a5 + name: "opt" + type_id: 0x3c087d20 +} +member { + id: 0xf6762c03 + name: "opt" + type_id: 0x3c087d20 + offset: 896 +} member { id: 0xf6da3e67 name: "opt" @@ -136298,12 +139004,24 @@ member { type_id: 0x6d7f5ff6 offset: 392 } +member { + id: 0x5e1efe31 + name: "opt_flen" + type_id: 0xe8034002 + offset: 64 +} member { id: 0xb8d181f5 name: "opt_mapping_size" type_id: 0x2f5fcbf3 offset: 1472 } +member { + id: 0x00c73957 + name: "opt_nflen" + type_id: 0xe8034002 + offset: 80 +} member { id: 0xb435ce80 name: "opt_sectors" @@ -136366,6 +139084,12 @@ member { type_id: 0x295c7202 offset: 576 } +member { + id: 0x3cedbd03 + name: "optlen" + type_id: 0x5d8155a5 + offset: 64 +} member { id: 0x39c46a92 name: "opts" @@ -136673,6 +139397,13 @@ member { type_id: 0x54bb1a65 offset: 96 } +member { + id: 0x1e410881 + name: "osrcrt" + type_id: 0xe8034002 + offset: 1 + bitsize: 1 +} member { id: 0x9dbc540c name: "otg" @@ -136819,6 +139550,12 @@ member { type_id: 0x295c7202 offset: 1088 } +member { + id: 0x0b88a7b8 + name: "out_of_order_queue" + type_id: 0xeb923a9b + offset: 17024 +} member { id: 0x21d1ea91 name: "out_q_ctx" @@ -137184,6 +139921,12 @@ member { type_id: 0x6720d32f offset: 224 } +member { + id: 0xc099cc3c + name: "overwrite_mask" + type_id: 0xc9082b19 + offset: 128 +} member { id: 0x9e1f254a name: "overwrite_state" @@ -137486,6 +140229,12 @@ member { name: "owner" type_id: 0x30f06408 } +member { + id: 0x4ad6a726 + name: "owner" + type_id: 0x4bdbd862 + offset: 576 +} member { id: 0x4aeb46f7 name: "owner" @@ -137540,6 +140289,18 @@ member { type_id: 0xc6cbbd05 offset: 640 } +member { + id: 0xb8ff9609 + name: "owners" + type_id: 0x5e8dc7f4 + offset: 384 +} +member { + id: 0xb8ff9c83 + name: "owners" + type_id: 0x5e8dc7f4 + offset: 512 +} member { id: 0xa6673206 name: "p" @@ -137851,6 +140612,12 @@ member { name: "p_vp9_frame" type_id: 0x1f6d4933 } +member { + id: 0xb18c6cab + name: "pacing_timer" + type_id: 0xcd7704bf + offset: 15744 +} member { id: 0xa9322d92 name: "pack_id" @@ -137927,6 +140694,12 @@ member { type_id: 0xe62ebf07 offset: 64 } +member { + id: 0xfdbc865b + name: "packets_out" + type_id: 0xc9082b19 + offset: 14496 +} member { id: 0x716716c4 name: "packing" @@ -138132,6 +140905,13 @@ member { type_id: 0x3e3c1b86 offset: 8808 } +member { + id: 0xb13666fe + name: "padding" + type_id: 0xe8034002 + offset: 566 + bitsize: 1 +} member { id: 0x1366b916 name: "padding0" @@ -138778,6 +141558,12 @@ member { type_id: 0x6720d32f offset: 640 } +member { + id: 0xb8b3f43c + name: "param_list" + type_id: 0xd3c80119 + offset: 704 +} member { id: 0xb8ba1efc name: "param_lock" @@ -139280,6 +142066,12 @@ member { type_id: 0xe62ebf07 offset: 224 } +member { + id: 0xc70bed2a + name: "park" + type_id: 0x0aee7ba0 + offset: 512 +} member { id: 0x53dc4767 name: "park_pending" @@ -140727,6 +143519,11 @@ member { type_id: 0x9ec07527 offset: 17856 } +member { + id: 0xf97ca310 + name: "pending" + type_id: 0xb3e7bac9 +} member { id: 0xf98ac68d name: "pending" @@ -141550,6 +144347,11 @@ member { type_id: 0x03913382 offset: 52352 } +member { + id: 0x64bb7964 + name: "pfn" + type_id: 0x33756485 +} member { id: 0xeb463452 name: "pfn_base" @@ -141592,6 +144394,12 @@ member { type_id: 0x6e1fde8f offset: 64 } +member { + id: 0x6980d678 + name: "pfnum" + type_id: 0x914dbfdc + offset: 128 +} member { id: 0x88830a16 name: "pg" @@ -142358,6 +145166,11 @@ member { name: "pid" type_id: 0xe62ebf07 } +member { + id: 0x749120ed + name: "pid" + type_id: 0x18456730 +} member { id: 0x7491240c name: "pid" @@ -142681,6 +145494,12 @@ member { type_id: 0x290604c6 offset: 512 } +member { + id: 0xe47590e7 + name: "pinet6" + type_id: 0x13fe8737 + offset: 6848 +} member { id: 0x1762f1c8 name: "ping" @@ -142693,6 +145512,12 @@ member { type_id: 0x5d6e0aa2 offset: 4800 } +member { + id: 0x517ebeed + name: "pingpong" + type_id: 0xb3e7bac9 + offset: 16 +} member { id: 0xc9b75710 name: "pinned" @@ -143064,6 +145889,12 @@ member { type_id: 0xb3e7bac9 bitsize: 3 } +member { + id: 0xe8802f7b + name: "pktoptions" + type_id: 0x054f691a + offset: 960 +} member { id: 0x0a3be422 name: "pkts_acked" @@ -143432,6 +146263,12 @@ member { type_id: 0x21082bfc offset: 384 } +member { + id: 0x56639dd1 + name: "pmd" + type_id: 0x21082bfc + offset: 320 +} member { id: 0x569cedab name: "pmd" @@ -143499,6 +146336,19 @@ member { type_id: 0xf313e71a offset: 2368 } +member { + id: 0x6e852b14 + name: "pmtudisc" + type_id: 0xe8034002 + offset: 563 + bitsize: 3 +} +member { + id: 0x79ed9153 + name: "pmtudisc" + type_id: 0xb3e7bac9 + offset: 7096 +} member { id: 0x933349d1 name: "pmu" @@ -144371,6 +147221,11 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0xe52eef97 + name: "pool_type" + type_id: 0xa7051d2f +} member { id: 0x6a296ea1 name: "pools" @@ -144402,6 +147257,12 @@ member { type_id: 0xfe384bcc offset: 2432 } +member { + id: 0x48322e2f + name: "port" + type_id: 0xc93e017b + offset: 96 +} member { id: 0x4848f266 name: "port" @@ -144470,6 +147331,12 @@ member { type_id: 0x44b60e20 offset: 384 } +member { + id: 0x48c075a0 + name: "port" + type_id: 0x3b68ec61 + offset: 64 +} member { id: 0x48cc7358 name: "port" @@ -144574,6 +147441,36 @@ member { name: "port_data" type_id: 0x18bd6530 } +member { + id: 0x9e84141c + name: "port_del" + type_id: 0x2d7ac448 + offset: 2560 +} +member { + id: 0xa5c2f472 + name: "port_fn_state_get" + type_id: 0x2e54f1b8 + offset: 2624 +} +member { + id: 0xeb46d6f6 + name: "port_fn_state_set" + type_id: 0x2e20981d + offset: 2688 +} +member { + id: 0x2e72e7e0 + name: "port_function_hw_addr_get" + type_id: 0x2e477ad3 + offset: 2368 +} +member { + id: 0x85af182d + name: "port_function_hw_addr_set" + type_id: 0x2e7ffbfe + offset: 2432 +} member { id: 0x97b320de name: "port_handed_over" @@ -144592,6 +147489,19 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0xbf1e816a + name: "port_index" + type_id: 0x4585663f + offset: 32 +} +member { + id: 0x0317cd78 + name: "port_index_valid" + type_id: 0x295c7202 + offset: 144 + bitsize: 1 +} member { id: 0x1e504a04 name: "port_info" @@ -144622,6 +147532,12 @@ member { type_id: 0x0baa70a7 offset: 8256 } +member { + id: 0xcd6874e1 + name: "port_list" + type_id: 0xd3c80119 + offset: 64 +} member { id: 0x7daf8d82 name: "port_lock" @@ -144634,6 +147550,12 @@ member { type_id: 0x3e10b518 offset: 1216 } +member { + id: 0x90793300 + name: "port_new" + type_id: 0x2d044ee7 + offset: 2496 +} member { id: 0xe64fd4ef name: "port_num" @@ -144657,6 +147579,11 @@ member { name: "port_number" type_id: 0xc9082b19 } +member { + id: 0x217694f6 + name: "port_ops" + type_id: 0x33fd261b +} member { id: 0x2418a130 name: "port_power" @@ -144705,6 +147632,12 @@ member { type_id: 0x3bdc1cb2 offset: 8064 } +member { + id: 0xa22f8c42 + name: "port_split" + type_id: 0x2d000b85 + offset: 384 +} member { id: 0x2083fe73 name: "port_status" @@ -144752,6 +147685,18 @@ member { type_id: 0x2efc853f offset: 256 } +member { + id: 0xf43affcb + name: "port_type_set" + type_id: 0x2e5686ce + offset: 320 +} +member { + id: 0x5f87545a + name: "port_unsplit" + type_id: 0x2d0429c2 + offset: 448 +} member { id: 0x4b84c909 name: "port_usb" @@ -145839,6 +148784,12 @@ member { type_id: 0x39c49895 offset: 64 } +member { + id: 0xfcce6b61 + name: "pred_flags" + type_id: 0xe276adef + offset: 12320 +} member { id: 0xd9582306 name: "pred_probs" @@ -146798,6 +149749,12 @@ member { type_id: 0xc9082b19 offset: 128 } +member { + id: 0xa9ca3fe9 + name: "prior_cwnd" + type_id: 0xc9082b19 + offset: 15136 +} member { id: 0x8be7c123 name: "prior_delivered" @@ -146821,6 +149778,12 @@ member { name: "prior_mstamp" type_id: 0x92233392 } +member { + id: 0x17b8fb75 + name: "prior_ssthresh" + type_id: 0xc9082b19 + offset: 17824 +} member { id: 0x10027c29 name: "priority" @@ -146886,6 +149849,12 @@ member { type_id: 0x4585663f offset: 512 } +member { + id: 0x10dc10b1 + name: "priority" + type_id: 0x384f7d7c + offset: 288 +} member { id: 0x10ebf2d4 name: "priority" @@ -147059,6 +150028,12 @@ member { type_id: 0x18bd6530 offset: 448 } +member { + id: 0x59303e30 + name: "priv" + type_id: 0x391f15ea + offset: 64 +} member { id: 0x5935516c name: "priv" @@ -147107,6 +150082,12 @@ member { type_id: 0xc8e4d7d1 offset: 59520 } +member { + id: 0x59c303be + name: "priv" + type_id: 0xca2a51af + offset: 4096 +} member { id: 0x59c3092e name: "priv" @@ -147850,6 +150831,30 @@ member { type_id: 0xc9082b19 offset: 2208 } +member { + id: 0x934c941a + name: "probe_seq_end" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0x45320605 + name: "probe_seq_start" + type_id: 0xc9082b19 +} +member { + id: 0x745418c4 + name: "probe_size" + type_id: 0xc9082b19 + offset: 64 + bitsize: 31 +} +member { + id: 0x60865bc2 + name: "probe_timestamp" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0xf69ec1af name: "probe_type" @@ -149132,6 +152137,11 @@ member { type_id: 0x0483e6f8 offset: 320 } +member { + id: 0xd3c8aa61 + name: "provision" + type_id: 0x2d4c6881 +} member { id: 0x61ba1604 name: "proxy_ndp" @@ -149156,6 +152166,18 @@ member { type_id: 0xd298e888 offset: 4480 } +member { + id: 0x3ce5a47e + name: "prr_delivered" + type_id: 0xc9082b19 + offset: 15168 +} +member { + id: 0xe9e7b435 + name: "prr_out" + type_id: 0xc9082b19 + offset: 15200 +} member { id: 0x282acc7e name: "prrr" @@ -149398,11 +152420,23 @@ member { type_id: 0x32bee099 offset: 704 } +member { + id: 0xa17fe2dc + name: "pte" + type_id: 0x32bee099 + offset: 384 +} member { id: 0xa18e706b name: "pte" type_id: 0xc32dc55c } +member { + id: 0xce4422cd + name: "ptl" + type_id: 0x3654c061 + offset: 448 +} member { id: 0xce442d14 name: "ptl" @@ -149747,6 +152781,12 @@ member { type_id: 0xae1656c9 offset: 13184 } +member { + id: 0xa598ac7c + name: "pushed_seq" + type_id: 0xc9082b19 + offset: 15648 +} member { id: 0x4ac85a2c name: "put" @@ -149825,6 +152865,12 @@ member { type_id: 0x2c0bb831 offset: 64 } +member { + id: 0x68c6881b + name: "put_page" + type_id: 0x080d391b + offset: 192 +} member { id: 0xee3c87e4 name: "put_port" @@ -149867,6 +152913,12 @@ member { type_id: 0x0d572692 offset: 256 } +member { + id: 0x82e1aed1 + name: "putting_binary" + type_id: 0x6d7f5ff6 + offset: 128 +} member { id: 0x26fa53f2 name: "putx64" @@ -150209,6 +153261,18 @@ member { type_id: 0x4585663f offset: 192 } +member { + id: 0x9be65a12 + name: "qlen" + type_id: 0x74d29cf1 + offset: 96 +} +member { + id: 0x9bf5ac3e + name: "qlen" + type_id: 0x6720d32f + offset: 160 +} member { id: 0xba491c1c name: "qlen_notify" @@ -150732,6 +153796,11 @@ member { name: "queue_sz" type_id: 0xf435685e } +member { + id: 0x52c10ec0 + name: "queue_xmit" + type_id: 0x2c209d56 +} member { id: 0xaa971b00 name: "queuecommand" @@ -150852,6 +153921,12 @@ member { type_id: 0x1457cd38 offset: 5568 } +member { + id: 0xdcf7e916 + name: "quick" + type_id: 0xb3e7bac9 + offset: 8 +} member { id: 0x625ab578 name: "quick_threads" @@ -151156,6 +154231,12 @@ member { type_id: 0x33756485 offset: 384 } +member { + id: 0x2c2c5bfb + name: "rack" + type_id: 0xd4132c46 + offset: 13504 +} member { id: 0x7a85796a name: "radar_detect_regions" @@ -151532,6 +154613,13 @@ member { type_id: 0x33756485 offset: 192 } +member { + id: 0xd6330125 + name: "rate_app_limited" + type_id: 0x295c7202 + offset: 13858 + bitsize: 1 +} member { id: 0x94569300 name: "rate_bytes_ps" @@ -151556,6 +154644,12 @@ member { type_id: 0xe62ebf07 offset: 2144 } +member { + id: 0x18e683dd + name: "rate_delivered" + type_id: 0xc9082b19 + offset: 15488 +} member { id: 0x0f313303 name: "rate_den" @@ -151580,6 +154674,36 @@ member { type_id: 0x295c7202 offset: 104 } +member { + id: 0x47a61a29 + name: "rate_interval_us" + type_id: 0xc9082b19 + offset: 15520 +} +member { + id: 0x7f7f584f + name: "rate_leaf_parent_set" + type_id: 0x2d0a0361 + offset: 3136 +} +member { + id: 0x54806d5b + name: "rate_leaf_tx_max_set" + type_id: 0x2d154530 + offset: 2816 +} +member { + id: 0x049c1f00 + name: "rate_leaf_tx_share_set" + type_id: 0x2d154530 + offset: 2752 +} +member { + id: 0x4134711d + name: "rate_list" + type_id: 0xd3c80119 + offset: 192 +} member { id: 0xd51bd1ef name: "rate_matching" @@ -151640,6 +154764,36 @@ member { type_id: 0x4585663f offset: 1472 } +member { + id: 0x3d9c68f5 + name: "rate_node_del" + type_id: 0x2d1c1d12 + offset: 3072 +} +member { + id: 0x573e57ed + name: "rate_node_new" + type_id: 0x2d081f17 + offset: 3008 +} +member { + id: 0x069fcabf + name: "rate_node_parent_set" + type_id: 0x2d0a0361 + offset: 3200 +} +member { + id: 0xeff7e2c9 + name: "rate_node_tx_max_set" + type_id: 0x2d154530 + offset: 2944 +} +member { + id: 0x7b7f9a93 + name: "rate_node_tx_share_set" + type_id: 0x2d154530 + offset: 2880 +} member { id: 0xbc979606 name: "rate_num" @@ -152515,6 +155669,12 @@ member { type_id: 0xe3222f5b offset: 1408 } +member { + id: 0x95dacba7 + name: "rcu" + type_id: 0xe3222f5b + offset: 3904 +} member { id: 0x95dacce8 name: "rcu" @@ -152673,6 +155833,12 @@ member { type_id: 0x33756485 offset: 192 } +member { + id: 0x608ed11c + name: "rcv_flowinfo" + type_id: 0xe276adef + offset: 608 +} member { id: 0xeae5b95c name: "rcv_interval_us" @@ -152685,6 +155851,24 @@ member { type_id: 0x18d413f1 offset: 1280 } +member { + id: 0xa514bd9b + name: "rcv_mss" + type_id: 0xe8034002 + offset: 176 +} +member { + id: 0x722b8728 + name: "rcv_nxt" + type_id: 0xc9082b19 + offset: 12480 +} +member { + id: 0x3a366be0 + name: "rcv_ooopack" + type_id: 0xc9082b19 + offset: 18240 +} member { id: 0xd699ecd4 name: "rcv_probes_mcast" @@ -152697,6 +155881,53 @@ member { type_id: 0x33756485 offset: 448 } +member { + id: 0x035a9f8f + name: "rcv_rtt_est" + type_id: 0x13c65297 + offset: 18304 +} +member { + id: 0xcebd1125 + name: "rcv_rtt_last_tsecr" + type_id: 0xc9082b19 + offset: 18272 +} +member { + id: 0x0249b0df + name: "rcv_saddr" + type_id: 0xe276adef +} +member { + id: 0x8a514678 + name: "rcv_ssthresh" + type_id: 0xc9082b19 + offset: 13472 +} +member { + id: 0x1ad125b2 + name: "rcv_tos" + type_id: 0xb3e7bac9 + offset: 7120 +} +member { + id: 0xa56c13a3 + name: "rcv_tsecr" + type_id: 0xc9082b19 + offset: 96 +} +member { + id: 0x9a3cd5ff + name: "rcv_tstamp" + type_id: 0xc9082b19 + offset: 12896 +} +member { + id: 0x908732db + name: "rcv_tsval" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x1f3accfe name: "rcv_unacked" @@ -152709,12 +155940,37 @@ member { type_id: 0x914dbfdc offset: 7856 } +member { + id: 0x073e90bb + name: "rcv_wnd" + type_id: 0xc9082b19 + offset: 15552 +} +member { + id: 0x64ea7467 + name: "rcv_wscale" + type_id: 0x914dbfdc + offset: 140 + bitsize: 4 +} +member { + id: 0x93db6466 + name: "rcv_wup" + type_id: 0xc9082b19 + offset: 12544 +} member { id: 0x75627b5b name: "rcvlists_lock" type_id: 0xf313e71a offset: 704 } +member { + id: 0x38961e9d + name: "rcvq_space" + type_id: 0x0e7661fa + offset: 18432 +} member { id: 0x6bca0440 name: "rd" @@ -153678,6 +156934,12 @@ member { type_id: 0x449a775b offset: 640 } +member { + id: 0x198e2327 + name: "rebuild_header" + type_id: 0x2c24424a + offset: 128 +} member { id: 0x659c25bc name: "recalc_accuracy" @@ -153801,6 +157063,12 @@ member { type_id: 0x74d29cf1 offset: 32 } +member { + id: 0x8a4b19d4 + name: "recover" + type_id: 0x2e1466a0 + offset: 64 +} member { id: 0x8a6b6b4e name: "recover" @@ -153818,6 +157086,12 @@ member { name: "recover_bus" type_id: 0x2fb994f1 } +member { + id: 0x629c6b33 + name: "recovery_count" + type_id: 0x92233392 + offset: 1152 +} member { id: 0xe75c7f73 name: "recovery_disabled" @@ -153894,6 +157168,12 @@ member { type_id: 0x054f691a offset: 26176 } +member { + id: 0x2ae3d7d3 + name: "recv_sack_cache" + type_id: 0xb637307e + offset: 17472 +} member { id: 0xc16c3147 name: "recv_seq" @@ -153914,6 +157194,41 @@ member { type_id: 0x0fc38cea offset: 2432 } +member { + id: 0xd1ac6cca + name: "recverr" + type_id: 0xb3e7bac9 + offset: 7104 + bitsize: 1 +} +member { + id: 0xd1f78df1 + name: "recverr" + type_id: 0xe8034002 + offset: 560 + bitsize: 1 +} +member { + id: 0x7e1e1e3e + name: "recverr_rfc4884" + type_id: 0xe8034002 + offset: 574 + bitsize: 1 +} +member { + id: 0x7e45f9f6 + name: "recverr_rfc4884" + type_id: 0xb3e7bac9 + offset: 7113 + bitsize: 1 +} +member { + id: 0xf5e277a0 + name: "recvfragsize" + type_id: 0xe8034002 + offset: 14 + bitsize: 1 +} member { id: 0x732441ac name: "recvmsg" @@ -153926,6 +157241,13 @@ member { type_id: 0x2c07bcbe offset: 896 } +member { + id: 0xd4dd684d + name: "recvmsg_inq" + type_id: 0x295c7202 + offset: 13869 + bitsize: 1 +} member { id: 0xfd896136 name: "recycle_ibi_slot" @@ -154516,17 +157838,35 @@ member { type_id: 0xa722c13e offset: 800 } +member { + id: 0x05243818 + name: "refcount" + type_id: 0xa722c13e + offset: 224 +} member { id: 0x05243b3c name: "refcount" type_id: 0xa722c13e } +member { + id: 0x05243b72 + name: "refcount" + type_id: 0xa722c13e + offset: 3616 +} member { id: 0x05243c4b name: "refcount" type_id: 0xa722c13e offset: 448 } +member { + id: 0x05243d41 + name: "refcount" + type_id: 0xa722c13e + offset: 1280 +} member { id: 0x053332c8 name: "refcount" @@ -155137,6 +158477,12 @@ member { type_id: 0x92233392 offset: 448 } +member { + id: 0x4fd311c5 + name: "region_list" + type_id: 0xd3c80119 + offset: 832 +} member { id: 0x4fd31bbd name: "region_list" @@ -155754,6 +159100,12 @@ member { name: "release" type_id: 0x0f852e4a } +member { + id: 0xae97905e + name: "release" + type_id: 0x0f626ee5 + offset: 256 +} member { id: 0xae979233 name: "release" @@ -155969,6 +159321,42 @@ member { type_id: 0x0c868f26 offset: 1536 } +member { + id: 0x83cb909a + name: "reload_actions" + type_id: 0x33756485 + offset: 64 +} +member { + id: 0xf8981c0e + name: "reload_down" + type_id: 0x2d594ead + offset: 192 +} +member { + id: 0xf5250b55 + name: "reload_failed" + type_id: 0x295c7202 + offset: 3584 + bitsize: 1 +} +member { + id: 0xb0509801 + name: "reload_limits" + type_id: 0x33756485 + offset: 128 +} +member { + id: 0x4492b926 + name: "reload_stats" + type_id: 0x93e3596e +} +member { + id: 0xa5ab7067 + name: "reload_up" + type_id: 0x2d8fd28a + offset: 256 +} member { id: 0x88c18b9a name: "relocs" @@ -156084,6 +159472,12 @@ member { type_id: 0xd3c80119 offset: 30080 } +member { + id: 0xadd03a27 + name: "remote_reload_stats" + type_id: 0x93e3596e + offset: 192 +} member { id: 0xa3daa863 name: "remote_sdu_itime" @@ -156433,12 +159827,31 @@ member { type_id: 0xe8034002 offset: 992 } +member { + id: 0x599289d3 + name: "reo_wnd_persist" + type_id: 0x295c7202 + offset: 168 + bitsize: 5 +} +member { + id: 0xc2607053 + name: "reo_wnd_steps" + type_id: 0x295c7202 + offset: 160 +} member { id: 0x5f8678ed name: "reoffload" type_id: 0x2d08fece offset: 832 } +member { + id: 0xbffa6140 + name: "reord_seen" + type_id: 0xc9082b19 + offset: 14688 +} member { id: 0x2e9f9cf8 name: "reorder_q" @@ -156463,12 +159876,31 @@ member { type_id: 0x6720d32f offset: 1536 } +member { + id: 0x6e16f71f + name: "reordering" + type_id: 0xc9082b19 + offset: 14656 +} member { id: 0x52e0ed5f name: "rep" type_id: 0x75617428 offset: 2624 } +member { + id: 0xf06d788d + name: "repair" + type_id: 0x295c7202 + offset: 13870 + bitsize: 1 +} +member { + id: 0xd0cd0f99 + name: "repair_queue" + type_id: 0x295c7202 + offset: 13872 +} member { id: 0x345e6415 name: "repeat" @@ -156487,6 +159919,13 @@ member { type_id: 0x4585663f offset: 2112 } +member { + id: 0x7560b519 + name: "repflow" + type_id: 0xe8034002 + offset: 562 + bitsize: 1 +} member { id: 0x4b7a046e name: "repl_mode" @@ -156762,12 +160201,24 @@ member { type_id: 0x384f7d7c offset: 1064 } +member { + id: 0x6ac681cd + name: "reporter_list" + type_id: 0xd3c80119 + offset: 960 +} member { id: 0x6ac6877c name: "reporter_list" type_id: 0xd3c80119 offset: 2112 } +member { + id: 0xefdb08b4 + name: "reporters_lock" + type_id: 0xa7c362b0 + offset: 1088 +} member { id: 0xefdb0c31 name: "reporters_lock" @@ -158803,6 +162254,12 @@ member { type_id: 0xb522cc16 offset: 9024 } +member { + id: 0x17c3228f + name: "resource_list" + type_id: 0xd3c80119 + offset: 576 +} member { id: 0x19740c14 name: "resources" @@ -159414,6 +162871,18 @@ member { type_id: 0xa9daefe1 offset: 7104 } +member { + id: 0x0b8a1650 + name: "retrans_out" + type_id: 0xc9082b19 + offset: 14528 +} +member { + id: 0x92525caa + name: "retrans_stamp" + type_id: 0xc9082b19 + offset: 17888 +} member { id: 0x2f1b8a8e name: "retrans_timeout" @@ -159426,6 +162895,12 @@ member { type_id: 0xf1159c31 offset: 3264 } +member { + id: 0x05aa0dfa + name: "retransmit_skb_hint" + type_id: 0x054f691a + offset: 16960 +} member { id: 0x4f0d9bec name: "retries" @@ -159467,6 +162942,12 @@ member { name: "retry" type_id: 0xe8d14bc6 } +member { + id: 0x7fdde492 + name: "retry" + type_id: 0xb3e7bac9 + offset: 24 +} member { id: 0x0a6b3115 name: "retry_count" @@ -160489,6 +163970,12 @@ member { type_id: 0x0b131b04 offset: 704 } +member { + id: 0xe1754ad1 + name: "router_alert" + type_id: 0x5d8155a5 + offset: 104 +} member { id: 0x1061afd7 name: "routing" @@ -160725,6 +164212,19 @@ member { type_id: 0x0d30b9c3 offset: 1152 } +member { + id: 0xe752e605 + name: "rr" + type_id: 0x5d8155a5 + offset: 80 +} +member { + id: 0xe5e354be + name: "rr_needaddr" + type_id: 0x5d8155a5 + offset: 99 + bitsize: 1 +} member { id: 0xf254d9f5 name: "rr_nr_running" @@ -160821,6 +164321,40 @@ member { type_id: 0xd298e888 offset: 1216 } +member { + id: 0x5367b67f + name: "rskq_accept_head" + type_id: 0x27847a9a + offset: 192 +} +member { + id: 0x07b1da25 + name: "rskq_accept_tail" + type_id: 0x27847a9a + offset: 256 +} +member { + id: 0x6f5c1006 + name: "rskq_defer_accept" + type_id: 0x295c7202 + offset: 32 +} +member { + id: 0xf1af1f8d + name: "rskq_lock" + type_id: 0xf313e71a +} +member { + id: 0x4fed2df8 + name: "rskq_rst_head" + type_id: 0x27847a9a +} +member { + id: 0xe2520be5 + name: "rskq_rst_tail" + type_id: 0x27847a9a + offset: 64 +} member { id: 0x94b16558 name: "rslot_limit" @@ -161302,6 +164836,13 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xe5f931e3 + name: "rtalert_isolate" + type_id: 0xe8034002 + offset: 575 + bitsize: 1 +} member { id: 0xe06b5dfe name: "rtc" @@ -161439,18 +164980,47 @@ member { type_id: 0xc9082b19 offset: 1632 } +member { + id: 0xbb70420d + name: "rtt_min" + type_id: 0x98a86aa3 + offset: 14304 +} +member { + id: 0x50d5f815 + name: "rtt_seq" + type_id: 0xc9082b19 + offset: 14272 +} member { id: 0x2e4fe3d2 name: "rtt_us" type_id: 0xd41e888f offset: 32 } +member { + id: 0x2e52f84a + name: "rtt_us" + type_id: 0xc9082b19 +} +member { + id: 0x2e52fcab + name: "rtt_us" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x2e67f9bb name: "rtt_us" type_id: 0xfc0e1dbd offset: 320 } +member { + id: 0x861205e4 + name: "rttvar_us" + type_id: 0xc9082b19 + offset: 14240 +} member { id: 0xe53f0bca name: "rtx_syn_ack" @@ -162370,6 +165940,12 @@ member { type_id: 0xb02b353a offset: 384 } +member { + id: 0xedd761bd + name: "rx_opt" + type_id: 0xfb9626d5 + offset: 14752 +} member { id: 0x92162365 name: "rx_otherhost_dropped" @@ -162696,6 +166272,67 @@ member { type_id: 0xe8034002 offset: 16 } +member { + id: 0xf63d13ec + name: "rxflow" + type_id: 0xe8034002 + offset: 10 + bitsize: 1 +} +member { + id: 0x27542d26 + name: "rxhlim" + type_id: 0xe8034002 + offset: 4 + bitsize: 1 +} +member { + id: 0x0ab41655 + name: "rxinfo" + type_id: 0xe8034002 + offset: 2 + bitsize: 1 +} +member { + id: 0xba676c19 + name: "rxohlim" + type_id: 0xe8034002 + offset: 5 + bitsize: 1 +} +member { + id: 0xdb4e2124 + name: "rxoinfo" + type_id: 0xe8034002 + offset: 3 + bitsize: 1 +} +member { + id: 0xca5da826 + name: "rxopt" + type_id: 0x6312fd2f + offset: 544 +} +member { + id: 0xb7565f87 + name: "rxorigdstaddr" + type_id: 0xe8034002 + offset: 13 + bitsize: 1 +} +member { + id: 0x1f5f2358 + name: "rxpmtu" + type_id: 0xe8034002 + offset: 12 + bitsize: 1 +} +member { + id: 0x80588b5f + name: "rxpmtu" + type_id: 0x054f691a + offset: 1024 +} member { id: 0x94aefae8 name: "rxq" @@ -162720,6 +166357,13 @@ member { type_id: 0xe62ebf07 offset: 416 } +member { + id: 0xd94d5094 + name: "rxtclass" + type_id: 0xe8034002 + offset: 11 + bitsize: 1 +} member { id: 0x2aa685e6 name: "rxtstamp" @@ -162735,6 +166379,11 @@ member { name: "s" type_id: 0x36592664 } +member { + id: 0x67c839a9 + name: "s" + type_id: 0x3a8e7b26 +} member { id: 0x67cca386 name: "s" @@ -163518,6 +167167,19 @@ member { type_id: 0xd3c80119 offset: 3072 } +member { + id: 0xa9edea21 + name: "sack_ok" + type_id: 0x914dbfdc + offset: 132 + bitsize: 3 +} +member { + id: 0xbd3e4a51 + name: "sacked_out" + type_id: 0xc9082b19 + offset: 15712 +} member { id: 0xf8038083 name: "saddr" @@ -163575,6 +167237,12 @@ member { type_id: 0x4aaca7b4 offset: 192 } +member { + id: 0xebfb4e21 + name: "same_provision" + type_id: 0x358546f6 + offset: 128 +} member { id: 0x9b9fa9a3 name: "same_root" @@ -163810,6 +167478,13 @@ member { type_id: 0x2d5e4b40 offset: 512 } +member { + id: 0x1d3cf444 + name: "save_syn" + type_id: 0x295c7202 + offset: 13880 + bitsize: 2 +} member { id: 0x10476fa4 name: "saved" @@ -163940,6 +167615,12 @@ member { type_id: 0x10c6675a offset: 1792 } +member { + id: 0x72f4ca16 + name: "saved_syn" + type_id: 0x10c6675a + offset: 18816 +} member { id: 0x424e9efd name: "saved_tmo" @@ -163964,6 +167645,20 @@ member { type_id: 0x0f626ee5 offset: 1408 } +member { + id: 0x037e8aa7 + name: "saw_tstamp" + type_id: 0x914dbfdc + offset: 128 + bitsize: 1 +} +member { + id: 0x9eb3a9b9 + name: "saw_unknown" + type_id: 0x295c7202 + offset: 144 + bitsize: 1 +} member { id: 0x597655fc name: "sb" @@ -163999,6 +167694,72 @@ member { type_id: 0xd3c80119 offset: 8448 } +member { + id: 0xe1b6bbe3 + name: "sb_list" + type_id: 0xd3c80119 + offset: 320 +} +member { + id: 0x1197fb66 + name: "sb_occ_max_clear" + type_id: 0x2d7ab985 + offset: 960 +} +member { + id: 0x80e35930 + name: "sb_occ_port_pool_get" + type_id: 0x2e0a2548 + offset: 1024 +} +member { + id: 0xa9d0bb48 + name: "sb_occ_snapshot" + type_id: 0x2d7ab985 + offset: 896 +} +member { + id: 0xde69b5bc + name: "sb_occ_tc_port_bind_get" + type_id: 0x2e0abaa7 + offset: 1088 +} +member { + id: 0x93cb2df4 + name: "sb_pool_get" + type_id: 0x2d739f19 + offset: 512 +} +member { + id: 0xeaf07952 + name: "sb_pool_set" + type_id: 0x2d7368ed + offset: 576 +} +member { + id: 0x78a8c4ae + name: "sb_port_pool_get" + type_id: 0x2e0a26c5 + offset: 640 +} +member { + id: 0x6f535872 + name: "sb_port_pool_set" + type_id: 0x2e0ad762 + offset: 704 +} +member { + id: 0x001ba0a6 + name: "sb_tc_pool_bind_get" + type_id: 0x2e0abbc6 + offset: 768 +} +member { + id: 0x07349e82 + name: "sb_tc_pool_bind_set" + type_id: 0x2e0ab0cf + offset: 832 +} member { id: 0x7ac264e0 name: "sbc" @@ -165230,12 +168991,23 @@ member { type_id: 0x4585663f offset: 32 } +member { + id: 0xf32eb68b + name: "search_high" + type_id: 0x6720d32f +} member { id: 0x39bd6d5d name: "search_list" type_id: 0xd3c80119 offset: 448 } +member { + id: 0xf0e605cb + name: "search_low" + type_id: 0x6720d32f + offset: 32 +} member { id: 0xbf942607 name: "search_order" @@ -165677,6 +169449,24 @@ member { name: "segment_ptr" type_id: 0x78f4e574 } +member { + id: 0x498b56ac + name: "segments_left" + type_id: 0xb3e7bac9 + offset: 24 +} +member { + id: 0x43536458 + name: "segs_in" + type_id: 0xc9082b19 + offset: 12416 +} +member { + id: 0xef3672e0 + name: "segs_out" + type_id: 0xc9082b19 + offset: 12608 +} member { id: 0x339d15e8 name: "sel" @@ -165732,6 +169522,12 @@ member { type_id: 0x2c40c92f offset: 640 } +member { + id: 0x3a30a25b + name: "selective_acks" + type_id: 0xb637307e + offset: 17216 +} member { id: 0x104f57f6 name: "selector" @@ -165844,6 +169640,24 @@ member { type_id: 0x0d9c47fd offset: 1408 } +member { + id: 0x5937e22e + name: "selfparking" + type_id: 0x6d7f5ff6 + offset: 640 +} +member { + id: 0x561fd50f + name: "selftest_check" + type_id: 0x35b3ea42 + offset: 3264 +} +member { + id: 0xd95b0d92 + name: "selftest_run" + type_id: 0x1fdf8df4 + offset: 3328 +} member { id: 0xf53d14f9 name: "sem" @@ -165892,6 +169706,12 @@ member { type_id: 0x2dd0b9c3 offset: 448 } +member { + id: 0x6d7c55af + name: "send_check" + type_id: 0x0f67218c + offset: 64 +} member { id: 0xbd9e514e name: "send_data" @@ -166274,6 +170094,12 @@ member { type_id: 0xc9082b19 offset: 256 } +member { + id: 0xfad50a5a + name: "seq" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0xfad50a81 name: "seq" @@ -168312,6 +172138,12 @@ member { type_id: 0x2c97b369 offset: 896 } +member { + id: 0x852593c2 + name: "setsockopt" + type_id: 0x2c45f2d3 + offset: 448 +} member { id: 0x85259dc7 name: "setsockopt" @@ -168360,6 +172192,12 @@ member { type_id: 0x6720d32f offset: 3072 } +member { + id: 0x84c3a238 + name: "setup" + type_id: 0x0aee7ba0 + offset: 384 +} member { id: 0x84c4d659 name: "setup" @@ -168593,12 +172431,43 @@ member { type_id: 0x295c7202 offset: 240 } +member { + id: 0x25d5628c + name: "sflist" + type_id: 0x339b8baf + offset: 256 +} +member { + id: 0x25db7175 + name: "sflist" + type_id: 0x3d801074 + offset: 192 +} member { id: 0x00c081a9 name: "sfmode" type_id: 0x4585663f offset: 96 } +member { + id: 0x00c085ca + name: "sfmode" + type_id: 0x4585663f + offset: 160 +} +member { + id: 0x4c6b273e + name: "sfnum" + type_id: 0xc9082b19 + offset: 96 +} +member { + id: 0x38a7e1c1 + name: "sfnum_valid" + type_id: 0x295c7202 + offset: 146 + bitsize: 1 +} member { id: 0x65a2356f name: "sfp_bus" @@ -168882,6 +172751,12 @@ member { type_id: 0x4585663f offset: 96 } +member { + id: 0xeb4f31b9 + name: "share" + type_id: 0x295c7202 + offset: 512 +} member { id: 0xeb4f3b1e name: "share" @@ -170265,6 +174140,12 @@ member { name: "size" type_id: 0xf435685e } +member { + id: 0xd98a29b1 + name: "size" + type_id: 0xf435685e + offset: 256 +} member { id: 0xd98a2d0c name: "size" @@ -170360,6 +174241,12 @@ member { type_id: 0xc9082b19 offset: 224 } +member { + id: 0xd9b71962 + name: "size" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0xd9b71c90 name: "size" @@ -170396,6 +174283,12 @@ member { type_id: 0x9565759f offset: 64 } +member { + id: 0xd9ec35e7 + name: "size" + type_id: 0x92233392 + offset: 896 +} member { id: 0xd9ec3683 name: "size" @@ -170919,6 +174812,12 @@ member { type_id: 0x6720d32f offset: 1152 } +member { + id: 0x68c86260 + name: "sk_rx_dst_set" + type_id: 0x0f5c0d73 + offset: 192 +} member { id: 0x30149a66 name: "sk_security" @@ -171542,6 +175441,29 @@ member { offset: 11 bitsize: 2 } +member { + id: 0x7f9c0ca0 + name: "sl_addr" + type_id: 0xdf70f6ef + offset: 192 +} +member { + id: 0x7fbfd873 + name: "sl_addr" + type_id: 0xfca4258b + offset: 192 +} +member { + id: 0xeea06d44 + name: "sl_count" + type_id: 0x4585663f + offset: 32 +} +member { + id: 0x047148a0 + name: "sl_max" + type_id: 0x4585663f +} member { id: 0xe0c5ed6b name: "slab" @@ -172183,6 +176105,13 @@ member { name: "smc_hash" type_id: 0x3c4ed50c } +member { + id: 0x7d4497ce + name: "smc_ok" + type_id: 0x914dbfdc + offset: 135 + bitsize: 1 +} member { id: 0x0697a2b0 name: "smem_len" @@ -172231,6 +176160,18 @@ member { type_id: 0xe52a3418 offset: 416 } +member { + id: 0x0c805fde + name: "snapshot" + type_id: 0x2d0e9268 + offset: 128 +} +member { + id: 0x0c832449 + name: "snapshot" + type_id: 0x2e7505e0 + offset: 128 +} member { id: 0x0cc029ea name: "snapshot" @@ -172243,6 +176184,24 @@ member { type_id: 0x228d4605 offset: 1984 } +member { + id: 0xc24fadb5 + name: "snapshot_ids" + type_id: 0x80c20070 + offset: 2560 +} +member { + id: 0xcffde3b6 + name: "snapshot_list" + type_id: 0xd3c80119 + offset: 704 +} +member { + id: 0xcbc193d6 + name: "snapshot_lock" + type_id: 0xa7c362b0 + offset: 320 +} member { id: 0xae699d06 name: "snd" @@ -172261,12 +176220,48 @@ member { type_id: 0x33f8b54b offset: 576 } +member { + id: 0x3b23e448 + name: "snd_cwnd" + type_id: 0xc9082b19 + offset: 14976 +} +member { + id: 0x0ed29348 + name: "snd_cwnd_clamp" + type_id: 0xc9082b19 + offset: 15040 +} +member { + id: 0xdef99a11 + name: "snd_cwnd_cnt" + type_id: 0xc9082b19 + offset: 15008 +} +member { + id: 0xe301bb69 + name: "snd_cwnd_stamp" + type_id: 0xc9082b19 + offset: 15104 +} +member { + id: 0x9e51f1aa + name: "snd_cwnd_used" + type_id: 0xc9082b19 + offset: 15072 +} member { id: 0xc2ae7a6f name: "snd_interval_us" type_id: 0xc9082b19 offset: 256 } +member { + id: 0x24e972c0 + name: "snd_nxt" + type_id: 0xc9082b19 + offset: 12576 +} member { id: 0x05fda169 name: "snd_portid" @@ -172278,12 +176273,55 @@ member { name: "snd_seq" type_id: 0xc9082b19 } +member { + id: 0x9c800493 + name: "snd_sml" + type_id: 0xc9082b19 + offset: 12864 +} +member { + id: 0xcf588653 + name: "snd_ssthresh" + type_id: 0xc9082b19 + offset: 14944 +} +member { + id: 0x8248546f + name: "snd_una" + type_id: 0xc9082b19 + offset: 12832 +} +member { + id: 0x611d6152 + name: "snd_up" + type_id: 0xc9082b19 + offset: 14720 +} member { id: 0xac63a41d name: "snd_win" type_id: 0x914dbfdc offset: 7808 } +member { + id: 0x1f8008f5 + name: "snd_wl1" + type_id: 0xc9082b19 + offset: 13312 +} +member { + id: 0xb8d73d0d + name: "snd_wnd" + type_id: 0xc9082b19 + offset: 13344 +} +member { + id: 0xa597551f + name: "snd_wscale" + type_id: 0x914dbfdc + offset: 136 + bitsize: 4 +} member { id: 0xb368ac36 name: "sndbit" @@ -172302,6 +176340,13 @@ member { type_id: 0x1a3a7059 offset: 576 } +member { + id: 0xc40b184c + name: "sndflow" + type_id: 0xe8034002 + offset: 561 + bitsize: 1 +} member { id: 0x8f0cab7f name: "sniff_max_interval" @@ -172391,6 +176436,12 @@ member { type_id: 0xf435685e offset: 5888 } +member { + id: 0x094f9496 + name: "sockaddr_len" + type_id: 0x914dbfdc + offset: 416 +} member { id: 0x4f73c01d name: "socket_pressure" @@ -172744,6 +176795,11 @@ member { type_id: 0xe02e14d6 offset: 64 } +member { + id: 0x589235ff + name: "space" + type_id: 0xc9082b19 +} member { id: 0x4b5ea168 name: "space_available" @@ -173650,6 +177706,25 @@ member { type_id: 0x1c3dbe5a offset: 416 } +member { + id: 0xaab1780b + name: "srcprefs" + type_id: 0xe8034002 + offset: 567 + bitsize: 3 +} +member { + id: 0x0ffd3550 + name: "srcrt" + type_id: 0xe8034002 + bitsize: 1 +} +member { + id: 0xcd7a45a0 + name: "srcrt" + type_id: 0x12d9a766 + offset: 256 +} member { id: 0xcd809b0d name: "srcrt" @@ -173900,6 +177975,25 @@ member { type_id: 0x6d7f5ff6 offset: 24 } +member { + id: 0x3a20fe11 + name: "srr" + type_id: 0x5d8155a5 + offset: 72 +} +member { + id: 0x3feffe90 + name: "srr_is_hit" + type_id: 0x5d8155a5 + offset: 97 + bitsize: 1 +} +member { + id: 0x28d4f0ae + name: "srtt_us" + type_id: 0xc9082b19 + offset: 14144 +} member { id: 0x8c8649b8 name: "ss" @@ -174706,6 +178800,11 @@ member { type_id: 0x865acc96 offset: 11904 } +member { + id: 0x3d5d011f + name: "start_seq" + type_id: 0xc9082b19 +} member { id: 0x00cda1f9 name: "start_signal_voltage_switch" @@ -175184,6 +179283,12 @@ member { type_id: 0x4585663f offset: 7616 } +member { + id: 0x72b72416 + name: "state" + type_id: 0x44d985d5 + offset: 384 +} member { id: 0x72c0803e name: "state" @@ -175547,6 +179652,12 @@ member { type_id: 0x2360e10b offset: 2496 } +member { + id: 0x46ecc05d + name: "state_lock" + type_id: 0xa7c362b0 + offset: 448 +} member { id: 0xeccd8227 name: "state_machine" @@ -175878,6 +179989,12 @@ member { type_id: 0x2456537c offset: 256 } +member { + id: 0xb9583af1 + name: "stats" + type_id: 0x2d51c138 + offset: 2688 +} member { id: 0xb95cdf4e name: "stats" @@ -176374,6 +180491,12 @@ member { type_id: 0x33756485 offset: 1472 } +member { + id: 0x39865348 + name: "sticky_pktinfo" + type_id: 0xe2574ab7 + offset: 128 +} member { id: 0x5922f81b name: "stime" @@ -176654,6 +180777,11 @@ member { type_id: 0x0d918eed offset: 192 } +member { + id: 0xacd44104 + name: "store" + type_id: 0x0dd653d2 +} member { id: 0xacd4aa03 name: "store" @@ -177887,6 +182015,11 @@ member { type_id: 0xb914bfab offset: 2944 } +member { + id: 0x9fc14365 + name: "supported_flash_update_params" + type_id: 0xc9082b19 +} member { id: 0x44116555 name: "supported_hw" @@ -178868,6 +183001,47 @@ member { type_id: 0x0ddb38e3 offset: 448 } +member { + id: 0x590d4988 + name: "syn_data" + type_id: 0x295c7202 + offset: 13882 + bitsize: 1 +} +member { + id: 0x7d5a2639 + name: "syn_data_acked" + type_id: 0x295c7202 + offset: 13886 + bitsize: 1 +} +member { + id: 0x5e175424 + name: "syn_fastopen" + type_id: 0x295c7202 + offset: 13883 + bitsize: 1 +} +member { + id: 0x1273b273 + name: "syn_fastopen_ch" + type_id: 0x295c7202 + offset: 13885 + bitsize: 1 +} +member { + id: 0xe4473696 + name: "syn_fastopen_exp" + type_id: 0x295c7202 + offset: 13884 + bitsize: 1 +} +member { + id: 0x472be94a + name: "syn_recv_sock" + type_id: 0x120033c5 + offset: 320 +} member { id: 0x501d2a59 name: "sync" @@ -179177,6 +183351,12 @@ member { type_id: 0x104ad696 offset: 256 } +member { + id: 0x77b35ac5 + name: "synflood_warned" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x8e7c5fc5 name: "synq_overflow_ts" @@ -180166,6 +184346,11 @@ member { name: "t" type_id: 0x9c649622 } +member { + id: 0xab76db82 + name: "t" + type_id: 0xc9082b19 +} member { id: 0x87bba0ec name: "t1" @@ -181398,12 +185583,24 @@ member { type_id: 0x914dbfdc offset: 64 } +member { + id: 0x51753049 + name: "tclass" + type_id: 0xb3e7bac9 + offset: 584 +} member { id: 0x51753743 name: "tclass" type_id: 0xb3e7bac9 offset: 288 } +member { + id: 0x51ef8423 + name: "tclass" + type_id: 0x295c7202 + offset: 72 +} member { id: 0xbb99034f name: "tclassid" @@ -181503,6 +185700,12 @@ member { type_id: 0xc9082b19 offset: 4544 } +member { + id: 0x5e1e9277 + name: "tcp_clock_cache" + type_id: 0x92233392 + offset: 14016 +} member { id: 0x77c51ee3 name: "tcp_congestion_control" @@ -181532,6 +185735,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0xc07533a2 + name: "tcp_header_len" + type_id: 0x914dbfdc + offset: 12288 +} member { id: 0xc0a9db63 name: "tcp_ignore_invalid_rst" @@ -181560,6 +185769,12 @@ member { type_id: 0x295c7202 offset: 464 } +member { + id: 0x0c6e4e2a + name: "tcp_mstamp" + type_id: 0x92233392 + offset: 14080 +} member { id: 0x92478c56 name: "tcp_rtx_queue" @@ -181588,6 +185803,18 @@ member { name: "tcp_tsorted_anchor" type_id: 0xd3c80119 } +member { + id: 0x5005e20e + name: "tcp_tx_delay" + type_id: 0xc9082b19 + offset: 13920 +} +member { + id: 0x2c472957 + name: "tcp_wstamp_ns" + type_id: 0x92233392 + offset: 13952 +} member { id: 0xee1e03ec name: "tcpc" @@ -181987,6 +186214,12 @@ member { name: "test" type_id: 0x2e3696f7 } +member { + id: 0x8db5ea4d + name: "test" + type_id: 0x2e0b7ad3 + offset: 256 +} member { id: 0x8db6a427 name: "test" @@ -182133,6 +186366,18 @@ member { type_id: 0x49b889e7 offset: 12704 } +member { + id: 0x07611cab + name: "tgt_index" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0xc9d6516c + name: "tgt_value" + type_id: 0x18bd6530 + offset: 64 +} member { id: 0x141d2755 name: "thaw" @@ -182169,6 +186414,13 @@ member { type_id: 0xd3c80119 offset: 8960 } +member { + id: 0xe07791d5 + name: "thin_lto" + type_id: 0x295c7202 + offset: 13868 + bitsize: 1 +} member { id: 0xca538c03 name: "think_time" @@ -182264,6 +186516,12 @@ member { type_id: 0x965abf66 offset: 29312 } +member { + id: 0xa81d1890 + name: "thread_comm" + type_id: 0x3e10b518 + offset: 704 +} member { id: 0x8b87e4f0 name: "thread_flags" @@ -182276,6 +186534,12 @@ member { type_id: 0xd92b1d75 offset: 256 } +member { + id: 0x3e886d7b + name: "thread_fn" + type_id: 0x0aee7ba0 + offset: 256 +} member { id: 0xb282a928 name: "thread_group" @@ -182334,6 +186598,12 @@ member { type_id: 0x18456730 offset: 13504 } +member { + id: 0x4118a1ce + name: "thread_should_run" + type_id: 0x29a8570f + offset: 192 +} member { id: 0x90132b6a name: "thread_sibling" @@ -182426,6 +186696,12 @@ member { type_id: 0x33756485 offset: 64 } +member { + id: 0x6ce0bb82 + name: "threshold_type" + type_id: 0xcbcc8512 + offset: 64 +} member { id: 0x3b00e790 name: "thresholds" @@ -182634,6 +186910,12 @@ member { type_id: 0x92233392 offset: 192 } +member { + id: 0x74712a8a + name: "time" + type_id: 0x92233392 + offset: 64 +} member { id: 0x74712c56 name: "time" @@ -182967,6 +187249,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x54f0f552 + name: "timeout" + type_id: 0x33756485 + offset: 64 +} member { id: 0x54f0f7ca name: "timeout" @@ -183019,6 +187307,12 @@ member { name: "timeout_ns" type_id: 0x4585663f } +member { + id: 0x203d8bb9 + name: "timeout_rehash" + type_id: 0x914dbfdc + offset: 18224 +} member { id: 0x39fee070 name: "timeout_set" @@ -183486,6 +187780,19 @@ member { type_id: 0x295c7202 offset: 144 } +member { + id: 0x81d25425 + name: "tlp_high_seq" + type_id: 0xc9082b19 + offset: 13888 +} +member { + id: 0xdab01e8a + name: "tlp_retrans" + type_id: 0x295c7202 + offset: 13722 + bitsize: 1 +} member { id: 0x7404e298 name: "tlv" @@ -183968,6 +188275,12 @@ member { type_id: 0x22198273 offset: 64 } +member { + id: 0xf113a55a + name: "tos" + type_id: 0x007e8ce4 + offset: 272 +} member { id: 0xf13a894d name: "tos" @@ -183992,6 +188305,12 @@ member { type_id: 0xb3e7bac9 offset: 24 } +member { + id: 0xf1a03e73 + name: "tos" + type_id: 0xb3e7bac9 + offset: 7072 +} member { id: 0xd7e12520 name: "tot_busy_t" @@ -184010,6 +188329,12 @@ member { type_id: 0x7584e7da offset: 16 } +member { + id: 0x3eb7848c + name: "tot_len" + type_id: 0x6720d32f + offset: 32 +} member { id: 0x408f26e7 name: "tot_write_bandwidth" @@ -184138,6 +188463,12 @@ member { type_id: 0x4585663f offset: 2112 } +member { + id: 0x1ab0aff5 + name: "total_retrans" + type_id: 0xc9082b19 + offset: 18048 +} member { id: 0x80674f84 name: "total_rx_match_ratio" @@ -184712,6 +189043,12 @@ member { name: "transmit_time" type_id: 0x92233392 } +member { + id: 0x1b258c6d + name: "transmit_time" + type_id: 0x92233392 + offset: 320 +} member { id: 0x45be24a0 name: "transmitting" @@ -184730,6 +189067,13 @@ member { type_id: 0xd529883e offset: 544 } +member { + id: 0x73793851 + name: "transparent" + type_id: 0xb3e7bac9 + offset: 7109 + bitsize: 1 +} member { id: 0x738f5598 name: "transparent" @@ -184783,6 +189127,90 @@ member { type_id: 0x295c7202 offset: 1080 } +member { + id: 0x21a1a972 + name: "trap_action_set" + type_id: 0x2d004a69 + offset: 1792 +} +member { + id: 0x3c859cc4 + name: "trap_drop_counter_get" + type_id: 0x2d018e8d + offset: 2048 +} +member { + id: 0x24edb8c2 + name: "trap_fini" + type_id: 0x0e44c87b + offset: 1728 +} +member { + id: 0xb252ef85 + name: "trap_group_action_set" + type_id: 0x2d00157c + offset: 1984 +} +member { + id: 0x2b3b3947 + name: "trap_group_init" + type_id: 0x2d033017 + offset: 1856 +} +member { + id: 0x1877dc92 + name: "trap_group_list" + type_id: 0xd3c80119 + offset: 1664 +} +member { + id: 0x3a9bd5f4 + name: "trap_group_set" + type_id: 0x2d004103 + offset: 1920 +} +member { + id: 0x37b507df + name: "trap_init" + type_id: 0x2d02e4d4 + offset: 1664 +} +member { + id: 0x10281c82 + name: "trap_list" + type_id: 0xd3c80119 + offset: 1536 +} +member { + id: 0x5e35aa2e + name: "trap_policer_counter_get" + type_id: 0x2d0ab1eb + offset: 2304 +} +member { + id: 0x1ba59c6d + name: "trap_policer_fini" + type_id: 0x0e4e7ccb + offset: 2176 +} +member { + id: 0x950fbc14 + name: "trap_policer_init" + type_id: 0x2d085064 + offset: 2112 +} +member { + id: 0x9516c9d8 + name: "trap_policer_list" + type_id: 0xd3c80119 + offset: 1792 +} +member { + id: 0xc8b0c1d4 + name: "trap_policer_set" + type_id: 0x2d01e009 + offset: 2240 +} member { id: 0xc911730d name: "trb_address_map" @@ -185351,6 +189779,12 @@ member { type_id: 0x11c404ba offset: 960 } +member { + id: 0x95c9b8f6 + name: "ts" + type_id: 0x5d8155a5 + offset: 88 +} member { id: 0x846f423a name: "ts_info" @@ -185363,6 +189797,20 @@ member { type_id: 0x92233392 offset: 192 } +member { + id: 0x5ffbc843 + name: "ts_needaddr" + type_id: 0x5d8155a5 + offset: 101 + bitsize: 1 +} +member { + id: 0xb15e52c6 + name: "ts_needtime" + type_id: 0x5d8155a5 + offset: 100 + bitsize: 1 +} member { id: 0x6f338061 name: "ts_real" @@ -185374,6 +189822,17 @@ member { type_id: 0xc9082b19 offset: 1184 } +member { + id: 0x851fefad + name: "ts_recent" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0x8131134d + name: "ts_recent_stamp" + type_id: 0x6720d32f +} member { id: 0x0ac38887 name: "tseg1_max" @@ -185469,6 +189928,24 @@ member { type_id: 0x4585663f offset: 18208 } +member { + id: 0xaf1c2858 + name: "tsoffset" + type_id: 0xc9082b19 + offset: 13024 +} +member { + id: 0x3fe882fb + name: "tsorted_sent_queue" + type_id: 0xd3c80119 + offset: 13184 +} +member { + id: 0xb4b04624 + name: "tsq_node" + type_id: 0xd3c80119 + offset: 13056 +} member { id: 0x7f1030b7 name: "tstamp" @@ -185504,6 +189981,13 @@ member { type_id: 0x6720d32f offset: 1472 } +member { + id: 0xcd6e1313 + name: "tstamp_ok" + type_id: 0x914dbfdc + offset: 129 + bitsize: 1 +} member { id: 0x724f5b37 name: "tstamp_type" @@ -185621,6 +190105,12 @@ member { type_id: 0x295c7202 offset: 48 } +member { + id: 0xf4da47b1 + name: "ttl" + type_id: 0xb3e7bac9 + offset: 264 +} member { id: 0xf4da4d28 name: "ttl" @@ -186518,6 +191008,12 @@ member { type_id: 0x10617c73 offset: 704 } +member { + id: 0x34444209 + name: "tx_flags" + type_id: 0x295c7202 + offset: 256 +} member { id: 0x13091341 name: "tx_frames" @@ -187588,6 +192084,12 @@ member { name: "type" type_id: 0x3e10b518 } +member { + id: 0x5c68c671 + name: "type" + type_id: 0x3e10b518 + offset: 832 +} member { id: 0x5c68cd02 name: "type" @@ -187872,6 +192374,11 @@ member { type_id: 0xe62ebf07 offset: 64 } +member { + id: 0x5cbbb022 + name: "type" + type_id: 0xed655c73 +} member { id: 0x5cbbc962 name: "type" @@ -187958,6 +192465,12 @@ member { type_id: 0xb3e7bac9 offset: 128 } +member { + id: 0x5ce53c7a + name: "type" + type_id: 0xb3e7bac9 + offset: 16 +} member { id: 0x5ce53fde name: "type" @@ -188342,12 +192855,36 @@ member { type_id: 0x86a931f9 offset: 192 } +member { + id: 0xf49ccf9e + name: "types" + type_id: 0x0e38185b + offset: 896 +} member { id: 0xf49ecb47 name: "types" type_id: 0x0c3286fb offset: 64 } +member { + id: 0x6e3b6a83 + name: "types_count" + type_id: 0x3999579d + offset: 192 +} +member { + id: 0x6e477688 + name: "types_count" + type_id: 0x4585663f + offset: 960 +} +member { + id: 0x88117783 + name: "types_get" + type_id: 0x0e0dc148 + offset: 256 +} member { id: 0x3f590b7c name: "types_mask" @@ -188447,6 +192984,11 @@ member { type_id: 0x5574fba9 offset: 128 } +member { + id: 0xec2a9cea + name: "u" + type_id: 0x55c087bf +} member { id: 0xec2ac37d name: "u" @@ -188637,6 +193179,12 @@ member { type_id: 0xa7c362b0 offset: 64 } +member { + id: 0x50ba6c8c + name: "uarg" + type_id: 0x35dbe029 + offset: 384 +} member { id: 0x6a0a74ef name: "uart_port" @@ -188682,12 +193230,30 @@ member { name: "uc" type_id: 0x6dad7303 } +member { + id: 0x1d8e0899 + name: "uc_index" + type_id: 0x6720d32f + offset: 7136 +} member { id: 0x70a44081 name: "uc_promisc" type_id: 0x6d7f5ff6 offset: 5696 } +member { + id: 0x8e099fc0 + name: "uc_ttl" + type_id: 0x007e8ce4 + offset: 6944 +} +member { + id: 0x95dcef8c + name: "ucast_oif" + type_id: 0x6720d32f + offset: 480 +} member { id: 0xd2f70d3b name: "ucd_prdt_dma_addr" @@ -189536,6 +194102,18 @@ member { type_id: 0x1a3a7059 offset: 512 } +member { + id: 0x44e15491 + name: "undo_marker" + type_id: 0xc9082b19 + offset: 17920 +} +member { + id: 0x7392ff81 + name: "undo_retrans" + type_id: 0x6720d32f + offset: 17952 +} member { id: 0x0645ccd5 name: "unfreeze_fs" @@ -189848,6 +194426,12 @@ member { type_id: 0x4585663f offset: 2848 } +member { + id: 0x6fd6cd07 + name: "unpark" + type_id: 0x0aee7ba0 + offset: 576 +} member { id: 0x343d462b name: "unpin" @@ -189939,6 +194523,12 @@ member { type_id: 0x33756485 offset: 2816 } +member { + id: 0x1f617d86 + name: "unprovision" + type_id: 0x2d4fcd25 + offset: 64 +} member { id: 0x8ea4f872 name: "unreg_list" @@ -190092,6 +194682,20 @@ member { type_id: 0x33756485 offset: 768 } +member { + id: 0xc2fb89b4 + name: "unused" + type_id: 0x295c7202 + offset: 145 + bitsize: 7 +} +member { + id: 0xd0fa2acf + name: "unused" + type_id: 0x295c7202 + offset: 13723 + bitsize: 5 +} member { id: 0xd4ec9f32 name: "unused" @@ -190177,6 +194781,12 @@ member { type_id: 0x0d88e184 offset: 128 } +member { + id: 0xd6aa460e + name: "update" + type_id: 0x0f596314 + offset: 192 +} member { id: 0xd6ab4b69 name: "update" @@ -190562,12 +195172,24 @@ member { offset: 109 bitsize: 1 } +member { + id: 0x6e240c8e + name: "urg_data" + type_id: 0x914dbfdc + offset: 14624 +} member { id: 0xcd5c6021 name: "urg_ptr" type_id: 0x7584e7da offset: 144 } +member { + id: 0xf6fff0ee + name: "urg_seq" + type_id: 0xc9082b19 + offset: 18080 +} member { id: 0x3bf0a986 name: "urgent_bkops_lvl" @@ -191657,6 +196279,12 @@ member { type_id: 0x724805ea offset: 9856 } +member { + id: 0xc4835a3d + name: "user_mss" + type_id: 0x914dbfdc + offset: 160 +} member { id: 0xf44982ea name: "user_name" @@ -191891,6 +196519,12 @@ member { type_id: 0x6720d32f offset: 960 } +member { + id: 0x85d92902 + name: "users" + type_id: 0x74d29cf1 + offset: 96 +} member { id: 0x85e87d65 name: "users" @@ -192236,6 +196870,12 @@ member { name: "v" type_id: 0xe62ebf07 } +member { + id: 0x28f6afd5 + name: "v" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x543f6773 name: "v1" @@ -192280,6 +196920,11 @@ member { name: "v6" type_id: 0x7c866968 } +member { + id: 0x78e33cfc + name: "v6_rcv_saddr" + type_id: 0x6d25e07f +} member { id: 0x80b1cd58 name: "v_1p2" @@ -192391,6 +197036,11 @@ member { name: "val" type_id: 0x75617428 } +member { + id: 0x4f647aa3 + name: "val" + type_id: 0x729479be +} member { id: 0x4f67c989 name: "val" @@ -193452,6 +198102,11 @@ member { type_id: 0x3e10b518 offset: 6336 } +member { + id: 0x7d2869d8 + name: "vendor_ops" + type_id: 0x2e19617e +} member { id: 0xfd44cde8 name: "vendor_oui" @@ -193733,6 +198388,18 @@ member { name: "version" type_id: 0x914dbfdc } +member { + id: 0x8e9e82fd + name: "version_cb" + type_id: 0x0d1f55de + offset: 64 +} +member { + id: 0xca2aa534 + name: "version_cb_priv" + type_id: 0x18bd6530 + offset: 128 +} member { id: 0x88d1b3ba name: "version_get" @@ -195001,6 +199668,12 @@ member { type_id: 0x04fd6761 offset: 1280 } +member { + id: 0x239192da + name: "vma" + type_id: 0x0a134144 + offset: 192 +} member { id: 0x23919a13 name: "vma" @@ -196968,6 +201641,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x98ad753d + name: "window_clamp" + type_id: 0xc9082b19 + offset: 13440 +} member { id: 0x1afab587 name: "window_len" @@ -198301,6 +202980,12 @@ member { type_id: 0x2f582494 offset: 1536 } +member { + id: 0xd5cb059f + name: "write_seq" + type_id: 0xc9082b19 + offset: 15584 +} member { id: 0x0a06727e name: "write_stamp" @@ -198574,6 +203259,13 @@ member { type_id: 0xc93e017b offset: 48 } +member { + id: 0xf0ca4be8 + name: "wscale_ok" + type_id: 0x914dbfdc + offset: 131 + bitsize: 1 +} member { id: 0x8986dade name: "wspecversion" @@ -199526,6 +204218,12 @@ member { type_id: 0xe62ebf07 offset: 160 } +member { + id: 0x2baf73ff + name: "young" + type_id: 0x74d29cf1 + offset: 128 +} member { id: 0x05f8b7b6 name: "ypanstep" @@ -200140,6 +204838,15 @@ struct_union { member_id: 0xd052cad3 } } +struct_union { + id: 0x0904167f + kind: STRUCT + definition { + bytesize: 8 + member_id: 0x45320605 + member_id: 0x934c941a + } +} struct_union { id: 0x0922f100 kind: STRUCT @@ -200594,6 +205301,16 @@ struct_union { member_id: 0x96fedfda } } +struct_union { + id: 0x0e7661fa + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x589235ff + member_id: 0xfad50a5a + member_id: 0x74712a8a + } +} struct_union { id: 0x0eac683f kind: STRUCT @@ -200952,6 +205669,14 @@ struct_union { member_id: 0x3c63eaff } } +struct_union { + id: 0x132e4197 + kind: STRUCT + definition { + bytesize: 8 + member_id: 0x2d081532 + } +} struct_union { id: 0x132f610b kind: STRUCT @@ -201036,6 +205761,16 @@ struct_union { member_id: 0xc46d15c4 } } +struct_union { + id: 0x13c65297 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x2e52f84a + member_id: 0xfad50a5a + member_id: 0x74712a8a + } +} struct_union { id: 0x14096380 kind: STRUCT @@ -201502,6 +206237,28 @@ struct_union { member_id: 0xf5eb6b20 } } +struct_union { + id: 0x1b949b56 + kind: STRUCT + definition { + bytesize: 2 + member_id: 0x0ffd3550 + member_id: 0x1e410881 + member_id: 0x0ab41655 + member_id: 0xdb4e2124 + member_id: 0x27542d26 + member_id: 0xba676c19 + member_id: 0xede7771d + member_id: 0xba0eaaec + member_id: 0xcc7711fa + member_id: 0x4f7607b0 + member_id: 0xf63d13ec + member_id: 0xd94d5094 + member_id: 0x1f5f2358 + member_id: 0xb7565f87 + member_id: 0xf5e277a0 + } +} struct_union { id: 0x1b966255 kind: STRUCT @@ -201909,6 +206666,18 @@ struct_union { member_id: 0x41322da8 } } +struct_union { + id: 0x249bcdf3 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0xf32eb68b + member_id: 0xf0e605cb + member_id: 0x745418c4 + member_id: 0x7a56a000 + member_id: 0x60865bc2 + } +} struct_union { id: 0x2548e662 kind: STRUCT @@ -201918,6 +206687,22 @@ struct_union { member_id: 0x0193fe4b } } +struct_union { + id: 0x260445a5 + kind: STRUCT + definition { + bytesize: 24 + member_id: 0xf97ca310 + member_id: 0xdcf7e916 + member_id: 0x517ebeed + member_id: 0x7fdde492 + member_id: 0x168605e8 + member_id: 0x54f0f552 + member_id: 0x9d3fc94e + member_id: 0x4c233807 + member_id: 0xa514bd9b + } +} struct_union { id: 0x2612bf2a kind: STRUCT @@ -203190,6 +207975,15 @@ struct_union { member_id: 0x83ba53fe } } +struct_union { + id: 0x3fbb6cee + kind: STRUCT + definition { + bytesize: 4 + member_id: 0x9f6503ee + member_id: 0x39a33a5e + } +} struct_union { id: 0x3fbd06d5 kind: STRUCT @@ -203586,6 +208380,15 @@ struct_union { member_id: 0x5f7a4496 } } +struct_union { + id: 0x48c28092 + kind: UNION + definition { + bytesize: 16 + member_id: 0x78e33cfc + member_id: 0x0249b0df + } +} struct_union { id: 0x48fb1ff5 kind: UNION @@ -203652,6 +208455,16 @@ struct_union { member_id: 0x25ab4212 } } +struct_union { + id: 0x49b90a29 + kind: UNION + definition { + bytesize: 8 + member_id: 0x7d2869d8 + member_id: 0x27000c61 + member_id: 0x36752b74 + } +} struct_union { id: 0x49df90a7 kind: UNION @@ -203758,6 +208571,15 @@ struct_union { member_id: 0x89460966 } } +struct_union { + id: 0x4bdbd862 + kind: UNION + definition { + bytesize: 8 + member_id: 0x749120ed + member_id: 0x1536626c + } +} struct_union { id: 0x4c6fa86e kind: UNION @@ -204250,6 +209072,16 @@ struct_union { member_id: 0xa0d5322b } } +struct_union { + id: 0x55c087bf + kind: UNION + definition { + bytesize: 24 + member_id: 0x0ca7cb72 + member_id: 0x4e824c05 + member_id: 0x20c5e9f7 + } +} struct_union { id: 0x56037e9c kind: UNION @@ -205057,6 +209889,15 @@ struct_union { member_id: 0x5e3692cb } } +struct_union { + id: 0x6312fd2f + kind: UNION + definition { + bytesize: 2 + member_id: 0xd74e0402 + member_id: 0xee87ba00 + } +} struct_union { id: 0x6366329e kind: UNION @@ -205239,6 +210080,15 @@ struct_union { member_id: 0x12f2249e } } +struct_union { + id: 0x6875099c + kind: UNION + definition { + bytesize: 16 + member_id: 0xfa946861 + member_id: 0xab39140b + } +} struct_union { id: 0x6888b6e5 kind: UNION @@ -206254,6 +211104,15 @@ struct_union { member_id: 0xe0feb68b } } +struct_union { + id: 0x7d1c3635 + kind: UNION + definition { + bytesize: 8 + member_id: 0xafbad944 + member_id: 0x217694f6 + } +} struct_union { id: 0x7d93a8c7 kind: UNION @@ -209508,6 +214367,16 @@ struct_union { member_id: 0x2c23d29d } } +struct_union { + id: 0x1e9c55da + kind: STRUCT + name: "bpf_nh_params" + definition { + bytesize: 20 + member_id: 0xd51ec347 + member_id: 0x39d6d358 + } +} struct_union { id: 0xb52b1ec7 kind: STRUCT @@ -209724,6 +214593,22 @@ struct_union { member_id: 0x0082372e } } +struct_union { + id: 0x212d37a1 + kind: STRUCT + name: "bpf_redirect_info" + definition { + bytesize: 56 + member_id: 0x2da18c75 + member_id: 0x07611cab + member_id: 0xc9d6516c + member_id: 0x8df2c9e6 + member_id: 0x86e8bd6c + member_id: 0x2a093f90 + member_id: 0x632a4ba2 + member_id: 0x713b460f + } +} struct_union { id: 0x3a354a67 kind: STRUCT @@ -211593,6 +216478,30 @@ struct_union { member_id: 0xd0a3be49 } } +struct_union { + id: 0xca283f54 + kind: STRUCT + name: "cleancache_filekey" + definition { + bytesize: 24 + member_id: 0xec2a9cea + } +} +struct_union { + id: 0xfa93b413 + kind: STRUCT + name: "cleancache_ops" + definition { + bytesize: 56 + member_id: 0xedc364a3 + member_id: 0xcc9b87bc + member_id: 0xcf06c106 + member_id: 0x68c6881b + member_id: 0x107f64d3 + member_id: 0x6f43a794 + member_id: 0x6a15223b + } +} struct_union { id: 0xdd7b47eb kind: STRUCT @@ -214146,14 +219055,260 @@ struct_union { } } struct_union { - id: 0xbc952c91 + id: 0x198f8565 kind: STRUCT name: "devlink" + definition { + bytesize: 512 + member_id: 0xadf00094 + member_id: 0xcd6874e1 + member_id: 0x4134711d + member_id: 0xe1b6bbe3 + member_id: 0x3d9266c0 + member_id: 0x17c3228f + member_id: 0xb8b3f43c + member_id: 0x4fd311c5 + member_id: 0x6ac681cd + member_id: 0xefdb08b4 + member_id: 0x32a55865 + member_id: 0x10281c82 + member_id: 0x1877dc92 + member_id: 0x9516c9d8 + member_id: 0x2bafedce + member_id: 0x66da3728 + member_id: 0xafba248b + member_id: 0xc58a570e + member_id: 0xc24fadb5 + member_id: 0xb9583af1 + member_id: 0xce3bb522 + member_id: 0x3e75936d + member_id: 0x2d4b3330 + member_id: 0x5f5e621d + member_id: 0xf5250b55 + member_id: 0x05243b72 + member_id: 0x999f46a7 + member_id: 0x95dacba7 + member_id: 0x59c303be + } } struct_union { - id: 0x8256fc56 + id: 0x2d51c138 + kind: STRUCT + name: "devlink_dev_stats" + definition { + bytesize: 48 + member_id: 0x4492b926 + member_id: 0xadd03a27 + } +} +struct_union { + id: 0x4d3cebe1 + kind: STRUCT + name: "devlink_dpipe_field" + definition { + bytesize: 24 + member_id: 0x0de57ce8 + member_id: 0xcc6aad16 + member_id: 0x4a47d75f + member_id: 0x8b645ad4 + } +} +struct_union { + id: 0x751480f9 + kind: STRUCT + name: "devlink_dpipe_header" + definition { + bytesize: 32 + member_id: 0x0de57ce8 + member_id: 0xcc6aad16 + member_id: 0x784a4b9b + member_id: 0x361d56de + member_id: 0x55f132cc + } +} +struct_union { + id: 0xb55e29b2 + kind: STRUCT + name: "devlink_dpipe_headers" + definition { + bytesize: 16 + member_id: 0x614c39f2 + member_id: 0x958f08da + } +} +struct_union { + id: 0x8dfee289 + kind: STRUCT + name: "devlink_flash_update_params" + definition { + bytesize: 24 + member_id: 0x91e86fed + member_id: 0xe5d87fc5 + member_id: 0xc099cc3c + } +} +struct_union { + id: 0xa5206d7a + kind: STRUCT + name: "devlink_fmsg" + definition { + bytesize: 24 + member_id: 0x990317f0 + member_id: 0x82e1aed1 + } +} +struct_union { + id: 0xd5693f95 + kind: STRUCT + name: "devlink_health_reporter" + definition { + bytesize: 168 + member_id: 0x7c00ef52 + member_id: 0x59119163 + member_id: 0xafbb76d0 + member_id: 0x56ace115 + member_id: 0xeb76e483 + member_id: 0x210293e8 + member_id: 0x33fc8cf5 + member_id: 0x62d28eb5 + member_id: 0xea4e825c + member_id: 0x773b8f3f + member_id: 0x768a691a + member_id: 0x1e719a84 + member_id: 0x352c4ca4 + member_id: 0x0b6ea206 + member_id: 0x629c6b33 + member_id: 0x41fdc1b3 + member_id: 0x05243d41 + } +} +struct_union { + id: 0xdeaf8933 + kind: STRUCT + name: "devlink_health_reporter_ops" + definition { + bytesize: 40 + member_id: 0x0ddfefbb + member_id: 0x8a4b19d4 + member_id: 0x0a7d4966 + member_id: 0x30b83368 + member_id: 0x8db5ea4d + } +} +struct_union { + id: 0xcea2d9d1 + kind: STRUCT + name: "devlink_info_req" + definition { + bytesize: 24 + member_id: 0xe2057d5b + member_id: 0x8e9e82fd + member_id: 0xca2aa534 + } +} +struct_union { + id: 0x0383def3 kind: STRUCT name: "devlink_linecard" + definition { + bytesize: 136 + member_id: 0x7c00ef52 + member_id: 0x56ace87c + member_id: 0xad7c8510 + member_id: 0x05243818 + member_id: 0xafb646e8 + member_id: 0x59119f66 + member_id: 0x72b72416 + member_id: 0x46ecc05d + member_id: 0x5c68c671 + member_id: 0xf49ccf9e + member_id: 0x6e477688 + member_id: 0xe3a3de7e + } +} +struct_union { + id: 0x0d2a2bc0 + kind: STRUCT + name: "devlink_linecard_ops" + definition { + bytesize: 40 + member_id: 0xd3c8aa61 + member_id: 0x1f617d86 + member_id: 0xebfb4e21 + member_id: 0x6e3b6a83 + member_id: 0x88117783 + } +} +struct_union { + id: 0x12a087f3 + kind: STRUCT + name: "devlink_linecard_type" + definition { + bytesize: 16 + member_id: 0x5c68c5cb + member_id: 0x59303e30 + } +} +struct_union { + id: 0xcb5e2bb0 + kind: STRUCT + name: "devlink_ops" + definition { + bytesize: 424 + member_id: 0x9fc14365 + member_id: 0x83cb909a + member_id: 0xb0509801 + member_id: 0xf8981c0e + member_id: 0xa5ab7067 + member_id: 0xf43affcb + member_id: 0xa22f8c42 + member_id: 0x5f87545a + member_id: 0x93cb2df4 + member_id: 0xeaf07952 + member_id: 0x78a8c4ae + member_id: 0x6f535872 + member_id: 0x001ba0a6 + member_id: 0x07349e82 + member_id: 0xa9d0bb48 + member_id: 0x1197fb66 + member_id: 0x80e35930 + member_id: 0xde69b5bc + member_id: 0x67ecafb3 + member_id: 0x06f3214d + member_id: 0xff091101 + member_id: 0xf81283dc + member_id: 0x2d2ca64a + member_id: 0x0e5d040f + member_id: 0xe0c4d82e + member_id: 0x5ef8d6d5 + member_id: 0x37b507df + member_id: 0x24edb8c2 + member_id: 0x21a1a972 + member_id: 0x2b3b3947 + member_id: 0x3a9bd5f4 + member_id: 0xb252ef85 + member_id: 0x3c859cc4 + member_id: 0x950fbc14 + member_id: 0x1ba59c6d + member_id: 0xc8b0c1d4 + member_id: 0x5e35aa2e + member_id: 0x2e72e7e0 + member_id: 0x85af182d + member_id: 0x90793300 + member_id: 0x9e84141c + member_id: 0xa5c2f472 + member_id: 0xeb46d6f6 + member_id: 0x049c1f00 + member_id: 0x54806d5b + member_id: 0x7b7f9a93 + member_id: 0xeff7e2c9 + member_id: 0x573e57ed + member_id: 0x3d9c68f5 + member_id: 0x7f7f584f + member_id: 0x069fcabf + member_id: 0x561fd50f + member_id: 0xd95b0d92 + } } struct_union { id: 0xc7e35718 @@ -214163,7 +219318,7 @@ struct_union { bytesize: 344 member_id: 0x7c00ef52 member_id: 0x4fd31bbd - member_id: 0x5685a7bf + member_id: 0x56ace115 member_id: 0xad7c8a1e member_id: 0xc5a12bbd member_id: 0x5c46dd88 @@ -214178,7 +219333,7 @@ struct_union { member_id: 0x6ac6877c member_id: 0xefdb0c31 member_id: 0xf45f2394 - member_id: 0xd1c402eb + member_id: 0xd1e477a3 } } struct_union { @@ -214195,6 +219350,22 @@ struct_union { member_id: 0x357170d2 } } +struct_union { + id: 0x6807af97 + kind: STRUCT + name: "devlink_port_new_attrs" + definition { + bytesize: 20 + member_id: 0xdf2fd72b + member_id: 0xbf1e816a + member_id: 0xd8dc9c99 + member_id: 0x4c6b273e + member_id: 0x6980d678 + member_id: 0x0317cd78 + member_id: 0x1db19505 + member_id: 0x38a7e1c1 + } +} struct_union { id: 0xf0f5f897 kind: STRUCT @@ -214240,6 +219411,18 @@ struct_union { member_id: 0xd69a643e } } +struct_union { + id: 0xe6964d46 + kind: STRUCT + name: "devlink_port_region_ops" + definition { + bytesize: 32 + member_id: 0x0de57ce8 + member_id: 0xa4170b6e + member_id: 0x0c832449 + member_id: 0x59119068 + } +} struct_union { id: 0x1777d31b kind: STRUCT @@ -214248,7 +219431,7 @@ struct_union { bytesize: 80 member_id: 0x7c00ef52 member_id: 0x5cf2824f - member_id: 0x5685afdd + member_id: 0x56ace977 member_id: 0x5911980a member_id: 0xd3866153 member_id: 0x6d8a9147 @@ -214256,6 +219439,89 @@ struct_union { member_id: 0x38c01e38 } } +struct_union { + id: 0x47689b48 + kind: STRUCT + name: "devlink_region" + definition { + bytesize: 120 + member_id: 0x56ace1be + member_id: 0x48c075a0 + member_id: 0x7c00e690 + member_id: 0x3c8c9122 + member_id: 0xcbc193d6 + member_id: 0xcffde3b6 + member_id: 0x2a2e382b + member_id: 0x80fbe8a7 + member_id: 0xd9ec35e7 + } +} +struct_union { + id: 0xc4da5559 + kind: STRUCT + name: "devlink_region_ops" + definition { + bytesize: 32 + member_id: 0x0de57ce8 + member_id: 0xa4170b6e + member_id: 0x0c805fde + member_id: 0x59119068 + } +} +struct_union { + id: 0xe35e5ccd + kind: STRUCT + name: "devlink_sb_pool_info" + definition { + bytesize: 16 + member_id: 0xe52eef97 + member_id: 0xd9b71962 + member_id: 0x6ce0bb82 + member_id: 0x08477548 + } +} +struct_union { + id: 0x1c7a3d65 + kind: STRUCT + name: "devlink_trap" + definition { + bytesize: 32 + member_id: 0x5cbbb022 + member_id: 0x3ecaad84 + member_id: 0x4257f846 + member_id: 0xccbe65b2 + member_id: 0x0de5752a + member_id: 0xa4c7afe2 + member_id: 0xd492332a + } +} +struct_union { + id: 0x198b6a50 + kind: STRUCT + name: "devlink_trap_group" + definition { + bytesize: 16 + member_id: 0x0de57ce8 + member_id: 0xccbe65cf + member_id: 0x4257f83b + member_id: 0xf53cc107 + } +} +struct_union { + id: 0xaf8c5ca0 + kind: STRUCT + name: "devlink_trap_policer" + definition { + bytesize: 56 + member_id: 0xcce624ba + member_id: 0x2b41bb63 + member_id: 0xb36eb0c7 + member_id: 0x5cea623b + member_id: 0x7843c8a8 + member_id: 0x9c062023 + member_id: 0x7b580056 + } +} struct_union { id: 0xd1d07704 kind: STRUCT @@ -218834,6 +224100,20 @@ struct_union { member_id: 0xa6673206 } } +struct_union { + id: 0xce180920 + kind: STRUCT + name: "fastopen_queue" + definition { + bytesize: 40 + member_id: 0x4fed2df8 + member_id: 0xe2520be5 + member_id: 0x2d1fe547 + member_id: 0x9bf5ac3e + member_id: 0x6bf829f7 + member_id: 0xec94e17c + } +} struct_union { id: 0xbdd1c219 kind: STRUCT @@ -224732,6 +230012,16 @@ struct_union { member_id: 0xb4bb2348 } } +struct_union { + id: 0xe2574ab7 + kind: STRUCT + name: "in6_pktinfo" + definition { + bytesize: 20 + member_id: 0xce9a5c98 + member_id: 0x8e98680e + } +} struct_union { id: 0xa54936d5 kind: STRUCT @@ -224798,6 +230088,17 @@ struct_union { member_id: 0xb121c544 } } +struct_union { + id: 0x1f434195 + kind: STRUCT + name: "inet6_cork" + definition { + bytesize: 16 + member_id: 0xf67626a5 + member_id: 0x9f6b950b + member_id: 0x51ef8423 + } +} struct_union { id: 0xc4c18dc3 kind: STRUCT @@ -224865,6 +230166,42 @@ struct_union { member_id: 0xc5c8b651 } } +struct_union { + id: 0x03de7511 + kind: STRUCT + name: "inet_bind2_bucket" + definition { + bytesize: 64 + member_id: 0xe50fbded + member_id: 0xe6f3661d + member_id: 0x48322e2f + member_id: 0x9e9c9ad1 + member_id: 0x31fb35e2 + member_id: 0x0f3ca934 + member_id: 0xb8ff9609 + member_id: 0xbc5ebfd1 + } +} +struct_union { + id: 0xe6615d93 + kind: STRUCT + name: "inet_bind_bucket" + definition { + bytesize: 72 + member_id: 0xe50fbded + member_id: 0xe6f3661d + member_id: 0x48322e2f + member_id: 0xa6e81f22 + member_id: 0x244da0b8 + member_id: 0x73b4d4d5 + member_id: 0x6398a0a9 + member_id: 0xfd693ce8 + member_id: 0x247ebe29 + member_id: 0xcee88548 + member_id: 0x0f3ca80d + member_id: 0xb8ff9c83 + } +} struct_union { id: 0x89a37894 kind: STRUCT @@ -224875,6 +230212,100 @@ struct_union { member_id: 0x152992ef } } +struct_union { + id: 0x82dbb487 + kind: STRUCT + name: "inet_connection_sock" + definition { + bytesize: 1536 + member_id: 0x9bd0d4a0 + member_id: 0x2a778fa0 + member_id: 0xa53e6076 + member_id: 0xf1a367c5 + member_id: 0xe54062f3 + member_id: 0x3adf52b3 + member_id: 0xbf3d6991 + member_id: 0xaa84a388 + member_id: 0x7c9184fd + member_id: 0xcfd1f1ed + member_id: 0x9796567d + member_id: 0x2b917283 + member_id: 0xeb6a5fa1 + member_id: 0x50d22351 + member_id: 0x69ab5d87 + member_id: 0x411180b7 + member_id: 0x5392fe03 + member_id: 0x8adfff2f + member_id: 0x9b3f0555 + member_id: 0x5c570222 + member_id: 0x8e756dfb + member_id: 0x6bd77d33 + member_id: 0xfd5174f1 + member_id: 0xb27d04f5 + member_id: 0x2446b1e6 + member_id: 0x2d061585 + member_id: 0xd7cc2503 + member_id: 0xc36d8395 + member_id: 0xc75c6970 + member_id: 0xf4f5c9e8 + member_id: 0x973a1269 + member_id: 0x2d081c07 + member_id: 0xa86967ec + } +} +struct_union { + id: 0x5d95189a + kind: STRUCT + name: "inet_connection_sock_af_ops" + definition { + bytesize: 96 + member_id: 0x52c10ec0 + member_id: 0x6d7c55af + member_id: 0x198e2327 + member_id: 0x68c86260 + member_id: 0x495c1c6d + member_id: 0x472be94a + member_id: 0x729f250d + member_id: 0x171ea46a + member_id: 0x094f9496 + member_id: 0x852593c2 + member_id: 0xd9ad3ae7 + member_id: 0x09692cc4 + member_id: 0x2e3a46f9 + member_id: 0x2d08170f + } +} +struct_union { + id: 0xeeae7608 + kind: STRUCT + name: "inet_cork" + definition { + bytesize: 56 + member_id: 0x2d2d0138 + member_id: 0x24cfa4f0 + member_id: 0xf64ae666 + member_id: 0xe25ba6f2 + member_id: 0xb50a4f6b + member_id: 0xbbe3f808 + member_id: 0x34444209 + member_id: 0xf4da47b1 + member_id: 0xf113a55a + member_id: 0x10dc10b1 + member_id: 0xeaa4b2c9 + member_id: 0x1b258c6d + member_id: 0x8196ad18 + } +} +struct_union { + id: 0x60790295 + kind: STRUCT + name: "inet_cork_full" + definition { + bytesize: 152 + member_id: 0x853440fd + member_id: 0x75577b27 + } +} struct_union { id: 0x28cc893a kind: STRUCT @@ -224966,6 +230397,47 @@ struct_union { member_id: 0x9d345b6b } } +struct_union { + id: 0xd2a4529d + kind: STRUCT + name: "inet_sock" + definition { + bytesize: 1088 + member_id: 0x82ce9da8 + member_id: 0xe47590e7 + member_id: 0x8be10b49 + member_id: 0x8e099fc0 + member_id: 0x9e4ebac2 + member_id: 0x38f59a08 + member_id: 0x674b03be + member_id: 0x78639f81 + member_id: 0xf1a03e73 + member_id: 0xa28c3827 + member_id: 0x7008fda6 + member_id: 0x79ed9153 + member_id: 0xd1ac6cca + member_id: 0x1facb5a4 + member_id: 0x0ccb8adb + member_id: 0x3cd68edd + member_id: 0xa5d9163f + member_id: 0x73793851 + member_id: 0x1bda0ea3 + member_id: 0xb932820e + member_id: 0x87d4aa19 + member_id: 0x7e45f9f6 + member_id: 0x35577470 + member_id: 0x1ad125b2 + member_id: 0x3c401b61 + member_id: 0x1d8e0899 + member_id: 0x02fcf451 + member_id: 0x5a22c9ad + member_id: 0x9c6a8ab2 + member_id: 0xa608f9d7 + member_id: 0x5b66efeb + member_id: 0x2d08191c + member_id: 0x63760c6b + } +} struct_union { id: 0x53a9065e kind: STRUCT @@ -226393,6 +231865,26 @@ struct_union { member_id: 0x962b59ac } } +struct_union { + id: 0x04ad1af1 + kind: STRUCT + name: "ip6_flowlabel" + definition { + bytesize: 104 + member_id: 0x11f8bba0 + member_id: 0x05cb6176 + member_id: 0x85d92902 + member_id: 0xbb9c8500 + member_id: 0xf676260e + member_id: 0xe93fdbc8 + member_id: 0x95dac8e5 + member_id: 0xeb4f31b9 + member_id: 0x4ad6a726 + member_id: 0xccd48510 + member_id: 0x91036748 + member_id: 0x1f4e61c9 + } +} struct_union { id: 0xdcb15adf kind: STRUCT @@ -226408,6 +231900,18 @@ struct_union { member_id: 0x95dac8e5 } } +struct_union { + id: 0xe42ec820 + kind: STRUCT + name: "ip6_sf_socklist" + definition { + bytesize: 24 + member_id: 0x047148a0 + member_id: 0xeea06d44 + member_id: 0x95dacd96 + member_id: 0x7f9c0ca0 + } +} struct_union { id: 0x5096f267 kind: STRUCT @@ -226501,6 +232005,19 @@ struct_union { member_id: 0x95dac7ab } } +struct_union { + id: 0x04be5205 + kind: STRUCT + name: "ip_mc_socklist" + definition { + bytesize: 48 + member_id: 0x11613e69 + member_id: 0xe7efca93 + member_id: 0x00c085ca + member_id: 0x25db7175 + member_id: 0x95dac9dc + } +} struct_union { id: 0xf86b845e kind: STRUCT @@ -226512,6 +232029,40 @@ struct_union { member_id: 0xf77583a5 } } +struct_union { + id: 0x29719ae3 + kind: STRUCT + name: "ip_options" + definition { + bytesize: 16 + member_id: 0xe37696ac + member_id: 0xe2d3a144 + member_id: 0x3cedbd03 + member_id: 0x3a20fe11 + member_id: 0xe752e605 + member_id: 0x95c9b8f6 + member_id: 0x1e6a6587 + member_id: 0x3feffe90 + member_id: 0xb9615f80 + member_id: 0xe5e354be + member_id: 0xb15e52c6 + member_id: 0x5ffbc843 + member_id: 0xe1754ad1 + member_id: 0x1dfe157e + member_id: 0x86165645 + member_id: 0xf4a9b31e + } +} +struct_union { + id: 0xca64cdd4 + kind: STRUCT + name: "ip_options_rcu" + definition { + bytesize: 32 + member_id: 0x95dac977 + member_id: 0xf6635680 + } +} struct_union { id: 0xe6a8bc0b kind: STRUCT @@ -226538,6 +232089,18 @@ struct_union { member_id: 0x494491e1 } } +struct_union { + id: 0xdc40a74d + kind: STRUCT + name: "ip_sf_socklist" + definition { + bytesize: 24 + member_id: 0x047148a0 + member_id: 0xeea06d44 + member_id: 0x95dacd96 + member_id: 0x7fbfd873 + } +} struct_union { id: 0x19e78670 kind: STRUCT @@ -226673,6 +232236,17 @@ struct_union { member_id: 0x724ae662 } } +struct_union { + id: 0x2cf9bbda + kind: STRUCT + name: "ipv6_ac_socklist" + definition { + bytesize: 32 + member_id: 0x7980c676 + member_id: 0xa102d1d4 + member_id: 0x23f246a8 + } +} struct_union { id: 0x66c6fbfa kind: STRUCT @@ -226756,6 +232330,97 @@ struct_union { member_id: 0xda3c6150 } } +struct_union { + id: 0xd421869b + kind: STRUCT + name: "ipv6_fl_socklist" + definition { + bytesize: 32 + member_id: 0x11cc9887 + member_id: 0x75129e6a + member_id: 0x95dac0b5 + } +} +struct_union { + id: 0x61c3c826 + kind: STRUCT + name: "ipv6_mc_socklist" + definition { + bytesize: 56 + member_id: 0x2440fa86 + member_id: 0x90568e8d + member_id: 0x00c085ca + member_id: 0x11e1e8dd + member_id: 0x25d5628c + member_id: 0x95daceb0 + } +} +struct_union { + id: 0xe7d07a15 + kind: STRUCT + name: "ipv6_opt_hdr" + definition { + bytesize: 2 + member_id: 0xe85e1d32 + member_id: 0xd608b573 + } +} +struct_union { + id: 0x65bafa41 + kind: STRUCT + name: "ipv6_pinfo" + definition { + bytesize: 152 + member_id: 0xf85f9f77 + member_id: 0x39865348 + member_id: 0xca75de5a + member_id: 0x2ac20e0b + member_id: 0x3c1c76af + member_id: 0x370a9ced + member_id: 0x46cd5abc + member_id: 0xa582fe9b + member_id: 0x8c5039ca + member_id: 0x34d8f2b6 + member_id: 0x95dcef8c + member_id: 0xe14bd1fe + member_id: 0xca5da826 + member_id: 0xd1f78df1 + member_id: 0xc40b184c + member_id: 0x7560b519 + member_id: 0x6e852b14 + member_id: 0xb13666fe + member_id: 0xaab1780b + member_id: 0x4b741bd1 + member_id: 0x6854e737 + member_id: 0xe803bc2e + member_id: 0x1b81e20c + member_id: 0x7e1e1e3e + member_id: 0xe5f931e3 + member_id: 0x78ae54cb + member_id: 0x51753049 + member_id: 0x608ed11c + member_id: 0x3e931a99 + member_id: 0xfce07b0f + member_id: 0xe2141007 + member_id: 0x1e958d31 + member_id: 0xf6762c03 + member_id: 0xe8802f7b + member_id: 0x80588b5f + member_id: 0xa677c461 + } +} +struct_union { + id: 0x61267b05 + kind: STRUCT + name: "ipv6_rt_hdr" + definition { + bytesize: 4 + member_id: 0xe85e1d32 + member_id: 0xd608b573 + member_id: 0x5ce53c7a + member_id: 0x498b56ac + } +} struct_union { id: 0x8b8aa3c2 kind: STRUCT @@ -226797,6 +232462,23 @@ struct_union { member_id: 0x12832f3f } } +struct_union { + id: 0xda61121d + kind: STRUCT + name: "ipv6_txoptions" + definition { + bytesize: 64 + member_id: 0xb7dcf8ac + member_id: 0x3eb7848c + member_id: 0x5e1efe31 + member_id: 0x00c73957 + member_id: 0x111085fe + member_id: 0xebf05092 + member_id: 0xcd7a45a0 + member_id: 0xfb3c6654 + member_id: 0x95dac8e5 + } +} struct_union { id: 0x97012809 kind: STRUCT @@ -230372,6 +236054,25 @@ struct_union { member_id: 0x73407d9e } } +struct_union { + id: 0x98a86aa3 + kind: STRUCT + name: "minmax" + definition { + bytesize: 24 + member_id: 0x67c839a9 + } +} +struct_union { + id: 0xa12e384a + kind: STRUCT + name: "minmax_sample" + definition { + bytesize: 8 + member_id: 0xab76db82 + member_id: 0x28f6afd5 + } +} struct_union { id: 0x0fc94b61 kind: STRUCT @@ -234445,6 +240146,23 @@ struct_union { member_id: 0xb59c78b7 } } +struct_union { + id: 0x798d1382 + kind: STRUCT + name: "page_vma_mapped_walk" + definition { + bytesize: 72 + member_id: 0x64bb7964 + member_id: 0xe3b1b19e + member_id: 0xadfdef1c + member_id: 0x239192da + member_id: 0x30e26822 + member_id: 0x56639dd1 + member_id: 0xa17fe2dc + member_id: 0xce4422cd + member_id: 0x2d2d0a20 + } +} struct_union { id: 0x3844dda9 kind: STRUCT @@ -239788,6 +245506,22 @@ struct_union { member_id: 0xd072e4b9 } } +struct_union { + id: 0xf05a506e + kind: STRUCT + name: "request_sock_queue" + definition { + bytesize: 80 + member_id: 0xf1af1f8d + member_id: 0x6f5c1006 + member_id: 0x77b35ac5 + member_id: 0x9be65a12 + member_id: 0x2baf73ff + member_id: 0x5367b67f + member_id: 0x07b1da25 + member_id: 0x5aaa76bb + } +} struct_union { id: 0x85641a49 kind: STRUCT @@ -243624,6 +249358,25 @@ struct_union { kind: STRUCT name: "smc_hashinfo" } +struct_union { + id: 0xf265ff6f + kind: STRUCT + name: "smp_hotplug_thread" + definition { + bytesize: 96 + member_id: 0xacd44104 + member_id: 0x7c00ebb3 + member_id: 0x4118a1ce + member_id: 0x3e886d7b + member_id: 0x0f89928e + member_id: 0x84c3a238 + member_id: 0x200938c6 + member_id: 0xc70bed2a + member_id: 0x6fd6cd07 + member_id: 0x5937e22e + member_id: 0xa81d1890 + } +} struct_union { id: 0x6c8e86b4 kind: STRUCT @@ -248005,6 +253758,30 @@ struct_union { member_id: 0x95daceb0 } } +struct_union { + id: 0x0cb73b55 + kind: STRUCT + name: "tcp_fastopen_cookie" + definition { + bytesize: 24 + member_id: 0x4f647aa3 + member_id: 0xb82c6bed + member_id: 0x9633fcdf + } +} +struct_union { + id: 0x38e5bb2f + kind: STRUCT + name: "tcp_fastopen_request" + definition { + bytesize: 56 + member_id: 0x5846e373 + member_id: 0xffbef712 + member_id: 0xd98a29b1 + member_id: 0x5414dc08 + member_id: 0x50ba6c8c + } +} struct_union { id: 0x85ab6757 kind: STRUCT @@ -248014,6 +253791,220 @@ struct_union { member_id: 0x0d3e3662 } } +struct_union { + id: 0xfb9626d5 + kind: STRUCT + name: "tcp_options_received" + definition { + bytesize: 24 + member_id: 0x8131134d + member_id: 0x851fefad + member_id: 0x908732db + member_id: 0xa56c13a3 + member_id: 0x037e8aa7 + member_id: 0xcd6e1313 + member_id: 0x09aae020 + member_id: 0xf0ca4be8 + member_id: 0xa9edea21 + member_id: 0x7d4497ce + member_id: 0xa597551f + member_id: 0x64ea7467 + member_id: 0x9eb3a9b9 + member_id: 0xc2fb89b4 + member_id: 0x7cf21fa8 + member_id: 0xc4835a3d + member_id: 0x5ddbff68 + } +} +struct_union { + id: 0xd4132c46 + kind: STRUCT + name: "tcp_rack" + definition { + bytesize: 24 + member_id: 0xf3d1e1b3 + member_id: 0x2e52fcab + member_id: 0xd5a564b1 + member_id: 0x8762b004 + member_id: 0xc2607053 + member_id: 0x599289d3 + member_id: 0x28f28f83 + member_id: 0xec6d552f + } +} +struct_union { + id: 0xe9e88d93 + kind: STRUCT + name: "tcp_sack_block" + definition { + bytesize: 8 + member_id: 0x3d5d011f + member_id: 0xd5a56009 + } +} +struct_union { + id: 0x45ac4f1e + kind: STRUCT + name: "tcp_sock" + definition { + bytesize: 2368 + member_id: 0x07676cab + member_id: 0xc07533a2 + member_id: 0x085eba8a + member_id: 0xfcce6b61 + member_id: 0xda945faa + member_id: 0x43536458 + member_id: 0x7ecbe350 + member_id: 0x722b8728 + member_id: 0x1ec2d3d6 + member_id: 0x93db6466 + member_id: 0x24e972c0 + member_id: 0xef3672e0 + member_id: 0xdb2f5379 + member_id: 0x840adfe0 + member_id: 0x3ed6f46c + member_id: 0x7efdf5c5 + member_id: 0x8248546f + member_id: 0x9c800493 + member_id: 0x9a3cd5ff + member_id: 0xcaaa728e + member_id: 0x41099e1a + member_id: 0x036494f3 + member_id: 0xaf1c2858 + member_id: 0xb4b04624 + member_id: 0x3fe882fb + member_id: 0x1f8008f5 + member_id: 0xb8d73d0d + member_id: 0xb0b5b654 + member_id: 0x8571ffda + member_id: 0x98ad753d + member_id: 0x8a514678 + member_id: 0x2c2c5bfb + member_id: 0x1d3891d6 + member_id: 0x4aed4e02 + member_id: 0x330d862e + member_id: 0xdab01e8a + member_id: 0xd0fa2acf + member_id: 0x6c3076ab + member_id: 0x4b0fd146 + member_id: 0x5514b7d1 + member_id: 0xd6330125 + member_id: 0x5d29f448 + member_id: 0x72c8b468 + member_id: 0xb9f127f6 + member_id: 0xa42f5b5e + member_id: 0xa073f76a + member_id: 0xe07791d5 + member_id: 0xd4dd684d + member_id: 0xf06d788d + member_id: 0xdaf769b4 + member_id: 0xd0cd0f99 + member_id: 0x1d3cf444 + member_id: 0x590d4988 + member_id: 0x5e175424 + member_id: 0xe4473696 + member_id: 0x1273b273 + member_id: 0x7d5a2639 + member_id: 0xb9645bc8 + member_id: 0x81d25425 + member_id: 0x5005e20e + member_id: 0x2c472957 + member_id: 0x5e1e9277 + member_id: 0x0c6e4e2a + member_id: 0x28d4f0ae + member_id: 0x00d04522 + member_id: 0xf098d631 + member_id: 0x861205e4 + member_id: 0x50d5f815 + member_id: 0xbb70420d + member_id: 0xfdbc865b + member_id: 0x0b8a1650 + member_id: 0x1d340096 + member_id: 0xd7cfbd25 + member_id: 0x6e240c8e + member_id: 0x3dfa7679 + member_id: 0xeb2f3b5f + member_id: 0x6e16f71f + member_id: 0xbffa6140 + member_id: 0x611d6152 + member_id: 0xedd761bd + member_id: 0xcf588653 + member_id: 0x3b23e448 + member_id: 0xdef99a11 + member_id: 0x0ed29348 + member_id: 0x9e51f1aa + member_id: 0xe301bb69 + member_id: 0xa9ca3fe9 + member_id: 0x3ce5a47e + member_id: 0xe9e7b435 + member_id: 0x986caa86 + member_id: 0xe06780dd + member_id: 0x14a57188 + member_id: 0x484997ff + member_id: 0xc8ee40be + member_id: 0xc6e15ebb + member_id: 0x18e683dd + member_id: 0x47a61a29 + member_id: 0x073e90bb + member_id: 0xd5cb059f + member_id: 0xfdfb52fb + member_id: 0xa598ac7c + member_id: 0x2d8724a1 + member_id: 0xbd3e4a51 + member_id: 0xb18c6cab + member_id: 0xe98a4697 + member_id: 0x86cd98a0 + member_id: 0x05aa0dfa + member_id: 0x0b88a7b8 + member_id: 0x78ec3163 + member_id: 0xac4c8092 + member_id: 0x3a30a25b + member_id: 0x2ae3d7d3 + member_id: 0x6da3106a + member_id: 0x36a89416 + member_id: 0x17b8fb75 + member_id: 0x60f3e5b5 + member_id: 0x92525caa + member_id: 0x44e15491 + member_id: 0x7392ff81 + member_id: 0xd77f2af8 + member_id: 0x1ab0aff5 + member_id: 0xf6fff0ee + member_id: 0x9e7c1e77 + member_id: 0xb4c1a226 + member_id: 0x0ab38392 + member_id: 0xa6861f94 + member_id: 0xf5c438ad + member_id: 0x203d8bb9 + member_id: 0x3a366be0 + member_id: 0xcebd1125 + member_id: 0x035a9f8f + member_id: 0x38961e9d + member_id: 0x541b592a + member_id: 0x3641013e + member_id: 0x349100e3 + member_id: 0x7a4a99f1 + member_id: 0x72f4ca16 + member_id: 0x2d081e39 + } +} +struct_union { + id: 0xa19fd9aa + kind: STRUCT + name: "tcp_ulp_ops" + definition { + bytesize: 88 + member_id: 0x7c00ef52 + member_id: 0x1ac6e8a5 + member_id: 0xd6aa460e + member_id: 0xae97905e + member_id: 0x1d9b9b9d + member_id: 0xbaa156f0 + member_id: 0xf6c2da43 + member_id: 0x0d994758 + member_id: 0x4a965429 + } +} struct_union { id: 0xcfff757d kind: STRUCT @@ -258579,7 +264570,7 @@ struct_union { member_id: 0x06879837 member_id: 0xf762467b member_id: 0x26b32295 - member_id: 0x2d0811d3 + member_id: 0x31a5da6f member_id: 0x63760917 member_id: 0xac894244 member_id: 0xe0f63158 @@ -263808,6 +269799,104 @@ enumeration { } } } +enumeration { + id: 0xe09c0936 + name: "devlink_dpipe_field_mapping_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE" + } + enumerator { + name: "DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX" + value: 1 + } + } +} +enumeration { + id: 0xc700b957 + name: "devlink_eswitch_encap_mode" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_ESWITCH_ENCAP_MODE_NONE" + } + enumerator { + name: "DEVLINK_ESWITCH_ENCAP_MODE_BASIC" + value: 1 + } + } +} +enumeration { + id: 0x1afd1fe8 + name: "devlink_health_reporter_state" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_HEALTH_REPORTER_STATE_HEALTHY" + } + enumerator { + name: "DEVLINK_HEALTH_REPORTER_STATE_ERROR" + value: 1 + } + } +} +enumeration { + id: 0x49f89a6d + name: "devlink_info_version_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_INFO_VERSION_TYPE_NONE" + } + enumerator { + name: "DEVLINK_INFO_VERSION_TYPE_COMPONENT" + value: 1 + } + } +} +enumeration { + id: 0x44d985d5 + name: "devlink_linecard_state" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_LINECARD_STATE_UNSPEC" + } + enumerator { + name: "DEVLINK_LINECARD_STATE_UNPROVISIONED" + value: 1 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_UNPROVISIONING" + value: 2 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_PROVISIONING" + value: 3 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_PROVISIONING_FAILED" + value: 4 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_PROVISIONED" + value: 5 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_ACTIVE" + value: 6 + } + enumerator { + name: "__DEVLINK_LINECARD_STATE_MAX" + value: 7 + } + enumerator { + name: "DEVLINK_LINECARD_STATE_MAX" + value: 6 + } + } +} enumeration { id: 0x03e0374b name: "devlink_port_flavour" @@ -263846,6 +269935,34 @@ enumeration { } } } +enumeration { + id: 0x769abc6d + name: "devlink_port_fn_opstate" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_PORT_FN_OPSTATE_DETACHED" + } + enumerator { + name: "DEVLINK_PORT_FN_OPSTATE_ATTACHED" + value: 1 + } + } +} +enumeration { + id: 0x666a7a1b + name: "devlink_port_fn_state" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_PORT_FN_STATE_INACTIVE" + } + enumerator { + name: "DEVLINK_PORT_FN_STATE_ACTIVE" + value: 1 + } + } +} enumeration { id: 0x100964d4 name: "devlink_port_type" @@ -263882,6 +269999,136 @@ enumeration { } } } +enumeration { + id: 0xb38a8bec + name: "devlink_reload_action" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_RELOAD_ACTION_UNSPEC" + } + enumerator { + name: "DEVLINK_RELOAD_ACTION_DRIVER_REINIT" + value: 1 + } + enumerator { + name: "DEVLINK_RELOAD_ACTION_FW_ACTIVATE" + value: 2 + } + enumerator { + name: "__DEVLINK_RELOAD_ACTION_MAX" + value: 3 + } + enumerator { + name: "DEVLINK_RELOAD_ACTION_MAX" + value: 2 + } + } +} +enumeration { + id: 0x35c4d162 + name: "devlink_reload_limit" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_RELOAD_LIMIT_UNSPEC" + } + enumerator { + name: "DEVLINK_RELOAD_LIMIT_NO_RESET" + value: 1 + } + enumerator { + name: "__DEVLINK_RELOAD_LIMIT_MAX" + value: 2 + } + enumerator { + name: "DEVLINK_RELOAD_LIMIT_MAX" + value: 1 + } + } +} +enumeration { + id: 0xa7051d2f + name: "devlink_sb_pool_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_SB_POOL_TYPE_INGRESS" + } + enumerator { + name: "DEVLINK_SB_POOL_TYPE_EGRESS" + value: 1 + } + } +} +enumeration { + id: 0xcbcc8512 + name: "devlink_sb_threshold_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_SB_THRESHOLD_TYPE_STATIC" + } + enumerator { + name: "DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC" + value: 1 + } + } +} +enumeration { + id: 0xba990d57 + name: "devlink_selftest_status" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_SELFTEST_STATUS_SKIP" + } + enumerator { + name: "DEVLINK_SELFTEST_STATUS_PASS" + value: 1 + } + enumerator { + name: "DEVLINK_SELFTEST_STATUS_FAIL" + value: 2 + } + } +} +enumeration { + id: 0x322b7a90 + name: "devlink_trap_action" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_TRAP_ACTION_DROP" + } + enumerator { + name: "DEVLINK_TRAP_ACTION_TRAP" + value: 1 + } + enumerator { + name: "DEVLINK_TRAP_ACTION_MIRROR" + value: 2 + } + } +} +enumeration { + id: 0xed655c73 + name: "devlink_trap_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DEVLINK_TRAP_TYPE_DROP" + } + enumerator { + name: "DEVLINK_TRAP_TYPE_EXCEPTION" + value: 1 + } + enumerator { + name: "DEVLINK_TRAP_TYPE_CONTROL" + value: 2 + } + } +} enumeration { id: 0x69efc53e name: "df_reason" @@ -271430,6 +277677,28 @@ enumeration { } } } +enumeration { + id: 0x00381413 + name: "scan_balance" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "SCAN_EQUAL" + } + enumerator { + name: "SCAN_FRACT" + value: 1 + } + enumerator { + name: "SCAN_ANON" + value: 2 + } + enumerator { + name: "SCAN_FILE" + value: 3 + } + } +} enumeration { id: 0xbcb85241 name: "scsi_cmnd_submitter" @@ -275399,6 +281668,12 @@ enumeration { } } } +function { + id: 0x004cf563 + return_type_id: 0x48b5725f + parameter_id: 0x4585663f + parameter_id: 0x6d7f5ff6 +} function { id: 0x00a508d8 return_type_id: 0x100a15ee @@ -275442,6 +281717,15 @@ function { id: 0x012b29b0 return_type_id: 0x914dbfdc } +function { + id: 0x012cb0da + return_type_id: 0x48b5725f + parameter_id: 0x4585663f + parameter_id: 0x34818c51 + parameter_id: 0x18bd6530 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x914dbfdc +} function { id: 0x013800d7 return_type_id: 0x48b5725f @@ -275798,6 +282082,27 @@ function { parameter_id: 0x091f4a0b parameter_id: 0x3286774f } +function { + id: 0x0a7402f1 + return_type_id: 0x48b5725f + parameter_id: 0x6720d32f + parameter_id: 0xca283f54 + parameter_id: 0x33756485 + parameter_id: 0x06835e9c +} +function { + id: 0x0a7418fc + return_type_id: 0x48b5725f + parameter_id: 0x6720d32f + parameter_id: 0xca283f54 + parameter_id: 0x33756485 +} +function { + id: 0x0a78c5a5 + return_type_id: 0x48b5725f + parameter_id: 0x6720d32f + parameter_id: 0xca283f54 +} function { id: 0x0a9e8df2 return_type_id: 0x079ff791 @@ -278007,6 +284312,15 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0bbe1c3e } +function { + id: 0x1277e3bd + return_type_id: 0x48b5725f + parameter_id: 0x0a70ce1b + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f + parameter_id: 0x051414e1 + parameter_id: 0x04d7fcdd +} function { id: 0x127987a5 return_type_id: 0x48b5725f @@ -278532,6 +284846,22 @@ function { parameter_id: 0x054f691a parameter_id: 0x391f15ea } +function { + id: 0x1353a05d + return_type_id: 0x48b5725f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3e10b518 + parameter_id: 0x3e10b518 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} +function { + id: 0x1353c771 + return_type_id: 0x48b5725f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c53e119 + parameter_id: 0x18bd6530 +} function { id: 0x13544dcf return_type_id: 0x48b5725f @@ -278664,6 +284994,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x6720d32f } +function { + id: 0x137915b0 + return_type_id: 0x48b5725f + parameter_id: 0x0cf3d8fe + parameter_id: 0x376c8705 +} function { id: 0x13797fb7 return_type_id: 0x48b5725f @@ -278769,6 +285105,11 @@ function { parameter_id: 0xe02e14d6 parameter_id: 0xf435685e } +function { + id: 0x13a4a7ac + return_type_id: 0x48b5725f + parameter_id: 0x0cf3d8fe +} function { id: 0x13a62397 return_type_id: 0x48b5725f @@ -279261,6 +285602,13 @@ function { parameter_id: 0x12bb35ff parameter_id: 0x1582ab06 } +function { + id: 0x1462512b + return_type_id: 0x48b5725f + parameter_id: 0x1344d43c + parameter_id: 0x0cbf60eb + parameter_id: 0x6720d32f +} function { id: 0x14667c52 return_type_id: 0x48b5725f @@ -280355,6 +286703,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x1b7b196f } +function { + id: 0x164ad64e + return_type_id: 0x48b5725f + parameter_id: 0x1b4a1f75 +} function { id: 0x164c5933 return_type_id: 0x48b5725f @@ -280803,6 +287156,13 @@ function { parameter_id: 0x105c8027 parameter_id: 0x914dbfdc } +function { + id: 0x16cab29d + return_type_id: 0x48b5725f + parameter_id: 0x1a1051a0 + parameter_id: 0x31e58fe0 + parameter_id: 0x4585663f +} function { id: 0x16cc357f return_type_id: 0x48b5725f @@ -281033,12 +287393,25 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x310ec01d } +function { + id: 0x171a1012 + return_type_id: 0x48b5725f + parameter_id: 0x1d44326e + parameter_id: 0x34d3469d +} function { id: 0x171c8621 return_type_id: 0xd5cc9c9a parameter_id: 0x09626b7f parameter_id: 0x6d7f5ff6 } +function { + id: 0x17256acc + return_type_id: 0x48b5725f + parameter_id: 0x1d44326e + parameter_id: 0x3bfbd7cf + parameter_id: 0x0f626ee5 +} function { id: 0x172842ec return_type_id: 0x48b5725f @@ -281090,6 +287463,12 @@ function { parameter_id: 0x6720d32f parameter_id: 0x18bd6530 } +function { + id: 0x1730d353 + return_type_id: 0x48b5725f + parameter_id: 0x1d44326e + parameter_id: 0x3e6396e0 +} function { id: 0x1731208f return_type_id: 0x48b5725f @@ -284355,6 +290734,11 @@ function { parameter_id: 0x36194830 parameter_id: 0x026525e9 } +function { + id: 0x1d1a000c + return_type_id: 0x48b5725f + parameter_id: 0x3609467c +} function { id: 0x1d1cf212 return_type_id: 0x48b5725f @@ -284547,6 +290931,13 @@ function { parameter_id: 0x347303b4 parameter_id: 0x3e10b518 } +function { + id: 0x1d657c6d + return_type_id: 0x48b5725f + parameter_id: 0x36d15200 + parameter_id: 0x1d44326e + parameter_id: 0xf1a6dfed +} function { id: 0x1d6aeee7 return_type_id: 0x48b5725f @@ -285181,6 +291572,13 @@ function { parameter_id: 0x3b04bead parameter_id: 0x18bd6530 } +function { + id: 0x1e3db1e5 + return_type_id: 0x48b5725f + parameter_id: 0x3e10b518 + parameter_id: 0x49f89a6d + parameter_id: 0x18bd6530 +} function { id: 0x1e3f491e return_type_id: 0x48b5725f @@ -285188,6 +291586,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x6720d32f } +function { + id: 0x1e4106e1 + return_type_id: 0x48b5725f + parameter_id: 0x3b04bead + parameter_id: 0x07027638 + parameter_id: 0x11c404ba +} function { id: 0x1e4577e0 return_type_id: 0x48b5725f @@ -285811,6 +292216,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3e6239e1 } +function { + id: 0x1f01387c + return_type_id: 0x48b5725f + parameter_id: 0x3fca7642 + parameter_id: 0x1afd1fe8 +} function { id: 0x1f060fb8 return_type_id: 0x48b5725f @@ -285845,6 +292256,11 @@ function { parameter_id: 0x0cbf60eb parameter_id: 0x095a3c37 } +function { + id: 0x1f121b27 + return_type_id: 0x48b5725f + parameter_id: 0x3e292ad1 +} function { id: 0x1f15c803 return_type_id: 0x48b5725f @@ -286173,6 +292589,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3fc475cd } +function { + id: 0x1f6acc03 + return_type_id: 0x48b5725f + parameter_id: 0x3fca7642 +} function { id: 0x1f729ba1 return_type_id: 0x48b5725f @@ -286570,6 +292991,12 @@ function { parameter_id: 0x32fddfe5 parameter_id: 0xf641dd8a } +function { + id: 0x20151959 + return_type_id: 0x2b8f13b3 + parameter_id: 0x33f8b54b + parameter_id: 0x0bf1a65b +} function { id: 0x209ae488 return_type_id: 0x37f9fd94 @@ -286773,6 +293200,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0x2720cd28 + return_type_id: 0x3fca7642 + parameter_id: 0x0cf3d8fe + parameter_id: 0x307eba5c + parameter_id: 0x92233392 + parameter_id: 0x18bd6530 +} function { id: 0x27d025a4 return_type_id: 0x40e51470 @@ -288110,6 +294545,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0xf435685e } +function { + id: 0x4022c156 + return_type_id: 0xc9082b19 + parameter_id: 0x1bfb2a60 + parameter_id: 0xc9082b19 +} function { id: 0x40326129 return_type_id: 0x31675062 @@ -288882,6 +295323,12 @@ function { id: 0x534abe77 return_type_id: 0x295c7202 } +function { + id: 0x5373932e + return_type_id: 0x18bd6530 + parameter_id: 0x11e6864c + parameter_id: 0x6720d32f +} function { id: 0x537f4e77 return_type_id: 0x18bd6530 @@ -289014,6 +295461,13 @@ function { return_type_id: 0x08faf209 parameter_id: 0x11e6864c } +function { + id: 0x553ed14c + return_type_id: 0xba990d57 + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f + parameter_id: 0x07dcdbe1 +} function { id: 0x55423178 return_type_id: 0x18bd6530 @@ -289039,6 +295493,11 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x0c48c037 } +function { + id: 0x55aa47ce + return_type_id: 0x18bd6530 + parameter_id: 0x0cf3d8fe +} function { id: 0x55afd20f return_type_id: 0x2131312a @@ -289444,6 +295903,11 @@ function { parameter_id: 0x30cfc1c2 parameter_id: 0xf1a6dfed } +function { + id: 0x59642c61 + return_type_id: 0x18bd6530 + parameter_id: 0x3fca7642 +} function { id: 0x596454e5 return_type_id: 0x92233392 @@ -289692,6 +296156,14 @@ function { parameter_id: 0xf435685e parameter_id: 0x6720d32f } +function { + id: 0x5bbe2188 + return_type_id: 0x0cf3d8fe + parameter_id: 0x3121a074 + parameter_id: 0xf435685e + parameter_id: 0x0ca27481 + parameter_id: 0x0258f96e +} function { id: 0x5bd76b9c return_type_id: 0x18bd6530 @@ -290047,6 +296519,16 @@ function { return_type_id: 0x249959de parameter_id: 0x347303b4 } +function { + id: 0x6240298a + return_type_id: 0x1d44326e + parameter_id: 0x3861403d + parameter_id: 0x054f691a + parameter_id: 0x27847a9a + parameter_id: 0x1259e377 + parameter_id: 0x27847a9a + parameter_id: 0x11cfee5a +} function { id: 0x624b0f22 return_type_id: 0x0537fb37 @@ -290285,6 +296767,13 @@ function { parameter_id: 0x2584a3b9 parameter_id: 0x6d7f5ff6 } +function { + id: 0x69be77aa + return_type_id: 0x054f691a + parameter_id: 0x054f691a + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f +} function { id: 0x69cde367 return_type_id: 0x054f691a @@ -291605,6 +298094,14 @@ function { parameter_id: 0x21003da7 parameter_id: 0x21530c77 } +function { + id: 0x876cb04d + return_type_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0xca283f54 + parameter_id: 0x33756485 + parameter_id: 0x06835e9c +} function { id: 0x87739e97 return_type_id: 0x3a583251 @@ -292093,6 +298590,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x18bd6530 } +function { + id: 0x9002b2b0 + return_type_id: 0x6720d32f + parameter_id: 0x3609467c +} function { id: 0x9006b123 return_type_id: 0x6720d32f @@ -292281,6 +298783,14 @@ function { parameter_id: 0x92233392 parameter_id: 0x2e0f9112 } +function { + id: 0x9038705c + return_type_id: 0x6720d32f + parameter_id: 0x347303b4 + parameter_id: 0x2afee447 + parameter_id: 0x38d23361 + parameter_id: 0x6720d32f +} function { id: 0x9038edd5 return_type_id: 0x6720d32f @@ -292856,6 +299366,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x34e62f02 } +function { + id: 0x90bd2dd7 + return_type_id: 0x6720d32f + parameter_id: 0x376789dd + parameter_id: 0x3bcd0c02 + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0x90bfa7c3 return_type_id: 0x6720d32f @@ -293156,6 +299674,11 @@ function { parameter_id: 0xf435685e parameter_id: 0x0ab1f084 } +function { + id: 0x910fbd4c + return_type_id: 0x6720d32f + parameter_id: 0x323d798e +} function { id: 0x91117703 return_type_id: 0x6720d32f @@ -294845,6 +301368,11 @@ function { parameter_id: 0x0490bb4a parameter_id: 0xc9082b19 } +function { + id: 0x920aa99b + return_type_id: 0x6720d32f + parameter_id: 0x3e292ad1 +} function { id: 0x920d4b76 return_type_id: 0x6720d32f @@ -294856,6 +301384,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3e360385 } +function { + id: 0x92117c1d + return_type_id: 0x6720d32f + parameter_id: 0x3fca7642 + parameter_id: 0x18bd6530 + parameter_id: 0x07dcdbe1 +} function { id: 0x92121eb9 return_type_id: 0x6720d32f @@ -295252,6 +301787,23 @@ function { parameter_id: 0x3176a085 parameter_id: 0xeeed68e6 } +function { + id: 0x926873bc + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0x38d23361 + parameter_id: 0x38d23361 +} +function { + id: 0x92687d88 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0x38d23361 +} function { id: 0x92697f90 return_type_id: 0x6720d32f @@ -295262,11 +301814,57 @@ function { return_type_id: 0x3e10b518 parameter_id: 0x00b7947f } +function { + id: 0x926a0987 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0xa7051d2f + parameter_id: 0x2ec35650 + parameter_id: 0x38d23361 +} +function { + id: 0x926a0c03 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0xa7051d2f + parameter_id: 0x38d23361 + parameter_id: 0x38d23361 +} +function { + id: 0x926a25a2 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0xa7051d2f + parameter_id: 0x914dbfdc + parameter_id: 0xc9082b19 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x926bbb17 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0xc9082b19 + parameter_id: 0x07dcdbe1 +} function { id: 0x926be467 return_type_id: 0x6720d32f parameter_id: 0x3fac1d22 } +function { + id: 0x926d0dd0 + return_type_id: 0x6720d32f + parameter_id: 0x3fca7642 + parameter_id: 0x07dcdbe1 +} function { id: 0x926dcbb0 return_type_id: 0x6720d32f @@ -295422,6 +302020,13 @@ function { parameter_id: 0x3f37d9d5 parameter_id: 0x32a063f3 } +function { + id: 0x928c1332 + return_type_id: 0x6720d32f + parameter_id: 0x3fca7642 + parameter_id: 0x3e10b518 + parameter_id: 0x18bd6530 +} function { id: 0x928d6faf return_type_id: 0x6720d32f @@ -295639,6 +302244,13 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x38040a6c } +function { + id: 0x92c286e9 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x666a7a1b + parameter_id: 0x07dcdbe1 +} function { id: 0x92c2d86d return_type_id: 0x6720d32f @@ -295905,6 +302517,14 @@ function { parameter_id: 0x3e6396e0 parameter_id: 0x386badcf } +function { + id: 0x92fb2e1e + return_type_id: 0x6720d32f + parameter_id: 0x3fca7642 + parameter_id: 0x23d822f9 + parameter_id: 0x18bd6530 + parameter_id: 0x07dcdbe1 +} function { id: 0x92fc5924 return_type_id: 0x6720d32f @@ -295918,6 +302538,13 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x3e10b518 } +function { + id: 0x92fce902 + return_type_id: 0x6720d32f + parameter_id: 0x3fca7642 + parameter_id: 0x23d822f9 + parameter_id: 0x07dcdbe1 +} function { id: 0x92fcfc63 return_type_id: 0x6720d32f @@ -296019,6 +302646,13 @@ function { parameter_id: 0x064d6086 parameter_id: 0x6720d32f } +function { + id: 0x9312e40f + return_type_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x4585663f + parameter_id: 0x00fff809 +} function { id: 0x9312e488 return_type_id: 0x6720d32f @@ -296033,6 +302667,14 @@ function { parameter_id: 0x4585663f parameter_id: 0x00c72527 } +function { + id: 0x9313207d + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x130aa721 + parameter_id: 0x173696bc + parameter_id: 0x07dcdbe1 +} function { id: 0x9313a933 return_type_id: 0x6720d32f @@ -296128,6 +302770,12 @@ function { parameter_id: 0x6720d32f parameter_id: 0x3e6239e1 } +function { + id: 0x931afda4 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x100964d4 +} function { id: 0x931d2209 return_type_id: 0x6720d32f @@ -296319,6 +302967,14 @@ function { parameter_id: 0x3f37d9d5 parameter_id: 0x4585663f } +function { + id: 0x935d0dd3 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x00c72527 + parameter_id: 0x13580d6c + parameter_id: 0x07dcdbe1 +} function { id: 0x93627fe0 return_type_id: 0x6720d32f @@ -296485,6 +303141,12 @@ function { parameter_id: 0x3b04bead parameter_id: 0x33756485 } +function { + id: 0x938d8e84 + return_type_id: 0x6720d32f + parameter_id: 0x3861403d + parameter_id: 0x054f691a +} function { id: 0x938ec5ae return_type_id: 0x6720d32f @@ -296511,6 +303173,14 @@ function { parameter_id: 0x39a8be0c parameter_id: 0x1e8e5a79 } +function { + id: 0x9394f11e + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x33fd261b + parameter_id: 0x07dcdbe1 + parameter_id: 0x0aa1f0ee +} function { id: 0x93980968 return_type_id: 0x6720d32f @@ -296656,6 +303326,14 @@ function { parameter_id: 0x3b4ce03a parameter_id: 0x3b4ce03a } +function { + id: 0x93bf0967 + return_type_id: 0x6720d32f + parameter_id: 0x3b68ec61 + parameter_id: 0x3f0185ef + parameter_id: 0x6720d32f + parameter_id: 0x07dcdbe1 +} function { id: 0x93bf967f return_type_id: 0x6720d32f @@ -297929,6 +304607,11 @@ function { parameter_id: 0x508a987d parameter_id: 0x2ac2dd67 } +function { + id: 0x9576eb91 + return_type_id: 0x6720d32f + parameter_id: 0x23d822f9 +} function { id: 0x957964bc return_type_id: 0x6720d32f @@ -298004,6 +304687,12 @@ function { parameter_id: 0x3f44b979 parameter_id: 0x3e10b518 } +function { + id: 0x958ea945 + return_type_id: 0x6720d32f + parameter_id: 0x23d822f9 + parameter_id: 0x3e10b518 +} function { id: 0x958f9102 return_type_id: 0x6720d32f @@ -298201,6 +304890,13 @@ function { parameter_id: 0x23f09c34 parameter_id: 0x334c07d5 } +function { + id: 0x95b6c4a9 + return_type_id: 0x6720d32f + parameter_id: 0x23d822f9 + parameter_id: 0x391f15ea + parameter_id: 0x914dbfdc +} function { id: 0x95b74be6 return_type_id: 0x6720d32f @@ -300675,6 +307371,13 @@ function { parameter_id: 0x17047654 parameter_id: 0x295c7202 } +function { + id: 0x98e6779b + return_type_id: 0x6720d32f + parameter_id: 0x15b54c6f + parameter_id: 0x0483e6f8 + parameter_id: 0x6720d32f +} function { id: 0x98e6a470 return_type_id: 0x6720d32f @@ -300926,6 +307629,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1285100d } +function { + id: 0x9927995d + return_type_id: 0xf435685e + parameter_id: 0x3861403d +} function { id: 0x9927b218 return_type_id: 0x6720d32f @@ -301623,6 +308331,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x111ee6f8 } +function { + id: 0x99c882b3 + return_type_id: 0x6720d32f + parameter_id: 0x1e62d0f5 + parameter_id: 0xf435685e +} function { id: 0x99c885a2 return_type_id: 0x6720d32f @@ -302294,6 +309008,13 @@ function { parameter_id: 0x342a8622 parameter_id: 0x6720d32f } +function { + id: 0x9a3fe476 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x33756485 +} function { id: 0x9a403d53 return_type_id: 0x6720d32f @@ -302604,6 +309325,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1c50c4ad } +function { + id: 0x9a96d2a1 + return_type_id: 0x6720d32f + parameter_id: 0x120540d1 + parameter_id: 0xe62ebf07 + parameter_id: 0x391f15ea + parameter_id: 0x6720d32f +} function { id: 0x9a9d1e6d return_type_id: 0xf435685e @@ -303407,6 +310136,13 @@ function { parameter_id: 0x1b8590a8 parameter_id: 0x107606b0 } +function { + id: 0x9b222516 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x2170d06d + parameter_id: 0x2170d06d +} function { id: 0x9b2239e7 return_type_id: 0x6720d32f @@ -303553,6 +310289,13 @@ function { parameter_id: 0x21069feb parameter_id: 0x1a6ea392 } +function { + id: 0x9b2eaf21 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x2170d06d + parameter_id: 0x13580d6c +} function { id: 0x9b2eba1d return_type_id: 0x6720d32f @@ -303683,6 +310426,13 @@ function { parameter_id: 0x914dbfdc parameter_id: 0x07dcdbe1 } +function { + id: 0x9b3e4950 + return_type_id: 0x6720d32f + parameter_id: 0x191de370 + parameter_id: 0x3806a5e7 + parameter_id: 0x6720d32f +} function { id: 0x9b3e6548 return_type_id: 0x6720d32f @@ -303953,6 +310703,13 @@ function { parameter_id: 0x1bf16028 parameter_id: 0x4585663f } +function { + id: 0x9b4f443a + return_type_id: 0x6720d32f + parameter_id: 0x1d2bb1b6 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x9b4f857e return_type_id: 0x6720d32f @@ -304751,6 +311508,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x18150d9f } +function { + id: 0x9b85c291 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0a9e3ca3 +} function { id: 0x9b85c36d return_type_id: 0x6720d32f @@ -305341,6 +312104,12 @@ function { parameter_id: 0x11cfee5a parameter_id: 0x11cfee5a } +function { + id: 0x9bb5b719 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x06835e9c +} function { id: 0x9bb5c5c3 return_type_id: 0x6720d32f @@ -306299,6 +313068,14 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x1c3dbe5a } +function { + id: 0x9bdcd7ce + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x1d19a9d5 + parameter_id: 0x13580d6c +} function { id: 0x9bdcf60d return_type_id: 0x6720d32f @@ -306405,6 +313182,13 @@ function { parameter_id: 0x1d5bae2a parameter_id: 0x11cfee5a } +function { + id: 0x9bdf0ac7 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x13580d6c +} function { id: 0x9bdfa419 return_type_id: 0x6720d32f @@ -306499,6 +313283,16 @@ function { parameter_id: 0x2a670b41 parameter_id: 0x1c898f28 } +function { + id: 0x9be67f35 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1013df15 + parameter_id: 0x27d4bd81 + parameter_id: 0x1d19a9d5 + parameter_id: 0x2c32dd96 + parameter_id: 0x1bf16028 +} function { id: 0x9be6a9ad return_type_id: 0x6720d32f @@ -306585,6 +313379,15 @@ function { parameter_id: 0x1b2ca025 parameter_id: 0x2e2c982d } +function { + id: 0x9bf40739 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x14f37d47 + parameter_id: 0x2170d06d + parameter_id: 0x0a134144 + parameter_id: 0x13580d6c +} function { id: 0x9bf6c118 return_type_id: 0x6720d32f @@ -307110,6 +313913,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xe5e56f65 } +function { + id: 0x9c639284 + return_type_id: 0x6720d32f + parameter_id: 0x0665e6b6 + parameter_id: 0x1e820193 +} function { id: 0x9c660c95 return_type_id: 0x6720d32f @@ -307290,6 +314099,15 @@ function { parameter_id: 0x04ca9246 parameter_id: 0x33756485 } +function { + id: 0x9c7facb4 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0xb38a8bec + parameter_id: 0x35c4d162 + parameter_id: 0x38d23361 + parameter_id: 0x07dcdbe1 +} function { id: 0x9c814f78 return_type_id: 0x6720d32f @@ -307984,6 +314802,13 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0x33d0e528 } +function { + id: 0x9cf8d4d9 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x914dbfdc + parameter_id: 0x07dcdbe1 +} function { id: 0x9cf9beaa return_type_id: 0x6720d32f @@ -309169,6 +315994,13 @@ function { parameter_id: 0x2c982451 parameter_id: 0x13bdf349 } +function { + id: 0x9da1e0c3 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0xc700b957 + parameter_id: 0x07dcdbe1 +} function { id: 0x9da4bde5 return_type_id: 0x6720d32f @@ -310087,6 +316919,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xf1a6dfed } +function { + id: 0x9e071849 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x2ec35650 +} function { id: 0x9e08dfbb return_type_id: 0x6720d32f @@ -310122,6 +316960,21 @@ function { parameter_id: 0x36c97631 parameter_id: 0x6720d32f } +function { + id: 0x9e15f25c + return_type_id: 0x6720d32f + parameter_id: 0x0f4dcd61 + parameter_id: 0x18bd6530 + parameter_id: 0x92233392 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e1893ee + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x295c7202 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e19651e return_type_id: 0x6720d32f @@ -310144,6 +316997,13 @@ function { parameter_id: 0x0db3ac0f parameter_id: 0x3d8951f4 } +function { + id: 0x9e1a5c22 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x29ef8105 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e1dd697 return_type_id: 0x6720d32f @@ -310248,6 +317108,13 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x07dcdbe1 } +function { + id: 0x9e3092d5 + return_type_id: 0x6720d32f + parameter_id: 0x0f4dcd61 + parameter_id: 0x18bd6530 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e31377c return_type_id: 0x6720d32f @@ -310282,6 +317149,38 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0effc5a1 } +function { + id: 0x9e40b36c + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c0cf46a + parameter_id: 0x322b7a90 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e40c88b + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3b68ec61 + parameter_id: 0x4585663f + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e41cf39 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c53e119 + parameter_id: 0x322b7a90 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e41e293 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c0cf46a + parameter_id: 0x376c8705 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e41ea47 return_type_id: 0x6720d32f @@ -310303,12 +317202,62 @@ function { parameter_id: 0x452ab998 parameter_id: 0x6720d32f } +function { + id: 0x9e46dca9 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c53e119 + parameter_id: 0x2e18f543 +} +function { + id: 0x9e4766bb + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x376c8705 + parameter_id: 0x92233392 + parameter_id: 0x92233392 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e49e56e return_type_id: 0x6720d32f parameter_id: 0x0b7c4f67 parameter_id: 0x4585663f } +function { + id: 0x9e4b75cd + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c53e119 + parameter_id: 0x18bd6530 +} +function { + id: 0x9e4c26c1 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3c0cf46a +} +function { + id: 0x9e504197 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3b68ec61 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e51554f + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3b5017f2 +} +function { + id: 0x9e51dd03 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x3b143836 + parameter_id: 0x07dcdbe1 + parameter_id: 0x1bf16028 +} function { id: 0x9e52789b return_type_id: 0x6720d32f @@ -310330,6 +317279,13 @@ function { parameter_id: 0x1479c6e7 parameter_id: 0x2d8ee262 } +function { + id: 0x9e590019 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x39388fd3 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e5980cd return_type_id: 0x6720d32f @@ -310359,6 +317315,19 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0f78474f } +function { + id: 0x9e609ac2 + return_type_id: 0x6720d32f + parameter_id: 0x0f4dcd61 + parameter_id: 0x0cbf60eb + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9e61a70c + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x376c8705 +} function { id: 0x9e61ffc7 return_type_id: 0x6720d32f @@ -310390,6 +317359,15 @@ function { parameter_id: 0x33b77109 parameter_id: 0x0277bf8a } +function { + id: 0x9e68eb19 + return_type_id: 0x6720d32f + parameter_id: 0x0f4dcd61 + parameter_id: 0x0f4dcd61 + parameter_id: 0x18bd6530 + parameter_id: 0x18bd6530 + parameter_id: 0x07dcdbe1 +} function { id: 0x9e69dafa return_type_id: 0x6720d32f @@ -310399,6 +317377,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x11d941b8 } +function { + id: 0x9e6a2131 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x376c8705 + parameter_id: 0x2e18f543 +} function { id: 0x9e6bce91 return_type_id: 0x6720d32f @@ -310494,6 +317479,14 @@ function { parameter_id: 0x0db3ac0f parameter_id: 0x25653b02 } +function { + id: 0x9e7aaf3f + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x31d9e79a + parameter_id: 0x07dcdbe1 + parameter_id: 0x0aa1f0ee +} function { id: 0x9e7f936c return_type_id: 0x6720d32f @@ -310608,6 +317601,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0c56e1ee } +function { + id: 0x9e960f96 + return_type_id: 0x6720d32f + parameter_id: 0x054f691a + parameter_id: 0x914dbfdc +} function { id: 0x9e9a6f39 return_type_id: 0x6720d32f @@ -310688,6 +317687,12 @@ function { parameter_id: 0x0effc5a1 parameter_id: 0x2060db23 } +function { + id: 0x9ebf0984 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x00c72527 +} function { id: 0x9ebfed71 return_type_id: 0x6720d32f @@ -311189,6 +318194,15 @@ function { parameter_id: 0x097315c2 parameter_id: 0x3e10b518 } +function { + id: 0x9f25dc29 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x6d7f5ff6 + parameter_id: 0xb38a8bec + parameter_id: 0x35c4d162 + parameter_id: 0x07dcdbe1 +} function { id: 0x9f25fe02 return_type_id: 0x6720d32f @@ -311523,6 +318537,15 @@ function { parameter_id: 0x0beab59b parameter_id: 0x054f691a } +function { + id: 0x9f71449b + return_type_id: 0x6720d32f + parameter_id: 0x0a70ce1b + parameter_id: 0x18bd6530 + parameter_id: 0x3e10b518 + parameter_id: 0x391f15ea + parameter_id: 0x07dcdbe1 +} function { id: 0x9f72f53e return_type_id: 0x6720d32f @@ -311573,6 +318596,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0bfc9031 } +function { + id: 0x9f7fd20b + return_type_id: 0x6720d32f + parameter_id: 0x0a70ce1b + parameter_id: 0x18bd6530 + parameter_id: 0x07dcdbe1 +} function { id: 0x9f808c95 return_type_id: 0x6720d32f @@ -311645,6 +318675,24 @@ function { parameter_id: 0xf435685e parameter_id: 0x3e10b518 } +function { + id: 0x9f8d452b + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0xc9082b19 + parameter_id: 0xcbcc8512 + parameter_id: 0x07dcdbe1 +} +function { + id: 0x9f8e9af9 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f + parameter_id: 0x914dbfdc + parameter_id: 0x3247ae94 +} function { id: 0x9f93bc17 return_type_id: 0x6720d32f @@ -311736,6 +318784,12 @@ function { parameter_id: 0x08a8dfa4 parameter_id: 0x0258f96e } +function { + id: 0x9faa0088 + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f +} function { id: 0x9fab680a return_type_id: 0x6720d32f @@ -311743,6 +318797,13 @@ function { parameter_id: 0xc9082b19 parameter_id: 0xc9082b19 } +function { + id: 0x9fabf7be + return_type_id: 0x6720d32f + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f + parameter_id: 0x07dcdbe1 +} function { id: 0x9fac2fbc return_type_id: 0x6720d32f @@ -312225,6 +319286,11 @@ function { parameter_id: 0x4585663f parameter_id: 0x33756485 } +function { + id: 0xa08db938 + return_type_id: 0x6720d32f + parameter_id: 0xf435685e +} function { id: 0xa08f5503 return_type_id: 0xfc0e1dbd @@ -312408,6 +319474,17 @@ function { parameter_id: 0x0ae4a2c7 parameter_id: 0x3e10b518 } +function { + id: 0xa4f69947 + return_type_id: 0x6720d32f + parameter_id: 0xe62ebf07 + parameter_id: 0x391f15ea + parameter_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x3e001c39 + parameter_id: 0x1b8590a8 + parameter_id: 0xc9082b19 +} function { id: 0xa52e0ac1 return_type_id: 0x3dcee85d @@ -314047,6 +321124,12 @@ function { return_type_id: 0x4585663f parameter_id: 0x12e75923 } +function { + id: 0xcaae52cc + return_type_id: 0x4585663f + parameter_id: 0x1d44326e + parameter_id: 0xc9082b19 +} function { id: 0xcabd891e return_type_id: 0x4585663f @@ -314116,6 +321199,12 @@ function { parameter_id: 0x0a134144 parameter_id: 0x3360dff4 } +function { + id: 0xcc25b8e9 + return_type_id: 0x4585663f + parameter_id: 0x0a70ce1b + parameter_id: 0x18bd6530 +} function { id: 0xcc787cc3 return_type_id: 0x2efe8065 @@ -314264,6 +321353,14 @@ function { return_type_id: 0x4585663f parameter_id: 0x01241c02 } +function { + id: 0xce9ab7ea + return_type_id: 0x4585663f + parameter_id: 0x01222f7d + parameter_id: 0x064d6086 + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0xceb0f977 return_type_id: 0x4585663f @@ -315110,6 +322207,14 @@ function { parameter_id: 0x10673339 parameter_id: 0x23e856d0 } +function { + id: 0xe97c10c0 + return_type_id: 0x1b4a1f75 + parameter_id: 0x0cf3d8fe + parameter_id: 0x31d9e79a + parameter_id: 0xc9082b19 + parameter_id: 0x92233392 +} function { id: 0xea3d26bb return_type_id: 0x2e8ed696 @@ -315601,6 +322706,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x33d0e528 } +function { + id: 0xf2553153 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x324e7f0f + parameter_id: 0x18bd6530 +} function { id: 0xf25d597f return_type_id: 0x6d7f5ff6 @@ -316157,6 +323268,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x1b8590a8 } +function { + id: 0xf846d7da + return_type_id: 0x6d7f5ff6 + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 +} function { id: 0xf857e1a7 return_type_id: 0x6d7f5ff6 @@ -316340,6 +323457,11 @@ function { parameter_id: 0x11cfee5a parameter_id: 0x064d6086 } +function { + id: 0xfad7a092 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x11cfee5a +} function { id: 0xfaddfa97 return_type_id: 0x6d7f5ff6 @@ -316430,6 +323552,14 @@ function { return_type_id: 0x368487be parameter_id: 0x368487be } +function { + id: 0xfc55fd47 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x0a70ce1b + parameter_id: 0x18bd6530 + parameter_id: 0x3e10b518 + parameter_id: 0x391f15ea +} function { id: 0xfc59f36a return_type_id: 0x26e55184 @@ -316482,6 +323612,13 @@ function { parameter_id: 0x1e820193 parameter_id: 0x15a30023 } +function { + id: 0xfc8f4f95 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x0cf3d8fe + parameter_id: 0x4585663f + parameter_id: 0x07dcdbe1 +} function { id: 0xfca015af return_type_id: 0x6d7f5ff6 @@ -316601,6 +323738,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0xe5b69de1 } +function { + id: 0xfdb2dd0c + return_type_id: 0x6d7f5ff6 + parameter_id: 0x0258f96e + parameter_id: 0xe02e14d6 +} function { id: 0xfdd651d2 return_type_id: 0x6d7f5ff6 @@ -316699,6 +323842,12 @@ function { parameter_id: 0x03942c7a parameter_id: 0x3fd547b8 } +function { + id: 0xfec047b0 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x0258f96e + parameter_id: 0x3c88bbfa +} function { id: 0xfec3d248 return_type_id: 0x6d7f5ff6 @@ -317138,6 +324287,15 @@ elf_symbol { type_id: 0x475eeec2 full_name: "__blk_mq_alloc_disk" } +elf_symbol { + id: 0xcc33f78c + name: "__blk_mq_debugfs_rq_show" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3d3f445 + type_id: 0x9c639284 + full_name: "__blk_mq_debugfs_rq_show" +} elf_symbol { id: 0x01badff0 name: "__blk_mq_end_request" @@ -317471,6 +324629,15 @@ elf_symbol { type_id: 0x9115faa6 full_name: "__dev_change_net_namespace" } +elf_symbol { + id: 0x8f70cdad + name: "__dev_direct_xmit" + is_defined: true + symbol_type: FUNCTION + crc: 0x1f8aaf23 + type_id: 0x9e960f96 + full_name: "__dev_direct_xmit" +} elf_symbol { id: 0x2d91cc56 name: "__dev_get_by_index" @@ -318065,6 +325232,15 @@ elf_symbol { type_id: 0x20cd94dc full_name: "__fdget" } +elf_symbol { + id: 0xaf8ee687 + name: "__find_nth_bit" + is_defined: true + symbol_type: FUNCTION + crc: 0x3eccbe2c + type_id: 0x3ec500b9 + full_name: "__find_nth_bit" +} elf_symbol { id: 0x746a66fc name: "__flush_workqueue" @@ -318101,6 +325277,15 @@ elf_symbol { type_id: 0x102e93ac full_name: "__free_pages" } +elf_symbol { + id: 0xe458ae39 + name: "__fsnotify_parent" + is_defined: true + symbol_type: FUNCTION + crc: 0x2aa72d57 + type_id: 0x9a96d2a1 + full_name: "__fsnotify_parent" +} elf_symbol { id: 0x129eb7ed name: "__genphy_config_aneg" @@ -320442,6 +327627,15 @@ elf_symbol { type_id: 0x9b427bba full_name: "__traceiter_android_rvh_revert_creds" } +elf_symbol { + id: 0xf0ffb4d4 + name: "__traceiter_android_rvh_rtmutex_force_update" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3eba434 + type_id: 0x9bdcd7ce + full_name: "__traceiter_android_rvh_rtmutex_force_update" +} elf_symbol { id: 0xd90a9a58 name: "__traceiter_android_rvh_rtmutex_prepare_setprio" @@ -321207,6 +328401,15 @@ elf_symbol { type_id: 0x9b4b913b full_name: "__traceiter_android_vh_check_file_open" } +elf_symbol { + id: 0x6aac0cf8 + name: "__traceiter_android_vh_check_folio_look_around_ref" + is_defined: true + symbol_type: FUNCTION + crc: 0xa2856bd1 + type_id: 0x9b2eaf21 + full_name: "__traceiter_android_vh_check_folio_look_around_ref" +} elf_symbol { id: 0x96d1c9c4 name: "__traceiter_android_vh_check_hibernation_swap" @@ -321711,6 +328914,24 @@ elf_symbol { type_id: 0x9a36ff29 full_name: "__traceiter_android_vh_kswapd_per_node" } +elf_symbol { + id: 0xe19d2bf8 + name: "__traceiter_android_vh_look_around" + is_defined: true + symbol_type: FUNCTION + crc: 0x4d18aae7 + type_id: 0x9bf40739 + full_name: "__traceiter_android_vh_look_around" +} +elf_symbol { + id: 0x993f42ff + name: "__traceiter_android_vh_look_around_migrate_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0xbed1988a + type_id: 0x9b222516 + full_name: "__traceiter_android_vh_look_around_migrate_folio" +} elf_symbol { id: 0xfb6a92a8 name: "__traceiter_android_vh_madvise_cold_pageout_skip" @@ -322080,6 +329301,15 @@ elf_symbol { type_id: 0x9beff51f full_name: "__traceiter_android_vh_rtmutex_wait_start" } +elf_symbol { + id: 0xc56d7179 + name: "__traceiter_android_vh_rtmutex_waiter_prio" + is_defined: true + symbol_type: FUNCTION + crc: 0x40a0002c + type_id: 0x9bdf0ac7 + full_name: "__traceiter_android_vh_rtmutex_waiter_prio" +} elf_symbol { id: 0x5858f827 name: "__traceiter_android_vh_rwsem_can_spin_on_owner" @@ -322386,6 +329616,24 @@ elf_symbol { type_id: 0x9bcd4ff7 full_name: "__traceiter_android_vh_sysrq_crash" } +elf_symbol { + id: 0xdd9dd67b + name: "__traceiter_android_vh_task_blocks_on_rtmutex" + is_defined: true + symbol_type: FUNCTION + crc: 0x698af67b + type_id: 0x9be67f35 + full_name: "__traceiter_android_vh_task_blocks_on_rtmutex" +} +elf_symbol { + id: 0x48f0cf25 + name: "__traceiter_android_vh_test_clear_look_around_ref" + is_defined: true + symbol_type: FUNCTION + crc: 0x6a7e50c3 + type_id: 0x9bb5b719 + full_name: "__traceiter_android_vh_test_clear_look_around_ref" +} elf_symbol { id: 0x6befbf23 name: "__traceiter_android_vh_thermal_power_cap" @@ -322449,6 +329697,15 @@ elf_symbol { type_id: 0x9b2837bd full_name: "__traceiter_android_vh_try_to_unmap_one" } +elf_symbol { + id: 0x39155e73 + name: "__traceiter_android_vh_tune_scan_type" + is_defined: true + symbol_type: FUNCTION + crc: 0x24602ed2 + type_id: 0x9b85c291 + full_name: "__traceiter_android_vh_tune_scan_type" +} elf_symbol { id: 0x8a773cc3 name: "__traceiter_android_vh_typec_store_partner_src_caps" @@ -322611,6 +329868,15 @@ elf_symbol { type_id: 0x9a32c459 full_name: "__traceiter_android_vh_watchdog_timer_softlockup" } +elf_symbol { + id: 0xae5e5469 + name: "__traceiter_android_vh_wq_lockup_pool" + is_defined: true + symbol_type: FUNCTION + crc: 0x62c05483 + type_id: 0x9a3fe476 + full_name: "__traceiter_android_vh_wq_lockup_pool" +} elf_symbol { id: 0x6911084f name: "__traceiter_binder_transaction_received" @@ -323619,6 +330885,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_revert_creds" } +elf_symbol { + id: 0xf2fd13ea + name: "__tracepoint_android_rvh_rtmutex_force_update" + is_defined: true + symbol_type: OBJECT + crc: 0xa86a5262 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_rtmutex_force_update" +} elf_symbol { id: 0x69e37d02 name: "__tracepoint_android_rvh_rtmutex_prepare_setprio" @@ -324384,6 +331659,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_check_file_open" } +elf_symbol { + id: 0xca5cbc9a + name: "__tracepoint_android_vh_check_folio_look_around_ref" + is_defined: true + symbol_type: OBJECT + crc: 0xdaaccf03 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_check_folio_look_around_ref" +} elf_symbol { id: 0xaa072f92 name: "__tracepoint_android_vh_check_hibernation_swap" @@ -324888,6 +332172,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_kswapd_per_node" } +elf_symbol { + id: 0xda2d53f2 + name: "__tracepoint_android_vh_look_around" + is_defined: true + symbol_type: OBJECT + crc: 0x738994e9 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_look_around" +} +elf_symbol { + id: 0x50a5a949 + name: "__tracepoint_android_vh_look_around_migrate_folio" + is_defined: true + symbol_type: OBJECT + crc: 0x8b32227d + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_look_around_migrate_folio" +} elf_symbol { id: 0xcb34ca12 name: "__tracepoint_android_vh_madvise_cold_pageout_skip" @@ -325257,6 +332559,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_rtmutex_wait_start" } +elf_symbol { + id: 0xeaebbadf + name: "__tracepoint_android_vh_rtmutex_waiter_prio" + is_defined: true + symbol_type: OBJECT + crc: 0x0fbb21e2 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_rtmutex_waiter_prio" +} elf_symbol { id: 0xe471b8d5 name: "__tracepoint_android_vh_rwsem_can_spin_on_owner" @@ -325563,6 +332874,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_sysrq_crash" } +elf_symbol { + id: 0xe5bf742d + name: "__tracepoint_android_vh_task_blocks_on_rtmutex" + is_defined: true + symbol_type: OBJECT + crc: 0x5494b8bf + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_task_blocks_on_rtmutex" +} +elf_symbol { + id: 0x4ef2c337 + name: "__tracepoint_android_vh_test_clear_look_around_ref" + is_defined: true + symbol_type: OBJECT + crc: 0x4ffca4ae + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_test_clear_look_around_ref" +} elf_symbol { id: 0x6f25dd05 name: "__tracepoint_android_vh_thermal_power_cap" @@ -325626,6 +332955,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_try_to_unmap_one" } +elf_symbol { + id: 0x49b955bd + name: "__tracepoint_android_vh_tune_scan_type" + is_defined: true + symbol_type: OBJECT + crc: 0x45da6384 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_tune_scan_type" +} elf_symbol { id: 0x18e67da1 name: "__tracepoint_android_vh_typec_store_partner_src_caps" @@ -325788,6 +333126,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_watchdog_timer_softlockup" } +elf_symbol { + id: 0xa13f65ff + name: "__tracepoint_android_vh_wq_lockup_pool" + is_defined: true + symbol_type: OBJECT + crc: 0x4fd35a54 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_wq_lockup_pool" +} elf_symbol { id: 0xf57e8f65 name: "__tracepoint_binder_transaction_received" @@ -328999,6 +336346,24 @@ elf_symbol { type_id: 0xc0405795 full_name: "bpf_dispatcher_xdp_func" } +elf_symbol { + id: 0xd1f054c0 + name: "bpf_map_inc" + is_defined: true + symbol_type: FUNCTION + crc: 0xb21c378c + type_id: 0x11b43560 + full_name: "bpf_map_inc" +} +elf_symbol { + id: 0x2e575a11 + name: "bpf_map_put" + is_defined: true + symbol_type: FUNCTION + crc: 0xc1113f69 + type_id: 0x11b43560 + full_name: "bpf_map_put" +} elf_symbol { id: 0xf737e767 name: "bpf_master_redirect_enabled_key" @@ -329035,6 +336400,15 @@ elf_symbol { type_id: 0x1de47b51 full_name: "bpf_prog_sub" } +elf_symbol { + id: 0x56b332ad + name: "bpf_redirect_info" + is_defined: true + symbol_type: OBJECT + crc: 0x33823370 + type_id: 0x212d37a1 + full_name: "bpf_redirect_info" +} elf_symbol { id: 0x6a712ee1 name: "bpf_stats_enabled_key" @@ -329503,6 +336877,15 @@ elf_symbol { type_id: 0x6fa775f5 full_name: "build_skb" } +elf_symbol { + id: 0x521ad765 + name: "build_skb_around" + is_defined: true + symbol_type: FUNCTION + crc: 0xcdb7b9ec + type_id: 0x69be77aa + full_name: "build_skb_around" +} elf_symbol { id: 0x0f9d7b5e name: "bus_find_device" @@ -330320,6 +337703,15 @@ elf_symbol { type_id: 0x1a0b4b72 full_name: "class_unregister" } +elf_symbol { + id: 0xd156aa2c + name: "cleancache_register_ops" + is_defined: true + symbol_type: FUNCTION + crc: 0x5fa588cd + type_id: 0x910fbd4c + full_name: "cleancache_register_ops" +} elf_symbol { id: 0x00d9abe7 name: "cleanup_srcu_struct" @@ -334515,6 +341907,15 @@ elf_symbol { type_id: 0x10fc4d27 full_name: "device_remove_file" } +elf_symbol { + id: 0x22e51db4 + name: "device_remove_file_self" + is_defined: true + symbol_type: FUNCTION + crc: 0x7f6f4aa9 + type_id: 0xfec047b0 + full_name: "device_remove_file_self" +} elf_symbol { id: 0x5a62c5df name: "device_remove_groups" @@ -334623,6 +342024,150 @@ elf_symbol { type_id: 0x9d16dd74 full_name: "device_wakeup_enable" } +elf_symbol { + id: 0x884a3a76 + name: "devlink_alloc_ns" + is_defined: true + symbol_type: FUNCTION + crc: 0x81bd8c7b + type_id: 0x5bbe2188 + full_name: "devlink_alloc_ns" +} +elf_symbol { + id: 0xb54be30e + name: "devlink_flash_update_status_notify" + is_defined: true + symbol_type: FUNCTION + crc: 0x04c41c60 + type_id: 0x1353a05d + full_name: "devlink_flash_update_status_notify" +} +elf_symbol { + id: 0xead962b7 + name: "devlink_fmsg_binary_pair_nest_end" + is_defined: true + symbol_type: FUNCTION + crc: 0x5358864e + type_id: 0x9576eb91 + full_name: "devlink_fmsg_binary_pair_nest_end" +} +elf_symbol { + id: 0xfb50f564 + name: "devlink_fmsg_binary_pair_nest_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x11df0e75 + type_id: 0x958ea945 + full_name: "devlink_fmsg_binary_pair_nest_start" +} +elf_symbol { + id: 0xff600ca5 + name: "devlink_fmsg_binary_put" + is_defined: true + symbol_type: FUNCTION + crc: 0x15510a89 + type_id: 0x95b6c4a9 + full_name: "devlink_fmsg_binary_put" +} +elf_symbol { + id: 0x266ac51c + name: "devlink_free" + is_defined: true + symbol_type: FUNCTION + crc: 0x660eb6bd + type_id: 0x13a4a7ac + full_name: "devlink_free" +} +elf_symbol { + id: 0xa8e06dd7 + name: "devlink_health_report" + is_defined: true + symbol_type: FUNCTION + crc: 0x93edef07 + type_id: 0x928c1332 + full_name: "devlink_health_report" +} +elf_symbol { + id: 0x52e65741 + name: "devlink_health_reporter_create" + is_defined: true + symbol_type: FUNCTION + crc: 0x0d26f5c4 + type_id: 0x2720cd28 + full_name: "devlink_health_reporter_create" +} +elf_symbol { + id: 0x2069fc41 + name: "devlink_health_reporter_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0x850bb6db + type_id: 0x1f6acc03 + full_name: "devlink_health_reporter_destroy" +} +elf_symbol { + id: 0x0abe7457 + name: "devlink_health_reporter_priv" + is_defined: true + symbol_type: FUNCTION + crc: 0xe40bb23e + type_id: 0x59642c61 + full_name: "devlink_health_reporter_priv" +} +elf_symbol { + id: 0x70ca4fad + name: "devlink_health_reporter_state_update" + is_defined: true + symbol_type: FUNCTION + crc: 0x2b4509dd + type_id: 0x1f01387c + full_name: "devlink_health_reporter_state_update" +} +elf_symbol { + id: 0xa164371a + name: "devlink_priv" + is_defined: true + symbol_type: FUNCTION + crc: 0x6e3347ec + type_id: 0x55aa47ce + full_name: "devlink_priv" +} +elf_symbol { + id: 0xb4634233 + name: "devlink_region_create" + is_defined: true + symbol_type: FUNCTION + crc: 0x6110ed39 + type_id: 0xe97c10c0 + full_name: "devlink_region_create" +} +elf_symbol { + id: 0x0a058c0b + name: "devlink_region_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0xa410a295 + type_id: 0x164ad64e + full_name: "devlink_region_destroy" +} +elf_symbol { + id: 0x5603c10b + name: "devlink_register" + is_defined: true + symbol_type: FUNCTION + crc: 0xc498bdc9 + type_id: 0x13a4a7ac + full_name: "devlink_register" +} +elf_symbol { + id: 0x7520d018 + name: "devlink_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0x946c0028 + type_id: 0x13a4a7ac + full_name: "devlink_unregister" +} elf_symbol { id: 0xde9ec7ca name: "devm_add_action" @@ -336738,6 +344283,15 @@ elf_symbol { type_id: 0x9d038726 full_name: "dma_mmap_pages" } +elf_symbol { + id: 0x843aec6c + name: "dma_need_sync" + is_defined: true + symbol_type: FUNCTION + crc: 0xcec723d1 + type_id: 0xfdb2dd0c + full_name: "dma_need_sync" +} elf_symbol { id: 0xeb70c9c5 name: "dma_pool_alloc" @@ -340824,6 +348378,15 @@ elf_symbol { type_id: 0x1e4577e0 full_name: "drm_send_event_locked" } +elf_symbol { + id: 0xb701b4b1 + name: "drm_send_event_timestamp_locked" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e16a8ee + type_id: 0x1e4106e1 + full_name: "drm_send_event_timestamp_locked" +} elf_symbol { id: 0x19652f5f name: "drm_set_preferred_mode" @@ -342480,6 +350043,15 @@ elf_symbol { type_id: 0x1d030c3c full_name: "fsg_config_from_params" } +elf_symbol { + id: 0xe7fde0db + name: "fsnotify" + is_defined: true + symbol_type: FUNCTION + crc: 0x382d8219 + type_id: 0xa4f69947 + full_name: "fsnotify" +} elf_symbol { id: 0xee139066 name: "fsync_bdev" @@ -346965,6 +354537,15 @@ elf_symbol { type_id: 0x93bee8a1 full_name: "insert_resource" } +elf_symbol { + id: 0xcec28ada + name: "int_active_memcg" + is_defined: true + symbol_type: OBJECT + crc: 0x6f91b30c + type_id: 0x1d5bae2a + full_name: "int_active_memcg" +} elf_symbol { id: 0xbd83f7de name: "int_pow" @@ -347325,6 +354906,15 @@ elf_symbol { type_id: 0x7ceab5d7 full_name: "iommu_group_ref_get" } +elf_symbol { + id: 0x87342c78 + name: "iommu_group_remove_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x65e2cdf3 + type_id: 0x100e6fc8 + full_name: "iommu_group_remove_device" +} elf_symbol { id: 0x1f9ceb72 name: "iommu_group_set_iommudata" @@ -348577,6 +356167,24 @@ elf_symbol { type_id: 0x98046a12 full_name: "kernel_listen" } +elf_symbol { + id: 0x52f17879 + name: "kernel_neon_begin" + is_defined: true + symbol_type: FUNCTION + crc: 0x8fd180e7 + type_id: 0x10985193 + full_name: "kernel_neon_begin" +} +elf_symbol { + id: 0xa84cb89b + name: "kernel_neon_end" + is_defined: true + symbol_type: FUNCTION + crc: 0xa8a8110c + type_id: 0x10985193 + full_name: "kernel_neon_end" +} elf_symbol { id: 0xff4a14be name: "kernel_param_lock" @@ -349270,6 +356878,15 @@ elf_symbol { type_id: 0x9313eb8f full_name: "kstrtoll" } +elf_symbol { + id: 0xf44e0659 + name: "kstrtos16" + is_defined: true + symbol_type: FUNCTION + crc: 0xe0419ac4 + type_id: 0x9312e40f + full_name: "kstrtos16" +} elf_symbol { id: 0x9c1bb84e name: "kstrtos8" @@ -349495,6 +357112,15 @@ elf_symbol { type_id: 0x1dbb8bb2 full_name: "kthread_flush_worker" } +elf_symbol { + id: 0x2fbecafd + name: "kthread_freezable_should_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0xca7d8764 + type_id: 0xfad7a092 + full_name: "kthread_freezable_should_stop" +} elf_symbol { id: 0x49232ca9 name: "kthread_mod_delayed_work" @@ -351660,6 +359286,15 @@ elf_symbol { type_id: 0x165fcf63 full_name: "mipi_dsi_picture_parameter_set" } +elf_symbol { + id: 0x6d579aaf + name: "mipi_dsi_set_maximum_return_packet_size" + is_defined: true + symbol_type: FUNCTION + crc: 0x24bb881a + type_id: 0x9d9d4f0f + full_name: "mipi_dsi_set_maximum_return_packet_size" +} elf_symbol { id: 0xe4059d72 name: "misc_deregister" @@ -352371,6 +360006,15 @@ elf_symbol { type_id: 0x6fa775f5 full_name: "napi_build_skb" } +elf_symbol { + id: 0x760780be + name: "napi_busy_loop" + is_defined: true + symbol_type: FUNCTION + crc: 0x29604158 + type_id: 0x012cb0da + full_name: "napi_busy_loop" +} elf_symbol { id: 0xc258a893 name: "napi_complete_done" @@ -354180,6 +361824,15 @@ elf_symbol { type_id: 0x91f5fad8 full_name: "of_get_display_timing" } +elf_symbol { + id: 0x05a46d27 + name: "of_get_drm_display_mode" + is_defined: true + symbol_type: FUNCTION + crc: 0x884bdf07 + type_id: 0x9038705c + full_name: "of_get_drm_display_mode" +} elf_symbol { id: 0xe3de7018 name: "of_get_i2c_adapter_by_node" @@ -355137,6 +362790,15 @@ elf_symbol { type_id: 0x1443bd42 full_name: "page_pool_put_defragged_page" } +elf_symbol { + id: 0x7490fd3a + name: "page_pool_put_page_bulk" + is_defined: true + symbol_type: FUNCTION + crc: 0x898d9639 + type_id: 0x1462512b + full_name: "page_pool_put_page_bulk" +} elf_symbol { id: 0xfdf9f7ee name: "page_pool_release_page" @@ -355614,6 +363276,15 @@ elf_symbol { type_id: 0x14e1f000 full_name: "pci_disable_msix" } +elf_symbol { + id: 0xc3f9d559 + name: "pci_disable_pcie_error_reporting" + is_defined: true + symbol_type: FUNCTION + crc: 0xb4006e89 + type_id: 0x99f942bc + full_name: "pci_disable_pcie_error_reporting" +} elf_symbol { id: 0xb9d0b3a8 name: "pci_disable_sriov" @@ -355839,6 +363510,15 @@ elf_symbol { type_id: 0x537f83a2 full_name: "pci_iomap_range" } +elf_symbol { + id: 0x1c994923 + name: "pci_ioremap_bar" + is_defined: true + symbol_type: FUNCTION + crc: 0xccd07b76 + type_id: 0x5373932e + full_name: "pci_ioremap_bar" +} elf_symbol { id: 0xec861eec name: "pci_iounmap" @@ -360573,6 +368253,15 @@ elf_symbol { type_id: 0xaf453ff9 full_name: "regmap_get_device" } +elf_symbol { + id: 0x700d1b28 + name: "regmap_get_reg_stride" + is_defined: true + symbol_type: FUNCTION + crc: 0xb435d7cf + type_id: 0x9feaece8 + full_name: "regmap_get_reg_stride" +} elf_symbol { id: 0x248856c2 name: "regmap_get_val_bytes" @@ -360843,6 +368532,15 @@ elf_symbol { type_id: 0x8556217d full_name: "regulator_get" } +elf_symbol { + id: 0x90e2334a + name: "regulator_get_current_limit" + is_defined: true + symbol_type: FUNCTION + crc: 0xf9e34a3c + type_id: 0x9deb64a3 + full_name: "regulator_get_current_limit" +} elf_symbol { id: 0xfd198070 name: "regulator_get_current_limit_regmap" @@ -361032,6 +368730,15 @@ elf_symbol { type_id: 0x10f3d61f full_name: "regulator_put" } +elf_symbol { + id: 0xfd977d86 + name: "regulator_register" + is_defined: true + symbol_type: FUNCTION + crc: 0xa01989d0 + type_id: 0xf5978397 + full_name: "regulator_register" +} elf_symbol { id: 0xddb9ed35 name: "regulator_register_notifier" @@ -365020,6 +372727,24 @@ elf_symbol { type_id: 0x8c57cf58 full_name: "smp_call_on_cpu" } +elf_symbol { + id: 0xd7393cd7 + name: "smpboot_register_percpu_thread" + is_defined: true + symbol_type: FUNCTION + crc: 0xed22557a + type_id: 0x9002b2b0 + full_name: "smpboot_register_percpu_thread" +} +elf_symbol { + id: 0xbf61e6bf + name: "smpboot_unregister_percpu_thread" + is_defined: true + symbol_type: FUNCTION + crc: 0x62650cbc + type_id: 0x1d1a000c + full_name: "smpboot_unregister_percpu_thread" +} elf_symbol { id: 0x675bcd74 name: "snapshot_get_image_size" @@ -365119,6 +372844,15 @@ elf_symbol { type_id: 0x9bbebc0c full_name: "snd_ctl_enum_info" } +elf_symbol { + id: 0xfc7ac85d + name: "snd_ctl_find_id" + is_defined: true + symbol_type: FUNCTION + crc: 0x0f5523c6 + type_id: 0x20151959 + full_name: "snd_ctl_find_id" +} elf_symbol { id: 0x6aca9744 name: "snd_ctl_new1" @@ -365263,6 +372997,15 @@ elf_symbol { type_id: 0x1f50da89 full_name: "snd_info_free_entry" } +elf_symbol { + id: 0x257f1e06 + name: "snd_info_get_line" + is_defined: true + symbol_type: FUNCTION + crc: 0x24a94b26 + type_id: 0x98e6779b + full_name: "snd_info_get_line" +} elf_symbol { id: 0x5e6e4a8e name: "snd_info_register" @@ -365542,6 +373285,24 @@ elf_symbol { type_id: 0x15b600dd full_name: "snd_pcm_period_elapsed" } +elf_symbol { + id: 0x11b8b797 + name: "snd_pcm_rate_bit_to_rate" + is_defined: true + symbol_type: FUNCTION + crc: 0xff6104d0 + type_id: 0xdfba2774 + full_name: "snd_pcm_rate_bit_to_rate" +} +elf_symbol { + id: 0x19ea44b2 + name: "snd_pcm_rate_to_rate_bit" + is_defined: true + symbol_type: FUNCTION + crc: 0xb9638db4 + type_id: 0xdfba2774 + full_name: "snd_pcm_rate_to_rate_bit" +} elf_symbol { id: 0xba998ee2 name: "snd_pcm_set_managed_buffer" @@ -365596,6 +373357,15 @@ elf_symbol { type_id: 0xb3725ca4 full_name: "snd_sgbuf_get_addr" } +elf_symbol { + id: 0x31ef5894 + name: "snd_soc_add_card_controls" + is_defined: true + symbol_type: FUNCTION + crc: 0x3e965e80 + type_id: 0x9b3e4950 + full_name: "snd_soc_add_card_controls" +} elf_symbol { id: 0x0af8ff72 name: "snd_soc_add_component_controls" @@ -367144,6 +374914,15 @@ elf_symbol { type_id: 0x09506558 full_name: "sock_unregister" } +elf_symbol { + id: 0xeab36c96 + name: "sock_wake_async" + is_defined: true + symbol_type: FUNCTION + crc: 0xc356c393 + type_id: 0x9b4f443a + full_name: "sock_wake_async" +} elf_symbol { id: 0xba26b6a3 name: "sock_wfree" @@ -367702,6 +375481,15 @@ elf_symbol { type_id: 0xce4f521b full_name: "stack_trace_save" } +elf_symbol { + id: 0x9ae5b413 + name: "stack_trace_save_regs" + is_defined: true + symbol_type: FUNCTION + crc: 0x2731e15c + type_id: 0xce9ab7ea + full_name: "stack_trace_save_regs" +} elf_symbol { id: 0xe69a5898 name: "stack_trace_save_tsk" @@ -368749,6 +376537,60 @@ elf_symbol { type_id: 0x5760fe36 full_name: "tcp_hashinfo" } +elf_symbol { + id: 0x5f96413a + name: "tcp_register_congestion_control" + is_defined: true + symbol_type: FUNCTION + crc: 0x6a326cc1 + type_id: 0x920aa99b + full_name: "tcp_register_congestion_control" +} +elf_symbol { + id: 0x34a062e9 + name: "tcp_reno_cong_avoid" + is_defined: true + symbol_type: FUNCTION + crc: 0x49080385 + type_id: 0x14df3fae + full_name: "tcp_reno_cong_avoid" +} +elf_symbol { + id: 0x97edc1c5 + name: "tcp_reno_ssthresh" + is_defined: true + symbol_type: FUNCTION + crc: 0xfc040e49 + type_id: 0x42a927f9 + full_name: "tcp_reno_ssthresh" +} +elf_symbol { + id: 0xdb8e8104 + name: "tcp_reno_undo_cwnd" + is_defined: true + symbol_type: FUNCTION + crc: 0x4dece522 + type_id: 0x42a927f9 + full_name: "tcp_reno_undo_cwnd" +} +elf_symbol { + id: 0xe6a46ba8 + name: "tcp_slow_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x1cf8d7ac + type_id: 0x4022c156 + full_name: "tcp_slow_start" +} +elf_symbol { + id: 0xefab10bf + name: "tcp_unregister_congestion_control" + is_defined: true + symbol_type: FUNCTION + crc: 0xc80e5686 + type_id: 0x1f121b27 + full_name: "tcp_unregister_congestion_control" +} elf_symbol { id: 0x857e5dc9 name: "tcpci_get_tcpm_port" @@ -369910,6 +377752,15 @@ elf_symbol { type_id: 0x1210f89b full_name: "ttm_tt_fini" } +elf_symbol { + id: 0xcbabaff3 + name: "ttm_tt_unpopulate" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5cacfb1 + type_id: 0x14b4088f + full_name: "ttm_tt_unpopulate" +} elf_symbol { id: 0x0b4dd20d name: "tty_chars_in_buffer" @@ -370162,6 +378013,15 @@ elf_symbol { type_id: 0x9bc8ded8 full_name: "tty_port_install" } +elf_symbol { + id: 0x3ed74db1 + name: "tty_port_link_device" + is_defined: true + symbol_type: FUNCTION + crc: 0xebd3061e + type_id: 0x16cab29d + full_name: "tty_port_link_device" +} elf_symbol { id: 0x8c3087ea name: "tty_port_lower_dtr_rts" @@ -373474,6 +381334,15 @@ elf_symbol { type_id: 0x96011ad3 full_name: "usb_serial_suspend" } +elf_symbol { + id: 0xedbb00b2 + name: "usb_set_configuration" + is_defined: true + symbol_type: FUNCTION + crc: 0x58ece092 + type_id: 0x9f435990 + full_name: "usb_set_configuration" +} elf_symbol { id: 0x34af8a35 name: "usb_set_device_state" @@ -373924,6 +381793,15 @@ elf_symbol { type_id: 0x10e93841 full_name: "v4l2_device_unregister_subdev" } +elf_symbol { + id: 0x5c266e47 + name: "v4l2_enum_dv_timings_cap" + is_defined: true + symbol_type: FUNCTION + crc: 0x922ecd29 + type_id: 0x90bd2dd7 + full_name: "v4l2_enum_dv_timings_cap" +} elf_symbol { id: 0xd40ec4d6 name: "v4l2_event_dequeue" @@ -377218,6 +385096,15 @@ elf_symbol { type_id: 0x12dd8909 full_name: "zap_vma_ptes" } +elf_symbol { + id: 0xe8e0ea6a + name: "zero_pfn" + is_defined: true + symbol_type: OBJECT + crc: 0x85efc7e0 + type_id: 0x33756485 + full_name: "zero_pfn" +} elf_symbol { id: 0xa5d58813 name: "zlib_deflate" @@ -377432,6 +385319,7 @@ interface { symbol_id: 0xbceb9c07 symbol_id: 0xe70766b6 symbol_id: 0xb339c336 + symbol_id: 0xcc33f78c symbol_id: 0x01badff0 symbol_id: 0x4df0b385 symbol_id: 0x35aa1afd @@ -377469,6 +385357,7 @@ interface { symbol_id: 0x857a0e42 symbol_id: 0xe889d441 symbol_id: 0x087c7a06 + symbol_id: 0x8f70cdad symbol_id: 0x2d91cc56 symbol_id: 0xdc24797a symbol_id: 0xf2144a48 @@ -377535,10 +385424,12 @@ interface { symbol_id: 0x80f1cf36 symbol_id: 0x3e32c80e symbol_id: 0x5298aa39 + symbol_id: 0xaf8ee687 symbol_id: 0x746a66fc symbol_id: 0x47a334c4 symbol_id: 0xebf4b11f symbol_id: 0x5b1ea047 + symbol_id: 0xe458ae39 symbol_id: 0x129eb7ed symbol_id: 0x63083569 symbol_id: 0x46f82598 @@ -377799,6 +385690,7 @@ interface { symbol_id: 0xe3e24295 symbol_id: 0xaedef3a2 symbol_id: 0xde725472 + symbol_id: 0xf0ffb4d4 symbol_id: 0xd90a9a58 symbol_id: 0xbf64b0b6 symbol_id: 0xb25ca194 @@ -377884,6 +385776,7 @@ interface { symbol_id: 0x33c527ab symbol_id: 0x5012fcd8 symbol_id: 0x67bab494 + symbol_id: 0x6aac0cf8 symbol_id: 0x96d1c9c4 symbol_id: 0x42428033 symbol_id: 0x005c7625 @@ -377940,6 +385833,8 @@ interface { symbol_id: 0x4dca46cc symbol_id: 0xf83fbd26 symbol_id: 0x18fde973 + symbol_id: 0xe19d2bf8 + symbol_id: 0x993f42ff symbol_id: 0xfb6a92a8 symbol_id: 0xa94ef105 symbol_id: 0x0e1f9e23 @@ -377981,6 +385876,7 @@ interface { symbol_id: 0x91384eff symbol_id: 0x3ef508a2 symbol_id: 0xfb1b8d64 + symbol_id: 0xc56d7179 symbol_id: 0x5858f827 symbol_id: 0xb1847a6f symbol_id: 0x958d8cdb @@ -378015,6 +385911,8 @@ interface { symbol_id: 0x58e7556b symbol_id: 0x2ecf85e9 symbol_id: 0x34a01a22 + symbol_id: 0xdd9dd67b + symbol_id: 0x48f0cf25 symbol_id: 0x6befbf23 symbol_id: 0x226cc38b symbol_id: 0xeecc1529 @@ -378022,6 +385920,7 @@ interface { symbol_id: 0x2bc25325 symbol_id: 0x0119fc41 symbol_id: 0xd9f43028 + symbol_id: 0x39155e73 symbol_id: 0x8a773cc3 symbol_id: 0x9545623c symbol_id: 0x558490b1 @@ -378040,6 +385939,7 @@ interface { symbol_id: 0xcb4d15f3 symbol_id: 0x6a8145ff symbol_id: 0xb0bf7fd6 + symbol_id: 0xae5e5469 symbol_id: 0x6911084f symbol_id: 0x8068eeb3 symbol_id: 0xfdf83a19 @@ -378152,6 +386052,7 @@ interface { symbol_id: 0x18bac297 symbol_id: 0x1a849f34 symbol_id: 0x3f328d3c + symbol_id: 0xf2fd13ea symbol_id: 0x69e37d02 symbol_id: 0xeda5c5b0 symbol_id: 0x3cd58ada @@ -378237,6 +386138,7 @@ interface { symbol_id: 0x6f146fe1 symbol_id: 0x678bb5ba symbol_id: 0xf1ec5ef2 + symbol_id: 0xca5cbc9a symbol_id: 0xaa072f92 symbol_id: 0x9620eac1 symbol_id: 0x5cc4ca5b @@ -378293,6 +386195,8 @@ interface { symbol_id: 0x62c13726 symbol_id: 0xafbca760 symbol_id: 0x586a06d1 + symbol_id: 0xda2d53f2 + symbol_id: 0x50a5a949 symbol_id: 0xcb34ca12 symbol_id: 0x2f768c2b symbol_id: 0xc34a5545 @@ -378334,6 +386238,7 @@ interface { symbol_id: 0x3fc5ffc9 symbol_id: 0xa3915d70 symbol_id: 0xf01f02ea + symbol_id: 0xeaebbadf symbol_id: 0xe471b8d5 symbol_id: 0x84628825 symbol_id: 0x8d0ce77d @@ -378368,6 +386273,8 @@ interface { symbol_id: 0x39e68fed symbol_id: 0xefb9e5a3 symbol_id: 0x3fe0157c + symbol_id: 0xe5bf742d + symbol_id: 0x4ef2c337 symbol_id: 0x6f25dd05 symbol_id: 0xa5c71571 symbol_id: 0xfa3284c7 @@ -378375,6 +386282,7 @@ interface { symbol_id: 0xd9d2bcff symbol_id: 0x09ba106b symbol_id: 0xf9580976 + symbol_id: 0x49b955bd symbol_id: 0x18e67da1 symbol_id: 0x75a2f39e symbol_id: 0x7b5c377f @@ -378393,6 +386301,7 @@ interface { symbol_id: 0x743ea36d symbol_id: 0xc09d36c9 symbol_id: 0x42dbeb24 + symbol_id: 0xa13f65ff symbol_id: 0xf57e8f65 symbol_id: 0x18343f2d symbol_id: 0xef8c9bf3 @@ -378750,10 +386659,13 @@ interface { symbol_id: 0xd4a0f991 symbol_id: 0x864cb6b1 symbol_id: 0x55c7afec + symbol_id: 0xd1f054c0 + symbol_id: 0x2e575a11 symbol_id: 0xf737e767 symbol_id: 0x6ad917a1 symbol_id: 0xdeb1861d symbol_id: 0x7661d150 + symbol_id: 0x56b332ad symbol_id: 0x6a712ee1 symbol_id: 0xe594a242 symbol_id: 0x3afeb397 @@ -378806,6 +386718,7 @@ interface { symbol_id: 0xdded4dcd symbol_id: 0x9dea2dda symbol_id: 0x8ea00f54 + symbol_id: 0x521ad765 symbol_id: 0x0f9d7b5e symbol_id: 0x0be8da0e symbol_id: 0x921644f5 @@ -378897,6 +386810,7 @@ interface { symbol_id: 0xb29100f2 symbol_id: 0xef9eb644 symbol_id: 0xf91cb171 + symbol_id: 0xd156aa2c symbol_id: 0x00d9abe7 symbol_id: 0xb63845e5 symbol_id: 0x5332f89b @@ -379364,6 +387278,7 @@ interface { symbol_id: 0x589e892d symbol_id: 0x25bf4477 symbol_id: 0x5b8e8574 + symbol_id: 0x22e51db4 symbol_id: 0x5a62c5df symbol_id: 0x20c43211 symbol_id: 0xcdcce9e8 @@ -379376,6 +387291,22 @@ interface { symbol_id: 0x440b32de symbol_id: 0x96ffcda6 symbol_id: 0x4b1a4683 + symbol_id: 0x884a3a76 + symbol_id: 0xb54be30e + symbol_id: 0xead962b7 + symbol_id: 0xfb50f564 + symbol_id: 0xff600ca5 + symbol_id: 0x266ac51c + symbol_id: 0xa8e06dd7 + symbol_id: 0x52e65741 + symbol_id: 0x2069fc41 + symbol_id: 0x0abe7457 + symbol_id: 0x70ca4fad + symbol_id: 0xa164371a + symbol_id: 0xb4634233 + symbol_id: 0x0a058c0b + symbol_id: 0x5603c10b + symbol_id: 0x7520d018 symbol_id: 0xde9ec7ca symbol_id: 0xa2a47944 symbol_id: 0x97ae66e9 @@ -379609,6 +387540,7 @@ interface { symbol_id: 0xb989e3a2 symbol_id: 0xd140139f symbol_id: 0x009463a5 + symbol_id: 0x843aec6c symbol_id: 0xeb70c9c5 symbol_id: 0xafa3c498 symbol_id: 0x083d52da @@ -380063,6 +387995,7 @@ interface { symbol_id: 0x879ed3f8 symbol_id: 0xd7bee2cf symbol_id: 0x7826a8f0 + symbol_id: 0xb701b4b1 symbol_id: 0x19652f5f symbol_id: 0x78ae9c1c symbol_id: 0x3e16ebdf @@ -380247,6 +388180,7 @@ interface { symbol_id: 0x07715f1a symbol_id: 0x2c0dfd47 symbol_id: 0xb3bb06f4 + symbol_id: 0xe7fde0db symbol_id: 0xee139066 symbol_id: 0x613adcb1 symbol_id: 0x370e6f08 @@ -380745,6 +388679,7 @@ interface { symbol_id: 0xc73383c1 symbol_id: 0x0ee6aecf symbol_id: 0x3c5daf32 + symbol_id: 0xcec28ada symbol_id: 0xbd83f7de symbol_id: 0xb6637ce6 symbol_id: 0x5ce8149d @@ -380785,6 +388720,7 @@ interface { symbol_id: 0xadf1bba5 symbol_id: 0x1a299344 symbol_id: 0xe52a90e5 + symbol_id: 0x87342c78 symbol_id: 0x1f9ceb72 symbol_id: 0x119c23e5 symbol_id: 0x9aea043a @@ -380924,6 +388860,8 @@ interface { symbol_id: 0x1b2f5f11 symbol_id: 0x6746106c symbol_id: 0xc5f22a59 + symbol_id: 0x52f17879 + symbol_id: 0xa84cb89b symbol_id: 0xff4a14be symbol_id: 0x4e60d546 symbol_id: 0x0e6a648c @@ -381001,6 +388939,7 @@ interface { symbol_id: 0x46063085 symbol_id: 0x8ab0e185 symbol_id: 0xbeb6fe53 + symbol_id: 0xf44e0659 symbol_id: 0x9c1bb84e symbol_id: 0xa656e08e symbol_id: 0x4c5f49dc @@ -381026,6 +388965,7 @@ interface { symbol_id: 0xeae01788 symbol_id: 0x84839142 symbol_id: 0xa9c37a1d + symbol_id: 0x2fbecafd symbol_id: 0x49232ca9 symbol_id: 0xec609d3e symbol_id: 0x44f92a6d @@ -381267,6 +389207,7 @@ interface { symbol_id: 0x596b8466 symbol_id: 0xd9f124cf symbol_id: 0xdca2a3c4 + symbol_id: 0x6d579aaf symbol_id: 0xe4059d72 symbol_id: 0x842903b7 symbol_id: 0x354e8904 @@ -381346,6 +389287,7 @@ interface { symbol_id: 0x55bed293 symbol_id: 0xc1add767 symbol_id: 0x9a02788c + symbol_id: 0x760780be symbol_id: 0xc258a893 symbol_id: 0x2ce3e2c6 symbol_id: 0x04096200 @@ -381547,6 +389489,7 @@ interface { symbol_id: 0xe2b0e5a5 symbol_id: 0xb8036e9c symbol_id: 0xe36e392a + symbol_id: 0x05a46d27 symbol_id: 0xe3de7018 symbol_id: 0x26fb2401 symbol_id: 0xec79392b @@ -381653,6 +389596,7 @@ interface { symbol_id: 0xdc14ff55 symbol_id: 0x2616989d symbol_id: 0xc922a019 + symbol_id: 0x7490fd3a symbol_id: 0xfdf9f7ee symbol_id: 0x3c537500 symbol_id: 0x1b814fa6 @@ -381706,6 +389650,7 @@ interface { symbol_id: 0x7cd4622d symbol_id: 0x5dfeb70f symbol_id: 0x01a00013 + symbol_id: 0xc3f9d559 symbol_id: 0xb9d0b3a8 symbol_id: 0x96b46225 symbol_id: 0x35a3d772 @@ -381731,6 +389676,7 @@ interface { symbol_id: 0xbe6406c3 symbol_id: 0x9c6c58ea symbol_id: 0x2fefe933 + symbol_id: 0x1c994923 symbol_id: 0xec861eec symbol_id: 0x5810bdc3 symbol_id: 0x3cbd6214 @@ -382257,6 +390203,7 @@ interface { symbol_id: 0x6cde79b4 symbol_id: 0xd68bae0f symbol_id: 0x2b688ec7 + symbol_id: 0x700d1b28 symbol_id: 0x248856c2 symbol_id: 0x6ff192fd symbol_id: 0x3deea824 @@ -382287,6 +390234,7 @@ interface { symbol_id: 0xc91eefc6 symbol_id: 0x7511baca symbol_id: 0x29553efc + symbol_id: 0x90e2334a symbol_id: 0xfd198070 symbol_id: 0x4a781b7f symbol_id: 0xc92def38 @@ -382308,6 +390256,7 @@ interface { symbol_id: 0x2804801a symbol_id: 0x4893b166 symbol_id: 0xbf6a903f + symbol_id: 0xfd977d86 symbol_id: 0xddb9ed35 symbol_id: 0x21d8367b symbol_id: 0xce959ab5 @@ -382751,6 +390700,8 @@ interface { symbol_id: 0x4c674d1e symbol_id: 0x1f9b728b symbol_id: 0x99a17453 + symbol_id: 0xd7393cd7 + symbol_id: 0xbf61e6bf symbol_id: 0x675bcd74 symbol_id: 0x35280a80 symbol_id: 0x03fd01bd @@ -382762,6 +390713,7 @@ interface { symbol_id: 0x83c5422c symbol_id: 0xff4bd5dc symbol_id: 0x1adae35c + symbol_id: 0xfc7ac85d symbol_id: 0x6aca9744 symbol_id: 0x6b08a95c symbol_id: 0x238c5442 @@ -382778,6 +390730,7 @@ interface { symbol_id: 0x8a143ba0 symbol_id: 0x47548cf4 symbol_id: 0xfa53e7be + symbol_id: 0x257f1e06 symbol_id: 0x5e6e4a8e symbol_id: 0x32ffb327 symbol_id: 0x3491ba62 @@ -382809,12 +390762,15 @@ interface { symbol_id: 0x2c61b358 symbol_id: 0x352feb2c symbol_id: 0xf21d6619 + symbol_id: 0x11b8b797 + symbol_id: 0x19ea44b2 symbol_id: 0xba998ee2 symbol_id: 0x74420600 symbol_id: 0x92edca7e symbol_id: 0xb2f7eb17 symbol_id: 0x8eb5b50d symbol_id: 0x1f5649eb + symbol_id: 0x31ef5894 symbol_id: 0x0af8ff72 symbol_id: 0xe3ec4d34 symbol_id: 0xf23ecd34 @@ -382987,6 +390943,7 @@ interface { symbol_id: 0xeffe0f16 symbol_id: 0x7b771682 symbol_id: 0x39362be4 + symbol_id: 0xeab36c96 symbol_id: 0xba26b6a3 symbol_id: 0xfdaa1c0d symbol_id: 0xe86ce747 @@ -383049,6 +391006,7 @@ interface { symbol_id: 0xf4594c32 symbol_id: 0xa33694f6 symbol_id: 0x7e8e12de + symbol_id: 0x9ae5b413 symbol_id: 0xe69a5898 symbol_id: 0xbd07e567 symbol_id: 0xf304733e @@ -383166,6 +391124,12 @@ interface { symbol_id: 0xd6adc7e6 symbol_id: 0xcc386657 symbol_id: 0xeb0e3e9b + symbol_id: 0x5f96413a + symbol_id: 0x34a062e9 + symbol_id: 0x97edc1c5 + symbol_id: 0xdb8e8104 + symbol_id: 0xe6a46ba8 + symbol_id: 0xefab10bf symbol_id: 0x857e5dc9 symbol_id: 0x85459353 symbol_id: 0x1ecfd7d9 @@ -383295,6 +391259,7 @@ interface { symbol_id: 0x677985f3 symbol_id: 0x6c2259cd symbol_id: 0xacf009d6 + symbol_id: 0xcbabaff3 symbol_id: 0x0b4dd20d symbol_id: 0xae3ac3f6 symbol_id: 0xa7c71d5a @@ -383323,6 +391288,7 @@ interface { symbol_id: 0x604f0f0b symbol_id: 0x5b997ef3 symbol_id: 0x6a405f9b + symbol_id: 0x3ed74db1 symbol_id: 0x8c3087ea symbol_id: 0x4e9dfcab symbol_id: 0x4a92dfd1 @@ -383691,6 +391657,7 @@ interface { symbol_id: 0xbc49d007 symbol_id: 0xa20893c4 symbol_id: 0xf13a39cb + symbol_id: 0xedbb00b2 symbol_id: 0x34af8a35 symbol_id: 0x3cc50b4b symbol_id: 0x85997d50 @@ -383741,6 +391708,7 @@ interface { symbol_id: 0xdc3fca57 symbol_id: 0x23051526 symbol_id: 0xad9b8781 + symbol_id: 0x5c266e47 symbol_id: 0xd40ec4d6 symbol_id: 0xcd00be9c symbol_id: 0xef302a24 @@ -384107,6 +392075,7 @@ interface { symbol_id: 0xb73c4905 symbol_id: 0xbb650596 symbol_id: 0x0fc8c78d + symbol_id: 0xe8e0ea6a symbol_id: 0xa5d58813 symbol_id: 0xde6620d5 symbol_id: 0xdf18b1a9 diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index a3b16126c54e..d8c9ffac57b6 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -42,6 +42,7 @@ blocking_notifier_chain_register blocking_notifier_chain_unregister bpf_trace_run1 + bpf_trace_run10 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -325,6 +326,7 @@ fd_install fget _find_first_bit + _find_first_zero_bit _find_last_bit _find_next_and_bit _find_next_bit @@ -701,6 +703,7 @@ ___ratelimit raw_notifier_call_chain raw_notifier_chain_register + raw_notifier_chain_unregister _raw_read_lock _raw_read_unlock _raw_spin_lock @@ -1025,7 +1028,6 @@ ww_mutex_unlock # required by cfg80211.ko - bpf_trace_run10 csum_partial debugfs_rename __dev_change_net_namespace @@ -1227,8 +1229,10 @@ match_string memory_read_from_buffer migrate_swap + perf_event_create_kernel_counter + perf_event_enable + perf_event_read_local pick_highest_pushable_task - raw_notifier_chain_unregister raw_spin_rq_lock_nested raw_spin_rq_unlock _raw_write_trylock @@ -1272,6 +1276,7 @@ __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_wakeup_ilocked + __traceiter_android_vh_jiffies_update __traceiter_android_vh_scheduler_tick __traceiter_android_vh_syscall_prctl_finished __traceiter_binder_transaction_received @@ -1302,6 +1307,7 @@ __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_wakeup_ilocked + __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_syscall_prctl_finished __tracepoint_binder_transaction_received @@ -2048,6 +2054,9 @@ # required by scsc_wlan.ko arp_tbl + __cpuhp_remove_state + __cpuhp_state_add_instance + __cpuhp_state_remove_instance dev_addr_mod dev_alloc_name __dev_queue_xmit @@ -2056,6 +2065,7 @@ dql_reset dst_release ether_setup + __find_nth_bit for_each_kernel_tracepoint in4_pton in6_pton @@ -2200,7 +2210,6 @@ drm_syncobj_get_handle drm_syncobj_replace_fence __fdget - _find_first_zero_bit __folio_put get_random_u32 __get_task_comm @@ -2261,7 +2270,6 @@ __traceiter_gpu_mem_total __tracepoint_android_vh_meminfo_proc_show __tracepoint_gpu_mem_total - ttm_bo_eviction_valuable ttm_bo_init_reserved ttm_bo_kmap ttm_bo_kunmap @@ -2304,6 +2312,7 @@ ttm_resource_manager_usage ttm_sg_tt_init ttm_tt_fini + ttm_tt_unpopulate vm_get_page_prot __wake_up_locked ww_mutex_lock_interruptible @@ -2575,5 +2584,6 @@ __skb_get_hash __skb_gso_segment tasklet_unlock_wait + ttm_bo_eviction_valuable ufshcd_mcq_poll_cqe_nolock unregister_netdevice_many diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index ebe4fa10620a..d14cade9b61a 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -35,6 +35,7 @@ class_create_file_ns class_find_device class_remove_file_ns + cleancache_register_ops __const_udelay copy_from_kernel_nofault cpu_hwcaps @@ -99,6 +100,8 @@ __free_pages free_pages free_pages_exact + fsnotify + __fsnotify_parent generic_file_read_iter generic_mii_ioctl generic_perform_write @@ -149,6 +152,8 @@ kasan_flag_enabled kasprintf kernel_cpustat + kernel_neon_begin + kernel_neon_end kernfs_find_and_get_ns kfree __kfree_skb @@ -164,6 +169,7 @@ kobject_put kstrdup kstrtoint + kstrtos16 kstrtouint kstrtoull kthread_create_on_node @@ -257,6 +263,7 @@ register_reboot_notifier register_restart_handler register_syscore_ops + regulator_get_current_limit remove_cpu rtc_class_open rtc_read_time @@ -277,6 +284,9 @@ single_open single_release skb_copy_ubufs + smpboot_register_percpu_thread + smpboot_unregister_percpu_thread + snd_soc_add_card_controls snd_soc_find_dai snd_soc_info_volsw_sx snd_soc_put_volsw_sx @@ -285,6 +295,7 @@ sprintf sscanf __stack_chk_fail + stack_trace_save_regs stpcpy strcmp strim @@ -306,6 +317,12 @@ system_long_wq system_unbound_wq sys_tz + tcp_register_congestion_control + tcp_reno_cong_avoid + tcp_reno_ssthresh + tcp_reno_undo_cwnd + tcp_slow_start + tcp_unregister_congestion_control time64_to_tm __traceiter_android_rvh_arm64_serror_panic __traceiter_android_rvh_die_kernel_fault @@ -339,6 +356,7 @@ __traceiter_android_vh_try_to_freeze_todo __traceiter_android_vh_try_to_freeze_todo_unfrozen __traceiter_android_vh_watchdog_timer_softlockup + __traceiter_android_vh_wq_lockup_pool __traceiter_block_rq_insert __traceiter_console __traceiter_hrtimer_expire_entry @@ -380,6 +398,7 @@ __tracepoint_android_vh_try_to_freeze_todo __tracepoint_android_vh_try_to_freeze_todo_unfrozen __tracepoint_android_vh_watchdog_timer_softlockup + __tracepoint_android_vh_wq_lockup_pool __tracepoint_block_rq_insert __tracepoint_console __tracepoint_hrtimer_expire_entry @@ -399,6 +418,7 @@ up_write usb_alloc_dev usb_gstrings_attach + usb_set_configuration usbnet_get_endpoints usbnet_link_change usb_set_device_state diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index ac16191a3545..478cb5cab475 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -822,6 +822,7 @@ flush_delayed_work flush_work __flush_workqueue + __folio_put fortify_panic fput free_candev @@ -969,7 +970,9 @@ i2c_smbus_read_i2c_block_data i2c_smbus_write_byte i2c_smbus_write_byte_data + __i2c_smbus_xfer i2c_smbus_xfer + __i2c_transfer i2c_transfer i2c_transfer_buffer_flags i2c_unregister_device @@ -1143,6 +1146,7 @@ kstrtoull kthread_bind kthread_create_on_node + kthread_freezable_should_stop kthread_park kthread_parkme kthread_should_park @@ -1324,6 +1328,9 @@ nsecs_to_jiffies ns_to_timespec64 __num_online_cpus + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read nvmem_cell_read_u32 nvmem_cell_read_u64 nvmem_device_read @@ -1377,6 +1384,7 @@ of_gen_pool_get of_get_child_by_name of_get_compatible_child + of_get_cpu_node of_get_display_timing of_get_i2c_adapter_by_node of_get_mac_address @@ -1442,6 +1450,8 @@ of_usb_update_otg_caps oops_in_progress open_candev + page_pinner_inited + __page_pinner_put_page page_pool_alloc_pages page_pool_create page_pool_destroy @@ -1586,6 +1596,7 @@ platform_irqchip_probe platform_irq_count platform_msi_create_irq_domain + pm_genpd_add_subdomain pm_genpd_init pm_genpd_remove pm_genpd_remove_device @@ -1597,6 +1608,7 @@ pm_runtime_forbid pm_runtime_force_resume pm_runtime_force_suspend + pm_runtime_get_if_active __pm_runtime_idle pm_runtime_no_callbacks __pm_runtime_resume @@ -1796,10 +1808,14 @@ rtc_time64_to_tm rtc_tm_to_time64 rtc_update_irq + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock rtnl_is_locked rtnl_lock rtnl_unlock sched_clock + sched_setattr_nocheck sched_set_fifo_low schedule schedule_hrtimeout @@ -2248,6 +2264,7 @@ __v4l2_device_register_subdev_nodes v4l2_device_unregister v4l2_device_unregister_subdev + v4l2_enum_dv_timings_cap v4l2_event_dequeue v4l2_event_pending v4l2_event_queue @@ -2298,6 +2315,7 @@ v4l2_m2m_unregister_media_controller v4l2_m2m_update_start_streaming_state v4l2_m2m_update_stop_streaming_state + v4l2_match_dv_timings v4l2_s_parm_cap v4l2_src_change_event_subscribe v4l2_subdev_call_wrappers @@ -2414,6 +2432,7 @@ xdp_do_redirect xdp_master_redirect xdp_return_frame + xdp_return_frame_rx_napi xdp_rxq_info_is_reg __xdp_rxq_info_reg xdp_rxq_info_reg_mem_model diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 9a933b3f74c6..bac4ddf87c67 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -416,6 +416,7 @@ device_release_driver device_remove_bin_file device_remove_file + device_remove_file_self device_rename __device_reset device_set_of_node_from_dev @@ -429,6 +430,22 @@ _dev_info __dev_kfree_skb_any __dev_kfree_skb_irq + devlink_alloc_ns + devlink_flash_update_status_notify + devlink_fmsg_binary_pair_nest_end + devlink_fmsg_binary_pair_nest_start + devlink_fmsg_binary_put + devlink_free + devlink_health_report + devlink_health_reporter_create + devlink_health_reporter_destroy + devlink_health_reporter_priv + devlink_health_reporter_state_update + devlink_priv + devlink_region_create + devlink_region_destroy + devlink_register + devlink_unregister dev_load devm_add_action __devm_alloc_percpu diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index e06e98d72020..ee42a50dcbdb 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -86,6 +86,7 @@ tcf_exts_validate tcf_queue_work __traceiter_android_rvh_post_init_entity_util_avg + __traceiter_android_rvh_rtmutex_force_update __traceiter_android_vh_account_process_tick_gran __traceiter_android_vh_account_task_time __traceiter_android_vh_do_futex @@ -99,11 +100,6 @@ __traceiter_android_vh_record_pcpu_rwsem_starttime __traceiter_android_vh_record_rtmutex_lock_starttime __traceiter_android_vh_record_rwsem_lock_starttime - __tracepoint_android_vh_record_mutex_lock_starttime - __tracepoint_android_vh_record_pcpu_rwsem_starttime - __tracepoint_android_vh_record_rtmutex_lock_starttime - __tracepoint_android_vh_record_rwsem_lock_starttime - __trace_puts __traceiter_android_vh_alter_mutex_list_add __traceiter_android_vh_binder_free_proc __traceiter_android_vh_binder_has_work_ilocked @@ -121,8 +117,11 @@ __traceiter_android_vh_binder_thread_release __traceiter_android_vh_binder_wait_for_work __traceiter_android_vh_cgroup_set_task + __traceiter_android_vh_check_folio_look_around_ref __traceiter_android_vh_dup_task_struct __traceiter_android_vh_exit_signal + __traceiter_android_vh_look_around + __traceiter_android_vh_look_around_migrate_folio __traceiter_android_vh_mem_cgroup_id_remove __traceiter_android_vh_mem_cgroup_css_offline __traceiter_android_vh_mem_cgroup_css_online @@ -136,6 +135,7 @@ __traceiter_android_vh_cleanup_old_buffers_bypass __traceiter_android_vh_dm_bufio_shrink_scan_bypass __traceiter_android_vh_mutex_unlock_slowpath + __traceiter_android_vh_rtmutex_waiter_prio __traceiter_android_vh_rwsem_can_spin_on_owner __traceiter_android_vh_rwsem_opt_spin_finish __traceiter_android_vh_rwsem_opt_spin_start @@ -143,6 +143,7 @@ __traceiter_android_vh_sched_stat_runtime_rt __traceiter_android_vh_shrink_node_memcgs __traceiter_android_vh_sync_txn_recvd + __traceiter_android_vh_task_blocks_on_rtmutex __traceiter_block_bio_queue __traceiter_block_getrq __traceiter_block_rq_complete @@ -156,7 +157,9 @@ __traceiter_sched_stat_wait __traceiter_sched_waking __traceiter_task_rename + __traceiter_android_vh_test_clear_look_around_ref __tracepoint_android_rvh_post_init_entity_util_avg + __tracepoint_android_rvh_rtmutex_force_update __tracepoint_android_vh_account_process_tick_gran __tracepoint_android_vh_account_task_time __tracepoint_android_vh_alter_mutex_list_add @@ -176,6 +179,7 @@ __tracepoint_android_vh_binder_thread_release __tracepoint_android_vh_binder_wait_for_work __tracepoint_android_vh_cgroup_set_task + __tracepoint_android_vh_check_folio_look_around_ref __tracepoint_android_vh_do_futex __tracepoint_android_vh_dup_task_struct __tracepoint_android_vh_exit_signal @@ -191,6 +195,8 @@ __tracepoint_android_vh_futex_wake_traverse_plist __tracepoint_android_vh_futex_wake_up_q_finish __tracepoint_android_vh_irqtime_account_process_tick + __tracepoint_android_vh_look_around + __tracepoint_android_vh_look_around_migrate_folio __tracepoint_android_vh_mutex_can_spin_on_owner __tracepoint_android_vh_mutex_opt_spin_finish __tracepoint_android_vh_mutex_opt_spin_start @@ -198,6 +204,11 @@ __tracepoint_android_vh_cleanup_old_buffers_bypass __tracepoint_android_vh_dm_bufio_shrink_scan_bypass __tracepoint_android_vh_mutex_unlock_slowpath + __tracepoint_android_vh_record_mutex_lock_starttime + __tracepoint_android_vh_record_pcpu_rwsem_starttime + __tracepoint_android_vh_record_rtmutex_lock_starttime + __tracepoint_android_vh_record_rwsem_lock_starttime + __tracepoint_android_vh_rtmutex_waiter_prio __tracepoint_android_vh_rwsem_can_spin_on_owner __tracepoint_android_vh_rwsem_opt_spin_finish __tracepoint_android_vh_rwsem_opt_spin_start @@ -205,6 +216,8 @@ __tracepoint_android_vh_sched_stat_runtime_rt __tracepoint_android_vh_shrink_node_memcgs __tracepoint_android_vh_sync_txn_recvd + __tracepoint_android_vh_task_blocks_on_rtmutex + __tracepoint_android_vh_test_clear_look_around_ref __tracepoint_block_bio_queue __tracepoint_block_getrq __tracepoint_block_rq_complete @@ -218,6 +231,7 @@ __tracepoint_sched_stat_wait __tracepoint_sched_waking __tracepoint_task_rename + __trace_puts try_to_free_mem_cgroup_pages typec_mux_get_drvdata unregister_memory_notifier @@ -227,3 +241,4 @@ wait_for_completion_killable_timeout wakeup_source_remove wq_worker_comm + zero_pfn diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 4ae71b6faf29..4fe7be5b8bbe 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -2290,6 +2290,9 @@ __xfrm_state_destroy xfrm_state_lookup_byspi xfrm_stateonly_find + xhci_address_device + xhci_bus_resume + xhci_bus_suspend xhci_gen_setup xhci_init_driver xhci_resume diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index f1155a5fb2b8..fcebe5582b85 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1544,6 +1544,7 @@ iommu_group_get_iommudata iommu_group_put iommu_group_ref_get + iommu_group_remove_device iommu_group_set_iommudata iommu_iova_to_phys iommu_map @@ -3647,6 +3648,7 @@ ufshcd_hold ufshcd_mcq_config_esi ufshcd_mcq_enable_esi + ufshcd_mcq_poll_cqe_lock ufshcd_mcq_poll_cqe_nolock ufshcd_mcq_write_cqis ufshcd_pltfrm_init diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 867436314590..ac818f2e495f 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -574,6 +574,8 @@ skb_unlink sk_error_report sk_free + snd_ctl_find_id + snd_info_get_line snprintf sock_alloc_send_pskb sock_create_kern @@ -1578,6 +1580,11 @@ spi_controller_suspend spi_finalize_current_transfer +# required by sprd-audio-codec.ko + regulator_register + snd_pcm_rate_bit_to_rate + snd_pcm_rate_to_rate_bit + # required by sprd-bc1p2.ko kthread_flush_worker __kthread_init_worker @@ -1662,14 +1669,18 @@ drm_poll drm_read drm_release + drm_send_event_timestamp_locked drm_vblank_init mipi_dsi_host_register mipi_dsi_host_unregister + mipi_dsi_set_maximum_return_packet_size of_drm_find_bridge + of_get_drm_display_mode of_graph_get_port_by_id of_graph_get_remote_node __platform_register_drivers platform_unregister_drivers + regmap_get_reg_stride # required by sprd-iommu.ko iommu_device_register @@ -1761,6 +1772,9 @@ devm_watchdog_register_device watchdog_init_timeout +# required by sprdbt_tty.ko + tty_port_link_device + # required by sysdump.ko android_rvh_probe_register input_close_device diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 69d634eb4fa5..b17c82fe8684 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -419,6 +419,7 @@ __traceiter_android_vh_try_to_freeze_todo __traceiter_android_vh_try_to_freeze_todo_unfrozen __traceiter_android_vh_try_to_unmap_one + __traceiter_android_vh_tune_scan_type __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_clock_scaling __traceiter_android_vh_ufs_compl_command @@ -588,6 +589,7 @@ __tracepoint_android_vh_try_to_unmap_one __tracepoint_android_vh_try_to_freeze_todo __tracepoint_android_vh_try_to_freeze_todo_unfrozen + __tracepoint_android_vh_tune_scan_type __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_clock_scaling __tracepoint_android_vh_ufs_compl_command diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 8209fb5955f2..5a0852cf19f6 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -218,6 +218,12 @@ kernfs_path_from_node blkcg_activate_policy +#required by mq-deadline module + blk_mq_debugfs_rq_show + seq_list_start + seq_list_next + __blk_mq_debugfs_rq_show + #required by metis.ko module __traceiter_android_vh_rwsem_read_wait_start __traceiter_android_vh_rwsem_write_wait_start @@ -310,3 +316,19 @@ # required by SAGT module __traceiter_android_rvh_before_do_sched_yield __tracepoint_android_rvh_before_do_sched_yield + +#required by minetwork.ko + sock_wake_async + bpf_map_put + bpf_map_inc + __dev_direct_xmit + napi_busy_loop + int_active_memcg + bpf_redirect_info + dma_need_sync + page_pool_put_page_bulk + build_skb_around + +#required by xm_ispv4_pcie.ko + pci_ioremap_bar + pci_disable_pcie_error_reporting diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 97fce7386b00..d95d82abdf29 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -28,6 +28,7 @@ config ALPHA select GENERIC_SMP_IDLE_THREAD select HAVE_ARCH_AUDITSYSCALL select HAVE_MOD_ARCH_SPECIFIC + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select ODD_RT_SIGACTION select OLD_SIGSUSPEND diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index ef427a6bdd1a..2b49aa94e4de 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -119,20 +119,12 @@ do_page_fault(unsigned long address, unsigned long mmcsr, flags |= FAULT_FLAG_USER; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; + goto bad_area_nosemaphore; /* Ok, we have a good vm_area for this memory access, so we can handle it. */ - good_area: si_code = SEGV_ACCERR; if (cause < 0) { if (!(vma->vm_flags & VM_EXEC)) @@ -189,6 +181,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, bad_area: mmap_read_unlock(mm); + bad_area_nosemaphore: if (user_mode(regs)) goto do_sigsegv; diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index d9a13ccf89a3..cb1074f74c3f 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -41,6 +41,7 @@ config ARC select HAVE_PERF_EVENTS select HAVE_SYSCALL_TRACEPOINTS select IRQ_DOMAIN + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select OF select OF_EARLY_FLATTREE diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c index 5ca59a482632..f59e722d147f 100644 --- a/arch/arc/mm/fault.c +++ b/arch/arc/mm/fault.c @@ -113,15 +113,9 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (unlikely(address < vma->vm_start)) { - if (!(vma->vm_flags & VM_GROWSDOWN) || expand_stack(vma, address)) - goto bad_area; - } + goto bad_area_nosemaphore; /* * vm_area is good, now check permissions for this memory access @@ -161,6 +155,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: /* * Major/minor page fault accounting * (in case of retry we only land here once) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a08c9d092a33..0202e48e7a20 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -122,6 +122,7 @@ config ARM select HAVE_UID16 select HAVE_VIRT_CPU_ACCOUNTING_GEN select IRQ_FORCED_THREADING + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_REL select NEED_DMA_MAP_STATE select OF_EARLY_FLATTREE if OF diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index de988cba9a4b..b0db85310331 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -231,37 +231,11 @@ static inline bool is_permission_fault(unsigned int fsr) return false; } -static vm_fault_t __kprobes -__do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int flags, - unsigned long vma_flags, struct pt_regs *regs) -{ - struct vm_area_struct *vma = find_vma(mm, addr); - if (unlikely(!vma)) - return VM_FAULT_BADMAP; - - if (unlikely(vma->vm_start > addr)) { - if (!(vma->vm_flags & VM_GROWSDOWN)) - return VM_FAULT_BADMAP; - if (addr < FIRST_USER_ADDRESS) - return VM_FAULT_BADMAP; - if (expand_stack(vma, addr)) - return VM_FAULT_BADMAP; - } - - /* - * ok, we have a good vm_area for this memory access, check the - * permissions on the VMA allow for the fault which occurred. - */ - if (!(vma->vm_flags & vma_flags)) - return VM_FAULT_BADACCESS; - - return handle_mm_fault(vma, addr & PAGE_MASK, flags, regs); -} - static int __kprobes do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) { struct mm_struct *mm = current->mm; + struct vm_area_struct *vma; int sig, code; vm_fault_t fault; unsigned int flags = FAULT_FLAG_DEFAULT; @@ -300,31 +274,21 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); - /* - * As per x86, we may deadlock here. However, since the kernel only - * validly references user space from well defined areas of the code, - * we can bug out early if this is from code which shouldn't. - */ - if (!mmap_read_trylock(mm)) { - if (!user_mode(regs) && !search_exception_tables(regs->ARM_pc)) - goto no_context; retry: - mmap_read_lock(mm); - } else { - /* - * The above down_read_trylock() might have succeeded in - * which case, we'll have missed the might_sleep() from - * down_read() - */ - might_sleep(); -#ifdef CONFIG_DEBUG_VM - if (!user_mode(regs) && - !search_exception_tables(regs->ARM_pc)) - goto no_context; -#endif + vma = lock_mm_and_find_vma(mm, addr, regs); + if (unlikely(!vma)) { + fault = VM_FAULT_BADMAP; + goto bad_area; } - fault = __do_page_fault(mm, addr, flags, vm_flags, regs); + /* + * ok, we have a good vm_area for this memory access, check the + * permissions on the VMA allow for the fault which occurred. + */ + if (!(vma->vm_flags & vm_flags)) + fault = VM_FAULT_BADACCESS; + else + fault = handle_mm_fault(vma, addr & PAGE_MASK, flags, regs); /* If we need to retry but a fatal signal is pending, handle the * signal first. We do not need to release the mmap_lock because @@ -355,6 +319,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) if (likely(!(fault & (VM_FAULT_ERROR | VM_FAULT_BADMAP | VM_FAULT_BADACCESS)))) return 0; +bad_area: /* * If we are in kernel mode at this point, we * have no context to handle this fault with. diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index bf11f89de29a..7dafeacab872 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -216,6 +216,7 @@ config ARM64 select IRQ_DOMAIN select IRQ_FORCED_THREADING select KASAN_VMALLOC if KASAN + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select NEED_DMA_MAP_STATE select NEED_SG_DMA_LENGTH diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 16abb1e0de08..48e20ad5ff38 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -39,7 +39,12 @@ static bool (*default_trap_handler)(struct kvm_cpu_context *host_ctxt); int __pkvm_register_host_smc_handler(bool (*cb)(struct kvm_cpu_context *)) { - return cmpxchg(&default_host_smc_handler, NULL, cb) ? -EBUSY : 0; + /* + * Paired with smp_load_acquire(&default_host_smc_handler) in + * handle_host_smc(). Ensure memory stores happening during a pKVM module + * init are observed before executing the callback. + */ + return cmpxchg_release(&default_host_smc_handler, NULL, cb) ? -EBUSY : 0; } int __pkvm_register_default_trap_handler(bool (*cb)(struct kvm_cpu_context *)) @@ -1376,7 +1381,7 @@ static void handle_host_smc(struct kvm_cpu_context *host_ctxt) handled = kvm_host_psci_handler(host_ctxt); if (!handled) handled = kvm_host_ffa_handler(host_ctxt); - if (!handled && READ_ONCE(default_host_smc_handler)) + if (!handled && smp_load_acquire(&default_host_smc_handler)) handled = default_host_smc_handler(host_ctxt); if (!handled) __kvm_hyp_host_forward_smc(host_ctxt); diff --git a/arch/arm64/kvm/hyp/nvhe/psci-relay.c b/arch/arm64/kvm/hyp/nvhe/psci-relay.c index d4825b6140ba..f8db5445b530 100644 --- a/arch/arm64/kvm/hyp/nvhe/psci-relay.c +++ b/arch/arm64/kvm/hyp/nvhe/psci-relay.c @@ -28,14 +28,19 @@ struct kvm_host_psci_config __ro_after_init kvm_host_psci_config; static void (*pkvm_psci_notifier)(enum pkvm_psci_notification, struct kvm_cpu_context *); static void pkvm_psci_notify(enum pkvm_psci_notification notif, struct kvm_cpu_context *host_ctxt) { - if (READ_ONCE(pkvm_psci_notifier)) + if (smp_load_acquire(&pkvm_psci_notifier)) pkvm_psci_notifier(notif, host_ctxt); } #ifdef CONFIG_MODULES int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *)) { - return cmpxchg(&pkvm_psci_notifier, NULL, cb) ? -EBUSY : 0; + /* + * Paired with smp_load_acquire(&pkvm_psci_notifier) in + * pkvm_psci_notify(). Ensure memory stores hapenning during a pKVM module + * init are observed before executing the callback. + */ + return cmpxchg_release(&pkvm_psci_notifier, NULL, cb) ? -EBUSY : 0; } #endif diff --git a/arch/arm64/kvm/hyp/nvhe/serial.c b/arch/arm64/kvm/hyp/nvhe/serial.c index 0b2cf3b6d6a5..475ebf4ba7de 100644 --- a/arch/arm64/kvm/hyp/nvhe/serial.c +++ b/arch/arm64/kvm/hyp/nvhe/serial.c @@ -35,7 +35,8 @@ static inline void __hyp_putx4n(unsigned long x, int n) static inline bool hyp_serial_enabled(void) { - return !!READ_ONCE(__hyp_putc); + /* Paired with __pkvm_register_serial_driver()'s cmpxchg */ + return !!smp_load_acquire(&__hyp_putc); } void hyp_puts(const char *s) @@ -64,5 +65,10 @@ void hyp_putc(char c) int __pkvm_register_serial_driver(void (*cb)(char)) { - return cmpxchg(&__hyp_putc, NULL, cb) ? -EBUSY : 0; + /* + * Paired with smp_load_acquire(&__hyp_putc) in + * hyp_serial_enabled(). Ensure memory stores hapenning during a pKVM + * module init are observed before executing the callback. + */ + return cmpxchg_release(&__hyp_putc, NULL, cb) ? -EBUSY : 0; } diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 5003d1309937..9970a4785819 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -502,27 +502,14 @@ static void do_bad_area(unsigned long far, unsigned long esr, #define VM_FAULT_BADMAP ((__force vm_fault_t)0x010000) #define VM_FAULT_BADACCESS ((__force vm_fault_t)0x020000) -static vm_fault_t __do_page_fault(struct mm_struct *mm, unsigned long addr, +static vm_fault_t __do_page_fault(struct mm_struct *mm, + struct vm_area_struct *vma, unsigned long addr, unsigned int mm_flags, unsigned long vm_flags, struct pt_regs *regs) { - struct vm_area_struct *vma = find_vma(mm, addr); - - if (unlikely(!vma)) - return VM_FAULT_BADMAP; - /* * Ok, we have a good vm_area for this memory access, so we can handle * it. - */ - if (unlikely(vma->vm_start > addr)) { - if (!(vma->vm_flags & VM_GROWSDOWN)) - return VM_FAULT_BADMAP; - if (expand_stack(vma, addr)) - return VM_FAULT_BADMAP; - } - - /* * Check that the permissions on the VMA allow for the fault which * occurred. */ @@ -554,9 +541,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, unsigned long vm_flags; unsigned int mm_flags = FAULT_FLAG_DEFAULT; unsigned long addr = untagged_addr(far); -#ifdef CONFIG_PER_VMA_LOCK struct vm_area_struct *vma; -#endif if (kprobe_page_fault(regs, esr)) return 0; @@ -614,7 +599,6 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); -#ifdef CONFIG_PER_VMA_LOCK if (!(mm_flags & FAULT_FLAG_USER)) goto lock_mmap; @@ -627,7 +611,8 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, goto lock_mmap; } fault = handle_mm_fault(vma, addr, mm_flags | FAULT_FLAG_VMA_LOCK, regs); - vma_end_read(vma); + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) + vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { count_vm_vma_lock_event(VMA_LOCK_SUCCESS); @@ -642,32 +627,15 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, return 0; } lock_mmap: -#endif /* CONFIG_PER_VMA_LOCK */ - /* - * As per x86, we may deadlock here. However, since the kernel only - * validly references user space from well defined areas of the code, - * we can bug out early if this is from code which shouldn't. - */ - if (!mmap_read_trylock(mm)) { - if (!user_mode(regs) && !search_exception_tables(regs->pc)) - goto no_context; + retry: - mmap_read_lock(mm); - } else { - /* - * The above mmap_read_trylock() might have succeeded in which - * case, we'll have missed the might_sleep() from down_read(). - */ - might_sleep(); -#ifdef CONFIG_DEBUG_VM - if (!user_mode(regs) && !search_exception_tables(regs->pc)) { - mmap_read_unlock(mm); - goto no_context; - } -#endif + vma = lock_mm_and_find_vma(mm, addr, regs); + if (unlikely(!vma)) { + fault = VM_FAULT_BADMAP; + goto done; } - fault = __do_page_fault(mm, addr, mm_flags, vm_flags, regs); + fault = __do_page_fault(mm, vma, addr, mm_flags, vm_flags, regs); /* Quick path to respond to signals */ if (fault_signal_pending(fault, regs)) { @@ -686,9 +654,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, } mmap_read_unlock(mm); -#ifdef CONFIG_PER_VMA_LOCK done: -#endif /* * Handle the "normal" (no error) case first. */ diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig index adee6ab36862..742009123fd5 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -96,6 +96,7 @@ config CSKY select HAVE_RSEQ select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS + select LOCK_MM_AND_FIND_VMA select MAY_HAVE_SPARSE_IRQ select MODULES_USE_ELF_RELA if MODULES select OF diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c index e15f736cca4b..ae9781b7d92e 100644 --- a/arch/csky/mm/fault.c +++ b/arch/csky/mm/fault.c @@ -97,13 +97,12 @@ static inline void mm_fault_error(struct pt_regs *regs, unsigned long addr, vm_f BUG(); } -static inline void bad_area(struct pt_regs *regs, struct mm_struct *mm, int code, unsigned long addr) +static inline void bad_area_nosemaphore(struct pt_regs *regs, struct mm_struct *mm, int code, unsigned long addr) { /* * Something tried to access memory that isn't in our memory map. * Fix it, but check if it's kernel or user first. */ - mmap_read_unlock(mm); /* User mode accesses just cause a SIGSEGV */ if (user_mode(regs)) { do_trap(regs, SIGSEGV, code, addr); @@ -238,20 +237,9 @@ asmlinkage void do_page_fault(struct pt_regs *regs) if (is_write(regs)) flags |= FAULT_FLAG_WRITE; retry: - mmap_read_lock(mm); - vma = find_vma(mm, addr); + vma = lock_mm_and_find_vma(mm, address, regs); if (unlikely(!vma)) { - bad_area(regs, mm, code, addr); - return; - } - if (likely(vma->vm_start <= addr)) - goto good_area; - if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) { - bad_area(regs, mm, code, addr); - return; - } - if (unlikely(expand_stack(vma, addr))) { - bad_area(regs, mm, code, addr); + bad_area_nosemaphore(regs, mm, code, addr); return; } @@ -259,11 +247,11 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * Ok, we have a good vm_area for this memory access, so * we can handle it. */ -good_area: code = SEGV_ACCERR; if (unlikely(access_error(regs, vma))) { - bad_area(regs, mm, code, addr); + mmap_read_unlock(mm); + bad_area_nosemaphore(regs, mm, code, addr); return; } diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index 54eadf265178..6726f4941015 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -28,6 +28,7 @@ config HEXAGON select GENERIC_SMP_IDLE_THREAD select STACKTRACE_SUPPORT select GENERIC_CLOCKEVENTS_BROADCAST + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select GENERIC_CPU_DEVICES select ARCH_WANT_LD_ORPHAN_WARN diff --git a/arch/hexagon/mm/vm_fault.c b/arch/hexagon/mm/vm_fault.c index f73c7cbfe326..583b08727166 100644 --- a/arch/hexagon/mm/vm_fault.c +++ b/arch/hexagon/mm/vm_fault.c @@ -57,21 +57,10 @@ void do_page_fault(unsigned long address, long cause, struct pt_regs *regs) perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - vma = find_vma(mm, address); - if (!vma) - goto bad_area; + vma = lock_mm_and_find_vma(mm, address, regs); + if (unlikely(!vma)) + goto bad_area_nosemaphore; - if (vma->vm_start <= address) - goto good_area; - - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - - if (expand_stack(vma, address)) - goto bad_area; - -good_area: /* Address space is OK. Now check access rights. */ si_code = SEGV_ACCERR; @@ -140,6 +129,7 @@ void do_page_fault(unsigned long address, long cause, struct pt_regs *regs) bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: if (user_mode(regs)) { force_sig_fault(SIGSEGV, si_code, (void __user *)address); return; diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index ef78c2d66cdd..99a09abe1d2c 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -110,10 +110,12 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re * register backing store that needs to expand upwards, in * this case vma will be null, but prev_vma will ne non-null */ - if (( !vma && prev_vma ) || (address < vma->vm_start) ) - goto check_expansion; + if (( !vma && prev_vma ) || (address < vma->vm_start) ) { + vma = expand_stack(mm, address); + if (!vma) + goto bad_area_nosemaphore; + } - good_area: code = SEGV_ACCERR; /* OK, we've got a good vm_area for this memory area. Check the access permissions: */ @@ -174,35 +176,9 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re mmap_read_unlock(mm); return; - check_expansion: - if (!(prev_vma && (prev_vma->vm_flags & VM_GROWSUP) && (address == prev_vma->vm_end))) { - if (!vma) - goto bad_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start) - || REGION_OFFSET(address) >= RGN_MAP_LIMIT) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; - } else { - vma = prev_vma; - if (REGION_NUMBER(address) != REGION_NUMBER(vma->vm_start) - || REGION_OFFSET(address) >= RGN_MAP_LIMIT) - goto bad_area; - /* - * Since the register backing store is accessed sequentially, - * we disallow growing it by more than a page at a time. - */ - if (address > vma->vm_end + PAGE_SIZE - sizeof(long)) - goto bad_area; - if (expand_upwards(vma, address)) - goto bad_area; - } - goto good_area; - bad_area: mmap_read_unlock(mm); + bad_area_nosemaphore: if ((isr & IA64_ISR_SP) || ((isr & IA64_ISR_NA) && (isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH)) { diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig index 903096bd87f8..51d738ac12e5 100644 --- a/arch/loongarch/Kconfig +++ b/arch/loongarch/Kconfig @@ -107,6 +107,7 @@ config LOONGARCH select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP select IRQ_FORCED_THREADING select IRQ_LOONGARCH_CPU + select LOCK_MM_AND_FIND_VMA select MMU_GATHER_MERGE_VMAS if MMU select MODULES_USE_ELF_RELA if MODULES select NEED_PER_CPU_EMBED_FIRST_CHUNK diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c index 1ccd53655cab..b829ab911a17 100644 --- a/arch/loongarch/mm/fault.c +++ b/arch/loongarch/mm/fault.c @@ -166,22 +166,18 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - vma = find_vma(mm, address); - if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (!expand_stack(vma, address)) - goto good_area; + vma = lock_mm_and_find_vma(mm, address, regs); + if (unlikely(!vma)) + goto bad_area_nosemaphore; + goto good_area; + /* * Something tried to access memory that isn't in our memory map.. * Fix it, but check if it's kernel or user first.. */ bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: do_sigsegv(regs, write, address, si_code); return; diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index 4d2837eb3e2a..6f62af8e293a 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c @@ -105,8 +105,9 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, if (address + 256 < rdusp()) goto map_err; } - if (expand_stack(vma, address)) - goto map_err; + vma = expand_stack(mm, address); + if (!vma) + goto map_err_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so @@ -193,10 +194,12 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, goto send_sig; map_err: + mmap_read_unlock(mm); +map_err_nosemaphore: current->thread.signo = SIGSEGV; current->thread.code = SEGV_MAPERR; current->thread.faddr = address; - goto send_sig; + return send_fault_sig(regs); acc_err: current->thread.signo = SIGSEGV; diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c index 5c40c3ebe52f..a409bb3f09f7 100644 --- a/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c @@ -192,8 +192,9 @@ void do_page_fault(struct pt_regs *regs, unsigned long address, && (kernel_mode(regs) || !store_updates_sp(regs))) goto bad_area; } - if (expand_stack(vma, address)) - goto bad_area; + vma = expand_stack(mm, address); + if (!vma) + goto bad_area_nosemaphore; good_area: code = SEGV_ACCERR; diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2f5835e300a8..7b0856c76c9a 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -94,6 +94,7 @@ config MIPS select HAVE_VIRT_CPU_ACCOUNTING_GEN if 64BIT || !SMP select IRQ_FORCED_THREADING select ISA if EISA + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_REL if MODULES select MODULES_USE_ELF_RELA if MODULES && 64BIT select PERF_USE_VMALLOC diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index a27045f5a556..d7878208bd3f 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -99,21 +99,13 @@ static void __do_page_fault(struct pt_regs *regs, unsigned long write, perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; + goto bad_area_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: si_code = SEGV_ACCERR; if (write) { diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig index a582f72104f3..1fb78865a459 100644 --- a/arch/nios2/Kconfig +++ b/arch/nios2/Kconfig @@ -16,6 +16,7 @@ config NIOS2 select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_KGDB select IRQ_DOMAIN + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select OF select OF_EARLY_FLATTREE diff --git a/arch/nios2/mm/fault.c b/arch/nios2/mm/fault.c index edaca0a6c1c1..71939fb28c2e 100644 --- a/arch/nios2/mm/fault.c +++ b/arch/nios2/mm/fault.c @@ -86,27 +86,14 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long cause, perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); - if (!mmap_read_trylock(mm)) { - if (!user_mode(regs) && !search_exception_tables(regs->ea)) - goto bad_area_nosemaphore; retry: - mmap_read_lock(mm); - } - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; + goto bad_area_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: code = SEGV_ACCERR; switch (cause) { diff --git a/arch/openrisc/mm/fault.c b/arch/openrisc/mm/fault.c index b4762d66e9ef..e3ad46d02fbd 100644 --- a/arch/openrisc/mm/fault.c +++ b/arch/openrisc/mm/fault.c @@ -127,8 +127,9 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long address, if (address + PAGE_SIZE < regs->sp) goto bad_area; } - if (expand_stack(vma, address)) - goto bad_area; + vma = expand_stack(mm, address); + if (!vma) + goto bad_area_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index 869204e97ec9..1843b493910c 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c @@ -288,15 +288,19 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, retry: mmap_read_lock(mm); vma = find_vma_prev(mm, address, &prev_vma); - if (!vma || address < vma->vm_start) - goto check_expansion; + if (!vma || address < vma->vm_start) { + if (!prev || !(prev->vm_flags & VM_GROWSUP)) + goto bad_area; + vma = expand_stack(mm, address); + if (!vma) + goto bad_area_nosemaphore; + } + /* * Ok, we have a good vm_area for this memory access. We still need to * check the access permissions. */ -good_area: - if ((vma->vm_flags & acc_type) != acc_type) goto bad_area; @@ -342,17 +346,13 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, mmap_read_unlock(mm); return; -check_expansion: - vma = prev_vma; - if (vma && (expand_stack(vma, address) == 0)) - goto good_area; - /* * Something tried to access memory that isn't in our memory map.. */ bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: if (user_mode(regs)) { int signo, si_code; @@ -444,7 +444,7 @@ handle_nadtlb_fault(struct pt_regs *regs) { unsigned long insn = regs->iir; int breg, treg, xreg, val = 0; - struct vm_area_struct *vma, *prev_vma; + struct vm_area_struct *vma; struct task_struct *tsk; struct mm_struct *mm; unsigned long address; @@ -480,7 +480,7 @@ handle_nadtlb_fault(struct pt_regs *regs) /* Search for VMA */ address = regs->ior; mmap_read_lock(mm); - vma = find_vma_prev(mm, address, &prev_vma); + vma = vma_lookup(mm, address); mmap_read_unlock(mm); /* @@ -489,7 +489,6 @@ handle_nadtlb_fault(struct pt_regs *regs) */ acc_type = (insn & 0x40) ? VM_WRITE : VM_READ; if (vma - && address >= vma->vm_start && (vma->vm_flags & acc_type) == acc_type) val = 1; } diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 2b1141645d9e..6050e6e10d32 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -257,6 +257,7 @@ config PPC select IRQ_DOMAIN select IRQ_FORCED_THREADING select KASAN_VMALLOC if KASAN && MODULES + select LOCK_MM_AND_FIND_VMA select MMU_GATHER_PAGE_SIZE select MMU_GATHER_RCU_TABLE_FREE select MMU_GATHER_MERGE_VMAS diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c index 303869f4855f..6f121a034cef 100644 --- a/arch/powerpc/kvm/book3s_hv_uvmem.c +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c @@ -410,6 +410,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm, ret = H_STATE; break; } + vma_start_write(vma); /* Copy vm_flags to avoid partial modifications in ksm_madvise */ vm_flags = vma->vm_flags; ret = ksm_madvise(vma, vma->vm_start, vma->vm_end, diff --git a/arch/powerpc/mm/book3s64/subpage_prot.c b/arch/powerpc/mm/book3s64/subpage_prot.c index b75a9fb99599..b0eea434ef08 100644 --- a/arch/powerpc/mm/book3s64/subpage_prot.c +++ b/arch/powerpc/mm/book3s64/subpage_prot.c @@ -143,6 +143,7 @@ static int subpage_walk_pmd_entry(pmd_t *pmd, unsigned long addr, static const struct mm_walk_ops subpage_walk_ops = { .pmd_entry = subpage_walk_pmd_entry, + .walk_lock = PGWALK_WRLOCK_VERIFY, }; static void subpage_mark_vma_nohuge(struct mm_struct *mm, unsigned long addr, diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c index 7c507fb48182..f49fd873df8d 100644 --- a/arch/powerpc/mm/copro_fault.c +++ b/arch/powerpc/mm/copro_fault.c @@ -33,19 +33,11 @@ int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea, if (mm->pgd == NULL) return -EFAULT; - mmap_read_lock(mm); - ret = -EFAULT; - vma = find_vma(mm, ea); + vma = lock_mm_and_find_vma(mm, ea, NULL); if (!vma) - goto out_unlock; - - if (ea < vma->vm_start) { - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto out_unlock; - if (expand_stack(vma, ea)) - goto out_unlock; - } + return -EFAULT; + ret = -EFAULT; is_write = dsisr & DSISR_ISSTORE; if (is_write) { if (!(vma->vm_flags & VM_WRITE)) diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 531177a4ee08..b1723094d464 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@ -84,11 +84,6 @@ static int __bad_area(struct pt_regs *regs, unsigned long address, int si_code) return __bad_area_nosemaphore(regs, address, si_code); } -static noinline int bad_area(struct pt_regs *regs, unsigned long address) -{ - return __bad_area(regs, address, SEGV_MAPERR); -} - static noinline int bad_access_pkey(struct pt_regs *regs, unsigned long address, struct vm_area_struct *vma) { @@ -474,7 +469,6 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, if (is_exec) flags |= FAULT_FLAG_INSTRUCTION; -#ifdef CONFIG_PER_VMA_LOCK if (!(flags & FAULT_FLAG_USER)) goto lock_mmap; @@ -494,7 +488,8 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, } fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs); - vma_end_read(vma); + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) + vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { count_vm_vma_lock_event(VMA_LOCK_SUCCESS); @@ -506,7 +501,6 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, return user_mode(regs) ? 0 : SIGBUS; lock_mmap: -#endif /* CONFIG_PER_VMA_LOCK */ /* When running in the kernel we expect faults to occur only to * addresses in user space. All other faults represent errors in the @@ -515,40 +509,12 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, * we will deadlock attempting to validate the fault against the * address space. Luckily the kernel only validly references user * space from well defined areas of code, which are listed in the - * exceptions table. - * - * As the vast majority of faults will be valid we will only perform - * the source reference check when there is a possibility of a deadlock. - * Attempt to lock the address space, if we cannot we then validate the - * source. If this is invalid we can skip the address space check, - * thus avoiding the deadlock. + * exceptions table. lock_mm_and_find_vma() handles that logic. */ - if (unlikely(!mmap_read_trylock(mm))) { - if (!is_user && !search_exception_tables(regs->nip)) - return bad_area_nosemaphore(regs, address); - retry: - mmap_read_lock(mm); - } else { - /* - * The above down_read_trylock() might have succeeded in - * which case we'll have missed the might_sleep() from - * down_read(): - */ - might_sleep(); - } - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (unlikely(!vma)) - return bad_area(regs, address); - - if (unlikely(vma->vm_start > address)) { - if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) - return bad_area(regs, address); - - if (unlikely(expand_stack(vma, address))) - return bad_area(regs, address); - } + return bad_area_nosemaphore(regs, address); if (unlikely(access_pkey_error(is_write, is_exec, (error_code & DSISR_KEYFAULT), vma))) @@ -584,9 +550,7 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address, mmap_read_unlock(current->mm); -#ifdef CONFIG_PER_VMA_LOCK done: -#endif if (unlikely(fault & VM_FAULT_ERROR)) return mm_fault_error(regs, address, fault); diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index a85bbe28dcf4..6a2386996f1f 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -40,6 +40,7 @@ config RISCV select ARCH_SUPPORTS_DEBUG_PAGEALLOC if MMU select ARCH_SUPPORTS_HUGETLBFS if MMU select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU + select ARCH_SUPPORTS_PER_VMA_LOCK if MMU select ARCH_USE_MEMTEST select ARCH_USE_QUEUED_RWLOCKS select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU @@ -114,6 +115,7 @@ config RISCV select HAVE_RSEQ select IRQ_DOMAIN select IRQ_FORCED_THREADING + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA if MODULES select MODULE_SECTIONS if MODULES select OF diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index eb0774d9c03b..34a44febae86 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -83,13 +83,13 @@ static inline void mm_fault_error(struct pt_regs *regs, unsigned long addr, vm_f BUG(); } -static inline void bad_area(struct pt_regs *regs, struct mm_struct *mm, int code, unsigned long addr) +static inline void +bad_area_nosemaphore(struct pt_regs *regs, int code, unsigned long addr) { /* * Something tried to access memory that isn't in our memory map. * Fix it, but check if it's kernel or user first. */ - mmap_read_unlock(mm); /* User mode accesses just cause a SIGSEGV */ if (user_mode(regs)) { do_trap(regs, SIGSEGV, code, addr); @@ -99,6 +99,15 @@ static inline void bad_area(struct pt_regs *regs, struct mm_struct *mm, int code no_context(regs, addr); } +static inline void +bad_area(struct pt_regs *regs, struct mm_struct *mm, int code, + unsigned long addr) +{ + mmap_read_unlock(mm); + + bad_area_nosemaphore(regs, code, addr); +} + static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long addr) { pgd_t *pgd, *pgd_k; @@ -280,24 +289,40 @@ asmlinkage void do_page_fault(struct pt_regs *regs) flags |= FAULT_FLAG_WRITE; else if (cause == EXC_INST_PAGE_FAULT) flags |= FAULT_FLAG_INSTRUCTION; + if (!(flags & FAULT_FLAG_USER)) + goto lock_mmap; + + vma = lock_vma_under_rcu(mm, addr); + if (!vma) + goto lock_mmap; + + if (unlikely(access_error(cause, vma))) { + vma_end_read(vma); + goto lock_mmap; + } + + fault = handle_mm_fault(vma, addr, flags | FAULT_FLAG_VMA_LOCK, regs); + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) + vma_end_read(vma); + + if (!(fault & VM_FAULT_RETRY)) { + count_vm_vma_lock_event(VMA_LOCK_SUCCESS); + goto done; + } + count_vm_vma_lock_event(VMA_LOCK_RETRY); + + if (fault_signal_pending(fault, regs)) { + if (!user_mode(regs)) + no_context(regs, addr); + return; + } +lock_mmap: + retry: - mmap_read_lock(mm); - vma = find_vma(mm, addr); + vma = lock_mm_and_find_vma(mm, addr, regs); if (unlikely(!vma)) { tsk->thread.bad_cause = cause; - bad_area(regs, mm, code, addr); - return; - } - if (likely(vma->vm_start <= addr)) - goto good_area; - if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) { - tsk->thread.bad_cause = cause; - bad_area(regs, mm, code, addr); - return; - } - if (unlikely(expand_stack(vma, addr))) { - tsk->thread.bad_cause = cause; - bad_area(regs, mm, code, addr); + bad_area_nosemaphore(regs, code, addr); return; } @@ -305,7 +330,6 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * Ok, we have a good vm_area for this memory access, so * we can handle it. */ -good_area: code = SEGV_ACCERR; if (unlikely(access_error(cause, vma))) { @@ -346,6 +370,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) mmap_read_unlock(mm); +done: if (unlikely(fault & VM_FAULT_ERROR)) { tsk->thread.bad_cause = cause; mm_fault_error(regs, addr, fault); diff --git a/arch/riscv/mm/pageattr.c b/arch/riscv/mm/pageattr.c index ea3d61de065b..161d0b34c2cb 100644 --- a/arch/riscv/mm/pageattr.c +++ b/arch/riscv/mm/pageattr.c @@ -102,6 +102,7 @@ static const struct mm_walk_ops pageattr_ops = { .pmd_entry = pageattr_pmd_entry, .pte_entry = pageattr_pte_entry, .pte_hole = pageattr_pte_hole, + .walk_lock = PGWALK_RDLOCK, }; static int __set_memory(unsigned long addr, int numpages, pgprot_t set_mask, diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 16223095045e..0843adb266d1 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -403,7 +403,6 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) access = VM_WRITE; if (access == VM_WRITE) flags |= FAULT_FLAG_WRITE; -#ifdef CONFIG_PER_VMA_LOCK if (!(flags & FAULT_FLAG_USER)) goto lock_mmap; vma = lock_vma_under_rcu(mm, address); @@ -414,7 +413,8 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) goto lock_mmap; } fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs); - vma_end_read(vma); + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) + vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { count_vm_vma_lock_event(VMA_LOCK_SUCCESS); goto out; @@ -426,7 +426,6 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) goto out; } lock_mmap: -#endif /* CONFIG_PER_VMA_LOCK */ mmap_read_lock(mm); gmap = NULL; @@ -453,8 +452,9 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) if (unlikely(vma->vm_start > address)) { if (!(vma->vm_flags & VM_GROWSDOWN)) goto out_up; - if (expand_stack(vma, address)) - goto out_up; + vma = expand_stack(mm, address); + if (!vma) + goto out; } /* diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c index e4567b5fcdda..d3f4b2c0dd9a 100644 --- a/arch/s390/mm/gmap.c +++ b/arch/s390/mm/gmap.c @@ -2510,6 +2510,7 @@ static int thp_split_walk_pmd_entry(pmd_t *pmd, unsigned long addr, static const struct mm_walk_ops thp_split_walk_ops = { .pmd_entry = thp_split_walk_pmd_entry, + .walk_lock = PGWALK_WRLOCK_VERIFY, }; static inline void thp_split_mm(struct mm_struct *mm) @@ -2554,6 +2555,7 @@ static int __zap_zero_pages(pmd_t *pmd, unsigned long start, static const struct mm_walk_ops zap_zero_walk_ops = { .pmd_entry = __zap_zero_pages, + .walk_lock = PGWALK_WRLOCK, }; /* @@ -2655,6 +2657,7 @@ static const struct mm_walk_ops enable_skey_walk_ops = { .hugetlb_entry = __s390_enable_skey_hugetlb, .pte_entry = __s390_enable_skey_pte, .pmd_entry = __s390_enable_skey_pmd, + .walk_lock = PGWALK_WRLOCK, }; int s390_enable_skey(void) @@ -2692,6 +2695,7 @@ static int __s390_reset_cmma(pte_t *pte, unsigned long addr, static const struct mm_walk_ops reset_cmma_walk_ops = { .pte_entry = __s390_reset_cmma, + .walk_lock = PGWALK_WRLOCK, }; void s390_reset_cmma(struct mm_struct *mm) @@ -2728,6 +2732,7 @@ static int s390_gather_pages(pte_t *ptep, unsigned long addr, static const struct mm_walk_ops gather_pages_ops = { .pte_entry = s390_gather_pages, + .walk_lock = PGWALK_RDLOCK, }; /* diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 5f220e903e5a..8e4d1f757bcc 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -56,6 +56,7 @@ config SUPERH select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS select IRQ_FORCED_THREADING + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select NEED_SG_DMA_LENGTH select NO_DMA if !MMU && !DMA_COHERENT diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index acd2f5e50bfc..06e6b4952924 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c @@ -439,21 +439,9 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, } retry: - mmap_read_lock(mm); - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (unlikely(!vma)) { - bad_area(regs, error_code, address); - return; - } - if (likely(vma->vm_start <= address)) - goto good_area; - if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) { - bad_area(regs, error_code, address); - return; - } - if (unlikely(expand_stack(vma, address))) { - bad_area(regs, error_code, address); + bad_area_nosemaphore(regs, error_code, address); return; } @@ -461,7 +449,6 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, * Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: if (unlikely(access_error(error_code, vma))) { bad_area_access_error(regs, error_code, address); return; diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 84437a4c6545..dbb1760cbe8c 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -56,6 +56,7 @@ config SPARC32 select DMA_DIRECT_REMAP select GENERIC_ATOMIC64 select HAVE_UID16 + select LOCK_MM_AND_FIND_VMA select OLD_SIGACTION select ZONE_DMA diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 91259f291c54..aef2aebe2379 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c @@ -143,28 +143,19 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write, if (pagefault_disabled() || !mm) goto no_context; + if (!from_user && address >= PAGE_OFFSET) + goto no_context; + perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - - if (!from_user && address >= PAGE_OFFSET) - goto bad_area; - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; + goto bad_area_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: code = SEGV_ACCERR; if (write) { if (!(vma->vm_flags & VM_WRITE)) @@ -318,17 +309,9 @@ static void force_user_fault(unsigned long address, int write) code = SEGV_MAPERR; - mmap_read_lock(mm); - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; -good_area: + goto bad_area_nosemaphore; code = SEGV_ACCERR; if (write) { if (!(vma->vm_flags & VM_WRITE)) @@ -347,6 +330,7 @@ static void force_user_fault(unsigned long address, int write) return; bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: __do_fault_siginfo(code, SIGSEGV, tsk->thread.kregs, address); return; diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c index 4acc12eafbf5..df685a241855 100644 --- a/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c @@ -383,8 +383,9 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) goto bad_area; } } - if (expand_stack(vma, address)) - goto bad_area; + vma = expand_stack(mm, address); + if (!vma) + goto bad_area_nosemaphore; /* * Ok, we have a good vm_area for this memory access, so * we can handle it.. @@ -482,8 +483,9 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) * Fix it, but check if it's kernel or user first.. */ bad_area: - insn = get_fault_insn(regs, insn); mmap_read_unlock(mm); +bad_area_nosemaphore: + insn = get_fault_insn(regs, insn); handle_kernel_fault: do_kernel_fault(regs, si_code, fault_code, insn, address); diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index d3ce21c4ca32..6d8ae86ae978 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c @@ -47,14 +47,15 @@ int handle_page_fault(unsigned long address, unsigned long ip, vma = find_vma(mm, address); if (!vma) goto out; - else if (vma->vm_start <= address) + if (vma->vm_start <= address) goto good_area; - else if (!(vma->vm_flags & VM_GROWSDOWN)) + if (!(vma->vm_flags & VM_GROWSDOWN)) goto out; - else if (is_user && !ARCH_IS_STACKGROW(address)) - goto out; - else if (expand_stack(vma, address)) + if (is_user && !ARCH_IS_STACKGROW(address)) goto out; + vma = expand_stack(mm, address); + if (!vma) + goto out_nosemaphore; good_area: *code_out = SEGV_ACCERR; diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index ab3ce4ea05d0..22cdc45031d4 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -272,6 +272,7 @@ config X86 select HAVE_GENERIC_VDSO select HOTPLUG_SMT if SMP select IRQ_FORCED_THREADING + select LOCK_MM_AND_FIND_VMA select NEED_PER_CPU_EMBED_FIRST_CHUNK select NEED_PER_CPU_PAGE_FIRST_CHUNK select NEED_SG_DMA_LENGTH diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h index b472ef76826a..37639a2d9c34 100644 --- a/arch/x86/include/asm/cpu.h +++ b/arch/x86/include/asm/cpu.h @@ -96,4 +96,6 @@ static inline bool intel_cpu_signatures_match(unsigned int s1, unsigned int p1, extern u64 x86_read_arch_cap_msr(void); +extern struct cpumask cpus_stop_mask; + #endif /* _ASM_X86_CPU_H */ diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h index a73bced40e24..b3b34032ef23 100644 --- a/arch/x86/include/asm/smp.h +++ b/arch/x86/include/asm/smp.h @@ -132,6 +132,8 @@ void wbinvd_on_cpu(int cpu); int wbinvd_on_all_cpus(void); void cond_wakeup_cpu0(void); +void smp_kick_mwait_play_dead(void); + void native_smp_send_reschedule(int cpu); void native_send_call_func_ipi(const struct cpumask *mask); void native_send_call_func_single_ipi(int cpu); diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 461e45d85add..9a3092ec9b27 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -705,7 +705,7 @@ static enum ucode_state apply_microcode_amd(int cpu) rdmsr(MSR_AMD64_PATCH_LEVEL, rev, dummy); /* need to apply patch? */ - if (rev >= mc_amd->hdr.patch_id) { + if (rev > mc_amd->hdr.patch_id) { ret = UCODE_OK; goto out; } diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index e436c9c1ef3b..279b5e9be80f 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -744,15 +744,26 @@ bool xen_set_default_idle(void) } #endif +struct cpumask cpus_stop_mask; + void __noreturn stop_this_cpu(void *dummy) { + struct cpuinfo_x86 *c = this_cpu_ptr(&cpu_info); + unsigned int cpu = smp_processor_id(); + local_irq_disable(); + /* - * Remove this CPU: + * Remove this CPU from the online mask and disable it + * unconditionally. This might be redundant in case that the reboot + * vector was handled late and stop_other_cpus() sent an NMI. + * + * According to SDM and APM NMIs can be accepted even after soft + * disabling the local APIC. */ - set_cpu_online(smp_processor_id(), false); + set_cpu_online(cpu, false); disable_local_APIC(); - mcheck_cpu_clear(this_cpu_ptr(&cpu_info)); + mcheck_cpu_clear(c); /* * Use wbinvd on processors that support SME. This provides support @@ -766,8 +777,17 @@ void __noreturn stop_this_cpu(void *dummy) * Test the CPUID bit directly because the machine might've cleared * X86_FEATURE_SME due to cmdline options. */ - if (cpuid_eax(0x8000001f) & BIT(0)) + if (c->extended_cpuid_level >= 0x8000001f && (cpuid_eax(0x8000001f) & BIT(0))) native_wbinvd(); + + /* + * This brings a cache line back and dirties it, but + * native_stop_other_cpus() will overwrite cpus_stop_mask after it + * observed that all CPUs reported stop. This write will invalidate + * the related cache line on this CPU. + */ + cpumask_clear_cpu(cpu, &cpus_stop_mask); + for (;;) { /* * Use native_halt() so that memory contents don't change diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 375b33ecafa2..174d6232b87f 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c @@ -21,12 +21,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -146,34 +148,47 @@ static int register_stop_handler(void) static void native_stop_other_cpus(int wait) { - unsigned long flags; - unsigned long timeout; + unsigned int cpu = smp_processor_id(); + unsigned long flags, timeout; if (reboot_force) return; - /* - * Use an own vector here because smp_call_function - * does lots of things not suitable in a panic situation. - */ + /* Only proceed if this is the first CPU to reach this code */ + if (atomic_cmpxchg(&stopping_cpu, -1, cpu) != -1) + return; + + /* For kexec, ensure that offline CPUs are out of MWAIT and in HLT */ + if (kexec_in_progress) + smp_kick_mwait_play_dead(); /* - * We start by using the REBOOT_VECTOR irq. - * The irq is treated as a sync point to allow critical - * regions of code on other cpus to release their spin locks - * and re-enable irqs. Jumping straight to an NMI might - * accidentally cause deadlocks with further shutdown/panic - * code. By syncing, we give the cpus up to one second to - * finish their work before we force them off with the NMI. + * 1) Send an IPI on the reboot vector to all other CPUs. + * + * The other CPUs should react on it after leaving critical + * sections and re-enabling interrupts. They might still hold + * locks, but there is nothing which can be done about that. + * + * 2) Wait for all other CPUs to report that they reached the + * HLT loop in stop_this_cpu() + * + * 3) If #2 timed out send an NMI to the CPUs which did not + * yet report + * + * 4) Wait for all other CPUs to report that they reached the + * HLT loop in stop_this_cpu() + * + * #3 can obviously race against a CPU reaching the HLT loop late. + * That CPU will have reported already and the "have all CPUs + * reached HLT" condition will be true despite the fact that the + * other CPU is still handling the NMI. Again, there is no + * protection against that as "disabled" APICs still respond to + * NMIs. */ - if (num_online_cpus() > 1) { - /* did someone beat us here? */ - if (atomic_cmpxchg(&stopping_cpu, -1, safe_smp_processor_id()) != -1) - return; - - /* sync above data before sending IRQ */ - wmb(); + cpumask_copy(&cpus_stop_mask, cpu_online_mask); + cpumask_clear_cpu(cpu, &cpus_stop_mask); + if (!cpumask_empty(&cpus_stop_mask)) { apic_send_IPI_allbutself(REBOOT_VECTOR); /* @@ -183,24 +198,22 @@ static void native_stop_other_cpus(int wait) * CPUs reach shutdown state. */ timeout = USEC_PER_SEC; - while (num_online_cpus() > 1 && timeout--) + while (!cpumask_empty(&cpus_stop_mask) && timeout--) udelay(1); } /* if the REBOOT_VECTOR didn't work, try with the NMI */ - if (num_online_cpus() > 1) { + if (!cpumask_empty(&cpus_stop_mask)) { /* * If NMI IPI is enabled, try to register the stop handler * and send the IPI. In any case try to wait for the other * CPUs to stop. */ if (!smp_no_nmi_ipi && !register_stop_handler()) { - /* Sync above data before sending IRQ */ - wmb(); - pr_emerg("Shutting down cpus with NMI\n"); - apic_send_IPI_allbutself(NMI_VECTOR); + for_each_cpu(cpu, &cpus_stop_mask) + apic->send_IPI(cpu, NMI_VECTOR); } /* * Don't wait longer than 10 ms if the caller didn't @@ -208,7 +221,7 @@ static void native_stop_other_cpus(int wait) * one or more CPUs do not reach shutdown state. */ timeout = USEC_PER_MSEC * 10; - while (num_online_cpus() > 1 && (wait || timeout--)) + while (!cpumask_empty(&cpus_stop_mask) && (wait || timeout--)) udelay(1); } @@ -216,6 +229,12 @@ static void native_stop_other_cpus(int wait) disable_local_APIC(); mcheck_cpu_clear(this_cpu_ptr(&cpu_info)); local_irq_restore(flags); + + /* + * Ensure that the cpus_stop_mask cache lines are invalidated on + * the other CPUs. See comment vs. SME in stop_this_cpu(). + */ + cpumask_clear(&cpus_stop_mask); } /* diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 3f3ea0287f69..f32ee967414e 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -99,6 +100,20 @@ EXPORT_PER_CPU_SYMBOL(cpu_die_map); DEFINE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info); EXPORT_PER_CPU_SYMBOL(cpu_info); +struct mwait_cpu_dead { + unsigned int control; + unsigned int status; +}; + +#define CPUDEAD_MWAIT_WAIT 0xDEADBEEF +#define CPUDEAD_MWAIT_KEXEC_HLT 0x4A17DEAD + +/* + * Cache line aligned data for mwait_play_dead(). Separate on purpose so + * that it's unlikely to be touched by other CPUs. + */ +static DEFINE_PER_CPU_ALIGNED(struct mwait_cpu_dead, mwait_cpu_dead); + /* Logical package management. We might want to allocate that dynamically */ unsigned int __max_logical_packages __read_mostly; EXPORT_SYMBOL(__max_logical_packages); @@ -155,6 +170,10 @@ static void smp_callin(void) { int cpuid; + /* Mop up eventual mwait_play_dead() wreckage */ + this_cpu_write(mwait_cpu_dead.status, 0); + this_cpu_write(mwait_cpu_dead.control, 0); + /* * If waken up by an INIT in an 82489DX configuration * cpu_callout_mask guarantees we don't get here before @@ -1746,10 +1765,10 @@ EXPORT_SYMBOL_GPL(cond_wakeup_cpu0); */ static inline void mwait_play_dead(void) { + struct mwait_cpu_dead *md = this_cpu_ptr(&mwait_cpu_dead); unsigned int eax, ebx, ecx, edx; unsigned int highest_cstate = 0; unsigned int highest_subcstate = 0; - void *mwait_ptr; int i; if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD || @@ -1784,12 +1803,9 @@ static inline void mwait_play_dead(void) (highest_subcstate - 1); } - /* - * This should be a memory location in a cache line which is - * unlikely to be touched by other processors. The actual - * content is immaterial as it is not actually modified in any way. - */ - mwait_ptr = ¤t_thread_info()->flags; + /* Set up state for the kexec() hack below */ + md->status = CPUDEAD_MWAIT_WAIT; + md->control = CPUDEAD_MWAIT_WAIT; wbinvd(); @@ -1802,16 +1818,63 @@ static inline void mwait_play_dead(void) * case where we return around the loop. */ mb(); - clflush(mwait_ptr); + clflush(md); mb(); - __monitor(mwait_ptr, 0, 0); + __monitor(md, 0, 0); mb(); __mwait(eax, 0); + if (READ_ONCE(md->control) == CPUDEAD_MWAIT_KEXEC_HLT) { + /* + * Kexec is about to happen. Don't go back into mwait() as + * the kexec kernel might overwrite text and data including + * page tables and stack. So mwait() would resume when the + * monitor cache line is written to and then the CPU goes + * south due to overwritten text, page tables and stack. + * + * Note: This does _NOT_ protect against a stray MCE, NMI, + * SMI. They will resume execution at the instruction + * following the HLT instruction and run into the problem + * which this is trying to prevent. + */ + WRITE_ONCE(md->status, CPUDEAD_MWAIT_KEXEC_HLT); + while(1) + native_halt(); + } + cond_wakeup_cpu0(); } } +/* + * Kick all "offline" CPUs out of mwait on kexec(). See comment in + * mwait_play_dead(). + */ +void smp_kick_mwait_play_dead(void) +{ + u32 newstate = CPUDEAD_MWAIT_KEXEC_HLT; + struct mwait_cpu_dead *md; + unsigned int cpu, i; + + for_each_cpu_andnot(cpu, cpu_present_mask, cpu_online_mask) { + md = per_cpu_ptr(&mwait_cpu_dead, cpu); + + /* Does it sit in mwait_play_dead() ? */ + if (READ_ONCE(md->status) != CPUDEAD_MWAIT_WAIT) + continue; + + /* Wait up to 5ms */ + for (i = 0; READ_ONCE(md->status) != newstate && i < 1000; i++) { + /* Bring it out of mwait */ + WRITE_ONCE(md->control, newstate); + udelay(5); + } + + if (READ_ONCE(md->status) != newstate) + pr_err_once("CPU%u is stuck in mwait_play_dead()\n", cpu); + } +} + void hlt_play_dead(void) { if (__this_cpu_read(cpu_info.x86) >= 4) diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 6551d6249f8a..97599581ec6b 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -901,12 +901,6 @@ __bad_area(struct pt_regs *regs, unsigned long error_code, __bad_area_nosemaphore(regs, error_code, address, pkey, si_code); } -static noinline void -bad_area(struct pt_regs *regs, unsigned long error_code, unsigned long address) -{ - __bad_area(regs, error_code, address, 0, SEGV_MAPERR); -} - static inline bool bad_area_access_from_pkeys(unsigned long error_code, struct vm_area_struct *vma) { @@ -1355,7 +1349,6 @@ void do_user_addr_fault(struct pt_regs *regs, } #endif -#ifdef CONFIG_PER_VMA_LOCK if (!(flags & FAULT_FLAG_USER)) goto lock_mmap; @@ -1368,7 +1361,8 @@ void do_user_addr_fault(struct pt_regs *regs, goto lock_mmap; } fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs); - vma_end_read(vma); + if (!(fault & (VM_FAULT_RETRY | VM_FAULT_COMPLETED))) + vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { count_vm_vma_lock_event(VMA_LOCK_SUCCESS); @@ -1385,53 +1379,11 @@ void do_user_addr_fault(struct pt_regs *regs, return; } lock_mmap: -#endif /* CONFIG_PER_VMA_LOCK */ - /* - * Kernel-mode access to the user address space should only occur - * on well-defined single instructions listed in the exception - * tables. But, an erroneous kernel fault occurring outside one of - * those areas which also holds mmap_lock might deadlock attempting - * to validate the fault against the address space. - * - * Only do the expensive exception table search when we might be at - * risk of a deadlock. This happens if we - * 1. Failed to acquire mmap_lock, and - * 2. The access did not originate in userspace. - */ - if (unlikely(!mmap_read_trylock(mm))) { - if (!user_mode(regs) && !search_exception_tables(regs->ip)) { - /* - * Fault from code in kernel from - * which we do not expect faults. - */ - bad_area_nosemaphore(regs, error_code, address); - return; - } retry: - mmap_read_lock(mm); - } else { - /* - * The above down_read_trylock() might have succeeded in - * which case we'll have missed the might_sleep() from - * down_read(): - */ - might_sleep(); - } - - vma = find_vma(mm, address); + vma = lock_mm_and_find_vma(mm, address, regs); if (unlikely(!vma)) { - bad_area(regs, error_code, address); - return; - } - if (likely(vma->vm_start <= address)) - goto good_area; - if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) { - bad_area(regs, error_code, address); - return; - } - if (unlikely(expand_stack(vma, address))) { - bad_area(regs, error_code, address); + bad_area_nosemaphore(regs, error_code, address); return; } @@ -1439,7 +1391,6 @@ void do_user_addr_fault(struct pt_regs *regs, * Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: if (unlikely(access_error(error_code, vma))) { bad_area_access_error(regs, error_code, address, vma); return; @@ -1487,9 +1438,7 @@ void do_user_addr_fault(struct pt_regs *regs, } mmap_read_unlock(mm); -#ifdef CONFIG_PER_VMA_LOCK done: -#endif if (likely(!(fault & VM_FAULT_ERROR))) return; diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index bcb0c5d2abc2..6d3c9257aa13 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -49,6 +49,7 @@ config XTENSA select HAVE_SYSCALL_TRACEPOINTS select HAVE_VIRT_CPU_ACCOUNTING_GEN select IRQ_DOMAIN + select LOCK_MM_AND_FIND_VMA select MODULES_USE_ELF_RELA select PERF_USE_VMALLOC select TRACE_IRQFLAGS_SUPPORT diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index 8c781b05c0bd..d89b193c779f 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c @@ -130,23 +130,14 @@ void do_page_fault(struct pt_regs *regs) perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: - mmap_read_lock(mm); - vma = find_vma(mm, address); - + vma = lock_mm_and_find_vma(mm, address, regs); if (!vma) - goto bad_area; - if (vma->vm_start <= address) - goto good_area; - if (!(vma->vm_flags & VM_GROWSDOWN)) - goto bad_area; - if (expand_stack(vma, address)) - goto bad_area; + goto bad_area_nosemaphore; /* Ok, we have a good vm_area for this memory access, so * we can handle it.. */ -good_area: code = SEGV_ACCERR; if (is_write) { @@ -205,6 +196,7 @@ void do_page_fault(struct pt_regs *regs) */ bad_area: mmap_read_unlock(mm); +bad_area_nosemaphore: if (user_mode(regs)) { current->thread.bad_vaddr = address; current->thread.error_code = is_write; diff --git a/block/blk-crypto-profile.c b/block/blk-crypto-profile.c index fe550725c777..7cdef1bee6f7 100644 --- a/block/blk-crypto-profile.c +++ b/block/blk-crypto-profile.c @@ -79,7 +79,18 @@ int blk_crypto_profile_init(struct blk_crypto_profile *profile, unsigned int slot_hashtable_size; memset(profile, 0, sizeof(*profile)); + + /* + * profile->lock of an underlying device can nest inside profile->lock + * of a device-mapper device, so use a dynamic lock class to avoid + * false-positive lockdep reports. + */ +#ifdef CONFIG_LOCKDEP + lockdep_register_key(&profile->lockdep_key); + __init_rwsem(&profile->lock, "&profile->lock", &profile->lockdep_key); +#else init_rwsem(&profile->lock); +#endif if (num_slots == 0) return 0; @@ -89,7 +100,7 @@ int blk_crypto_profile_init(struct blk_crypto_profile *profile, profile->slots = kvcalloc(num_slots, sizeof(profile->slots[0]), GFP_KERNEL); if (!profile->slots) - return -ENOMEM; + goto err_destroy; profile->num_slots = num_slots; @@ -443,6 +454,9 @@ void blk_crypto_profile_destroy(struct blk_crypto_profile *profile) { if (!profile) return; +#ifdef CONFIG_LOCKDEP + lockdep_unregister_key(&profile->lockdep_key); +#endif kvfree(profile->slot_hashtable); kvfree_sensitive(profile->slots, sizeof(profile->slots[0]) * profile->num_slots); diff --git a/build.config.allmodconfig b/build.config.allmodconfig index 3d443b98714c..65d84dbb710d 100644 --- a/build.config.allmodconfig +++ b/build.config.allmodconfig @@ -4,7 +4,6 @@ POST_DEFCONFIG_CMDS="update_config" function update_config() { ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \ -e UNWINDER_FRAME_POINTER \ - -d WERROR \ -d SAMPLES \ -d BPFILTER \ -e RANDSTRUCT_NONE \ diff --git a/build.config.gki.aarch64.16k b/build.config.gki.aarch64.16k deleted file mode 100644 index 20be95d54647..000000000000 --- a/build.config.gki.aarch64.16k +++ /dev/null @@ -1,5 +0,0 @@ -. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64 - -DEFCONFIG=16k_gki_defconfig -PRE_DEFCONFIG_CMDS="mkdir -p \${OUT_DIR}/arch/arm64/configs/ && cat ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/16k_gki.fragment > \${OUT_DIR}/arch/arm64/configs/${DEFCONFIG};" -POST_DEFCONFIG_CMDS="" diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 0a30c8cbe7bd..229f0e712f93 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -88,6 +88,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_send_sig_info); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_init); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_task_blocks_on_rtmutex); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_waiter_prio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_opt_spin_start); @@ -313,3 +315,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_regmap_update); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_folio_look_around_ref); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around_migrate_folio); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_test_clear_look_around_ref); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_scan_type); diff --git a/drivers/dma-buf/dma-fence-unwrap.c b/drivers/dma-buf/dma-fence-unwrap.c index 7002bca792ff..c625bb2b5d56 100644 --- a/drivers/dma-buf/dma-fence-unwrap.c +++ b/drivers/dma-buf/dma-fence-unwrap.c @@ -66,18 +66,36 @@ struct dma_fence *__dma_fence_unwrap_merge(unsigned int num_fences, { struct dma_fence_array *result; struct dma_fence *tmp, **array; + ktime_t timestamp; unsigned int i; size_t count; count = 0; + timestamp = ns_to_ktime(0); for (i = 0; i < num_fences; ++i) { - dma_fence_unwrap_for_each(tmp, &iter[i], fences[i]) - if (!dma_fence_is_signaled(tmp)) + dma_fence_unwrap_for_each(tmp, &iter[i], fences[i]) { + if (!dma_fence_is_signaled(tmp)) { ++count; + } else if (test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, + &tmp->flags)) { + if (ktime_after(tmp->timestamp, timestamp)) + timestamp = tmp->timestamp; + } else { + /* + * Use the current time if the fence is + * currently signaling. + */ + timestamp = ktime_get(); + } + } } + /* + * If we couldn't find a pending fence just return a private signaled + * fence with the timestamp of the last signaled one. + */ if (count == 0) - return dma_fence_get_stub(); + return dma_fence_allocate_private_stub(timestamp); array = kmalloc_array(count, sizeof(*array), GFP_KERNEL); if (!array) @@ -138,7 +156,7 @@ struct dma_fence *__dma_fence_unwrap_merge(unsigned int num_fences, } while (tmp); if (count == 0) { - tmp = dma_fence_get_stub(); + tmp = dma_fence_allocate_private_stub(ktime_get()); goto return_tmp; } diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index 0de0482cd36e..eef4786aaf86 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -150,16 +150,17 @@ EXPORT_SYMBOL(dma_fence_get_stub); /** * dma_fence_allocate_private_stub - return a private, signaled fence + * @timestamp: timestamp when the fence was signaled * * Return a newly allocated and signaled stub fence. */ -struct dma_fence *dma_fence_allocate_private_stub(void) +struct dma_fence *dma_fence_allocate_private_stub(ktime_t timestamp) { struct dma_fence *fence; fence = kzalloc(sizeof(*fence), GFP_KERNEL); if (fence == NULL) - return ERR_PTR(-ENOMEM); + return NULL; dma_fence_init(fence, &dma_fence_stub_ops, @@ -169,7 +170,7 @@ struct dma_fence *dma_fence_allocate_private_stub(void) set_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &fence->flags); - dma_fence_signal(fence); + dma_fence_signal_timestamp(fence, timestamp); return fence; } diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 0c2be8360525..e592c5da70ce 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -353,10 +353,10 @@ EXPORT_SYMBOL(drm_syncobj_replace_fence); */ static int drm_syncobj_assign_null_handle(struct drm_syncobj *syncobj) { - struct dma_fence *fence = dma_fence_allocate_private_stub(); + struct dma_fence *fence = dma_fence_allocate_private_stub(ktime_get()); - if (IS_ERR(fence)) - return PTR_ERR(fence); + if (!fence) + return -ENOMEM; drm_syncobj_replace_fence(syncobj, fence); dma_fence_put(fence); diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index d505603930a7..c9c297af53a7 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c @@ -370,6 +370,7 @@ void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm) ttm->page_flags &= ~TTM_TT_FLAG_PRIV_POPULATED; } +EXPORT_SYMBOL_GPL(ttm_tt_unpopulate); #ifdef CONFIG_DEBUG_FS diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c index b2cd7527de19..0b4204b9a253 100644 --- a/drivers/hid/hid-logitech-hidpp.c +++ b/drivers/hid/hid-logitech-hidpp.c @@ -4348,7 +4348,7 @@ static const struct hid_device_id hidpp_devices[] = { { /* wireless touchpad T651 */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_T651), - .driver_data = HIDPP_QUIRK_CLASS_WTP }, + .driver_data = HIDPP_QUIRK_CLASS_WTP | HIDPP_QUIRK_DELAYED_INIT }, { /* Mouse Logitech Anywhere MX */ LDJ_DEVICE(0x1017), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_1P0 }, { /* Mouse logitech M560 */ diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index 197b1e7bf029..b617aada50b0 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -272,7 +272,12 @@ static int hidraw_open(struct inode *inode, struct file *file) goto out; } - down_read(&minors_rwsem); + /* + * Technically not writing to the hidraw_table but a write lock is + * required to protect the device refcount. This is symmetrical to + * hidraw_release(). + */ + down_write(&minors_rwsem); if (!hidraw_table[minor] || !hidraw_table[minor]->exist) { err = -ENODEV; goto out_unlock; @@ -301,7 +306,7 @@ static int hidraw_open(struct inode *inode, struct file *file) spin_unlock_irqrestore(&hidraw_table[minor]->list_lock, flags); file->private_data = list; out_unlock: - up_read(&minors_rwsem); + up_write(&minors_rwsem); out: if (err < 0) kfree(list); diff --git a/drivers/iommu/amd/iommu_v2.c b/drivers/iommu/amd/iommu_v2.c index 9f7fab49a5a9..75355ddca657 100644 --- a/drivers/iommu/amd/iommu_v2.c +++ b/drivers/iommu/amd/iommu_v2.c @@ -485,8 +485,8 @@ static void do_fault(struct work_struct *work) flags |= FAULT_FLAG_REMOTE; mmap_read_lock(mm); - vma = find_extend_vma(mm, address); - if (!vma || address < vma->vm_start) + vma = vma_lookup(mm, address); + if (!vma) /* failed to get a vma in the right range */ goto out; diff --git a/drivers/iommu/iommu-sva.c b/drivers/iommu/iommu-sva.c index 24bf9b2b58aa..ed5f11eb92e5 100644 --- a/drivers/iommu/iommu-sva.c +++ b/drivers/iommu/iommu-sva.c @@ -203,7 +203,7 @@ iommu_sva_handle_iopf(struct iommu_fault *fault, void *data) mmap_read_lock(mm); - vma = find_extend_vma(mm, prm->addr); + vma = vma_lookup(mm, prm->addr); if (!vma) /* Unmapped area */ goto out_put_mm; diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 7e981e00aae4..b0c065108bb7 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -51,6 +51,8 @@ struct redist_region { static struct gic_chip_data_v3 gic_data __read_mostly; static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key); +static DEFINE_STATIC_KEY_FALSE(gic_arm64_2941627_erratum); + #define GIC_ID_NR (1U << GICD_TYPER_ID_BITS(gic_data.rdists.gicd_typer)) #define GIC_LINE_NR min(GICD_TYPER_SPIS(gic_data.rdists.gicd_typer), 1020U) #define GIC_ESPI_NR GICD_TYPER_ESPIS(gic_data.rdists.gicd_typer) @@ -548,10 +550,39 @@ static void gic_irq_nmi_teardown(struct irq_data *d) gic_irq_set_prio(d, GICD_INT_DEF_PRI); } +static bool gic_arm64_erratum_2941627_needed(struct irq_data *d) +{ + enum gic_intid_range range; + + if (!static_branch_unlikely(&gic_arm64_2941627_erratum)) + return false; + + range = get_intid_range(d); + + /* + * The workaround is needed if the IRQ is an SPI and + * the target cpu is different from the one we are + * executing on. + */ + return (range == SPI_RANGE || range == ESPI_RANGE) && + !cpumask_test_cpu(raw_smp_processor_id(), + irq_data_get_effective_affinity_mask(d)); +} + static void gic_eoi_irq(struct irq_data *d) { write_gicreg(gic_irq(d), ICC_EOIR1_EL1); isb(); + + if (gic_arm64_erratum_2941627_needed(d)) { + /* + * Make sure the GIC stream deactivate packet + * issued by ICC_EOIR1_EL1 has completed before + * deactivating through GICD_IACTIVER. + */ + dsb(sy); + gic_poke_irq(d, GICD_ICACTIVER); + } } static void gic_eoimode1_eoi_irq(struct irq_data *d) @@ -562,7 +593,11 @@ static void gic_eoimode1_eoi_irq(struct irq_data *d) */ if (gic_irq(d) >= 8192 || irqd_is_forwarded_to_vcpu(d)) return; - gic_write_dir(gic_irq(d)); + + if (!gic_arm64_erratum_2941627_needed(d)) + gic_write_dir(gic_irq(d)); + else + gic_poke_irq(d, GICD_ICACTIVER); } static int gic_set_type(struct irq_data *d, unsigned int type) @@ -1757,6 +1792,12 @@ static bool gic_enable_quirk_hip06_07(void *data) return false; } +static bool gic_enable_quirk_arm64_2941627(void *data) +{ + static_branch_enable(&gic_arm64_2941627_erratum); + return true; +} + static const struct gic_quirk gic_quirks[] = { { .desc = "GICv3: Qualcomm MSM8996 broken firmware", @@ -1793,6 +1834,25 @@ static const struct gic_quirk gic_quirks[] = { .mask = 0xe8f00fff, .init = gic_enable_quirk_cavium_38539, }, + { + /* + * GIC-700: 2941627 workaround - IP variant [0,1] + * + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0400043b, + .mask = 0xff0e0fff, + .init = gic_enable_quirk_arm64_2941627, + }, + { + /* + * GIC-700: 2941627 workaround - IP variant [2] + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0402043b, + .mask = 0xff0f0fff, + .init = gic_enable_quirk_arm64_2941627, + }, { } }; diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c index 40f56e044640..3c5ab5ecd678 100644 --- a/drivers/media/v4l2-core/v4l2-common.c +++ b/drivers/media/v4l2-core/v4l2-common.c @@ -252,12 +252,16 @@ const struct v4l2_format_info *v4l2_format_info(u32 format) { .format = V4L2_PIX_FMT_RGB565, .pixel_enc = V4L2_PIXEL_ENC_RGB, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, { .format = V4L2_PIX_FMT_RGB555, .pixel_enc = V4L2_PIXEL_ENC_RGB, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, { .format = V4L2_PIX_FMT_BGR666, .pixel_enc = V4L2_PIXEL_ENC_RGB, .mem_planes = 1, .comp_planes = 1, .bpp = { 4, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_BGR48_12, .pixel_enc = V4L2_PIXEL_ENC_RGB, .mem_planes = 1, .comp_planes = 1, .bpp = { 6, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_ABGR64_12, .pixel_enc = V4L2_PIXEL_ENC_RGB, .mem_planes = 1, .comp_planes = 1, .bpp = { 8, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, /* YUV packed formats */ { .format = V4L2_PIX_FMT_YUYV, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 2, .vdiv = 1 }, { .format = V4L2_PIX_FMT_YVYU, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 2, .vdiv = 1 }, { .format = V4L2_PIX_FMT_UYVY, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 2, .vdiv = 1 }, { .format = V4L2_PIX_FMT_VYUY, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 2, 0, 0, 0 }, .hdiv = 2, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_Y212, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 4, 0, 0, 0 }, .hdiv = 2, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_YUV48_12, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 1, .bpp = { 6, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, /* YUV planar formats */ { .format = V4L2_PIX_FMT_NV12, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 2 }, @@ -267,6 +271,7 @@ const struct v4l2_format_info *v4l2_format_info(u32 format) { .format = V4L2_PIX_FMT_NV24, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, { .format = V4L2_PIX_FMT_NV42, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, { .format = V4L2_PIX_FMT_P010, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 2, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_P012, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 2, 4, 0, 0 }, .hdiv = 2, .vdiv = 2 }, { .format = V4L2_PIX_FMT_YUV410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 }, { .format = V4L2_PIX_FMT_YVU410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 }, @@ -292,6 +297,7 @@ const struct v4l2_format_info *v4l2_format_info(u32 format) { .format = V4L2_PIX_FMT_NV21M, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 2, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 2 }, { .format = V4L2_PIX_FMT_NV16M, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 2, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, { .format = V4L2_PIX_FMT_NV61M, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 2, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, + { .format = V4L2_PIX_FMT_P012M, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 2, .comp_planes = 2, .bpp = { 2, 4, 0, 0 }, .hdiv = 2, .vdiv = 2 }, /* Bayer RGB formats */ { .format = V4L2_PIX_FMT_SBGGR8, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mem_planes = 1, .comp_planes = 1, .bpp = { 1, 0, 0, 0 }, .hdiv = 1, .vdiv = 1 }, diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 91ae25e092e2..3a4785b3b59a 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1304,11 +1304,14 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_BGRX32: descr = "32-bit XBGR 8-8-8-8"; break; case V4L2_PIX_FMT_RGBA32: descr = "32-bit RGBA 8-8-8-8"; break; case V4L2_PIX_FMT_RGBX32: descr = "32-bit RGBX 8-8-8-8"; break; + case V4L2_PIX_FMT_BGR48_12: descr = "12-bit Depth BGR"; break; + case V4L2_PIX_FMT_ABGR64_12: descr = "12-bit Depth BGRA"; break; case V4L2_PIX_FMT_GREY: descr = "8-bit Greyscale"; break; case V4L2_PIX_FMT_Y4: descr = "4-bit Greyscale"; break; case V4L2_PIX_FMT_Y6: descr = "6-bit Greyscale"; break; case V4L2_PIX_FMT_Y10: descr = "10-bit Greyscale"; break; case V4L2_PIX_FMT_Y12: descr = "12-bit Greyscale"; break; + case V4L2_PIX_FMT_Y012: descr = "12-bit Greyscale (bits 15-4)"; break; case V4L2_PIX_FMT_Y14: descr = "14-bit Greyscale"; break; case V4L2_PIX_FMT_Y16: descr = "16-bit Greyscale"; break; case V4L2_PIX_FMT_Y16_BE: descr = "16-bit Greyscale BE"; break; @@ -1347,6 +1350,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_YUV420: descr = "Planar YUV 4:2:0"; break; case V4L2_PIX_FMT_HI240: descr = "8-bit Dithered RGB (BTTV)"; break; case V4L2_PIX_FMT_M420: descr = "YUV 4:2:0 (M420)"; break; + case V4L2_PIX_FMT_YUV48_12: descr = "12-bit YUV 4:4:4 Packed"; break; case V4L2_PIX_FMT_NV12: descr = "Y/UV 4:2:0"; break; case V4L2_PIX_FMT_NV21: descr = "Y/VU 4:2:0"; break; case V4L2_PIX_FMT_NV16: descr = "Y/UV 4:2:2"; break; @@ -1354,6 +1358,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_NV24: descr = "Y/UV 4:4:4"; break; case V4L2_PIX_FMT_NV42: descr = "Y/VU 4:4:4"; break; case V4L2_PIX_FMT_P010: descr = "10-bit Y/UV 4:2:0"; break; + case V4L2_PIX_FMT_P012: descr = "12-bit Y/UV 4:2:0"; break; case V4L2_PIX_FMT_NV12_4L4: descr = "Y/UV 4:2:0 (4x4 Linear)"; break; case V4L2_PIX_FMT_NV12_16L16: descr = "Y/UV 4:2:0 (16x16 Linear)"; break; case V4L2_PIX_FMT_NV12_32L32: descr = "Y/UV 4:2:0 (32x32 Linear)"; break; @@ -1364,6 +1369,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_NV61M: descr = "Y/VU 4:2:2 (N-C)"; break; case V4L2_PIX_FMT_NV12MT: descr = "Y/UV 4:2:0 (64x32 MB, N-C)"; break; case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/UV 4:2:0 (16x16 MB, N-C)"; break; + case V4L2_PIX_FMT_P012M: descr = "12-bit Y/UV 4:2:0 (N-C)"; break; case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break; case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break; case V4L2_PIX_FMT_YUV422M: descr = "Planar YUV 4:2:2 (N-C)"; break; @@ -1448,6 +1454,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_NV12M_8L128: descr = "NV12M (8x128 Linear)"; break; case V4L2_PIX_FMT_NV12_10BE_8L128: descr = "10-bit NV12 (8x128 Linear, BE)"; break; case V4L2_PIX_FMT_NV12M_10BE_8L128: descr = "10-bit NV12M (8x128 Linear, BE)"; break; + case V4L2_PIX_FMT_Y210: descr = "10-bit YUYV Packed"; break; + case V4L2_PIX_FMT_Y212: descr = "12-bit YUYV Packed"; break; + case V4L2_PIX_FMT_Y216: descr = "16-bit YUYV Packed"; break; default: /* Compressed formats */ diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c index 36a34b1461cf..f5eaa63035ca 100644 --- a/drivers/misc/uid_sys_stats.c +++ b/drivers/misc/uid_sys_stats.c @@ -629,7 +629,6 @@ static const struct proc_ops uid_procstat_fops = { }; struct update_stats_work { - struct work_struct work; uid_t uid; #ifdef CONFIG_UID_SYS_STATS_DEBUG struct task_struct *task; @@ -637,38 +636,46 @@ struct update_stats_work { struct task_io_accounting ioac; u64 utime; u64 stime; + struct update_stats_work *next; }; +static atomic_long_t work_usw; + static void update_stats_workfn(struct work_struct *work) { - struct update_stats_work *usw = - container_of(work, struct update_stats_work, work); + struct update_stats_work *usw; struct uid_entry *uid_entry; struct task_entry *task_entry __maybe_unused; rt_mutex_lock(&uid_lock); - uid_entry = find_uid_entry(usw->uid); - if (!uid_entry) - goto exit; + while ((usw = (struct update_stats_work *)atomic_long_read(&work_usw))) { + if (atomic_long_cmpxchg(&work_usw, (long)usw, (long)(usw->next)) != (long)usw) + continue; - uid_entry->utime += usw->utime; - uid_entry->stime += usw->stime; + uid_entry = find_uid_entry(usw->uid); + if (!uid_entry) + goto next; + + uid_entry->utime += usw->utime; + uid_entry->stime += usw->stime; #ifdef CONFIG_UID_SYS_STATS_DEBUG - task_entry = find_task_entry(uid_entry, usw->task); - if (!task_entry) - goto exit; - add_uid_tasks_io_stats(task_entry, &usw->ioac, - UID_STATE_DEAD_TASKS); + task_entry = find_task_entry(uid_entry, usw->task); + if (!task_entry) + goto next; + add_uid_tasks_io_stats(task_entry, &usw->ioac, + UID_STATE_DEAD_TASKS); #endif - __add_uid_io_stats(uid_entry, &usw->ioac, UID_STATE_DEAD_TASKS); -exit: + __add_uid_io_stats(uid_entry, &usw->ioac, UID_STATE_DEAD_TASKS); +next: +#ifdef CONFIG_UID_SYS_STATS_DEBUG + put_task_struct(usw->task); +#endif + kfree(usw); + } rt_mutex_unlock(&uid_lock); -#ifdef CONFIG_UID_SYS_STATS_DEBUG - put_task_struct(usw->task); -#endif - kfree(usw); } +static DECLARE_WORK(update_stats_work, update_stats_workfn); static int process_notifier(struct notifier_block *self, unsigned long cmd, void *v) @@ -687,7 +694,6 @@ static int process_notifier(struct notifier_block *self, usw = kmalloc(sizeof(struct update_stats_work), GFP_KERNEL); if (usw) { - INIT_WORK(&usw->work, update_stats_workfn); usw->uid = uid; #ifdef CONFIG_UID_SYS_STATS_DEBUG usw->task = get_task_struct(task); @@ -698,7 +704,9 @@ static int process_notifier(struct notifier_block *self, */ usw->ioac = task->ioac; task_cputime_adjusted(task, &usw->utime, &usw->stime); - schedule_work(&usw->work); + usw->next = (struct update_stats_work *)atomic_long_xchg(&work_usw, + (long)usw); + schedule_work(&update_stats_work); } return NOTIFY_OK; } diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index b6e0cc4571ea..59a559366b61 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2508,8 +2508,10 @@ static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc) gsm->has_devices = false; } for (i = NUM_DLCI - 1; i >= 0; i--) - if (gsm->dlci[i]) + if (gsm->dlci[i]) { gsm_dlci_release(gsm->dlci[i]); + gsm->dlci[i] = NULL; + } mutex_unlock(&gsm->mutex); /* Now wipe the queues */ tty_ldisc_flush(gsm->tty); diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 9568b13c05f4..93695ce5fef0 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -795,6 +795,9 @@ EXPORT_SYMBOL_GPL(usb_gadget_disconnect); * usb_gadget_activate() is called. For example, user mode components may * need to be activated before the system can talk to hosts. * + * This routine may sleep; it must not be called in interrupt context + * (such as from within a gadget driver's disconnect() callback). + * * Returns zero on success, else negative errno. */ int usb_gadget_deactivate(struct usb_gadget *gadget) @@ -833,6 +836,8 @@ EXPORT_SYMBOL_GPL(usb_gadget_deactivate); * This routine activates gadget which was previously deactivated with * usb_gadget_deactivate() call. It calls usb_gadget_connect() if needed. * + * This routine may sleep; it must not be called in interrupt context. + * * Returns zero on success, else negative errno. */ int usb_gadget_activate(struct usb_gadget *gadget) @@ -1625,7 +1630,11 @@ static void gadget_unbind_driver(struct device *dev) usb_gadget_disable_async_callbacks(udc); if (gadget->irq) synchronize_irq(gadget->irq); + mutex_unlock(&udc->connect_lock); + udc->driver->unbind(gadget); + + mutex_lock(&udc->connect_lock); usb_gadget_udc_stop_locked(udc); mutex_unlock(&udc->connect_lock); diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index a1930db0da1c..68674b19f15d 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -755,10 +755,14 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) /* normal [4.15.1.2] or error [4.15.1.1] completion */ if (likely ((status & (STS_INT|STS_ERR)) != 0)) { - if (likely ((status & STS_ERR) == 0)) + if (likely ((status & STS_ERR) == 0)) { INCR(ehci->stats.normal); - else + } else { + /* Force to check port status */ + if (ehci->has_fsl_port_bug) + status |= STS_PCD; INCR(ehci->stats.error); + } bh = 1; } diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index efe30e3be22f..1aee392e8492 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -674,7 +674,8 @@ ehci_hub_status_data (struct usb_hcd *hcd, char *buf) if ((temp & mask) != 0 || test_bit(i, &ehci->port_c_suspend) || (ehci->reset_done[i] && time_after_eq( - jiffies, ehci->reset_done[i]))) { + jiffies, ehci->reset_done[i])) + || ehci_has_ci_pec_bug(ehci, temp)) { if (i < 7) buf [0] |= 1 << (i + 1); else @@ -875,6 +876,13 @@ int ehci_hub_control( if (temp & PORT_PEC) status |= USB_PORT_STAT_C_ENABLE << 16; + if (ehci_has_ci_pec_bug(ehci, temp)) { + status |= USB_PORT_STAT_C_ENABLE << 16; + ehci_info(ehci, + "PE is cleared by HW port:%d PORTSC:%08x\n", + wIndex + 1, temp); + } + if ((temp & PORT_OCC) && (!ignore_oc && !ehci->spurious_oc)){ status |= USB_PORT_STAT_C_OVERCURRENT << 16; diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index bd542b6fc46b..7e834587e7de 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c @@ -490,13 +490,14 @@ static int tt_no_collision( static void enable_periodic(struct ehci_hcd *ehci) { if (ehci->periodic_count++) - return; + goto out; /* Stop waiting to turn off the periodic schedule */ ehci->enabled_hrtimer_events &= ~BIT(EHCI_HRTIMER_DISABLE_PERIODIC); /* Don't start the schedule until PSS is 0 */ ehci_poll_PSS(ehci); +out: turn_on_io_watchdog(ehci); } diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index ad3f13a3eaf1..4ee0d34323cf 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -707,6 +707,15 @@ ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc) */ #define ehci_has_fsl_susp_errata(e) ((e)->has_fsl_susp_errata) +/* + * Some Freescale/NXP processors using ChipIdea IP have a bug in which + * disabling the port (PE is cleared) does not cause PEC to be asserted + * when frame babble is detected. + */ +#define ehci_has_ci_pec_bug(e, portsc) \ + ((e)->has_fsl_port_bug && ((e)->command & CMD_PSE) \ + && !(portsc & PORT_PEC) && !(portsc & PORT_PE)) + /* * While most USB host controllers implement their registers in * little-endian format, a minority (celleb companion chip) implement diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 42909318609c..3829e1be0383 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -188,11 +188,10 @@ EXPORT_SYMBOL_GPL(xhci_plat_register_vendor_ops); static int xhci_vendor_init(struct xhci_hcd *xhci) { - struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); - struct xhci_plat_priv *priv = xhci_to_priv(xhci); + struct xhci_vendor_ops *ops = NULL; if (xhci_plat_vendor_overwrite.vendor_ops) - ops = priv->vendor_ops = xhci_plat_vendor_overwrite.vendor_ops; + ops = xhci->vendor_ops = xhci_plat_vendor_overwrite.vendor_ops; if (ops && ops->vendor_init) return ops->vendor_init(xhci); @@ -202,12 +201,11 @@ static int xhci_vendor_init(struct xhci_hcd *xhci) static void xhci_vendor_cleanup(struct xhci_hcd *xhci) { struct xhci_vendor_ops *ops = xhci_vendor_get_ops(xhci); - struct xhci_plat_priv *priv = xhci_to_priv(xhci); if (ops && ops->vendor_cleanup) ops->vendor_cleanup(xhci); - priv->vendor_ops = NULL; + xhci->vendor_ops = NULL; } static int xhci_plat_probe(struct platform_device *pdev) diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h index 5b096f72636f..e726a572321d 100644 --- a/drivers/usb/host/xhci-plat.h +++ b/drivers/usb/host/xhci-plat.h @@ -13,7 +13,6 @@ struct xhci_plat_priv { const char *firmware_name; unsigned long long quirks; - struct xhci_vendor_ops *vendor_ops; struct xhci_vendor_data *vendor_data; int (*plat_setup)(struct usb_hcd *); void (*plat_start)(struct usb_hcd *); diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 9304e0d42982..be041bd65b19 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -25,7 +25,6 @@ #include "xhci-trace.h" #include "xhci-debugfs.h" #include "xhci-dbgcap.h" -#include "xhci-plat.h" #define DRIVER_AUTHOR "Sarah Sharp" #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver" @@ -4517,7 +4516,7 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci, struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci) { - return xhci_to_priv(xhci)->vendor_ops; + return xhci->vendor_ops; } EXPORT_SYMBOL_GPL(xhci_vendor_get_ops); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 7e5cf6ad99b6..7af435b9d046 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1941,7 +1941,9 @@ struct xhci_hcd { void *dbc; - ANDROID_KABI_RESERVE(1); + /* Used for bug 194461020 */ + ANDROID_KABI_USE(1, struct xhci_vendor_ops *vendor_ops); + ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 8f3e84504c91..bb59327e4ab3 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3262,23 +3262,12 @@ static int tcpm_pd_select_pdo(struct tcpm_port *port, int *sink_pdo, return ret; } -#define min_pps_apdo_current(x, y) \ - min(pdo_pps_apdo_max_current(x), pdo_pps_apdo_max_current(y)) - static unsigned int tcpm_pd_select_pps_apdo(struct tcpm_port *port) { - unsigned int i, j, max_mw = 0, max_mv = 0; - unsigned int min_src_mv, max_src_mv, src_ma, src_mw; - unsigned int min_snk_mv, max_snk_mv; - unsigned int max_op_mv; - u32 pdo, src, snk; - unsigned int src_pdo = 0, snk_pdo = 0; + unsigned int i, src_ma, max_temp_mw = 0, max_op_ma, op_mw; + unsigned int src_pdo = 0; + u32 pdo, src; - /* - * Select the source PPS APDO providing the most power while staying - * within the board's limits. We skip the first PDO as this is always - * 5V 3A. - */ for (i = 1; i < port->nr_source_caps; ++i) { pdo = port->source_caps[i]; @@ -3289,54 +3278,17 @@ static unsigned int tcpm_pd_select_pps_apdo(struct tcpm_port *port) continue; } - min_src_mv = pdo_pps_apdo_min_voltage(pdo); - max_src_mv = pdo_pps_apdo_max_voltage(pdo); + if (port->pps_data.req_out_volt > pdo_pps_apdo_max_voltage(pdo) || + port->pps_data.req_out_volt < pdo_pps_apdo_min_voltage(pdo)) + continue; + src_ma = pdo_pps_apdo_max_current(pdo); - src_mw = (src_ma * max_src_mv) / 1000; - - /* - * Now search through the sink PDOs to find a matching - * PPS APDO. Again skip the first sink PDO as this will - * always be 5V 3A. - */ - for (j = 1; j < port->nr_snk_pdo; j++) { - pdo = port->snk_pdo[j]; - - switch (pdo_type(pdo)) { - case PDO_TYPE_APDO: - if (pdo_apdo_type(pdo) != APDO_TYPE_PPS) { - tcpm_log(port, - "Not PPS APDO (sink), ignoring"); - continue; - } - - min_snk_mv = - pdo_pps_apdo_min_voltage(pdo); - max_snk_mv = - pdo_pps_apdo_max_voltage(pdo); - break; - default: - tcpm_log(port, - "Not APDO type (sink), ignoring"); - continue; - } - - if (min_src_mv <= max_snk_mv && - max_src_mv >= min_snk_mv) { - max_op_mv = min(max_src_mv, max_snk_mv); - src_mw = (max_op_mv * src_ma) / 1000; - /* Prefer higher voltages if available */ - if ((src_mw == max_mw && - max_op_mv > max_mv) || - src_mw > max_mw) { - src_pdo = i; - snk_pdo = j; - max_mw = src_mw; - max_mv = max_op_mv; - } - } + max_op_ma = min(src_ma, port->pps_data.req_op_curr); + op_mw = max_op_ma * port->pps_data.req_out_volt / 1000; + if (op_mw > max_temp_mw) { + src_pdo = i; + max_temp_mw = op_mw; } - break; default: tcpm_log(port, "Not APDO type (source), ignoring"); @@ -3346,16 +3298,10 @@ static unsigned int tcpm_pd_select_pps_apdo(struct tcpm_port *port) if (src_pdo) { src = port->source_caps[src_pdo]; - snk = port->snk_pdo[snk_pdo]; - port->pps_data.req_min_volt = max(pdo_pps_apdo_min_voltage(src), - pdo_pps_apdo_min_voltage(snk)); - port->pps_data.req_max_volt = min(pdo_pps_apdo_max_voltage(src), - pdo_pps_apdo_max_voltage(snk)); - port->pps_data.req_max_curr = min_pps_apdo_current(src, snk); - port->pps_data.req_out_volt = min(port->pps_data.req_max_volt, - max(port->pps_data.req_min_volt, - port->pps_data.req_out_volt)); + port->pps_data.req_min_volt = pdo_pps_apdo_min_voltage(src); + port->pps_data.req_max_volt = pdo_pps_apdo_max_voltage(src); + port->pps_data.req_max_curr = pdo_pps_apdo_max_current(src); port->pps_data.req_op_curr = min(port->pps_data.req_max_curr, port->pps_data.req_op_curr); } @@ -3473,32 +3419,16 @@ static int tcpm_pd_send_request(struct tcpm_port *port) static int tcpm_pd_build_pps_request(struct tcpm_port *port, u32 *rdo) { unsigned int out_mv, op_ma, op_mw, max_mv, max_ma, flags; - enum pd_pdo_type type; unsigned int src_pdo_index; - u32 pdo; src_pdo_index = tcpm_pd_select_pps_apdo(port); if (!src_pdo_index) return -EOPNOTSUPP; - pdo = port->source_caps[src_pdo_index]; - type = pdo_type(pdo); - - switch (type) { - case PDO_TYPE_APDO: - if (pdo_apdo_type(pdo) != APDO_TYPE_PPS) { - tcpm_log(port, "Invalid APDO selected!"); - return -EINVAL; - } - max_mv = port->pps_data.req_max_volt; - max_ma = port->pps_data.req_max_curr; - out_mv = port->pps_data.req_out_volt; - op_ma = port->pps_data.req_op_curr; - break; - default: - tcpm_log(port, "Invalid PDO selected!"); - return -EINVAL; - } + max_mv = port->pps_data.req_max_volt; + max_ma = port->pps_data.req_max_curr; + out_mv = port->pps_data.req_out_volt; + op_ma = port->pps_data.req_op_curr; flags = RDO_USB_COMM | RDO_NO_SUSPEND; @@ -4326,7 +4256,9 @@ static void run_state_machine(struct tcpm_port *port) if (port->slow_charger_loop && (current_lim > PD_P_SNK_STDBY_MW / 5)) current_lim = PD_P_SNK_STDBY_MW / 5; tcpm_set_current_limit(port, current_lim, 5000); - tcpm_set_charge(port, true); + /* Not sink vbus if operational current is 0mA */ + tcpm_set_charge(port, !!pdo_max_current(port->snk_pdo[0])); + if (!port->pd_supported) tcpm_set_state(port, SNK_READY, 0); else @@ -4615,7 +4547,8 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_current_limit(port, tcpm_get_current_limit(port), 5000); - tcpm_set_charge(port, true); + /* Not sink vbus if operational current is 0mA */ + tcpm_set_charge(port, !!pdo_max_current(port->snk_pdo[0])); } if (port->ams == HARD_RESET) tcpm_ams_finish(port); @@ -5392,6 +5325,10 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) /* Do nothing, vbus drop expected */ break; + case SNK_HARD_RESET_WAIT_VBUS: + /* Do nothing, its OK to receive vbus off events */ + break; + default: if (port->pwr_role == TYPEC_SINK && port->attached) tcpm_set_state(port, SNK_UNATTACHED, tcpm_wait_for_discharge(port)); @@ -5443,6 +5380,9 @@ static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port) case SNK_DEBOUNCED: /*Do nothing, still waiting for VSAFE5V for connect */ break; + case SNK_HARD_RESET_WAIT_VBUS: + /* Do nothing, its OK to receive vbus off events */ + break; default: if (port->pwr_role == TYPEC_SINK && port->auto_vbus_discharge_enabled) tcpm_set_state(port, SNK_UNATTACHED, 0); @@ -5959,12 +5899,6 @@ static int tcpm_pps_set_out_volt(struct tcpm_port *port, u16 req_out_volt) goto port_unlock; } - if (req_out_volt < port->pps_data.min_volt || - req_out_volt > port->pps_data.max_volt) { - ret = -EINVAL; - goto port_unlock; - } - target_mw = (port->current_limit * req_out_volt) / 1000; if (target_mw < port->operating_snk_mw) { ret = -EINVAL; @@ -6493,11 +6427,7 @@ static int tcpm_psy_set_prop(struct power_supply *psy, ret = tcpm_psy_set_online(port, val); break; case POWER_SUPPLY_PROP_VOLTAGE_NOW: - if (val->intval < port->pps_data.min_volt * 1000 || - val->intval > port->pps_data.max_volt * 1000) - ret = -EINVAL; - else - ret = tcpm_pps_set_out_volt(port, val->intval / 1000); + ret = tcpm_pps_set_out_volt(port, val->intval / 1000); break; case POWER_SUPPLY_PROP_CURRENT_NOW: if (val->intval > port->pps_data.max_curr * 1000) diff --git a/drivers/video/fbdev/core/sysimgblt.c b/drivers/video/fbdev/core/sysimgblt.c index 335e92b813fc..665ef7a0a249 100644 --- a/drivers/video/fbdev/core/sysimgblt.c +++ b/drivers/video/fbdev/core/sysimgblt.c @@ -189,7 +189,7 @@ static void fast_imageblit(const struct fb_image *image, struct fb_info *p, u32 fgx = fgcolor, bgx = bgcolor, bpp = p->var.bits_per_pixel; u32 ppw = 32/bpp, spitch = (image->width + 7)/8; u32 bit_mask, eorx, shift; - const char *s = image->data, *src; + const u8 *s = image->data, *src; u32 *dst; const u32 *tab; size_t tablen; diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 444302afc673..e6c9c0e08448 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -315,10 +315,10 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec, * Grow the stack manually; some architectures have a limit on how * far ahead a user-space access may be in order to grow the stack. */ - if (mmap_read_lock_killable(mm)) + if (mmap_write_lock_killable(mm)) return -EINTR; - vma = find_extend_vma(mm, bprm->p); - mmap_read_unlock(mm); + vma = find_extend_vma_locked(mm, bprm->p); + mmap_write_unlock(mm); if (!vma) return -EFAULT; diff --git a/fs/drop_caches.c b/fs/drop_caches.c index e619c31b6bd9..b9575957a7c2 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "internal.h" /* A global variable is a bit ugly, but it keeps the code simple */ @@ -59,6 +60,7 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write, static int stfu; if (sysctl_drop_caches & 1) { + lru_add_drain_all(); iterate_supers(drop_pagecache_sb, NULL); count_vm_event(DROP_PAGECACHE); } diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index bc4971ee26d2..3d1b88efb075 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -1013,9 +1013,11 @@ static void z_erofs_do_decompressed_bvec(struct z_erofs_decompress_backend *be, struct z_erofs_bvec *bvec) { struct z_erofs_bvec_item *item; + unsigned int pgnr; - if (!((bvec->offset + be->pcl->pageofs_out) & ~PAGE_MASK)) { - unsigned int pgnr; + if (!((bvec->offset + be->pcl->pageofs_out) & ~PAGE_MASK) && + (bvec->end == PAGE_SIZE || + bvec->offset + bvec->end == be->pcl->length)) { pgnr = (bvec->offset + be->pcl->pageofs_out) >> PAGE_SHIFT; DBG_BUGON(pgnr >= be->nr_pages); diff --git a/fs/exec.c b/fs/exec.c index 2d6bca1cda6e..ef93a4d5911b 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -198,33 +198,39 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, int write) { struct page *page; + struct vm_area_struct *vma = bprm->vma; + struct mm_struct *mm = bprm->mm; int ret; - unsigned int gup_flags = FOLL_FORCE; -#ifdef CONFIG_STACK_GROWSUP - if (write) { - ret = expand_downwards(bprm->vma, pos); - if (ret < 0) + /* + * Avoid relying on expanding the stack down in GUP (which + * does not work for STACK_GROWSUP anyway), and just do it + * by hand ahead of time. + */ + if (write && pos < vma->vm_start) { + mmap_write_lock(mm); + ret = expand_downwards(vma, pos); + if (unlikely(ret < 0)) { + mmap_write_unlock(mm); return NULL; - } -#endif - - if (write) - gup_flags |= FOLL_WRITE; + } + mmap_write_downgrade(mm); + } else + mmap_read_lock(mm); /* * We are doing an exec(). 'current' is the process - * doing the exec and bprm->mm is the new process's mm. + * doing the exec and 'mm' is the new process's mm. */ - mmap_read_lock(bprm->mm); - ret = get_user_pages_remote(bprm->mm, pos, 1, gup_flags, + ret = get_user_pages_remote(mm, pos, 1, + write ? FOLL_WRITE : 0, &page, NULL, NULL); - mmap_read_unlock(bprm->mm); + mmap_read_unlock(mm); if (ret <= 0) return NULL; if (write) - acct_arg_size(bprm, vma_pages(bprm->vma)); + acct_arg_size(bprm, vma_pages(vma)); return page; } @@ -854,7 +860,7 @@ int setup_arg_pages(struct linux_binprm *bprm, stack_base = vma->vm_start - stack_expand; #endif current->mm->start_stack = bprm->p; - ret = expand_stack(vma, stack_base); + ret = expand_stack_locked(vma, stack_base); if (ret) ret = -EFAULT; diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 931c3397133c..9df0535ad20f 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -208,6 +208,7 @@ int fuse_create_open_backing( struct file *file, unsigned int flags, umode_t mode) { struct fuse_inode *dir_fuse_inode = get_fuse_inode(dir); + struct fuse_dentry *fuse_entry = get_fuse_dentry(entry); struct fuse_dentry *dir_fuse_dentry = get_fuse_dentry(entry->d_parent); struct dentry *backing_dentry = NULL; struct inode *inode = NULL; @@ -239,29 +240,28 @@ int fuse_create_open_backing( if (err) goto out; - if (get_fuse_dentry(entry)->backing_path.dentry) - path_put(&get_fuse_dentry(entry)->backing_path); - get_fuse_dentry(entry)->backing_path = (struct path) { + if (fuse_entry->backing_path.dentry) + path_put(&fuse_entry->backing_path); + fuse_entry->backing_path = (struct path) { .mnt = dir_fuse_dentry->backing_path.mnt, .dentry = backing_dentry, }; - path_get(&get_fuse_dentry(entry)->backing_path); + path_get(&fuse_entry->backing_path); if (d_inode) target_nodeid = get_fuse_inode(d_inode)->nodeid; inode = fuse_iget_backing(dir->i_sb, target_nodeid, - get_fuse_dentry(entry)->backing_path.dentry->d_inode); - if (IS_ERR(inode)) { - err = PTR_ERR(inode); + fuse_entry->backing_path.dentry->d_inode); + if (!inode) { + err = -EIO; goto out; } if (get_fuse_inode(inode)->bpf) bpf_prog_put(get_fuse_inode(inode)->bpf); - get_fuse_inode(inode)->bpf = dir_fuse_inode->bpf; - if (get_fuse_inode(inode)->bpf) - bpf_prog_inc(dir_fuse_inode->bpf); + get_fuse_inode(inode)->bpf = fuse_entry->bpf; + fuse_entry->bpf = NULL; newent = d_splice_alias(inode, entry); if (IS_ERR(newent)) { @@ -269,10 +269,12 @@ int fuse_create_open_backing( goto out; } + inode = NULL; entry = newent ? newent : entry; err = finish_open(file, entry, fuse_open_file_backing); out: + iput(inode); dput(backing_dentry); return err; } @@ -966,6 +968,19 @@ void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa, return ERR_PTR(fwio->ret); } +long fuse_backing_ioctl(struct file *file, unsigned int command, unsigned long arg, int flags) +{ + struct fuse_file *ff = file->private_data; + long ret; + + if (flags & FUSE_IOCTL_COMPAT) + ret = -ENOTTY; + else + ret = vfs_ioctl(ff->backing_file, command, arg); + + return ret; +} + int fuse_file_flock_backing(struct file *file, int cmd, struct file_lock *fl) { struct fuse_file *ff = file->private_data; @@ -1225,61 +1240,62 @@ int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent, struct dentry *fuse_lookup_finalize(struct fuse_bpf_args *fa, struct inode *dir, struct dentry *entry, unsigned int flags) { - struct fuse_dentry *fd; - struct dentry *bd; - struct inode *inode, *backing_inode; - struct inode *d_inode = entry->d_inode; + struct fuse_dentry *fuse_entry; + struct dentry *backing_entry; + struct inode *inode = NULL, *backing_inode; + struct inode *entry_inode = entry->d_inode; struct fuse_entry_out *feo = fa->out_args[0].value; struct fuse_entry_bpf_out *febo = fa->out_args[1].value; - struct fuse_entry_bpf *feb = container_of(febo, struct fuse_entry_bpf, out); + struct fuse_entry_bpf *feb = container_of(febo, struct fuse_entry_bpf, + out); int error = -1; u64 target_nodeid = 0; - struct dentry *ret; + struct dentry *ret = NULL; - fd = get_fuse_dentry(entry); - if (!fd) { + fuse_entry = get_fuse_dentry(entry); + if (!fuse_entry) { ret = ERR_PTR(-EIO); goto out; } - bd = fd->backing_path.dentry; - if (!bd) { + backing_entry = fuse_entry->backing_path.dentry; + if (!backing_entry) { ret = ERR_PTR(-ENOENT); goto out; } - backing_inode = bd->d_inode; - if (!backing_inode) { - ret = 0; - goto out; - } + if (entry_inode) + target_nodeid = get_fuse_inode(entry_inode)->nodeid; - if (d_inode) - target_nodeid = get_fuse_inode(d_inode)->nodeid; + backing_inode = backing_entry->d_inode; + if (backing_inode) + inode = fuse_iget_backing(dir->i_sb, target_nodeid, + backing_inode); - inode = fuse_iget_backing(dir->i_sb, target_nodeid, backing_inode); - - if (IS_ERR(inode)) { - ret = ERR_PTR(PTR_ERR(inode)); - goto out; - } - - error = fuse_handle_bpf_prog(feb, dir, &get_fuse_inode(inode)->bpf); + error = inode ? + fuse_handle_bpf_prog(feb, dir, &get_fuse_inode(inode)->bpf) : + fuse_handle_bpf_prog(feb, dir, &fuse_entry->bpf); if (error) { ret = ERR_PTR(error); goto out; } - error = fuse_handle_backing(feb, &get_fuse_inode(inode)->backing_inode, &fd->backing_path); - if (error) { - ret = ERR_PTR(error); - goto out; + if (inode) { + error = fuse_handle_backing(feb, + &get_fuse_inode(inode)->backing_inode, + &fuse_entry->backing_path); + if (error) { + ret = ERR_PTR(error); + goto out; + } + + get_fuse_inode(inode)->nodeid = feo->nodeid; + ret = d_splice_alias(inode, entry); + if (!IS_ERR(ret)) + inode = NULL; } - - get_fuse_inode(inode)->nodeid = feo->nodeid; - - ret = d_splice_alias(inode, entry); out: + iput(inode); if (feb->backing_file) fput(feb->backing_file); return ret; diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 076a0bddef8f..59dee8d5b578 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -364,9 +364,14 @@ static void fuse_dentry_release(struct dentry *dentry) { struct fuse_dentry *fd = dentry->d_fsdata; +#ifdef CONFIG_FUSE_BPF if (fd && fd->backing_path.dentry) path_put(&fd->backing_path); + if (fd && fd->bpf) + bpf_prog_put(fd->bpf); +#endif + kfree_rcu(fd, rcu); } #endif @@ -504,7 +509,6 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name if (name->len > FUSE_NAME_MAX) goto out; - forget = fuse_alloc_forget(); err = -ENOMEM; if (!forget) @@ -523,32 +527,34 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name err = -ENOENT; if (!entry) - goto out_queue_forget; + goto out_put_forget; err = -EINVAL; backing_file = bpf_arg.backing_file; if (!backing_file) - goto out_queue_forget; + goto out_put_forget; if (IS_ERR(backing_file)) { err = PTR_ERR(backing_file); - goto out_queue_forget; + goto out_put_forget; } backing_inode = backing_file->f_inode; *inode = fuse_iget_backing(sb, outarg->nodeid, backing_inode); if (!*inode) - goto out; + goto out_put_forget; err = fuse_handle_backing(&bpf_arg, &get_fuse_inode(*inode)->backing_inode, &get_fuse_dentry(entry)->backing_path); - if (err) - goto out; - - err = fuse_handle_bpf_prog(&bpf_arg, NULL, &get_fuse_inode(*inode)->bpf); - if (err) - goto out; + if (!err) + err = fuse_handle_bpf_prog(&bpf_arg, NULL, + &get_fuse_inode(*inode)->bpf); + if (err) { + iput(*inode); + *inode = NULL; + goto out_put_forget; + } } else #endif { @@ -568,9 +574,6 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name } err = -ENOMEM; -#ifdef CONFIG_FUSE_BPF -out_queue_forget: -#endif if (!*inode && outarg->nodeid) { fuse_queue_forget(fm->fc, forget, outarg->nodeid, 1); goto out; diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 475442c9ad7e..723d462a54eb 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -76,7 +76,13 @@ struct fuse_dentry { u64 time; struct rcu_head rcu; }; + +#ifdef CONFIG_FUSE_BPF struct path backing_path; + + /* bpf program *only* set for negative dentries */ + struct bpf_prog *bpf; +#endif }; static inline struct fuse_dentry *get_fuse_dentry(const struct dentry *entry) @@ -1664,6 +1670,8 @@ int fuse_file_write_iter_backing(struct fuse_bpf_args *fa, void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa, struct kiocb *iocb, struct iov_iter *from); +long fuse_backing_ioctl(struct file *file, unsigned int command, unsigned long arg, int flags); + int fuse_file_flock_backing(struct file *file, int cmd, struct file_lock *fl); ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma); diff --git a/fs/fuse/ioctl.c b/fs/fuse/ioctl.c index 8ba1545e01f9..d266f640266f 100644 --- a/fs/fuse/ioctl.c +++ b/fs/fuse/ioctl.c @@ -353,6 +353,15 @@ long fuse_ioctl_common(struct file *file, unsigned int cmd, if (fuse_is_bad(inode)) return -EIO; +#ifdef CONFIG_FUSE_BPF + { + struct fuse_file *ff = file->private_data; + + /* TODO - this is simply passthrough, not a proper BPF filter */ + if (ff->backing_file) + return fuse_backing_ioctl(file, cmd, arg, flags); + } +#endif return fuse_do_ioctl(file, cmd, arg, flags); } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index a23541614a0d..fe244a271620 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -758,12 +758,14 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask, static const struct mm_walk_ops smaps_walk_ops = { .pmd_entry = smaps_pte_range, .hugetlb_entry = smaps_hugetlb_range, + .walk_lock = PGWALK_RDLOCK, }; static const struct mm_walk_ops smaps_shmem_walk_ops = { .pmd_entry = smaps_pte_range, .hugetlb_entry = smaps_hugetlb_range, .pte_hole = smaps_pte_hole, + .walk_lock = PGWALK_RDLOCK, }; /* @@ -1247,6 +1249,7 @@ static int clear_refs_test_walk(unsigned long start, unsigned long end, static const struct mm_walk_ops clear_refs_walk_ops = { .pmd_entry = clear_refs_pte_range, .test_walk = clear_refs_test_walk, + .walk_lock = PGWALK_WRLOCK, }; static ssize_t clear_refs_write(struct file *file, const char __user *buf, @@ -1623,6 +1626,7 @@ static const struct mm_walk_ops pagemap_ops = { .pmd_entry = pagemap_pmd_range, .pte_hole = pagemap_pte_hole, .hugetlb_entry = pagemap_hugetlb_range, + .walk_lock = PGWALK_RDLOCK, }; /* @@ -1929,6 +1933,7 @@ static int gather_hugetlb_stats(pte_t *pte, unsigned long hmask, static const struct mm_walk_ops show_numa_ops = { .hugetlb_entry = gather_hugetlb_stats, .pmd_entry = gather_pte_stats, + .walk_lock = PGWALK_RDLOCK, }; /* diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 65bf92615772..bec3e2341421 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -247,18 +247,17 @@ static inline struct uffd_msg userfault_msg(unsigned long address, * hugepmd ranges. */ static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, - struct vm_area_struct *vma, - unsigned long address, - unsigned long flags, - unsigned long reason) + struct vm_fault *vmf, + unsigned long reason) { + struct vm_area_struct *vma = vmf->vma; struct mm_struct *mm = ctx->mm; pte_t *ptep, pte; bool ret = true; - mmap_assert_locked(mm); + assert_fault_locked(vmf); - ptep = huge_pte_offset(mm, address, vma_mmu_pagesize(vma)); + ptep = huge_pte_offset(mm, vmf->address, vma_mmu_pagesize(vma)); if (!ptep) goto out; @@ -280,10 +279,8 @@ static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, } #else static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, - struct vm_area_struct *vma, - unsigned long address, - unsigned long flags, - unsigned long reason) + struct vm_fault *vmf, + unsigned long reason) { return false; /* should never get here */ } @@ -297,11 +294,11 @@ static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx, * threads. */ static inline bool userfaultfd_must_wait(struct userfaultfd_ctx *ctx, - unsigned long address, - unsigned long flags, + struct vm_fault *vmf, unsigned long reason) { struct mm_struct *mm = ctx->mm; + unsigned long address = vmf->address; pgd_t *pgd; p4d_t *p4d; pud_t *pud; @@ -309,7 +306,7 @@ static inline bool userfaultfd_must_wait(struct userfaultfd_ctx *ctx, pte_t *pte; bool ret = true; - mmap_assert_locked(mm); + assert_fault_locked(vmf); pgd = pgd_offset(mm, address); if (!pgd_present(*pgd)) @@ -416,7 +413,7 @@ vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason) * Coredumping runs without mmap_lock so we can only check that * the mmap_lock is held, if PF_DUMPCORE was not set. */ - mmap_assert_locked(mm); + assert_fault_locked(vmf); ctx = vmf->vma->vm_userfaultfd_ctx.ctx; if (!ctx) @@ -523,13 +520,10 @@ vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason) spin_unlock_irq(&ctx->fault_pending_wqh.lock); if (!is_vm_hugetlb_page(vmf->vma)) - must_wait = userfaultfd_must_wait(ctx, vmf->address, vmf->flags, - reason); + must_wait = userfaultfd_must_wait(ctx, vmf, reason); else - must_wait = userfaultfd_huge_must_wait(ctx, vmf->vma, - vmf->address, - vmf->flags, reason); - mmap_read_unlock(mm); + must_wait = userfaultfd_huge_must_wait(ctx, vmf, reason); + release_fault_lock(vmf); if (likely(must_wait && !READ_ONCE(ctx->released))) { wake_up_poll(&ctx->fd_wqh, EPOLLIN); @@ -632,6 +626,7 @@ static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx, mmap_write_lock(mm); for_each_vma(vmi, vma) { if (vma->vm_userfaultfd_ctx.ctx == release_new_ctx) { + vma_start_write(vma); vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; userfaultfd_set_vm_flags(vma, vma->vm_flags & ~__VM_UFFD_FLAGS); @@ -667,6 +662,7 @@ int dup_userfaultfd(struct vm_area_struct *vma, struct list_head *fcs) octx = vma->vm_userfaultfd_ctx.ctx; if (!octx || !(octx->features & UFFD_FEATURE_EVENT_FORK)) { + vma_start_write(vma); vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; userfaultfd_set_vm_flags(vma, vma->vm_flags & ~__VM_UFFD_FLAGS); return 0; @@ -748,6 +744,7 @@ void mremap_userfaultfd_prep(struct vm_area_struct *vma, atomic_inc(&ctx->mmap_changing); } else { /* Drop uffd context if remap feature not enabled */ + vma_start_write(vma); vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; userfaultfd_set_vm_flags(vma, vma->vm_flags & ~__VM_UFFD_FLAGS); } @@ -906,6 +903,7 @@ static int userfaultfd_release(struct inode *inode, struct file *file) prev = vma; } + vma_start_write(vma); userfaultfd_set_vm_flags(vma, new_flags); vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; } @@ -1474,6 +1472,7 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, * the next vma was merged into the current one and * the current one has not been updated yet. */ + vma_start_write(vma); userfaultfd_set_vm_flags(vma, new_flags); vma->vm_userfaultfd_ctx.ctx = ctx; @@ -1662,6 +1661,7 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, * the next vma was merged into the current one and * the current one has not been updated yet. */ + vma_start_write(vma); userfaultfd_set_vm_flags(vma, new_flags); vma->vm_userfaultfd_ctx = NULL_VM_UFFD_CTX; diff --git a/include/linux/blk-crypto-profile.h b/include/linux/blk-crypto-profile.h index 8b30d04ef008..794f608a8994 100644 --- a/include/linux/blk-crypto-profile.h +++ b/include/linux/blk-crypto-profile.h @@ -131,6 +131,9 @@ struct blk_crypto_profile { * keyslots while ensuring that they can't be changed concurrently. */ struct rw_semaphore lock; +#ifdef CONFIG_LOCKDEP + struct lock_class_key lockdep_key; +#endif /* List of idle slots, with least recently used slot at front */ wait_queue_head_t idle_slots_wait_queue; diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 775cdc0b4f24..be572c3a4dcd 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -584,7 +584,7 @@ static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr) } struct dma_fence *dma_fence_get_stub(void); -struct dma_fence *dma_fence_allocate_private_stub(void); +struct dma_fence *dma_fence_allocate_private_stub(ktime_t timestamp); u64 dma_fence_context_alloc(unsigned num); extern const struct dma_fence_ops dma_fence_array_ops; diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 94b50dc0e131..a2d4e15464c3 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -319,6 +319,32 @@ static inline void copy_user_highpage(struct page *to, struct page *from, #endif +#ifdef copy_mc_to_kernel +static inline int copy_mc_user_highpage(struct page *to, struct page *from, + unsigned long vaddr, struct vm_area_struct *vma) +{ + unsigned long ret; + char *vfrom, *vto; + + vfrom = kmap_local_page(from); + vto = kmap_local_page(to); + ret = copy_mc_to_kernel(vto, vfrom, PAGE_SIZE); + if (!ret) + kmsan_unpoison_memory(page_address(to), PAGE_SIZE); + kunmap_local(vto); + kunmap_local(vfrom); + + return ret; +} +#else +static inline int copy_mc_user_highpage(struct page *to, struct page *from, + unsigned long vaddr, struct vm_area_struct *vma) +{ + copy_user_highpage(to, from, vaddr, vma); + return 0; +} +#endif + #ifndef __HAVE_ARCH_COPY_HIGHPAGE static inline void copy_highpage(struct page *to, struct page *from) diff --git a/include/linux/mm.h b/include/linux/mm.h index ab2f33910d06..8c1bfae77799 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -635,8 +635,14 @@ struct vm_operations_struct { */ static inline bool vma_start_read(struct vm_area_struct *vma) { - /* Check before locking. A race might cause false locked result. */ - if (vma->vm_lock_seq == READ_ONCE(vma->vm_mm->mm_lock_seq)) + /* + * Check before locking. A race might cause false locked result. + * We can use READ_ONCE() for the mm_lock_seq here, and don't need + * ACQUIRE semantics, because this is just a lockless check whose result + * we don't rely on for anything - the mm_lock_seq read against which we + * need ordering is below. + */ + if (READ_ONCE(vma->vm_lock_seq) == READ_ONCE(vma->vm_mm->mm_lock_seq)) return false; if (unlikely(down_read_trylock(&vma->vm_lock->lock) == 0)) @@ -647,8 +653,13 @@ static inline bool vma_start_read(struct vm_area_struct *vma) * False unlocked result is impossible because we modify and check * vma->vm_lock_seq under vma->vm_lock protection and mm->mm_lock_seq * modification invalidates all existing locks. + * + * We must use ACQUIRE semantics for the mm_lock_seq so that if we are + * racing with vma_end_write_all(), we only start reading from the VMA + * after it has been unlocked. + * This pairs with RELEASE semantics in vma_end_write_all(). */ - if (unlikely(vma->vm_lock_seq == READ_ONCE(vma->vm_mm->mm_lock_seq))) { + if (unlikely(vma->vm_lock_seq == smp_load_acquire(&vma->vm_mm->mm_lock_seq))) { up_read(&vma->vm_lock->lock); return false; } @@ -662,6 +673,7 @@ static inline void vma_end_read(struct vm_area_struct *vma) rcu_read_unlock(); } +/* WARNING! Can only be used if mmap_lock is expected to be write-locked */ static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq) { mmap_assert_write_locked(vma->vm_mm); @@ -670,10 +682,15 @@ static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq) * current task is holding mmap_write_lock, both vma->vm_lock_seq and * mm->mm_lock_seq can't be concurrently modified. */ - *mm_lock_seq = READ_ONCE(vma->vm_mm->mm_lock_seq); + *mm_lock_seq = vma->vm_mm->mm_lock_seq; return (vma->vm_lock_seq == *mm_lock_seq); } +/* + * Begin writing to a VMA. + * Exclude concurrent readers under the per-VMA lock until the currently + * write-locked mmap_lock is dropped or downgraded. + */ static inline void vma_start_write(struct vm_area_struct *vma) { int mm_lock_seq; @@ -682,7 +699,13 @@ static inline void vma_start_write(struct vm_area_struct *vma) return; down_write(&vma->vm_lock->lock); - vma->vm_lock_seq = mm_lock_seq; + /* + * We should use WRITE_ONCE() here because we can have concurrent reads + * from the early lockless pessimistic check in vma_start_read(). + * We don't really care about the correctness of that early check, but + * we should use WRITE_ONCE() for cleanliness and to keep KCSAN happy. + */ + WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); up_write(&vma->vm_lock->lock); } @@ -696,7 +719,7 @@ static inline bool vma_try_start_write(struct vm_area_struct *vma) if (!down_write_trylock(&vma->vm_lock->lock)) return false; - vma->vm_lock_seq = mm_lock_seq; + WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); up_write(&vma->vm_lock->lock); return true; } @@ -708,6 +731,12 @@ static inline void vma_assert_write_locked(struct vm_area_struct *vma) VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma); } +static inline void vma_assert_locked(struct vm_area_struct *vma) +{ + if (!rwsem_is_locked(&vma->vm_lock->lock)) + vma_assert_write_locked(vma); +} + static inline void vma_mark_detached(struct vm_area_struct *vma, bool detached) { /* When detaching vma should be write-locked */ @@ -716,6 +745,22 @@ static inline void vma_mark_detached(struct vm_area_struct *vma, bool detached) vma->detached = detached; } +static inline void release_fault_lock(struct vm_fault *vmf) +{ + if (vmf->flags & FAULT_FLAG_VMA_LOCK) + vma_end_read(vmf->vma); + else + mmap_read_unlock(vmf->vma->vm_mm); +} + +static inline void assert_fault_locked(struct vm_fault *vmf) +{ + if (vmf->flags & FAULT_FLAG_VMA_LOCK) + vma_assert_locked(vmf->vma); + else + mmap_assert_locked(vmf->vma->vm_mm); +} + struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, unsigned long address); @@ -728,10 +773,27 @@ static inline void vma_end_read(struct vm_area_struct *vma) {} static inline void vma_start_write(struct vm_area_struct *vma) {} static inline bool vma_try_start_write(struct vm_area_struct *vma) { return true; } -static inline void vma_assert_write_locked(struct vm_area_struct *vma) {} +static inline void vma_assert_write_locked(struct vm_area_struct *vma) + { mmap_assert_write_locked(vma->vm_mm); } static inline void vma_mark_detached(struct vm_area_struct *vma, bool detached) {} +static inline void release_fault_lock(struct vm_fault *vmf) +{ + mmap_read_unlock(vmf->vma->vm_mm); +} + +static inline void assert_fault_locked(struct vm_fault *vmf) +{ + mmap_assert_locked(vmf->vma->vm_mm); +} + +static inline struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, + unsigned long address) +{ + return NULL; +} + #endif /* CONFIG_PER_VMA_LOCK */ /* @@ -756,18 +818,22 @@ static inline void vm_flags_init(struct vm_area_struct *vma, ACCESS_PRIVATE(vma, __vm_flags) = flags; } -/* Use when VMA is part of the VMA tree and modifications need coordination */ +/* + * Use when VMA is part of the VMA tree and modifications need coordination + * Note: vm_flags_reset and vm_flags_reset_once do not lock the vma and + * it should be locked explicitly beforehand. + */ static inline void vm_flags_reset(struct vm_area_struct *vma, vm_flags_t flags) { - vma_start_write(vma); + vma_assert_write_locked(vma); vm_flags_init(vma, flags); } static inline void vm_flags_reset_once(struct vm_area_struct *vma, vm_flags_t flags) { - vma_start_write(vma); + vma_assert_write_locked(vma); WRITE_ONCE(ACCESS_PRIVATE(vma, __vm_flags), flags); } @@ -2117,6 +2183,8 @@ void unmap_mapping_pages(struct address_space *mapping, pgoff_t start, pgoff_t nr, bool even_cows); void unmap_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen, int even_cows); +struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm, + unsigned long address, struct pt_regs *regs); #else static inline vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, unsigned int flags, @@ -2993,16 +3061,11 @@ extern vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf); extern unsigned long stack_guard_gap; /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */ -extern int expand_stack(struct vm_area_struct *vma, unsigned long address); +int expand_stack_locked(struct vm_area_struct *vma, unsigned long address); +struct vm_area_struct *expand_stack(struct mm_struct * mm, unsigned long addr); /* CONFIG_STACK_GROWSUP still needs to grow downwards at some places */ -extern int expand_downwards(struct vm_area_struct *vma, - unsigned long address); -#if VM_GROWSUP -extern int expand_upwards(struct vm_area_struct *vma, unsigned long address); -#else - #define expand_upwards(vma, address) (0) -#endif +int expand_downwards(struct vm_area_struct *vma, unsigned long address); /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */ extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); @@ -3098,6 +3161,8 @@ unsigned long change_prot_numa(struct vm_area_struct *vma, #endif struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr); +struct vm_area_struct *find_extend_vma_locked(struct mm_struct *, + unsigned long addr); int remap_pfn_range(struct vm_area_struct *, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t); int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr, @@ -3480,7 +3545,6 @@ enum mf_flags { int mf_dax_kill_procs(struct address_space *mapping, pgoff_t index, unsigned long count, int mf_flags); extern int memory_failure(unsigned long pfn, int flags); -extern void memory_failure_queue(unsigned long pfn, int flags); extern void memory_failure_queue_kick(int cpu); extern int unpoison_memory(unsigned long pfn); extern int sysctl_memory_failure_early_kill; @@ -3489,8 +3553,12 @@ extern void shake_page(struct page *p); extern atomic_long_t num_poisoned_pages __read_mostly; extern int soft_offline_page(unsigned long pfn, int flags); #ifdef CONFIG_MEMORY_FAILURE +extern void memory_failure_queue(unsigned long pfn, int flags); extern int __get_huge_page_for_hwpoison(unsigned long pfn, int flags); #else +static inline void memory_failure_queue(unsigned long pfn, int flags) +{ +} static inline int __get_huge_page_for_hwpoison(unsigned long pfn, int flags) { return 0; diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 00f5715a28c7..4e9453ab5985 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -478,6 +478,20 @@ struct vm_area_struct { }; #ifdef CONFIG_PER_VMA_LOCK + /* + * Can only be written (using WRITE_ONCE()) while holding both: + * - mmap_lock (in write mode) + * - vm_lock->lock (in write mode) + * Can be read reliably while holding one of: + * - mmap_lock (in read or write mode) + * - vm_lock->lock (in read or write mode) + * Can be read unreliably (using READ_ONCE()) for pessimistic bailout + * while holding nothing (except RCU to keep the VMA struct allocated). + * + * This sequence counter is explicitly allowed to overflow; sequence + * counter reuse can only lead to occasional unnecessary use of the + * slowpath. + */ int vm_lock_seq; struct vma_lock *vm_lock; @@ -618,6 +632,20 @@ struct mm_struct { * by mmlist_lock */ #ifdef CONFIG_PER_VMA_LOCK + /* + * This field has lock-like semantics, meaning it is sometimes + * accessed with ACQUIRE/RELEASE semantics. + * Roughly speaking, incrementing the sequence number is + * equivalent to releasing locks on VMAs; reading the sequence + * number can be part of taking a read lock on a VMA. + * + * Can be modified under write mmap_lock using RELEASE + * semantics. + * Can be read with no other protection when holding write + * mmap_lock. + * Can be read with ACQUIRE semantics if not holding write + * mmap_lock. + */ int mm_lock_seq; #endif diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index aab8f1b28d26..4745ea859398 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -73,11 +73,25 @@ static inline void mmap_assert_write_locked(struct mm_struct *mm) } #ifdef CONFIG_PER_VMA_LOCK +/* + * Drop all currently-held per-VMA locks. + * This is called from the mmap_lock implementation directly before releasing + * a write-locked mmap_lock (or downgrading it to read-locked). + * This should normally NOT be called manually from other places. + * If you want to call this manually anyway, keep in mind that this will release + * *all* VMA write locks, including ones from further up the stack. + */ static inline void vma_end_write_all(struct mm_struct *mm) { mmap_assert_write_locked(mm); - /* No races during update due to exclusive mmap_lock being held */ - WRITE_ONCE(mm->mm_lock_seq, mm->mm_lock_seq + 1); + /* + * Nobody can concurrently modify mm->mm_lock_seq due to exclusive + * mmap_lock being held. + * We need RELEASE semantics here to ensure that preceding stores into + * the VMA take effect before we unlock it with this store. + * Pairs with ACQUIRE semantics in vma_start_read(). + */ + smp_store_release(&mm->mm_lock_seq, mm->mm_lock_seq + 1); } #else static inline void vma_end_write_all(struct mm_struct *mm) {} diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index df232c0003de..17a18aed632b 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -882,8 +882,7 @@ static inline bool wake_page_match(struct wait_page_queue *wait_page, void __folio_lock(struct folio *folio); int __folio_lock_killable(struct folio *folio); -bool __folio_lock_or_retry(struct folio *folio, struct mm_struct *mm, - unsigned int flags); +vm_fault_t __folio_lock_or_retry(struct folio *folio, struct vm_fault *vmf); void unlock_page(struct page *page); void folio_unlock(struct folio *folio); @@ -997,11 +996,13 @@ static inline int lock_page_killable(struct page *page) * Return value and mmap_lock implications depend on flags; see * __folio_lock_or_retry(). */ -static inline bool folio_lock_or_retry(struct folio *folio, - struct mm_struct *mm, unsigned int flags) +static inline vm_fault_t folio_lock_or_retry(struct folio *folio, + struct vm_fault *vmf) { might_sleep(); - return folio_trylock(folio) || __folio_lock_or_retry(folio, mm, flags); + if (!folio_trylock(folio)) + return __folio_lock_or_retry(folio, vmf); + return 0; } /* diff --git a/include/linux/pagewalk.h b/include/linux/pagewalk.h index f3fafb731ffd..d29ada832fa1 100644 --- a/include/linux/pagewalk.h +++ b/include/linux/pagewalk.h @@ -6,6 +6,16 @@ struct mm_walk; +/* Locking requirement during a page walk. */ +enum page_walk_lock { + /* mmap_lock should be locked for read to stabilize the vma tree */ + PGWALK_RDLOCK = 0, + /* vma will be write-locked during the walk */ + PGWALK_WRLOCK = 1, + /* vma is expected to be already write-locked during the walk */ + PGWALK_WRLOCK_VERIFY = 2, +}; + /** * struct mm_walk_ops - callbacks for walk_page_range * @pgd_entry: if set, called for each non-empty PGD (top-level) entry @@ -55,6 +65,7 @@ struct mm_walk_ops { int (*pre_vma)(unsigned long start, unsigned long end, struct mm_walk *walk); void (*post_vma)(struct mm_walk *walk); + enum page_walk_lock walk_lock; }; /* diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmflags.h index e87cb2b80ed3..3e06b3fe81a6 100644 --- a/include/trace/events/mmflags.h +++ b/include/trace/events/mmflags.h @@ -51,7 +51,8 @@ gfpflag_string(__GFP_RECLAIM), \ gfpflag_string(__GFP_DIRECT_RECLAIM), \ gfpflag_string(__GFP_KSWAPD_RECLAIM), \ - gfpflag_string(__GFP_ZEROTAGS) + gfpflag_string(__GFP_ZEROTAGS), \ + gfpflag_string(__GFP_CMA) #ifdef CONFIG_KASAN_HW_TAGS #define __def_gfpflag_names_kasan , \ diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h index dc6b47dcb21d..a50e6abc55ee 100644 --- a/include/trace/hooks/cgroup.h +++ b/include/trace/hooks/cgroup.h @@ -21,11 +21,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_refrigerator, DECLARE_HOOK(android_vh_cgroup_attach, TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset), - TP_ARGS(ss, tset)) -DECLARE_RESTRICTED_HOOK(android_rvh_cgroup_force_kthread_migration, - TP_PROTO(struct task_struct *tsk, struct cgroup *dst_cgrp, bool *force_migration), - TP_ARGS(tsk, dst_cgrp, force_migration), 1); - + TP_ARGS(ss, tset)); DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork, TP_PROTO(struct task_struct *p, bool *inherit_cpus), diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index cbf3dfd38d36..1552b71c1792 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -91,7 +91,16 @@ DECLARE_HOOK(android_vh_alter_mutex_list_add, DECLARE_HOOK(android_vh_mutex_unlock_slowpath, TP_PROTO(struct mutex *lock), TP_ARGS(lock)); - +struct rt_mutex_waiter; +struct ww_acquire_ctx; +DECLARE_HOOK(android_vh_task_blocks_on_rtmutex, + TP_PROTO(struct rt_mutex_base *lock, struct rt_mutex_waiter *waiter, + struct task_struct *task, struct ww_acquire_ctx *ww_ctx, + unsigned int *chwalk), + TP_ARGS(lock, waiter, task, ww_ctx, chwalk)); +DECLARE_HOOK(android_vh_rtmutex_waiter_prio, + TP_PROTO(struct task_struct *task, int *waiter_prio), + TP_ARGS(task, waiter_prio)); #endif /* _TRACE_HOOK_DTASK_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index cf27ab461c4e..e49cc31ea70d 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -11,6 +11,7 @@ struct shmem_inode_info; struct folio; +struct page_vma_mapped_walk; DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio, TP_PROTO(struct shmem_inode_info *info, struct folio **folio), @@ -129,6 +130,16 @@ DECLARE_HOOK(android_vh_free_one_page_bypass, TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype, int fpi_flags, bool *bypass), TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass)); +DECLARE_HOOK(android_vh_test_clear_look_around_ref, + TP_PROTO(struct page *page), + TP_ARGS(page)); +DECLARE_HOOK(android_vh_look_around_migrate_folio, + TP_PROTO(struct folio *old_folio, struct folio *new_folio), + TP_ARGS(old_folio, new_folio)); +DECLARE_HOOK(android_vh_look_around, + TP_PROTO(struct page_vma_mapped_walk *pvmw, struct folio *folio, + struct vm_area_struct *vma, int *referenced), + TP_ARGS(pvmw, folio, vma, referenced)); #endif /* _TRACE_HOOK_MM_H */ diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 811f07f7be61..4cc3f0cded7b 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -52,6 +52,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_finish_prio_fork, TP_PROTO(struct task_struct *p), TP_ARGS(p), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_rtmutex_force_update, + TP_PROTO(struct task_struct *p, struct task_struct *pi_task, int *update), + TP_ARGS(p, pi_task, update), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_rtmutex_prepare_setprio, TP_PROTO(struct task_struct *p, struct task_struct *pi_task), TP_ARGS(p, pi_task), 1); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 0896b1134de5..d66ab9279266 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -36,6 +36,13 @@ DECLARE_HOOK(android_vh_should_continue_reclaim, DECLARE_HOOK(android_vh_file_is_tiny_bypass, TP_PROTO(bool file_is_tiny, bool *bypass), TP_ARGS(file_is_tiny, bypass)); +DECLARE_HOOK(android_vh_check_folio_look_around_ref, + TP_PROTO(struct folio *folio, int *skip), + TP_ARGS(folio, skip)); +enum scan_balance; +DECLARE_HOOK(android_vh_tune_scan_type, + TP_PROTO(enum scan_balance *scan_type), + TP_ARGS(scan_type)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index d67a7ff0da9a..b43f3bbd55ee 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -577,12 +577,17 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ #define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ +/* RGB formats (6 or 8 bytes per pixel) */ +#define V4L2_PIX_FMT_BGR48_12 v4l2_fourcc('B', '3', '1', '2') /* 48 BGR 12-bit per component */ +#define V4L2_PIX_FMT_ABGR64_12 v4l2_fourcc('B', '4', '1', '2') /* 64 BGRA 12-bit per component */ + /* Grey formats */ #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */ #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */ #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ +#define V4L2_PIX_FMT_Y012 v4l2_fourcc('Y', '0', '1', '2') /* 12 Greyscale */ #define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ @@ -617,6 +622,15 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A') /* 32 YUVA-8-8-8-8 */ #define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X') /* 32 YUVX-8-8-8-8 */ #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ +#define V4L2_PIX_FMT_YUV48_12 v4l2_fourcc('Y', '3', '1', '2') /* 48 YUV 4:4:4 12-bit per component */ + +/* + * YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs + * of the 16 bit components, and 16-xx bits of zero padding occupy the LSBs. + */ +#define V4L2_PIX_FMT_Y210 v4l2_fourcc('Y', '2', '1', '0') /* 32 YUYV 4:2:2 */ +#define V4L2_PIX_FMT_Y212 v4l2_fourcc('Y', '2', '1', '2') /* 32 YUYV 4:2:2 */ +#define V4L2_PIX_FMT_Y216 v4l2_fourcc('Y', '2', '1', '6') /* 32 YUYV 4:2:2 */ /* two planes -- one Y, one Cr + Cb interleaved */ #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ @@ -626,12 +640,14 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */ +#define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */ /* two non contiguous planes - one Y, one Cr + Cb interleaved */ #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */ #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */ +#define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */ /* three planes - Y Cb, Cr */ #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ diff --git a/init/Kconfig.gki b/init/Kconfig.gki index 29eb1eefbd3d..081b1cdc9c7e 100644 --- a/init/Kconfig.gki +++ b/init/Kconfig.gki @@ -201,6 +201,7 @@ config GKI_HIDDEN_NET_CONFIGS bool "Hidden networking configuration needed for GKI" select PAGE_POOL select NET_PTP_CLASSIFY + select NET_DEVLINK help Dummy config option used to enable the networking hidden config, required by various SoC platforms. diff --git a/kernel/fork.c b/kernel/fork.c index b02833735878..7c71b1f88f59 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -695,6 +695,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, mas_for_each(&old_mas, mpnt, ULONG_MAX) { struct file *file; + vma_start_write(mpnt); if (mpnt->vm_flags & VM_DONTCOPY) { vm_stat_account(mm, mpnt->vm_flags, -vma_pages(mpnt)); continue; diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index 4ff70da18e3c..525648da693f 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -556,8 +556,10 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne void __sched mutex_unlock(struct mutex *lock) { #ifndef CONFIG_DEBUG_LOCK_ALLOC - if (__mutex_unlock_fast(lock)) + if (__mutex_unlock_fast(lock)) { + trace_android_vh_record_mutex_lock_starttime(current, 0); return; + } #endif __mutex_unlock_slowpath(lock, _RET_IP_); trace_android_vh_record_mutex_lock_starttime(current, 0); diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c index 229ce6bc7d62..351716fe9138 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -327,6 +327,11 @@ static __always_inline bool unlock_rt_mutex_safe(struct rt_mutex_base *lock, static __always_inline int __waiter_prio(struct task_struct *task) { int prio = task->prio; + int waiter_prio = 0; + + trace_android_vh_rtmutex_waiter_prio(task, &waiter_prio); + if (waiter_prio > 0) + return waiter_prio; if (!rt_prio(prio)) return DEFAULT_PRIO; @@ -1151,6 +1156,7 @@ static int __sched task_blocks_on_rt_mutex(struct rt_mutex_base *lock, if (owner == task && !(build_ww_mutex() && ww_ctx)) return -EDEADLK; + trace_android_vh_task_blocks_on_rtmutex(lock, waiter, task, ww_ctx, &chwalk); raw_spin_lock(&task->pi_lock); waiter->task = task; waiter->lock = lock; diff --git a/kernel/module/Makefile b/kernel/module/Makefile index 458cb6e44e85..5d9035643b9a 100644 --- a/kernel/module/Makefile +++ b/kernel/module/Makefile @@ -28,7 +28,7 @@ obj-$(CONFIG_MODULE_UNLOAD_TAINT_TRACKING) += tracking.o $(obj)/gki_module.o: include/generated/gki_module_protected_exports.h \ include/generated/gki_module_unprotected.h -ALL_KMI_SYMBOLS := all_kmi_symbols +ALL_KMI_SYMBOLS := include/config/abi_gki_kmi_symbols include/generated/gki_module_unprotected.h: $(ALL_KMI_SYMBOLS) \ $(srctree)/scripts/gen_gki_modules_headers.sh diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 53faabdb3950..95843540088b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7043,15 +7043,17 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) const struct sched_class *prev_class; struct rq_flags rf; struct rq *rq; + int update = 0; trace_android_rvh_rtmutex_prepare_setprio(p, pi_task); /* XXX used to be waiter->prio, not waiter->task->prio */ prio = __rt_effective_prio(pi_task, p->normal_prio); + trace_android_rvh_rtmutex_force_update(p, pi_task, &update); /* * If nothing changed; bail early. */ - if (p->pi_top_task == pi_task && prio == p->prio && !dl_prio(prio)) + if (!update && p->pi_top_task == pi_task && prio == p->prio && !dl_prio(prio)) return; rq = __task_rq_lock(p, &rf); @@ -7071,7 +7073,7 @@ void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task) /* * For FIFO/RR we only need to set prio, if that matches we're done. */ - if (prio == p->prio && !dl_prio(prio)) + if (!update && prio == p->prio && !dl_prio(prio)) goto out_unlock; /* diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index d8d945fc20e3..f528b1f6cbb9 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -22,6 +22,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_can_migrate_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_lowest_rq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_prepare_prio_fork); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_finish_prio_fork); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rtmutex_force_update); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rtmutex_prepare_setprio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler); diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 24b31aee7880..b0a828f863c3 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -4322,11 +4322,13 @@ static inline void mas_wr_end_piv(struct ma_wr_state *wr_mas) { wr_mas->end_piv = wr_mas->r_max; - while ((wr_mas->mas->last > wr_mas->end_piv) && - (wr_mas->offset_end < wr_mas->node_end)) - wr_mas->end_piv = wr_mas->pivots[++wr_mas->offset_end]; + while ((wr_mas->offset_end < wr_mas->node_end) && + (wr_mas->mas->last > wr_mas->pivots[wr_mas->offset_end])) + wr_mas->offset_end++; - if (wr_mas->mas->last > wr_mas->end_piv) + if (wr_mas->offset_end < wr_mas->node_end) + wr_mas->end_piv = wr_mas->pivots[wr_mas->offset_end]; + else wr_mas->end_piv = wr_mas->mas->max; if (!wr_mas->entry) diff --git a/mm/Kconfig b/mm/Kconfig index a58632a9fbd9..985ed3d2adbd 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -1196,6 +1196,10 @@ config PER_VMA_LOCK This feature allows locking each virtual memory area separately when handling page faults instead of taking mmap_lock. +config LOCK_MM_AND_FIND_VMA + bool + depends on !STACK_GROWSUP + source "mm/damon/Kconfig" endmenu diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c index 15f03df66db6..3036ebfcdd83 100644 --- a/mm/damon/vaddr.c +++ b/mm/damon/vaddr.c @@ -384,6 +384,7 @@ static int damon_mkold_hugetlb_entry(pte_t *pte, unsigned long hmask, static const struct mm_walk_ops damon_mkold_ops = { .pmd_entry = damon_mkold_pmd_entry, .hugetlb_entry = damon_mkold_hugetlb_entry, + .walk_lock = PGWALK_RDLOCK, }; static void damon_va_mkold(struct mm_struct *mm, unsigned long addr) @@ -521,6 +522,7 @@ static int damon_young_hugetlb_entry(pte_t *pte, unsigned long hmask, static const struct mm_walk_ops damon_young_ops = { .pmd_entry = damon_young_pmd_entry, .hugetlb_entry = damon_young_hugetlb_entry, + .walk_lock = PGWALK_RDLOCK, }; static bool damon_va_young(struct mm_struct *mm, unsigned long addr, diff --git a/mm/filemap.c b/mm/filemap.c index 695d92428173..65bc874b7996 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1707,46 +1707,47 @@ static int __folio_lock_async(struct folio *folio, struct wait_page_queue *wait) /* * Return values: - * true - folio is locked; mmap_lock is still held. - * false - folio is not locked. - * mmap_lock has been released (mmap_read_unlock(), unless flags had both - * FAULT_FLAG_ALLOW_RETRY and FAULT_FLAG_RETRY_NOWAIT set, in - * which case mmap_lock is still held. + * 0 - folio is locked. + * non-zero - folio is not locked. + * mmap_lock or per-VMA lock has been released (mmap_read_unlock() or + * vma_end_read()), unless flags had both FAULT_FLAG_ALLOW_RETRY and + * FAULT_FLAG_RETRY_NOWAIT set, in which case the lock is still held. * - * If neither ALLOW_RETRY nor KILLABLE are set, will always return true - * with the folio locked and the mmap_lock unperturbed. + * If neither ALLOW_RETRY nor KILLABLE are set, will always return 0 + * with the folio locked and the mmap_lock/per-VMA lock is left unperturbed. */ -bool __folio_lock_or_retry(struct folio *folio, struct mm_struct *mm, - unsigned int flags) +vm_fault_t __folio_lock_or_retry(struct folio *folio, struct vm_fault *vmf) { + unsigned int flags = vmf->flags; + if (fault_flag_allow_retry_first(flags)) { /* - * CAUTION! In this case, mmap_lock is not released - * even though return 0. + * CAUTION! In this case, mmap_lock/per-VMA lock is not + * released even though returning VM_FAULT_RETRY. */ if (flags & FAULT_FLAG_RETRY_NOWAIT) - return false; + return VM_FAULT_RETRY; - mmap_read_unlock(mm); + release_fault_lock(vmf); if (flags & FAULT_FLAG_KILLABLE) folio_wait_locked_killable(folio); else folio_wait_locked(folio); - return false; + return VM_FAULT_RETRY; } if (flags & FAULT_FLAG_KILLABLE) { bool ret; ret = __folio_lock_killable(folio); if (ret) { - mmap_read_unlock(mm); - return false; + release_fault_lock(vmf); + return VM_FAULT_RETRY; } } else { __folio_lock(folio); } - return true; + return 0; } /** diff --git a/mm/gup.c b/mm/gup.c index 028f3b4e8c3f..f4911ddd3070 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1182,7 +1182,7 @@ static long __get_user_pages(struct mm_struct *mm, /* first iteration or cross vma bound */ if (!vma || start >= vma->vm_end) { - vma = find_extend_vma(mm, start); + vma = vma_lookup(mm, start); if (!vma && in_gate_area(mm, start)) { ret = get_gate_page(mm, start & PAGE_MASK, gup_flags, &vma, @@ -1351,8 +1351,8 @@ int fixup_user_fault(struct mm_struct *mm, fault_flags |= FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; retry: - vma = find_extend_vma(mm, address); - if (!vma || address < vma->vm_start) + vma = vma_lookup(mm, address); + if (!vma) return -EFAULT; if (!vma_permits_fault(vma, fault_flags)) diff --git a/mm/hmm.c b/mm/hmm.c index 3850fb625dda..b69d1591e392 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -548,6 +548,7 @@ static const struct mm_walk_ops hmm_walk_ops = { .pte_hole = hmm_vma_walk_hole, .hugetlb_entry = hmm_vma_walk_hugetlb_entry, .test_walk = hmm_vma_walk_test, + .walk_lock = PGWALK_RDLOCK, }; /** diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 34d7816b13bc..4737d9fc505d 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4968,7 +4968,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, src_vma->vm_start, src_vma->vm_end); mmu_notifier_invalidate_range_start(&range); - mmap_assert_write_locked(src); + vma_assert_write_locked(src_vma); raw_write_seqcount_begin(&src->write_protect_seq); } else { /* @@ -6005,6 +6005,12 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, int need_wait_lock = 0; unsigned long haddr = address & huge_page_mask(h); + /* TODO: Handle faults under the VMA lock */ + if (flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + ptep = huge_pte_offset(mm, haddr, huge_page_size(h)); if (ptep) { /* diff --git a/mm/internal.h b/mm/internal.h index fe0925d7cbb5..0997c0c82c02 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -619,7 +619,7 @@ static inline struct file *maybe_unlock_mmap_for_io(struct vm_fault *vmf, if (fault_flag_allow_retry_first(flags) && !(flags & FAULT_FLAG_RETRY_NOWAIT)) { fpin = get_file(vmf->vma->vm_file); - mmap_read_unlock(vmf->vma->vm_mm); + release_fault_lock(vmf); } return fpin; } diff --git a/mm/ksm.c b/mm/ksm.c index cb272b6fde59..c5a2f83f62f1 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -434,13 +434,18 @@ static inline bool ksm_test_exit(struct mm_struct *mm) * of the process that owns 'vma'. We also do not want to enforce * protection keys here anyway. */ -static int break_ksm(struct vm_area_struct *vma, unsigned long addr) +static int break_ksm(struct vm_area_struct *vma, unsigned long addr, bool lock_vma) { struct page *page; vm_fault_t ret = 0; do { cond_resched(); + if (lock_vma) + vma_start_write(vma); + else + mmap_assert_locked(vma->vm_mm); + page = follow_page(vma, addr, FOLL_GET | FOLL_MIGRATION | FOLL_REMOTE); if (IS_ERR_OR_NULL(page)) @@ -511,7 +516,7 @@ static void break_cow(struct ksm_rmap_item *rmap_item) mmap_read_lock(mm); vma = find_mergeable_vma(mm, addr); if (vma) - break_ksm(vma, addr); + break_ksm(vma, addr, false); mmap_read_unlock(mm); } @@ -814,7 +819,7 @@ static void remove_trailing_rmap_items(struct ksm_rmap_item **rmap_list) * in cmp_and_merge_page on one of the rmap_items we would be removing. */ static int unmerge_ksm_pages(struct vm_area_struct *vma, - unsigned long start, unsigned long end) + unsigned long start, unsigned long end, bool lock_vma) { unsigned long addr; int err = 0; @@ -825,7 +830,7 @@ static int unmerge_ksm_pages(struct vm_area_struct *vma, if (signal_pending(current)) err = -ERESTARTSYS; else - err = break_ksm(vma, addr); + err = break_ksm(vma, addr, lock_vma); } return err; } @@ -972,7 +977,7 @@ static int unmerge_and_remove_all_rmap_items(void) if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) continue; err = unmerge_ksm_pages(vma, - vma->vm_start, vma->vm_end); + vma->vm_start, vma->vm_end, false); if (err) goto error; } @@ -2487,7 +2492,7 @@ int ksm_madvise(struct vm_area_struct *vma, unsigned long start, return 0; /* just ignore the advice */ if (vma->anon_vma) { - err = unmerge_ksm_pages(vma, start, end); + err = unmerge_ksm_pages(vma, start, end, true); if (err) return err; } diff --git a/mm/madvise.c b/mm/madvise.c index 42c5a65e1c2d..21b5de11c329 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -180,9 +180,8 @@ static int madvise_update_vma(struct vm_area_struct *vma, } success: - /* - * vm_flags is protected by the mmap_lock held in write mode. - */ + /* vm_flags is protected by the mmap_lock held in write mode. */ + vma_start_write(vma); vm_flags_reset(vma, new_flags); if (!vma->vm_file) { error = replace_anon_vma_name(vma, anon_name); @@ -234,6 +233,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start, static const struct mm_walk_ops swapin_walk_ops = { .pmd_entry = swapin_walk_pmd_entry, + .walk_lock = PGWALK_RDLOCK, }; static void force_shm_swapin_readahead(struct vm_area_struct *vma, @@ -541,6 +541,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, static const struct mm_walk_ops cold_walk_ops = { .pmd_entry = madvise_cold_or_pageout_pte_range, + .walk_lock = PGWALK_RDLOCK, }; static void madvise_cold_page_range(struct mmu_gather *tlb, @@ -763,6 +764,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr, static const struct mm_walk_ops madvise_free_walk_ops = { .pmd_entry = madvise_free_pte_range, + .walk_lock = PGWALK_RDLOCK, }; static int madvise_free_single_vma(struct vm_area_struct *vma, diff --git a/mm/memcontrol.c b/mm/memcontrol.c index aa09cf4e8bb5..5879b5d6b483 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5966,6 +5966,7 @@ static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd, static const struct mm_walk_ops precharge_walk_ops = { .pmd_entry = mem_cgroup_count_precharge_pte_range, + .walk_lock = PGWALK_RDLOCK, }; static unsigned long mem_cgroup_count_precharge(struct mm_struct *mm) @@ -6242,6 +6243,7 @@ static int mem_cgroup_move_charge_pte_range(pmd_t *pmd, static const struct mm_walk_ops charge_walk_ops = { .pmd_entry = mem_cgroup_move_charge_pte_range, + .walk_lock = PGWALK_RDLOCK, }; static void mem_cgroup_move_charge(void) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 4457f9423e2c..3badad5ab293 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -722,6 +722,7 @@ static int hwpoison_hugetlb_range(pte_t *ptep, unsigned long hmask, static const struct mm_walk_ops hwp_walk_ops = { .pmd_entry = hwpoison_pte_range, .hugetlb_entry = hwpoison_hugetlb_range, + .walk_lock = PGWALK_RDLOCK, }; /* diff --git a/mm/memory.c b/mm/memory.c index 16063c490b7f..0f780a8dfaef 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1319,7 +1319,7 @@ copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma) * Use the raw variant of the seqcount_t write API to avoid * lockdep complaining about preemptibility. */ - mmap_assert_write_locked(src_mm); + vma_assert_write_locked(src_vma); raw_write_seqcount_begin(&src_mm->write_protect_seq); } @@ -2851,10 +2851,16 @@ static inline int pte_unmap_same(struct vm_fault *vmf) return same; } -static inline bool __wp_page_copy_user(struct page *dst, struct page *src, - struct vm_fault *vmf) +/* + * Return: + * 0: copied succeeded + * -EHWPOISON: copy failed due to hwpoison in source page + * -EAGAIN: copied failed (some other reason) + */ +static inline int __wp_page_copy_user(struct page *dst, struct page *src, + struct vm_fault *vmf) { - bool ret; + int ret; void *kaddr; void __user *uaddr; bool locked = false; @@ -2863,8 +2869,11 @@ static inline bool __wp_page_copy_user(struct page *dst, struct page *src, unsigned long addr = vmf->address; if (likely(src)) { - copy_user_highpage(dst, src, addr, vma); - return true; + if (copy_mc_user_highpage(dst, src, addr, vma)) { + memory_failure_queue(page_to_pfn(src), 0); + return -EHWPOISON; + } + return 0; } /* @@ -2891,7 +2900,7 @@ static inline bool __wp_page_copy_user(struct page *dst, struct page *src, * and update local tlb only */ update_mmu_tlb(vma, addr, vmf->pte); - ret = false; + ret = -EAGAIN; goto pte_unlock; } @@ -2916,7 +2925,7 @@ static inline bool __wp_page_copy_user(struct page *dst, struct page *src, if (!likely(pte_same(*vmf->pte, vmf->orig_pte))) { /* The PTE changed under us, update local tlb */ update_mmu_tlb(vma, addr, vmf->pte); - ret = false; + ret = -EAGAIN; goto pte_unlock; } @@ -2935,7 +2944,7 @@ static inline bool __wp_page_copy_user(struct page *dst, struct page *src, } } - ret = true; + ret = 0; pte_unlock: if (locked) @@ -3107,6 +3116,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) pte_t entry; int page_copied = 0; struct mmu_notifier_range range; + int ret; delayacct_wpcopy_start(); @@ -3124,19 +3134,21 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) if (!new_page) goto oom; - if (!__wp_page_copy_user(new_page, old_page, vmf)) { + ret = __wp_page_copy_user(new_page, old_page, vmf); + if (ret) { /* * COW failed, if the fault was solved by other, * it's fine. If not, userspace would re-fault on * the same address and we will handle the fault * from the second attempt. + * The -EHWPOISON case will not be retried. */ put_page(new_page); if (old_page) put_page(old_page); delayacct_wpcopy_end(); - return 0; + return ret == -EHWPOISON ? VM_FAULT_HWPOISON : 0; } kmsan_copy_page_meta(new_page, old_page); } @@ -3302,6 +3314,11 @@ static vm_fault_t wp_pfn_shared(struct vm_fault *vmf) vm_fault_t ret; pte_unmap_unlock(vmf->pte, vmf->ptl); + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vmf->vma); + return VM_FAULT_RETRY; + } + vmf->flags |= FAULT_FLAG_MKWRITE; ret = vma->vm_ops->pfn_mkwrite(vmf); if (ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)) @@ -3324,6 +3341,12 @@ static vm_fault_t wp_page_shared(struct vm_fault *vmf) vm_fault_t tmp; pte_unmap_unlock(vmf->pte, vmf->ptl); + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + put_page(vmf->page); + vma_end_read(vmf->vma); + return VM_FAULT_RETRY; + } + tmp = do_page_mkwrite(vmf); if (unlikely(!tmp || (tmp & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))) { @@ -3626,6 +3649,7 @@ static vm_fault_t remove_device_exclusive_entry(struct vm_fault *vmf) struct folio *folio = page_folio(vmf->page); struct vm_area_struct *vma = vmf->vma; struct mmu_notifier_range range; + vm_fault_t ret; /* * We need a reference to lock the folio because we don't hold @@ -3638,9 +3662,10 @@ static vm_fault_t remove_device_exclusive_entry(struct vm_fault *vmf) if (!folio_try_get(folio)) return 0; - if (!folio_lock_or_retry(folio, vma->vm_mm, vmf->flags)) { + ret = folio_lock_or_retry(folio, vmf); + if (ret) { folio_put(folio); - return VM_FAULT_RETRY; + return ret; } mmu_notifier_range_init_owner(&range, MMU_NOTIFY_EXCLUSIVE, 0, vma, vma->vm_mm, vmf->address & PAGE_MASK, @@ -3750,18 +3775,12 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) bool exclusive = false; swp_entry_t entry; pte_t pte; - int locked; vm_fault_t ret = 0; void *shadow = NULL; if (!pte_unmap_same(vmf)) goto out; - if (vmf->flags & FAULT_FLAG_VMA_LOCK) { - ret = VM_FAULT_RETRY; - goto out; - } - entry = pte_to_swp_entry(vmf->orig_pte); if (unlikely(non_swap_entry(entry))) { if (is_migration_entry(entry)) { @@ -3771,6 +3790,16 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) vmf->page = pfn_swap_entry_to_page(entry); ret = remove_device_exclusive_entry(vmf); } else if (is_device_private_entry(entry)) { + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + /* + * migrate_to_ram is not yet ready to operate + * under VMA lock. + */ + vma_end_read(vma); + ret = VM_FAULT_RETRY; + goto out; + } + vmf->page = pfn_swap_entry_to_page(entry); vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, vmf->address, &vmf->ptl); @@ -3874,12 +3903,9 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) goto out_release; } - locked = folio_lock_or_retry(folio, vma->vm_mm, vmf->flags); - - if (!locked) { - ret |= VM_FAULT_RETRY; + ret |= folio_lock_or_retry(folio, vmf); + if (ret & VM_FAULT_RETRY) goto out_release; - } if (swapcache) { /* @@ -4581,6 +4607,11 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf) return ret; } + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vmf->vma); + return VM_FAULT_RETRY; + } + ret = __do_fault(vmf); if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) return ret; @@ -4597,6 +4628,11 @@ static vm_fault_t do_cow_fault(struct vm_fault *vmf) struct vm_area_struct *vma = vmf->vma; vm_fault_t ret; + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + if (unlikely(anon_vma_prepare(vma))) return VM_FAULT_OOM; @@ -4636,6 +4672,11 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf) struct vm_area_struct *vma = vmf->vma; vm_fault_t ret, tmp; + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + ret = __do_fault(vmf); if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) return ret; @@ -4846,33 +4887,45 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf) static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf) { - if (vma_is_anonymous(vmf->vma)) + struct vm_area_struct *vma = vmf->vma; + if (vma_is_anonymous(vma)) return do_huge_pmd_anonymous_page(vmf); - if (vmf->vma->vm_ops->huge_fault) - return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); + if (vma->vm_ops->huge_fault) { + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + return vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); + } return VM_FAULT_FALLBACK; } /* `inline' is required to avoid gcc 4.1.2 build error */ static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf) { + struct vm_area_struct *vma = vmf->vma; const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE; + vm_fault_t ret; - if (vma_is_anonymous(vmf->vma)) { + if (vma_is_anonymous(vma)) { if (likely(!unshare) && - userfaultfd_huge_pmd_wp(vmf->vma, vmf->orig_pmd)) + userfaultfd_huge_pmd_wp(vma, vmf->orig_pmd)) return handle_userfault(vmf, VM_UFFD_WP); return do_huge_pmd_wp_page(vmf); } - if (vmf->vma->vm_ops->huge_fault) { - vm_fault_t ret = vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); + if (vma->vm_ops->huge_fault) { + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + ret = vma->vm_ops->huge_fault(vmf, PE_SIZE_PMD); if (!(ret & VM_FAULT_FALLBACK)) return ret; } /* COW or write-notify handled on pte level: split pmd. */ - __split_huge_pmd(vmf->vma, vmf->pmd, vmf->address, false, NULL); + __split_huge_pmd(vma, vmf->pmd, vmf->address, false, NULL); return VM_FAULT_FALLBACK; } @@ -4881,11 +4934,17 @@ static vm_fault_t create_huge_pud(struct vm_fault *vmf) { #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) + struct vm_area_struct *vma = vmf->vma; /* No support for anonymous transparent PUD pages yet */ - if (vma_is_anonymous(vmf->vma)) + if (vma_is_anonymous(vma)) return VM_FAULT_FALLBACK; - if (vmf->vma->vm_ops->huge_fault) - return vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); + if (vma->vm_ops->huge_fault) { + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + return vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); + } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ return VM_FAULT_FALLBACK; } @@ -4894,18 +4953,25 @@ static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud) { #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \ defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) + struct vm_area_struct *vma = vmf->vma; + vm_fault_t ret; + /* No support for anonymous transparent PUD pages yet */ - if (vma_is_anonymous(vmf->vma)) + if (vma_is_anonymous(vma)) goto split; - if (vmf->vma->vm_ops->huge_fault) { - vm_fault_t ret = vmf->vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); + if (vma->vm_ops->huge_fault) { + if (vmf->flags & FAULT_FLAG_VMA_LOCK) { + vma_end_read(vma); + return VM_FAULT_RETRY; + } + ret = vma->vm_ops->huge_fault(vmf, PE_SIZE_PUD); if (!(ret & VM_FAULT_FALLBACK)) return ret; } split: /* COW or write-notify not handled on PUD level: split pud.*/ - __split_huge_pud(vmf->vma, vmf->pud, vmf->address); + __split_huge_pud(vma, vmf->pud, vmf->address); #endif /* CONFIG_TRANSPARENT_HUGEPAGE && CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */ return VM_FAULT_FALLBACK; } @@ -5027,10 +5093,10 @@ static vm_fault_t handle_pte_fault(struct vm_fault *vmf) } /* - * By the time we get here, we already hold the mm semaphore - * - * The mmap_lock may have been released depending on flags and our - * return value. See filemap_fault() and __folio_lock_or_retry(). + * On entry, we hold either the VMA lock or the mmap_lock + * (FAULT_FLAG_VMA_LOCK tells you which). If VM_FAULT_RETRY is set in + * the result, the mmap_lock is not held on exit. See filemap_fault() + * and __folio_lock_or_retry(). */ static vm_fault_t __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, unsigned int flags) @@ -5231,6 +5297,17 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, __set_current_state(TASK_RUNNING); +#ifdef CONFIG_PER_VMA_LOCK + /* + * Per-VMA locks can't be used with FAULT_FLAG_RETRY_NOWAIT because of + * the assumption that lock is dropped on VM_FAULT_RETRY. + */ + if (WARN_ON_ONCE((flags & + (FAULT_FLAG_VMA_LOCK | FAULT_FLAG_RETRY_NOWAIT)) == + (FAULT_FLAG_VMA_LOCK | FAULT_FLAG_RETRY_NOWAIT))) + return VM_FAULT_SIGSEGV; +#endif + /* do counter updates before entering really critical section. */ check_sync_rss_stat(current); @@ -5275,6 +5352,125 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, } EXPORT_SYMBOL_GPL(handle_mm_fault); +#ifdef CONFIG_LOCK_MM_AND_FIND_VMA +#include + +static inline bool get_mmap_lock_carefully(struct mm_struct *mm, struct pt_regs *regs) +{ + /* Even if this succeeds, make it clear we *might* have slept */ + if (likely(mmap_read_trylock(mm))) { + might_sleep(); + return true; + } + + if (regs && !user_mode(regs)) { + unsigned long ip = instruction_pointer(regs); + if (!search_exception_tables(ip)) + return false; + } + + return !mmap_read_lock_killable(mm); +} + +static inline bool mmap_upgrade_trylock(struct mm_struct *mm) +{ + /* + * We don't have this operation yet. + * + * It should be easy enough to do: it's basically a + * atomic_long_try_cmpxchg_acquire() + * from RWSEM_READER_BIAS -> RWSEM_WRITER_LOCKED, but + * it also needs the proper lockdep magic etc. + */ + return false; +} + +static inline bool upgrade_mmap_lock_carefully(struct mm_struct *mm, struct pt_regs *regs) +{ + mmap_read_unlock(mm); + if (regs && !user_mode(regs)) { + unsigned long ip = instruction_pointer(regs); + if (!search_exception_tables(ip)) + return false; + } + return !mmap_write_lock_killable(mm); +} + +/* + * Helper for page fault handling. + * + * This is kind of equivalend to "mmap_read_lock()" followed + * by "find_extend_vma()", except it's a lot more careful about + * the locking (and will drop the lock on failure). + * + * For example, if we have a kernel bug that causes a page + * fault, we don't want to just use mmap_read_lock() to get + * the mm lock, because that would deadlock if the bug were + * to happen while we're holding the mm lock for writing. + * + * So this checks the exception tables on kernel faults in + * order to only do this all for instructions that are actually + * expected to fault. + * + * We can also actually take the mm lock for writing if we + * need to extend the vma, which helps the VM layer a lot. + */ +struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm, + unsigned long addr, struct pt_regs *regs) +{ + struct vm_area_struct *vma; + + if (!get_mmap_lock_carefully(mm, regs)) + return NULL; + + vma = find_vma(mm, addr); + if (likely(vma && (vma->vm_start <= addr))) + return vma; + + /* + * Well, dang. We might still be successful, but only + * if we can extend a vma to do so. + */ + if (!vma || !(vma->vm_flags & VM_GROWSDOWN)) { + mmap_read_unlock(mm); + return NULL; + } + + /* + * We can try to upgrade the mmap lock atomically, + * in which case we can continue to use the vma + * we already looked up. + * + * Otherwise we'll have to drop the mmap lock and + * re-take it, and also look up the vma again, + * re-checking it. + */ + if (!mmap_upgrade_trylock(mm)) { + if (!upgrade_mmap_lock_carefully(mm, regs)) + return NULL; + + vma = find_vma(mm, addr); + if (!vma) + goto fail; + if (vma->vm_start <= addr) + goto success; + if (!(vma->vm_flags & VM_GROWSDOWN)) + goto fail; + } + + if (expand_stack_locked(vma, addr)) + goto fail; + +success: + mmap_write_downgrade(mm); + return vma; + +fail: + mmap_write_unlock(mm); + return NULL; +} +#endif + #ifdef CONFIG_PER_VMA_LOCK /* * Lookup and lock a VMA under RCU protection. Returned VMA is guaranteed to be @@ -5293,31 +5489,21 @@ struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, if (!vma) goto inval; - /* Only anonymous vmas are supported for now */ - if (!vma_is_anonymous(vma)) - goto inval; - - /* find_mergeable_anon_vma uses adjacent vmas which are not locked */ - if (!vma->anon_vma) - goto inval; - if (!vma_start_read(vma)) goto inval; /* - * Due to the possibility of userfault handler dropping mmap_lock, avoid - * it for now and fall back to page fault handling under mmap_lock. + * find_mergeable_anon_vma uses adjacent vmas which are not locked. + * This check must happen after vma_start_read(); otherwise, a + * concurrent mremap() with MREMAP_DONTUNMAP could dissociate the VMA + * from its anon_vma. */ - if (userfaultfd_armed(vma)) { - vma_end_read(vma); - goto inval; - } + if (unlikely(!vma->anon_vma)) + goto inval_end_read; /* Check since vm_start/vm_end might change before we lock the VMA */ - if (unlikely(address < vma->vm_start || address >= vma->vm_end)) { - vma_end_read(vma); - goto inval; - } + if (unlikely(address < vma->vm_start || address >= vma->vm_end)) + goto inval_end_read; /* Check if the VMA got isolated after we found it */ if (vma->detached) { @@ -5329,6 +5515,9 @@ struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, rcu_read_unlock(); return vma; + +inval_end_read: + vma_end_read(vma); inval: rcu_read_unlock(); count_vm_vma_lock_event(VMA_LOCK_ABORT); @@ -5607,6 +5796,14 @@ int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, if (mmap_read_lock_killable(mm)) return 0; + /* We might need to expand the stack to access it */ + vma = vma_lookup(mm, addr); + if (!vma) { + vma = expand_stack(mm, addr); + if (!vma) + return 0; + } + /* ignore errors, just check how much was successfully transferred */ while (len) { int bytes, ret, offset; diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 7d36dd95d1ff..bd708fff9335 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -384,8 +384,10 @@ void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new) VMA_ITERATOR(vmi, mm, 0); mmap_write_lock(mm); - for_each_vma(vmi, vma) + for_each_vma(vmi, vma) { + vma_start_write(vma); mpol_rebind_policy(vma->vm_policy, new); + } mmap_write_unlock(mm); } @@ -707,6 +709,14 @@ static const struct mm_walk_ops queue_pages_walk_ops = { .hugetlb_entry = queue_pages_hugetlb, .pmd_entry = queue_pages_pte_range, .test_walk = queue_pages_test_walk, + .walk_lock = PGWALK_RDLOCK, +}; + +static const struct mm_walk_ops queue_pages_lock_vma_walk_ops = { + .hugetlb_entry = queue_pages_hugetlb, + .pmd_entry = queue_pages_pte_range, + .test_walk = queue_pages_test_walk, + .walk_lock = PGWALK_WRLOCK, }; /* @@ -727,7 +737,7 @@ static const struct mm_walk_ops queue_pages_walk_ops = { static int queue_pages_range(struct mm_struct *mm, unsigned long start, unsigned long end, nodemask_t *nodes, unsigned long flags, - struct list_head *pagelist) + struct list_head *pagelist, bool lock_vma) { int err; struct queue_pages qp = { @@ -738,8 +748,10 @@ queue_pages_range(struct mm_struct *mm, unsigned long start, unsigned long end, .end = end, .first = NULL, }; + const struct mm_walk_ops *ops = lock_vma ? + &queue_pages_lock_vma_walk_ops : &queue_pages_walk_ops; - err = walk_page_range(mm, start, end, &queue_pages_walk_ops, &qp); + err = walk_page_range(mm, start, end, ops, &qp); if (!qp.first) /* whole range in hole */ @@ -759,6 +771,8 @@ static int vma_replace_policy(struct vm_area_struct *vma, struct mempolicy *old; struct mempolicy *new; + vma_assert_write_locked(vma); + pr_debug("vma %lx-%lx/%lx vm_ops %p vm_file %p set_policy %p\n", vma->vm_start, vma->vm_end, vma->vm_pgoff, vma->vm_ops, vma->vm_file, @@ -1070,7 +1084,7 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest, vma = find_vma(mm, 0); VM_BUG_ON(!(flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))); queue_pages_range(mm, vma->vm_start, mm->task_size, &nmask, - flags | MPOL_MF_DISCONTIG_OK, &pagelist); + flags | MPOL_MF_DISCONTIG_OK, &pagelist, false); if (!list_empty(&pagelist)) { err = migrate_pages(&pagelist, alloc_migration_target, NULL, @@ -1310,8 +1324,12 @@ static long do_mbind(unsigned long start, unsigned long len, if (err) goto mpol_out; + /* + * Lock the VMAs before scanning for pages to migrate, to ensure we don't + * miss a concurrently inserted page. + */ ret = queue_pages_range(mm, start, end, nmask, - flags | MPOL_MF_INVERT, &pagelist); + flags | MPOL_MF_INVERT, &pagelist, true); if (ret < 0) { err = ret; @@ -1539,6 +1557,7 @@ SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, le break; } + vma_start_write(vma); new->home_node = home_node; err = mbind_range(&vmi, vma, &prev, start, end, new); mpol_put(new); diff --git a/mm/migrate.c b/mm/migrate.c index 5c61c3d5b646..ef490976c98e 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -56,6 +56,10 @@ #include +#undef CREATE_TRACE_POINTS +#include +#include + #include "internal.h" int isolate_movable_page(struct page *page, isolate_mode_t mode) @@ -554,6 +558,8 @@ void folio_migrate_flags(struct folio *newfolio, struct folio *folio) if (folio_test_mappedtodisk(folio)) folio_set_mappedtodisk(newfolio); + trace_android_vh_look_around_migrate_folio(folio, newfolio); + /* Move dirty on pages not done by folio_migrate_mapping() */ if (folio_test_dirty(folio)) folio_set_dirty(newfolio); diff --git a/mm/migrate_device.c b/mm/migrate_device.c index 721b2365dbca..4b1491d5710a 100644 --- a/mm/migrate_device.c +++ b/mm/migrate_device.c @@ -286,6 +286,7 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp, static const struct mm_walk_ops migrate_vma_walk_ops = { .pmd_entry = migrate_vma_collect_pmd, .pte_hole = migrate_vma_collect_hole, + .walk_lock = PGWALK_RDLOCK, }; /* diff --git a/mm/mincore.c b/mm/mincore.c index 1eb6aac88d84..dd8f8837f7d5 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -177,6 +177,7 @@ static const struct mm_walk_ops mincore_walk_ops = { .pmd_entry = mincore_pte_range, .pte_hole = mincore_unmapped_range, .hugetlb_entry = mincore_hugetlb, + .walk_lock = PGWALK_RDLOCK, }; /* diff --git a/mm/mlock.c b/mm/mlock.c index 9738d49bbc24..580f1d39f454 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -365,6 +365,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma, { static const struct mm_walk_ops mlock_walk_ops = { .pmd_entry = mlock_pte_range, + .walk_lock = PGWALK_WRLOCK_VERIFY, }; /* @@ -380,6 +381,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma, */ if (newflags & VM_LOCKED) newflags |= VM_IO; + vma_start_write(vma); vm_flags_reset_once(vma, newflags); lru_add_drain(); @@ -453,9 +455,9 @@ static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev, * It's okay if try_to_unmap_one unmaps a page just after we * set VM_LOCKED, populate_vma_page_range will bring it back. */ - if ((newflags & VM_LOCKED) && (oldflags & VM_LOCKED)) { /* No work to do, and mlocking twice would be wrong */ + vma_start_write(vma); vm_flags_reset(vma, newflags); } else { mlock_vma_pages_range(vma, start, end, newflags); diff --git a/mm/mmap.c b/mm/mmap.c index 36f129f23dfb..bd2140cfcf36 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -484,6 +484,8 @@ static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma) if (mas_preallocate(&mas, vma, GFP_KERNEL)) return -ENOMEM; + vma_start_write(vma); + if (vma->vm_file) { mapping = vma->vm_file->f_mapping; i_mmap_lock_write(mapping); @@ -529,6 +531,7 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma, struct file *file = vma->vm_file; bool remove_next = false; + vma_start_write(vma); if (next && (vma != next) && (end == next->vm_end)) { remove_next = true; /* Lock the VMA before removing it */ @@ -553,7 +556,6 @@ inline int vma_expand(struct ma_state *mas, struct vm_area_struct *vma, if (mas_preallocate(mas, vma, GFP_KERNEL)) goto nomem; - vma_start_write(vma); vma_adjust_trans_huge(vma, start, end, 0); if (file) { @@ -743,8 +745,10 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, if (adjust_next < 0) mas_set_range(&mas, next->vm_start + adjust_next, next->vm_end - 1); - else if (insert) + else if (insert) { + vma_start_write(insert); mas_set_range(&mas, insert->vm_start, insert->vm_end - 1); + } if (mas_preallocate(&mas, vma, GFP_KERNEL)) @@ -801,7 +805,8 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, } if (end != vma->vm_end) { if (vma->vm_end > end) { - if (adjust_next >= 0 && !insert) { + if ((vma->vm_end + adjust_next != end) && + (!insert || (insert->vm_start != end))) { vma_mas_szero(&mas, end, vma->vm_end); mas_reset(&mas); VM_WARN_ON(insert && @@ -841,6 +846,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, * (it may either follow vma or precede it). */ mas_reset(&mas); + vma_start_write(insert); vma_mas_store(insert, &mas); mm->map_count++; } @@ -1988,7 +1994,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, * PA-RISC uses this for its stack; IA64 for its Register Backing Store. * vma is the last one with address > vma->vm_end. Have to extend vma. */ -int expand_upwards(struct vm_area_struct *vma, unsigned long address) +static int expand_upwards(struct vm_area_struct *vma, unsigned long address) { struct mm_struct *mm = vma->vm_mm; struct vm_area_struct *next; @@ -2029,6 +2035,8 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) return -ENOMEM; } + /* Lock the VMA before expanding to prevent concurrent page faults */ + vma_start_write(vma); /* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_lock in read mode. We need the @@ -2080,6 +2088,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) /* * vma is the first one with address < vma->vm_start. Have to extend vma. + * mmap_lock held for writing. */ int expand_downwards(struct vm_area_struct *vma, unsigned long address) { @@ -2088,16 +2097,20 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address) struct vm_area_struct *prev; int error = 0; + if (!(vma->vm_flags & VM_GROWSDOWN)) + return -EFAULT; + address &= PAGE_MASK; - if (address < mmap_min_addr) + if (address < mmap_min_addr || address < FIRST_USER_ADDRESS) return -EPERM; /* Enforce stack_guard_gap */ prev = mas_prev(&mas, 0); /* Check that both stack segments have the same anon_vma? */ - if (prev && !(prev->vm_flags & VM_GROWSDOWN) && - vma_is_accessible(prev)) { - if (address - prev->vm_end < stack_guard_gap) + if (prev) { + if (!(prev->vm_flags & VM_GROWSDOWN) && + vma_is_accessible(prev) && + (address - prev->vm_end < stack_guard_gap)) return -ENOMEM; } @@ -2111,6 +2124,8 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address) return -ENOMEM; } + /* Lock the VMA before expanding to prevent concurrent page faults */ + vma_start_write(vma); /* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_lock in read mode. We need the @@ -2177,13 +2192,12 @@ static int __init cmdline_parse_stack_guard_gap(char *p) __setup("stack_guard_gap=", cmdline_parse_stack_guard_gap); #ifdef CONFIG_STACK_GROWSUP -int expand_stack(struct vm_area_struct *vma, unsigned long address) +int expand_stack_locked(struct vm_area_struct *vma, unsigned long address) { return expand_upwards(vma, address); } -struct vm_area_struct * -find_extend_vma(struct mm_struct *mm, unsigned long addr) +struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr) { struct vm_area_struct *vma, *prev; @@ -2191,20 +2205,23 @@ find_extend_vma(struct mm_struct *mm, unsigned long addr) vma = find_vma_prev(mm, addr, &prev); if (vma && (vma->vm_start <= addr)) return vma; - if (!prev || expand_stack(prev, addr)) + if (!prev) + return NULL; + if (expand_stack_locked(prev, addr)) return NULL; if (prev->vm_flags & VM_LOCKED) populate_vma_page_range(prev, addr, prev->vm_end, NULL); return prev; } #else -int expand_stack(struct vm_area_struct *vma, unsigned long address) +int expand_stack_locked(struct vm_area_struct *vma, unsigned long address) { + if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) + return -EINVAL; return expand_downwards(vma, address); } -struct vm_area_struct * -find_extend_vma(struct mm_struct *mm, unsigned long addr) +struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr) { struct vm_area_struct *vma; unsigned long start; @@ -2215,10 +2232,8 @@ find_extend_vma(struct mm_struct *mm, unsigned long addr) return NULL; if (vma->vm_start <= addr) return vma; - if (!(vma->vm_flags & VM_GROWSDOWN)) - return NULL; start = vma->vm_start; - if (expand_stack(vma, addr)) + if (expand_stack_locked(vma, addr)) return NULL; if (vma->vm_flags & VM_LOCKED) populate_vma_page_range(vma, addr, start, NULL); @@ -2226,8 +2241,106 @@ find_extend_vma(struct mm_struct *mm, unsigned long addr) } #endif +/* + * ANDROID: Reintroduce find_extend_vma() as it's still used by some external + * modules. It was removed in commit 8d7071af8907 ("mm: always expand the + * stack with the mmap write lock held") + * In the future, everyone should just move to use the correct function instead + * of this old, legacy one. + */ +struct vm_area_struct *find_extend_vma(struct mm_struct *mm, + unsigned long addr) +{ + return find_extend_vma_locked(mm, addr); +} EXPORT_SYMBOL_GPL(find_extend_vma); +/* + * IA64 has some horrid mapping rules: it can expand both up and down, + * but with various special rules. + * + * We'll get rid of this architecture eventually, so the ugliness is + * temporary. + */ +#ifdef CONFIG_IA64 +static inline bool vma_expand_ok(struct vm_area_struct *vma, unsigned long addr) +{ + return REGION_NUMBER(addr) == REGION_NUMBER(vma->vm_start) && + REGION_OFFSET(addr) < RGN_MAP_LIMIT; +} + +/* + * IA64 stacks grow down, but there's a special register backing store + * that can grow up. Only sequentially, though, so the new address must + * match vm_end. + */ +static inline int vma_expand_up(struct vm_area_struct *vma, unsigned long addr) +{ + if (!vma_expand_ok(vma, addr)) + return -EFAULT; + if (vma->vm_end != (addr & PAGE_MASK)) + return -EFAULT; + return expand_upwards(vma, addr); +} + +static inline bool vma_expand_down(struct vm_area_struct *vma, unsigned long addr) +{ + if (!vma_expand_ok(vma, addr)) + return -EFAULT; + return expand_downwards(vma, addr); +} + +#elif defined(CONFIG_STACK_GROWSUP) + +#define vma_expand_up(vma,addr) expand_upwards(vma, addr) +#define vma_expand_down(vma, addr) (-EFAULT) + +#else + +#define vma_expand_up(vma,addr) (-EFAULT) +#define vma_expand_down(vma, addr) expand_downwards(vma, addr) + +#endif + +/* + * expand_stack(): legacy interface for page faulting. Don't use unless + * you have to. + * + * This is called with the mm locked for reading, drops the lock, takes + * the lock for writing, tries to look up a vma again, expands it if + * necessary, and downgrades the lock to reading again. + * + * If no vma is found or it can't be expanded, it returns NULL and has + * dropped the lock. + */ +struct vm_area_struct *expand_stack(struct mm_struct *mm, unsigned long addr) +{ + struct vm_area_struct *vma, *prev; + + mmap_read_unlock(mm); + if (mmap_write_lock_killable(mm)) + return NULL; + + vma = find_vma_prev(mm, addr, &prev); + if (vma && vma->vm_start <= addr) + goto success; + + if (prev && !vma_expand_up(prev, addr)) { + vma = prev; + goto success; + } + + if (vma && !vma_expand_down(vma, addr)) + goto success; + + mmap_write_unlock(mm); + return NULL; + +success: + mmap_write_downgrade(mm); + return vma; +} + /* * Ok - we have the memory areas we should free on a maple tree so release them, * and do the vma updates. @@ -2319,6 +2432,9 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); + vma_start_write(vma); + vma_start_write(new); + if (new_below) err = vma_adjust(vma, addr, vma->vm_end, vma->vm_pgoff + ((addr - new->vm_start) >> PAGE_SHIFT), new); @@ -2359,21 +2475,6 @@ int split_vma(struct mm_struct *mm, struct vm_area_struct *vma, return __split_vma(mm, vma, addr, new_below); } -static inline int munmap_sidetree(struct vm_area_struct *vma, int count, - struct ma_state *mas_detach) -{ - vma_start_write(vma); - mas_set(mas_detach, count); - if (mas_store_gfp(mas_detach, vma, GFP_KERNEL)) - return -ENOMEM; - - vma_mark_detached(vma, true); - if (vma->vm_flags & VM_LOCKED) - vma->vm_mm->locked_vm -= vma_pages(vma); - - return 0; -} - /* * do_mas_align_munmap() - munmap the aligned region from @start to @end. * @mas: The maple_state, ideally set up to alter the correct tree location. @@ -2395,6 +2496,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma, struct maple_tree mt_detach; int count = 0; int error = -ENOMEM; + unsigned long locked_vm = 0; MA_STATE(mas_detach, &mt_detach, 0, 0); mt_init_flags(&mt_detach, mas->tree->ma_flags & MT_FLAGS_LOCK_MASK); mt_set_external_lock(&mt_detach, &mm->mmap_lock); @@ -2450,18 +2552,28 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma, mas_set(mas, end); split = mas_prev(mas, 0); - error = munmap_sidetree(split, count, &mas_detach); + vma_start_write(split); + mas_set(&mas_detach, count); + error = mas_store_gfp(&mas_detach, split, GFP_KERNEL); if (error) - goto munmap_sidetree_failed; + goto munmap_gather_failed; + vma_mark_detached(split, true); + if (split->vm_flags & VM_LOCKED) + locked_vm += vma_pages(split); count++; if (vma == next) vma = split; break; } - error = munmap_sidetree(next, count, &mas_detach); + vma_start_write(next); + mas_set(&mas_detach, count); + error = mas_store_gfp(&mas_detach, next, GFP_KERNEL); if (error) - goto munmap_sidetree_failed; + goto munmap_gather_failed; + vma_mark_detached(next, true); + if (next->vm_flags & VM_LOCKED) + locked_vm += vma_pages(next); count++; if (unlikely(uf)) { @@ -2519,6 +2631,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma, if (mas_store_gfp(mas, NULL, GFP_KERNEL)) return -ENOMEM; + mm->locked_vm -= locked_vm; mm->map_count -= count; /* * Do not downgrade mmap_lock if we are next to VM_GROWSDOWN or @@ -2550,7 +2663,7 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma, return downgrade ? 1 : 0; userfaultfd_error: -munmap_sidetree_failed: +munmap_gather_failed: end_split_failed: __mt_destroy(&mt_detach); start_split_failed: @@ -2795,6 +2908,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, goto free_vma; } + /* Lock the VMA since it is modified after insertion into VMA tree */ + vma_start_write(vma); if (vma->vm_file) i_mmap_lock_write(vma->vm_file->f_mapping); @@ -3096,6 +3211,7 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma, vma->vm_pgoff = addr >> PAGE_SHIFT; vm_flags_init(vma, flags); vma->vm_page_prot = vm_get_page_prot(flags); + vma_start_write(vma); mas_set_range(mas, vma->vm_start, addr + len - 1); if (mas_store_gfp(mas, vma, GFP_KERNEL)) goto mas_store_fail; @@ -3342,7 +3458,6 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, get_file(new_vma->vm_file); if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); - vma_start_write(new_vma); if (vma_link(mm, new_vma)) goto out_vma_link; *need_rmap_locks = false; @@ -3660,6 +3775,12 @@ int mm_take_all_locks(struct mm_struct *mm) mutex_lock(&mm_all_locks_mutex); + /* + * vma_start_write() does not have a complement in mm_drop_all_locks() + * because vma_start_write() is always asymmetrical; it marks a VMA as + * being written to until mmap_write_unlock() or mmap_write_downgrade() + * is reached. + */ mas_for_each(&mas, vma, ULONG_MAX) { if (signal_pending(current)) goto out_unlock; @@ -3756,7 +3877,6 @@ void mm_drop_all_locks(struct mm_struct *mm) if (vma->vm_file && vma->vm_file->f_mapping) vm_unlock_mapping(vma->vm_file->f_mapping); } - vma_end_write_all(mm); mutex_unlock(&mm_all_locks_mutex); } diff --git a/mm/mprotect.c b/mm/mprotect.c index 1b9198d38cdf..45a87f0ce625 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -542,6 +542,7 @@ static const struct mm_walk_ops prot_none_walk_ops = { .pte_entry = prot_none_pte_entry, .hugetlb_entry = prot_none_hugetlb_entry, .test_walk = prot_none_test, + .walk_lock = PGWALK_WRLOCK, }; int @@ -630,6 +631,7 @@ mprotect_fixup(struct mmu_gather *tlb, struct vm_area_struct *vma, * vm_flags and vm_page_prot are protected by the mmap_lock * held in write mode. */ + vma_start_write(vma); vm_flags_reset(vma, newflags); /* * We want to check manually if we can change individual PTEs writable diff --git a/mm/nommu.c b/mm/nommu.c index 14ffd4c668fe..30cc1228bd06 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -681,24 +681,21 @@ struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr) } EXPORT_SYMBOL(find_vma); -/* - * find a VMA - * - we don't extend stack VMAs under NOMMU conditions - */ -struct vm_area_struct *find_extend_vma(struct mm_struct *mm, unsigned long addr) -{ - return find_vma(mm, addr); -} - /* * expand a stack to a given address * - not supported under NOMMU conditions */ -int expand_stack(struct vm_area_struct *vma, unsigned long address) +int expand_stack_locked(struct vm_area_struct *vma, unsigned long addr) { return -ENOMEM; } +struct vm_area_struct *expand_stack(struct mm_struct *mm, unsigned long addr) +{ + mmap_read_unlock(mm); + return NULL; +} + /* * look up the first VMA exactly that exactly matches addr * - should be called with mm->mmap_lock at least held readlocked diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c6358579527e..d5ca46562e88 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -77,6 +77,7 @@ #include #include #include +#include #include #include @@ -2600,6 +2601,7 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags set_page_pfmemalloc(page); else clear_page_pfmemalloc(page); + trace_android_vh_test_clear_look_around_ref(page); } /* diff --git a/mm/pagewalk.c b/mm/pagewalk.c index 2ff3a5bebceb..d92c5b567837 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -384,6 +384,33 @@ static int __walk_page_range(unsigned long start, unsigned long end, return err; } +static inline void process_mm_walk_lock(struct mm_struct *mm, + enum page_walk_lock walk_lock) +{ + if (walk_lock == PGWALK_RDLOCK) + mmap_assert_locked(mm); + else + mmap_assert_write_locked(mm); +} + +static inline void process_vma_walk_lock(struct vm_area_struct *vma, + enum page_walk_lock walk_lock) +{ +#ifdef CONFIG_PER_VMA_LOCK + switch (walk_lock) { + case PGWALK_WRLOCK: + vma_start_write(vma); + break; + case PGWALK_WRLOCK_VERIFY: + vma_assert_write_locked(vma); + break; + case PGWALK_RDLOCK: + /* PGWALK_RDLOCK is handled by process_mm_walk_lock */ + break; + } +#endif +} + /** * walk_page_range - walk page table with caller specific callbacks * @mm: mm_struct representing the target process of page table walk @@ -443,7 +470,7 @@ int walk_page_range(struct mm_struct *mm, unsigned long start, if (!walk.mm) return -EINVAL; - mmap_assert_locked(walk.mm); + process_mm_walk_lock(walk.mm, ops->walk_lock); vma = find_vma(walk.mm, start); do { @@ -458,6 +485,7 @@ int walk_page_range(struct mm_struct *mm, unsigned long start, if (ops->pte_hole) err = ops->pte_hole(start, next, -1, &walk); } else { /* inside vma */ + process_vma_walk_lock(vma, ops->walk_lock); walk.vma = vma; next = min(end, vma->vm_end); vma = find_vma(mm, vma->vm_end); @@ -531,7 +559,8 @@ int walk_page_vma(struct vm_area_struct *vma, const struct mm_walk_ops *ops, if (!walk.mm) return -EINVAL; - mmap_assert_locked(walk.mm); + process_mm_walk_lock(walk.mm, ops->walk_lock); + process_vma_walk_lock(vma, ops->walk_lock); err = walk_page_test(vma->vm_start, vma->vm_end, &walk); if (err > 0) diff --git a/mm/rmap.c b/mm/rmap.c index 9cf4f09cd71d..d1603eb79818 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -826,6 +826,7 @@ static bool folio_referenced_one(struct folio *folio, } if (pvmw.pte) { + trace_android_vh_look_around(&pvmw, folio, vma, &referenced); if (lru_gen_enabled() && pte_young(*pvmw.pte)) { lru_gen_look_around(&pvmw); referenced++; diff --git a/mm/vmscan.c b/mm/vmscan.c index fca78c0a1863..ee52b8348ce9 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1468,6 +1468,11 @@ static enum folio_references folio_check_references(struct folio *folio, { int referenced_ptes, referenced_folio; unsigned long vm_flags; + int ret = 0; + + trace_android_vh_check_folio_look_around_ref(folio, &ret); + if (ret) + return ret; referenced_ptes = folio_referenced(folio, 1, sc->target_mem_cgroup, &vm_flags); @@ -2186,6 +2191,25 @@ static __always_inline void update_lru_sizes(struct lruvec *lruvec, } +#ifdef CONFIG_CMA +/* + * It is waste of effort to scan and reclaim CMA pages if it is not available + * for current allocation context. Kswapd can not be enrolled as it can not + * distinguish this scenario by using sc->gfp_mask = GFP_KERNEL + */ +static bool skip_cma(struct folio *folio, struct scan_control *sc) +{ + return !current_is_kswapd() && + gfp_migratetype(sc->gfp_mask) != MIGRATE_MOVABLE && + get_pageblock_migratetype(&folio->page) == MIGRATE_CMA; +} +#else +static bool skip_cma(struct folio *folio, struct scan_control *sc) +{ + return false; +} +#endif + /* * Isolating page from the lruvec to fill in @dst list by nr_to_scan times. * @@ -2232,7 +2256,8 @@ static unsigned long isolate_lru_folios(unsigned long nr_to_scan, nr_pages = folio_nr_pages(folio); total_scan += nr_pages; - if (folio_zonenum(folio) > sc->reclaim_idx) { + if (folio_zonenum(folio) > sc->reclaim_idx || + skip_cma(folio, sc)) { nr_skipped[folio_zonenum(folio)] += nr_pages; move_to = &folios_skipped; goto move; @@ -3025,6 +3050,7 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, fraction[1] = fp; denominator = ap + fp; out: + trace_android_vh_tune_scan_type(&scan_balance); for_each_evictable_lru(lru) { int file = is_file_lru(lru); unsigned long lruvec_size; @@ -4198,6 +4224,7 @@ static void walk_mm(struct lruvec *lruvec, struct mm_struct *mm, struct lru_gen_ static const struct mm_walk_ops mm_walk_ops = { .test_walk = should_skip_vma, .p4d_entry = walk_pud_range, + .walk_lock = PGWALK_RDLOCK, }; int err; @@ -4353,7 +4380,7 @@ static void inc_max_seq(struct lruvec *lruvec, bool can_swap, bool force_scan) int prev, next; int type, zone; struct lru_gen_folio *lrugen = &lruvec->lrugen; - +restart: spin_lock_irq(&lruvec->lru_lock); VM_WARN_ON_ONCE(!seq_is_valid(lruvec)); @@ -4364,11 +4391,12 @@ static void inc_max_seq(struct lruvec *lruvec, bool can_swap, bool force_scan) VM_WARN_ON_ONCE(!force_scan && (type == LRU_GEN_FILE || can_swap)); - while (!inc_min_seq(lruvec, type, can_swap)) { - spin_unlock_irq(&lruvec->lru_lock); - cond_resched(); - spin_lock_irq(&lruvec->lru_lock); - } + if (inc_min_seq(lruvec, type, can_swap)) + continue; + + spin_unlock_irq(&lruvec->lru_lock); + cond_resched(); + goto restart; } /* @@ -4569,6 +4597,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) pte_t *pte = pvmw->pte; unsigned long addr = pvmw->address; struct folio *folio = pfn_folio(pvmw->pfn); + bool can_swap = !folio_is_file_lru(folio); struct mem_cgroup *memcg = folio_memcg(folio); struct pglist_data *pgdat = folio_pgdat(folio); struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat); @@ -4616,7 +4645,7 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) if (!pte_young(pte[i])) continue; - folio = get_pfn_folio(pfn, memcg, pgdat, !walk || walk->can_swap); + folio = get_pfn_folio(pfn, memcg, pgdat, can_swap); if (!folio) continue; @@ -4799,7 +4828,8 @@ static int lru_gen_memcg_seg(struct lruvec *lruvec) * the eviction ******************************************************************************/ -static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx) +static bool sort_folio(struct lruvec *lruvec, struct folio *folio, struct scan_control *sc, + int tier_idx) { bool success; int gen = folio_lru_gen(folio); @@ -4849,6 +4879,13 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx) return true; } + /* ineligible */ + if (zone > sc->reclaim_idx || skip_cma(folio, sc)) { + gen = folio_inc_gen(lruvec, folio, false); + list_move_tail(&folio->lru, &lrugen->folios[gen][type][zone]); + return true; + } + /* waiting for writeback */ if (folio_test_locked(folio) || folio_test_writeback(folio) || (type == LRU_GEN_FILE && folio_test_dirty(folio))) { @@ -4897,7 +4934,8 @@ static bool isolate_folio(struct lruvec *lruvec, struct folio *folio, struct sca static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, int type, int tier, struct list_head *list) { - int gen, zone; + int i; + int gen; enum vm_event_item item; int sorted = 0; int scanned = 0; @@ -4913,9 +4951,10 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, gen = lru_gen_from_seq(lrugen->min_seq[type]); - for (zone = sc->reclaim_idx; zone >= 0; zone--) { + for (i = MAX_NR_ZONES; i > 0; i--) { LIST_HEAD(moved); int skipped = 0; + int zone = (sc->reclaim_idx + i) % MAX_NR_ZONES; struct list_head *head = &lrugen->folios[gen][type][zone]; while (!list_empty(head)) { @@ -4929,7 +4968,7 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, scanned += delta; - if (sort_folio(lruvec, folio, tier)) + if (sort_folio(lruvec, folio, sc, tier)) sorted += delta; else if (isolate_folio(lruvec, folio, sc)) { list_add(&folio->lru, list); diff --git a/net/can/isotp.c b/net/can/isotp.c index 1af623839bff..b3c2a49b189c 100644 --- a/net/can/isotp.c +++ b/net/can/isotp.c @@ -1079,8 +1079,9 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) if (err) goto err_event_drop; - if (sk->sk_err) - return -sk->sk_err; + err = sock_error(sk); + if (err) + return err; } return size; diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index 7f71bdbc8267..66a168093e68 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -3890,6 +3890,8 @@ static int nf_tables_delrule(struct sk_buff *skb, const struct nfnl_info *info, list_for_each_entry(chain, &table->chains, list) { if (!nft_is_active_next(net, chain)) continue; + if (nft_chain_is_bound(chain)) + continue; ctx.chain = chain; err = nft_delrule_by_chain(&ctx); diff --git a/net/netfilter/nft_set_pipapo.c b/net/netfilter/nft_set_pipapo.c index 0452ee586c1c..a81829c10fea 100644 --- a/net/netfilter/nft_set_pipapo.c +++ b/net/netfilter/nft_set_pipapo.c @@ -1930,7 +1930,11 @@ static void nft_pipapo_remove(const struct net *net, const struct nft_set *set, int i, start, rules_fx; match_start = data; - match_end = (const u8 *)nft_set_ext_key_end(&e->ext)->data; + + if (nft_set_ext_exists(&e->ext, NFT_SET_EXT_KEY_END)) + match_end = (const u8 *)nft_set_ext_key_end(&e->ext)->data; + else + match_end = data; start = first_rule; rules_fx = rules_f0; diff --git a/net/sched/cls_fw.c b/net/sched/cls_fw.c index a32351da968c..1212b057b129 100644 --- a/net/sched/cls_fw.c +++ b/net/sched/cls_fw.c @@ -210,11 +210,6 @@ static int fw_set_parms(struct net *net, struct tcf_proto *tp, if (err < 0) return err; - if (tb[TCA_FW_CLASSID]) { - f->res.classid = nla_get_u32(tb[TCA_FW_CLASSID]); - tcf_bind_filter(tp, &f->res, base); - } - if (tb[TCA_FW_INDEV]) { int ret; ret = tcf_change_indev(net, tb[TCA_FW_INDEV], extack); @@ -231,6 +226,11 @@ static int fw_set_parms(struct net *net, struct tcf_proto *tp, } else if (head->mask != 0xFFFFFFFF) return err; + if (tb[TCA_FW_CLASSID]) { + f->res.classid = nla_get_u32(tb[TCA_FW_CLASSID]); + tcf_bind_filter(tp, &f->res, base); + } + return 0; } diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index 02098a02943e..d5610e145da2 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c @@ -113,6 +113,7 @@ #define QFQ_MTU_SHIFT 16 /* to support TSO/GSO */ #define QFQ_MIN_LMAX 512 /* see qfq_slot_insert */ +#define QFQ_MAX_LMAX (1UL << QFQ_MTU_SHIFT) #define QFQ_MAX_AGG_CLASSES 8 /* max num classes per aggregate allowed */ @@ -214,9 +215,14 @@ static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid) return container_of(clc, struct qfq_class, common); } +static struct netlink_range_validation lmax_range = { + .min = QFQ_MIN_LMAX, + .max = QFQ_MAX_LMAX, +}; + static const struct nla_policy qfq_policy[TCA_QFQ_MAX + 1] = { - [TCA_QFQ_WEIGHT] = { .type = NLA_U32 }, - [TCA_QFQ_LMAX] = { .type = NLA_U32 }, + [TCA_QFQ_WEIGHT] = NLA_POLICY_RANGE(NLA_U32, 1, QFQ_MAX_WEIGHT), + [TCA_QFQ_LMAX] = NLA_POLICY_FULL_RANGE(NLA_U32, &lmax_range), }; /* @@ -375,8 +381,13 @@ static int qfq_change_agg(struct Qdisc *sch, struct qfq_class *cl, u32 weight, u32 lmax) { struct qfq_sched *q = qdisc_priv(sch); - struct qfq_aggregate *new_agg = qfq_find_agg(q, lmax, weight); + struct qfq_aggregate *new_agg; + /* 'lmax' can range from [QFQ_MIN_LMAX, pktlen + stab overhead] */ + if (lmax > QFQ_MAX_LMAX) + return -EINVAL; + + new_agg = qfq_find_agg(q, lmax, weight); if (new_agg == NULL) { /* create new aggregate */ new_agg = kzalloc(sizeof(*new_agg), GFP_ATOMIC); if (new_agg == NULL) @@ -408,17 +419,13 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, } err = nla_parse_nested_deprecated(tb, TCA_QFQ_MAX, tca[TCA_OPTIONS], - qfq_policy, NULL); + qfq_policy, extack); if (err < 0) return err; - if (tb[TCA_QFQ_WEIGHT]) { + if (tb[TCA_QFQ_WEIGHT]) weight = nla_get_u32(tb[TCA_QFQ_WEIGHT]); - if (!weight || weight > (1UL << QFQ_MAX_WSHIFT)) { - pr_notice("qfq: invalid weight %u\n", weight); - return -EINVAL; - } - } else + else weight = 1; if (tb[TCA_QFQ_LMAX]) @@ -426,11 +433,6 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, else lmax = psched_mtu(qdisc_dev(sch)); - if (lmax < QFQ_MIN_LMAX || lmax > (1UL << QFQ_MTU_SHIFT)) { - pr_notice("qfq: invalid max length %u\n", lmax); - return -EINVAL; - } - inv_w = ONE_FP / weight; weight = ONE_FP / inv_w; diff --git a/scripts/gen_gki_modules_headers.sh b/scripts/gen_gki_modules_headers.sh index 3aa221a058f4..ca435f49b62f 100755 --- a/scripts/gen_gki_modules_headers.sh +++ b/scripts/gen_gki_modules_headers.sh @@ -108,7 +108,7 @@ if [ "$(basename "${TARGET}")" = "gki_module_unprotected.h" ]; then generate_header "${TARGET}" "${GKI_VENDOR_SYMBOLS}" "unprotected" else # Sorted list of exported symbols - GKI_EXPORTED_SYMBOLS="${objtree}/abi_gki_protected_exports" + GKI_EXPORTED_SYMBOLS="include/config/abi_gki_protected_exports" if [ -z "${SYMBOL_LIST}" ]; then # Create empty list if ARCH doesn't have protected exports diff --git a/tools/testing/selftests/filesystems/fuse/fuse_test.c b/tools/testing/selftests/filesystems/fuse/fuse_test.c index bdb70e23b349..0bf1f030cbcd 100644 --- a/tools/testing/selftests/filesystems/fuse/fuse_test.c +++ b/tools/testing/selftests/filesystems/fuse/fuse_test.c @@ -1345,7 +1345,6 @@ static int flock_test(const char *mount_dir) int fuse_dev = -1; int fd = -1, fd2 = -1; int backing_fd = -1; - char *addr = NULL; TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC), src_fd != -1); @@ -2010,6 +2009,44 @@ static int bpf_test_lookup_postfilter(const char *mount_dir) return result; } +/** + * Test that a file made via create_and_open correctly gets the bpf assigned + * from the negative lookup + * bpf blocks file open, but also removes itself from children + * This test will fail if the 'remove' is unsuccessful + */ +static int bpf_test_create_and_remove_bpf(const char *mount_dir) +{ + const char *file = "file"; + + int result = TEST_FAILURE; + int src_fd = -1; + int bpf_fd = -1; + int fuse_dev = -1; + int fd = -1; + int fd2 = -1; + + TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC), + src_fd != -1); + TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_create_remove", &bpf_fd, + NULL, NULL), 0); + TESTEQUAL(mount_fuse_no_init(mount_dir, bpf_fd, src_fd, &fuse_dev), 0); + TEST(fd = s_creat(s_path(s(mount_dir), s(file)), 0777), + fd != -1); + TEST(fd2 = s_open(s_path(s(mount_dir), s(file)), O_RDONLY), + fd2 != -1); + + result = TEST_SUCCESS; +out: + close(fd2); + close(fd); + close(fuse_dev); + close(bpf_fd); + close(src_fd); + umount(mount_dir); + return result; +} + static void parse_range(const char *ranges, bool *run_test, size_t tests) { size_t i; @@ -2137,6 +2174,7 @@ int main(int argc, char *argv[]) MAKE_TEST(bpf_test_revalidate_handle_backing_fd), MAKE_TEST(bpf_test_lookup_postfilter), MAKE_TEST(flock_test), + MAKE_TEST(bpf_test_create_and_remove_bpf), }; #undef MAKE_TEST diff --git a/tools/testing/selftests/filesystems/fuse/test_bpf.c b/tools/testing/selftests/filesystems/fuse/test_bpf.c index 032cb1178f9f..e02bdb4a9380 100644 --- a/tools/testing/selftests/filesystems/fuse/test_bpf.c +++ b/tools/testing/selftests/filesystems/fuse/test_bpf.c @@ -505,3 +505,29 @@ int lookuppostfilter_test(struct fuse_bpf_args *fa) return FUSE_BPF_BACKING; } } + +SEC("test_create_remove") +int createremovebpf_test(struct fuse_bpf_args *fa) +{ + switch (fa->opcode) { + case FUSE_LOOKUP | FUSE_PREFILTER: { + return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER; + } + + case FUSE_LOOKUP | FUSE_POSTFILTER: { + struct fuse_entry_bpf_out *febo = fa->out_args[1].value; + + febo->bpf_action = FUSE_ACTION_REMOVE; + return 0; + } + + case FUSE_OPEN | FUSE_PREFILTER: { + return -EIO; + } + + default: + return FUSE_BPF_BACKING; + } +} + +