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.
|
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).
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
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;
|
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 {
|
||||||
};
|
};
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
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) {
|
||||||
|
|
Loading…
Reference in New Issue