Re: VFAT oops (the fun just keeps on coming)

Alexander Viro (viro@math.psu.edu)
Wed, 20 Jan 1999 15:07:03 -0500 (EST)


On Wed, 20 Jan 1999, CaT wrote:

>
> Here we go, here we go, here we go...
>
> I think reality is playing a nasty, evil and bastardly
> trick on me to make me delurk. I wish it stopped...
[snip]
>
> >>EIP: c0145015 <vfat_free_ino+d/84>
> Trace: c01450f5 <vfat_remove_entry+69/e0>
> Trace: c014561b <vfat_rename+20b/4ac>
> Trace: c012a109 <vfs_rename+245/254>
> Trace: c012a24f <sys_rename+137/1b0>
> Trace: c01087f8 <system_call+34/38>
> Code: c0145015 <vfat_free_ino+d/84> 00000000 <_EIP>:
> Code: c0145015 <vfat_free_ino+d/84> 0: 66 c7 43 24 00 movw $0x0,0x24(%ebx)
> Code: c014501a <vfat_free_ino+12/84> 5: 00
> Code: c014501b <vfat_free_ino+13/84> 6: a1 f0 ba 2a c0 movl 0xc02abaf0,%eax
> Code: c0145020 <vfat_free_ino+18/84> b: 89 42 34 movl %eax,0x34(%edx)
> Code: c0145023 <vfat_free_ino+1b/84> e: 89 43 34 movl %eax,0x34(%ebx)
> Code: c0145026 <vfat_free_ino+1e/84> 11: a1 f0 ba 00 00 movl 0xbaf0,%eax

WTF??? Somebody called vfat_remove_entry() with NULL victim?
vfat_rename()? <looking at the source> Oh, shit!

Linus, sorry, I had a bad braino in the last part of vfat patch.
Darn... call of vfat_remove_entry() should go one level deeper. Shame on
me. Fix:

--- linux/fs/vfat/namei.c.old Wed Jan 20 15:03:01 1999
+++ linux/fs/vfat/namei.c Wed Jan 20 15:03:42 1999
@@ -1656,8 +1656,8 @@
} else {
drop_aliases(new_dentry);
}
+ res = vfat_remove_entry(new_dir,&sinfo,new_inode);
}
- res = vfat_remove_entry(new_dir,&sinfo,new_inode);
if (res)
goto rename_done;

Please, apply it.
Embarrased,
Al

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/