hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/net/ethernet/qlogic/qla3xxx.c
....@@ -1,8 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * QLogic QLA3xxx NIC HBA Driver
34 * Copyright (c) 2003-2006 QLogic Corporation
4
- *
5
- * See LICENSE.qla3xxx for copyright and licensing details.
65 */
76
87 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
....@@ -1542,7 +1541,7 @@
15421541 if (test_bit(QL_LINK_MASTER, &qdev->flags))
15431542 ql_port_start(qdev);
15441543 qdev->port_link_state = LS_DOWN;
1545
- /* Fall Through */
1544
+ fallthrough;
15461545
15471546 case LS_DOWN:
15481547 if (curr_link_state == LS_UP) {
....@@ -1858,7 +1857,6 @@
18581857 wmb();
18591858 writel_relaxed(qdev->small_buf_q_producer_index,
18601859 &port_regs->CommonRegs.rxSmallQProducerIndex);
1861
- mmiowb();
18621860 }
18631861 }
18641862
....@@ -2477,6 +2475,7 @@
24772475 skb_shinfo(skb)->nr_frags);
24782476 if (tx_cb->seg_count == -1) {
24792477 netdev_err(ndev, "%s: invalid segment count!\n", __func__);
2478
+ dev_kfree_skb_any(skb);
24802479 return NETDEV_TX_OK;
24812480 }
24822481
....@@ -3602,7 +3601,7 @@
36023601 return 0;
36033602 }
36043603
3605
-static void ql3xxx_tx_timeout(struct net_device *ndev)
3604
+static void ql3xxx_tx_timeout(struct net_device *ndev, unsigned int txqueue)
36063605 {
36073606 struct ql3_adapter *qdev = netdev_priv(ndev);
36083607
....@@ -3630,7 +3629,8 @@
36303629 qdev->mem_map_registers;
36313630 unsigned long hw_flags;
36323631
3633
- if (test_bit((QL_RESET_PER_SCSI | QL_RESET_START), &qdev->flags)) {
3632
+ if (test_bit(QL_RESET_PER_SCSI, &qdev->flags) ||
3633
+ test_bit(QL_RESET_START, &qdev->flags)) {
36343634 clear_bit(QL_LINK_MASTER, &qdev->flags);
36353635
36363636 /*
....@@ -3769,7 +3769,7 @@
37693769 struct net_device *ndev = NULL;
37703770 struct ql3_adapter *qdev = NULL;
37713771 static int cards_found;
3772
- int uninitialized_var(pci_using_dac), err;
3772
+ int pci_using_dac, err;
37733773
37743774 err = pci_enable_device(pdev);
37753775 if (err) {
....@@ -3886,6 +3886,12 @@
38863886 netif_stop_queue(ndev);
38873887
38883888 qdev->workqueue = create_singlethread_workqueue(ndev->name);
3889
+ if (!qdev->workqueue) {
3890
+ unregister_netdev(ndev);
3891
+ err = -ENOMEM;
3892
+ goto err_out_iounmap;
3893
+ }
3894
+
38893895 INIT_DELAYED_WORK(&qdev->reset_work, ql_reset_work);
38903896 INIT_DELAYED_WORK(&qdev->tx_timeout_work, ql_tx_timeout_work);
38913897 INIT_DELAYED_WORK(&qdev->link_state_work, ql_link_state_machine_work);