s390/dasd: Fix potential memleak in dasd_eckd_init()
authorQiheng Lin <linqiheng@huawei.com>
Fri, 10 Feb 2023 00:02:53 +0000 (01:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:32:45 +0000 (09:32 +0100)
[ Upstream commit 460e9bed82e49db1b823dcb4e421783854d86c40 ]

`dasd_reserve_req` is allocated before `dasd_vol_info_req`, and it
also needs to be freed before the error returns, just like the other
cases in this function.

Fixes: 9e12e54c7a8f ("s390/dasd: Handle out-of-space constraint")
Signed-off-by: Qiheng Lin <linqiheng@huawei.com>
Link: https://lore.kernel.org/r/20221208133809.16796-1-linqiheng@huawei.com
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Link: https://lore.kernel.org/r/20230210000253.1644903-3-sth@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/s390/block/dasd_eckd.c

index 5d0b999..b20ce86 100644 (file)
@@ -6956,8 +6956,10 @@ dasd_eckd_init(void)
                return -ENOMEM;
        dasd_vol_info_req = kmalloc(sizeof(*dasd_vol_info_req),
                                    GFP_KERNEL | GFP_DMA);
-       if (!dasd_vol_info_req)
+       if (!dasd_vol_info_req) {
+               kfree(dasd_reserve_req);
                return -ENOMEM;
+       }
        pe_handler_worker = kmalloc(sizeof(*pe_handler_worker),
                                    GFP_KERNEL | GFP_DMA);
        if (!pe_handler_worker) {