RDMA/cxgb4: Check skb value for failure to allocate
authorArtem Chernyshev <artem.chernyshev@red-soft.ru>
Tue, 5 Sep 2023 12:40:48 +0000 (15:40 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Oct 2023 21:08:49 +0000 (23:08 +0200)
[ Upstream commit 8fb8a82086f5bda6893ea6557c5a458e4549c6d7 ]

get_skb() can fail to allocate skb, so check it.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 5be78ee924ae ("RDMA/cxgb4: Fix LE hash collision bug for active open connection")
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Link: https://lore.kernel.org/r/20230905124048.284165-1-artem.chernyshev@red-soft.ru
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/cxgb4/cm.c

index ced615b5ea096ed58d4198ceaf8b960428d98ecd..040ba2224f9ff67e508f5ecd443c96f8cb8f645c 100644 (file)
@@ -1965,6 +1965,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
        int win;
 
        skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
+       if (!skb)
+               return -ENOMEM;
+
        req = __skb_put_zero(skb, sizeof(*req));
        req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
        req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));