Re: [SECOND RESEND] vfs: Return -ENXIO for negative SEEK_HOLE / SEEK_DATA offsets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 26, 2017 at 7:12 PM, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
> On Mon, Sep 25, 2017 at 3:23 AM, Andreas Gruenbacher
> <agruenba@xxxxxxxxxx> wrote:
>>
>> could you please merge the following VFS fix, sent to Al etc. on August
>> 30 and resent on September 14, with no reaction?
>
> This fix seems wrong, or at least misleading.
>
> We already error out for negative offsets in vfs_setpos(), except for
> the special case of /proc/<pid>/mem, /dev/mem and /dev/kmem (which
> have that FMODE_UNSIGNED_OFFSET special case).
>
> Sure, the error is different (-EINVAL), but that doesn't seem wrong.
>
> So my gut feel is that if xfstest generic/448 cares about EINVAL vs
> ENXIO, then that test is just garbage. Because let's face it, EINVAL
> is the *normal* error return for negative offsets.

Returning -EINVAL instead of -ENXIO for negative offsets sounds reasonable. But:

> Am I missing something?

When whence == SEEK_HOLE and offset < 0, generic_file_llseek_size will
return the
file size instead of -EINVAL. That's at least very weird, and should be fixed.

In addition, on ext4 and xfs, SEEK_HOLE / SEEK_DATA with a negative offset
will currently return -ENXIO. For consistency, do we want to change the ext4 and
xfs behavior to return -EINVAL? Do we want generic_file_llseek_size to behave
like ext4 and xfs?

Thanks,
Andreas



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]