All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Kaehlcke <mka@chromium.org>
To: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Michal Marek <mmarek@suse.com>,
	Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Grant Grundler <grundler@chromium.org>,
	Greg Hackmann <ghackmann@google.com>,
	Michael Davidson <md@google.com>
Subject: Re: [PATCH 1/2] kbuild: clang: Disable 'address-of-packed-member' warning
Date: Mon, 1 May 2017 18:23:30 -0700	[thread overview]
Message-ID: <20170502012330.GW128305@google.com> (raw)
In-Reply-To: <CAK7LNASEnzDPQs2AY115sMx-i2NTUu9h9LHv5eN1ygvW81vtFw@mail.gmail.com>

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@chromium.org>:
> > 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@chromium.org>
> 
> 
> 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

  reply	other threads:[~2017-05-02  1:23 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-21 21:39 [PATCH 0/2] kbuild: clang: Disable spurious warnings Matthias Kaehlcke
2017-04-21 21:39 ` [PATCH 1/2] kbuild: clang: Disable 'address-of-packed-member' warning Matthias Kaehlcke
2017-04-30 13:59   ` Masahiro Yamada
2017-05-02  1:23     ` Matthias Kaehlcke [this message]
2017-05-06 16:52       ` Masahiro Yamada
2017-05-08 23:18         ` Matthias Kaehlcke
2017-05-16  6:31           ` Masahiro Yamada
2017-05-16 21:32   ` Doug Anderson
2017-06-22  1:19     ` Masahiro Yamada
2017-04-21 21:39 ` [PATCH 2/2] kbuild: clang: Disable the 'duplicate-decl-specifier' warning Matthias Kaehlcke
2017-04-30 14:01   ` Masahiro Yamada
2017-05-04 19:50     ` Matthias Kaehlcke
2017-05-08  8:29       ` Masahiro Yamada
2017-05-16 21:41   ` Doug Anderson
2017-05-17  7:35     ` Arnd Bergmann
2017-05-17 18:45       ` Matthias Kaehlcke
2017-05-24  0:04         ` Matthias Kaehlcke
2017-05-24  8:21           ` Arnd Bergmann
2017-06-21  9:11             ` Masahiro Yamada
2017-06-21 10:11               ` Arnd Bergmann
2017-06-21 16:58                 ` Matthias Kaehlcke
2017-06-21 17:59                   ` Arnd Bergmann
2017-06-21 21:19                     ` Matthias Kaehlcke
2017-07-31 16:35                     ` Matthias Kaehlcke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170502012330.GW128305@google.com \
    --to=mka@chromium.org \
    --cc=ghackmann@google.com \
    --cc=grundler@chromium.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=md@google.com \
    --cc=mmarek@suse.com \
    --cc=yamada.masahiro@socionext.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.