patch-2.4.27 linux-2.4.27/drivers/gsc/eisa_eeprom.c
Next file: linux-2.4.27/drivers/hotplug/Config.in
Previous file: linux-2.4.27/drivers/char/vc_screen.c
Back to the patch index
Back to the overall index
- Lines: 36
- Date:
2004-08-07 16:26:04.733350024 -0700
- Orig file:
linux-2.4.26/drivers/gsc/eisa_eeprom.c
- Orig date:
2002-11-28 15:53:12.000000000 -0800
diff -urN linux-2.4.26/drivers/gsc/eisa_eeprom.c linux-2.4.27/drivers/gsc/eisa_eeprom.c
@@ -34,24 +34,30 @@
unsigned char *tmp;
ssize_t ret;
int i;
+ loff_t n = *ppos;
+ unsigned pos = n;
- if (*ppos >= HPEE_MAX_LENGTH)
+ if (n != pos || pos >= HPEE_MAX_LENGTH)
return 0;
- count = *ppos + count < HPEE_MAX_LENGTH ? count : HPEE_MAX_LENGTH - *ppos;
+ if (count > HPEE_MAX_LENGTH - pos)
+ count = HPEE_MAX_LENGTH - pos;
+
tmp = kmalloc(count, GFP_KERNEL);
if (tmp) {
for (i = 0; i < count; i++)
- tmp[i] = gsc_readb(eeprom_addr+(*ppos)++);
+ tmp[i] = gsc_readb(eeprom_addr+(pos)++);
if (copy_to_user (buf, tmp, count))
ret = -EFAULT;
- else
+ else {
ret = count;
+ *ppos = pos;
+ }
kfree (tmp);
} else
ret = -ENOMEM;
-
+
return ret;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)