Skip to content

Commit

Permalink
fix handling of offsets in cris eeprom.c, get rid of fake on-stack files
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed May 21, 2010
1 parent 4f0447b commit 82f3952
Showing 1 changed file with 7 additions and 14 deletions.
21 changes: 7 additions & 14 deletions arch/cris/arch-v10/drivers/eeprom.c
Original file line number Diff line number Diff line change
Expand Up @@ -437,10 +437,7 @@ static loff_t eeprom_lseek(struct file * file, loff_t offset, int orig)

static int eeprom_read_buf(loff_t addr, char * buf, int count)
{
struct file f;

f.f_pos = addr;
return eeprom_read(&f, buf, count, &addr);
return eeprom_read(NULL, buf, count, &addr);
}


Expand All @@ -450,7 +447,7 @@ static int eeprom_read_buf(loff_t addr, char * buf, int count)
static ssize_t eeprom_read(struct file * file, char * buf, size_t count, loff_t *off)
{
int read=0;
unsigned long p = file->f_pos;
unsigned long p = *off;

unsigned char page;

Expand Down Expand Up @@ -495,7 +492,7 @@ static ssize_t eeprom_read(struct file * file, char * buf, size_t count, loff_t

if(read > 0)
{
file->f_pos += read;
*off += read;
}

mutex_unlock(&eeprom.lock);
Expand All @@ -506,11 +503,7 @@ static ssize_t eeprom_read(struct file * file, char * buf, size_t count, loff_t

static int eeprom_write_buf(loff_t addr, const char * buf, int count)
{
struct file f;

f.f_pos = addr;

return eeprom_write(&f, buf, count, &addr);
return eeprom_write(NULL, buf, count, &addr);
}


Expand All @@ -534,7 +527,7 @@ static ssize_t eeprom_write(struct file * file, const char * buf, size_t count,
{
restart = 0;
written = 0;
p = file->f_pos;
p = *off;


while( (written < count) && (p < eeprom.size))
Expand Down Expand Up @@ -660,10 +653,10 @@ static ssize_t eeprom_write(struct file * file, const char * buf, size_t count,
} /* for */

mutex_unlock(&eeprom.lock);
if (written == 0 && file->f_pos >= eeprom.size){
if (written == 0 && p >= eeprom.size){
return -ENOSPC;
}
file->f_pos += written;
*off = p;
return written;
}

Expand Down

0 comments on commit 82f3952

Please sign in to comment.