On Thu, Aug 15, 2013 at 9:20 AM, Zach Levis <zach@xxxxxxxxxxxxxxx> wrote: > Adding the name field helps when printing error messages referring to > specific binfmts > > Signed-off-by: Zach Levis <zach@xxxxxxxxxxxxxxx> > --- > fs/binfmt_aout.c | 1 + > fs/binfmt_elf.c | 5 +++++ > fs/binfmt_elf_fdpic.c | 1 + > fs/binfmt_em86.c | 1 + > fs/binfmt_flat.c | 1 + > fs/binfmt_misc.c | 1 + > fs/binfmt_script.c | 1 + > fs/binfmt_som.c | 1 + > fs/compat_binfmt_elf.c | 5 +++++ > include/linux/binfmts.h | 1 + > 10 files changed, 18 insertions(+), 0 deletions(-) > > diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c > index bce8769..f6bed04 100644 > --- a/fs/binfmt_aout.c > +++ b/fs/binfmt_aout.c > @@ -115,6 +115,7 @@ end_coredump: > #endif > > static struct linux_binfmt aout_format = { > + .name = "a.out", > .module = THIS_MODULE, > .load_binary = load_aout_binary, > .load_shlib = load_aout_library, > diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c > index f8a0b0e..864208b 100644 > --- a/fs/binfmt_elf.c > +++ b/fs/binfmt_elf.c > @@ -74,7 +74,12 @@ static int elf_core_dump(struct coredump_params *cprm); > #define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1)) > #define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1)) > > +#ifndef ELF_FORMAT_NAME > +#define ELF_FORMAT_NAME "ELF" > +#endif > + > static struct linux_binfmt elf_format = { > + .name = ELF_FORMAT_NAME, > .module = THIS_MODULE, > .load_binary = load_elf_binary, > .load_shlib = load_elf_library, > diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c > index c166f32..6be4448 100644 > --- a/fs/binfmt_elf_fdpic.c > +++ b/fs/binfmt_elf_fdpic.c > @@ -81,6 +81,7 @@ static int elf_fdpic_core_dump(struct coredump_params *cprm); > #endif > > static struct linux_binfmt elf_fdpic_format = { > + .name = "FDPIC ELF", > .module = THIS_MODULE, > .load_binary = load_elf_fdpic_binary, > #ifdef CONFIG_ELF_CORE > diff --git a/fs/binfmt_em86.c b/fs/binfmt_em86.c > index 037a3e2..8404cdd 100644 > --- a/fs/binfmt_em86.c > +++ b/fs/binfmt_em86.c > @@ -93,6 +93,7 @@ static int load_em86(struct linux_binprm *bprm) > } > > static struct linux_binfmt em86_format = { > + .name = "em86", > .module = THIS_MODULE, > .load_binary = load_em86, > }; > diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c > index d50bbe5..a7641e1 100644 > --- a/fs/binfmt_flat.c > +++ b/fs/binfmt_flat.c > @@ -92,6 +92,7 @@ static int load_flat_binary(struct linux_binprm *); > static int flat_core_dump(struct coredump_params *cprm); > > static struct linux_binfmt flat_format = { > + .name = "flat", > .module = THIS_MODULE, > .load_binary = load_flat_binary, > .core_dump = flat_core_dump, > diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c > index 1c740e1..d74afc0 100644 > --- a/fs/binfmt_misc.c > +++ b/fs/binfmt_misc.c > @@ -694,6 +694,7 @@ static struct dentry *bm_mount(struct file_system_type *fs_type, > } > > static struct linux_binfmt misc_format = { > + .name = "misc", > .module = THIS_MODULE, > .load_binary = load_misc_binary, > }; > diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c > index 5027a3e..53f3c17 100644 > --- a/fs/binfmt_script.c > +++ b/fs/binfmt_script.c > @@ -99,6 +99,7 @@ static int load_script(struct linux_binprm *bprm) > } > > static struct linux_binfmt script_format = { > + .name = "script", > .module = THIS_MODULE, > .load_binary = load_script, > }; > diff --git a/fs/binfmt_som.c b/fs/binfmt_som.c > index 4e00ed6..1c3ccc5 100644 > --- a/fs/binfmt_som.c > +++ b/fs/binfmt_som.c > @@ -53,6 +53,7 @@ static int som_core_dump(struct coredump_params *cprm); > #define SOM_PAGEALIGN(_v) (((_v) + SOM_PAGESIZE - 1) & ~(SOM_PAGESIZE - 1)) > > static struct linux_binfmt som_format = { > + .name = "SOM", > .module = THIS_MODULE, > .load_binary = load_som_binary, > .load_shlib = load_som_library, > diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c > index a81147e..96330f3 100644 > --- a/fs/compat_binfmt_elf.c > +++ b/fs/compat_binfmt_elf.c > @@ -131,9 +131,14 @@ static void cputime_to_compat_timeval(const cputime_t cputime, > * might make some debugging less confusing not to duplicate them. > */ > #define elf_format compat_elf_format > +#define elf_format_name compat_elf_format_name This function doesn't exist yet, so I would suggest either moving this change to a later patch, or moving the function and its callers forward to this patch. -Kees > #define init_elf_binfmt init_compat_elf_binfmt > #define exit_elf_binfmt exit_compat_elf_binfmt > > +#ifndef ELF_FORMAT_NAME > +#define ELF_FORMAT_NAME "ELF compat" > +#endif > + > /* > * We share all the actual code with the native (64-bit) version. > */ > diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h > index 70cf138..402a74a 100644 > --- a/include/linux/binfmts.h > +++ b/include/linux/binfmts.h > @@ -70,6 +70,7 @@ struct coredump_params { > struct linux_binfmt { > struct list_head lh; > struct module *module; > + const char *name; > int (*load_binary)(struct linux_binprm *); > int (*load_shlib)(struct file *); > int (*core_dump)(struct coredump_params *cprm); > -- > 1.7.1 > -- Kees Cook Chrome OS Security -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html