[PATCH] staging: dgnc: take lock when storing value in dgnc_poll_tick

Dan Carpenter dan.carpenter at oracle.com
Wed Aug 19 10:21:46 UTC 2015


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



More information about the devel mailing list