All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Greg Price <price-DPNOqEs/LNQ@public.gmane.org>
Cc: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] malloc.3: Scale back promises of alignment
Date: Sat, 26 Oct 2013 11:17:14 +1300	[thread overview]
Message-ID: <526AEDEA.1030507@gmail.com> (raw)
In-Reply-To: <20131024194248.GC16996-Kwy/eXMQnt4s05kO6ufOU7g7sE8m1Ewp@public.gmane.org>

Greg,

On 25.10.2013 08:42, Greg Price wrote:
> It's not true that the return value is suitably aligned for "any
> variable"; for example, it's unsuitable for a variable like
>   float *x __attribute__ ((__vector_size__ (32)));
> which requires 32-byte alignment.  Types like this are defined in
> <avxintrin.h>, and with 16-byte alignment in <emmintrin.h> and
> <xmmintrin.h>, so the application programmer need not even know
> that a vector_size attribute has been applied.
> 
> On an x86 architecture, a program that loads from or stores to a
> pointer with this type derived from malloc can crash because GCC
> generates an aligned load/store, like MOVDQA.
> 
> The C99 standard (TC3, as of N1256) does say the return value is
> suitably aligned for "any type of object".  The C11 standard (as
> of N1570) revises this to any type with "fundamental alignment",
> which means an alignment "supported by the implementation in all
> contexts", which I suppose tautologically includes aligning
> malloc/realloc return values.
> 
> The actual behavior of current glibc malloc is to align to the
> greater of 2 * sizeof(size_t) and __alignof__ (long double),
> which may be one bit greater than this commit promises.

Thanks for the patch and the excellent commit message. I've applied.

Cheers,

Michael


> Signed-off-by: Greg Price <price-3s7WtUTddSA@public.gmane.org>
> ---
>  man3/malloc.3 | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/man3/malloc.3 b/man3/malloc.3
> index 372b503..84d9852 100644
> --- a/man3/malloc.3
> +++ b/man3/malloc.3
> @@ -131,8 +131,8 @@ The
>  .BR malloc ()
>  and
>  .BR calloc ()
> -functions return a pointer to the allocated memory
> -that is suitably aligned for any kind of variable.
> +functions return a pointer to the allocated memory,
> +which is suitably aligned for any built-in type.
>  On error, these functions return NULL.
>  NULL may also be returned by a successful call to
>  .BR malloc ()
> @@ -154,7 +154,7 @@ function returns no value.
>  The
>  .BR realloc ()
>  function returns a pointer to the newly allocated memory, which is suitably
> -aligned for any kind of variable and may be different from
> +aligned for any built-in type and may be different from
>  .IR ptr ,
>  or NULL if the request fails.
>  If
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
My next Linux/UNIX system programming course:
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

      parent reply	other threads:[~2013-10-25 22:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-24 19:42 [PATCH] malloc.3: Scale back promises of alignment Greg Price
     [not found] ` <20131024194248.GC16996-Kwy/eXMQnt4s05kO6ufOU7g7sE8m1Ewp@public.gmane.org>
2013-10-25 22:17   ` Michael Kerrisk (man-pages) [this message]

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=526AEDEA.1030507@gmail.com \
    --to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=price-DPNOqEs/LNQ@public.gmane.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 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.