Merge pull request #3305 from dm0-/linux

Bump Linux 4.14.51 to 4.14.52 and 4.16.17 to 4.16.18
This commit is contained in:
David Michael 2018-06-26 15:56:07 -04:00 committed by GitHub
commit 7658ba95b4
27 changed files with 194 additions and 420 deletions

View File

@ -1,4 +1,4 @@
DIST linux-4.14.tar.xz 100770500 SHA256 f81d59477e90a130857ce18dc02f4fbe5725854911db1e7ba770c7cd350f96a7 SHA512 77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 WHIRLPOOL fee10d54ecb210156aa55364ecc15867127819e9f7ff9ec5f6ef159b1013e2ae3d3a28d35c62d663886cbe826b996a1387671766093be002536309045a8e4d10
DIST linux-4.16.tar.xz 103020152 SHA256 63f6dc8e3c9f3a0273d5d6f4dca38a2413ca3a5f689329d05b750e4c87bb21b9 SHA512 ab47849314b177d0eec9dbf261f33972b0d89fb92fb0650130ffa7abc2f36c0fab2d06317dc1683c51a472a9a631573a9b1e7258d6281a2ee189897827f14662 WHIRLPOOL e03466f20fbac5b54c963845449d88589cb01fcc47837adbcf7ed1fb7b74422251df3a9a83f3a74d79f086a0f2eaa3cdf3654869717c72c3fb3a195f3f721942
DIST patch-4.14.51.xz 1362580 SHA256 d85e8c6063951d286d4ebac055b3727ef0b8298e1e60d33cf2366618a485b7d5 SHA512 978da11497f5abc1ed675ec5ce48d929c72ee2772fd78ec5d4d5c8554b28a8eee0f0989f84c2e68abf02b3aa36b0e68cabac210aba453478d3e180a2d4d9e2f7 WHIRLPOOL 5d2e05c7ed6fbbeece9a1cb06ccdb8e2caef5653540554c8cb8699b822970adb09d0e1198be06f6c4cb0fb51806df1c44f824aa19541e2fba3e21699adf82d47
DIST patch-4.16.17.xz 493104 SHA256 13f658fe58d3255d2e63fd236d90a2a1603fb5ab68b4a3ca7249b99033cb1d75 SHA512 bfa2cdc21954a7b7769b1f54e64214b932abd8e85f1fca4c8eb8207139e081914e52ab78c2a66429a1bd695ad6e9f2d029e1c41539e399a00983296a8d32a519 WHIRLPOOL 27eada6f05557511ad0d7907acddc9014bf251cab23382ac102cee0990361df03f38a17524baa8d3300aa96dad63acb1ef4c347c362ec19985027b20e1157cf8
DIST patch-4.14.52.xz 1373656 SHA256 02afce8ee5d78452589ad7bb23c7d7c94d18f9c346594088b36d67e0b0f62275 SHA512 720b310700337d7c8b77b78592aae6c8d9bd08cb4da0437110ddcdf4e9e8146367293a2f2d94325787b5f201a09847badb50657082426212b610f6993eefc536 WHIRLPOOL adb86e001c2ef778a2de096184729086723ef2c5d0792824c70f7fcc63a10cc63f3bb62b34c49bce817d274ba677223d5bcae6ba8d70f25de413a6ec793ffa95
DIST patch-4.16.18.xz 506924 SHA256 848fdff6385eddb5b3eac6e394d5d5427c8735dc93a123ee62da611d04eb1637 SHA512 9e1cf90b874c757393680026cb74500ca9fa22c0047ac820f4e5f43062125f8cf469f1e8e93a084b9ecc28a177e55c8b733c2fe620e46694a338f1b2ff4180f8 WHIRLPOOL 882fe047675845f8ca70d23e8018a3032d5d6c7dbd9b93e38c97b3e5a7a019ed6d0dcfd91e1a59c87836981c1a7db439d044afc0ff4cb356ec35aa5bfc4b62b3

View File

