]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ssb: Fix potential NULL pointer dereference in ssb_device_uevent()
authorRand Deeb <rand.sec96@gmail.com>
Wed, 6 Mar 2024 12:30:28 +0000 (15:30 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jun 2024 11:52:12 +0000 (13:52 +0200)
[ 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>
drivers/ssb/main.c

index 9f30e0edadfe294337079c639bce7e5b5f8d72ad..bdb6595ffd2d5194ddee2fe0e9f692bf2deeceb1 100644 (file)
@@ -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,