diff options
Diffstat (limited to 'drivers/pps/pps.c')
| -rw-r--r-- | drivers/pps/pps.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c index fea17e7805e..ca5183bdad8 100644 --- a/drivers/pps/pps.c +++ b/drivers/pps/pps.c @@ -71,9 +71,14 @@ static long pps_cdev_ioctl(struct file *file,  	case PPS_GETPARAMS:  		pr_debug("PPS_GETPARAMS: source %d\n", pps->id); -		/* Return current parameters */ -		err = copy_to_user(uarg, &pps->params, -						sizeof(struct pps_kparams)); +		spin_lock_irq(&pps->lock); + +		/* Get the current parameters */ +		params = pps->params; + +		spin_unlock_irq(&pps->lock); + +		err = copy_to_user(uarg, ¶ms, sizeof(struct pps_kparams));  		if (err)  			return -EFAULT;  |