]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - drivers/soundwire/bus_type.c
Merge tag 'soundwire-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul...
[thirdparty/linux.git] / drivers / soundwire / bus_type.c
index 26c9a0a85d492dd9cde25c313975ee243debcd7e..1f43ee848eac8f76584c6153483a52c1d5a97b6e 100644 (file)
@@ -105,20 +105,19 @@ static int sdw_drv_probe(struct device *dev)
        if (ret)
                return ret;
 
-       mutex_lock(&slave->sdw_dev_lock);
-
        ret = drv->probe(slave, id);
        if (ret) {
                name = drv->name;
                if (!name)
                        name = drv->driver.name;
-               mutex_unlock(&slave->sdw_dev_lock);
 
                dev_err(dev, "Probe of %s failed: %d\n", name, ret);
                dev_pm_domain_detach(dev, false);
                return ret;
        }
 
+       mutex_lock(&slave->sdw_dev_lock);
+
        /* device is probed so let's read the properties now */
        if (drv->ops && drv->ops->read_prop)
                drv->ops->read_prop(slave);
@@ -167,14 +166,12 @@ static int sdw_drv_remove(struct device *dev)
        int ret = 0;
 
        mutex_lock(&slave->sdw_dev_lock);
-
        slave->probed = false;
+       mutex_unlock(&slave->sdw_dev_lock);
 
        if (drv->remove)
                ret = drv->remove(slave);
 
-       mutex_unlock(&slave->sdw_dev_lock);
-
        dev_pm_domain_detach(dev, false);
 
        return ret;