lkml.org 
[lkml]   [2015]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subjectlinux-next: build failure after merge of the vfs tree
    Hi Al,

    After merging the vfs tree, today's linux-next build (x86_64
    allmodconfig) failed like this:

    fs/f2fs/namei.c: In function 'f2fs_encrypted_follow_link':
    fs/f2fs/namei.c:336:10: warning: passing argument 2 of 'f2fs_follow_link' from incompatible pointer type
    return f2fs_follow_link(dentry, nd);
    ^
    fs/f2fs/namei.c:311:20: note: expected 'void **' but argument is of type 'struct nameidata *'
    static const char *f2fs_follow_link(struct dentry *dentry, void **cookie)
    ^
    fs/f2fs/namei.c:336:3: warning: return discards 'const' qualifier from pointer target type
    return f2fs_follow_link(dentry, nd);
    ^
    fs/f2fs/namei.c:379:2: error: implicit declaration of function 'nd_set_link' [-Werror=implicit-function-declaration]
    nd_set_link(nd, paddr);
    ^
    fs/f2fs/namei.c: In function 'f2fs_encrypted_put_link':
    fs/f2fs/namei.c:400:3: error: implicit declaration of function 'nd_get_link' [-Werror=implicit-function-declaration]
    kfree(nd_get_link(nd));
    ^
    fs/f2fs/namei.c:400:3: warning: passing argument 1 of 'kfree' makes pointer from integer without a cast
    In file included from fs/f2fs/f2fs.h:17:0,
    from fs/f2fs/namei.c:19:
    include/linux/slab.h:143:6: note: expected 'const void *' but argument is of type 'int'
    void kfree(const void *);
    ^
    fs/f2fs/namei.c: At top level:
    fs/f2fs/namei.c:960:2: warning: initialization from incompatible pointer type
    .follow_link = f2fs_encrypted_follow_link,
    ^
    fs/f2fs/namei.c:960:2: warning: (near initialization for 'f2fs_symlink_inode_operations.follow_link')
    fs/f2fs/namei.c:961:2: warning: initialization from incompatible pointer type
    .put_link = f2fs_encrypted_put_link,
    ^
    fs/f2fs/namei.c:961:2: warning: (near initialization for 'f2fs_symlink_inode_operations.put_link')

    Caused by commits cf41cea5a829 ("new ->follow_link() and ->put_link()
    calling conventions") and 0ad7e33ea980 ("don't pass nameidata to
    ->follow_link()") from teh vfs tree interacting with commit
    5270e98c341b ("f2fs crypto: add symlink encryption") from the f2fs tree.

    I applied the following merge fix patch (which I suspect is not
    completely correct - especially the f2fs_encrypted_put_link part):

    From: Stephen Rothwell <sfr@canb.auug.org.au>
    Date: Mon, 11 May 2015 11:22:19 +1000
    Subject: [PATCH] f2fs: merge fix for follow_link and put_link changes

    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    ---
    fs/f2fs/namei.c | 18 +++++++-----------
    1 file changed, 7 insertions(+), 11 deletions(-)

    diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
    index d7ed99ebe95b..42af89cdb9a4 100644
    --- a/fs/f2fs/namei.c
    +++ b/fs/f2fs/namei.c
    @@ -320,8 +320,8 @@ static const char *f2fs_follow_link(struct dentry *dentry, void **cookie)
    }

    #ifdef CONFIG_F2FS_FS_ENCRYPTION
    -static void *f2fs_encrypted_follow_link(struct dentry *dentry,
    - struct nameidata *nd)
    +static const char *f2fs_encrypted_follow_link(struct dentry *dentry,
    + void **cookie)
    {
    struct page *cpage = NULL;
    char *caddr, *paddr = NULL;
    @@ -333,7 +333,7 @@ static void *f2fs_encrypted_follow_link(struct dentry *dentry,
    u32 max_size = inode->i_sb->s_blocksize;

    if (!f2fs_encrypted_inode(inode))
    - return f2fs_follow_link(dentry, nd);
    + return f2fs_follow_link(dentry, cookie);

    res = f2fs_setup_fname_crypto(inode);
    if (res)
    @@ -341,7 +341,7 @@ static void *f2fs_encrypted_follow_link(struct dentry *dentry,

    cpage = read_mapping_page(inode->i_mapping, 0, NULL);
    if (IS_ERR(cpage))
    - return cpage;
    + return ERR_CAST(cpage);
    caddr = kmap(cpage);
    caddr[size] = 0;

    @@ -376,12 +376,11 @@ static void *f2fs_encrypted_follow_link(struct dentry *dentry,
    /* Null-terminate the name */
    if (res <= cstr.len)
    paddr[res] = '\0';
    - nd_set_link(nd, paddr);
    if (cpage) {
    kunmap(cpage);
    page_cache_release(cpage);
    }
    - return NULL;
    + return *cookie = paddr;
    errout:
    if (cpage) {
    kunmap(cpage);
    @@ -391,14 +390,11 @@ errout:
    return ERR_PTR(res);
    }

    -static void f2fs_encrypted_put_link(struct dentry *dentry, struct nameidata *nd,
    - void *cookie)
    +static void f2fs_encrypted_put_link(struct dentry *dentry, void *cookie)
    {
    struct page *page = cookie;

    - if (!page) {
    - kfree(nd_get_link(nd));
    - } else {
    + if (page) {
    kunmap(page);
    page_cache_release(page);
    }
    --
    2.1.4
    --
    Cheers,
    Stephen Rothwell sfr@canb.auug.org.au
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2015-05-11 03:41    [W:9.592 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site