| To: | david@xxxxxxxxxxxxx |
|---|---|
| Subject: | [PATCH] xfs: in _attrlist_by_handle, copy the cursor back to userspace |
| From: | "Darrick J. Wong" <darrick.wong@xxxxxxxxxx> |
| Date: | Mon, 1 Aug 2016 20:56:51 -0700 |
| Cc: | xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| User-agent: | Mutt/1.5.24 (2015-08-30) |
When we're iterating inode xattrs by handle, we have to copy the
cursor back to userspace so that a subsequent invocation actually
retrieves subsequent contents.
Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
---
fs/xfs/xfs_ioctl.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 2ef22db..30e69f5 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -390,6 +390,7 @@ xfs_attrlist_by_handle(
{
int error = -ENOMEM;
attrlist_cursor_kern_t *cursor;
+ struct xfs_fsop_attrlist_handlereq __user *p = arg;
xfs_fsop_attrlist_handlereq_t al_hreq;
struct dentry *dentry;
char *kbuf;
@@ -422,6 +423,11 @@ xfs_attrlist_by_handle(
if (error)
goto out_kfree;
+ if (copy_to_user(&p->pos, cursor, sizeof(attrlist_cursor_kern_t))) {
+ error = -EFAULT;
+ goto out_kfree;
+ }
+
if (copy_to_user(al_hreq.buffer, kbuf, al_hreq.buflen))
error = -EFAULT;
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH] vfs: cap dedupe request structure size at PAGE_SIZE, Mark Fasheh |
|---|---|
| Next by Date: | 2016-08-02 12:37:16hoist ring factory, rigging1@xxxxxxxx |
| Previous by Thread: | 2016-08-01 16:42:30hoist ring factory, rigging1@xxxxxxxx |
| Next by Thread: | Re: [PATCH] xfs: in _attrlist_by_handle, copy the cursor back to userspace, Christoph Hellwig |
| Indexes: | [Date] [Thread] [Top] [All Lists] |