svn commit: r351372 - head/sys/kern
Rick Macklem
rmacklem at FreeBSD.org
Thu Aug 22 01:15:07 UTC 2019
Author: rmacklem
Date: Thu Aug 22 01:15:06 2019
New Revision: 351372
URL: https://svnweb.freebsd.org/changeset/base/351372
Log:
Map ENOTTY to EINVAL for lseek(SEEK_DATA/SEEK_HOLE).
Without this patch, when an application performed lseek(SEEK_DATA/SEEK_HOLE)
on a file in a file system that does not have its own VOP_IOCTL(), the
lseek(2) fails with errno ENOTTY. This didn't seem appropriate, since
ENOTTY is not listed as an error return by either the lseek(2) man page
nor the POSIX draft for lseek(2).
This was discussed on freebsd-current@ here:
http://docs.FreeBSD.org/cgi/mid.cgi?CAOtMX2iiQdv1+15e1N_r7V6aCx_VqAJCTP1AW+qs3Yg7sPg9wA
This trivial patch maps ENOTTY to EINVAL for lseek(SEEK_DATA/SEEK_HOLE).
Reviewed by: markj
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D21300
Modified:
head/sys/kern/vfs_vnops.c
Modified: head/sys/kern/vfs_vnops.c
==============================================================================
--- head/sys/kern/vfs_vnops.c Thu Aug 22 00:37:38 2019 (r351371)
+++ head/sys/kern/vfs_vnops.c Thu Aug 22 01:15:06 2019 (r351372)
@@ -2275,9 +2275,13 @@ vn_seek(struct file *fp, off_t offset, int whence, str
break;
case SEEK_DATA:
error = fo_ioctl(fp, FIOSEEKDATA, &offset, cred, td);
+ if (error == ENOTTY)
+ error = EINVAL;
break;
case SEEK_HOLE:
error = fo_ioctl(fp, FIOSEEKHOLE, &offset, cred, td);
+ if (error == ENOTTY)
+ error = EINVAL;
break;
default:
error = EINVAL;
More information about the svn-src-head
mailing list