Commit | Line | Data |
---|---|---|
376bd9cb DG |
1 | /* |
2 | * SELinux services exported to the rest of the kernel. | |
3 | * | |
4 | * Author: James Morris <jmorris@redhat.com> | |
5 | * | |
6 | * Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com> | |
7 | * Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> | |
e7c34970 | 8 | * Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com> |
376bd9cb DG |
9 | * |
10 | * This program is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License version 2, | |
12 | * as published by the Free Software Foundation. | |
13 | */ | |
14 | #include <linux/types.h> | |
15 | #include <linux/kernel.h> | |
16 | #include <linux/module.h> | |
17 | #include <linux/selinux.h> | |
1b50eed9 | 18 | #include <linux/fs.h> |
9c7aa6aa | 19 | #include <linux/ipc.h> |
d621d35e | 20 | #include <asm/atomic.h> |
376bd9cb DG |
21 | |
22 | #include "security.h" | |
23 | #include "objsec.h" | |
24 | ||
d621d35e PM |
25 | /* SECMARK reference count */ |
26 | extern atomic_t selinux_secmark_refcount; | |
27 | ||
c749b29f JM |
28 | int selinux_string_to_sid(char *str, u32 *sid) |
29 | { | |
30 | if (selinux_enabled) | |
31 | return security_context_to_sid(str, strlen(str), sid); | |
32 | else { | |
33 | *sid = 0; | |
34 | return 0; | |
35 | } | |
36 | } | |
37 | EXPORT_SYMBOL_GPL(selinux_string_to_sid); | |
38 | ||
d621d35e | 39 | int selinux_secmark_relabel_packet_permission(u32 sid) |
c749b29f JM |
40 | { |
41 | if (selinux_enabled) { | |
86a264ab DH |
42 | const struct task_security_struct *__tsec; |
43 | u32 tsid; | |
c749b29f | 44 | |
86a264ab DH |
45 | __tsec = current_security(); |
46 | tsid = __tsec->sid; | |
47 | ||
48 | return avc_has_perm(tsid, sid, SECCLASS_PACKET, | |
c749b29f JM |
49 | PACKET__RELABELTO, NULL); |
50 | } | |
51 | return 0; | |
52 | } | |
d621d35e PM |
53 | EXPORT_SYMBOL_GPL(selinux_secmark_relabel_packet_permission); |
54 | ||
55 | void selinux_secmark_refcount_inc(void) | |
56 | { | |
57 | atomic_inc(&selinux_secmark_refcount); | |
58 | } | |
59 | EXPORT_SYMBOL_GPL(selinux_secmark_refcount_inc); | |
60 | ||
61 | void selinux_secmark_refcount_dec(void) | |
62 | { | |
63 | atomic_dec(&selinux_secmark_refcount); | |
64 | } | |
65 | EXPORT_SYMBOL_GPL(selinux_secmark_refcount_dec); |