w1_slave_show unlocks the bus while waiting for the sensor to convert the temperature. If the sensor gets disconnected during that time, sl->family_data could get NULL. Note: the w1_slave pointer inside w1_slave_show is protected by sysfs-mutex --- drivers/w1/slaves/w1_therm.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index 1f11a20..3a14cb1 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c @@ -236,6 +236,12 @@ static ssize_t w1_slave_show(struct device *device, i = mutex_lock_interruptible(&dev->bus_mutex); if (i != 0) return i; + + /* Ensure that device is still there - + * it could have gone while we unlocked the bus. + * Note: sl is still protected by sysfs-mutex */ + if(!sl->family_data) + return -ENODEV; } else if (!w1_strong_pullup) { sleep_rem = msleep_interruptible(tm); if (sleep_rem != 0) { -- 1.8.4.5 --- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. http://www.avast.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/