diff --git a/BUILD.bazel b/BUILD.bazel index 1c0d1a1413a6..680f6a9708ed 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -101,9 +101,12 @@ write_file( ) write_file( - name = "gki_aarch64_protected_modules", - out = "gki/aarch64/protected_modules", - content = get_gki_protected_modules_list("arm64") + [ + name = "gki_aarch64_protected_module_names", + out = "gki/aarch64/protected_module_names", + content = [ + module.removesuffix(".ko") + for module in get_gki_protected_modules_list("arm64") + ] + [ "", # Ensure new line at the end. ], ) @@ -119,9 +122,12 @@ write_file( ) write_file( - name = "gki_x86_64_protected_modules", - out = "gki/x86_64/protected_modules", - content = get_gki_protected_modules_list("x86_64") + [ + name = "gki_x86_64_protected_module_names", + out = "gki/x86_64/protected_module_names", + content = [ + module.removesuffix(".ko") + for module in get_gki_protected_modules_list("x86_64") + ] + [ "", # Ensure new line at the end. ], ) @@ -189,6 +195,7 @@ filegroup( "gki/aarch64/symbols/pixel", "gki/aarch64/symbols/qcom", "gki/aarch64/symbols/rtkstb", + "gki/aarch64/symbols/rtktv", "gki/aarch64/symbols/trusty", "gki/aarch64/symbols/tuxera", "gki/aarch64/symbols/type_visibility", @@ -247,8 +254,7 @@ common_kernel( make_goals = _GKI_AARCH64_MAKE_GOALS, makefile = ":Makefile", module_implicit_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64"), - protected_exports_list = "gki/aarch64/protected_exports", - protected_modules_list = ":gki_aarch64_protected_modules", + protected_module_names_list = ":gki_aarch64_protected_module_names", system_dlkm_extra_archive_files = [":generate_gki_module_info_arm64"], trim_nonlisted_kmi = True, visibility = ["//visibility:public"], @@ -278,8 +284,7 @@ common_kernel( makefile = ":Makefile", module_implicit_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64"), page_size = "16k", - protected_exports_list = "gki/aarch64/protected_exports", - protected_modules_list = ":gki_aarch64_protected_modules", + protected_module_names_list = ":gki_aarch64_protected_module_names", system_dlkm_extra_archive_files = [":generate_gki_module_info_arm64"], trim_nonlisted_kmi = True, visibility = ["//visibility:public"], @@ -307,8 +312,7 @@ common_kernel( makefile = ":Makefile", module_implicit_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64"), pre_defconfig_fragments = ["arch/arm64/configs/tv_gki.fragment"], - protected_exports_list = "gki/aarch64/protected_exports", - protected_modules_list = ":gki_aarch64_protected_modules", + protected_module_names_list = ":gki_aarch64_protected_module_names", system_dlkm_extra_archive_files = [":generate_gki_module_info_arm64"], trim_nonlisted_kmi = True, visibility = ["//visibility:public"], @@ -347,8 +351,7 @@ common_kernel( make_goals = _GKI_AARCH64_MAKE_GOALS, makefile = ":Makefile", module_implicit_outs = get_gki_modules_list("arm64") + get_kunit_modules_list("arm64"), - protected_exports_list = "gki/aarch64/protected_exports", - protected_modules_list = ":gki_aarch64_protected_modules", + protected_module_names_list = ":gki_aarch64_protected_module_names", system_dlkm_extra_archive_files = [":generate_gki_module_info_arm64"], trim_nonlisted_kmi = True, visibility = ["//visibility:public"], @@ -1605,6 +1608,22 @@ ddk_headers( # Implementation details for DDK headers. The targets below cannot be directly # depended on by DDK modules. +# Headers for building pKVM modules. They are for pKVM only so not added to +# all_headers_aarch64. +ddk_headers( + name = "pkvm_headers_aarch64", + hdrs = [ + "arch/arm64/kvm/hyp/include/module/nvhe/define_events.h", + "arch/arm64/kvm/hyp/include/module/nvhe/trace.h", + ], + includes = [ + # LINT.IfChange(pkvm_includes) + "arch/arm64/kvm/hyp/include/module", + # LINT.ThenChange(/arch/arm64/kvm/hyp/nvhe/Makefile.module:includes) + ], + visibility = ["//visibility:private"], +) + # Headers needed to include drivers/usb/host/xhci.h. ddk_headers( name = "xhci_headers", @@ -1637,12 +1656,16 @@ ddk_headers( "drivers/thermal/thermal_debugfs.h", "drivers/thermal/thermal_netlink.h", "drivers/thermal/thermal_thresholds.h", + "drivers/ufs/core/ufshcd-crypto.h", + "drivers/ufs/core/ufshcd-priv.h", + "drivers/ufs/host/ufshcd-pltfrm.h", "drivers/usb/dwc3/core.h", "sound/usb/card.h", "sound/usb/usbaudio.h", ":all_headers_allowlist_aarch64_globs", ":all_headers_allowlist_common_globs", ":all_headers_allowlist_exynos", + ":pkvm_headers_aarch64", ":xhci_headers", ], # The list of include directories where source files can #include headers @@ -1655,6 +1678,7 @@ ddk_headers( "drivers/pci", "drivers/pci/controller/dwc", "drivers/thermal", + "drivers/ufs", "drivers/usb", "sound/usb", "include", diff --git a/Makefile b/Makefile index 8a0458e68832..5765f3ab9782 100644 --- a/Makefile +++ b/Makefile @@ -1553,7 +1553,8 @@ CLEAN_FILES += vmlinux.symvers modules-only.symvers \ modules.builtin modules.builtin.modinfo modules.nsdeps \ modules.builtin.ranges vmlinux.o.map \ compile_commands.json rust/test \ - rust-project.json .vmlinux.objs .vmlinux.export.c + rust-project.json .vmlinux.objs .vmlinux.export.c \ + .vmlinux.protected-exports.c .vmlinux.permitted-imports.c # Directories & files removed with 'make mrproper' MRPROPER_FILES += include/config include/generated \ diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index af29b7160c3f..2c77b3c702be 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -108,7 +108,6 @@ CONFIG_MODVERSIONS=y CONFIG_GENDWARFKSYMS=y CONFIG_MODULE_SCMVERSION=y CONFIG_MODULE_SIG=y -CONFIG_MODULE_SIG_PROTECT=y CONFIG_MODPROBE_PATH="/system/bin/modprobe" CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_WBT=y diff --git a/arch/arm64/include/asm/kvm_hypevents.h b/arch/arm64/include/asm/kvm_hypevents.h index 3489973c0828..cb93232138b9 100644 --- a/arch/arm64/include/asm/kvm_hypevents.h +++ b/arch/arm64/include/asm/kvm_hypevents.h @@ -4,7 +4,7 @@ #define __ARM64_KVM_HYPEVENTS_H_ #ifdef __KVM_NVHE_HYPERVISOR__ -#include +#include #endif /* diff --git a/arch/arm64/kvm/hyp/Makefile b/arch/arm64/kvm/hyp/Makefile index d61e44642f98..574657a8994f 100644 --- a/arch/arm64/kvm/hyp/Makefile +++ b/arch/arm64/kvm/hyp/Makefile @@ -7,4 +7,8 @@ incdir := $(src)/include subdir-asflags-y := -I$(incdir) subdir-ccflags-y := -I$(incdir) +# ANDROID: Add -I for tracing +subdir-asflags-y += -I$(incdir)/module +subdir-ccflags-y += -I$(incdir)/module + obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.o diff --git a/arch/arm64/kvm/hyp/include/nvhe/trace/define_events.h b/arch/arm64/kvm/hyp/include/module/nvhe/define_events.h similarity index 100% rename from arch/arm64/kvm/hyp/include/nvhe/trace/define_events.h rename to arch/arm64/kvm/hyp/include/module/nvhe/define_events.h diff --git a/arch/arm64/kvm/hyp/include/nvhe/trace/trace.h b/arch/arm64/kvm/hyp/include/module/nvhe/trace.h similarity index 100% rename from arch/arm64/kvm/hyp/include/nvhe/trace/trace.h rename to arch/arm64/kvm/hyp/include/module/nvhe/trace.h diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile.module b/arch/arm64/kvm/hyp/nvhe/Makefile.module index 7b365ce3710c..749d1ee90d79 100644 --- a/arch/arm64/kvm/hyp/nvhe/Makefile.module +++ b/arch/arm64/kvm/hyp/nvhe/Makefile.module @@ -5,4 +5,11 @@ $(obj)/hyp.lds: arch/arm64/kvm/hyp/nvhe/module.lds.S FORCE include $(srctree)/arch/arm64/kvm/hyp/nvhe/Makefile.nvhe -ccflags-y += -I$(srctree)/arch/arm64/kvm/hyp/include/nvhe/trace/ -DMODULE +# Deprecated; subject to removal. +ccflags-y += -I$(srctree)/arch/arm64/kvm/hyp/include/module/nvhe + +# LINT.IfChange(includes) +ccflags-y += -I$(srctree)/arch/arm64/kvm/hyp/include/module +# LINT.ThenChange(/BUILD.bazel:pkvm_includes) + +ccflags-y += -DMODULE diff --git a/arch/arm64/kvm/hyp/nvhe/events.c b/arch/arm64/kvm/hyp/nvhe/events.c index 67ef05647362..d0c6793f5a4f 100644 --- a/arch/arm64/kvm/hyp/nvhe/events.c +++ b/arch/arm64/kvm/hyp/nvhe/events.c @@ -5,9 +5,9 @@ #include #include -#include +#include -#include +#include extern struct hyp_event_id __hyp_event_ids_start[]; extern struct hyp_event_id __hyp_event_ids_end[]; diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 97a195e1085f..d4347a7cd3e2 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include diff --git a/arch/arm64/kvm/hyp/nvhe/modules.c b/arch/arm64/kvm/hyp/nvhe/modules.c index e78695ac68e5..67fbf6b2a8f0 100644 --- a/arch/arm64/kvm/hyp/nvhe/modules.c +++ b/arch/arm64/kvm/hyp/nvhe/modules.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include static void *__pkvm_module_memcpy(void *to, const void *from, size_t count) diff --git a/arch/arm64/kvm/hyp/nvhe/setup.c b/arch/arm64/kvm/hyp/nvhe/setup.c index b3c9d90dedeb..f4617892a684 100644 --- a/arch/arm64/kvm/hyp/nvhe/setup.c +++ b/arch/arm64/kvm/hyp/nvhe/setup.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include unsigned long hyp_nr_cpus; diff --git a/arch/arm64/kvm/hyp/nvhe/trace.c b/arch/arm64/kvm/hyp/nvhe/trace.c index e77bda5fa6e0..3799dd91fd2c 100644 --- a/arch/arm64/kvm/hyp/nvhe/trace.c +++ b/arch/arm64/kvm/hyp/nvhe/trace.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 2dc96eb4c632..936719ae8b15 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -100,7 +100,6 @@ CONFIG_MODVERSIONS=y CONFIG_GENDWARFKSYMS=y CONFIG_MODULE_SCMVERSION=y CONFIG_MODULE_SIG=y -CONFIG_MODULE_SIG_PROTECT=y CONFIG_MODPROBE_PATH="" CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_WBT=y diff --git a/gki/README.md b/gki/README.md index c4dc51432274..a84dab11b9d8 100644 --- a/gki/README.md +++ b/gki/README.md @@ -11,7 +11,6 @@ gki | | |-- virtual_device | | |-- $partner | | +-- ... -| |-- protected_exports | |-- abi.stg | |-- abi.stg.allowed_breaks | +-- afdo @@ -28,9 +27,6 @@ architecture. Within each such subdirectory: * maintained by the partner * e.g. `kmi_symbol_list = "//common:gki/aarch64/symbols/acme"` * e.g. `tools/bazel run //modules:acme_aarch64_abi_update_symbol_list` -* `protected_exports` - a list of symbols owned by GKI modules - * maintained by Kleaf - * e.g. `tools/bazel run //common:kernel_aarch64_abi_update_protected_exports` * `abi.stg` - the tracked ABI * maintained by Kleaf * e.g. `tools/bazel run //common:kernel_aarch64_abi_update` diff --git a/gki/aarch64/abi.stg b/gki/aarch64/abi.stg index 555111fcdc55..acca60af5d84 100644 --- a/gki/aarch64/abi.stg +++ b/gki/aarch64/abi.stg @@ -808,6 +808,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x201aebe0 } +pointer_reference { + id: 0x0298e601 + kind: POINTER + pointee_type_id: 0x20237e9a +} pointer_reference { id: 0x029d7f27 kind: POINTER @@ -4133,6 +4138,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1840f6e3 } +pointer_reference { + id: 0x0c8247d9 + kind: POINTER + pointee_type_id: 0x1849f9fb +} pointer_reference { id: 0x0c831646 kind: POINTER @@ -5548,6 +5558,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c25e791 } +pointer_reference { + id: 0x0d99c6ee + kind: POINTER + pointee_type_id: 0x1c27fd26 +} pointer_reference { id: 0x0d9a8731 kind: POINTER @@ -7753,6 +7768,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x16b0ef4b } +pointer_reference { + id: 0x0f3caff3 + kind: POINTER + pointee_type_id: 0x16b25950 +} pointer_reference { id: 0x0f3d78fb kind: POINTER @@ -9143,6 +9163,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6033a0b0 } +pointer_reference { + id: 0x12b14ab3 + kind: POINTER + pointee_type_id: 0x6085cc50 +} pointer_reference { id: 0x12b82135 kind: POINTER @@ -9653,6 +9678,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x798d1382 } +pointer_reference { + id: 0x14fac9c4 + kind: POINTER + pointee_type_id: 0x79abc18d +} pointer_reference { id: 0x14fb0ab0 kind: POINTER @@ -31563,6 +31593,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdc5b5a90 } +pointer_reference { + id: 0x3d8749eb + kind: POINTER + pointee_type_id: 0xdc5dc133 +} pointer_reference { id: 0x3d8951f4 kind: POINTER @@ -32798,6 +32833,11 @@ typedef { name: "LZ4_stream_t_internal" referred_type_id: 0x0ec065d6 } +typedef { + id: 0x0333756f + name: "MPI" + referred_type_id: 0x0f3caff3 +} typedef { id: 0x9362c2f7 name: "SeqCollector" @@ -34188,6 +34228,11 @@ typedef { name: "int64_t" referred_type_id: 0x2e0f9112 } +typedef { + id: 0x8f970307 + name: "io_notify_fn" + referred_type_id: 0x0d99c6ee +} typedef { id: 0xd7dcb394 name: "io_req_flags_t" @@ -34453,6 +34498,11 @@ typedef { name: "mmc_pm_flag_t" referred_type_id: 0x4585663f } +typedef { + id: 0xdc5dc133 + name: "mpi_limb_t" + referred_type_id: 0x33756485 +} typedef { id: 0xad6ae097 name: "mqd_t" @@ -53646,6 +53696,11 @@ member { type_id: 0x6720d32f offset: 11008 } +member { + id: 0xc31bcb69 + name: "alloced" + type_id: 0x6720d32f +} member { id: 0xc34f971c name: "alloced" @@ -59555,6 +59610,11 @@ member { name: "bi_next" type_id: 0x15a30023 } +member { + id: 0xb34d4237 + name: "bi_opf" + type_id: 0x7b64642a +} member { id: 0xb34d4bf5 name: "bi_opf" @@ -59897,6 +59957,11 @@ member { type_id: 0x37326710 offset: 4864 } +member { + id: 0xcac861af + name: "bio" + type_id: 0x15a30023 +} member { id: 0xcac8654e name: "bio" @@ -68776,6 +68841,12 @@ member { name: "client" type_id: 0x1f56f2cc } +member { + id: 0x852b9e4d + name: "client" + type_id: 0x14fac9c4 + offset: 320 +} member { id: 0x853226c6 name: "client" @@ -72922,6 +72993,12 @@ member { type_id: 0x15c77315 offset: 4864 } +member { + id: 0x41af811e + name: "context" + type_id: 0x18bd6530 + offset: 64 +} member { id: 0x41af8238 name: "context" @@ -73958,6 +74035,12 @@ member { name: "count" type_id: 0xc9082b19 } +member { + id: 0x65f5e5a4 + name: "count" + type_id: 0xd0b3a203 + offset: 128 +} member { id: 0x22ca83bc name: "count_bits" @@ -77382,6 +77465,12 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xc3274c65 + name: "d" + type_id: 0x3d8749eb + offset: 192 +} member { id: 0x8b609d6e name: "d1_support" @@ -101451,6 +101540,11 @@ member { type_id: 0x92b210b3 offset: 128 } +member { + id: 0xf718780b + name: "fn" + type_id: 0x8f970307 +} member { id: 0xf721f5dc name: "fn" @@ -138767,6 +138861,12 @@ member { type_id: 0x1c6fe5c8 offset: 128 } +member { + id: 0x52354e21 + name: "mem" + type_id: 0x34f13b93 + offset: 64 +} member { id: 0x52460458 name: "mem" @@ -145771,6 +145871,12 @@ member { type_id: 0x74d29cf1 offset: 1280 } +member { + id: 0x130472e8 + name: "nbits" + type_id: 0x6720d32f + offset: 64 +} member { id: 0x1326d317 name: "nbits" @@ -147682,6 +147788,11 @@ member { name: "next" type_id: 0x2d5e3e76 } +member { + id: 0x11e1b195 + name: "next" + type_id: 0x12b14ab3 +} member { id: 0x11e1e8dd name: "next" @@ -148805,6 +148916,12 @@ member { type_id: 0x3bd9eb0b offset: 128 } +member { + id: 0xd226143a + name: "nlimbs" + type_id: 0x6720d32f + offset: 32 +} member { id: 0x2ab418ef name: "nlink" @@ -150184,6 +150301,12 @@ member { type_id: 0x7c355df7 offset: 832 } +member { + id: 0x56b6a46e + name: "notify" + type_id: 0x40a9cdef + offset: 192 +} member { id: 0x56d8a8a7 name: "notify" @@ -164556,6 +164679,11 @@ member { type_id: 0x26d92c94 offset: 3392 } +member { + id: 0x4d1273a3 + name: "pl" + type_id: 0x12b14ab3 +} member { id: 0x451925c4 name: "placement" @@ -171727,6 +171855,12 @@ member { type_id: 0x86d95287 offset: 768 } +member { + id: 0x46b542cf + name: "ptr" + type_id: 0x458cfbd8 + offset: 64 +} member { id: 0x46c17f73 name: "ptr" @@ -189741,6 +189875,12 @@ member { type_id: 0xd0b3a203 offset: 384 } +member { + id: 0x6695ffcf + name: "sector" + type_id: 0xd0b3a203 + offset: 64 +} member { id: 0xf705dc19 name: "sector_offset" @@ -194811,6 +194951,12 @@ member { type_id: 0x4050ae51 offset: 24 } +member { + id: 0x90281838 + name: "sign" + type_id: 0x6720d32f + offset: 96 +} member { id: 0x90777e15 name: "sign" @@ -215260,6 +215406,11 @@ member { name: "type" type_id: 0x1df06cce } +member { + id: 0x5c4e24c4 + name: "type" + type_id: 0x18f1ba69 +} member { id: 0x5c4f16c5 name: "type" @@ -223871,6 +224022,11 @@ member { type_id: 0x04fd6761 offset: 1408 } +member { + id: 0x23833437 + name: "vma" + type_id: 0x18bd6530 +} member { id: 0x239192da name: "vma" @@ -234299,6 +234455,17 @@ struct_union { member_id: 0x2f419094 } } +struct_union { + id: 0x458cfbd8 + kind: UNION + definition { + bytesize: 8 + member_id: 0x4d1273a3 + member_id: 0xcac861af + member_id: 0x23833437 + member_id: 0x24356203 + } +} struct_union { id: 0x458dfb2e kind: UNION @@ -246836,6 +247003,55 @@ struct_union { member_id: 0x2c593fc1 } } +struct_union { + id: 0x79abc18d + kind: STRUCT + name: "dm_io_client" +} +struct_union { + id: 0x34f13b93 + kind: STRUCT + name: "dm_io_memory" + definition { + bytesize: 16 + member_id: 0x5c4e24c4 + member_id: 0x9b595499 + member_id: 0x46b542cf + } +} +struct_union { + id: 0x40a9cdef + kind: STRUCT + name: "dm_io_notify" + definition { + bytesize: 16 + member_id: 0xf718780b + member_id: 0x41af811e + } +} +struct_union { + id: 0x1849f9fb + kind: STRUCT + name: "dm_io_region" + definition { + bytesize: 24 + member_id: 0x51f028ab + member_id: 0x6695ffcf + member_id: 0x65f5e5a4 + } +} +struct_union { + id: 0x20237e9a + kind: STRUCT + name: "dm_io_request" + definition { + bytesize: 48 + member_id: 0xb34d4237 + member_id: 0x52354e21 + member_id: 0x56b6a46e + member_id: 0x852b9e4d + } +} struct_union { id: 0xa1319a08 kind: STRUCT @@ -254797,6 +255013,20 @@ struct_union { member_id: 0x34530866 } } +struct_union { + id: 0x16b25950 + kind: STRUCT + name: "gcry_mpi" + definition { + bytesize: 32 + member_id: 0xc31bcb69 + member_id: 0xd226143a + member_id: 0x130472e8 + member_id: 0x90281838 + member_id: 0x2d2d08fa + member_id: 0xc3274c65 + } +} struct_union { id: 0x78ef929d kind: STRUCT @@ -271268,6 +271498,16 @@ struct_union { member_id: 0xdfaa22c7 } } +struct_union { + id: 0x6085cc50 + kind: STRUCT + name: "page_list" + definition { + bytesize: 16 + member_id: 0x11e1b195 + member_id: 0x3203541e + } +} struct_union { id: 0x6753b66e kind: STRUCT @@ -303166,6 +303406,28 @@ enumeration { } } } +enumeration { + id: 0x18f1ba69 + name: "dm_io_mem_type" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DM_IO_PAGE_LIST" + } + enumerator { + name: "DM_IO_BIO" + value: 1 + } + enumerator { + name: "DM_IO_VMA" + value: 2 + } + enumerator { + name: "DM_IO_KMEM" + value: 3 + } + } +} enumeration { id: 0xfd56cb64 name: "dm_queue_mode" @@ -318734,6 +318996,11 @@ function { parameter_id: 0x00b7947f parameter_id: 0x384f7d7c } +function { + id: 0x10548cc8 + return_type_id: 0x48b5725f + parameter_id: 0x0333756f +} function { id: 0x105539bd return_type_id: 0x48b5725f @@ -322956,6 +323223,11 @@ function { parameter_id: 0x15a30023 parameter_id: 0x15a30023 } +function { + id: 0x15a6e3e2 + return_type_id: 0x48b5725f + parameter_id: 0x14fac9c4 +} function { id: 0x15acd3b0 return_type_id: 0x48b5725f @@ -327282,6 +327554,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x32fddfe5 } +function { + id: 0x1c27fd26 + return_type_id: 0x48b5725f + parameter_id: 0x33756485 + parameter_id: 0x18bd6530 +} function { id: 0x1c280429 return_type_id: 0x48b5725f @@ -328193,6 +328471,11 @@ function { parameter_id: 0x36194830 parameter_id: 0x026525e9 } +function { + id: 0x1d1a000c + return_type_id: 0x48b5725f + parameter_id: 0x3609467c +} function { id: 0x1d1ccc70 return_type_id: 0x48b5725f @@ -331113,6 +331396,14 @@ function { parameter_id: 0x25ffeea5 parameter_id: 0x0258f96e } +function { + id: 0x299442f2 + return_type_id: 0x0490bb4a + parameter_id: 0x4585663f + parameter_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x25e45be7 +} function { id: 0x29da83bb return_type_id: 0x042af17e @@ -333093,6 +333384,10 @@ function { return_type_id: 0x10b38ed2 parameter_id: 0x4585663f } +function { + id: 0x486e9b22 + return_type_id: 0x14fac9c4 +} function { id: 0x48800604 return_type_id: 0x251fec82 @@ -333927,6 +334222,13 @@ function { parameter_id: 0x0490bb4a parameter_id: 0x6720d32f } +function { + id: 0x56317f29 + return_type_id: 0x18bd6530 + parameter_id: 0x0333756f + parameter_id: 0x1bf16028 + parameter_id: 0x13580d6c +} function { id: 0x5641d9bd return_type_id: 0x18bd6530 @@ -333992,6 +334294,11 @@ function { id: 0x56b7c48c return_type_id: 0x865acc96 } +function { + id: 0x56bb9bde + return_type_id: 0xf9355da1 + parameter_id: 0x2f24a589 +} function { id: 0x56c2caab return_type_id: 0x295c7202 @@ -334724,6 +335031,13 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x295c7202 } +function { + id: 0x5ce22b54 + return_type_id: 0x18bd6530 + parameter_id: 0x2aa0b9bb + parameter_id: 0x33756485 + parameter_id: 0x4585663f +} function { id: 0x5cf22ad4 return_type_id: 0x391f15ea @@ -336720,6 +337034,14 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x120540d1 } +function { + id: 0x84065a5d + return_type_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0xb0312d5a + parameter_id: 0x1d19a9d5 +} function { id: 0x841792e5 return_type_id: 0x6720d32f @@ -337056,6 +337378,13 @@ function { parameter_id: 0x056cf603 parameter_id: 0x14b9453b } +function { + id: 0x8624d3e6 + return_type_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x92233392 + parameter_id: 0x92233392 +} function { id: 0x8625f433 return_type_id: 0x6720d32f @@ -337992,6 +338321,13 @@ function { parameter_id: 0x2afee447 parameter_id: 0x38d23361 } +function { + id: 0x903a4f56 + return_type_id: 0x6720d32f + parameter_id: 0x359862c8 + parameter_id: 0x33756485 + parameter_id: 0x4585663f +} function { id: 0x903a6e2b return_type_id: 0x6720d32f @@ -352302,6 +352638,13 @@ function { parameter_id: 0x275ab027 parameter_id: 0x064d6086 } +function { + id: 0x9b33517a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x2e18f543 + parameter_id: 0x92233392 +} function { id: 0x9b33e2c9 return_type_id: 0x6720d32f @@ -355486,6 +355829,13 @@ function { parameter_id: 0x13580d6c parameter_id: 0x11cfee5a } +function { + id: 0x9bc86033 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x18ea6ae3 + parameter_id: 0x11cfee5a +} function { id: 0x9bc8a163 return_type_id: 0x6720d32f @@ -355577,6 +355927,12 @@ function { parameter_id: 0x6720d32f parameter_id: 0x11cfee5a } +function { + id: 0x9bcc13c8 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x18ea6ae3 +} function { id: 0x9bcd4bf2 return_type_id: 0x6720d32f @@ -357171,6 +357527,15 @@ function { parameter_id: 0x3806a5e7 parameter_id: 0x6720d32f } +function { + id: 0x9c33c4dc + return_type_id: 0x6720d32f + parameter_id: 0x0298e601 + parameter_id: 0x4585663f + parameter_id: 0x0c8247d9 + parameter_id: 0x064d6086 + parameter_id: 0xc93e017b +} function { id: 0x9c35c17d return_type_id: 0x6720d32f @@ -358577,6 +358942,18 @@ function { return_type_id: 0x6720d32f parameter_id: 0x02182878 } +function { + id: 0x9d07714c + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x0490bb4a + parameter_id: 0x09a83f1c + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x366f4294 + parameter_id: 0x052d8c89 +} function { id: 0x9d07ab0e return_type_id: 0x6720d32f @@ -358774,6 +359151,12 @@ function { parameter_id: 0x0d7ce7cc parameter_id: 0xf017819f } +function { + id: 0x9d1fbe91 + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x0258f96e +} function { id: 0x9d1fcda3 return_type_id: 0x6720d32f @@ -359100,6 +359483,14 @@ function { parameter_id: 0x368ec5cb parameter_id: 0xd41e888f } +function { + id: 0x9d4033b1 + return_type_id: 0x6720d32f + parameter_id: 0x0333756f + parameter_id: 0x0333756f + parameter_id: 0x0333756f + parameter_id: 0x0333756f +} function { id: 0x9d406163 return_type_id: 0x6720d32f @@ -359114,6 +359505,12 @@ function { parameter_id: 0x0355dc72 parameter_id: 0x054f691a } +function { + id: 0x9d40f3a1 + return_type_id: 0x6720d32f + parameter_id: 0x0333756f + parameter_id: 0x0333756f +} function { id: 0x9d411575 return_type_id: 0x6720d32f @@ -359581,6 +359978,12 @@ function { id: 0x9d80e32f return_type_id: 0x6720d32f } +function { + id: 0x9d81ebe6 + return_type_id: 0x6720d32f + parameter_id: 0x0333756f + parameter_id: 0x33756485 +} function { id: 0x9d81f887 return_type_id: 0x6720d32f @@ -365583,6 +365986,23 @@ function { parameter_id: 0x4585663f parameter_id: 0xf435685e } +function { + id: 0xc38241e7 + return_type_id: 0x4585663f + parameter_id: 0x359862c8 + parameter_id: 0x0cbf60eb + parameter_id: 0x33756485 + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} +function { + id: 0xc3825086 + return_type_id: 0x4585663f + parameter_id: 0x359862c8 + parameter_id: 0x0cbf60eb + parameter_id: 0x33756485 + parameter_id: 0x4585663f +} function { id: 0xc3860c60 return_type_id: 0x4585663f @@ -366128,6 +366548,11 @@ function { parameter_id: 0xcd84e3cd parameter_id: 0x33756485 } +function { + id: 0xce17a3a0 + return_type_id: 0x4585663f + parameter_id: 0x0333756f +} function { id: 0xce25f646 return_type_id: 0x65d74a06 @@ -367126,6 +367551,12 @@ function { return_type_id: 0x2e94a1e1 parameter_id: 0x3fc3d195 } +function { + id: 0xe8e90d24 + return_type_id: 0x0333756f + parameter_id: 0x391f15ea + parameter_id: 0xf435685e +} function { id: 0xe9f2fbb5 return_type_id: 0x229b7399 @@ -367563,6 +367994,12 @@ function { parameter_id: 0x31fa879c parameter_id: 0xe02e14d6 } +function { + id: 0xf1736137 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x3b04bead + parameter_id: 0x4585663f +} function { id: 0xf18d022a return_type_id: 0x1344d43c @@ -368064,6 +368501,11 @@ function { return_type_id: 0x32a623d7 parameter_id: 0x3e10b518 } +function { + id: 0xf41f4470 + return_type_id: 0x0333756f + parameter_id: 0x4585663f +} function { id: 0xf41fdf35 return_type_id: 0x6d7f5ff6 @@ -371263,6 +371705,15 @@ elf_symbol { type_id: 0x8c3ede77 full_name: "__irq_apply_affinity_hint" } +elf_symbol { + id: 0xc37fd40e + name: "__irq_domain_alloc_fwnode" + is_defined: true + symbol_type: FUNCTION + crc: 0xbc81d17b + type_id: 0x299442f2 + full_name: "__irq_domain_alloc_fwnode" +} elf_symbol { id: 0x64bb2ece name: "__irq_domain_alloc_irqs" @@ -375143,6 +375594,15 @@ elf_symbol { type_id: 0x9b2eaf21 full_name: "__traceiter_android_vh_check_folio_look_around_ref" } +elf_symbol { + id: 0x96d1c9c4 + name: "__traceiter_android_vh_check_hibernation_swap" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c24314d + type_id: 0x9bc86033 + full_name: "__traceiter_android_vh_check_hibernation_swap" +} elf_symbol { id: 0x42428033 name: "__traceiter_android_vh_check_mmap_file" @@ -377087,6 +377547,24 @@ elf_symbol { type_id: 0x9bad4369 full_name: "__traceiter_android_vh_rwsem_write_wait_start" } +elf_symbol { + id: 0xbdbb0c65 + name: "__traceiter_android_vh_save_cpu_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0xc0d3804c + type_id: 0x9b33517a + full_name: "__traceiter_android_vh_save_cpu_resume" +} +elf_symbol { + id: 0xa1325610 + name: "__traceiter_android_vh_save_hib_resume_bdev" + is_defined: true + symbol_type: FUNCTION + crc: 0xdd74904e + type_id: 0x9bcc13c8 + full_name: "__traceiter_android_vh_save_hib_resume_bdev" +} elf_symbol { id: 0x2540195e name: "__traceiter_android_vh_save_track_hash" @@ -380885,6 +381363,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_check_folio_look_around_ref" } +elf_symbol { + id: 0xaa072f92 + name: "__tracepoint_android_vh_check_hibernation_swap" + is_defined: true + symbol_type: OBJECT + crc: 0x7c5aa8a7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_check_hibernation_swap" +} elf_symbol { id: 0x9620eac1 name: "__tracepoint_android_vh_check_mmap_file" @@ -382829,6 +383316,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_rwsem_write_wait_start" } +elf_symbol { + id: 0x30004003 + name: "__tracepoint_android_vh_save_cpu_resume" + is_defined: true + symbol_type: OBJECT + crc: 0x7c5aa8a7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_save_cpu_resume" +} +elf_symbol { + id: 0xb91d18b6 + name: "__tracepoint_android_vh_save_hib_resume_bdev" + is_defined: true + symbol_type: OBJECT + crc: 0x7c5aa8a7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_save_hib_resume_bdev" +} elf_symbol { id: 0x1ce15a0c name: "__tracepoint_android_vh_save_track_hash" @@ -385628,6 +386133,15 @@ elf_symbol { type_id: 0x8625f433 full_name: "add_memory" } +elf_symbol { + id: 0x9d3925bd + name: "add_memory_subsection" + is_defined: true + symbol_type: FUNCTION + crc: 0x39634718 + type_id: 0x8624d3e6 + full_name: "add_memory_subsection" +} elf_symbol { id: 0x7951d828 name: "add_swap_extent" @@ -390624,6 +391138,24 @@ elf_symbol { type_id: 0xfea45b04 full_name: "cpufreq_boost_enabled" } +elf_symbol { + id: 0x3c9f0236 + name: "cpufreq_cooling_register" + is_defined: true + symbol_type: FUNCTION + crc: 0x3faec500 + type_id: 0x48d77e8c + full_name: "cpufreq_cooling_register" +} +elf_symbol { + id: 0xc9e016c0 + name: "cpufreq_cooling_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0x331d8a55 + type_id: 0x11aaf502 + full_name: "cpufreq_cooling_unregister" +} elf_symbol { id: 0x85c5ebd6 name: "cpufreq_cpu_get" @@ -394416,6 +394948,15 @@ elf_symbol { type_id: 0x81a9f9cd full_name: "device_node_to_regmap" } +elf_symbol { + id: 0xd62f0086 + name: "device_pm_wait_for_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0x934ad0e0 + type_id: 0x9d1fbe91 + full_name: "device_pm_wait_for_dev" +} elf_symbol { id: 0xd0ac64f7 name: "device_property_match_string" @@ -395940,6 +396481,15 @@ elf_symbol { type_id: 0x9d28302f full_name: "devm_regmap_add_irq_chip" } +elf_symbol { + id: 0xc9feec14 + name: "devm_regmap_add_irq_chip_fwnode" + is_defined: true + symbol_type: FUNCTION + crc: 0x7bb1e821 + type_id: 0x9d07714c + full_name: "devm_regmap_add_irq_chip_fwnode" +} elf_symbol { id: 0x1e3f62e1 name: "devm_regmap_del_irq_chip" @@ -396571,6 +397121,33 @@ elf_symbol { type_id: 0xcedb7efb full_name: "dm_get_reserved_bio_based_ios" } +elf_symbol { + id: 0xffc4b684 + name: "dm_io" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ec51675 + type_id: 0x9c33c4dc + full_name: "dm_io" +} +elf_symbol { + id: 0xd9fe0e11 + name: "dm_io_client_create" + is_defined: true + symbol_type: FUNCTION + crc: 0xc5592a8f + type_id: 0x486e9b22 + full_name: "dm_io_client_create" +} +elf_symbol { + id: 0x9e1965bc + name: "dm_io_client_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0x73a2fb77 + type_id: 0x15a6e3e2 + full_name: "dm_io_client_destroy" +} elf_symbol { id: 0xfcd98965 name: "dm_per_bio_data" @@ -396652,6 +397229,15 @@ elf_symbol { type_id: 0x1b5178f1 full_name: "dm_table_event" } +elf_symbol { + id: 0xf99054ab + name: "dm_table_get_mode" + is_defined: true + symbol_type: FUNCTION + crc: 0xb35d3d12 + type_id: 0x56bb9bde + full_name: "dm_table_get_mode" +} elf_symbol { id: 0x76f0e551 name: "dm_unregister_target" @@ -400489,6 +401075,15 @@ elf_symbol { type_id: 0x44ddb78b full_name: "drm_get_format_info" } +elf_symbol { + id: 0x2a521f90 + name: "drm_handle_vblank" + is_defined: true + symbol_type: FUNCTION + crc: 0x5daf7c6f + type_id: 0xf1736137 + full_name: "drm_handle_vblank" +} elf_symbol { id: 0xe5568c92 name: "drm_hdmi_avi_infoframe_from_display_mode" @@ -411519,6 +412114,15 @@ elf_symbol { type_id: 0x9abe486f full_name: "irq_domain_disconnect_hierarchy" } +elf_symbol { + id: 0x3fa49947 + name: "irq_domain_free_fwnode" + is_defined: true + symbol_type: FUNCTION + crc: 0x850e1bca + type_id: 0x11bc7f41 + full_name: "irq_domain_free_fwnode" +} elf_symbol { id: 0x327b1cbb name: "irq_domain_free_irqs_common" @@ -414157,6 +414761,15 @@ elf_symbol { type_id: 0x1d3cefc2 full_name: "led_set_brightness" } +elf_symbol { + id: 0xbea2c272 + name: "led_set_brightness_nosleep" + is_defined: true + symbol_type: FUNCTION + crc: 0xdfd6fbe8 + type_id: 0x1d3cefc2 + full_name: "led_set_brightness_nosleep" +} elf_symbol { id: 0x2e74d698 name: "led_set_brightness_sync" @@ -414319,6 +414932,15 @@ elf_symbol { type_id: 0x9150cafb full_name: "linear_range_get_value" } +elf_symbol { + id: 0x46f004b4 + name: "linear_range_values_in_range" + is_defined: true + symbol_type: FUNCTION + crc: 0x892877f0 + type_id: 0xc31bbeef + full_name: "linear_range_values_in_range" +} elf_symbol { id: 0x91e9c466 name: "linkwatch_fire_event" @@ -415463,6 +416085,15 @@ elf_symbol { type_id: 0x01a85b76 full_name: "memblock_end_of_DRAM" } +elf_symbol { + id: 0x4fb91c54 + name: "memblock_free" + is_defined: true + symbol_type: FUNCTION + crc: 0xda923661 + type_id: 0x1567dd7e + full_name: "memblock_free" +} elf_symbol { id: 0x73553ac1 name: "memcg_kmem_online_key" @@ -416776,6 +417407,78 @@ elf_symbol { type_id: 0x986b6304 full_name: "mpage_writepages" } +elf_symbol { + id: 0xe01fbde5 + name: "mpi_alloc" + is_defined: true + symbol_type: FUNCTION + crc: 0xa90fcaed + type_id: 0xf41f4470 + full_name: "mpi_alloc" +} +elf_symbol { + id: 0x56ff0068 + name: "mpi_cmp" + is_defined: true + symbol_type: FUNCTION + crc: 0xa28cf12e + type_id: 0x9d40f3a1 + full_name: "mpi_cmp" +} +elf_symbol { + id: 0xffb9d72b + name: "mpi_cmp_ui" + is_defined: true + symbol_type: FUNCTION + crc: 0x2a8cbe3b + type_id: 0x9d81ebe6 + full_name: "mpi_cmp_ui" +} +elf_symbol { + id: 0x07e435e2 + name: "mpi_free" + is_defined: true + symbol_type: FUNCTION + crc: 0xc46df82f + type_id: 0x10548cc8 + full_name: "mpi_free" +} +elf_symbol { + id: 0x08019ba9 + name: "mpi_get_buffer" + is_defined: true + symbol_type: FUNCTION + crc: 0x9a0c5fe6 + type_id: 0x56317f29 + full_name: "mpi_get_buffer" +} +elf_symbol { + id: 0x3a8f5dea + name: "mpi_get_nbits" + is_defined: true + symbol_type: FUNCTION + crc: 0xd18d12d5 + type_id: 0xce17a3a0 + full_name: "mpi_get_nbits" +} +elf_symbol { + id: 0x60171cd2 + name: "mpi_powm" + is_defined: true + symbol_type: FUNCTION + crc: 0x0145b5ef + type_id: 0x9d4033b1 + full_name: "mpi_powm" +} +elf_symbol { + id: 0xc653aca2 + name: "mpi_read_raw_data" + is_defined: true + symbol_type: FUNCTION + crc: 0x2c68b792 + type_id: 0xe8e90d24 + full_name: "mpi_read_raw_data" +} elf_symbol { id: 0x80a63ee1 name: "mq_change_real_num_tx" @@ -420687,6 +421390,15 @@ elf_symbol { type_id: 0x9c660c95 full_name: "param_get_charp" } +elf_symbol { + id: 0x4cd84285 + name: "param_get_hexint" + is_defined: true + symbol_type: FUNCTION + crc: 0x34999177 + type_id: 0x9c660c95 + full_name: "param_get_hexint" +} elf_symbol { id: 0xe3ebf1bd name: "param_get_int" @@ -420696,6 +421408,15 @@ elf_symbol { type_id: 0x9c660c95 full_name: "param_get_int" } +elf_symbol { + id: 0xff7543d5 + name: "param_get_short" + is_defined: true + symbol_type: FUNCTION + crc: 0x34999177 + type_id: 0x9c660c95 + full_name: "param_get_short" +} elf_symbol { id: 0x9a649861 name: "param_get_string" @@ -420867,6 +421588,15 @@ elf_symbol { type_id: 0x92c2d86d full_name: "param_set_copystring" } +elf_symbol { + id: 0x0fafe0a6 + name: "param_set_hexint" + is_defined: true + symbol_type: FUNCTION + crc: 0xdca2caff + type_id: 0x92c2d86d + full_name: "param_set_hexint" +} elf_symbol { id: 0x9cc61d04 name: "param_set_int" @@ -424585,6 +425315,15 @@ elf_symbol { type_id: 0x1192ec84 full_name: "pm_runtime_set_autosuspend_delay" } +elf_symbol { + id: 0xe263dcb4 + name: "pm_schedule_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0x8a92b954 + type_id: 0x9c00c8ec + full_name: "pm_schedule_suspend" +} elf_symbol { id: 0x59caaeac name: "pm_stay_awake" @@ -426140,6 +426879,24 @@ elf_symbol { type_id: 0x5cf56554 full_name: "radix_tree_delete_item" } +elf_symbol { + id: 0x1f203052 + name: "radix_tree_gang_lookup" + is_defined: true + symbol_type: FUNCTION + crc: 0x917e653c + type_id: 0xc3825086 + full_name: "radix_tree_gang_lookup" +} +elf_symbol { + id: 0x72246e2e + name: "radix_tree_gang_lookup_tag" + is_defined: true + symbol_type: FUNCTION + crc: 0x6ce5c46d + type_id: 0xc38241e7 + full_name: "radix_tree_gang_lookup_tag" +} elf_symbol { id: 0x1c94f26a name: "radix_tree_insert" @@ -426203,6 +426960,15 @@ elf_symbol { type_id: 0x4acfd9c5 full_name: "radix_tree_next_chunk" } +elf_symbol { + id: 0xf65a8574 + name: "radix_tree_preload" + is_defined: true + symbol_type: FUNCTION + crc: 0xf1892ca6 + type_id: 0xa1e954d4 + full_name: "radix_tree_preload" +} elf_symbol { id: 0x48f6dcb3 name: "radix_tree_preloads" @@ -426221,6 +426987,33 @@ elf_symbol { type_id: 0x1a04ad27 full_name: "radix_tree_replace_slot" } +elf_symbol { + id: 0x8ff5c73b + name: "radix_tree_tag_clear" + is_defined: true + symbol_type: FUNCTION + crc: 0xddb2ca40 + type_id: 0x5ce22b54 + full_name: "radix_tree_tag_clear" +} +elf_symbol { + id: 0xb12808d7 + name: "radix_tree_tag_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x3f768e20 + type_id: 0x903a4f56 + full_name: "radix_tree_tag_get" +} +elf_symbol { + id: 0x40727788 + name: "radix_tree_tag_set" + is_defined: true + symbol_type: FUNCTION + crc: 0xddb2ca40 + type_id: 0x5ce22b54 + full_name: "radix_tree_tag_set" +} elf_symbol { id: 0x9653ad6f name: "radix_tree_tagged" @@ -428156,6 +428949,15 @@ elf_symbol { type_id: 0xbb40a305 full_name: "remove_memory" } +elf_symbol { + id: 0x5b4eff5a + name: "remove_memory_subsection" + is_defined: true + symbol_type: FUNCTION + crc: 0x44a33d2c + type_id: 0xbb40a305 + full_name: "remove_memory_subsection" +} elf_symbol { id: 0xe5686fed name: "remove_proc_entry" @@ -431001,6 +431803,15 @@ elf_symbol { type_id: 0x84af08b2 full_name: "send_sig_info" } +elf_symbol { + id: 0x8a38ad14 + name: "send_sig_mceerr" + is_defined: true + symbol_type: FUNCTION + crc: 0x0f644b6e + type_id: 0x84065a5d + full_name: "send_sig_mceerr" +} elf_symbol { id: 0x4814ecd5 name: "seq_buf_printf" @@ -433126,6 +433937,15 @@ elf_symbol { 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: 0xe4a442e3 + type_id: 0x1d1a000c + full_name: "smpboot_unregister_percpu_thread" +} elf_symbol { id: 0x675bcd74 name: "snapshot_get_image_size" @@ -435763,6 +436583,15 @@ elf_symbol { type_id: 0x155a3a09 full_name: "sort" } +elf_symbol { + id: 0x743e9912 + name: "spi_add_device" + is_defined: true + symbol_type: FUNCTION + crc: 0xb14dbc0e + type_id: 0x9930cdbf + full_name: "spi_add_device" +} elf_symbol { id: 0x13b529c0 name: "spi_alloc_device" @@ -439654,6 +440483,15 @@ elf_symbol { type_id: 0x161c45fb full_name: "tty_port_tty_wakeup" } +elf_symbol { + id: 0x1ebf9ca2 + name: "tty_put_char" + is_defined: true + symbol_type: FUNCTION + crc: 0x5ff66a51 + type_id: 0x969a32fe + full_name: "tty_put_char" +} elf_symbol { id: 0x727ea003 name: "tty_register_driver" @@ -448746,6 +449584,7 @@ interface { symbol_id: 0x1de2050f symbol_id: 0x1c57a05b symbol_id: 0xdf2d2827 + symbol_id: 0xc37fd40e symbol_id: 0x64bb2ece symbol_id: 0x16e2bd0b symbol_id: 0xe064ac65 @@ -449177,6 +450016,7 @@ interface { symbol_id: 0x5012fcd8 symbol_id: 0x67bab494 symbol_id: 0x6aac0cf8 + symbol_id: 0x96d1c9c4 symbol_id: 0x42428033 symbol_id: 0x23a3e1fa symbol_id: 0x17b6819f @@ -449393,6 +450233,8 @@ interface { symbol_id: 0x7945e8fa symbol_id: 0x93333e39 symbol_id: 0x947bd437 + symbol_id: 0xbdbb0c65 + symbol_id: 0xa1325610 symbol_id: 0x2540195e symbol_id: 0x979b6b9c symbol_id: 0xa413d12c @@ -449815,6 +450657,7 @@ interface { symbol_id: 0x678bb5ba symbol_id: 0xf1ec5ef2 symbol_id: 0xca5cbc9a + symbol_id: 0xaa072f92 symbol_id: 0x9620eac1 symbol_id: 0xb436fd6c symbol_id: 0x9e7fa6cd @@ -450031,6 +450874,8 @@ interface { symbol_id: 0x1220ff14 symbol_id: 0x203fab27 symbol_id: 0xbe3d9b79 + symbol_id: 0x30004003 + symbol_id: 0xb91d18b6 symbol_id: 0x1ce15a0c symbol_id: 0x64cdb186 symbol_id: 0xbb309826 @@ -450342,6 +451187,7 @@ interface { symbol_id: 0xd20e014a symbol_id: 0xf09e1ca4 symbol_id: 0xcef4ad72 + symbol_id: 0x9d3925bd symbol_id: 0x7951d828 symbol_id: 0xa5dcf915 symbol_id: 0xf2768ed7 @@ -450898,6 +451744,8 @@ interface { symbol_id: 0x30c8b794 symbol_id: 0x0c359f27 symbol_id: 0x34a74121 + symbol_id: 0x3c9f0236 + symbol_id: 0xc9e016c0 symbol_id: 0x85c5ebd6 symbol_id: 0xf95c9d54 symbol_id: 0x7d541a30 @@ -451319,6 +452167,7 @@ interface { symbol_id: 0x714a49b3 symbol_id: 0xfb485c4b symbol_id: 0x3a21dcc8 + symbol_id: 0xd62f0086 symbol_id: 0xd0ac64f7 symbol_id: 0xa1e3330b symbol_id: 0x85ab844f @@ -451488,6 +452337,7 @@ interface { symbol_id: 0x2209b1ae symbol_id: 0x90abc5f6 symbol_id: 0x4c4e94fb + symbol_id: 0xc9feec14 symbol_id: 0x1e3f62e1 symbol_id: 0x577e9a02 symbol_id: 0xc08bcc4a @@ -451558,6 +452408,9 @@ interface { symbol_id: 0xa3bef098 symbol_id: 0x650e9b1f symbol_id: 0x741587a4 + symbol_id: 0xffc4b684 + symbol_id: 0xd9fe0e11 + symbol_id: 0x9e1965bc symbol_id: 0xfcd98965 symbol_id: 0xd6c28e6e symbol_id: 0x8c40514f @@ -451567,6 +452420,7 @@ interface { symbol_id: 0x7d31d709 symbol_id: 0x64d39880 symbol_id: 0xe8228d29 + symbol_id: 0xf99054ab symbol_id: 0x76f0e551 symbol_id: 0x8ca06f02 symbol_id: 0x6cb15207 @@ -451991,6 +452845,7 @@ interface { symbol_id: 0xabd8ab71 symbol_id: 0xc64f37ff symbol_id: 0xd8e2fc20 + symbol_id: 0x2a521f90 symbol_id: 0xe5568c92 symbol_id: 0x2a53ebba symbol_id: 0xfaa70ce5 @@ -453216,6 +454071,7 @@ interface { symbol_id: 0x135db1d2 symbol_id: 0xe67fe9f7 symbol_id: 0xba41ecd4 + symbol_id: 0x3fa49947 symbol_id: 0x327b1cbb symbol_id: 0x61a826d2 symbol_id: 0x3cc69c51 @@ -453509,6 +454365,7 @@ interface { symbol_id: 0xda95494e symbol_id: 0x76f00da5 symbol_id: 0xa5be7046 + symbol_id: 0xbea2c272 symbol_id: 0x2e74d698 symbol_id: 0x7bbb8d5f symbol_id: 0xa18d331b @@ -453527,6 +454384,7 @@ interface { symbol_id: 0xb514ffaf symbol_id: 0x7d03c60e symbol_id: 0x6149caff + symbol_id: 0x46f004b4 symbol_id: 0x91e9c466 symbol_id: 0xf33d71ea symbol_id: 0xc50733a4 @@ -453654,6 +454512,7 @@ interface { symbol_id: 0x7f797603 symbol_id: 0x01e78001 symbol_id: 0x746374fa + symbol_id: 0x4fb91c54 symbol_id: 0x73553ac1 symbol_id: 0x79d24533 symbol_id: 0xbf158d63 @@ -453800,6 +454659,14 @@ interface { symbol_id: 0x1405e8c0 symbol_id: 0x84babda3 symbol_id: 0xeb5e01d3 + symbol_id: 0xe01fbde5 + symbol_id: 0x56ff0068 + symbol_id: 0xffb9d72b + symbol_id: 0x07e435e2 + symbol_id: 0x08019ba9 + symbol_id: 0x3a8f5dea + symbol_id: 0x60171cd2 + symbol_id: 0xc653aca2 symbol_id: 0x80a63ee1 symbol_id: 0xaa427980 symbol_id: 0xb4fb2bc7 @@ -454234,7 +455101,9 @@ interface { symbol_id: 0x37c3807c symbol_id: 0xd883f01d symbol_id: 0x3949f4f2 + symbol_id: 0x4cd84285 symbol_id: 0xe3ebf1bd + symbol_id: 0xff7543d5 symbol_id: 0x9a649861 symbol_id: 0xced06429 symbol_id: 0x712a9478 @@ -454254,6 +455123,7 @@ interface { symbol_id: 0x3c5cce26 symbol_id: 0xd9cc558b symbol_id: 0x34de6be7 + symbol_id: 0x0fafe0a6 symbol_id: 0x9cc61d04 symbol_id: 0x07e4f5ea symbol_id: 0xe48076c0 @@ -454667,6 +455537,7 @@ interface { symbol_id: 0x878b97bb symbol_id: 0x1f3f17bd symbol_id: 0x53f4166f + symbol_id: 0xe263dcb4 symbol_id: 0x59caaeac symbol_id: 0xb6d3c009 symbol_id: 0x64f92138 @@ -454839,6 +455710,8 @@ interface { symbol_id: 0xf60ed3ec symbol_id: 0x1f556538 symbol_id: 0xb51f872d + symbol_id: 0x1f203052 + symbol_id: 0x72246e2e symbol_id: 0x1c94f26a symbol_id: 0xda033b26 symbol_id: 0xfc5b9a92 @@ -454846,8 +455719,12 @@ interface { symbol_id: 0x32b0de3e symbol_id: 0x88fdaf2f symbol_id: 0x23d99f29 + symbol_id: 0xf65a8574 symbol_id: 0x48f6dcb3 symbol_id: 0x69d73c4e + symbol_id: 0x8ff5c73b + symbol_id: 0xb12808d7 + symbol_id: 0x40727788 symbol_id: 0x9653ad6f symbol_id: 0xdd08aa2e symbol_id: 0xbc5e2f91 @@ -455063,6 +455940,7 @@ interface { symbol_id: 0x195b028a symbol_id: 0x78126b2c symbol_id: 0x5153378f + symbol_id: 0x5b4eff5a symbol_id: 0xe5686fed symbol_id: 0xf7b2b5e2 symbol_id: 0x64df4bab @@ -455379,6 +456257,7 @@ interface { symbol_id: 0xb543d6ba symbol_id: 0x569844be symbol_id: 0x17b3f8eb + symbol_id: 0x8a38ad14 symbol_id: 0x4814ecd5 symbol_id: 0x854e793d symbol_id: 0xed1fea98 @@ -455615,6 +456494,7 @@ interface { symbol_id: 0x1f9b728b symbol_id: 0x99a17453 symbol_id: 0xd7393cd7 + symbol_id: 0xbf61e6bf symbol_id: 0x675bcd74 symbol_id: 0x35280a80 symbol_id: 0x03fd01bd @@ -455908,6 +456788,7 @@ interface { symbol_id: 0xe86ce747 symbol_id: 0x85476106 symbol_id: 0x1780168b + symbol_id: 0x743e9912 symbol_id: 0x13b529c0 symbol_id: 0x55b4474a symbol_id: 0xe2eab328 @@ -456341,6 +457222,7 @@ interface { symbol_id: 0xdcd44915 symbol_id: 0xca491b5d symbol_id: 0x1f87b736 + symbol_id: 0x1ebf9ca2 symbol_id: 0x727ea003 symbol_id: 0x2aefba25 symbol_id: 0xc2ec2319 diff --git a/gki/aarch64/protected_exports b/gki/aarch64/protected_exports deleted file mode 100644 index 50b8ae29d4ff..000000000000 --- a/gki/aarch64/protected_exports +++ /dev/null @@ -1,590 +0,0 @@ -__SCK__tp_func_9p_fid_ref -__SCK__tp_func_android_vh_rust_binder_restore_priority -__SCK__tp_func_android_vh_rust_binder_set_priority -__SCK__tp_func_netfs_sreq -__hci_cmd_send -__hci_cmd_sync -__hci_cmd_sync_ev -__hci_cmd_sync_sk -__hci_cmd_sync_status -__hci_cmd_sync_status_sk -__kunit_abort -__kunit_activate_static_stub -__kunit_add_resource -__kunit_do_failed_assertion -__kunit_test_suites_exit -__kunit_test_suites_init -__nfc_alloc_vendor_cmd_reply_skb -__regmap_init_ram -__regmap_init_raw_ram -__traceiter_9p_fid_ref -__traceiter_android_vh_rust_binder_restore_priority -__traceiter_android_vh_rust_binder_set_priority -__traceiter_netfs_sreq -__tracepoint_9p_fid_ref -__tracepoint_android_vh_rust_binder_restore_priority -__tracepoint_android_vh_rust_binder_set_priority -__tracepoint_netfs_sreq -__usb_serial_register_drivers -alloc_can_err_skb -alloc_can_skb -alloc_candev_mqs -alloc_canfd_skb -alloc_canxl_skb -arc4_crypt -arc4_setkey -baswap -bt_accept_dequeue -bt_accept_enqueue -bt_accept_unlink -bt_debugfs -bt_err -bt_err_ratelimited -bt_info -bt_procfs_cleanup -bt_procfs_init -bt_sock_alloc -bt_sock_ioctl -bt_sock_link -bt_sock_linked -bt_sock_poll -bt_sock_reclassify_lock -bt_sock_recvmsg -bt_sock_register -bt_sock_stream_recvmsg -bt_sock_unlink -bt_sock_unregister -bt_sock_wait_ready -bt_sock_wait_state -bt_status -bt_to_errno -bt_warn -bt_warn_ratelimited -btbcm_check_bdaddr -btbcm_finalize -btbcm_initialize -btbcm_patchram -btbcm_read_pcm_int_params -btbcm_set_bdaddr -btbcm_setup_apple -btbcm_setup_patchram -btbcm_write_pcm_int_params -can_bus_off -can_change_mtu -can_change_state -can_dropped_invalid_skb -can_eth_ioctl_hwts -can_ethtool_op_get_ts_info_hwts -can_fd_dlc2len -can_fd_len2dlc -can_free_echo_skb -can_get_echo_skb -can_get_state_str -can_proto_register -can_proto_unregister -can_put_echo_skb -can_rx_offload_add_fifo -can_rx_offload_add_manual -can_rx_offload_add_timestamp -can_rx_offload_del -can_rx_offload_enable -can_rx_offload_get_echo_skb_queue_tail -can_rx_offload_get_echo_skb_queue_timestamp -can_rx_offload_irq_finish -can_rx_offload_irq_offload_fifo -can_rx_offload_irq_offload_timestamp -can_rx_offload_queue_tail -can_rx_offload_queue_timestamp -can_rx_offload_threaded_irq_finish -can_rx_register -can_rx_unregister -can_send -can_skb_get_frame_len -can_sock_destruct -can_state_get_by_berr_counter -cdc_ncm_bind_common -cdc_ncm_change_mtu -cdc_ncm_fill_tx_frame -cdc_ncm_rx_fixup -cdc_ncm_rx_verify_ndp16 -cdc_ncm_rx_verify_ndp32 -cdc_ncm_rx_verify_nth16 -cdc_ncm_rx_verify_nth32 -cdc_ncm_select_altsetting -cdc_ncm_tx_fixup -cdc_ncm_unbind -cfg802154_device_is_child -cfg802154_device_is_parent -cfg802154_get_free_short_addr -cfg802154_set_max_associations -clk_get_kunit -clk_hw_get_clk_kunit -clk_hw_get_clk_prepared_enabled_kunit -clk_hw_register_kunit -clk_prepare_enable_kunit -close_candev -devm_pwrseq_device_register -devm_pwrseq_get -do_trace_9p_fid_get -do_trace_9p_fid_put -free_candev -generic_mii_ioctl -gnss_allocate_device -gnss_deregister_device -gnss_insert_raw -gnss_put_device -gnss_register_device -h4_recv_buf -hci_alloc_dev_priv -hci_cmd_sync -hci_cmd_sync_cancel -hci_cmd_sync_cancel_entry -hci_cmd_sync_cancel_sync -hci_cmd_sync_dequeue -hci_cmd_sync_dequeue_once -hci_cmd_sync_lookup_entry -hci_cmd_sync_queue -hci_cmd_sync_queue_once -hci_cmd_sync_run -hci_cmd_sync_run_once -hci_cmd_sync_status -hci_cmd_sync_submit -hci_conn_check_secure -hci_conn_security -hci_conn_switch_role -hci_devcd_abort -hci_devcd_append -hci_devcd_append_pattern -hci_devcd_complete -hci_devcd_init -hci_devcd_register -hci_devcd_rx -hci_devcd_timeout -hci_drv_cmd_complete -hci_drv_cmd_status -hci_drv_process_cmd -hci_free_dev -hci_get_route -hci_mgmt_chan_register -hci_mgmt_chan_unregister -hci_recv_diag -hci_recv_frame -hci_register_cb -hci_register_dev -hci_release_dev -hci_reset_dev -hci_resume_dev -hci_set_fw_info -hci_set_hw_info -hci_suspend_dev -hci_uart_register_device_priv -hci_uart_tx_wakeup -hci_uart_unregister_device -hci_unregister_cb -hci_unregister_dev -ieee802154_alloc_hw -ieee802154_beacon_push -ieee802154_configure_durations -ieee802154_free_hw -ieee802154_hdr_peek -ieee802154_hdr_peek_addrs -ieee802154_hdr_pull -ieee802154_hdr_push -ieee802154_mac_cmd_pl_pull -ieee802154_mac_cmd_push -ieee802154_max_payload -ieee802154_register_hw -ieee802154_rx_irqsafe -ieee802154_unregister_hw -ieee802154_xmit_complete -ieee802154_xmit_error -ieee802154_xmit_hw_error -kunit_add_action -kunit_add_action_or_reset -kunit_assert_prologue -kunit_binary_assert_format -kunit_binary_ptr_assert_format -kunit_binary_str_assert_format -kunit_cleanup -kunit_deactivate_static_stub -kunit_destroy_resource -kunit_device_register -kunit_device_register_with_driver -kunit_device_unregister -kunit_driver_create -kunit_fail_assert_format -kunit_init_test -kunit_kfree -kunit_kfree_const -kunit_kmalloc_array -kunit_kstrdup_const -kunit_log_append -kunit_mem_assert_format -kunit_platform_device_add -kunit_platform_device_alloc -kunit_platform_device_prepare_wait_for_probe -kunit_platform_driver_register -kunit_ptr_not_err_assert_format -kunit_release_action -kunit_remove_action -kunit_remove_resource -kunit_run_tests -kunit_suite_has_succeeded -kunit_suite_num_test_cases -kunit_test_case_num -kunit_try_catch_run -kunit_try_catch_throw -kunit_unary_assert_format -kunit_vm_mmap -l2cap_add_psm -l2cap_chan_close -l2cap_chan_connect -l2cap_chan_create -l2cap_chan_del -l2cap_chan_list -l2cap_chan_put -l2cap_chan_send -l2cap_chan_set_defaults -l2cap_conn_get -l2cap_conn_put -l2cap_is_socket -l2cap_register_user -l2cap_unregister_user -l2tp_recv_common -l2tp_session_create -l2tp_session_delete -l2tp_session_get -l2tp_session_get_by_ifname -l2tp_session_get_next -l2tp_session_put -l2tp_session_register -l2tp_session_set_header_len -l2tp_sk_to_tunnel -l2tp_tunnel_create -l2tp_tunnel_delete -l2tp_tunnel_get -l2tp_tunnel_get_next -l2tp_tunnel_put -l2tp_tunnel_register -l2tp_udp_encap_recv -l2tp_v2_session_get -l2tp_v3_session_get -l2tp_xmit_skb -lowpan_header_compress -lowpan_header_decompress -lowpan_nhc_add -lowpan_nhc_del -lowpan_register_netdev -lowpan_register_netdevice -lowpan_unregister_netdev -lowpan_unregister_netdevice -macsec_get_real_dev -macsec_netdev_is_offloaded -macsec_pn_wrapped -mii_check_gmii_support -mii_check_link -mii_check_media -mii_ethtool_get_link_ksettings -mii_ethtool_gset -mii_ethtool_set_link_ksettings -mii_ethtool_sset -mii_link_ok -mii_nway_restart -netfs_buffered_read_iter -netfs_buffered_write_iter_locked -netfs_clear_inode_writeback -netfs_dirty_folio -netfs_end_io_direct -netfs_end_io_read -netfs_end_io_write -netfs_extract_user_iter -netfs_file_read_iter -netfs_file_write_iter -netfs_invalidate_folio -netfs_limit_iter -netfs_page_mkwrite -netfs_perform_write -netfs_prepare_write_failed -netfs_read_folio -netfs_read_subreq_progress -netfs_read_subreq_terminated -netfs_readahead -netfs_release_folio -netfs_start_io_direct -netfs_start_io_read -netfs_start_io_write -netfs_unbuffered_read_iter -netfs_unbuffered_read_iter_locked -netfs_unbuffered_write_iter -netfs_unbuffered_write_iter_locked -netfs_unpin_writeback -netfs_write_begin -netfs_write_subrequest_terminated -netfs_writepages -nfc_add_se -nfc_alloc_recv_skb -nfc_allocate_device -nfc_class -nfc_dep_link_is_up -nfc_driver_failure -nfc_find_se -nfc_fw_download_done -nfc_get_local_general_bytes -nfc_proto_register -nfc_proto_unregister -nfc_register_device -nfc_remove_se -nfc_se_connectivity -nfc_se_transaction -nfc_send_to_raw_sock -nfc_set_remote_general_bytes -nfc_target_lost -nfc_targets_found -nfc_tm_activated -nfc_tm_data_received -nfc_tm_deactivated -nfc_unregister_device -nfc_vendor_cmd_reply -nl802154_beaconing_done -nl802154_scan_done -nl802154_scan_event -nl802154_scan_started -of_can_transceiver -of_clk_get_kunit -of_clk_hw_register_kunit -of_node_put_kunit -of_root_kunit_skip -open_candev -p9_client_attach -p9_client_begin_disconnect -p9_client_cb -p9_client_clunk -p9_client_create -p9_client_create_dotl -p9_client_destroy -p9_client_disconnect -p9_client_fcreate -p9_client_fsync -p9_client_getattr_dotl -p9_client_getlock_dotl -p9_client_link -p9_client_lock_dotl -p9_client_mkdir_dotl -p9_client_mknod_dotl -p9_client_open -p9_client_read -p9_client_read_once -p9_client_readdir -p9_client_readlink -p9_client_remove -p9_client_rename -p9_client_renameat -p9_client_setattr -p9_client_stat -p9_client_statfs -p9_client_symlink -p9_client_unlinkat -p9_client_walk -p9_client_write -p9_client_write_subreq -p9_client_wstat -p9_client_xattrcreate -p9_client_xattrwalk -p9_error_init -p9_errstr2errno -p9_fcall_fini -p9_is_proto_dotl -p9_is_proto_dotu -p9_parse_header -p9_release_pages -p9_req_put -p9_show_client_options -p9_tag_lookup -p9dirent_read -p9stat_free -p9stat_read -ppp_channel_index -ppp_dev_name -ppp_input -ppp_input_error -ppp_output_wakeup -ppp_register_channel -ppp_register_compressor -ppp_register_net_channel -ppp_unit_number -ppp_unregister_channel -ppp_unregister_compressor -pppox_compat_ioctl -pppox_ioctl -pppox_unbind_sock -pps_event -pps_lookup_dev -pps_register_source -pps_unregister_source -ptp_cancel_worker_sync -ptp_clock_event -ptp_clock_index -ptp_clock_register -ptp_clock_unregister -ptp_find_pin -ptp_find_pin_unlocked -ptp_schedule_worker -pwrseq_device_get_drvdata -pwrseq_device_register -pwrseq_device_unregister -pwrseq_get -pwrseq_power_off -pwrseq_power_on -pwrseq_put -qca_read_soc_version -qca_send_pre_shutdown_cmd -qca_set_bdaddr -qca_set_bdaddr_rome -qca_uart_setup -register_candev -register_pppox_proto -rfkill_alloc -rfkill_blocked -rfkill_destroy -rfkill_find_type -rfkill_get_led_trigger_name -rfkill_init_sw_state -rfkill_pause_polling -rfkill_register -rfkill_resume_polling -rfkill_set_hw_state_reason -rfkill_set_led_trigger_name -rfkill_set_states -rfkill_set_sw_state -rfkill_soft_blocked -rfkill_unregister -rtl8152_get_version -safe_candev_priv -slhc_compress -slhc_free -slhc_init -slhc_remember -slhc_toss -slhc_uncompress -tipc_dump_done -tipc_dump_start -tipc_nl_sk_walk -tipc_sk_fill_sock_diag -unregister_candev -unregister_pppox_proto -usb_serial_claim_interface -usb_serial_deregister_drivers -usb_serial_generic_chars_in_buffer -usb_serial_generic_close -usb_serial_generic_get_icount -usb_serial_generic_open -usb_serial_generic_process_read_urb -usb_serial_generic_read_bulk_callback -usb_serial_generic_resume -usb_serial_generic_submit_read_urbs -usb_serial_generic_throttle -usb_serial_generic_tiocmiwait -usb_serial_generic_unthrottle -usb_serial_generic_wait_until_sent -usb_serial_generic_write -usb_serial_generic_write_bulk_callback -usb_serial_generic_write_start -usb_serial_handle_dcd_change -usb_serial_port_softint -usb_serial_resume -usb_serial_suspend -usbnet_cdc_bind -usbnet_cdc_status -usbnet_cdc_unbind -usbnet_cdc_update_filter -usbnet_cdc_zte_rx_fixup -usbnet_change_mtu -usbnet_defer_kevent -usbnet_device_suggests_idle -usbnet_disconnect -usbnet_ether_cdc_bind -usbnet_generic_cdc_bind -usbnet_get_drvinfo -usbnet_get_endpoints -usbnet_get_ethernet_addr -usbnet_get_link -usbnet_get_link_ksettings_internal -usbnet_get_link_ksettings_mii -usbnet_get_msglevel -usbnet_link_change -usbnet_manage_power -usbnet_nway_reset -usbnet_open -usbnet_pause_rx -usbnet_probe -usbnet_purge_paused_rxq -usbnet_read_cmd -usbnet_read_cmd_nopm -usbnet_resume -usbnet_resume_rx -usbnet_set_link_ksettings_mii -usbnet_set_msglevel -usbnet_set_rx_mode -usbnet_skb_return -usbnet_start_xmit -usbnet_status_start -usbnet_status_stop -usbnet_stop -usbnet_suspend -usbnet_tx_timeout -usbnet_unlink_rx_urbs -usbnet_update_max_qlen -usbnet_write_cmd -usbnet_write_cmd_async -usbnet_write_cmd_nopm -v9fs_get_default_trans -v9fs_get_trans_by_name -v9fs_register_trans -v9fs_unregister_trans -vp_legacy_config_vector -vp_legacy_get_driver_features -vp_legacy_get_features -vp_legacy_get_queue_enable -vp_legacy_get_queue_size -vp_legacy_get_status -vp_legacy_probe -vp_legacy_queue_vector -vp_legacy_remove -vp_legacy_set_features -vp_legacy_set_queue_address -vp_legacy_set_status -vp_modern_avq_index -vp_modern_avq_num -vp_modern_config_vector -vp_modern_generation -vp_modern_get_driver_features -vp_modern_get_features -vp_modern_get_num_queues -vp_modern_get_queue_enable -vp_modern_get_queue_reset -vp_modern_get_queue_size -vp_modern_get_status -vp_modern_map_vq_notify -vp_modern_probe -vp_modern_queue_address -vp_modern_queue_vector -vp_modern_remove -vp_modern_set_features -vp_modern_set_queue_enable -vp_modern_set_queue_reset -vp_modern_set_queue_size -vp_modern_set_status -wpan_phy_find -wpan_phy_for_each -wpan_phy_free -wpan_phy_new -wpan_phy_register -wpan_phy_unregister -wwan_create_port -wwan_port_get_drvdata -wwan_port_rx -wwan_port_txoff -wwan_port_txon -wwan_register_ops -wwan_remove_port -wwan_unregister_ops diff --git a/gki/aarch64/symbols/amlogic b/gki/aarch64/symbols/amlogic index f8e263aa9870..d08ab52393cf 100644 --- a/gki/aarch64/symbols/amlogic +++ b/gki/aarch64/symbols/amlogic @@ -49,6 +49,7 @@ __bitmap_and __bitmap_andnot __bitmap_clear + __bitmap_complement __bitmap_equal bitmap_find_next_zero_area_off bitmap_free @@ -90,6 +91,7 @@ bpf_trace_run6 bpf_trace_run7 bpf_trace_run8 + bpf_trace_run9 bpf_warn_invalid_xdp_action __bread_gfp __brelse @@ -301,6 +303,7 @@ dev_alloc_name __dev_change_net_namespace dev_close + _dev_crit dev_driver_string _dev_err dev_err_probe @@ -378,6 +381,7 @@ devm_hwrng_register devm_iio_channel_get devm_iio_device_alloc + __devm_iio_device_register devm_input_allocate_device devm_ioremap devm_ioremap_resource @@ -442,6 +446,7 @@ dev_pm_domain_attach_by_id dev_pm_domain_attach_by_name dev_pm_domain_detach + dev_pm_genpd_set_performance_state dev_pm_opp_clear_config dev_pm_opp_find_freq_ceil dev_pm_opp_find_freq_exact @@ -544,6 +549,15 @@ __dma_sync_single_for_device dma_unmap_page_attrs dma_unmap_sg_attrs + dm_get_device + dm_io + dm_io_client_create + dm_io_client_destroy + dm_per_bio_data + dm_put_device + dm_register_target + dm_table_get_mode + dm_unregister_target d_obtain_alias do_SAK do_trace_netlink_extack @@ -561,6 +575,8 @@ dql_completed dql_reset drain_workqueue + driver_attach + driver_register driver_unregister drm_add_modes_noedid drm_atomic_add_affected_connectors @@ -853,6 +869,7 @@ fs_param_is_string fs_param_is_u32 __fs_parse + fs_umode_to_dtype fwnode_device_is_available fwnode_find_reference fwnode_get_name @@ -928,6 +945,7 @@ get_fs_type get_net_ns_by_fd get_net_ns_by_pid + get_pfnblock_flags_mask get_random_bytes get_random_u16 get_random_u32 @@ -945,6 +963,7 @@ gpiochip_get_data gpiochip_line_is_valid gpiochip_lock_as_irq + gpiochip_remove gpiochip_unlock_as_irq gpiod_cansleep gpiod_count @@ -1037,15 +1056,27 @@ iget5_locked iget_failed ihold + iio_alloc_pollfunc iio_buffer_enabled iio_buffer_init iio_buffer_put + iio_dealloc_pollfunc + iio_device_alloc iio_device_attach_buffer + iio_device_claim_direct_mode + iio_device_free + iio_device_id __iio_device_register + iio_device_release_direct_mode iio_device_unregister iio_get_time_ns + iio_push_event iio_push_to_buffers iio_read_channel_processed + iio_read_mount_matrix + iio_show_mount_matrix + iio_trigger_notify_done + iio_trigger_unregister ilookup inc_nlink inc_zone_page_state @@ -1137,6 +1168,7 @@ irq_stat irq_to_desc is_bad_inode + is_dma_buf_file is_vmalloc_addr iter_file_splice_write iwe_stream_add_event @@ -1216,6 +1248,7 @@ kstrtou16 kstrtou16_from_user kstrtou8 + kstrtou8_from_user kstrtouint kstrtouint_from_user kstrtoull @@ -1247,6 +1280,7 @@ led_classdev_unregister led_init_default_state_get led_set_brightness + led_set_brightness_nosleep led_trigger_blink_oneshot led_trigger_event led_trigger_register @@ -1330,6 +1364,7 @@ __memset_io memstart_addr memunmap + migrate_pages misc_deregister misc_register __mmap_lock_do_trace_acquire_returned @@ -1344,6 +1379,7 @@ mmc_cqe_request_done mmc_detect_change mmc_free_host + mmc_get_ext_csd mmc_gpiod_request_cd mmc_gpio_get_cd mmc_of_parse @@ -1483,6 +1519,7 @@ of_get_phy_mode of_get_property of_get_regulator_init_data + of_get_required_opp_performance_state of_graph_get_remote_node of_graph_get_remote_port_parent of_graph_is_present @@ -1528,6 +1565,7 @@ oops_in_progress out_of_line_wait_on_bit_lock overflowgid + overflowuid pagecache_get_page page_get_link __page_pinner_failure_detect @@ -1542,12 +1580,15 @@ param_array_ops param_get_bool param_get_charp + param_get_hexint param_get_int + param_get_short param_get_string param_ops_bool param_ops_byte param_ops_charp param_ops_int + param_ops_long param_ops_short param_ops_string param_ops_uint @@ -1556,6 +1597,7 @@ param_ops_ushort param_set_charp param_set_copystring + param_set_hexint param_set_int pci_alloc_irq_vectors_affinity pci_bus_type @@ -1759,6 +1801,7 @@ ptp_clock_index ptp_clock_register ptp_clock_unregister + putback_movable_pages __put_cred put_device put_disk @@ -1814,6 +1857,7 @@ __rcu_read_unlock rdev_get_drvdata readahead_expand + readahead_gfp_mask read_cache_page read_cache_page_gfp read_sanitised_ftr_reg @@ -1845,6 +1889,7 @@ register_syscore_ops register_sysctl_sz register_wide_hw_breakpoint + regmap_bulk_read regmap_bulk_write regmap_field_read regmap_field_update_bits_base @@ -2058,22 +2103,36 @@ smpboot_register_percpu_thread smp_call_function smp_call_function_single + snd_card_ref + snd_card_register + snd_card_rw_proc_new snd_ctl_add snd_ctl_boolean_mono_info snd_ctl_enum_info snd_ctl_new1 + snd_ctl_notify + snd_devm_card_new snd_dma_alloc_dir_pages snd_dma_free_pages + snd_ecards_limit + snd_info_get_line + snd_interval_refine + snd_pcm_format_physical_width + snd_pcm_format_set_silence snd_pcm_format_width snd_pcm_hw_constraint_integer + snd_pcm_hw_rule_add snd_pcm_kernel_ioctl snd_pcm_lib_default_mmap snd_pcm_lib_free_pages snd_pcm_lib_ioctl snd_pcm_lib_malloc_pages snd_pcm_lib_preallocate_pages + snd_pcm_new snd_pcm_period_elapsed snd_pcm_rate_to_rate_bit + snd_pcm_set_managed_buffer_all + snd_pcm_set_ops snd_pcm_stop snd_pcm_stop_xrun _snd_pcm_stream_lock_irqsave @@ -2116,11 +2175,18 @@ snd_soc_register_component snd_soc_set_runtime_hwparams snd_soc_unregister_component + snd_timer_close + snd_timer_instance_free + snd_timer_instance_new + snd_timer_open + snd_timer_start + snd_timer_stop snprintf __sock_create sock_release sock_wfree sort + spi_add_device __spi_alloc_controller spi_alloc_device spi_controller_resume @@ -2134,6 +2200,7 @@ __spi_register_driver spi_setup spi_sync + spi_unregister_device split_page sprintf sprint_symbol @@ -2170,6 +2237,7 @@ strnstr strpbrk strrchr + strreplace strsep strspn strstr @@ -2202,6 +2270,7 @@ sysfs_create_groups sysfs_create_link sysfs_emit + sysfs_emit_at __sysfs_match_string sysfs_remove_bin_file sysfs_remove_file_ns @@ -2337,7 +2406,33 @@ truncate_setsize try_module_get try_wait_for_completion + __tty_alloc_driver + tty_driver_kref_put + tty_encode_baud_rate tty_flip_buffer_push + tty_get_char_size + tty_hangup + tty_kref_put + tty_ldisc_deref + tty_ldisc_ref + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_open + tty_port_register_device + tty_port_tty_get + tty_port_tty_wakeup + tty_put_char + tty_register_driver + tty_standard_install + tty_std_termios + tty_termios_baud_rate + tty_termios_copy_hw + tty_termios_hw_change + tty_unregister_device + tty_unregister_driver + tty_vhangup uart_add_one_port uart_console_device uart_console_write @@ -2400,7 +2495,9 @@ usb_autopm_get_interface usb_autopm_put_interface usb_bulk_msg + usb_clear_halt usb_control_msg + usb_control_msg_recv __usb_create_hcd usb_create_hcd usb_debug_root @@ -2428,6 +2525,7 @@ usb_get_dev usb_get_dr_mode usb_get_from_anchor + usb_get_intf usb_get_maximum_speed usb_get_maximum_ssp_rate usb_get_role_switch_default_mode @@ -2452,9 +2550,13 @@ usb_kill_anchored_urbs usb_kill_urb usb_lock_device_for_reset + usb_match_id + usb_match_one_id usb_phy_set_charger_current + usb_poison_urb usb_put_dev usb_put_hcd + usb_put_intf usb_register_dev usb_register_driver usb_remove_hcd @@ -2465,13 +2567,25 @@ usb_role_switch_unregister usb_root_hub_lost_power usb_scuttle_anchored_urbs + usb_serial_deregister_drivers + usb_serial_generic_close + usb_serial_generic_get_icount + usb_serial_generic_open + usb_serial_generic_resume + usb_serial_generic_throttle + usb_serial_generic_tiocmiwait + usb_serial_generic_unthrottle + usb_serial_handle_dcd_change usb_set_interface usb_sg_init usb_sg_wait + usb_show_dynids + usb_store_new_id usb_submit_urb usb_unanchor_urb usb_unlink_anchored_urbs usb_unlink_urb + usb_unpoison_urb usb_wakeup_notification __usecs_to_jiffies usleep_range_state diff --git a/gki/aarch64/symbols/qcom b/gki/aarch64/symbols/qcom index 9e30e9de5533..0e6c67298bd0 100644 --- a/gki/aarch64/symbols/qcom +++ b/gki/aarch64/symbols/qcom @@ -659,6 +659,7 @@ devm_pwm_get devm_qcom_smem_state_get devm_regmap_add_irq_chip + devm_regmap_add_irq_chip_fwnode devm_regmap_del_irq_chip devm_regmap_field_alloc devm_regmap_field_bulk_alloc @@ -1615,8 +1616,10 @@ irq_dispose_mapping __irq_domain_alloc_irqs irq_domain_alloc_irqs_parent + __irq_domain_alloc_fwnode irq_domain_create_hierarchy irq_domain_disconnect_hierarchy + irq_domain_free_fwnode irq_domain_free_irqs_common irq_domain_free_irqs_parent irq_domain_get_irq_data @@ -1828,6 +1831,7 @@ led_trigger_register_simple led_trigger_unregister led_trigger_unregister_simple + linear_range_values_in_range linkwatch_fire_event __list_add_valid_or_report __list_del_entry_valid_or_report @@ -3385,6 +3389,7 @@ __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority __traceiter_android_vh_build_sched_domains + __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_check_uninterruptible_tasks __traceiter_android_vh_check_uninterruptible_tasks_dn __traceiter_android_vh_cpufreq_fast_switch @@ -3413,6 +3418,8 @@ __traceiter_android_vh_printk_hotplug __traceiter_android_vh_rproc_recovery __traceiter_android_vh_rproc_recovery_set + __traceiter_android_vh_save_cpu_resume + __traceiter_android_vh_save_hib_resume_bdev __traceiter_android_vh_scheduler_tick __traceiter_android_vh_setscheduler_uclamp __traceiter_android_vh_show_resume_epoch_val @@ -3521,6 +3528,7 @@ __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_build_sched_domains + __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_check_uninterruptible_tasks __tracepoint_android_vh_check_uninterruptible_tasks_dn __tracepoint_android_vh_cpufreq_fast_switch @@ -3549,6 +3557,8 @@ __tracepoint_android_vh_printk_hotplug __tracepoint_android_vh_rproc_recovery __tracepoint_android_vh_rproc_recovery_set + __tracepoint_android_vh_save_cpu_resume + __tracepoint_android_vh_save_hib_resume_bdev __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_setscheduler_uclamp __tracepoint_android_vh_show_resume_epoch_val diff --git a/gki/aarch64/symbols/rtktv b/gki/aarch64/symbols/rtktv new file mode 100644 index 000000000000..9ee07f6ab8da --- /dev/null +++ b/gki/aarch64/symbols/rtktv @@ -0,0 +1,29 @@ +[abi_symbol_list] + add_memory_subsection + cpufreq_cooling_register + cpufreq_cooling_unregister + device_pm_wait_for_dev + device_pm_wait_for_dev + device_pm_wait_for_dev + device_pm_wait_for_dev + drm_handle_vblank + memblock_free + mpi_alloc + mpi_cmp + mpi_cmp_ui + mpi_free + mpi_get_buffer + mpi_get_nbits + mpi_powm + mpi_read_raw_data + pm_schedule_suspend + radix_tree_gang_lookup + radix_tree_gang_lookup_tag + radix_tree_preload + radix_tree_preload + radix_tree_tag_clear + radix_tree_tag_get + radix_tree_tag_set + remove_memory_subsection + send_sig_mceerr + smpboot_unregister_percpu_thread diff --git a/gki/aarch64/symbols/vivo b/gki/aarch64/symbols/vivo index 8f0c45d6b1ef..1c0d34ff3a6f 100644 --- a/gki/aarch64/symbols/vivo +++ b/gki/aarch64/symbols/vivo @@ -70,6 +70,11 @@ tcf_block_put tcf_classify timer_reduce + cpufreq_unregister_notifier + jiffies64_to_nsecs + profile_event_unregister + __irq_regs + __traceiter_android_rvh_alloc_and_link_pwqs __traceiter_android_rvh_alloc_pages_reclaim_cycle_end __traceiter_android_rvh_alloc_pages_reclaim_start @@ -163,6 +168,13 @@ __traceiter_tcp_retransmit_skb __traceiter_workqueue_execute_end __traceiter_workqueue_execute_start + __traceiter_android_vh_binder_alloc_new_buf_locked + __traceiter_pelt_se_tp + __traceiter_android_vh_kvmalloc_node_use_vmalloc + __traceiter_android_vh_adjust_kvmalloc_flags + __traceiter_android_vh_alter_futex_plist_add + __traceiter_task_newtask + __traceiter_android_vh_mutex_init __tracepoint_android_rvh_alloc_and_link_pwqs __tracepoint_android_rvh_alloc_pages_reclaim_cycle_end __tracepoint_android_rvh_alloc_pages_reclaim_start @@ -256,6 +268,13 @@ __tracepoint_tcp_retransmit_skb __tracepoint_workqueue_execute_end __tracepoint_workqueue_execute_start + __tracepoint_android_vh_binder_alloc_new_buf_locked + __tracepoint_pelt_se_tp + __tracepoint_android_vh_kvmalloc_node_use_vmalloc + __tracepoint_android_vh_adjust_kvmalloc_flags + __tracepoint_android_vh_alter_futex_plist_add + __tracepoint_task_newtask + __tracepoint_android_vh_mutex_init ucsi_send_command unlock_buffer __wait_on_buffer diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index b27ddce5d324..17d53001f812 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -282,6 +282,7 @@ extern void try_offline_node(int nid); extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages, struct zone *zone, struct memory_group *group); extern int remove_memory(u64 start, u64 size); +extern int remove_memory_subsection(u64 start, u64 size); extern void __remove_memory(u64 start, u64 size); extern int offline_and_remove_memory(u64 start, u64 size); @@ -306,6 +307,7 @@ static inline void __remove_memory(u64 start, u64 size) {} extern void __ref free_area_init_core_hotplug(struct pglist_data *pgdat); extern int __add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags); extern int add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags); +extern int add_memory_subsection(int nid, u64 start, u64 size); extern int add_memory_resource(int nid, struct resource *resource, mhp_t mhp_flags); extern int add_memory_driver_managed(int nid, u64 start, u64 size, diff --git a/kernel/.gitignore b/kernel/.gitignore index 43a96fcbfafc..c6b299a6b786 100644 --- a/kernel/.gitignore +++ b/kernel/.gitignore @@ -1,5 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-only /config_data /kheaders.md5 -/gki_module_exported.h -/gki_module_protected.h diff --git a/kernel/module/Kconfig b/kernel/module/Kconfig index 3596681ceb37..616cfea358bc 100644 --- a/kernel/module/Kconfig +++ b/kernel/module/Kconfig @@ -286,19 +286,6 @@ config MODULE_SIG_FORCE Reject unsigned modules or signed modules for which we don't have a key. Without this, such modules will simply taint the kernel. -config MODULE_SIG_PROTECT - bool "Android GKI module protection" - depends on MODULE_SIG && !MODULE_SIG_FORCE - help - Enables Android GKI symbol and export protection support. - - This modifies the behavior of the MODULE_SIG_FORCE as follows: - - Allows Android GKI Modules signed using MODULE_SIG_ALL during build. - - Allows other modules to load if they don't violate the access to - Android GKI protected symbols and do not export the symbols already - exported by the Android GKI modules. Loading will fail and return - -EACCES (Permission denied) if symbol access conditions are not met. - config MODULE_SIG_ALL bool "Automatically sign all modules" default y @@ -310,6 +297,24 @@ config MODULE_SIG_ALL comment "Do not forget to sign required modules with scripts/sign-file" depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL +config MODULE_SIG_PROTECT_LIST + string "File with signed module names whose exports are to be protected" + default "" + depends on MODULE_SIG && !MODULE_SIG_FORCE + help + Enables symbol export protection support for the listed signed + modules. This option prevents unsigned modules from exporting symbols + which are exported by the listed modules. Any unsigned module which + tries to export such a symbol will fail to load. + + The value to set here is the path to a text file in the source + directory containing the list of module names, one per line. The path + can be absolute, or relative to the kernel source or obj tree. + +config MODULE_SIG_PROTECT + def_bool y + depends on MODULE_SIG_PROTECT_LIST != "" + choice prompt "Hash algorithm to sign modules" depends on MODULE_SIG || IMA_APPRAISE_MODSIG diff --git a/kernel/module/Makefile b/kernel/module/Makefile index bbe67f8c6940..50ffcc413b54 100644 --- a/kernel/module/Makefile +++ b/kernel/module/Makefile @@ -13,7 +13,6 @@ obj-y += kmod.o obj-$(CONFIG_MODULE_DEBUG_AUTOLOAD_DUPS) += dups.o obj-$(CONFIG_MODULE_DECOMPRESS) += decompress.o obj-$(CONFIG_MODULE_SIG) += signing.o -obj-$(CONFIG_MODULE_SIG_PROTECT) += gki_module.o obj-$(CONFIG_LIVEPATCH) += livepatch.o obj-$(CONFIG_MODULES_TREE_LOOKUP) += tree_lookup.o obj-$(CONFIG_DEBUG_KMEMLEAK) += debug_kmemleak.o @@ -24,36 +23,3 @@ obj-$(CONFIG_KGDB_KDB) += kdb.o obj-$(CONFIG_MODVERSIONS) += version.o obj-$(CONFIG_MODULE_UNLOAD_TAINT_TRACKING) += tracking.o obj-$(CONFIG_MODULE_STATS) += stats.o - -# -# ANDROID: GKI: Generate headerfiles required for gki_module.o -# -# Dependencies on generated files need to be listed explicitly -$(obj)/gki_module.o: include/generated/gki_module_protected_exports.h \ - include/generated/gki_module_unprotected.h - -ifneq ($(CONFIG_UNUSED_KSYMS_WHITELIST),) -ALL_KMI_SYMBOLS := $(CONFIG_UNUSED_KSYMS_WHITELIST) -else -ALL_KMI_SYMBOLS := include/config/abi_gki_kmi_symbols -$(ALL_KMI_SYMBOLS): - : > $@ -endif - -include/generated/gki_module_unprotected.h: $(ALL_KMI_SYMBOLS) \ - $(srctree)/scripts/gen_gki_modules_headers.sh - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/gen_gki_modules_headers.sh $@ \ - "$(srctree)" \ - $(ALL_KMI_SYMBOLS) - -# AARCH is the same as ARCH, except that arm64 becomes aarch64 -AARCH := $(if $(filter arm64,$(ARCH)),aarch64,$(ARCH)) - -# ABI protected exports list file specific to ARCH if exists else empty -ABI_PROTECTED_EXPORTS_FILE := $(wildcard $(srctree)/gki/$(AARCH)/protected_exports) - -include/generated/gki_module_protected_exports.h: $(ABI_PROTECTED_EXPORTS_FILE) \ - $(srctree)/scripts/gen_gki_modules_headers.sh - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/gen_gki_modules_headers.sh $@ \ - "$(srctree)" \ - $(ABI_PROTECTED_EXPORTS_FILE) diff --git a/kernel/module/gki_module.c b/kernel/module/gki_module.c deleted file mode 100644 index ec9116fe295c..000000000000 --- a/kernel/module/gki_module.c +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright 2022 Google LLC - * Author: ramjiyani@google.com (Ramji Jiyani) - */ - -#include -#include -#include -#include -#include - -#include "internal.h" - -/* - * Build time generated header files - * - * gki_module_protected_exports.h -- Symbols protected from _export_ by unsigned modules - * gki_module_unprotected.h -- Symbols allowed to _access_ by unsigned modules - */ -#include -#include - -#define MAX_STRCMP_LEN (max(MAX_UNPROTECTED_NAME_LEN, MAX_PROTECTED_EXPORTS_NAME_LEN)) - -/* bsearch() comparision callback */ -static int gki_cmp_name(const void *sym, const void *protected_sym) -{ - return strncmp(sym, protected_sym, MAX_STRCMP_LEN); -} - -/** - * gki_is_module_protected_export - Is a symbol exported from a protected GKI module? - * - * @name: Symbol being checked against exported symbols from protected GKI modules - */ -bool gki_is_module_protected_export(const char *name) -{ - if (NR_UNPROTECTED_SYMBOLS) { - return bsearch(name, gki_protected_exports_symbols, NR_PROTECTED_EXPORTS_SYMBOLS, - MAX_PROTECTED_EXPORTS_NAME_LEN, gki_cmp_name) != NULL; - } else { - /* - * If there are no symbols in unprotected list; We don't need to - * protect exports as there is no KMI enforcement. - * Treat everything exportable in this case. - */ - return false; - } -} - -/** - * gki_is_module_unprotected_symbol - Is a symbol unprotected for unsigned module? - * - * @name: Symbol being checked in list of unprotected symbols - */ -bool gki_is_module_unprotected_symbol(const char *name) -{ - if (NR_UNPROTECTED_SYMBOLS) { - return bsearch(name, gki_unprotected_symbols, NR_UNPROTECTED_SYMBOLS, - MAX_UNPROTECTED_NAME_LEN, gki_cmp_name) != NULL; - } else { - /* - * If there are no symbols in unprotected list; - * there isn't a KMI enforcement for the kernel. - * Treat everything accessible in this case. - */ - return true; - } -} diff --git a/kernel/module/internal.h b/kernel/module/internal.h index 2899809b092e..e4095366fb88 100644 --- a/kernel/module/internal.h +++ b/kernel/module/internal.h @@ -422,15 +422,17 @@ static inline int same_magic(const char *amagic, const char *bmagic, bool has_cr #endif /* CONFIG_MODVERSIONS */ #ifdef CONFIG_MODULE_SIG_PROTECT -extern bool gki_is_module_unprotected_symbol(const char *name); -extern bool gki_is_module_protected_export(const char *name); +extern const char *const protected_symbol_exports[]; +extern size_t protected_symbol_exports_count; #else -static inline bool gki_is_module_unprotected_symbol(const char *name) -{ - return true; -} -static inline bool gki_is_module_protected_export(const char *name) -{ - return false; -} -#endif /* CONFIG_MODULE_SIG_PROTECT */ +#define protected_symbol_exports NULL +#define protected_symbol_exports_count 0UL +#endif + +#ifdef CONFIG_TRIM_UNUSED_KSYMS +extern const char *const permitted_symbol_imports[]; +extern size_t permitted_symbol_imports_count; +#else +#define permitted_symbol_imports NULL +#define permitted_symbol_imports_count 0UL +#endif diff --git a/kernel/module/main.c b/kernel/module/main.c index 6837fc15d389..f6efc626e1b7 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -90,6 +90,13 @@ struct symsearch { enum mod_license license; }; +#if defined(CONFIG_MODULE_SIG_PROTECT) || defined(CONFIG_TRIM_UNUSED_KSYMS) +static int cmp_string(const void *a, const void *b) +{ + return strcmp((const char *)a, *(const char **)b); +} +#endif + /* * Bounds of module memory, for speeding up __module_address. * Protected by module_mutex. @@ -1141,14 +1148,25 @@ static bool inherit_taint(struct module *mod, struct module *owner, const char * return true; } +#ifdef CONFIG_TRIM_UNUSED_KSYMS +static bool is_permitted_symbol_import(const char *name) +{ + return bsearch(name, permitted_symbol_imports, + permitted_symbol_imports_count, + sizeof(const char *), cmp_string) != NULL; +} +#endif + /* Resolve a symbol for this module. I.e. if we find one, record usage. */ static const struct kernel_symbol *resolve_symbol(struct module *mod, const struct load_info *info, const char *name, char ownername[]) { +#ifdef CONFIG_TRIM_UNUSED_KSYMS bool is_vendor_module; bool is_vendor_exported_symbol; +#endif struct find_symbol_arg fsa = { .name = name, .gplok = !(mod->taints & (1 << TAINT_PROPRIETARY_MODULE)), @@ -1191,17 +1209,19 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod, * Vendor (i.e., unsigned) modules are only permitted to use: * * 1. symbols exported by other vendor (unsigned) modules - * 2. unprotected symbols + * 2. symbols which are permitted explicitly */ +#ifdef CONFIG_TRIM_UNUSED_KSYMS is_vendor_module = !mod->sig_ok; is_vendor_exported_symbol = fsa.owner && !fsa.owner->sig_ok; if (is_vendor_module && !is_vendor_exported_symbol && - !gki_is_module_unprotected_symbol(name)) { + !is_permitted_symbol_import(name)) { fsa.sym = ERR_PTR(-EACCES); goto getname; } +#endif err = ref_module(mod, fsa.owner); if (err) { @@ -1380,6 +1400,15 @@ fail: } EXPORT_SYMBOL_GPL(__symbol_get); +#ifdef CONFIG_MODULE_SIG_PROTECT +static bool is_protected_symbol_export(const char *name) +{ + return bsearch(name, protected_symbol_exports, + protected_symbol_exports_count, + sizeof(const char *), cmp_string) != NULL; +} +#endif + /* * Ensure that an exported symbol [global namespace] does not already exist * in the kernel or in some other module's exported symbol table. @@ -1404,14 +1433,6 @@ static int verify_exported_symbols(struct module *mod) .name = kernel_symbol_name(s), .gplok = true, }; - - if (!mod->sig_ok && gki_is_module_protected_export( - kernel_symbol_name(s))) { - pr_err("%s: exports protected symbol %s\n", - mod->name, kernel_symbol_name(s)); - return -EACCES; - } - if (find_symbol(&fsa)) { pr_err("%s: exports duplicate symbol %s" " (owned by %s)\n", @@ -1419,6 +1440,13 @@ static int verify_exported_symbols(struct module *mod) module_name(fsa.owner)); return -ENOEXEC; } +#ifdef CONFIG_MODULE_SIG_PROTECT + if (!mod->sig_ok && is_protected_symbol_export(kernel_symbol_name(s))) { + pr_err("%s: exports protected symbol %s\n", + mod->name, kernel_symbol_name(s)); + return -EACCES; + } +#endif } } return 0; diff --git a/kernel/module/signing.c b/kernel/module/signing.c index 7ffb2ae5d493..a2ff4242e623 100644 --- a/kernel/module/signing.c +++ b/kernel/module/signing.c @@ -19,20 +19,8 @@ #undef MODULE_PARAM_PREFIX #define MODULE_PARAM_PREFIX "module." -/* - * ANDROID: GKI: - * Only enforce signature if SIG_PROTECT is not set - */ -#ifndef CONFIG_MODULE_SIG_PROTECT static bool sig_enforce = IS_ENABLED(CONFIG_MODULE_SIG_FORCE); module_param(sig_enforce, bool_enable_only, 0644); -void set_module_sig_enforced(void) -{ - sig_enforce = true; -} -#else -#define sig_enforce false -#endif /* * Export sig_enforce kernel cmdline parameter to allow other subsystems rely @@ -44,6 +32,11 @@ bool is_module_sig_enforced(void) } EXPORT_SYMBOL(is_module_sig_enforced); +void set_module_sig_enforced(void) +{ + sig_enforce = true; +} + /* * Verify the signature on a module. */ @@ -128,13 +121,5 @@ int module_sig_check(struct load_info *info, int flags) return -EKEYREJECTED; } -/* - * ANDROID: GKI: Do not prevent loading of unsigned modules; - * as all modules except GKI modules are not signed. - */ -#ifndef CONFIG_MODULE_SIG_PROTECT return security_locked_down(LOCKDOWN_MODULE_SIGNATURE); -#else - return 0; -#endif } diff --git a/mm/memblock.c b/mm/memblock.c index 3b0068318ba8..6a5ccb6dd48c 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -924,6 +924,9 @@ int __init_memblock memblock_phys_free(phys_addr_t base, phys_addr_t size) kmemleak_free_part_phys(base, size); return memblock_remove_range(&memblock.reserved, base, size); } +#ifdef CONFIG_ARCH_KEEP_MEMBLOCK +EXPORT_SYMBOL_GPL(memblock_free); +#endif int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size) { diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 0a42e9a8caba..c53c5ce16483 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1607,6 +1607,46 @@ int add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags) } EXPORT_SYMBOL_GPL(add_memory); +int add_memory_subsection(int nid, u64 start, u64 size) +{ + struct mhp_params params = { .pgprot = PAGE_KERNEL }; + struct resource *res; + int ret; + + if (size == memory_block_size_bytes()) + return add_memory(nid, start, size, MHP_NONE); + + if (!IS_ALIGNED(start, SUBSECTION_SIZE) || + !IS_ALIGNED(size, SUBSECTION_SIZE)) { + pr_err("%s: start 0x%llx size 0x%llx not aligned to subsection size\n", + __func__, start, size); + return -EINVAL; + } + + res = register_memory_resource(start, size, "System RAM"); + if (IS_ERR(res)) + return PTR_ERR(res); + + mem_hotplug_begin(); + + nid = memory_add_physaddr_to_nid(start); + + if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) + memblock_add_node(start, size, nid, MEMBLOCK_NONE); + + ret = arch_add_memory(nid, start, size, ¶ms); + if (ret) { + if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) + memblock_remove(start, size); + pr_err("%s failed to add subsection start 0x%llx size 0x%llx\n", + __func__, start, size); + } + mem_hotplug_done(); + + return ret; +} +EXPORT_SYMBOL_GPL(add_memory_subsection); + /* * Add special, driver-managed memory to the system as system RAM. Such * memory is not exposed via the raw firmware-provided memmap as system @@ -2319,6 +2359,40 @@ int remove_memory(u64 start, u64 size) } EXPORT_SYMBOL_GPL(remove_memory); +int remove_memory_subsection(u64 start, u64 size) +{ + if (size == memory_block_size_bytes()) + return remove_memory(start, size); + + if (!IS_ALIGNED(start, SUBSECTION_SIZE) || + !IS_ALIGNED(size, SUBSECTION_SIZE)) { + pr_err("%s: start 0x%llx size 0x%llx not aligned to subsection size\n", + __func__, start, size); + return -EINVAL; + } + + mem_hotplug_begin(); + + if (test_pages_isolated(start, start + size, MEMORY_OFFLINE)) { + pr_err("%s: [%llx, %llx) PFNs are not isolated\n", + __func__, start, start + size); + mem_hotplug_done(); + return -EBUSY; + } + + arch_remove_memory(start, size, NULL); + + if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) + memblock_remove(start, size); + + release_mem_region_adjustable(start, size); + + mem_hotplug_done(); + + return 0; +} +EXPORT_SYMBOL_GPL(remove_memory_subsection); + static int try_offline_memory_block(struct memory_block *mem, void *arg) { uint8_t online_type = MMOP_ONLINE_KERNEL; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f4f347b09f96..6298a40902fc 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -617,6 +617,9 @@ static inline unsigned int order_to_pindex(int migratetype, int order) VM_BUG_ON(order != HPAGE_PMD_ORDER); movable = migratetype == MIGRATE_MOVABLE; +#ifdef CONFIG_CMA + movable |= migratetype == MIGRATE_CMA; +#endif return NR_LOWORDER_PCP_LISTS + movable; } @@ -5115,7 +5118,7 @@ EXPORT_SYMBOL_GPL(alloc_pages_bulk_noprof); struct page *__alloc_pages_noprof(gfp_t gfp, unsigned int order, int preferred_nid, nodemask_t *nodemask) { - struct page *page; + struct page *page = NULL; unsigned int alloc_flags = ALLOC_WMARK_LOW; gfp_t alloc_gfp; /* The gfp_t that was actually used for allocation */ struct alloc_context ac = { }; diff --git a/modules.bzl b/modules.bzl index 5edd22d5bbb9..febc4bd0bcce 100644 --- a/modules.bzl +++ b/modules.bzl @@ -6,7 +6,6 @@ This module contains a full list of kernel modules compiled by GKI. """ -# LINT.IfChange _COMMON_GKI_MODULES_LIST = [ # keep sorted "drivers/block/virtio_blk.ko", @@ -104,7 +103,6 @@ _ARM64_GKI_MODULES_LIST = [ "drivers/misc/open-dice.ko", "drivers/ptp/ptp_kvm.ko", ] -# LINT.ThenChange(gki/aarch64/protected_exports) _X86_GKI_MODULES_LIST = [ # keep sorted @@ -205,12 +203,10 @@ def get_kunit_modules_list(arch = None): return kunit_modules_list -# LINT.IfChange _COMMON_UNPROTECTED_MODULES_LIST = [ "drivers/block/zram/zram.ko", "mm/zsmalloc.ko", ] -# LINT.ThenChange(gki/aarch64/protected_exports) # buildifier: disable=unnamed-macro def get_gki_protected_modules_list(arch = None): diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index 6c309d39ab6c..e3c81ea45f6c 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -198,6 +198,13 @@ modpost-args += -e $(addprefix -i , $(KBUILD_EXTRA_SYMBOLS)) endif # ($(KBUILD_EXTMOD),) +ifdef CONFIG_MODULE_SIG_PROTECT +mod-protect-list := $(CONFIG_MODULE_SIG_PROTECT_LIST) +mod-protect-list := $(if $(filter-out /%, $(mod-protect-list)),$(if $(wildcard $(mod-protect-list)),,$(srctree)/))$(mod-protect-list) +modpost-args += $(addprefix -p , $(mod-protect-list)) +modpost-deps += $(mod-protect-list) +endif + quiet_cmd_modpost = MODPOST $@ cmd_modpost = \ $(if $(missing-input), \ diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux index 0c2494ffcaf8..a43797dd2913 100644 --- a/scripts/Makefile.vmlinux +++ b/scripts/Makefile.vmlinux @@ -20,6 +20,17 @@ quiet_cmd_cc_o_c = CC $@ ifdef CONFIG_MODULES targets += .vmlinux.export.o vmlinux: .vmlinux.export.o + +ifdef CONFIG_MODULE_SIG_PROTECT +targets += .vmlinux.protected-exports.o +vmlinux: .vmlinux.protected-exports.o +endif + +ifdef CONFIG_TRIM_UNUSED_KSYMS +targets += .vmlinux.permitted-imports.o +vmlinux: .vmlinux.permitted-imports.o +endif + endif ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) diff --git a/scripts/gen_gki_modules_headers.sh b/scripts/gen_gki_modules_headers.sh deleted file mode 100755 index ca435f49b62f..000000000000 --- a/scripts/gen_gki_modules_headers.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: GPL-2.0-only -# -# Copyright 2022 Google LLC -# Author: ramjiyani@google.com (Ramji Jiyani) -# - -# -# Generates header file with list of unprotected symbols -# -# Called By: KERNEL_SRC/kernel/Makefile if CONFIG_MODULE_SIG_PROTECT=y -# -# gki_module_unprotected.h: Symbols allowed to _access_ by unsigned modules -# -# If valid symbol file doesn't exists then still generates valid C header files for -# compilation to proceed with no symbols to protect -# - -# Collect arguments from Makefile -TARGET=$1 -SRCTREE=$2 -SYMBOL_LIST=$3 - -set -e - -# -# Common Definitions -# -# Use "make V=1" to debug this script. -case "$KBUILD_VERBOSE" in -*1*) - set -x - ;; -esac - -# -# generate_header(): -# Args: $1 = Name of the header file -# $2 = Input symbol list -# $3 = Symbol type ("unprotected") -# -generate_header() { - local header_file=$1 - local symbol_file=$2 - local symbol_type=$3 - - if [ -f "${header_file}" ]; then - rm -f -- "${header_file}" - fi - - # If symbol_file exist preprocess it and find maximum name length - if [ -s "${symbol_file}" ]; then - # Remove any trailing CR, leading / trailing whitespace, - # line comments, empty lines and symbol list markers. - sed -i ' - s/\r$// - s/^[[:space:]]*// - s/[[:space:]]*$// - /^#/d - /^$/d - /^\[abi_symbol_list\]$/d - ' "${symbol_file}" - - # Sort in byte order for kernel binary search at runtime - LC_ALL=C sort -u -o "${symbol_file}" "${symbol_file}" - - # Trim white spaces & +1 for null termination - local max_name_len=$(awk ' - { - $1=$1; - if ( length > L ) { - L=length - } - } END { print ++L }' "${symbol_file}") - else - # Set to 1 to generate valid C header file - local max_name_len=1 - fi - - # Header generation - cat > "${header_file}" <<- EOT - /* - * DO NOT EDIT - * - * Build generated header file with ${symbol_type} - */ - - #define NR_$(printf ${symbol_type} | tr [:lower:] [:upper:])_SYMBOLS \\ - $(printf '\t')(ARRAY_SIZE(gki_${symbol_type}_symbols)) - #define MAX_$(printf ${symbol_type} | tr [:lower:] [:upper:])_NAME_LEN (${max_name_len}) - - static const char gki_${symbol_type}_symbols[][MAX_$(printf ${symbol_type} | - tr [:lower:] [:upper:])_NAME_LEN] = { - EOT - - # If a valid symbol_file present add symbols in an array except the 1st line - if [ -s "${symbol_file}" ]; then - sed -e 's/^[ \t]*/\t"/;s/[ \t]*$/",/' "${symbol_file}" >> "${header_file}" - fi - - # Terminate the file - echo "};" >> "${header_file}" -} - -if [ "$(basename "${TARGET}")" = "gki_module_unprotected.h" ]; then - # Union of vendor symbol lists - GKI_VENDOR_SYMBOLS="${SYMBOL_LIST}" - generate_header "${TARGET}" "${GKI_VENDOR_SYMBOLS}" "unprotected" -else - # Sorted list of exported symbols - GKI_EXPORTED_SYMBOLS="include/config/abi_gki_protected_exports" - - if [ -z "${SYMBOL_LIST}" ]; then - # Create empty list if ARCH doesn't have protected exports - touch "${GKI_EXPORTED_SYMBOLS}" - else - # Make a temp copy to avoid changing source during pre-processing - cp -f "${SYMBOL_LIST}" "${GKI_EXPORTED_SYMBOLS}" - fi - - generate_header "${TARGET}" "${GKI_EXPORTED_SYMBOLS}" "protected_exports" -fi - diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index a9b3f34a78d2..829683250fea 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -70,6 +70,12 @@ vmlinux_link() if is_enabled CONFIG_MODULES; then objs="${objs} .vmlinux.export.o" + if is_enabled CONFIG_MODULE_SIG_PROTECT; then + objs="${objs} .vmlinux.protected-exports.o" + fi + if is_enabled CONFIG_TRIM_UNUSED_KSYMS; then + objs="${objs} .vmlinux.permitted-imports.o" + fi fi objs="${objs} init/version-timestamp.o" diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 555828fe7395..b1705f3ace45 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -60,6 +61,9 @@ static bool extra_warn; bool target_is_big_endian; bool host_is_big_endian; +static unsigned int nr_module_exported_symbols; +static unsigned int nr_white_list_symbols; + /* * Cut off the warnings when there are too many. This typically occurs when * vmlinux is missing. ('make modules' without building vmlinux.) @@ -99,6 +103,11 @@ static inline bool strends(const char *str, const char *postfix) return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0; } +static int symbol_cmp(const void *a, const void *b) +{ + return strcmp(*(const char **)a, *(const char **)b); +} + char *read_text_file(const char *filename) { struct stat st; @@ -365,6 +374,9 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod, s->namespace = xstrdup(namespace); list_add_tail(&s->list, &mod->exported_symbols); hash_add_symbol(s); + if (!mod->is_vmlinux && !mod->from_dump) { + ++nr_module_exported_symbols; + } return s; } @@ -1726,18 +1738,29 @@ static void check_exports(struct module *mod) } } -static void handle_white_list_exports(const char *white_list) +struct permitted_symbol { + struct list_head list; + const char *name; +}; + +static void handle_white_list_exports(const char *white_list, + struct list_head *permitted_symbols) { char *buf, *p, *name; - + struct permitted_symbol *ps; buf = read_text_file(white_list); p = buf; while ((name = strsep(&p, "\n"))) { struct symbol *sym = find_symbol(name); - if (sym) + if (sym) { sym->used = true; + ps = xmalloc(sizeof(*ps)); + ps->name = sym->name; + list_add_tail(&ps->list, permitted_symbols); + ++nr_white_list_symbols; + } } free(buf); @@ -2179,17 +2202,90 @@ static void check_host_endian(void) } } +static void handle_protected_modules_list(const char *fname) +{ + char *buf, *p, *name; + + buf = read_text_file(fname); + p = buf; + + while ((name = strsep(&p, "\n"))) { + struct module *mod = find_module(name); + + if (mod) + mod->is_protected = true; + } + + free(buf); +} + +static void write_protected_exports_c_file(void) +{ + const char* symbols[nr_module_exported_symbols]; + unsigned int symbols_size = 0; + unsigned int i; + struct module *mod; + struct symbol *sym; + struct buffer buf = {}; + + list_for_each_entry(mod, &modules, list) { + if (mod->is_vmlinux || mod->from_dump || !mod->is_protected) + continue; + + list_for_each_entry(sym, &mod->exported_symbols, list) { + symbols[symbols_size++] = sym->name; + } + } + qsort(symbols, symbols_size, sizeof(const char*), symbol_cmp); + + buf_printf(&buf, "#include \"../kernel/module/internal.h\"\n\n"); + buf_printf(&buf, "size_t protected_symbol_exports_count = %d;\n\n", symbols_size); + buf_printf(&buf, "const char *const protected_symbol_exports[] = {\n"); + for (i=0; iname; + list_del(&ps->list); + free(ps); + } + qsort(symbols, nr_white_list_symbols, sizeof(const char *), symbol_cmp); + + buf_printf(&buf, "#include \"../kernel/module/internal.h\"\n\n"); + buf_printf(&buf, "size_t permitted_symbol_imports_count = %d;\n\n", nr_white_list_symbols); + buf_printf(&buf, "const char *const permitted_symbol_imports[] = {\n"); + for (i=0; ifrom_dump) @@ -2300,5 +2404,10 @@ int main(int argc, char **argv) warn("suppressed %u unresolved symbol warnings because there were too many)\n", nr_unresolved - MAX_UNRESOLVED_REPORTS); + if (protected_modules_list) { + handle_protected_modules_list(protected_modules_list); + write_protected_exports_c_file(); + } + return error_occurred ? 1 : 0; } diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index ada3a36cc4bc..5459728e2f2e 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -89,6 +89,7 @@ struct module { bool seen; bool has_init; bool has_cleanup; + bool is_protected; /* true if module exports are protected */ struct buffer dev_table_buf; char srcversion[25]; // Missing namespace dependencies