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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 19 Mar 2018 14:29:10 -0500
From:   Josh Poimboeuf <jpoimboe@...hat.com>
To:     Matthias Kaehlcke <mka@...omium.org>
Cc:     Ingo Molnar <mingo@...nel.org>, linux-kernel@...r.kernel.org,
        torvalds@...ux-foundation.org, peterz@...radead.org, hpa@...or.com,
        tglx@...utronix.de
Subject: Re: [PATCH 2/2] x86/unwind: Make CONFIG_UNWINDER_ORC=y the default
 in kconfig for 64-bit

On Mon, Mar 19, 2018 at 11:57:32AM -0700, Matthias Kaehlcke wrote:
> Hi Josh,
> 
> El Fri, Oct 13, 2017 at 03:02:01PM -0500 Josh Poimboeuf ha dit:
> 
> > The ORC unwinder has been stable in testing so far.  Give it much wider
> > testing by making it the default in kconfig for x86_64.  It's not yet
> > supported for 32-bit, so leave frame pointers as the default there.
> > 
> > Suggested-by: Ingo Molnar <mingo@...nel.org>
> > Signed-off-by: Josh Poimboeuf <jpoimboe@...hat.com>
> > ---
> 
> Building an upstream kernel with clang results in plenty of objtool
> warnings like these:
> 
> drivers/gpu/drm/i915/dvo_ch7017.o: warning: objtool: ch7017_get_hw_state()+0x80: return with modified stack frame
>   CC      drivers/gpu/drm/i915/i915_oa_cflgt2.o
> ...
>   CC      drivers/gpu/drm/i915/intel_lpe_audio.o
> drivers/gpu/drm/i915/i915_gpu_error.o: warning: objtool: i915_error_printf()+0x6c: return with modified stack frame
> drivers/gpu/drm/i915/intel_display.o: warning: objtool: pipe_config_err()+0xa6: return with modified stack frame
> 
> Bisecting shows that the warnings are generated since the ORC unwinder
> was made the default. Not sure if the issue is on the unwinder side
> or clang.
> 
> Any ideas on what could be the problems?

Hi Matthias,

The ORC unwinder relies on objtool, which reverse engineers the compiled
code.  This is objtool's first exposure to clang, so I'm not at all
surprised if it's getting confused.

Send me one of the .o files and I can take a quick look to see how bad
it is, but I'm guessing it's going to be a lot of work to make objtool
compatible with clang (and unfortunately I won't have the bandwidth to
work on that in the near term.)

In the meantime I'd recommend that you use frame pointers (and
CONFIG_STACK_VALIDATION=n) for clang-compiled kernels.

-- 
Josh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