Commit 8177a9d7 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds

lseek(fd, n, SEEK_END) does *not* go to eof - n

When you copy some code, you are supposed to read it.  If nothing else,
there's a chance to spot and fix an obvious bug instead of sharing it...

X-Song: "I Got It From Agnes", by Tom Lehrer
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
[ Tom Lehrer? You're dating yourself, Al ]
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7d132055
...@@ -244,7 +244,7 @@ bnad_debugfs_lseek(struct file *file, loff_t offset, int orig) ...@@ -244,7 +244,7 @@ bnad_debugfs_lseek(struct file *file, loff_t offset, int orig)
file->f_pos += offset; file->f_pos += offset;
break; break;
case 2: case 2:
file->f_pos = debug->buffer_len - offset; file->f_pos = debug->buffer_len + offset;
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
...@@ -186,7 +186,7 @@ bfad_debugfs_lseek(struct file *file, loff_t offset, int orig) ...@@ -186,7 +186,7 @@ bfad_debugfs_lseek(struct file *file, loff_t offset, int orig)
file->f_pos += offset; file->f_pos += offset;
break; break;
case 2: case 2:
file->f_pos = debug->buffer_len - offset; file->f_pos = debug->buffer_len + offset;
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
...@@ -174,7 +174,7 @@ static loff_t fnic_trace_debugfs_lseek(struct file *file, ...@@ -174,7 +174,7 @@ static loff_t fnic_trace_debugfs_lseek(struct file *file,
pos = file->f_pos + offset; pos = file->f_pos + offset;
break; break;
case 2: case 2:
pos = fnic_dbg_prt->buffer_len - offset; pos = fnic_dbg_prt->buffer_len + offset;
} }
return (pos < 0 || pos > fnic_dbg_prt->buffer_len) ? return (pos < 0 || pos > fnic_dbg_prt->buffer_len) ?
-EINVAL : (file->f_pos = pos); -EINVAL : (file->f_pos = pos);
......
...@@ -1178,7 +1178,7 @@ lpfc_debugfs_lseek(struct file *file, loff_t off, int whence) ...@@ -1178,7 +1178,7 @@ lpfc_debugfs_lseek(struct file *file, loff_t off, int whence)
pos = file->f_pos + off; pos = file->f_pos + off;
break; break;
case 2: case 2:
pos = debug->len - off; pos = debug->len + off;
} }
return (pos < 0 || pos > debug->len) ? -EINVAL : (file->f_pos = pos); return (pos < 0 || pos > debug->len) ? -EINVAL : (file->f_pos = pos);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment