|
@@ -71,9 +71,14 @@ static long pps_cdev_ioctl(struct file *file,
|
|
case PPS_GETPARAMS:
|
|
case PPS_GETPARAMS:
|
|
pr_debug("PPS_GETPARAMS: source %d\n", pps->id);
|
|
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)
|
|
if (err)
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
|
|
|