Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754258AbcDGAVO (ORCPT ); Wed, 6 Apr 2016 20:21:14 -0400 Received: from mail-pf0-f174.google.com ([209.85.192.174]:35286 "EHLO mail-pf0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753136AbcDGAUv (ORCPT ); Wed, 6 Apr 2016 20:20:51 -0400 From: Kees Cook To: James Morris Cc: Kees Cook , Andrew Morton , Joe Perches , Mimi Zohar , Andy Shevchenko , "Serge E. Hallyn" , 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 Subject: [PATCH v3 5/6] fs: provide function to report enum strings Date: Wed, 6 Apr 2016 17:20:36 -0700 Message-Id: <1459988437-3429-6-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.6.3 In-Reply-To: <1459988437-3429-1-git-send-email-keescook@chromium.org> References: <1459988437-3429-1-git-send-email-keescook@chromium.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1503 Lines: 56 Providing human-readable (and audit-parsable) strings for the READING_* enums is needed by some LSMs. Signed-off-by: Kees Cook --- v3: - add general use function, zohar --- 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