| From d112f28f573e2d543cd1d52bdc8120f502a0d759 Mon Sep 17 00:00:00 2001 |
| From: Ross Lagerwall <ross.lagerwall@citrix.com> |
| Date: Thu, 21 Jun 2018 14:00:21 +0100 |
| Subject: xen-netfront: Update features after registering netdev |
| |
| [ Upstream commit 45c8184c1bed1ca8a7f02918552063a00b909bf5 ] |
| |
| Update the features after calling register_netdev() otherwise the |
| device features are not set up correctly and it not possible to change |
| the MTU of the device. After this change, the features reported by |
| ethtool match the device's features before the commit which introduced |
| the issue and it is possible to change the device's MTU. |
| |
| Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open") |
| Reported-by: Liam Shepherd <liam@dancer.es> |
| Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> |
| Reviewed-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/xen-netfront.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c |
| index 3c1adb38412b..c85edd161a6c 100644 |
| --- a/drivers/net/xen-netfront.c |
| +++ b/drivers/net/xen-netfront.c |
| @@ -1994,10 +1994,6 @@ static int xennet_connect(struct net_device *dev) |
| /* talk_to_netback() sets the correct number of queues */ |
| num_queues = dev->real_num_tx_queues; |
| |
| - rtnl_lock(); |
| - netdev_update_features(dev); |
| - rtnl_unlock(); |
| - |
| if (dev->reg_state == NETREG_UNINITIALIZED) { |
| err = register_netdev(dev); |
| if (err) { |
| @@ -2007,6 +2003,10 @@ static int xennet_connect(struct net_device *dev) |
| } |
| } |
| |
| + rtnl_lock(); |
| + netdev_update_features(dev); |
| + rtnl_unlock(); |
| + |
| /* |
| * All public and private state should now be sane. Get |
| * ready to start sending and receiving packets and give the driver |
| -- |
| 2.17.1 |
| |