On Mon, 2018-05-28 at 12:00 +0200, Greg Kroah-Hartman wrote:
4.4-stable review patch.ÂÂIf anyone has any objections, please let me know.[...]
------------------
From: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
[ Upstream commit f599c64fdf7d9c108e8717fb04bc41c680120da4 ]
--- a/drivers/net/xen-netfront.c[...]
+++ b/drivers/net/xen-netfront.c
@@ -1839,6 +1824,7 @@ static int talk_to_netback(struct xenbus
 goto out;
This "goto out" is outside the locked section...
 }
+ rtnl_lock();
 if (info->queues)
 xennet_destroy_queues(info);
@@ -1849,6 +1835,7 @@ static int talk_to_netback(struct xenbus
 info->queues = NULL;
 goto out;
 }
+ rtnl_unlock();
 /* Create shared ring, alloc event channel -- for each queue */
 for (i = 0; i < num_queues; ++i) {
@@ -1945,8 +1932,10 @@ abort_transaction_no_dev_fatal:
 xenbus_transaction_end(xbt, 1);
 destroy_ring:
 xennet_disconnect_backend(info);
+ rtnl_lock();
 xennet_destroy_queues(info);
 out:
+ rtnl_unlock();
...so this will be an unmatched unlock.
You need to add another label below the rtnl_unlock().