Re: [PATCH v7 2/9] hwmon: pmbus: adm1266: Add Block process call
From: Dan Carpenter
Date: Wed Aug 05 2020 - 16:13:37 EST
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 <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
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@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip