summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRand Deeb <rand.sec96@gmail.com>2024-03-06 15:30:28 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-06-27 14:49:01 +0300
commitc5dc2d8eb3981bae261ea7d1060a80868e886813 (patch)
tree6c2232834da9c23bda71333de8f16a3ec7afaa39
parentfd841ee01fb4a79cb7f5cc424b5c96c3a73b2d1e (diff)
downloadlinux-c5dc2d8eb3981bae261ea7d1060a80868e886813.tar.xz
ssb: Fix potential NULL pointer dereference in ssb_device_uevent()
[ Upstream commit 789c17185fb0f39560496c2beab9b57ce1d0cbe7 ] The ssb_device_uevent() function first attempts to convert the 'dev' pointer to 'struct ssb_device *'. However, it mistakenly dereferences 'dev' before performing the NULL check, potentially leading to a NULL pointer dereference if 'dev' is NULL. To fix this issue, move the NULL check before dereferencing the 'dev' pointer, ensuring that the pointer is valid before attempting to use it. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Rand Deeb <rand.sec96@gmail.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://msgid.link/20240306123028.164155-1-rand.sec96@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/ssb/main.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
index ab080cf26c9f..0c736d51566d 100644
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -341,11 +341,13 @@ static int ssb_bus_match(struct device *dev, struct device_driver *drv)
static int ssb_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
- const struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
+ const struct ssb_device *ssb_dev;
if (!dev)
return -ENODEV;
+ ssb_dev = dev_to_ssb_dev(dev);
+
return add_uevent_var(env,
"MODALIAS=ssb:v%04Xid%04Xrev%02X",
ssb_dev->id.vendor, ssb_dev->id.coreid,