Revert "fuse: in fuse_flush only wait if someone wants the return code"
authorMiklos Szeredi <mszeredi@redhat.com>
Mon, 14 Aug 2023 11:05:30 +0000 (13:05 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Mon, 14 Aug 2023 14:23:06 +0000 (16:23 +0200)
commit91ec6c85599b60c00caf4e9a9d6c4d6e5dd5e93c
treef113458efc56bd7a7a141532eed3b415fec115be
parent2ccdd1b13c591d306f0401d98dedc4bdcd02b421
Revert "fuse: in fuse_flush only wait if someone wants the return code"

This reverts commit 5a8bee63b10f6f2f52f6d22e109a4a147409842a.

Jürg Billeter reports the following regression:

  Since v6.3-rc1 commit 5a8bee63b1 ("fuse: in fuse_flush only wait if
  someone wants the return code") `fput()` is called asynchronously if a
  file is closed as part of a process exiting, i.e., if there was no
  explicit `close()` before exit.

  If the file was open for writing, also `put_write_access()` is called
  asynchronously as part of the async `fput()`.

  If that newly written file is an executable, attempting to `execve()` the
  new file can fail with `ETXTBSY` if it's called after the writer process
  exited but before the async `fput()` has run.

Reported-and-tested-by: "Jürg Billeter" <j@bitron.ch>
Cc: <stable@vger.kernel.org> # v6.3
Link: https://lore.kernel.org/all/4f66cded234462964899f2a661750d6798a57ec0.camel@bitron.ch/
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/file.c