| From 781e8e729b1fcaa39ac3dd2982e76aeab9f8df10 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 7 Sep 2022 16:05:56 -0700 |
| Subject: MIPS: BCM47XX: Cast memcmp() of function to (void *) |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Kees Cook <keescook@chromium.org> |
| |
| [ Upstream commit 0dedcf6e3301836eb70cfa649052e7ce4fcd13ba ] |
| |
| Clang is especially sensitive about argument type matching when using |
| __overloaded functions (like memcmp(), etc). Help it see that function |
| pointers are just "void *". Avoids this error: |
| |
| arch/mips/bcm47xx/prom.c:89:8: error: no matching function for call to 'memcmp' |
| if (!memcmp(prom_init, prom_init + mem, 32)) |
| ^~~~~~ |
| include/linux/string.h:156:12: note: candidate function not viable: no known conversion from 'void (void)' to 'const void *' for 1st argument extern int memcmp(const void *,const void *,__kernel_size_t); |
| |
| Cc: Hauke Mehrtens <hauke@hauke-m.de> |
| Cc: "Rafał Miłecki" <zajec5@gmail.com> |
| Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Cc: linux-mips@vger.kernel.org |
| Cc: Nathan Chancellor <nathan@kernel.org> |
| Cc: Nick Desaulniers <ndesaulniers@google.com> |
| Cc: llvm@lists.linux.dev |
| Reported-by: kernel test robot <lkp@intel.com> |
| Link: https://lore.kernel.org/lkml/202209080652.sz2d68e5-lkp@intel.com |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/mips/bcm47xx/prom.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/mips/bcm47xx/prom.c b/arch/mips/bcm47xx/prom.c |
| index 0a63721d0fbf..5a33d6b48d77 100644 |
| --- a/arch/mips/bcm47xx/prom.c |
| +++ b/arch/mips/bcm47xx/prom.c |
| @@ -86,7 +86,7 @@ static __init void prom_init_mem(void) |
| pr_debug("Assume 128MB RAM\n"); |
| break; |
| } |
| - if (!memcmp(prom_init, prom_init + mem, 32)) |
| + if (!memcmp((void *)prom_init, (void *)prom_init + mem, 32)) |
| break; |
| } |
| lowmem = mem; |
| @@ -159,7 +159,7 @@ void __init bcm47xx_prom_highmem_init(void) |
| |
| off = EXTVBASE + __pa(off); |
| for (extmem = 128 << 20; extmem < 512 << 20; extmem <<= 1) { |
| - if (!memcmp(prom_init, (void *)(off + extmem), 16)) |
| + if (!memcmp((void *)prom_init, (void *)(off + extmem), 16)) |
| break; |
| } |
| extmem -= lowmem; |
| -- |
| 2.35.1 |
| |