Thread (7 messages) 7 messages, 3 authors, 2019-01-31

Re: [PATCH] net: check negative value for signed refcnt

From: Kirill Tkhai <hidden>
Date: 2019-01-31 15:34:15
Also in: lkml

On 31.01.2019 18:21, Eric Dumazet wrote:

On 01/31/2019 07:15 AM, Eric Dumazet wrote:
quoted

On 01/31/2019 05:49 AM, Kirill Tkhai wrote:
quoted
2)Not related to your patch -- it looks like we have problem in existing
code with this netdev_refcnt_read(). It does not imply a memory ordering
or some guarantees about reading percpu values. For example, in generic
code struct percpu_ref switches a counter into atomic mode before it checks
for the last reference. But there is nothing in netdev_refcnt_read().
Well, if we read an old value here, after a full and expensive synchronize_net(),
then we would have lot more problems than simply having a second round in
netdev_wait_allrefs()
 
percpu_ref was added more recently than the netdev_refcnt stuff, and is
interesting for users wanting a synchronous wait for the refcnt reaching 0.

netdev_wait_allrefs() was designed to be asynchronous, so that we at least release
RTNL (and current cpu) when something is wrong and a device can not be dismantled.
Yeah, they are different, and I think we can't add more synchronize_rcu()-dependent
synchronizations in this code, since network namespaces are already destroyed very slow.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help