static-keys: Better error checking for static_key_enable/disable
PATCH 1/1 static-keys: Better error checking for static_key_enable/disable
The warnings for static_key_enable/disable don't catch common errors. For example, starting with a default enabled key and calling enable doesn't cause a warning until the next enable or disable. Check explicitly for zero or one instead of allowing both values in every case. Generated code should be smaller too.
include/linux/jump_label.h +2 -2
@@ -225,7 +225,7 @@ static inline void static_key_enable(struct static_key *key) {int count =static_key_count (key); -WARN_ON_ONCE (count <0 || count >1 ); +WARN_ON_ONCE (count);if (!count)static_key_slow_inc (key);
@@ -235,7 +235,7 @@ static inline void static_key_disable(struct static_key *key) {int count =static_key_count (key); -WARN_ON_ONCE (count <0 || count >1 ); +WARN_ON_ONCE (count !=1 );if (count)static_key_slow_dec (key);
Peter Zijlstra
maintainerQuoted 5 lines · Chuck Ebbert
The warnings for static_key_enable/disable don't catch common errors. For example, starting with a default enabled key and calling enable doesn't cause a warning until the next enable or disable. Check explicitly for zero or one instead of allowing both values in every case. Generated code should be smaller too.
I explicitly intended to allow multiple consecutive static_key_enable() calls (same for disable).
If its already enabled, calling enable should be a no-op.