scsi: libcxgbi: fix NULL pointer dereference in cxgbi_device_destroy()
authorVarun Prakash <varun@chelsio.com>
Wed, 18 Dec 2019 13:45:31 +0000 (19:15 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Jan 2020 07:19:37 +0000 (08:19 +0100)
[ Upstream commit 71482fde704efdd8c3abe0faf34d922c61e8d76b ]

If cxgb4i_ddp_init() fails then cdev->cdev2ppm will be NULL, so add a check
for NULL pointer before dereferencing it.

Link: https://lore.kernel.org/r/1576676731-3068-1-git-send-email-varun@chelsio.com
Signed-off-by: Varun Prakash <varun@chelsio.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/cxgbi/libcxgbi.c

index e974106f2bb504195b4b73f94df26ea2b3136e88..3d6e653f51470af857c5fd6632bd31e425fff5c7 100644 (file)
@@ -121,7 +121,8 @@ static inline void cxgbi_device_destroy(struct cxgbi_device *cdev)
                "cdev 0x%p, p# %u.\n", cdev, cdev->nports);
        cxgbi_hbas_remove(cdev);
        cxgbi_device_portmap_cleanup(cdev);
-       cxgbi_ppm_release(cdev->cdev2ppm(cdev));
+       if (cdev->cdev2ppm)
+               cxgbi_ppm_release(cdev->cdev2ppm(cdev));
        if (cdev->pmap.max_connect)
                cxgbi_free_big_mem(cdev->pmap.port_csk);
        kfree(cdev);