cregit-Linux how code gets into the kernel

Release 4.10 fs/quota/kqid.c

Directory: fs/quota
#include <linux/fs.h>
#include <linux/quota.h>
#include <linux/export.h>

/**
 *      qid_eq - Test to see if to kquid values are the same
 *      @left: A qid value
 *      @right: Another quid value
 *
 *      Return true if the two qid values are equal and false otherwise.
 */

bool qid_eq(struct kqid left, struct kqid right) { if (left.type != right.type) return false; switch(left.type) { case USRQUOTA: return uid_eq(left.uid, right.uid); case GRPQUOTA: return gid_eq(left.gid, right.gid); case PRJQUOTA: return projid_eq(left.projid, right.projid); default: BUG(); } }

Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman83100.00%1100.00%
Total83100.00%1100.00%

EXPORT_SYMBOL(qid_eq); /** * qid_lt - Test to see if one qid value is less than another * @left: The possibly lesser qid value * @right: The possibly greater qid value * * Return true if left is less than right and false otherwise. */
bool qid_lt(struct kqid left, struct kqid right) { if (left.type < right.type) return true; if (left.type > right.type) return false; switch (left.type) { case USRQUOTA: return uid_lt(left.uid, right.uid); case GRPQUOTA: return gid_lt(left.gid, right.gid); case PRJQUOTA: return projid_lt(left.projid, right.projid); default: BUG(); } }

Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman96100.00%1100.00%
Total96100.00%1100.00%

EXPORT_SYMBOL(qid_lt); /** * from_kqid - Create a qid from a kqid user-namespace pair. * @targ: The user namespace we want a qid in. * @kqid: The kernel internal quota identifier to start with. * * Map @kqid into the user-namespace specified by @targ and * return the resulting qid. * * There is always a mapping into the initial user_namespace. * * If @kqid has no mapping in @targ (qid_t)-1 is returned. */
qid_t from_kqid(struct user_namespace *targ, struct kqid kqid) { switch (kqid.type) { case USRQUOTA: return from_kuid(targ, kqid.uid); case GRPQUOTA: return from_kgid(targ, kqid.gid); case PRJQUOTA: return from_kprojid(targ, kqid.projid); default: BUG(); } }

Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman65100.00%1100.00%
Total65100.00%1100.00%

EXPORT_SYMBOL(from_kqid); /** * from_kqid_munged - Create a qid from a kqid user-namespace pair. * @targ: The user namespace we want a qid in. * @kqid: The kernel internal quota identifier to start with. * * Map @kqid into the user-namespace specified by @targ and * return the resulting qid. * * There is always a mapping into the initial user_namespace. * * Unlike from_kqid from_kqid_munged never fails and always * returns a valid projid. This makes from_kqid_munged * appropriate for use in places where failing to provide * a qid_t is not a good option. * * If @kqid has no mapping in @targ the kqid.type specific * overflow identifier is returned. */
qid_t from_kqid_munged(struct user_namespace *targ, struct kqid kqid) { switch (kqid.type) { case USRQUOTA: return from_kuid_munged(targ, kqid.uid); case GRPQUOTA: return from_kgid_munged(targ, kqid.gid); case PRJQUOTA: return from_kprojid_munged(targ, kqid.projid); default: BUG(); } }

Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman65100.00%1100.00%
Total65100.00%1100.00%

EXPORT_SYMBOL(from_kqid_munged); /** * qid_valid - Report if a valid value is stored in a kqid. * @qid: The kernel internal quota identifier to test. */
bool qid_valid(struct kqid qid) { switch (qid.type) { case USRQUOTA: return uid_valid(qid.uid); case GRPQUOTA: return gid_valid(qid.gid); case PRJQUOTA: return projid_valid(qid.projid); default: BUG(); } }

Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman54100.00%1100.00%
Total54100.00%1100.00%

EXPORT_SYMBOL(qid_valid);

Overall Contributors

PersonTokensPropCommitsCommitProp
eric w. biedermaneric w. biederman40199.75%150.00%
fabian frederickfabian frederick10.25%150.00%
Total402100.00%2100.00%
Directory: fs/quota
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.