patch-2.4.27 linux-2.4.27/drivers/block/acsi_slm.c
Next file: linux-2.4.27/drivers/block/cciss.c
Previous file: linux-2.4.27/drivers/block/Makefile
Back to the patch index
Back to the overall index
- Lines: 33
- Date:
2004-08-07 16:26:04.672347517 -0700
- Orig file:
linux-2.4.26/drivers/block/acsi_slm.c
- Orig date:
2002-11-28 15:53:12.000000000 -0800
diff -urN linux-2.4.26/drivers/block/acsi_slm.c linux-2.4.27/drivers/block/acsi_slm.c
@@ -367,6 +367,7 @@
{
struct inode *node = file->f_dentry->d_inode;
+ loff_t pos = *ppos;
unsigned long page;
int length;
int end;
@@ -381,18 +382,18 @@
count = length;
goto out;
}
- if (file->f_pos >= length) {
+ if (pos != (unsigned) pos || pos >= length) {
count = 0;
goto out;
}
- if (count + file->f_pos > length)
- count = length - file->f_pos;
- end = count + file->f_pos;
- if (copy_to_user(buf, (char *)page + file->f_pos, count)) {
+ if (count > length - pos)
+ count = length - pos;
+ end = count + pos;
+ if (copy_to_user(buf, (char *)page + pos, count)) {
count = -EFAULT;
goto out;
}
- file->f_pos = end;
+ *ppos = end;
out: free_page( page );
return( count );
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)