qlcnic: Add null check after calling netdev_alloc_skb
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>
This commit is contained in:
parent
b95b57dfe7
commit
84460f01cb
|
@ -1047,6 +1047,8 @@ int qlcnic_do_lb_test(struct qlcnic_adapter *adapter, u8 mode)
|
||||||
|
|
||||||
for (i = 0; i < QLCNIC_NUM_ILB_PKT; i++) {
|
for (i = 0; i < QLCNIC_NUM_ILB_PKT; i++) {
|
||||||
skb = netdev_alloc_skb(adapter->netdev, QLCNIC_ILB_PKT_SIZE);
|
skb = netdev_alloc_skb(adapter->netdev, QLCNIC_ILB_PKT_SIZE);
|
||||||
|
if (!skb)
|
||||||
|
goto error;
|
||||||
qlcnic_create_loopback_buff(skb->data, adapter->mac_addr);
|
qlcnic_create_loopback_buff(skb->data, adapter->mac_addr);
|
||||||
skb_put(skb, QLCNIC_ILB_PKT_SIZE);
|
skb_put(skb, QLCNIC_ILB_PKT_SIZE);
|
||||||
adapter->ahw->diag_cnt = 0;
|
adapter->ahw->diag_cnt = 0;
|
||||||
|
@ -1070,6 +1072,7 @@ int qlcnic_do_lb_test(struct qlcnic_adapter *adapter, u8 mode)
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
if (cnt != i) {
|
if (cnt != i) {
|
||||||
|
error:
|
||||||
dev_err(&adapter->pdev->dev,
|
dev_err(&adapter->pdev->dev,
|
||||||
"LB Test: failed, TX[%d], RX[%d]\n", i, cnt);
|
"LB Test: failed, TX[%d], RX[%d]\n", i, cnt);
|
||||||
if (mode != QLCNIC_ILB_MODE)
|
if (mode != QLCNIC_ILB_MODE)
|
||||||
|
|
Loading…
Reference in New Issue