summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2013-05-22 01:40:47 +0000
committerDavid S. Miller <davem@davemloft.net>2013-05-23 01:20:07 -0700
commit497574c72c9922cf20c12aed15313c389f722fa0 (patch)
tree1ded621483211872633af219157427bc0cf26e43
parente4166625edfd2d808ddda00c7e7e901f4f3b8cc0 (diff)
downloadlinux-497574c72c9922cf20c12aed15313c389f722fa0.tar.gz
linux-497574c72c9922cf20c12aed15313c389f722fa0.tar.bz2
linux-497574c72c9922cf20c12aed15313c389f722fa0.zip
xfrm: properly handle invalid states as an error
The error exit path needs err explicitly set. Otherwise it returns success and the only caller, xfrm_output_resume(), would oops in skb_dst(skb)->ops derefence as skb_dst(skb) is NULL. Bug introduced in commit bb65a9cb (xfrm: removes a superfluous check and add a statistic). Signed-off-by: Timo Teräs <timo.teras@iki.fi> Cc: Li RongQing <roy.qing.li@gmail.com> Cc: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/xfrm/xfrm_output.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index bcfda8921b5b..0cf003dfa8fc 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -64,6 +64,7 @@ static int xfrm_output_one(struct sk_buff *skb, int err)
if (unlikely(x->km.state != XFRM_STATE_VALID)) {
XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTSTATEINVALID);
+ err = -EINVAL;
goto error;
}