Commit 6468c98f authored by Dave Jones's avatar Dave Jones Committed by Linus Torvalds

[PATCH] Fix potential leaks in pc300_tty driver

It appears that 'new' can be allocated, and next time around
the loop, if something goes wrong, we lose the reference..

Spotted with the source checker from Coverity.com.
Signed-off-by: default avatarDave Jones <davej@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e930d420
...@@ -789,6 +789,10 @@ void cpc_tty_receive(pc300dev_t *pc300dev) ...@@ -789,6 +789,10 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
cpc_writel(card->hw.scabase + DRX_REG(EDAL, ch), cpc_writel(card->hw.scabase + DRX_REG(EDAL, ch),
RX_BD_ADDR(ch, pc300chan->rx_last_bd)); RX_BD_ADDR(ch, pc300chan->rx_last_bd));
} }
if (new) {
kfree(new);
new = NULL;
}
return; return;
} }
...@@ -834,7 +838,8 @@ void cpc_tty_receive(pc300dev_t *pc300dev) ...@@ -834,7 +838,8 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
cpc_tty->name); cpc_tty->name);
cpc_tty_rx_disc_frame(pc300chan); cpc_tty_rx_disc_frame(pc300chan);
rx_len = 0; rx_len = 0;
kfree((unsigned char *)new); kfree(new);
new = NULL;
break; /* read next frame - while(1) */ break; /* read next frame - while(1) */
} }
...@@ -843,7 +848,8 @@ void cpc_tty_receive(pc300dev_t *pc300dev) ...@@ -843,7 +848,8 @@ void cpc_tty_receive(pc300dev_t *pc300dev)
cpc_tty_rx_disc_frame(pc300chan); cpc_tty_rx_disc_frame(pc300chan);
stats->rx_dropped++; stats->rx_dropped++;
rx_len = 0; rx_len = 0;
kfree((unsigned char *)new); kfree(new);
new = NULL;
break; /* read next frame - while(1) */ break; /* read next frame - while(1) */
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment