[ovs-git] [openvswitch/ovs] 448d66: datapath-windows: Solved BSOD when loading an acti...

GitHub noreply at github.com
Fri Jan 30 21:27:39 UTC 2015


  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: 448d667b7b9b1d7ebd9b4cb3338ffea33158c579
      https://github.com/openvswitch/ovs/commit/448d667b7b9b1d7ebd9b4cb3338ffea33158c579
  Author: Sorin Vinturis <svinturis at cloudbasesolutions.com>
  Date:   2015-01-30 (Fri, 30 Jan 2015)

  Changed paths:
    M datapath-windows/ovsext/Datapath.c
    M datapath-windows/ovsext/Datapath.h
    M datapath-windows/ovsext/Driver.c

  Log Message:
  -----------
  datapath-windows: Solved BSOD when loading an activated extension

If the OVS extension was previously enabled and the driver unloaded,
when the driver is loaded again a BSOD is triggered.

This happens because the OVS extension registers its FilterXxx routines
to NDIS, by calling NdisFRegisterFilterDriver, before performing all
the necessary initialization. Because drivers that call
NdisFRegisterFilterDriver must be prepared for an immediate call to any
of their FilterXxx functions.

The BSOD is triggered because the FilterAttach routine, OvsExtAttach,
tries to acquire the control lock, when the lock is not yet initialized.
This happens because the FilterAttach is called before the driver
finishes initialization, in OvsInit().

The solution is to perform all necessary initialization before
registering OVS FilterXxx routines.

If device object creation fails, all allocated resources during init
phase are released by calling OvsCleanup and NdisFDeregisterFilterDriver
functions.

Signed-off-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Reported-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Reported-at: https://github.com/openvswitch/ovs-issues/issues/67
Acked-by: Nithin Raju <nithin at vmware.com>
Signed-off-by: Ben Pfaff <blp at nicira.com>




More information about the git mailing list