diff options
| author | Li Zhijian <lizhijian@fujitsu.com> | 2025-12-26 12:41:12 +0300 |
|---|---|---|
| committer | Leon Romanovsky <leon@kernel.org> | 2025-12-30 12:22:59 +0300 |
| commit | 3c68cf68233e556e0102f45b69f7448908dc1f44 (patch) | |
| tree | 54aaeab8b4e6179865e007d777e86f0d51b0786c | |
| parent | 3d70e0fb0f289b0c778041c5bb04d099e1aa7c1c (diff) | |
| download | linux-3c68cf68233e556e0102f45b69f7448908dc1f44.tar.xz | |
IB/rxe: Fix missing umem_odp->umem_mutex unlock on error path
rxe_odp_map_range_and_lock() must release umem_odp->umem_mutex when an
error occurs, including cases where rxe_check_pagefault() fails.
Fixes: 2fae67ab63db ("RDMA/rxe: Add support for Send/Recv/Write/Read with ODP")
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
Link: https://patch.msgid.link/20251226094112.3042583-1-lizhijian@fujitsu.com
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
| -rw-r--r-- | drivers/infiniband/sw/rxe/rxe_odp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/sw/rxe/rxe_odp.c b/drivers/infiniband/sw/rxe/rxe_odp.c index ae71812bea82..c928cbf2e35f 100644 --- a/drivers/infiniband/sw/rxe/rxe_odp.c +++ b/drivers/infiniband/sw/rxe/rxe_odp.c @@ -179,8 +179,10 @@ static int rxe_odp_map_range_and_lock(struct rxe_mr *mr, u64 iova, int length, u return err; need_fault = rxe_check_pagefault(umem_odp, iova, length); - if (need_fault) + if (need_fault) { + mutex_unlock(&umem_odp->umem_mutex); return -EFAULT; + } } return 0; |
