aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192e
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2011-09-01 13:23:14 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-06 19:35:56 -0400
commit35f8673d11b60c6c887f8f28734233a7aa580afa (patch)
tree4328071e00c6229fa9fc16f311417a5ba471c476 /drivers/staging/rtl8192e
parentaa9af000a30e81a40294c21861402dd3c8d610ea (diff)
staging: rtl8192e: Fix smatch error and warning in rtl_core.c
Smatch shows the following errors: CHECK drivers/staging/rtl8192e/rtl_core.c drivers/staging/rtl8192e/rtl_core.c +600 rtl8192_qos_activate(7) warn: variable dereferenced before check 'priv' drivers/staging/rtl8192e/rtl_core.c +1345 rtl8192_init(40) warn: 'dev->irq' was not released on error drivers/staging/rtl8192e/rtl_core.c +2120 rtl8192_alloc_rx_desc_ring(43) error: potential null derefence 'entry'. drivers/staging/rtl8192e/rtl_core.c +3010 rtl8192_pci_probe(153) warn: 'pmem_start' was not released on error Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192e')
-rw-r--r--drivers/staging/rtl8192e/rtl_core.c58
1 files changed, 24 insertions, 34 deletions
diff --git a/drivers/staging/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl_core.c
index ce0b2ff9273..4c5d7abd9be 100644
--- a/drivers/staging/rtl8192e/rtl_core.c
+++ b/drivers/staging/rtl8192e/rtl_core.c
@@ -448,7 +448,7 @@ bool MgntActSet_RF_State(struct net_device *dev,
448 spin_unlock_irqrestore(&priv->rf_ps_lock, flag); 448 spin_unlock_irqrestore(&priv->rf_ps_lock, flag);
449 } 449 }
450 450
451 RT_TRACE((COMP_PS && COMP_RF), "<===MgntActSet_RF_State()\n"); 451 RT_TRACE((COMP_PS | COMP_RF), "<===MgntActSet_RF_State()\n");
452 return bActionAllowed; 452 return bActionAllowed;
453} 453}
454 454
@@ -597,9 +597,6 @@ static void rtl8192_qos_activate(void *data)
597 struct net_device *dev = priv->rtllib->dev; 597 struct net_device *dev = priv->rtllib->dev;
598 int i; 598 int i;
599 599
600 if (priv == NULL)
601 return;
602
603 mutex_lock(&priv->mutex); 600 mutex_lock(&priv->mutex);
604 if (priv->rtllib->state != RTLLIB_LINKED) 601 if (priv->rtllib->state != RTLLIB_LINKED)
605 goto success; 602 goto success;
@@ -1342,6 +1339,7 @@ static short rtl8192_init(struct net_device *dev)
1342 1339
1343 if (rtl8192_pci_initdescring(dev) != 0) { 1340 if (rtl8192_pci_initdescring(dev) != 0) {
1344 printk(KERN_ERR "Endopoints initialization failed"); 1341 printk(KERN_ERR "Endopoints initialization failed");
1342 free_irq(dev->irq, dev);
1345 return -1; 1343 return -1;
1346 } 1344 }
1347 1345
@@ -2117,7 +2115,8 @@ static short rtl8192_alloc_rx_desc_ring(struct net_device *dev)
2117 entry->OWN = 1; 2115 entry->OWN = 1;
2118 } 2116 }
2119 2117
2120 entry->EOR = 1; 2118 if(entry)
2119 entry->EOR = 1;
2121 } 2120 }
2122 return 0; 2121 return 0;
2123} 2122}
@@ -2862,7 +2861,7 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2862 struct r8192_priv *priv = NULL; 2861 struct r8192_priv *priv = NULL;
2863 struct rtl819x_ops *ops = (struct rtl819x_ops *)(id->driver_data); 2862 struct rtl819x_ops *ops = (struct rtl819x_ops *)(id->driver_data);
2864 unsigned long pmem_start, pmem_len, pmem_flags; 2863 unsigned long pmem_start, pmem_len, pmem_flags;
2865 int err = 0; 2864 int err = -ENOMEM;
2866 bool bdma64 = false; 2865 bool bdma64 = false;
2867 u8 revision_id; 2866 u8 revision_id;
2868 2867
@@ -2878,14 +2877,14 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2878 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { 2877 if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
2879 if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) { 2878 if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
2880 printk(KERN_INFO "Unable to obtain 32bit DMA for consistent allocations\n"); 2879 printk(KERN_INFO "Unable to obtain 32bit DMA for consistent allocations\n");
2881 pci_disable_device(pdev); 2880 goto err_pci_disable;
2882 return -ENOMEM;
2883 } 2881 }
2884 } 2882 }
2885 dev = alloc_rtllib(sizeof(struct r8192_priv)); 2883 dev = alloc_rtllib(sizeof(struct r8192_priv));
2886 if (!dev) 2884 if (!dev)
2887 return -ENOMEM; 2885 goto err_pci_disable;
2888 2886
2887 err = -ENODEV;
2889 if (bdma64) 2888 if (bdma64)
2890 dev->features |= NETIF_F_HIGHDMA; 2889 dev->features |= NETIF_F_HIGHDMA;
2891 2890
@@ -2907,20 +2906,20 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2907 2906
2908 if (!(pmem_flags & IORESOURCE_MEM)) { 2907 if (!(pmem_flags & IORESOURCE_MEM)) {
2909 RT_TRACE(COMP_ERR, "region #1 not a MMIO resource, aborting"); 2908 RT_TRACE(COMP_ERR, "region #1 not a MMIO resource, aborting");
2910 goto fail; 2909 goto err_rel_rtllib;
2911 } 2910 }
2912 2911
2913 printk(KERN_INFO "Memory mapped space start: 0x%08lx\n", pmem_start); 2912 printk(KERN_INFO "Memory mapped space start: 0x%08lx\n", pmem_start);
2914 if (!request_mem_region(pmem_start, pmem_len, DRV_NAME)) { 2913 if (!request_mem_region(pmem_start, pmem_len, DRV_NAME)) {
2915 RT_TRACE(COMP_ERR, "request_mem_region failed!"); 2914 RT_TRACE(COMP_ERR, "request_mem_region failed!");
2916 goto fail; 2915 goto err_rel_rtllib;
2917 } 2916 }
2918 2917
2919 2918
2920 ioaddr = (unsigned long)ioremap_nocache(pmem_start, pmem_len); 2919 ioaddr = (unsigned long)ioremap_nocache(pmem_start, pmem_len);
2921 if (ioaddr == (unsigned long)NULL) { 2920 if (ioaddr == (unsigned long)NULL) {
2922 RT_TRACE(COMP_ERR, "ioremap failed!"); 2921 RT_TRACE(COMP_ERR, "ioremap failed!");
2923 goto fail1; 2922 goto err_rel_mem;
2924 } 2923 }
2925 2924
2926 dev->mem_start = ioaddr; 2925 dev->mem_start = ioaddr;
@@ -2929,12 +2928,12 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2929 pci_read_config_byte(pdev, 0x08, &revision_id); 2928 pci_read_config_byte(pdev, 0x08, &revision_id);
2930 /* If the revisionid is 0x10, the device uses rtl8192se. */ 2929 /* If the revisionid is 0x10, the device uses rtl8192se. */
2931 if (pdev->device == 0x8192 && revision_id == 0x10) 2930 if (pdev->device == 0x8192 && revision_id == 0x10)
2932 goto fail1; 2931 goto err_rel_mem;
2933 2932
2934 priv->ops = ops; 2933 priv->ops = ops;
2935 2934
2936 if (rtl8192_pci_findadapter(pdev, dev) == false) 2935 if (rtl8192_pci_findadapter(pdev, dev) == false)
2937 goto fail1; 2936 goto err_rel_mem;
2938 2937
2939 dev->irq = pdev->irq; 2938 dev->irq = pdev->irq;
2940 priv->irq = 0; 2939 priv->irq = 0;
@@ -2967,7 +2966,7 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2967 RT_TRACE(COMP_INIT, "Driver probe completed1\n"); 2966 RT_TRACE(COMP_INIT, "Driver probe completed1\n");
2968 if (rtl8192_init(dev) != 0) { 2967 if (rtl8192_init(dev) != 0) {
2969 RT_TRACE(COMP_ERR, "Initialization failed"); 2968 RT_TRACE(COMP_ERR, "Initialization failed");
2970 goto fail1; 2969 goto err_free_irq;
2971 } 2970 }
2972 2971
2973 netif_carrier_off(dev); 2972 netif_carrier_off(dev);
@@ -2987,28 +2986,19 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
2987 RT_TRACE(COMP_INIT, "Driver probe completed\n"); 2986 RT_TRACE(COMP_INIT, "Driver probe completed\n");
2988 return 0; 2987 return 0;
2989 2988
2990fail1: 2989err_free_irq:
2991 if (dev->mem_start != (unsigned long)NULL) { 2990 free_irq(dev->irq, dev);
2992 iounmap((void *)dev->mem_start); 2991 priv->irq = 0;
2993 release_mem_region(pci_resource_start(pdev, 1), 2992err_rel_mem:
2994 pci_resource_len(pdev, 1)); 2993 release_mem_region(pmem_start, pmem_len);
2995 } 2994err_rel_rtllib:
2996 2995 free_rtllib(dev);
2997fail:
2998 if (dev) {
2999 if (priv->irq) {
3000 free_irq(dev->irq, dev);
3001 priv->irq = 0;
3002 }
3003 free_rtllib(dev);
3004 }
3005
3006 pci_disable_device(pdev);
3007 2996
3008 DMESG("wlan driver load failed\n"); 2997 DMESG("wlan driver load failed\n");
3009 pci_set_drvdata(pdev, NULL); 2998 pci_set_drvdata(pdev, NULL);
3010 return -ENODEV; 2999err_pci_disable:
3011 3000 pci_disable_device(pdev);
3001 return err;
3012} 3002}
3013 3003
3014static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev) 3004static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev)