summaryrefslogtreecommitdiffstats
path: root/net/tipc/discover.c
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2014-04-25 04:44:15 +0200
committerDavid S. Miller <davem@davemloft.net>2014-04-28 01:08:06 +0200
commit22e7987ae7d8d13beeaf0717215800f7e803ddcf (patch)
treebf796b7b8020397483e5a2ed4bc6b48dd7a6cb86 /net/tipc/discover.c
parentqlge: Convert /n to \n (diff)
downloadlinux-22e7987ae7d8d13beeaf0717215800f7e803ddcf.tar.xz
linux-22e7987ae7d8d13beeaf0717215800f7e803ddcf.zip
tipc: fix a possible memory leak
The commit a8b9b96e959f3c035af20b1bd2ba67b0b7269b19 ("tipc: fix race in disc create/delete") leads to the following static checker warning: net/tipc/discover.c:352 tipc_disc_create() warn: possible memory leak of 'req' The risk of memory leak really exists in practice. Especially when it's failed to allocate memory for "req->buf", tipc_disc_create() doesn't free its allocated memory, instead just directly returns with ENOMEM error code. In this situation, memory leak, of course, happens. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/discover.c')
-rw-r--r--net/tipc/discover.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/tipc/discover.c b/net/tipc/discover.c
index ada42e436f5e..bd35c4a0746f 100644
--- a/net/tipc/discover.c
+++ b/net/tipc/discover.c
@@ -348,8 +348,10 @@ int tipc_disc_create(struct tipc_bearer *b_ptr, struct tipc_media_addr *dest)
return -ENOMEM;
req->buf = tipc_buf_acquire(INT_H_SIZE);
- if (!req->buf)
+ if (!req->buf) {
+ kfree(req);
return -ENOMEM;
+ }
tipc_disc_init_msg(req->buf, DSC_REQ_MSG, b_ptr);
memcpy(&req->dest, dest, sizeof(*dest));