mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	VFS: swap do_ioctl and vfs_ioctl names
Rename old vfs_ioctl to do_ioctl, because the comment above it clearly indicates that it is an internal function not to be exported to modules; therefore it should have a more traditional do_XXX name. The new do_ioctl is exported in fs.h but not to modules. Rename the old do_ioctl to vfs_ioctl because the names vfs_XXX should preferably be reserved to callable VFS functions which modules may call, as many other vfs_XXX functions already do. Export the new vfs_ioctl to GPL modules so others can use it (including Unionfs and eCryptfs). Add DocBook for new vfs_ioctl. [akpm@linux-foundation.org: fix build] Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									c9845ff1df
								
							
						
					
					
						commit
						deb21db778
					
				
					 3 changed files with 24 additions and 10 deletions
				
			
		| 
						 | 
					@ -2986,7 +2986,7 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 do_ioctl:
 | 
					 do_ioctl:
 | 
				
			||||||
	error = vfs_ioctl(filp, fd, cmd, arg);
 | 
						error = do_vfs_ioctl(filp, fd, cmd, arg);
 | 
				
			||||||
 out_fput:
 | 
					 out_fput:
 | 
				
			||||||
	fput_light(filp, fput_needed);
 | 
						fput_light(filp, fput_needed);
 | 
				
			||||||
 out:
 | 
					 out:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								fs/ioctl.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								fs/ioctl.c
									
									
									
									
									
								
							| 
						 | 
					@ -16,7 +16,19 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <asm/ioctls.h>
 | 
					#include <asm/ioctls.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static long do_ioctl(struct file *filp, unsigned int cmd,
 | 
					/**
 | 
				
			||||||
 | 
					 * vfs_ioctl - call filesystem specific ioctl methods
 | 
				
			||||||
 | 
					 * @filp: [in]     open file to invoke ioctl method on
 | 
				
			||||||
 | 
					 * @cmd:  [in]     ioctl command to execute
 | 
				
			||||||
 | 
					 * @arg:  [in/out] command-specific argument for ioctl
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Invokes filesystem specific ->unlocked_ioctl, if one exists; otherwise
 | 
				
			||||||
 | 
					 * invokes * filesystem specific ->ioctl method.  If neither method exists,
 | 
				
			||||||
 | 
					 * returns -ENOTTY.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Returns 0 on success, -errno on error.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					long vfs_ioctl(struct file *filp, unsigned int cmd,
 | 
				
			||||||
	       unsigned long arg)
 | 
						       unsigned long arg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int error = -ENOTTY;
 | 
						int error = -ENOTTY;
 | 
				
			||||||
| 
						 | 
					@ -72,17 +84,17 @@ static int file_ioctl(struct file *filp, unsigned int cmd,
 | 
				
			||||||
		return put_user(i_size_read(inode) - filp->f_pos, p);
 | 
							return put_user(i_size_read(inode) - filp->f_pos, p);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return do_ioctl(filp, cmd, arg);
 | 
						return vfs_ioctl(filp, cmd, arg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * When you add any new common ioctls to the switches above and below
 | 
					 * When you add any new common ioctls to the switches above and below
 | 
				
			||||||
 * please update compat_sys_ioctl() too.
 | 
					 * please update compat_sys_ioctl() too.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * vfs_ioctl() is not for drivers and not intended to be EXPORT_SYMBOL()'d.
 | 
					 * do_vfs_ioctl() is not for drivers and not intended to be EXPORT_SYMBOL()'d.
 | 
				
			||||||
 * It's just a simple helper for sys_ioctl and compat_sys_ioctl.
 | 
					 * It's just a simple helper for sys_ioctl and compat_sys_ioctl.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
 | 
					int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
 | 
				
			||||||
	     unsigned long arg)
 | 
						     unsigned long arg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned int flag;
 | 
						unsigned int flag;
 | 
				
			||||||
| 
						 | 
					@ -152,7 +164,7 @@ int vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
 | 
				
			||||||
		if (S_ISREG(filp->f_path.dentry->d_inode->i_mode))
 | 
							if (S_ISREG(filp->f_path.dentry->d_inode->i_mode))
 | 
				
			||||||
			error = file_ioctl(filp, cmd, arg);
 | 
								error = file_ioctl(filp, cmd, arg);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			error = do_ioctl(filp, cmd, arg);
 | 
								error = vfs_ioctl(filp, cmd, arg);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return error;
 | 
						return error;
 | 
				
			||||||
| 
						 | 
					@ -172,7 +184,7 @@ asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
 | 
				
			||||||
	if (error)
 | 
						if (error)
 | 
				
			||||||
		goto out_fput;
 | 
							goto out_fput;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	error = vfs_ioctl(filp, fd, cmd, arg);
 | 
						error = do_vfs_ioctl(filp, fd, cmd, arg);
 | 
				
			||||||
 out_fput:
 | 
					 out_fput:
 | 
				
			||||||
	fput_light(filp, fput_needed);
 | 
						fput_light(filp, fput_needed);
 | 
				
			||||||
 out:
 | 
					 out:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1941,7 +1941,9 @@ extern int vfs_stat_fd(int dfd, char __user *, struct kstat *);
 | 
				
			||||||
extern int vfs_lstat_fd(int dfd, char __user *, struct kstat *);
 | 
					extern int vfs_lstat_fd(int dfd, char __user *, struct kstat *);
 | 
				
			||||||
extern int vfs_fstat(unsigned int, struct kstat *);
 | 
					extern int vfs_fstat(unsigned int, struct kstat *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern int vfs_ioctl(struct file *, unsigned int, unsigned int, unsigned long);
 | 
					extern long vfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
 | 
				
			||||||
 | 
					extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
 | 
				
			||||||
 | 
							    unsigned long arg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void get_filesystem(struct file_system_type *fs);
 | 
					extern void get_filesystem(struct file_system_type *fs);
 | 
				
			||||||
extern void put_filesystem(struct file_system_type *fs);
 | 
					extern void put_filesystem(struct file_system_type *fs);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue