diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2018-03-13 21:43:59 +0100 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2018-04-02 20:16:03 +0200 |
commit | cbb60b924b9f3e4d7c67a1c9dcf981718f926e4e (patch) | |
tree | f3952696484e55feb05b862849d15740b87183a8 /init/do_mounts_md.c | |
parent | 454dab3f965ec24fda8fbe135c8dad4c5b238a86 (diff) |
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.c | 15 |
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); } } |