projects
/
openwrt
/
staging
/
981213.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2e7f38c
)
generic: ar8216: clear driver specific data pointer in phy_device
author
Gabor Juhos
<juhosg@openwrt.org>
Tue, 5 Feb 2013 08:39:26 +0000
(08:39 +0000)
committer
Gabor Juhos
<juhosg@openwrt.org>
Tue, 5 Feb 2013 08:39:26 +0000
(08:39 +0000)
This is needed to avoid a NULL pointer dereference:
[ 19.525270] Unable to handle kernel paging request for data at address 0x00000018
[ 19.532750] Faulting instruction address: 0xc016e104
[ 19.537714] Oops: Kernel access of bad area, sig: 11 [#1]
[ 19.543102] P1010 RDB
[ 19.545365] Modules linked in: booke_wdt nf_nat_irc nf_nat_ftp nf_conntrack_irc nf_conntrack_ftp ipt_MASQUERADE iptable_nat xt_nat d
[ 19.590725] NIP:
c016e104
LR:
c0171490
CTR:
00000000
[ 19.595681] REGS:
c4bc3c10
TRAP: 0300 Tainted: G W O (3.7.6)
[ 19.602284] MSR:
00029000
<CE,EE,ME> CR:
82002022
XER:
20000000
[ 19.608381] DEAR:
00000018
, ESR:
00000000
[ 19.612382] TASK =
c4cd9c80
[2070] 'ifconfig' THREAD:
c4bc2000
GPR00:
00000001
c4bc3cc0
c4cd9c80
00000000
c7811000
00000000
00000000
0000e8ec
GPR08:
0000e8eb
00000000
00029000
00000001
00000000
100801f8
1005c51c
1005c514
GPR16:
1005c468
1005c54c
1005c258
1005c530
10060000
00000000
c7811000
ffff8914
GPR24:
c7815030
c793e400
10063adb
00000000
c7811000
c045594c
c78ca600
c7815000
[ 19.646352] NIP [
c016e104
] register_switch+0x98/0x2d0
[ 19.651397] LR [
c0171490
] ar8216_config_init+0x2d8/0x3f4
[ 19.656697] Call Trace:
[ 19.659138] [
c4bc3cc0
] [
c0170490
] ar8216_mii_read+0x64/0xc4 (unreliable)
[ 19.665835] [
c4bc3d00
] [
c0171490
] ar8216_config_init+0x2d8/0x3f4
[ 19.671835] [
c4bc3d20
] [
c016cf8c
] phy_init_hw+0x50/0x6c
[ 19.677053] [
c4bc3d30
] [
c016d078
] phy_attach_direct+0xd0/0xf8
[ 19.682793] [
c4bc3d50
] [
c016d154
] phy_connect_direct+0x24/0x68
[ 19.688621] [
c4bc3d70
] [
c0183b70
] of_phy_connect+0x48/0x6c
[ 19.694102] [
c4bc3d90
] [
c0175aac
] gfar_enet_open+0x254/0x3d8
[ 19.699755] [
c4bc3db0
] [
c019acc4
] __dev_open+0xc0/0x120
[ 19.704975] [
c4bc3dd0
] [
c019af98
] __dev_change_flags+0xd4/0x15c
[ 19.710888] [
c4bc3df0
] [
c019b0d4
] dev_change_flags+0x1c/0x60
[ 19.716544] [
c4bc3e10
] [
c01ebb94
] devinet_ioctl+0x290/0x690
[ 19.722111] [
c4bc3e70
] [
c01ec8d4
] inet_ioctl+0x88/0xbc
[ 19.727245] [
c4bc3e80
] [
c0186b98
] sock_ioctl+0x258/0x294
[ 19.732551] [
c4bc3ea0
] [
c009c00c
] do_vfs_ioctl+0x6a4/0x728
[ 19.738031] [
c4bc3f10
] [
c009c0d4
] sys_ioctl+0x44/0x70
[ 19.743077] [
c4bc3f40
] [
c000c74c
] ret_from_syscall+0x0/0x3c
[ 19.748646] --- Exception: c01 at 0x48091b34
[ 19.748646] LR = 0x480e4b64
[ 19.756033] Instruction dump:
[ 19.758991]
2f830000
907f0050
3860fff4
419e021c
837f0000
38000000
901f0038
901f0040
[ 19.766744]
901f003c
7f600034
5400d97e
0f000000
<
801b0018
>
2f800000
40be0010
801b001c
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 35497
target/linux/generic/files/drivers/net/phy/ar8216.c
patch
|
blob
|
history
diff --git
a/target/linux/generic/files/drivers/net/phy/ar8216.c
b/target/linux/generic/files/drivers/net/phy/ar8216.c
index 3a0483ddbab8fa3ee0912735ca217c7cc7ab600e..cf28af0c766f595eccf8bb9b8fa3f40f09255cd1 100644
(file)
--- a/
target/linux/generic/files/drivers/net/phy/ar8216.c
+++ b/
target/linux/generic/files/drivers/net/phy/ar8216.c
@@
-1902,6
+1902,7
@@
err_cleanup_mib:
ar8xxx_mib_cleanup(priv);
err_free_priv:
kfree(priv);
+ pdev->priv = NULL;
return ret;
}
@@
-1983,6
+1984,8
@@
ar8216_remove(struct phy_device *pdev)
if (!priv)
return;
+ pdev->priv = NULL;
+
dev->priv_flags &= ~IFF_NO_IP_ALIGN;
dev->eth_mangle_rx = NULL;
dev->eth_mangle_tx = NULL;