Re: drivers/iio/adc/ti-tsc2046.c:242:62: warning: taking address of packed member 'data' of class or structure 'tsc2046_adc_atom' may result in an unaligned pointer value

From: Nathan Chancellor
Date: Thu Jan 20 2022 - 16:49:58 EST


On Mon, Jan 17, 2022 at 10:19:41AM +0000, Jonathan Cameron wrote:
> On Mon, 17 Jan 2022 18:00:03 +0800
> kernel test robot <lkp@xxxxxxxxx> wrote:
>
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 0c947b893d69231a9add855939da7c66237ab44f
> > commit: 9374e8f5a38defe90bc65b2decf317c1c62d91dd iio: adc: add ADC driver for the TI TSC2046 controller
> > date: 8 months ago
> > config: mips-randconfig-r002-20220116 (https://download.01.org/0day-ci/archive/20220117/202201171718.7ZCI4YeQ-lkp@xxxxxxxxx/config)
> > compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54)
> > reproduce (this is a W=1 build):
> > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > # install mips cross compiling tool for clang build
> > # apt-get install binutils-mips-linux-gnu
> > # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9374e8f5a38defe90bc65b2decf317c1c62d91dd
> > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> > git fetch --no-tags linus master
> > git checkout 9374e8f5a38defe90bc65b2decf317c1c62d91dd
> > # save the config file to linux build tree
> > mkdir build_dir
> > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/iio/adc/ drivers/usb/gadget/
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> >
> > All warnings (new ones prefixed by >>):
> >
> > >> drivers/iio/adc/ti-tsc2046.c:242:62: warning: taking address of packed member 'data' of class or structure 'tsc2046_adc_atom' may result in an unaligned pointer value [-Waddress-of-packed-member]
> > return FIELD_GET(TI_TSC2046_DATA_12BIT, get_unaligned_be16(&buf->data));
> > ^~~~~~~~~
>
> I'm open to suggestions on what (if anything) to do about this one...

Hi Jonathan,

-Waddress-of-packed-member is disabled in the main Makefile and this
particular randconfig has a bunch of these warnings. It comes from the
fact that arch/mips/loongson64/Platform adds -mno-branch-likely
unconditionally but clang does not support it so it issues a warning:

clang-14: warning: argument unused during compilation: '-mno-branch-likely' [-Wunused-command-line-argument]

The presence of this warning causes cascading cc-option failures because
cc-option adds -Werror, which means that the requested flag never gets
added to KBUILD_CFLAGS, so we see instances of warnings that should be
disabled.

This has come up in the past because clang has four different ways it
can react to a flag it does not recognize. One is an error, the other
three are warnings. We handle two in scripts/Makefile.clang to try and
make these failures more obvious in the build but we do not handle this
warning because there are instances of it in arch/arm [1]. I'll push to
get that change into mainline so we can avoid this once and for all.

More background:

* 589834b3a009 ("kbuild: Add -Werror=unknown-warning-option to CLANG_FLAGS")
* 0664684e1ebd ("kbuild: Add -Werror=ignored-optimization-argument to CLANG_FLAGS")

For now, I have sent [2]. It might be nice to clean the kernel up of
these warnings over time (and I recall seeing a patch fly by recently
[3]) but I don't think there is much for you to do now.

[1]: https://lore.kernel.org/r/20210928154143.2106903-14-arnd@xxxxxxxxxx/
[2]: https://lore.kernel.org/r/20220120214001.1879469-2-nathan@xxxxxxxxxx/
[3]: https://lore.kernel.org/r/20220110224656.266536-1-sakari.ailus@xxxxxxxxxxxxxxx/

Cheers,
Nathan