git: ccf7b62bd88c - main - loader: allow fs modules to use ioctl()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 03 Mar 2025 21:53:41 UTC
The branch main has been updated by tsoome: URL: https://cgit.FreeBSD.org/src/commit/?id=ccf7b62bd88c6c8beba915eab058f99212a32d35 commit ccf7b62bd88c6c8beba915eab058f99212a32d35 Author: Toomas Soome <tsoome@FreeBSD.org> AuthorDate: 2025-03-03 21:52:55 +0000 Commit: Toomas Soome <tsoome@FreeBSD.org> CommitDate: 2025-03-03 21:52:55 +0000 loader: allow fs modules to use ioctl() Currently only directly opened disk device is allowed to access ioctl() - that is, when file has F_RAW flag set. The problem is, file systems might need to determine the device parameters, and we could use already opened device descriptor to communicate this information. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D49077 --- stand/libsa/ioctl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/stand/libsa/ioctl.c b/stand/libsa/ioctl.c index 0c8613499ceb..cc592a454812 100644 --- a/stand/libsa/ioctl.c +++ b/stand/libsa/ioctl.c @@ -70,12 +70,12 @@ ioctl(int fd, u_long cmd, void *arg) errno = EBADF; return (-1); } - if (f->f_flags & F_RAW) { + if (f->f_dev == NULL) + errno = EIO; + else errno = (f->f_dev->dv_ioctl)(f, cmd, arg); - if (errno) - return (-1); - return (0); - } - errno = EIO; - return (-1); + + if (errno != 0) + return (-1); + return (0); }