lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 16 Dec 2015 17:19:05 +0000
From:	Catalin Marinas <catalin.marinas@....com>
To:	Arnd Bergmann <arnd@...db.de>
Cc:	linux-arm-kernel@...ts.infradead.org, pinskia@...il.com,
	Prasun.Kapoor@...iumnetworks.com, schwab@...e.de,
	broonie@...nel.org, Nathan_Lynch@...tor.com, agraf@...e.de,
	linux-kernel@...r.kernel.org, klimov.linux@...il.com,
	Andrew Pinski <Andrew.Pinski@...iumnetworks.com>,
	Yury Norov <ynorov@...iumnetworks.com>,
	jan.dakinevich@...il.com, Andrew Pinski <apinski@...ium.com>,
	ddaney.cavm@...il.com, bamvor.zhangjian@...wei.com,
	philipp.tomsich@...obroma-systems.com, joseph@...esourcery.com,
	christoph.muellner@...obroma-systems.com
Subject: Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32

On Wed, Dec 16, 2015 at 04:58:20PM +0000, Catalin Marinas wrote:
> On Wed, Dec 16, 2015 at 04:54:34PM +0100, Arnd Bergmann wrote:
> > On Wednesday 16 December 2015 00:42:35 Yury Norov wrote:
> > > 
> > >  #ifdef CONFIG_COMPAT
> > > -#define COMPAT_ELF_HWCAP       (compat_elf_hwcap)
> > > -#define COMPAT_ELF_HWCAP2      (compat_elf_hwcap2)
> > >  extern unsigned int compat_elf_hwcap, compat_elf_hwcap2;
> > > +#define COMPAT_ELF_HWCAP       \
> > > +       (is_a32_compat_task()   \
> > > +         ? compat_elf_hwcap    \
> > > +         : elf_hwcap)
> > > +
> > > +#define COMPAT_ELF_HWCAP2      \
> > > +       (is_a32_compat_task()   \
> > > +         ? compat_elf_hwcap2   \
> > > +         : 0)
> > > +
> > >  #endif
> > 
> > I'm trying to understand how this is used. Are you compiling
> > fs/compat_binfmt_elf.c twice to handle both 32-bit ELF types?
> 
> It's the same compat_binfmt_elf.c which handles all 32-bit ELF types,
> i.e. AArch32 and A64/ILP32. The above macros are not constants, so they
> are evaluated every time a new ELF file is loaded. We do a similar trick
> with COMPAT_SET_PERSONALITY in patch 11.

IIUC, we may have a problem with this. elf_hwcap is 64-bit long while
elf_info[n] is 32-bit (Elf32_Addr), so we truncate AT_HWCAP if we ever
go beyond bit 31. The above may need to look something like:

#define COMPAT_ELF_HWCAP	\
	(is_a32_compat_task()	\
	 ? compat_elf_hwcap	\
	 : (u32)elf_hwcap)

#define COMPAT_ELF_HWCAP2	\
	(is_a32_compat_task()	\
	 ? compat_elf_hwcap2	\
	 : (u32)(elf_hwcap >> 32))

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