From: Archie Pusaka <apusaka@xxxxxxxxxxxx> There is a possibility to miss unref-ing when source/sink fails at setup. Reviewed-by: Sonny Sasaka <sonnysasaka@xxxxxxxxxxxx> --- profiles/audio/sink.c | 5 ++++- profiles/audio/source.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/profiles/audio/sink.c b/profiles/audio/sink.c index 134d157bc6..d672670e25 100644 --- a/profiles/audio/sink.c +++ b/profiles/audio/sink.c @@ -258,8 +258,11 @@ gboolean sink_setup_stream(struct btd_service *service, struct avdtp *session) sink->connect_id = a2dp_discover(sink->session, discovery_complete, sink); - if (sink->connect_id == 0) + if (sink->connect_id == 0) { + avdtp_unref(sink->session); + sink->session = NULL; return FALSE; + } return TRUE; } diff --git a/profiles/audio/source.c b/profiles/audio/source.c index fca85d4cb3..c706c928a7 100644 --- a/profiles/audio/source.c +++ b/profiles/audio/source.c @@ -259,8 +259,11 @@ gboolean source_setup_stream(struct btd_service *service, source->connect_id = a2dp_discover(source->session, discovery_complete, source); - if (source->connect_id == 0) + if (source->connect_id == 0) { + avdtp_unref(source->session); + source->session = NULL; return FALSE; + } return TRUE; } -- 2.29.1.341.ge80a0c044ae-goog