Messages in this thread | | | From | Arnd Bergmann <> | Subject | Re: [PATCH RFC 1/5] vringfd syscall | Date | Tue, 8 Apr 2008 04:35:53 +0200 |
| |
On Saturday 05 April 2008, Rusty Russell wrote: > +asmlinkage long sys_vringfd(void __user *addr, > + unsigned num_descs, > + u16 __user *last_used) > +{ > + int fd, err; > + struct file *filp; > + struct vring_info *vr; > + > + /* Must be a power of two, and representable by u16 */ > + if (!num_descs || (num_descs & (num_descs-1)) || num_descs > 65536) { > + err = -EINVAL; > + goto out; > + } > + > + fd = get_unused_fd(); > + if (fd < 0) { > + err = fd; > + goto out; > + } > + > + filp = alloc_file(vring_mnt, dget(vring_mnt->mnt_root), FMODE_WRITE, > + &vring_fops); > + if (!filp) { > + err = -ENFILE; > + goto put_fd; > + }
This looks like a candidate for anon_inode_getfd(), which would let you get rid of the code for registering your own file system.
Arnd <><
| |