User: | Jiri Slaby |
Error type: | Leaving function in locked state |
Error type description: | Some lock is not unlocked on all paths of a function, so it is leaked |
File location: | drivers/net/qlge/qlge_main.c |
Line in file: | 3541 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
Undetermined 1 |
Entered: | 2012-03-02 21:35:17 UTC |
3511 goto exit; 3512 } 3513 if (ql_set_routing_reg 3514 (qdev, RT_IDX_MCAST_MATCH_SLOT, RT_IDX_MCAST_MATCH, 1)) { 3515 QPRINTK(qdev, HW, ERR, 3516 "Failed to set multicast match mode.\n"); 3517 } else { 3518 set_bit(QL_ALLMULTI, &qdev->flags); 3519 } 3520 } 3521exit: 3522 spin_unlock(&qdev->hw_lock); 3523} 3524 3525static int qlge_set_mac_address(struct net_device *ndev, void *p) 3526{ 3527 struct ql_adapter *qdev = (struct ql_adapter *)netdev_priv(ndev); 3528 struct sockaddr *addr = p; 3529 3530 if (netif_running(ndev)) 3531 return -EBUSY; 3532 3533 if (!is_valid_ether_addr(addr->sa_data)) 3534 return -EADDRNOTAVAIL; 3535 memcpy(ndev->dev_addr, addr->sa_data, ndev->addr_len); 3536 3537 spin_lock(&qdev->hw_lock); 3538 if (ql_set_mac_addr_reg(qdev, (u8 *) ndev->dev_addr, 3539 MAC_ADDR_TYPE_CAM_MAC, qdev->func)) {/* Unicast */ 3540 QPRINTK(qdev, HW, ERR, "Failed to load MAC address.\n"); 3541 return -1; 3542 } 3543 spin_unlock(&qdev->hw_lock); 3544 3545 return 0; 3546} 3547 3548static void qlge_tx_timeout(struct net_device *ndev) 3549{ 3550 struct ql_adapter *qdev = (struct ql_adapter *)netdev_priv(ndev); 3551 queue_delayed_work(qdev->workqueue, &qdev->asic_reset_work, 0);