vfs: add file_path() helper
Turn d_path(&file->f_path, ...); into file_path(file, ...); Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
					parent
					
						
							
								4bacc9c923
							
						
					
				
			
			
				commit
				
					
						9bf39ab2ad
					
				
			
		
					 16 changed files with 25 additions and 21 deletions
				
			
		| 
						 | 
					@ -67,15 +67,12 @@ static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
 | 
				
			||||||
	mmput(mm);
 | 
						mmput(mm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (exe_file) {
 | 
						if (exe_file) {
 | 
				
			||||||
		path = exe_file->f_path;
 | 
							path_nm = file_path(exe_file, buf, 255);
 | 
				
			||||||
		path_get(&exe_file->f_path);
 | 
					 | 
				
			||||||
		fput(exe_file);
 | 
							fput(exe_file);
 | 
				
			||||||
		path_nm = d_path(&path, buf, 255);
 | 
					 | 
				
			||||||
		path_put(&path);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
done:
 | 
					done:
 | 
				
			||||||
	pr_info("Path: %s\n", path_nm);
 | 
						pr_info("Path: %s\n", !IS_ERR(path_nm) ? path_nm : "?");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void show_faulting_vma(unsigned long address, char *buf)
 | 
					static void show_faulting_vma(unsigned long address, char *buf)
 | 
				
			||||||
| 
						 | 
					@ -99,8 +96,7 @@ static void show_faulting_vma(unsigned long address, char *buf)
 | 
				
			||||||
	if (vma && (vma->vm_start <= address)) {
 | 
						if (vma && (vma->vm_start <= address)) {
 | 
				
			||||||
		struct file *file = vma->vm_file;
 | 
							struct file *file = vma->vm_file;
 | 
				
			||||||
		if (file) {
 | 
							if (file) {
 | 
				
			||||||
			struct path *path = &file->f_path;
 | 
								nm = file_path(file, buf, PAGE_SIZE - 1);
 | 
				
			||||||
			nm = d_path(path, buf, PAGE_SIZE - 1);
 | 
					 | 
				
			||||||
			inode = file_inode(vma->vm_file);
 | 
								inode = file_inode(vma->vm_file);
 | 
				
			||||||
			dev = inode->i_sb->s_dev;
 | 
								dev = inode->i_sb->s_dev;
 | 
				
			||||||
			ino = inode->i_ino;
 | 
								ino = inode->i_ino;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,7 @@ void decode_address(char *buf, unsigned long address)
 | 
				
			||||||
				struct file *file = vma->vm_file;
 | 
									struct file *file = vma->vm_file;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (file) {
 | 
									if (file) {
 | 
				
			||||||
					char *d_name = d_path(&file->f_path, _tmpbuf,
 | 
										char *d_name = file_path(file, _tmpbuf,
 | 
				
			||||||
						      sizeof(_tmpbuf));
 | 
											      sizeof(_tmpbuf));
 | 
				
			||||||
					if (!IS_ERR(d_name))
 | 
										if (!IS_ERR(d_name))
 | 
				
			||||||
						name = d_name;
 | 
											name = d_name;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -334,7 +334,7 @@ static void describe_addr(struct KBacktraceIterator *kbt,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (vma->vm_file) {
 | 
						if (vma->vm_file) {
 | 
				
			||||||
		p = d_path(&vma->vm_file->f_path, buf, bufsize);
 | 
							p = file_path(vma->vm_file, buf, bufsize);
 | 
				
			||||||
		if (IS_ERR(p))
 | 
							if (IS_ERR(p))
 | 
				
			||||||
			p = "?";
 | 
								p = "?";
 | 
				
			||||||
		name = kbasename(p);
 | 
							name = kbasename(p);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,7 +56,7 @@ static int notify_exec(struct mm_struct *mm)
 | 
				
			||||||
	if (exe_file == NULL)
 | 
						if (exe_file == NULL)
 | 
				
			||||||
		goto done_free;
 | 
							goto done_free;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	path = d_path(&exe_file->f_path, buf, PAGE_SIZE);
 | 
						path = file_path(exe_file, buf, PAGE_SIZE);
 | 
				
			||||||
	if (IS_ERR(path))
 | 
						if (IS_ERR(path))
 | 
				
			||||||
		goto done_put;
 | 
							goto done_put;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -568,7 +568,7 @@ static ssize_t loop_attr_backing_file_show(struct loop_device *lo, char *buf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	spin_lock_irq(&lo->lo_lock);
 | 
						spin_lock_irq(&lo->lo_lock);
 | 
				
			||||||
	if (lo->lo_backing_file)
 | 
						if (lo->lo_backing_file)
 | 
				
			||||||
		p = d_path(&lo->lo_backing_file->f_path, buf, PAGE_SIZE - 1);
 | 
							p = file_path(lo->lo_backing_file, buf, PAGE_SIZE - 1);
 | 
				
			||||||
	spin_unlock_irq(&lo->lo_lock);
 | 
						spin_unlock_irq(&lo->lo_lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (IS_ERR_OR_NULL(p))
 | 
						if (IS_ERR_OR_NULL(p))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -834,7 +834,7 @@ static void bitmap_file_kick(struct bitmap *bitmap)
 | 
				
			||||||
		if (bitmap->storage.file) {
 | 
							if (bitmap->storage.file) {
 | 
				
			||||||
			path = kmalloc(PAGE_SIZE, GFP_KERNEL);
 | 
								path = kmalloc(PAGE_SIZE, GFP_KERNEL);
 | 
				
			||||||
			if (path)
 | 
								if (path)
 | 
				
			||||||
				ptr = d_path(&bitmap->storage.file->f_path,
 | 
									ptr = file_path(bitmap->storage.file,
 | 
				
			||||||
					     path, PAGE_SIZE);
 | 
										     path, PAGE_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			printk(KERN_ALERT
 | 
								printk(KERN_ALERT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5741,7 +5741,7 @@ static int get_bitmap_file(struct mddev *mddev, void __user * arg)
 | 
				
			||||||
	/* bitmap disabled, zero the first byte and copy out */
 | 
						/* bitmap disabled, zero the first byte and copy out */
 | 
				
			||||||
	if (!mddev->bitmap_info.file)
 | 
						if (!mddev->bitmap_info.file)
 | 
				
			||||||
		file->pathname[0] = '\0';
 | 
							file->pathname[0] = '\0';
 | 
				
			||||||
	else if ((ptr = d_path(&mddev->bitmap_info.file->f_path,
 | 
						else if ((ptr = file_path(mddev->bitmap_info.file,
 | 
				
			||||||
			       file->pathname, sizeof(file->pathname))),
 | 
								       file->pathname, sizeof(file->pathname))),
 | 
				
			||||||
		 IS_ERR(ptr))
 | 
							 IS_ERR(ptr))
 | 
				
			||||||
		err = PTR_ERR(ptr);
 | 
							err = PTR_ERR(ptr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2936,7 +2936,7 @@ int fsg_common_create_lun(struct fsg_common *common, struct fsg_lun_config *cfg,
 | 
				
			||||||
	if (fsg_lun_is_open(lun)) {
 | 
						if (fsg_lun_is_open(lun)) {
 | 
				
			||||||
		p = "(error)";
 | 
							p = "(error)";
 | 
				
			||||||
		if (pathbuf) {
 | 
							if (pathbuf) {
 | 
				
			||||||
			p = d_path(&lun->filp->f_path, pathbuf, PATH_MAX);
 | 
								p = file_path(lun->filp, pathbuf, PATH_MAX);
 | 
				
			||||||
			if (IS_ERR(p))
 | 
								if (IS_ERR(p))
 | 
				
			||||||
				p = "(error)";
 | 
									p = "(error)";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -341,7 +341,7 @@ ssize_t fsg_show_file(struct fsg_lun *curlun, struct rw_semaphore *filesem,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	down_read(filesem);
 | 
						down_read(filesem);
 | 
				
			||||||
	if (fsg_lun_is_open(curlun)) {	/* Get the complete pathname */
 | 
						if (fsg_lun_is_open(curlun)) {	/* Get the complete pathname */
 | 
				
			||||||
		p = d_path(&curlun->filp->f_path, buf, PAGE_SIZE - 1);
 | 
							p = file_path(curlun->filp, buf, PAGE_SIZE - 1);
 | 
				
			||||||
		if (IS_ERR(p))
 | 
							if (IS_ERR(p))
 | 
				
			||||||
			rc = PTR_ERR(p);
 | 
								rc = PTR_ERR(p);
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1530,7 +1530,7 @@ static int fill_files_note(struct memelfnote *note)
 | 
				
			||||||
		file = vma->vm_file;
 | 
							file = vma->vm_file;
 | 
				
			||||||
		if (!file)
 | 
							if (!file)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		filename = d_path(&file->f_path, name_curpos, remaining);
 | 
							filename = file_path(file, name_curpos, remaining);
 | 
				
			||||||
		if (IS_ERR(filename)) {
 | 
							if (IS_ERR(filename)) {
 | 
				
			||||||
			if (PTR_ERR(filename) == -ENAMETOOLONG) {
 | 
								if (PTR_ERR(filename) == -ENAMETOOLONG) {
 | 
				
			||||||
				vfree(data);
 | 
									vfree(data);
 | 
				
			||||||
| 
						 | 
					@ -1540,7 +1540,7 @@ static int fill_files_note(struct memelfnote *note)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* d_path() fills at the end, move name down */
 | 
							/* file_path() fills at the end, move name down */
 | 
				
			||||||
		/* n = strlen(filename) + 1: */
 | 
							/* n = strlen(filename) + 1: */
 | 
				
			||||||
		n = (name_curpos + remaining) - filename;
 | 
							n = (name_curpos + remaining) - filename;
 | 
				
			||||||
		remaining = filename - name_curpos;
 | 
							remaining = filename - name_curpos;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,7 +138,7 @@ static int cn_print_exe_file(struct core_name *cn)
 | 
				
			||||||
		goto put_exe_file;
 | 
							goto put_exe_file;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	path = d_path(&exe_file->f_path, pathbuf, PATH_MAX);
 | 
						path = file_path(exe_file, pathbuf, PATH_MAX);
 | 
				
			||||||
	if (IS_ERR(path)) {
 | 
						if (IS_ERR(path)) {
 | 
				
			||||||
		ret = PTR_ERR(path);
 | 
							ret = PTR_ERR(path);
 | 
				
			||||||
		goto free_buf;
 | 
							goto free_buf;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -449,7 +449,7 @@ void __ext4_error_file(struct file *file, const char *function,
 | 
				
			||||||
	es = EXT4_SB(inode->i_sb)->s_es;
 | 
						es = EXT4_SB(inode->i_sb)->s_es;
 | 
				
			||||||
	es->s_last_error_ino = cpu_to_le32(inode->i_ino);
 | 
						es->s_last_error_ino = cpu_to_le32(inode->i_ino);
 | 
				
			||||||
	if (ext4_error_ratelimit(inode->i_sb)) {
 | 
						if (ext4_error_ratelimit(inode->i_sb)) {
 | 
				
			||||||
		path = d_path(&(file->f_path), pathname, sizeof(pathname));
 | 
							path = file_path(file, pathname, sizeof(pathname));
 | 
				
			||||||
		if (IS_ERR(path))
 | 
							if (IS_ERR(path))
 | 
				
			||||||
			path = "(unknown)";
 | 
								path = "(unknown)";
 | 
				
			||||||
		va_start(args, fmt);
 | 
							va_start(args, fmt);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -823,6 +823,12 @@ int finish_no_open(struct file *file, struct dentry *dentry)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(finish_no_open);
 | 
					EXPORT_SYMBOL(finish_no_open);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *file_path(struct file *filp, char *buf, int buflen)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return d_path(&filp->f_path, buf, buflen);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL(file_path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * vfs_open - open the file at the given path
 | 
					 * vfs_open - open the file at the given path
 | 
				
			||||||
 * @path: path to open
 | 
					 * @path: path to open
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2500,6 +2500,8 @@ extern struct file * open_exec(const char *);
 | 
				
			||||||
extern int is_subdir(struct dentry *, struct dentry *);
 | 
					extern int is_subdir(struct dentry *, struct dentry *);
 | 
				
			||||||
extern int path_is_under(struct path *, struct path *);
 | 
					extern int path_is_under(struct path *, struct path *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char *file_path(struct file *, char *, int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/err.h>
 | 
					#include <linux/err.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* needed for stackable file system support */
 | 
					/* needed for stackable file system support */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5791,7 +5791,7 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
 | 
				
			||||||
		 * need to add enough zero bytes after the string to handle
 | 
							 * need to add enough zero bytes after the string to handle
 | 
				
			||||||
		 * the 64bit alignment we do later.
 | 
							 * the 64bit alignment we do later.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		name = d_path(&file->f_path, buf, PATH_MAX - sizeof(u64));
 | 
							name = file_path(file, buf, PATH_MAX - sizeof(u64));
 | 
				
			||||||
		if (IS_ERR(name)) {
 | 
							if (IS_ERR(name)) {
 | 
				
			||||||
			name = "//toolong";
 | 
								name = "//toolong";
 | 
				
			||||||
			goto cpy_name;
 | 
								goto cpy_name;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3724,7 +3724,7 @@ void print_vma_addr(char *prefix, unsigned long ip)
 | 
				
			||||||
		if (buf) {
 | 
							if (buf) {
 | 
				
			||||||
			char *p;
 | 
								char *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			p = d_path(&f->f_path, buf, PAGE_SIZE);
 | 
								p = file_path(f, buf, PAGE_SIZE);
 | 
				
			||||||
			if (IS_ERR(p))
 | 
								if (IS_ERR(p))
 | 
				
			||||||
				p = "?";
 | 
									p = "?";
 | 
				
			||||||
			printk("%s%s[%lx+%lx]", prefix, kbasename(p),
 | 
								printk("%s%s[%lx+%lx]", prefix, kbasename(p),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue