summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-12-09 20:52:59 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-12-09 20:52:59 +0200
commit7b1ec6c9c1ad407744d6480da1ef9d650679e831 (patch)
treed31f3414e510917cdde91dacc9c4dea5e4d32325 /drivers/soc
parent6107aa6dc24cc8c196bb18e5b5ec81f8f1a275a8 (diff)
parent0d6f3a76cfb07190719a68f7e73890f530427b91 (diff)
Merge tag 'LA.UM.8.4.r1-06200-8x98.0' of https://source.codeaurora.org/quic/la/kernel/msm-4.4 into lineage-17.1-caf-msm8998
* tag 'LA.UM.8.4.r1-06200-8x98.0' of https://source.codeaurora.org/quic/la/kernel/msm-4.4: crypto: Fix possible stack out of bound error ASoC: sdm660_cdc: Fix ear_pa_gain control soc: qcom: service-locator: Free PD list after client use cfg80211: Enhance the AKM advertizement to support per interface msm: kgsl: Don't wait for room in context queue when context is invalidated msm: kgsl: Don't allow re-importing memory owned by KGSL usb: dwc3: ep0: Return from handle_status if ep0_delegate_req succeeds scsi: ufs: Flush exception event before suspend msm: ipa: Fix deleting the routing entries mm-camera2:isp2: Add support for 12bit-plain16 raw format Revert "ipv6: defrag: drop non-last frags smaller than min mtu" usb: dwc3: ep0: Return from handle_status if ep0_delegate_req succeeds Change-Id: Ifcb5f033b250feaa41c4916bbbec757334e3429e
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);
}