diff options
author | ps <ps@FreeBSD.org> | 2000-05-01 10:53:21 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2000-05-01 10:53:21 +0000 |
commit | 2cf1490ab78a334f6c802c073c342f811a52b625 (patch) | |
tree | 281aa516365900b2c45d4ee6f2d24ebbc9e1b103 /lib/libstand | |
parent | 87f7021571a6e679577a6b977f10f581e7bf7be4 (diff) | |
download | FreeBSD-src-2cf1490ab78a334f6c802c073c342f811a52b625.zip FreeBSD-src-2cf1490ab78a334f6c802c073c342f811a52b625.tar.gz |
Do not attempt to free a nfs node if it is the root node. The root
node is statically allocated and is not guarded, so free will panic
in nfs_close.
Diffstat (limited to 'lib/libstand')
-rw-r--r-- | lib/libstand/nfs.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libstand/nfs.c b/lib/libstand/nfs.c index 1206bb7..5669973 100644 --- a/lib/libstand/nfs.c +++ b/lib/libstand/nfs.c @@ -109,6 +109,8 @@ static int nfs_write(struct open_file *f, void *buf, size_t size, size_t *resid) static off_t nfs_seek(struct open_file *f, off_t offset, int where); static int nfs_stat(struct open_file *f, struct stat *sb); +static struct nfs_iodesc nfs_root_node; + struct fs_ops nfs_fsops = { "nfs", nfs_open, @@ -363,7 +365,6 @@ nfs_open(upath, f) const char *upath; struct open_file *f; { - static struct nfs_iodesc nfs_root_node; struct iodesc *desc; struct nfs_iodesc *currfd; #ifndef NFS_NOSYMLINK @@ -546,7 +547,7 @@ nfs_close(f) printf("nfs_close: fp=0x%lx\n", (u_long)fp); #endif - if (fp) + if (fp != &nfs_root_node && fp) free(fp); f->f_fsdata = (void *)0; |