Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 04:22:00PM +0100, Artem Savkov wrote: > On Thu, Nov 29, 2018 at 08:23:12AM -0600, Josh Poimboeuf wrote: > > On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > > > In case when the number of entries in the section header table is larger > > > then or equal to SHN_LORESERVE the size of the table is held in the > > > sh_size > > > member of the initial entry in section header table instead of e_shnum. > > > Same with the string table index which is located in sh_link instead of > > > e_shstrndx. > > > > > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > > > bzImage build fails with "String table index out of bounds" error. > > > > > > Signed-off-by: Artem Savkov > > > --- > > > arch/x86/tools/relocs.c | 58 + > > > 1 file changed, 41 insertions(+), 17 deletions(-) > > > > > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > > > index b629f6992d9f..5275ea0a0d13 100644 > > > --- a/arch/x86/tools/relocs.c > > > +++ b/arch/x86/tools/relocs.c > > > @@ -11,7 +11,9 @@ > > > #define Elf_Shdr ElfW(Shdr) > > > #define Elf_Sym ElfW(Sym) > > > > > > -static Elf_Ehdr ehdr; > > > +static Elf_Ehdr ehdr; > > > > I think there's a tab missing here, it doesn't line up with the other > > variables. > > This seems to be a vim bug. It aligns perfectly in > cat/less/lore.kernel.org which all seem to use tabstop=8 by default, but > it does not align in vim, but it does align with tabstop=7 in vim. Are you looking at the patch? Or the file itself? "less arch/x86/tools/relocs.c" shows the same issue. -- Josh
Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 04:22:00PM +0100, Artem Savkov wrote: > On Thu, Nov 29, 2018 at 08:23:12AM -0600, Josh Poimboeuf wrote: > > On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > > > In case when the number of entries in the section header table is larger > > > then or equal to SHN_LORESERVE the size of the table is held in the > > > sh_size > > > member of the initial entry in section header table instead of e_shnum. > > > Same with the string table index which is located in sh_link instead of > > > e_shstrndx. > > > > > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > > > bzImage build fails with "String table index out of bounds" error. > > > > > > Signed-off-by: Artem Savkov > > > --- > > > arch/x86/tools/relocs.c | 58 + > > > 1 file changed, 41 insertions(+), 17 deletions(-) > > > > > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > > > index b629f6992d9f..5275ea0a0d13 100644 > > > --- a/arch/x86/tools/relocs.c > > > +++ b/arch/x86/tools/relocs.c > > > @@ -11,7 +11,9 @@ > > > #define Elf_Shdr ElfW(Shdr) > > > #define Elf_Sym ElfW(Sym) > > > > > > -static Elf_Ehdr ehdr; > > > +static Elf_Ehdr ehdr; > > > > I think there's a tab missing here, it doesn't line up with the other > > variables. > > This seems to be a vim bug. It aligns perfectly in > cat/less/lore.kernel.org which all seem to use tabstop=8 by default, but > it does not align in vim, but it does align with tabstop=7 in vim. Are you looking at the patch? Or the file itself? "less arch/x86/tools/relocs.c" shows the same issue. -- Josh
Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 08:23:12AM -0600, Josh Poimboeuf wrote: > On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > > In case when the number of entries in the section header table is larger > > then or equal to SHN_LORESERVE the size of the table is held in the sh_size > > member of the initial entry in section header table instead of e_shnum. > > Same with the string table index which is located in sh_link instead of > > e_shstrndx. > > > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > > bzImage build fails with "String table index out of bounds" error. > > > > Signed-off-by: Artem Savkov > > --- > > arch/x86/tools/relocs.c | 58 + > > 1 file changed, 41 insertions(+), 17 deletions(-) > > > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > > index b629f6992d9f..5275ea0a0d13 100644 > > --- a/arch/x86/tools/relocs.c > > +++ b/arch/x86/tools/relocs.c > > @@ -11,7 +11,9 @@ > > #define Elf_Shdr ElfW(Shdr) > > #define Elf_SymElfW(Sym) > > > > -static Elf_Ehdr ehdr; > > +static Elf_Ehdrehdr; > > I think there's a tab missing here, it doesn't line up with the other > variables. This seems to be a vim bug. It aligns perfectly in cat/less/lore.kernel.org which all seem to use tabstop=8 by default, but it does not align in vim, but it does align with tabstop=7 in vim. -- Artem
Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 08:23:12AM -0600, Josh Poimboeuf wrote: > On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > > In case when the number of entries in the section header table is larger > > then or equal to SHN_LORESERVE the size of the table is held in the sh_size > > member of the initial entry in section header table instead of e_shnum. > > Same with the string table index which is located in sh_link instead of > > e_shstrndx. > > > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > > bzImage build fails with "String table index out of bounds" error. > > > > Signed-off-by: Artem Savkov > > --- > > arch/x86/tools/relocs.c | 58 + > > 1 file changed, 41 insertions(+), 17 deletions(-) > > > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > > index b629f6992d9f..5275ea0a0d13 100644 > > --- a/arch/x86/tools/relocs.c > > +++ b/arch/x86/tools/relocs.c > > @@ -11,7 +11,9 @@ > > #define Elf_Shdr ElfW(Shdr) > > #define Elf_SymElfW(Sym) > > > > -static Elf_Ehdr ehdr; > > +static Elf_Ehdrehdr; > > I think there's a tab missing here, it doesn't line up with the other > variables. This seems to be a vim bug. It aligns perfectly in cat/less/lore.kernel.org which all seem to use tabstop=8 by default, but it does not align in vim, but it does align with tabstop=7 in vim. -- Artem
Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > In case when the number of entries in the section header table is larger > then or equal to SHN_LORESERVE the size of the table is held in the sh_size > member of the initial entry in section header table instead of e_shnum. > Same with the string table index which is located in sh_link instead of > e_shstrndx. > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > bzImage build fails with "String table index out of bounds" error. > > Signed-off-by: Artem Savkov > --- > arch/x86/tools/relocs.c | 58 + > 1 file changed, 41 insertions(+), 17 deletions(-) > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > index b629f6992d9f..5275ea0a0d13 100644 > --- a/arch/x86/tools/relocs.c > +++ b/arch/x86/tools/relocs.c > @@ -11,7 +11,9 @@ > #define Elf_Shdr ElfW(Shdr) > #define Elf_Sym ElfW(Sym) > > -static Elf_Ehdr ehdr; > +static Elf_Ehdr ehdr; I think there's a tab missing here, it doesn't line up with the other variables. > +static unsigned long shnum; > +static unsigned int shstrndx; Otherwise the patch looks good to me. Reviewed-by: Josh Poimboeuf -- Josh
Re: [PATCH] x86/tools/relocs: fix big section header tables
On Thu, Nov 29, 2018 at 02:51:33PM +0100, Artem Savkov wrote: > In case when the number of entries in the section header table is larger > then or equal to SHN_LORESERVE the size of the table is held in the sh_size > member of the initial entry in section header table instead of e_shnum. > Same with the string table index which is located in sh_link instead of > e_shstrndx. > > This case is easily reproducible with KCFLAGS="-ffunction-sections", > bzImage build fails with "String table index out of bounds" error. > > Signed-off-by: Artem Savkov > --- > arch/x86/tools/relocs.c | 58 + > 1 file changed, 41 insertions(+), 17 deletions(-) > > diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c > index b629f6992d9f..5275ea0a0d13 100644 > --- a/arch/x86/tools/relocs.c > +++ b/arch/x86/tools/relocs.c > @@ -11,7 +11,9 @@ > #define Elf_Shdr ElfW(Shdr) > #define Elf_Sym ElfW(Sym) > > -static Elf_Ehdr ehdr; > +static Elf_Ehdr ehdr; I think there's a tab missing here, it doesn't line up with the other variables. > +static unsigned long shnum; > +static unsigned int shstrndx; Otherwise the patch looks good to me. Reviewed-by: Josh Poimboeuf -- Josh