summaryrefslogtreecommitdiff
path: root/drivers/net/xen-netfront.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@google.com>2020-04-13 12:58:19 +0200
committerGreg Kroah-Hartman <gregkh@google.com>2020-04-13 12:58:19 +0200
commitf9991115f079363d70ce91c37d850ec4a5e065a6 (patch)
tree2334eb7b9224a44e1fd4e3122e5009df3381bb26 /drivers/net/xen-netfront.c
parentd815622a6f7f24dfad9f7b77b8fe386d2cb1afa7 (diff)
parent10d9c6f92756c1b9049e409cd5e7faed40f95294 (diff)
Merge 4.4.219 into android-4.4-p
Changes in 4.4.219 drm/bochs: downgrade pci_request_region failure from error to warning ipv4: fix a RCU-list lock in fib_triestat_seq_show net, ip_tunnel: fix interface lookup with no key sctp: fix possibly using a bad saddr with a given dst l2tp: Correctly return -EBADF from pppol2tp_getname. net: l2tp: Make l2tp_ip6 namespace aware l2tp: fix race in l2tp_recv_common() l2tp: ensure session can't get removed during pppol2tp_session_ioctl() l2tp: fix duplicate session creation l2tp: Refactor the codes with existing macros instead of literal number l2tp: ensure sessions are freed after their PPPOL2TP socket l2tp: fix race between l2tp_session_delete() and l2tp_tunnel_closeall() usb: gadget: uac2: Drop unused device qualifier descriptor usb: gadget: printer: Drop unused device qualifier descriptor padata: always acquire cpu_hotplug_lock before pinst->lock mm: mempolicy: require at least one nodeid for MPOL_PREFERRED net: stmmac: dwmac1000: fix out-of-bounds mac address reg setting slcan: Don't transmit uninitialized stack data in padding random: always use batched entropy for get_random_u{32,64} tools/accounting/getdelays.c: fix netlink attribute length power: supply: axp288_charger: Fix unchecked return value xen-netfront: Fix mismatched rtnl_unlock xen-netfront: Update features after registering netdev ASoC: jz4740-i2s: Fix divider written at incorrect offset in register IB/hfi1: Call kobject_put() when kobject_init_and_add() fails Bluetooth: RFCOMM: fix ODEBUG bug in rfcomm_dev_ioctl RDMA/cm: Update num_paths in cma_resolve_iboe_route error flow clk: qcom: rcg: Return failure for RCG update drm_dp_mst_topology: fix broken drm_dp_sideband_parse_remote_dpcd_read() Linux 4.4.219 Change-Id: Ic6486cf91cf823d392cd4ac467135748f3e13e8c Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/net/xen-netfront.c')
-rw-r--r--drivers/net/xen-netfront.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 89eec6fead75..e99a07d5fda7 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1835,7 +1835,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();
@@ -1950,6 +1950,7 @@ abort_transaction_no_dev_fatal:
xennet_destroy_queues(info);
out:
rtnl_unlock();
+out_unlocked:
device_unregister(&dev->dev);
return err;
}
@@ -1981,10 +1982,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) {
@@ -1994,6 +1991,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