@ -38,6 +38,6 @@ UNIPATCH_LIST="
${PATCH_DIR}/z0005-tools-objtool-Makefile-Don-t-fail-on-fallthrough-wit.patch \
${PATCH_DIR}/z0006-Revert-random-use-a-different-mixing-algorithm-for-a.patch \
${PATCH_DIR}/z0007-Revert-random-fix-crng_ready-test.patch \
${PATCH_DIR}/z0008-Revert-xen-netfront-Fix-race-between-device-setup-an.patch \
${PATCH_DIR}/z0009-hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch \
${PATCH_DIR}/z0008-xen-netfront-Fix-mismatched-rtnl_unlock.patch \
${PATCH_DIR}/z0009-xen-netfront-Update-features-after-registering-netde.patch \
"

View File

@ -40,6 +40,6 @@ UNIPATCH_LIST="
${PATCH_DIR}/z0003-tools-objtool-Makefile-Don-t-fail-on-fallthrough-wit.patch \
${PATCH_DIR}/z0004-Revert-random-use-a-different-mixing-algorithm-for-a.patch \
${PATCH_DIR}/z0005-Revert-random-fix-crng_ready-test.patch \
${PATCH_DIR}/z0006-Revert-xen-netfront-Fix-race-between-device-setup-an.patch \
${PATCH_DIR}/z0007-hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch \
${PATCH_DIR}/z0006-xen-netfront-Fix-mismatched-rtnl_unlock.patch \
${PATCH_DIR}/z0007-xen-netfront-Update-features-after-registering-netde.patch \
"

View File

@ -1,4 +1,4 @@
From 7133d028b02da8f6df2528b634ba419e3e1c2e20 Mon Sep 17 00:00:00 2001
From 70152dadfef13d931ebbec4cd17928308dc2f5a3 Mon Sep 17 00:00:00 2001
From: Vito Caputo <vito.caputo@coreos.com>
Date: Wed, 25 Nov 2015 02:59:45 -0800
Subject: [PATCH 1/9] kbuild: derive relative path for KBUILD_SRC from CURDIR
@ -12,7 +12,7 @@ by some undesirable path component.
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index a33376204c17..4209462bd5bf 100644
index e2e4009bbfed..0fc8f851a8ea 100644
--- a/Makefile
+++ b/Makefile
@@ -143,7 +143,8 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make

View File

@ -1,4 +1,4 @@
From a02c6f799d92232c43a3309827b8f2f087322615 Mon Sep 17 00:00:00 2001
From 450be0a8a38d1ecd607ad63e2675e701bc5627ff Mon Sep 17 00:00:00 2001
From: Geoff Levand <geoff@infradead.org>
Date: Fri, 11 Nov 2016 17:28:52 -0800
Subject: [PATCH 2/9] Add arm64 coreos verity hash

View File

@ -1,4 +1,4 @@
From 3739b6ddfb9da37473349654d907e1be16d6c673 Mon Sep 17 00:00:00 2001
From 4f7085555ef00c3bd8456e17300db1a6ef84c2cc Mon Sep 17 00:00:00 2001
From: Ilya Dryomov <idryomov@gmail.com>
Date: Mon, 16 Oct 2017 15:59:09 +0200
Subject: [PATCH 3/9] block: factor out __blkdev_issue_zero_pages()

View File

@ -1,4 +1,4 @@
From 9db25445ed56a63673468a12d5d485f4bae4ec65 Mon Sep 17 00:00:00 2001
From 4e78a3202a6e413c2ea8769d6a03fe623c1070b1 Mon Sep 17 00:00:00 2001
From: Ilya Dryomov <idryomov@gmail.com>
Date: Mon, 16 Oct 2017 15:59:10 +0200
Subject: [PATCH 4/9] block: cope with WRITE ZEROES failing in

View File

