linux/drivers/net/bonding
Debabrata Banerjee c9fbd71f73 netpoll: allow cleanup to be synchronous
This fixes a problem introduced by:
commit 2cde6acd49 ("netpoll: Fix __netpoll_rcu_free so that it can hold the rtnl lock")

When using netconsole on a bond, __netpoll_cleanup can asynchronously
recurse multiple times, each __netpoll_free_async call can result in
more __netpoll_free_async's. This means there is now a race between
cleanup_work queues on multiple netpoll_info's on multiple devices and
the configuration of a new netpoll. For example if a netconsole is set
to enable 0, reconfigured, and enable 1 immediately, this netconsole
will likely not work.

Given the reason for __netpoll_free_async is it can be called when rtnl
is not locked, if it is locked, we should be able to execute
synchronously. It appears to be locked everywhere it's called from.

Generalize the design pattern from the teaming driver for current
callers of __netpoll_free_async.

CC: Neil Horman <nhorman@tuxdriver.com>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-10-19 17:01:43 -07:00
..
Makefile bonding: add sysfs /slave dir for bond slave devices. 2014-01-17 18:51:58 -08:00
bond_3ad.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
bond_alb.c bonding: allow use of tx hashing in balance-alb 2018-05-16 12:15:11 -04:00
bond_debugfs.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bond_main.c netpoll: allow cleanup to be synchronous 2018-10-19 17:01:43 -07:00
bond_netlink.c bonding: use nla_get_u64 to extract the value for IFLA_BOND_AD_ACTOR_SYSTEM 2017-11-28 15:56:40 -05:00
bond_options.c bonding: set default miimon value for non-arp modes if not set 2018-07-21 10:26:21 -07:00
bond_procfs.c bonding: switch to proc_create_seq_data 2018-05-16 07:24:30 +02:00
bond_sysfs.c bonding: don't cast const buf in sysfs store 2018-07-22 10:09:30 -07:00
bond_sysfs_slave.c drivers/net: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
bonding_priv.h net/bonding: Make DRV macros private 2015-04-26 22:59:53 -04:00