[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20080205.175337.266368079.davem@davemloft.net>
Date: Tue, 05 Feb 2008 17:53:37 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: panther@...abit.hu
Cc: netdev@...r.kernel.org
Subject: Re: [PATCH 1/2] Remove unnecessary locks from rtnetlink
From: Laszlo Attila Toth <panther@...abit.hu>
Date: Fri, 1 Feb 2008 17:07:33 +0100
> The do_setlink() function is protected by rtnl, additional locks are unnecessary.
> and the set_operstate() function is called from protected parts. Locks removed
> from both functions.
>
> The set_operstate() is also called from rtnl_create_link() and from no other places.
> In rtnl_create_link() none of the changes is protected by set_lock_bh() except
> inside set_operstate(), different locking scheme is not necessary
> for the operstate.
>
> Signed-off-by: Laszlo Attila Toth <panther@...abit.hu>
The protection using dev_base_lock() is needed.
When analyzing cases like this you need to also look at other code
paths outside of rtnetlink that access ->operstate and ->link_mode,
you obviously didn't do this.
For example, net/core/net-sysfs.c takes a read lock on dev_base_lock
in order to fetch a stable copy of both netif_running() and
dev->operstate at the same time.
Similar write locking to protect dev->operstate is made by
net/core/link_watch.c:rfc2863_policy(), for the same reason rtnetlink
has to make this locking.
You therefore cannot remove it.
This invalidates your second patch so I'm dropping that as well.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists