2009-01-09 20:06:32

by Christian Lamparter

[permalink] [raw]
Subject: [PATCH 3/3] p54: fix oops caused by bad eeproms

This patch fixes a bug that could occur, if it the eeprom is incomplete or partly corrupted.

BUG: unable to handle kernel NULL pointer dereference at 00000008
IP: p54_assign_address+0x108/0x15d [p54common]
Oops: 0002 [#1] SMP
Pid: 12988, comm: phy1 Tainted: P W 2.6.28-rc6-wl #3
RIP: 0010: p54_assign_address+0x108/0x15d [p54common]
[...]
Call Trace:
p54_alloc_skb+0xa3/0xc0 [p54common]
p54_scan+0x37/0x204 [p54common]
[...]

Signed-off-by: Christian Lamparter <[email protected]>
---
This is just a updated version of the old one:
http://www.spinics.net/lists/linux-wireless/msg24853.html
---
diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
--- a/drivers/net/wireless/p54/p54common.c 2009-01-09 19:14:11.000000000 +0100
+++ b/drivers/net/wireless/p54/p54common.c 2009-01-09 19:13:18.000000000 +0100
@@ -1674,7 +1674,7 @@ static int p54_scan(struct ieee80211_hw

err:
printk(KERN_ERR "%s: frequency change failed\n", wiphy_name(dev->wiphy));
- kfree_skb(skb);
+ p54_free_skb(dev, skb);
return -EINVAL;
}