Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

hwmon: (tps53679) Fix device ID comparison and printing in tps53676_identify()

tps53676_identify() uses strncmp() to compare the device ID buffer
against a byte sequence containing embedded non-printable bytes
(\x53\x67\x60). strncmp() is semantically wrong for binary data
comparison; use memcmp() instead.

Additionally, the buffer from i2c_smbus_read_block_data() is not
NUL-terminated, so printing it with "%s" in the error path is
undefined behavior and may read past the buffer. Use "%*ph" to
hex-dump the actual bytes returned.

Per the datasheet, the expected device ID is the 6-byte sequence
54 49 53 67 60 00 ("TI\x53\x67\x60\x00"), so compare all 6 bytes
including the trailing NUL.

Fixes: cb3d37b59012 ("hwmon: (pmbus/tps53679) Add support for TI TPS53676")
Signed-off-by: Sanman Pradhan <psanman@juniper.net>
Link: https://lore.kernel.org/r/20260330155618.77403-1-sanman.pradhan@hpe.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Sanman Pradhan and committed by
Guenter Roeck
ca34ee6d a9d2fbd3

+2 -2
+2 -2
drivers/hwmon/pmbus/tps53679.c
··· 175 175 ret = i2c_smbus_read_block_data(client, PMBUS_IC_DEVICE_ID, buf); 176 176 if (ret < 0) 177 177 return ret; 178 - if (strncmp("TI\x53\x67\x60", buf, 5)) { 179 - dev_err(&client->dev, "Unexpected device ID: %s\n", buf); 178 + if (ret != 6 || memcmp(buf, "TI\x53\x67\x60\x00", 6)) { 179 + dev_err(&client->dev, "Unexpected device ID: %*ph\n", ret, buf); 180 180 return -ENODEV; 181 181 } 182 182