History

Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull locking fixes from Ingo Molnar: "Two fixes from lockdep coverage of seqlocks, which fix deadlocks on lockdep-enabled ARM systems" * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched_clock: Disable seqlock lockdep usage in sched_clock() seqlock: Use raw_ prefix instead of _no_lockdep

Linus Torvalds committed 12 years ago

Commit 9b6c4ea2 parents 93a11c8 7a06c413 files · +26 −15Browse files

Showing the changes to arch (1 of 3 files). Show all

Unified · Split

arch/x86/vdso/vclock_gettime.c+4−4
@@ -178,7 +178,7 @@ notrace static int __always_inline do_realtime(struct timespec *ts) · 177 unmodified lines
178 178
179 ts->tv_nsec = 0;179 ts->tv_nsec = 0;
180 do {180 do {
181 seq = read_seqcount_begin_no_lockdep(&gtod->seq);181 seq = raw_read_seqcount_begin(&gtod->seq);
182 mode = gtod->clock.vclock_mode;182 mode = gtod->clock.vclock_mode;
183 ts->tv_sec = gtod->wall_time_sec;183 ts->tv_sec = gtod->wall_time_sec;
184 ns = gtod->wall_time_snsec;184 ns = gtod->wall_time_snsec;
@@ -198,7 +198,7 @@ notrace static int do_monotonic(struct timespec *ts) · 13 unmodified lines
198 198
199 ts->tv_nsec = 0;199 ts->tv_nsec = 0;
200 do {200 do {
201 seq = read_seqcount_begin_no_lockdep(&gtod->seq);201 seq = raw_read_seqcount_begin(&gtod->seq);
202 mode = gtod->clock.vclock_mode;202 mode = gtod->clock.vclock_mode;
203 ts->tv_sec = gtod->monotonic_time_sec;203 ts->tv_sec = gtod->monotonic_time_sec;
204 ns = gtod->monotonic_time_snsec;204 ns = gtod->monotonic_time_snsec;
@@ -214,7 +214,7 @@ notrace static int do_realtime_coarse(struct timespec *ts) · 9 unmodified lines
214{214{
215 unsigned long seq;215 unsigned long seq;
216 do {216 do {
217 seq = read_seqcount_begin_no_lockdep(&gtod->seq);217 seq = raw_read_seqcount_begin(&gtod->seq);
218 ts->tv_sec = gtod->wall_time_coarse.tv_sec;218 ts->tv_sec = gtod->wall_time_coarse.tv_sec;
219 ts->tv_nsec = gtod->wall_time_coarse.tv_nsec;219 ts->tv_nsec = gtod->wall_time_coarse.tv_nsec;
220 } while (unlikely(read_seqcount_retry(&gtod->seq, seq)));220 } while (unlikely(read_seqcount_retry(&gtod->seq, seq)));
@@ -225,7 +225,7 @@ notrace static int do_monotonic_coarse(struct timespec *ts) · 4 unmodified lines
225{225{
226 unsigned long seq;226 unsigned long seq;
227 do {227 do {
228 seq = read_seqcount_begin_no_lockdep(&gtod->seq);228 seq = raw_read_seqcount_begin(&gtod->seq);
229 ts->tv_sec = gtod->monotonic_time_coarse.tv_sec;229 ts->tv_sec = gtod->monotonic_time_coarse.tv_sec;
230 ts->tv_nsec = gtod->monotonic_time_coarse.tv_nsec;230 ts->tv_nsec = gtod->monotonic_time_coarse.tv_nsec;
231 } while (unlikely(read_seqcount_retry(&gtod->seq, seq)));231 } while (unlikely(read_seqcount_retry(&gtod->seq, seq)));