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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html