Providing human-readable (and audit-parsable) strings for the READING_* enums is needed by some LSMs.
Signed-off-by: Kees Cook <keesc...@chromium.org> --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html