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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  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
  0 siblings, 1 reply; 17+ messages in thread
From: Stephen Hemminger @ 2009-12-22 22:36 UTC (permalink / raw)
  To: Akkipeddi, Srinivas; +Cc: netdev, Johnson, David

On Tue, 22 Dec 2009 16:57:05 -0500
"Akkipeddi, Srinivas" <sakkiped@starentnetworks.com> wrote:

> 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.

Might just be easier to convert to spinlock and RCU.

-- 

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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  2009-12-22 22:36 ` Stephen Hemminger
@ 2009-12-23 17:44   ` Dave Johnson
  2009-12-23 18:13     ` Stephen Hemminger
  0 siblings, 1 reply; 17+ messages in thread
From: Dave Johnson @ 2009-12-23 17:44 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Akkipeddi, Srinivas, netdev

Stephen Hemminger writes:
> On Tue, 22 Dec 2009 16:57:05 -0500
> "Akkipeddi, Srinivas" <sakkiped@starentnetworks.com> wrote:
> 
> > 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.
> 
> Might just be easier to convert to spinlock and RCU.

I don't think that would help.  You would still have a writer
contained within a reader issue.  This would also likely involve quite
a bit of copying given the amount of data the existing rwlock is
protecting and how frequent write locks may be needed.

The syncronize_rcu() call would have to be done from another thread
otherwise it would just stall forever because it would have been
called from a code path that holds a rcu read lock.

The area of uncertainty about how to fix this is because of the large
number of paths into the garbage collection code, one of which we hit
and resulted in this writer within reader deadlock.

It seems like the garbage collection cannot be done from within this
path and should only be done from an isolated path where it is
guaranteed to be called from a reader-free source.

Another possibility is to change the garbage collection to use a write
try lock and just not garbage collect from any tables it can't obtain.

-- 
Dave Johnson
Starent Networks

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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  2009-12-23 17:44   ` Dave Johnson
@ 2009-12-23 18:13     ` Stephen Hemminger
  2010-01-23 10:22       ` David Miller
  0 siblings, 1 reply; 17+ messages in thread
From: Stephen Hemminger @ 2009-12-23 18:13 UTC (permalink / raw)
  To: Dave Johnson; +Cc: Akkipeddi, Srinivas, netdev

On Wed, 23 Dec 2009 12:44:31 -0500
Dave Johnson <djohnson@starentnetworks.com> wrote:

> I don't think that would help.  You would still have a writer
> contained within a reader issue.  This would also likely involve quite
> a bit of copying given the amount of data the existing rwlock is
> protecting and how frequent write locks may be needed.

With RCU, you can safely acquire a spinlock inside rcu_read_lock
section.  The only issue is that the entry being modified might already
be in process of being deleted (ie. modifying a dead route).

Probably simpler to just get rid of rwlock entirely, go with a spinlock
for now.  Reader/writer locks are slower than spin locks and even if
lock is highly read contended, it is not held for long.

IPV6 routing table is using much simpler algorithms on the assumption
that IPV6 was going to solve the CIDR address explosion problem. That
assumption will probably not hold up, and having a trie (TRASH) version
of IPV6 routing table with RCU would be a good research project for
some graduate student.

-- 

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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  2009-12-23 18:13     ` Stephen Hemminger
@ 2010-01-23 10:22       ` David Miller
  2010-01-26  9:48         ` Jarek Poplawski
  0 siblings, 1 reply; 17+ messages in thread
From: David Miller @ 2010-01-23 10:22 UTC (permalink / raw)
  To: shemminger; +Cc: djohnson, sakkiped, netdev

From: Stephen Hemminger <shemminger@vyatta.com>
Date: Wed, 23 Dec 2009 10:13:09 -0800

> With RCU, you can safely acquire a spinlock inside rcu_read_lock
> section.  The only issue is that the entry being modified might already
> be in process of being deleted (ie. modifying a dead route).
> 
> Probably simpler to just get rid of rwlock entirely, go with a spinlock
> for now.  Reader/writer locks are slower than spin locks and even if
> lock is highly read contended, it is not held for long.
> 
> IPV6 routing table is using much simpler algorithms on the assumption
> that IPV6 was going to solve the CIDR address explosion problem. That
> assumption will probably not hold up, and having a trie (TRASH) version
> of IPV6 routing table with RCU would be a good research project for
> some graduate student.

This is all well and good, but meanwhile someone does need to
fix the deadlock originally reported here :-)

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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  2010-01-23 10:22       ` David Miller
@ 2010-01-26  9:48         ` Jarek Poplawski
  2010-01-26 10:35           ` Jarek Poplawski
  0 siblings, 1 reply; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-26  9:48 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On 23-01-2010 11:22, David Miller wrote:
> This is all well and good, but meanwhile someone does need to
> fix the deadlock originally reported here :-)

I hope I miss something ;-) but I can't see this deadlock; the
write_lock_bh(&table->tb6_lock) is taken from a timer in this case,
not from the thread holding read_lock_bh(&table->tb6_lock).

Jarek P.

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

* Re: Deadlock in IPv6 code while garbage collection on the rwlock protecting the routing tree.
  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
  0 siblings, 1 reply; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-26 10:35 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On Tue, Jan 26, 2010 at 09:48:17AM +0000, Jarek Poplawski wrote:
> On 23-01-2010 11:22, David Miller wrote:
> > This is all well and good, but meanwhile someone does need to
> > fix the deadlock originally reported here :-)
> 
> I hope I miss something ;-) but I can't see this deadlock; the
> write_lock_bh(&table->tb6_lock) is taken from a timer in this case,
> not from the thread holding read_lock_bh(&table->tb6_lock).

I missed again! Yes, I can see this deadlock now.

Sorry,
Jarek P.

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

* [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-26 10:35           ` Jarek Poplawski
@ 2010-01-27  9:59             ` Jarek Poplawski
  2010-01-27 10:14               ` David Miller
  0 siblings, 1 reply; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-27  9:59 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

While looking at the "Deadlock in IPv6 code while garbage collection
on the rwlock protecting the routing tree" reported by Srinivas
Akkipeddi I found there is possible a NULL pointer dereference in
icmp6_dst_alloc().

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
---

 net/ipv6/route.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index c2bd74c..93c3b20 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -973,7 +973,7 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,
 	rt = ip6_dst_alloc(&net->ipv6.ip6_dst_ops);
 	if (unlikely(rt == NULL)) {
 		in6_dev_put(idev);
-		goto out;
+		return NULL;
 	}
 
 	dev_hold(dev);
@@ -1009,7 +1009,6 @@ struct dst_entry *icmp6_dst_alloc(struct net_device *dev,
 
 	fib6_force_start_gc(net);
 
-out:
 	return &rt->u.dst;
 }
 

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  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
  0 siblings, 1 reply; 17+ messages in thread
From: David Miller @ 2010-01-27 10:14 UTC (permalink / raw)
  To: jarkao2; +Cc: shemminger, djohnson, sakkiped, netdev

From: Jarek Poplawski <jarkao2@gmail.com>
Date: Wed, 27 Jan 2010 09:59:52 +0000

> While looking at the "Deadlock in IPv6 code while garbage collection
> on the rwlock protecting the routing tree" reported by Srinivas
> Akkipeddi I found there is possible a NULL pointer dereference in
> icmp6_dst_alloc().
> 
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>

Jarek, if rt is NULL so is &rt->u.dst

That's two patches trying to fix this same non-problem in
two different places today :-)

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 10:14               ` David Miller
@ 2010-01-27 10:34                 ` Jarek Poplawski
  2010-01-27 11:04                   ` David Miller
  0 siblings, 1 reply; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-27 10:34 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On Wed, Jan 27, 2010 at 02:14:24AM -0800, David Miller wrote:
> From: Jarek Poplawski <jarkao2@gmail.com>
> Date: Wed, 27 Jan 2010 09:59:52 +0000
> 
> > While looking at the "Deadlock in IPv6 code while garbage collection
> > on the rwlock protecting the routing tree" reported by Srinivas
> > Akkipeddi I found there is possible a NULL pointer dereference in
> > icmp6_dst_alloc().
> > 
> > Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
> 
> Jarek, if rt is NULL so is &rt->u.dst
> 
> That's two patches trying to fix this same non-problem in
> two different places today :-)

Yes, great joke! :-\

(Btw, maybe it's a sign this might be more readable?)

Thanks,
Jarek P.

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 10:34                 ` Jarek Poplawski
@ 2010-01-27 11:04                   ` David Miller
  2010-01-27 12:17                     ` Jarek Poplawski
  0 siblings, 1 reply; 17+ messages in thread
From: David Miller @ 2010-01-27 11:04 UTC (permalink / raw)
  To: jarkao2; +Cc: shemminger, djohnson, sakkiped, netdev

From: Jarek Poplawski <jarkao2@gmail.com>
Date: Wed, 27 Jan 2010 10:34:17 +0000

> (Btw, maybe it's a sign this might be more readable?)

I welcome suggests that, tree wide, would make this harder
to misinterpret.

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  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:35                       ` Atis Elsts
  0 siblings, 2 replies; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-27 12:17 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On Wed, Jan 27, 2010 at 03:04:16AM -0800, David Miller wrote:
> From: Jarek Poplawski <jarkao2@gmail.com>
> Date: Wed, 27 Jan 2010 10:34:17 +0000
> 
> > (Btw, maybe it's a sign this might be more readable?)
> 
> I welcome suggests that, tree wide, would make this harder
> to misinterpret.

If there is nothing better I still think this patch is right, except
better subject (Fix impossible NULL dereference in ... ;-).

Jarek P.

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 12:17                     ` Jarek Poplawski
@ 2010-01-27 12:23                       ` David Miller
  2010-01-27 12:43                         ` Jarek Poplawski
  2010-01-27 12:35                       ` Atis Elsts
  1 sibling, 1 reply; 17+ messages in thread
From: David Miller @ 2010-01-27 12:23 UTC (permalink / raw)
  To: jarkao2; +Cc: shemminger, djohnson, sakkiped, netdev

From: Jarek Poplawski <jarkao2@gmail.com>
Date: Wed, 27 Jan 2010 12:17:46 +0000

> If there is nothing better I still think this patch is right, except
> better subject (Fix impossible NULL dereference in ... ;-).

Sorry, I'm not applying it, just like I didn't apply Krishna's similar
patch he posted earlier today.

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 12:17                     ` Jarek Poplawski
  2010-01-27 12:23                       ` David Miller
@ 2010-01-27 12:35                       ` Atis Elsts
  1 sibling, 0 replies; 17+ messages in thread
From: Atis Elsts @ 2010-01-27 12:35 UTC (permalink / raw)
  To: Jarek Poplawski; +Cc: David Miller, shemminger, djohnson, sakkiped, netdev

> On Wed, Jan 27, 2010 at 03:04:16AM -0800, David Miller wrote:
>> From: Jarek Poplawski <jarkao2@gmail.com>
>> Date: Wed, 27 Jan 2010 10:34:17 +0000
>>
>> > (Btw, maybe it's a sign this might be more readable?)
>>
>> I welcome suggests that, tree wide, would make this harder
>> to misinterpret.

How about adding static inline functions for accessing the dst_entry
field in struct route via a cast? That way it would be immediately
obvious that invalid memory access is not going to happen. Like this:

static inline struct dst_entry *route_dst(struct rtable *rt)
{
	return (struct dst_entry *)rt;
}

static inline struct dst_entry *route6_dst(struct rt6_info *rt)
{
	return (struct dst_entry *)rt;
}

and so on...

Atis

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 12:23                       ` David Miller
@ 2010-01-27 12:43                         ` Jarek Poplawski
  2010-01-27 13:14                           ` David Miller
  0 siblings, 1 reply; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-27 12:43 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On Wed, Jan 27, 2010 at 04:23:36AM -0800, David Miller wrote:
> From: Jarek Poplawski <jarkao2@gmail.com>
> Date: Wed, 27 Jan 2010 12:17:46 +0000
> 
> > If there is nothing better I still think this patch is right, except
> > better subject (Fix impossible NULL dereference in ... ;-).
> 
> Sorry, I'm not applying it, just like I didn't apply Krishna's similar
> patch he posted earlier today.

I've understood your decision and I'm OK with that; I'm only not sure
there is a better way (comments?) to make this code readable.

Jarek P. 

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 12:43                         ` Jarek Poplawski
@ 2010-01-27 13:14                           ` David Miller
  2010-01-27 13:28                             ` Jarek Poplawski
  0 siblings, 1 reply; 17+ messages in thread
From: David Miller @ 2010-01-27 13:14 UTC (permalink / raw)
  To: jarkao2; +Cc: shemminger, djohnson, sakkiped, netdev

From: Jarek Poplawski <jarkao2@gmail.com>
Date: Wed, 27 Jan 2010 12:43:31 +0000

> I'm only not sure there is a better way (comments?) to make this
> code readable.

You can make it more readable and even validate the invariant at the
same time by adding some kind of inline function if you wish.

static inline struct dst_entry *rtable_to_dst_entry(struct rtable *rt)
{
	BUILD_BUG_ON(rt != &rt->u.dst);

	/* Because "->u.dst" is the first member of struct rtable,
	 * this dereference is safe even when rt is NULL.
	 */
	return &rt->u.dst;
}

Something like that.

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

* Re: [PATCH] ipv6: Fix possible NULL dereference in icmp6_dst_alloc
  2010-01-27 13:14                           ` David Miller
@ 2010-01-27 13:28                             ` Jarek Poplawski
  0 siblings, 0 replies; 17+ messages in thread
From: Jarek Poplawski @ 2010-01-27 13:28 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, djohnson, sakkiped, netdev

On Wed, Jan 27, 2010 at 05:14:10AM -0800, David Miller wrote:
> From: Jarek Poplawski <jarkao2@gmail.com>
> Date: Wed, 27 Jan 2010 12:43:31 +0000
> 
> > I'm only not sure there is a better way (comments?) to make this
> > code readable.
> 
> You can make it more readable and even validate the invariant at the
> same time by adding some kind of inline function if you wish.
> 
> static inline struct dst_entry *rtable_to_dst_entry(struct rtable *rt)
> {
> 	BUILD_BUG_ON(rt != &rt->u.dst);
> 
> 	/* Because "->u.dst" is the first member of struct rtable,
> 	 * this dereference is safe even when rt is NULL.
> 	 */
> 	return &rt->u.dst;
> }
> 
> Something like that.

Yes, it looks the most readable to me.

Thanks,
Jarek P.

^ 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.