Skip to content

Commit

Permalink
drivers: fix up various ->llseek() implementations
Browse files Browse the repository at this point in the history
Fix up a few ->llseek() implementations that won't deal with SEEK_HOLE/SEEK_DATA
properly.  Make them future proof so that if we ever add new options they will
return -EINVAL.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Josef Bacik authored and Al Viro committed Jul 21, 2011
1 parent 06222e4 commit 2273506
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/char/generic_nvram.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,16 @@ static ssize_t nvram_len;
static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
{
switch (origin) {
case 0:
break;
case 1:
offset += file->f_pos;
break;
case 2:
offset += nvram_len;
break;
default:
offset = -1;
}
if (offset < 0)
return -EINVAL;
Expand Down
2 changes: 2 additions & 0 deletions drivers/char/nvram.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
case 2:
offset += NVRAM_BYTES;
break;
default:
return -EINVAL;
}

return (offset >= 0) ? (file->f_pos = offset) : -EINVAL;
Expand Down
4 changes: 4 additions & 0 deletions drivers/char/ps3flash.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,16 @@ static loff_t ps3flash_llseek(struct file *file, loff_t offset, int origin)

mutex_lock(&file->f_mapping->host->i_mutex);
switch (origin) {
case 0:
break;
case 1:
offset += file->f_pos;
break;
case 2:
offset += dev->regions[dev->region_idx].size*dev->blk_size;
break;
default:
offset = -1;
}
if (offset < 0) {
res = -EINVAL;
Expand Down
4 changes: 4 additions & 0 deletions drivers/macintosh/nvram.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,16 @@
static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
{
switch (origin) {
case 0:
break;
case 1:
offset += file->f_pos;
break;
case 2:
offset += NVRAM_SIZE;
break;
default:
offset = -1;
}
if (offset < 0)
return -EINVAL;
Expand Down

0 comments on commit 2273506

Please sign in to comment.