New: Race: host lock is not acquired before calling ql_icmd
Does drivers/scsi/qlogicfas408.c have a maintainer?
Begin forwarded message:
Date: Wed, 6 Dec 2006 16:14:31 -0800
From: [email protected]
To: [email protected]
Subject: [Bugme-new] [Bug 7644] New: Race: host lock is not acquired before calling ql_icmd
http://bugzilla.kernel.org/show_bug.cgi?id=7644
Summary: Race: host lock is not acquired before calling ql_icmd
Kernel Version: 2.6.19
Status: NEW
Severity: normal
Owner: [email protected]
Submitter: [email protected]
The caller of ql_icmd() should hold the host lock (from the head comments of ql_icmd() shown below). But, the lock is not acquired in function qlogicfas408_queuecommand(). All of these code is in file drivers/scsi/qlogicfas408.c
/*
* Initiate scsi command - queueing handler
* caller must hold host lock
*/
static void ql_icmd(struct scsi_cmnd *cmd)
{
struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
int qbase = priv->qbase;
int int_type = priv->int_type;
unsigned int i;
priv->qabort = 0;
REG0;
/* clearing of interrupts and the fifo is needed */...
------------------------------------------------------
int qlogicfas408_queuecommand(struct scsi_cmnd *cmd,
void (*done) (struct scsi_cmnd *))
{
struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
if (scmd_id(cmd) == priv->qinitid) {
cmd->result = DID_BAD_TARGET << 16;
done(cmd);
return 0;
}
cmd->scsi_done = done;
/* wait for the last command's interrupt to finish */
while (priv->qlcmd != NULL) {
barrier();
cpu_relax();
}
ql_icmd(cmd);
return 0;
}------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.