stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <gregkh@linuxfoundation.org>
To: arnd@arndb.de, akpm@linux-foundation.org,
	alexander.levin@verizon.com, andreyknvl@google.com,
	aryabinin@virtuozzo.com, dvyukov@google.com, glider@google.com,
	gregkh@linuxfoundation.org, mchehab@kernel.org,
	stable@vger.kernel.org, sudipm.mukherjee@gmail.com,
	torvalds@linux-foundation.org
Cc: <stable@vger.kernel.org>, <stable-commits@vger.kernel.org>
Subject: Patch "kasan: rework Kconfig settings" has been added to the 4.4-stable tree
Date: Fri, 23 Feb 2018 17:37:35 +0100	[thread overview]
Message-ID: <151940385515498@kroah.com> (raw)
In-Reply-To: <20180220115527.1806578-23-arnd@arndb.de>


This is a note to let you know that I've just added the patch titled

    kasan: rework Kconfig settings

to the 4.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     kasan-rework-kconfig-settings.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From foo@baz Fri Feb 23 17:12:49 CET 2018
From: Arnd Bergmann <arnd@arndb.de>
Date: Tue, 20 Feb 2018 12:55:09 +0100
Subject: kasan: rework Kconfig settings
To: stable@vger.kernel.org
Cc: Greg KH <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>, Mauro Carvalho Chehab <mchehab@kernel.org>, Andrey Ryabinin <aryabinin@virtuozzo.com>, Alexander Potapenko <glider@google.com>, Dmitry Vyukov <dvyukov@google.com>, Andrey Konovalov <andreyknvl@google.com>, Andrew Morton <akpm@linux-foundation.org>, Linus Torvalds <torvalds@linux-foundation.org>, Sudip Mukherjee <sudipm.mukherjee@gmail.com>, Sasha Levin <alexander.levin@verizon.com>
Message-ID: <20180220115527.1806578-23-arnd@arndb.de>

From: Arnd Bergmann <arnd@arndb.de>

commit e7c52b84fb18f08ce49b6067ae6285aca79084a8 upstream.

We get a lot of very large stack frames using gcc-7.0.1 with the default
-fsanitize-address-use-after-scope --param asan-stack=1 options, which can
easily cause an overflow of the kernel stack, e.g.

  drivers/gpu/drm/i915/gvt/handlers.c:2434:1: warning: the frame size of 46176 bytes is larger than 3072 bytes
  drivers/net/wireless/ralink/rt2x00/rt2800lib.c:5650:1: warning: the frame size of 23632 bytes is larger than 3072 bytes
  lib/atomic64_test.c:250:1: warning: the frame size of 11200 bytes is larger than 3072 bytes
  drivers/gpu/drm/i915/gvt/handlers.c:2621:1: warning: the frame size of 9208 bytes is larger than 3072 bytes
  drivers/media/dvb-frontends/stv090x.c:3431:1: warning: the frame size of 6816 bytes is larger than 3072 bytes
  fs/fscache/stats.c:287:1: warning: the frame size of 6536 bytes is larger than 3072 bytes

To reduce this risk, -fsanitize-address-use-after-scope is now split out
into a separate CONFIG_KASAN_EXTRA Kconfig option, leading to stack
frames that are smaller than 2 kilobytes most of the time on x86_64.  An
earlier version of this patch also prevented combining KASAN_EXTRA with
KASAN_INLINE, but that is no longer necessary with gcc-7.0.1.

All patches to get the frame size below 2048 bytes with CONFIG_KASAN=y
and CONFIG_KASAN_EXTRA=n have been merged by maintainers now, so we can
bring back that default now.  KASAN_EXTRA=y still causes lots of
warnings but now defaults to !COMPILE_TEST to disable it in
allmodconfig, and it remains disabled in all other defconfigs since it
is a new option.  I arbitrarily raise the warning limit for KASAN_EXTRA
to 3072 to reduce the noise, but an allmodconfig kernel still has around
50 warnings on gcc-7.

I experimented a bit more with smaller stack frames and have another
follow-up series that reduces the warning limit for 64-bit architectures
to 1280 bytes (without CONFIG_KASAN).

With earlier versions of this patch series, I also had patches to address
the warnings we get with KASAN and/or KASAN_EXTRA, using a
"noinline_if_stackbloat" annotation.

That annotation now got replaced with a gcc-8 bugfix (see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715) and a workaround for
older compilers, which means that KASAN_EXTRA is now just as bad as
before and will lead to an instant stack overflow in a few extreme
cases.

