W1: split master mutex to avoid deadlocks.
[firefly-linux-kernel-4.4.55.git] / drivers / w1 / slaves / w1_therm.c
index ff29ae747ee82e41455d5db1b49bbd4b0fbebbf9..d90062b211f8a107a142f439129a6f8d699aa1de 100644 (file)
@@ -179,7 +179,7 @@ static ssize_t w1_therm_read(struct device *device,
        int i, max_trying = 10;
        ssize_t c = PAGE_SIZE;
 
-       i = mutex_lock_interruptible(&dev->mutex);
+       i = mutex_lock_interruptible(&dev->bus_mutex);
        if (i != 0)
                return i;
 
@@ -207,19 +207,19 @@ static ssize_t w1_therm_read(struct device *device,
                        w1_write_8(dev, W1_CONVERT_TEMP);
 
                        if (external_power) {
-                               mutex_unlock(&dev->mutex);
+                               mutex_unlock(&dev->bus_mutex);
 
                                sleep_rem = msleep_interruptible(tm);
                                if (sleep_rem != 0)
                                        return -EINTR;
 
-                               i = mutex_lock_interruptible(&dev->mutex);
+                               i = mutex_lock_interruptible(&dev->bus_mutex);
                                if (i != 0)
                                        return i;
                        } else if (!w1_strong_pullup) {
                                sleep_rem = msleep_interruptible(tm);
                                if (sleep_rem != 0) {
-                                       mutex_unlock(&dev->mutex);
+                                       mutex_unlock(&dev->bus_mutex);
                                        return -EINTR;
                                }
                        }
@@ -258,7 +258,7 @@ static ssize_t w1_therm_read(struct device *device,
 
        c -= snprintf(buf + PAGE_SIZE - c, c, "t=%d\n",
                w1_convert_temp(rom, sl->family->fid));
-       mutex_unlock(&dev->mutex);
+       mutex_unlock(&dev->bus_mutex);
 
        return PAGE_SIZE - c;
 }