From: Yahu Gao <yahugao@xxxxxxxxxxxxxx> Some inode pinned dying memory cgroup and its parent destroyed at first. The parent's pd of iocost won't be allocated during function blkcg_activate_policy. Ignore the DYING CSS to avoid kernel NULL during iocost policy data init. Signed-off-by: Yahu Gao <yahugao@xxxxxxxxxxxxxx> Signed-off-by: Kunhai Dai <daikunhai@xxxxxxxxxxxxxx> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index a91f8ae18b49..32472de2e61d 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1418,6 +1418,9 @@ int blkcg_activate_policy(struct request_queue *q, list_for_each_entry_reverse(blkg, &q->blkg_list, q_node) { struct blkg_policy_data *pd; + if (blkg->blkcg->css.flags & CSS_DYING) + continue; + if (blkg->pd[pol->plid]) continue; @@ -1459,8 +1462,11 @@ int blkcg_activate_policy(struct request_queue *q, /* all allocated, init in the same order */ if (pol->pd_init_fn) - list_for_each_entry_reverse(blkg, &q->blkg_list, q_node) + list_for_each_entry_reverse(blkg, &q->blkg_list, q_node) { + if (blkg->blkcg->css.flags & CSS_DYING) + continue; pol->pd_init_fn(blkg->pd[pol->plid]); + } __set_bit(pol->plid, q->blkcg_pols); ret = 0; -- 2.30.1