diff options
author | Nathan Chancellor <natechancellor@gmail.com> | 2019-06-03 19:44:06 -0400 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2019-06-18 19:46:24 -0400 |
commit | 961ed94e8a83d8881546a278bf844699af92a502 (patch) | |
tree | a8be51f0f1d42c2240bd779650f597e88959b2b1 | |
parent | d7b761b0694986ea811c0daaa1178bfaaddf036d (diff) |
scsi: ibmvscsi: Don't use rc uninitialized in ibmvscsi_do_work
clang warns:
drivers/scsi/ibmvscsi/ibmvscsi.c:2126:7: warning: variable 'rc' is used
uninitialized whenever switch case is taken [-Wsometimes-uninitialized]
case IBMVSCSI_HOST_ACTION_NONE:
^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/scsi/ibmvscsi/ibmvscsi.c:2151:6: note: uninitialized use occurs
here
if (rc) {
^~
Initialize rc in the IBMVSCSI_HOST_ACTION_UNBLOCK case statement then
shuffle IBMVSCSI_HOST_ACTION_NONE down to the default case statement and
make it return early so that rc is never used uninitialized in this
function.
Fixes: 035a3c4046b5 ("scsi: ibmvscsi: redo driver work thread to use enum action states")
Link: https://github.com/ClangBuiltLinux/linux/issues/502
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Suggested-by: Tyrel Datwyler <tyreld@linux.ibm.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Tyrel Datwyler <tyreld@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/ibmvscsi/ibmvscsi.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c index 727c31dc11a0..fcfaf037b5bf 100644 --- a/drivers/scsi/ibmvscsi/ibmvscsi.c +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c | |||
@@ -2123,8 +2123,8 @@ static void ibmvscsi_do_work(struct ibmvscsi_host_data *hostdata) | |||
2123 | 2123 | ||
2124 | spin_lock_irqsave(hostdata->host->host_lock, flags); | 2124 | spin_lock_irqsave(hostdata->host->host_lock, flags); |
2125 | switch (hostdata->action) { | 2125 | switch (hostdata->action) { |
2126 | case IBMVSCSI_HOST_ACTION_NONE: | ||
2127 | case IBMVSCSI_HOST_ACTION_UNBLOCK: | 2126 | case IBMVSCSI_HOST_ACTION_UNBLOCK: |
2127 | rc = 0; | ||
2128 | break; | 2128 | break; |
2129 | case IBMVSCSI_HOST_ACTION_RESET: | 2129 | case IBMVSCSI_HOST_ACTION_RESET: |
2130 | spin_unlock_irqrestore(hostdata->host->host_lock, flags); | 2130 | spin_unlock_irqrestore(hostdata->host->host_lock, flags); |
@@ -2142,8 +2142,10 @@ static void ibmvscsi_do_work(struct ibmvscsi_host_data *hostdata) | |||
2142 | if (!rc) | 2142 | if (!rc) |
2143 | rc = ibmvscsi_send_crq(hostdata, 0xC001000000000000LL, 0); | 2143 | rc = ibmvscsi_send_crq(hostdata, 0xC001000000000000LL, 0); |
2144 | break; | 2144 | break; |
2145 | case IBMVSCSI_HOST_ACTION_NONE: | ||
2145 | default: | 2146 | default: |
2146 | break; | 2147 | spin_unlock_irqrestore(hostdata->host->host_lock, flags); |
2148 | return; | ||
2147 | } | 2149 | } |
2148 | 2150 | ||
2149 | hostdata->action = IBMVSCSI_HOST_ACTION_NONE; | 2151 | hostdata->action = IBMVSCSI_HOST_ACTION_NONE; |