All of lore.kernel.org
 help / color / mirror / Atom feed
* Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
@ 2009-12-22 21:57 Akkipeddi, Srinivas
  2009-12-22 22:36 ` Stephen Hemminger
  0 siblings, 1 reply; 17+ messages in thread
From: Akkipeddi, Srinivas @ 2009-12-22 21:57 UTC (permalink / raw)
  To: netdev; +Cc: Johnson, David

I came across a deadlock scenario in the latest IPv6 code. I am trying
to fix this and any inputs are really appreciated. 

The deadlock happens when ROUTER-PREF is configured. This happens when
trying to do a write_lock_bh on the rwlock protecting the routing tree
during garbage collection.

The routing tree is read protected (read_lock_bh(&table->tb6_lock))
using the rwlock when performing a ip6_route_input or  ip6_route_output
( "ip6_pol_route"). During route selection (rt6_select), if a neighbor
solicit is sent (ndisc_send_ns), a dst_entry is allocated
(icmp6_dst_alloc calls dst_alloc). 
The garbage collection (fib6_run_gc) will be triggered if the number of
dst-entries is more than the threshold (dst_alloc). During garbage
collection, all the routing trees are cleaned up (fib6_clean_all). Here
we try to take write protect each routing tree (
write_lock_bh(&table->tb6_lock)). But one of the trees is already read
protected. 

The garbage collection is anyways triggered from "icmp6_dst_alloc" with
the call to fib6_force_start_gc. Since it is triggered, we might not
want to call the "fib6_run_gc" from dst_alloc for this case but there is
no way to figure this out in the "dst_alloc" routine.


Thanks
Srinivas

 



This email and any attachments may contain legally privileged and/or confidential information of Starent Networks, Corp. and is intended only for the individual or entity named in the message.  The information transmitted may not be used to create or change any contractual obligations of Starent Networks, Corp.  Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this e-mail and its attachments by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify the sender immediately -- by replying to this message or by sending an email to postmaster@starentnetworks.com -- and destroy all copies of this message and any attachments without reading or disclosing their contents. Thank you.
 

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

end of thread, other threads:[~2010-01-27 13:28 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-22 21:57 Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree Akkipeddi, Srinivas
2009-12-22 22:36 ` Stephen Hemminger
2009-12-23 17:44   ` Dave Johnson
2009-12-23 18:13     ` Stephen Hemminger
2010-01-23 10:22       ` David Miller
2010-01-26  9:48         ` Jarek Poplawski
2010-01-26 10:35           ` Jarek Poplawski
2010-01-27  9:59             ` [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc Jarek Poplawski
2010-01-27 10:14               ` David Miller
2010-01-27 10:34                 ` Jarek Poplawski
2010-01-27 11:04                   ` David Miller
2010-01-27 12:17                     ` Jarek Poplawski
2010-01-27 12:23                       ` David Miller
2010-01-27 12:43                         ` Jarek Poplawski
2010-01-27 13:14                           ` David Miller
2010-01-27 13:28                             ` Jarek Poplawski
2010-01-27 12:35                       ` Atis Elsts

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.