diff --git a/drivers/amlogic/input/touchscreen/goodix_gt9xx/goodix_tool.c b/drivers/amlogic/input/touchscreen/goodix_gt9xx/goodix_tool.c index 4a1b2256fef3..49e23f9c630c 100644 --- a/drivers/amlogic/input/touchscreen/goodix_gt9xx/goodix_tool.c +++ b/drivers/amlogic/input/touchscreen/goodix_gt9xx/goodix_tool.c @@ -487,7 +487,7 @@ ssize_t goodix_tool_write(struct file *filp, const char __user *buff, size_t len { show_len = 0; total_len = 0; - memset(cmd_head.data, 0, cmd_head.data_len + 1); + memset(cmd_head.data, 0, (int)(cmd_head.data_len + 1)); memcpy(cmd_head.data, &buff[CMD_HEAD_LENGTH], cmd_head.data_len); if (FAIL == gup_update_proc((void*)cmd_head.data)) diff --git a/drivers/amlogic/input/touchscreen/goodix_gt9xx/gt9xx.c b/drivers/amlogic/input/touchscreen/goodix_gt9xx/gt9xx.c index 89bb5a03d8a2..7184e971d3be 100644 --- a/drivers/amlogic/input/touchscreen/goodix_gt9xx/gt9xx.c +++ b/drivers/amlogic/input/touchscreen/goodix_gt9xx/gt9xx.c @@ -754,6 +754,11 @@ static void goodix_ts_work_func(struct work_struct *work) u8 buf[8 * GTP_MAX_TOUCH] = {(GTP_READ_COOR_ADDR + 10) >> 8, (GTP_READ_COOR_ADDR + 10) & 0xff}; ret = gtp_i2c_read(ts->client, buf, 2 + 8 * (touch_num - 1)); + if (ret < 0) + { + GTP_ERROR("GTP read data from i2c slave device failed"); + return; + } memcpy(&point_data[12], &buf[2], 8 * (touch_num - 1)); } @@ -2633,8 +2638,11 @@ static int goodix_ts_remove(struct i2c_client *client) GTP_INFO("GTP driver removing..."); i2c_set_clientdata(client, NULL); - input_unregister_device(ts->input_dev); - kfree(ts); + if (ts) + { + input_unregister_device(ts->input_dev); + kfree(ts); + } if (goodix_wq) destroy_workqueue(goodix_wq);