mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	binderfs: add new binder devices to binder_devices
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>
This commit is contained in:
		
							parent
							
								
									b3b9b3cccb
								
							
						
					
					
						commit
						12d909cac1
					
				
					 3 changed files with 16 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue