Skip to content

Commit 44d8047

Browse files
Todd Kjosgregkh
Todd Kjos
authored andcommitted
binder: use standard functions to allocate fds
Binder uses internal fs interfaces to allocate and install fds: __alloc_fd __fd_install __close_fd get_files_struct put_files_struct These were used to support the passing of fds between processes as part of a transaction. The actual allocation and installation of the fds in the target process was handled by the sending process so the standard functions, alloc_fd() and fd_install() which assume task==current couldn't be used. This patch refactors this mechanism so that the fds are allocated and installed by the target process allowing the standard functions to be used. The sender now creates a list of fd fixups that contains the struct *file and the address to fixup with the new fd once it is allocated. This list is processed by the target process when the transaction is dequeued. A new error case is introduced by this change. If an async transaction with file descriptors cannot allocate new fds in the target (probably due to out of file descriptors), the transaction is discarded with a log message. In the old implementation this would have been detected in the sender context and failed prior to sending. Signed-off-by: Todd Kjos <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 44b7396 commit 44d8047

File tree

3 files changed

+260
-165
lines changed

3 files changed

+260
-165
lines changed

drivers/android/Kconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ if ANDROID
1010

1111
config ANDROID_BINDER_IPC
1212
bool "Android Binder IPC Driver"
13-
depends on MMU
13+
depends on MMU && !CPU_CACHE_VIVT
1414
default n
1515
---help---
1616
Binder is used in Android for both communication between processes,

0 commit comments

Comments
 (0)