Message ID | 20231007005953.3994960-1-make_ruc2021@163.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ipv6: fix return value check in esp_remove_trailer | expand |
On Sat, Oct 07, 2023 at 08:59:53AM +0800, Ma Ke wrote: > In esp_remove_trailer(), 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> > --- > net/ipv6/esp6.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) We need the same change for net/ipv4/esp4.c? Thanks.
On Sun, Oct 08, 2023 at 10:07:30AM -0700, Cong Wang wrote: > On Sat, Oct 07, 2023 at 08:59:53AM +0800, Ma Ke wrote: > > In esp_remove_trailer(), 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> > > --- > > net/ipv6/esp6.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > We need the same change for net/ipv4/esp4.c? Please verify that it can actually fail first. Note that I'm busy right now so I haven't looked at it at all. Thanks,
On Tue, Oct 10, 2023 at 05:03:48PM +0800, Herbert Xu wrote: > On Sun, Oct 08, 2023 at 10:07:30AM -0700, Cong Wang wrote: > > On Sat, Oct 07, 2023 at 08:59:53AM +0800, Ma Ke wrote: > > > In esp_remove_trailer(), 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> > > > --- > > > net/ipv6/esp6.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > We need the same change for net/ipv4/esp4.c? > > Please verify that it can actually fail first. Note that I'm > busy right now so I haven't looked at it at all. It can, we don't linearize the packte data anymore.
On Sat, Oct 07, 2023 at 08:59:53AM +0800, Ma Ke wrote: > In esp_remove_trailer(), 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> Applied, thanks a lot!
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index fddd0cbdede1..e023d29e919c 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c @@ -770,7 +770,9 @@ static inline int esp_remove_trailer(struct sk_buff *skb) skb->csum = csum_block_sub(skb->csum, csumdiff, skb->len - trimlen); } - pskb_trim(skb, skb->len - trimlen); + ret = pskb_trim(skb, skb->len - trimlen); + if (unlikely(ret)) + return ret; ret = nexthdr[1];
In esp_remove_trailer(), 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> --- net/ipv6/esp6.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)