include/uapi/linux/elf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
This is very theoretical compile failure:
ELF_ST_TYPE(st_info = A)
Cast will bind first and st_info will stop being lvalue:
error: lvalue required as left operand of assignment
Given that the only use of this macro is
ELF_ST_TYPE(sym->st_info)
where st_info is "unsigned char" I've decided to remove cast especially
given that companion macro ELF_ST_BIND doesn't use cast.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
include/uapi/linux/elf.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/include/uapi/linux/elf.h
+++ b/include/uapi/linux/elf.h
@@ -134,7 +134,7 @@ typedef __s64 Elf64_Sxword;
#define STT_TLS 6
#define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
On Fri, Apr 29, 2022 at 05:50:03PM +0300, Alexey Dobriyan wrote: > This is very theoretical compile failure: > > ELF_ST_TYPE(st_info = A) > > Cast will bind first and st_info will stop being lvalue: > > error: lvalue required as left operand of assignment > > Given that the only use of this macro is > > ELF_ST_TYPE(sym->st_info) > > where st_info is "unsigned char" I've decided to remove cast especially > given that companion macro ELF_ST_BIND doesn't use cast. > > Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> > --- > > include/uapi/linux/elf.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) It looks like akpm already pulled this, so: Acked-by: Kees Cook <keescook@chromium.org> Please keep Eric & I CCed on ELF changes; there's a MAINTAINERS entry now... -Kees -- Kees Cook
On Fri, Apr 29, 2022 at 10:25:23AM -0700, Kees Cook wrote: > Please keep Eric & I CCed on ELF changes; there's a MAINTAINERS entry > now... Hah! I honestly searched for 'ELF' before sending and didn't find anything.
© 2016 - 2026 Red Hat, Inc.