From b1f14cdb355c9db3a59fe42eb3bb5bba01c066b6 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 3 Apr 2023 07:45:06 +0200 Subject: sys/linux: improve quotactl syscall description --- sys/linux/quotactl.txt | 87 ++++++++++++++++++++++++++++++++++++++++++++ sys/linux/quotactl.txt.const | 34 +++++++++++++++++ sys/linux/sys.txt | 1 - sys/linux/sys.txt.const | 1 - 4 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 sys/linux/quotactl.txt create mode 100644 sys/linux/quotactl.txt.const diff --git a/sys/linux/quotactl.txt b/sys/linux/quotactl.txt new file mode 100644 index 000000000..7f24ad352 --- /dev/null +++ b/sys/linux/quotactl.txt @@ -0,0 +1,87 @@ +# Copyright 2023 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +include + +quotactl$Q_SYNC(cmd flags[quota_cmd_sync], special const[0], id const[0], addr const[0]) +quotactl$Q_QUOTAON(cmd flags[quota_cmd_quota_on], special ptr[in, blockdev_filename], id uid, addr ptr[in, filename]) +quotactl$Q_QUOTAOFF(cmd flags[quota_cmd_quota_off], special ptr[in, blockdev_filename], id uid, addr const[0]) +quotactl$Q_GETFMT(cmd flags[quota_cmd_getfmt], special ptr[in, blockdev_filename], id uid, addr ptr[out, int32]) +quotactl$Q_GETINFO(cmd flags[quota_cmd_getinfo], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_dqinfo]) +quotactl$Q_SETINFO(cmd flags[quota_cmd_setinfo], special ptr[in, blockdev_filename], id uid, addr ptr[in, if_dqinfo]) +quotactl$Q_GETQUOTA(cmd flags[quota_cmd_getquota], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_dqblk]) +quotactl$Q_SETQUOTA(cmd flags[quota_cmd_setquota], special ptr[in, blockdev_filename], id uid, addr ptr[in, if_dqblk]) +quotactl$Q_GETNEXTQUOTA(cmd flags[quota_cmd_getnextquota], special ptr[in, blockdev_filename], id uid, addr ptr[out, if_nextdqblk]) + +if_dqinfo { + dqi_bgrace int64 + dqi_igrace int64 + dqi_flags flags[quota_dgqinfo_flags, int32] + dqi_valid flags[quota_dgqinfo_valid, int32] +} + +if_dqblk { + dqb_bhardlimit int64 + dqb_bsoftlimit int64 + dqb_curspace int64 + dqb_ihardlimit int64 + dqb_isoftlimit int64 + dqb_curinodes int64 + dqb_btime int64 + dqb_itime int64 + dqb_valid int32 +} + +if_nextdqblk { + dqb_bhardlimit int64 + dqb_bsoftlimit int64 + dqb_curspace int64 + dqb_ihardlimit int64 + dqb_isoftlimit int64 + dqb_curinodes int64 + dqb_btime int64 + dqb_itime int64 + dqb_valid int32 + dqb_id int32 +} + +quota_dgqinfo_flags = DQF_ROOT_SQUASH +quota_dgqinfo_valid = IIF_BGRACE, IIF_IGRACE, IIF_FLAGS + +quota_cmd_sync = Q_SYNC_USR, Q_SYNC_GRP, Q_SYNC_PRJ +quota_cmd_quota_on = Q_QUOTAON_USR, Q_QUOTAON_GRP, Q_QUOTAON_PRJ +quota_cmd_quota_off = Q_QUOTAOFF_USR, Q_QUOTAOFF_GRP, Q_QUOTAOFF_PRJ +quota_cmd_getfmt = Q_GETFMT_USR, Q_GETFMT_GRP, Q_GETFMT_PRJ +quota_cmd_getinfo = Q_GETINFO_USR, Q_GETINFO_GRP, Q_GETINFO_PRJ +quota_cmd_setinfo = Q_SETINFO_USR, Q_SETINFO_GRP, Q_SETINFO_PRJ +quota_cmd_getquota = Q_GETQUOTA_USR, Q_GETQUOTA_GRP, Q_GETQUOTA_PRJ +quota_cmd_setquota = Q_SETQUOTA_USR, Q_SETQUOTA_GRP, Q_SETQUOTA_PRJ +quota_cmd_getnextquota = Q_GETNEXTQUOTA_USR, Q_GETNEXTQUOTA_GRP, Q_GETNEXTQUOTA_PRJ + +define Q_SYNC_USR (Q_SYNC << SUBCMDSHIFT) | USRQUOTA +define Q_SYNC_GRP (Q_SYNC << SUBCMDSHIFT) | GRPQUOTA +define Q_SYNC_PRJ (Q_SYNC << SUBCMDSHIFT) | PRJQUOTA +define Q_QUOTAON_USR (Q_QUOTAON << SUBCMDSHIFT) | USRQUOTA +define Q_QUOTAON_GRP (Q_QUOTAON << SUBCMDSHIFT) | GRPQUOTA +define Q_QUOTAON_PRJ (Q_QUOTAON << SUBCMDSHIFT) | PRJQUOTA +define Q_QUOTAOFF_USR (Q_QUOTAOFF << SUBCMDSHIFT) | USRQUOTA +define Q_QUOTAOFF_GRP (Q_QUOTAOFF << SUBCMDSHIFT) | GRPQUOTA +define Q_QUOTAOFF_PRJ (Q_QUOTAOFF << SUBCMDSHIFT) | PRJQUOTA +define Q_GETFMT_USR (Q_GETFMT << SUBCMDSHIFT) | USRQUOTA +define Q_GETFMT_GRP (Q_GETFMT << SUBCMDSHIFT) | GRPQUOTA +define Q_GETFMT_PRJ (Q_GETFMT << SUBCMDSHIFT) | PRJQUOTA +define Q_GETINFO_USR (Q_GETINFO << SUBCMDSHIFT) | USRQUOTA +define Q_GETINFO_GRP (Q_GETINFO << SUBCMDSHIFT) | GRPQUOTA +define Q_GETINFO_PRJ (Q_GETINFO << SUBCMDSHIFT) | PRJQUOTA +define Q_SETINFO_USR (Q_SETINFO << SUBCMDSHIFT) | USRQUOTA +define Q_SETINFO_GRP (Q_SETINFO << SUBCMDSHIFT) | GRPQUOTA +define Q_SETINFO_PRJ (Q_SETINFO << SUBCMDSHIFT) | PRJQUOTA +define Q_GETQUOTA_USR (Q_GETQUOTA << SUBCMDSHIFT) | USRQUOTA +define Q_GETQUOTA_GRP (Q_GETQUOTA << SUBCMDSHIFT) | GRPQUOTA +define Q_GETQUOTA_PRJ (Q_GETQUOTA << SUBCMDSHIFT) | PRJQUOTA +define Q_SETQUOTA_USR (Q_SETQUOTA << SUBCMDSHIFT) | USRQUOTA +define Q_SETQUOTA_GRP (Q_SETQUOTA << SUBCMDSHIFT) | GRPQUOTA +define Q_SETQUOTA_PRJ (Q_SETQUOTA << SUBCMDSHIFT) | PRJQUOTA +define Q_GETNEXTQUOTA_USR (Q_GETNEXTQUOTA << SUBCMDSHIFT) | USRQUOTA +define Q_GETNEXTQUOTA_GRP (Q_GETNEXTQUOTA << SUBCMDSHIFT) | GRPQUOTA +define Q_GETNEXTQUOTA_PRJ (Q_GETNEXTQUOTA << SUBCMDSHIFT) | PRJQUOTA diff --git a/sys/linux/quotactl.txt.const b/sys/linux/quotactl.txt.const new file mode 100644 index 000000000..942e480d8 --- /dev/null +++ b/sys/linux/quotactl.txt.const @@ -0,0 +1,34 @@ +# Code generated by syz-sysgen. DO NOT EDIT. +arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x +DQF_ROOT_SQUASH = 1 +IIF_BGRACE = 1 +IIF_FLAGS = 4 +IIF_IGRACE = 2 +Q_GETFMT_GRP = 18446744071562068993 +Q_GETFMT_PRJ = 18446744071562068994 +Q_GETFMT_USR = 18446744071562068992 +Q_GETINFO_GRP = 18446744071562069249 +Q_GETINFO_PRJ = 18446744071562069250 +Q_GETINFO_USR = 18446744071562069248 +Q_GETNEXTQUOTA_GRP = 18446744071562070273 +Q_GETNEXTQUOTA_PRJ = 18446744071562070274 +Q_GETNEXTQUOTA_USR = 18446744071562070272 +Q_GETQUOTA_GRP = 18446744071562069761 +Q_GETQUOTA_PRJ = 18446744071562069762 +Q_GETQUOTA_USR = 18446744071562069760 +Q_QUOTAOFF_GRP = 18446744071562068737 +Q_QUOTAOFF_PRJ = 18446744071562068738 +Q_QUOTAOFF_USR = 18446744071562068736 +Q_QUOTAON_GRP = 18446744071562068481 +Q_QUOTAON_PRJ = 18446744071562068482 +Q_QUOTAON_USR = 18446744071562068480 +Q_SETINFO_GRP = 18446744071562069505 +Q_SETINFO_PRJ = 18446744071562069506 +Q_SETINFO_USR = 18446744071562069504 +Q_SETQUOTA_GRP = 18446744071562070017 +Q_SETQUOTA_PRJ = 18446744071562070018 +Q_SETQUOTA_USR = 18446744071562070016 +Q_SYNC_GRP = 18446744071562068225 +Q_SYNC_PRJ = 18446744071562068226 +Q_SYNC_USR = 18446744071562068224 +__NR_quotactl = 131, amd64:179, arm64:riscv64:60, mips64le:5172 diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt index ee1eab832..78e45310a 100644 --- a/sys/linux/sys.txt +++ b/sys/linux/sys.txt @@ -394,7 +394,6 @@ chroot(dir ptr[in, filename]) getcwd(buf buffer[out], size len[buf]) chdir(dir ptr[in, filename]) fchdir(fd fd) -quotactl(cmd intptr, special ptr[in, filename], id uid, addr ptr[in, array[int8]]) pivot_root(new_root ptr[in, filename], put_old ptr[in, filename]) sysfs$1(option const[1], fsname ptr[in, string]) diff --git a/sys/linux/sys.txt.const b/sys/linux/sys.txt.const index 5e2fbd90e..7c5d9cd7f 100644 --- a/sys/linux/sys.txt.const +++ b/sys/linux/sys.txt.const @@ -747,7 +747,6 @@ __NR_ptrace = 26, amd64:101, arm64:riscv64:117, mips64le:5099 __NR_pwrite64 = 181, amd64:18, arm64:riscv64:68, mips64le:5017, ppc64le:180 __NR_pwritev = 70, 386:334, amd64:296, arm:362, mips64le:5290, ppc64le:321, s390x:329 __NR_pwritev2 = 287, 386:379, amd64:328, arm:393, mips64le:5322, ppc64le:381, s390x:377 -__NR_quotactl = 131, amd64:179, arm64:riscv64:60, mips64le:5172 __NR_read = 3, amd64:0, arm64:riscv64:63, mips64le:5000 __NR_readahead = 213, 386:arm:225, amd64:187, mips64le:5179, ppc64le:191, s390x:222 __NR_readlink = 85, amd64:89, arm64:riscv64:???, mips64le:5087 -- cgit mrf-deployment