Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [8021Q]: vlan_ioctl_handler: fix return value [GENETLINK]: Correctly report errors while registering a multicast group [GENETLINK]: Fix adjustment of number of multicast groups [GENETLINK]: Fix race in genl_unregister_mc_groups() [NETFILTER]: Clean up duplicate includes in net/netfilter/ [NETFILTER]: Clean up duplicate includes in net/bridge/ [NETFILTER]: Fix logging regression [TCPv6] MD5SIG: Ensure to reset allocation count to avoid panic.
This commit is contained in:
commit
03746bad30
@ -810,6 +810,7 @@ static int vlan_ioctl_handler(void __user *arg)
|
||||
err = -EINVAL;
|
||||
break;
|
||||
case GET_VLAN_REALDEV_NAME_CMD:
|
||||
err = 0;
|
||||
vlan_dev_get_realdev_name(dev, args.u.device2);
|
||||
if (copy_to_user(arg, &args,
|
||||
sizeof(struct vlan_ioctl_args))) {
|
||||
@ -818,6 +819,7 @@ static int vlan_ioctl_handler(void __user *arg)
|
||||
break;
|
||||
|
||||
case GET_VLAN_VID_CMD:
|
||||
err = 0;
|
||||
vlan_dev_get_vid(dev, &vid);
|
||||
args.u.VID = vid;
|
||||
if (copy_to_user(arg, &args,
|
||||
|
@ -9,7 +9,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/in.h>
|
||||
#include <linux/netfilter_bridge/ebtables.h>
|
||||
#include <linux/netfilter_bridge/ebt_log.h>
|
||||
#include <linux/netfilter.h>
|
||||
@ -196,10 +195,8 @@ static int __init ebt_log_init(void)
|
||||
ret = ebt_register_watcher(&log);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = nf_log_register(PF_BRIDGE, &ebt_log_logger);
|
||||
if (ret < 0 && ret != -EEXIST)
|
||||
ebt_unregister_watcher(&log);
|
||||
return ret;
|
||||
nf_log_register(PF_BRIDGE, &ebt_log_logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit ebt_log_fini(void)
|
||||
|
@ -36,7 +36,6 @@
|
||||
#include <linux/timer.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/netfilter_bridge/ebtables.h>
|
||||
#include <linux/netfilter_bridge/ebt_ulog.h>
|
||||
#include <net/sock.h>
|
||||
@ -308,12 +307,8 @@ static int __init ebt_ulog_init(void)
|
||||
else if ((ret = ebt_register_watcher(&ulog)))
|
||||
sock_release(ebtulognl->sk_socket);
|
||||
|
||||
if (nf_log_register(PF_BRIDGE, &ebt_ulog_logger) < 0) {
|
||||
printk(KERN_WARNING "ebt_ulog: not logging via ulog "
|
||||
"since somebody else already registered for PF_BRIDGE\n");
|
||||
/* we cannot make module load fail here, since otherwise
|
||||
* ebtables userspace would abort */
|
||||
}
|
||||
if (ret == 0)
|
||||
nf_log_register(PF_BRIDGE, &ebt_ulog_logger);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -479,10 +479,8 @@ static int __init ipt_log_init(void)
|
||||
ret = xt_register_target(&ipt_log_reg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = nf_log_register(PF_INET, &ipt_log_logger);
|
||||
if (ret < 0 && ret != -EEXIST)
|
||||
xt_unregister_target(&ipt_log_reg);
|
||||
return ret;
|
||||
nf_log_register(PF_INET, &ipt_log_logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit ipt_log_fini(void)
|
||||
|
@ -493,10 +493,8 @@ static int __init ip6t_log_init(void)
|
||||
ret = xt_register_target(&ip6t_log_reg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = nf_log_register(PF_INET6, &ip6t_logger);
|
||||
if (ret < 0 && ret != -EEXIST)
|
||||
xt_unregister_target(&ip6t_log_reg);
|
||||
return ret;
|
||||
nf_log_register(PF_INET6, &ip6t_logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit ip6t_log_fini(void)
|
||||
|
@ -633,6 +633,7 @@ static int tcp_v6_md5_do_del(struct sock *sk, struct in6_addr *peer)
|
||||
if (tp->md5sig_info->entries6 == 0) {
|
||||
kfree(tp->md5sig_info->keys6);
|
||||
tp->md5sig_info->keys6 = NULL;
|
||||
tp->md5sig_info->alloced6 = 0;
|
||||
|
||||
tcp_free_md5sig_pool();
|
||||
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/tcp.h>
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/skbuff.h>
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/skbuff.h>
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include <linux/netfilter_bridge.h>
|
||||
#include <linux/netfilter/xt_physdev.h>
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
#include <linux/netfilter_bridge.h>
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Bart De Schuymer <bdschuym@pandora.be>");
|
||||
|
@ -184,7 +184,7 @@ int genl_register_mc_group(struct genl_family *family,
|
||||
}
|
||||
|
||||
err = netlink_change_ngroups(genl_sock,
|
||||
sizeof(unsigned long) * NETLINK_GENERIC);
|
||||
mc_groups_longs * BITS_PER_LONG);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
@ -196,10 +196,22 @@ int genl_register_mc_group(struct genl_family *family,
|
||||
genl_ctrl_event(CTRL_CMD_NEWMCAST_GRP, grp);
|
||||
out:
|
||||
genl_unlock();
|
||||
return 0;
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(genl_register_mc_group);
|
||||
|
||||
static void __genl_unregister_mc_group(struct genl_family *family,
|
||||
struct genl_multicast_group *grp)
|
||||
{
|
||||
BUG_ON(grp->family != family);
|
||||
netlink_clear_multicast_users(genl_sock, grp->id);
|
||||
clear_bit(grp->id, mc_groups);
|
||||
list_del(&grp->list);
|
||||
genl_ctrl_event(CTRL_CMD_DELMCAST_GRP, grp);
|
||||
grp->id = 0;
|
||||
grp->family = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* genl_unregister_mc_group - unregister a multicast group
|
||||
*
|
||||
@ -217,14 +229,8 @@ EXPORT_SYMBOL(genl_register_mc_group);
|
||||
void genl_unregister_mc_group(struct genl_family *family,
|
||||
struct genl_multicast_group *grp)
|
||||
{
|
||||
BUG_ON(grp->family != family);
|
||||
genl_lock();
|
||||
netlink_clear_multicast_users(genl_sock, grp->id);
|
||||
clear_bit(grp->id, mc_groups);
|
||||
list_del(&grp->list);
|
||||
genl_ctrl_event(CTRL_CMD_DELMCAST_GRP, grp);
|
||||
grp->id = 0;
|
||||
grp->family = NULL;
|
||||
__genl_unregister_mc_group(family, grp);
|
||||
genl_unlock();
|
||||
}
|
||||
|
||||
@ -232,8 +238,10 @@ static void genl_unregister_mc_groups(struct genl_family *family)
|
||||
{
|
||||
struct genl_multicast_group *grp, *tmp;
|
||||
|
||||
genl_lock();
|
||||
list_for_each_entry_safe(grp, tmp, &family->mcast_groups, list)
|
||||
genl_unregister_mc_group(family, grp);
|
||||
__genl_unregister_mc_group(family, grp);
|
||||
genl_unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user