Re: [BUG] Re: [PATCH] iio: imu: st_lsm6dsx: remove invalid gain value for LSM9DS1

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

 



> On 27.08.19 22:08, Jonathan Cameron wrote:
> > On Tue, 27 Aug 2019 10:26:35 +0200
> > Lorenzo Bianconi <lorenzo@xxxxxxxxxx> wrote:
> > 
> >> Get rid of invalid sensitivity value for LSM9DS1 gyro sensor
> >>
> >> Fixes: 687a60feb9c6 ("iio: imu: st_lsm6dsx: add support for accel/gyro unit of lsm9ds1")
> >> Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx>
> > The zero degree scale is certainly odd otherwise, so good to tidy
> > this up.
> > 
> > Applied to the togreg branch of iio.git.
> > 
> 
> Hi Jon,
> 
> you have applied this too quickly. I've left that zero value in there
> for a reason, see below:
> 
> 
> > Thanks,
> > 
> > Jonathan
> > 
> >> ---

[...]

> 
> You Ooops here and it's pretty obvious! You don't have
> ST_LSM6DSX_FS_LIST_SIZE number of elements in the array anymore, but you
> try to access it (the 4th).

Hi Martin,

according to pahole (x86_64): 

struct st_lsm6dsx_fs {
	 [...]
	 /* size: 8, cachelines: 1, members: 2 *
};

struct st_lsm6dsx_fs_table_entry {
	[...]
	struct st_lsm6dsx_fs fs_avl[4];                  /*     4    32 */
	/* size: 36, cachelines: 1, members: 2 */
};

struct st_lsm6dsx_settings {
	[...]
	struct st_lsm6dsx_fs_table_entry fs_table[2];    /*   284    72 */
	/* size: 464, cachelines: 8, members: 14 */
};

struct st_lsm6dsx_fs_table_entry in st_lsm6dsx_settings will always have 4
elements for fs_avl array and since the array is defined as static the
uninitialized elements are set to 0.

Could you please share the ops you are getting?

Regards,
Lorenzo

> 
> I suggest reverting this (if not able to delete it entirely) and start
> over in case this "invalid" value thing hurts and needs to get fixed.
> 
> I any case, there _is_ something we should do because it's not too
> obvious what constraints the st_lsm6dsx_sensor_settings struct
> definition has. It should be mostly clear when looking at the header but
> a few inline comments might help.
> 
> thanks,
> 
>                           martin
> 
> 
> 
> >> +
> >>  		len += scnprintf(buf + len, PAGE_SIZE - len, "0.%06u ",
> >> -				 hw->settings->fs_table[id].fs_avl[i].gain);
> >> +				 fs_table->fs_avl[i].gain);
> >> +	}
> >>  	buf[len - 1] = '\n';
> >>  
> >>  	return len;
> > 
> 

Attachment: signature.asc
Description: PGP signature


[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