Do free work if num_active == 0 and remove unnecessary tag reset_entity_pointer. Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxx> --- block/bfq-iosched.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c index dd9a51255a0f..1402dfd9f448 100644 --- a/block/bfq-iosched.c +++ b/block/bfq-iosched.c @@ -950,13 +950,11 @@ void __bfq_weights_tree_remove(struct bfq_data *bfqd, return; bfqq->weight_counter->num_active--; - if (bfqq->weight_counter->num_active > 0) - goto reset_entity_pointer; - - rb_erase_cached(&bfqq->weight_counter->weights_node, root); - kfree(bfqq->weight_counter); + if (bfqq->weight_counter->num_active == 0) { + rb_erase_cached(&bfqq->weight_counter->weights_node, root); + kfree(bfqq->weight_counter); + } -reset_entity_pointer: bfqq->weight_counter = NULL; bfq_put_queue(bfqq); } -- 2.30.0