2015-02-11 10:21:52

by Dan Carpenter

[permalink] [raw]
Subject: [patch] pnfs/flexfiles: move kfree() after the deference

We dereference "err" in the the debug printk so we have to move the
kfree() down a couple lines.

Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
index 3bbb16b..e2c01f2 100644
--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
@@ -515,10 +515,10 @@ int ff_layout_encode_ds_ioerr(struct nfs4_flexfile_layout *flo,
*p++ = cpu_to_be32(err->opnum);
*count += 1;
list_del(&err->list);
- kfree(err);
dprintk("%s: offset %llu length %llu status %d op %d count %d\n",
__func__, err->offset, err->length, err->status,
err->opnum, *count);
+ kfree(err);
}

return 0;


2015-02-11 12:55:09

by Trond Myklebust

[permalink] [raw]
Subject: Re: [patch] pnfs/flexfiles: move kfree() after the deference

Hi Dan,

On Wed, Feb 11, 2015 at 5:22 AM, Dan Carpenter <[email protected]> wrote:
> We dereference "err" in the the debug printk so we have to move the
> kfree() down a couple lines.
>
> Signed-off-by: Dan Carpenter <[email protected]>
>
> diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> index 3bbb16b..e2c01f2 100644
> --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> @@ -515,10 +515,10 @@ int ff_layout_encode_ds_ioerr(struct nfs4_flexfile_layout *flo,
> *p++ = cpu_to_be32(err->opnum);
> *count += 1;
> list_del(&err->list);
> - kfree(err);
> dprintk("%s: offset %llu length %llu status %d op %d count %d\n",
> __func__, err->offset, err->length, err->status,
> err->opnum, *count);
> + kfree(err);
> }
>
> return 0;

I believe this is a fix for the same bug that was reported by Julia
Lawall a couple of days ago. There should be a fix for this already at
http://git.linux-nfs.org/?p=trondmy/linux-nfs.git;a=commitdiff;h=480486b4733d5bc7d9fe765b34bc6c2b72d5c12e

Cheers
Trond
--
Trond Myklebust
Linux NFS client maintainer, PrimaryData
[email protected]