Ticket #38: session-release.diff

File session-release.diff, 1.5 KB (added by Valery V. Sedletski, 8 years ago)

Session retain/release counter fix

  • HostDrivers/Support/os2/SUPDrv-os2.cpp

     
    222222    /*
    223223     * Close the session.
    224224     */
    225     supdrvSessionRelease(pSession);
     225    if (pSession)
     226        supdrvSessionRelease(pSession);
     227
    226228    return 0;
    227229}
    228230
     
    245247               &&   (   pSession->sfn != sfn
    246248                     || pSession->Process != Process));
    247249
    248         if (RT_LIKELY(pSession))
    249             supdrvSessionRetain(pSession);
    250250    }
    251251    RTSpinlockRelease(g_Spinlock);
    252     if (RT_UNLIKELY(!pSession))
     252    if (!pSession)
    253253    {
    254254        OSDBGPRINT(("VBoxDrvIoctl: WHUT?!? pSession == NULL! This must be a mistake... pid=%d\n", (int)Process));
    255255        return VERR_INVALID_PARAMETER;
     
    259259     * Dispatch the fast IOCtl.
    260260     */
    261261    supdrvIOCtlFast(iFunction, 0, &g_DevExt, pSession);
    262     supdrvSessionRelease(pSession);
    263262    return 0;
    264263}
    265264
     
    282281        while (     pSession
    283282               &&   (   pSession->sfn != sfn
    284283                     || pSession->Process != Process));
    285 
    286         if (RT_LIKELY(pSession))
    287             supdrvSessionRetain(pSession);
    288284    }
    289285    RTSpinlockRelease(g_Spinlock);
    290286    if (!pSession)
     
    359355    else
    360356        rc = VERR_NOT_SUPPORTED;
    361357
    362     supdrvSessionRelease(pSession);
    363358    Log2(("VBoxDrvIOCtl: returns %d\n", rc));
    364359    return rc;
    365360}