On Wed, 2016-04-20 at 15:46 -0700, Kees Cook wrote: > From: Mimi Zohar <zohar@xxxxxxxxxxxxxxxxxx> > > A string representation of the kernel_read_file_id enumeration is > needed for displaying messages (eg. pr_info, auditing) that can be > used by multiple LSMs and the integrity subsystem. To simplify > keeping the list of strings up to date with the enumeration, this > patch defines two new preprocessing macros named __fid_enumify and > __fid_stringify to create the enumeration and an array of strings. > kernel_read_file_id_str() returns a string based on the enumeration. > > Signed-off-by: Mimi Zohar <zohar@xxxxxxxxxxxxxxxxxx> > [kees: removed removal of my old version, constified pointer values] > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> I got this In file included from /home/andy/prj/linux- topic/include/linux/seq_file.h:10:0, from /home/andy/prj/linux- topic/include/linux/pinctrl/consumer.h:17, from /home/andy/prj/linux- topic/include/linux/pinctrl/devinfo.h:21, from /home/andy/prj/linux- topic/include/linux/device.h:24, from /home/andy/prj/linux- topic/include/linux/dmaengine.h:20, from /home/andy/prj/linux- topic/drivers/dma/dw/core.c:15: /home/andy/prj/linux-topic/include/linux/fs.h:2627:74: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] static inline const char * const kernel_read_file_id_str(enum kernel_read_file_id id) > --- > include/linux/fs.h | 31 +++++++++++++++++++++++++------ > 1 file changed, 25 insertions(+), 6 deletions(-) > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 70e61b58baaf..518716b4834e 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -2590,15 +2590,34 @@ static inline void i_readcount_inc(struct > inode *inode) > #endif > extern int do_pipe_flags(int *, int); > > +#define __kernel_read_file_id(id) \ > + id(UNKNOWN, unknown) \ > + id(FIRMWARE, firmware) \ > + id(MODULE, kernel-module) \ > + id(KEXEC_IMAGE, kexec-image) \ > + id(KEXEC_INITRAMFS, kexec-initramfs) \ > + id(POLICY, security-policy) \ > + id(MAX_ID, ) > + > +#define __fid_enumify(ENUM, dummy) READING_ ## ENUM, > +#define __fid_stringify(dummy, str) #str, > + > enum kernel_read_file_id { > - READING_FIRMWARE = 1, > - READING_MODULE, > - READING_KEXEC_IMAGE, > - READING_KEXEC_INITRAMFS, > - READING_POLICY, > - READING_MAX_ID > + __kernel_read_file_id(__fid_enumify) > +}; > + > +static const char * const kernel_read_file_str[] = { > + __kernel_read_file_id(__fid_stringify) > }; > > +static inline const char * const kernel_read_file_id_str(enum > kernel_read_file_id id) > +{ > + if (id < 0 || id >= READING_MAX_ID) > + return kernel_read_file_str[READING_UNKNOWN]; > + > + return kernel_read_file_str[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); -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html