summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2012-03-07 17:34:38 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-03-08 09:37:10 -0800
commitdd09979346813357200adf71b07003fc0a778089 (patch)
tree017ecb0e5f6aeeab8b127e511c6e12e25081327b
parent3a21138d3f76296ad070a3692d72eb529e7d5d2c (diff)
staging: android: ram_console: honor dmesg_restrict
The Linux kernel has a setting called dmesg_restrict. When true, only processes with CAP_SYSLOG can view the kernel dmesg logs. This helps prevent leaking of kernel information into user space. On Android, it's possible to bypass these restrictions by viewing /proc/last_kmsg. This change makes /proc/last_kmsg require the same permissions as dmesg. CC: Android Kernel Team <kernel-team@android.com> Signed-off-by: Nick Kralevich <nnk@google.com> Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/android/ram_console.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/staging/android/ram_console.c b/drivers/staging/android/ram_console.c
index d956b8441442..b242be246cd8 100644
--- a/drivers/staging/android/ram_console.c
+++ b/drivers/staging/android/ram_console.c
@@ -99,6 +99,9 @@ static ssize_t ram_console_read_old(struct file *file, char __user *buf,
char *str;
int ret;
+ if (dmesg_restrict && !capable(CAP_SYSLOG))
+ return -EPERM;
+
/* Main last_kmsg log */
if (pos < old_log_size) {
count = min(len, (size_t)(old_log_size - pos));