[linux-next:master 1570/2472] mm/kasan/init.c:318:9: warning: variable 'pud' set but not used

Ard Biesheuvel ardb at kernel.org
Tue Nov 3 03:22:16 EST 2020


On Tue, 3 Nov 2020 at 01:17, Linus Walleij <linus.walleij at linaro.org> wrote:
>
> On Mon, Nov 2, 2020 at 12:32 AM kernel test robot <lkp at intel.com> wrote:
>
> >    mm/kasan/init.c: In function 'kasan_free_pud':
> > >> mm/kasan/init.c:318:9: warning: variable 'pud' set but not used [-Wunused-but-set-variable]
> >      318 |  pud_t *pud;
> >          |         ^~~
>
> So this is because
> arch/arm/include/asm/pgtable-2level.h has:
> #define pud_none(pud)           (0)
> because of the way that PMDs are folded into the PUD.
> (See the comment in the file.)
>
> This is not liked by KASan because it looks like the pud
> variable is unused.
>
> Any suggestions? Should it be:
> #define pud_none(pud)          (!pud_val(pud))
> Like most other archs?
>
> I also toyed with just putting __maybe_unused into the kasan init.
>
> Any other ways to solve this?
>

What about

diff --git a/mm/kasan/init.c b/mm/kasan/init.c
index fe6be0be1f76..7c3eb1f5a439 100644
--- a/mm/kasan/init.c
+++ b/mm/kasan/init.c
@@ -315,12 +315,10 @@ static void kasan_free_pmd(pmd_t *pmd_start, pud_t *pud)

 static void kasan_free_pud(pud_t *pud_start, p4d_t *p4d)
 {
-       pud_t *pud;
        int i;

        for (i = 0; i < PTRS_PER_PUD; i++) {
-               pud = pud_start + i;
-               if (!pud_none(*pud))
+               if (!pud_none(pud_start[i]))
                        return;
        }



More information about the linux-arm-kernel mailing list