Date: Fri, 08 Mar 2013 10:43:37 +0900 From: YOSHIFUJI Hideaki Subject: firewire net: Fix leakage of kmap for broadcast receive buffer. Signed-off-by: YOSHIFUJI Hideaki Signed-off-by: Stefan Richter --- drivers/firewire/net.c | 7 +++++++ 1 file changed, 7 insertions(+) --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c @@ -1228,6 +1228,8 @@ static int fwnet_broadcast_start(struct failed_rcv_queue: kfree(dev->broadcast_rcv_buffer_ptrs); dev->broadcast_rcv_buffer_ptrs = NULL; + for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) + kunmap(dev->broadcast_rcv_buffer.pages[u]); failed_ptrs_alloc: fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, dev->card); failed_buffer_init: @@ -1620,10 +1622,15 @@ static int fwnet_remove(struct device *_ fwnet_fifo_stop(dev); if (dev->broadcast_rcv_context) { + unsigned u; + fw_iso_context_stop(dev->broadcast_rcv_context); kfree(dev->broadcast_rcv_buffer_ptrs); dev->broadcast_rcv_buffer_ptrs = NULL; + for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) + kunmap(dev->broadcast_rcv_buffer.pages[u]); + fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, dev->card); fw_iso_context_destroy(dev->broadcast_rcv_context);