CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vivek Goyal <vgoyal(a)redhat.com>
CC: Ioannis Angelakopoulos <iangelak(a)redhat.com>
tree:
https://github.com/rhvgoyal/linux notification-queue
head: 8a74e3a5793e164bac09552c801823eabdb841b1
commit: 78212035be092b3d3f56e3601b2350e86493dff8 [5/8] virtiofs: Add a virtqueue for
notifications
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: i386-randconfig-s001-20210930 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
#
https://github.com/rhvgoyal/linux/commit/78212035be092b3d3f56e3601b2350e8...
git remote add rhvgoyal
https://github.com/rhvgoyal/linux
git fetch --no-tags rhvgoyal notification-queue
git checkout 78212035be092b3d3f56e3601b2350e86493dff8
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir
ARCH=i386 SHELL=/bin/bash fs/fuse/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> fs/fuse/virtio_fs.c:827:17: sparse: sparse: no generic selection
for 'unsigned int virtio_cread_v'
> fs/fuse/virtio_fs.c:827:17: sparse: sparse: incompatible types in comparison
expression (different base types):
> fs/fuse/virtio_fs.c:827:17: sparse: bad type *
> fs/fuse/virtio_fs.c:827:17: sparse: unsigned int *
> fs/fuse/virtio_fs.c:827:17: sparse: sparse: no generic selection for 'unsigned
int [addressable] virtio_cread_v'
vim +827 fs/fuse/virtio_fs.c
b43b7e81eb2b18 Vivek Goyal 2020-08-19 809
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 810 /* Initialize virtqueues */
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 811 static int virtio_fs_setup_vqs(struct
virtio_device *vdev,
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 812 struct virtio_fs *fs)
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 813 {
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 814 struct virtqueue **vqs;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 815 vq_callback_t **callbacks;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 816 const char **names;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 817 unsigned int i;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 818 int ret = 0;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 819
2c0349ec1a8ee6 Michael S. Tsirkin 2020-08-05 820 virtio_cread_le(vdev, struct
virtio_fs_config, num_request_queues,
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 821 &fs->num_request_queues);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 822 if (fs->num_request_queues == 0)
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 823 return -EINVAL;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 824
78212035be092b Vivek Goyal 2021-09-30 825 if (virtio_has_feature(vdev,
VIRTIO_FS_F_NOTIFICATION)) {
78212035be092b Vivek Goyal 2021-09-30 826 fs->notify_enabled = true;
78212035be092b Vivek Goyal 2021-09-30 @827 virtio_cread(vdev, struct
virtio_fs_config, notify_buf_size,
78212035be092b Vivek Goyal 2021-09-30 828 &fs->notify_buf_size);
78212035be092b Vivek Goyal 2021-09-30 829 if (fs->notify_buf_size <=
sizeof(struct fuse_out_header)) {
78212035be092b Vivek Goyal 2021-09-30 830 pr_err("virtio-fs: Invalid
value %d of notification buffer size\n",
78212035be092b Vivek Goyal 2021-09-30 831 fs->notify_buf_size);
78212035be092b Vivek Goyal 2021-09-30 832 return -EINVAL;
78212035be092b Vivek Goyal 2021-09-30 833 }
78212035be092b Vivek Goyal 2021-09-30 834 pr_info("virtio-fs: device
supports notification. Notification_buf_size=%u\n",
78212035be092b Vivek Goyal 2021-09-30 835 fs->notify_buf_size);
78212035be092b Vivek Goyal 2021-09-30 836 }
78212035be092b Vivek Goyal 2021-09-30 837
78212035be092b Vivek Goyal 2021-09-30 838 if (fs->notify_enabled) {
78212035be092b Vivek Goyal 2021-09-30 839 /* One additional queue for hiprio
and one for notifications */
78212035be092b Vivek Goyal 2021-09-30 840 fs->nvqs = 2 +
fs->num_request_queues;
78212035be092b Vivek Goyal 2021-09-30 841 fs->first_reqq_idx = VQ_NOTIFY_IDX
+ 1;
78212035be092b Vivek Goyal 2021-09-30 842 } else {
db6f0eafcba856 Vivek Goyal 2021-09-30 843 fs->nvqs = 1 +
fs->num_request_queues;
db6f0eafcba856 Vivek Goyal 2021-09-30 844 fs->first_reqq_idx = 1;
78212035be092b Vivek Goyal 2021-09-30 845 }
78212035be092b Vivek Goyal 2021-09-30 846
cde214bdd169d9 Vivek Goyal 2021-09-30 847 fs->vqs = kcalloc(fs->nvqs,
sizeof(fs->vqs[VQ_HIPRIO_IDX]), GFP_KERNEL);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 848 if (!fs->vqs)
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 849 return -ENOMEM;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 850
cde214bdd169d9 Vivek Goyal 2021-09-30 851 vqs = kmalloc_array(fs->nvqs,
sizeof(vqs[VQ_HIPRIO_IDX]), GFP_KERNEL);
cde214bdd169d9 Vivek Goyal 2021-09-30 852 callbacks = kmalloc_array(fs->nvqs,
sizeof(callbacks[VQ_HIPRIO_IDX]),
cde214bdd169d9 Vivek Goyal 2021-09-30 853 GFP_KERNEL);
cde214bdd169d9 Vivek Goyal 2021-09-30 854 names = kmalloc_array(fs->nvqs,
sizeof(names[VQ_HIPRIO_IDX]),
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 855 GFP_KERNEL);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 856 if (!vqs || !callbacks || !names) {
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 857 ret = -ENOMEM;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 858 goto out;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 859 }
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 860
b43b7e81eb2b18 Vivek Goyal 2020-08-19 861 /* Initialize the hiprio/forget
request virtqueue */
cde214bdd169d9 Vivek Goyal 2021-09-30 862 callbacks[VQ_HIPRIO_IDX] =
virtio_fs_vq_done;
78212035be092b Vivek Goyal 2021-09-30 863 ret = virtio_fs_init_vq(fs,
&fs->vqs[VQ_HIPRIO_IDX], "hiprio",
78212035be092b Vivek Goyal 2021-09-30 864 VQ_TYPE_HIPRIO);
78212035be092b Vivek Goyal 2021-09-30 865 if (ret < 0)
78212035be092b Vivek Goyal 2021-09-30 866 goto out;
cde214bdd169d9 Vivek Goyal 2021-09-30 867 names[VQ_HIPRIO_IDX] =
fs->vqs[VQ_HIPRIO_IDX].name;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 868
78212035be092b Vivek Goyal 2021-09-30 869 /* Initialize notification queue */
78212035be092b Vivek Goyal 2021-09-30 870 if (fs->notify_enabled) {
78212035be092b Vivek Goyal 2021-09-30 871 callbacks[VQ_NOTIFY_IDX] =
virtio_fs_vq_done;
78212035be092b Vivek Goyal 2021-09-30 872 ret = virtio_fs_init_vq(fs,
&fs->vqs[VQ_NOTIFY_IDX],
78212035be092b Vivek Goyal 2021-09-30 873 "notification",
VQ_TYPE_NOTIFY);
78212035be092b Vivek Goyal 2021-09-30 874 if (ret < 0)
78212035be092b Vivek Goyal 2021-09-30 875 goto out;
78212035be092b Vivek Goyal 2021-09-30 876 names[VQ_NOTIFY_IDX] =
fs->vqs[VQ_NOTIFY_IDX].name;
78212035be092b Vivek Goyal 2021-09-30 877 }
78212035be092b Vivek Goyal 2021-09-30 878
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 879 /* Initialize the requests virtqueues
*/
db6f0eafcba856 Vivek Goyal 2021-09-30 880 for (i = fs->first_reqq_idx; i <
fs->nvqs; i++) {
b43b7e81eb2b18 Vivek Goyal 2020-08-19 881 char vq_name[VQ_NAME_LEN];
b43b7e81eb2b18 Vivek Goyal 2020-08-19 882
db6f0eafcba856 Vivek Goyal 2021-09-30 883 snprintf(vq_name, VQ_NAME_LEN,
"requests.%u",
db6f0eafcba856 Vivek Goyal 2021-09-30 884 i - fs->first_reqq_idx);
78212035be092b Vivek Goyal 2021-09-30 885 ret = virtio_fs_init_vq(fs,
&fs->vqs[i], vq_name,
78212035be092b Vivek Goyal 2021-09-30 886 VQ_TYPE_REQUEST);
78212035be092b Vivek Goyal 2021-09-30 887 if (ret < 0)
78212035be092b Vivek Goyal 2021-09-30 888 goto out;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 889 callbacks[i] = virtio_fs_vq_done;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 890 names[i] = fs->vqs[i].name;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 891 }
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 892
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 893 ret = virtio_find_vqs(vdev,
fs->nvqs, vqs, callbacks, names, NULL);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 894 if (ret < 0)
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 895 goto out;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 896
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 897 for (i = 0; i < fs->nvqs; i++)
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 898 fs->vqs[i].vq = vqs[i];
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 899 out:
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 900 kfree(names);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 901 kfree(callbacks);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 902 kfree(vqs);
78212035be092b Vivek Goyal 2021-09-30 903 if (ret) {
78212035be092b Vivek Goyal 2021-09-30 904 virtio_fs_free_notify_nodes(fs);
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 905 kfree(fs->vqs);
78212035be092b Vivek Goyal 2021-09-30 906 }
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 907 return ret;
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 908 }
a62a8ef9d97da2 Stefan Hajnoczi 2018-06-12 909
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org