|
Takashi Iwai |
e83e77 |
From aeca7ff254843d49a8739f07f7dab1341450111d Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
e83e77 |
From: ruanjinjie <ruanjinjie@huawei.com>
|
|
Takashi Iwai |
e83e77 |
Date: Thu, 10 Nov 2022 16:23:48 +0800
|
|
Takashi Iwai |
e83e77 |
Subject: [PATCH] vdpa_sim: fix possible memory leak in vdpasim_net_init() and vdpasim_blk_init()
|
|
Takashi Iwai |
e83e77 |
Git-commit: aeca7ff254843d49a8739f07f7dab1341450111d
|
|
Takashi Iwai |
e83e77 |
Patch-mainline: v6.2-rc3
|
|
Takashi Iwai |
e83e77 |
References: git-fixes
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
Inject fault while probing module, if device_register() fails in
|
|
Takashi Iwai |
e83e77 |
vdpasim_net_init() or vdpasim_blk_init(), but the refcount of kobject is
|
|
Takashi Iwai |
e83e77 |
not decreased to 0, the name allocated in dev_set_name() is leaked.
|
|
Takashi Iwai |
e83e77 |
Fix this by calling put_device(), so that name can be freed in
|
|
Takashi Iwai |
e83e77 |
callback function kobject_cleanup().
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
(vdpa_sim_net)
|
|
Takashi Iwai |
e83e77 |
unreferenced object 0xffff88807eebc370 (size 16):
|
|
Takashi Iwai |
e83e77 |
comm "modprobe", pid 3848, jiffies 4362982860 (age 18.153s)
|
|
Takashi Iwai |
e83e77 |
hex dump (first 16 bytes):
|
|
Takashi Iwai |
e83e77 |
76 64 70 61 73 69 6d 5f 6e 65 74 00 6b 6b 6b a5 vdpasim_net.kkk.
|
|
Takashi Iwai |
e83e77 |
backtrace:
|
|
Takashi Iwai |
e83e77 |
[<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81731d53>] kstrdup+0x33/0x60
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110
|
|
Takashi Iwai |
e83e77 |
[<ffffffff82d87aab>] dev_set_name+0xab/0xe0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff82d91a23>] device_add+0xe3/0x1a80
|
|
Takashi Iwai |
e83e77 |
[<ffffffffa0270013>] 0xffffffffa0270013
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81001c27>] do_one_initcall+0x87/0x2e0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff813739cb>] do_init_module+0x1ab/0x640
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81379d20>] load_module+0x5d00/0x77f0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83c4d505>] do_syscall_64+0x35/0x80
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
(vdpa_sim_blk)
|
|
Takashi Iwai |
e83e77 |
unreferenced object 0xffff8881070c1250 (size 16):
|
|
Takashi Iwai |
e83e77 |
comm "modprobe", pid 6844, jiffies 4364069319 (age 17.572s)
|
|
Takashi Iwai |
e83e77 |
hex dump (first 16 bytes):
|
|
Takashi Iwai |
e83e77 |
76 64 70 61 73 69 6d 5f 62 6c 6b 00 6b 6b 6b a5 vdpasim_blk.kkk.
|
|
Takashi Iwai |
e83e77 |
backtrace:
|
|
Takashi Iwai |
e83e77 |
[<ffffffff8174f19e>] __kmalloc_node_track_caller+0x4e/0x150
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81731d53>] kstrdup+0x33/0x60
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83a5d421>] kobject_set_name_vargs+0x41/0x110
|
|
Takashi Iwai |
e83e77 |
[<ffffffff82d87aab>] dev_set_name+0xab/0xe0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff82d91a23>] device_add+0xe3/0x1a80
|
|
Takashi Iwai |
e83e77 |
[<ffffffffa0220013>] 0xffffffffa0220013
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81001c27>] do_one_initcall+0x87/0x2e0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff813739cb>] do_init_module+0x1ab/0x640
|
|
Takashi Iwai |
e83e77 |
[<ffffffff81379d20>] load_module+0x5d00/0x77f0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff8137bc40>] __do_sys_finit_module+0x110/0x1b0
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83c4d505>] do_syscall_64+0x35/0x80
|
|
Takashi Iwai |
e83e77 |
[<ffffffff83e0006a>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
Fixes: 899c4d187f6a ("vdpa_sim_blk: add support for vdpa management tool")
|
|
Takashi Iwai |
e83e77 |
Fixes: a3c06ae158dd ("vdpa_sim_net: Add support for user supported devices")
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
Signed-off-by: ruanjinjie <ruanjinjie@huawei.com>
|
|
Takashi Iwai |
e83e77 |
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
Takashi Iwai |
e83e77 |
Message-id: <20221110082348.4105476-1-ruanjinjie@huawei.com>
|
|
Takashi Iwai |
e83e77 |
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
|
Takashi Iwai |
e83e77 |
Acked-by: Jason Wang <jasowang@redhat.com>
|
|
Takashi Iwai |
e83e77 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
---
|
|
Takashi Iwai |
e83e77 |
drivers/vdpa/vdpa_sim/vdpa_sim_blk.c | 4 +++-
|
|
Takashi Iwai |
e83e77 |
drivers/vdpa/vdpa_sim/vdpa_sim_net.c | 4 +++-
|
|
Takashi Iwai |
e83e77 |
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
--- a/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c
|
|
Takashi Iwai |
e83e77 |
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim_blk.c
|
|
Takashi Iwai |
e83e77 |
@@ -308,8 +308,10 @@ static int __init vdpasim_blk_init(void)
|
|
Takashi Iwai |
e83e77 |
int ret;
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
ret = device_register(&vdpasim_blk_mgmtdev);
|
|
Takashi Iwai |
e83e77 |
- if (ret)
|
|
Takashi Iwai |
e83e77 |
+ if (ret) {
|
|
Takashi Iwai |
e83e77 |
+ put_device(&vdpasim_blk_mgmtdev);
|
|
Takashi Iwai |
e83e77 |
return ret;
|
|
Takashi Iwai |
e83e77 |
+ }
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
ret = vdpa_mgmtdev_register(&mgmt_dev);
|
|
Takashi Iwai |
e83e77 |
if (ret)
|
|
Takashi Iwai |
e83e77 |
--- a/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
|
|
Takashi Iwai |
e83e77 |
+++ b/drivers/vdpa/vdpa_sim/vdpa_sim_net.c
|
|
Takashi Iwai |
e83e77 |
@@ -194,8 +194,10 @@ static int __init vdpasim_net_init(void)
|
|
Takashi Iwai |
e83e77 |
}
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
ret = device_register(&vdpasim_net_mgmtdev);
|
|
Takashi Iwai |
e83e77 |
- if (ret)
|
|
Takashi Iwai |
e83e77 |
+ if (ret) {
|
|
Takashi Iwai |
e83e77 |
+ put_device(&vdpasim_net_mgmtdev);
|
|
Takashi Iwai |
e83e77 |
return ret;
|
|
Takashi Iwai |
e83e77 |
+ }
|
|
Takashi Iwai |
e83e77 |
|
|
Takashi Iwai |
e83e77 |
ret = vdpa_mgmtdev_register(&mgmt_dev);
|
|
Takashi Iwai |
e83e77 |
if (ret)
|