From: Al Viro <viro@ZenIV.linux.org.uk>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Sasha Levin <sasha.levin@oracle.com>,
Andrey Ryabinin <ryabinin.a.a@gmail.com>,
Matthew Wilcox <willy@linux.intel.com>,
Chuck Ebbert <cebbert.lkml@gmail.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>, Jens Axboe <axboe@kernel.dk>,
Dan Williams <dan.j.williams@intel.com>
Subject: Re: fs: out of bounds on stack in iov_iter_advance
Date: Wed, 11 Nov 2015 16:33:39 +0000 [thread overview]
Message-ID: <20151111163339.GM22011@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20151111101948.GL22011@ZenIV.linux.org.uk>
On Wed, Nov 11, 2015 at 10:19:48AM +0000, Al Viro wrote:
> I'll cook the minimal fixup for API change after I get some sleep and
> send it your way, unless somebody gets there first...
This should do it - switches ->ioctl() to pvfs2_inode_[gs]etxattr() and
converts xattr_handler ->[gs]et() to new API.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c
index feb1764..3d6ffe0 100644
--- a/fs/orangefs/file.c
+++ b/fs/orangefs/file.c
@@ -793,11 +793,10 @@ static long pvfs2_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
*/
if (cmd == FS_IOC_GETFLAGS) {
val = 0;
- ret = pvfs2_xattr_get_default(file->f_path.dentry,
- "user.pvfs2.meta_hint",
- &val,
- sizeof(val),
- 0);
+ ret = pvfs2_inode_getxattr(file_inode(file),
+ PVFS2_XATTR_NAME_DEFAULT_PREFIX,
+ "user.pvfs2.meta_hint",
+ &val, sizeof(val));
if (ret < 0 && ret != -ENODATA)
return ret;
else if (ret == -ENODATA)
@@ -827,12 +826,10 @@ static long pvfs2_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
gossip_debug(GOSSIP_FILE_DEBUG,
"pvfs2_ioctl: FS_IOC_SETFLAGS: %llu\n",
(unsigned long long)val);
- ret = pvfs2_xattr_set_default(file->f_path.dentry,
- "user.pvfs2.meta_hint",
- &val,
- sizeof(val),
- 0,
- 0);
+ ret = pvfs2_inode_setxattr(file_inode(file),
+ PVFS2_XATTR_NAME_DEFAULT_PREFIX,
+ "user.pvfs2.meta_hint",
+ &val, sizeof(val), 0);
}
return ret;
diff --git a/fs/orangefs/pvfs2-kernel.h b/fs/orangefs/pvfs2-kernel.h
index 29b4a48..43339c6 100644
--- a/fs/orangefs/pvfs2-kernel.h
+++ b/fs/orangefs/pvfs2-kernel.h
@@ -237,19 +237,6 @@ extern const struct xattr_handler *pvfs2_xattr_handlers[];
extern struct posix_acl *pvfs2_get_acl(struct inode *inode, int type);
extern int pvfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type);
-int pvfs2_xattr_set_default(struct dentry *dentry,
- const char *name,
- const void *buffer,
- size_t size,
- int flags,
- int handler_flags);
-
-int pvfs2_xattr_get_default(struct dentry *dentry,
- const char *name,
- void *buffer,
- size_t size,
- int handler_flags);
-
/*
* Redefine xtvec structure so that we could move helper functions out of
* the define
diff --git a/fs/orangefs/xattr.c b/fs/orangefs/xattr.c
index 227eaa4..b683daa 100644
--- a/fs/orangefs/xattr.c
+++ b/fs/orangefs/xattr.c
@@ -447,12 +447,12 @@ out_unlock:
return ret;
}
-int pvfs2_xattr_set_default(struct dentry *dentry,
- const char *name,
- const void *buffer,
- size_t size,
- int flags,
- int handler_flags)
+static int pvfs2_xattr_set_default(const struct xattr_handler *handler,
+ struct dentry *dentry,
+ const char *name,
+ const void *buffer,
+ size_t size,
+ int flags)
{
return pvfs2_inode_setxattr(dentry->d_inode,
PVFS2_XATTR_NAME_DEFAULT_PREFIX,
@@ -462,11 +462,11 @@ int pvfs2_xattr_set_default(struct dentry *dentry,
flags);
}
-int pvfs2_xattr_get_default(struct dentry *dentry,
- const char *name,
- void *buffer,
- size_t size,
- int handler_flags)
+static int pvfs2_xattr_get_default(const struct xattr_handler *handler,
+ struct dentry *dentry,
+ const char *name,
+ void *buffer,
+ size_t size)
{
return pvfs2_inode_getxattr(dentry->d_inode,
PVFS2_XATTR_NAME_DEFAULT_PREFIX,
@@ -476,12 +476,12 @@ int pvfs2_xattr_get_default(struct dentry *dentry,
}
-static int pvfs2_xattr_set_trusted(struct dentry *dentry,
- const char *name,
- const void *buffer,
- size_t size,
- int flags,
- int handler_flags)
+static int pvfs2_xattr_set_trusted(const struct xattr_handler *handler,
+ struct dentry *dentry,
+ const char *name,
+ const void *buffer,
+ size_t size,
+ int flags)
{
return pvfs2_inode_setxattr(dentry->d_inode,
PVFS2_XATTR_NAME_TRUSTED_PREFIX,
@@ -491,11 +491,11 @@ static int pvfs2_xattr_set_trusted(struct dentry *dentry,
flags);
}
-static int pvfs2_xattr_get_trusted(struct dentry *dentry,
- const char *name,
- void *buffer,
- size_t size,
- int handler_flags)
+static int pvfs2_xattr_get_trusted(const struct xattr_handler *handler,
+ struct dentry *dentry,
+ const char *name,
+ void *buffer,
+ size_t size)
{
return pvfs2_inode_getxattr(dentry->d_inode,
PVFS2_XATTR_NAME_TRUSTED_PREFIX,
next prev parent reply other threads:[~2015-11-11 16:33 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-12 14:13 fs: out of bounds on stack in iov_iter_advance Sasha Levin
2015-08-15 20:13 ` Chuck Ebbert
2015-08-17 9:18 ` Andrey Ryabinin
2015-08-19 5:46 ` Al Viro
2015-09-02 20:00 ` Sasha Levin
2015-09-18 2:24 ` Sasha Levin
2015-09-30 21:30 ` Sasha Levin
2015-10-17 19:22 ` Sasha Levin
2015-10-18 4:17 ` Ross Zwisler
2015-10-19 23:34 ` Sasha Levin
2015-11-06 1:34 ` Al Viro
2015-11-06 2:19 ` Al Viro
2015-11-06 3:38 ` Linus Torvalds
2015-11-06 16:06 ` Jens Axboe
2015-11-11 2:21 ` Linus Torvalds
2015-11-11 2:25 ` Jens Axboe
2015-11-11 2:31 ` Linus Torvalds
2015-11-11 2:40 ` Jens Axboe
2015-11-11 2:41 ` Jens Axboe
2015-11-11 2:44 ` Jens Axboe
2015-11-11 3:06 ` Al Viro
2015-11-11 3:07 ` Jens Axboe
2015-11-11 3:20 ` Sasha Levin
2015-11-11 2:56 ` Al Viro
2015-11-11 3:30 ` Al Viro
2015-11-11 4:36 ` Linus Torvalds
2015-11-11 7:43 ` Al Viro
2015-11-11 8:16 ` Stephen Rothwell
2015-11-11 10:19 ` Al Viro
2015-11-11 10:28 ` Stephen Rothwell
2015-11-11 16:25 ` Mike Marshall
2015-11-11 16:36 ` Al Viro
2015-11-11 16:56 ` Mike Marshall
2015-11-11 16:33 ` Al Viro [this message]
2015-11-11 21:47 ` Stephen Rothwell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151111163339.GM22011@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=axboe@kernel.dk \
--cc=cebbert.lkml@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ryabinin.a.a@gmail.com \
--cc=sasha.levin@oracle.com \
--cc=sfr@canb.auug.org.au \
--cc=torvalds@linux-foundation.org \
--cc=willy@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.