diff mbox

[08/11] rtc: m48t59: clean up m48t59_nvram_read()/m48t59_nvram_write()

Message ID 1437947316-5652-9-git-send-email-vz@mleia.com
State Superseded
Headers show

Commit Message

Vladimir Zapolskiy July 26, 2015, 9:48 p.m. UTC
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>
---
 drivers/rtc/rtc-m48t59.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Alexandre Belloni Aug. 5, 2015, 8:27 a.m. UTC | #1
On 27/07/2015 at 00:48:33 +0300, Vladimir Zapolskiy wrote :
> @@ -365,11 +366,10 @@ static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
>  	ssize_t cnt = 0;
>  	unsigned long flags;
>  
> -	for (; size > 0 && pos < pdata->offset; cnt++, size--) {
> -		spin_lock_irqsave(&m48t59->lock, flags);
> +	spin_lock_irqsave(&m48t59->lock, flags);
> +
> +	for (; cnt < size; cnt++)
>  		M48T59_WRITE(*buf++, cnt);
> -		spin_unlock_irqrestore(&m48t59->lock, flags);
> -	}
>  

Isn't a spin_unlock_irqrestore() missing?
Vladimir Zapolskiy Aug. 5, 2015, 4:04 p.m. UTC | #2
Hi Alexandre,

On 05.08.2015 11:27, Alexandre Belloni wrote:
> On 27/07/2015 at 00:48:33 +0300, Vladimir Zapolskiy wrote :
>> @@ -365,11 +366,10 @@ static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
>>  	ssize_t cnt = 0;
>>  	unsigned long flags;
>>  
>> -	for (; size > 0 && pos < pdata->offset; cnt++, size--) {
>> -		spin_lock_irqsave(&m48t59->lock, flags);
>> +	spin_lock_irqsave(&m48t59->lock, flags);
>> +
>> +	for (; cnt < size; cnt++)
>>  		M48T59_WRITE(*buf++, cnt);
>> -		spin_unlock_irqrestore(&m48t59->lock, flags);
>> -	}
>>  
> 
> Isn't a spin_unlock_irqrestore() missing?
> 

oops, you are correct, will update this change.

With best wishes,
Vladimir
diff mbox

Patch

diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
index 90abb5b..512c44b 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,
 	ssize_t cnt = 0;
 	unsigned long flags;
 
-	for (; size > 0 && pos < pdata->offset; cnt++, size--) {
-		spin_lock_irqsave(&m48t59->lock, flags);
+	spin_lock_irqsave(&m48t59->lock, flags);
+
+	for (; cnt < size; cnt++)
 		*buf++ = M48T59_READ(cnt);
-		spin_unlock_irqrestore(&m48t59->lock, flags);
-	}
+
+	spin_unlock_irqrestore(&m48t59->lock, flags);
 
 	return cnt;
 }
@@ -365,11 +366,10 @@  static ssize_t m48t59_nvram_write(struct file *filp, struct kobject *kobj,
 	ssize_t cnt = 0;
 	unsigned long flags;
 
-	for (; size > 0 && pos < pdata->offset; cnt++, size--) {
-		spin_lock_irqsave(&m48t59->lock, flags);
+	spin_lock_irqsave(&m48t59->lock, flags);
+
+	for (; cnt < size; cnt++)
 		M48T59_WRITE(*buf++, cnt);
-		spin_unlock_irqrestore(&m48t59->lock, flags);
-	}
 
 	return cnt;
 }