lkml.org 
[lkml]   [2022]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 100/155] xen/grants: prevent integer overflow in gnttab_dma_alloc_pages()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit e9ea0b30ada008f4e65933f449db6894832cb242 ]

    The change from kcalloc() to kvmalloc() means that arg->nr_pages
    might now be large enough that the "args->nr_pages << PAGE_SHIFT" can
    result in an integer overflow.

    Fixes: b3f7931f5c61 ("xen/gntdev: switch from kcalloc() to kvcalloc()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/YxDROJqu/RPvR0bi@kili
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/xen/grant-table.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
    index 738029de3c672..e1ec725c2819d 100644
    --- a/drivers/xen/grant-table.c
    +++ b/drivers/xen/grant-table.c
    @@ -1047,6 +1047,9 @@ int gnttab_dma_alloc_pages(struct gnttab_dma_alloc_args *args)
    size_t size;
    int i, ret;

    + if (args->nr_pages < 0 || args->nr_pages > (INT_MAX >> PAGE_SHIFT))
    + return -ENOMEM;
    +
    size = args->nr_pages << PAGE_SHIFT;
    if (args->coherent)
    args->vaddr = dma_alloc_coherent(args->dev, size,
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-09-06 16:18    [W:4.062 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site