lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0299/1039] drm/tegra: vic: Fix DMA API misuse
    Date
    From: Robin Murphy <robin.murphy@arm.com>

    [ Upstream commit 5566174cb10a5167d59b0793871cab7990b149b8 ]

    Upon failure, dma_alloc_coherent() returns NULL. If that does happen,
    passing some uninitialised stack contents to dma_mapping_error() - which
    belongs to a different API in the first place - has precious little
    chance of detecting it.

    Also include the correct header, because the fragile transitive
    inclusion currently providing it is going to break soon.

    Fixes: 20e7dce255e9 ("drm/tegra: Remove memory allocation from Falcon library")
    CC: Thierry Reding <thierry.reding@gmail.com>
    CC: Mikko Perttunen <mperttunen@nvidia.com>
    CC: dri-devel@lists.freedesktop.org
    Signed-off-by: Robin Murphy <robin.murphy@arm.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/tegra/vic.c | 7 +++----
    1 file changed, 3 insertions(+), 4 deletions(-)

    diff --git a/drivers/gpu/drm/tegra/vic.c b/drivers/gpu/drm/tegra/vic.c
    index c02010ff2b7f2..da4af53719917 100644
    --- a/drivers/gpu/drm/tegra/vic.c
    +++ b/drivers/gpu/drm/tegra/vic.c
    @@ -5,6 +5,7 @@

    #include <linux/clk.h>
    #include <linux/delay.h>
    +#include <linux/dma-mapping.h>
    #include <linux/host1x.h>
    #include <linux/iommu.h>
    #include <linux/module.h>
    @@ -232,10 +233,8 @@ static int vic_load_firmware(struct vic *vic)

    if (!client->group) {
    virt = dma_alloc_coherent(vic->dev, size, &iova, GFP_KERNEL);
    -
    - err = dma_mapping_error(vic->dev, iova);
    - if (err < 0)
    - return err;
    + if (!virt)
    + return -ENOMEM;
    } else {
    virt = tegra_drm_alloc(tegra, size, &iova);
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:11    [W:2.295 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site