Skip to content

Commit

Permalink
Radio: get service by value.
Browse files Browse the repository at this point in the history
Get strong pointer to service interface by value and not reference to
prevent race conditions where the service pointer can be cleared
by another thread while in use.

Bug: 30907212
Change-Id: Iae838b3b672562c1d0cd63968399a6bfdda7f5ab
(cherry picked from commit 28a0e9e)
  • Loading branch information
Eric Laurent authored and gitbuildkicker committed Sep 27, 2016
1 parent d8cf9aa commit 1280356
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion include/radio/Radio.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class Radio : public BnRadioClient,
private:
Radio(radio_handle_t handle,
const sp<RadioCallback>&);
static const sp<IRadioService>& getRadioService();
static const sp<IRadioService> getRadioService();

Mutex mLock;
sp<IRadio> mIRadio;
Expand Down
6 changes: 3 additions & 3 deletions radio/Radio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ namespace {
sp<DeathNotifier> gDeathNotifier;
}; // namespace anonymous

const sp<IRadioService>& Radio::getRadioService()
const sp<IRadioService> Radio::getRadioService()
{
Mutex::Autolock _l(gLock);
if (gRadioService.get() == 0) {
Expand Down Expand Up @@ -84,7 +84,7 @@ status_t Radio::listModules(struct radio_properties *properties,
uint32_t *numModules)
{
ALOGV("listModules()");
const sp<IRadioService>& service = getRadioService();
const sp<IRadioService> service = getRadioService();
if (service == 0) {
return NO_INIT;
}
Expand All @@ -98,7 +98,7 @@ sp<Radio> Radio::attach(radio_handle_t handle,
{
ALOGV("attach()");
sp<Radio> radio;
const sp<IRadioService>& service = getRadioService();
const sp<IRadioService> service = getRadioService();
if (service == 0) {
return radio;
}
Expand Down

0 comments on commit 1280356

Please sign in to comment.