powerpc/powernv/sriov: perform null check on iov before dereferencing iov
authorColin Ian King <colin.i.king@gmail.com>
Thu, 8 Jun 2023 09:58:49 +0000 (10:58 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 19 Jun 2023 07:37:13 +0000 (17:37 +1000)
Currently pointer iov is being dereferenced before the null check of iov
which can lead to null pointer dereference errors. Fix this by moving the
iov null check before the dereferencing.

Detected using cppcheck static analysis:
linux/arch/powerpc/platforms/powernv/pci-sriov.c:597:12: warning: Either
the condition '!iov' is redundant or there is possible null pointer
dereference: iov. [nullPointerRedundantCheck]
 num_vfs = iov->num_vfs;
           ^

Fixes: 052da31d45fc ("powerpc/powernv/sriov: De-indent setup and teardown")
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230608095849.1147969-1-colin.i.king@gmail.com
arch/powerpc/platforms/powernv/pci-sriov.c

index 7195133b26bb9eeafca1bc4efb2c0f1df125cfaf..59882da3e74253fcf0fb34d5976065081f1faa41 100644 (file)
@@ -594,12 +594,12 @@ static void pnv_pci_sriov_disable(struct pci_dev *pdev)
        struct pnv_iov_data   *iov;
 
        iov = pnv_iov_get(pdev);
-       num_vfs = iov->num_vfs;
-       base_pe = iov->vf_pe_arr[0].pe_number;
-
        if (WARN_ON(!iov))
                return;
 
+       num_vfs = iov->num_vfs;
+       base_pe = iov->vf_pe_arr[0].pe_number;
+
        /* Release VF PEs */
        pnv_ioda_release_vf_PE(pdev);