]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ipmi:ssif: Fix a memory leak when scanning for an adapter
authorCorey Minyard <minyard@acm.org>
Mon, 19 Jun 2023 16:43:33 +0000 (11:43 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Sep 2023 10:22:40 +0000 (12:22 +0200)
[ Upstream commit b8d72e32e1453d37ee5c8a219f24e7eeadc471ef ]

The adapter scan ssif_info_find() sets info->adapter_name if the adapter
info came from SMBIOS, as it's not set in that case.  However, this
function can be called more than once, and it will leak the adapter name
if it had already been set.  So check for NULL before setting it.

Fixes: c4436c9149c5 ("ipmi_ssif: avoid registering duplicate ssif interface")
Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/char/ipmi/ipmi_ssif.c

index 87aa12ab8c66f36bbdb658fc12ca79eea3db2e6a..30f757249c5c09324f554270664ef1d76ced3f1e 100644 (file)
@@ -1414,7 +1414,7 @@ static struct ssif_addr_info *ssif_info_find(unsigned short addr,
 restart:
        list_for_each_entry(info, &ssif_infos, link) {
                if (info->binfo.addr == addr) {
-                       if (info->addr_src == SI_SMBIOS)
+                       if (info->addr_src == SI_SMBIOS && !info->adapter_name)
                                info->adapter_name = kstrdup(adapter_name,
                                                             GFP_KERNEL);