diff options
author | Shaun Ruffell <sruffell@digium.com> | 2009-03-24 19:08:17 +0000 |
---|---|---|
committer | Shaun Ruffell <sruffell@digium.com> | 2009-03-24 19:08:17 +0000 |
commit | 25795a1e656516e3b5dec0d10bb1917d126dca72 (patch) | |
tree | 6f01cac184ec6880f4e1e9e68d01a106c177cf6a /drivers/dahdi/wctc4xxp | |
parent | dd4a3c8ecf8d1be8429d324bad879c62abadd8e1 (diff) |
Eliminate unnecessary checks for NULL before freeing memory.
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@6246 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wctc4xxp')
-rw-r--r-- | drivers/dahdi/wctc4xxp/base.c | 43 |
1 files changed, 15 insertions, 28 deletions
diff --git a/drivers/dahdi/wctc4xxp/base.c b/drivers/dahdi/wctc4xxp/base.c index 10c7824..1793e7c 100644 --- a/drivers/dahdi/wctc4xxp/base.c +++ b/drivers/dahdi/wctc4xxp/base.c @@ -200,6 +200,7 @@ struct csm_encaps_hdr { /* Transcoder buffer (tcb) */ struct tcb { + void *data; struct list_head node; unsigned long timeout; unsigned long retries; @@ -217,7 +218,6 @@ struct tcb { struct tcb *response; struct completion complete; struct timer_list timer; - void *data; /* The number of bytes available in data. */ int data_len; spinlock_t lock; @@ -1579,6 +1579,9 @@ wctc4xxp_cleanup_descriptor_ring(struct wctc4xxp_descriptor_ring *dr) int i; struct wctc4xxp_descriptor *d; + if (!dr || !dr->desc) + return; + for (i = 0; i < DRING_SIZE; ++i) { d = wctc4xxp_descriptor(dr, i); if (d->buffer1) { @@ -3590,20 +3593,12 @@ error_exit_swinit: wctc4xxp_net_unregister(wc); kfree(wc->encoders); kfree(wc->decoders); - if (wc->uencode) - dahdi_transcoder_free(wc->uencode); - if (wc->udecode) - dahdi_transcoder_free(wc->udecode); - if (wc->txd) { - if (wc->txd->desc) - wctc4xxp_cleanup_descriptor_ring(wc->txd); - kfree(wc->txd); - } - if (wc->rxd) { - if (wc->rxd && wc->rxd->desc) - wctc4xxp_cleanup_descriptor_ring(wc->rxd); - kfree(wc->rxd); - } + dahdi_transcoder_free(wc->uencode); + dahdi_transcoder_free(wc->udecode); + wctc4xxp_cleanup_descriptor_ring(wc->txd); + kfree(wc->txd); + wctc4xxp_cleanup_descriptor_ring(wc->rxd); + kfree(wc->rxd); release_region(wc->iobase, 0xff); spin_lock(&wctc4xxp_list_lock); list_del(&wc->node); @@ -3630,10 +3625,8 @@ static void __devexit wctc4xxp_remove_one(struct pci_dev *pdev) { struct wcdte *wc = pci_get_drvdata(pdev); - if (!wc) { - /* \todo print warning message here. */ + if (!wc) return; - } spin_lock(&wctc4xxp_list_lock); list_del(&wc->node); @@ -3666,16 +3659,10 @@ static void __devexit wctc4xxp_remove_one(struct pci_dev *pdev) /* Free Resources */ release_region(wc->iobase, 0xff); - if (wc->txd) { - if (wc->txd->desc) - wctc4xxp_cleanup_descriptor_ring(wc->txd); - kfree(wc->txd); - } - if (wc->rxd) { - if (wc->rxd && wc->rxd->desc) - wctc4xxp_cleanup_descriptor_ring(wc->rxd); - kfree(wc->rxd); - } + wctc4xxp_cleanup_descriptor_ring(wc->txd); + kfree(wc->txd); + wctc4xxp_cleanup_descriptor_ring(wc->rxd); + kfree(wc->rxd); wctc4xxp_cleanup_command_list(wc); wctc4xxp_cleanup_channels(wc); |