1
0
Fork 0
alistair23-linux/drivers/hv
Dexuan Cui dad72a1d28 vmbus: remove hv_event_tasklet_disable/enable
With the recent introduction of per-channel tasklet, we need to update
the way we handle the 3 concurrency issues:

1. hv_process_channel_removal -> percpu_channel_deq vs.
   vmbus_chan_sched -> list_for_each_entry(..., percpu_list);

2. vmbus_process_offer -> percpu_channel_enq/deq vs. vmbus_chan_sched.

3. vmbus_close_internal vs. the per-channel tasklet vmbus_on_event;

The first 2 issues can be handled by Stephen's recent patch
"vmbus: use rcu for per-cpu channel list", and the third issue
can be handled by calling tasklet_disable in vmbus_close_internal here.

We don't need the original hv_event_tasklet_disable/enable since we
now use per-channel tasklet instead of the previous per-CPU tasklet,
and actually we must remove them due to the side effect now:
vmbus_process_offer -> hv_event_tasklet_enable -> tasklet_schedule will
start the per-channel callback prematurely, cauing NULL dereferencing
(the channel may haven't been properly configured to run the callback yet).

Fixes: 631e63a9f3 ("vmbus: change to per channel tasklet")

Signed-off-by: Dexuan Cui <decui@microsoft.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Tested-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-03-16 16:42:00 +09:00
..
Kconfig x86: Make Linux guest support optional 2013-03-04 13:14:25 -08:00
Makefile Drivers: hv: util: introduce hv_utils_transport abstraction 2015-05-24 12:17:41 -07:00
channel.c vmbus: remove hv_event_tasklet_disable/enable 2017-03-16 16:42:00 +09:00
channel_mgmt.c vmbus: remove hv_event_tasklet_disable/enable 2017-03-16 16:42:00 +09:00
connection.c vmbus: add direct isr callback mode 2017-02-14 10:20:35 -08:00
hv.c vmbus: change to per channel tasklet 2017-02-14 10:20:35 -08:00
hv_balloon.c Drivers: hv: balloon: add a fall through comment to hv_memory_notifier() 2017-01-31 11:05:58 +01:00
hv_fcopy.c Drivers: hv: Log the negotiated IC versions. 2017-01-31 11:05:59 +01:00
hv_kvp.c Drivers: hv: Log the negotiated IC versions. 2017-01-31 11:05:59 +01:00
hv_snapshot.c Drivers: hv: Log the negotiated IC versions. 2017-01-31 11:05:59 +01:00
hv_util.c vmbus: add direct isr callback mode 2017-02-14 10:20:35 -08:00
hv_utils_transport.c Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv_utils_transport.h Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hyperv_vmbus.h vmbus: constify parameters where possible 2017-02-14 10:20:35 -08:00
ring_buffer.c vmbus: replace modulus operation with subtraction 2017-02-14 10:20:35 -08:00
vmbus_drv.c vmbus: use rcu for per-cpu channel list 2017-03-16 16:42:00 +09:00