diff options
Diffstat (limited to 'drivers/net/ieee802154/at86rf230.c')
-rw-r--r-- | drivers/net/ieee802154/at86rf230.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index ab31544bc254..a30258aad139 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c | |||
@@ -546,12 +546,12 @@ at86rf230_xmit(struct ieee802154_dev *dev, struct sk_buff *skb) | |||
546 | int rc; | 546 | int rc; |
547 | unsigned long flags; | 547 | unsigned long flags; |
548 | 548 | ||
549 | spin_lock(&lp->lock); | 549 | spin_lock_irqsave(&lp->lock, flags); |
550 | if (lp->irq_busy) { | 550 | if (lp->irq_busy) { |
551 | spin_unlock(&lp->lock); | 551 | spin_unlock_irqrestore(&lp->lock, flags); |
552 | return -EBUSY; | 552 | return -EBUSY; |
553 | } | 553 | } |
554 | spin_unlock(&lp->lock); | 554 | spin_unlock_irqrestore(&lp->lock, flags); |
555 | 555 | ||
556 | might_sleep(); | 556 | might_sleep(); |
557 | 557 | ||
@@ -725,10 +725,11 @@ static void at86rf230_irqwork_level(struct work_struct *work) | |||
725 | static irqreturn_t at86rf230_isr(int irq, void *data) | 725 | static irqreturn_t at86rf230_isr(int irq, void *data) |
726 | { | 726 | { |
727 | struct at86rf230_local *lp = data; | 727 | struct at86rf230_local *lp = data; |
728 | unsigned long flags; | ||
728 | 729 | ||
729 | spin_lock(&lp->lock); | 730 | spin_lock_irqsave(&lp->lock, flags); |
730 | lp->irq_busy = 1; | 731 | lp->irq_busy = 1; |
731 | spin_unlock(&lp->lock); | 732 | spin_unlock_irqrestore(&lp->lock, flags); |
732 | 733 | ||
733 | schedule_work(&lp->irqwork); | 734 | schedule_work(&lp->irqwork); |
734 | 735 | ||