RDMA/rxe: Generate a completion for unsupported/invalid opcode
authorXiao Yang <yangx.jy@fujitsu.com>
Sun, 10 Apr 2022 11:35:13 +0000 (19:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jun 2022 08:23:31 +0000 (10:23 +0200)
commit 2f917af777011c88e977b9b9a5d00b280d3a59ce upstream.

Current rxe_requester() doesn't generate a completion when processing an
unsupported/invalid opcode. If rxe driver doesn't support a new opcode
(e.g. RDMA Atomic Write) and RDMA library supports it, an application
using the new opcode can reproduce this issue. Fix the issue by calling
"goto err;".

Fixes: 8700e3e7c485 ("Soft RoCE driver")
Link: https://lore.kernel.org/r/20220410113513.27537-1-yangx.jy@fujitsu.com
Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/sw/rxe/rxe_req.c

index fc996fd31e589c5cd2f99d89e47c10e78c9beea2..7812e3d6a6c277c55c2c501b7ae4547689b60949 100644 (file)
@@ -683,7 +683,7 @@ next_wqe:
        opcode = next_opcode(qp, wqe, wqe->wr.opcode);
        if (unlikely(opcode < 0)) {
                wqe->status = IB_WC_LOC_QP_OP_ERR;
-               goto exit;
+               goto err;
        }
 
        mask = rxe_opcode[opcode].mask;