summaryrefslogtreecommitdiff
path: root/init/do_mounts_md.c
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2018-03-13 21:43:59 +0100
committerDominik Brodowski <linux@dominikbrodowski.net>2018-04-02 20:16:03 +0200
commitcbb60b924b9f3e4d7c67a1c9dcf981718f926e4e (patch)
treef3952696484e55feb05b862849d15740b87183a8 /init/do_mounts_md.c
parent454dab3f965ec24fda8fbe135c8dad4c5b238a86 (diff)
downloadlinux-rpi3-cbb60b924b9f3e4d7c67a1c9dcf981718f926e4e.tar.gz
linux-rpi3-cbb60b924b9f3e4d7c67a1c9dcf981718f926e4e.tar.bz2
linux-rpi3-cbb60b924b9f3e4d7c67a1c9dcf981718f926e4e.zip
fs: add ksys_ioctl() helper; remove in-kernel calls to sys_ioctl()
Using this helper allows us to avoid the in-kernel calls to the sys_ioctl() syscall. The ksys_ prefix denotes that this function is meant as a drop-in replacement for the syscall. In particular, it uses the same calling convention as sys_ioctl(). After careful review, at least some of these calls could be converted to do_vfs_ioctl() in future. This patch is part of a series which removes in-kernel calls to syscalls. On this basis, the syscall entry path can be streamlined. For details, see http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'init/do_mounts_md.c')
-rw-r--r--init/do_mounts_md.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
index 76dcfaada3ed..7d85d172bc7e 100644
--- a/init/do_mounts_md.c
+++ b/init/do_mounts_md.c
@@ -187,7 +187,7 @@ static void __init md_setup_drive(void)
"array %s\n", name);
continue;
}
- if (sys_ioctl(fd, SET_ARRAY_INFO, 0) == -EBUSY) {
+ if (ksys_ioctl(fd, SET_ARRAY_INFO, 0) == -EBUSY) {
printk(KERN_WARNING
"md: Ignoring md=%d, already autodetected. (Use raid=noautodetect)\n",
minor);
@@ -210,7 +210,7 @@ static void __init md_setup_drive(void)
ainfo.state = (1 << MD_SB_CLEAN);
ainfo.layout = 0;
ainfo.chunk_size = md_setup_args[ent].chunk;
- err = sys_ioctl(fd, SET_ARRAY_INFO, (long)&ainfo);
+ err = ksys_ioctl(fd, SET_ARRAY_INFO, (long)&ainfo);
for (i = 0; !err && i <= MD_SB_DISKS; i++) {
dev = devices[i];
if (!dev)
@@ -220,7 +220,8 @@ static void __init md_setup_drive(void)
dinfo.state = (1<<MD_DISK_ACTIVE)|(1<<MD_DISK_SYNC);
dinfo.major = MAJOR(dev);
dinfo.minor = MINOR(dev);
- err = sys_ioctl(fd, ADD_NEW_DISK, (long)&dinfo);
+ err = ksys_ioctl(fd, ADD_NEW_DISK,
+ (long)&dinfo);
}
} else {
/* persistent */
@@ -230,11 +231,11 @@ static void __init md_setup_drive(void)
break;
dinfo.major = MAJOR(dev);
dinfo.minor = MINOR(dev);
- sys_ioctl(fd, ADD_NEW_DISK, (long)&dinfo);
+ ksys_ioctl(fd, ADD_NEW_DISK, (long)&dinfo);
}
}
if (!err)
- err = sys_ioctl(fd, RUN_ARRAY, 0);
+ err = ksys_ioctl(fd, RUN_ARRAY, 0);
if (err)
printk(KERN_WARNING "md: starting md%d failed\n", minor);
else {
@@ -245,7 +246,7 @@ static void __init md_setup_drive(void)
*/
ksys_close(fd);
fd = ksys_open(name, 0, 0);
- sys_ioctl(fd, BLKRRPART, 0);
+ ksys_ioctl(fd, BLKRRPART, 0);
}
ksys_close(fd);
}
@@ -296,7 +297,7 @@ static void __init autodetect_raid(void)
fd = ksys_open("/dev/md0", 0, 0);
if (fd >= 0) {
- sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
+ ksys_ioctl(fd, RAID_AUTORUN, raid_autopart);
ksys_close(fd);
}
}