]> git.ipfire.org Git - thirdparty/kernel/linux.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)
committerCorey Minyard <minyard@acm.org>
Tue, 20 Jun 2023 11:54:20 +0000 (06:54 -0500)
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>
drivers/char/ipmi/ipmi_ssif.c

index 07cfde579cfb9a2454976f8356024ca91677fa85..3d21c39e2060ecf8618ffa133df1f9ee94ba08b8 100644 (file)
@@ -1400,7 +1400,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);