Re: [PATCH] virtio_net: Use BUG_ON instead of if condition followed by BUG
From: Xianting Tian <hidden>
Date: 2021-05-18 09:20:45
Also in:
lkml
thanks for your comments,
It is a good idea, I think we can follow the similar logic in function
'receive_buf':
if (virtio_net_hdr_to_skb(skb, &hdr->hdr,
virtio_is_little_endian(vi->vdev))) {
net_warn_ratelimited("%s: bad gso: type: %u, size:%u\n",
dev->name, hdr->hdr.gso_type,
hdr->hdr.gso_size);
goto frame_err;
}
I will summit a new patch later.
在 2021/5/17 下午10:35, Andrew Lunn 写道:On Mon, May 17, 2021 at 09:31:19PM +0800, Xianting Tian wrote:quoted
BUG_ON() uses unlikely in if(), which can be optimized at compile time. Signed-off-by: Xianting Tian <redacted> --- drivers/net/virtio_net.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index c921ebf3ae82..212d52204884 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c@@ -1646,10 +1646,9 @@ static int xmit_skb(struct send_queue *sq, structsk_buff *skb) else hdr = skb_vnet_hdr(skb); - if (virtio_net_hdr_from_skb(skb, &hdr->hdr,How fatal is it not being able to get the header from the skb? There has been push back on the use of BUG() or its variants, since it kills the machine dead. Would it be possible to turn this into a WARN_ON and return -EPROTO or something? Andrew