Commit 1e6d7679 authored by Richard Cochran's avatar Richard Cochran Committed by Thomas Gleixner

time: Correct the *settime* parameters

Both settimeofday() and clock_settime() promise with a 'const'
attribute not to alter the arguments passed in. This patch adds the
missing 'const' attribute into the various kernel functions
implementing these calls.
Signed-off-by: default avatarRichard Cochran <richard.cochran@omicron.at>
Acked-by: default avatarJohn Stultz <johnstul@us.ibm.com>
LKML-Reference: <20110201134417.545698637@linutronix.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 7cf37e87
...@@ -487,7 +487,7 @@ static int sgi_clock_get(clockid_t clockid, struct timespec *tp) ...@@ -487,7 +487,7 @@ static int sgi_clock_get(clockid_t clockid, struct timespec *tp)
return 0; return 0;
}; };
static int sgi_clock_set(clockid_t clockid, struct timespec *tp) static int sgi_clock_set(const clockid_t clockid, const struct timespec *tp)
{ {
u64 nsec; u64 nsec;
......
...@@ -69,7 +69,8 @@ struct k_itimer { ...@@ -69,7 +69,8 @@ struct k_itimer {
struct k_clock { struct k_clock {
int res; /* in nanoseconds */ int res; /* in nanoseconds */
int (*clock_getres) (const clockid_t which_clock, struct timespec *tp); int (*clock_getres) (const clockid_t which_clock, struct timespec *tp);
int (*clock_set) (const clockid_t which_clock, struct timespec * tp); int (*clock_set) (const clockid_t which_clock,
const struct timespec *tp);
int (*clock_get) (const clockid_t which_clock, struct timespec * tp); int (*clock_get) (const clockid_t which_clock, struct timespec * tp);
int (*timer_create) (struct k_itimer *timer); int (*timer_create) (struct k_itimer *timer);
int (*nsleep) (const clockid_t which_clock, int flags, int (*nsleep) (const clockid_t which_clock, int flags,
...@@ -89,7 +90,7 @@ void register_posix_clock(const clockid_t clock_id, struct k_clock *new_clock); ...@@ -89,7 +90,7 @@ void register_posix_clock(const clockid_t clock_id, struct k_clock *new_clock);
/* error handlers for timer_create, nanosleep and settime */ /* error handlers for timer_create, nanosleep and settime */
int do_posix_clock_nonanosleep(const clockid_t, int flags, struct timespec *, int do_posix_clock_nonanosleep(const clockid_t, int flags, struct timespec *,
struct timespec __user *); struct timespec __user *);
int do_posix_clock_nosettime(const clockid_t, struct timespec *tp); int do_posix_clock_nosettime(const clockid_t, const struct timespec *tp);
/* function to call to trigger timer event */ /* function to call to trigger timer event */
int posix_timer_event(struct k_itimer *timr, int si_private); int posix_timer_event(struct k_itimer *timr, int si_private);
......
...@@ -53,7 +53,7 @@ struct audit_krule; ...@@ -53,7 +53,7 @@ struct audit_krule;
*/ */
extern int cap_capable(struct task_struct *tsk, const struct cred *cred, extern int cap_capable(struct task_struct *tsk, const struct cred *cred,
int cap, int audit); int cap, int audit);
extern int cap_settime(struct timespec *ts, struct timezone *tz); extern int cap_settime(const struct timespec *ts, const struct timezone *tz);
extern int cap_ptrace_access_check(struct task_struct *child, unsigned int mode); extern int cap_ptrace_access_check(struct task_struct *child, unsigned int mode);
extern int cap_ptrace_traceme(struct task_struct *parent); extern int cap_ptrace_traceme(struct task_struct *parent);
extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);
...@@ -1387,7 +1387,7 @@ struct security_operations { ...@@ -1387,7 +1387,7 @@ struct security_operations {
int (*quotactl) (int cmds, int type, int id, struct super_block *sb); int (*quotactl) (int cmds, int type, int id, struct super_block *sb);
int (*quota_on) (struct dentry *dentry); int (*quota_on) (struct dentry *dentry);
int (*syslog) (int type); int (*syslog) (int type);
int (*settime) (struct timespec *ts, struct timezone *tz); int (*settime) (const struct timespec *ts, const struct timezone *tz);
int (*vm_enough_memory) (struct mm_struct *mm, long pages); int (*vm_enough_memory) (struct mm_struct *mm, long pages);
int (*bprm_set_creds) (struct linux_binprm *bprm); int (*bprm_set_creds) (struct linux_binprm *bprm);
...@@ -1669,7 +1669,7 @@ int security_sysctl(struct ctl_table *table, int op); ...@@ -1669,7 +1669,7 @@ int security_sysctl(struct ctl_table *table, int op);
int security_quotactl(int cmds, int type, int id, struct super_block *sb); int security_quotactl(int cmds, int type, int id, struct super_block *sb);
int security_quota_on(struct dentry *dentry); int security_quota_on(struct dentry *dentry);
int security_syslog(int type); int security_syslog(int type);
int security_settime(struct timespec *ts, struct timezone *tz); int security_settime(const struct timespec *ts, const struct timezone *tz);
int security_vm_enough_memory(long pages); int security_vm_enough_memory(long pages);
int security_vm_enough_memory_mm(struct mm_struct *mm, long pages); int security_vm_enough_memory_mm(struct mm_struct *mm, long pages);
int security_vm_enough_memory_kern(long pages); int security_vm_enough_memory_kern(long pages);
...@@ -1904,7 +1904,8 @@ static inline int security_syslog(int type) ...@@ -1904,7 +1904,8 @@ static inline int security_syslog(int type)
return 0; return 0;
} }
static inline int security_settime(struct timespec *ts, struct timezone *tz) static inline int security_settime(const struct timespec *ts,
const struct timezone *tz)
{ {
return cap_settime(ts, tz); return cap_settime(ts, tz);
} }
......
...@@ -145,8 +145,9 @@ static inline u32 arch_gettimeoffset(void) { return 0; } ...@@ -145,8 +145,9 @@ static inline u32 arch_gettimeoffset(void) { return 0; }
#endif #endif
extern void do_gettimeofday(struct timeval *tv); extern void do_gettimeofday(struct timeval *tv);
extern int do_settimeofday(struct timespec *tv); extern int do_settimeofday(const struct timespec *tv);
extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); extern int do_sys_settimeofday(const struct timespec *tv,
const struct timezone *tz);
#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) #define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)
extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags); extern long do_utimes(int dfd, const char __user *filename, struct timespec *times, int flags);
struct itimerval; struct itimerval;
......
...@@ -192,7 +192,7 @@ static int common_clock_get(clockid_t which_clock, struct timespec *tp) ...@@ -192,7 +192,7 @@ static int common_clock_get(clockid_t which_clock, struct timespec *tp)
} }
static inline int common_clock_set(const clockid_t which_clock, static inline int common_clock_set(const clockid_t which_clock,
struct timespec *tp) const struct timespec *tp)
{ {
return do_sys_settimeofday(tp, NULL); return do_sys_settimeofday(tp, NULL);
} }
...@@ -928,7 +928,7 @@ void exit_itimers(struct signal_struct *sig) ...@@ -928,7 +928,7 @@ void exit_itimers(struct signal_struct *sig)
} }
/* Not available / possible... functions */ /* Not available / possible... functions */
int do_posix_clock_nosettime(const clockid_t clockid, struct timespec *tp) int do_posix_clock_nosettime(const clockid_t clockid, const struct timespec *tp)
{ {
return -EINVAL; return -EINVAL;
} }
......
...@@ -150,7 +150,7 @@ static inline void warp_clock(void) ...@@ -150,7 +150,7 @@ static inline void warp_clock(void)
* various programs will get confused when the clock gets warped. * various programs will get confused when the clock gets warped.
*/ */
int do_sys_settimeofday(struct timespec *tv, struct timezone *tz) int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
{ {
static int firsttime = 1; static int firsttime = 1;
int error = 0; int error = 0;
......
...@@ -353,7 +353,7 @@ EXPORT_SYMBOL(do_gettimeofday); ...@@ -353,7 +353,7 @@ EXPORT_SYMBOL(do_gettimeofday);
* *
* Sets the time of day to the new time and update NTP and notify hrtimers * Sets the time of day to the new time and update NTP and notify hrtimers
*/ */
int do_settimeofday(struct timespec *tv) int do_settimeofday(const struct timespec *tv)
{ {
struct timespec ts_delta; struct timespec ts_delta;
unsigned long flags; unsigned long flags;
......
...@@ -93,7 +93,7 @@ int cap_capable(struct task_struct *tsk, const struct cred *cred, int cap, ...@@ -93,7 +93,7 @@ int cap_capable(struct task_struct *tsk, const struct cred *cred, int cap,
* Determine whether the current process may set the system clock and timezone * Determine whether the current process may set the system clock and timezone
* information, returning 0 if permission granted, -ve if denied. * information, returning 0 if permission granted, -ve if denied.
*/ */
int cap_settime(struct timespec *ts, struct timezone *tz) int cap_settime(const struct timespec *ts, const struct timezone *tz)
{ {
if (!capable(CAP_SYS_TIME)) if (!capable(CAP_SYS_TIME))
return -EPERM; return -EPERM;
......
...@@ -202,7 +202,7 @@ int security_syslog(int type) ...@@ -202,7 +202,7 @@ int security_syslog(int type)
return security_ops->syslog(type); return security_ops->syslog(type);
} }
int security_settime(struct timespec *ts, struct timezone *tz) int security_settime(const struct timespec *ts, const struct timezone *tz)
{ {
return security_ops->settime(ts, tz); return security_ops->settime(ts, tz);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment