Hi Jiada, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on input/next] [also build test WARNING on xen-tip/linux-next robh/for-next linus/master v5.7-rc4 next-20200508] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Jiada-Wang/atmel_mxt_ts-misc/20200509-031552 base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <lkp@xxxxxxxxx> cppcheck warnings: (new ones prefixed by >>) >> drivers/input/touchscreen/atmel_mxt_ts.c:4045:8: warning: %d in format string (no. 2) requires 'int *' but the argument type is 'unsigned int *'. [invalidScanfArgType_int] ret = sscanf(buf, "%zd %d%zd", &offset, &len, &pos); ^ drivers/input/touchscreen/atmel_mxt_ts.c:1993:20: warning: Unsigned expression 'byte_offset' can't be negative so it is unnecessary to test it. [unsignedPositive] if (byte_offset >= 0 && byte_offset < cfg->mem_size) { ^ drivers/input/touchscreen/atmel_mxt_ts.c:1024:33: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_RESET ? " RESET" : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1025:31: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_OFL ? " OFL" : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1026:34: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_SIGERR ? " SIGERR" : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1027:31: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_CAL ? " CAL" : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1028:34: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_CFGERR ? " CFGERR" : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1029:35: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & MXT_T6_STATUS_COMSERR ? " COMSERR" : ""); ^ drivers/input/touchscreen/atmel_mxt_ts.c:1346:17: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & 0x01 ? "FREQCHG " : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1347:17: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & 0x02 ? "APXCHG " : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1348:17: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & 0x04 ? "ALGOERR " : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1349:17: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & 0x10 ? "STATCHG " : "", ^ drivers/input/touchscreen/atmel_mxt_ts.c:1350:17: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation] status & 0x20 ? "NLVLCHG " : ""); ^ drivers/input/touchscreen/atmel_mxt_ts.c:274:20: warning: struct member 'mxt_dbg::t37_buf' is never used. [unusedStructMember] struct t37_debug *t37_buf; ^ drivers/input/touchscreen/atmel_mxt_ts.c:275:15: warning: struct member 'mxt_dbg::t37_pages' is never used. [unusedStructMember] unsigned int t37_pages; ^ drivers/input/touchscreen/atmel_mxt_ts.c:276:15: warning: struct member 'mxt_dbg::t37_nodes' is never used. [unusedStructMember] unsigned int t37_nodes; vim +4045 drivers/input/touchscreen/atmel_mxt_ts.c 4024 4025 static ssize_t t38_data_store(struct device *dev, 4026 struct device_attribute *attr, 4027 const char *buf, size_t count) 4028 { 4029 struct mxt_data *data = dev_get_drvdata(dev); 4030 struct mxt_object *object; 4031 ssize_t ret = 0, pos, offset; 4032 unsigned int i, len, index; 4033 u8 *t38_buf; 4034 4035 if (!data->object_table) 4036 return -ENXIO; 4037 4038 object = mxt_get_object(data, MXT_SPT_USERDATA_T38); 4039 4040 /* Pre-allocate buffer large enough to hold max size of t38 object.*/ 4041 t38_buf = kmalloc(mxt_obj_size(object), GFP_KERNEL); 4042 if (!t38_buf) 4043 return -ENOMEM; 4044 > 4045 ret = sscanf(buf, "%zd %d%zd", &offset, &len, &pos); 4046 if (ret != 2) { 4047 dev_err(dev, "Bad format: Invalid parameter to update t38\n"); 4048 ret = -EINVAL; 4049 goto end; 4050 } 4051 4052 if (len == 0) { 4053 dev_err(dev, 4054 "Bad format: Data length should not be equal to 0\n"); 4055 ret = -EINVAL; 4056 goto end; 4057 } 4058 4059 if (offset < 0 || ((offset + len) > 64)) { 4060 dev_err(dev, "Invalid offset value to update t38\n"); 4061 ret = -EINVAL; 4062 goto end; 4063 } 4064 4065 index = pos; 4066 for (i = 0; i < len; i++) { 4067 ret = sscanf(buf + index, "%hhx%zd", t38_buf + i, &pos); 4068 if (ret != 1) { 4069 dev_err(dev, "Bad format: Invalid Data\n"); 4070 ret = -EINVAL; 4071 goto end; 4072 } 4073 index += pos; 4074 } 4075 4076 ret = __mxt_write_reg(data->client, object->start_address + offset, 4077 len, t38_buf); 4078 if (ret) 4079 goto end; 4080 4081 ret = mxt_t6_command(data, MXT_COMMAND_BACKUPNV, MXT_BACKUP_VALUE, 4082 true); 4083 if (ret) 4084 dev_err(dev, "backup command failed\n"); 4085 else 4086 ret = count; 4087 end: 4088 kfree(t38_buf); 4089 return ret; 4090 } 4091 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx