|
@@ -586,6 +586,27 @@ int put_compat_itimerspec(struct compat_itimerspec __user *dst,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int get_compat_itimerspec64(struct itimerspec64 *its,
|
|
|
+ const struct compat_itimerspec __user *uits)
|
|
|
+{
|
|
|
+
|
|
|
+ if (__compat_get_timespec64(&its->it_interval, &uits->it_interval) ||
|
|
|
+ __compat_get_timespec64(&its->it_value, &uits->it_value))
|
|
|
+ return -EFAULT;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(get_compat_itimerspec64);
|
|
|
+
|
|
|
+int put_compat_itimerspec64(const struct itimerspec64 *its,
|
|
|
+ struct compat_itimerspec __user *uits)
|
|
|
+{
|
|
|
+ if (__compat_put_timespec64(&its->it_interval, &uits->it_interval) ||
|
|
|
+ __compat_put_timespec64(&its->it_value, &uits->it_value))
|
|
|
+ return -EFAULT;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(put_compat_itimerspec64);
|
|
|
+
|
|
|
/*
|
|
|
* We currently only need the following fields from the sigevent
|
|
|
* structure: sigev_value, sigev_signo, sig_notify and (sometimes
|