Message ID | 20231007005104.3994678-1-make_ruc2021@163.com |
---|---|
State | Changes Requested |
Headers | show |
Series | um: vector: fix return value check in vector_mmsg_rx | expand |
On 07/10/2023 01:51, Ma Ke wrote: > In vector_mmsg_rx, to avoid an unexpected result returned by > pskb_trim, we should check the return value of pskb_trim(). > > Signed-off-by: Ma Ke <make_ruc2021@163.com> > --- > arch/um/drivers/vector_kern.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/um/drivers/vector_kern.c b/arch/um/drivers/vector_kern.c > index 131b7cb29576..c280ce5ea6ce 100644 > --- a/arch/um/drivers/vector_kern.c > +++ b/arch/um/drivers/vector_kern.c > @@ -1013,8 +1013,8 @@ static int vector_mmsg_rx(struct vector_private *vp, int budget) > skb->ip_summed = CHECKSUM_UNNECESSARY; > } > } > - pskb_trim(skb, > - mmsg_vector->msg_len - vp->rx_header_size); > + if (pskb_trim(skb, mmsg_vector->msg_len - vp->rx_header_size)) > + return 0; > skb->protocol = eth_type_trans(skb, skb->dev); > /* > * We do not need to lock on updating stats here That does not look right. You can have errors when processing an individual packet. That is not a reason to bail and you should process the next ones. This way you just dropped the rest of the RX vector (up to 64 packets at default settings).
On Sat, 2023-10-07 at 08:51 +0800, Ma Ke wrote: > In vector_mmsg_rx, to avoid an unexpected result returned by > pskb_trim, we should check the return value of pskb_trim(). And how exactly do you propose pskb_trim() will return anything but 0 in this scenario? Please. If you have a static checker, _think_ about it's output before blindly sending patches. johannes
diff --git a/arch/um/drivers/vector_kern.c b/arch/um/drivers/vector_kern.c index 131b7cb29576..c280ce5ea6ce 100644 --- a/arch/um/drivers/vector_kern.c +++ b/arch/um/drivers/vector_kern.c @@ -1013,8 +1013,8 @@ static int vector_mmsg_rx(struct vector_private *vp, int budget) skb->ip_summed = CHECKSUM_UNNECESSARY; } } - pskb_trim(skb, - mmsg_vector->msg_len - vp->rx_header_size); + if (pskb_trim(skb, mmsg_vector->msg_len - vp->rx_header_size)) + return 0; skb->protocol = eth_type_trans(skb, skb->dev); /* * We do not need to lock on updating stats here
In vector_mmsg_rx, to avoid an unexpected result returned by pskb_trim, we should check the return value of pskb_trim(). Signed-off-by: Ma Ke <make_ruc2021@163.com> --- arch/um/drivers/vector_kern.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)