On Tue, Jul 31, 2018 at 10:02 AM Kees Cook keescook@chromium.org wrote:
On Tue, Jul 31, 2018 at 9:48 AM, Nick Desaulniers ndesaulniers@google.com wrote:
Does anyone understand this error? The code looks just fine to me, and the source file doesn't conflict with any of the macros I've added (certainly not in any way that could cause an indentation error as reported here).
It does _use_ the macro, but yeah, I'm stumped...
On Tue, Jul 31, 2018 at 3:27 AM kbuild test robot lkp@intel.com wrote:
drivers/net//wireless/intel/iwlwifi/iwl-trans.c: In function 'iwl_trans_send_cmd':
drivers/net//wireless/intel/iwlwifi/iwl-trans.c:137:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (!(cmd->flags & CMD_ASYNC)) ^~
drivers/net//wireless/intel/iwlwifi/iwl-trans.c:138:1: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' lock_map_acquire_read(&trans->sync_cmd_lockdep_map); ^ ~
vim +/if +137 drivers/net//wireless/intel/iwlwifi/iwl-trans.c
92fe8343 Emmanuel Grumbach 2015-12-01 @137 if (!(cmd->flags & CMD_ASYNC)) 92fe8343 Emmanuel Grumbach 2015-12-01 138 lock_map_acquire_read(&trans->sync_cmd_lockdep_map);
#define lock_map_acquire_read(l) lock_acquire_shared_recursive(l, 0, 0, NULL, _THIS_IP_)
#define lock_acquire_shared_recursive(l, s, t, n, i) lock_acquire(l, s, t, 2, 1, n, i)
The config doesn't have CONFIG_LOCKDEP, so it's not:
extern void lock_acquire(struct lockdep_map *lock, unsigned int subclass, int trylock, int read, int check, struct lockdep_map *nest_lock, unsigned long ip);
but rather:
# define lock_acquire(l, s, t, r, c, n, i) do { } while (0)
If you build with the same gcc and config, does it reproduce for you?
Indeed, gcc 6, 7, or 8 + the provided config reproduce the issue.