[ovs-dev] [PATCH] datapath-windows: BSOD when disabling the extension

Ben Pfaff blp at nicira.com
Tue Jun 16 03:18:41 UTC 2015


OK, great, I applied this to master.

On Fri, Jun 12, 2015 at 1:54 PM, Alin Serdean
<aserdean at cloudbasesolutions.com> wrote:
> Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
>
>
>
> -----Mesaj original-----
> De la: dev [mailto:dev-bounces at openvswitch.org] În numele Sorin Vinturis
> Trimis: Thursday, May 28, 2015 11:31 PM
> Către: dev at openvswitch.org
> Subiect: [ovs-dev] [PATCH] datapath-windows: BSOD when disabling the extension
>
> When the filter detach routine is called while there are packets still in processing, the OvsUninitSwitchContext function call will decrement the switch context reference count without releasing the switch context structure. This behaviour is correct and expected, but the BSOD is caused in this case because the gOvsSwitchContext variable is set to NULL, which is wrong.
>
> The gOvsSwitchContext global variable must be set to NULL only when the switch context structure is actually released.
>
> 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/80
> ---
>  datapath-windows/ovsext/Switch.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/datapath-windows/ovsext/Switch.c b/datapath-windows/ovsext/Switch.c
> index f877854..99a306d 100644
> --- a/datapath-windows/ovsext/Switch.c
> +++ b/datapath-windows/ovsext/Switch.c
> @@ -201,6 +201,7 @@ OvsCreateSwitch(NDIS_HANDLE ndisFilterHandle,
>      status = OvsInitSwitchContext(switchContext);
>      if (status != NDIS_STATUS_SUCCESS) {
>          OvsFreeMemoryWithTag(switchContext, OVS_SWITCH_POOL_TAG);
> +        switchContext = NULL;
>          goto create_switch_done;
>      }
>
> @@ -240,7 +241,6 @@ OvsExtDetach(NDIS_HANDLE filterModuleContext)
>      }
>      OvsDeleteSwitch(switchContext);
>      OvsCleanupIpHelper();
> -    gOvsSwitchContext = NULL;
>      /* This completes the cleanup, and a new attach can be handled now. */
>
>      OVS_LOG_TRACE("Exit: OvsDetach Successfully"); @@ -495,6 +495,7 @@ OvsReleaseSwitchContext(POVS_SWITCH_CONTEXT switchContext)
>
>      if (ref == 1) {
>          OvsDeleteSwitchContext(switchContext);
> +        gOvsSwitchContext = NULL;
>      }
>  }
>
> --
> 1.9.0.msysgit.0
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



-- 
"I don't normally do acked-by's.  I think it's my way of avoiding
getting blamed when it all blows up."               Andrew Morton



More information about the dev mailing list