2013-03-18 14:25:49

by James Morris

[permalink] [raw]
Subject: [GIT] SELinux xfrm kmalloc fix

Please apply.

The following changes since commit a937536b868b8369b98967929045f1df54234323:

Linux 3.9-rc3 (2013-03-17 15:59:32 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git for-linus

Dan Carpenter (1):
selinux: use GFP_ATOMIC under spin_lock

security/selinux/xfrm.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

commit 4502403dcf8f5c76abd4dbab8726c8e4ecb5cd34
Author: Dan Carpenter <[email protected]>
Date: Sat Mar 16 12:48:11 2013 +0300

selinux: use GFP_ATOMIC under spin_lock

The call tree here is:

sk_clone_lock() <- takes bh_lock_sock(newsk);
xfrm_sk_clone_policy()
__xfrm_sk_clone_policy()
clone_policy() <- uses GFP_ATOMIC for allocations
security_xfrm_policy_clone()
security_ops->xfrm_policy_clone_security()
selinux_xfrm_policy_clone()

Signed-off-by: Dan Carpenter <[email protected]>
Cc: [email protected]
Signed-off-by: James Morris <[email protected]>

diff --git a/security/selinux/xfrm.c b/security/selinux/xfrm.c
index 48665ec..8ab2951 100644
--- a/security/selinux/xfrm.c
+++ b/security/selinux/xfrm.c
@@ -310,7 +310,7 @@ int selinux_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx,

if (old_ctx) {
new_ctx = kmalloc(sizeof(*old_ctx) + old_ctx->ctx_len,
- GFP_KERNEL);
+ GFP_ATOMIC);
if (!new_ctx)
return -ENOMEM;