From: Rémi Denis-Courmont Date: Tue, 8 Mar 2011 22:44:07 +0000 (+0000) Subject: Phonet: return an error when packet TX fails X-Git-Tag: v2.6.39-rc1~468^2~123 X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=b765e84f96f728e8e178348fc102f126c1736193;p=~andy%2Flinux Phonet: return an error when packet TX fails Phonet assumes that packets are never dropped. We try our best to avoid this situation. But lets return ENOBUFS if queueing to the network device fails so that the caller knows things went wrong. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller --- diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c index 4706b77e67b..c6fffd946d4 100644 --- a/net/phonet/af_phonet.c +++ b/net/phonet/af_phonet.c @@ -195,11 +195,7 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev, if (skb->pkt_type == PACKET_LOOPBACK) { skb_reset_mac_header(skb); skb_orphan(skb); - if (irq) - netif_rx(skb); - else - netif_rx_ni(skb); - err = 0; + err = (irq ? netif_rx(skb) : netif_rx_ni(skb)) ? -ENOBUFS : 0; } else { err = dev_hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL, skb->len); @@ -208,6 +204,8 @@ static int pn_send(struct sk_buff *skb, struct net_device *dev, goto drop; } err = dev_queue_xmit(skb); + if (unlikely(err > 0)) + err = net_xmit_errno(err); } return err;