RDMA/siw: Fix immediate work request flush to completion queue
authorBernard Metzler <bmt@zurich.ibm.com>
Mon, 7 Nov 2022 14:50:57 +0000 (15:50 +0100)
committerLeon Romanovsky <leon@kernel.org>
Wed, 9 Nov 2022 13:26:49 +0000 (15:26 +0200)
commitbdf1da5df9da680589a7f74448dd0a94dd3e1446
treef7c2330bbaf55868287bfea897e63cc61558b8bb
parent0ca9c2e2844aa285c3656a29d4803839cfa8bca9
RDMA/siw: Fix immediate work request flush to completion queue

Correctly set send queue element opcode during immediate work request
flushing in post sendqueue operation, if the QP is in ERROR state.
An undefined ocode value results in out-of-bounds access to an array
for mapping the opcode between siw internal and RDMA core representation
in work completion generation. It resulted in a KASAN BUG report
of type 'global-out-of-bounds' during NFSoRDMA testing.

This patch further fixes a potential case of a malicious user which may
write undefined values for completion queue elements status or opcode,
if the CQ is memory mapped to user land. It avoids the same out-of-bounds
access to arrays for status and opcode mapping as described above.

Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
Fixes: b0fff7317bb4 ("rdma/siw: completion queue methods")
Reported-by: Olga Kornievskaia <kolga@netapp.com>
Reviewed-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Bernard Metzler <bmt@zurich.ibm.com>
Link: https://lore.kernel.org/r/20221107145057.895747-1-bmt@zurich.ibm.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/siw/siw_cq.c
drivers/infiniband/sw/siw/siw_verbs.c