From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965420AbcDLQzx (ORCPT ); Tue, 12 Apr 2016 12:55:53 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:36314 "EHLO mail-pa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933728AbcDLQyy (ORCPT ); Tue, 12 Apr 2016 12:54:54 -0400 From: Kees Cook To: James Morris Cc: Kees Cook , Joe Perches , Mimi Zohar , Andy Shevchenko , Andrew Morton , "Serge E. Hallyn" , Jonathan Corbet , Kalle Valo , Mauro Carvalho Chehab , Guenter Roeck , Jiri Slaby , Paul Moore , Stephen Smalley , Casey Schaufler , Andreas Gruenbacher , Rasmus Villemoes , Ulf Hansson , Vitaly Kuznetsov , linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Subject: [PATCH v4 5/6] fs: provide function to report enum strings Date: Tue, 12 Apr 2016 09:54:44 -0700 Message-Id: <1460480085-32263-6-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.6.3 In-Reply-To: <1460480085-32263-1-git-send-email-keescook@chromium.org> References: <1460480085-32263-1-git-send-email-keescook@chromium.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Providing human-readable (and audit-parsable) strings for the READING_* enums is needed by some LSMs. Signed-off-by: Kees Cook --- fs/exec.c | 19 +++++++++++++++++++ include/linux/fs.h | 1 + 2 files changed, 20 insertions(+) diff --git a/fs/exec.c b/fs/exec.c index c4010b8207a1..05e71b6c0ef0 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -819,6 +819,25 @@ struct file *open_exec(const char *name) } EXPORT_SYMBOL(open_exec); +const char *kernel_read_file_id_str(enum kernel_read_file_id id) +{ + switch (id) { + case READING_FIRMWARE: + return "firmware"; + case READING_MODULE: + return "kernel-module"; + case READING_KEXEC_IMAGE: + return "kexec-image"; + case READING_KEXEC_INITRAMFS: + return "kexec-initramfs"; + case READING_POLICY: + return "security-policy"; + default: + return "unknown"; + } +} +EXPORT_SYMBOL(kernel_read_file_id_str); + int kernel_read(struct file *file, loff_t offset, char *addr, unsigned long count) { diff --git a/include/linux/fs.h b/include/linux/fs.h index 304991a80e23..596b403d5a28 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2589,6 +2589,7 @@ enum kernel_read_file_id { READING_MAX_ID }; +extern const char *kernel_read_file_id_str(enum kernel_read_file_id id); extern int kernel_read(struct file *, loff_t, char *, unsigned long); extern int kernel_read_file(struct file *, void **, loff_t *, loff_t, enum kernel_read_file_id); -- 2.6.3