linux/include
Linus Torvalds c03aed64c4 mm: propagate error from stack expansion even for guard page
commit fee7e49d45 upstream.

Jay Foad reports that the address sanitizer test (asan) sometimes gets
confused by a stack pointer that ends up being outside the stack vma
that is reported by /proc/maps.

This happens due to an interaction between RLIMIT_STACK and the guard
page: when we do the guard page check, we ignore the potential error
from the stack expansion, which effectively results in a missing guard
page, since the expected stack expansion won't have been done.

And since /proc/maps explicitly ignores the guard page (commit
d7824370e2: "mm: fix up some user-visible effects of the stack guard
page"), the stack pointer ends up being outside the reported stack area.

This is the minimal patch: it just propagates the error.  It also
effectively makes the guard page part of the stack limit, which in turn
measn that the actual real stack is one page less than the stack limit.

Let's see if anybody notices.  We could teach acct_stack_growth() to
allow an extra page for a grow-up/grow-down stack in the rlimit test,
but I don't want to add more complexity if it isn't needed.

Reported-and-tested-by: Jay Foad <jay.foad@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-01-16 06:59:57 -08:00
..
acpi ACPI and power management updates for 3.18-rc2 2014-10-24 11:29:31 -07:00
asm-generic Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
clocksource ARM: pxa: Add non device-tree timer link to clocksource 2014-07-23 12:02:39 +02:00
crypto crypto: LLVMLinux: Add macro to remove use of VLAIS in crypto code 2014-10-14 10:51:22 +02:00
drm drm/radeon: remove invalid pci id 2014-10-28 10:44:36 -04:00
dt-bindings The fixes for the clock framework are all regressions in drivers, plus a 2014-11-25 17:52:56 -08:00
keys KEYS: Restore partial ID matching functionality for asymmetric keys 2014-10-06 15:21:05 +01:00
kvm arm/arm64: KVM: Fix BE accesses to GICv2 EISR and ELRSR regs 2014-10-16 10:57:41 +02:00
linux mm: propagate error from stack expansion even for guard page 2015-01-16 06:59:57 -08:00
math-emu math-emu: fix floating-point to integer overflow detection 2014-01-07 18:36:24 -06:00
media Merge branch 'patchwork' into v4l_for_linus 2014-10-09 14:00:54 -03:00
memory ddr: add LPDDR2 data from JESD209-2 2012-05-02 00:04:06 -07:00
misc cxl: Add new header for call backs and structs 2014-10-08 20:15:43 +11:00
net Revert "mac80211: Fix accounting of the tailroom-needed counter" 2015-01-16 06:59:56 -08:00
pcmcia pcmcia/ds.h: introduce helper for pcmcia_driver module boilerplate 2013-03-15 12:26:03 -07:00
ras PCI/AER: Rename PCI_ERR_UNC_TRAIN to PCI_ERR_UNC_UND 2014-09-25 09:42:40 -06:00
rdma IB/mlx5, iser, isert: Add Signature API additions 2014-10-09 00:10:53 -07:00
rxrpc include/rxrpc/types.h: Remove unused header 2014-08-29 20:33:39 -07:00
scsi scsi: set REQ_QUEUE for the blk-mq case 2014-10-28 09:53:43 +01:00
soc/tegra ARM: tegra: Convert PMC to a driver 2014-07-17 14:58:43 +02:00
sound ALSA: pcm: Add big-endian DSD sample formats and fix XMOS DSD sample format 2014-11-21 15:13:28 +01:00
target target: Add force_pr_aptpl device attribute 2014-10-04 05:41:20 +00:00
trace tracing/sched: Check preempt_count() for current when reading task->state 2015-01-16 06:59:52 -08:00
uapi Drivers: hv: util: make struct hv_do_fcopy match Hyper-V host messages 2015-01-16 06:59:53 -08:00
video fbdev changes for 3.18 2014-10-18 18:03:02 -07:00
xen xen: remove DEFINE_XENBUS_DRIVER() macro 2014-10-06 10:27:57 +01:00
Kbuild UAPI: remove empty Kbuild files 2013-04-30 17:04:09 -07:00