Skip to content
/ linux Public

Commit bf1feed

Browse files
liuyi-thuSasha Levin
authored andcommitted
RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send
[ Upstream commit 1956f0a ] ib_uverbs_post_send() uses cmd.wqe_size from userspace without any validation before passing it to kmalloc() and using the allocated buffer as struct ib_uverbs_send_wr. If a user provides a small wqe_size value (e.g., 1), kmalloc() will succeed, but subsequent accesses to user_wr->opcode, user_wr->num_sge, and other fields will read beyond the allocated buffer, resulting in an out-of-bounds read from kernel heap memory. This could potentially leak sensitive kernel information to userspace. Additionally, providing an excessively large wqe_size can trigger a WARNING in the memory allocation path, as reported by syzkaller. This is inconsistent with ib_uverbs_unmarshall_recv() which properly validates that wqe_size >= sizeof(struct ib_uverbs_recv_wr) before proceeding. Add the same validation for ib_uverbs_post_send() to ensure wqe_size is at least sizeof(struct ib_uverbs_send_wr). Fixes: c3bea3d ("RDMA/uverbs: Use the iterator for ib_uverbs_unmarshall_recv()") Signed-off-by: Yi Liu <liuy22@mails.tsinghua.edu.cn> Link: https://patch.msgid.link/20260122142900.2356276-2-liuy22@mails.tsinghua.edu.cn Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 0f5e62e commit bf1feed

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/infiniband/core/uverbs_cmd.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2030,7 +2030,10 @@ static int ib_uverbs_post_send(struct uverbs_attr_bundle *attrs)
20302030
if (ret)
20312031
return ret;
20322032

2033-
user_wr = kmalloc(cmd.wqe_size, GFP_KERNEL);
2033+
if (cmd.wqe_size < sizeof(struct ib_uverbs_send_wr))
2034+
return -EINVAL;
2035+
2036+
user_wr = kmalloc(cmd.wqe_size, GFP_KERNEL | __GFP_NOWARN);
20342037
if (!user_wr)
20352038
return -ENOMEM;
20362039

0 commit comments

Comments
 (0)