Commit 9cb38381 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 917b3c7c 9c39b7a9
...@@ -970,6 +970,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu) ...@@ -970,6 +970,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
struct llist_head *lhead = per_cpu_ptr(blkcg->lhead, cpu); struct llist_head *lhead = per_cpu_ptr(blkcg->lhead, cpu);
struct llist_node *lnode; struct llist_node *lnode;
struct blkg_iostat_set *bisc, *next_bisc; struct blkg_iostat_set *bisc, *next_bisc;
unsigned long flags;
rcu_read_lock(); rcu_read_lock();
...@@ -983,7 +984,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu) ...@@ -983,7 +984,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
* When flushing from cgroup, cgroup_rstat_lock is always held, so * When flushing from cgroup, cgroup_rstat_lock is always held, so
* this lock won't cause contention most of time. * this lock won't cause contention most of time.
*/ */
raw_spin_lock(&blkg_stat_lock); raw_spin_lock_irqsave(&blkg_stat_lock, flags);
/* /*
* Iterate only the iostat_cpu's queued in the lockless list. * 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) ...@@ -1009,7 +1010,7 @@ static void __blkcg_rstat_flush(struct blkcg *blkcg, int cpu)
blkcg_iostat_update(parent, &blkg->iostat.cur, blkcg_iostat_update(parent, &blkg->iostat.cur,
&blkg->iostat.last); &blkg->iostat.last);
} }
raw_spin_unlock(&blkg_stat_lock); raw_spin_unlock_irqrestore(&blkg_stat_lock, flags);
out: out:
rcu_read_unlock(); rcu_read_unlock();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment