oe-kbuild-all.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [openeuler:openEuler-1.0-LTS 20821/22045] fs/io_uring.c:3882:14: sparse: sparse: incorrect type in assignment (different address spaces)
@ 2024-04-04 19:43 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-04-04 19:43 UTC (permalink / raw
  To: kernel, Yongqiang Liu; +Cc: oe-kbuild-all

tree:   https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head:   e89315eb08769716cbf7e08f49672222cf0eca47
commit: b2b243d6115480833f9d888b06d70e372ae6fdb2 [20821/22045] io_uring: get rid of intermediate IORING_OP_CLOSE stage
config: arm64-randconfig-r112-20240401 (https://download.01.org/0day-ci/archive/20240405/202404050320.ikGdTX4Z-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240405/202404050320.ikGdTX4Z-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404050320.ikGdTX4Z-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   fs/io_uring.c:2822:24: sparse: sparse: incorrect type in return expression (different address spaces) @@     expected void [noderef] <asn:1> * @@     got struct io_buffer *[assigned] kbuf @@
   fs/io_uring.c:2822:24: sparse:     expected void [noderef] <asn:1> *
   fs/io_uring.c:2822:24: sparse:     got struct io_buffer *[assigned] kbuf
   fs/io_uring.c:2988:40: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected void [noderef] <asn:1> *[assigned] iov_base @@     got void * @@
   fs/io_uring.c:2988:40: sparse:     expected void [noderef] <asn:1> *[assigned] iov_base
   fs/io_uring.c:2988:40: sparse:     got void *
   fs/io_uring.c:3364:37: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected long long [noderef] [usertype] <asn:1> *off_in @@     got long long [usertype] *[assigned] poff_in @@
   fs/io_uring.c:3364:37: sparse:     expected long long [noderef] [usertype] <asn:1> *off_in
   fs/io_uring.c:3364:37: sparse:     got long long [usertype] *[assigned] poff_in
   fs/io_uring.c:3364:51: sparse: sparse: incorrect type in argument 4 (different address spaces) @@     expected long long [noderef] [usertype] <asn:1> *off_out @@     got long long [usertype] *[assigned] poff_out @@
   fs/io_uring.c:3364:51: sparse:     expected long long [noderef] [usertype] <asn:1> *off_out
   fs/io_uring.c:3364:51: sparse:     got long long [usertype] *[assigned] poff_out
>> fs/io_uring.c:3882:14: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct file *[assigned] file @@     got struct file [noderef] <asn:4> * @@
   fs/io_uring.c:3882:14: sparse:     expected struct file *[assigned] file
   fs/io_uring.c:3882:14: sparse:     got struct file [noderef] <asn:4> *
   fs/io_uring.c:4529:72: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected int mask @@     got restricted __poll_t [usertype] mask @@
   fs/io_uring.c:4529:72: sparse:     expected int mask
   fs/io_uring.c:4529:72: sparse:     got restricted __poll_t [usertype] mask
   fs/io_uring.c:4533:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] result @@     got restricted __poll_t [usertype] mask @@
   fs/io_uring.c:4533:21: sparse:     expected unsigned int [usertype] result
   fs/io_uring.c:4533:21: sparse:     got restricted __poll_t [usertype] mask
   fs/io_uring.c:4571:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] result @@     got restricted __poll_t @@
   fs/io_uring.c:4571:29: sparse:     expected unsigned int [usertype] result
   fs/io_uring.c:4571:29: sparse:     got restricted __poll_t
   fs/io_uring.c:4636:34: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected restricted __poll_t [usertype] mask @@     got unsigned int [usertype] result @@
   fs/io_uring.c:4636:34: sparse:     expected restricted __poll_t [usertype] mask
   fs/io_uring.c:4636:34: sparse:     got unsigned int [usertype] result
   fs/io_uring.c:4788:41: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected int mask @@     got restricted __poll_t [usertype] @@
   fs/io_uring.c:4788:41: sparse:     expected int mask
   fs/io_uring.c:4788:41: sparse:     got restricted __poll_t [usertype]
   fs/io_uring.c:4877:22: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:4877:22: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:4877:22: sparse:    right side has type int
   fs/io_uring.c:4879:22: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:4879:22: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:4879:22: sparse:    right side has type int
   fs/io_uring.c:4880:14: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:4880:14: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:4880:14: sparse:    right side has type int
   fs/io_uring.c:4894:67: sparse: sparse: incorrect type in argument 4 (different base types) @@     expected int mask @@     got restricted __poll_t [assigned] [usertype] mask @@
   fs/io_uring.c:4894:67: sparse:     expected int mask
   fs/io_uring.c:4894:67: sparse:     got restricted __poll_t [assigned] [usertype] mask
   fs/io_uring.c:4895:52: sparse: sparse: incorrect type in argument 5 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:4895:52: sparse:     expected int events
   fs/io_uring.c:4895:52: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:5051:34: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:5050:57: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:5050:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __poll_t [usertype] events @@     got unsigned int @@
   fs/io_uring.c:5050:22: sparse:     expected restricted __poll_t [usertype] events
   fs/io_uring.c:5050:22: sparse:     got unsigned int
   In file included from include/linux/hugetlb.h:45,
                    from fs/io_uring.c:73:
   include/linux/mempolicy.h:329:13: warning: '__do_mbind' defined but not used [-Wunused-function]
     329 | static long __do_mbind(unsigned long start, unsigned long len,
         |             ^~~~~~~~~~
   fs/io_uring.c: In function 'io_probe.isra':
   fs/io_uring.c:8725:23: warning: array subscript i is outside array bounds of 'struct io_uring_probe_op[0]' [-Warray-bounds=]
    8725 |                 p->ops[i].op = i;
         |                 ~~~~~~^~~
   In file included from fs/io_uring.c:86:
   include/uapi/linux/io_uring.h:291:34: note: while referencing 'ops'
     291 |         struct io_uring_probe_op ops[0];
         |                                  ^~~
   fs/io_uring.c:8727:31: warning: array subscript i is outside array bounds of 'struct io_uring_probe_op[0]' [-Warray-bounds=]
    8727 |                         p->ops[i].flags = IO_URING_OP_SUPPORTED;
         |                         ~~~~~~^~~
   include/uapi/linux/io_uring.h:291:34: note: while referencing 'ops'
     291 |         struct io_uring_probe_op ops[0];
         |                                  ^~~
   In file included from include/linux/if_ether.h:23,
                    from include/uapi/linux/ethtool.h:19,
                    from include/linux/ethtool.h:19,
                    from include/linux/netdevice.h:42,
                    from include/net/sock.h:52,
                    from fs/io_uring.c:65:
   In function '__skb_queue_before',
       inlined from '__skb_queue_tail' at include/linux/skbuff.h:1908:2,
       inlined from 'io_ring_file_put.isra' at fs/io_uring.c:6991:3:
   include/linux/skbuff.h:1874:9: warning: array subscript 'struct sk_buff[0]' is partly outside array bounds of 'struct sk_buff_head[1]' [-Warray-bounds=]
    1874 |         __skb_insert(newsk, next->prev, next, list);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/io_uring.c: In function 'io_ring_file_put.isra':
   fs/io_uring.c:6949:29: note: object 'list' of size 80
    6949 |         struct sk_buff_head list, *head = &sock->sk_receive_queue;
         |                             ^~~~
   In function '__skb_queue_before',
       inlined from '__skb_queue_tail' at include/linux/skbuff.h:1908:2,
       inlined from 'io_ring_file_put.isra' at fs/io_uring.c:6981:5:
   include/linux/skbuff.h:1874:9: warning: array subscript 'struct sk_buff[0]' is partly outside array bounds of 'struct sk_buff_head[1]' [-Warray-bounds=]
    1874 |         __skb_insert(newsk, next->prev, next, list);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/io_uring.c: In function 'io_ring_file_put.isra':
   fs/io_uring.c:6949:29: note: object 'list' of size 80
    6949 |         struct sk_buff_head list, *head = &sock->sk_receive_queue;
         |                             ^~~~
   In file included from include/linux/poll.h:12,
                    from include/linux/ring_buffer.h:7,
                    from include/linux/trace_events.h:6,
                    from include/trace/syscall.h:7,
                    from include/linux/syscalls.h:86,
                    from fs/io_uring.c:45:
   In function '_copy_from_user',
       inlined from 'copy_from_user' at include/linux/uaccess.h:144:7,
       inlined from 'io_uring_setup' at fs/io_uring.c:8679:6:
   include/linux/uaccess.h:112:17: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized]
     112 |                 kasan_check_write(to, n);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/compiler.h:265,
                    from include/linux/kernel.h:10,
                    from fs/io_uring.c:42:
   include/linux/kasan-checks.h: In function 'io_uring_setup':
   include/linux/kasan-checks.h:7:6: note: by argument 1 of type 'const volatile void *' to 'kasan_check_write' declared here
       7 | void kasan_check_write(const volatile void *p, unsigned int size);

vim +3882 fs/io_uring.c

  3864	
  3865	static int io_close(struct io_kiocb *req, bool force_nonblock,
  3866			    struct io_comp_state *cs)
  3867	{
  3868		struct files_struct *files = current->files;
  3869		struct io_close *close = &req->close;
  3870		struct fdtable *fdt;
  3871		struct file *file;
  3872		int ret;
  3873	
  3874		file = NULL;
  3875		ret = -EBADF;
  3876		spin_lock(&files->file_lock);
  3877		fdt = files_fdtable(files);
  3878		if (close->fd >= fdt->max_fds) {
  3879			spin_unlock(&files->file_lock);
  3880			goto err;
  3881		}
> 3882		file = fdt->fd[close->fd];
  3883		if (!file) {
  3884			spin_unlock(&files->file_lock);
  3885			goto err;
  3886		}
  3887	
  3888		if (file->f_op == &io_uring_fops) {
  3889			spin_unlock(&files->file_lock);
  3890			file = NULL;
  3891			goto err;
  3892		}
  3893	
  3894		/* if the file has a flush method, be safe and punt to async */
  3895		if ((file->f_op->flush && force_nonblock) ||
  3896		    req->close.fd == req->ctx->ring_fd) {
  3897			spin_unlock(&files->file_lock);
  3898			return -EAGAIN;
  3899		}
  3900	
  3901		ret = __close_fd_get_file(close->fd, &file);
  3902		spin_unlock(&files->file_lock);
  3903		if (ret < 0) {
  3904			if (ret == -ENOENT)
  3905				ret = -EBADF;
  3906			goto err;
  3907		}
  3908	
  3909		/* No ->flush() or already async, safely close from here */
  3910		ret = filp_close(file, current->files);
  3911	err:
  3912		if (ret < 0)
  3913			req_set_fail_links(req);
  3914		if (file)
  3915			fput(file);
  3916		__io_req_complete(req, ret, 0, cs);
  3917		return 0;
  3918	}
  3919	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-04-04 19:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-04 19:43 [openeuler:openEuler-1.0-LTS 20821/22045] fs/io_uring.c:3882:14: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).