Skip to content

Commit 612ca9c

Browse files
Dianne Hackbornandroid code review
authored andcommitted
Merge "Fix shutdown sequence to avoid SIGSEGV when running am command"
2 parents 5f77f82 + 33d1ffa commit 612ca9c

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

libs/binder/IPCThreadState.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,9 @@ status_t IPCThreadState::waitForResponse(Parcel *reply, status_t *acquireResult)
752752

753753
status_t IPCThreadState::talkWithDriver(bool doReceive)
754754
{
755-
ALOG_ASSERT(mProcess->mDriverFD >= 0, "Binder driver is not opened");
755+
if (mProcess->mDriverFD <= 0) {
756+
return -EBADF;
757+
}
756758

757759
binder_write_read bwr;
758760

@@ -808,6 +810,9 @@ status_t IPCThreadState::talkWithDriver(bool doReceive)
808810
#else
809811
err = INVALID_OPERATION;
810812
#endif
813+
if (mProcess->mDriverFD <= 0) {
814+
err = -EBADF;
815+
}
811816
IF_LOG_COMMANDS() {
812817
alog << "Finished read/write, write size = " << mOut.dataSize() << endl;
813818
}
@@ -1099,7 +1104,9 @@ void IPCThreadState::threadDestructor(void *st)
10991104
if (self) {
11001105
self->flushCommands();
11011106
#if defined(HAVE_ANDROID_OS)
1102-
ioctl(self->mProcess->mDriverFD, BINDER_THREAD_EXIT, 0);
1107+
if (self->mProcess->mDriverFD > 0) {
1108+
ioctl(self->mProcess->mDriverFD, BINDER_THREAD_EXIT, 0);
1109+
}
11031110
#endif
11041111
delete self;
11051112
}

0 commit comments

Comments
 (0)