#include #include #include /* * This code works only for 32 bit quota tools over 64 bit OS (x86_64, ia64) * and is necessary due to alignment problems. */ struct compat_if_dqblk { compat_u64 dqb_bhardlimit; compat_u64 dqb_bsoftlimit; compat_u64 dqb_curspace; compat_u64 dqb_ihardlimit; compat_u64 dqb_isoftlimit; compat_u64 dqb_curinodes; compat_u64 dqb_btime; compat_u64 dqb_itime; compat_uint_t dqb_valid; }; /* XFS structures */ struct compat_fs_qfilestat { compat_u64 dqb_bhardlimit; compat_u64 qfs_nblks; compat_uint_t qfs_nextents; }; struct compat_fs_quota_stat { __s8 qs_version; __u16 qs_flags; __s8 qs_pad; struct compat_fs_qfilestat qs_uquota; struct compat_fs_qfilestat qs_gquota; compat_uint_t qs_incoredqs; compat_int_t qs_btimelimit; compat_int_t qs_itimelimit; compat_int_t qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; }; asmlinkage long sys32_quotactl(unsigned int cmd, const char __user *special, qid_t id, void __user *addr) { unsigned int cmds; struct if_dqblk __user *dqblk; struct compat_if_dqblk __user *compat_dqblk; struct fs_quota_stat __user *fsqstat; struct compat_fs_quota_stat __user *compat_fsqstat; compat_uint_t data; u16 xdata; long ret; cmds = cmd >> SUBCMDSHIFT; switch (cmds) { case Q_GETQUOTA: dqblk = compat_alloc_user_space(sizeof(struct if_dqblk)); compat_dqblk = addr; ret = sys_quotactl(cmd, special, id, dqblk); if (ret) break; if (copy_in_user(compat_dqblk, dqblk, sizeof(*compat_dqblk)) || get_user(data, &dqblk->dqb_valid) || put_user(data, &compat_dqblk->dqb_valid)) ret = -EFAULT; break; case Q_SETQUOTA: dqblk = compat_alloc_user_space(sizeof(struct if_dqblk)); compat_dqblk = addr; ret = -EFAULT; if (copy_in_user(dqblk, compat_dqblk, sizeof(*compat_dqblk)) || get_user(data, &compat_dqblk->dqb_valid) || put_user(data, &dqblk->dqb_valid)) break; ret = sys_quotactl(cmd, special, id, dqblk); break; case Q_XGETQSTAT: fsqstat = compat_alloc_user_space(sizeof(struct fs_quota_stat)); compat_fsqstat = addr; ret = sys_quotactl(cmd, special, id, fsqstat); if (ret) break; ret = -EFAULT; /* Copying qs_version, qs_flags, qs_pad */ if (copy_in_user(compat_fsqstat, fsqstat, offsetof(struct compat_fs_quota_stat, qs_uquota))) break; /* Copying qs_uquota */ if (copy_in_user(&compat_fsqstat->qs_uquota, &fsqstat->qs_uquota, sizeof(compat_fsqstat->qs_uquota)) || get_user(data, &fsqstat->qs_uquota.qfs_nextents) || put_user(data, &compat_fsqstat->qs_uquota.qfs_nextents)) break; /* Copying qs_gquota */ if (copy_in_user(&compat_fsqstat->qs_gquota, &fsqstat->qs_gquota, sizeof(compat_fsqstat->qs_gquota)) || get_user(data, &fsqstat->qs_gquota.qfs_nextents) || put_user(data, &compat_fsqstat->qs_gquota.qfs_nextents)) break; /* Copying the rest */ if (copy_in_user(&compat_fsqstat->qs_incoredqs, &fsqstat->qs_incoredqs, sizeof(struct compat_fs_quota_stat) - offsetof(struct compat_fs_quota_stat, qs_incoredqs)) || get_user(xdata, &fsqstat->qs_iwarnlimit) || put_user(xdata, &compat_fsqstat->qs_iwarnlimit)) break; ret = 0; break; default: ret = sys_quotactl(cmd, special, id, addr); } return ret; } remove&id=e69e46261063a25c3907bed16a2e9d18b115d1fd'>util
ModeNameSize
-rw-r--r--Build5870logplain
-rwxr-xr-xPERF-VERSION-GEN1010logplain
-rw-r--r--alias.c1471logplain
-rw-r--r--annotate.c44411logplain
-rw-r--r--annotate.h5583logplain
-rw-r--r--auxtrace.c47774logplain
-rw-r--r--auxtrace.h22142logplain
-rw-r--r--block-range.c6948logplain
-rw-r--r--block-range.h1607logplain
-rw-r--r--bpf-loader.c40787logplain
-rw-r--r--bpf-loader.h6215logplain
-rw-r--r--bpf-prologue.c11226logplain
-rw-r--r--bpf-prologue.h847logplain
-rw-r--r--build-id.c19054logplain
-rw-r--r--build-id.h1859logplain
d---------c++184logplain
-rw-r--r--cache.h733logplain
-rw-r--r--call-path.c2893logplain
-rw-r--r--call-path.h2203logplain
-rw-r--r--callchain.c29332logplain
-rw-r--r--callchain.h7881logplain
-rw-r--r--cgroup.c3195logplain
-rw-r--r--cgroup.h359logplain
-rw-r--r--cloexec.c1950logplain
-rw-r--r--cloexec.h251logplain
-rw-r--r--color.c4787logplain
-rw-r--r--color.h1647logplain
-rw-r--r--comm.c2239logplain
-rw-r--r--comm.h561logplain
-rw-r--r--config.c16262logplain
-rw-r--r--config.h2113logplain
-rw-r--r--counts.c1026logplain
-rw-r--r--counts.h790logplain
-rw-r--r--cpumap.c12627logplain
-rw-r--r--cpumap.h1954logplain
-rw-r--r--cs-etm.h2061logplain
-rw-r--r--ctype.c2018logplain
-rw-r--r--data-convert-bt.c36671logplain
-rw-r--r--data-convert-bt.h302logplain
-rw-r--r--data-convert.h141logplain
-rw-r--r--data.c3459logplain
-rw-r--r--data.h1369logplain
-rw-r--r--db-export.c11434logplain
-rw-r--r--db-export.h3816logplain
-rw-r--r--debug.c4417logplain
-rw-r--r--debug.h2023logplain
-rw-r--r--demangle-java.c4219logplain
-rw-r--r--demangle-java.h249logplain
-rw-r--r--demangle-rust.c6602logplain
-rw-r--r--demangle-rust.h170logplain
-rw-r--r--drv_configs.c1834logplain
-rw-r--r--drv_configs.h844logplain
-rw-r--r--dso.c31994logplain
-rw-r--r--dso.h10399logplain
-rw-r--r--dwarf-aux.c33828logplain
-rw-r--r--dwarf-aux.h5101logplain
-rw-r--r--dwarf-regs.c1816logplain
-rw-r--r--env.c1884logplain
-rw-r--r--env.h1268logplain
-rw-r--r--event.c36670logplain
-rw-r--r--event.h15997logplain
-rw-r--r--evlist.c47104logplain
-rw-r--r--evlist.h12584logplain
-rw-r--r--evsel.c63917logplain
-rw-r--r--evsel.h13041logplain
-rw-r--r--evsel_fprintf.c5831logplain
-rw-r--r--find-vdso-map.c581logplain
-rw-r--r--genelf.c11653logplain
-rw-r--r--genelf.h1814logplain
-rw-r--r--genelf_debug.c14374logplain
-rwxr-xr-xgenerate-cmdlist.sh1141logplain
-rw-r--r--group.h122logplain
-rw-r--r--header.c73410logplain
-rw-r--r--header.h4365logplain
-rw-r--r--help-unknown-cmd.c3221logplain