From 91d4490a4e729a7a850cdf0c3b273922ae03f949 Mon Sep 17 00:00:00 2001 From: haojl2 Date: Thu, 21 May 2020 17:36:35 +0800 Subject: [PATCH] touchscreen_mmi: Properly handle the deletion process. input_unregister_device and input_free_device should not call twice. And after device be freed. And devm_kfree is no need call after device freed. Change-Id: I23fc92c196b33b029c6da0924cb468f2c63a3597 Signed-off-by: haojl2 Reviewed-on: https://gerrit.mot.com/1570151 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Reviewed-by: Jianqi Yang Submit-Approved: Jira Key --- .../touchscreen_mmi/touchscreen_mmi_gesture.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c index 0178f6fed284..7b2311a3b3e7 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c +++ b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_gesture.c @@ -209,12 +209,16 @@ int ts_mmi_gesture_init(struct ts_mmi_dev *touch_cdev) unregister_sensor_input_device: input_unregister_device(sensor_input_dev); + sensor_input_dev = NULL; free_touch_events_data: - devm_kfree(DEV_TS, events_data); + if (events_data) + devm_kfree(DEV_TS, events_data); free_sensor_pdata: - devm_kfree(&sensor_input_dev->dev, sensor_pdata); + if (sensor_input_dev && sensor_pdata) + devm_kfree(&sensor_input_dev->dev, sensor_pdata); free_sensor_input_dev: - input_free_device(sensor_input_dev); + if (sensor_input_dev) + input_free_device(sensor_input_dev); exit: return 1; } @@ -223,9 +227,7 @@ int ts_mmi_gesture_remove(struct ts_mmi_dev *touch_cdev) { sensors_classdev_unregister(&sensor_pdata->ps_cdev); input_unregister_device(sensor_pdata->input_sensor_dev); - devm_kfree(&sensor_pdata->input_sensor_dev->dev, sensor_pdata); devm_kfree(DEV_TS, events_data); - input_free_device(sensor_pdata->input_sensor_dev); sensor_pdata = NULL; return 0;