162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * AppArmor security module
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * This file contains AppArmor resource limits function definitions.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 1998-2008 Novell/SUSE
862306a36Sopenharmony_ci * Copyright 2009-2010 Canonical Ltd.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef __AA_RESOURCE_H
1262306a36Sopenharmony_ci#define __AA_RESOURCE_H
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <linux/resource.h>
1562306a36Sopenharmony_ci#include <linux/sched.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#include "apparmorfs.h"
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistruct aa_profile;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci/* struct aa_rlimit - rlimit settings for the profile
2262306a36Sopenharmony_ci * @mask: which hard limits to set
2362306a36Sopenharmony_ci * @limits: rlimit values that override task limits
2462306a36Sopenharmony_ci *
2562306a36Sopenharmony_ci * AppArmor rlimits are used to set confined task rlimits.  Only the
2662306a36Sopenharmony_ci * limits specified in @mask will be controlled by apparmor.
2762306a36Sopenharmony_ci */
2862306a36Sopenharmony_cistruct aa_rlimit {
2962306a36Sopenharmony_ci	unsigned int mask;
3062306a36Sopenharmony_ci	struct rlimit limits[RLIM_NLIMITS];
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciextern struct aa_sfs_entry aa_sfs_entry_rlimit[];
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciint aa_map_resource(int resource);
3662306a36Sopenharmony_ciint aa_task_setrlimit(const struct cred *subj_cred, struct aa_label *label,
3762306a36Sopenharmony_ci		      struct task_struct *task,
3862306a36Sopenharmony_ci		      unsigned int resource, struct rlimit *new_rlim);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_civoid __aa_transition_rlimits(struct aa_label *old, struct aa_label *new);
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cistatic inline void aa_free_rlimit_rules(struct aa_rlimit *rlims)
4362306a36Sopenharmony_ci{
4462306a36Sopenharmony_ci	/* NOP */
4562306a36Sopenharmony_ci}
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#endif /* __AA_RESOURCE_H */
48