diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index def41776bbaf..0e48c4e84df9 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -426,6 +426,7 @@ + @@ -37447,6 +37448,10 @@ + + + + @@ -149383,6 +149388,14 @@ + + + + + + + + diff --git a/android/abi_gki_aarch64_cuttlefish b/android/abi_gki_aarch64_cuttlefish index c2732aa7dba0..6d6db2054797 100644 --- a/android/abi_gki_aarch64_cuttlefish +++ b/android/abi_gki_aarch64_cuttlefish @@ -230,7 +230,6 @@ vring_del_virtqueue vring_interrupt vring_transport_features - wait_for_completion wait_woken __wake_up __warn_printk @@ -739,11 +738,13 @@ blk_mq_complete_request blk_mq_end_request blk_mq_free_tag_set + blk_mq_freeze_queue blk_mq_init_queue - blk_mq_quiesce_queue + blk_mq_quiesce_queue_nowait blk_mq_start_request blk_mq_start_stopped_hw_queues blk_mq_stop_hw_queue + blk_mq_unfreeze_queue blk_mq_unquiesce_queue blk_mq_virtio_map_queues blk_put_request @@ -800,6 +801,7 @@ __splice_from_pipe system_freezing_cnt __unregister_chrdev + wait_for_completion # required by virtio_input.ko input_alloc_absinfo @@ -813,14 +815,10 @@ # required by virtio_mmio.ko device_for_each_child - devm_ioremap - devm_kfree - __devm_request_region - iomem_resource + devm_platform_ioremap_resource memparse platform_device_register_full platform_get_irq - platform_get_resource sscanf # required by virtio_net.ko @@ -956,6 +954,12 @@ sock_i_ino # preserved by --additions-only + blk_mq_quiesce_queue + devm_ioremap + devm_kfree + __devm_request_region generic_shutdown_super + iomem_resource + platform_get_resource refcount_dec_and_test_checked refcount_inc_checked diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index f1aea345f539..8024a1dbfa28 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -210,9 +210,12 @@ CONFIG_NET_SCH_HTB=y CONFIG_NET_SCH_INGRESS=y CONFIG_NET_CLS_U32=y CONFIG_NET_CLS_BPF=y +CONFIG_NET_CLS_MATCHALL=y CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_U32=y CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +CONFIG_NET_ACT_BPF=y CONFIG_BPF_JIT=y CONFIG_BT=y CONFIG_BT_RFCOMM=y @@ -279,12 +282,14 @@ CONFIG_PPP_DEFLATE=y CONFIG_PPP_MPPE=y CONFIG_PPTP=y CONFIG_PPPOL2TP=y +CONFIG_USB_RTL8150=y CONFIG_USB_RTL8152=y CONFIG_USB_USBNET=y -# CONFIG_USB_NET_CDC_NCM is not set +CONFIG_USB_NET_CDC_EEM=y # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set +CONFIG_USB_NET_AQC111=y # CONFIG_WLAN_VENDOR_ADMTEK is not set # CONFIG_WLAN_VENDOR_ATH is not set # CONFIG_WLAN_VENDOR_ATMEL is not set diff --git a/arch/riscv/include/asm/current.h b/arch/riscv/include/asm/current.h index f3d89c418638..44dcf7fc15ee 100644 --- a/arch/riscv/include/asm/current.h +++ b/arch/riscv/include/asm/current.h @@ -17,8 +17,6 @@ struct task_struct; -register struct task_struct *riscv_current_is_tp __asm__("tp"); - /* * This only works because "struct thread_info" is at offset 0 from "struct * task_struct". This constraint seems to be necessary on other architectures @@ -28,7 +26,8 @@ register struct task_struct *riscv_current_is_tp __asm__("tp"); */ static __always_inline struct task_struct *get_current(void) { - return riscv_current_is_tp; + register struct task_struct *tp __asm__("tp"); + return tp; } #define current get_current() diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 652ba81e4fa2..9d4b4098874b 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -22,8 +22,6 @@ #include #include -unsigned long gp_in_global __asm__("gp"); - extern asmlinkage void ret_from_fork(void); extern asmlinkage void ret_from_kernel_thread(void); @@ -111,8 +109,9 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long usp, /* p->thread holds context to be restored by __switch_to() */ if (unlikely(p->flags & PF_KTHREAD)) { /* Kernel thread */ + const register unsigned long gp __asm__ ("gp"); memset(childregs, 0, sizeof(struct pt_regs)); - childregs->gp = gp_in_global; + childregs->gp = gp; childregs->sstatus = SR_SPP | SR_SPIE; /* Supervisor, irqs on */ p->thread.ra = (unsigned long)ret_from_kernel_thread; diff --git a/arch/riscv/kernel/stacktrace.c b/arch/riscv/kernel/stacktrace.c index aecbfd0b883a..5ba4d23971fd 100644 --- a/arch/riscv/kernel/stacktrace.c +++ b/arch/riscv/kernel/stacktrace.c @@ -12,8 +12,6 @@ #include #include -register unsigned long sp_in_global __asm__("sp"); - #ifdef CONFIG_FRAME_POINTER struct stackframe { @@ -31,7 +29,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, sp = user_stack_pointer(regs); pc = instruction_pointer(regs); } else if (task == NULL || task == current) { - const register unsigned long current_sp = sp_in_global; + const register unsigned long current_sp __asm__ ("sp"); fp = (unsigned long)__builtin_frame_address(0); sp = current_sp; pc = (unsigned long)walk_stackframe; @@ -75,7 +73,8 @@ void notrace walk_stackframe(struct task_struct *task, sp = user_stack_pointer(regs); pc = instruction_pointer(regs); } else if (task == NULL || task == current) { - sp = sp_in_global; + const register unsigned long current_sp __asm__ ("sp"); + sp = current_sp; pc = (unsigned long)walk_stackframe; } else { /* task blocked in __switch_to */ diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 6d41f164bb2f..ac72f575b80a 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -188,9 +188,12 @@ CONFIG_NET_SCH_HTB=y CONFIG_NET_SCH_INGRESS=y CONFIG_NET_CLS_U32=y CONFIG_NET_CLS_BPF=y +CONFIG_NET_CLS_MATCHALL=y CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_U32=y CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +CONFIG_NET_ACT_BPF=y CONFIG_BPF_JIT=y CONFIG_BT=y CONFIG_BT_RFCOMM=y @@ -252,12 +255,14 @@ CONFIG_PPP_DEFLATE=y CONFIG_PPP_MPPE=y CONFIG_PPTP=y CONFIG_PPPOL2TP=y +CONFIG_USB_RTL8150=y CONFIG_USB_RTL8152=y CONFIG_USB_USBNET=y -# CONFIG_USB_NET_CDC_NCM is not set +CONFIG_USB_NET_CDC_EEM=y # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set +CONFIG_USB_NET_AQC111=y # CONFIG_WLAN_VENDOR_ADMTEK is not set # CONFIG_WLAN_VENDOR_ATH is not set # CONFIG_WLAN_VENDOR_ATMEL is not set diff --git a/security/Kconfig.hardening b/security/Kconfig.hardening index b54eb7177a31..f149bf4f8540 100644 --- a/security/Kconfig.hardening +++ b/security/Kconfig.hardening @@ -37,8 +37,8 @@ config CC_HAS_AUTO_VAR_INIT_ZERO choice prompt "Initialize kernel stack variables at function entry" default GCC_PLUGIN_STRUCTLEAK_BYREF_ALL if COMPILE_TEST && GCC_PLUGINS - default INIT_STACK_ALL_PATTERN if COMPILE_TEST && CC_HAS_AUTO_VAR_INIT_PATTERN - default INIT_STACK_ALL_ZERO if CC_HAS_AUTO_VAR_INIT_ZERO + default INIT_STACK_ALL_PATTERN if COMPILE_TEST && CC_HAS_AUTO_VAR_INIT_PATTERN && !RISCV + default INIT_STACK_ALL_ZERO if CC_HAS_AUTO_VAR_INIT_ZERO && !RISCV default INIT_STACK_NONE help This option enables initialization of stack variables at