[PATCH] release oob skb when received in-band and fix setsockopt ret
Brandon Ho <[email protected]>
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <[email protected]> |
Signed-off-by: Brandon Ho <[email protected]> --- kernel/evl/net/skb.c | 3 +++ net/core/skbuff.c | 2 ++ net/core/sock.c | 1 + 3 files changed, 6 insertions(+) diff --git a/kernel/evl/net/skb.c b/kernel/evl/net/skb.c index 50090c181..9cd52e3e7 100644 --- a/kernel/evl/net/skb.c +++ b/kernel/evl/net/skb.c @@ -55,6 +55,9 @@ * -> free_skb_oob(skb) * -> dev_kfree_skb(skb) * -> consume_skb(skb) [1] + * | + * __consume_stateless_skb(skb) + * -> free_skb_oob(skb) */ #define SKB_RECYCLING_THRESHOLD 32 diff --git a/net/core/skbuff.c b/net/core/skbuff.c index e532fd636..b4dc5e1c9 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -1621,6 +1621,8 @@ EXPORT_SYMBOL(consume_skb); void __consume_stateless_skb(struct sk_buff *skb) { trace_consume_skb(skb, __builtin_return_address(0)); + if (skb_release_oob(skb)) + return; skb_release_data(skb, SKB_CONSUMED); kfree_skbmem(skb); } diff --git a/net/core/sock.c b/net/core/sock.c index 3321ff386..70a313c1f 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1721,6 +1721,7 @@ int sk_getsockopt(struct sock *sk, int level, int optname, goto lenout; if (ret != -ENOIOCTLCMD) return ret; + ret = 0; } memset(&v, 0, sizeof(v)); -- 2.43.0