Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82f3952c authored by Al Viro's avatar Al Viro
Browse files

fix handling of offsets in cris eeprom.c, get rid of fake on-stack files



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4f0447b8
Loading
Loading
Loading
Loading
+7 −14
Original line number Diff line number Diff line
@@ -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);
}


@@ -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;

@@ -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);
@@ -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);
}


@@ -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))
@@ -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;
}