From: Eric Blake <eblake@redhat.com>
To: Peter Lieven <pl@kamp.de>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, mreitz@redhat.com, pbonzini@redhat.com,
mst@redhat.com, dgilbert@redhat.com, peter.maydell@linaro.org,
rth@twiddle.net, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH V4 1/6] oslib-posix: add helpers for stack alloc and free
Date: Mon, 11 Jul 2016 10:39:48 -0600 [thread overview]
Message-ID: <5783CBD4.2000205@redhat.com> (raw)
In-Reply-To: <1468228082-7492-2-git-send-email-pl@kamp.de>
[-- Attachment #1: Type: text/plain, Size: 1343 bytes --]
On 07/11/2016 03:07 AM, Peter Lieven wrote:
> the allocated stack will be adjusted to the minimum supported stack size
> by the OS and rounded up to be a multiple of the system pagesize.
> Additionally an architecture dependent guard page is added to the stack
> to catch stack overflows.
>
> Signed-off-by: Peter Lieven <pl@kamp.de>
> ---
> include/sysemu/os-posix.h | 23 +++++++++++++++++++++++
> util/oslib-posix.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 67 insertions(+)
>
> +
> +static size_t adjust_stack_size(size_t sz)
> +{
> + /* avoid stacks smaller than _SC_THREAD_STACK_MIN */
> + sz = MAX(sz, sysconf(_SC_THREAD_STACK_MIN));
sz is unsigned, but sysconf() is signed. Furthermore, sysconf() is
permitted to return -1 if there is no such minimum. MAX() would then
operate on the common integral promotion between the two arguments,
which may treat (unsigned)(-1) as the larger of the two values, and give
you the wrong results.
I think it is theoretical (all platforms that we compile on have a
working sysconf(_SC_THREAD_STACK_MIN), right?), but still may be worth
being sure that sysconf() returned a positive value before computing MAX().
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2016-07-11 16:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-11 9:07 [Qemu-devel] [PATCH V4 0/6] coroutine: mmap stack memory and stack size Peter Lieven
2016-07-11 9:07 ` [Qemu-devel] [PATCH V4 1/6] oslib-posix: add helpers for stack alloc and free Peter Lieven
2016-07-11 16:28 ` Richard Henderson
2016-07-11 16:39 ` Eric Blake [this message]
2016-07-12 14:36 ` Peter Lieven
2016-07-12 14:41 ` Peter Lieven
2016-07-12 15:32 ` Eric Blake
2016-07-11 9:07 ` [Qemu-devel] [PATCH V4 2/6] coroutine: add a macro for the coroutine stack size Peter Lieven
2016-07-11 9:07 ` [Qemu-devel] [PATCH V4 3/6] coroutine-ucontext: use helper for allocating stack memory Peter Lieven
2016-07-11 9:08 ` [Qemu-devel] [PATCH V4 4/6] coroutine-sigaltstack: " Peter Lieven
2016-07-11 9:08 ` [Qemu-devel] [PATCH V4 5/6] oslib-posix: add a configure switch to debug stack usage Peter Lieven
2016-07-11 9:08 ` [Qemu-devel] [PATCH V4 6/6] coroutine: reduce stack size to 64kB Peter Lieven
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=5783CBD4.2000205@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pl@kamp.de \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.