lkml.org 
[lkml]   [2018]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 063/115] IB/mlx5: Fix mlx5_ib_alloc_mr error flow
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Nitzan Carmi <nitzanc@mellanox.com>


    [ Upstream commit 45e6ae7ef21b907dacb18da62d5787d74a31d860 ]

    ibmr.device is being set only after ib_alloc_mr() is
    (successfully) complete. Therefore, in case mlx5_core_create_mkey()
    return with error, the error flow calls mlx5_free_priv_descs()
    which uses ibmr.device (which doesn't exist yet), causing
    a NULL dereference oops.

    To fix this, the IB device should be set in the mr struct earlier
    stage (e.g. prior to calling mlx5_core_create_mkey()).

    Fixes: 8a187ee52b04 ("IB/mlx5: Support the new memory registration API")
    Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Nitzan Carmi <nitzanc@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/infiniband/hw/mlx5/mr.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/infiniband/hw/mlx5/mr.c
    +++ b/drivers/infiniband/hw/mlx5/mr.c
    @@ -1637,6 +1637,7 @@ struct ib_mr *mlx5_ib_alloc_mr(struct ib
    MLX5_SET(mkc, mkc, access_mode, mr->access_mode);
    MLX5_SET(mkc, mkc, umr_en, 1);

    + mr->ibmr.device = pd->device;
    err = mlx5_core_create_mkey(dev->mdev, &mr->mmkey, in, inlen);
    if (err)
    goto err_destroy_psv;

    \
     
     \ /
      Last update: 2018-03-02 10:20    [W:4.139 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site