• Linus Torvalds's avatar
    Merge branch 'work.dotdot1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 9c577491
    Linus Torvalds authored
    Pull vfs pathwalk sanitizing from Al Viro:
     "Massive pathwalk rewrite and cleanups.
    
      Several iterations have been posted; hopefully this thing is getting
      readable and understandable now. Pretty much all parts of pathname
      resolutions are affected...
    
      The branch is identical to what has sat in -next, except for commit
      message in "lift all calls of step_into() out of follow_dotdot/
      follow_dotdot_rcu", crediting Qian Cai for reporting the bug; only
      commit message changed there."
    
    * 'work.dotdot1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (69 commits)
      lookup_open(): don't bother with fallbacks to lookup+create
      atomic_open(): no need to pass struct open_flags anymore
      open_last_lookups(): move complete_walk() into do_open()
      open_last_lookups(): lift O_EXCL|O_CREAT handling into do_open()
      open_last_lookups(): don't abuse complete_walk() when all we want is unlazy
      open_last_lookups(): consolidate fsnotify_create() calls
      take post-lookup part of do_last() out of loop
      link_path_walk(): sample parent's i_uid and i_mode for the last component
      __nd_alloc_stack(): make it return bool
      reserve_stack(): switch to __nd_alloc_stack()
      pick_link(): take reserving space on stack into a new helper
      pick_link(): more straightforward handling of allocation failures
      fold path_to_nameidata() into its only remaining caller
      pick_link(): pass it struct path already with normal refcounting rules
      fs/namei.c: kill follow_mount()
      non-RCU analogue of the previous commit
      helper for mount rootwards traversal
      follow_dotdot(): be lazy about changing nd->path
      follow_dotdot_rcu(): be lazy about changing nd->path
      follow_dotdot{,_rcu}(): massage loops
      ...
    9c577491
open.c 32.2 KB