Skip to content

Commit

Permalink
8390/8390p: Fix compat netdev ops handling.
Browse files Browse the repository at this point in the history
Based upon a report from Randy Dunlap.

The compat netdev ops assignments need to happen in
8390.c and 8390p.c, not lib8390.c, as only the type
specific code can assign the correct function pointers.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Dec 15, 2008
1 parent 8b124a8 commit 9a4a842
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
11 changes: 10 additions & 1 deletion drivers/net/8390.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,16 @@ EXPORT_SYMBOL(ei_netdev_ops);

struct net_device *__alloc_ei_netdev(int size)
{
return ____alloc_ei_netdev(size);
struct net_device *dev = ____alloc_ei_netdev(size);
#ifdef CONFIG_COMPAT_NET_DEV_OPS
if (dev) {
dev->hard_start_xmit = ei_start_xmit;
dev->get_stats = ei_get_stats;
dev->set_multicast_list = ei_set_multicast_list;
dev->tx_timeout = ei_tx_timeout;
}
#endif
return dev;
}
EXPORT_SYMBOL(__alloc_ei_netdev);

Expand Down
11 changes: 10 additions & 1 deletion drivers/net/8390p.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,16 @@ EXPORT_SYMBOL(eip_netdev_ops);

struct net_device *__alloc_eip_netdev(int size)
{
return ____alloc_ei_netdev(size);
struct net_device *dev = ____alloc_ei_netdev(size);
#ifdef CONFIG_COMPAT_NET_DEV_OPS
if (dev) {
dev->hard_start_xmit = eip_start_xmit;
dev->get_stats = eip_get_stats;
dev->set_multicast_list = eip_set_multicast_list;
dev->tx_timeout = eip_tx_timeout;
}
#endif
return dev;
}
EXPORT_SYMBOL(__alloc_eip_netdev);

Expand Down
6 changes: 0 additions & 6 deletions drivers/net/lib8390.c
Original file line number Diff line number Diff line change
Expand Up @@ -1010,12 +1010,6 @@ static void ethdev_setup(struct net_device *dev)
if (ei_debug > 1)
printk(version);

#ifdef CONFIG_COMPAT_NET_DEV_OPS
dev->hard_start_xmit = ei_start_xmit;
dev->get_stats = ei_get_stats;
dev->set_multicast_list = ei_set_multicast_list;
dev->tx_timeout = __ei_tx_timeout;
#endif
ether_setup(dev);

spin_lock_init(&ei_local->page_lock);
Expand Down

0 comments on commit 9a4a842

Please sign in to comment.