On Thu, Mar 7, 2019 at 1:46 PM Nathan Chancellor <natechancellor@xxxxxxxxx> wrote: > > When building with -Wsometimes-uninitialized, Clang warns: > > drivers/iio/common/ssp_sensors/ssp_iio.c:95:6: warning: variable > 'calculated_time' is used uninitialized whenever 'if' condition is false > [-Wsometimes-uninitialized] > > While it isn't wrong, this will never be a problem because > iio_push_to_buffers_with_timestamp only uses calculated_time > on the same condition that it is assigned (when scan_timestamp > is not zero). While iio_push_to_buffers_with_timestamp is marked > as inline, Clang does inlining in the optimization stage, which > happens after the semantic analysis phase (plus inline is merely > a hint to the compiler). > > Fix this by just zero initializing calculated_time. > > Link: https://github.com/ClangBuiltLinux/linux/issues/394 > Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx> Knowing that the same invariant holds across function boundaries to protect access of unitialized values and thus undefined behavior sounds tricky to diagnose accurately. Thanks for the patch. Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > --- > drivers/iio/common/ssp_sensors/ssp_iio.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iio/common/ssp_sensors/ssp_iio.c b/drivers/iio/common/ssp_sensors/ssp_iio.c > index 645f2e3975db..e38f704d88b7 100644 > --- a/drivers/iio/common/ssp_sensors/ssp_iio.c > +++ b/drivers/iio/common/ssp_sensors/ssp_iio.c > @@ -81,7 +81,7 @@ int ssp_common_process_data(struct iio_dev *indio_dev, void *buf, > unsigned int len, int64_t timestamp) > { > __le32 time; > - int64_t calculated_time; > + int64_t calculated_time = 0; > struct ssp_sensor_data *spd = iio_priv(indio_dev); > > if (indio_dev->scan_bytes == 0) > -- > 2.21.0 > -- Thanks, ~Nick Desaulniers