Re: [PATCH 1/2] Fix sign extension of bitmap_offset in super1.c

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

 



On 04/26/12 08:25, Jes Sorensen wrote:
> Just checking mdadm.h and bswap32() is defined like this:
> 
> #define bswap_32(x) (((x) & 0x000000ffU) << 24 | \
>                      ((x) & 0xff000000U) >> 24 | \
>                      ((x) & 0x0000ff00U) << 8  | \
>                      ((x) & 0x00ff0000U) >> 8)
> 
> so I am not 100% sure just swapping to an s32 in the struct will work on
> big endian systems? Will the 0x000000ffU not force the conversion back
> to unsigned or what happens in this case?

This is actually semi-complicated.  c89 or c99 rules?  X already of a
type larger than unsigned int?

But if X is signed int, this entire expression will always be unsigned.

You're certainly better off with a cast as we discussed on irc.


r~
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux