mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/tokenring/tmspci.c drivers/net/ucc_geth_mii.c
This commit is contained in:
commit
508827ff0a
120 changed files with 1050 additions and 543 deletions
|
|
@ -493,15 +493,17 @@ static void addrconf_forward_change(struct net *net, __s32 newf)
|
|||
read_unlock(&dev_base_lock);
|
||||
}
|
||||
|
||||
static void addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
|
||||
static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
|
||||
{
|
||||
struct net *net;
|
||||
|
||||
net = (struct net *)table->extra2;
|
||||
if (p == &net->ipv6.devconf_dflt->forwarding)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
if (!rtnl_trylock())
|
||||
return -ERESTARTSYS;
|
||||
|
||||
rtnl_lock();
|
||||
if (p == &net->ipv6.devconf_all->forwarding) {
|
||||
__s32 newf = net->ipv6.devconf_all->forwarding;
|
||||
net->ipv6.devconf_dflt->forwarding = newf;
|
||||
|
|
@ -512,6 +514,7 @@ static void addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
|
|||
|
||||
if (*p)
|
||||
rt6_purge_dflt_routers(net);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -2599,9 +2602,6 @@ static int addrconf_ifdown(struct net_device *dev, int how)
|
|||
|
||||
ASSERT_RTNL();
|
||||
|
||||
if ((dev->flags & IFF_LOOPBACK) && how == 1)
|
||||
how = 0;
|
||||
|
||||
rt6_ifdown(net, dev);
|
||||
neigh_ifdown(&nd_tbl, dev);
|
||||
|
||||
|
|
@ -3977,7 +3977,7 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write, struct file * filp,
|
|||
ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos);
|
||||
|
||||
if (write)
|
||||
addrconf_fixup_forwarding(ctl, valp, val);
|
||||
ret = addrconf_fixup_forwarding(ctl, valp, val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -4013,8 +4013,7 @@ static int addrconf_sysctl_forward_strategy(ctl_table *table,
|
|||
}
|
||||
|
||||
*valp = new;
|
||||
addrconf_fixup_forwarding(table, valp, val);
|
||||
return 1;
|
||||
return addrconf_fixup_forwarding(table, valp, val);
|
||||
}
|
||||
|
||||
static struct addrconf_sysctl_table
|
||||
|
|
@ -4440,25 +4439,6 @@ int unregister_inet6addr_notifier(struct notifier_block *nb)
|
|||
|
||||
EXPORT_SYMBOL(unregister_inet6addr_notifier);
|
||||
|
||||
static void addrconf_net_exit(struct net *net)
|
||||
{
|
||||
struct net_device *dev;
|
||||
|
||||
rtnl_lock();
|
||||
/* clean dev list */
|
||||
for_each_netdev(net, dev) {
|
||||
if (__in6_dev_get(dev) == NULL)
|
||||
continue;
|
||||
addrconf_ifdown(dev, 1);
|
||||
}
|
||||
addrconf_ifdown(net->loopback_dev, 2);
|
||||
rtnl_unlock();
|
||||
}
|
||||
|
||||
static struct pernet_operations addrconf_net_ops = {
|
||||
.exit = addrconf_net_exit,
|
||||
};
|
||||
|
||||
/*
|
||||
* Init / cleanup code
|
||||
*/
|
||||
|
|
@ -4500,10 +4480,6 @@ int __init addrconf_init(void)
|
|||
if (err)
|
||||
goto errlo;
|
||||
|
||||
err = register_pernet_device(&addrconf_net_ops);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
register_netdevice_notifier(&ipv6_dev_notf);
|
||||
|
||||
addrconf_verify(0);
|
||||
|
|
@ -4533,15 +4509,22 @@ errlo:
|
|||
void addrconf_cleanup(void)
|
||||
{
|
||||
struct inet6_ifaddr *ifa;
|
||||
struct net_device *dev;
|
||||
int i;
|
||||
|
||||
unregister_netdevice_notifier(&ipv6_dev_notf);
|
||||
unregister_pernet_device(&addrconf_net_ops);
|
||||
|
||||
unregister_pernet_subsys(&addrconf_ops);
|
||||
|
||||
rtnl_lock();
|
||||
|
||||
/* clean dev list */
|
||||
for_each_netdev(&init_net, dev) {
|
||||
if (__in6_dev_get(dev) == NULL)
|
||||
continue;
|
||||
addrconf_ifdown(dev, 1);
|
||||
}
|
||||
addrconf_ifdown(init_net.loopback_dev, 2);
|
||||
|
||||
/*
|
||||
* Check hash table.
|
||||
*/
|
||||
|
|
@ -4562,6 +4545,4 @@ void addrconf_cleanup(void)
|
|||
|
||||
del_timer(&addr_chk_timer);
|
||||
rtnl_unlock();
|
||||
|
||||
unregister_pernet_subsys(&addrconf_net_ops);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,6 +72,10 @@ MODULE_LICENSE("GPL");
|
|||
static struct list_head inetsw6[SOCK_MAX];
|
||||
static DEFINE_SPINLOCK(inetsw6_lock);
|
||||
|
||||
static int disable_ipv6 = 0;
|
||||
module_param_named(disable, disable_ipv6, int, 0);
|
||||
MODULE_PARM_DESC(disable, "Disable IPv6 such that it is non-functional");
|
||||
|
||||
static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk)
|
||||
{
|
||||
const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo);
|
||||
|
|
@ -1001,10 +1005,21 @@ static int __init inet6_init(void)
|
|||
{
|
||||
struct sk_buff *dummy_skb;
|
||||
struct list_head *r;
|
||||
int err;
|
||||
int err = 0;
|
||||
|
||||
BUILD_BUG_ON(sizeof(struct inet6_skb_parm) > sizeof(dummy_skb->cb));
|
||||
|
||||
/* Register the socket-side information for inet6_create. */
|
||||
for(r = &inetsw6[0]; r < &inetsw6[SOCK_MAX]; ++r)
|
||||
INIT_LIST_HEAD(r);
|
||||
|
||||
if (disable_ipv6) {
|
||||
printk(KERN_INFO
|
||||
"IPv6: Loaded, but administratively disabled, "
|
||||
"reboot required to enable\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = proto_register(&tcpv6_prot, 1);
|
||||
if (err)
|
||||
goto out;
|
||||
|
|
@ -1022,10 +1037,6 @@ static int __init inet6_init(void)
|
|||
goto out_unregister_udplite_proto;
|
||||
|
||||
|
||||
/* Register the socket-side information for inet6_create. */
|
||||
for(r = &inetsw6[0]; r < &inetsw6[SOCK_MAX]; ++r)
|
||||
INIT_LIST_HEAD(r);
|
||||
|
||||
/* We MUST register RAW sockets before we create the ICMP6,
|
||||
* IGMP6, or NDISC control sockets.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue