drm/nouveau/pci: Move a variable assignment behind condition checks in nvkm_pcie_set_...
authorMarkus Elfring <Markus.Elfring@web.de>
Sun, 16 Apr 2023 06:18:40 +0000 (08:18 +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 function “nvkm_pcie_set_link”.

Thus avoid the risk for undefined behaviour by moving the assignment
for the variable “subdev” behind some condition 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/b31019b1-bb73-ed93-3378-e551e17a4f32@web.de
drivers/gpu/drm/nouveau/nvkm/subdev/pci/pcie.c

index d71e5db..b295f10 100644 (file)
@@ -114,7 +114,7 @@ nvkm_pcie_init(struct nvkm_pci *pci)
 int
 nvkm_pcie_set_link(struct nvkm_pci *pci, enum nvkm_pcie_speed speed, u8 width)
 {
-       struct nvkm_subdev *subdev = &pci->subdev;
+       struct nvkm_subdev *subdev;
        enum nvkm_pcie_speed cur_speed, max_speed;
        struct pci_bus *pbus;
        int ret;
@@ -126,6 +126,7 @@ nvkm_pcie_set_link(struct nvkm_pci *pci, enum nvkm_pcie_speed speed, u8 width)
        if (!pci->func->pcie.set_link)
                return -ENOSYS;
 
+       subdev = &pci->subdev;
        nvkm_trace(subdev, "requested %s\n", nvkm_pcie_speeds[speed]);
 
        if (pci->func->pcie.version(pci) < 2) {