** Description changed:

  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")
- 
+     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()
- 
+    fd = test()
+    fd.close()
  
  if __name__ == "__main__":
-     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.

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

Title:
  shiftfs: O_TMPFILE reports ESTALE

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

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to