Browse Source

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  9p: fix bad error path in conversion routines
  9p: remove deprecated v9fs_fid_lookup_remove()
  9p: update maintainers and documentation
  9p: fix use after free
Linus Torvalds 17 years ago
parent
commit
0542170dec
6 changed files with 28 additions and 28 deletions
  1. 19 5
      Documentation/filesystems/9p.txt
  2. 2 2
      MAINTAINERS
  3. 0 17
      fs/9p/fid.c
  4. 0 1
      fs/9p/fid.h
  5. 1 0
      net/9p/conv.c
  6. 6 3
      net/9p/mux.c

+ 19 - 5
Documentation/filesystems/9p.txt

@@ -6,12 +6,26 @@ ABOUT
 
 
 v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
 v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
 
 
-This software was originally developed by Ron Minnich <rminnich@lanl.gov>
-and Maya Gokhale <maya@lanl.gov>.  Additional development by Greg Watson
+This software was originally developed by Ron Minnich <rminnich@sandia.gov>
+and Maya Gokhale.  Additional development by Greg Watson
 <gwatson@lanl.gov> and most recently Eric Van Hensbergen
 <gwatson@lanl.gov> and most recently Eric Van Hensbergen
 <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
 <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
 <rsc@swtch.com>.
 <rsc@swtch.com>.
 
 
+The best detailed explanation of the Linux implementation and applications of
+the 9p client is available in the form of a USENIX paper:
+   http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
+
+Other applications are described in the following papers:
+	* XCPU & Clustering
+		http://www.xcpu.org/xcpu-talk.pdf
+	* KVMFS: control file system for KVM
+		http://www.xcpu.org/kvmfs.pdf
+	* CellFS: A New ProgrammingModel for the Cell BE
+		http://www.xcpu.org/cellfs-talk.pdf
+	* PROSE I/O: Using 9p to enable Application Partitions
+		http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
+
 USAGE
 USAGE
 =====
 =====
 
 
@@ -90,9 +104,9 @@ subset of the namespace by extending the path: '#U*'/tmp would just export
 and export.
 and export.
 
 
 A Linux version of the 9p server is now maintained under the npfs project
 A Linux version of the 9p server is now maintained under the npfs project
-on sourceforge (http://sourceforge.net/projects/npfs).  There is also a
-more stable single-threaded version of the server (named spfs) available from
-the same CVS repository.
+on sourceforge (http://sourceforge.net/projects/npfs).  The currently
+maintained version is the single-threaded version of the server (named spfs)
+available from the same CVS repository.
 
 
 There are user and developer mailing lists available through the v9fs project
 There are user and developer mailing lists available through the v9fs project
 on sourceforge (http://sourceforge.net/projects/v9fs).
 on sourceforge (http://sourceforge.net/projects/v9fs).

+ 2 - 2
MAINTAINERS

@@ -167,11 +167,11 @@ S:	Maintained
 P:	Eric Van Hensbergen
 P:	Eric Van Hensbergen
 M:	ericvh@gmail.com
 M:	ericvh@gmail.com
 P:	Ron Minnich
 P:	Ron Minnich
-M:	rminnich@lanl.gov
+M:	rminnich@sandia.gov
 P:	Latchesar Ionkov
 P:	Latchesar Ionkov
 M:	lucho@ionkov.net
 M:	lucho@ionkov.net
 L:	v9fs-developer@lists.sourceforge.net
 L:	v9fs-developer@lists.sourceforge.net
-W:	http://v9fs.sf.net
+W:	http://swik.net/v9fs
 T:	git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
 T:	git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
 S:	Maintained
 S:	Maintained
 
 

+ 0 - 17
fs/9p/fid.c

@@ -92,23 +92,6 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry)
 	return fid;
 	return fid;
 }
 }
 
 
-struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry)
-{
-	struct p9_fid *fid;
-	struct v9fs_dentry *dent;
-
-	dent = dentry->d_fsdata;
-	fid = v9fs_fid_lookup(dentry);
-	if (!IS_ERR(fid)) {
-		spin_lock(&dent->lock);
-		list_del(&fid->dlist);
-		spin_unlock(&dent->lock);
-	}
-
-	return fid;
-}
-
-
 /**
 /**
  * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and
  * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and
  * 	release it
  * 	release it

+ 0 - 1
fs/9p/fid.h

@@ -28,6 +28,5 @@ struct v9fs_dentry {
 };
 };
 
 
 struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
 struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
-struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry);
 struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
 struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
 int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
 int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);

+ 1 - 0
net/9p/conv.c

@@ -796,6 +796,7 @@ struct p9_fcall *p9_create_twrite_u(u32 fid, u64 offset, u32 count,
 	if (err) {
 	if (err) {
 		kfree(fc);
 		kfree(fc);
 		fc = ERR_PTR(err);
 		fc = ERR_PTR(err);
+		goto error;
 	}
 	}
 
 
 	if (buf_check_overflow(bufp)) {
 	if (buf_check_overflow(bufp)) {

+ 6 - 3
net/9p/mux.c

@@ -288,9 +288,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize,
 	m->extended = extended;
 	m->extended = extended;
 	m->trans = trans;
 	m->trans = trans;
 	m->tagpool = p9_idpool_create();
 	m->tagpool = p9_idpool_create();
-	if (!m->tagpool) {
+	if (IS_ERR(m->tagpool)) {
+		mtmp = ERR_PTR(-ENOMEM);
 		kfree(m);
 		kfree(m);
-		return ERR_PTR(PTR_ERR(m->tagpool));
+		return mtmp;
 	}
 	}
 
 
 	m->err = 0;
 	m->err = 0;
@@ -308,8 +309,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize,
 	memset(&m->poll_waddr, 0, sizeof(m->poll_waddr));
 	memset(&m->poll_waddr, 0, sizeof(m->poll_waddr));
 	m->poll_task = NULL;
 	m->poll_task = NULL;
 	n = p9_mux_poll_start(m);
 	n = p9_mux_poll_start(m);
-	if (n)
+	if (n) {
+		kfree(m);
 		return ERR_PTR(n);
 		return ERR_PTR(n);
+	}
 
 
 	n = trans->poll(trans, &m->pt);
 	n = trans->poll(trans, &m->pt);
 	if (n & POLLIN) {
 	if (n & POLLIN) {