X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fvfs%2Fnodecache.c;fp=KernelLand%2FKernel%2Fvfs%2Fnodecache.c;h=0d238941be80a52f40903417982dc6f1b83182ee;hb=82348a3d91e9a846d6997c16ddca3add6a5bf21b;hp=ffad243770a8100f808d72870bd1ccc9097233b1;hpb=891868f0b4d64eb274b5810ac0c4f0a53d104114;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/vfs/nodecache.c b/KernelLand/Kernel/vfs/nodecache.c index ffad2437..0d238941 100644 --- a/KernelLand/Kernel/vfs/nodecache.c +++ b/KernelLand/Kernel/vfs/nodecache.c @@ -142,7 +142,7 @@ int Inode_UncacheNode(int Handle, Uint64 Inode) // Search Cache ent = cache->FirstNode; - prev = (tCachedInode*) &cache->FirstNode; // Special case removal + prev = NULL; for( ; ent; prev = ent, ent = ent->Next ) { if(ent->Node.Inode < Inode) continue; @@ -164,10 +164,13 @@ int Inode_UncacheNode(int Handle, Uint64 Inode) // Check if node needs to be freed if(ent->Node.ReferenceCount == 0) { - prev->Next = ent->Next; + if( prev ) + prev->Next = ent->Next; + else + cache->FirstNode = ent->Next; if(ent->Node.Inode == cache->MaxCached) { - if(ent != cache->FirstNode) + if(ent != cache->FirstNode && prev) cache->MaxCached = prev->Node.Inode; else cache->MaxCached = 0;