libertas: fix interrupt while removing driver
authorHolger Schurig <hs4233@mail.mn-solutions.de>
Fri, 25 Jan 2008 13:15:48 +0000 (14:15 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Feb 2008 03:26:49 +0000 (19:26 -0800)
Previously I've got an interrupt while removing the driver.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wireless/libertas/if_cs.c

index 4b5ab9a6b97b78687e56d1e5070addd9c7a1d8d9..5a9cadb97503fbf6ab8b4ba68a18d7da4a5e2ed6 100644 (file)
@@ -249,14 +249,14 @@ static irqreturn_t if_cs_interrupt(int irq, void *data)
        lbs_deb_enter(LBS_DEB_CS);
 
        int_cause = if_cs_read16(card, IF_CS_C_INT_CAUSE);
-       if(int_cause == 0x0) {
+       if (int_cause == 0x0) {
                /* Not for us */
                return IRQ_NONE;
 
        } else if (int_cause == 0xffff) {
                /* Read in junk, the card has probably been removed */
                card->priv->surpriseremoved = 1;
-
+               return IRQ_HANDLED;
        } else {
                if (int_cause & IF_CS_H_IC_TX_OVER)
                        lbs_host_to_card_done(card->priv);
@@ -717,8 +717,8 @@ static void if_cs_release(struct pcmcia_device *p_dev)
 
        lbs_deb_enter(LBS_DEB_CS);
 
-       pcmcia_disable_device(p_dev);
        free_irq(p_dev->irq.AssignedIRQ, card);
+       pcmcia_disable_device(p_dev);
        if (card->iobase)
                ioport_unmap(card->iobase);