aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc
diff options
context:
space:
mode:
authorVladimir Zapolskiy <vz@mleia.com>2015-08-05 14:13:02 -0400
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>2015-09-05 07:19:10 -0400
commit99be3e371b2ac03b936044139be10cf0c7b9cc58 (patch)
tree1597cb6f031aea7ee7ed3a6a080f394aa6164590 /drivers/rtc
parentc472d7ded2dfbe7da29531a9c9e6b951e5658605 (diff)
rtc: m48t59: clean up m48t59_nvram_read()/m48t59_nvram_write()
The change removes redundant sysfs binary file boundary checks, since this task is already done on caller side in fs/sysfs/file.c Spinlock acquisition/release is moved out of the loop body to get atomic states of NVRAM reading and writing operations. Signed-off-by: Vladimir Zapolskiy <vz@mleia.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-m48t59.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
index 90abb5bd589c..d99a705bec07 100644
--- a/drivers/rtc/rtc-m48t59.c
+++ b/drivers/rtc/rtc-m48t59.c
@@ -345,11 +345,12 @@ static ssize_t m48t59_nvram_read(struct file *filp, struct kobject *kobj,
345 ssize_t cnt = 0; 345 ssize_t cnt = 0;
346 unsigned long flags; 346 unsigned long flags;
347 347
348 for (; size > 0 && pos < pdata->offset; cnt++, size--) { 348 spin_lock_irqsave(&m48t59->lock, flags);
349 spin_lock_irqsave(&m48t59->lock, flags); 349
350 for (; cnt < size; cnt++)
350 *buf++ = M48T59_READ(cnt); 351 *buf++ = M48T59_READ(cnt);
351 spin_unlock_irqrestore(&m48t59->lock, flags); 352
352 } 353 spin_unlock_irqrestore(&m48t59->lock, flags);
353 354
354 return cnt; 355 return cnt;
355} 356}
@@ -365,11 +366,12 @@ static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
365 ssize_t cnt = 0; 366 ssize_t cnt = 0;
366 unsigned long flags; 367 unsigned long flags;
367 368
368 for (; size > 0 && pos < pdata->offset; cnt++, size--) { 369 spin_lock_irqsave(&m48t59->lock, flags);
369 spin_lock_irqsave(&m48t59->lock, flags); 370
371 for (; cnt < size; cnt++)
370 M48T59_WRITE(*buf++, cnt); 372 M48T59_WRITE(*buf++, cnt);
371 spin_unlock_irqrestore(&m48t59->lock, flags); 373
372 } 374 spin_unlock_irqrestore(&m48t59->lock, flags);
373 375
374 return cnt; 376 return cnt;
375} 377}