]> www.infradead.org Git - users/jedix/linux-maple.git/commit
RDMA/uverbs: Prevent integer overflow issue
authorDan Carpenter <dan.carpenter@linaro.org>
Sat, 30 Nov 2024 10:06:41 +0000 (13:06 +0300)
committerLeon Romanovsky <leon@kernel.org>
Wed, 4 Dec 2024 14:19:39 +0000 (09:19 -0500)
commitd0257e089d1bbd35c69b6c97ff73e3690ab149a9
tree6ffcd2fe1bc7f3d686644286a95c6330e626a7ac
parenteb867d797d294a00a092b5027d08439da68940b2
RDMA/uverbs: Prevent integer overflow issue

In the expression "cmd.wqe_size * cmd.wr_count", both variables are u32
values that come from the user so the multiplication can lead to integer
wrapping.  Then we pass the result to uverbs_request_next_ptr() which also
could potentially wrap.  The "cmd.sge_count * sizeof(struct ib_uverbs_sge)"
multiplication can also overflow on 32bit systems although it's fine on
64bit systems.

This patch does two things.  First, I've re-arranged the condition in
uverbs_request_next_ptr() so that the use controlled variable "len" is on
one side of the comparison by itself without any math.  Then I've modified
all the callers to use size_mul() for the multiplications.

Fixes: 67cdb40ca444 ("[IB] uverbs: Implement more commands")
Cc: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://patch.msgid.link/b8765ab3-c2da-4611-aae0-ddd6ba173d23@stanley.mountain
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/uverbs_cmd.c