diff mbox series

[net] xfrm: do not call rcu_read_unlock when afinfo is NULL in xfrm_get_tos

Message ID 7228859d992d33ea559b5b6a2077c64456f691e4.1518851782.git.lucien.xin@gmail.com
State Awaiting Upstream, archived
Delegated to: David Miller
Headers show
Series [net] xfrm: do not call rcu_read_unlock when afinfo is NULL in xfrm_get_tos | expand

Commit Message

Xin Long Feb. 17, 2018, 7:16 a.m. UTC
When xfrm_policy_get_afinfo returns NULL, it will not hold rcu
read lock. In this case, rcu_read_unlock should not be called
in xfrm_get_tos, just like other places where it's calling
xfrm_policy_get_afinfo.

Fixes: f5e2bb4f5b22 ("xfrm: policy: xfrm_get_tos cannot fail")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
---
 net/xfrm/xfrm_policy.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Steffen Klassert Feb. 20, 2018, 6:38 a.m. UTC | #1
On Sat, Feb 17, 2018 at 03:16:22PM +0800, Xin Long wrote:
> When xfrm_policy_get_afinfo returns NULL, it will not hold rcu
> read lock. In this case, rcu_read_unlock should not be called
> in xfrm_get_tos, just like other places where it's calling
> xfrm_policy_get_afinfo.
> 
> Fixes: f5e2bb4f5b22 ("xfrm: policy: xfrm_get_tos cannot fail")
> Signed-off-by: Xin Long <lucien.xin@gmail.com>

Applied, thanks Xin!
diff mbox series

Patch

diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 7a23078..dd4041f 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1458,10 +1458,13 @@  xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl,
 static int xfrm_get_tos(const struct flowi *fl, int family)
 {
 	const struct xfrm_policy_afinfo *afinfo;
-	int tos = 0;
+	int tos;
 
 	afinfo = xfrm_policy_get_afinfo(family);
-	tos = afinfo ? afinfo->get_tos(fl) : 0;
+	if (!afinfo)
+		return 0;
+
+	tos = afinfo->get_tos(fl);
 
 	rcu_read_unlock();