All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: mfasheh@suse.com, joel.becker@oracle.com,
	linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
	Al Viro <viro@zeniv.linux.org.uk>, Ankit Jain <me@ankitjain.org>,
	linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com,
	ocfs2-devel@oss.oracle.com
Subject: Re: [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Sat, 20 Jun 2009 08:13:59 +0000	[thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>

On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:

> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> +	__s16		l_type;
> +	__s16		l_whence;
> +	__s64		l_start	__attribute__((packed));
> +			/* len == 0 means until end of file */
> +	__s64		l_len __attribute__((packed));
> +	__s32		l_sysid;
> +	__u32		l_pid;
> +	__s32		l_pad[4];	/* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32		_IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32	_IOW ('X', 42, struct space_resv_32)

I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.

> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> +	struct space_resv_32	__user *p32 = (void __user *)arg;
> +	struct space_resv	__user *p = compat_alloc_user_space(sizeof(*p));
> +
> +	if (copy_in_user(&p->l_type,	&p32->l_type,	sizeof(s16)) ||
> +	    copy_in_user(&p->l_whence,	&p32->l_whence, sizeof(s16)) ||
> +	    copy_in_user(&p->l_start,	&p32->l_start,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_len,	&p32->l_len,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_sysid,	&p32->l_sysid,	sizeof(s32)) ||
> +	    copy_in_user(&p->l_pid,	&p32->l_pid,	sizeof(u32)) ||
> +	    copy_in_user(&p->l_pad,	&p32->l_pad,	4*sizeof(u32)))
> +		return -EFAULT;
> +
> +	return ioctl_preallocate(file, p);
> +}
> +#endif
> +

Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().

	Arnd <><

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Ankit Jain <me@ankitjain.org>, Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, mfasheh@suse.com,
	joel.becker@oracle.com, ocfs2-devel@oss.oracle.com,
	linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
	xfs@oss.sgi.com
Subject: [Ocfs2-devel] [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Tue, 23 Jun 2009 22:05:37 -0000	[thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>

On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:

> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> +	__s16		l_type;
> +	__s16		l_whence;
> +	__s64		l_start	__attribute__((packed));
> +			/* len == 0 means until end of file */
> +	__s64		l_len __attribute__((packed));
> +	__s32		l_sysid;
> +	__u32		l_pid;
> +	__s32		l_pad[4];	/* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32		_IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32	_IOW ('X', 42, struct space_resv_32)

I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.

> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> +	struct space_resv_32	__user *p32 = (void __user *)arg;
> +	struct space_resv	__user *p = compat_alloc_user_space(sizeof(*p));
> +
> +	if (copy_in_user(&p->l_type,	&p32->l_type,	sizeof(s16)) ||
> +	    copy_in_user(&p->l_whence,	&p32->l_whence, sizeof(s16)) ||
> +	    copy_in_user(&p->l_start,	&p32->l_start,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_len,	&p32->l_len,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_sysid,	&p32->l_sysid,	sizeof(s32)) ||
> +	    copy_in_user(&p->l_pid,	&p32->l_pid,	sizeof(u32)) ||
> +	    copy_in_user(&p->l_pad,	&p32->l_pad,	4*sizeof(u32)))
> +		return -EFAULT;
> +
> +	return ioctl_preallocate(file, p);
> +}
> +#endif
> +

Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().

	Arnd <><

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Ankit Jain <me@ankitjain.org>, Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, mfasheh@suse.com,
	joel.becker@oracle.com, ocfs2-devel@oss.oracle.com,
	linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
	xfs@oss.sgi.com
Subject: Re: [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Sat, 20 Jun 2009 08:13:59 +0000	[thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>

On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:

> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> +	__s16		l_type;
> +	__s16		l_whence;
> +	__s64		l_start	__attribute__((packed));
> +			/* len == 0 means until end of file */
> +	__s64		l_len __attribute__((packed));
> +	__s32		l_sysid;
> +	__u32		l_pid;
> +	__s32		l_pad[4];	/* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32		_IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32	_IOW ('X', 42, struct space_resv_32)

I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.

> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> +	struct space_resv_32	__user *p32 = (void __user *)arg;
> +	struct space_resv	__user *p = compat_alloc_user_space(sizeof(*p));
> +
> +	if (copy_in_user(&p->l_type,	&p32->l_type,	sizeof(s16)) ||
> +	    copy_in_user(&p->l_whence,	&p32->l_whence, sizeof(s16)) ||
> +	    copy_in_user(&p->l_start,	&p32->l_start,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_len,	&p32->l_len,	sizeof(s64)) ||
> +	    copy_in_user(&p->l_sysid,	&p32->l_sysid,	sizeof(s32)) ||
> +	    copy_in_user(&p->l_pid,	&p32->l_pid,	sizeof(u32)) ||
> +	    copy_in_user(&p->l_pad,	&p32->l_pad,	4*sizeof(u32)))
> +		return -EFAULT;
> +
> +	return ioctl_preallocate(file, p);
> +}
> +#endif
> +

Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().

	Arnd <><

  reply	other threads:[~2009-06-20  8:13 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-28 20:59 [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Ankit Jain
2009-01-28 20:59 ` Ankit Jain
2009-01-28 20:59 ` [Ocfs2-devel] " Ankit Jain
2009-01-31  0:22 ` Andrew Morton
2009-01-31  0:23   ` [Ocfs2-devel] " Andrew Morton
2009-01-31  0:22   ` Andrew Morton
2009-01-31  0:38   ` Arnd Bergmann
2009-01-31  0:39     ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31  0:38     ` Arnd Bergmann
2009-01-31  1:14     ` Andrew Morton
2009-01-31  1:14       ` [Ocfs2-devel] " Andrew Morton
2009-01-31  1:14       ` Andrew Morton
2009-01-31  1:48       ` Arnd Bergmann
2009-01-31  1:49         ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31  1:48         ` Arnd Bergmann
2009-01-31  1:48         ` Arnd Bergmann
2009-02-01  9:48         ` Boaz Harrosh
2009-02-01  9:48           ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01  9:48           ` Boaz Harrosh
2009-02-01 10:05           ` Geert Uytterhoeven
2009-02-01 10:05             ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:05             ` Geert Uytterhoeven
2009-02-01 10:39             ` Boaz Harrosh
2009-02-01 10:39               ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 10:39               ` Boaz Harrosh
2009-02-01 10:59               ` Geert Uytterhoeven
2009-02-01 11:00                 ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:59                 ` Geert Uytterhoeven
2009-02-01 12:32                 ` Boaz Harrosh
2009-02-01 12:33                   ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 12:32                   ` Boaz Harrosh
2009-02-01 15:37                   ` [xfs-masters] " Eric Sandeen
2009-02-01 15:41                     ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 15:37                     ` Eric Sandeen
2009-02-01 16:25                     ` Boaz Harrosh
2009-02-01 16:26                       ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:25                       ` Boaz Harrosh
2009-02-01 16:35                       ` Eric Sandeen
2009-02-01 16:36                         ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 16:35                         ` Eric Sandeen
2009-02-01 16:41                         ` Christoph Hellwig
2009-02-01 16:45                           ` [Ocfs2-devel] " Christoph Hellwig
2009-02-01 16:41                           ` Christoph Hellwig
2009-02-01 16:57                           ` Boaz Harrosh
2009-02-01 16:58                             ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:57                             ` Boaz Harrosh
2009-02-02  0:31                             ` Arnd Bergmann
2009-02-02  0:32                               ` [Ocfs2-devel] " Arnd Bergmann
2009-02-02  0:31                               ` Arnd Bergmann
2009-02-02  8:29                               ` Boaz Harrosh
2009-02-02  8:30                                 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02  8:29                                 ` Boaz Harrosh
2009-02-02  8:45                                 ` Geert Uytterhoeven
2009-02-02  8:45                                   ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-02  8:45                                   ` Geert Uytterhoeven
2009-02-02  9:33                                   ` Boaz Harrosh
2009-02-02  9:34                                     ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02  9:33                                     ` Boaz Harrosh
2009-02-02 20:51                                     ` Jamie Lokier
2009-02-02 20:53                                       ` [Ocfs2-devel] " Jamie Lokier
2009-02-02 20:51                                       ` Jamie Lokier
2009-02-03  7:31                                       ` Boaz Harrosh
2009-02-03  7:32                                         ` [Ocfs2-devel] " Boaz Harrosh
2009-02-03  7:31                                         ` Boaz Harrosh
2009-02-03 11:21                                         ` Jamie Lokier
2009-02-03 11:21                                           ` [Ocfs2-devel] " Jamie Lokier
2009-02-03 11:21                                           ` Jamie Lokier
2009-06-19 18:28 ` Christoph Hellwig
2009-06-19 18:28   ` [Ocfs2-devel] " Christoph Hellwig
2009-06-19 18:28   ` Christoph Hellwig
2009-06-20  8:13   ` Arnd Bergmann [this message]
2009-06-23 22:05     ` [Ocfs2-devel] " Arnd Bergmann
2009-06-20  8:13     ` Arnd Bergmann
2009-06-21 18:41     ` [xfs-masters] " Christoph Hellwig
2009-06-21 18:46       ` [Ocfs2-devel] " Christoph Hellwig
2009-06-21 18:41       ` Christoph Hellwig

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=200906200813.59793.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=hch@infradead.org \
    --cc=joel.becker@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=me@ankitjain.org \
    --cc=mfasheh@suse.com \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xfs-masters@oss.sgi.com \
    --cc=xfs@oss.sgi.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.