aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2008-03-04 14:28:50 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-04 16:35:13 -0800
commita51f4124e6d69afdfae34a2ff2e580e7bf224ad2 (patch)
tree5db5968bdd88e7db69847604e1efbd46f8dda14f
parent3149be50d3a31df095bcc83d752293da65a37f62 (diff)
downloadkernel_goldelico_gta04-a51f4124e6d69afdfae34a2ff2e580e7bf224ad2.zip
kernel_goldelico_gta04-a51f4124e6d69afdfae34a2ff2e580e7bf224ad2.tar.gz
kernel_goldelico_gta04-a51f4124e6d69afdfae34a2ff2e580e7bf224ad2.tar.bz2
ipwireless: fix potential tty == NULL dereference
The Coverity checker spotted the following inconsequent NULL checking in drivers/char/pcmcia/ipwireless/network.c:ipwireless_network_packet_received() if (tty && channel_idx == IPW_CHANNEL_RAS && (network->ras_control_lines & IPW_CONTROL_LINE_DCD) != 0 && ipwireless_tty_is_modem(tty)) { ... else ipwireless_tty_received(tty, data, length); Cc: Adrian Bunk <bunk@kernel.org> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Cc: "John W. Linville" <linville@tuxdriver.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/char/pcmcia/ipwireless/network.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/char/pcmcia/ipwireless/network.c b/drivers/char/pcmcia/ipwireless/network.c
index ff35230..d793e68b 100644
--- a/drivers/char/pcmcia/ipwireless/network.c
+++ b/drivers/char/pcmcia/ipwireless/network.c
@@ -377,13 +377,16 @@ void ipwireless_network_packet_received(struct ipw_network *network,
for (i = 0; i < MAX_ASSOCIATED_TTYS; i++) {
struct ipw_tty *tty = network->associated_ttys[channel_idx][i];
+ if (!tty)
+ continue;
+
/*
* If it's associated with a tty (other than the RAS channel
* when we're online), then send the data to that tty. The RAS
* channel's data is handled above - it always goes through
* ppp_generic.
*/
- if (tty && channel_idx == IPW_CHANNEL_RAS
+ if (channel_idx == IPW_CHANNEL_RAS
&& (network->ras_control_lines &
IPW_CONTROL_LINE_DCD) != 0
&& ipwireless_tty_is_modem(tty)) {