Applied to master, thanks!

On Thu, Apr 23, 2015 at 12:49:39PM +0000, Sorin Vinturis wrote:
> That's a good catch. Thanks Nithin!
> 
> Acked-by: Sorin Vinturis <svintu...@cloudbasesolutions.com>
> 
> -----Original Message-----
> From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Nithin Raju
> Sent: Thursday, 23 April, 2015 03:10
> To: dev@openvswitch.org
> Subject: [ovs-dev] [PATCH] datapath-windows: don't free switch cxt until ref 
> == 0
> 
> This is a hard to hit corner case, because currently we recommend that all 
> handles to the kernel datapath be closed before trying to unload the OVS 
> extension.
> 
> Signed-off-by: Nithin Raju <nit...@vmware.com>
> ---
>  datapath-windows/ovsext/Switch.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/datapath-windows/ovsext/Switch.c 
> b/datapath-windows/ovsext/Switch.c
> index 4f4591f..9dd2ef3 100644
> --- a/datapath-windows/ovsext/Switch.c
> +++ b/datapath-windows/ovsext/Switch.c
> @@ -211,7 +211,6 @@ OvsCreateSwitch(NDIS_HANDLE ndisFilterHandle,
>      status = OvsTunnelFilterInitialize(gOvsExtDriverObject);
>      if (status != NDIS_STATUS_SUCCESS) {
>          OvsUninitSwitchContext(switchContext);
> -        OvsFreeMemoryWithTag(switchContext, OVS_SWITCH_POOL_TAG);
>          goto create_switch_done;
>      }
>      *switchContextOut = switchContext;
> @@ -270,7 +269,6 @@ OvsDeleteSwitch(POVS_SWITCH_CONTEXT switchContext)
>          OvsTunnelFilterUninitialize(gOvsExtDriverObject);
>          OvsClearAllSwitchVports(switchContext);
>          OvsUninitSwitchContext(switchContext);
> -        OvsFreeMemoryWithTag(switchContext, OVS_SWITCH_POOL_TAG);
>      }
>      OVS_LOG_TRACE("Exit: deleted switch %p  dpNo: %d", switchContext, dpNo); 
>  } @@ -441,7 +439,12 @@ OvsUninitSwitchContext(POVS_SWITCH_CONTEXT 
> switchContext)
>      OvsReleaseSwitchContext(switchContext);
>  }
>  
> -VOID
> +/*
> + * 
> +-----------------------------------------------------------------------
> +---
> + *  Frees up the contents of and also the switch context.
> + * 
> +-----------------------------------------------------------------------
> +---
> + */
> +static VOID
>  OvsDeleteSwitchContext(POVS_SWITCH_CONTEXT switchContext)  {
>      OVS_LOG_TRACE("Enter: Delete switchContext:%p", switchContext); @@ 
> -467,6 +470,8 @@ OvsDeleteSwitchContext(POVS_SWITCH_CONTEXT switchContext)
>      switchContext->pidHashArray = NULL;
>      OvsDeleteFlowTable(&switchContext->datapath);
>      OvsCleanupBufferPool(switchContext);
> +
> +    OvsFreeMemoryWithTag(switchContext, OVS_SWITCH_POOL_TAG);
>      OVS_LOG_TRACE("Exit: Delete switchContext: %p", switchContext);  }
>  
> --
> 1.8.5.6
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to