diff options
Diffstat (limited to 'fs/read_write.c')
-rw-r--r-- | fs/read_write.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/read_write.c b/fs/read_write.c index 74e36586e4d3..e757ef26e4ce 100644 --- a/fs/read_write.c +++ b/fs/read_write.c | |||
@@ -124,7 +124,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin) | |||
124 | { | 124 | { |
125 | loff_t retval; | 125 | loff_t retval; |
126 | 126 | ||
127 | lock_kernel(); | 127 | mutex_lock(&file->f_dentry->d_inode->i_mutex); |
128 | switch (origin) { | 128 | switch (origin) { |
129 | case SEEK_END: | 129 | case SEEK_END: |
130 | offset += i_size_read(file->f_path.dentry->d_inode); | 130 | offset += i_size_read(file->f_path.dentry->d_inode); |
@@ -145,7 +145,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin) | |||
145 | retval = offset; | 145 | retval = offset; |
146 | } | 146 | } |
147 | out: | 147 | out: |
148 | unlock_kernel(); | 148 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); |
149 | return retval; | 149 | return retval; |
150 | } | 150 | } |
151 | EXPORT_SYMBOL(default_llseek); | 151 | EXPORT_SYMBOL(default_llseek); |
@@ -156,7 +156,6 @@ loff_t vfs_llseek(struct file *file, loff_t offset, int origin) | |||
156 | 156 | ||
157 | fn = no_llseek; | 157 | fn = no_llseek; |
158 | if (file->f_mode & FMODE_LSEEK) { | 158 | if (file->f_mode & FMODE_LSEEK) { |
159 | fn = default_llseek; | ||
160 | if (file->f_op && file->f_op->llseek) | 159 | if (file->f_op && file->f_op->llseek) |
161 | fn = file->f_op->llseek; | 160 | fn = file->f_op->llseek; |
162 | } | 161 | } |