summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Minyard <minyard@acm.org>2023-06-19 19:43:33 +0300
committerCorey Minyard <minyard@acm.org>2023-06-20 14:54:20 +0300
commitb8d72e32e1453d37ee5c8a219f24e7eeadc471ef (patch)
treedda65db1b2439b380200ec9d0b791f9a9ff7133b
parentc5586d0f711e9744d0cade39b0c4a2d116a333ca (diff)
downloadlinux-b8d72e32e1453d37ee5c8a219f24e7eeadc471ef.tar.xz
ipmi:ssif: Fix a memory leak when scanning for an adapter
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>
-rw-r--r--drivers/char/ipmi/ipmi_ssif.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 07cfde579cfb..3d21c39e2060 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -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);