aboutsummaryrefslogtreecommitdiffstats
path: root/mm/util.c
diff options
context:
space:
mode:
authorBartosz Golaszewski <[email protected]>2023-12-18 12:31:29 +0000
committerBartosz Golaszewski <[email protected]>2023-12-18 12:31:29 +0000
commit12b7f4ddfcb66dafed432cf4a987f5b40179c0f1 (patch)
tree1e57a7d047e575d891302fb68fdfcd682fe84a5f /mm/util.c
parentdt-bindings: gpio: dwapb: allow gpio-ranges (diff)
parentdevice property: Implement device_is_big_endian() (diff)
downloadkernel-12b7f4ddfcb66dafed432cf4a987f5b40179c0f1.tar.gz
kernel-12b7f4ddfcb66dafed432cf4a987f5b40179c0f1.zip
Merge tag 'device_is_big_endian-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core into gpio/for-next
Tag for the device_is_big_endian() addition to property.h For others to be able to pull from in a stable way. Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'mm/util.c')
-rw-r--r--mm/util.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/mm/util.c b/mm/util.c
index aa01f6ea5a75..744b4d7e3fae 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -414,6 +414,15 @@ static int mmap_is_legacy(struct rlimit *rlim_stack)
static unsigned long mmap_base(unsigned long rnd, struct rlimit *rlim_stack)
{
+#ifdef CONFIG_STACK_GROWSUP
+ /*
+ * For an upwards growing stack the calculation is much simpler.
+ * Memory for the maximum stack size is reserved at the top of the
+ * task. mmap_base starts directly below the stack and grows
+ * downwards.
+ */
+ return PAGE_ALIGN_DOWN(mmap_upper_limit(rlim_stack) - rnd);
+#else
unsigned long gap = rlim_stack->rlim_cur;
unsigned long pad = stack_guard_gap;
@@ -431,6 +440,7 @@ static unsigned long mmap_base(unsigned long rnd, struct rlimit *rlim_stack)
gap = MAX_GAP;
return PAGE_ALIGN(STACK_TOP - gap - rnd);
+#endif
}
void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack)