Hi Felipe, On 28/10/14 01:26, Felipe Balbi wrote: > Hi, > > On Mon, Oct 27, 2014 at 10:31:42AM +1100, Andre Wolokita wrote: >> I'm noticing some strange behaviour in the gadgetfs driver when >> running gadgetfs-test; the program fails with the error "ep0 read >> after poll: Invalid argument". >> >> As far as I understand, an inode is created upon an open() call in >> gadgetfs-test and an initial fops is assigned to the struct file that >> doesn't contain a .read member. >> >> The .write member of this first fops points to dev_config() in >> usb/gadget/legacy/inode.c. >> >> When user-space write is called for the first time, dev_config() >> performs a bunch of configuration stuff before doing "fd->f_op = >> &ep0_io_operations;". This new file_operations struct does contain a >> .read member, which points to ep0_read(). >> >> I'm confused as to why when an error occurs when a subsequent read() >> is called in gadgetfs-test. I thought that changes to an fops pointer >> is preserved upon returning to the user-space caller. How can it be >> that "fd->f_op = &ep0_io_operations;" clearly changes the fops >> pointer, yet these changes aren't reflected when returning to >> user-space? > > probably a regression caused by another commit ? Can you try bisecting > to pin-point what broke it ? Do you remember which was the last kernel > where this worked ? > I'm working on the ADI trunk of the buildroot distro and it looks like gadgetfs (inode.c) was added during our last merge. I'll need to do some testing on 3.17 mainline to see if this problem exists there too or if it's restricted to our tree. I'll let you know how it goes. Regards, Andre. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html