diff options
author | Darren Jenkins <darrenrjenkins@gmail.com> | 2008-07-13 01:40:47 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-07-24 20:14:10 +0400 |
commit | 4195cdf72c4060e4a9527c49ac5267234b0624de (patch) | |
tree | 9d9134514478dfdf89375c59befb7678ac590cd1 | |
parent | eb2707cf66b1e921a54822a56443f756a161b09a (diff) | |
download | linux-4195cdf72c4060e4a9527c49ac5267234b0624de.tar.xz |
drivers/char/pcmcia/ipwireless/hardware.c fix resource leak
commit 43f77e91eadbc290eb76a08110a039c809dde6c9 upstream
Coverity CID: 2172 RESOURCE_LEAK
When pool_allocate() tries to enlarge a packet, if it can not allocate enough
memory, it returns NULL without first freeing the old packet.
This patch just frees the packet first.
Signed-off-by: Darren Jenkins <darrenrjenkins@gmail.com>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/char/pcmcia/ipwireless/hardware.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/char/pcmcia/ipwireless/hardware.c b/drivers/char/pcmcia/ipwireless/hardware.c index d3538668a8ee..48c20402bc2b 100644 --- a/drivers/char/pcmcia/ipwireless/hardware.c +++ b/drivers/char/pcmcia/ipwireless/hardware.c @@ -616,8 +616,10 @@ static struct ipw_rx_packet *pool_allocate(struct ipw_hardware *hw, packet = kmalloc(sizeof(struct ipw_rx_packet) + old_packet->length + minimum_free_space, GFP_ATOMIC); - if (!packet) + if (!packet) { + kfree(old_packet); return NULL; + } memcpy(packet, old_packet, sizeof(struct ipw_rx_packet) + old_packet->length); |