Skip to content

Commit 9cb3838

Browse files
committed
Merge tag 'block-6.4-2023-06-23' of git://git.kernel.dk/linux
Pull block fix from Jens Axboe: "It's apparently the week of 'fixup something from last week', because the same is true for this block pull request. Fix up a lock grab that needs to be IRQ saving, rather than just IRQ disabling, in the block cgroup code" * tag 'block-6.4-2023-06-23' of git://git.kernel.dk/linux: block: make sure local irq is disabled when calling __blkcg_rstat_flush
2 parents 917b3c7 + 9c39b7a commit 9cb3838

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

block/blk-cgroup.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -970,6 +970,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
970970
struct llist_head *lhead = per_cpu_ptr(blkcg->lhead, cpu);
971971
struct llist_node *lnode;
972972
struct blkg_iostat_set *bisc, *next_bisc;
973+
unsigned long flags;
973974

974975
rcu_read_lock();
975976

@@ -983,7 +984,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
983984
* When flushing from cgroup, cgroup_rstat_lock is always held, so
984985
* this lock won't cause contention most of time.
985986
*/
986-
raw_spin_lock(&blkg_stat_lock);
987+
raw_spin_lock_irqsave(&blkg_stat_lock, flags);
987988

988989
/*
989990
* Iterate only the iostat_cpu's queued in the lockless list.
@@ -1009,7 +1010,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
10091010
blkcg_iostat_update(parent, &blkg->iostat.cur,
10101011
&blkg->iostat.last);
10111012
}
1012-
raw_spin_unlock(&blkg_stat_lock);
1013+
raw_spin_unlock_irqrestore(&blkg_stat_lock, flags);
10131014
out:
10141015
rcu_read_unlock();
10151016
}

0 commit comments

Comments
 (0)