@ -1,4 +1,4 @@
From c14452db9d96851c66b55b74e864ba5dcd379f70 Mon Sep 17 00:00:00 2001
From 7ad5bad81c6a781f49725c69f4f17b315ad310e8 Mon Sep 17 00:00:00 2001
From: David Michael <david.michael@coreos.com>
Date: Thu, 8 Feb 2018 21:23:12 -0500
Subject: [PATCH 5/9] tools/objtool/Makefile: Don't fail on fallthrough with

View File

@ -1,4 +1,4 @@
From 8ff5f044ecfa87ed0c434d1ee3dd932232677c9d Mon Sep 17 00:00:00 2001
From 606a5937b74a130c7c86bbe2964e42012b549f79 Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Wed, 2 May 2018 15:16:29 -0400
Subject: [PATCH 6/9] Revert "random: use a different mixing algorithm for

View File

@ -1,4 +1,4 @@
From c6c0a479b18c1d8c9f6023f0373289b6a709209b Mon Sep 17 00:00:00 2001
From b39b30a7d8e7dd812474add3b82e07ea208b34b7 Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Wed, 2 May 2018 15:18:03 -0400
Subject: [PATCH 7/9] Revert "random: fix crng_ready() test"

View File

@ -1,157 +0,0 @@
From 97e7ddd50592002e80be74a42b59d7fe3ed46504 Mon Sep 17 00:00:00 2001
From: Andrew Jeddeloh <andrew.jeddeloh@coreos.com>
Date: Wed, 30 May 2018 17:45:35 -0700
Subject: [PATCH 8/9] Revert "xen-netfront: Fix race between device setup and
open"
This reverts commit 70f3461c23ffb394676cb53c2eb1095208a52327.
This causes failures to set mtu > 1500 on some aws instances.
---
drivers/net/xen-netfront.c | 46 ++++++++++++++++++++++------------------------
1 file changed, 22 insertions(+), 24 deletions(-)
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index f07b9c9bb5ba..a9ba9fe263ca 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -351,9 +351,6 @@ static int xennet_open(struct net_device *dev)
unsigned int i = 0;
struct netfront_queue *queue = NULL;
- if (!np->queues)
- return -ENODEV;
-
for (i = 0; i < num_queues; ++i) {
queue = &np->queues[i];
napi_enable(&queue->napi);
@@ -1361,8 +1358,18 @@ static int netfront_probe(struct xenbus_device *dev,
#ifdef CONFIG_SYSFS
info->netdev->sysfs_groups[0] = &xennet_dev_group;
#endif
+ err = register_netdev(info->netdev);
+ if (err) {
+ pr_warn("%s: register_netdev err=%d\n", __func__, err);
+ goto fail;
+ }
return 0;
+
+ fail:
+ xennet_free_netdev(netdev);
+ dev_set_drvdata(&dev->dev, NULL);
+ return err;
}
static void xennet_end_access(int ref, void *page)
@@ -1731,6 +1738,8 @@ static void xennet_destroy_queues(struct netfront_info *info)
{
unsigned int i;
+ rtnl_lock();
+
for (i = 0; i < info->netdev->real_num_tx_queues; i++) {
struct netfront_queue *queue = &info->queues[i];
@@ -1739,6 +1748,8 @@ static void xennet_destroy_queues(struct netfront_info *info)
netif_napi_del(&queue->napi);
}
+ rtnl_unlock();
+
kfree(info->queues);
info->queues = NULL;
}
@@ -1754,6 +1765,8 @@ static int xennet_create_queues(struct netfront_info *info,
if (!info->queues)
return -ENOMEM;
+ rtnl_lock();
+
for (i = 0; i < *num_queues; i++) {
struct netfront_queue *queue = &info->queues[i];
@@ -1762,7 +1775,7 @@ static int xennet_create_queues(struct netfront_info *info,
ret = xennet_init_queue(queue);
if (ret < 0) {
- dev_warn(&info->xbdev->dev,
+ dev_warn(&info->netdev->dev,
"only created %d queues\n", i);
*num_queues = i;
break;
@@ -1776,8 +1789,10 @@ static int xennet_create_queues(struct netfront_info *info,
netif_set_real_num_tx_queues(info->netdev, *num_queues);
+ rtnl_unlock();
+
if (*num_queues == 0) {
- dev_err(&info->xbdev->dev, "no queues\n");
+ dev_err(&info->netdev->dev, "no queues\n");
return -EINVAL;
}
return 0;
@@ -1814,7 +1829,6 @@ static int talk_to_netback(struct xenbus_device *dev,
goto out;
}
- rtnl_lock();
if (info->queues)
xennet_destroy_queues(info);
@@ -1825,7 +1839,6 @@ static int talk_to_netback(struct xenbus_device *dev,
info->queues = NULL;
goto out;
}
- rtnl_unlock();
/* Create shared ring, alloc event channel -- for each queue */
for (i = 0; i < num_queues; ++i) {
@@ -1922,10 +1935,8 @@ static int talk_to_netback(struct xenbus_device *dev,
xenbus_transaction_end(xbt, 1);
destroy_ring:
xennet_disconnect_backend(info);
- rtnl_lock();
xennet_destroy_queues(info);
out:
- rtnl_unlock();
device_unregister(&dev->dev);
return err;
}
@@ -1955,15 +1966,6 @@ static int xennet_connect(struct net_device *dev)
netdev_update_features(dev);
rtnl_unlock();
- if (dev->reg_state == NETREG_UNINITIALIZED) {
- err = register_netdev(dev);
- if (err) {
- pr_warn("%s: register_netdev err=%d\n", __func__, err);
- device_unregister(&np->xbdev->dev);
- return err;
- }
- }
-
/*
* All public and private state should now be sane. Get
* ready to start sending and receiving packets and give the driver
@@ -2154,14 +2156,10 @@ static int xennet_remove(struct xenbus_device *dev)
xennet_disconnect_backend(info);
- if (info->netdev->reg_state == NETREG_REGISTERED)
- unregister_netdev(info->netdev);
+ unregister_netdev(info->netdev);
- if (info->queues) {
- rtnl_lock();
+ if (info->queues)
xennet_destroy_queues(info);
- rtnl_unlock();
- }
xennet_free_netdev(info->netdev);
return 0;
--
2.14.4

View File

@ -0,0 +1,38 @@
From 86d8aa5b513f12c1c78228ab04a8421dd82e45e5 Mon Sep 17 00:00:00 2001
From: Ross Lagerwall <ross.lagerwall@citrix.com>
Date: Thu, 21 Jun 2018 14:00:20 +0100
Subject: [PATCH 8/9] xen-netfront: Fix mismatched rtnl_unlock
Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open")
Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
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>
---
drivers/net/xen-netfront.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index f07b9c9bb5ba..95514b1ac0ae 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1811,7 +1811,7 @@ static int talk_to_netback(struct xenbus_device *dev,
err = xen_net_read_mac(dev, info->netdev->dev_addr);
if (err) {
xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);
- goto out;
+ goto out_unlocked;
}
rtnl_lock();
@@ -1926,6 +1926,7 @@ static int talk_to_netback(struct xenbus_device *dev,
xennet_destroy_queues(info);
out:
rtnl_unlock();
+out_unlocked:
device_unregister(&dev->dev);
return err;
}
--
2.14.4

View File

@ -1,43 +0,0 @@
From f5536cc53fa48bc0ade410fbea76117eadeeccd3 Mon Sep 17 00:00:00 2001
From: Dexuan Cui <decui@microsoft.com>
Date: Wed, 6 Jun 2018 21:32:51 +0000
Subject: [PATCH 9/9] hv_netvsc: Fix a network regression after ifdown/ifup
Recently people reported the NIC stops working after
"ifdown eth0; ifup eth0". It turns out in this case the TX queues are not
enabled, after the refactoring of the common detach logic: when the NIC
has sub-channels, usually we enable all the TX queues after all
sub-channels are set up: see rndis_set_subchannel() ->
netif_device_attach(), but in the case of "ifdown eth0; ifup eth0" where
the number of channels doesn't change, we also must make sure the TX queues
are enabled. The patch fixes the regression.
Fixes: 7b2ee50c0cd5 ("hv_netvsc: common detach logic")
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/hyperv/netvsc_drv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 3a7241c8713c..6890478a0851 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -123,8 +123,10 @@ static int netvsc_open(struct net_device *net)
}
rdev = nvdev->extension;
- if (!rdev->link_state)
+ if (!rdev->link_state) {
netif_carrier_on(net);
+ netif_tx_wake_all_queues(net);
+ }
if (vf_netdev) {
/* Setting synthetic device up transparently sets
--
2.14.4

View File

@ -0,0 +1,49 @@
From 83311e31edb95a1bd376984203666f22b2f385ff Mon Sep 17 00:00:00 2001
From: Ross Lagerwall <ross.lagerwall@citrix.com>
Date: Thu, 21 Jun 2018 14:00:21 +0100
Subject: [PATCH 9/9] xen-netfront: Update features after registering netdev
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>
---
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 95514b1ac0ae..238744ebe9e0 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1952,10 +1952,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) {
@@ -1965,6 +1961,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.14.4

View File

@ -1,4 +1,4 @@
From c2d5fffb88ee7204ceac8bf0216d5d4450d23ef4 Mon Sep 17 00:00:00 2001
From fd931fb1cab3f1c8e360b2ef8bbbefdc77d8dd20 Mon Sep 17 00:00:00 2001
From: Vito Caputo <vito.caputo@coreos.com>
Date: Wed, 25 Nov 2015 02:59:45 -0800
Subject: [PATCH 1/7] kbuild: derive relative path for KBUILD_SRC from CURDIR
@ -12,7 +12,7 @@ by some undesirable path component.
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 02a4f7f8c613..5ebe38e49e09 100644
index 8a34b54f2a06..df11a9ce66b2 100644
--- a/Makefile
+++ b/Makefile
@@ -143,7 +143,8 @@ $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make

View File

@ -1,4 +1,4 @@
From cbdb970e108a815c9de5e1d752c8ffa739af8dc3 Mon Sep 17 00:00:00 2001
From e5f594c832b4914806f55b64c73e239a6d37d42f Mon Sep 17 00:00:00 2001
From: Geoff Levand <geoff@infradead.org>
Date: Fri, 11 Nov 2016 17:28:52 -0800
Subject: [PATCH 2/7] Add arm64 coreos verity hash

View File

@ -1,4 +1,4 @@
From 3123c48201b16ba5c21d4468ac69efcd53ffbf0c Mon Sep 17 00:00:00 2001
From 4ce8ac41943274054f9e2d90fb55a99df85bf88e Mon Sep 17 00:00:00 2001
From: David Michael <david.michael@coreos.com>
Date: Thu, 8 Feb 2018 21:23:12 -0500
Subject: [PATCH 3/7] tools/objtool/Makefile: Don't fail on fallthrough with

View File

@ -1,4 +1,4 @@
From 9067a2b9a1ec6a5d0e2dec872c94f6ed07610d6d Mon Sep 17 00:00:00 2001
From ae9b00302f008eb5af826e2b8c88fa78c76f6b4f Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Wed, 2 May 2018 15:16:29 -0400
Subject: [PATCH 4/7] Revert "random: use a different mixing algorithm for

View File

@ -1,4 +1,4 @@
From 5d136df67b5a6f744e27ae6084006043ecdae345 Mon Sep 17 00:00:00 2001
From 7e3362c1c8774baa81c8df962b7593c2ad20f9d1 Mon Sep 17 00:00:00 2001
From: Jeremy Cline <jeremy@jcline.org>
Date: Wed, 2 May 2018 15:18:03 -0400
Subject: [PATCH 5/7] Revert "random: fix crng_ready() test"

View File

@ -1,157 +0,0 @@
From 3d6901a3f1defaec2e195646188c2467edb22946 Mon Sep 17 00:00:00 2001
From: Andrew Jeddeloh <andrew.jeddeloh@coreos.com>
Date: Wed, 30 May 2018 17:50:37 -0700
Subject: [PATCH 6/7] Revert "xen-netfront: Fix race between device setup and
open"
This reverts commit f599c64fdf7d9c108e8717fb04bc41c680120da4.
This causes failures to set mtu > 1500 on some aws instances.
---
drivers/net/xen-netfront.c | 46 ++++++++++++++++++++++------------------------
1 file changed, 22 insertions(+), 24 deletions(-)
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 3127bc8633ca..5a37ee2372a3 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -351,9 +351,6 @@ static int xennet_open(struct net_device *dev)
unsigned int i = 0;
struct netfront_queue *queue = NULL;
- if (!np->queues)
- return -ENODEV;
-
for (i = 0; i < num_queues; ++i) {
queue = &np->queues[i];
napi_enable(&queue->napi);
@@ -1361,8 +1358,18 @@ static int netfront_probe(struct xenbus_device *dev,
#ifdef CONFIG_SYSFS
info->netdev->sysfs_groups[0] = &xennet_dev_group;
#endif
+ err = register_netdev(info->netdev);
+ if (err) {
+ pr_warn("%s: register_netdev err=%d\n", __func__, err);
+ goto fail;
+ }
return 0;
+
+ fail:
+ xennet_free_netdev(netdev);
+ dev_set_drvdata(&dev->dev, NULL);
+ return err;
}
static void xennet_end_access(int ref, void *page)
@@ -1730,6 +1737,8 @@ static void xennet_destroy_queues(struct netfront_info *info)
{
unsigned int i;
+ rtnl_lock();
+
for (i = 0; i < info->netdev->real_num_tx_queues; i++) {
struct netfront_queue *queue = &info->queues[i];
@@ -1738,6 +1747,8 @@ static void xennet_destroy_queues(struct netfront_info *info)
netif_napi_del(&queue->napi);
}
+ rtnl_unlock();
+
kfree(info->queues);
info->queues = NULL;
}
@@ -1753,6 +1764,8 @@ static int xennet_create_queues(struct netfront_info *info,
if (!info->queues)
return -ENOMEM;
+ rtnl_lock();
+
for (i = 0; i < *num_queues; i++) {
struct netfront_queue *queue = &info->queues[i];
@@ -1761,7 +1774,7 @@ static int xennet_create_queues(struct netfront_info *info,
ret = xennet_init_queue(queue);
if (ret < 0) {
- dev_warn(&info->xbdev->dev,
+ dev_warn(&info->netdev->dev,
"only created %d queues\n", i);
*num_queues = i;
break;
@@ -1775,8 +1788,10 @@ static int xennet_create_queues(struct netfront_info *info,
netif_set_real_num_tx_queues(info->netdev, *num_queues);
+ rtnl_unlock();
+
if (*num_queues == 0) {
- dev_err(&info->xbdev->dev, "no queues\n");
+ dev_err(&info->netdev->dev, "no queues\n");
return -EINVAL;
}
return 0;
@@ -1813,7 +1828,6 @@ static int talk_to_netback(struct xenbus_device *dev,
goto out;
}
- rtnl_lock();
if (info->queues)
xennet_destroy_queues(info);
@@ -1824,7 +1838,6 @@ static int talk_to_netback(struct xenbus_device *dev,
info->queues = NULL;
goto out;
}
- rtnl_unlock();
/* Create shared ring, alloc event channel -- for each queue */
for (i = 0; i < num_queues; ++i) {
@@ -1921,10 +1934,8 @@ static int talk_to_netback(struct xenbus_device *dev,
xenbus_transaction_end(xbt, 1);
destroy_ring:
xennet_disconnect_backend(info);
- rtnl_lock();
xennet_destroy_queues(info);
out:
- rtnl_unlock();
device_unregister(&dev->dev);
return err;
}
@@ -1954,15 +1965,6 @@ static int xennet_connect(struct net_device *dev)
netdev_update_features(dev);
rtnl_unlock();
- if (dev->reg_state == NETREG_UNINITIALIZED) {
- err = register_netdev(dev);
- if (err) {
- pr_warn("%s: register_netdev err=%d\n", __func__, err);
- device_unregister(&np->xbdev->dev);
- return err;
- }
- }
-
/*
* All public and private state should now be sane. Get
* ready to start sending and receiving packets and give the driver
@@ -2153,14 +2155,10 @@ static int xennet_remove(struct xenbus_device *dev)
xennet_disconnect_backend(info);
- if (info->netdev->reg_state == NETREG_REGISTERED)
- unregister_netdev(info->netdev);
+ unregister_netdev(info->netdev);
- if (info->queues) {
- rtnl_lock();
+ if (info->queues)
xennet_destroy_queues(info);
- rtnl_unlock();
- }
xennet_free_netdev(info->netdev);
return 0;
--
2.14.4

View File

@ -0,0 +1,38 @@
From 2b985fa24f0f6cfa25eb63c9f79fa1dee17e1a34 Mon Sep 17 00:00:00 2001
From: Ross Lagerwall <ross.lagerwall@citrix.com>
Date: Thu, 21 Jun 2018 14:00:20 +0100
Subject: [PATCH 6/7] xen-netfront: Fix mismatched rtnl_unlock
Fixes: f599c64fdf7d ("xen-netfront: Fix race between device setup and open")
Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
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>
---
drivers/net/xen-netfront.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 3127bc8633ca..5f4951a48c9a 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1810,7 +1810,7 @@ static int talk_to_netback(struct xenbus_device *dev,
err = xen_net_read_mac(dev, info->netdev->dev_addr);
if (err) {
xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);
- goto out;
+ goto out_unlocked;
}
rtnl_lock();
@@ -1925,6 +1925,7 @@ static int talk_to_netback(struct xenbus_device *dev,
xennet_destroy_queues(info);
out:
rtnl_unlock();
+out_unlocked:
device_unregister(&dev->dev);
return err;
}
--
2.14.4

View File

@ -1,43 +0,0 @@
From 802e541c404c18a3bc11e78c008679f03cf0ba9b Mon Sep 17 00:00:00 2001
From: Dexuan Cui <decui@microsoft.com>
Date: Wed, 6 Jun 2018 21:32:51 +0000
Subject: [PATCH 7/7] hv_netvsc: Fix a network regression after ifdown/ifup
Recently people reported the NIC stops working after
"ifdown eth0; ifup eth0". It turns out in this case the TX queues are not
enabled, after the refactoring of the common detach logic: when the NIC
has sub-channels, usually we enable all the TX queues after all
sub-channels are set up: see rndis_set_subchannel() ->
netif_device_attach(), but in the case of "ifdown eth0; ifup eth0" where
the number of channels doesn't change, we also must make sure the TX queues
are enabled. The patch fixes the regression.
Fixes: 7b2ee50c0cd5 ("hv_netvsc: common detach logic")
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/hyperv/netvsc_drv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 2a7752c113df..adbfa82b76e9 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -126,8 +126,10 @@ static int netvsc_open(struct net_device *net)
}
rdev = nvdev->extension;
- if (!rdev->link_state)
+ if (!rdev->link_state) {
netif_carrier_on(net);
+ netif_tx_wake_all_queues(net);
+ }
if (vf_netdev) {
/* Setting synthetic device up transparently sets
--
2.14.4

View File

@ -0,0 +1,49 @@
From 77a0d69a6d7b82a4724c966428a0652929a2565c Mon Sep 17 00:00:00 2001
From: Ross Lagerwall <ross.lagerwall@citrix.com>
Date: Thu, 21 Jun 2018 14:00:21 +0100
Subject: [PATCH 7/7] xen-netfront: Update features after registering netdev
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>
---
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 5f4951a48c9a..ad2e9cb36903 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1951,10 +1951,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) {
@@ -1964,6 +1960,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.14.4