drm/nouveau/therm: Move an assignment statement behind a null pointer check in two...
authorMarkus Elfring <Markus.Elfring@web.de>
Sun, 16 Apr 2023 08:50:12 +0000 (10:50 +0200)
committerKarol Herbst <kherbst@redhat.com>
Mon, 17 Apr 2023 17:08:04 +0000 (19:08 +0200)
The address of a data structure member was determined before
a corresponding null pointer check in the implementation of
the functions “nvkm_fanpwm_create” and “nvkm_fantog_create”.

Thus avoid the risk for undefined behaviour by moving the assignment
for the data structure member “fan” behind two null pointer checks.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/3d0215dc-74d4-2c42-2eee-7a5fcf62b9f1@web.de
drivers/gpu/drm/nouveau/nvkm/subdev/therm/fanpwm.c
drivers/gpu/drm/nouveau/nvkm/subdev/therm/fantog.c

index 340f37a299dce2c4e30dd42d6718df0028df9e81..b13ba9b2f6be070deeb8a61dbd8bf93ff2017f6b 100644 (file)
@@ -98,10 +98,10 @@ nvkm_fanpwm_create(struct nvkm_therm *therm, struct dcb_gpio_func *func)
                return -ENODEV;
 
        fan = kzalloc(sizeof(*fan), GFP_KERNEL);
-       therm->fan = &fan->base;
        if (!fan)
                return -ENOMEM;
 
+       therm->fan = &fan->base;
        fan->base.type = "PWM";
        fan->base.get = nvkm_fanpwm_get;
        fan->base.set = nvkm_fanpwm_set;
index ff9fbe7950e5c6c9cef7336d2d88fc94bebe5771..bfdf4ca5625c91ada50630c34d615e75a01393db 100644 (file)
@@ -100,10 +100,10 @@ nvkm_fantog_create(struct nvkm_therm *therm, struct dcb_gpio_func *func)
        }
 
        fan = kzalloc(sizeof(*fan), GFP_KERNEL);
-       therm->fan = &fan->base;
        if (!fan)
                return -ENOMEM;
 
+       therm->fan = &fan->base;
        fan->base.type = "toggle";
        fan->base.get = nvkm_fantog_get;
        fan->base.set = nvkm_fantog_set;