- patches.apparmor/remove_suid_new_case_in_2.6.22.diff: Merge fix.
[linux-flexiantxendom0-3.2.10.git] / drivers / media / dvb / b2c2 / flexcop-pci.c
index 6e16680..01af4d2 100644 (file)
@@ -127,10 +127,11 @@ static irqreturn_t flexcop_pci_isr(int irq, void *dev_id)
 {
        struct flexcop_pci *fc_pci = dev_id;
        struct flexcop_device *fc = fc_pci->fc_dev;
+       unsigned long flags;
        flexcop_ibi_value v;
        irqreturn_t ret = IRQ_HANDLED;
 
-       spin_lock_irq(&fc_pci->irq_lock);
+       spin_lock_irqsave(&fc_pci->irq_lock,flags);
 
        v = fc->read_ibi_reg(fc,irq_20c);
 
@@ -194,7 +195,7 @@ static irqreturn_t flexcop_pci_isr(int irq, void *dev_id)
                ret = IRQ_NONE;
        }
 
-       spin_unlock_irq(&fc_pci->irq_lock);
+       spin_unlock_irqrestore(&fc_pci->irq_lock,flags);
 
        return ret;
 }
@@ -293,12 +294,12 @@ static int flexcop_pci_init(struct flexcop_pci *fc_pci)
        }
 
        pci_set_drvdata(fc_pci->pdev, fc_pci);
-
+       spin_lock_init(&fc_pci->irq_lock);
        if ((ret = request_irq(fc_pci->pdev->irq, flexcop_pci_isr,
                                        IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
                goto err_pci_iounmap;
 
-       spin_lock_init(&fc_pci->irq_lock);
+
 
        fc_pci->init_state |= FC_PCI_INIT;
        return ret;