On Tue, Aug 18, 2015 at 08:37:21PM +0100, Salah Triki wrote:
> @@ -57,11 +57,17 @@ static ssize_t dgnc_driver_pollrate_store(struct 
> device_driver *ddp,
>                                         const char *buf, size_t count)
>  {
>       int ret;
> +     unsigned long flags;
>  
> +     spin_lock_irqsave(&dgnc_poll_lock, flags);
>       ret = sscanf(buf, "%d\n", &dgnc_poll_tick);
>       if (ret != 1)
> -             return -EINVAL;
> -     return count;
> +             ret = -EINVAL;
> +     else
> +             ret = count;
> +     spin_unlock_irqrestore(&dgnc_poll_lock, flags);
> +
> +     return ret;
>  }

Looks basically ok, but I wonder if it would be better to use a
temporary buffer for the sscanf.

        unsigned long flags;
        int tick;
        int ret;

        ret = sscanf(buf, "%d\n", &tick);
        if (ret != 1)
                return -EINVAL;

        spin_lock_irqsave(&dgnc_poll_lock, flags);
        dgnc_poll_tick = tick;
        spin_unlock_irqrestore(&dgnc_poll_lock, flags);

        return count;

regards,
dan carpenter

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to