Message ID | 1448177919-8646-1-git-send-email-ying.xue@windriver.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
From: Ying Xue <ying.xue@windriver.com> Date: Sun, 22 Nov 2015 15:38:39 +0800 > @@ -158,8 +158,11 @@ static int tipc_udp_send_msg(struct net *net, struct sk_buff *skb, > struct udp_media_addr *src = (struct udp_media_addr *)&b->addr.value; > struct rtable *rt; > > - if (skb_headroom(skb) < UDP_MIN_HEADROOM) > - pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC); > + if (skb_headroom(skb) < UDP_MIN_HEADROOM) { > + err = pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC); > + if (!err) > + goto tx_error; > + } pskb_expand_head() returns negative error codes, therefore zero means success and therefore this "!err" check is reversed. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11/24/2015 12:35 PM, David Miller wrote: > pskb_expand_head() returns negative error codes, therefore zero means > success and therefore this "!err" check is reversed. Thank you for pointing out such a stupid mistake I made. I will send v2 to correct it. Regards, Ying -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c index ad2719a..f01ff16 100644 --- a/net/tipc/udp_media.c +++ b/net/tipc/udp_media.c @@ -158,8 +158,11 @@ static int tipc_udp_send_msg(struct net *net, struct sk_buff *skb, struct udp_media_addr *src = (struct udp_media_addr *)&b->addr.value; struct rtable *rt; - if (skb_headroom(skb) < UDP_MIN_HEADROOM) - pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC); + if (skb_headroom(skb) < UDP_MIN_HEADROOM) { + err = pskb_expand_head(skb, UDP_MIN_HEADROOM, 0, GFP_ATOMIC); + if (!err) + goto tx_error; + } skb_set_inner_protocol(skb, htons(ETH_P_TIPC)); ub = rcu_dereference_rtnl(b->media_ptr);