diff options
author | Anton Vorontsov <avorontsov@ru.mvista.com> | 2009-04-02 04:26:07 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-02 04:26:07 -0400 |
commit | da1aa63ec3b4e9b4c5680f06288f57f44caa61b8 (patch) | |
tree | 972f649dc0c35b5347c28bfba06463a3e3fb4d0f /drivers/net/ucc_geth.h | |
parent | 050cc1f568e896a615110109999ed60ef75edf93 (diff) |
ucc_geth: Pass proper device to DMA routines, otherwise oops happens
The driver should pass a device that actually specifies internal DMA
ops, but currently it passes netdev's device, which is wrong and that
causes following oops:
Kernel BUG at c01c4df8 [verbose debug info unavailable]
Oops: Exception in kernel mode, sig: 5 [#1]
[...]
NIP [c01c4df8] get_new_skb+0x7c/0xf8
LR [c01c4da4] get_new_skb+0x28/0xf8
Call Trace:
[ef82be00] [c01c4da4] get_new_skb+0x28/0xf8 (unreliable)
[ef82be20] [c01c4eb8] rx_bd_buffer_set+0x44/0x98
[ef82be40] [c01c62bc] ucc_geth_startup+0x11b0/0x147c
[ef82be80] [c01c6674] ucc_geth_open+0xec/0x2a4
[ef82bea0] [c02288a4] dev_open+0xc0/0x11c
[...]
Fix this by passing of_device's device that specifies DMA ops in its
archdata.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ucc_geth.h')
-rw-r--r-- | drivers/net/ucc_geth.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ucc_geth.h b/drivers/net/ucc_geth.h index 48fde5ad6a34..2f8ee7c87efe 100644 --- a/drivers/net/ucc_geth.h +++ b/drivers/net/ucc_geth.h | |||
@@ -1128,7 +1128,8 @@ struct ucc_geth_info { | |||
1128 | struct ucc_geth_private { | 1128 | struct ucc_geth_private { |
1129 | struct ucc_geth_info *ug_info; | 1129 | struct ucc_geth_info *ug_info; |
1130 | struct ucc_fast_private *uccf; | 1130 | struct ucc_fast_private *uccf; |
1131 | struct net_device *dev; | 1131 | struct device *dev; |
1132 | struct net_device *ndev; | ||
1132 | struct napi_struct napi; | 1133 | struct napi_struct napi; |
1133 | struct work_struct timeout_work; | 1134 | struct work_struct timeout_work; |
1134 | struct ucc_geth __iomem *ug_regs; | 1135 | struct ucc_geth __iomem *ug_regs; |