Merge branch 'master' of /home/tglx/work/mtd/git/linux-2.6.git/
[sfrench/cifs-2.6.git] / drivers / mtd / mtdchar.c
index 16df1e4fb0e94d2efec9542e6114f0593c3ad3bf..8c0d94b72b63671cae6c1aa51ab30bfa9957da96 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * $Id: mtdchar.c,v 1.73 2005/07/04 17:36:41 gleixner Exp $
+ * $Id: mtdchar.c,v 1.74 2005/08/04 01:05:48 tpoynor Exp $
  *
  * Character-device access to raw MTD devices.
  *
  *
  * Character-device access to raw MTD devices.
  *
@@ -70,26 +70,23 @@ static loff_t mtd_lseek (struct file *file, loff_t offset, int orig)
        switch (orig) {
        case 0:
                /* SEEK_SET */
        switch (orig) {
        case 0:
                /* SEEK_SET */
-               file->f_pos = offset;
                break;
        case 1:
                /* SEEK_CUR */
                break;
        case 1:
                /* SEEK_CUR */
-               file->f_pos += offset;
+               offset += file->f_pos;
                break;
        case 2:
                /* SEEK_END */
                break;
        case 2:
                /* SEEK_END */
-               file->f_pos =mtd->size + offset;
+               offset += mtd->size;
                break;
        default:
                return -EINVAL;
        }
 
                break;
        default:
                return -EINVAL;
        }
 
-       if (file->f_pos < 0)
-               file->f_pos = 0;
-       else if (file->f_pos >= mtd->size)
-               file->f_pos = mtd->size - 1;
+       if (offset >= 0 && offset < mtd->size)
+               return file->f_pos = offset;
 
 
-       return file->f_pos;
+       return -EINVAL;
 }
 
 
 }