ea38f2f
From 85539b332c79fbce1b9f371ff1a2a8d489e65110 Mon Sep 17 00:00:00 2001
6a91557
From: Matthew Garrett <matthew.garrett@nebula.com>
6a91557
Date: Fri, 8 Feb 2013 11:12:13 -0800
18c8249
Subject: [PATCH 09/20] x86: Restrict MSR access when module loading is
18c8249
 restricted
6a91557
6a91557
Writing to MSRs should not be allowed if module loading is restricted,
6a91557
since it could lead to execution of arbitrary code in kernel mode. Based
6a91557
on a patch by Kees Cook.
6a91557
6a91557
Cc: Kees Cook <keescook@chromium.org>
6a91557
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
6a91557
---
6a91557
 arch/x86/kernel/msr.c | 7 +++++++
6a91557
 1 file changed, 7 insertions(+)
6a91557
6a91557
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
ea38f2f
index 7f3550acde1b..963ba4011923 100644
6a91557
--- a/arch/x86/kernel/msr.c
6a91557
+++ b/arch/x86/kernel/msr.c
ea38f2f
@@ -83,6 +83,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
6a91557
 	int err = 0;
6a91557
 	ssize_t bytes = 0;
6a91557
 
6a91557
+	if (secure_modules())
6a91557
+		return -EPERM;
6a91557
+
6a91557
 	if (count % 8)
6a91557
 		return -EINVAL;	/* Invalid chunk size */
6a91557
 
ea38f2f
@@ -130,6 +133,10 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg)
6a91557
 			err = -EBADF;
6a91557
 			break;
6a91557
 		}
6a91557
+		if (secure_modules()) {
6a91557
+			err = -EPERM;
6a91557
+			break;
6a91557
+		}
6a91557
 		if (copy_from_user(&regs, uregs, sizeof regs)) {
6a91557
 			err = -EFAULT;
6a91557
 			break;
18c8249
-- 
ea38f2f
2.9.3
18c8249