• Jeff Layton's avatar
    cifs: guard against hardlinking directories · 3d694380
    Jeff Layton authored
    When we made serverino the default, we trusted that the field sent by the
    server in the "uniqueid" field was actually unique. It turns out that it
    isn't reliably so.
    
    Samba, in particular, will just put the st_ino in the uniqueid field when
    unix extensions are enabled. When a share spans multiple filesystems, it's
    quite possible that there will be collisions. This is a server bug, but
    when the inodes in question are a directory (as is often the case) and
    there is a collision with the root inode of the mount, the result is a
    kernel panic on umount.
    
    Fix this by checking explicitly for directory inodes with the same
    uniqueid. If that is the case, then we can assume that using server inode
    numbers will be a problem and that they should be disabled.
    
    Fixes Samba bugzilla 7407
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    CC: Stable <stable@kernel.org>
    Reviewed-and-Tested-by: default avatarSuresh Jayaraman <sjayaraman@suse.de>
    Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
    3d694380
inode.c 53.8 KB