|
@@ -546,12 +546,12 @@ at86rf230_xmit(struct ieee802154_dev *dev, struct sk_buff *skb)
|
|
|
int rc;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock(&lp->lock);
|
|
|
+ spin_lock_irqsave(&lp->lock, flags);
|
|
|
if (lp->irq_busy) {
|
|
|
- spin_unlock(&lp->lock);
|
|
|
+ spin_unlock_irqrestore(&lp->lock, flags);
|
|
|
return -EBUSY;
|
|
|
}
|
|
|
- spin_unlock(&lp->lock);
|
|
|
+ spin_unlock_irqrestore(&lp->lock, flags);
|
|
|
|
|
|
might_sleep();
|
|
|
|
|
@@ -725,10 +725,11 @@ static void at86rf230_irqwork_level(struct work_struct *work)
|
|
|
static irqreturn_t at86rf230_isr(int irq, void *data)
|
|
|
{
|
|
|
struct at86rf230_local *lp = data;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- spin_lock(&lp->lock);
|
|
|
+ spin_lock_irqsave(&lp->lock, flags);
|
|
|
lp->irq_busy = 1;
|
|
|
- spin_unlock(&lp->lock);
|
|
|
+ spin_unlock_irqrestore(&lp->lock, flags);
|
|
|
|
|
|
schedule_work(&lp->irqwork);
|
|
|
|