lkml.org 
[lkml]   [2018]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4.4 017/268] do d_instantiate/unlock_new_inode combinations safely
    From
    Date
    On Mon, 2018-05-28 at 11:59 +0200, Greg Kroah-Hartman wrote:
    > 4.4-stable review patch.  If anyone has any objections, please let me know.
    >
    > ------------------
    >
    > From: Al Viro <viro@zeniv.linux.org.uk>
    >
    > commit 1e2e547a93a00ebc21582c06ca3c6cfea2a309ee upstream.
    >
    > For anything NFS-exported we do _not_ want to unlock new inode
    > before it has grown an alias; original set of fixes got the
    > ordering right, but missed the nasty complication in case of
    > lockdep being enabled - unlock_new_inode() does
    > lockdep_annotate_inode_mutex_key(inode)
    > which can only be done before anyone gets a chance to touch
    > ->i_mutex.  Unfortunately, flipping the order and doing
    > unlock_new_inode() before d_instantiate() opens a window when
    > mkdir can race with open-by-fhandle on a guessed fhandle, leading
    > to multiple aliases for a directory inode and all the breakage
    > that follows from that.
    >
    > Correct solution: a new primitive (d_instantiate_new())
    > combining these two in the right order - lockdep annotate, then
    > d_instantiate(), then the rest of unlock_new_inode().  All
    > combinations of d_instantiate() with unlock_new_inode() should
    > be converted to that.
    [...]

    I think you missed xfs, which has a wrapper around unlock_new_inode()
    called xfs_finish_inode_setup(). It looks like xfs_generic_create()
    and xfs_vn_symlink() still need this conversion.

    Ben.

    --
    Ben Hutchings, Software Developer   Codethink Ltd
    https://www.codethink.co.uk/ Dale House, 35 Dale Street
    Manchester, M1 2HF, United Kingdom

    \
     
     \ /
      Last update: 2018-06-08 15:18    [W:4.318 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site