aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorEugene Teo <eugene.teo@eugeneteo.net>2006-03-15 17:57:19 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-20 17:50:03 -0500
commitda81817fbd744ce70983f1d3c61841265003c7f4 (patch)
tree6df199268afd7293c86bc06699db11644b5bddfd /drivers/net
parent09abfa8048de8e68eaa09eb07ac18f2d549dfe58 (diff)
[PATCH] USB: Fix irda-usb use after use
Don't read from free'd memory after calling netif_rx(). docopy is used as a boolean (0 and 1) so unsigned int is sufficient. Coverity bug #928 Signed-off-by: Eugene Teo <eugene.teo@eugeneteo.net> Cc: "David S. Miller" <davem@davemloft.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/irda/irda-usb.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index 8936058a3cce..6e2ec56cde0b 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -740,7 +740,7 @@ static void irda_usb_receive(struct urb *urb, struct pt_regs *regs)
740 struct sk_buff *newskb; 740 struct sk_buff *newskb;
741 struct sk_buff *dataskb; 741 struct sk_buff *dataskb;
742 struct urb *next_urb; 742 struct urb *next_urb;
743 int docopy; 743 unsigned int len, docopy;
744 744
745 IRDA_DEBUG(2, "%s(), len=%d\n", __FUNCTION__, urb->actual_length); 745 IRDA_DEBUG(2, "%s(), len=%d\n", __FUNCTION__, urb->actual_length);
746 746
@@ -851,10 +851,11 @@ static void irda_usb_receive(struct urb *urb, struct pt_regs *regs)
851 dataskb->dev = self->netdev; 851 dataskb->dev = self->netdev;
852 dataskb->mac.raw = dataskb->data; 852 dataskb->mac.raw = dataskb->data;
853 dataskb->protocol = htons(ETH_P_IRDA); 853 dataskb->protocol = htons(ETH_P_IRDA);
854 len = dataskb->len;
854 netif_rx(dataskb); 855 netif_rx(dataskb);
855 856
856 /* Keep stats up to date */ 857 /* Keep stats up to date */
857 self->stats.rx_bytes += dataskb->len; 858 self->stats.rx_bytes += len;
858 self->stats.rx_packets++; 859 self->stats.rx_packets++;
859 self->netdev->last_rx = jiffies; 860 self->netdev->last_rx = jiffies;
860 861