Transfer /dev/mtp_usb fd ownership when instancing MtpDevHandle
/dev/mtp_usb was opened before instancing MtpDevHandle, the existing fd
should be passed in otherwise MtpDevHandle::start would be blocked as it
attempted to open the device twice.
Change-Id: I6afc5b6926930dad77aceac2f6a00e1c6759a883
diff --git a/mtp/ffs/MtpDevHandle.cpp b/mtp/ffs/MtpDevHandle.cpp
index d6a8b82..e22ba55 100644
--- a/mtp/ffs/MtpDevHandle.cpp
+++ b/mtp/ffs/MtpDevHandle.cpp
@@ -33,8 +33,9 @@
constexpr char mtp_dev_path[] = "/dev/mtp_usb";
-MtpDevHandle::MtpDevHandle()
- : mFd(-1) {};
+MtpDevHandle::MtpDevHandle(int controlFd) {
+ mFd.reset(controlFd);
+}
MtpDevHandle::~MtpDevHandle() {}
diff --git a/mtp/ffs/MtpDevHandle.h b/mtp/ffs/MtpDevHandle.h
index 4b06928..4ea1fdb 100644
--- a/mtp/ffs/MtpDevHandle.h
+++ b/mtp/ffs/MtpDevHandle.h
@@ -25,7 +25,7 @@
android::base::unique_fd mFd;
public:
- MtpDevHandle();
+ MtpDevHandle(int controlFd);
~MtpDevHandle();
int read(void *data, size_t len);
int write(const void *data, size_t len);
diff --git a/mtp/ffs/MtpServer.cpp b/mtp/ffs/MtpServer.cpp
index 5f17ff2..fa67024 100755
--- a/mtp/ffs/MtpServer.cpp
+++ b/mtp/ffs/MtpServer.cpp
@@ -123,7 +123,7 @@
mHandle = aio_compat ? new MtpFfsCompatHandle(controlFd) : new MtpFfsHandle(controlFd);
mHandle->writeDescriptors(mPtp);
} else {
- mHandle = new MtpDevHandle();
+ mHandle = new MtpDevHandle(controlFd);
}
}