Skip to contentSkip to conversation

xfrm: avoid possible oopse in xfrm_alloc_dst

PATCH In review Hiroaki SHIMODA 2 participants 2 messages Feb 11, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xfrm: avoid possible oopse in xfrm_alloc_dst

Commit 80c802f3073e84 (xfrm: cache bundles instead of policies for outgoing flows) introduced possible oopse when dst_alloc returns NULL.

---
 net/xfrm/xfrm_policy.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
net/xfrm/xfrm_policy.c +5 -2
index 8b3ef40..6459588 100644
@@ -1340,10 +1340,13 @@ static inline struct xfrm_dst *xfrm_alloc_dst(struct net *net, int family)
 	default:
 		BUG();
 	}
-	xdst = dst_alloc(dst_ops) ?: ERR_PTR(-ENOBUFS);
+	xdst = dst_alloc(dst_ops);
 	xfrm_policy_put_afinfo(afinfo);
 
-	xdst->flo.ops = &xfrm_bundle_fc_ops;
+	if (likely(xdst))
+		xdst->flo.ops = &xfrm_bundle_fc_ops;
+	else
+		xdst = ERR_PTR(-ENOBUFS);
 
 	return xdst;
 }