Kernel/x86-smp - Fixing SMP support
[tpg/acess2.git] / KernelLand / Kernel / binary.c
index 8a8bc3e..208ab95 100644 (file)
@@ -194,9 +194,10 @@ int Proc_SysSpawn(const char *Binary, const char **ArgV, const char **EnvP, int
                Proc_Execve(Binary, ArgV, EnvP, size);
                for(;;);
        }
-       if( ret < 0 )
+       if( ret == -1 )
        {
                VFS_FreeSavedHandles(nFD, handles);
+               free(cachebuf);
        }
        
        return ret;
@@ -822,9 +823,12 @@ Uint Binary_GetSymbolEx(const char *Name, Uint *Value)
        tKernelBin      *pKBin;
         int    numKSyms = ((Uint)&gKernelSymbolsEnd-(Uint)&gKernelSymbols)/sizeof(tKernelSymbol);
        
+       LOG("numKSyms = %i", numKSyms);
+
        // Scan Kernel
        for( i = 0; i < numKSyms; i++ )
        {
+               LOG("KSym %s = %p", gKernelSymbols[i].Name, gKernelSymbols[i].Value);
                if(strcmp(Name, gKernelSymbols[i].Name) == 0) {
                        *Value = gKernelSymbols[i].Value;
                        return 1;
@@ -881,12 +885,12 @@ int Binary_int_CheckMemFree( tVAddr _start, size_t _len )
        _start &= ~(PAGE_SIZE-1);
        LOG("_start = %p, _len = 0x%x", _start, _len);
        for( ; _len > PAGE_SIZE; _len -= PAGE_SIZE, _start += PAGE_SIZE ) {
-               if( MM_GetPhysAddr(_start) != 0 ) {
+               if( MM_GetPhysAddr( (void*)_start ) != 0 ) {
                        LEAVE('i', 1);
                        return 1;
                }
        }
-       if( _len == PAGE_SIZE && MM_GetPhysAddr(_start) != 0 ) {
+       if( _len == PAGE_SIZE && MM_GetPhysAddr( (void*)_start ) != 0 ) {
                LEAVE('i', 1);
                return 1;
        }

UCC git Repository :: git.ucc.asn.au