Skip to content

Commit

Permalink
[WAN]: kfree of NULL pointer is valid
Browse files Browse the repository at this point in the history
kfree(0) is perfectly valid, checking pointers for NULL before calling 
kfree() on them is redundant. The patch below cleans away a few such 
redundant checks (and while I was around some of those bits I couldn't 
stop myself from making a few tiny whitespace changes as well).

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Acked-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jesper Juhl authored and David S. Miller committed May 3, 2005
1 parent db46edc commit 6a5d362
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 45 deletions.
8 changes: 2 additions & 6 deletions drivers/net/wan/cycx_x25.c
Original file line number Diff line number Diff line change
Expand Up @@ -436,9 +436,7 @@ static int cycx_wan_new_if(struct wan_device *wandev, struct net_device *dev,
}

if (err) {
if (chan->local_addr)
kfree(chan->local_addr);

kfree(chan->local_addr);
kfree(chan);
return err;
}
Expand All @@ -458,9 +456,7 @@ static int cycx_wan_del_if(struct wan_device *wandev, struct net_device *dev)
struct cycx_x25_channel *chan = dev->priv;

if (chan->svc) {
if (chan->local_addr)
kfree(chan->local_addr);

kfree(chan->local_addr);
if (chan->state == WAN_CONNECTED)
del_timer(&chan->timer);
}
Expand Down
27 changes: 11 additions & 16 deletions drivers/net/wan/pc300_tty.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,10 +400,8 @@ static void cpc_tty_close(struct tty_struct *tty, struct file *flip)
cpc_tty->buf_rx.last = NULL;
}

if (cpc_tty->buf_tx) {
kfree(cpc_tty->buf_tx);
cpc_tty->buf_tx = NULL;
}
kfree(cpc_tty->buf_tx);
cpc_tty->buf_tx = NULL;

CPC_TTY_DBG("%s: TTY closed\n",cpc_tty->name);

Expand Down Expand Up @@ -666,7 +664,7 @@ static void cpc_tty_rx_work(void * data)
unsigned long port;
int i, j;
st_cpc_tty_area *cpc_tty;
volatile st_cpc_rx_buf * buf;
volatile st_cpc_rx_buf *buf;
char flags=0,flg_rx=1;
struct tty_ldisc *ld;

Expand All @@ -680,9 +678,9 @@ static void cpc_tty_rx_work(void * data)
cpc_tty = &cpc_tty_area[port];

if ((buf=cpc_tty->buf_rx.first) != 0) {
if(cpc_tty->tty) {
if (cpc_tty->tty) {
ld = tty_ldisc_ref(cpc_tty->tty);
if(ld) {
if (ld) {
if (ld->receive_buf) {
CPC_TTY_DBG("%s: call line disc. receive_buf\n",cpc_tty->name);
ld->receive_buf(cpc_tty->tty, (char *)(buf->data), &flags, buf->size);
Expand All @@ -691,7 +689,7 @@ static void cpc_tty_rx_work(void * data)
}
}
cpc_tty->buf_rx.first = cpc_tty->buf_rx.first->next;
kfree((unsigned char *)buf);
kfree(buf);
buf = cpc_tty->buf_rx.first;
flg_rx = 1;
}
Expand Down Expand Up @@ -733,7 +731,7 @@ static void cpc_tty_rx_disc_frame(pc300ch_t *pc300chan)

void cpc_tty_receive(pc300dev_t *pc300dev)
{
st_cpc_tty_area *cpc_tty;
st_cpc_tty_area *cpc_tty;
pc300ch_t *pc300chan = (pc300ch_t *)pc300dev->chan;
pc300_t *card = (pc300_t *)pc300chan->card;
int ch = pc300chan->channel;
Expand All @@ -742,7 +740,7 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
int rx_len, rx_aux;
volatile unsigned char status;
unsigned short first_bd = pc300chan->rx_first_bd;
st_cpc_rx_buf *new=NULL;
st_cpc_rx_buf *new = NULL;
unsigned char dsr_rx;

if (pc300dev->cpc_tty == NULL) {
Expand All @@ -762,7 +760,7 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
if (status & DST_EOM) {
break;
}
ptdescr=(pcsca_bd_t __iomem *)(card->hw.rambase+cpc_readl(&ptdescr->next));
ptdescr = (pcsca_bd_t __iomem *)(card->hw.rambase+cpc_readl(&ptdescr->next));
}

if (!rx_len) {
Expand All @@ -771,10 +769,7 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
cpc_writel(card->hw.scabase + DRX_REG(EDAL, ch),
RX_BD_ADDR(ch, pc300chan->rx_last_bd));
}
if (new) {
kfree(new);
new = NULL;
}
kfree(new);
return;
}

Expand All @@ -787,7 +782,7 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
continue;
}

new = (st_cpc_rx_buf *) kmalloc(rx_len + sizeof(st_cpc_rx_buf), GFP_ATOMIC);
new = (st_cpc_rx_buf *)kmalloc(rx_len + sizeof(st_cpc_rx_buf), GFP_ATOMIC);
if (new == 0) {
cpc_tty_rx_disc_frame(pc300chan);
continue;
Expand Down
13 changes: 4 additions & 9 deletions drivers/net/wan/sdla_chdlc.c
Original file line number Diff line number Diff line change
Expand Up @@ -3664,15 +3664,10 @@ static void wanpipe_tty_close(struct tty_struct *tty, struct file * filp)
chdlc_disable_comm_shutdown(card);
unlock_adapter_irq(&card->wandev.lock,&smp_flags);

if (card->tty_buf){
kfree(card->tty_buf);
card->tty_buf=NULL;
}

if (card->tty_rx){
kfree(card->tty_rx);
card->tty_rx=NULL;
}
kfree(card->tty_buf);
card->tty_buf = NULL;
kfree(card->tty_rx);
card->tty_rx = NULL;
}
return;
}
Expand Down
20 changes: 6 additions & 14 deletions drivers/net/wan/x25_asy.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,9 @@ static struct x25_asy *x25_asy_alloc(void)
static void x25_asy_free(struct x25_asy *sl)
{
/* Free all X.25 frame buffers. */
if (sl->rbuff) {
kfree(sl->rbuff);
}
kfree(sl->rbuff);
sl->rbuff = NULL;
if (sl->xbuff) {
kfree(sl->xbuff);
}
kfree(sl->xbuff);
sl->xbuff = NULL;

if (!test_and_clear_bit(SLF_INUSE, &sl->flags)) {
Expand All @@ -134,10 +130,8 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)
{
printk("%s: unable to grow X.25 buffers, MTU change cancelled.\n",
dev->name);
if (xbuff != NULL)
kfree(xbuff);
if (rbuff != NULL)
kfree(rbuff);
kfree(xbuff);
kfree(rbuff);
return -ENOMEM;
}

Expand Down Expand Up @@ -169,10 +163,8 @@ static int x25_asy_change_mtu(struct net_device *dev, int newmtu)

spin_unlock_bh(&sl->lock);

if (xbuff != NULL)
kfree(xbuff);
if (rbuff != NULL)
kfree(rbuff);
kfree(xbuff);
kfree(rbuff);
return 0;
}

Expand Down

0 comments on commit 6a5d362

Please sign in to comment.