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
|
@ -67,15 +67,12 @@ static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
|
|||
mmput(mm);
|
||||
|
||||
if (exe_file) {
|
||||
path = exe_file->f_path;
|
||||
path_get(&exe_file->f_path);
|
||||
path_nm = file_path(exe_file, buf, 255);
|
||||
fput(exe_file);
|
||||
path_nm = d_path(&path, buf, 255);
|
||||
path_put(&path);
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -99,8 +96,7 @@ static void show_faulting_vma(unsigned long address, char *buf)
|
|||
if (vma && (vma->vm_start <= address)) {
|
||||
struct file *file = vma->vm_file;
|
||||
if (file) {
|
||||
struct path *path = &file->f_path;
|
||||
nm = d_path(path, buf, PAGE_SIZE - 1);
|
||||
nm = file_path(file, buf, PAGE_SIZE - 1);
|
||||
inode = file_inode(vma->vm_file);
|
||||
dev = inode->i_sb->s_dev;
|
||||
ino = inode->i_ino;
|
||||
|
|
|
@ -136,7 +136,7 @@ void decode_address(char *buf, unsigned long address)
|
|||
struct file *file = vma->vm_file;
|
||||
|
||||
if (file) {
|
||||
char *d_name = d_path(&file->f_path, _tmpbuf,
|
||||
char *d_name = file_path(file, _tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
if (!IS_ERR(d_name))
|
||||
name = d_name;
|
||||
|
|
|
@ -334,7 +334,7 @@ static void describe_addr(struct KBacktraceIterator *kbt,
|
|||
}
|
||||
|
||||
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))
|
||||
p = "?";
|
||||
name = kbasename(p);
|
||||
|
|
|
@ -56,7 +56,7 @@ static int notify_exec(struct mm_struct *mm)
|
|||
if (exe_file == NULL)
|
||||
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))
|
||||
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);
|
||||
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);
|
||||
|
||||
if (IS_ERR_OR_NULL(p))
|
||||
|
|
|
@ -834,7 +834,7 @@ static void bitmap_file_kick(struct bitmap *bitmap)
|
|||
if (bitmap->storage.file) {
|
||||
path = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||
if (path)
|
||||
ptr = d_path(&bitmap->storage.file->f_path,
|
||||
ptr = file_path(bitmap->storage.file,
|
||||
path, PAGE_SIZE);
|
||||
|
||||
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 */
|
||||
if (!mddev->bitmap_info.file)
|
||||
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))),
|
||||
IS_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)) {
|
||||
p = "(error)";
|
||||
if (pathbuf) {
|
||||
p = d_path(&lun->filp->f_path, pathbuf, PATH_MAX);
|
||||
p = file_path(lun->filp, pathbuf, PATH_MAX);
|
||||
if (IS_ERR(p))
|
||||
p = "(error)";
|
||||
}
|
||||
|
|
|
@ -341,7 +341,7 @@ ssize_t fsg_show_file(struct fsg_lun *curlun, struct rw_semaphore *filesem,
|
|||
|
||||
down_read(filesem);
|
||||
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))
|
||||
rc = PTR_ERR(p);
|
||||
else {
|
||||
|
|
|
@ -1530,7 +1530,7 @@ static int fill_files_note(struct memelfnote *note)
|
|||
file = vma->vm_file;
|
||||
if (!file)
|
||||
continue;
|
||||
filename = d_path(&file->f_path, name_curpos, remaining);
|
||||
filename = file_path(file, name_curpos, remaining);
|
||||
if (IS_ERR(filename)) {
|
||||
if (PTR_ERR(filename) == -ENAMETOOLONG) {
|
||||
vfree(data);
|
||||
|
@ -1540,7 +1540,7 @@ static int fill_files_note(struct memelfnote *note)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* d_path() fills at the end, move name down */
|
||||
/* file_path() fills at the end, move name down */
|
||||
/* n = strlen(filename) + 1: */
|
||||
n = (name_curpos + remaining) - filename;
|
||||
remaining = filename - name_curpos;
|
||||
|
|
|
@ -138,7 +138,7 @@ static int cn_print_exe_file(struct core_name *cn)
|
|||
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)) {
|
||||
ret = PTR_ERR(path);
|
||||
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->s_last_error_ino = cpu_to_le32(inode->i_ino);
|
||||
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))
|
||||
path = "(unknown)";
|
||||
va_start(args, fmt);
|
||||
|
|
|
@ -823,6 +823,12 @@ int finish_no_open(struct file *file, struct dentry *dentry)
|
|||
}
|
||||
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
|
||||
* @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 path_is_under(struct path *, struct path *);
|
||||
|
||||
extern char *file_path(struct file *, char *, int);
|
||||
|
||||
#include <linux/err.h>
|
||||
|
||||
/* 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
|
||||
* 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)) {
|
||||
name = "//toolong";
|
||||
goto cpy_name;
|
||||
|
|
|
@ -3724,7 +3724,7 @@ void print_vma_addr(char *prefix, unsigned long ip)
|
|||
if (buf) {
|
||||
char *p;
|
||||
|
||||
p = d_path(&f->f_path, buf, PAGE_SIZE);
|
||||
p = file_path(f, buf, PAGE_SIZE);
|
||||
if (IS_ERR(p))
|
||||
p = "?";
|
||||
printk("%s%s[%lx+%lx]", prefix, kbasename(p),
|
||||
|
|
Loading…
Reference in a new issue