diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2019-11-06 08:13:49 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-12-05 09:21:27 +0100 |
commit | 55b5cbaa468a778fac157141e443e90fe0d201cd (patch) | |
tree | 0f8fe09ad1c3dd1f89b5dd01b624dcd5e6df2167 /net | |
parent | c01cffbcdb5273c64a2b4003220a27042afc87c2 (diff) | |
download | linux-stable-55b5cbaa468a778fac157141e443e90fe0d201cd.tar.gz linux-stable-55b5cbaa468a778fac157141e443e90fe0d201cd.tar.bz2 linux-stable-55b5cbaa468a778fac157141e443e90fe0d201cd.zip |
xfrm: Fix memleak on xfrm state destroy
commit 86c6739eda7d2a03f2db30cbee67a5fb81afa8ba upstream.
We leak the page that we use to create skb page fragments
when destroying the xfrm_state. Fix this by dropping a
page reference if a page was assigned to the xfrm_state.
Fixes: cac2661c53f3 ("esp4: Avoid skb_cow_data whenever possible")
Reported-by: JD <jdtxs00@gmail.com>
Reported-by: Paul Wouters <paul@nohats.ca>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/xfrm/xfrm_state.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 11e09eb138d6..47a8ff972a2b 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -456,6 +456,8 @@ static void ___xfrm_state_destroy(struct xfrm_state *x) x->type->destructor(x); xfrm_put_type(x->type); } + if (x->xfrag.page) + put_page(x->xfrag.page); xfrm_dev_state_free(x); security_xfrm_state_free(x); xfrm_state_free(x); |