All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
@ 2021-08-22  1:18 ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-22  1:18 UTC (permalink / raw)
  To: Kai Ye; +Cc: kbuild-all, linux-kernel, Herbert Xu

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   9ff50bf2f2ff5fab01cac26d8eed21a89308e6ef
commit: 3bbf0783636be8fd672907df25904288f14566f2 crypto: hisilicon/qm - supports to inquiry each function's QoS
date:   9 weeks ago
compiler: ia64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck warnings: (new ones prefixed by >>)
>> drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
    ret = sscanf(buf, "%ld", val);
          ^
>> drivers/crypto/hisilicon/qm.c:4135:8: warning: %x in format string (no. 2) requires 'unsigned int *' but the argument type is 'signed int *'. [invalidScanfArgType_int]
    ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
          ^

cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
    ret = sscanf(buf, "%ld", val);
          ^
>> drivers/crypto/hisilicon/qm.c:4135:8: warning: %x in format string (no. 2) requires 'unsigned int *' but the argument type is 'signed int *'. [invalidScanfArgType_int]
    ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
          ^
>> drivers/crypto/hisilicon/qm.c:4122:8: warning: sscanf() without field width limits can crash with huge input data. [invalidscanf]
    ret = sscanf(tbuf, "%s %s", tbuf_bdf, val_buf);
          ^
>> drivers/crypto/hisilicon/qm.c:4031:9: warning: Uninitialized variable: ret [uninitvar]
    return ret;
           ^

vim +4077 drivers/crypto/hisilicon/qm.c

