diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2013-03-07 20:43:37 -0500 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2013-03-13 11:11:12 -0400 |
commit | d9d2b484e0006d51591c3b9594e9d5f73b1a8d08 (patch) | |
tree | ce076901eeff4238b45642c0b8add6774fa9ac66 /drivers/firewire/net.c | |
parent | f2090594dd28c033e0a9a267240ffca6d5afbd84 (diff) |
firewire net: Fix leakage of kmap for broadcast receive buffer.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/net.c')
-rw-r--r-- | drivers/firewire/net.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c index d8cb6ac31044..0dc2fdf00562 100644 --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c | |||
@@ -1228,6 +1228,8 @@ static int fwnet_broadcast_start(struct fwnet_device *dev) | |||
1228 | failed_rcv_queue: | 1228 | failed_rcv_queue: |
1229 | kfree(dev->broadcast_rcv_buffer_ptrs); | 1229 | kfree(dev->broadcast_rcv_buffer_ptrs); |
1230 | dev->broadcast_rcv_buffer_ptrs = NULL; | 1230 | dev->broadcast_rcv_buffer_ptrs = NULL; |
1231 | for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) | ||
1232 | kunmap(dev->broadcast_rcv_buffer.pages[u]); | ||
1231 | failed_ptrs_alloc: | 1233 | failed_ptrs_alloc: |
1232 | fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, dev->card); | 1234 | fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, dev->card); |
1233 | failed_buffer_init: | 1235 | failed_buffer_init: |
@@ -1620,10 +1622,15 @@ static int fwnet_remove(struct device *_dev) | |||
1620 | 1622 | ||
1621 | fwnet_fifo_stop(dev); | 1623 | fwnet_fifo_stop(dev); |
1622 | if (dev->broadcast_rcv_context) { | 1624 | if (dev->broadcast_rcv_context) { |
1625 | unsigned u; | ||
1626 | |||
1623 | fw_iso_context_stop(dev->broadcast_rcv_context); | 1627 | fw_iso_context_stop(dev->broadcast_rcv_context); |
1624 | 1628 | ||
1625 | kfree(dev->broadcast_rcv_buffer_ptrs); | 1629 | kfree(dev->broadcast_rcv_buffer_ptrs); |
1626 | dev->broadcast_rcv_buffer_ptrs = NULL; | 1630 | dev->broadcast_rcv_buffer_ptrs = NULL; |
1631 | for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) | ||
1632 | kunmap(dev->broadcast_rcv_buffer.pages[u]); | ||
1633 | |||
1627 | fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, | 1634 | fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, |
1628 | dev->card); | 1635 | dev->card); |
1629 | fw_iso_context_destroy(dev->broadcast_rcv_context); | 1636 | fw_iso_context_destroy(dev->broadcast_rcv_context); |