]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
RDMA/rxe: Handle skb_clone() failure in rxe_recv.c
authorBob Pearson <rpearsonhpe@gmail.com>
Tue, 13 Oct 2020 18:42:37 +0000 (13:42 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Oct 2020 09:11:51 +0000 (10:11 +0100)
[ Upstream commit 71abf20b28ff87fee6951ec2218d5ce7969c4e87 ]

If skb_clone() is unable to allocate memory for a new sk_buff this is not
detected by the current code.

Check for a NULL return and continue. This is similar to other errors in
this loop over QPs attached to the multicast address and consistent with
the unreliable UD transport.

Fixes: e7ec96fc7932f ("RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt()")
Addresses-Coverity-ID: 1497804: Null pointer dereferences (NULL_RETURNS)
Link: https://lore.kernel.org/r/20201013184236.5231-1-rpearson@hpe.com
Signed-off-by: Bob Pearson <rpearson@hpe.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/sw/rxe/rxe_recv.c

index 967ee8e1699cda9cf4bfc7e76943b77cdf0e93af..2da4187db80c9da95b7899d1e7707894d124fcd3 100644 (file)
@@ -298,6 +298,9 @@ static void rxe_rcv_mcast_pkt(struct rxe_dev *rxe, struct sk_buff *skb)
                else
                        per_qp_skb = skb;
 
+               if (unlikely(!per_qp_skb))
+                       continue;
+
                per_qp_pkt = SKB_TO_PKT(per_qp_skb);
                per_qp_pkt->qp = qp;
                rxe_add_ref(qp);