Re: [PATCH] iio:measurement specialties core: Fix endian sparse warnings.

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

 



On 11/10/15 13:16, ludovic.tancerel@xxxxxxxxxxxxxxxxx wrote:
> Hello Jonathan
> 
> I often work on Sunday, so it is not a pb.
> 
> I apologize for not correcting this myself, I was not sure what had to be done …
That's quite alright.  I'm rubbish at spotting this particular issue in drivers
or we'd have dealt with it earlier + my sparse was out of date (now it reports
the same as the autobuilder one).

> I had a look and this looks ok.
Cool
> 
> I cannot test this today as I do not have access to HW, but can surely test the patch tomorrow morning.
I'll probably set up my pull request then but not actually send it until I get an OK from
you.
> 
> Thanks a lot for doing the change,
> regards,
> Ludo
> 
> 
> 
>> Le 11 oct. 2015 à 13:57, Jonathan Cameron <jic23@xxxxxxxxxx> a écrit :
>>
>> If anyone can take a quick look at this today (ideally Ludovic! but I appreciate it's a Sunday)
>> that would be great as this is stalling my sending pull request to Greg.
>>
>> I 'might' apply it anyway on the basis it is straight forward but
>> nice to have a sanity check from someone!
>>
>> Jonathan
>>
>>
>> On 11/10/15 12:55, Jonathan Cameron wrote:
>>> This patch changes various types to the appropriate endian specific
>>> versions.  Also introduces an additional local variable to avoid
>>> a single variable being used for both be and cpu endianness.
>>>
>>> These aren't bugs as such, but clearing them up does make the code
>>> clearer.
>>>
>>> Warning was:
>>> sparse warnings: (new ones prefixed by >>)
>>>
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:126:9: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:127:16: sparse: cast to restricted __be32
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:208:18: sparse: incorrect type in assignment (different base types)
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:208:18:    expected unsigned short [unsigned] [addressable] [usertype] send_buf
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:208:18:    got restricted __be16 [usertype] <noident>
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c:216:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:230:18: sparse: incorrect type in assignment (different base types)
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:230:18:    expected unsigned short [unsigned] [addressable] [usertype] send_buf
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:230:18:    got restricted __be16 [usertype] <noident>
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>   drivers/iio/common/ms_sensors/ms_sensors_i2c.c:239:19: sparse: cast to restricted __be64
>>>
>>>
>>> Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx>
>>> Signed-off-by: Jonathan Cameron <jic23@xxxxxxxxxx>
>>> ---
>>> drivers/iio/common/ms_sensors/ms_sensors_i2c.c | 29 +++++++++++++-------------
>>> 1 file changed, 15 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/drivers/iio/common/ms_sensors/ms_sensors_i2c.c b/drivers/iio/common/ms_sensors/ms_sensors_i2c.c
>>> index 056c4f3bf497..669dc7c270f5 100644
>>> --- a/drivers/iio/common/ms_sensors/ms_sensors_i2c.c
>>> +++ b/drivers/iio/common/ms_sensors/ms_sensors_i2c.c
>>> @@ -106,7 +106,7 @@ int ms_sensors_convert_and_read(void *cli, u8 conv, u8 rd,
>>> 				unsigned int delay, u32 *adc)
>>> {
>>> 	int ret;
>>> -	u32 buf = 0;
>>> +        __be32 buf = 0;
>>> 	struct i2c_client *client = (struct i2c_client *)cli;
>>>
>>> 	/* Trigger conversion */
>>> @@ -186,8 +186,9 @@ static bool ms_sensors_crc_valid(u32 value)
>>> int ms_sensors_read_serial(struct i2c_client *client, u64 *sn)
>>> {
>>> 	u8 i;
>>> -	u64 rcv_buf = 0;
>>> -	u16 send_buf;
>>> +	__be64 rcv_buf = 0;
>>> +	u64 rcv_val;
>>> +	__be16 send_buf;
>>> 	int ret;
>>>
>>> 	struct i2c_msg msg[2] = {
>>> @@ -213,18 +214,18 @@ int ms_sensors_read_serial(struct i2c_client *client, u64 *sn)
>>> 		return ret;
>>> 	}
>>>
>>> -	rcv_buf = be64_to_cpu(rcv_buf);
>>> -	dev_dbg(&client->dev, "Serial MSB raw : %llx\n", rcv_buf);
>>> +	rcv_val = be64_to_cpu(rcv_buf);
>>> +	dev_dbg(&client->dev, "Serial MSB raw : %llx\n", rcv_val);
>>>
>>> 	for (i = 0; i < 64; i += 16) {
>>> -		if (!ms_sensors_crc_valid((rcv_buf >> i) & 0xFFFF))
>>> +		if (!ms_sensors_crc_valid((rcv_val >> i) & 0xFFFF))
>>> 			return -ENODEV;
>>> 	}
>>>
>>> -	*sn = (((rcv_buf >> 32) & 0xFF000000) |
>>> -	       ((rcv_buf >> 24) & 0x00FF0000) |
>>> -	       ((rcv_buf >> 16) & 0x0000FF00) |
>>> -	       ((rcv_buf >> 8) & 0x000000FF)) << 16;
>>> +	*sn = (((rcv_val >> 32) & 0xFF000000) |
>>> +	       ((rcv_val >> 24) & 0x00FF0000) |
>>> +	       ((rcv_val >> 16) & 0x0000FF00) |
>>> +	       ((rcv_val >> 8) & 0x000000FF)) << 16;
>>>
>>> 	/* Read LSB part of serial number */
>>> 	send_buf = cpu_to_be16(MS_SENSORS_SERIAL_READ_LSB);
>>> @@ -236,15 +237,15 @@ int ms_sensors_read_serial(struct i2c_client *client, u64 *sn)
>>> 		return ret;
>>> 	}
>>>
>>> -	rcv_buf = be64_to_cpu(rcv_buf) >> 16;
>>> -	dev_dbg(&client->dev, "Serial MSB raw : %llx\n", rcv_buf);
>>> +	rcv_val = be64_to_cpu(rcv_buf) >> 16;
>>> +	dev_dbg(&client->dev, "Serial MSB raw : %llx\n", rcv_val);
>>>
>>> 	for (i = 0; i < 48; i += 24) {
>>> -		if (!ms_sensors_crc_valid((rcv_buf >> i) & 0xFFFFFF))
>>> +		if (!ms_sensors_crc_valid((rcv_val >> i) & 0xFFFFFF))
>>> 			return -ENODEV;
>>> 	}
>>>
>>> -	*sn |= (rcv_buf & 0xFFFF00) << 40 | (rcv_buf >> 32);
>>> +	*sn |= (rcv_val & 0xFFFF00) << 40 | (rcv_val >> 32);
>>>
>>> 	return 0;
>>> }
>>>
>>
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" 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-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux