Skip to content

Commit

Permalink
binderfs: add new binder devices to binder_devices
Browse files Browse the repository at this point in the history
When binderfs is not enabled, the binder driver parses the kernel
config to create all binder devices. All of the new binder devices
are stored in the list binder_devices.

When binderfs is enabled, the binder driver creates new binder devices
dynamically when userspace applications call BINDER_CTL_ADD ioctl. But
the devices created in this way are not stored in the same list.

This patch fixes that.

Signed-off-by: Li Li <dualli@google.com>
Acked-by: Carlos Llamas <cmllamas@google.com>
Link: https://lore.kernel.org/r/20241218212935.4162907-2-dualli@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Li Li authored and Greg Kroah-Hartman committed Jan 8, 2025
1 parent b3b9b3c commit 12d909c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
5 changes: 5 additions & 0 deletions drivers/android/binder.c
Original file line number Diff line number Diff line change
Expand Up @@ -6928,6 +6928,11 @@ const struct binder_debugfs_entry binder_debugfs_entries[] = {
{} /* terminator */
};

void binder_add_device(struct binder_device *device)
{
hlist_add_head(&device->hlist, &binder_devices);
}

static int __init init_binder_device(const char *name)
{
int ret;
Expand Down
11 changes: 9 additions & 2 deletions drivers/android/binder_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ struct binder_context {

/**
* struct binder_device - information about a binder device node
* @hlist: list of binder devices (only used for devices requested via
* CONFIG_ANDROID_BINDER_DEVICES)
* @hlist: list of binder devices
* @miscdev: information about a binder character device node
* @context: binder context information
* @binderfs_inode: This is the inode of the root dentry of the super block
Expand Down Expand Up @@ -582,4 +581,12 @@ struct binder_object {
};
};

/**
* Add a binder device to binder_devices
* @device: the new binder device to add to the global list
*
* Not reentrant as the list is not protected by any locks
*/
void binder_add_device(struct binder_device *device);

#endif /* _LINUX_BINDER_INTERNAL_H */
2 changes: 2 additions & 0 deletions drivers/android/binderfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,8 @@ static int binderfs_binder_device_create(struct inode *ref_inode,
fsnotify_create(root->d_inode, dentry);
inode_unlock(d_inode(root));

binder_add_device(device);

return 0;

err:
Expand Down

0 comments on commit 12d909c

Please sign in to comment.