** Also affects: linux (Ubuntu Eoan)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Focal)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1872757

Title:
  shiftfs: O_TMPFILE reports ESTALE

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Eoan:
  New
Status in linux source package in Focal:
  New

Bug description:
  SRU Justification

  Impact: Christian Kellner reported that creating temporary files via
  O_TMPFILE shiftfs reports ESTALE. This can be reproduced via:

  import tempfile
  import os

  def test():
      with tempfile.TemporaryFile() as fd:
          fd.write("data".encode('utf-8'))
          # re-open the file to get a read-only file descriptor
          return open(f"/proc/self/fd/{fd.fileno()}", "r")

  def main():
     fd = test()
     fd.close()

  if __name__ == "__main__":
      main()

  a similar issue was reported here:
  https://github.com/systemd/systemd/issues/14861

  Fix: Our revalidate methods were very opinionated about whether or not
  a dentry was valid when we really should've just let the underlay tell
  us what's what. This has led to bugs where a ESTALE was returned for
  e.g.  temporary files that were created and directly re-opened
  afterwards through /proc/<pid>/fd/<nr-of-deleted-file>. When a file is
  re-opened through /proc/<pid>/fd/<nr> LOOKUP_JUMP is set and the vfs
  will revalidate via d_weak_revalidate(). Since the file has been
  unhashed or even already gone negative we'd fail the open when we
  should've succeeded.

  I had also foolishly provided a .tmpfile method which so far only has
  caused us trouble. If we really need this then we can reimplement it
  properly but I doubt it. Remove it for now.

  Regression Potential: Limited to shiftfs.

  Test Case: Build a kernel with fix applied and run above reproducer.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1872757/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to