| From 93f56de259376d7e4fff2b2d104082e1fa66e237 Mon Sep 17 00:00:00 2001 |
| From: Matthias Kaehlcke <mka@chromium.org> |
| Date: Thu, 6 Apr 2017 16:31:41 -0700 |
| Subject: mac80211: Fix clang warning about constant operand in logical operation |
| |
| From: Matthias Kaehlcke <mka@chromium.org> |
| |
| commit 93f56de259376d7e4fff2b2d104082e1fa66e237 upstream. |
| |
| When clang detects a non-boolean constant in a logical operation it |
| generates a 'constant-logical-operand' warning. In |
| ieee80211_try_rate_control_ops_get() the result of strlen(<const str>) |
| is used in a logical operation, clang resolves the expression to an |
| (integer) constant at compile time when clang's builtin strlen function |
| is used. |
| |
| Change the condition to check for strlen() > 0 to make the constant |
| operand boolean and thus avoid the warning. |
| |
| Signed-off-by: Matthias Kaehlcke <mka@chromium.org> |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Cc: Nathan Chancellor <natechancellor@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/mac80211/rate.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/net/mac80211/rate.c |
| +++ b/net/mac80211/rate.c |
| @@ -173,9 +173,11 @@ ieee80211_rate_control_ops_get(const cha |
| /* try default if specific alg requested but not found */ |
| ops = ieee80211_try_rate_control_ops_get(ieee80211_default_rc_algo); |
| |
| - /* try built-in one if specific alg requested but not found */ |
| - if (!ops && strlen(CONFIG_MAC80211_RC_DEFAULT)) |
| + /* Note: check for > 0 is intentional to avoid clang warning */ |
| + if (!ops && (strlen(CONFIG_MAC80211_RC_DEFAULT) > 0)) |
| + /* try built-in one if specific alg requested but not found */ |
| ops = ieee80211_try_rate_control_ops_get(CONFIG_MAC80211_RC_DEFAULT); |
| + |
| kernel_param_unlock(THIS_MODULE); |
| |
| return ops; |