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