Re: [PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Vaishali Thakkar


On Monday 05 September 2016 06:47 PM, Pavel Andrianov wrote:
> All operations with synth buffer should be protected,
> as there are global pointers, which should be modified atomically.
> 
> Found by Linux Driver Verification project (linuxtesting.org)
> 
> Signed-off-by: Pavel Andrianov 

Acked-by: Vaishali Thakkar 

> ---
>  drivers/staging/speakup/kobjects.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/speakup/kobjects.c 
> b/drivers/staging/speakup/kobjects.c
> index 528cbdc..7fedee3 100644
> --- a/drivers/staging/speakup/kobjects.c
> +++ b/drivers/staging/speakup/kobjects.c
> @@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   int len;
>   int bytes;
>   const char *ptr = buf;
> + unsigned long flags;
>  
>   if (!synth)
>   return -EPERM;
>  
>   len = strlen(buf);
> + spin_lock_irqsave(_info.spinlock, flags);
>   while (len > 0) {
>   bytes = min_t(size_t, len, 250);
>   strncpy(tmp, ptr, bytes);
> @@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   ptr += bytes;
>   len -= bytes;
>   }
> + spin_unlock_irqrestore(_info.spinlock, flags);
>   return count;
>  }
>  
> 

-- 
Vaishali


Re: [PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Vaishali Thakkar


On Monday 05 September 2016 06:47 PM, Pavel Andrianov wrote:
> All operations with synth buffer should be protected,
> as there are global pointers, which should be modified atomically.
> 
> Found by Linux Driver Verification project (linuxtesting.org)
> 
> Signed-off-by: Pavel Andrianov 

Acked-by: Vaishali Thakkar 

> ---
>  drivers/staging/speakup/kobjects.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/speakup/kobjects.c 
> b/drivers/staging/speakup/kobjects.c
> index 528cbdc..7fedee3 100644
> --- a/drivers/staging/speakup/kobjects.c
> +++ b/drivers/staging/speakup/kobjects.c
> @@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   int len;
>   int bytes;
>   const char *ptr = buf;
> + unsigned long flags;
>  
>   if (!synth)
>   return -EPERM;
>  
>   len = strlen(buf);
> + spin_lock_irqsave(_info.spinlock, flags);
>   while (len > 0) {
>   bytes = min_t(size_t, len, 250);
>   strncpy(tmp, ptr, bytes);
> @@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   ptr += bytes;
>   len -= bytes;
>   }
> + spin_unlock_irqrestore(_info.spinlock, flags);
>   return count;
>  }
>  
> 

-- 
Vaishali


Re: [PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Samuel Thibault
Pavel Andrianov, on Mon 05 Sep 2016 16:17:47 +0300, wrote:
> All operations with synth buffer should be protected,
> as there are global pointers, which should be modified atomically.
> 
> Found by Linux Driver Verification project (linuxtesting.org)
> 
> Signed-off-by: Pavel Andrianov 

Reviewed-by: Samuel Thibault 

> ---
>  drivers/staging/speakup/kobjects.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/speakup/kobjects.c 
> b/drivers/staging/speakup/kobjects.c
> index 528cbdc..7fedee3 100644
> --- a/drivers/staging/speakup/kobjects.c
> +++ b/drivers/staging/speakup/kobjects.c
> @@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   int len;
>   int bytes;
>   const char *ptr = buf;
> + unsigned long flags;
>  
>   if (!synth)
>   return -EPERM;
>  
>   len = strlen(buf);
> + spin_lock_irqsave(_info.spinlock, flags);
>   while (len > 0) {
>   bytes = min_t(size_t, len, 250);
>   strncpy(tmp, ptr, bytes);
> @@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   ptr += bytes;
>   len -= bytes;
>   }
> + spin_unlock_irqrestore(_info.spinlock, flags);
>   return count;
>  }
>  
> -- 
> 2.7.4
> 

-- 
Samuel
Linux, c'est simple : ça s'adresse à une machine qui est parfois un peu
maraboutée mais qui d'habitude n'a pas d'états d'âme. Sur Usenet y'a
plein d'humains et de primates, et ça devient vraiment gore par moment.
-+- TP in : Guide du linuxien pervers - "Le linuxien a-t-il une âme ?" -+-


