Messages in this thread | | | Date | Sat, 30 Jun 2007 15:25:58 +0400 | From | Oleg Nesterov <> | Subject | Re: [RFC PATCH 0/6] Convert all tasklets to workqueues |
| |
On 06/29, Oleg Nesterov wrote: > > Suppose we have the tasklets T1 and T2, both are scheduled on the > same CPU. T1 takes some spinlock LOCK. > > Currently it is possible to do > > spin_lock(LOCK); > disable_tasklet(T2); > > With this patch, the above code hangs.
I am stupid. Yes, flush_workqueue() is evil and should not be used, but if we use workqueues, tasklet_disable() becomes might_sleep() anyway. This is incompatible and unavoidable change.
grep, grep...
net/bluetooth/hci_core.c:hci_rx_task()
read_lock(&hci_task_lock) hci_event_packet() hci_num_comp_pkts_evt() tasklet_disable(&hdev->tx_task)
Oleg.
- 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/
| |