aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Schrock <steve.schrock@getcruise.com>2024-03-18 13:37:48 -0500
committerDenis Kenzior <denkenz@gmail.com>2024-03-18 16:17:02 -0500
commita703d1cc8e7edb4c3310b81f179936b547e06fdf (patch)
tree5d595be878cad07e75c6ec4965f465f368c056b7
parent85c935720dbd1f33bb98ec32713f9eda40ec5bfc (diff)
downloadofono-a703d1cc8e7edb4c3310b81f179936b547e06fdf.tar.gz
qmi: Allow QRTR services to be destroyed
QRTR services were never being destroyed because they were being created with a reference count of 1 and immediately incrementing the count to 2.
-rw-r--r--drivers/qmimodem/qmi.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index 9a7fc4a33..b92bcfa03 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -2581,7 +2581,8 @@ bool qmi_service_create_shared(struct qmi_device *device, uint16_t type,
service = service_create(device, info, 0);
l_hashmap_insert(device->service_list,
L_UINT_TO_PTR(type_val), service);
- }
+ } else
+ service = qmi_service_ref(service);
data = l_new(struct service_create_shared_data, 1);
@@ -2590,8 +2591,8 @@ bool qmi_service_create_shared(struct qmi_device *device, uint16_t type,
data->func = func;
data->user_data = user_data;
data->destroy = destroy;
+ data->service = service;
- data->service = qmi_service_ref(service);
data->idle = l_idle_create(service_create_shared_reply,
data, NULL);