Hi,

I've had two VFS OOPS's with SUSE 10.0 just within few days 
of running it. This box was previously running 9.1, and was
perfectly stable with it. Luckily didn't have panic on oops
enabled on this one :/. Some known shonk you guys are already
aware of?

Having a look at these, the other one occurred in mntput 
(via __fput) while trying to set mnt_expiry_mark to zero. 
It OOPS'd due to vfsmount* being bogus;

Unable to handle kernel paging request at virtual address 00ff44d0
EIP 0xc015a0c1; EDI 00ff44a0

void fastcall __fput(struct file *file)
{
 ...
        file_free(file);
        dput(dentry);
        mntput(mnt);
}
static inline void mntput(struct vfsmount *mnt)
{
        if (mnt) {
                mnt->mnt_expiry_mark = 0;
                mntput_no_expire(mnt);
        }
}

__fput:
..
0xc015a0b8 <__fput+232>:        call   0xc016e040 <dput>
0xc015a0bd <__fput+237>:        test   %edi,%edi
0xc015a0bf <__fput+239>:        je     0xc015a0d2 <__fput+258>
0xc015a0c1 <__fput+241>:        movl   $0x0,0x30(%edi)
0xc015a0c8 <__fput+248>:        decl   0x28(%edi)
..

Having a look at the second one,

Unable to handle kernel paging request at virtual address 0860f144
EIP at c016ee5e (__d_lookup+94), ESI & EBX 0860f144

__d_lookup:
..
                } else {
                        if (qstr->len != len)
                                goto next;
                        if (memcmp(qstr->name, str, len))
                                goto next;
                }
                if (!d_unhashed(dentry)) {
                        atomic_inc(&dentry->d_count);
                        found = dentry;
                }

..

static inline int d_unhashed(struct dentry *dentry)
{
         return (dentry->d_flags & DCACHE_UNHASHED);
}

0xc016ee54 <__d_lookup+84>:     jne    0xc016ee5e <__d_lookup+94>
0xc016ee56 <__d_lookup+86>:     jmp    0xc016eea4 <__d_lookup+164>
0xc016ee58 <__d_lookup+88>:     mov    %ebx,%esi
0xc016ee5a <__d_lookup+90>:     test   %ebx,%ebx
0xc016ee5c <__d_lookup+92>:     je     0xc016eea4 <__d_lookup+164>
0xc016ee5e <__d_lookup+94>:     mov    (%esi),%ebx
0xc016ee60 <__d_lookup+96>:     lea    0x0(%esi),%esi
0xc016ee64 <__d_lookup+100>:    lea    0xffffffa8(%esi),%ebp
0xc016ee67 <__d_lookup+103>:    mov    0x14(%esp),%eax
0xc016ee6b <__d_lookup+107>:    cmp    0x10(%ebp),%eax

A broken dentry. What's going on here?

Linux marvin 2.6.13-15-default #1 Tue Sep 13 14:56:15 UTC 2005 i686 
athlon i386 GNU/Linux


-- 
// Janne

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to