1. 04 10月, 2017 1 次提交
  2. 17 8月, 2017 4 次提交
  3. 17 7月, 2017 1 次提交
    • S
      vmbus: re-enable channel tasklet · 6463a457
      Stephen Hemminger 提交于
      This problem shows up in 4.11 when netvsc driver is removed and reloaded.
      The problem is that the channel is closed during module removal and the
      tasklet for processing responses is disabled. When module is reloaded
      the channel is reopened but the tasklet is marked as disabled.
      The fix is to re-enable tasklet at the end of close which gets it back
      to the initial state.
      
      The issue is less urgent in 4.12 since network driver now uses NAPI
      and not the tasklet; and other VMBUS devices are rarely unloaded/reloaded.
      
      Fixes: dad72a1d ("vmbus: remove hv_event_tasklet_disable/enable")
      Signed-off-by: NStephen Hemminger <sthemmin@microsoft.com>
      Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6463a457
  4. 18 5月, 2017 1 次提交
  5. 17 3月, 2017 1 次提交
  6. 16 3月, 2017 2 次提交
    • K
      Drivers: hv: vmbus: Don't leak memory when a channel is rescinded · 5e030d5c
      K. Y. Srinivasan 提交于
      When we close a channel that has been rescinded, we will leak memory since
      vmbus_teardown_gpadl() returns an error. Fix this so that we can properly
      cleanup the memory allocated to the ring buffers.
      
      Fixes: ccb61f8a ("Drivers: hv: vmbus: Fix a rescind handling bug")
      Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5e030d5c
    • D
      vmbus: remove hv_event_tasklet_disable/enable · dad72a1d
      Dexuan Cui 提交于
      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: 631e63a9 ("vmbus: change to per channel tasklet")
      Signed-off-by: NDexuan 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: NVitaly Kuznetsov <vkuznets@redhat.com>
      Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dad72a1d
  7. 10 3月, 2017 1 次提交
  8. 15 2月, 2017 2 次提交
  9. 10 2月, 2017 3 次提交
  10. 11 1月, 2017 2 次提交
    • K
      Drivers: hv: vmbus: Fix a rescind handling bug · ccb61f8a
      K. Y. Srinivasan 提交于
      The host can rescind a channel that has been offered to the
      guest and once the channel is rescinded, the host does not
      respond to any requests on that channel. Deal with the case where
      the guest may be blocked waiting for a response from the host.
      Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ccb61f8a
    • V
      Drivers: hv: vmbus: Raise retry/wait limits in vmbus_post_msg() · c0bb0392
      Vitaly Kuznetsov 提交于
      DoS protection conditions were altered in WS2016 and now it's easy to get
      -EAGAIN returned from vmbus_post_msg() (e.g. when we try changing MTU on a
      netvsc device in a loop). All vmbus_post_msg() callers don't retry the
      operation and we usually end up with a non-functional device or crash.
      
      While host's DoS protection conditions are unknown to me my tests show that
      it can take up to 10 seconds before the message is sent so doing udelay()
      is not an option, we really need to sleep. Almost all vmbus_post_msg()
      callers are ready to sleep but there is one special case:
      vmbus_initiate_unload() which can be called from interrupt/NMI context and
      we can't sleep there. I'm also not sure about the lonely
      vmbus_send_tl_connect_request() which has no in-tree users but its external
      users are most likely waiting for the host to reply so sleeping there is
      also appropriate.
      Signed-off-by: NVitaly Kuznetsov <vkuznets@redhat.com>
      Signed-off-by: NK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c0bb0392
  11. 07 11月, 2016 3 次提交
  12. 02 9月, 2016 2 次提交
  13. 31 8月, 2016 6 次提交
  14. 08 2月, 2016 3 次提交
  15. 15 12月, 2015 6 次提交
  16. 05 8月, 2015 1 次提交
  17. 13 6月, 2015 1 次提交