From: Alan Cox Date: Sat, 23 Jul 2016 21:24:21 +0000 (+0100) Subject: ioctl: move the write check into the drivers X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=c2c9fa5c6bb4ae5a7cbb5fb51b42ca5ce4d4d832;p=FUZIX.git ioctl: move the write check into the drivers --- diff --git a/Kernel/dev/blkdev.c b/Kernel/dev/blkdev.c index 8791ecf0..c50fb73c 100644 --- a/Kernel/dev/blkdev.c +++ b/Kernel/dev/blkdev.c @@ -157,6 +157,11 @@ int blkdev_ioctl(uint8_t minor, uint16_t request, char *data) if (request != BLKFLSBUF) return -1; + if (!(getperm(ino) & OTH_WR)) { + udata.u_error = EPERM; + return -1; + } + /* we trust that blkdev_open() has already verified that this minor number is valid */ blk_op.blkdev = &blkdev_table[minor >> 4]; diff --git a/Kernel/syscall_fs.c b/Kernel/syscall_fs.c index 43d13348..1b29c081 100644 --- a/Kernel/syscall_fs.c +++ b/Kernel/syscall_fs.c @@ -263,10 +263,6 @@ arg_t _ioctl(void) if ((request & IOCTL_SUPER) && esuper()) return -1; - if (!(getperm(ino) & OTH_WR)) { - udata.u_error = EPERM; - return -1; - } dev = ino->c_node.i_addr[0];