diff options
Diffstat (limited to 'drivers/staging/slicoss/slicoss.c')
-rw-r--r-- | drivers/staging/slicoss/slicoss.c | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/drivers/staging/slicoss/slicoss.c b/drivers/staging/slicoss/slicoss.c index 56829fc..cd920da 100644 --- a/drivers/staging/slicoss/slicoss.c +++ b/drivers/staging/slicoss/slicoss.c @@ -514,8 +514,7 @@ static int slic_card_download_gbrcv(struct adapter *adapter) file = "slicoss/gbrcvucode.sys"; break; default: - ASSERT(0); - break; + return -ENOENT; } ret = request_firmware(&fw, file, &adapter->pcidev->dev); @@ -529,15 +528,16 @@ static int slic_card_download_gbrcv(struct adapter *adapter) index += 4; switch (adapter->devid) { case SLIC_2GB_DEVICE_ID: - if (rcvucodelen != OasisRcvUCodeLen) + if (rcvucodelen != OasisRcvUCodeLen) { + release_firmware(fw); return -EINVAL; + } break; case SLIC_1GB_DEVICE_ID: - if (rcvucodelen != GBRcvUCodeLen) + if (rcvucodelen != GBRcvUCodeLen) { + release_firmware(fw); return -EINVAL; - break; - default: - ASSERT(0); + } break; } /* start download */ @@ -2552,7 +2552,6 @@ static void slic_mcast_set_list(struct net_device *dev) if (status == 0) slic_mcast_set_mask(adapter); } - return; } #define XMIT_FAIL_LINK_STATE 1 @@ -3132,7 +3131,6 @@ static int slic_entry_open(struct net_device *dev) { struct adapter *adapter = netdev_priv(dev); struct sliccard *card = adapter->card; - u32 locked = 0; int status; ASSERT(adapter); @@ -3142,7 +3140,6 @@ static int slic_entry_open(struct net_device *dev) spin_lock_irqsave(&slic_global.driver_lock.lock, slic_global.driver_lock.flags); - locked = 1; if (!adapter->activated) { card->adapters_activated++; slic_global.num_slic_ports_active++; @@ -3156,23 +3153,15 @@ static int slic_entry_open(struct net_device *dev) slic_global.num_slic_ports_active--; adapter->activated = 0; } - if (locked) { - spin_unlock_irqrestore(&slic_global.driver_lock.lock, - slic_global.driver_lock.flags); - locked = 0; - } - return status; + goto spin_unlock; } if (!card->master) card->master = adapter; - if (locked) { - spin_unlock_irqrestore(&slic_global.driver_lock.lock, - slic_global.driver_lock.flags); - locked = 0; - } - - return 0; +spin_unlock: + spin_unlock_irqrestore(&slic_global.driver_lock.lock, + slic_global.driver_lock.flags); + return status; } static void slic_card_cleanup(struct sliccard *card) @@ -3712,9 +3701,8 @@ static void slic_init_adapter(struct net_device *netdev, phys_shmem); ASSERT(adapter->pshmem); - memset(adapter->pshmem, 0, sizeof(struct slic_shmem)); - - return; + if (adapter->pshmem) + memset(adapter->pshmem, 0, sizeof(struct slic_shmem)); } static const struct net_device_ops slic_netdev_ops = { |