OSDN Git Service

drm/tegra: falcon: Fix error handling
authorThierry Reding <treding@nvidia.com>
Fri, 23 Nov 2018 12:06:38 +0000 (13:06 +0100)
committerThierry Reding <treding@nvidia.com>
Thu, 29 Nov 2018 16:11:49 +0000 (17:11 +0100)
The ->alloc() callback in struct falcon_ops returns an ERR_PTR()-encoded
error code on failure, so it needs to be properly checked for, otherwise
subsequent code may dereference an invalid pointer.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/falcon.c

index f685e72..78c7a01 100644 (file)
@@ -141,9 +141,9 @@ int falcon_load_firmware(struct falcon *falcon)
        /* allocate iova space for the firmware */
        falcon->firmware.vaddr = falcon->ops->alloc(falcon, firmware->size,
                                                    &falcon->firmware.paddr);
-       if (!falcon->firmware.vaddr) {
-               dev_err(falcon->dev, "dma memory mapping failed\n");
-               return -ENOMEM;
+       if (IS_ERR(falcon->firmware.vaddr)) {
+               dev_err(falcon->dev, "DMA memory mapping failed\n");
+               return PTR_ERR(falcon->firmware.vaddr);
        }
 
        /* copy firmware image into local area. this also ensures endianness */