return -EINVAL;
 
        /* Keep track of the added device */
-       i2c_lock_adapter(adap);
+       mutex_lock(&adap->userspace_clients_lock);
        list_add_tail(&client->detected, &adap->userspace_clients);
-       i2c_unlock_adapter(adap);
+       mutex_unlock(&adap->userspace_clients_lock);
        dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
                 info.type, info.addr);
 
 
        /* Make sure the device was added through sysfs */
        res = -ENOENT;
-       i2c_lock_adapter(adap);
+       mutex_lock(&adap->userspace_clients_lock);
        list_for_each_entry_safe(client, next, &adap->userspace_clients,
                                 detected) {
                if (client->addr == addr) {
                        break;
                }
        }
-       i2c_unlock_adapter(adap);
+       mutex_unlock(&adap->userspace_clients_lock);
 
        if (res < 0)
                dev_err(dev, "%s: Can't find device in list\n",
        }
 
        rt_mutex_init(&adap->bus_lock);
+       mutex_init(&adap->userspace_clients_lock);
        INIT_LIST_HEAD(&adap->userspace_clients);
 
        /* Set default timeout to 1 second if not already set */
                return res;
 
        /* Remove devices instantiated from sysfs */
-       i2c_lock_adapter(adap);
+       mutex_lock(&adap->userspace_clients_lock);
        list_for_each_entry_safe(client, next, &adap->userspace_clients,
                                 detected) {
                dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
                list_del(&client->detected);
                i2c_unregister_device(client);
        }
-       i2c_unlock_adapter(adap);
+       mutex_unlock(&adap->userspace_clients_lock);
 
        /* Detach any active clients. This can't fail, thus we do not
           checking the returned value. */