All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK*
@ 2014-10-02 16:09 Michael Grzeschik
  2014-10-07  9:24 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device Michael Grzeschik
  2014-10-31 10:41 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Laurent Pinchart
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Grzeschik @ 2014-10-02 16:09 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart

Currently the uvc_driver is not cleaning up its child devices if a
device is still in use. It leads to orphaned devices which are not
sitting on any interface. They get cleaned up on uvc_delete which will
be called on uvc_remove after the userspace application is closing the
stream. When PM_RUNTIME is used in the kernel, this leads to the
following backtrace for missing sysfs entries in the orphaned kobjects.

This patch is moving the device cleanup code for the child devices from
uvc_delete to uvc_unregister_video. It is an *HACK* workaround which
is ment to initiate the discussion for a proper solution.

This behaviour can simply be reproduced by the following command:

$ gst-launch v4l2src device=/dev/video0 ! fakesink

-> Now disconnect the UVC Camera while the stream is still open and used

$ <Ctrl-C> # to close the running gstreamer pipeline

[  258.012048] ------------[ cut here ]------------
[  258.021206] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
[  258.031728] sysfs group 80c79200 not found for kobject 'event0'
[  258.039383] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
[  258.051098] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G           O   3.17.0-rc6-20140925-1+ #10
[  258.063318] Backtrace:
[  258.066403] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
[  258.077579]  r6:000000dc r5:00000009 r4:d81f7ba8 r3:00000000
[  258.084549] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
[  258.091791] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
[  258.100770] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
[  258.109818]  r8:00000000 r7:da00a218 r6:da0520f0 r5:00000000 r4:80c79200
[  258.116675] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
[  258.125824]  r3:80c79200 r2:8098e22c
[  258.129463] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
[  258.138500]  r6:da0520e8 r5:da0520f0 r4:80c79200
[  258.143195] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
[  258.151790]  r6:da052004 r5:da0520e8 r4:da052000 r3:da306200
[  258.157813] [<803e3618>] (device_del) from [<804eb7a8>] (evdev_disconnect+0x20/0x48)
[  258.166190]  r7:da00a1b4 r6:da052004 r5:da0520e8 r4:da052000
[  258.172637] [<804eb788>] (evdev_disconnect) from [<804e694c>] (__input_unregister_device+0xb0/0x150)
[  258.182282]  r6:da00a000 r5:da00a448 r4:da00a434 r3:804eb788
[  258.188064] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
[  258.198271]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
[  258.204013] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
[  258.213557]  r4:da009000 r3:00000000
[  258.217221] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
[  258.225704]  r4:da051c58 r3:00000000
[  258.229322] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
[  258.237136]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
[  258.245495] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
[  258.253608] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
[  258.262529]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
[  258.270519] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
[  258.279105]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
[  258.284887] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
[  258.292634]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
[  258.298839] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
[  258.306654]  r4:da051c00
[  258.309221] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
[  258.317133] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
[  258.324554]  r5:da15e190 r4:da3c8dc0
[  258.328171] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
[  258.335344]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
[  258.343252]  r4:da306564
[  258.346086] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
[  258.353407] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
[  258.361489]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
[  258.367266] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
[  258.375011]  r7:da30c624
[  258.377584] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
[  258.385736]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
[  258.391476] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
[  258.399230]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
[  258.407190]  r4:d81f7fb0
[  258.409751] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
[  258.418003]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
[  258.425959]  r4:d81f6008
[  258.428519] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
[  258.436967]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
[  258.442692] ---[ end trace cd2cc911d2f600ac ]---
[  258.481579] ------------[ cut here ]------------
[  258.487313] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
[  258.496077] sysfs group 80c79200 not found for kobject 'input0'
[  258.502005] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
[  258.513158] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
[  258.523587] Backtrace:
[  258.526208] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
[  258.533914]  r6:000000dc r5:00000009 r4:d81f7bc8 r3:00000000
[  258.540589] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
[  258.548471] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
[  258.557029] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
[  258.566077]  r8:00000000 r7:da051020 r6:da00a220 r5:00000000 r4:80c79200
[  258.572879] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
[  258.581992]  r3:80c79200 r2:8098e22c
[  258.585681] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
[  258.594810]  r6:da00a218 r5:da00a220 r4:80c79200
[  258.599506] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
[  258.607982]  r6:da00a000 r5:da00a218 r4:00000008 r3:da306200
[  258.613738] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
[  258.623046]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
[  258.629199] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
[  258.639498]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
[  258.646041] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
[  258.655588]  r4:da009000 r3:00000000
[  258.659207] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
[  258.667690]  r4:da051c58 r3:00000000
[  258.671308] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
[  258.679116]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
[  258.687002] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
[  258.695592] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
[  258.703953]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
[  258.712128] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
[  258.720734]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
[  258.726516] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
[  258.734731]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
[  258.740463] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
[  258.748243]  r4:da051c00
[  258.750807] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
[  258.758684] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
[  258.766125]  r5:da15e190 r4:da3c8dc0
[  258.769743] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
[  258.776915]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
[  258.785114]  r4:da306564
[  258.787687] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
[  258.795532] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
[  258.802936]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
[  258.808947] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
[  258.816648]  r7:da30c624
[  258.819219] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
[  258.827360]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
[  258.833098] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
[  258.840828]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
[  258.848786]  r4:d81f7fb0
[  258.851346] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
[  258.859609]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
[  258.867567]  r4:d81f6008
[  258.870126] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
[  258.878543]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
[  258.884530] ---[ end trace cd2cc911d2f600ad ]---
[  258.892863] ------------[ cut here ]------------
[  258.898189] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
[  258.906811] sysfs group 80c8a764 not found for kobject 'input0'
[  258.912736] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
[  258.923850] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
[  258.933569] Backtrace:
[  258.936097] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
[  258.943671]  r6:000000dc r5:00000009 r4:d81f7bb0 r3:00000000
[  258.949877] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
[  258.957588] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
[  258.965957] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
[  258.974918]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a764
[  258.981703] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
[  258.990724]  r3:80c8a764 r2:8098e22c
[  258.994444] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>] (sysfs_remove_groups+0x2c/0x3c)
[  259.003147]  r6:80c8a590 r5:da00a220 r4:80c8a624
[  259.008319] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>] (device_remove_attrs+0x58/0x74)
[  259.017585]  r5:da00a220 r4:da00a218
[  259.021207] [<803e2fe4>] (device_remove_attrs) from [<803e372c>] (device_del+0x114/0x1b0)
[  259.029860]  r7:da051020 r6:da00a220 r5:da00a218 r4:dad9be5c
[  259.035642] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
[  259.044806]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
[  259.050541] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
[  259.060693]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
[  259.066505] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
[  259.076023]  r4:da009000 r3:00000000
[  259.079642] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
[  259.088106]  r4:da051c58 r3:00000000
[  259.091722] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
[  259.099491]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
[  259.107368] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
[  259.115928] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
[  259.124546]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
[  259.132381] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
[  259.140968]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
[  259.146747] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
[  259.154978]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
[  259.160711] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
[  259.168496]  r4:da051c00
[  259.171060] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
[  259.178935] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
[  259.186343]  r5:da15e190 r4:da3c8dc0
[  259.189959] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
[  259.197161]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
[  259.205361]  r4:da306564
[  259.207932] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
[  259.215734] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
[  259.223137]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
[  259.229130] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
[  259.236844]  r7:da30c624
[  259.239410] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
[  259.247760]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
[  259.253505] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
[  259.261226]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
[  259.269215]  r4:d81f7fb0
[  259.271773] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
[  259.280054]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
[  259.288010]  r4:d81f6008
[  259.290568] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
[  259.298977]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
[  259.304748] ---[ end trace cd2cc911d2f600ae ]---
[  259.313908] ------------[ cut here ]------------
[  259.319437] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
[  259.328075] sysfs group 80c8a630 not found for kobject 'input0'
[  259.334001] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
[  259.345180] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
[  259.354876] Backtrace:
[  259.357359] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
[  259.365406]  r6:000000dc r5:00000009 r4:d81f7bb0 r3:00000000
[  259.371147] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
[  259.378856] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
[  259.387252] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
[  259.396262]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a630
[  259.403049] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
[  259.412058]  r3:80c8a630 r2:8098e22c
[  259.415748] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>] (sysfs_remove_groups+0x2c/0x3c)
[  259.424924]  r6:80c8a590 r5:da00a220 r4:80c8a628
[  259.429604] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>] (device_remove_attrs+0x58/0x74)
[  259.438873]  r5:da00a220 r4:da00a218
[  259.442494] [<803e2fe4>] (device_remove_attrs) from [<803e372c>] (device_del+0x114/0x1b0)
[  259.451143]  r7:da051020 r6:da00a220 r5:da00a218 r4:dad9be5c
[  259.459353] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
[  259.468788]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
[  259.474673] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
[  259.484912]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
[  259.490656] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
[  259.500189]  r4:da009000 r3:00000000
[  259.503808] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
[  259.512287]  r4:da051c58 r3:00000000
[  259.515948] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
[  259.523260]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
[  259.531558] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
[  259.540130] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
[  259.548753]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
[  259.556668] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
[  259.565261]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
[  259.570995] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
[  259.579214]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
[  259.584993] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
[  259.592305]  r4:da051c00
[  259.595383] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
[  259.602793] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
[  259.610614]  r5:da15e190 r4:da3c8dc0
[  259.614503] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
[  259.621212]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
[  259.629413]  r4:da306564
[  259.631980] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
[  259.639994] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
[  259.647692]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
[  259.653422] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
[  259.661117]  r7:da30c624
[  259.663688] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
[  259.671819]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
[  259.677600] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
[  259.685289]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
[  259.693197]  r4:d81f7fb0
[  259.696049] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
[  259.703623]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
[  259.712000]  r4:d81f6008
[  259.714816] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
[  259.722563]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
[  259.728745] ---[ end trace cd2cc911d2f600af ]---
[  259.735876] deleting dev: da0090a8
[  259.739317] in sysfs_remove_group: power
[  259.743245] ------------[ cut here ]------------
[  259.748707] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
[  259.757392] sysfs group 80c79200 not found for kobject 'media1'
[  259.763319] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
[  259.774565] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
[  259.783788] Backtrace:
[  259.786771] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
[  259.794880]  r6:000000dc r5:00000009 r4:d81f7bc8 r3:00000000
[  259.800622] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
[  259.808395] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
[  259.816778] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
[  259.825750]  r8:00000000 r7:da051020 r6:da0090b0 r5:00000000 r4:80c79200
[  259.832537] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
[  259.841570]  r3:80c79200 r2:8098e22c
[  259.845245] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
[  259.853687]  r6:da0090a8 r5:da0090b0 r4:80c79200
[  259.858846] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
[  259.867159]  r6:da009098 r5:da0090a8 r4:da0090a8 r3:da306200
[  259.872893] [<803e3618>] (device_del) from [<803e37f4>] (device_unregister+0x2c/0x6c)
[  259.881206]  r7:da051c00 r6:da009098 r5:da00939c r4:da0090a8
[  259.886987] [<803e37c8>] (device_unregister) from [<804fe768>] (media_devnode_unregister+0x58/0x5c)
[  259.896543]  r4:da0090a0 r3:600f0013
[  259.900164] [<804fe710>] (media_devnode_unregister) from [<804fe330>] (media_device_unregister+0x50/0x54)
[  259.910260]  r4:da00939c r3:00000001
[  259.913881] [<804fe2e0>] (media_device_unregister) from [<80524f74>] (uvc_delete+0x138/0x140)
[  259.922900]  r6:da009000 r5:81506254 r4:da051c58 r3:00000001
[  259.928674] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
[  259.936451]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
[  259.944539] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
[  259.952645] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
[  259.961478]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
[  259.969371] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
[  259.977967]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
[  259.983702] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
[  259.991921]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
[  259.997738] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
[  260.005531]  r4:da051c00
[  260.008096] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
[  260.015976] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
[  260.023119]  r5:da15e190 r4:da3c8dc0
[  260.027004] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
[  260.033709]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
[  260.042078]  r4:da306564
[  260.044936] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
[  260.052257] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
[  260.060365]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
[  260.066144] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
[  260.073369]  r7:da30c624
[  260.076398] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
[  260.084059]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
[  260.090262] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
[  260.097955]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
[  260.105910]  r4:d81f7fb0
[  260.108469] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
[  260.116728]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
[  260.124899]  r4:d81f6008
[  260.127463] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
[  260.135694]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
[  260.141419] ---[ end trace cd2cc911d2f600b0 ]---
---
 drivers/media/usb/uvc/uvc_driver.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index f8135f4..b58e46a 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -1626,15 +1626,10 @@ static void uvc_delete(struct uvc_device *dev)
 	usb_put_intf(dev->intf);
 	usb_put_dev(dev->udev);
 
