2.5.62: /proc/ide/slc90e66 returns incomplete data [16/17]
PATCH 1/1 2.5.62: /proc/ide/slc90e66 returns incomplete data [16/17]
This patch fixes the incomplete data return problem of /proc/ide/slc90e66. When the number of consecutive read bytes are smaller than the total data in slc90e66_get_info(), the second read() returns 0.
drivers/ide/pci/slc90e66.c +7 -2
@@ -34,8 +34,9 @@static int slc90e66_get_info (char *buffer,char **addr,off_t offset,int count) {char *p = buffer; +int len;unsigned long bibma =pci_resource_start (bmide_dev,4 ); -u16 reg40 =0 , psitre =0 , reg42 =0 , ssitre =0 ; +u16 reg40 =0 , psitre =0 , reg42 =0 , ssitre =0 ;u8 c0 =0 , c1 =0 ;u8 reg44 =0 , reg47 =0 , reg48 =0 , reg4a =0 , reg4b =0 ;
@@ -110,7 +111,11 @@* FIXME.... Add configuration junk data....blah blah...... */ - return p-buffer; /* => must be less than 4k! */ +/* p - buffer must be less than 4k! */ + len = (p - buffer) - offset; + *addr = buffer + offset; + + return len > count ? count : len; }#endif /* defined(DISPLAY_SLC90E66_TIMINGS) && defined(CONFIG_PROC_FS) */