| From 84460f01cba382553199bc1361f69a872d5abed4 Mon Sep 17 00:00:00 2001 |
| From: Tom Seewald <tseewald@gmail.com> |
| Date: Mon, 3 May 2021 13:56:52 +0200 |
| Subject: qlcnic: Add null check after calling netdev_alloc_skb |
| |
| From: Tom Seewald <tseewald@gmail.com> |
| |
| commit 84460f01cba382553199bc1361f69a872d5abed4 upstream. |
| |
| The function qlcnic_dl_lb_test() currently calls netdev_alloc_skb() |
| without checking afterwards that the allocation succeeded. Fix this by |
| checking if the skb is NULL and returning an error in such a case. |
| Breaking out of the loop if the skb is NULL is not correct as no error |
| would be reported to the caller and no message would be printed for the |
| user. |
| |
| Cc: David S. Miller <davem@davemloft.net> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Tom Seewald <tseewald@gmail.com> |
| Link: https://lore.kernel.org/r/20210503115736.2104747-26-gregkh@linuxfoundation.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c |
| +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c |
| @@ -1038,6 +1038,8 @@ int qlcnic_do_lb_test(struct qlcnic_adap |
| |
| for (i = 0; i < QLCNIC_NUM_ILB_PKT; i++) { |
| skb = netdev_alloc_skb(adapter->netdev, QLCNIC_ILB_PKT_SIZE); |
| + if (!skb) |
| + goto error; |
| qlcnic_create_loopback_buff(skb->data, adapter->mac_addr); |
| skb_put(skb, QLCNIC_ILB_PKT_SIZE); |
| adapter->ahw->diag_cnt = 0; |
| @@ -1061,6 +1063,7 @@ int qlcnic_do_lb_test(struct qlcnic_adap |
| cnt++; |
| } |
| if (cnt != i) { |
| +error: |
| dev_err(&adapter->pdev->dev, |
| "LB Test: failed, TX[%d], RX[%d]\n", i, cnt); |
| if (mode != QLCNIC_ILB_MODE) |