-	uvc_status_cleanup(dev);
 	uvc_ctrl_cleanup_device(dev);
 
 	if (dev->vdev.dev)
 		v4l2_device_unregister(&dev->vdev);
-#ifdef CONFIG_MEDIA_CONTROLLER
-	if (media_devnode_is_registered(&dev->mdev.devnode))
-		media_device_unregister(&dev->mdev);
-#endif
 
 	list_for_each_safe(p, n, &dev->chains) {
 		struct uvc_video_chain *chain;
@@ -1705,6 +1700,11 @@ static void uvc_unregister_video(struct uvc_device *dev)
 		uvc_debugfs_cleanup_stream(stream);
 	}
 
+	uvc_status_cleanup(dev);
+#ifdef CONFIG_MEDIA_CONTROLLER
+	if (media_devnode_is_registered(&dev->mdev.devnode))
+		media_device_unregister(&dev->mdev);
+#endif
 	/* Decrement the stream count and call uvc_delete explicitly if there
 	 * are no stream left.
 	 */
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device
  2014-10-02 16:09 [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Michael Grzeschik
@ 2014-10-07  9:24 ` Michael Grzeschik
  2014-10-31 10:41 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Laurent Pinchart
  1 sibling, 0 replies; 4+ messages in thread
From: Michael Grzeschik @ 2014-10-07  9:24 UTC (permalink / raw)
  To: laurent.pinchart; +Cc: linux-media

Hi Laurent,

this was probably one hack comment to much,
so it did not get much attention. :)

It is possible that this patch is not fully a workaround. But I am not
aware how much this could break along the way.

Thanks,
Michael

On Thu, Oct 02, 2014 at 06:09:47PM +0200, Michael Grzeschik wrote:
> Currently the uvc_driver is not cleaning up its child devices if a
> device is still in use. It leads to orphaned devices which are not
> sitting on any interface. They get cleaned up on uvc_delete which will
> be called on uvc_remove after the userspace application is closing the
> stream. When PM_RUNTIME is used in the kernel, this leads to the
> following backtrace for missing sysfs entries in the orphaned kobjects.
> 
> This patch is moving the device cleanup code for the child devices from
> uvc_delete to uvc_unregister_video. It is an *HACK* workaround which
> is ment to initiate the discussion for a proper solution.
> 
> This behaviour can simply be reproduced by the following command:
> 
> $ gst-launch v4l2src device=/dev/video0 ! fakesink
> 
> -> Now disconnect the UVC Camera while the stream is still open and used
> 
> $ <Ctrl-C> # to close the running gstreamer pipeline
> 
> [  258.012048] ------------[ cut here ]------------
> [  258.021206] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
> [  258.031728] sysfs group 80c79200 not found for kobject 'event0'
> [  258.039383] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
> [  258.051098] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G           O   3.17.0-rc6-20140925-1+ #10
> [  258.063318] Backtrace:
> [  258.066403] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
> [  258.077579]  r6:000000dc r5:00000009 r4:d81f7ba8 r3:00000000
> [  258.084549] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
> [  258.091791] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
> [  258.100770] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
> [  258.109818]  r8:00000000 r7:da00a218 r6:da0520f0 r5:00000000 r4:80c79200
> [  258.116675] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
> [  258.125824]  r3:80c79200 r2:8098e22c
> [  258.129463] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
> [  258.138500]  r6:da0520e8 r5:da0520f0 r4:80c79200
> [  258.143195] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
> [  258.151790]  r6:da052004 r5:da0520e8 r4:da052000 r3:da306200
> [  258.157813] [<803e3618>] (device_del) from [<804eb7a8>] (evdev_disconnect+0x20/0x48)
> [  258.166190]  r7:da00a1b4 r6:da052004 r5:da0520e8 r4:da052000
> [  258.172637] [<804eb788>] (evdev_disconnect) from [<804e694c>] (__input_unregister_device+0xb0/0x150)
> [  258.182282]  r6:da00a000 r5:da00a448 r4:da00a434 r3:804eb788
> [  258.188064] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
> [  258.198271]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
> [  258.204013] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
> [  258.213557]  r4:da009000 r3:00000000
> [  258.217221] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
> [  258.225704]  r4:da051c58 r3:00000000
> [  258.229322] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
> [  258.237136]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
> [  258.245495] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
> [  258.253608] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
> [  258.262529]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
> [  258.270519] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
> [  258.279105]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  258.284887] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
> [  258.292634]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
> [  258.298839] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
> [  258.306654]  r4:da051c00
> [  258.309221] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
> [  258.317133] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
> [  258.324554]  r5:da15e190 r4:da3c8dc0
> [  258.328171] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  258.335344]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
> [  258.343252]  r4:da306564
> [  258.346086] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
> [  258.353407] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
> [  258.361489]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
> [  258.367266] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
> [  258.375011]  r7:da30c624
> [  258.377584] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
> [  258.385736]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
> [  258.391476] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
> [  258.399230]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
> [  258.407190]  r4:d81f7fb0
> [  258.409751] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
> [  258.418003]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
> [  258.425959]  r4:d81f6008
> [  258.428519] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
> [  258.436967]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
> [  258.442692] ---[ end trace cd2cc911d2f600ac ]---
> [  258.481579] ------------[ cut here ]------------
> [  258.487313] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
> [  258.496077] sysfs group 80c79200 not found for kobject 'input0'
> [  258.502005] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
> [  258.513158] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
> [  258.523587] Backtrace:
> [  258.526208] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
> [  258.533914]  r6:000000dc r5:00000009 r4:d81f7bc8 r3:00000000
> [  258.540589] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
> [  258.548471] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
> [  258.557029] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
> [  258.566077]  r8:00000000 r7:da051020 r6:da00a220 r5:00000000 r4:80c79200
> [  258.572879] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
> [  258.581992]  r3:80c79200 r2:8098e22c
> [  258.585681] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
> [  258.594810]  r6:da00a218 r5:da00a220 r4:80c79200
> [  258.599506] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
> [  258.607982]  r6:da00a000 r5:da00a218 r4:00000008 r3:da306200
> [  258.613738] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
> [  258.623046]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
> [  258.629199] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
> [  258.639498]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
> [  258.646041] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
> [  258.655588]  r4:da009000 r3:00000000
> [  258.659207] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
> [  258.667690]  r4:da051c58 r3:00000000
> [  258.671308] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
> [  258.679116]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
> [  258.687002] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
> [  258.695592] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
> [  258.703953]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
> [  258.712128] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
> [  258.720734]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  258.726516] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
> [  258.734731]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
> [  258.740463] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
> [  258.748243]  r4:da051c00
> [  258.750807] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
> [  258.758684] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
> [  258.766125]  r5:da15e190 r4:da3c8dc0
> [  258.769743] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  258.776915]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
> [  258.785114]  r4:da306564
> [  258.787687] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
> [  258.795532] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
> [  258.802936]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
> [  258.808947] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
> [  258.816648]  r7:da30c624
> [  258.819219] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
> [  258.827360]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
> [  258.833098] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
> [  258.840828]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
> [  258.848786]  r4:d81f7fb0
> [  258.851346] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
> [  258.859609]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
> [  258.867567]  r4:d81f6008
> [  258.870126] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
> [  258.878543]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
> [  258.884530] ---[ end trace cd2cc911d2f600ad ]---
> [  258.892863] ------------[ cut here ]------------
> [  258.898189] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
> [  258.906811] sysfs group 80c8a764 not found for kobject 'input0'
> [  258.912736] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
> [  258.923850] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
> [  258.933569] Backtrace:
> [  258.936097] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
> [  258.943671]  r6:000000dc r5:00000009 r4:d81f7bb0 r3:00000000
> [  258.949877] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
> [  258.957588] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
> [  258.965957] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
> [  258.974918]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a764
> [  258.981703] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
> [  258.990724]  r3:80c8a764 r2:8098e22c
> [  258.994444] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>] (sysfs_remove_groups+0x2c/0x3c)
> [  259.003147]  r6:80c8a590 r5:da00a220 r4:80c8a624
> [  259.008319] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>] (device_remove_attrs+0x58/0x74)
> [  259.017585]  r5:da00a220 r4:da00a218
> [  259.021207] [<803e2fe4>] (device_remove_attrs) from [<803e372c>] (device_del+0x114/0x1b0)
> [  259.029860]  r7:da051020 r6:da00a220 r5:da00a218 r4:dad9be5c
> [  259.035642] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
> [  259.044806]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
> [  259.050541] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
> [  259.060693]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
> [  259.066505] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
> [  259.076023]  r4:da009000 r3:00000000
> [  259.079642] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
> [  259.088106]  r4:da051c58 r3:00000000
> [  259.091722] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
> [  259.099491]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
> [  259.107368] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
> [  259.115928] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
> [  259.124546]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
> [  259.132381] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
> [  259.140968]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.146747] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
> [  259.154978]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
> [  259.160711] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
> [  259.168496]  r4:da051c00
> [  259.171060] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
> [  259.178935] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
> [  259.186343]  r5:da15e190 r4:da3c8dc0
> [  259.189959] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  259.197161]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
> [  259.205361]  r4:da306564
> [  259.207932] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
> [  259.215734] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
> [  259.223137]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
> [  259.229130] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
> [  259.236844]  r7:da30c624
> [  259.239410] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
> [  259.247760]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
> [  259.253505] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
> [  259.261226]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
> [  259.269215]  r4:d81f7fb0
> [  259.271773] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
> [  259.280054]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
> [  259.288010]  r4:d81f6008
> [  259.290568] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
> [  259.298977]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
> [  259.304748] ---[ end trace cd2cc911d2f600ae ]---
> [  259.313908] ------------[ cut here ]------------
> [  259.319437] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
> [  259.328075] sysfs group 80c8a630 not found for kobject 'input0'
> [  259.334001] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
> [  259.345180] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
> [  259.354876] Backtrace:
> [  259.357359] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
> [  259.365406]  r6:000000dc r5:00000009 r4:d81f7bb0 r3:00000000
> [  259.371147] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
> [  259.378856] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
> [  259.387252] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
> [  259.396262]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a630
> [  259.403049] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
> [  259.412058]  r3:80c8a630 r2:8098e22c
> [  259.415748] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>] (sysfs_remove_groups+0x2c/0x3c)
> [  259.424924]  r6:80c8a590 r5:da00a220 r4:80c8a628
> [  259.429604] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>] (device_remove_attrs+0x58/0x74)
> [  259.438873]  r5:da00a220 r4:da00a218
> [  259.442494] [<803e2fe4>] (device_remove_attrs) from [<803e372c>] (device_del+0x114/0x1b0)
> [  259.451143]  r7:da051020 r6:da00a220 r5:da00a218 r4:dad9be5c
> [  259.459353] [<803e3618>] (device_del) from [<804e69d0>] (__input_unregister_device+0x134/0x150)
> [  259.468788]  r7:da00a1b4 r6:da00a000 r5:00000007 r4:00000008
> [  259.474673] [<804e689c>] (__input_unregister_device) from [<804e7b50>] (input_unregister_device+0x50/0x78)
> [  259.484912]  r7:da051c00 r6:da009000 r5:81506254 r4:da00a000
> [  259.490656] [<804e7b00>] (input_unregister_device) from [<8052eba8>] (uvc_status_cleanup+0x38/0x3c)
> [  259.500189]  r4:da009000 r3:00000000
> [  259.503808] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>] (uvc_delete+0x28/0x140)
> [  259.512287]  r4:da051c58 r3:00000000
> [  259.515948] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
> [  259.523260]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
> [  259.531558] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
> [  259.540130] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
> [  259.548753]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
> [  259.556668] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
> [  259.565261]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.570995] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
> [  259.579214]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
> [  259.584993] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
> [  259.592305]  r4:da051c00
> [  259.595383] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
> [  259.602793] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
> [  259.610614]  r5:da15e190 r4:da3c8dc0
> [  259.614503] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  259.621212]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
> [  259.629413]  r4:da306564
> [  259.631980] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
> [  259.639994] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
> [  259.647692]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
> [  259.653422] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
> [  259.661117]  r7:da30c624
> [  259.663688] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
> [  259.671819]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
> [  259.677600] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
> [  259.685289]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
> [  259.693197]  r4:d81f7fb0
> [  259.696049] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
> [  259.703623]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
> [  259.712000]  r4:d81f6008
> [  259.714816] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
> [  259.722563]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
> [  259.728745] ---[ end trace cd2cc911d2f600af ]---
> [  259.735876] deleting dev: da0090a8
> [  259.739317] in sysfs_remove_group: power
> [  259.743245] ------------[ cut here ]------------
> [  259.748707] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220 sysfs_remove_group+0xb4/0xb8()
> [  259.757392] sysfs group 80c79200 not found for kobject 'media1'
> [  259.763319] Modules linked in: lock(O) usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio ath6kl_core
> [  259.774565] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G        W  O   3.17.0-rc6-20140925-1+ #10
> [  259.783788] Backtrace:
> [  259.786771] [<80012ca4>] (dump_backtrace) from [<80012f94>] (show_stack+0x18/0x1c)
> [  259.794880]  r6:000000dc r5:00000009 r4:d81f7bc8 r3:00000000
> [  259.800622] [<80012f7c>] (show_stack) from [<807872e4>] (dump_stack+0x24/0x28)
> [  259.808395] [<807872c0>] (dump_stack) from [<80025140>] (warn_slowpath_common+0x78/0x90)
> [  259.816778] [<800250c8>] (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40)
> [  259.825750]  r8:00000000 r7:da051020 r6:da0090b0 r5:00000000 r4:80c79200
> [  259.832537] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>] (sysfs_remove_group+0xb4/0xb8)
> [  259.841570]  r3:80c79200 r2:8098e22c
> [  259.845245] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>] (dpm_sysfs_remove+0x54/0x58)
> [  259.853687]  r6:da0090a8 r5:da0090b0 r4:80c79200
> [  259.858846] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>] (device_del+0x4c/0x1b0)
> [  259.867159]  r6:da009098 r5:da0090a8 r4:da0090a8 r3:da306200
> [  259.872893] [<803e3618>] (device_del) from [<803e37f4>] (device_unregister+0x2c/0x6c)
> [  259.881206]  r7:da051c00 r6:da009098 r5:da00939c r4:da0090a8
> [  259.886987] [<803e37c8>] (device_unregister) from [<804fe768>] (media_devnode_unregister+0x58/0x5c)
> [  259.896543]  r4:da0090a0 r3:600f0013
> [  259.900164] [<804fe710>] (media_devnode_unregister) from [<804fe330>] (media_device_unregister+0x50/0x54)
> [  259.910260]  r4:da00939c r3:00000001
> [  259.913881] [<804fe2e0>] (media_device_unregister) from [<80524f74>] (uvc_delete+0x138/0x140)
> [  259.922900]  r6:da009000 r5:81506254 r4:da051c58 r3:00000001
> [  259.928674] [<80524e3c>] (uvc_delete) from [<80525098>] (uvc_release+0x40/0x44)
> [  259.936451]  r8:00000000 r7:da051c00 r6:da009428 r5:81506254 r4:da051c58 r3:da00951c
> [  259.944539] [<80525058>] (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4)
> [  259.952645] [<8050093c>] (v4l2_device_release) from [<803e30f4>] (device_release+0x34/0x98)
> [  259.961478]  r8:da054070 r7:da026a40 r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c
> [  259.969371] [<803e30c0>] (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8)
> [  259.977967]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.983702] [<80323f3c>] (kobject_cleanup) from [<80323e6c>] (kobject_put+0x50/0x7c)
> [  259.991921]  r7:da054070 r6:da562258 r5:00000000 r4:da051c60
> [  259.997738] [<80323e1c>] (kobject_put) from [<803e350c>] (put_device+0x1c/0x20)
> [  260.005531]  r4:da051c00
> [  260.008096] [<803e34f0>] (put_device) from [<804ff73c>] (v4l2_release+0x58/0x7c)
> [  260.015976] [<804ff6e4>] (v4l2_release) from [<800f1444>] (__fput+0x9c/0x220)
> [  260.023119]  r5:da15e190 r4:da3c8dc0
> [  260.027004] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  260.033709]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180 r5:da3ee280
> [  260.042078]  r4:da306564
> [  260.044936] [<800f1614>] (____fput) from [<8003d198>] (task_work_run+0xa0/0xe4)
> [  260.052257] [<8003d0f8>] (task_work_run) from [<80025cb8>] (do_exit+0x280/0x8d0)
> [  260.060365]  r7:da30c624 r6:da3c229c r5:da306574 r4:da3c2240
> [  260.066144] [<80025a38>] (do_exit) from [<8002722c>] (do_group_exit+0x44/0xb8)
> [  260.073369]  r7:da30c624
> [  260.076398] [<800271e8>] (do_group_exit) from [<80031510>] (get_signal+0x254/0x6c8)
> [  260.084059]  r7:da30c624 r6:d81f7ed4 r5:00000009 r4:d81f6000
> [  260.090262] [<800312bc>] (get_signal) from [<80012190>] (do_signal+0x6c/0x3f4)
> [  260.097955]  r10:00000000 r9:d81f6000 r8:fffffe00 r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4
> [  260.105910]  r4:d81f7fb0
> [  260.108469] [<80012124>] (do_signal) from [<800126c4>] (do_work_pending+0xa8/0xe8)
> [  260.116728]  r10:00000000 r9:d81f6000 r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000
> [  260.124899]  r4:d81f6008
> [  260.127463] [<8001261c>] (do_work_pending) from [<8000f238>] (work_pending+0xc/0x20)
> [  260.135694]  r7:00000036 r6:756065a8 r5:0193d3f8 r4:76b77b24
> [  260.141419] ---[ end trace cd2cc911d2f600b0 ]---
> ---
>  drivers/media/usb/uvc/uvc_driver.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index f8135f4..b58e46a 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -1626,15 +1626,10 @@ static void uvc_delete(struct uvc_device *dev)
>  	usb_put_intf(dev->intf);
>  	usb_put_dev(dev->udev);
>  
> -	uvc_status_cleanup(dev);
>  	uvc_ctrl_cleanup_device(dev);
>  
>  	if (dev->vdev.dev)
>  		v4l2_device_unregister(&dev->vdev);
> -#ifdef CONFIG_MEDIA_CONTROLLER
> -	if (media_devnode_is_registered(&dev->mdev.devnode))
> -		media_device_unregister(&dev->mdev);
> -#endif
>  
>  	list_for_each_safe(p, n, &dev->chains) {
>  		struct uvc_video_chain *chain;
> @@ -1705,6 +1700,11 @@ static void uvc_unregister_video(struct uvc_device *dev)
>  		uvc_debugfs_cleanup_stream(stream);
>  	}
>  
> +	uvc_status_cleanup(dev);
> +#ifdef CONFIG_MEDIA_CONTROLLER
> +	if (media_devnode_is_registered(&dev->mdev.devnode))
> +		media_device_unregister(&dev->mdev);
> +#endif
>  	/* Decrement the stream count and call uvc_delete explicitly if there
>  	 * are no stream left.
>  	 */
> -- 
> 2.1.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK*
  2014-10-02 16:09 [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Michael Grzeschik
  2014-10-07  9:24 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device Michael Grzeschik
@ 2014-10-31 10:41 ` Laurent Pinchart
  2015-10-01 12:08   ` Yasushi SHOJI
  1 sibling, 1 reply; 4+ messages in thread
From: Laurent Pinchart @ 2014-10-31 10:41 UTC (permalink / raw)
  To: Michael Grzeschik; +Cc: linux-media

Hi Michael,

Thank you for the patch.

On Thursday 02 October 2014 18:09:47 Michael Grzeschik wrote:
> Currently the uvc_driver is not cleaning up its child devices if a
> device is still in use. It leads to orphaned devices which are not
> sitting on any interface. They get cleaned up on uvc_delete which will
> be called on uvc_remove after the userspace application is closing the
> stream. When PM_RUNTIME is used in the kernel, this leads to the
> following backtrace for missing sysfs entries in the orphaned kobjects.
> 
> This patch is moving the device cleanup code for the child devices from
> uvc_delete to uvc_unregister_video. It is an *HACK* workaround which
> is ment to initiate the discussion for a proper solution.

Does https://patchwork.linuxtv.org/patch/26561/ help ? The usb_put_intf() and 
usb_put_dev() calls could be moved to the end of the function to fix the 
media_device_unregister() warning.

> This behaviour can simply be reproduced by the following command:
> 
> $ gst-launch v4l2src device=/dev/video0 ! fakesink
> 
> -> Now disconnect the UVC Camera while the stream is still open and used
> 
> $ <Ctrl-C> # to close the running gstreamer pipeline
> 
> [  258.012048] ------------[ cut here ]------------
> [  258.021206] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220
> sysfs_remove_group+0xb4/0xb8() [  258.031728] sysfs group 80c79200 not
> found for kobject 'event0' [  258.039383] Modules linked in: lock(O)
> usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio
> ath6kl_core [  258.051098] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G
>           O   3.17.0-rc6-20140925-1+ #10 [  258.063318] Backtrace:
> [  258.066403] [<80012ca4>] (dump_backtrace) from [<80012f94>]
> (show_stack+0x18/0x1c) [  258.077579]  r6:000000dc r5:00000009 r4:d81f7ba8
> r3:00000000
> [  258.084549] [<80012f7c>] (show_stack) from [<807872e4>]
> (dump_stack+0x24/0x28) [  258.091791] [<807872c0>] (dump_stack) from
> [<80025140>] (warn_slowpath_common+0x78/0x90) [  258.100770] [<800250c8>]
> (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40) [ 
> 258.109818]  r8:00000000 r7:da00a218 r6:da0520f0 r5:00000000 r4:80c79200 [ 
> 258.116675] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>]
> (sysfs_remove_group+0xb4/0xb8) [  258.125824]  r3:80c79200 r2:8098e22c
> [  258.129463] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>]
> (dpm_sysfs_remove+0x54/0x58) [  258.138500]  r6:da0520e8 r5:da0520f0
> r4:80c79200
> [  258.143195] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>]
> (device_del+0x4c/0x1b0) [  258.151790]  r6:da052004 r5:da0520e8 r4:da052000
> r3:da306200
> [  258.157813] [<803e3618>] (device_del) from [<804eb7a8>]
> (evdev_disconnect+0x20/0x48) [  258.166190]  r7:da00a1b4 r6:da052004
> r5:da0520e8 r4:da052000
> [  258.172637] [<804eb788>] (evdev_disconnect) from [<804e694c>]
> (__input_unregister_device+0xb0/0x150) [  258.182282]  r6:da00a000
> r5:da00a448 r4:da00a434 r3:804eb788
> [  258.188064] [<804e689c>] (__input_unregister_device) from [<804e7b50>]
> (input_unregister_device+0x50/0x78) [  258.198271]  r7:da051c00 r6:da009000
> r5:81506254 r4:da00a000
> [  258.204013] [<804e7b00>] (input_unregister_device) from [<8052eba8>]
> (uvc_status_cleanup+0x38/0x3c) [  258.213557]  r4:da009000 r3:00000000
> [  258.217221] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>]
> (uvc_delete+0x28/0x140) [  258.225704]  r4:da051c58 r3:00000000
> [  258.229322] [<80524e3c>] (uvc_delete) from [<80525098>]
> (uvc_release+0x40/0x44) [  258.237136]  r8:00000000 r7:da051c00 r6:da009428
> r5:81506254 r4:da051c58 r3:da00951c [  258.245495] [<80525058>]
> (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4) [ 
> 258.253608] [<8050093c>] (v4l2_device_release) from [<803e30f4>]
> (device_release+0x34/0x98) [  258.262529]  r8:da054070 r7:da026a40
> r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c [  258.270519] [<803e30c0>]
> (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8) [ 
> 258.279105]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  258.284887] [<80323f3c>] (kobject_cleanup) from [<80323e6c>]
> (kobject_put+0x50/0x7c) [  258.292634]  r7:da054070 r6:da562258 r5:00000000
> r4:da051c60
> [  258.298839] [<80323e1c>] (kobject_put) from [<803e350c>]
> (put_device+0x1c/0x20) [  258.306654]  r4:da051c00
> [  258.309221] [<803e34f0>] (put_device) from [<804ff73c>]
> (v4l2_release+0x58/0x7c) [  258.317133] [<804ff6e4>] (v4l2_release) from
> [<800f1444>] (__fput+0x9c/0x220) [  258.324554]  r5:da15e190 r4:da3c8dc0
> [  258.328171] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  258.335344]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180
> r5:da3ee280 [  258.343252]  r4:da306564
> [  258.346086] [<800f1614>] (____fput) from [<8003d198>]
> (task_work_run+0xa0/0xe4) [  258.353407] [<8003d0f8>] (task_work_run) from
> [<80025cb8>] (do_exit+0x280/0x8d0) [  258.361489]  r7:da30c624 r6:da3c229c
> r5:da306574 r4:da3c2240
> [  258.367266] [<80025a38>] (do_exit) from [<8002722c>]
> (do_group_exit+0x44/0xb8) [  258.375011]  r7:da30c624
> [  258.377584] [<800271e8>] (do_group_exit) from [<80031510>]
> (get_signal+0x254/0x6c8) [  258.385736]  r7:da30c624 r6:d81f7ed4
> r5:00000009 r4:d81f6000
> [  258.391476] [<800312bc>] (get_signal) from [<80012190>]
> (do_signal+0x6c/0x3f4) [  258.399230]  r10:00000000 r9:d81f6000 r8:fffffe00
> r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4 [  258.407190]  r4:d81f7fb0
> [  258.409751] [<80012124>] (do_signal) from [<800126c4>]
> (do_work_pending+0xa8/0xe8) [  258.418003]  r10:00000000 r9:d81f6000
> r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000 [  258.425959]  r4:d81f6008
> [  258.428519] [<8001261c>] (do_work_pending) from [<8000f238>]
> (work_pending+0xc/0x20) [  258.436967]  r7:00000036 r6:756065a8 r5:0193d3f8
> r4:76b77b24
> [  258.442692] ---[ end trace cd2cc911d2f600ac ]---
> [  258.481579] ------------[ cut here ]------------
> [  258.487313] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220
> sysfs_remove_group+0xb4/0xb8() [  258.496077] sysfs group 80c79200 not
> found for kobject 'input0' [  258.502005] Modules linked in: lock(O)
> usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio
> ath6kl_core [  258.513158] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G
>        W  O   3.17.0-rc6-20140925-1+ #10 [  258.523587] Backtrace:
> [  258.526208] [<80012ca4>] (dump_backtrace) from [<80012f94>]
> (show_stack+0x18/0x1c) [  258.533914]  r6:000000dc r5:00000009 r4:d81f7bc8
> r3:00000000
> [  258.540589] [<80012f7c>] (show_stack) from [<807872e4>]
> (dump_stack+0x24/0x28) [  258.548471] [<807872c0>] (dump_stack) from
> [<80025140>] (warn_slowpath_common+0x78/0x90) [  258.557029] [<800250c8>]
> (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40) [ 
> 258.566077]  r8:00000000 r7:da051020 r6:da00a220 r5:00000000 r4:80c79200 [ 
> 258.572879] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>]
> (sysfs_remove_group+0xb4/0xb8) [  258.581992]  r3:80c79200 r2:8098e22c
> [  258.585681] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>]
> (dpm_sysfs_remove+0x54/0x58) [  258.594810]  r6:da00a218 r5:da00a220
> r4:80c79200
> [  258.599506] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>]
> (device_del+0x4c/0x1b0) [  258.607982]  r6:da00a000 r5:da00a218 r4:00000008
> r3:da306200
> [  258.613738] [<803e3618>] (device_del) from [<804e69d0>]
> (__input_unregister_device+0x134/0x150) [  258.623046]  r7:da00a1b4
> r6:da00a000 r5:00000007 r4:00000008
> [  258.629199] [<804e689c>] (__input_unregister_device) from [<804e7b50>]
> (input_unregister_device+0x50/0x78) [  258.639498]  r7:da051c00 r6:da009000
> r5:81506254 r4:da00a000
> [  258.646041] [<804e7b00>] (input_unregister_device) from [<8052eba8>]
> (uvc_status_cleanup+0x38/0x3c) [  258.655588]  r4:da009000 r3:00000000
> [  258.659207] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>]
> (uvc_delete+0x28/0x140) [  258.667690]  r4:da051c58 r3:00000000
> [  258.671308] [<80524e3c>] (uvc_delete) from [<80525098>]
> (uvc_release+0x40/0x44) [  258.679116]  r8:00000000 r7:da051c00 r6:da009428
> r5:81506254 r4:da051c58 r3:da00951c [  258.687002] [<80525058>]
> (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4) [ 
> 258.695592] [<8050093c>] (v4l2_device_release) from [<803e30f4>]
> (device_release+0x34/0x98) [  258.703953]  r8:da054070 r7:da026a40
> r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c [  258.712128] [<803e30c0>]
> (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8) [ 
> 258.720734]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  258.726516] [<80323f3c>] (kobject_cleanup) from [<80323e6c>]
> (kobject_put+0x50/0x7c) [  258.734731]  r7:da054070 r6:da562258 r5:00000000
> r4:da051c60
> [  258.740463] [<80323e1c>] (kobject_put) from [<803e350c>]
> (put_device+0x1c/0x20) [  258.748243]  r4:da051c00
> [  258.750807] [<803e34f0>] (put_device) from [<804ff73c>]
> (v4l2_release+0x58/0x7c) [  258.758684] [<804ff6e4>] (v4l2_release) from
> [<800f1444>] (__fput+0x9c/0x220) [  258.766125]  r5:da15e190 r4:da3c8dc0
> [  258.769743] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  258.776915]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180
> r5:da3ee280 [  258.785114]  r4:da306564
> [  258.787687] [<800f1614>] (____fput) from [<8003d198>]
> (task_work_run+0xa0/0xe4) [  258.795532] [<8003d0f8>] (task_work_run) from
> [<80025cb8>] (do_exit+0x280/0x8d0) [  258.802936]  r7:da30c624 r6:da3c229c
> r5:da306574 r4:da3c2240
> [  258.808947] [<80025a38>] (do_exit) from [<8002722c>]
> (do_group_exit+0x44/0xb8) [  258.816648]  r7:da30c624
> [  258.819219] [<800271e8>] (do_group_exit) from [<80031510>]
> (get_signal+0x254/0x6c8) [  258.827360]  r7:da30c624 r6:d81f7ed4
> r5:00000009 r4:d81f6000
> [  258.833098] [<800312bc>] (get_signal) from [<80012190>]
> (do_signal+0x6c/0x3f4) [  258.840828]  r10:00000000 r9:d81f6000 r8:fffffe00
> r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4 [  258.848786]  r4:d81f7fb0
> [  258.851346] [<80012124>] (do_signal) from [<800126c4>]
> (do_work_pending+0xa8/0xe8) [  258.859609]  r10:00000000 r9:d81f6000
> r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000 [  258.867567]  r4:d81f6008
> [  258.870126] [<8001261c>] (do_work_pending) from [<8000f238>]
> (work_pending+0xc/0x20) [  258.878543]  r7:00000036 r6:756065a8 r5:0193d3f8
> r4:76b77b24
> [  258.884530] ---[ end trace cd2cc911d2f600ad ]---
> [  258.892863] ------------[ cut here ]------------
> [  258.898189] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220
> sysfs_remove_group+0xb4/0xb8() [  258.906811] sysfs group 80c8a764 not
> found for kobject 'input0' [  258.912736] Modules linked in: lock(O)
> usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio
> ath6kl_core [  258.923850] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G
>        W  O   3.17.0-rc6-20140925-1+ #10 [  258.933569] Backtrace:
> [  258.936097] [<80012ca4>] (dump_backtrace) from [<80012f94>]
> (show_stack+0x18/0x1c) [  258.943671]  r6:000000dc r5:00000009 r4:d81f7bb0
> r3:00000000
> [  258.949877] [<80012f7c>] (show_stack) from [<807872e4>]
> (dump_stack+0x24/0x28) [  258.957588] [<807872c0>] (dump_stack) from
> [<80025140>] (warn_slowpath_common+0x78/0x90) [  258.965957] [<800250c8>]
> (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40) [ 
> 258.974918]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a764 [ 
> 258.981703] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>]
> (sysfs_remove_group+0xb4/0xb8) [  258.990724]  r3:80c8a764 r2:8098e22c
> [  258.994444] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>]
> (sysfs_remove_groups+0x2c/0x3c) [  259.003147]  r6:80c8a590 r5:da00a220
> r4:80c8a624
> [  259.008319] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>]
> (device_remove_attrs+0x58/0x74) [  259.017585]  r5:da00a220 r4:da00a218
> [  259.021207] [<803e2fe4>] (device_remove_attrs) from [<803e372c>]
> (device_del+0x114/0x1b0) [  259.029860]  r7:da051020 r6:da00a220
> r5:da00a218 r4:dad9be5c
> [  259.035642] [<803e3618>] (device_del) from [<804e69d0>]
> (__input_unregister_device+0x134/0x150) [  259.044806]  r7:da00a1b4
> r6:da00a000 r5:00000007 r4:00000008
> [  259.050541] [<804e689c>] (__input_unregister_device) from [<804e7b50>]
> (input_unregister_device+0x50/0x78) [  259.060693]  r7:da051c00 r6:da009000
> r5:81506254 r4:da00a000
> [  259.066505] [<804e7b00>] (input_unregister_device) from [<8052eba8>]
> (uvc_status_cleanup+0x38/0x3c) [  259.076023]  r4:da009000 r3:00000000
> [  259.079642] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>]
> (uvc_delete+0x28/0x140) [  259.088106]  r4:da051c58 r3:00000000
> [  259.091722] [<80524e3c>] (uvc_delete) from [<80525098>]
> (uvc_release+0x40/0x44) [  259.099491]  r8:00000000 r7:da051c00 r6:da009428
> r5:81506254 r4:da051c58 r3:da00951c [  259.107368] [<80525058>]
> (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4) [ 
> 259.115928] [<8050093c>] (v4l2_device_release) from [<803e30f4>]
> (device_release+0x34/0x98) [  259.124546]  r8:da054070 r7:da026a40
> r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c [  259.132381] [<803e30c0>]
> (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8) [ 
> 259.140968]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.146747] [<80323f3c>] (kobject_cleanup) from [<80323e6c>]
> (kobject_put+0x50/0x7c) [  259.154978]  r7:da054070 r6:da562258 r5:00000000
> r4:da051c60
> [  259.160711] [<80323e1c>] (kobject_put) from [<803e350c>]
> (put_device+0x1c/0x20) [  259.168496]  r4:da051c00
> [  259.171060] [<803e34f0>] (put_device) from [<804ff73c>]
> (v4l2_release+0x58/0x7c) [  259.178935] [<804ff6e4>] (v4l2_release) from
> [<800f1444>] (__fput+0x9c/0x220) [  259.186343]  r5:da15e190 r4:da3c8dc0
> [  259.189959] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  259.197161]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180
> r5:da3ee280 [  259.205361]  r4:da306564
> [  259.207932] [<800f1614>] (____fput) from [<8003d198>]
> (task_work_run+0xa0/0xe4) [  259.215734] [<8003d0f8>] (task_work_run) from
> [<80025cb8>] (do_exit+0x280/0x8d0) [  259.223137]  r7:da30c624 r6:da3c229c
> r5:da306574 r4:da3c2240
> [  259.229130] [<80025a38>] (do_exit) from [<8002722c>]
> (do_group_exit+0x44/0xb8) [  259.236844]  r7:da30c624
> [  259.239410] [<800271e8>] (do_group_exit) from [<80031510>]
> (get_signal+0x254/0x6c8) [  259.247760]  r7:da30c624 r6:d81f7ed4
> r5:00000009 r4:d81f6000
> [  259.253505] [<800312bc>] (get_signal) from [<80012190>]
> (do_signal+0x6c/0x3f4) [  259.261226]  r10:00000000 r9:d81f6000 r8:fffffe00
> r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4 [  259.269215]  r4:d81f7fb0
> [  259.271773] [<80012124>] (do_signal) from [<800126c4>]
> (do_work_pending+0xa8/0xe8) [  259.280054]  r10:00000000 r9:d81f6000
> r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000 [  259.288010]  r4:d81f6008
> [  259.290568] [<8001261c>] (do_work_pending) from [<8000f238>]
> (work_pending+0xc/0x20) [  259.298977]  r7:00000036 r6:756065a8 r5:0193d3f8
> r4:76b77b24
> [  259.304748] ---[ end trace cd2cc911d2f600ae ]---
> [  259.313908] ------------[ cut here ]------------
> [  259.319437] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220
> sysfs_remove_group+0xb4/0xb8() [  259.328075] sysfs group 80c8a630 not
> found for kobject 'input0' [  259.334001] Modules linked in: lock(O)
> usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio
> ath6kl_core [  259.345180] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G
>        W  O   3.17.0-rc6-20140925-1+ #10 [  259.354876] Backtrace:
> [  259.357359] [<80012ca4>] (dump_backtrace) from [<80012f94>]
> (show_stack+0x18/0x1c) [  259.365406]  r6:000000dc r5:00000009 r4:d81f7bb0
> r3:00000000
> [  259.371147] [<80012f7c>] (show_stack) from [<807872e4>]
> (dump_stack+0x24/0x28) [  259.378856] [<807872c0>] (dump_stack) from
> [<80025140>] (warn_slowpath_common+0x78/0x90) [  259.387252] [<800250c8>]
> (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40) [ 
> 259.396262]  r8:00000000 r7:80c8a578 r6:da00a220 r5:00000000 r4:80c8a630 [ 
> 259.403049] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>]
> (sysfs_remove_group+0xb4/0xb8) [  259.412058]  r3:80c8a630 r2:8098e22c
> [  259.415748] [<8015ba98>] (sysfs_remove_group) from [<8015bc04>]
> (sysfs_remove_groups+0x2c/0x3c) [  259.424924]  r6:80c8a590 r5:da00a220
> r4:80c8a628
> [  259.429604] [<8015bbd8>] (sysfs_remove_groups) from [<803e303c>]
> (device_remove_attrs+0x58/0x74) [  259.438873]  r5:da00a220 r4:da00a218
> [  259.442494] [<803e2fe4>] (device_remove_attrs) from [<803e372c>]
> (device_del+0x114/0x1b0) [  259.451143]  r7:da051020 r6:da00a220
> r5:da00a218 r4:dad9be5c
> [  259.459353] [<803e3618>] (device_del) from [<804e69d0>]
> (__input_unregister_device+0x134/0x150) [  259.468788]  r7:da00a1b4
> r6:da00a000 r5:00000007 r4:00000008
> [  259.474673] [<804e689c>] (__input_unregister_device) from [<804e7b50>]
> (input_unregister_device+0x50/0x78) [  259.484912]  r7:da051c00 r6:da009000
> r5:81506254 r4:da00a000
> [  259.490656] [<804e7b00>] (input_unregister_device) from [<8052eba8>]
> (uvc_status_cleanup+0x38/0x3c) [  259.500189]  r4:da009000 r3:00000000
> [  259.503808] [<8052eb70>] (uvc_status_cleanup) from [<80524e64>]
> (uvc_delete+0x28/0x140) [  259.512287]  r4:da051c58 r3:00000000
> [  259.515948] [<80524e3c>] (uvc_delete) from [<80525098>]
> (uvc_release+0x40/0x44) [  259.523260]  r8:00000000 r7:da051c00 r6:da009428
> r5:81506254 r4:da051c58 r3:da00951c [  259.531558] [<80525058>]
> (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4) [ 
> 259.540130] [<8050093c>] (v4l2_device_release) from [<803e30f4>]
> (device_release+0x34/0x98) [  259.548753]  r8:da054070 r7:da026a40
> r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c [  259.556668] [<803e30c0>]
> (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8) [ 
> 259.565261]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.570995] [<80323f3c>] (kobject_cleanup) from [<80323e6c>]
> (kobject_put+0x50/0x7c) [  259.579214]  r7:da054070 r6:da562258 r5:00000000
> r4:da051c60
> [  259.584993] [<80323e1c>] (kobject_put) from [<803e350c>]
> (put_device+0x1c/0x20) [  259.592305]  r4:da051c00
> [  259.595383] [<803e34f0>] (put_device) from [<804ff73c>]
> (v4l2_release+0x58/0x7c) [  259.602793] [<804ff6e4>] (v4l2_release) from
> [<800f1444>] (__fput+0x9c/0x220) [  259.610614]  r5:da15e190 r4:da3c8dc0
> [  259.614503] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  259.621212]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180
> r5:da3ee280 [  259.629413]  r4:da306564
> [  259.631980] [<800f1614>] (____fput) from [<8003d198>]
> (task_work_run+0xa0/0xe4) [  259.639994] [<8003d0f8>] (task_work_run) from
> [<80025cb8>] (do_exit+0x280/0x8d0) [  259.647692]  r7:da30c624 r6:da3c229c
> r5:da306574 r4:da3c2240
> [  259.653422] [<80025a38>] (do_exit) from [<8002722c>]
> (do_group_exit+0x44/0xb8) [  259.661117]  r7:da30c624
> [  259.663688] [<800271e8>] (do_group_exit) from [<80031510>]
> (get_signal+0x254/0x6c8) [  259.671819]  r7:da30c624 r6:d81f7ed4
> r5:00000009 r4:d81f6000
> [  259.677600] [<800312bc>] (get_signal) from [<80012190>]
> (do_signal+0x6c/0x3f4) [  259.685289]  r10:00000000 r9:d81f6000 r8:fffffe00
> r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4 [  259.693197]  r4:d81f7fb0
> [  259.696049] [<80012124>] (do_signal) from [<800126c4>]
> (do_work_pending+0xa8/0xe8) [  259.703623]  r10:00000000 r9:d81f6000
> r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000 [  259.712000]  r4:d81f6008
> [  259.714816] [<8001261c>] (do_work_pending) from [<8000f238>]
> (work_pending+0xc/0x20) [  259.722563]  r7:00000036 r6:756065a8 r5:0193d3f8
> r4:76b77b24
> [  259.728745] ---[ end trace cd2cc911d2f600af ]---
> [  259.735876] deleting dev: da0090a8
> [  259.739317] in sysfs_remove_group: power
> [  259.743245] ------------[ cut here ]------------
> [  259.748707] WARNING: CPU: 0 PID: 280 at fs/sysfs/group.c:220
> sysfs_remove_group+0xb4/0xb8() [  259.757392] sysfs group 80c79200 not
> found for kobject 'media1' [  259.763319] Modules linked in: lock(O)
> usb_f_ecm g_ether usb_f_rndis u_ether libcomposite coda ath6kl_sdio
> ath6kl_core [  259.774565] CPU: 0 PID: 280 Comm: v4l2filter0:src Tainted: G
>        W  O   3.17.0-rc6-20140925-1+ #10 [  259.783788] Backtrace:
> [  259.786771] [<80012ca4>] (dump_backtrace) from [<80012f94>]
> (show_stack+0x18/0x1c) [  259.794880]  r6:000000dc r5:00000009 r4:d81f7bc8
> r3:00000000
> [  259.800622] [<80012f7c>] (show_stack) from [<807872e4>]
> (dump_stack+0x24/0x28) [  259.808395] [<807872c0>] (dump_stack) from
> [<80025140>] (warn_slowpath_common+0x78/0x90) [  259.816778] [<800250c8>]
> (warn_slowpath_common) from [<80025190>] (warn_slowpath_fmt+0x38/0x40) [ 
> 259.825750]  r8:00000000 r7:da051020 r6:da0090b0 r5:00000000 r4:80c79200 [ 
> 259.832537] [<8002515c>] (warn_slowpath_fmt) from [<8015bb4c>]
> (sysfs_remove_group+0xb4/0xb8) [  259.841570]  r3:80c79200 r2:8098e22c
> [  259.845245] [<8015ba98>] (sysfs_remove_group) from [<803ec5a4>]
> (dpm_sysfs_remove+0x54/0x58) [  259.853687]  r6:da0090a8 r5:da0090b0
> r4:80c79200
> [  259.858846] [<803ec550>] (dpm_sysfs_remove) from [<803e3664>]
> (device_del+0x4c/0x1b0) [  259.867159]  r6:da009098 r5:da0090a8 r4:da0090a8
> r3:da306200
> [  259.872893] [<803e3618>] (device_del) from [<803e37f4>]
> (device_unregister+0x2c/0x6c) [  259.881206]  r7:da051c00 r6:da009098
> r5:da00939c r4:da0090a8
> [  259.886987] [<803e37c8>] (device_unregister) from [<804fe768>]
> (media_devnode_unregister+0x58/0x5c) [  259.896543]  r4:da0090a0
> r3:600f0013
> [  259.900164] [<804fe710>] (media_devnode_unregister) from [<804fe330>]
> (media_device_unregister+0x50/0x54) [  259.910260]  r4:da00939c r3:00000001
> [  259.913881] [<804fe2e0>] (media_device_unregister) from [<80524f74>]
> (uvc_delete+0x138/0x140) [  259.922900]  r6:da009000 r5:81506254
> r4:da051c58 r3:00000001
> [  259.928674] [<80524e3c>] (uvc_delete) from [<80525098>]
> (uvc_release+0x40/0x44) [  259.936451]  r8:00000000 r7:da051c00 r6:da009428
> r5:81506254 r4:da051c58 r3:da00951c [  259.944539] [<80525058>]
> (uvc_release) from [<80500a0c>] (v4l2_device_release+0xd0/0xf4) [ 
> 259.952645] [<8050093c>] (v4l2_device_release) from [<803e30f4>]
> (device_release+0x34/0x98) [  259.961478]  r8:da054070 r7:da026a40
> r6:da021c00 r5:da051c58 r4:da051c60 r3:8050093c [  259.969371] [<803e30c0>]
> (device_release) from [<80323fd4>] (kobject_cleanup+0x98/0x1b8) [ 
> 259.977967]  r6:80c78848 r5:da051c60 r4:80cb61e8 r3:803e30c0
> [  259.983702] [<80323f3c>] (kobject_cleanup) from [<80323e6c>]
> (kobject_put+0x50/0x7c) [  259.991921]  r7:da054070 r6:da562258 r5:00000000
> r4:da051c60
> [  259.997738] [<80323e1c>] (kobject_put) from [<803e350c>]
> (put_device+0x1c/0x20) [  260.005531]  r4:da051c00
> [  260.008096] [<803e34f0>] (put_device) from [<804ff73c>]
> (v4l2_release+0x58/0x7c) [  260.015976] [<804ff6e4>] (v4l2_release) from
> [<800f1444>] (__fput+0x9c/0x220) [  260.023119]  r5:da15e190 r4:da3c8dc0
> [  260.027004] [<800f13a8>] (__fput) from [<800f1624>] (____fput+0x10/0x14)
> [  260.033709]  r10:da306200 r9:da30c620 r8:00418004 r7:da306200 r6:80cc2180
> r5:da3ee280 [  260.042078]  r4:da306564
> [  260.044936] [<800f1614>] (____fput) from [<8003d198>]
> (task_work_run+0xa0/0xe4) [  260.052257] [<8003d0f8>] (task_work_run) from
> [<80025cb8>] (do_exit+0x280/0x8d0) [  260.060365]  r7:da30c624 r6:da3c229c
> r5:da306574 r4:da3c2240
> [  260.066144] [<80025a38>] (do_exit) from [<8002722c>]
> (do_group_exit+0x44/0xb8) [  260.073369]  r7:da30c624
> [  260.076398] [<800271e8>] (do_group_exit) from [<80031510>]
> (get_signal+0x254/0x6c8) [  260.084059]  r7:da30c624 r6:d81f7ed4
> r5:00000009 r4:d81f6000
> [  260.090262] [<800312bc>] (get_signal) from [<80012190>]
> (do_signal+0x6c/0x3f4) [  260.097955]  r10:00000000 r9:d81f6000 r8:fffffe00
> r7:d81f7ec0 r6:76ca6de6 r5:76ca6de4 [  260.105910]  r4:d81f7fb0
> [  260.108469] [<80012124>] (do_signal) from [<800126c4>]
> (do_work_pending+0xa8/0xe8) [  260.116728]  r10:00000000 r9:d81f6000
> r8:8000f3a4 r7:d81f7fb0 r6:8000f3a4 r5:d81f6000 [  260.124899]  r4:d81f6008
> [  260.127463] [<8001261c>] (do_work_pending) from [<8000f238>]
> (work_pending+0xc/0x20) [  260.135694]  r7:00000036 r6:756065a8 r5:0193d3f8
> r4:76b77b24
> [  260.141419] ---[ end trace cd2cc911d2f600b0 ]---
> ---
>  drivers/media/usb/uvc/uvc_driver.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c
> b/drivers/media/usb/uvc/uvc_driver.c index f8135f4..b58e46a 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -1626,15 +1626,10 @@ static void uvc_delete(struct uvc_device *dev)
>  	usb_put_intf(dev->intf);
>  	usb_put_dev(dev->udev);
> 
> -	uvc_status_cleanup(dev);
>  	uvc_ctrl_cleanup_device(dev);
> 
>  	if (dev->vdev.dev)
>  		v4l2_device_unregister(&dev->vdev);
> -#ifdef CONFIG_MEDIA_CONTROLLER
> -	if (media_devnode_is_registered(&dev->mdev.devnode))
> -		media_device_unregister(&dev->mdev);
> -#endif
> 
>  	list_for_each_safe(p, n, &dev->chains) {
>  		struct uvc_video_chain *chain;
> @@ -1705,6 +1700,11 @@ static void uvc_unregister_video(struct uvc_device
> *dev) uvc_debugfs_cleanup_stream(stream);
>  	}
> 
> +	uvc_status_cleanup(dev);
> +#ifdef CONFIG_MEDIA_CONTROLLER
> +	if (media_devnode_is_registered(&dev->mdev.devnode))
> +		media_device_unregister(&dev->mdev);
> +#endif
>  	/* Decrement the stream count and call uvc_delete explicitly if there
>  	 * are no stream left.
>  	 */

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK*
  2014-10-31 10:41 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Laurent Pinchart
@ 2015-10-01 12:08   ` Yasushi SHOJI
  0 siblings, 0 replies; 4+ messages in thread
From: Yasushi SHOJI @ 2015-10-01 12:08 UTC (permalink / raw)
  To: linux-media

Hi,

Sorry to follow up on an old message, but:

On Fri, 31 Oct 2014 19:41:33 +0900,
Laurent Pinchart wrote:
> 
> On Thursday 02 October 2014 18:09:47 Michael Grzeschik wrote:
> > Currently the uvc_driver is not cleaning up its child devices if a
> > device is still in use. It leads to orphaned devices which are not
> > sitting on any interface. They get cleaned up on uvc_delete which will
> > be called on uvc_remove after the userspace application is closing the
> > stream. When PM_RUNTIME is used in the kernel, this leads to the
> > following backtrace for missing sysfs entries in the orphaned kobjects.
> > 
> > This patch is moving the device cleanup code for the child devices from
> > uvc_delete to uvc_unregister_video. It is an *HACK* workaround which
> > is ment to initiate the discussion for a proper solution.
> 
> Does https://patchwork.linuxtv.org/patch/26561/ help ? The usb_put_intf() and 
> usb_put_dev() calls could be moved to the end of the function to fix the 
> media_device_unregister() warning.

26561 does not seem to help, since I can reproduce the warning on 4.2.1

	4.2.0-1-amd64 #1 SMP Debian 4.2.1-2 (2015-09-27) x86_64 GNU/Linux

I haven't tried Michael's yet, but it seems, at least to me, that many
subsystem are having similar problem and proper fixes must be applied
per subsystem.  Is that the case right now?

ref:
  - https://bugzilla.redhat.com/show_bug.cgi?id=1174075
  - http://thread.gmane.org/gmane.linux.usb.general/119218/focus=85560
    - mention that this "is not new"
  - http://thread.gmane.org/gmane.linux.scsi/86237/focus=88328
-- 
             yashi



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-01 12:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-02 16:09 [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Michael Grzeschik
2014-10-07  9:24 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device Michael Grzeschik
2014-10-31 10:41 ` [RFC PATCH] media: uvc: *HACK* workaround uvc unregister device *HACK* Laurent Pinchart
2015-10-01 12:08   ` Yasushi SHOJI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.