fat: Fix vfat_lookup()
authorOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Mon, 11 Jan 2010 18:32:24 +0000 (03:32 +0900)
committerOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Mon, 11 Jan 2010 18:47:25 +0000 (03:47 +0900)
commit8045e2985012bdb95d832dfbcceae1815880a6ed
tree513a853a81eee10f86047b681bf52132592b36b9
parent3c8ad49b015eb115fbd6982f56d530f53cf57f84
fat: Fix vfat_lookup()

After d_find_alias(), vfat_lookup() checks !(->d_flags & DCACHE_DISCONNECTED)
without IS_ROOT().  This means it hits non-anonymous but disconnected
dentry. (NOTE: d_splice_alias() doesn't clear DCACHE_DISCONNECTED)

But, vfat_lookup() has interest to alias if it was non-anonymous. So,
this adds vfat_d_anon_disconn() helper to check it correctly.

Another bug is refcnt leak. It needs dput() for uninterested alias.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
fs/fat/namei_vfat.c