RDMA/rxe: Fix incorrect rxe_put in error path
authorBob Pearson <rpearsonhpe@gmail.com>
Fri, 29 Mar 2024 14:55:12 +0000 (09:55 -0500)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 22 Apr 2024 19:54:33 +0000 (16:54 -0300)
commit8776618dbbd1b6f210b31509507e1aad461d6435
treed9fc6f2496da0f175c8256f4f29c547b56a3bf52
parent23bc06af547f2ca3b7d345e09fd8d04575406274
RDMA/rxe: Fix incorrect rxe_put in error path

In rxe_send() a ref is taken on the qp to keep it alive until the
kfree_skb() has a chance to call the skb destructor rxe_skb_tx_dtor()
which drops the reference. If the packet has an incorrect protocol the
error path just calls kfree_skb() which will call the destructor which
will drop the ref. Currently the driver also calls rxe_put() which is
incorrect. Additionally since the packets sent to rxe_send() are under the
control of the driver and it only ever produces IPV4 or IPV6 packets the
simplest fix is to remove all the code in this block.

Link: https://lore.kernel.org/r/20240329145513.35381-12-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Fixes: 9eb7f8e44d13 ("IB/rxe: Move refcounting earlier in rxe_send()")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_net.c