All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
To: Dan Carpenter <dan.carpenter-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Cc: devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org,
	andreas.dilger-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	Chen Gang
	<gang.chen.5i5j-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Greg KH
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	bergwolf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	oleg.drokin-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	jacques-charles.lafoucriere-KCE40YydGKI@public.gmane.org,
	jinshan.xiong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	linux-metag-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] drivers: staging: lustre: lustre: include: add "__attribute__((packed))" for the related union
Date: Mon, 20 Jan 2014 13:38:57 +0000	[thread overview]
Message-ID: <52DD26F1.20104@imgtec.com> (raw)
In-Reply-To: <20140120130116.GW7444@mwanda>

On 20/01/14 13:01, Dan Carpenter wrote:
> It would be easy enough to make the compiler complain about any union
> which would normally have size which is not a multiple of 4.
> 
> Warning: union will be padded with 2 bytes unless __attribute__((packed)).
> 
> Otherwise you will be fighting this for ever.

A good idea, but the problem is that most of the time it just doesn't
matter since all users of the data structure do so with the same ABI. We
already expect the compiler to take some liberties with padding and
alignment since the C standard permits it, so it's only when the exact
layout really matters (data structures dealing with hardware, stored to
disk, or passed over networks) that it ever becomes a problem.

> Are you sure it's padding the unions, and not just treating the unions
> as structs?

Yes

> What is the size of this union?
> 
> union a {
> 	int x;
> 	short y;
> };

4

Thanks
James

--
To unsubscribe from this list: send the line "unsubscribe linux-metag" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: <devel@driverdev.osuosl.org>, <andreas.dilger@intel.com>,
	Chen Gang <gang.chen.5i5j@gmail.com>,
	Greg KH <gregkh@linuxfoundation.org>, <bergwolf@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	<oleg.drokin@intel.com>, <jacques-charles.lafoucriere@cea.fr>,
	<jinshan.xiong@intel.com>, <linux-metag@vger.kernel.org>
Subject: Re: [PATCH] drivers: staging: lustre: lustre: include: add "__attribute__((packed))" for the related union
Date: Mon, 20 Jan 2014 13:38:57 +0000	[thread overview]
Message-ID: <52DD26F1.20104@imgtec.com> (raw)
In-Reply-To: <20140120130116.GW7444@mwanda>

On 20/01/14 13:01, Dan Carpenter wrote:
> It would be easy enough to make the compiler complain about any union
> which would normally have size which is not a multiple of 4.
> 
> Warning: union will be padded with 2 bytes unless __attribute__((packed)).
> 
> Otherwise you will be fighting this for ever.

A good idea, but the problem is that most of the time it just doesn't
matter since all users of the data structure do so with the same ABI. We
already expect the compiler to take some liberties with padding and
alignment since the C standard permits it, so it's only when the exact
layout really matters (data structures dealing with hardware, stored to
disk, or passed over networks) that it ever becomes a problem.

> Are you sure it's padding the unions, and not just treating the unions
> as structs?

Yes

> What is the size of this union?
> 
> union a {
> 	int x;
> 	short y;
> };

4

Thanks
James


  reply	other threads:[~2014-01-20 13:38 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-18  9:50 [PATCH] drivers: staging: lustre: lustre: include: add "__attribute__((packed))" for the related union Chen Gang
2014-01-18  9:50 ` Chen Gang
2014-01-18 10:05 ` Dan Carpenter
2014-01-18 10:05   ` Dan Carpenter
2014-01-18 10:26   ` Chen Gang
2014-01-18 10:26     ` Chen Gang
2014-01-18 14:24     ` Dan Carpenter
2014-01-19 10:07       ` Chen Gang
2014-01-19 10:07         ` Chen Gang
     [not found]         ` <52DBA3D4.3090308-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-01-20 11:56           ` James Hogan
2014-01-20 11:56             ` James Hogan
2014-01-20 12:30             ` Dan Carpenter
2014-01-20 12:30               ` Dan Carpenter
2014-01-20 12:37               ` James Hogan
2014-01-20 12:37                 ` James Hogan
2014-01-20 12:56                 ` Dan Carpenter
2014-01-20 12:56                   ` Dan Carpenter
2014-01-20 13:01                   ` Dan Carpenter
2014-01-20 13:38                     ` James Hogan [this message]
2014-01-20 13:38                       ` James Hogan
2014-01-20 21:13                   ` Dan Carpenter
2014-01-20 21:13                     ` Dan Carpenter
2014-01-21 10:36                     ` James Hogan
2014-01-21 10:36                       ` James Hogan
2014-01-25 11:55                       ` Chen Gang
2014-01-25 11:55                         ` Chen Gang
2014-02-01 13:57                         ` Chen Gang
2014-02-01 13:57                           ` Chen Gang
2014-02-03  8:58                           ` Dan Carpenter
2014-02-03  8:58                             ` Dan Carpenter
2014-02-03 10:03                             ` Chen Gang
2014-02-03 10:03                               ` Chen Gang
     [not found]                               ` <52EF6965.6040406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-02-03 11:35                                 ` Chen Gang
2014-02-03 11:35                                   ` Chen Gang
2014-02-03 10:05                             ` David Laight
2014-02-03 10:22                               ` James Hogan
2014-02-03 10:22                                 ` James Hogan
2014-02-03 10:30                                 ` Chen Gang
2014-02-03 10:30                                   ` Chen Gang
     [not found]                                 ` <52EF6DCC.6040807-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2014-02-03 10:35                                   ` David Laight
2014-02-03 10:35                                     ` David Laight
2014-02-03 11:02                                     ` James Hogan
2014-02-03 11:02                                       ` James Hogan
2014-02-03 11:54                                       ` David Laight
2014-02-03 11:54                                         ` David Laight
     [not found]                               ` <063D6719AE5E284EB5DD2968C1650D6D0F6B772B-VkEWCZq2GCInGFn1LkZF6NBPR1lH4CV8@public.gmane.org>
2014-02-03 10:25                                 ` Chen Gang
2014-02-03 10:25                                   ` Chen Gang

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=52DD26F1.20104@imgtec.com \
    --to=james.hogan-1axoqhu6uovqt0dzr+alfa@public.gmane.org \
    --cc=andreas.dilger-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=bergwolf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=dan.carpenter-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
    --cc=devel-gWbeCf7V1WCQmaza687I9mD2FQJk+8+b@public.gmane.org \
    --cc=gang.chen.5i5j-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=jacques-charles.lafoucriere-KCE40YydGKI@public.gmane.org \
    --cc=jinshan.xiong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-metag-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=oleg.drokin-ral2JQCrhuEAvxtiuMwx3w@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.