Message ID | 155968498711.1657646.16552958514650953190.stgit@magnolia (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | xfs: refactor and improve inode iteration | expand |
On Tue, Jun 04, 2019 at 02:49:47PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > When userspace passes in a @lastip pointer we should copy the results > back, even if the @ocount pointer is NULL. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> > --- Reviewed-by: Brian Foster <bfoster@redhat.com> > fs/xfs/xfs_ioctl.c | 13 ++++++------- > fs/xfs/xfs_ioctl32.c | 13 ++++++------- > 2 files changed, 12 insertions(+), 14 deletions(-) > > > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index d7dfc13f30f5..5ffbdcff3dba 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -768,14 +768,13 @@ xfs_ioc_bulkstat( > if (error) > return error; > > - if (bulkreq.ocount != NULL) { > - if (copy_to_user(bulkreq.lastip, &inlast, > - sizeof(xfs_ino_t))) > - return -EFAULT; > + if (bulkreq.lastip != NULL && > + copy_to_user(bulkreq.lastip, &inlast, sizeof(xfs_ino_t))) > + return -EFAULT; > > - if (copy_to_user(bulkreq.ocount, &count, sizeof(count))) > - return -EFAULT; > - } > + if (bulkreq.ocount != NULL && > + copy_to_user(bulkreq.ocount, &count, sizeof(count))) > + return -EFAULT; > > return 0; > } > diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c > index 614fc6886d24..814ffe6fbab7 100644 > --- a/fs/xfs/xfs_ioctl32.c > +++ b/fs/xfs/xfs_ioctl32.c > @@ -310,14 +310,13 @@ xfs_compat_ioc_bulkstat( > if (error) > return error; > > - if (bulkreq.ocount != NULL) { > - if (copy_to_user(bulkreq.lastip, &inlast, > - sizeof(xfs_ino_t))) > - return -EFAULT; > + if (bulkreq.lastip != NULL && > + copy_to_user(bulkreq.lastip, &inlast, sizeof(xfs_ino_t))) > + return -EFAULT; > > - if (copy_to_user(bulkreq.ocount, &count, sizeof(count))) > - return -EFAULT; > - } > + if (bulkreq.ocount != NULL && > + copy_to_user(bulkreq.ocount, &count, sizeof(count))) > + return -EFAULT; > > return 0; > } >
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index d7dfc13f30f5..5ffbdcff3dba 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -768,14 +768,13 @@ xfs_ioc_bulkstat( if (error) return error; - if (bulkreq.ocount != NULL) { - if (copy_to_user(bulkreq.lastip, &inlast, - sizeof(xfs_ino_t))) - return -EFAULT; + if (bulkreq.lastip != NULL && + copy_to_user(bulkreq.lastip, &inlast, sizeof(xfs_ino_t))) + return -EFAULT; - if (copy_to_user(bulkreq.ocount, &count, sizeof(count))) - return -EFAULT; - } + if (bulkreq.ocount != NULL && + copy_to_user(bulkreq.ocount, &count, sizeof(count))) + return -EFAULT; return 0; } diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c index 614fc6886d24..814ffe6fbab7 100644 --- a/fs/xfs/xfs_ioctl32.c +++ b/fs/xfs/xfs_ioctl32.c @@ -310,14 +310,13 @@ xfs_compat_ioc_bulkstat( if (error) return error; - if (bulkreq.ocount != NULL) { - if (copy_to_user(bulkreq.lastip, &inlast, - sizeof(xfs_ino_t))) - return -EFAULT; + if (bulkreq.lastip != NULL && + copy_to_user(bulkreq.lastip, &inlast, sizeof(xfs_ino_t))) + return -EFAULT; - if (copy_to_user(bulkreq.ocount, &count, sizeof(count))) - return -EFAULT; - } + if (bulkreq.ocount != NULL && + copy_to_user(bulkreq.ocount, &count, sizeof(count))) + return -EFAULT; return 0; }