diff options
Diffstat (limited to 'fs/kernfs/dir.c')
-rw-r--r-- | fs/kernfs/dir.c | 23 |
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 | ||
1648 | static 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 | |||
1661 | const struct file_operations kernfs_dir_fops = { | 1648 | const 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 | }; |