diff --git a/[refs] b/[refs] index 8ba03f7dfd9d..06b72d38ea13 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0351096eb0584ba927a00a37e18be7af135250c3 +refs/heads/master: 5a41344a3d83ef2c08e40bfce1efa5795def9b82 diff --git a/trunk/kernel/srcu.c b/trunk/kernel/srcu.c index 2b859828cdc3..c9d003bc6c49 100644 --- a/trunk/kernel/srcu.c +++ b/trunk/kernel/srcu.c @@ -321,10 +321,8 @@ EXPORT_SYMBOL_GPL(__srcu_read_lock); */ void __srcu_read_unlock(struct srcu_struct *sp, int idx) { - preempt_disable(); smp_mb(); /* C */ /* Avoid leaking the critical section. */ - ACCESS_ONCE(this_cpu_ptr(sp->per_cpu_ref)->c[idx]) -= 1; - preempt_enable(); + this_cpu_dec(sp->per_cpu_ref->c[idx]); } EXPORT_SYMBOL_GPL(__srcu_read_unlock);