| From foo@baz Sat Feb 2 10:53:00 CET 2019 |
| From: George Amanakis <gamanakis@gmail.com> |
| Date: Tue, 29 Jan 2019 22:50:13 -0500 |
| Subject: tun: move the call to tun_set_real_num_queues |
| |
| From: George Amanakis <gamanakis@gmail.com> |
| |
| [ Upstream commit 3a03cb8456cc1d61c467a5375e0a10e5207b948c ] |
| |
| Call tun_set_real_num_queues() after the increment of tun->numqueues |
| since the former depends on it. Otherwise, the number of queues is not |
| correctly accounted for, which results to warnings similar to: |
| "vnet0 selects TX queue 11, but real number of TX queues is 11". |
| |
| Fixes: 0b7959b62573 ("tun: publish tfile after it's fully initialized") |
| Reported-and-tested-by: George Amanakis <gamanakis@gmail.com> |
| Signed-off-by: George Amanakis <gamanakis@gmail.com> |
| Signed-off-by: Stanislav Fomichev <sdf@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/tun.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/net/tun.c |
| +++ b/drivers/net/tun.c |
| @@ -862,8 +862,6 @@ static int tun_attach(struct tun_struct |
| if (rtnl_dereference(tun->xdp_prog)) |
| sock_set_flag(&tfile->sk, SOCK_XDP); |
| |
| - tun_set_real_num_queues(tun); |
| - |
| /* device is allowed to go away first, so no need to hold extra |
| * refcnt. |
| */ |
| @@ -875,6 +873,7 @@ static int tun_attach(struct tun_struct |
| rcu_assign_pointer(tfile->tun, tun); |
| rcu_assign_pointer(tun->tfiles[tun->numqueues], tfile); |
| tun->numqueues++; |
| + tun_set_real_num_queues(tun); |
| out: |
| return err; |
| } |