Tejun Heo <tj@xxxxxxxxxx> writes: > Async cfqq's (cfq_queue's) are shared across cfq_data. When > cfq_get_queue() obtains a new queue from cfq_find_alloc_queue(), it > stashes the pointer in cfq_data and reuses it from then on; however, > the function doesn't consider that cfq_find_alloc_queue() may return > the oom_cfqq under memory pressure and installs the returned queue > unconditionally. > > If the oom_cfqq is installed as an async cfqq, cfq_set_request() will > continue calling cfq_get_queue() hoping to replace it with a proper > queue; however, cfq_get_queue() will keep returning the cached queue > for the slot - the oom_cfqq. > > Fix it by skipping caching if the queue is the oom one. Good catch. Reviewed-by: Jeff Moyer <jmoyer@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html