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
This commit is contained in:
Linus Torvalds 2007-08-23 21:38:21 -07:00
commit 0542170dec
6 changed files with 28 additions and 28 deletions

View File

@ -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
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).

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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)) {

View File

@ -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) {