Re: Regression, bisected: reference leak with IPSec since ~2.6.31

From: Eric Dumazet
Date: Mon Sep 20 2010 - 16:18:28 EST


Le lundi 20 septembre 2010 Ã 15:52 -0400, Nick Bowler a Ãcrit :
> On 2010-09-20 20:20 +0200, Eric Dumazet wrote:
> > If you change your program to send small frames (so they are not
> > fragmented), is the problem still present ?
>
> I changed MAX_DGRAM_SIZE in the test program to 1000 (mtu on the
> interface is 1500). The short answer is that the references are
> not leaked, and things seem to get cleaned up. So the rest of this
> mail probably describes a separate issue.
>
> The long answer, however, is interesting: With latest Linus' git, the
> references are cleaned up much later than I would expect. After running
> the test program and flushing the SAD/SPD, the reference count is still
> 1. If I repeat the test immediately, the reference count will increase
> further. I can easily raise the reference count to, say, 100. Now, if
> I wait a while (10 minutes or so), the reference count will still be
> 100. However, when I run the setkey script after this delay, the
> reference count drops immediately to 1. If I then flush the SAD/SPD, it
> drops to 0.
>
> This behaviour is new: newer than the reported leak. For example, with
> 2.6.34, everything works perfectly with MAX_DGRAM_SIZE set to 1000 (the
> SAs are destroyed immediately when the SAD/SPD are flushed), but the
> leak occurs with MAX_DGRAM_SIZE set to 10000.
>

Thanks Nick

I suspect a skb->truesize bug somewhere.

I can see atomic_read(&sk->sk_wmem_alloc) becoming negative after a
while...

I am investigating and let you know.

Thanks


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/