mirror of https://gitee.com/openkylin/linux.git
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:
commit
0542170dec
|
@ -6,12 +6,26 @@ ABOUT
|
|||
|
||||
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
|
||||
<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
|
||||
<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
|
||||
=====
|
||||
|
||||
|
@ -90,9 +104,9 @@ subset of the namespace by extending the path: '#U*'/tmp would just export
|
|||
and export.
|
||||
|
||||
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
|
||||
on sourceforge (http://sourceforge.net/projects/v9fs).
|
||||
|
|
|
@ -167,11 +167,11 @@ S: Maintained
|
|||
P: Eric Van Hensbergen
|
||||
M: ericvh@gmail.com
|
||||
P: Ron Minnich
|
||||
M: rminnich@lanl.gov
|
||||
M: rminnich@sandia.gov
|
||||
P: Latchesar Ionkov
|
||||
M: lucho@ionkov.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
|
||||
S: Maintained
|
||||
|
||||
|
|
17
fs/9p/fid.c
17
fs/9p/fid.c
|
@ -92,23 +92,6 @@ struct p9_fid *v9fs_fid_lookup(struct dentry *dentry)
|
|||
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
|
||||
* release it
|
||||
|
|
|
@ -28,6 +28,5 @@ struct v9fs_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);
|
||||
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,
|
|||
if (err) {
|
||||
kfree(fc);
|
||||
fc = ERR_PTR(err);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (buf_check_overflow(bufp)) {
|
||||
|
|
|
@ -288,9 +288,10 @@ struct p9_conn *p9_conn_create(struct p9_transport *trans, int msize,
|
|||
m->extended = extended;
|
||||
m->trans = trans;
|
||||
m->tagpool = p9_idpool_create();
|
||||
if (!m->tagpool) {
|
||||
if (IS_ERR(m->tagpool)) {
|
||||
mtmp = ERR_PTR(-ENOMEM);
|
||||
kfree(m);
|
||||
return ERR_PTR(PTR_ERR(m->tagpool));
|
||||
return mtmp;
|
||||
}
|
||||
|
||||
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));
|
||||
m->poll_task = NULL;
|
||||
n = p9_mux_poll_start(m);
|
||||
if (n)
|
||||
if (n) {
|
||||
kfree(m);
|
||||
return ERR_PTR(n);
|
||||
}
|
||||
|
||||
n = trans->poll(trans, &m->pt);
|
||||
if (n & POLLIN) {
|
||||
|
|
Loading…
Reference in New Issue