bfq: Fix the missing barrier in __bfq_entity_update_weight_prio
authorFam Zheng <zhengfeiran@bytedance.com>
Wed, 28 Aug 2019 03:54:51 +0000 (11:54 +0800)
committerJens Axboe <axboe@kernel.dk>
Fri, 6 Sep 2019 20:33:48 +0000 (14:33 -0600)
The comment of bfq_group_set_weight says the reading of prio_changed
should happen before the reading of weight, but a memory barrier is
missing here. Add it now, to match the smp_wmb() there.

Signed-off-by: Fam Zheng <zhengfeiran@bytedance.com>
Reviewed-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bfq-wf2q.c

index c9ba225..05f0bf4 100644 (file)
@@ -744,6 +744,8 @@ __bfq_entity_update_weight_prio(struct bfq_service_tree *old_st,
                }
 #endif
 
+               /* Matches the smp_wmb() in bfq_group_set_weight. */
+               smp_rmb();
                old_st->wsum -= entity->weight;
 
                if (entity->new_weight != entity->orig_weight) {