Re: [PATCH] scsi_debug: Fix endianess in partition table

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

 



On Mon, 2013-02-11 at 18:34 +0100, Martin Peschke wrote:
> Both start_sect and nr_sects in struct partition are __le32 and
> require cpu_to_le32() on assignment.

Steffen Maier has pointed me at:

block/partitions/msdos.c:	return
(sector_t)get_unaligned_le32(&p->start_sect);

Unfortunately, both get_unaligned_le32() and le32_to_cpu() appear to be
in use for start_sect and nr_sects.

Any one who would argue for changing my patch from cpu_to_le32 to
put_unaligned_le32()?

Thanks,
Martin



> 
> Without this fix tools like fdisk show an invalid partition table
> for SCSI devices emulated by scsi_debug on big-endian architectures,
> like s390x. Besides a kernel message like this was emitted:
> 
> sda: p1 start 536870912 is beyond EOD, enabling native capacity
> sda: p1 start 536870912 is beyond EOD, truncated
> 
> For verification 'xxd -l 512 /dev/sda' has been used to make sure
> that this fix makes scsi_debug generated partition tables on s390x
> look like the ones generated on my laptop.
> 
> Signed-off-by: Martin Peschke <mpeschke@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Steffen Maier <maier@xxxxxxxxxxxxxxxxxx>
> 
> ---
>  drivers/scsi/scsi_debug.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> --- a/drivers/scsi/scsi_debug.c
> +++ b/drivers/scsi/scsi_debug.c
> @@ -2662,8 +2662,8 @@ static void __init sdebug_build_parts(un
>  			       / sdebug_sectors_per;
>  		pp->end_sector = (end_sec % sdebug_sectors_per) + 1;
> 
> -		pp->start_sect = start_sec;
> -		pp->nr_sects = end_sec - start_sec + 1;
> +		pp->start_sect = cpu_to_le32(start_sec);
> +		pp->nr_sects = cpu_to_le32(end_sec - start_sec + 1);
>  		pp->sys_ind = 0x83;	/* plain Linux partition */
>  	}
>  }
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux