Patrick McHardy wrote:
> New version of the netlink_has_listeners() patch.
> 
> Changes:
> 
> - Fix missing listeners bitmap update when there was no delta in the
>   number of subscribed groups
> - Use RCU to protect nltable listeners bitmap
> 
> 
> 
> ------------------------------------------------------------------------
> 
> [NETLINK]: Add netlink_has_listeners() for checking for multicast listeners
> 
> netlink_has_listeners() should be used to avoid unneccessary event message
> generation if there are no listeners.
> 
...
>       if (nlk->flags & NETLINK_KERNEL_SOCKET) {
> -             netlink_table_grab();
> +             unsigned long *listeners;
> +
> +             listeners = nl_table[sk->sk_protocol].listeners;
> +             nl_table[sk->sk_protocol].listeners = NULL;
> +             synchronize_rcu();
> +             kfree(nl_table[sk->sk_protocol].listeners);

Doesn't the NULL assignment needs to use rcu_assign_pointer()?

And isn't the kfree should be on the local listeners variable as opposed
to the "just" NULLed variable?


Baruch
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to