Thread (4 messages) read the whole thread 4 messages, 2 authors, 2012-01-18

Re: [PATCH 2/2] Bluetooth: Remove wait for delayed work to finish

From: Ulisses Furquim <hidden>
Date: 2012-01-18 19:40:15

Hi Andre,

On Wed, Jan 18, 2012 at 5:34 PM, Andre Guedes
[off-list ref] wrote:
Hi Ulisses,

On Wed, Jan 18, 2012 at 9:48 AM, Ulisses Furquim [off-list ref] wrote:
quoted
Do not wait for delayed work to finish where it's not needed. In the
case of adv_work the handler is already protected by the hdev lock
and removing the wait we also avoid introducing deadlocks involving
the delayed work lock.

Signed-off-by: Ulisses Furquim <redacted>
---
 net/bluetooth/hci_core.c  |    2 +-
 net/bluetooth/hci_event.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index a7b7200..b4041be 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1731,7 +1731,7 @@ void hci_unregister_dev(struct hci_dev *hdev)
       hci_del_sysfs(hdev);

-       cancel_delayed_work_sync(&hdev->adv_work);
+       cancel_delayed_work(&hdev->adv_work);
I'm afraid we'll introduce a race condition if we don't use the
_sync variant at hci_unregister_dev.

If we don't wait adv_work finish it may be running after hdev
object is freed.
Indeed, you're right. And I was going through the uses of _sync() and
skipped those in paths where we free the object but didn't see this
one.

Regards,

-- 
Ulisses Furquim
ProFUSION embedded systems
http://profusion.mobi
Mobile: +55 19 9250 0942
Skype: ulissesffs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help