summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Dillon <dillon@FreeBSD.org>2002-12-21 20:55:34 +0000
committerMatthew Dillon <dillon@FreeBSD.org>2002-12-21 20:55:34 +0000
commita19f30d8c9195fc1e721128fb1e0479c3d6f88cd (patch)
tree60a338040096f30050db4016ace692f9886bbbe8
parent87cd4001b5783ae41c796b8fe7c944f89c25351f (diff)
Notes
-rw-r--r--sys/nfsclient/nfs_vfsops.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c
index 8b7195a887e6..51f6330c76a0 100644
--- a/sys/nfsclient/nfs_vfsops.c
+++ b/sys/nfsclient/nfs_vfsops.c
@@ -543,12 +543,16 @@ nfs_mountdiskless(char *path, char *which, int mountflag,
struct mount *mp;
struct sockaddr *nam;
int error;
+ int didalloc = 0;
mp = *mpp;
- if (!mp && (error = vfs_rootmountalloc("nfs", path, &mp))) {
- printf("nfs_mountroot: NFS not configured");
- return (error);
+ if (mp == NULL) {
+ if ((error = vfs_rootmountalloc("nfs", path, &mp)) != 0) {
+ printf("nfs_mountroot: NFS not configured");
+ return (error);
+ }
+ didalloc = 1;
}
mp->mnt_kern_flag = 0;
@@ -559,7 +563,8 @@ nfs_mountdiskless(char *path, char *which, int mountflag,
printf("nfs_mountroot: mount %s on %s: %d", path, which, error);
mp->mnt_vfc->vfc_refcount--;
vfs_unbusy(mp, td);
- free(mp, M_MOUNT);
+ if (didalloc)
+ free(mp, M_MOUNT);
FREE(nam, M_SONAME);
return (error);
}