|
@@ -27,8 +27,6 @@ void tomoyo_warn_oom(const char *function)
|
|
|
panic("MAC Initialization failed.\n");
|
|
|
}
|
|
|
|
|
|
-/* Lock for protecting tomoyo_memory_used. */
|
|
|
-static DEFINE_SPINLOCK(tomoyo_policy_memory_lock);
|
|
|
/* Memoy currently used by policy/audit log/query. */
|
|
|
unsigned int tomoyo_memory_used[TOMOYO_MAX_MEMORY_STAT];
|
|
|
/* Memory quota for "policy"/"audit log"/"query". */
|
|
@@ -42,22 +40,19 @@ unsigned int tomoyo_memory_quota[TOMOYO_MAX_MEMORY_STAT];
|
|
|
* Returns true on success, false otherwise.
|
|
|
*
|
|
|
* Returns true if @ptr is not NULL and quota not exceeded, false otherwise.
|
|
|
+ *
|
|
|
+ * Caller holds tomoyo_policy_lock mutex.
|
|
|
*/
|
|
|
bool tomoyo_memory_ok(void *ptr)
|
|
|
{
|
|
|
if (ptr) {
|
|
|
const size_t s = ksize(ptr);
|
|
|
- bool result;
|
|
|
- spin_lock(&tomoyo_policy_memory_lock);
|
|
|
tomoyo_memory_used[TOMOYO_MEMORY_POLICY] += s;
|
|
|
- result = !tomoyo_memory_quota[TOMOYO_MEMORY_POLICY] ||
|
|
|
- tomoyo_memory_used[TOMOYO_MEMORY_POLICY] <=
|
|
|
- tomoyo_memory_quota[TOMOYO_MEMORY_POLICY];
|
|
|
- if (!result)
|
|
|
- tomoyo_memory_used[TOMOYO_MEMORY_POLICY] -= s;
|
|
|
- spin_unlock(&tomoyo_policy_memory_lock);
|
|
|
- if (result)
|
|
|
+ if (!tomoyo_memory_quota[TOMOYO_MEMORY_POLICY] ||
|
|
|
+ tomoyo_memory_used[TOMOYO_MEMORY_POLICY] <=
|
|
|
+ tomoyo_memory_quota[TOMOYO_MEMORY_POLICY])
|
|
|
return true;
|
|
|
+ tomoyo_memory_used[TOMOYO_MEMORY_POLICY] -= s;
|
|
|
}
|
|
|
tomoyo_warn_oom(__func__);
|
|
|
return false;
|
|
@@ -71,6 +66,8 @@ bool tomoyo_memory_ok(void *ptr)
|
|
|
*
|
|
|
* Returns pointer to allocated memory on success, NULL otherwise.
|
|
|
* @data is zero-cleared on success.
|
|
|
+ *
|
|
|
+ * Caller holds tomoyo_policy_lock mutex.
|
|
|
*/
|
|
|
void *tomoyo_commit_ok(void *data, const unsigned int size)
|
|
|
{
|
|
@@ -84,20 +81,6 @@ void *tomoyo_commit_ok(void *data, const unsigned int size)
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * tomoyo_memory_free - Free memory for elements.
|
|
|
- *
|
|
|
- * @ptr: Pointer to allocated memory.
|
|
|
- */
|
|
|
-void tomoyo_memory_free(void *ptr)
|
|
|
-{
|
|
|
- size_t s = ksize(ptr);
|
|
|
- spin_lock(&tomoyo_policy_memory_lock);
|
|
|
- tomoyo_memory_used[TOMOYO_MEMORY_POLICY] -= s;
|
|
|
- spin_unlock(&tomoyo_policy_memory_lock);
|
|
|
- kfree(ptr);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* tomoyo_get_group - Allocate memory for "struct tomoyo_path_group"/"struct tomoyo_number_group".
|
|
|
*
|