diff options
author | Eugene Teo <eugene.teo@eugeneteo.net> | 2006-03-15 17:57:19 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-20 17:50:03 -0500 |
commit | da81817fbd744ce70983f1d3c61841265003c7f4 (patch) | |
tree | 6df199268afd7293c86bc06699db11644b5bddfd /drivers/net/irda/irda-usb.c | |
parent | 09abfa8048de8e68eaa09eb07ac18f2d549dfe58 (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/irda/irda-usb.c')
-rw-r--r-- | drivers/net/irda/irda-usb.c | 5 |
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 | ||