| From ff6b8090e26ef7649ef0cc6b42389141ef48b0cf Mon Sep 17 00:00:00 2001 |
| From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> |
| Date: Tue, 27 Jan 2015 18:08:22 +0530 |
| Subject: nbd: fix possible memory leak |
| |
| From: Sudip Mukherjee <sudipm.mukherjee@gmail.com> |
| |
| commit ff6b8090e26ef7649ef0cc6b42389141ef48b0cf upstream. |
| |
| we have already allocated memory for nbd_dev, but we were not |
| releasing that memory and just returning the error value. |
| |
| Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> |
| Acked-by: Paul Clements <Paul.Clements@SteelEye.com> |
| Signed-off-by: Markus Pargmann <mpa@pengutronix.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/block/nbd.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/block/nbd.c |
| +++ b/drivers/block/nbd.c |
| @@ -815,10 +815,6 @@ static int __init nbd_init(void) |
| return -EINVAL; |
| } |
| |
| - nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL); |
| - if (!nbd_dev) |
| - return -ENOMEM; |
| - |
| part_shift = 0; |
| if (max_part > 0) { |
| part_shift = fls(max_part); |
| @@ -840,6 +836,10 @@ static int __init nbd_init(void) |
| if (nbds_max > 1UL << (MINORBITS - part_shift)) |
| return -EINVAL; |
| |
| + nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL); |
| + if (!nbd_dev) |
| + return -ENOMEM; |
| + |
| for (i = 0; i < nbds_max; i++) { |
| struct gendisk *disk = alloc_disk(1 << part_shift); |
| if (!disk) |