From: pengdonglin Since commit a8bb74acd8efe ("rcu: Consolidate RCU-sched update-side function definitions") there is no difference between rcu_read_lock(), rcu_read_lock_bh() and rcu_read_lock_sched() in terms of RCU read section and the relevant grace period. That means that spin_lock(), which implies rcu_read_lock_sched(), also implies rcu_read_lock(). There is no need no explicitly start a RCU read section if one has already been started implicitly by spin_lock(). Simplify the code and remove the inner rcu_read_lock() invocation. Cc: Harald Freudenberger Cc: Holger Dengler Cc: Vasily Gorbik Cc: Alexander Gordeev Signed-off-by: pengdonglin Signed-off-by: pengdonglin --- drivers/s390/crypto/pkey_base.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/s390/crypto/pkey_base.c b/drivers/s390/crypto/pkey_base.c index b15741461a63..4c4a9feecccc 100644 --- a/drivers/s390/crypto/pkey_base.c +++ b/drivers/s390/crypto/pkey_base.c @@ -48,16 +48,13 @@ int pkey_handler_register(struct pkey_handler *handler) spin_lock(&handler_list_write_lock); - rcu_read_lock(); list_for_each_entry_rcu(h, &handler_list, list) { if (h == handler) { - rcu_read_unlock(); spin_unlock(&handler_list_write_lock); module_put(handler->module); return -EEXIST; } } - rcu_read_unlock(); list_add_rcu(&handler->list, &handler_list); spin_unlock(&handler_list_write_lock); -- 2.34.1