]> git.baikalelectronics.ru Git - kernel.git/commit
block: nr_sects_write(): Disable preemption on seqcount write
authorAhmed S. Darwish <a.darwish@linutronix.de>
Wed, 3 Jun 2020 14:49:48 +0000 (16:49 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 5 Jun 2020 03:22:28 +0000 (21:22 -0600)
commit5f78e16e8703540b826971221915ef0057ddb7ba
tree33b5c887643b18efec05f05d65749d0e79af59ac
parent804722fc730cbdf41639bb3e8296a7accc523501
block: nr_sects_write(): Disable preemption on seqcount write

For optimized block readers not holding a mutex, the "number of sectors"
64-bit value is protected from tearing on 32-bit architectures by a
sequence counter.

Disable preemption before entering that sequence counter's write side
critical section. Otherwise, the read side can preempt the write side
section and spin for the entire scheduler tick. If the reader belongs to
a real-time scheduling class, it can spin forever and the kernel will
livelock.

Fixes: 92bb00e592df ("block: add partition resize function to blkpg ioctl")
Cc: <stable@vger.kernel.org>
Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk.h