lkml.org 
[lkml]   [2010]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[018/111] fs/ecryptfs/file.c: introduce missing free
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Julia Lawall <julia@diku.dk>

    commit ceeab92971e8af05c1e81a4ff2c271124b55bb9b upstream.

    The comments in the code indicate that file_info should be released if the
    function fails. This releasing is done at the label out_free, not out.

    The semantic match that finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    // <smpl>
    @r exists@
    local idexpression x;
    statement S;
    expression E;
    identifier f,f1,l;
    position p1,p2;
    expression *ptr != NULL;
    @@

    x@p1 = kmem_cache_zalloc(...);
    ...
    if (x == NULL) S
    <... when != x
    when != if (...) { <+...x...+> }
    (
    x->f1 = E
    |
    (x->f1 == NULL || ...)
    |
    f(...,x->f1,...)
    )
    ...>
    (
    return <+...x...+>;
    |
    return@p2 ...;
    )

    @script:python@
    p1 << r.p1;
    p2 << r.p2;
    @@

    print "* file: %s kmem_cache_zalloc %s" % (p1[0].file,p1[0].line)
    // </smpl>

    Signed-off-by: Julia Lawall <julia@diku.dk>
    Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/ecryptfs/file.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/fs/ecryptfs/file.c
    +++ b/fs/ecryptfs/file.c
    @@ -198,7 +198,7 @@ static int ecryptfs_open(struct inode *i
    "the persistent file for the dentry with name "
    "[%s]; rc = [%d]\n", __func__,
    ecryptfs_dentry->d_name.name, rc);
    - goto out;
    + goto out_free;
    }
    }
    if ((ecryptfs_inode_to_private(inode)->lower_file->f_flags & O_RDONLY)
    @@ -206,7 +206,7 @@ static int ecryptfs_open(struct inode *i
    rc = -EPERM;
    printk(KERN_WARNING "%s: Lower persistent file is RO; eCryptfs "
    "file must hence be opened RO\n", __func__);
    - goto out;
    + goto out_free;
    }
    ecryptfs_set_file_lower(
    file, ecryptfs_inode_to_private(inode)->lower_file);



    \
     
     \ /
      Last update: 2010-08-12 02:45    [W:4.026 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site