Patch "virtio_ring: fix KMSAN error for premapped mode" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    virtio_ring: fix KMSAN error for premapped mode

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     virtio_ring-fix-kmsan-error-for-premapped-mode.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 74e9e77d65272da18bbcbb3ac0e0cbeeee5021f4
Author: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>
Date:   Thu Jun 6 19:13:45 2024 +0800

    virtio_ring: fix KMSAN error for premapped mode
    
    [ Upstream commit 840b2d39a2dc1b96deb3f5c7fef76c9b24f08f51 ]
    
    Add kmsan for virtqueue_dma_map_single_attrs to fix:
    
    BUG: KMSAN: uninit-value in receive_buf+0x45ca/0x6990
     receive_buf+0x45ca/0x6990
     virtnet_poll+0x17e0/0x3130
     net_rx_action+0x832/0x26e0
     handle_softirqs+0x330/0x10f0
     [...]
    
    Uninit was created at:
     __alloc_pages_noprof+0x62a/0xe60
     alloc_pages_noprof+0x392/0x830
     skb_page_frag_refill+0x21a/0x5c0
     virtnet_rq_alloc+0x50/0x1500
     try_fill_recv+0x372/0x54c0
     virtnet_open+0x210/0xbe0
     __dev_open+0x56e/0x920
     __dev_change_flags+0x39c/0x2000
     dev_change_flags+0xaa/0x200
     do_setlink+0x197a/0x7420
     rtnl_setlink+0x77c/0x860
     [...]
    
    Signed-off-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>
    Tested-by: Alexander Potapenko <glider@xxxxxxxxxx>
    Message-Id: <20240606111345.93600-1-xuanzhuo@xxxxxxxxxxxxxxxxx>
    Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
    Tested-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx>  # s390x
    Acked-by: Jason Wang <jasowang@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 6f7e5010a673..80669e05bf0e 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -3126,8 +3126,10 @@ dma_addr_t virtqueue_dma_map_single_attrs(struct virtqueue *_vq, void *ptr,
 {
 	struct vring_virtqueue *vq = to_vvq(_vq);
 
-	if (!vq->use_dma_api)
+	if (!vq->use_dma_api) {
+		kmsan_handle_dma(virt_to_page(ptr), offset_in_page(ptr), size, dir);
 		return (dma_addr_t)virt_to_phys(ptr);
+	}
 
 	return dma_map_single_attrs(vring_dma_dev(vq), ptr, size, dir, attrs);
 }




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux