OpenCloudOS-Kernel/fs/fat
OGAWA Hirofumi 07bfa4415a fat: work around race with userspace's read via blockdev while mounting
If userspace reads the buffer via blockdev while mounting,
sb_getblk()+modify can race with buffer read via blockdev.

For example,

            FS                               userspace
    bh = sb_getblk()
    modify bh->b_data
                                  read
				    ll_rw_block(bh)
				      fill bh->b_data by on-disk data
				      /* lost modified data by FS */
				      set_buffer_uptodate(bh)
    set_buffer_uptodate(bh)

Userspace should not use the blockdev while mounting though, the udev
seems to be already doing this.  Although I think the udev should try to
avoid this, workaround the race by small overhead.

Link: http://lkml.kernel.org/r/87pnk7l3sw.fsf_-_@mail.parknet.co.jp
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Reported-by: Jan Stancek <jstancek@redhat.com>
Tested-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-09-24 15:54:06 -07:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cache.c fat: new inline functions to determine the FAT variant (32, 16 or 12) 2019-01-04 13:13:47 -08:00
dir.c fat: work around race with userspace's read via blockdev while mounting 2019-09-24 15:54:06 -07:00
fat.h fat: new inline functions to determine the FAT variant (32, 16 or 12) 2019-01-04 13:13:47 -08:00
fatent.c fat: work around race with userspace's read via blockdev while mounting 2019-09-24 15:54:06 -07:00
file.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
inode.c fs: fat: Initialize filesystem timestamp ranges 2019-08-30 07:27:18 -07:00
misc.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
namei_msdos.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
namei_vfat.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00