diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /kernel/time/posix-cpu-timers.c | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'kernel/time/posix-cpu-timers.c')
| -rw-r--r-- | kernel/time/posix-cpu-timers.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c index cb925e8ef9a8..2f5e9b34022c 100644 --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -243,13 +243,12 @@ static void proc_sample_cputime_atomic(struct task_cputime_atomic *at,   */  static inline void __update_gt_cputime(atomic64_t *cputime, u64 sum_cputime)  { -	u64 curr_cputime; -retry: -	curr_cputime = atomic64_read(cputime); -	if (sum_cputime > curr_cputime) { -		if (atomic64_cmpxchg(cputime, curr_cputime, sum_cputime) != curr_cputime) -			goto retry; -	} +	u64 curr_cputime = atomic64_read(cputime); + +	do { +		if (sum_cputime <= curr_cputime) +			return; +	} while (!atomic64_try_cmpxchg(cputime, &curr_cputime, sum_cputime));  }  static void update_gt_cputime(struct task_cputime_atomic *cputime_atomic,  | 
