aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/w1/slaves/w1_ds2433.c
diff options
context:
space:
mode:
authorEvgeniy Polyakov <johnpol@2ka.mipt.ru>2006-04-03 04:04:27 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-22 14:22:50 -0400
commitabd52a13206e02537ca1dc08fc5438c7d27bdbf1 (patch)
treeefe0ff89898aad10600d392ac727dcea9e7af322 /drivers/w1/slaves/w1_ds2433.c
parent46e07f6e5eb0e465e086b8f485f4238bd453e3e9 (diff)
[PATCH] w1: Use mutexes instead of semaphores.
Use mutexes instead of semaphores. Patch tested on x86_64 and i386 with test bus master driver. Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/w1/slaves/w1_ds2433.c')
-rw-r--r--drivers/w1/slaves/w1_ds2433.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/w1/slaves/w1_ds2433.c b/drivers/w1/slaves/w1_ds2433.c
index ddd01e6fc2c9..2ac238f1480e 100644
--- a/drivers/w1/slaves/w1_ds2433.c
+++ b/drivers/w1/slaves/w1_ds2433.c
@@ -105,11 +105,7 @@ static ssize_t w1_f23_read_bin(struct kobject *kobj, char *buf, loff_t off,
105 if ((count = w1_f23_fix_count(off, count, W1_EEPROM_SIZE)) == 0) 105 if ((count = w1_f23_fix_count(off, count, W1_EEPROM_SIZE)) == 0)
106 return 0; 106 return 0;
107 107
108 atomic_inc(&sl->refcnt); 108 mutex_lock(&sl->master->mutex);
109 if (down_interruptible(&sl->master->mutex)) {
110 count = 0;
111 goto out_dec;
112 }
113 109
114#ifdef CONFIG_W1_F23_CRC 110#ifdef CONFIG_W1_F23_CRC
115 111
@@ -140,9 +136,7 @@ static ssize_t w1_f23_read_bin(struct kobject *kobj, char *buf, loff_t off,
140#endif /* CONFIG_W1_F23_CRC */ 136#endif /* CONFIG_W1_F23_CRC */
141 137
142out_up: 138out_up:
143 up(&sl->master->mutex); 139 mutex_unlock(&sl->master->mutex);
144out_dec:
145 atomic_dec(&sl->refcnt);
146 140
147 return count; 141 return count;
148} 142}
@@ -231,11 +225,7 @@ static ssize_t w1_f23_write_bin(struct kobject *kobj, char *buf, loff_t off,
231 } 225 }
232#endif /* CONFIG_W1_F23_CRC */ 226#endif /* CONFIG_W1_F23_CRC */
233 227
234 atomic_inc(&sl->refcnt); 228 mutex_lock(&sl->master->mutex);
235 if (down_interruptible(&sl->master->mutex)) {
236 count = 0;
237 goto out_dec;
238 }
239 229
240 /* Can only write data to one page at a time */ 230 /* Can only write data to one page at a time */
241 idx = 0; 231 idx = 0;
@@ -253,9 +243,7 @@ static ssize_t w1_f23_write_bin(struct kobject *kobj, char *buf, loff_t off,
253 } 243 }
254 244
255out_up: 245out_up:
256 up(&sl->master->mutex); 246 mutex_unlock(&sl->master->mutex);
257out_dec:
258 atomic_dec(&sl->refcnt);
259 247
260 return count; 248 return count;
261} 249}