diff options
| -rw-r--r-- | fs/btrfs/ioctl.c | 12 | ||||
| -rw-r--r-- | fs/ext2/ioctl.c | 6 | ||||
| -rw-r--r-- | fs/ext3/ioctl.c | 10 | ||||
| -rw-r--r-- | fs/ext4/ioctl.c | 14 | ||||
| -rw-r--r-- | fs/fat/file.c | 2 | ||||
| -rw-r--r-- | fs/gfs2/file.c | 2 | ||||
| -rw-r--r-- | fs/hfsplus/ioctl.c | 2 | ||||
| -rw-r--r-- | fs/inode.c | 2 | ||||
| -rw-r--r-- | fs/jfs/ioctl.c | 2 | ||||
| -rw-r--r-- | fs/namespace.c | 6 | ||||
| -rw-r--r-- | fs/ncpfs/ioctl.c | 2 | ||||
| -rw-r--r-- | fs/nfsd/nfs4recover.c | 6 | ||||
| -rw-r--r-- | fs/nilfs2/ioctl.c | 12 | ||||
| -rw-r--r-- | fs/ocfs2/ioctl.c | 2 | ||||
| -rw-r--r-- | fs/ocfs2/move_extents.c | 2 | ||||
| -rw-r--r-- | fs/open.c | 2 | ||||
| -rw-r--r-- | fs/reiserfs/ioctl.c | 4 | ||||
| -rw-r--r-- | fs/ubifs/ioctl.c | 2 | ||||
| -rw-r--r-- | fs/xattr.c | 4 | ||||
| -rw-r--r-- | fs/xfs/xfs_ioctl.c | 4 | ||||
| -rw-r--r-- | fs/xfs/xfs_ioctl32.c | 4 | ||||
| -rw-r--r-- | include/linux/mount.h | 1 | 
22 files changed, 55 insertions, 48 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 20dd8f3b6c7..5441ff1480f 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -259,7 +259,7 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)  	btrfs_end_transaction(trans, root); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  	ret = 0;   out_unlock: @@ -1971,7 +1971,7 @@ out_dput:  	dput(dentry);  out_unlock_dir:  	mutex_unlock(&dir->i_mutex); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  out:  	kfree(vol_args);  	return err; @@ -2040,7 +2040,7 @@ static int btrfs_ioctl_defrag(struct file *file, void __user *argp)  		ret = -EINVAL;  	}  out: -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  	return ret;  } @@ -2510,7 +2510,7 @@ out_unlock:  out_fput:  	fput(src_file);  out_drop_write: -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  	return ret;  } @@ -2565,7 +2565,7 @@ static long btrfs_ioctl_trans_start(struct file *file)  out_drop:  	atomic_dec(&root->fs_info->open_ioctl_trans); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  out:  	return ret;  } @@ -2800,7 +2800,7 @@ long btrfs_ioctl_trans_end(struct file *file)  	atomic_dec(&root->fs_info->open_ioctl_trans); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  	return 0;  } diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c index 61a3f966172..1089f760c84 100644 --- a/fs/ext2/ioctl.c +++ b/fs/ext2/ioctl.c @@ -83,7 +83,7 @@ long ext2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  		inode->i_ctime = CURRENT_TIME_SEC;  		mark_inode_dirty(inode);  setflags_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return ret;  	}  	case EXT2_IOC_GETVERSION: @@ -100,7 +100,7 @@ setflags_out:  			inode->i_ctime = CURRENT_TIME_SEC;  			mark_inode_dirty(inode);  		} -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return ret;  	case EXT2_IOC_GETRSVSZ:  		if (test_opt(inode->i_sb, RESERVATION) @@ -145,7 +145,7 @@ setflags_out:  			rsv->rsv_goal_size = rsv_window_size;  		}  		mutex_unlock(&ei->truncate_mutex); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return 0;  	}  	default: diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c index a02863a080d..8e37c41a071 100644 --- a/fs/ext3/ioctl.c +++ b/fs/ext3/ioctl.c @@ -110,7 +110,7 @@ flags_err:  			err = ext3_change_inode_journal_flag(inode, jflag);  flags_out:  		mutex_unlock(&inode->i_mutex); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT3_IOC_GETVERSION: @@ -147,7 +147,7 @@ flags_out:  		}  		ext3_journal_stop(handle);  setversion_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT3_IOC_GETRSVSZ: @@ -195,7 +195,7 @@ setversion_out:  		}  		mutex_unlock(&ei->truncate_mutex);  setrsvsz_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT3_IOC_GROUP_EXTEND: { @@ -221,7 +221,7 @@ setrsvsz_out:  		if (err == 0)  			err = err2;  group_extend_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT3_IOC_GROUP_ADD: { @@ -249,7 +249,7 @@ group_extend_out:  		if (err == 0)  			err = err2;  group_add_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case FITRIM: { diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 9a49760b554..d37b3bb2a3b 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -134,7 +134,7 @@ flags_err:  			err = ext4_ext_migrate(inode);  flags_out:  		mutex_unlock(&inode->i_mutex); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT4_IOC_GETVERSION: @@ -171,7 +171,7 @@ flags_out:  		}  		ext4_journal_stop(handle);  setversion_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	case EXT4_IOC_GROUP_EXTEND: { @@ -204,7 +204,7 @@ setversion_out:  		}  		if (err == 0)  			err = err2; -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		ext4_resize_end(sb);  		return err; @@ -246,7 +246,7 @@ setversion_out:  		err = ext4_move_extents(filp, donor_filp, me.orig_start,  					me.donor_start, me.len, &me.moved_len); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		if (me.moved_len > 0)  			file_remove_suid(donor_filp); @@ -289,7 +289,7 @@ mext_out:  		}  		if (err == 0)  			err = err2; -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		ext4_resize_end(sb);  		return err; @@ -313,7 +313,7 @@ mext_out:  		mutex_lock(&(inode->i_mutex));  		err = ext4_ext_migrate(inode);  		mutex_unlock(&(inode->i_mutex)); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	} @@ -327,7 +327,7 @@ mext_out:  		if (err)  			return err;  		err = ext4_alloc_da_blocks(inode); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	} diff --git a/fs/fat/file.c b/fs/fat/file.c index 50746a1a078..d81d01a99b2 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -108,7 +108,7 @@ static int fat_ioctl_set_attributes(struct file *file, u32 __user *user_attr)  	fat_save_attrs(inode, attr);  	mark_inode_dirty(inode);  out_drop_write: -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  out_unlock_inode:  	mutex_unlock(&inode->i_mutex);  out: diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index 28fc6e3855f..b8927d4f3bf 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c @@ -285,7 +285,7 @@ out_trans_end:  out:  	gfs2_glock_dq_uninit(&gh);  out_drop_write: -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return error;  } diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c index 31d3fe57642..f66c7655b3f 100644 --- a/fs/hfsplus/ioctl.c +++ b/fs/hfsplus/ioctl.c @@ -94,7 +94,7 @@ static int hfsplus_ioctl_setflags(struct file *file, int __user *user_flags)  out_unlock_inode:  	mutex_unlock(&inode->i_mutex);  out_drop_write: -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  out:  	return err;  } diff --git a/fs/inode.c b/fs/inode.c index ee4e66b998f..4fda5ee8551 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1508,7 +1508,7 @@ void file_update_time(struct file *file)  	if (sync_it & S_MTIME)  		inode->i_mtime = now;  	mark_inode_dirty_sync(inode); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  }  EXPORT_SYMBOL(file_update_time); diff --git a/fs/jfs/ioctl.c b/fs/jfs/ioctl.c index 73d9eaa91c0..f19d1e04a37 100644 --- a/fs/jfs/ioctl.c +++ b/fs/jfs/ioctl.c @@ -120,7 +120,7 @@ long jfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  		inode->i_ctime = CURRENT_TIME_SEC;  		mark_inode_dirty(inode);  setflags_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return err;  	}  	default: diff --git a/fs/namespace.c b/fs/namespace.c index 7a8f949cec1..86b4f640647 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -392,6 +392,12 @@ void mnt_drop_write(struct vfsmount *mnt)  }  EXPORT_SYMBOL_GPL(mnt_drop_write); +void mnt_drop_write_file(struct file *file) +{ +	mnt_drop_write(file->f_path.mnt); +} +EXPORT_SYMBOL(mnt_drop_write_file); +  static int mnt_make_readonly(struct vfsmount *mnt)  {  	int ret = 0; diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c index 790e92a9ec6..6958adfaff0 100644 --- a/fs/ncpfs/ioctl.c +++ b/fs/ncpfs/ioctl.c @@ -901,7 +901,7 @@ long ncp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  	ret = __ncp_ioctl(inode, cmd, arg);  outDropWrite:  	if (need_drop_write) -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  out:  	return ret;  } diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c index a9aa2f16126..80a0be9ed00 100644 --- a/fs/nfsd/nfs4recover.c +++ b/fs/nfsd/nfs4recover.c @@ -151,7 +151,7 @@ nfsd4_create_clid_dir(struct nfs4_client *clp)  	if (status)  		goto out_put;  	status = vfs_mkdir(dir->d_inode, dentry, S_IRWXU); -	mnt_drop_write(rec_file->f_path.mnt); +	mnt_drop_write_file(rec_file);  out_put:  	dput(dentry);  out_unlock: @@ -281,7 +281,7 @@ nfsd4_remove_clid_dir(struct nfs4_client *clp)  	nfs4_reset_creds(original_cred);  	if (status == 0)  		vfs_fsync(rec_file, 0); -	mnt_drop_write(rec_file->f_path.mnt); +	mnt_drop_write_file(rec_file);  out:  	if (status)  		printk("NFSD: Failed to remove expired client state directory" @@ -317,7 +317,7 @@ nfsd4_recdir_purge_old(void) {  	status = nfsd4_list_rec_dir(purge_old);  	if (status == 0)  		vfs_fsync(rec_file, 0); -	mnt_drop_write(rec_file->f_path.mnt); +	mnt_drop_write_file(rec_file);  out:  	if (status)  		printk("nfsd4: failed to purge old clients from recovery" diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index b7697d1ccd6..886649627c3 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c @@ -27,7 +27,7 @@  #include <linux/uaccess.h>	/* copy_from_user(), copy_to_user() */  #include <linux/vmalloc.h>  #include <linux/compat.h>	/* compat_ptr() */ -#include <linux/mount.h>	/* mnt_want_write_file(), mnt_drop_write() */ +#include <linux/mount.h>	/* mnt_want_write_file(), mnt_drop_write_file() */  #include <linux/buffer_head.h>  #include <linux/nilfs2_fs.h>  #include "nilfs.h" @@ -154,7 +154,7 @@ static int nilfs_ioctl_setflags(struct inode *inode, struct file *filp,  	ret = nilfs_transaction_commit(inode->i_sb);  out:  	mutex_unlock(&inode->i_mutex); -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return ret;  } @@ -194,7 +194,7 @@ static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,  	up_read(&inode->i_sb->s_umount);  out: -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return ret;  } @@ -225,7 +225,7 @@ nilfs_ioctl_delete_checkpoint(struct inode *inode, struct file *filp,  	else  		nilfs_transaction_commit(inode->i_sb); /* never fails */  out: -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return ret;  } @@ -675,7 +675,7 @@ out_free:  		vfree(kbufs[n]);  	kfree(kbufs[4]);  out: -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return ret;  } @@ -721,7 +721,7 @@ static int nilfs_ioctl_resize(struct inode *inode, struct file *filp,  	ret = nilfs_resize_fs(inode->i_sb, newsize);  out_drop_write: -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  out:  	return ret;  } diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index 892ace253f9..a6fda3c188a 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c @@ -911,7 +911,7 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  			return status;  		status = ocfs2_set_inode_attr(inode, flags,  			OCFS2_FL_MODIFIABLE); -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		return status;  	case OCFS2_IOC_RESVSP:  	case OCFS2_IOC_RESVSP64: diff --git a/fs/ocfs2/move_extents.c b/fs/ocfs2/move_extents.c index 1d3bf83f8b8..b1e3fce72ea 100644 --- a/fs/ocfs2/move_extents.c +++ b/fs/ocfs2/move_extents.c @@ -1145,7 +1145,7 @@ out:  	kfree(context); -	mnt_drop_write(filp->f_path.mnt); +	mnt_drop_write_file(filp);  	return status;  } diff --git a/fs/open.c b/fs/open.c index 22c41b543f2..4ef8d868a44 100644 --- a/fs/open.c +++ b/fs/open.c @@ -608,7 +608,7 @@ SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)  	dentry = file->f_path.dentry;  	audit_inode(NULL, dentry);  	error = chown_common(&file->f_path, user, group); -	mnt_drop_write(file->f_path.mnt); +	mnt_drop_write_file(file);  out_fput:  	fput(file);  out: diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c index 0b94d7b2b11..950e3d1b5c9 100644 --- a/fs/reiserfs/ioctl.c +++ b/fs/reiserfs/ioctl.c @@ -96,7 +96,7 @@ long reiserfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  			inode->i_ctime = CURRENT_TIME_SEC;  			mark_inode_dirty(inode);  setflags_out: -			mnt_drop_write(filp->f_path.mnt); +			mnt_drop_write_file(filp);  			break;  		}  	case REISERFS_IOC_GETVERSION: @@ -117,7 +117,7 @@ setflags_out:  		inode->i_ctime = CURRENT_TIME_SEC;  		mark_inode_dirty(inode);  setversion_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		break;  	default:  		err = -ENOTTY; diff --git a/fs/ubifs/ioctl.c b/fs/ubifs/ioctl.c index e52c84598fe..1a7e2d8bdbe 100644 --- a/fs/ubifs/ioctl.c +++ b/fs/ubifs/ioctl.c @@ -178,7 +178,7 @@ long ubifs_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  			return err;  		dbg_gen("set flags: %#x, i_flags %#x", flags, inode->i_flags);  		err = setflags(inode, flags); -		mnt_drop_write(file->f_path.mnt); +		mnt_drop_write_file(file);  		return err;  	} diff --git a/fs/xattr.c b/fs/xattr.c index 67583de8218..82f43376c7c 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -397,7 +397,7 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,  	error = mnt_want_write_file(f);  	if (!error) {  		error = setxattr(dentry, name, value, size, flags); -		mnt_drop_write(f->f_path.mnt); +		mnt_drop_write_file(f);  	}  	fput(f);  	return error; @@ -624,7 +624,7 @@ SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)  	error = mnt_want_write_file(f);  	if (!error) {  		error = removexattr(dentry, name); -		mnt_drop_write(f->f_path.mnt); +		mnt_drop_write_file(f);  	}  	fput(f);  	return error; diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index b436e17c753..76f3ca5cfc3 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -566,7 +566,7 @@ xfs_attrmulti_by_handle(  					dentry->d_inode, attr_name,  					ops[i].am_attrvalue, ops[i].am_length,  					ops[i].am_flags); -			mnt_drop_write(parfilp->f_path.mnt); +			mnt_drop_write_file(parfilp);  			break;  		case ATTR_OP_REMOVE:  			ops[i].am_error = mnt_want_write_file(parfilp); @@ -575,7 +575,7 @@ xfs_attrmulti_by_handle(  			ops[i].am_error = xfs_attrmulti_attr_remove(  					dentry->d_inode, attr_name,  					ops[i].am_flags); -			mnt_drop_write(parfilp->f_path.mnt); +			mnt_drop_write_file(parfilp);  			break;  		default:  			ops[i].am_error = EINVAL; diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c index dd4ba1d4c58..f9ccb7b7c04 100644 --- a/fs/xfs/xfs_ioctl32.c +++ b/fs/xfs/xfs_ioctl32.c @@ -461,7 +461,7 @@ xfs_compat_attrmulti_by_handle(  					dentry->d_inode, attr_name,  					compat_ptr(ops[i].am_attrvalue),  					ops[i].am_length, ops[i].am_flags); -			mnt_drop_write(parfilp->f_path.mnt); +			mnt_drop_write_file(parfilp);  			break;  		case ATTR_OP_REMOVE:  			ops[i].am_error = mnt_want_write_file(parfilp); @@ -470,7 +470,7 @@ xfs_compat_attrmulti_by_handle(  			ops[i].am_error = xfs_attrmulti_attr_remove(  					dentry->d_inode, attr_name,  					ops[i].am_flags); -			mnt_drop_write(parfilp->f_path.mnt); +			mnt_drop_write_file(parfilp);  			break;  		default:  			ops[i].am_error = EINVAL; diff --git a/include/linux/mount.h b/include/linux/mount.h index 65c1bb01383..00f5c4f2160 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -94,6 +94,7 @@ extern int mnt_want_write(struct vfsmount *mnt);  extern int mnt_want_write_file(struct file *file);  extern int mnt_clone_write(struct vfsmount *mnt);  extern void mnt_drop_write(struct vfsmount *mnt); +extern void mnt_drop_write_file(struct file *file);  extern void mntput(struct vfsmount *mnt);  extern struct vfsmount *mntget(struct vfsmount *mnt);  extern void mnt_pin(struct vfsmount *mnt);  |