Skip to content

Commit 57b962e

Browse files
Arend van Sprieljmberg-intel
authored andcommitted
wifi: cfg80211: fix memory leak in query_regdb_file()
In the function query_regdb_file() the alpha2 parameter is duplicated using kmemdup() and subsequently freed in regdb_fw_cb(). However, request_firmware_nowait() can fail without calling regdb_fw_cb() and thus leak memory. Fixes: 007f6c5 ("cfg80211: support loading regulatory database as firmware file") Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1 parent 50b2e87 commit 57b962e

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

net/wireless/reg.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,8 @@ MODULE_FIRMWARE("regulatory.db");
10841084

10851085
static int query_regdb_file(const char *alpha2)
10861086
{
1087+
int err;
1088+
10871089
ASSERT_RTNL();
10881090

10891091
if (regdb)
@@ -1093,9 +1095,13 @@ static int query_regdb_file(const char *alpha2)
10931095
if (!alpha2)
10941096
return -ENOMEM;
10951097

1096-
return request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
1097-
&reg_pdev->dev, GFP_KERNEL,
1098-
(void *)alpha2, regdb_fw_cb);
1098+
err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
1099+
&reg_pdev->dev, GFP_KERNEL,
1100+
(void *)alpha2, regdb_fw_cb);
1101+
if (err)
1102+
kfree(alpha2);
1103+
1104+
return err;
10991105
}
11001106

11011107
int reg_reload_regdb(void)

0 commit comments

Comments
 (0)