On Tue, May 26, 2015 at 09:52:59AM -0500, Felipe Balbi wrote:
> On Fri, May 22, 2015 at 05:25:18PM +0200, Krzysztof Opasiak wrote:
> > Originally FFS_FL_CALL_CLOSED_CALLBACK flag has been used to
> > indicate if we should call ffs_closed_callback().
> >
> > Commit 4b187fceec3c ("usb: gadget: FunctionFS: add devices
> > management code") changed its semantic to indicate if we should
> > call ffs_closed() function which does a little bit more.
> >
> > This situation leads to:
> >
> > [ 122.362269] ------------[ cut here ]------------
> > [ 122.362287] WARNING: CPU: 2 PID: 2384 at
> > drivers/usb/gadget/function/f_fs.c:3417 ffs_ep0_write+0x730/0x810
> > [usb_f_fs]()
> > [ 122.362292] Modules linked in:
> > [ 122.362555] CPU: 2 PID: 2384 Comm: adbd Tainted: G W
> > 4.1.0-0.rc4.git0.1.1.fc22.i686 #1
> > [ 122.362561] Hardware name: To be filled by O.E.M. To be filled by
> > O.E.M./Aptio CRB, BIOS 5.6.5 07/25/2014
> > [ 122.362567] c0d1f947 415badfa 00000000 d1029e64 c0a86e54 00000000
> > d1029e94 c045b937
> > [ 122.362584] c0c37f94 00000002 00000950 f9b313d4 00000d59 f9b2ebf0
> > f9b2ebf0 fffffff0
> > [ 122.362600] 00000003 deb53d00 d1029ea4 c045ba42 00000009 00000000
> > d1029f08 f9b2ebf0
> > [ 122.362617] Call Trace:
> > [ 122.362633] [<c0a86e54>] dump_stack+0x41/0x52
> > [ 122.362645] [<c045b937>] warn_slowpath_common+0x87/0xc0
> > [ 122.362658] [<f9b2ebf0>] ? ffs_ep0_write+0x730/0x810 [usb_f_fs]
> > [ 122.362668] [<f9b2ebf0>] ? ffs_ep0_write+0x730/0x810 [usb_f_fs]
> > [ 122.362678] [<c045ba42>] warn_slowpath_null+0x22/0x30
> > [ 122.362689] [<f9b2ebf0>] ffs_ep0_write+0x730/0x810 [usb_f_fs]
> > [ 122.362702] [<f9b2e4c0>] ? ffs_ep0_read+0x380/0x380 [usb_f_fs]
> > [ 122.362712] [<c05a1c1f>] __vfs_write+0x2f/0x100
> > [ 122.362722] [<c05a42f2>] ? __sb_start_write+0x52/0x110
> > [ 122.362731] [<c05a2534>] vfs_write+0x94/0x1b0
> > [ 122.362740] [<c0a8a1c0>] ? mutex_lock+0x10/0x30
> > [ 122.362749] [<c05a2f41>] SyS_write+0x51/0xb0
> > [ 122.362759] [<c0a8c71f>] sysenter_do_call+0x12/0x12
> > [ 122.362766] ---[ end trace 0673d3467cecf8db ]---
> >
> > in some cases (reproduction path below). This commit get back
> > semantic of that flag and ensures that ffs_closed() is called
> > always when needed but ffs_closed_callback() is called only
> > if this flag is set.
> >
> > Reproduction path:
> > Compile kernel without any UDC driver or bound some gadget
> > to existing one and then:
> >
> > $ modprobe g_ffs
> > $ mount none -t functionfs mount_point
> > $ ffs-example mount_point
> >
> > This will fail with -ENODEV as there is no udc.
> >
> > $ ffs-example mount_point
> >
> > This will fail with -EBUSY because ffs_data has not been
> > properly cleaned up.
> >
> > Signed-off-by: Krzysztof Opasiak <[email protected]>
>
> adds new sparse warnings:
>
> drivers/usb/gadget/function/f_fs.c:1043:45: warning: incorrect type in
> argument 1 (different address spaces)
> drivers/usb/gadget/function/f_fs.c:1043:45: expected void [noderef]
> <asn:1>*to
> drivers/usb/gadget/function/f_fs.c:1043:45: got void *<noident>
> drivers/usb/gadget/function/f_fs.c:205:12: warning: context imbalance in
> '__ffs_ep0_queue_wait' - unexpected unlock
> drivers/usb/gadget/function/f_fs.c:383:17: warning: context imbalance in
> 'ffs_ep0_write' - different lock contexts for basic block
> drivers/usb/gadget/function/f_fs.c:423:24: warning: context imbalance in
> '__ffs_ep0_read_events' - unexpected unlock
> drivers/usb/gadget/function/f_fs.c:429:16: warning: context imbalance in
> 'ffs_ep0_read' - different lock contexts for basic blockactually, these were already there, patch applied again. -- balbi
signature.asc
Description: Digital signature
