Patch "tun: fix rcu_read_lock imbalance in tun_build_skb" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
tun: fix rcu_read_lock imbalance in tun_build_skb
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tun-fix-rcu_read_lock-imbalance-in-tun_build_skb.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Dec 14 11:45:40 CET 2017
From: Xin Long <[email protected]>
Date: Sun, 19 Nov 2017 19:31:04 +0800
Subject: tun: fix rcu_read_lock imbalance in tun_build_skb
From: Xin Long <[email protected]>
[ Upstream commit 654d573845f35017dc397840fa03610fef3d08b0 ]
rcu_read_lock in tun_build_skb is used to rcu_dereference tun->xdp_prog safely, rcu_read_unlock should be done in every return path.
Now I could see one place missing it, where it returns NULL in switch-case XDP_REDIRECT, another palce using rcu_read_lock wrongly, where it returns NULL in if (xdp_xmit) chunk.
So fix both in this patch.
--- drivers/net/tun.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/tun.c +2 -1
@@ -1326,6 +1326,7 @@ static struct sk_buff *tun_build_skb(str err =xdp_do_redirect (tun->dev, &xdp, xdp_prog);if (err) goto err_redirect; +rcu_read_unlock ();return NULL ;case XDP_TX : xdp_xmit = true;
@@ -1358,7 +1359,7 @@ static struct sk_buff *tun_build_skb(strif (xdp_xmit) { skb->dev = tun->dev;generic_xdp_tx (skb, xdp_prog); -rcu_read_lock (); +rcu_read_unlock ();return NULL ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/sctp-use-right-member-as-the-param-of-list_for_each_entry.patch queue-4.14/tun-fix-rcu_read_lock-imbalance-in-tun_build_skb.patch