Gitweb:
http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=2539769356cd73...
Commit: 2539769356cd73ffe6ff7abd9f9c3208ff24ee8b
Parent: 192fa11dab177027ad349363b39ff6435524b23d
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Jun 22 11:15:14 2012 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Jun 22 13:48:04 2012 +0200
fix: limit preallocate stack size
If the user would set bigger reserved stack size then what
is allowed in resources (ulimit -s), then he would get coredump
So avoid coredump and ignore creation of such large stack size
(lvm should work properly, with just 64KB, so the option could
be eliminated).
---
lib/mm/memlock.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c
index 17dee1c..dfc0d42 100644
--- a/lib/mm/memlock.c
+++ b/lib/mm/memlock.c
@@ -124,8 +124,12 @@ static void _touch_memory(void *mem, size_t size)
static void _allocate_memory(void)
{
void *stack_mem, *temp_malloc_mem;
+ struct rlimit limit;
- if ((stack_mem = alloca(_size_stack)))
+ /* Check if we could preallocate requested stack */
+ if ((getrlimit (RLIMIT_STACK, &limit) == 0) &&
+ ((_size_stack * 2) < limit.rlim_cur) &&
+ ((stack_mem = alloca(_size_stack))))
_touch_memory(stack_mem, _size_stack);
if ((temp_malloc_mem = malloc(_size_malloc_tmp)))