2012-04-27 18:41:50

by Myklebust, Trond

[permalink] [raw]
Subject: [PATCH] NFS: Fix a use-before-initialised warning in fs/nfs/write.c and fs/nfs/pnfs.c

If the allocation of nfs_write_header fails, the list of nfs_pages that
needs to be cleaned up is still on desc->pg_list...

Reported-by: Bryan Schumaker <[email protected]>
Cc: Fred Isaman <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
---
fs/nfs/pnfs.c | 2 +-
fs/nfs/write.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 4da05e4..39cbac5 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1308,7 +1308,7 @@ pnfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)

whdr = nfs_writehdr_alloc();
if (!whdr) {
- desc->pg_completion_ops->error_cleanup(&hdr->pages);
+ desc->pg_completion_ops->error_cleanup(&desc->pg_list);
put_lseg(desc->pg_lseg);
desc->pg_lseg = NULL;
return -ENOMEM;
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index fec214b..3636191 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1164,7 +1164,7 @@ static int nfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)

whdr = nfs_writehdr_alloc();
if (!whdr) {
- desc->pg_completion_ops->error_cleanup(&hdr->pages);
+ desc->pg_completion_ops->error_cleanup(&desc->pg_list);
return -ENOMEM;
}
hdr = &whdr->header;
--
1.7.7.6



2012-04-27 18:57:05

by Fred Isaman

[permalink] [raw]
Subject: Re: [PATCH] NFS: Fix a use-before-initialised warning in fs/nfs/write.c and fs/nfs/pnfs.c

ACK

Fred


On Fri, Apr 27, 2012 at 2:41 PM, Trond Myklebust
<[email protected]> wrote:
> If the allocation of nfs_write_header fails, the list of nfs_pages that
> needs to be cleaned up is still on desc->pg_list...
>
> Reported-by: Bryan Schumaker <[email protected]>
> Cc: Fred Isaman <[email protected]>
> Signed-off-by: Trond Myklebust <[email protected]>
> ---
> ?fs/nfs/pnfs.c ?| ? ?2 +-
> ?fs/nfs/write.c | ? ?2 +-
> ?2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 4da05e4..39cbac5 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -1308,7 +1308,7 @@ pnfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
>
> ? ? ? ?whdr = nfs_writehdr_alloc();
> ? ? ? ?if (!whdr) {
> - ? ? ? ? ? ? ? desc->pg_completion_ops->error_cleanup(&hdr->pages);
> + ? ? ? ? ? ? ? desc->pg_completion_ops->error_cleanup(&desc->pg_list);
> ? ? ? ? ? ? ? ?put_lseg(desc->pg_lseg);
> ? ? ? ? ? ? ? ?desc->pg_lseg = NULL;
> ? ? ? ? ? ? ? ?return -ENOMEM;
> diff --git a/fs/nfs/write.c b/fs/nfs/write.c
> index fec214b..3636191 100644
> --- a/fs/nfs/write.c
> +++ b/fs/nfs/write.c
> @@ -1164,7 +1164,7 @@ static int nfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
>
> ? ? ? ?whdr = nfs_writehdr_alloc();
> ? ? ? ?if (!whdr) {
> - ? ? ? ? ? ? ? desc->pg_completion_ops->error_cleanup(&hdr->pages);
> + ? ? ? ? ? ? ? desc->pg_completion_ops->error_cleanup(&desc->pg_list);
> ? ? ? ? ? ? ? ?return -ENOMEM;
> ? ? ? ?}
> ? ? ? ?hdr = &whdr->header;
> --
> 1.7.7.6
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html