| Kernel v2.5.75 /fs/block_dev.c |
|---|
 2.5.75
 fs
 block_dev.c
diff -Nru a/fs/block_dev.c b/fs/block_dev.c
--- a/fs/block_dev.c Thu Jul 10 13:16:29 2003
+++ b/fs/block_dev.c Thu Jul 10 13:16:29 2003
@@ -155,11 +155,13 @@
*/
static loff_t block_llseek(struct file *file, loff_t offset, int origin)
{
- /* ewww */
- loff_t size = file->f_dentry->d_inode->i_bdev->bd_inode->i_size;
+ struct inode *bd_inode;
+ loff_t size;
loff_t retval;
- lock_kernel();
+ bd_inode = file->f_dentry->d_inode->i_bdev->bd_inode;
+ down(&bd_inode->i_sem);
+ size = bd_inode->i_size;
switch (origin) {
case 2:
@@ -175,7 +177,7 @@
}
retval = offset;
}
- unlock_kernel();
+ up(&bd_inode->i_sem);
return retval;
}
|