X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fllite%2Fdir.c;h=3ea338a96da1c57cc91e4061559d6b8be9ee8383;hp=f5cf9543b9ede8848bc3f386b3da9dcde767a12c;hb=ecea0c8776ea2d085e35198d13ea41c4fbf49a8e;hpb=7d649777daf616ae2b8ff7f8377f6dca71a5d956 diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index f5cf954..3ea338a 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -918,8 +918,11 @@ out_free: lmdp = (struct lov_user_mds_data *)arg; lump = &lmdp->lmd_lmm; } - if (cfs_copy_to_user(lump, lmm, lmmsize)) - GOTO(out_req, rc = -EFAULT); + if (cfs_copy_to_user(lump, lmm, lmmsize)) { + if (cfs_copy_to_user(lump, lmm, sizeof(*lump))) + GOTO(out_req, rc = -EFAULT); + rc = -EOVERFLOW; + } skip_lmm: if (cmd == IOC_MDC_GETFILEINFO || cmd == LL_IOC_MDC_GETINFO) { struct lov_user_mds_data *lmdp; @@ -1113,7 +1116,7 @@ out_free: CDEBUG(D_QUOTA, "mdc ioctl %d failed: %d\n", cmd, rc); if (cfs_copy_to_user((void *)arg, check, sizeof(*check))) - rc = -EFAULT; + CDEBUG(D_QUOTA, "cfs_copy_to_user failed\n"); GOTO(out_poll, rc); } @@ -1123,7 +1126,7 @@ out_free: CDEBUG(D_QUOTA, "osc ioctl %d failed: %d\n", cmd, rc); if (cfs_copy_to_user((void *)arg, check, sizeof(*check))) - rc = -EFAULT; + CDEBUG(D_QUOTA, "cfs_copy_to_user failed\n"); GOTO(out_poll, rc); } out_poll: