wifi: cfg80211: fix memory leak in query_regdb_file()
[ Upstream commit 57b962e627ec0ae53d4d16d7bd1033e27e67677a ]
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: 007f6c5e6e
("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
914cb94e73
commit
e1e1218032
@@ -1064,6 +1064,8 @@ MODULE_FIRMWARE("regulatory.db");
|
|||||||
|
|
||||||
static int query_regdb_file(const char *alpha2)
|
static int query_regdb_file(const char *alpha2)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
ASSERT_RTNL();
|
ASSERT_RTNL();
|
||||||
|
|
||||||
if (regdb)
|
if (regdb)
|
||||||
@@ -1073,9 +1075,13 @@ static int query_regdb_file(const char *alpha2)
|
|||||||
if (!alpha2)
|
if (!alpha2)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
return request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
|
err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
|
||||||
®_pdev->dev, GFP_KERNEL,
|
®_pdev->dev, GFP_KERNEL,
|
||||||
(void *)alpha2, regdb_fw_cb);
|
(void *)alpha2, regdb_fw_cb);
|
||||||
|
if (err)
|
||||||
|
kfree(alpha2);
|
||||||
|
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int reg_reload_regdb(void)
|
int reg_reload_regdb(void)
|
||||||
|
Reference in New Issue
Block a user