aboutsummaryrefslogtreecommitdiffstats
path: root/fs/kernfs/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/kernfs/dir.c')
-rw-r--r--fs/kernfs/dir.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index eb2c58732bcf..8a652404eef6 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -153,9 +153,9 @@ static int kernfs_path_from_node_locked(struct kernfs_node *kn_to,
153 p = buf + len + nlen; 153 p = buf + len + nlen;
154 *p = '\0'; 154 *p = '\0';
155 for (kn = kn_to; kn != common; kn = kn->parent) { 155 for (kn = kn_to; kn != common; kn = kn->parent) {
156 nlen = strlen(kn->name); 156 size_t tmp = strlen(kn->name);
157 p -= nlen; 157 p -= tmp;
158 memcpy(p, kn->name, nlen); 158 memcpy(p, kn->name, tmp);
159 *(--p) = '/'; 159 *(--p) = '/';
160 } 160 }
161 161
@@ -1645,22 +1645,9 @@ static int kernfs_fop_readdir(struct file *file, struct dir_context *ctx)
1645 return 0; 1645 return 0;
1646} 1646}
1647 1647
1648static loff_t kernfs_dir_fop_llseek(struct file *file, loff_t offset,
1649 int whence)
1650{
1651 struct inode *inode = file_inode(file);
1652 loff_t ret;
1653
1654 inode_lock(inode);
1655 ret = generic_file_llseek(file, offset, whence);
1656 inode_unlock(inode);
1657
1658 return ret;
1659}
1660
1661const struct file_operations kernfs_dir_fops = { 1648const struct file_operations kernfs_dir_fops = {
1662 .read = generic_read_dir, 1649 .read = generic_read_dir,
1663 .iterate = kernfs_fop_readdir, 1650 .iterate_shared = kernfs_fop_readdir,
1664 .release = kernfs_dir_fop_release, 1651 .release = kernfs_dir_fop_release,
1665 .llseek = kernfs_dir_fop_llseek, 1652 .llseek = generic_file_llseek,
1666}; 1653};