lkml.org 
[lkml]   [2011]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] fs/namei: waiting for mutex during name lookups is "killable"
    From
    Date
    Use mutex_lock_killable() instead of mutex_lock() during name lookups,
    to allow killing the process while it's waiting.

    Signed-off-by: Max Kellermann <mk@cm4all.com>
    ---
    fs/namei.c | 9 +++++++--
    1 files changed, 7 insertions(+), 2 deletions(-)

    diff --git a/fs/namei.c b/fs/namei.c
    index 3d15072..08a3163 100644
    --- a/fs/namei.c
    +++ b/fs/namei.c
    @@ -1169,7 +1169,10 @@ retry:
    struct inode *dir = parent->d_inode;
    BUG_ON(nd->inode != dir);

    - mutex_lock(&dir->i_mutex);
    + err = mutex_lock_killable(&dir->i_mutex);
    + if (unlikely(err))
    + return err;
    +
    dentry = d_lookup(parent, name);
    if (likely(!dentry)) {
    dentry = d_alloc_and_lookup(parent, name, nd);
    @@ -2166,7 +2169,9 @@ static struct file *do_last(struct nameidata *nd, struct path *path,
    if (nd->last.name[nd->last.len])
    goto exit;

    - mutex_lock(&dir->d_inode->i_mutex);
    + error = mutex_lock_killable(&dir->d_inode->i_mutex);
    + if (unlikely(error))
    + goto exit;

    dentry = lookup_hash(nd);
    error = PTR_ERR(dentry);


    \
     
     \ /
      Last update: 2011-11-28 12:39    [W:0.071 / U:0.108 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site