All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: xfs@oss.sgi.com
Subject: Re: [PATCH] use proper mnt_want_write calls for handle ioctls
Date: Fri, 12 Sep 2008 10:44:31 +0200	[thread overview]
Message-ID: <20080912084431.GA22641@lst.de> (raw)
In-Reply-To: <20080814203952.GB18704@lst.de>

ping?  Without this patch the CVS tree won't properly work with
read-only bind mounts.

On Thu, Aug 14, 2008 at 10:39:52PM +0200, Christoph Hellwig wrote:
> Since 2.6.26 all writes to filesystems need to be enclosed by a
> mnt_want_write / mnt_drop_write pair instead of checking for IS_RDONLY.
> 
> XFs was updated for this in mainline but the changes to xfs_ioctl.c
> were never megred back into the CVS tree.
> 
> The original commit introducing this was:
> 
> commit 42a74f206b914db13ee1f5ae932dcd91a77c8579
> Author: Dave Hansen <haveblue@us.ibm.com>
> Date:   Fri Feb 15 14:37:46 2008 -0800
> 
>     [PATCH] r/o bind mounts: elevate write count for ioctls()
> 
> Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c	2008-08-14 14:54:53.000000000 -0300
> +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl.c	2008-08-14 15:15:49.000000000 -0300
> @@ -543,8 +543,6 @@ xfs_attrmulti_attr_set(
>  	char			*kbuf;
>  	int			error = EFAULT;
>  
> -	if (IS_RDONLY(inode))
> -		return -EROFS;
>  	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
>  		return EPERM;
>  	if (len > XATTR_SIZE_MAX)
> @@ -570,8 +568,6 @@ xfs_attrmulti_attr_remove(
>  	char			*name,
>  	__uint32_t		flags)
>  {
> -	if (IS_RDONLY(inode))
> -		return -EROFS;
>  	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
>  		return EPERM;
>  	return xfs_attr_remove(XFS_I(inode), name, flags);
> @@ -581,6 +577,7 @@ STATIC int
>  xfs_attrmulti_by_handle(
>  	xfs_mount_t		*mp,
>  	void			__user *arg,
> +	struct file		*parfilp,
>  	struct inode		*parinode)
>  {
>  	int			error;
> @@ -634,13 +631,21 @@ xfs_attrmulti_by_handle(
>  					&ops[i].am_length, ops[i].am_flags);
>  			break;
>  		case ATTR_OP_SET:
> +			ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
> +			if (ops[i].am_error)
> +				break;
>  			ops[i].am_error = xfs_attrmulti_attr_set(inode,
>  					attr_name, ops[i].am_attrvalue,
>  					ops[i].am_length, ops[i].am_flags);
> +			mnt_drop_write(parfilp->f_path.mnt);
>  			break;
>  		case ATTR_OP_REMOVE:
> +			ops[i].am_error = mnt_want_write(parfilp->f_path.mnt);
> +			if (ops[i].am_error)
> +				break;
>  			ops[i].am_error = xfs_attrmulti_attr_remove(inode,
>  					attr_name, ops[i].am_flags);
> +			mnt_drop_write(parfilp->f_path.mnt);
>  			break;
>  		default:
>  			ops[i].am_error = EINVAL;
> @@ -1431,7 +1436,7 @@ xfs_ioctl(
>  		return xfs_attrlist_by_handle(mp, arg, inode);
>  
>  	case XFS_IOC_ATTRMULTI_BY_HANDLE:
> -		return xfs_attrmulti_by_handle(mp, arg, inode);
> +		return xfs_attrmulti_by_handle(mp, arg, filp, inode);
>  
>  	case XFS_IOC_SWAPEXT: {
>  		error = xfs_swapext((struct xfs_swapext __user *)arg);
---end quoted text---

       reply	other threads:[~2008-09-12  8:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20080814203952.GB18704@lst.de>
2008-09-12  8:44 ` Christoph Hellwig [this message]
2008-09-29  7:42   ` [PATCH] use proper mnt_want_write calls for handle ioctls Christoph Hellwig
2008-10-18 12:37     ` Christoph Hellwig
2008-10-22  5:24       ` Donald Douwsma

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=20080912084431.GA22641@lst.de \
    --to=hch@lst.de \
    --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.