提交 a9d49f94 编写于 作者: L Li Nan 提交者: Zheng Zengkai

bfq: fix null-ptr-deref in bfq_pd_offline

hulk inclusion
category: bugfix
bugzilla: 188174, https://gitee.com/openeuler/kernel/issues/I677QO
CVE: NA

--------------------------------

bfqg->bfqd is assigned in bfq_pd_init(). bfqg may be allocted but not
initialized when bfq_pd_alloc() return NULL in blkcg_activate_policy().
queue_lock is unlock now and delete cgroup at this time will cause error.

  T1					T2
  bfq_init_queue
   bfq_create_group_hierarchy
    blkcg_activate_policy
     traverse q->blkg_list
      1)pd_alloc_fn success
         blkg->pd[pol->plid] = pd
      2)pd_alloc_fn fail
         spin_unlock_irq(&q->queue_lock)
	  -> 1)is alloced but not init
					blkcg_destroy_blkgs
  					 blkg_destroy
  					  if blkg->pd[i]
  					   bfq_pd_offline
  					    use bfqg->bfqd -> error
Signed-off-by: NLi Nan <linan122@huawei.com>
Reviewed-by: NHou Tao <houtao1@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 9da915fa
...@@ -911,6 +911,9 @@ static void bfq_pd_offline(struct blkg_policy_data *pd) ...@@ -911,6 +911,9 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
unsigned long flags; unsigned long flags;
int i; int i;
if (!bfqg->online)
return;
spin_lock_irqsave(&bfqd->lock, flags); spin_lock_irqsave(&bfqd->lock, flags);
if (!entity) /* root group */ if (!entity) /* root group */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册