[ovs-dev] [PATCH] datapath-windows: BSOD for a transactional NL cmd w/o dump state

Nithin Raju nithin at vmware.com
Tue Nov 18 06:58:54 UTC 2014


hi Sorin,

_FlowNlGetCmdHandler() is used for a Flow command sent down as a transaction as shown in the following code:

NTSTATUS                                                         
OvsFlowNlGetCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,    
                       UINT32 *replyLen)                         
{                                                                
[...]
    if (usrParamsCtx->devOp == OVS_TRANSACTION_DEV_OP) {         
        status = _FlowNlGetCmdHandler(usrParamsCtx, replyLen);   

It is bug that _FlowNlGetCmdHandler() is accessing 'instance->dumpState.ovsMsg' even though it is handler for OVS_TRANSACTION_DEV_OP. The fix in '_FlowNlGetCmdHandler()' should merely be:

- POVS_MESSAGE msgIn = instance->dumpState.ovsMsg;
+ POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;

That should fix the issue.

> Also modified OvsFlowNlGetCmdHandler() to handle transactional
> errors.

As a practice, we don't combine patches that fix difference things into one patch. In this case, you can split the bigger patch into 2 patches, and send them out as a series.

thanks,
-- Nithin


More information about the dev mailing list