X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Ffhandle.c;h=a48e4a139be150d01aed47a4e387a14db9e731cb;hb=c909e99364c8b6ca07864d752950b6b4ecf6bef4;hp=6b088641f5bf24ce72311a3b8073ce44516b8624;hpb=e33ab8f275cf6e0e0bf6c9c44149de46222b36cc;p=~andy%2Flinux diff --git a/fs/fhandle.c b/fs/fhandle.c index 6b088641f5b..a48e4a139be 100644 --- a/fs/fhandle.c +++ b/fs/fhandle.c @@ -10,6 +10,7 @@ #include #include #include "internal.h" +#include "mount.h" static long do_sys_name_to_handle(struct path *path, struct file_handle __user *ufh, @@ -24,8 +25,8 @@ static long do_sys_name_to_handle(struct path *path, * We need t make sure wether the file system * support decoding of the file handle */ - if (!path->mnt->mnt_sb->s_export_op || - !path->mnt->mnt_sb->s_export_op->fh_to_dentry) + if (!path->dentry->d_sb->s_export_op || + !path->dentry->d_sb->s_export_op->fh_to_dentry) return -EOPNOTSUPP; if (copy_from_user(&f_handle, ufh, sizeof(struct file_handle))) @@ -66,7 +67,8 @@ static long do_sys_name_to_handle(struct path *path, } else retval = 0; /* copy the mount id */ - if (copy_to_user(mnt_id, &path->mnt->mnt_id, sizeof(*mnt_id)) || + if (copy_to_user(mnt_id, &real_mount(path->mnt)->mnt_id, + sizeof(*mnt_id)) || copy_to_user(ufh, handle, sizeof(struct file_handle) + handle_bytes)) retval = -EFAULT;