Hello, 

I have a second issue with a functionfs USB-device implementation. 

The scenario is this: 
1) USB-device app starts up, runs fine
2) ssh to the device, kill the app with CTRL-C 
3) try to start the USB-device app 2nd time 

PANIC 

dmesg output: 
[ 2553.870000] ------------[ cut here ]------------
[ 2553.870000] kernel BUG at 
/var/lib/jenkins/workspace/Complete_PXYZ/.../kernel-source/fs/sysfs/file.c:332!

[ 2553.870000] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
[ 2553.870000] Modules linked in: designware_udc usb_f_fs libcomposite udc_core 
fuse configfs autofs4
[ 2553.870000] CPU: 0 PID: 1581 Comm: sh Not tainted 4.9.51-development #1
[ 2553.870000] task: c73fe3e0 task.stack: c787e000
[ 2553.870000] PC is at sysfs_create_file_ns+0x40/0x44
[ 2553.870000] LR is at 0x1
[ 2553.870000] pc : [<c01225ac>]    lr : [<00000001>]    psr: 60000013
               sp : c787fe28  ip : 00000bf5  fp : 00000051
[ 2553.870000] r10: c73ed000  r9 : 00000000  r8 : c72e31f0
[ 2553.870000] r7 : c72e31c8  r6 : c7919c00  r5 : bf05d270  r4 : c72e3264
[ 2553.870000] r3 : bf0411b4  r2 : 00000000  r1 : bf046908  r0 : 00000000
[ 2553.870000] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[ 2553.870000] Control: 0005317f  Table: 07188000  DAC: 00000051
[ 2553.870000] Process sh (pid: 1581, stack limit = 0xc787e190)
[ 2553.870000] Stack: (0xc787fe28 to 0xc7880000)
[ 2553.870000] fe20:                   c72e3264 bf05d270 c7919c00 bf04346c 
c7264400 c72e31f0
[ 2553.870000] fe40: c6082b20 c72e31f0 c72e31f0 bf0449bc 00000002 c72e3264 
c7b8cc00 bf05d270
[ 2553.870000] fe60: c7125aa8 c7264400 c72e31f0 c6082b20 c72e31f0 bf038ec8 
00000000 c73ed000
[ 2553.870000] fe80: 00000051 bf037ec8 c7264400 bf038ee4 c6082b20 bf038388 
c6082b20 c72e3000
[ 2553.870000] fea0: c72e3190 c61c9078 0000000e bf0456c0 0000000e c61c9060 
00108558 c61c9078
[ 2553.870000] fec0: c787ff88 c7b8cc00 c73ed000 bf00b83c c787ff88 0000000e 
bf00b76c c7b8cc00
[ 2553.870000] fee0: c787ff88 00000000 c787e000 00000000 000e902c c00bd7a4 
49d54ab8 c787ffb0
[ 2553.870000] ff00: 000e6614 00000241 be8cd7e4 c00092dc c71b6c40 0000000a 
c71efb40 00000001
[ 2553.870000] ff20: be8cd7e4 c00db02c c6082fe0 0000000a 0000000a c04a65e0 
00000000 00000000
[ 2553.870000] ff40: c7b529b4 0000000e 00108558 c7b8cc00 c787ff88 00000000 
c787e000 c00be5f0
[ 2553.870000] ff60: c71efb40 00000001 c71b6c80 c7b8cc00 c7b8cc00 00108558 
0000000e c000a5e4
[ 2553.870000] ff80: c787e000 c00bf344 00000000 00000000 00000000 0000000e 
00108558 49d54150
[ 2553.870000] ffa0: 00000004 c000a440 0000000e 00108558 00000001 00108558 
0000000e 00000000
[ 2553.870000] ffc0: 0000000e 00108558 49d54150 00000004 0000000e 00000004 
00000000 000e902c
[ 2553.870000] ffe0: 00000000 be8cd70c 49c7c178 49cd5e8c 60000010 00000001 
60042098 004c5010
[ 2553.870000] [<c01225ac>] (sysfs_create_file_ns) from [<bf04346c>] 
(composite_dev_prepare+0x5c/0xe0 [libcomposite])
[ 2553.870000] [<bf04346c>] (composite_dev_prepare [libcomposite]) from 
[<bf0449bc>] (configfs_composite_bind+0x2c/0x340 [libcomposite])
[ 2553.870000] [<bf0449bc>] (configfs_composite_bind [libcomposite]) from 
[<bf037ec8>] (udc_bind_to_driver+0x2c/0xbc [udc_core])
[ 2553.870000] [<bf037ec8>] (udc_bind_to_driver [udc_core]) from [<bf038388>] 
(usb_gadget_probe_driver+0xf0/0x13c [udc_core])
[ 2553.870000] [<bf038388>] (usb_gadget_probe_driver [udc_core]) from 
[<bf0456c0>] (gadget_dev_desc_UDC_store+0xa8/0xc4 [libcomposite])
[ 2553.870000] [<bf0456c0>] (gadget_dev_desc_UDC_store [libcomposite]) from 
[<bf00b83c>] (configfs_write_file+0xd0/0x15c [configfs])
[ 2553.870000] [<bf00b83c>] (configfs_write_file [configfs]) from [<c00bd7a4>] 
(__vfs_write+0x1c/0x114)
[ 2553.870000] [<c00bd7a4>] (__vfs_write) from [<c00be5f0>] 
(vfs_write+0xa0/0x168)
[ 2553.870000] [<c00be5f0>] (vfs_write) from [<c00bf344>] (SyS_write+0x3c/0x90)
[ 2553.870000] [<c00bf344>] (SyS_write) from [<c000a440>] 
(ret_fast_syscall+0x0/0x38)
[ 2553.870000] Code: e1a0200e ebffff8c e28dd00c e49df004 (e7f001f2)
[ 2553.870000] ---[ end trace cbce2f928593d16a ]---

