Re: [PATCH] speakup: Add spinlock in synth_direct_store
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 AndrianovAcked-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
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
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 AndrianovReviewed-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
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
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
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