• Ilya Dryomov's avatar
    ceph: canonicalize server path in place · b27a939e
    Ilya Dryomov authored
    syzbot reported that 4fbc0c71 ("ceph: remove the extra slashes in
    the server path") had caused a regression where an allocation could be
    done under a spinlock -- compare_mount_options() is called by sget_fc()
    with sb_lock held.
    
    We don't really need the supplied server path, so canonicalize it
    in place and compare it directly.  To make this work, the leading
    slash is kept around and the logic in ceph_real_mount() to skip it
    is restored.  CEPH_MSG_CLIENT_SESSION now reports the same (i.e.
    canonicalized) path, with the leading slash of course.
    
    Fixes: 4fbc0c71 ("ceph: remove the extra slashes in the server path")
    Reported-by: syzbot+98704a51af8e3d9425a9@syzkaller.appspotmail.com
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    b27a939e
super.h 36.3 KB