>>>+NTSTATUS WvPdAlloc(WV_DEVICE *pDevice, WV_PROTECTION_DOMAIN **ppPd,
>>>+                                  ci_umv_buf_t *pVerbsData)
>>>+{
>>>+       ib_api_status_t                 ib_status;
>>>+       WV_PROTECTION_DOMAIN    *pd;
>>>+
>>>+       pd = ExAllocatePoolWithTag(PagedPool, sizeof(WV_PROTECTION_DOMAIN),
>>'apvw');
>>>+       if (pd == NULL) {
>>>+               return STATUS_NO_MEMORY;
>>>+       }
>>>+
>>>+       pd->Ref = 1;
>>>+       KeInitializeEvent(&pd->Event, NotificationEvent, FALSE);
>>>+       pd->pDevice = pDevice;
>>>+       pd->pVerbs = pDevice->pVerbs;
>>>+       cl_qmap_init(&pd->MrMap);
>>>+       KeInitializeGuardedMutex(&pd->Lock);
>>>+
>>>+       ib_status = pDevice->pVerbs->allocate_pd(pDevice->hVerbsDevice,
>>IB_PDT_NORMAL,
>>>+
>>&pd->hVerbsPd, pVerbsData);
>>>+       if (ib_status != IB_SUCCESS) {
>>>+               goto err;
>>>+       }
>>>+
>>>+       WvDeviceGet(pDevice);
>>
>>I would put this line together with the pDevice assignment so that it's 
>>clearer
>>why you're taking a reference.
>
>Then I end up needing to put the reference on failure...

Not if you move the assignment of the pDevice down (and pVerbs too while you're 
at it).

-Fab
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to