[SCSI] zfcp: use of uninitialized variable
commit 988d955c3314336d716a9208f3d565b06f262e07 Author: Swen Schillig <swen@vnet.ibm.com> Date: Fri Feb 9 09:40:11 2007 +0100 Use of uninitialized variable. ERP action might not be finished accordingly. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
6fcc47111a
commit
ca880cf933
|
@ -841,29 +841,27 @@ zfcp_erp_action_exists(struct zfcp_erp_action *erp_action)
|
||||||
*
|
*
|
||||||
* returns: 0
|
* returns: 0
|
||||||
*/
|
*/
|
||||||
static int
|
static void
|
||||||
zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
||||||
{
|
{
|
||||||
int retval = 0;
|
|
||||||
struct zfcp_fsf_req *fsf_req = NULL;
|
|
||||||
struct zfcp_adapter *adapter = erp_action->adapter;
|
struct zfcp_adapter *adapter = erp_action->adapter;
|
||||||
|
|
||||||
if (erp_action->fsf_req) {
|
if (erp_action->fsf_req) {
|
||||||
/* take lock to ensure that request is not deleted meanwhile */
|
/* take lock to ensure that request is not deleted meanwhile */
|
||||||
spin_lock(&adapter->req_list_lock);
|
spin_lock(&adapter->req_list_lock);
|
||||||
if ((!zfcp_reqlist_ismember(adapter,
|
if (zfcp_reqlist_ismember(adapter,
|
||||||
erp_action->fsf_req->req_id)) &&
|
erp_action->fsf_req->req_id)) {
|
||||||
(fsf_req->erp_action == erp_action)) {
|
|
||||||
/* fsf_req still exists */
|
/* fsf_req still exists */
|
||||||
debug_text_event(adapter->erp_dbf, 3, "a_ca_req");
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_req");
|
||||||
debug_event(adapter->erp_dbf, 3, &fsf_req,
|
debug_event(adapter->erp_dbf, 3, &erp_action->fsf_req,
|
||||||
sizeof (unsigned long));
|
sizeof (unsigned long));
|
||||||
/* dismiss fsf_req of timed out/dismissed erp_action */
|
/* dismiss fsf_req of timed out/dismissed erp_action */
|
||||||
if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED |
|
if (erp_action->status & (ZFCP_STATUS_ERP_DISMISSED |
|
||||||
ZFCP_STATUS_ERP_TIMEDOUT)) {
|
ZFCP_STATUS_ERP_TIMEDOUT)) {
|
||||||
debug_text_event(adapter->erp_dbf, 3,
|
debug_text_event(adapter->erp_dbf, 3,
|
||||||
"a_ca_disreq");
|
"a_ca_disreq");
|
||||||
fsf_req->status |= ZFCP_STATUS_FSFREQ_DISMISSED;
|
erp_action->fsf_req->status |=
|
||||||
|
ZFCP_STATUS_FSFREQ_DISMISSED;
|
||||||
}
|
}
|
||||||
if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
|
if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) {
|
||||||
ZFCP_LOG_NORMAL("error: erp step timed out "
|
ZFCP_LOG_NORMAL("error: erp step timed out "
|
||||||
|
@ -876,11 +874,11 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
||||||
* then keep it running asynchronously and don't mess
|
* then keep it running asynchronously and don't mess
|
||||||
* with the association of erp_action and fsf_req.
|
* with the association of erp_action and fsf_req.
|
||||||
*/
|
*/
|
||||||
if (fsf_req->status & (ZFCP_STATUS_FSFREQ_COMPLETED |
|
if (erp_action->fsf_req->status &
|
||||||
|
(ZFCP_STATUS_FSFREQ_COMPLETED |
|
||||||
ZFCP_STATUS_FSFREQ_DISMISSED)) {
|
ZFCP_STATUS_FSFREQ_DISMISSED)) {
|
||||||
/* forget about association between fsf_req
|
/* forget about association between fsf_req
|
||||||
and erp_action */
|
and erp_action */
|
||||||
fsf_req->erp_action = NULL;
|
|
||||||
erp_action->fsf_req = NULL;
|
erp_action->fsf_req = NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -894,8 +892,6 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
||||||
spin_unlock(&adapter->req_list_lock);
|
spin_unlock(&adapter->req_list_lock);
|
||||||
} else
|
} else
|
||||||
debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq");
|
debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq");
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue