ovl: fix IOCB_DIRECT if underlying fs doesn't support direct IO
authorMiklos Szeredi <mszeredi@redhat.com>
Mon, 27 Sep 2021 09:23:57 +0000 (11:23 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Tue, 28 Sep 2021 07:16:12 +0000 (09:16 +0200)
commit1dc1eed46f9fa4cb8a07baa24fb44c96d6dd35c9
treebdd3994a59af1aadf9552c99516cd2f6cd994302
parenta295aef603e109a47af355477326bd41151765b6
ovl: fix IOCB_DIRECT if underlying fs doesn't support direct IO

Normally the check at open time suffices, but e.g loop device does set
IOCB_DIRECT after doing its own checks (which are not sufficent for
overlayfs).

Make sure we don't call the underlying filesystem read/write method with
the IOCB_DIRECT if it's not supported.

Reported-by: Huang Jianan <huangjianan@oppo.com>
Fixes: 16914e6fc7e1 ("ovl: add ovl_read_iter()")
Cc: <stable@vger.kernel.org> # v4.19
Tested-by: Huang Jianan <huangjianan@oppo.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/overlayfs/file.c