mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	 ead25417f8
			
		
	
	
		ead25417f8
		
	
	
	
	
		
			
			struct timex is not y2038 safe.
Replace all uses of timex with y2038 safe __kernel_timex.
Note that struct __kernel_timex is an ABI interface definition.
We could define a new structure based on __kernel_timex that
is only available internally instead. Right now, there isn't
a strong motivation for this as the structure is isolated to
a few defined struct timex interfaces and such a structure would
be exactly the same as struct timex.
The patch was generated by the following coccinelle script:
virtual patch
@depends on patch forall@
identifier ts;
expression e;
@@
(
- struct timex ts;
+ struct __kernel_timex ts;
|
- struct timex ts = {};
+ struct __kernel_timex ts = {};
|
- struct timex ts = e;
+ struct __kernel_timex ts = e;
|
- struct timex *ts;
+ struct __kernel_timex *ts;
|
(memset \| copy_from_user \| copy_to_user \)(...,
- sizeof(struct timex))
+ sizeof(struct __kernel_timex))
)
@depends on patch forall@
identifier ts;
identifier fn;
@@
fn(...,
- struct timex *ts,
+ struct __kernel_timex *ts,
...) {
...
}
@depends on patch forall@
identifier ts;
identifier fn;
@@
fn(...,
- struct timex *ts) {
+ struct __kernel_timex *ts) {
...
}
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: linux-alpha@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
		
	
			
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #define TIMER_RETRY 1
 | |
| 
 | |
| struct k_clock {
 | |
| 	int	(*clock_getres)(const clockid_t which_clock,
 | |
| 				struct timespec64 *tp);
 | |
| 	int	(*clock_set)(const clockid_t which_clock,
 | |
| 			     const struct timespec64 *tp);
 | |
| 	int	(*clock_get)(const clockid_t which_clock,
 | |
| 			     struct timespec64 *tp);
 | |
| 	int	(*clock_adj)(const clockid_t which_clock, struct __kernel_timex *tx);
 | |
| 	int	(*timer_create)(struct k_itimer *timer);
 | |
| 	int	(*nsleep)(const clockid_t which_clock, int flags,
 | |
| 			  const struct timespec64 *);
 | |
| 	int	(*timer_set)(struct k_itimer *timr, int flags,
 | |
| 			     struct itimerspec64 *new_setting,
 | |
| 			     struct itimerspec64 *old_setting);
 | |
| 	int	(*timer_del)(struct k_itimer *timr);
 | |
| 	void	(*timer_get)(struct k_itimer *timr,
 | |
| 			     struct itimerspec64 *cur_setting);
 | |
| 	void	(*timer_rearm)(struct k_itimer *timr);
 | |
| 	s64	(*timer_forward)(struct k_itimer *timr, ktime_t now);
 | |
| 	ktime_t	(*timer_remaining)(struct k_itimer *timr, ktime_t now);
 | |
| 	int	(*timer_try_to_cancel)(struct k_itimer *timr);
 | |
| 	void	(*timer_arm)(struct k_itimer *timr, ktime_t expires,
 | |
| 			     bool absolute, bool sigev_none);
 | |
| };
 | |
| 
 | |
| extern const struct k_clock clock_posix_cpu;
 | |
| extern const struct k_clock clock_posix_dynamic;
 | |
| extern const struct k_clock clock_process;
 | |
| extern const struct k_clock clock_thread;
 | |
| extern const struct k_clock alarm_clock;
 | |
| 
 | |
| int posix_timer_event(struct k_itimer *timr, int si_private);
 | |
| 
 | |
| void common_timer_get(struct k_itimer *timr, struct itimerspec64 *cur_setting);
 | |
| int common_timer_set(struct k_itimer *timr, int flags,
 | |
| 		     struct itimerspec64 *new_setting,
 | |
| 		     struct itimerspec64 *old_setting);
 | |
| int common_timer_del(struct k_itimer *timer);
 |