[lkml]   [2003]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
SubjectRe: irda weirdness
On Sun, 5 Oct 2003, Mikko Korhonen wrote:

> I'm getting
> Debug: sleeping function called from invalid context at
> include/asm/uaccess.h:498

copy_from_user called from context where sleeping is not allowed. No idea
where this is comming from - it's not in your calltrace.

> and Badness in local_bh_enable at kernel/softirq.c:119

local_bh_enable called with irqs_disabled.

Your calltrace suggests it's called from sirdev_hard_xmit, i.e. the final
spin_unlock_bh - definitedly a bad idea because netdev->hard_start_xmit
is already called with bh disabled. However, I'm not sure is this is the
whole story because I fail to see who might call us with interrupts off.

Could you try the patch below?



--- linux-2.6.0-test6-bk5/drivers/net/irda/sir_dev.c Sat Oct 4 11:45:44 2003
+++ v2.6.0-test6-bk5-md/drivers/net/irda/sir_dev.c Sun Oct 5 17:20:13 2003
@@ -306,8 +306,8 @@ static int sirdev_hard_xmit(struct sk_bu
IRDA_DEBUG(3, "%s(), write not completed\n", __FUNCTION__);

- /* serialize with write completion */
- spin_lock_bh(&dev->tx_lock);
+ /* serialize with write completion - bh's already disabled */
+ spin_lock(&dev->tx_lock);

/* Copy skb to tx_buff while wrapping, stuffing and making CRC */
dev->tx_buff.len = async_wrap_skb(skb, dev->, dev->tx_buff.truesize);
@@ -337,7 +337,7 @@ static int sirdev_hard_xmit(struct sk_bu
- spin_unlock_bh(&dev->tx_lock);
+ spin_unlock(&dev->tx_lock);

return 0;
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:49    [W:0.044 / U:0.512 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site