]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
IB/rxe: Fix missing umem_odp->umem_mutex unlock on error path
authorLi Zhijian <lizhijian@fujitsu.com>
Fri, 26 Dec 2025 09:41:12 +0000 (17:41 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:16:51 +0000 (10:16 +0100)
[ Upstream commit 3c68cf68233e556e0102f45b69f7448908dc1f44 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/sw/rxe/rxe_odp.c

index f58e3ec6252f52d6fa62289997c78b5e18818e10..4d4e3b324dd29475e481f62ae084eb906dfa5ca6 100644 (file)
@@ -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;