Re: drivers/ide/ide-ioctls.c:15:24: sparse: sparse: incorrect type in initializer (different address spaces)

From: Al Viro
Date: Fri May 22 2020 - 11:40:08 EST


On Fri, May 22, 2020 at 03:40:50PM +0200, Arnd Bergmann wrote:
> On Fri, May 22, 2020 at 2:24 PM kbuild test robot <lkp@xxxxxxxxx> wrote:
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 051143e1602d90ea71887d92363edd539d411de5
> > commit: 1df23c6fe5b0654ece219985a0c32e40b100bd9a compat_ioctl: move HDIO ioctl handling into drivers/ide
> > date: 5 months ago
> > config: xtensa-randconfig-s002-20200522 (attached as .config)
> > compiler: xtensa-linux-gcc (GCC) 9.3.0
> > reproduce:
> > # apt-get install sparse
> > # sparse version: v0.6.1-193-gb8fad4bc-dirty
> > git checkout 1df23c6fe5b0654ece219985a0c32e40b100bd9a
> > # save the attached .config to linux build tree
> > make W=1 C=1 ARCH=xtensa CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kbuild test robot <lkp@xxxxxxxxx>
> >
> >
> > sparse warnings: (new ones prefixed by >>)
> >
> > ./arch/xtensa/include/generated/uapi/asm/unistd_32.h:391:41: sparse: sparse: no newline at end of file
> > >> drivers/ide/ide-ioctls.c:15:24: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected signed int *__pu_addr @@ got signed int [noderef] [usertypsigned int *__pu_addr @@
> > >> drivers/ide/ide-ioctls.c:15:24: sparse: expected signed int *__pu_addr
> > >> drivers/ide/ide-ioctls.c:15:24: sparse: got signed int [noderef] [usertype] <asn:1> *
> > >> drivers/ide/ide-ioctls.c:15:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] <asn:1> *to @@ got f] <asn:1> *to @@
> > drivers/ide/ide-ioctls.c:15:24: sparse: expected void [noderef] <asn:1> *to
> > >> drivers/ide/ide-ioctls.c:15:24: sparse: got signed int *__pu_addr
>
>
> I think this is a bug in the xtensa asm/uaccess.h, but I don't know why it
> only showed up now.

xtensa has no __user annotations in there. At all. So until somebody sits
down and does those, there will be such noise, reported every time somebody
changes a line with get_user() or put_user() anywhere in the tree.

As far as I'm concerned, __user-related reports on xtensa are to be ignored
for now.