Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+28 -28
+19 -5
Documentation/filesystems/9p.txt
··· 6 6 7 7 v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol. 8 8 9 - This software was originally developed by Ron Minnich <rminnich@lanl.gov> 10 - and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson 9 + This software was originally developed by Ron Minnich <rminnich@sandia.gov> 10 + and Maya Gokhale. Additional development by Greg Watson 11 11 <gwatson@lanl.gov> and most recently Eric Van Hensbergen 12 12 <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox 13 13 <rsc@swtch.com>. 14 + 15 + The best detailed explanation of the Linux implementation and applications of 16 + the 9p client is available in the form of a USENIX paper: 17 + http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html 18 + 19 + Other applications are described in the following papers: 20 + * XCPU & Clustering 21 + http://www.xcpu.org/xcpu-talk.pdf 22 + * KVMFS: control file system for KVM 23 + http://www.xcpu.org/kvmfs.pdf 24 + * CellFS: A New ProgrammingModel for the Cell BE 25 + http://www.xcpu.org/cellfs-talk.pdf 26 + * PROSE I/O: Using 9p to enable Application Partitions 27 + http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf 14 28 15 29 USAGE 16 30 ===== ··· 104 90 and export. 105 91 106 92 A Linux version of the 9p server is now maintained under the npfs project 107 - on sourceforge (http://sourceforge.net/projects/npfs). There is also a 108 - more stable single-threaded version of the server (named spfs) available from 109 - the same CVS repository. 93 + on sourceforge (http://sourceforge.net/projects/npfs). The currently 94 + maintained version is the single-threaded version of the server (named spfs) 95 + available from the same CVS repository. 110 96 111 97 There are user and developer mailing lists available through the v9fs project 112 98 on sourceforge (http://sourceforge.net/projects/v9fs).
+2 -2
MAINTAINERS
··· 167 167 P: Eric Van Hensbergen 168 168 M: ericvh@gmail.com 169 169 P: Ron Minnich 170 - M: rminnich@lanl.gov 170 + M: rminnich@sandia.gov 171 171 P: Latchesar Ionkov 172 172 M: lucho@ionkov.net 173 173 L: v9fs-developer@lists.sourceforge.net 174 - W: http://v9fs.sf.net 174 + W: http://swik.net/v9fs 175 175 T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git 176 176 S: Maintained 177 177
-17
fs/9p/fid.c
··· 92 92 return fid; 93 93 } 94 94 95 - struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry) 96 - { 97 - struct p9_fid *fid; 98 - struct v9fs_dentry *dent; 99 - 100 - dent = dentry->d_fsdata; 101 - fid = v9fs_fid_lookup(dentry); 102 - if (!IS_ERR(fid)) { 103 - spin_lock(&dent->lock); 104 - list_del(&fid->dlist); 105 - spin_unlock(&dent->lock); 106 - } 107 - 108 - return fid; 109 - } 110 - 111 - 112 95 /** 113 96 * v9fs_fid_clone - lookup the fid for a dentry, clone a private copy and 114 97 * release it
-1
fs/9p/fid.h
··· 28 28 }; 29 29 30 30 struct p9_fid *v9fs_fid_lookup(struct dentry *dentry); 31 - struct p9_fid *v9fs_fid_lookup_remove(struct dentry *dentry); 32 31 struct p9_fid *v9fs_fid_clone(struct dentry *dentry); 33 32 int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
+1
net/9p/conv.c
··· 796 796 if (err) { 797 797 kfree(fc); 798 798 fc = ERR_PTR(err); 799 + goto error; 799 800 } 800 801 801 802 if (buf_check_overflow(bufp)) {
+6 -3
net/9p/mux.c
··· 288 288 m->extended = extended; 289 289 m->trans = trans; 290 290 m->tagpool = p9_idpool_create(); 291 - if (!m->tagpool) { 291 + if (IS_ERR(m->tagpool)) { 292 + mtmp = ERR_PTR(-ENOMEM); 292 293 kfree(m); 293 - return ERR_PTR(PTR_ERR(m->tagpool)); 294 + return mtmp; 294 295 } 295 296 296 297 m->err = 0; ··· 309 308 memset(&m->poll_waddr, 0, sizeof(m->poll_waddr)); 310 309 m->poll_task = NULL; 311 310 n = p9_mux_poll_start(m); 312 - if (n) 311 + if (n) { 312 + kfree(m); 313 313 return ERR_PTR(n); 314 + } 314 315 315 316 n = trans->poll(trans, &m->pt); 316 317 if (n & POLLIN) {