diff --git a/net/xfrm/xfrm_ipcomp.c b/net/xfrm/xfrm_ipcomp.c index cb40ff0ff28d..0c60ccecb55f 100644 --- a/net/xfrm/xfrm_ipcomp.c +++ b/net/xfrm/xfrm_ipcomp.c @@ -210,12 +210,16 @@ static void * __percpu *ipcomp_alloc_scratches(void) void * __percpu *scratches; int i; - if (ipcomp_scratch_users++) + if (ipcomp_scratch_users) { + ipcomp_scratch_users++; return ipcomp_scratches; - + } scratches = alloc_percpu(void *); - if (!scratches) + if (!scratches){ + ipcomp_scratches = NULL; return NULL; + } + ipcomp_scratch_users++; ipcomp_scratches = scratches;