Re: Intentionally corrupted vfat fs causing BUG

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 24, 2014 at 12:28:58AM +0900, OGAWA Hirofumi wrote:
> > What about this one?
> 
> Looks like strange. If we want to tackle this at per-FS. We should not
> return double linked dir at first.  Since double linked breaks dir
> hierarchy, even if this one can avoid that Oops, double linked can be
> easily the cause of another Oops, deadlock, etc.
> 
> Well, this patch is untested though. For example, somethings like
> following. But, again, this fixes only one of cases in double linked.
> (And to fix fully, my mind was already talked.)

Hmm...  Why hadn't d_splice_alias() caught that, though?  Look: in that
case we see that inode is non-NULL, a directory and has an alias
(namely, dentry->d_parent).  So we hit this:
                new = __d_find_any_alias(inode);
                if (new) {
                        if (!IS_ROOT(new)) {
                                spin_unlock(&inode->i_lock);
                                dput(new);
                                return ERR_PTR(-EIO);
                        }
                        if (d_ancestor(new, dentry)) {
                                spin_unlock(&inode->i_lock);
                                dput(new);
                                return ERR_PTR(-EIO);
                        }
and depending on whether that ->d_parent had been the filesystem root,
we hit either the former or the latter.  IOW, we should've done
exactly that...

FWIW, there *is* a bug in that path - we ought to have done iput(inode)
on both failure exits in order to follow the calling conventions.  But that
doesn't look like it would oops right there...

Could somebody repost the oops stack trace?  The bug in d_splice_alias()
is real (and fairly old), but I'd like to understand if there's anything
else in the game...
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux