lkml.org 
[lkml]   [2019]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 23/52] xdp: unpin xdp umem pages in error path
    Date
    From: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>

    [ Upstream commit fb89c39455e4b49881c5a42761bd71f03d3ef888 ]

    Fix mem leak caused by missed unpin routine for umem pages.

    Fixes: 8aef7340ae9695 ("xsk: introduce xdp_umem_page")
    Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
    Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/xdp/xdp_umem.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c
    index a3b037fbfecde..8cab91c482ff5 100644
    --- a/net/xdp/xdp_umem.c
    +++ b/net/xdp/xdp_umem.c
    @@ -322,7 +322,7 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr)
    umem->pages = kcalloc(umem->npgs, sizeof(*umem->pages), GFP_KERNEL);
    if (!umem->pages) {
    err = -ENOMEM;
    - goto out_account;
    + goto out_pin;
    }

    for (i = 0; i < umem->npgs; i++)
    @@ -330,6 +330,8 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr)

    return 0;

    +out_pin:
    + xdp_umem_unpin_pages(umem);
    out_account:
    xdp_umem_unaccount_pages(umem);
    return err;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-09-04 18:01    [W:4.387 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site