Netdev List
 help / color / mirror / Atom feed
* using rcu_read_lock() after calling dst_neigh_lookup
@ 2017-01-10 14:22 Hadar Hen Zion
  2017-01-10 17:02 ` David Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Hadar Hen Zion @ 2017-01-10 14:22 UTC (permalink / raw)
  To: davem; +Cc: netdev, ogerlitz, idosch

Hi Dave,

Drivers which are calling dst_neigh_lookup() are also using 
rcu_read_lock() before accessing the neigh pointer (and asking it's ll 
address data and its validity state).

You can find the same behavior in:

drivers/infiniband/core/addr.c, drivers/infiniband/hw/i40iw/i40iw_cm.c, 
drivers/infiniband/hw/nes/nes_cm.c, etc.

(the above locations are just an example).

While the documentation in neighbour.c says:

  "Neighbour entries are protected:
    - with reference count.
    - with rwlock neigh->lock
    Reference count prevents destruction.
    neigh->lock mainly serializes ll address data and its validity state."

So what is the right way to protect the neigh entry parameters? I 
couldn't find why rcu_read_lock() is helping here (dst_neigh_lookup 
already takes a reference on the neigh).

Thank you,

Hadar

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-01-10 17:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-10 14:22 using rcu_read_lock() after calling dst_neigh_lookup Hadar Hen Zion
2017-01-10 17:02 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox