platform_system_core/adb
Josh Gao 7e197ef833 adb: fix deadlock between transport_unref and usb_close.
Fix a deadlock that happened when a reader/writer thread released a
transport while the hotplug thread attempted  to handle a device
disconnection. Decrementing a transport refcount to zero would hold the
global transport mutex and attempt to take the usb handles mutex, while
the hotplug thread would hold the usb handles mutex and try to call
unregister_usb_transport, which would attempt to take the global
transport mutex.

Resolve this by making transport_unref not take the global transport
mutex.

Bug: http://b/62423753
Test: python test_device.py
Change-Id: Ib48b80a2091a254527f3a7d945b6a11fae61f937
2017-06-07 18:54:09 -07:00
..
client adb: libusb: switch from polling for accessibility to a sleep. 2017-06-07 11:08:00 -07:00
daemon Merge "Adding 'uhid' permission for access to /dev/uhid." 2017-05-11 19:02:32 +00:00
sysdeps adb: don't try to resolve 'localhost' 2017-04-12 16:07:49 -07:00
.clang-format Remove extraneous .clang-format files 2017-03-14 14:06:31 -07:00
adb.cpp adb: reunregress waiting for device on start-server. 2017-05-31 12:13:59 -07:00
adb.h adb: wait for devices to come up instead of sleeping for 3s. 2017-05-04 16:03:12 -07:00
adb_auth.h adb: rationalize types. 2016-10-06 14:50:02 -07:00
adb_auth_host.cpp Stop writing NUL bytes in adbkey.pub. 2017-05-01 16:05:16 -07:00
adb_client.cpp adb: make adb kill-server wait for the server to die. 2017-05-09 14:31:15 -07:00
adb_client.h adb: make adb kill-server wait for the server to die. 2017-05-09 14:31:15 -07:00
adb_io.cpp adb: add sysdeps/chrono.h for chrono literals on Win32. 2016-11-16 12:14:59 -08:00
adb_io.h
adb_io_test.cpp adb: disable tests that are expected to fail on Win32. 2016-04-18 14:33:38 -07:00
adb_listeners.cpp adb: move all cleanup to a function with defined ordering. 2017-05-09 14:32:47 -07:00
adb_listeners.h adb: move all cleanup to a function with defined ordering. 2017-05-09 14:32:47 -07:00
adb_listeners_test.cpp adb: support forwarding TCP port 0. 2016-05-09 16:55:10 -07:00
adb_mdns.h Add mDNS device discovery for adb client 2017-03-07 14:45:51 -08:00
adb_trace.cpp adb: fix two device offline problems. 2017-04-20 10:14:59 -07:00
adb_trace.h adb: fix two device offline problems. 2017-04-20 10:14:59 -07:00
adb_unique_fd.h adb: extract the adb-specific unique_fd out into its own header. 2016-09-01 15:49:06 -07:00
adb_utils.cpp Fix various adb error reporting bugs. 2017-04-18 14:51:27 -07:00
adb_utils.h adb: don't hold queue lock while performing callbacks. 2017-06-05 14:54:45 -07:00
adb_utils_test.cpp adb: allow symlinks to directories in directory_exists. 2017-03-23 16:19:55 -07:00
adbd_auth.cpp adb: rationalize types. 2016-10-06 14:50:02 -07:00
Android.bp Create build target to pull adb test scripts. 2017-05-23 10:42:59 -07:00
Android.mk Create build target to pull adb test scripts. 2017-05-23 10:42:59 -07:00
bugreport.cpp Always print the initial bugreport progress message. 2017-05-23 16:58:16 -07:00
bugreport.h Don't display bugreport progress when it recedes, for real... 2017-05-02 10:08:39 -07:00
bugreport_test.cpp Always print the initial bugreport progress message. 2017-05-23 16:58:16 -07:00
commandline.cpp Add --sync support to push. 2017-05-19 11:09:58 -07:00
commandline.h Fix various adb error reporting bugs. 2017-04-18 14:51:27 -07:00
console.cpp adb: add helper to get the ~/.android directory. 2016-09-01 15:43:22 -07:00
CPPLINT.cfg
diagnose_usb.cpp Improve udev failure diagnostics. 2017-05-05 12:50:16 -07:00
diagnose_usb.h Share the new adb USB diagnostic code with fastboot. 2015-12-14 10:50:21 -08:00
fdevent.cpp adb: add fdevent_run_on_main_thread. 2017-05-04 16:03:12 -07:00
fdevent.h adb: add fdevent_run_on_main_thread. 2017-05-04 16:03:12 -07:00
fdevent_test.cpp adb: add fdevent_run_on_main_thread. 2017-05-04 16:03:12 -07:00
fdevent_test.h adb: add fdevent_run_on_main_thread. 2017-05-04 16:03:12 -07:00
file_sync_client.cpp Add --sync support to push. 2017-05-19 11:09:58 -07:00
file_sync_service.cpp Move adb_dirname and adb_basename to libbase 2017-02-27 18:18:31 -08:00
file_sync_service.h Add --sync support to push. 2017-05-19 11:09:58 -07:00
framebuffer_service.cpp
jdwp_service.cpp adb: switch the jdwp control socket to SOCK_SEQPACKET. 2017-03-20 13:37:13 -07:00
line_printer.cpp adb: add missing newline when printing transfer rate. 2016-08-04 14:56:53 -07:00
line_printer.h
MODULE_LICENSE_APACHE2
NOTICE adb: append the libwinpthread COPYING to adb's NOTICE. 2017-03-08 21:27:59 -08:00
OVERVIEW.TXT
protocol.txt Precise command constants on adb/protoxol.txt 2016-08-30 01:30:12 +02:00
remount_service.cpp adb: replacing fs_mgr_read_fstab() with fs_mgr_read_fstab_default() 2017-03-11 09:37:56 +08:00
remount_service.h
security_log_tags.h ADB security logging 2016-01-21 15:57:02 +00:00
services.cpp Merge "adb: fix two device offline problems." 2017-04-20 19:45:18 +00:00
services.h
SERVICES.TXT
set_verity_enable_state_service.cpp adb: Allow disabling verity on eng builds when using AVB. 2017-05-17 14:28:47 -04:00
shell_service.cpp adb: kill adb_thread_{create, join, detach, exit}. 2017-04-12 17:12:32 -07:00
shell_service.h
shell_service_protocol.cpp
shell_service_protocol_test.cpp adb: fix undefined behavior 2016-10-19 19:39:44 -07:00
shell_service_test.cpp adb: fix subprocess termination for legacy shell. 2016-01-27 17:13:41 -08:00
socket.h Address const issues in preparation for libcxx rebase. 2016-03-29 17:17:51 +00:00
socket_spec.cpp adb: parse tcp socket specs with base::ParseNetAddress. 2016-09-20 13:55:43 -07:00
socket_spec.h adb: parse tcp socket specs with base::ParseNetAddress. 2016-09-20 13:55:43 -07:00
socket_spec_test.cpp adb: parse tcp socket specs with base::ParseNetAddress. 2016-09-20 13:55:43 -07:00
socket_test.cpp adb: kill adb_thread_{create, join, detach, exit}. 2017-04-12 17:12:32 -07:00
sockets.cpp Merge "adb: fix two device offline problems." 2017-04-20 19:45:18 +00:00
sockets.dia
SYNC.TXT
sysdeps.h adb: kill adb_thread_{create, join, detach, exit}. 2017-04-12 17:12:32 -07:00
sysdeps_test.cpp adb: enable -Wthread-safety on linux/darwin. 2017-05-03 14:28:21 -07:00
sysdeps_unix.cpp adb: use TCP keepalive. 2016-03-03 15:42:11 -08:00
sysdeps_win32.cpp Revert "adb: check our socketpair ends in our win32 emulation." 2017-03-30 13:12:37 -07:00
sysdeps_win32_test.cpp adb: add script to trace adbd. 2016-12-13 14:31:17 -08:00
test_adb.py libcutils: try all addresses in socket_network_client_timeout. 2016-09-01 15:56:58 -07:00
test_device.py Add --sync support to push. 2017-05-19 11:09:58 -07:00
trace.sh adb: add script to trace adbd. 2016-12-13 14:31:17 -08:00
transport.cpp adb: fix deadlock between transport_unref and usb_close. 2017-06-07 18:54:09 -07:00
transport.h adb: fix deadlock between transport_unref and usb_close. 2017-06-07 18:54:09 -07:00
transport_local.cpp adb: boolify check_header and check_data. 2017-05-18 13:40:13 -07:00
transport_mdns.cpp adb: initialize mDNS asynchronously. 2017-05-04 16:03:12 -07:00
transport_mdns_unsupported.cpp Don't include mDNS support on platforms other than Linux 2017-03-07 14:45:52 -08:00
transport_test.cpp adb: fix two device offline problems. 2017-04-20 10:14:59 -07:00
transport_usb.cpp adb: boolify check_header and check_data. 2017-05-18 13:40:13 -07:00
usb.h adb: move all cleanup to a function with defined ordering. 2017-05-09 14:32:47 -07:00