Files
kernel_nothing_sm7325/include/linux
Mikulas Patocka d14b6fe911 add barriers to buffer_uptodate and set_buffer_uptodate
commit d4252071b97d2027d246f6a82cbee4d52f618b47 upstream.

Let's have a look at this piece of code in __bread_slow:

	get_bh(bh);
	bh->b_end_io = end_buffer_read_sync;
	submit_bh(REQ_OP_READ, 0, bh);
	wait_on_buffer(bh);
	if (buffer_uptodate(bh))
		return bh;

Neither wait_on_buffer nor buffer_uptodate contain any memory barrier.
Consequently, if someone calls sb_bread and then reads the buffer data,
the read of buffer data may be executed before wait_on_buffer(bh) on
architectures with weak memory ordering and it may return invalid data.

Fix this bug by adding a memory barrier to set_buffer_uptodate and an
acquire barrier to buffer_uptodate (in a similar way as
folio_test_uptodate and folio_mark_uptodate).

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-25 11:17:18 +02:00
..
2019-08-09 09:15:05 +02:00
2019-09-17 10:27:46 -07:00
2020-02-19 19:53:09 +01:00
2019-08-20 22:09:52 +02:00
2019-08-28 21:17:12 -06:00
2022-07-07 17:36:49 +02:00
2021-01-30 13:54:11 +01:00
2020-03-25 08:25:58 +01:00
2019-09-05 11:40:54 +02:00
2019-10-02 06:36:50 -07:00
2021-05-19 10:08:30 +02:00
2022-04-15 14:18:32 +02:00
2019-12-13 08:42:53 +01:00
2021-03-04 10:26:29 +01:00
2021-02-07 15:35:49 +01:00
2021-11-17 09:48:17 +01:00
2019-12-13 08:43:18 +01:00
2021-06-30 08:47:51 -04:00
2020-07-29 10:18:36 +02:00
2019-08-14 15:30:35 +02:00
2021-09-03 10:08:12 +02:00
2019-07-16 19:23:25 -07:00
2020-03-18 07:17:46 +01:00
2019-08-01 21:49:46 +02:00
2019-07-31 19:03:35 +02:00
2020-04-02 15:11:00 +02:00
2021-03-07 12:20:49 +01:00
2019-09-07 21:42:25 +02:00
2019-08-01 20:51:22 +02:00
2019-07-31 19:03:35 +02:00
2020-12-11 13:23:28 +01:00
2020-04-02 15:11:00 +02:00
2021-12-14 14:49:02 +01:00
2021-06-10 13:37:14 +02:00