提交 561e148e 编写于 作者: R Roland Dreier 提交者: Linus Torvalds

[PATCH] IB: fix potential ib_umad leak

Free all unclaimed MAD receive buffers when userspace closes our file so we
don't leak memory.
Signed-off-by: NRoland Dreier <roland@topspin.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 e4f50f00
...@@ -499,6 +499,7 @@ static int ib_umad_open(struct inode *inode, struct file *filp) ...@@ -499,6 +499,7 @@ static int ib_umad_open(struct inode *inode, struct file *filp)
static int ib_umad_close(struct inode *inode, struct file *filp) static int ib_umad_close(struct inode *inode, struct file *filp)
{ {
struct ib_umad_file *file = filp->private_data; struct ib_umad_file *file = filp->private_data;
struct ib_umad_packet *packet, *tmp;
int i; int i;
for (i = 0; i < IB_UMAD_MAX_AGENTS; ++i) for (i = 0; i < IB_UMAD_MAX_AGENTS; ++i)
...@@ -507,6 +508,9 @@ static int ib_umad_close(struct inode *inode, struct file *filp) ...@@ -507,6 +508,9 @@ static int ib_umad_close(struct inode *inode, struct file *filp)
ib_unregister_mad_agent(file->agent[i]); ib_unregister_mad_agent(file->agent[i]);
} }
list_for_each_entry_safe(packet, tmp, &file->recv_list, list)
kfree(packet);
kfree(file); kfree(file);
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册