summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wctc4xxp
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2009-03-24 19:08:17 +0000
committerShaun Ruffell <sruffell@digium.com>2009-03-24 19:08:17 +0000
commit25795a1e656516e3b5dec0d10bb1917d126dca72 (patch)
tree6f01cac184ec6880f4e1e9e68d01a106c177cf6a /drivers/dahdi/wctc4xxp
parentdd4a3c8ecf8d1be8429d324bad879c62abadd8e1 (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.c43
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);