diff --git a/[refs] b/[refs] index e7b40aba133b..a51d8bdfedea 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9cbb17508808f8a6bdd83354b61e126ac4fa6fed +refs/heads/master: 2a7d5559b346574057dce4672d1ed9aaa9d1e685 diff --git a/trunk/block/blk-core.c b/trunk/block/blk-core.c index 177ddcf356e6..35bf4fe8234c 100644 --- a/trunk/block/blk-core.c +++ b/trunk/block/blk-core.c @@ -2913,17 +2913,16 @@ static void flush_plug_callbacks(struct blk_plug *plug) { LIST_HEAD(callbacks); - if (list_empty(&plug->cb_list)) - return; - - list_splice_init(&plug->cb_list, &callbacks); + while (!list_empty(&plug->cb_list)) { + list_splice_init(&plug->cb_list, &callbacks); - while (!list_empty(&callbacks)) { - struct blk_plug_cb *cb = list_first_entry(&callbacks, + while (!list_empty(&callbacks)) { + struct blk_plug_cb *cb = list_first_entry(&callbacks, struct blk_plug_cb, list); - list_del(&cb->list); - cb->callback(cb); + list_del(&cb->list); + cb->callback(cb); + } } }