Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca880cf9 authored by Swen Schillig's avatar Swen Schillig Committed by James Bottomley
Browse files

[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: default avatarSwen Schillig <swen@vnet.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 6fcc4711
Loading
Loading
Loading
Loading
+8 −12
Original line number Original line Diff line number Diff line
@@ -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;
}
}


/**
/**