diff options
Diffstat (limited to 'include/linux/seqlock.h')
| -rw-r--r-- | include/linux/seqlock.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h index e98cd2e57194..06d69648fc86 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h | |||
| @@ -88,12 +88,12 @@ static __always_inline unsigned read_seqbegin(const seqlock_t *sl) | |||
| 88 | unsigned ret; | 88 | unsigned ret; |
| 89 | 89 | ||
| 90 | repeat: | 90 | repeat: |
| 91 | ret = sl->sequence; | 91 | ret = ACCESS_ONCE(sl->sequence); |
| 92 | smp_rmb(); | ||
| 93 | if (unlikely(ret & 1)) { | 92 | if (unlikely(ret & 1)) { |
| 94 | cpu_relax(); | 93 | cpu_relax(); |
| 95 | goto repeat; | 94 | goto repeat; |
| 96 | } | 95 | } |
| 96 | smp_rmb(); | ||
| 97 | 97 | ||
| 98 | return ret; | 98 | return ret; |
| 99 | } | 99 | } |
