Re: [2 regressions] Current git cannot find root device on x86-64(HP nx6325), NFS broken

From: Trond Myklebust
Date: Mon Apr 06 2009 - 19:59:49 EST


On Tue, 2009-04-07 at 00:47 +0200, Rafael J. Wysocki wrote:
> Also, mounting directories over NFS doesn't work (I think it oopses, but
> didn't have the time to look at it more closely).

There is a known double free issue that affects the 'proto=' mount
option (we call kfree(string) twice). Please could you check that the
following patch fixes it for you?

Cheers
Trond

--------------------------------------------------------------------
>From a3e6cc62dce11c75249f01423eb9b41531759d36 Mon Sep 17 00:00:00 2001
From: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>
Date: Mon, 6 Apr 2009 16:41:35 -0700
Subject: [PATCH] NFS: Fix a double free in nfs_parse_mount_options()

Due to an apparent typo, commit a67d18f89f5782806135aad4ee012ff78d45aae7
(NFS: load the rpc/rdma transport module automatically) lead to the
'proto=' mount option doing a double free, while Opt_mountproto leaks a
string.

Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>
---
fs/nfs/super.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 82eaadb..6717200 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1228,7 +1228,6 @@ static int nfs_parse_mount_options(char *raw,
goto out_nomem;
token = match_token(string,
nfs_xprt_protocol_tokens, args);
- kfree(string);

switch (token) {
case Opt_xprt_udp:
@@ -1258,6 +1257,7 @@ static int nfs_parse_mount_options(char *raw,
goto out_nomem;
token = match_token(string,
nfs_xprt_protocol_tokens, args);
+ kfree(string);

switch (token) {
case Opt_xprt_udp:
--
1.6.0.4



--
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/