Thread (8 messages) flat view 8 messages, 3 authors, 2021-10-09

Re: virtio-net: kernel panic in virtio_net.c

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2021-10-08 10:02:30
Also in: regressions, stable
Subsystem: networking drivers, the rest, virtio net driver · Maintainers: Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds, "Michael S. Tsirkin", Jason Wang

Possibly related (same subject, not in this thread)

On Fri, Oct 08, 2021 at 10:06:57AM +0200, Greg KH wrote:
On Fri, Oct 08, 2021 at 12:17:26AM +0800, Xuan Zhuo wrote:
quoted
On Thu, 7 Oct 2021 17:25:02 +0200, Greg KH [off-list ref] wrote:
quoted
On Thu, Oct 07, 2021 at 11:06:12PM +0800, Xuan Zhuo wrote:
quoted
On Thu, 07 Oct 2021 14:04:22 +0200, Corentin Noël [off-list ref] wrote:
quoted
I've been experiencing crashes with 5.14-rc1 and above that do not
occur with 5.13,
I should have fixed this problem before. I don't know why, I just looked at the
latest net code, and this commit seems to be lost.

     1a8024239dacf53fcf39c0f07fbf2712af22864f virtio-net: fix for skb_over_panic inside big mode

Can you test this patch again?
That commit showed up in 5.13-rc5, so 5.14-rc1 and 5.13 should have had
it in it, right?
Yes, it may be lost due to conflicts during a certain merge.
Really?  I tried to apply that again to 5.14 and it did not work.  So I
do not understand what to do here, can you try to explain it better?

thanks,

greg k-h
Hmm, something like the following perhaps then?
Corentin would you like to try this?
Warning: untested.

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 096c2ac6b7a6..18dd9f6d107d 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -406,12 +406,13 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi,
 	 * add_recvbuf_mergeable() + get_mergeable_buf_len()
 	 */
 	truesize = headroom ? PAGE_SIZE : truesize;
-	tailroom = truesize - len - headroom;
+	tailroom = truesize - headroom;
 	buf = p - headroom;
 
 	len -= hdr_len;
 	offset += hdr_padded_len;
 	p += hdr_padded_len;
+	tailroom -= hdr_padded_len + len;
 
 	shinfo_size = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help