All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <ak@linux.intel.com>
To: Randy Dunlap <rdunlap@infradead.org>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	linux-next@vger.kernel.org, sfr@canb.auug.org.au, mhocko@suse.cz
Subject: Re: mmotm 2014-07-02-15-07 uploaded (stack protector)
Date: Wed, 2 Jul 2014 17:22:31 -0700	[thread overview]
Message-ID: <20140703002231.GR19781@tassilo.jf.intel.com> (raw)
In-Reply-To: <53B493E2.2030905@infradead.org>

On Wed, Jul 02, 2014 at 04:21:06PM -0700, Randy Dunlap wrote:
> On 07/02/14 15:08, akpm@linux-foundation.org wrote:
> > The mm-of-the-moment snapshot 2014-07-02-15-07 has been uploaded to
> > 
> >    http://www.ozlabs.org/~akpm/mmotm/
> > 
> > mmotm-readme.txt says
> > 
> > README for mm-of-the-moment:
> > 
> > http://www.ozlabs.org/~akpm/mmotm/
> > 
> > This is a snapshot of my -mm patch queue.  Uploaded at random hopefully
> > more than once a week.
> 
> Hi Andi,
> 
> Here is an extract from 10 randconfig builds:
> 
> 
> $ grep STACKPROTECTOR_STRONG config-r*
> config-r8735:CONFIG_CC_STACKPROTECTOR_STRONG=y
> config-r8736:CONFIG_CC_STACKPROTECTOR_STRONG=y
> config-r8737:# CONFIG_CC_STACKPROTECTOR_STRONG is not set
> config-r8738:# CONFIG_CC_STACKPROTECTOR_STRONG is not set
> config-r8739:CONFIG_CC_STACKPROTECTOR_STRONG=y
> config-r8740:CONFIG_CC_STACKPROTECTOR_STRONG=y
> config-r8741:CONFIG_CC_STACKPROTECTOR_STRONG=y
> config-r8742:# CONFIG_CC_STACKPROTECTOR_STRONG is not set
> config-r8743:# CONFIG_CC_STACKPROTECTOR_STRONG is not set
> config-r8744:# CONFIG_CC_STACKPROTECTOR_STRONG is not set
> 
> 
> but the captured output for each one says:
> 
> grep STACKPROTECTOR_STRONG  build*.out
> build-r8735.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8736.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8736.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8737.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8739.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8740.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8740.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8741.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8741.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> build-r8742.out:/local/lnx/MM/mmotm-2014-0702-1507/Makefile:662: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
> 
> 
> then the build goes on to produce many errors like this one:
> 
>   CC      init/do_mounts.o
> gcc: error: unrecognized command line option '-fstack-protector-strong'
> 
> 
> Can you explain this, please?  or even better yet, fix it.

That's the code 

ifdef CONFIG_CC_STACKPROTECTOR_STRONG
  stackp-flag := -fstack-protector-strong
  ifeq ($(call cc-option, $(stackp-flag)),)
    $(warning Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: \
              -fstack-protector-strong not supported by compiler)
  endif
else
  # Force off for distro compilers that enable stack protector by default.
  stackp-flag := $(call cc-option, -fno-stack-protector)
endif
endif
KBUILD_CFLAGS += $(stackp-flag)

So -fstack-protector-strong itself is never protected by a cc-option call.

You could add it to the stack-flag line, then it would only warn.

  stackp-flag := $(call cc-option, -fstack-protector-strong)

It's hard to tell what the original author wanted, perhaps they wanted
it to error out. It looks intentional. Clearly they didn't think of randconfig
though.

Or get a compiler that supports stack protection?

-Andi

  reply	other threads:[~2014-07-03  0:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-02 22:08 mmotm 2014-07-02-15-07 uploaded akpm
2014-07-02 22:08 ` akpm
2014-07-02 23:21 ` mmotm 2014-07-02-15-07 uploaded (stack protector) Randy Dunlap
2014-07-03  0:22   ` Andi Kleen [this message]
2014-07-03  0:37     ` Randy Dunlap
2014-07-03  0:51     ` Kees Cook
2014-07-03  0:56       ` Andrew Morton
2014-07-03  1:10         ` [PATCH] kbuild: explain stack-protector-strong CONFIG logic Kees Cook
2014-07-03  1:00       ` mmotm 2014-07-02-15-07 uploaded (stack protector) Andi Kleen
2014-07-03  1:13         ` Kees Cook
2014-07-03  0:57   ` Kees Cook
2014-07-03  1:42     ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140703002231.GR19781@tassilo.jf.intel.com \
    --to=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mhocko@suse.cz \
    --cc=rdunlap@infradead.org \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.