| From 03bf73c315edca28f47451913177e14cd040a216 Mon Sep 17 00:00:00 2001 |
| From: Navid Emamdoost <navid.emamdoost@gmail.com> |
| Date: Mon, 23 Sep 2019 15:09:58 -0500 |
| Subject: nbd: prevent memory leak |
| |
| From: Navid Emamdoost <navid.emamdoost@gmail.com> |
| |
| commit 03bf73c315edca28f47451913177e14cd040a216 upstream. |
| |
| In nbd_add_socket when krealloc succeeds, if nsock's allocation fail the |
| reallocted memory is leak. The correct behaviour should be assigning the |
| reallocted memory to config->socks right after success. |
| |
| Reviewed-by: Josef Bacik <josef@toxicpanda.com> |
| Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com> |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/block/nbd.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/block/nbd.c |
| +++ b/drivers/block/nbd.c |
| @@ -1032,14 +1032,15 @@ static int nbd_add_socket(struct nbd_dev |
| sockfd_put(sock); |
| return -ENOMEM; |
| } |
| + |
| + config->socks = socks; |
| + |
| nsock = kzalloc(sizeof(struct nbd_sock), GFP_KERNEL); |
| if (!nsock) { |
| sockfd_put(sock); |
| return -ENOMEM; |
| } |
| |
| - config->socks = socks; |
| - |
| nsock->fallback_index = -1; |
| nsock->dead = false; |
| mutex_init(&nsock->tx_lock); |