patch-2.1.102 linux/drivers/fc4/soc.c

Next file: linux/drivers/isdn/isdn_net.c
Previous file: linux/drivers/fc4/Config.in
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.101/linux/drivers/fc4/soc.c linux/drivers/fc4/soc.c
@@ -304,14 +304,17 @@
 static void soc_intr(int irq, void *dev_id, struct pt_regs *regs)
 {
 	u32 cmd;
+	unsigned long flags;
 	register struct soc *s = (struct soc *)dev_id;
 
+	spin_lock_irqsave(&io_request_lock, flags);
 	cmd = s->regs->cmd;
 	for (; (cmd = SOC_INTR (s, cmd)); cmd = s->regs->cmd) {
 		if (cmd & SOC_CMD_RSP_Q1) soc_unsolicited (s);
 		if (cmd & SOC_CMD_RSP_Q0) soc_solicited (s);
 		if (cmd & SOC_CMD_REQ_QALL) soc_request (s, cmd);
 	}
+	spin_unlock_irqrestore(&io_request_lock, flags);
 }
 
 #define TOKEN(proto, port, token) (((proto)<<12)|(token)|(port))

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov