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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html