3bbf0783636be8 Kai Ye 2021-06-11  4002  
3bbf0783636be8 Kai Ye 2021-06-11  4003  static int qm_vf_read_qos(struct hisi_qm *qm)
3bbf0783636be8 Kai Ye 2021-06-11  4004  {
3bbf0783636be8 Kai Ye 2021-06-11  4005  	int cnt = 0;
3bbf0783636be8 Kai Ye 2021-06-11  4006  	int ret;
3bbf0783636be8 Kai Ye 2021-06-11  4007  
3bbf0783636be8 Kai Ye 2021-06-11  4008  	/* reset mailbox qos val */
3bbf0783636be8 Kai Ye 2021-06-11  4009  	qm->mb_qos = 0;
3bbf0783636be8 Kai Ye 2021-06-11  4010  
3bbf0783636be8 Kai Ye 2021-06-11  4011  	/* vf ping pf to get function qos */
3bbf0783636be8 Kai Ye 2021-06-11  4012  	if (qm->ops->ping_pf) {
3bbf0783636be8 Kai Ye 2021-06-11  4013  		ret = qm->ops->ping_pf(qm, QM_VF_GET_QOS);
3bbf0783636be8 Kai Ye 2021-06-11  4014  		if (ret) {
3bbf0783636be8 Kai Ye 2021-06-11  4015  			pci_err(qm->pdev, "failed to send cmd to PF to get qos!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4016  			return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4017  		}
3bbf0783636be8 Kai Ye 2021-06-11  4018  	}
3bbf0783636be8 Kai Ye 2021-06-11  4019  
3bbf0783636be8 Kai Ye 2021-06-11  4020  	while (true) {
3bbf0783636be8 Kai Ye 2021-06-11  4021  		msleep(QM_WAIT_DST_ACK);
3bbf0783636be8 Kai Ye 2021-06-11  4022  		if (qm->mb_qos)
3bbf0783636be8 Kai Ye 2021-06-11  4023  			break;
3bbf0783636be8 Kai Ye 2021-06-11  4024  
3bbf0783636be8 Kai Ye 2021-06-11  4025  		if (++cnt > QM_MAX_VF_WAIT_COUNT) {
3bbf0783636be8 Kai Ye 2021-06-11  4026  			pci_err(qm->pdev, "PF ping VF timeout!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4027  			return  -ETIMEDOUT;
3bbf0783636be8 Kai Ye 2021-06-11  4028  		}
3bbf0783636be8 Kai Ye 2021-06-11  4029  	}
3bbf0783636be8 Kai Ye 2021-06-11  4030  
3bbf0783636be8 Kai Ye 2021-06-11 @4031  	return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4032  }
3bbf0783636be8 Kai Ye 2021-06-11  4033  
3bbf0783636be8 Kai Ye 2021-06-11  4034  static ssize_t qm_algqos_read(struct file *filp, char __user *buf,
3bbf0783636be8 Kai Ye 2021-06-11  4035  			       size_t count, loff_t *pos)
3bbf0783636be8 Kai Ye 2021-06-11  4036  {
3bbf0783636be8 Kai Ye 2021-06-11  4037  	struct hisi_qm *qm = filp->private_data;
3bbf0783636be8 Kai Ye 2021-06-11  4038  	char tbuf[QM_DBG_READ_LEN];
3bbf0783636be8 Kai Ye 2021-06-11  4039  	u32 qos_val, ir;
3bbf0783636be8 Kai Ye 2021-06-11  4040  	int ret;
3bbf0783636be8 Kai Ye 2021-06-11  4041  
3bbf0783636be8 Kai Ye 2021-06-11  4042  	/* Mailbox and reset cannot be operated at the same time */
3bbf0783636be8 Kai Ye 2021-06-11  4043  	if (test_and_set_bit(QM_RESETTING, &qm->misc_ctl)) {
3bbf0783636be8 Kai Ye 2021-06-11  4044  		pci_err(qm->pdev, "dev resetting, read alg qos failed!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4045  		return  -EAGAIN;
3bbf0783636be8 Kai Ye 2021-06-11  4046  	}
3bbf0783636be8 Kai Ye 2021-06-11  4047  
3bbf0783636be8 Kai Ye 2021-06-11  4048  	if (qm->fun_type == QM_HW_PF) {
3bbf0783636be8 Kai Ye 2021-06-11  4049  		ir = qm_get_shaper_vft_qos(qm, 0);
3bbf0783636be8 Kai Ye 2021-06-11  4050  	} else {
3bbf0783636be8 Kai Ye 2021-06-11  4051  		ret = qm_vf_read_qos(qm);
3bbf0783636be8 Kai Ye 2021-06-11  4052  		if (ret)
3bbf0783636be8 Kai Ye 2021-06-11  4053  			goto err_get_status;
3bbf0783636be8 Kai Ye 2021-06-11  4054  		ir = qm->mb_qos;
3bbf0783636be8 Kai Ye 2021-06-11  4055  	}
3bbf0783636be8 Kai Ye 2021-06-11  4056  
3bbf0783636be8 Kai Ye 2021-06-11  4057  	qos_val = ir / QM_QOS_RATE;
3bbf0783636be8 Kai Ye 2021-06-11  4058  	ret = scnprintf(tbuf, QM_DBG_READ_LEN, "%u\n", qos_val);
3bbf0783636be8 Kai Ye 2021-06-11  4059  
3bbf0783636be8 Kai Ye 2021-06-11  4060  	ret =  simple_read_from_buffer(buf, count, pos, tbuf, ret);
3bbf0783636be8 Kai Ye 2021-06-11  4061  
3bbf0783636be8 Kai Ye 2021-06-11  4062  err_get_status:
3bbf0783636be8 Kai Ye 2021-06-11  4063  	clear_bit(QM_RESETTING, &qm->misc_ctl);
3bbf0783636be8 Kai Ye 2021-06-11  4064  	return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4065  }
3bbf0783636be8 Kai Ye 2021-06-11  4066  
72b010dc33b959 Kai Ye 2021-06-11  4067  static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
72b010dc33b959 Kai Ye 2021-06-11  4068  {
72b010dc33b959 Kai Ye 2021-06-11  4069  	int buflen = strlen(buf);
72b010dc33b959 Kai Ye 2021-06-11  4070  	int ret, i;
72b010dc33b959 Kai Ye 2021-06-11  4071  
72b010dc33b959 Kai Ye 2021-06-11  4072  	for (i = 0; i < buflen; i++) {
72b010dc33b959 Kai Ye 2021-06-11  4073  		if (!isdigit(buf[i]))
72b010dc33b959 Kai Ye 2021-06-11  4074  			return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4075  	}
72b010dc33b959 Kai Ye 2021-06-11  4076  
72b010dc33b959 Kai Ye 2021-06-11 @4077  	ret = sscanf(buf, "%ld", val);
72b010dc33b959 Kai Ye 2021-06-11  4078  	if (ret != QM_QOS_VAL_NUM)
72b010dc33b959 Kai Ye 2021-06-11  4079  		return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4080  
72b010dc33b959 Kai Ye 2021-06-11  4081  	return 0;
72b010dc33b959 Kai Ye 2021-06-11  4082  }
72b010dc33b959 Kai Ye 2021-06-11  4083  
72b010dc33b959 Kai Ye 2021-06-11  4084  static ssize_t qm_algqos_write(struct file *filp, const char __user *buf,
72b010dc33b959 Kai Ye 2021-06-11  4085  			       size_t count, loff_t *pos)
72b010dc33b959 Kai Ye 2021-06-11  4086  {
72b010dc33b959 Kai Ye 2021-06-11  4087  	struct hisi_qm *qm = filp->private_data;
72b010dc33b959 Kai Ye 2021-06-11  4088  	char tbuf[QM_DBG_READ_LEN];
72b010dc33b959 Kai Ye 2021-06-11  4089  	int tmp1, bus, device, function;
72b010dc33b959 Kai Ye 2021-06-11  4090  	char tbuf_bdf[QM_DBG_READ_LEN] = {0};
72b010dc33b959 Kai Ye 2021-06-11  4091  	char val_buf[QM_QOS_VAL_MAX_LEN] = {0};
72b010dc33b959 Kai Ye 2021-06-11  4092  	unsigned int fun_index;
72b010dc33b959 Kai Ye 2021-06-11  4093  	unsigned long val = 0;
72b010dc33b959 Kai Ye 2021-06-11  4094  	int len, ret;
72b010dc33b959 Kai Ye 2021-06-11  4095  
72b010dc33b959 Kai Ye 2021-06-11  4096  	if (qm->fun_type == QM_HW_VF)
72b010dc33b959 Kai Ye 2021-06-11  4097  		return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4098  
72b010dc33b959 Kai Ye 2021-06-11  4099  	/* Mailbox and reset cannot be operated at the same time */
72b010dc33b959 Kai Ye 2021-06-11  4100  	if (test_and_set_bit(QM_RESETTING, &qm->misc_ctl)) {
72b010dc33b959 Kai Ye 2021-06-11  4101  		pci_err(qm->pdev, "dev resetting, write alg qos failed!\n");
72b010dc33b959 Kai Ye 2021-06-11  4102  		return -EAGAIN;
72b010dc33b959 Kai Ye 2021-06-11  4103  	}
72b010dc33b959 Kai Ye 2021-06-11  4104  
72b010dc33b959 Kai Ye 2021-06-11  4105  	if (*pos != 0) {
72b010dc33b959 Kai Ye 2021-06-11  4106  		ret = 0;
72b010dc33b959 Kai Ye 2021-06-11  4107  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4108  	}
72b010dc33b959 Kai Ye 2021-06-11  4109  
72b010dc33b959 Kai Ye 2021-06-11  4110  	if (count >= QM_DBG_READ_LEN) {
72b010dc33b959 Kai Ye 2021-06-11  4111  		ret = -ENOSPC;
72b010dc33b959 Kai Ye 2021-06-11  4112  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4113  	}
72b010dc33b959 Kai Ye 2021-06-11  4114  
72b010dc33b959 Kai Ye 2021-06-11  4115  	len = simple_write_to_buffer(tbuf, QM_DBG_READ_LEN - 1, pos, buf, count);
72b010dc33b959 Kai Ye 2021-06-11  4116  	if (len < 0) {
72b010dc33b959 Kai Ye 2021-06-11  4117  		ret = len;
72b010dc33b959 Kai Ye 2021-06-11  4118  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4119  	}
72b010dc33b959 Kai Ye 2021-06-11  4120  
72b010dc33b959 Kai Ye 2021-06-11  4121  	tbuf[len] = '\0';
72b010dc33b959 Kai Ye 2021-06-11 @4122  	ret = sscanf(tbuf, "%s %s", tbuf_bdf, val_buf);
72b010dc33b959 Kai Ye 2021-06-11  4123  	if (ret != QM_QOS_PARAM_NUM) {
72b010dc33b959 Kai Ye 2021-06-11  4124  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4125  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4126  	}
72b010dc33b959 Kai Ye 2021-06-11  4127  
72b010dc33b959 Kai Ye 2021-06-11  4128  	ret = qm_qos_value_init(val_buf, &val);
72b010dc33b959 Kai Ye 2021-06-11  4129  	if (val == 0 || val > QM_QOS_MAX_VAL || ret) {
72b010dc33b959 Kai Ye 2021-06-11  4130  		pci_err(qm->pdev, "input qos value is error, please set 1~1000!\n");
72b010dc33b959 Kai Ye 2021-06-11  4131  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4132  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4133  	}
72b010dc33b959 Kai Ye 2021-06-11  4134  
72b010dc33b959 Kai Ye 2021-06-11 @4135  	ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
72b010dc33b959 Kai Ye 2021-06-11  4136  	if (ret != QM_QOS_BDF_PARAM_NUM) {
72b010dc33b959 Kai Ye 2021-06-11  4137  		pci_err(qm->pdev, "input pci bdf value is error!\n");
72b010dc33b959 Kai Ye 2021-06-11  4138  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4139  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4140  	}
72b010dc33b959 Kai Ye 2021-06-11  4141  
72b010dc33b959 Kai Ye 2021-06-11  4142  	fun_index = device * 8 + function;
72b010dc33b959 Kai Ye 2021-06-11  4143  
72b010dc33b959 Kai Ye 2021-06-11  4144  	ret = qm_func_shaper_enable(qm, fun_index, val);
72b010dc33b959 Kai Ye 2021-06-11  4145  	if (ret) {
72b010dc33b959 Kai Ye 2021-06-11  4146  		pci_err(qm->pdev, "failed to enable function shaper!\n");
72b010dc33b959 Kai Ye 2021-06-11  4147  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4148  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4149  	}
72b010dc33b959 Kai Ye 2021-06-11  4150  
72b010dc33b959 Kai Ye 2021-06-11  4151  	ret =  count;
72b010dc33b959 Kai Ye 2021-06-11  4152  
72b010dc33b959 Kai Ye 2021-06-11  4153  err_get_status:
72b010dc33b959 Kai Ye 2021-06-11  4154  	clear_bit(QM_RESETTING, &qm->misc_ctl);
72b010dc33b959 Kai Ye 2021-06-11  4155  	return ret;
72b010dc33b959 Kai Ye 2021-06-11  4156  }
72b010dc33b959 Kai Ye 2021-06-11  4157  

:::::: The code at line 4077 was first introduced by commit
:::::: 72b010dc33b9598883bc84d40b0a9d07c16f5e39 crypto: hisilicon/qm - supports writing QoS int the host

:::::: TO: Kai Ye <yekai13@huawei.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
@ 2021-08-22  1:18 ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-22  1:18 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 11993 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   9ff50bf2f2ff5fab01cac26d8eed21a89308e6ef
commit: 3bbf0783636be8fd672907df25904288f14566f2 crypto: hisilicon/qm - supports to inquiry each function's QoS
date:   9 weeks ago
compiler: ia64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck warnings: (new ones prefixed by >>)
>> drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
    ret = sscanf(buf, "%ld", val);
          ^
>> drivers/crypto/hisilicon/qm.c:4135:8: warning: %x in format string (no. 2) requires 'unsigned int *' but the argument type is 'signed int *'. [invalidScanfArgType_int]
    ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
          ^

cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int]
    ret = sscanf(buf, "%ld", val);
          ^
>> drivers/crypto/hisilicon/qm.c:4135:8: warning: %x in format string (no. 2) requires 'unsigned int *' but the argument type is 'signed int *'. [invalidScanfArgType_int]
    ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
          ^
>> drivers/crypto/hisilicon/qm.c:4122:8: warning: sscanf() without field width limits can crash with huge input data. [invalidscanf]
    ret = sscanf(tbuf, "%s %s", tbuf_bdf, val_buf);
          ^
>> drivers/crypto/hisilicon/qm.c:4031:9: warning: Uninitialized variable: ret [uninitvar]
    return ret;
           ^

vim +4077 drivers/crypto/hisilicon/qm.c

3bbf0783636be8 Kai Ye 2021-06-11  4002  
3bbf0783636be8 Kai Ye 2021-06-11  4003  static int qm_vf_read_qos(struct hisi_qm *qm)
3bbf0783636be8 Kai Ye 2021-06-11  4004  {
3bbf0783636be8 Kai Ye 2021-06-11  4005  	int cnt = 0;
3bbf0783636be8 Kai Ye 2021-06-11  4006  	int ret;
3bbf0783636be8 Kai Ye 2021-06-11  4007  
3bbf0783636be8 Kai Ye 2021-06-11  4008  	/* reset mailbox qos val */
3bbf0783636be8 Kai Ye 2021-06-11  4009  	qm->mb_qos = 0;
3bbf0783636be8 Kai Ye 2021-06-11  4010  
3bbf0783636be8 Kai Ye 2021-06-11  4011  	/* vf ping pf to get function qos */
3bbf0783636be8 Kai Ye 2021-06-11  4012  	if (qm->ops->ping_pf) {
3bbf0783636be8 Kai Ye 2021-06-11  4013  		ret = qm->ops->ping_pf(qm, QM_VF_GET_QOS);
3bbf0783636be8 Kai Ye 2021-06-11  4014  		if (ret) {
3bbf0783636be8 Kai Ye 2021-06-11  4015  			pci_err(qm->pdev, "failed to send cmd to PF to get qos!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4016  			return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4017  		}
3bbf0783636be8 Kai Ye 2021-06-11  4018  	}
3bbf0783636be8 Kai Ye 2021-06-11  4019  
3bbf0783636be8 Kai Ye 2021-06-11  4020  	while (true) {
3bbf0783636be8 Kai Ye 2021-06-11  4021  		msleep(QM_WAIT_DST_ACK);
3bbf0783636be8 Kai Ye 2021-06-11  4022  		if (qm->mb_qos)
3bbf0783636be8 Kai Ye 2021-06-11  4023  			break;
3bbf0783636be8 Kai Ye 2021-06-11  4024  
3bbf0783636be8 Kai Ye 2021-06-11  4025  		if (++cnt > QM_MAX_VF_WAIT_COUNT) {
3bbf0783636be8 Kai Ye 2021-06-11  4026  			pci_err(qm->pdev, "PF ping VF timeout!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4027  			return  -ETIMEDOUT;
3bbf0783636be8 Kai Ye 2021-06-11  4028  		}
3bbf0783636be8 Kai Ye 2021-06-11  4029  	}
3bbf0783636be8 Kai Ye 2021-06-11  4030  
3bbf0783636be8 Kai Ye 2021-06-11 @4031  	return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4032  }
3bbf0783636be8 Kai Ye 2021-06-11  4033  
3bbf0783636be8 Kai Ye 2021-06-11  4034  static ssize_t qm_algqos_read(struct file *filp, char __user *buf,
3bbf0783636be8 Kai Ye 2021-06-11  4035  			       size_t count, loff_t *pos)
3bbf0783636be8 Kai Ye 2021-06-11  4036  {
3bbf0783636be8 Kai Ye 2021-06-11  4037  	struct hisi_qm *qm = filp->private_data;
3bbf0783636be8 Kai Ye 2021-06-11  4038  	char tbuf[QM_DBG_READ_LEN];
3bbf0783636be8 Kai Ye 2021-06-11  4039  	u32 qos_val, ir;
3bbf0783636be8 Kai Ye 2021-06-11  4040  	int ret;
3bbf0783636be8 Kai Ye 2021-06-11  4041  
3bbf0783636be8 Kai Ye 2021-06-11  4042  	/* Mailbox and reset cannot be operated at the same time */
3bbf0783636be8 Kai Ye 2021-06-11  4043  	if (test_and_set_bit(QM_RESETTING, &qm->misc_ctl)) {
3bbf0783636be8 Kai Ye 2021-06-11  4044  		pci_err(qm->pdev, "dev resetting, read alg qos failed!\n");
3bbf0783636be8 Kai Ye 2021-06-11  4045  		return  -EAGAIN;
3bbf0783636be8 Kai Ye 2021-06-11  4046  	}
3bbf0783636be8 Kai Ye 2021-06-11  4047  
3bbf0783636be8 Kai Ye 2021-06-11  4048  	if (qm->fun_type == QM_HW_PF) {
3bbf0783636be8 Kai Ye 2021-06-11  4049  		ir = qm_get_shaper_vft_qos(qm, 0);
3bbf0783636be8 Kai Ye 2021-06-11  4050  	} else {
3bbf0783636be8 Kai Ye 2021-06-11  4051  		ret = qm_vf_read_qos(qm);
3bbf0783636be8 Kai Ye 2021-06-11  4052  		if (ret)
3bbf0783636be8 Kai Ye 2021-06-11  4053  			goto err_get_status;
3bbf0783636be8 Kai Ye 2021-06-11  4054  		ir = qm->mb_qos;
3bbf0783636be8 Kai Ye 2021-06-11  4055  	}
3bbf0783636be8 Kai Ye 2021-06-11  4056  
3bbf0783636be8 Kai Ye 2021-06-11  4057  	qos_val = ir / QM_QOS_RATE;
3bbf0783636be8 Kai Ye 2021-06-11  4058  	ret = scnprintf(tbuf, QM_DBG_READ_LEN, "%u\n", qos_val);
3bbf0783636be8 Kai Ye 2021-06-11  4059  
3bbf0783636be8 Kai Ye 2021-06-11  4060  	ret =  simple_read_from_buffer(buf, count, pos, tbuf, ret);
3bbf0783636be8 Kai Ye 2021-06-11  4061  
3bbf0783636be8 Kai Ye 2021-06-11  4062  err_get_status:
3bbf0783636be8 Kai Ye 2021-06-11  4063  	clear_bit(QM_RESETTING, &qm->misc_ctl);
3bbf0783636be8 Kai Ye 2021-06-11  4064  	return ret;
3bbf0783636be8 Kai Ye 2021-06-11  4065  }
3bbf0783636be8 Kai Ye 2021-06-11  4066  
72b010dc33b959 Kai Ye 2021-06-11  4067  static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
72b010dc33b959 Kai Ye 2021-06-11  4068  {
72b010dc33b959 Kai Ye 2021-06-11  4069  	int buflen = strlen(buf);
72b010dc33b959 Kai Ye 2021-06-11  4070  	int ret, i;
72b010dc33b959 Kai Ye 2021-06-11  4071  
72b010dc33b959 Kai Ye 2021-06-11  4072  	for (i = 0; i < buflen; i++) {
72b010dc33b959 Kai Ye 2021-06-11  4073  		if (!isdigit(buf[i]))
72b010dc33b959 Kai Ye 2021-06-11  4074  			return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4075  	}
72b010dc33b959 Kai Ye 2021-06-11  4076  
72b010dc33b959 Kai Ye 2021-06-11 @4077  	ret = sscanf(buf, "%ld", val);
72b010dc33b959 Kai Ye 2021-06-11  4078  	if (ret != QM_QOS_VAL_NUM)
72b010dc33b959 Kai Ye 2021-06-11  4079  		return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4080  
72b010dc33b959 Kai Ye 2021-06-11  4081  	return 0;
72b010dc33b959 Kai Ye 2021-06-11  4082  }
72b010dc33b959 Kai Ye 2021-06-11  4083  
72b010dc33b959 Kai Ye 2021-06-11  4084  static ssize_t qm_algqos_write(struct file *filp, const char __user *buf,
72b010dc33b959 Kai Ye 2021-06-11  4085  			       size_t count, loff_t *pos)
72b010dc33b959 Kai Ye 2021-06-11  4086  {
72b010dc33b959 Kai Ye 2021-06-11  4087  	struct hisi_qm *qm = filp->private_data;
72b010dc33b959 Kai Ye 2021-06-11  4088  	char tbuf[QM_DBG_READ_LEN];
72b010dc33b959 Kai Ye 2021-06-11  4089  	int tmp1, bus, device, function;
72b010dc33b959 Kai Ye 2021-06-11  4090  	char tbuf_bdf[QM_DBG_READ_LEN] = {0};
72b010dc33b959 Kai Ye 2021-06-11  4091  	char val_buf[QM_QOS_VAL_MAX_LEN] = {0};
72b010dc33b959 Kai Ye 2021-06-11  4092  	unsigned int fun_index;
72b010dc33b959 Kai Ye 2021-06-11  4093  	unsigned long val = 0;
72b010dc33b959 Kai Ye 2021-06-11  4094  	int len, ret;
72b010dc33b959 Kai Ye 2021-06-11  4095  
72b010dc33b959 Kai Ye 2021-06-11  4096  	if (qm->fun_type == QM_HW_VF)
72b010dc33b959 Kai Ye 2021-06-11  4097  		return -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4098  
72b010dc33b959 Kai Ye 2021-06-11  4099  	/* Mailbox and reset cannot be operated at the same time */
72b010dc33b959 Kai Ye 2021-06-11  4100  	if (test_and_set_bit(QM_RESETTING, &qm->misc_ctl)) {
72b010dc33b959 Kai Ye 2021-06-11  4101  		pci_err(qm->pdev, "dev resetting, write alg qos failed!\n");
72b010dc33b959 Kai Ye 2021-06-11  4102  		return -EAGAIN;
72b010dc33b959 Kai Ye 2021-06-11  4103  	}
72b010dc33b959 Kai Ye 2021-06-11  4104  
72b010dc33b959 Kai Ye 2021-06-11  4105  	if (*pos != 0) {
72b010dc33b959 Kai Ye 2021-06-11  4106  		ret = 0;
72b010dc33b959 Kai Ye 2021-06-11  4107  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4108  	}
72b010dc33b959 Kai Ye 2021-06-11  4109  
72b010dc33b959 Kai Ye 2021-06-11  4110  	if (count >= QM_DBG_READ_LEN) {
72b010dc33b959 Kai Ye 2021-06-11  4111  		ret = -ENOSPC;
72b010dc33b959 Kai Ye 2021-06-11  4112  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4113  	}
72b010dc33b959 Kai Ye 2021-06-11  4114  
72b010dc33b959 Kai Ye 2021-06-11  4115  	len = simple_write_to_buffer(tbuf, QM_DBG_READ_LEN - 1, pos, buf, count);
72b010dc33b959 Kai Ye 2021-06-11  4116  	if (len < 0) {
72b010dc33b959 Kai Ye 2021-06-11  4117  		ret = len;
72b010dc33b959 Kai Ye 2021-06-11  4118  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4119  	}
72b010dc33b959 Kai Ye 2021-06-11  4120  
72b010dc33b959 Kai Ye 2021-06-11  4121  	tbuf[len] = '\0';
72b010dc33b959 Kai Ye 2021-06-11 @4122  	ret = sscanf(tbuf, "%s %s", tbuf_bdf, val_buf);
72b010dc33b959 Kai Ye 2021-06-11  4123  	if (ret != QM_QOS_PARAM_NUM) {
72b010dc33b959 Kai Ye 2021-06-11  4124  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4125  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4126  	}
72b010dc33b959 Kai Ye 2021-06-11  4127  
72b010dc33b959 Kai Ye 2021-06-11  4128  	ret = qm_qos_value_init(val_buf, &val);
72b010dc33b959 Kai Ye 2021-06-11  4129  	if (val == 0 || val > QM_QOS_MAX_VAL || ret) {
72b010dc33b959 Kai Ye 2021-06-11  4130  		pci_err(qm->pdev, "input qos value is error, please set 1~1000!\n");
72b010dc33b959 Kai Ye 2021-06-11  4131  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4132  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4133  	}
72b010dc33b959 Kai Ye 2021-06-11  4134  
72b010dc33b959 Kai Ye 2021-06-11 @4135  	ret = sscanf(tbuf_bdf, "%d:%x:%d.%d", &tmp1, &bus, &device, &function);
72b010dc33b959 Kai Ye 2021-06-11  4136  	if (ret != QM_QOS_BDF_PARAM_NUM) {
72b010dc33b959 Kai Ye 2021-06-11  4137  		pci_err(qm->pdev, "input pci bdf value is error!\n");
72b010dc33b959 Kai Ye 2021-06-11  4138  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4139  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4140  	}
72b010dc33b959 Kai Ye 2021-06-11  4141  
72b010dc33b959 Kai Ye 2021-06-11  4142  	fun_index = device * 8 + function;
72b010dc33b959 Kai Ye 2021-06-11  4143  
72b010dc33b959 Kai Ye 2021-06-11  4144  	ret = qm_func_shaper_enable(qm, fun_index, val);
72b010dc33b959 Kai Ye 2021-06-11  4145  	if (ret) {
72b010dc33b959 Kai Ye 2021-06-11  4146  		pci_err(qm->pdev, "failed to enable function shaper!\n");
72b010dc33b959 Kai Ye 2021-06-11  4147  		ret = -EINVAL;
72b010dc33b959 Kai Ye 2021-06-11  4148  		goto err_get_status;
72b010dc33b959 Kai Ye 2021-06-11  4149  	}
72b010dc33b959 Kai Ye 2021-06-11  4150  
72b010dc33b959 Kai Ye 2021-06-11  4151  	ret =  count;
72b010dc33b959 Kai Ye 2021-06-11  4152  
72b010dc33b959 Kai Ye 2021-06-11  4153  err_get_status:
72b010dc33b959 Kai Ye 2021-06-11  4154  	clear_bit(QM_RESETTING, &qm->misc_ctl);
72b010dc33b959 Kai Ye 2021-06-11  4155  	return ret;
72b010dc33b959 Kai Ye 2021-06-11  4156  }
72b010dc33b959 Kai Ye 2021-06-11  4157  

:::::: The code at line 4077 was first introduced by commit
:::::: 72b010dc33b9598883bc84d40b0a9d07c16f5e39 crypto: hisilicon/qm - supports writing QoS int the host

:::::: TO: Kai Ye <yekai13@huawei.com>
:::::: CC: Herbert Xu <herbert@gondor.apana.org.au>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* crypto: hisilicon - Fix sscanf format signedness
  2021-08-22  1:18 ` kernel test robot
@ 2021-08-27  8:43   ` Herbert Xu
  -1 siblings, 0 replies; 6+ messages in thread
From: Herbert Xu @ 2021-08-27  8:43 UTC (permalink / raw)
  To: kernel test robot
  Cc: Kai Ye, kbuild-all, linux-kernel, Linux Crypto Mailing List

On Sun, Aug 22, 2021 at 09:18:20AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   9ff50bf2f2ff5fab01cac26d8eed21a89308e6ef
> commit: 3bbf0783636be8fd672907df25904288f14566f2 crypto: hisilicon/qm - supports to inquiry each function's QoS
> date:   9 weeks ago
> compiler: ia64-linux-gcc (GCC) 11.2.0
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

---8<---
The function qm_qos_value_init expects an unsigned integer but
is incorrectly supplying a signed format to sscanf.  This patch
fixes it.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index 55be00374468..2e9bbec7d1f5 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -4191,7 +4191,7 @@ static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
 			return -EINVAL;
 	}
 
-	ret = sscanf(buf, "%ld", val);
+	ret = sscanf(buf, "%lu", val);
 	if (ret != QM_QOS_VAL_NUM)
 		return -EINVAL;
 
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* crypto: hisilicon - Fix sscanf format signedness
@ 2021-08-27  8:43   ` Herbert Xu
  0 siblings, 0 replies; 6+ messages in thread
From: Herbert Xu @ 2021-08-27  8:43 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1356 bytes --]

On Sun, Aug 22, 2021 at 09:18:20AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   9ff50bf2f2ff5fab01cac26d8eed21a89308e6ef
> commit: 3bbf0783636be8fd672907df25904288f14566f2 crypto: hisilicon/qm - supports to inquiry each function's QoS
> date:   9 weeks ago
> compiler: ia64-linux-gcc (GCC) 11.2.0
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

---8<---
The function qm_qos_value_init expects an unsigned integer but
is incorrectly supplying a signed format to sscanf.  This patch
fixes it.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index 55be00374468..2e9bbec7d1f5 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -4191,7 +4191,7 @@ static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
 			return -EINVAL;
 	}
 
-	ret = sscanf(buf, "%ld", val);
+	ret = sscanf(buf, "%lu", val);
 	if (ret != QM_QOS_VAL_NUM)
 		return -EINVAL;
 
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: crypto: hisilicon - Fix sscanf format signedness
  2021-08-27  8:43   ` Herbert Xu
@ 2021-08-27 19:33     ` Joe Perches
  -1 siblings, 0 replies; 6+ messages in thread
From: Joe Perches @ 2021-08-27 19:33 UTC (permalink / raw)
  To: Herbert Xu, kernel test robot
  Cc: Kai Ye, kbuild-all, linux-kernel, Linux Crypto Mailing List

On Fri, 2021-08-27 at 16:43 +0800, Herbert Xu wrote:
> The function qm_qos_value_init expects an unsigned integer but
> is incorrectly supplying a signed format to sscanf.  This patch
> fixes it.
[]
> diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
[]
> @@ -4191,7 +4191,7 @@ static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
>  			return -EINVAL;
>  	}
>  
> 
> -	ret = sscanf(buf, "%ld", val);
> +	ret = sscanf(buf, "%lu", val);
>  	if (ret != QM_QOS_VAL_NUM)
>  		return -EINVAL;

QM_QOS_VAL_NUM seems an especially silly define

A direct use of 1 would be _far_ better IMO.

$ git grep -w -n QM_QOS_VAL_NUM
drivers/crypto/hisilicon/qm.c:246:#define QM_QOS_VAL_NUM                        1
drivers/crypto/hisilicon/qm.c:4189:     if (ret != QM_QOS_VAL_NUM)



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: crypto: hisilicon - Fix sscanf format signedness
@ 2021-08-27 19:33     ` Joe Perches
  0 siblings, 0 replies; 6+ messages in thread
From: Joe Perches @ 2021-08-27 19:33 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 838 bytes --]

On Fri, 2021-08-27 at 16:43 +0800, Herbert Xu wrote:
> The function qm_qos_value_init expects an unsigned integer but
> is incorrectly supplying a signed format to sscanf.  This patch
> fixes it.
[]
> diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
[]
> @@ -4191,7 +4191,7 @@ static ssize_t qm_qos_value_init(const char *buf, unsigned long *val)
>  			return -EINVAL;
>  	}
>  
> 
> -	ret = sscanf(buf, "%ld", val);
> +	ret = sscanf(buf, "%lu", val);
>  	if (ret != QM_QOS_VAL_NUM)
>  		return -EINVAL;

QM_QOS_VAL_NUM seems an especially silly define

A direct use of 1 would be _far_ better IMO.

$ git grep -w -n QM_QOS_VAL_NUM
drivers/crypto/hisilicon/qm.c:246:#define QM_QOS_VAL_NUM                        1
drivers/crypto/hisilicon/qm.c:4189:     if (ret != QM_QOS_VAL_NUM)


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-08-27 19:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-22  1:18 drivers/crypto/hisilicon/qm.c:4077:8: warning: %ld in format string (no. 1) requires 'long *' but the argument type is 'unsigned long *'. [invalidScanfArgType_int] kernel test robot
2021-08-22  1:18 ` kernel test robot
2021-08-27  8:43 ` crypto: hisilicon - Fix sscanf format signedness Herbert Xu
2021-08-27  8:43   ` Herbert Xu
2021-08-27 19:33   ` Joe Perches
2021-08-27 19:33     ` Joe Perches

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.