[next] fs: cifsglob.h:955:20: error: passing argument 2 of 'test_bit' from incompatible pointer type

From: Naresh Kamboju
Date: Fri Jun 04 2021 - 05:20:49 EST


The following builds failed on Linux next-20210604 due to warnings / errors.

- arm (s3c2410_defconfig) with gcc- 8 / 9 / 10
- parisc (defconfig) with gcc-8 / 9 / 10
- powerpc (ppc6xx_defconfig) with gcc- 8 / 9 /10

In file included from fs/cifs/transport.c:38:
fs/cifs/transport.c: In function 'cifs_pick_channel':
fs/cifs/cifsglob.h:955:20: error: passing argument 2 of 'test_bit'
from incompatible pointer type [-Werror=incompatible-pointer-types]
955 | test_bit((index), &(ses)->chans_need_reconnect)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
size_t * {aka unsigned int *}
fs/cifs/transport.c:1065:7: note: in expansion of macro
'CIFS_CHAN_NEEDS_RECONNECT'
1065 | if (CIFS_CHAN_NEEDS_RECONNECT(ses, index))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/powerpc/include/asm/bitops.h:193,
from include/linux/bitops.h:32,
from include/linux/kernel.h:12,
from include/linux/list.h:9,
from include/linux/wait.h:7,
from include/linux/wait_bit.h:8,
from include/linux/fs.h:6,
from fs/cifs/transport.c:23:
include/asm-generic/bitops/non-atomic.h:104:66: note: expected 'const
volatile long unsigned int *' but argument is of type 'size_t *' {aka
'unsigned int *'}
104 | static inline int test_bit(int nr, const volatile unsigned long *addr)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:272: fs/cifs/transport.o] Error 1
fs/cifs/sess.c: In function 'cifs_chan_set_need_reconnect':
fs/cifs/sess.c:98:22: error: passing argument 2 of 'set_bit' from
incompatible pointer type [-Werror=incompatible-pointer-types]
98 | set_bit(chan_index, &ses->chans_need_reconnect);
^~~~~~~~~~~~~~~~~~~~~~~~~~
|
size_t * {aka unsigned int *}


Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>

Full build log:
https://gitlab.com/Linaro/lkft/mirrors/next/linux-next/-/jobs/1317929765#L247

Steps to reproduce:
-----------------------------

# TuxMake is a command line tool and Python library that provides
# portable and repeatable Linux kernel builds across a variety of
# architectures, toolchains, kernel configurations, and make targets.
#
# TuxMake supports the concept of runtimes.
# See https://docs.tuxmake.org/runtimes/, for that to work it requires
# that you install podman or docker on your system.
#
# To install tuxmake on your system globally:
# sudo pip3 install -U tuxmake
#
# See https://docs.tuxmake.org/ for complete documentation.

tuxmake --runtime podman --target-arch arm --toolchain gcc-8 --kconfig
s3c2410_defconfig


--
Linaro LKFT
https://lkft.linaro.org