summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMason Wang <masonwang@google.com>2022-05-04 07:57:14 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2022-05-04 07:57:14 +0000
commit8b837e15a2a2e139b1d3ba85c32fa8b79ce512ce (patch)
tree340e696dfa18a767766e633a4c7f7885be82a562
parent48552cf06b7594b48dea7ff4135c89b5be119a82 (diff)
parent7f4f9a848ad7899b7e66e62d304fc18f79debd73 (diff)
downloadfocaltech_touch-8b837e15a2a2e139b1d3ba85c32fa8b79ce512ce.tar.gz
Merge "touch/focaltech: Fix accessing null pointer during shutdown." into android13-gs-pixel-5.10
-rw-r--r--ft3658/focaltech_core.c50
1 files changed, 16 insertions, 34 deletions
diff --git a/ft3658/focaltech_core.c b/ft3658/focaltech_core.c
index afe1404..937cfbd 100644
--- a/ft3658/focaltech_core.c
+++ b/ft3658/focaltech_core.c
@@ -2907,20 +2907,11 @@ err_heatmap_probe:
#endif
#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) || \
IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
- if (ts_data->trans_raw) {
- kfree_safe(ts_data->trans_raw);
- ts_data->trans_raw = NULL;
- }
+ kfree_safe(ts_data->trans_raw);
err_trans_raw:
- if (ts_data->heatmap_raw) {
- kfree_safe(ts_data->heatmap_raw);
- ts_data->heatmap_raw = NULL;
- }
+ kfree_safe(ts_data->heatmap_raw);
err_heatmap_raw:
- if (ts_data->heatmap_buff) {
- kfree_safe(ts_data->heatmap_buff);
- ts_data->heatmap_buff = NULL;
- }
+ kfree_safe(ts_data->heatmap_buff);
err_heatmap_buff:
#endif
#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD)
@@ -2970,28 +2961,6 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
fts_release_apk_debug_channel(ts_data);
fts_remove_sysfs(ts_data);
-#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD)
- touch_offload_cleanup(&ts_data->offload);
-#endif
-#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) || \
- IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
- if (ts_data->heatmap_buff) {
- kfree_safe(ts_data->heatmap_buff);
- ts_data->heatmap_buff = NULL;
- }
- if (ts_data->heatmap_raw) {
- kfree_safe(ts_data->heatmap_raw);
- ts_data->heatmap_raw = NULL;
- }
- if (ts_data->trans_raw) {
- kfree_safe(ts_data->trans_raw);
- ts_data->trans_raw = NULL;
- }
-#endif
-
-#if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
- heatmap_remove(&ts_data->v4l2);
-#endif
fts_ex_mode_exit(ts_data);
fts_fwupg_exit(ts_data);
@@ -3043,6 +3012,19 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
unregister_early_suspend(&ts_data->early_suspend);
#endif
+#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD)
+ touch_offload_cleanup(&ts_data->offload);
+#endif
+#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) || \
+ IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
+ kfree_safe(ts_data->heatmap_buff);
+ kfree_safe(ts_data->heatmap_raw);
+ kfree_safe(ts_data->trans_raw);
+#endif
+#if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
+ heatmap_remove(&ts_data->v4l2);
+#endif
+
if (gpio_is_valid(ts_data->pdata->reset_gpio))
gpio_free(ts_data->pdata->reset_gpio);