Search Linux Wireless

Re: [PATCH] WAVELAN - compile-time check for struct sizes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 07, 2008 at 02:08:42PM -0500, John W. Linville wrote:
> On Thu, Feb 07, 2008 at 10:49:12AM -0800, Andrew Morton wrote:
> > On Thu, 7 Feb 2008 10:51:52 -0500 "John W. Linville" <linville@xxxxxxxxxxxxx> wrote:
> > 
> > > On Wed, Feb 06, 2008 at 01:59:50PM -0800, Andrew Morton wrote:
> > > > On Wed, 6 Feb 2008 21:47:47 +0000
> > > > Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> wrote:
> > > 
> > > > > I assume that it's the second BUILD_BUG_ON() which is triggering?
> > > > 
> > > > yup.
> > > > 
> > > > > Given that:
> > > > > 
> > > > > #define MMW_SIZE        37
> > > > > 
> > > > > is not a multiple of sizeof(unsigned long) this is hardly surprising.
> > > > > 
> > > > > If structures are used to define a layout of something and must not
> > > > > contain compiler padding, it must be packed.  Given these structures
> > > > > contain just unsigned char, there's no concerns about >8bit loads
> > > > > becoming less efficient.
> > > 
> > > Does a patch like this suffice?  I haven't checked whether such a
> > > patch implies that the BUILD_BUG_ON()'s become unnecessary...
> > 
> > With your patch applied and arm allmodconfig, this
> > 
> >         BUILD_BUG_ON(sizeof(ha_t) != HA_SIZE);
> > 
> > triggers
> > 
> > Without your patch applied, these two
> > 
> >         BUILD_BUG_ON(sizeof(mmw_t) != MMW_SIZE);
> >         BUILD_BUG_ON(sizeof(ha_t) != HA_SIZE);
> > 
> > are triggering.
> 
> The ha_t one triggers either way?  Hmmm...
> 
> Russell suggested that the ha_t and psa_t packed attributes were
> unnecessary, so I'll include the reduced version just in case the
> above is a typo.

Well, I didn't look properly at ha_t and the unions that make it up
(#$@%@! typedefs.)

union hacs_u
{
        unsigned short  hu_command;             /* Command register */
        unsigned short  hu_status;              /* Status Register */
};

This is what needs to be packed, otherwise sizeof() will be 4.  With
that done, ha_t should come out at 16 bytes.
-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux