Hi Masahiro, El Sun, Apr 30, 2017 at 10:59:52PM +0900 Masahiro Yamada ha dit: > 2017-04-22 6:39 GMT+09:00 Matthias Kaehlcke <mka@xxxxxxxxxxxx>: > > clang generates plenty of these warnings in different parts of the code, > > to an extent that the warnings are little more than noise. Disable the > > 'address-of-packed-member' warning. > > > > Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > > > As far as I compiled arch/x86/configs/x86_64_defconfig, > all address-of-packed-member warnings came from the single point: > > ./arch/x86/include/asm/processor.h:534:30: warning: taking address of > packed member 'sp0' of class or structure 'x86_hw_tss' may result in > an unaligned pointer value [-Waddress-of-packed-member] > return this_cpu_read_stable(cpu_tss.x86_tss.sp0); > ^~~~~~~~~~~~~~~~~~~ > ./arch/x86/include/asm/percpu.h:391:59: note: expanded from macro > 'this_cpu_read_stable' > #define this_cpu_read_stable(var) percpu_stable_op("mov", var) > ^~~ > ./arch/x86/include/asm/percpu.h:228:16: note: expanded from macro > 'percpu_stable_op' > : "p" (&(var))); \ > ^~~ > > > > For this case, I was able to fix it with the following patch: > > > diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h > index 9fa0360..de25d1c 100644 > --- a/arch/x86/include/asm/percpu.h > +++ b/arch/x86/include/asm/percpu.h > @@ -211,26 +211,27 @@ do { > \ > #define percpu_stable_op(op, var) \ > ({ \ > typeof(var) pfo_ret__; \ > + void *__p = &(var); \ > switch (sizeof(var)) { \ > case 1: \ > asm(op "b "__percpu_arg(P1)",%0" \ > : "=q" (pfo_ret__) \ > - : "p" (&(var))); \ > + : "p" (__p)); \ > break; \ > case 2: \ > asm(op "w "__percpu_arg(P1)",%0" \ > : "=r" (pfo_ret__) \ > - : "p" (&(var))); \ > + : "p" (__p)); \ > break; \ > case 4: \ > asm(op "l "__percpu_arg(P1)",%0" \ > : "=r" (pfo_ret__) \ > - : "p" (&(var))); \ > + : "p" (__p)); \ > break; \ > case 8: \ > asm(op "q "__percpu_arg(P1)",%0" \ > : "=r" (pfo_ret__) \ > - : "p" (&(var))); \ > + : "p" (__p)); \ > break; \ > default: __bad_percpu_size(); \ > } \ Thanks for having a look! It is odd though that you only see warnings from that origin, I encounter plenty of others with x86_64_defconfig, mostly stemming from uaccess macros: kernel/power/user.c:439:35: warning: taking address of packed member 'dev' of class or structure 'compat_resume_swap_area' may result in an unaligned pointer value [-Waddress-of-packed-member] err |= get_user(swap_area.dev, &u_swap_area->dev); ^~~~~~~~~~~~~~~~ ./arch/x86/include/asm/uaccess.h:168:23: note: expanded from macro 'get_user' register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX); \ ^~~ ./arch/x86/include/asm/uaccess.h:132:41: note: expanded from macro '__inttype' __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL)) ^ I looked into fixing different cases, but didn't see a clear path forward since we can't just cast the type away as in your patch above. > I'd like to see as much effort as possible > before we decide to hide this kind of warning. > > Is it OK with you ? Sounds good, though I will probably leave this one for someone else :) Cheers Matthias -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html