summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-12-13 21:11:37 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-12-13 21:11:37 +0200
commitb36049da719928cadda6f06f7f128c1e93f2df05 (patch)
treefc511d71f8e2ace4e2ce76d59382d7bd4ca453bd /drivers/soc
parent0cd44bc6cc29139366704faa2e10f46f4a2dbc15 (diff)
parentaa77e00f0e6ae7e4d3e1a813a326800e8d7f5bcf (diff)
Merge remote-tracking branch 'msm8998/lineage-17.1' into lineage-17.1
Conflicts: sound/soc/codecs/sdm660_cdc/msm-analog-cdc.c Change-Id: Ica3989b8826827e0de52443996c0036872a8c91c
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/service-locator.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/soc/qcom/service-locator.c b/drivers/soc/qcom/service-locator.c
index 52355699e4f3..7d7cff136689 100644
--- a/drivers/soc/qcom/service-locator.c
+++ b/drivers/soc/qcom/service-locator.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2017, 2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -251,7 +251,6 @@ static int service_locator_send_msg(struct pd_qmi_client_data *pd)
req->domain_offset_valid = true;
req->domain_offset = 0;
- pd->domain_list = NULL;
do {
req->domain_offset += domains_read;
rc = servreg_loc_send_msg(&req_desc, &resp_desc, req, resp,
@@ -281,6 +280,7 @@ static int service_locator_send_msg(struct pd_qmi_client_data *pd)
pr_err("Service Locator DB updated for client %s\n",
pd->client_name);
kfree(pd->domain_list);
+ pd->domain_list = NULL;
rc = -EAGAIN;
goto out;
}
@@ -360,7 +360,7 @@ int get_service_location(char *client_name, char *service_name,
goto err;
}
- pqcd = kmalloc(sizeof(struct pd_qmi_client_data), GFP_KERNEL);
+ pqcd = kzalloc(sizeof(struct pd_qmi_client_data), GFP_KERNEL);
if (!pqcd) {
rc = -ENOMEM;
pr_err("Allocation failed\n");
@@ -401,7 +401,7 @@ static void pd_locator_work(struct work_struct *work)
pr_err("Unable to connect to service locator!, rc = %d\n", rc);
pdqw->notifier->notifier_call(pdqw->notifier,
LOCATOR_DOWN, NULL);
- goto err;
+ goto err_init_servloc;
}
rc = service_locator_send_msg(data);
if (rc) {
@@ -409,11 +409,13 @@ static void pd_locator_work(struct work_struct *work)
data->service_name, data->client_name, rc);
pdqw->notifier->notifier_call(pdqw->notifier,
LOCATOR_DOWN, NULL);
- goto err;
+ goto err_servloc_send_msg;
}
pdqw->notifier->notifier_call(pdqw->notifier, LOCATOR_UP, data);
-err:
+err_servloc_send_msg:
+ kfree(data->domain_list);
+err_init_servloc:
kfree(data);
kfree(pdqw);
}