Branch data Line data Source code
1 : : /*
2 : : * AppArmor security module
3 : : *
4 : : * This file contains AppArmor security identifier (sid) manipulation fns
5 : : *
6 : : * Copyright 2009-2010 Canonical Ltd.
7 : : *
8 : : * This program is free software; you can redistribute it and/or
9 : : * modify it under the terms of the GNU General Public License as
10 : : * published by the Free Software Foundation, version 2 of the
11 : : * License.
12 : : *
13 : : *
14 : : * AppArmor allocates a unique sid for every profile loaded. If a profile
15 : : * is replaced it receives the sid of the profile it is replacing.
16 : : *
17 : : * The sid value of 0 is invalid.
18 : : */
19 : :
20 : : #include <linux/spinlock.h>
21 : : #include <linux/errno.h>
22 : : #include <linux/err.h>
23 : :
24 : : #include "include/sid.h"
25 : :
26 : : /* global counter from which sids are allocated */
27 : : static u32 global_sid;
28 : : static DEFINE_SPINLOCK(sid_lock);
29 : :
30 : : /* TODO FIXME: add sid to profile mapping, and sid recycling */
31 : :
32 : : /**
33 : : * aa_alloc_sid - allocate a new sid for a profile
34 : : */
35 : 0 : u32 aa_alloc_sid(void)
36 : : {
37 : : u32 sid;
38 : :
39 : : /*
40 : : * TODO FIXME: sid recycling - part of profile mapping table
41 : : */
42 : : spin_lock(&sid_lock);
43 : 0 : sid = (++global_sid);
44 : : spin_unlock(&sid_lock);
45 : 0 : return sid;
46 : : }
47 : :
48 : : /**
49 : : * aa_free_sid - free a sid
50 : : * @sid: sid to free
51 : : */
52 : 0 : void aa_free_sid(u32 sid)
53 : : {
54 : : ; /* NOP ATM */
55 : 0 : }
|