From f64c64a91c86e07a9d34ff268df77b9625e11bd1 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 4 Jan 2020 11:47:50 +0200 Subject: [PATCH] generic: fix compiler error in OpenWrt's kexec patch 330-MIPS-kexec-Accept-command-line-parameters-from-users.patch causes problems when building with -Werror=unused-result. arch/mips/kernel/machine_kexec.c: In function 'machine_kexec_init_argv': arch/mips/kernel/machine_kexec.c:76:2: error: ignoring return value of 'copy_from_user', declared with attribute warn_unused_result [-Werror=unused-result] copy_from_user(kexec_argv_buf, buf, size); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors Fix this by handling the return value in an appropriate way. Signed-off-by: Daniel Golle --- ...Accept-command-line-parameters-from-users.patch | 14 ++++++++------ ...Accept-command-line-parameters-from-users.patch | 14 ++++++++------ ...Accept-command-line-parameters-from-users.patch | 12 +++++++----- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch b/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch index 1187543a46..44d85b5b86 100644 --- a/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch +++ b/target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch @@ -29,7 +29,7 @@ Signed-off-by: Yousong Zhou int (*_machine_kexec_prepare)(struct kimage *) = NULL; void (*_machine_kexec_shutdown)(void) = NULL; -@@ -28,6 +25,99 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ +@@ -28,6 +25,101 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ void (*_crash_smp_send_stop)(void) = NULL; #endif @@ -81,7 +81,9 @@ Signed-off-by: Yousong Zhou + pr_warn("kexec command line truncated to %zd bytes\n", size); + + /* Copy to kernel space */ -+ copy_from_user(kexec_argv_buf, buf, size); ++ if (copy_from_user(kexec_argv_buf, buf, size)) ++ pr_warn("kexec command line copy to kernel space failed\n"); ++ + kexec_argv_buf[size - 1] = 0; +} + @@ -129,7 +131,7 @@ Signed-off-by: Yousong Zhou static void kexec_image_info(const struct kimage *kimage) { unsigned long i; -@@ -52,6 +142,18 @@ int +@@ -52,6 +144,18 @@ int machine_kexec_prepare(struct kimage *kimage) { kexec_image_info(kimage); @@ -148,7 +150,7 @@ Signed-off-by: Yousong Zhou if (_machine_kexec_prepare) return _machine_kexec_prepare(kimage); -@@ -89,10 +191,12 @@ machine_kexec(struct kimage *image) +@@ -89,10 +193,12 @@ machine_kexec(struct kimage *image) unsigned long *ptr; reboot_code_buffer = @@ -162,7 +164,7 @@ Signed-off-by: Yousong Zhou if (image->type == KEXEC_TYPE_DEFAULT) { kexec_indirection_page = -@@ -100,9 +204,19 @@ machine_kexec(struct kimage *image) +@@ -100,9 +206,19 @@ machine_kexec(struct kimage *image) } else { kexec_indirection_page = (unsigned long)&image->head; } @@ -184,7 +186,7 @@ Signed-off-by: Yousong Zhou /* * The generic kexec code builds a page list with physical -@@ -124,15 +238,16 @@ machine_kexec(struct kimage *image) +@@ -124,15 +240,16 @@ machine_kexec(struct kimage *image) /* * we do not want to be bothered. */ diff --git a/target/linux/generic/pending-4.19/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch b/target/linux/generic/pending-4.19/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch index 1187543a46..44d85b5b86 100644 --- a/target/linux/generic/pending-4.19/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch +++ b/target/linux/generic/pending-4.19/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch @@ -29,7 +29,7 @@ Signed-off-by: Yousong Zhou int (*_machine_kexec_prepare)(struct kimage *) = NULL; void (*_machine_kexec_shutdown)(void) = NULL; -@@ -28,6 +25,99 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ +@@ -28,6 +25,101 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ void (*_crash_smp_send_stop)(void) = NULL; #endif @@ -81,7 +81,9 @@ Signed-off-by: Yousong Zhou + pr_warn("kexec command line truncated to %zd bytes\n", size); + + /* Copy to kernel space */ -+ copy_from_user(kexec_argv_buf, buf, size); ++ if (copy_from_user(kexec_argv_buf, buf, size)) ++ pr_warn("kexec command line copy to kernel space failed\n"); ++ + kexec_argv_buf[size - 1] = 0; +} + @@ -129,7 +131,7 @@ Signed-off-by: Yousong Zhou static void kexec_image_info(const struct kimage *kimage) { unsigned long i; -@@ -52,6 +142,18 @@ int +@@ -52,6 +144,18 @@ int machine_kexec_prepare(struct kimage *kimage) { kexec_image_info(kimage); @@ -148,7 +150,7 @@ Signed-off-by: Yousong Zhou if (_machine_kexec_prepare) return _machine_kexec_prepare(kimage); -@@ -89,10 +191,12 @@ machine_kexec(struct kimage *image) +@@ -89,10 +193,12 @@ machine_kexec(struct kimage *image) unsigned long *ptr; reboot_code_buffer = @@ -162,7 +164,7 @@ Signed-off-by: Yousong Zhou if (image->type == KEXEC_TYPE_DEFAULT) { kexec_indirection_page = -@@ -100,9 +204,19 @@ machine_kexec(struct kimage *image) +@@ -100,9 +206,19 @@ machine_kexec(struct kimage *image) } else { kexec_indirection_page = (unsigned long)&image->head; } @@ -184,7 +186,7 @@ Signed-off-by: Yousong Zhou /* * The generic kexec code builds a page list with physical -@@ -124,15 +238,16 @@ machine_kexec(struct kimage *image) +@@ -124,15 +240,16 @@ machine_kexec(struct kimage *image) /* * we do not want to be bothered. */ diff --git a/target/linux/generic/pending-4.9/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch b/target/linux/generic/pending-4.9/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch index c7abd99b3b..8d50208d5b 100644 --- a/target/linux/generic/pending-4.9/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch +++ b/target/linux/generic/pending-4.9/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch @@ -29,7 +29,7 @@ Signed-off-by: Yousong Zhou int (*_machine_kexec_prepare)(struct kimage *) = NULL; void (*_machine_kexec_shutdown)(void) = NULL; -@@ -28,9 +25,115 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ +@@ -28,9 +25,117 @@ atomic_t kexec_ready_to_reboot = ATOMIC_ void (*_crash_smp_send_stop)(void) = NULL; #endif @@ -81,7 +81,9 @@ Signed-off-by: Yousong Zhou + pr_warn("kexec command line truncated to %zd bytes\n", size); + + /* Copy to kernel space */ -+ copy_from_user(kexec_argv_buf, buf, size); ++ if (copy_from_user(kexec_argv_buf, buf, size)) ++ pr_warn("kexec command line copy to kernel space failed\n"); ++ + kexec_argv_buf[size - 1] = 0; +} + @@ -145,7 +147,7 @@ Signed-off-by: Yousong Zhou if (_machine_kexec_prepare) return _machine_kexec_prepare(kimage); return 0; -@@ -67,10 +170,12 @@ machine_kexec(struct kimage *image) +@@ -67,10 +172,12 @@ machine_kexec(struct kimage *image) unsigned long *ptr; reboot_code_buffer = @@ -159,7 +161,7 @@ Signed-off-by: Yousong Zhou if (image->type == KEXEC_TYPE_DEFAULT) { kexec_indirection_page = -@@ -78,9 +183,19 @@ machine_kexec(struct kimage *image) +@@ -78,9 +185,19 @@ machine_kexec(struct kimage *image) } else { kexec_indirection_page = (unsigned long)&image->head; } @@ -181,7 +183,7 @@ Signed-off-by: Yousong Zhou /* * The generic kexec code builds a page list with physical -@@ -102,15 +217,16 @@ machine_kexec(struct kimage *image) +@@ -102,15 +219,16 @@ machine_kexec(struct kimage *image) /* * we do not want to be bothered. */