target: silence GCC warning in target_alua_state_check
authorPaul Bolle <pebolle@tiscali.nl>
Thu, 20 Feb 2014 08:07:52 +0000 (09:07 +0100)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 13 Mar 2014 19:02:05 +0000 (12:02 -0700)
commit1e3ab99da66312f503b3b28c98173168008a8605
tree5abb26cae6db63c91af8936ed229e2f8cfb8f78c
parent5aad2145ac42a12ae8bf8383d2e0319c172d99a7
target: silence GCC warning in target_alua_state_check

Building target_core_alua.o triggers a GCC warning:
    drivers/target/target_core_alua.c: In function ‘target_alua_state_check’:
    drivers/target/target_core_alua.c:773:18: warning: ‘alua_ascq’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       cmd->scsi_ascq = alua_ascq;
                      ^

This is a false positive. A little trial and error shows it is
apparently caused by core_alua_state_lba_dependent(). It must be hard
for GCC to track the branches of a switch statement, inside a
list_for_each_entry loop, inside a while loop.

But if we add a small (inline) helper function we can reorganize the
code a bit. That also allows to drop alua_ascq which, obviously, gets
rid of this warning.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_alua.c