Browse Source

w1_bq27000: Only one thread can access the bq27000 at a time.

If multiple threads try, they trip over each other badly.

Signed-off-by: NeilBrown <neilb@suse.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
NeilBrown 13 years ago
parent
commit
f6e8a1d7b4
1 changed files with 2 additions and 0 deletions
  1. 2 0
      drivers/w1/slaves/w1_bq27000.c

+ 2 - 0
drivers/w1/slaves/w1_bq27000.c

@@ -31,8 +31,10 @@ static int w1_bq27000_read(struct device *dev, unsigned int reg)
 	u8 val;
 	u8 val;
 	struct w1_slave *sl = container_of(dev->parent, struct w1_slave, dev);
 	struct w1_slave *sl = container_of(dev->parent, struct w1_slave, dev);
 
 
+	mutex_lock(&sl->master->mutex);
 	w1_write_8(sl->master, HDQ_CMD_READ | reg);
 	w1_write_8(sl->master, HDQ_CMD_READ | reg);
 	val = w1_read_8(sl->master);
 	val = w1_read_8(sl->master);
+	mutex_unlock(&sl->master->mutex);
 
 
 	return val;
 	return val;
 }
 }