[bug report] binder: Support multiple /dev instances

Dan Carpenter dan.carpenter at oracle.com
Tue Feb 14 08:15:02 UTC 2017


Hello Martijn Coenen,

The patch ac4812c5ffbb: "binder: Support multiple /dev instances"
from Feb 3, 2017, leads to the following static checker warning:

	drivers/android/binder.c:4266 binder_init()
	warn: did you mean to pass the address of 'device_names'

drivers/android/binder.c
  4255          /*
  4256           * Copy the module_parameter string, because we don't want to
  4257           * tokenize it in-place.
  4258           */
  4259          device_names = kzalloc(strlen(binder_devices_param) + 1, GFP_KERNEL);
  4260          if (!device_names) {
  4261                  ret = -ENOMEM;
  4262                  goto err_alloc_device_names_failed;
  4263          }
  4264          strcpy(device_names, binder_devices_param);
  4265  
  4266          while ((device_name = strsep(&device_names, ","))) {

Obviously we did mean to pass the address, but on of the problems with
this is that now we can't free "device_names" because we don't have the
original pointer stored anywhere.

  4267                  ret = init_binder_device(device_name);
  4268                  if (ret)
  4269                          goto err_init_binder_device_failed;
  4270          }
  4271  
  4272          return ret;
  4273  
  4274  err_init_binder_device_failed:
  4275          hlist_for_each_entry_safe(device, tmp, &binder_devices, hlist) {
  4276                  misc_deregister(&device->miscdev);
  4277                  hlist_del(&device->hlist);
  4278                  kfree(device);
  4279          }
  4280  err_alloc_device_names_failed:
  4281          debugfs_remove_recursive(binder_debugfs_dir_entry_root);
  4282  
  4283          return ret;
  4284  }

regards,
dan carpenter


More information about the devel mailing list