diff options
author | Michael Bestas <mkbestas@lineageos.org> | 2020-12-09 20:52:59 +0200 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2020-12-09 20:52:59 +0200 |
commit | 7b1ec6c9c1ad407744d6480da1ef9d650679e831 (patch) | |
tree | d31f3414e510917cdde91dacc9c4dea5e4d32325 /drivers/soc | |
parent | 6107aa6dc24cc8c196bb18e5b5ec81f8f1a275a8 (diff) | |
parent | 0d6f3a76cfb07190719a68f7e73890f530427b91 (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.c | 14 |
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); } |