[PATCH] MTD: fix endian issue of additional protection fields

Nicolas Pitre nico at cam.org
Mon Jun 12 13:01:42 EDT 2006


On Mon, 12 Jun 2006, Christian Hohnstaedt wrote:

> add byte-swapping for extended OTP areas (NumProtectionFields > 1)
> 
> Signed-off-by: Christian Hohnstaedt <chohnstaedt at innominate.com>

Signed-off-by: Nicolas Pitre <nico at cam.org>

> 
> ---
> 
>  drivers/mtd/chips/cfi_cmdset_0001.c |   13 +++++++++++++
>  1 files changed, 13 insertions(+), 0 deletions(-)
> 
> 0bdeefafb76db54cdb12a10e8fcc5c197221c276
> diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
> index 0d43581..3227d1e 100644
> --- a/drivers/mtd/chips/cfi_cmdset_0001.c
> +++ b/drivers/mtd/chips/cfi_cmdset_0001.c
> @@ -279,11 +279,24 @@ read_pri_intelext(struct map_info *map, 
>  	if (extp->MajorVersion == '1' && extp->MinorVersion >= '3') {
>  		unsigned int extra_size = 0;
>  		int nb_parts, i;
> +		struct cfi_intelext_otpinfo *otp;
>  
>  		/* Protection Register info */
>  		extra_size += (extp->NumProtectionFields - 1) *
>  			      sizeof(struct cfi_intelext_otpinfo);
>  
> +		if (extp_size < sizeof(*extp) + extra_size)
> +			goto need_more;
> +
> +		/* Byteswapping for additional ProtectionFields */
> +		otp = (struct cfi_intelext_otpinfo*)(extp->extra);
> +		for (i=1; i<extp->NumProtectionFields; i++) {
> +			otp->ProtRegAddr = le32_to_cpu(otp->ProtRegAddr);
> +			otp->FactGroups = le16_to_cpu(otp->FactGroups);
> +			otp->UserGroups = le16_to_cpu(otp->UserGroups);
> +			otp++;
> +		}
> +
>  		/* Burst Read info */
>  		extra_size += 2;
>  		if (extp_size < sizeof(*extp) + extra_size)
> -- 
> Christian Hohnstaedt
> Software Engineer
> 
> Innominate Security Technologies AG  /device attached security/
> tel: +49.30.6392-3285
> fax: +49.30.6392-3307
> Albert-Einstein-Str. 14
> D-12489 Berlin, Germany
> http://www.innominate.com
> 
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
> 


Nicolas




More information about the linux-mtd mailing list