From: Greg Kroah-Hartman Date: Wed, 5 Oct 2022 11:28:13 +0000 (+0200) Subject: 6.0-stable patches X-Git-Tag: v5.4.217~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=98294b90a23a936de476f90761851ff3160926e7;p=thirdparty%2Fkernel%2Fstable-queue.git 6.0-stable patches added patches: docs-update-mediator-information-in-coc-docs.patch hardening-remove-clang-s-enable-flag-for-ftrivial-auto-var-init-zero.patch hwmon-aquacomputer_d5next-fix-quadro-fan-speed-offsets.patch makefile.extrawarn-move-wcast-function-type-strict-to-w-1.patch sparc-unbreak-the-build.patch --- diff --git a/queue-6.0/docs-update-mediator-information-in-coc-docs.patch b/queue-6.0/docs-update-mediator-information-in-coc-docs.patch new file mode 100644 index 00000000000..31781165148 --- /dev/null +++ b/queue-6.0/docs-update-mediator-information-in-coc-docs.patch @@ -0,0 +1,31 @@ +From 8bfdfa0d6b929ede7b6189e0e546ceb6a124d05d Mon Sep 17 00:00:00 2001 +From: Shuah Khan +Date: Thu, 1 Sep 2022 15:23:19 -0600 +Subject: docs: update mediator information in CoC docs + +From: Shuah Khan + +commit 8bfdfa0d6b929ede7b6189e0e546ceb6a124d05d upstream. + +Update mediator information in the CoC interpretation document. + +Signed-off-by: Shuah Khan +Link: https://lore.kernel.org/r/20220901212319.56644-1-skhan@linuxfoundation.org +Cc: stable@vger.kernel.org +Signed-off-by: Jonathan Corbet +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/process/code-of-conduct-interpretation.rst | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Documentation/process/code-of-conduct-interpretation.rst ++++ b/Documentation/process/code-of-conduct-interpretation.rst +@@ -51,7 +51,7 @@ the Technical Advisory Board (TAB) or ot + uncertain how to handle situations that come up. It will not be + considered a violation report unless you want it to be. If you are + uncertain about approaching the TAB or any other maintainers, please +-reach out to our conflict mediator, Mishi Choudhary . ++reach out to our conflict mediator, Joanna Lee . + + In the end, "be kind to each other" is really what the end goal is for + everybody. We know everyone is human and we all fail at times, but the diff --git a/queue-6.0/hardening-remove-clang-s-enable-flag-for-ftrivial-auto-var-init-zero.patch b/queue-6.0/hardening-remove-clang-s-enable-flag-for-ftrivial-auto-var-init-zero.patch new file mode 100644 index 00000000000..db9f68716a7 --- /dev/null +++ b/queue-6.0/hardening-remove-clang-s-enable-flag-for-ftrivial-auto-var-init-zero.patch @@ -0,0 +1,66 @@ +From 607e57c6c62c00965ae276902c166834ce73014a Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Thu, 29 Sep 2022 22:57:43 -0700 +Subject: hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero + +From: Kees Cook + +commit 607e57c6c62c00965ae276902c166834ce73014a upstream. + +Now that Clang's -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang +option is no longer required, remove it from the command line. Clang 16 +and later will warn when it is used, which will cause Kconfig to think +it can't use -ftrivial-auto-var-init=zero at all. Check for whether it +is required and only use it when so. + +Cc: Nathan Chancellor +Cc: Masahiro Yamada +Cc: Nick Desaulniers +Cc: linux-kbuild@vger.kernel.org +Cc: llvm@lists.linux.dev +Cc: stable@vger.kernel.org +Fixes: f02003c860d9 ("hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO") +Signed-off-by: Kees Cook +Signed-off-by: Greg Kroah-Hartman +--- + Makefile | 4 ++-- + security/Kconfig.hardening | 14 ++++++++++---- + 2 files changed, 12 insertions(+), 6 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -831,8 +831,8 @@ endif + # Initialize all stack variables with a zero value. + ifdef CONFIG_INIT_STACK_ALL_ZERO + KBUILD_CFLAGS += -ftrivial-auto-var-init=zero +-ifdef CONFIG_CC_IS_CLANG +-# https://bugs.llvm.org/show_bug.cgi?id=45497 ++ifdef CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER ++# https://github.com/llvm/llvm-project/issues/44842 + KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang + endif + endif +--- a/security/Kconfig.hardening ++++ b/security/Kconfig.hardening +@@ -22,11 +22,17 @@ menu "Memory initialization" + config CC_HAS_AUTO_VAR_INIT_PATTERN + def_bool $(cc-option,-ftrivial-auto-var-init=pattern) + +-config CC_HAS_AUTO_VAR_INIT_ZERO +- # GCC ignores the -enable flag, so we can test for the feature with +- # a single invocation using the flag, but drop it as appropriate in +- # the Makefile, depending on the presence of Clang. ++config CC_HAS_AUTO_VAR_INIT_ZERO_BARE ++ def_bool $(cc-option,-ftrivial-auto-var-init=zero) ++ ++config CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER ++ # Clang 16 and later warn about using the -enable flag, but it ++ # is required before then. + def_bool $(cc-option,-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang) ++ depends on !CC_HAS_AUTO_VAR_INIT_ZERO_BARE ++ ++config CC_HAS_AUTO_VAR_INIT_ZERO ++ def_bool CC_HAS_AUTO_VAR_INIT_ZERO_BARE || CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER + + choice + prompt "Initialize kernel stack variables at function entry" diff --git a/queue-6.0/hwmon-aquacomputer_d5next-fix-quadro-fan-speed-offsets.patch b/queue-6.0/hwmon-aquacomputer_d5next-fix-quadro-fan-speed-offsets.patch new file mode 100644 index 00000000000..789d030955d --- /dev/null +++ b/queue-6.0/hwmon-aquacomputer_d5next-fix-quadro-fan-speed-offsets.patch @@ -0,0 +1,38 @@ +From b7f3e9650f12d1e06b94a0257bcb90279f691bf5 Mon Sep 17 00:00:00 2001 +From: Aleksa Savic +Date: Wed, 14 Sep 2022 13:43:27 +0200 +Subject: hwmon: (aquacomputer_d5next) Fix Quadro fan speed offsets + +From: Aleksa Savic + +commit b7f3e9650f12d1e06b94a0257bcb90279f691bf5 upstream. + +The offsets for setting speeds of fans connected to Quadro are off by one. +Set them to their correct values. + +The offsets as shown point to registers for setting the fan control mode, +which will be explored in future patches, but slipped in here. When +setting fan speeds, the resulting values were overlapping, which made the +fans still run in my initial testing. + +Fixes: cdbe34da01e3 ("hwmon: (aquacomputer_d5next) Add support for Aquacomputer Quadro fan controller") +Signed-off-by: Aleksa Savic +Link: https://lore.kernel.org/r/20220914114327.6941-1-savicaleksa83@gmail.com +Cc: stable@vger.kenrel.org +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hwmon/aquacomputer_d5next.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/hwmon/aquacomputer_d5next.c ++++ b/drivers/hwmon/aquacomputer_d5next.c +@@ -110,7 +110,7 @@ static u16 octo_ctrl_fan_offsets[] = { 0 + static u8 quadro_sensor_fan_offsets[] = { 0x70, 0x7D, 0x8A, 0x97 }; + + /* Fan speed registers in Quadro control report (from 0-100%) */ +-static u16 quadro_ctrl_fan_offsets[] = { 0x36, 0x8b, 0xe0, 0x135 }; ++static u16 quadro_ctrl_fan_offsets[] = { 0x37, 0x8c, 0xe1, 0x136 }; + + /* Labels for D5 Next */ + static const char *const label_d5next_temp[] = { diff --git a/queue-6.0/makefile.extrawarn-move-wcast-function-type-strict-to-w-1.patch b/queue-6.0/makefile.extrawarn-move-wcast-function-type-strict-to-w-1.patch new file mode 100644 index 00000000000..054a64f2054 --- /dev/null +++ b/queue-6.0/makefile.extrawarn-move-wcast-function-type-strict-to-w-1.patch @@ -0,0 +1,39 @@ +From 2120635108b35ecad9c59c8b44f6cbdf4f98214e Mon Sep 17 00:00:00 2001 +From: Sami Tolvanen +Date: Fri, 30 Sep 2022 20:33:10 +0000 +Subject: Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 + +From: Sami Tolvanen + +commit 2120635108b35ecad9c59c8b44f6cbdf4f98214e upstream. + +We enable -Wcast-function-type globally in the kernel to warn about +mismatching types in function pointer casts. Compilers currently +warn only about ABI incompability with this flag, but Clang 16 will +enable a stricter version of the check by default that checks for an +exact type match. This will be very noisy in the kernel, so disable +-Wcast-function-type-strict without W=1 until the new warnings have +been addressed. + +Cc: stable@vger.kernel.org +Link: https://reviews.llvm.org/D134831 +Link: https://github.com/ClangBuiltLinux/linux/issues/1724 +Suggested-by: Nathan Chancellor +Signed-off-by: Sami Tolvanen +Signed-off-by: Kees Cook +Link: https://lore.kernel.org/r/20220930203310.4010564-1-samitolvanen@google.com +Signed-off-by: Greg Kroah-Hartman +--- + scripts/Makefile.extrawarn | 1 + + 1 file changed, 1 insertion(+) + +--- a/scripts/Makefile.extrawarn ++++ b/scripts/Makefile.extrawarn +@@ -64,6 +64,7 @@ KBUILD_CFLAGS += -Wno-sign-compare + KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) + KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare + KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) ++KBUILD_CFLAGS += $(call cc-disable-warning, cast-function-type-strict) + endif + + endif diff --git a/queue-6.0/series b/queue-6.0/series index e18b247983f..7fc21abbd22 100644 --- a/queue-6.0/series +++ b/queue-6.0/series @@ -1 +1,6 @@ fix-coredump-breakage.patch +sparc-unbreak-the-build.patch +makefile.extrawarn-move-wcast-function-type-strict-to-w-1.patch +hardening-remove-clang-s-enable-flag-for-ftrivial-auto-var-init-zero.patch +docs-update-mediator-information-in-coc-docs.patch +hwmon-aquacomputer_d5next-fix-quadro-fan-speed-offsets.patch diff --git a/queue-6.0/sparc-unbreak-the-build.patch b/queue-6.0/sparc-unbreak-the-build.patch new file mode 100644 index 00000000000..f54f96c17c7 --- /dev/null +++ b/queue-6.0/sparc-unbreak-the-build.patch @@ -0,0 +1,326 @@ +From 17006e86a7641fa3c50324cfb602f0e74dac8527 Mon Sep 17 00:00:00 2001 +From: Bart Van Assche +Date: Tue, 30 Aug 2022 13:58:42 -0700 +Subject: sparc: Unbreak the build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Bart Van Assche + +commit 17006e86a7641fa3c50324cfb602f0e74dac8527 upstream. + +Fix the following build errors: + +arch/sparc/mm/srmmu.c: In function ‘smp_flush_page_for_dma’: +arch/sparc/mm/srmmu.c:1639:13: error: cast between incompatible function types from ‘void (*)(long unsigned int)’ to ‘void (*)(long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int)’ [-Werror=cast-function-type] + 1639 | xc1((smpfunc_t) local_ops->page_for_dma, page); + | ^ +arch/sparc/mm/srmmu.c: In function ‘smp_flush_cache_mm’: +arch/sparc/mm/srmmu.c:1662:29: error: cast between incompatible function types from ‘void (*)(struct mm_struct *)’ to ‘void (*)(long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int)’ [-Werror=cast-function-type] + 1662 | xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); + | +[ ... ] + +Compile-tested only. + +Fixes: 552a23a0e5d0 ("Makefile: Enable -Wcast-function-type") +Cc: stable@vger.kernel.org +Signed-off-by: Bart Van Assche +Tested-by: Andreas Larsson +Signed-off-by: Kees Cook +Link: https://lore.kernel.org/r/20220830205854.1918026-1-bvanassche@acm.org +Signed-off-by: Greg Kroah-Hartman +--- + arch/sparc/include/asm/smp_32.h | 15 ++++++--------- + arch/sparc/kernel/leon_smp.c | 12 +++++++----- + arch/sparc/kernel/sun4d_smp.c | 12 +++++++----- + arch/sparc/kernel/sun4m_smp.c | 10 ++++++---- + arch/sparc/mm/srmmu.c | 29 +++++++++++++---------------- + 5 files changed, 39 insertions(+), 39 deletions(-) + +--- a/arch/sparc/include/asm/smp_32.h ++++ b/arch/sparc/include/asm/smp_32.h +@@ -33,9 +33,6 @@ extern volatile unsigned long cpu_callin + extern cpumask_t smp_commenced_mask; + extern struct linux_prom_registers smp_penguin_ctable; + +-typedef void (*smpfunc_t)(unsigned long, unsigned long, unsigned long, +- unsigned long, unsigned long); +- + void cpu_panic(void); + + /* +@@ -57,7 +54,7 @@ void smp_bogo(struct seq_file *); + void smp_info(struct seq_file *); + + struct sparc32_ipi_ops { +- void (*cross_call)(smpfunc_t func, cpumask_t mask, unsigned long arg1, ++ void (*cross_call)(void *func, cpumask_t mask, unsigned long arg1, + unsigned long arg2, unsigned long arg3, + unsigned long arg4); + void (*resched)(int cpu); +@@ -66,28 +63,28 @@ struct sparc32_ipi_ops { + }; + extern const struct sparc32_ipi_ops *sparc32_ipi_ops; + +-static inline void xc0(smpfunc_t func) ++static inline void xc0(void *func) + { + sparc32_ipi_ops->cross_call(func, *cpu_online_mask, 0, 0, 0, 0); + } + +-static inline void xc1(smpfunc_t func, unsigned long arg1) ++static inline void xc1(void *func, unsigned long arg1) + { + sparc32_ipi_ops->cross_call(func, *cpu_online_mask, arg1, 0, 0, 0); + } +-static inline void xc2(smpfunc_t func, unsigned long arg1, unsigned long arg2) ++static inline void xc2(void *func, unsigned long arg1, unsigned long arg2) + { + sparc32_ipi_ops->cross_call(func, *cpu_online_mask, arg1, arg2, 0, 0); + } + +-static inline void xc3(smpfunc_t func, unsigned long arg1, unsigned long arg2, ++static inline void xc3(void *func, unsigned long arg1, unsigned long arg2, + unsigned long arg3) + { + sparc32_ipi_ops->cross_call(func, *cpu_online_mask, + arg1, arg2, arg3, 0); + } + +-static inline void xc4(smpfunc_t func, unsigned long arg1, unsigned long arg2, ++static inline void xc4(void *func, unsigned long arg1, unsigned long arg2, + unsigned long arg3, unsigned long arg4) + { + sparc32_ipi_ops->cross_call(func, *cpu_online_mask, +--- a/arch/sparc/kernel/leon_smp.c ++++ b/arch/sparc/kernel/leon_smp.c +@@ -359,7 +359,7 @@ void leonsmp_ipi_interrupt(void) + } + + static struct smp_funcall { +- smpfunc_t func; ++ void *func; + unsigned long arg1; + unsigned long arg2; + unsigned long arg3; +@@ -372,7 +372,7 @@ static struct smp_funcall { + static DEFINE_SPINLOCK(cross_call_lock); + + /* Cross calls must be serialized, at least currently. */ +-static void leon_cross_call(smpfunc_t func, cpumask_t mask, unsigned long arg1, ++static void leon_cross_call(void *func, cpumask_t mask, unsigned long arg1, + unsigned long arg2, unsigned long arg3, + unsigned long arg4) + { +@@ -384,7 +384,7 @@ static void leon_cross_call(smpfunc_t fu + + { + /* If you make changes here, make sure gcc generates proper code... */ +- register smpfunc_t f asm("i0") = func; ++ register void *f asm("i0") = func; + register unsigned long a1 asm("i1") = arg1; + register unsigned long a2 asm("i2") = arg2; + register unsigned long a3 asm("i3") = arg3; +@@ -444,11 +444,13 @@ static void leon_cross_call(smpfunc_t fu + /* Running cross calls. */ + void leon_cross_call_irq(void) + { ++ void (*func)(unsigned long, unsigned long, unsigned long, unsigned long, ++ unsigned long) = ccall_info.func; + int i = smp_processor_id(); + + ccall_info.processors_in[i] = 1; +- ccall_info.func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, +- ccall_info.arg4, ccall_info.arg5); ++ func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, ccall_info.arg4, ++ ccall_info.arg5); + ccall_info.processors_out[i] = 1; + } + +--- a/arch/sparc/kernel/sun4d_smp.c ++++ b/arch/sparc/kernel/sun4d_smp.c +@@ -268,7 +268,7 @@ static void sun4d_ipi_resched(int cpu) + } + + static struct smp_funcall { +- smpfunc_t func; ++ void *func; + unsigned long arg1; + unsigned long arg2; + unsigned long arg3; +@@ -281,7 +281,7 @@ static struct smp_funcall { + static DEFINE_SPINLOCK(cross_call_lock); + + /* Cross calls must be serialized, at least currently. */ +-static void sun4d_cross_call(smpfunc_t func, cpumask_t mask, unsigned long arg1, ++static void sun4d_cross_call(void *func, cpumask_t mask, unsigned long arg1, + unsigned long arg2, unsigned long arg3, + unsigned long arg4) + { +@@ -296,7 +296,7 @@ static void sun4d_cross_call(smpfunc_t f + * If you make changes here, make sure + * gcc generates proper code... + */ +- register smpfunc_t f asm("i0") = func; ++ register void *f asm("i0") = func; + register unsigned long a1 asm("i1") = arg1; + register unsigned long a2 asm("i2") = arg2; + register unsigned long a3 asm("i3") = arg3; +@@ -353,11 +353,13 @@ static void sun4d_cross_call(smpfunc_t f + /* Running cross calls. */ + void smp4d_cross_call_irq(void) + { ++ void (*func)(unsigned long, unsigned long, unsigned long, unsigned long, ++ unsigned long) = ccall_info.func; + int i = hard_smp_processor_id(); + + ccall_info.processors_in[i] = 1; +- ccall_info.func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, +- ccall_info.arg4, ccall_info.arg5); ++ func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, ccall_info.arg4, ++ ccall_info.arg5); + ccall_info.processors_out[i] = 1; + } + +--- a/arch/sparc/kernel/sun4m_smp.c ++++ b/arch/sparc/kernel/sun4m_smp.c +@@ -157,7 +157,7 @@ static void sun4m_ipi_mask_one(int cpu) + } + + static struct smp_funcall { +- smpfunc_t func; ++ void *func; + unsigned long arg1; + unsigned long arg2; + unsigned long arg3; +@@ -170,7 +170,7 @@ static struct smp_funcall { + static DEFINE_SPINLOCK(cross_call_lock); + + /* Cross calls must be serialized, at least currently. */ +-static void sun4m_cross_call(smpfunc_t func, cpumask_t mask, unsigned long arg1, ++static void sun4m_cross_call(void *func, cpumask_t mask, unsigned long arg1, + unsigned long arg2, unsigned long arg3, + unsigned long arg4) + { +@@ -230,11 +230,13 @@ static void sun4m_cross_call(smpfunc_t f + /* Running cross calls. */ + void smp4m_cross_call_irq(void) + { ++ void (*func)(unsigned long, unsigned long, unsigned long, unsigned long, ++ unsigned long) = ccall_info.func; + int i = smp_processor_id(); + + ccall_info.processors_in[i] = 1; +- ccall_info.func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, +- ccall_info.arg4, ccall_info.arg5); ++ func(ccall_info.arg1, ccall_info.arg2, ccall_info.arg3, ccall_info.arg4, ++ ccall_info.arg5); + ccall_info.processors_out[i] = 1; + } + +--- a/arch/sparc/mm/srmmu.c ++++ b/arch/sparc/mm/srmmu.c +@@ -1636,19 +1636,19 @@ static void __init get_srmmu_type(void) + /* Local cross-calls. */ + static void smp_flush_page_for_dma(unsigned long page) + { +- xc1((smpfunc_t) local_ops->page_for_dma, page); ++ xc1(local_ops->page_for_dma, page); + local_ops->page_for_dma(page); + } + + static void smp_flush_cache_all(void) + { +- xc0((smpfunc_t) local_ops->cache_all); ++ xc0(local_ops->cache_all); + local_ops->cache_all(); + } + + static void smp_flush_tlb_all(void) + { +- xc0((smpfunc_t) local_ops->tlb_all); ++ xc0(local_ops->tlb_all); + local_ops->tlb_all(); + } + +@@ -1659,7 +1659,7 @@ static void smp_flush_cache_mm(struct mm + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc1((smpfunc_t) local_ops->cache_mm, (unsigned long) mm); ++ xc1(local_ops->cache_mm, (unsigned long)mm); + local_ops->cache_mm(mm); + } + } +@@ -1671,7 +1671,7 @@ static void smp_flush_tlb_mm(struct mm_s + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) { +- xc1((smpfunc_t) local_ops->tlb_mm, (unsigned long) mm); ++ xc1(local_ops->tlb_mm, (unsigned long)mm); + if (atomic_read(&mm->mm_users) == 1 && current->active_mm == mm) + cpumask_copy(mm_cpumask(mm), + cpumask_of(smp_processor_id())); +@@ -1691,8 +1691,8 @@ static void smp_flush_cache_range(struct + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc3((smpfunc_t) local_ops->cache_range, +- (unsigned long) vma, start, end); ++ xc3(local_ops->cache_range, (unsigned long)vma, start, ++ end); + local_ops->cache_range(vma, start, end); + } + } +@@ -1708,8 +1708,8 @@ static void smp_flush_tlb_range(struct v + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc3((smpfunc_t) local_ops->tlb_range, +- (unsigned long) vma, start, end); ++ xc3(local_ops->tlb_range, (unsigned long)vma, start, ++ end); + local_ops->tlb_range(vma, start, end); + } + } +@@ -1723,8 +1723,7 @@ static void smp_flush_cache_page(struct + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc2((smpfunc_t) local_ops->cache_page, +- (unsigned long) vma, page); ++ xc2(local_ops->cache_page, (unsigned long)vma, page); + local_ops->cache_page(vma, page); + } + } +@@ -1738,8 +1737,7 @@ static void smp_flush_tlb_page(struct vm + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc2((smpfunc_t) local_ops->tlb_page, +- (unsigned long) vma, page); ++ xc2(local_ops->tlb_page, (unsigned long)vma, page); + local_ops->tlb_page(vma, page); + } + } +@@ -1753,7 +1751,7 @@ static void smp_flush_page_to_ram(unsign + * XXX This experiment failed, research further... -DaveM + */ + #if 1 +- xc1((smpfunc_t) local_ops->page_to_ram, page); ++ xc1(local_ops->page_to_ram, page); + #endif + local_ops->page_to_ram(page); + } +@@ -1764,8 +1762,7 @@ static void smp_flush_sig_insns(struct m + cpumask_copy(&cpu_mask, mm_cpumask(mm)); + cpumask_clear_cpu(smp_processor_id(), &cpu_mask); + if (!cpumask_empty(&cpu_mask)) +- xc2((smpfunc_t) local_ops->sig_insns, +- (unsigned long) mm, insn_addr); ++ xc2(local_ops->sig_insns, (unsigned long)mm, insn_addr); + local_ops->sig_insns(mm, insn_addr); + } +