Re: [PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Samuel Thibault
Pavel Andrianov, on Mon 05 Sep 2016 16:17:47 +0300, wrote:
> All operations with synth buffer should be protected,
> as there are global pointers, which should be modified atomically.
> 
> Found by Linux Driver Verification project (linuxtesting.org)
> 
> Signed-off-by: Pavel Andrianov 

Reviewed-by: Samuel Thibault 

> ---
>  drivers/staging/speakup/kobjects.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/speakup/kobjects.c 
> b/drivers/staging/speakup/kobjects.c
> index 528cbdc..7fedee3 100644
> --- a/drivers/staging/speakup/kobjects.c
> +++ b/drivers/staging/speakup/kobjects.c
> @@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   int len;
>   int bytes;
>   const char *ptr = buf;
> + unsigned long flags;
>  
>   if (!synth)
>   return -EPERM;
>  
>   len = strlen(buf);
> + spin_lock_irqsave(_info.spinlock, flags);
>   while (len > 0) {
>   bytes = min_t(size_t, len, 250);
>   strncpy(tmp, ptr, bytes);
> @@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
>   ptr += bytes;
>   len -= bytes;
>   }
> + spin_unlock_irqrestore(_info.spinlock, flags);
>   return count;
>  }
>  
> -- 
> 2.7.4
> 

-- 
Samuel
Linux, c'est simple : ça s'adresse à une machine qui est parfois un peu
maraboutée mais qui d'habitude n'a pas d'états d'âme. Sur Usenet y'a
plein d'humains et de primates, et ça devient vraiment gore par moment.
-+- TP in : Guide du linuxien pervers - "Le linuxien a-t-il une âme ?" -+-


[PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Pavel Andrianov
All operations with synth buffer should be protected,
as there are global pointers, which should be modified atomically.

Found by Linux Driver Verification project (linuxtesting.org)

Signed-off-by: Pavel Andrianov 
---
 drivers/staging/speakup/kobjects.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/staging/speakup/kobjects.c 
b/drivers/staging/speakup/kobjects.c
index 528cbdc..7fedee3 100644
--- a/drivers/staging/speakup/kobjects.c
+++ b/drivers/staging/speakup/kobjects.c
@@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
int len;
int bytes;
const char *ptr = buf;
+   unsigned long flags;
 
if (!synth)
return -EPERM;
 
len = strlen(buf);
+   spin_lock_irqsave(_info.spinlock, flags);
while (len > 0) {
bytes = min_t(size_t, len, 250);
strncpy(tmp, ptr, bytes);
@@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
ptr += bytes;
len -= bytes;
}
+   spin_unlock_irqrestore(_info.spinlock, flags);
return count;
 }
 
-- 
2.7.4



[PATCH] speakup: Add spinlock in synth_direct_store

2016-09-05 Thread Pavel Andrianov
All operations with synth buffer should be protected,
as there are global pointers, which should be modified atomically.

Found by Linux Driver Verification project (linuxtesting.org)

Signed-off-by: Pavel Andrianov 
---
 drivers/staging/speakup/kobjects.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/staging/speakup/kobjects.c 
b/drivers/staging/speakup/kobjects.c
index 528cbdc..7fedee3 100644
--- a/drivers/staging/speakup/kobjects.c
+++ b/drivers/staging/speakup/kobjects.c
@@ -411,11 +411,13 @@ static ssize_t synth_direct_store(struct kobject *kobj,
int len;
int bytes;
const char *ptr = buf;
+   unsigned long flags;
 
if (!synth)
return -EPERM;
 
len = strlen(buf);
+   spin_lock_irqsave(_info.spinlock, flags);
while (len > 0) {
bytes = min_t(size_t, len, 250);
strncpy(tmp, ptr, bytes);
@@ -425,6 +427,7 @@ static ssize_t synth_direct_store(struct kobject *kobj,
ptr += bytes;
len -= bytes;
}
+   spin_unlock_irqrestore(_info.spinlock, flags);
return count;
 }
 
-- 
2.7.4