Subject: Re: [XFRM]: Fix leak of expired xfrm_states

From: Patrick McHardy <[email-masked]>
Date: Mon, 26 Nov 2007 16:51:42 +0100

Herbert Xu wrote:
> On Mon, Nov 26, 2007 at 04:05:27PM +0100, Patrick McHardy wrote:
>> This patch fixes a xfrm_state leak, which appears to be a
>> regression from the reference count simplifications.
> 
> I was going to say this was a good find :)
> 
> But digging deeper it seems that it might not be a bug after
> all.  Even though the ref count on x may now drop to zero, it
> won't be freed until del_timer_sync returns which should be
> sufficient, no?

It actually won't get freed at all currently since nothing is
calling __xfrm_state_destroy(). __xfrm_state_delete() uses
__xfrm_state_put(), which only decrements the refcount, but
doesn't perform destruction.

This is visible when looking at the xfrm[46]_mode_{tunnel,transport}
module reference counts, they climb higher and higher over time.