
From: Roland Dreier <roland@topspin.com>

Free all unclaimed MAD receive buffers when userspace closes our file so we
don't leak memory.

Signed-off-by: Roland Dreier <roland@topspin.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/infiniband/core/user_mad.c |    4 ++++
 1 files changed, 4 insertions(+)

diff -puN drivers/infiniband/core/user_mad.c~ib-fix-potential-ib_umad-leak drivers/infiniband/core/user_mad.c
--- 25/drivers/infiniband/core/user_mad.c~ib-fix-potential-ib_umad-leak	2005-05-25 12:30:23.000000000 -0700
+++ 25-akpm/drivers/infiniband/core/user_mad.c	2005-05-25 12:30:23.000000000 -0700
@@ -499,6 +499,7 @@ static int ib_umad_open(struct inode *in
 static int ib_umad_close(struct inode *inode, struct file *filp)
 {
 	struct ib_umad_file *file = filp->private_data;
+	struct ib_umad_packet *packet, *tmp;
 	int i;
 
 	for (i = 0; i < IB_UMAD_MAX_AGENTS; ++i)
@@ -507,6 +508,9 @@ static int ib_umad_close(struct inode *i
 			ib_unregister_mad_agent(file->agent[i]);
 		}
 
+	list_for_each_entry_safe(packet, tmp, &file->recv_list, list)
+		kfree(packet);
+
 	kfree(file);
 
 	return 0;
_
