On Wed, Apr 28, 2021 at 03:25:34PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > In commit b05ae01fdb89, someone tried to make the driver handle i2c read > errors by simply zeroing out the register contents, but for some reason > left unaltered the code that sets the cached register value the function > call return value. > > The original patch was authored by a member of the Underhanded > Mangle-happy Nerds, I'm not terribly surprised. I don't have the > hardware anymore so I can't test this, but it seems like a pretty > obvious API usage fix to me... > > Fixes: b05ae01fdb89 ("misc/ics932s401: Add a missing check to i2c_smbus_read_word_data") > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > drivers/misc/ics932s401.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/misc/ics932s401.c b/drivers/misc/ics932s401.c > index 2bdf560ee681..0f9ea75b0b18 100644 > --- a/drivers/misc/ics932s401.c > +++ b/drivers/misc/ics932s401.c > @@ -134,7 +134,7 @@ static struct ics932s401_data *ics932s401_update_device(struct device *dev) > for (i = 0; i < NUM_MIRRORED_REGS; i++) { > temp = i2c_smbus_read_word_data(client, regs_to_copy[i]); > if (temp < 0) > - data->regs[regs_to_copy[i]] = 0; > + temp = 0; > data->regs[regs_to_copy[i]] = temp >> 8; > } > Many thanks for looking at this again, I'll add it to my series of patches for "reviewing all the crap and fixing it up" that I will be working to get merged for 5.13-final. greg k-h