2008-12-04 13:29:15

by Christian Lamparter

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

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

e.g:
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]>
---
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
index 719bdab..234fee3 100644
--- a/drivers/net/wireless/p54/p54common.c
+++ b/drivers/net/wireless/p54/p54common.c
@@ -1490,7 +1490,7 @@ static int p54_scan(struct ieee80211_hw *dev, u16 mode, u16 dwell,

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