Commit 0542170d authored by Linus Torvalds's avatar Linus Torvalds

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
parents 6dc2c1b7 02881d94
...@@ -6,12 +6,26 @@ ABOUT ...@@ -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> This software was originally developed by Ron Minnich <rminnich@sandia.gov>
and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson 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 ...@@ -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 on sourceforge (http://sourceforge.net/projects/npfs). The currently
more stable single-threaded version of the server (named spfs) available from maintained version is the single-threaded version of the server (named spfs)
the same CVS repository. 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).
......
...@@ -167,11 +167,11 @@ S: Maintained ...@@ -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
......
...@@ -92,23 +92,6 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry) ...@@ -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
......
...@@ -28,6 +28,5 @@ struct v9fs_dentry { ...@@ -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);
...@@ -796,6 +796,7 @@ struct p9_fcall *p9_create_twrite_u(u32 fid, u64 offset, u32 count, ...@@ -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)) {
......
...@@ -288,9 +288,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize, ...@@ -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, ...@@ -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) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment