Re: [PATCH v3] 9p/trans_virtio: reject mount tags that cannot fit a sysfs page
From: kernel test robot
Date: Mon Jun 29 2026 - 07:58:08 EST
Hi Michael,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 4edcdefd4083ae04b1a5656f4be6cd83ae919ef4]
url: https://github.com/intel-lab-lkp/linux/commits/Michael-Bommarito/9p-trans_virtio-reject-mount-tags-that-cannot-fit-a-sysfs-page/20260629-093057
base: 4edcdefd4083ae04b1a5656f4be6cd83ae919ef4
patch link: https://lore.kernel.org/r/20260626111906.801890-1-michael.bommarito%40gmail.com
patch subject: [PATCH v3] 9p/trans_virtio: reject mount tags that cannot fit a sysfs page
config: arm64-randconfig-r063-20260629 (https://download.01.org/0day-ci/archive/20260629/202606291938.9FOZRc5c-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260629/202606291938.9FOZRc5c-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606291938.9FOZRc5c-lkp@xxxxxxxxx/
All warnings (new ones prefixed by >>):
>> net/9p/trans_virtio.c:636:14: warning: result of comparison of constant 65536 with expression of type '__u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare]
636 | if (tag_len >= PAGE_SIZE) {
| ~~~~~~~ ^ ~~~~~~~~~
1 warning generated.
vim +636 net/9p/trans_virtio.c
587
588 /**
589 * p9_virtio_probe - probe for existence of 9P virtio channels
590 * @vdev: virtio device to probe
591 *
592 * This probes for existing virtio channels.
593 *
594 */
595
596 static int p9_virtio_probe(struct virtio_device *vdev)
597 {
598 __u16 tag_len;
599 char *tag;
600 int err;
601 struct virtio_chan *chan;
602
603 if (!vdev->config->get) {
604 dev_err(&vdev->dev, "%s failure: config access disabled\n",
605 __func__);
606 return -EINVAL;
607 }
608
609 chan = kmalloc_obj(struct virtio_chan);
610 if (!chan) {
611 pr_err("Failed to allocate virtio 9P channel\n");
612 err = -ENOMEM;
613 goto fail;
614 }
615
616 chan->vdev = vdev;
617
618 /* We expect one virtqueue, for requests. */
619 chan->vq = virtio_find_single_vq(vdev, req_done, "requests");
620 if (IS_ERR(chan->vq)) {
621 err = PTR_ERR(chan->vq);
622 goto out_free_chan;
623 }
624 chan->vq->vdev->priv = chan;
625 spin_lock_init(&chan->lock);
626
627 sg_init_table(chan->sg, VIRTQUEUE_NUM);
628
629 chan->inuse = false;
630 if (virtio_has_feature(vdev, VIRTIO_9P_MOUNT_TAG)) {
631 virtio_cread(vdev, struct virtio_9p_config, tag_len, &tag_len);
632 } else {
633 err = -EINVAL;
634 goto out_free_vq;
635 }
> 636 if (tag_len >= PAGE_SIZE) {
637 dev_err(&vdev->dev, "mount tag too long (%u bytes)\n", tag_len);
638 err = -EINVAL;
639 goto out_free_vq;
640 }
641 tag = kzalloc(tag_len + 1, GFP_KERNEL);
642 if (!tag) {
643 err = -ENOMEM;
644 goto out_free_vq;
645 }
646
647 virtio_cread_bytes(vdev, offsetof(struct virtio_9p_config, tag),
648 tag, tag_len);
649 chan->tag = tag;
650 err = sysfs_create_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
651 if (err) {
652 goto out_free_tag;
653 }
654 chan->vc_wq = kmalloc_obj(wait_queue_head_t);
655 if (!chan->vc_wq) {
656 err = -ENOMEM;
657 goto out_remove_file;
658 }
659 init_waitqueue_head(chan->vc_wq);
660 chan->ring_bufs_avail = 1;
661 /* Ceiling limit to avoid denial of service attacks */
662 chan->p9_max_pages = nr_free_buffer_pages()/4;
663
664 virtio_device_ready(vdev);
665
666 mutex_lock(&virtio_9p_lock);
667 list_add_tail(&chan->chan_list, &virtio_chan_list);
668 mutex_unlock(&virtio_9p_lock);
669
670 /* Let udev rules use the new mount_tag attribute. */
671 kobject_uevent(&(vdev->dev.kobj), KOBJ_CHANGE);
672
673 return 0;
674
675 out_remove_file:
676 sysfs_remove_file(&vdev->dev.kobj, &dev_attr_mount_tag.attr);
677 out_free_tag:
678 kfree(tag);
679 out_free_vq:
680 vdev->config->del_vqs(vdev);
681 out_free_chan:
682 kfree(chan);
683 fail:
684 return err;
685 }
686
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki