diff options
author | David S. Miller <davem@davemloft.net> | 2009-03-23 23:35:04 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-23 23:35:04 +0300 |
commit | 8be7cdccacfbfc707e7370cad9bb168defed636f (patch) | |
tree | 8416607b62ec352176c81afd6f4e7b571ceb957f /drivers/net/dm9000.c | |
parent | ecd4137320b59759bbe57eef89040ee3e5e66039 (diff) | |
parent | 61fa9dcf9329cb92c220f7b656410fbe5e72f933 (diff) | |
download | linux-8be7cdccacfbfc707e7370cad9bb168defed636f.tar.xz |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/ucc_geth.c
Diffstat (limited to 'drivers/net/dm9000.c')
-rw-r--r-- | drivers/net/dm9000.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index bcf92917bbf3..254ec62b5f58 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -930,13 +930,15 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id) struct net_device *dev = dev_id; board_info_t *db = netdev_priv(dev); int int_status; + unsigned long flags; u8 reg_save; dm9000_dbg(db, 3, "entering %s\n", __func__); /* A real interrupt coming */ - spin_lock(&db->lock); + /* holders of db->lock must always block IRQs */ + spin_lock_irqsave(&db->lock, flags); /* Save previous register address */ reg_save = readb(db->io_addr); @@ -972,7 +974,7 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id) /* Restore previous register address */ writeb(reg_save, db->io_addr); - spin_unlock(&db->lock); + spin_unlock_irqrestore(&db->lock, flags); return IRQ_HANDLED; } |