lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 9 Feb 2017 16:11:09 +0100
From:   Ivan Vecera <ivecera@...hat.com>
To:     Jiri Pirko <jiri@...nulli.us>, netdev@...r.kernel.org
Cc:     davem@...emloft.net, idosch@...lanox.com,
        stephen@...workplumber.org, mlxsw@...lanox.com
Subject: Re: [patch net-next 02/10] bridge: mcast: Merge the mc router ports
 deletions to one function

Dne 9.2.2017 v 14:54 Jiri Pirko napsal(a):
> From: Nogah Frankel <nogahf@...lanox.com>
>
> There are three places where a port gets deleted from the mc router port
> list. This patch join the actual deletion to one function.
> It will be helpful for later patch that will offload changes in the mc
> router ports list.
>
> Signed-off-by: Nogah Frankel <nogahf@...lanox.com>
> Signed-off-by: Yotam Gigi <yotamg@...lanox.com>
> Signed-off-by: Jiri Pirko <jiri@...lanox.com>
> ---
>  net/bridge/br_multicast.c | 24 +++++++++---------------
>  1 file changed, 9 insertions(+), 15 deletions(-)
>
> diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
> index 8c0e896..2add6d4 100644
> --- a/net/bridge/br_multicast.c
> +++ b/net/bridge/br_multicast.c
> @@ -47,6 +47,7 @@ static void br_ip4_multicast_leave_group(struct net_bridge *br,
>  					 __u16 vid,
>  					 const unsigned char *src);
>
> +static void __del_port_router(struct net_bridge_port *p);
>  #if IS_ENABLED(CONFIG_IPV6)
>  static void br_ip6_multicast_leave_group(struct net_bridge *br,
>  					 struct net_bridge_port *port,
> @@ -850,16 +851,10 @@ static void br_multicast_router_expired(unsigned long data)
>  	spin_lock(&br->multicast_lock);
>  	if (port->multicast_router == MDB_RTR_TYPE_DISABLED ||
>  	    port->multicast_router == MDB_RTR_TYPE_PERM ||
> -	    timer_pending(&port->multicast_router_timer) ||
> -	    hlist_unhashed(&port->rlist))
> +	    timer_pending(&port->multicast_router_timer))
>  		goto out;
>
> -	hlist_del_init_rcu(&port->rlist);
> -	br_rtr_notify(br->dev, port, RTM_DELMDB);
> -	/* Don't allow timer refresh if the router expired */
> -	if (port->multicast_router == MDB_RTR_TYPE_TEMP)
> -		port->multicast_router = MDB_RTR_TYPE_TEMP_QUERY;
> -
> +	__del_port_router(port);
>  out:
>  	spin_unlock(&br->multicast_lock);
>  }
> @@ -1101,13 +1096,8 @@ void br_multicast_disable_port(struct net_bridge_port *port)
>  		if (!(pg->flags & MDB_PG_FLAGS_PERMANENT))
>  			br_multicast_del_pg(br, pg);
>
> -	if (!hlist_unhashed(&port->rlist)) {
> -		hlist_del_init_rcu(&port->rlist);
> -		br_rtr_notify(br->dev, port, RTM_DELMDB);
> -		/* Don't allow timer refresh if disabling */
> -		if (port->multicast_router == MDB_RTR_TYPE_TEMP)
> -			port->multicast_router = MDB_RTR_TYPE_TEMP_QUERY;
> -	}
> +	__del_port_router(port);
> +
>  	del_timer(&port->multicast_router_timer);
>  	del_timer(&port->ip4_own_query.timer);
>  #if IS_ENABLED(CONFIG_IPV6)
> @@ -2059,6 +2049,10 @@ static void __del_port_router(struct net_bridge_port *p)
>  		return;
>  	hlist_del_init_rcu(&p->rlist);
>  	br_rtr_notify(p->br->dev, p, RTM_DELMDB);
> +
> +	/* don't allow timer refresh */
> +	if (p->multicast_router == MDB_RTR_TYPE_TEMP)
> +		p->multicast_router = MDB_RTR_TYPE_TEMP_QUERY;
>  }
>
>  int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
>
Acked-by: Ivan Vecera <ivecera@...hat.com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