diff options
author | Dexuan Cui | 2017-03-05 02:13:58 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2017-03-16 08:42:00 +0100 |
commit | dad72a1d28442b03aac86836a42de2d00a1014ab (patch) | |
tree | b7db945d6c53180471cacfbf814b51a865797340 /drivers/char/misc.c | |
parent | vmbus: use rcu for per-cpu channel list (diff) | |
download | kernel-qcow2-linux-dad72a1d28442b03aac86836a42de2d00a1014ab.tar.gz kernel-qcow2-linux-dad72a1d28442b03aac86836a42de2d00a1014ab.tar.xz kernel-qcow2-linux-dad72a1d28442b03aac86836a42de2d00a1014ab.zip |
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: 631e63a9f346 ("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>
Diffstat (limited to 'drivers/char/misc.c')
0 files changed, 0 insertions, 0 deletions