Message ID | 20200129180625.24486-1-dave@stgolabs.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | security, keys: Optimize barrier usage for Rmw atomic bitops | expand |
ping? On Wed, 29 Jan 2020, Davidlohr Bueso wrote: >For both set and clear_bit, we can avoid the unnecessary barriers >on non LL/SC architectures, such as x86. Instead, use the >smp_mb__{before,after}_atomic() calls. > >Signed-off-by: Davidlohr Bueso <dbueso@suse.de> >--- > security/keys/gc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > >diff --git a/security/keys/gc.c b/security/keys/gc.c >index 671dd730ecfc..ce7b4c22e3c4 100644 >--- a/security/keys/gc.c >+++ b/security/keys/gc.c >@@ -102,7 +102,7 @@ void key_gc_keytype(struct key_type *ktype) > > key_gc_dead_keytype = ktype; > set_bit(KEY_GC_REAPING_KEYTYPE, &key_gc_flags); >- smp_mb(); >+ smp_mb__after_atomic(); > set_bit(KEY_GC_REAP_KEYTYPE, &key_gc_flags); > > kdebug("schedule"); >@@ -308,7 +308,7 @@ static void key_garbage_collector(struct work_struct *work) > > if (unlikely(gc_state & KEY_GC_REAPING_DEAD_3)) { > kdebug("dead wake"); >- smp_mb(); >+ smp_mb__before_atomic(); > clear_bit(KEY_GC_REAPING_KEYTYPE, &key_gc_flags); > wake_up_bit(&key_gc_flags, KEY_GC_REAPING_KEYTYPE); > } >-- >2.16.4 >
diff --git a/security/keys/gc.c b/security/keys/gc.c index 671dd730ecfc..ce7b4c22e3c4 100644 --- a/security/keys/gc.c +++ b/security/keys/gc.c @@ -102,7 +102,7 @@ void key_gc_keytype(struct key_type *ktype) key_gc_dead_keytype = ktype; set_bit(KEY_GC_REAPING_KEYTYPE, &key_gc_flags); - smp_mb(); + smp_mb__after_atomic(); set_bit(KEY_GC_REAP_KEYTYPE, &key_gc_flags); kdebug("schedule"); @@ -308,7 +308,7 @@ static void key_garbage_collector(struct work_struct *work) if (unlikely(gc_state & KEY_GC_REAPING_DEAD_3)) { kdebug("dead wake"); - smp_mb(); + smp_mb__before_atomic(); clear_bit(KEY_GC_REAPING_KEYTYPE, &key_gc_flags); wake_up_bit(&key_gc_flags, KEY_GC_REAPING_KEYTYPE); }
For both set and clear_bit, we can avoid the unnecessary barriers on non LL/SC architectures, such as x86. Instead, use the smp_mb__{before,after}_atomic() calls. Signed-off-by: Davidlohr Bueso <dbueso@suse.de> --- security/keys/gc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)