The panic is in kernel-source/fs/sysfs/file.c:332

/**
 * sysfs_create_file_ns - create an attribute file for an object with custom ns
 * @kobj: object we're creating for
 * @attr: attribute descriptor
 * @ns: namespace the new file should belong to
 */
int sysfs_create_file_ns(struct kobject *kobj, const struct attribute *attr,
             const void *ns)
{
    BUG_ON(!kobj || !kobj->sd || !attr);     <== panic happens here 
    return sysfs_add_file_mode_ns(kobj->sd, attr, false, attr->mode, ns);
}


I inserted some printk()'s and found the panic is due to the !kobj->sd test. 
The kobj and attr pointers are OK. Problem with kobj->sd. 

I have tried all the easy things with no success. Still panics on 2nd start. 
* after stopping, completely removing all functionfs files, directories, and 
rmmod of usb_f_fs, libcomposite, configfs

I added a printk() to print the kobj devpath, and noticed it changes. I am not 
sure if it is significant or not.      

1st start of USB-device app
[  182.700000] kobj:c06527b0
[  182.700000] kobj devpath:/devices/platform/ahb/e1100000.usbd/gadget
[  182.720000] kobj->sd:0xc7afa7d0
[  182.720000] attr:0xc0652318

.... 
kill device app 
... 

2nd start of USB-device app
[  227.670000] kobj:c06527b0 
[  227.670000] kobj devpath:/gadget   
[  227.670000] kobj->sd:0x00000000
[  227.690000] attr:0xc0652318


$ uname -a
Linux 4.9.51 #1 PREEMPT Sat Oct 28 19:44:43 MDT 2017 armv5tejl armv5tejl 
armv5tejl GNU/Linux

Any help greatly appreciated.



Andy Purcell
Keysight Technologies
900 South Taft
Loveland, Colorado 80537
970-679-5976

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to