memstick: fix a double-free bug in memstick_check
authorQinglang Miao <miaoqinglang@huawei.com>
Fri, 20 Nov 2020 07:48:46 +0000 (15:48 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Dec 2020 10:53:20 +0000 (11:53 +0100)
[ Upstream commit e3e9ced5c93803d5b2ea1942c4bf0192622531d6 ]

kfree(host->card) has been called in put_device so that
another kfree would raise cause a double-free bug.

Fixes: 0193383a5833 ("memstick: core: fix device_register() error handling")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com>
Link: https://lore.kernel.org/r/20201120074846.31322-1-miaoqinglang@huawei.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/memstick/core/memstick.c

index ef03d6f..12bc3f5 100644 (file)
@@ -468,7 +468,6 @@ static void memstick_check(struct work_struct *work)
                        host->card = card;
                        if (device_register(&card->dev)) {
                                put_device(&card->dev);
-                               kfree(host->card);
                                host->card = NULL;
                        }
                } else