This reverts parts of commit 3f181b4d8652 ("lib/Kconfig.debug: disable
-Wframe-larger-than warnings with KASAN=y").  Two patches in linux-next
should be merged first to avoid introducing warnings in an allmodconfig
build:
  3cd890dbe2a4 ("media: dvb-frontends: fix i2c access helpers for KASAN")
  16c3ada89cff ("media: r820t: fix r820t_write_reg for KASAN")

Do we really need to backport this?

I think we do: without this patch, enabling KASAN will lead to
unavoidable kernel stack overflow in certain device drivers when built
with gcc-7 or higher on linux-4.10+ or any version that contains a
backport of commit c5caf21ab0cf8.  Most people are probably still on
older compilers, but it will get worse over time as they upgrade their
distros.

The warnings we get on kernels older than this should all be for code
that uses dangerously large stack frames, though most of them do not
cause an actual stack overflow by themselves.The asan-stack option was
added in linux-4.0, and commit 3f181b4d8652 ("lib/Kconfig.debug:
disable -Wframe-larger-than warnings with KASAN=y") effectively turned
off the warning for allmodconfig kernels, so I would like to see this
fix backported to any kernels later than 4.0.

I have done dozens of fixes for individual functions with stack frames
larger than 2048 bytes with asan-stack, and I plan to make sure that
all those fixes make it into the stable kernels as well (most are
already there).

Part of the complication here is that asan-stack (from 4.0) was
originally assumed to always require much larger stacks, but that
turned out to be a combination of multiple gcc bugs that we have now
worked around and fixed, but sanitize-address-use-after-scope (from
v4.10) has a much higher inherent stack usage and also suffers from at
least three other problems that we have analyzed but not yet fixed
upstream, each of them makes the stack usage more severe than it should
be.

Link: http://lkml.kernel.org/r/20171221134744.2295529-1-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Andrey Konovalov <andreyknvl@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[arnd: rebase to v4.4; only re-enable warning]
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 lib/Kconfig.debug |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -197,7 +197,7 @@ config ENABLE_MUST_CHECK
 config FRAME_WARN
 	int "Warn for stack frames larger than (needs gcc 4.4)"
 	range 0 8192
-	default 0 if KASAN
+	default 2048 if GCC_PLUGIN_LATENT_ENTROPY
 	default 1024 if !64BIT
 	default 2048 if 64BIT
 	help


Patches currently in stable-queue which might be from arnd@arndb.de are

queue-4.4/kasan-rework-kconfig-settings.patch
queue-4.4/hdpvr-hide-unused-variable.patch
queue-4.4/mtd-ichxrom-maybe-uninitialized-with-gcc-4.9.patch
queue-4.4/profile-hide-unused-functions-when-config_proc_fs.patch
queue-4.4/perf-x86-shut-up-false-positive-wmaybe-uninitialized-warning.patch
queue-4.4/hwrng-exynos-use-__maybe_unused-to-hide-pm-functions.patch
queue-4.4/usb-cdc_subset-only-build-when-one-driver-is-enabled.patch
queue-4.4/ipv4-ipconfig-avoid-unused-ic_proto_used-symbol.patch
queue-4.4/revert-power-bq27xxx_battery-remove-unneeded-dependency-in-kconfig.patch
queue-4.4/go7007-add-media_camera_support-dependency.patch
queue-4.4/scsi-advansys-fix-build-warning-for-pci-n.patch
queue-4.4/ssb-mark-ssb_bus_register-as-__maybe_unused.patch
queue-4.4/tty-cyclades-cyz_interrupt-is-only-used-for-pci.patch
queue-4.4/infiniband-cxgb4-use-pr-format-string-for-printing-resources.patch
queue-4.4/video-fbdev-via-remove-possibly-unused-variables.patch
queue-4.4/binfmt_elf-compat-avoid-unused-function-warning.patch
queue-4.4/drm-gma500-remove-helper-function.patch
queue-4.4/fbdev-s6e8ax0-avoid-unused-function-warnings.patch
queue-4.4/netfilter-ipvs-avoid-unused-variable-warnings.patch
queue-4.4/idle-i7300-add-pci-dependency.patch
queue-4.4/b2c2-flexcop-avoid-unused-function-warnings.patch
queue-4.4/fbdev-auo_k190x-avoid-unused-function-warnings.patch
queue-4.4/cw1200-fix-bogus-maybe-uninitialized-warning.patch
queue-4.4/x86-build-silence-the-build-with-make-s.patch
queue-4.4/gpio-xgene-mark-pm-functions-as-__maybe_unused.patch
queue-4.4/kvm-add-x86_local_apic-dependency.patch
queue-4.4/arm-tegra-select-usb_ulpi-from-ehci-rather-than-platform.patch
queue-4.4/asoc-mediatek-add-i2c-dependency.patch
queue-4.4/reiserfs-avoid-a-wmaybe-uninitialized-warning.patch
queue-4.4/scsi-advansys-fix-uninitialized-data-access.patch
queue-4.4/mtd-sh_flctl-pass-fifo-as-physical-address.patch
queue-4.4/driver-core-use-dev-argument-in-dev_dbg_ratelimited-stub.patch
queue-4.4/modsign-hide-openssl-output-in-silent-builds.patch
queue-4.4/net-hp100-remove-unnecessary-ifdefs.patch
queue-4.4/genirq-msi-add-stubs-for-get_cached_msi_msg-pci_write_msi_msg.patch
queue-4.4/asoc-intel-kconfig-fix-build-when-acpi-is-not-enabled.patch
queue-4.4/asoc-ux500-add-module_license-tag.patch
queue-4.4/wireless-cw1200-use-__maybe_unused-to-hide-pm-functions_.patch
queue-4.4/mptfusion-hide-unused-seq_mpt_print_ioc_summary-function.patch
queue-4.4/tlan-avoid-unused-label-with-pci-n.patch
queue-4.4/usb-musb-ux500-remove-duplicate-check-for-dma_is_compatible.patch
queue-4.4/mtd-cfi-enforce-valid-geometry-configuration.patch
queue-4.4/thermal-spear-use-__maybe_unused-for-pm-functions.patch
queue-4.4/x86-microcode-amd-change-load_microcode_amd-s-param-to-bool-to-fix-preemptibility-bug.patch
queue-4.4/video-fbdev-mmp-add-module_license.patch
queue-4.4/fbdev-sis-enforce-selection-of-at-least-one-backend.patch
queue-4.4/x86-boot-avoid-warning-for-zero-filling-.bss.patch
queue-4.4/power-bq27xxx_battery-mark-some-symbols-__maybe_unused.patch
queue-4.4/scsi-mvumi-use-__maybe_unused-to-hide-pm-functions.patch
queue-4.4/usb-phy-msm-add-regulator-dependency.patch
queue-4.4/isdn-icn-remove-a-warning.patch
queue-4.4/ncr5380-shut-up-gcc-indentation-warning.patch
queue-4.4/arm64-dts-add-cooling-cells-to-cpu-nodes.patch
queue-4.4/vmxnet3-prevent-building-with-64k-pages.patch
queue-4.4/genksyms-fix-segfault-with-invalid-declarations.patch
queue-4.4/x86-platform-add-pci-dependency-for-punit_atom_debug.patch
queue-4.4/target-user-fix-cast-from-pointer-to-phys_addr_t.patch
queue-4.4/rtlwifi-fix-gcc-6-indentation-warning.patch
queue-4.4/alsa-hda-ca0132-fix-possible-null-pointer-use.patch
queue-4.4/thermal-fix-intel_soc_dts_iosf_core-dependencies.patch
queue-4.4/arm64-define-bug-instruction-without-config_bug.patch
queue-4.4/v4l-remove-media_tuner-dependency-for-video_tuner.patch
queue-4.4/tc358743-fix-register-i2c_rd-wr-functions.patch
queue-4.4/scsi-fdomain-drop-fdomain_pci_tbl-when-built-in.patch
queue-4.4/scsi-initio-remove-duplicate-module-device-table.patch
queue-4.4/netlink-fix-nla_put_-u8-u16-u32-for-kasan.patch
queue-4.4/x86-fpu-math-emu-fix-possible-uninitialized-variable-use.patch
queue-4.4/asoc-rockchip-use-__maybe_unused-to-hide-st_irq_syscfg_resume.patch
queue-4.4/staging-ste_rmi4-avoid-unused-function-warnings.patch
queue-4.4/em28xx-only-use-mt9v011-if-camera-support-is-enabled.patch
queue-4.4/pwc-hide-unused-label.patch
queue-4.4/input-tca8418_keypad-hide-gcc-4.9-wmaybe-uninitialized-warning.patch
queue-4.4/fbdev-sm712fb-avoid-unused-function-warnings.patch
queue-4.4/isdn-sc-work-around-type-mismatch-warning.patch
queue-4.4/tty-hvc_xen-hide-xen_console_remove-when-unused.patch
queue-4.4/virtio_balloon-prevent-uninitialized-variable-use.patch
queue-4.4/drm-nouveau-hide-gcc-4.9-wmaybe-uninitialized.patch
queue-4.4/dell-wmi-dell-laptop-depends-dmi.patch
queue-4.4/x86-add-multiuser-dependency-for-kvm.patch
queue-4.4/md-avoid-warning-for-32-bit-sector_t.patch
queue-4.4/isdn-eicon-reduce-stack-size-of-sig_ind-function.patch

  reply	other threads:[~2018-02-23 16:38 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-20 11:54 [4.4-stable 00/22] patches for 'randconfig' Arnd Bergmann
2018-02-20 11:54 ` [4.4-stable 01/22] gpio: xgene: mark PM functions as __maybe_unused Arnd Bergmann
2018-02-20 11:54 ` [4.4-stable 02/22] Revert "power: bq27xxx_battery: Remove unneeded dependency in Kconfig" Arnd Bergmann
2018-02-23 16:38   ` Patch "Revert "power: bq27xxx_battery: Remove unneeded dependency in Kconfig"" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 03/22] power: bq27xxx_battery: mark some symbols __maybe_unused Arnd Bergmann
2018-02-23 16:38   ` Patch "power: bq27xxx_battery: mark some symbols __maybe_unused" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 04/22] isdn: sc: work around type mismatch warning Arnd Bergmann
2018-02-23 16:37   ` Patch "isdn: sc: work around type mismatch warning" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 05/22] binfmt_elf: compat: avoid unused function warning Arnd Bergmann
2018-02-23 16:36   ` Patch "binfmt_elf: compat: avoid unused function warning" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 06/22] idle: i7300: add PCI dependency Arnd Bergmann
2018-02-23 16:37   ` Patch "idle: i7300: add PCI dependency" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 07/22] usb: phy: msm add regulator dependency Arnd Bergmann
2018-02-23 16:38   ` Patch "usb: phy: msm add regulator dependency" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 08/22] ncr5380: shut up gcc indentation warning Arnd Bergmann
2018-02-20 22:44   ` Finn Thain
2018-02-23 16:38   ` Patch "ncr5380: shut up gcc indentation warning" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 09/22] ARM: tegra: select USB_ULPI from EHCI rather than platform Arnd Bergmann
2018-02-23 16:36   ` Patch "ARM: tegra: select USB_ULPI from EHCI rather than platform" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 10/22] ASoC: Intel: Kconfig: fix build when ACPI is not enabled Arnd Bergmann
2018-02-23 16:36   ` Patch "ASoC: Intel: Kconfig: fix build when ACPI is not enabled" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 11/22] netlink: fix nla_put_{u8,u16,u32} for KASAN Arnd Bergmann
2018-02-23 16:38   ` Patch "netlink: fix nla_put_{u8,u16,u32} for KASAN" has been added to the 4.4-stable tree gregkh
2018-02-20 11:54 ` [4.4-stable 12/22] virtio_balloon: prevent uninitialized variable use Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 13/22] dell-wmi, dell-laptop: depends DMI Arnd Bergmann
2018-02-23 16:36   ` Patch "dell-wmi, dell-laptop: depends DMI" has been added to the 4.4-stable tree gregkh
2018-02-20 11:55 ` [4.4-stable 14/22] genksyms: Fix segfault with invalid declarations Arnd Bergmann
2018-02-23 16:37   ` Patch "genksyms: Fix segfault with invalid declarations" has been added to the 4.4-stable tree gregkh
2018-02-20 11:55 ` [4.4-stable 15/22] perf/x86: Shut up false-positive -Wmaybe-uninitialized warning Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 16/22] dmaengine: zx: fix build warning Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 17/22] cw1200: fix bogus maybe-uninitialized warning Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 18/22] x86/microcode/AMD: Change load_microcode_amd()'s param to bool to fix preemptibility bug Arnd Bergmann
2018-02-23 16:39   ` Patch "x86/microcode/AMD: Change load_microcode_amd()'s param to bool to fix preemptibility bug" has been added to the 4.4-stable tree gregkh
2018-02-20 11:55 ` [4.4-stable 19/22] net: hp100: remove unnecessary #ifdefs Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 20/22] ncpfs: fix unused variable warning Arnd Bergmann
2018-02-20 11:55 ` [4.4-stable 21/22] drm/gma500: remove helper function Arnd Bergmann
2018-02-23 16:36   ` Patch "drm/gma500: remove helper function" has been added to the 4.4-stable tree gregkh
2018-02-20 11:55 ` [4.4-stable 22/22] kasan: rework Kconfig settings Arnd Bergmann
2018-02-23 16:37   ` gregkh [this message]
2018-02-23 16:18 ` [4.4-stable 00/22] patches for 'randconfig' Greg KH

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=151940385515498@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.levin@verizon.com \
    --cc=andreyknvl@google.com \
    --cc=arnd@arndb.de \
    --cc=aryabinin@virtuozzo.com \
    --cc=dvyukov@google.com \
    --cc=glider@google.com \
    --cc=mchehab@kernel.org \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=sudipm.mukherjee@gmail.com \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).