Hi, url: https://github.com/0day-ci/linux/commits/alexandru-tachici-analog-com/hwmon-pmbus-adm1266-add-support/20200728-002155 base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next config: x86_64-randconfig-m001-20200731 (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/hwmon/pmbus/adm1266.c:88 adm1266_pmbus_block_xfer() warn: inconsistent returns 'data->buf_mutex'. # https://github.com/0day-ci/linux/commit/878684621a66ce0c9e2bdd10f9232b07e48ede96 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 878684621a66ce0c9e2bdd10f9232b07e48ede96 vim +88 drivers/hwmon/pmbus/adm1266.c 878684621a66ce0 Alexandru Tachici 2020-07-27 35 static int adm1266_pmbus_block_xfer(struct adm1266_data *data, u8 cmd, u8 w_len, u8 *data_w, 878684621a66ce0 Alexandru Tachici 2020-07-27 36 u8 *data_r) 878684621a66ce0 Alexandru Tachici 2020-07-27 37 { 878684621a66ce0 Alexandru Tachici 2020-07-27 38 struct i2c_client *client = data->client; 878684621a66ce0 Alexandru Tachici 2020-07-27 39 struct i2c_msg msgs[2] = { 878684621a66ce0 Alexandru Tachici 2020-07-27 40 { 878684621a66ce0 Alexandru Tachici 2020-07-27 41 .addr = client->addr, 878684621a66ce0 Alexandru Tachici 2020-07-27 42 .flags = I2C_M_DMA_SAFE, 878684621a66ce0 Alexandru Tachici 2020-07-27 43 .buf = data->write_buf, 878684621a66ce0 Alexandru Tachici 2020-07-27 44 .len = w_len + 2, 878684621a66ce0 Alexandru Tachici 2020-07-27 45 }, 878684621a66ce0 Alexandru Tachici 2020-07-27 46 { 878684621a66ce0 Alexandru Tachici 2020-07-27 47 .addr = client->addr, 878684621a66ce0 Alexandru Tachici 2020-07-27 48 .flags = I2C_M_RD | I2C_M_DMA_SAFE, 878684621a66ce0 Alexandru Tachici 2020-07-27 49 .buf = data->read_buf, 878684621a66ce0 Alexandru Tachici 2020-07-27 50 .len = ADM1266_PMBUS_BLOCK_MAX + 2, 878684621a66ce0 Alexandru Tachici 2020-07-27 51 } ac5fec412db3640 Alexandru Tachici 2020-07-27 52 }; 878684621a66ce0 Alexandru Tachici 2020-07-27 53 u8 addr; 878684621a66ce0 Alexandru Tachici 2020-07-27 54 u8 crc; 878684621a66ce0 Alexandru Tachici 2020-07-27 55 int ret; 878684621a66ce0 Alexandru Tachici 2020-07-27 56 878684621a66ce0 Alexandru Tachici 2020-07-27 57 mutex_lock(&data->buf_mutex); 878684621a66ce0 Alexandru Tachici 2020-07-27 58 878684621a66ce0 Alexandru Tachici 2020-07-27 59 msgs[0].buf[0] = cmd; 878684621a66ce0 Alexandru Tachici 2020-07-27 60 msgs[0].buf[1] = w_len; 878684621a66ce0 Alexandru Tachici 2020-07-27 61 memcpy(&msgs[0].buf[2], data_w, w_len); 878684621a66ce0 Alexandru Tachici 2020-07-27 62 878684621a66ce0 Alexandru Tachici 2020-07-27 63 ret = i2c_transfer(client->adapter, msgs, 2); 878684621a66ce0 Alexandru Tachici 2020-07-27 64 if (ret != 2) { 878684621a66ce0 Alexandru Tachici 2020-07-27 65 if (ret >= 0) 878684621a66ce0 Alexandru Tachici 2020-07-27 66 ret = -EPROTO; 878684621a66ce0 Alexandru Tachici 2020-07-27 67 return ret; Unlock 878684621a66ce0 Alexandru Tachici 2020-07-27 68 } 878684621a66ce0 Alexandru Tachici 2020-07-27 69 878684621a66ce0 Alexandru Tachici 2020-07-27 70 if (client->flags & I2C_CLIENT_PEC) { 878684621a66ce0 Alexandru Tachici 2020-07-27 71 addr = i2c_8bit_addr_from_msg(&msgs[0]); 878684621a66ce0 Alexandru Tachici 2020-07-27 72 crc = crc8(pmbus_crc_table, &addr, 1, 0); 878684621a66ce0 Alexandru Tachici 2020-07-27 73 crc = crc8(pmbus_crc_table, msgs[0].buf, msgs[0].len, crc); 878684621a66ce0 Alexandru Tachici 2020-07-27 74 878684621a66ce0 Alexandru Tachici 2020-07-27 75 addr = i2c_8bit_addr_from_msg(&msgs[1]); 878684621a66ce0 Alexandru Tachici 2020-07-27 76 crc = crc8(pmbus_crc_table, &addr, 1, crc); 878684621a66ce0 Alexandru Tachici 2020-07-27 77 crc = crc8(pmbus_crc_table, msgs[1].buf, msgs[1].buf[0] + 1, crc); 878684621a66ce0 Alexandru Tachici 2020-07-27 78 878684621a66ce0 Alexandru Tachici 2020-07-27 79 if (crc != msgs[1].buf[msgs[1].buf[0] + 1]) 878684621a66ce0 Alexandru Tachici 2020-07-27 80 return -EBADMSG; And unlock here. 878684621a66ce0 Alexandru Tachici 2020-07-27 81 } 878684621a66ce0 Alexandru Tachici 2020-07-27 82 878684621a66ce0 Alexandru Tachici 2020-07-27 83 memcpy(data_r, &msgs[1].buf[1], msgs[1].buf[0]); 878684621a66ce0 Alexandru Tachici 2020-07-27 84 878684621a66ce0 Alexandru Tachici 2020-07-27 85 ret = msgs[1].buf[0]; 878684621a66ce0 Alexandru Tachici 2020-07-27 86 mutex_unlock(&data->buf_mutex); 878684621a66ce0 Alexandru Tachici 2020-07-27 87 878684621a66ce0 Alexandru Tachici 2020-07-27 @88 return ret; 878684621a66ce0 Alexandru Tachici 2020-07-27 89 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org