gpu: pvr: fix incorrect free size in PVRSRVOpenBCDeviceKM
authorImre Deak <imre.deak@nokia.com>
Wed, 30 Mar 2011 12:45:07 +0000 (15:45 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Sun, 20 May 2012 18:43:04 +0000 (21:43 +0300)
Also remove the always true condition.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
Reviewed-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
pvr/deviceclass.c

index 826f2a7..cfbe18e 100644 (file)
@@ -1304,6 +1304,7 @@ enum PVRSRV_ERROR PVRSRVOpenBCDeviceKM(
        struct PVRSRV_BUFFERCLASS_INFO *psBCInfo;
        struct PVRSRV_BUFFERCLASS_PERCONTEXT_INFO *psBCPerContextInfo;
        struct PVRSRV_DEVICE_NODE *psDeviceNode;
+       struct BUFFER_INFO sBufferInfo;
        struct SYS_DATA *psSysData;
        u32 i;
        enum PVRSRV_ERROR eError;
@@ -1351,8 +1352,6 @@ FoundDevice:
        OSMemSet(psBCPerContextInfo, 0, sizeof(*psBCPerContextInfo));
 
        if (psBCInfo->ui32RefCount++ == 0) {
-               struct BUFFER_INFO sBufferInfo;
-
                psDeviceNode = (struct PVRSRV_DEVICE_NODE *)hDevCookie;
 
                psBCInfo->hDevMemContext =
@@ -1445,12 +1444,9 @@ err3:
                                                             psKernelSyncInfo);
                }
        }
-
-       if (psBCInfo->psBuffer) {
-               OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP,
-                         sizeof(struct PVRSRV_BC_BUFFER), psBCInfo->psBuffer,
-                         NULL);
-       }
+       OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP,
+                 sizeof(struct PVRSRV_BC_BUFFER) * sBufferInfo.ui32BufferCount,
+                 psBCInfo->psBuffer, NULL);
 err2:
 err1:
        return eError;