diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-14 23:07:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-14 23:07:31 -0400 |
commit | 18240904960a39e582ced8ba8ececb10b8c22dd3 (patch) | |
tree | 90cbad5533c17657969acb97a0371e41923f7f93 /include/linux | |
parent | f86054c24565d09d1997f03192761dabf6b8a9c9 (diff) | |
parent | 8a478905adbb2e09a59644e76f7fe7e0ab644204 (diff) |
Merge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
* 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
SELinux: inline selinux_is_enabled in !CONFIG_SECURITY_SELINUX
KEYS: Fix garbage collector
KEYS: Unlock tasklist when exiting early from keyctl_session_to_parent
CRED: Allow put_cred() to cope with a NULL groups list
SELinux: flush the avc before disabling SELinux
SELinux: seperate avc_cache flushing
Creds: creds->security can be NULL is selinux is disabled
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/cred.h | 13 | ||||
-rw-r--r-- | include/linux/selinux.h | 9 |
2 files changed, 17 insertions, 5 deletions
diff --git a/include/linux/cred.h b/include/linux/cred.h index 24520a539c6f..fb371601a3b4 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/capability.h> | 15 | #include <linux/capability.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/key.h> | 17 | #include <linux/key.h> |
18 | #include <linux/selinux.h> | ||
18 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
19 | 20 | ||
20 | struct user_struct; | 21 | struct user_struct; |
@@ -182,11 +183,13 @@ static inline bool creds_are_invalid(const struct cred *cred) | |||
182 | if (atomic_read(&cred->usage) < atomic_read(&cred->subscribers)) | 183 | if (atomic_read(&cred->usage) < atomic_read(&cred->subscribers)) |
183 | return true; | 184 | return true; |
184 | #ifdef CONFIG_SECURITY_SELINUX | 185 | #ifdef CONFIG_SECURITY_SELINUX |
185 | if ((unsigned long) cred->security < PAGE_SIZE) | 186 | if (selinux_is_enabled()) { |
186 | return true; | 187 | if ((unsigned long) cred->security < PAGE_SIZE) |
187 | if ((*(u32*)cred->security & 0xffffff00) == | 188 | return true; |
188 | (POISON_FREE << 24 | POISON_FREE << 16 | POISON_FREE << 8)) | 189 | if ((*(u32 *)cred->security & 0xffffff00) == |
189 | return true; | 190 | (POISON_FREE << 24 | POISON_FREE << 16 | POISON_FREE << 8)) |
191 | return true; | ||
192 | } | ||
190 | #endif | 193 | #endif |
191 | return false; | 194 | return false; |
192 | } | 195 | } |
diff --git a/include/linux/selinux.h b/include/linux/selinux.h index 20f965d4b041..82e0f26a1299 100644 --- a/include/linux/selinux.h +++ b/include/linux/selinux.h | |||
@@ -61,6 +61,11 @@ void selinux_secmark_refcount_inc(void); | |||
61 | * existing SECMARK targets has been removed/flushed. | 61 | * existing SECMARK targets has been removed/flushed. |
62 | */ | 62 | */ |
63 | void selinux_secmark_refcount_dec(void); | 63 | void selinux_secmark_refcount_dec(void); |
64 | |||
65 | /** | ||
66 | * selinux_is_enabled - is SELinux enabled? | ||
67 | */ | ||
68 | bool selinux_is_enabled(void); | ||
64 | #else | 69 | #else |
65 | 70 | ||
66 | static inline int selinux_string_to_sid(const char *str, u32 *sid) | 71 | static inline int selinux_string_to_sid(const char *str, u32 *sid) |
@@ -84,6 +89,10 @@ static inline void selinux_secmark_refcount_dec(void) | |||
84 | return; | 89 | return; |
85 | } | 90 | } |
86 | 91 | ||
92 | static inline bool selinux_is_enabled(void) | ||
93 | { | ||
94 | return false; | ||
95 | } | ||
87 | #endif /* CONFIG_SECURITY_SELINUX */ | 96 | #endif /* CONFIG_SECURITY_SELINUX */ |
88 | 97 | ||
89 | #endif /* _LINUX_SELINUX_H */ | 98 | #endif /* _LINUX_SELINUX_H */ |