Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752207AbcDUNZd (ORCPT ); Thu, 21 Apr 2016 09:25:33 -0400 Received: from mga14.intel.com ([192.55.52.115]:38398 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751848AbcDUNZb (ORCPT ); Thu, 21 Apr 2016 09:25:31 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,512,1455004800"; d="scan'208";a="689915332" Message-ID: <1461245188.6620.316.camel@linux.intel.com> Subject: Re: [PATCH 5/6] fs: define a string representation of the kernel_read_file_id enumeration From: Andy Shevchenko To: Kees Cook , James Morris Cc: Mimi Zohar , Joe Perches , 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 Date: Thu, 21 Apr 2016 16:26:28 +0300 In-Reply-To: <1461192388-13900-6-git-send-email-keescook@chromium.org> References: <1461192388-13900-1-git-send-email-keescook@chromium.org> <1461192388-13900-6-git-send-email-keescook@chromium.org> Organization: Intel Finland Oy Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.18.5.1-1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3191 Lines: 90 On Wed, 2016-04-20 at 15:46 -0700, Kees Cook wrote: > From: Mimi Zohar > > 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 > [kees: removed removal of my old version, constified pointer values] > Signed-off-by: Kees Cook 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 Intel Finland Oy