> Hello!
>> I forgot to add: The socket fasync lists use spinlocking in the
>> same was as RPC does, with sock_fasync() setting
>> write_lock_bh(&sk->callback_lock), and sock_def_write_space()
>> doing read_lock(&sk->callback_lock).
>>
>> So that would deadlock with the QDIO driver in the exact same
>> manner as the RPC stuff (albeit probably a lot less
>> frequently).
> Please, elaborate. I do not see any way.
Processor 1 Processor 2
(Call QDIO bottom half code)
spin_lock(&QDIO_lock);
write_lock_bh(&sk->callback_lock)
dev_kfree_skb_any()
-> kfree_skb()
<QDIO hard interrupt>
-> write_space()
->spin_lock(&QDIO_lock)
(spins...)
->read_lock(&sk->callback_lock);
(spins)
Deadlock - in exactly the same way as with the xprt code...
Cheers,
Trond
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/