* taskqueue_create() was not ensuring a zero'd task queue structure,
resulting in a situation where the flags and other fields could end
up as garbage and prevent the taskqueue from being signaled on enqueue.
* This bug was responsible for situations where CAM fails to complete
its configuration, generating warnings for 60 seconds and then giving
up.
{
struct taskqueue *queue;
- queue = kmalloc(sizeof(struct taskqueue), M_TASKQUEUE, mflags);
+ queue = kmalloc(sizeof(*queue), M_TASKQUEUE, mflags | M_ZERO);
if (!queue)
return NULL;
STAILQ_INIT(&queue->tq_queue);