Untag and stop watch on network sockets before closing them.

This patch untags the network sockets tagged with qtaguid_tagSocket()
before closing them, releasing the socket from the qtaguid kernel
module. Without this patch, the socket won't be actually closed.

This patch also removes the socket watch right before closing it, which
forces the epoll to stop watching. Closing the file descriptor would
also stop the watch if no other copy of the socket is kept open.
Explicitly stoping the watch is safer.

Bug: 36264049
Test: Ran update_engine under strace; the /proc/net/xt_qtaguid/ctrl
is called and the socket object destroyed and removed from the epoll.

Change-Id: I75c8befe8929e8e60c9534e0e4072f63b2fab1f4
2 files changed
tree: c64964d8a24b9598909868d50de8b9228487a1a5
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. init/
  6. payload_consumer/
  7. payload_generator/
  8. sample_images/
  9. scripts/
  10. update_manager/
  11. update_payload_key/
  12. weaved/
  13. .gitignore
  14. Android.mk
  15. binder_service_android.cc
  16. binder_service_android.h
  17. binder_service_brillo.cc
  18. binder_service_brillo.h
  19. boot_control_android.cc
  20. boot_control_android.h
  21. boot_control_chromeos.cc
  22. boot_control_chromeos.h
  23. boot_control_chromeos_unittest.cc
  24. boot_control_recovery.cc
  25. boot_control_recovery.h
  26. boot_control_recovery_stub.cc
  27. certificate_checker.cc
  28. certificate_checker.h
  29. certificate_checker_unittest.cc
  30. chrome_browser_proxy_resolver.cc
  31. chrome_browser_proxy_resolver.h
  32. chrome_browser_proxy_resolver_unittest.cc
  33. common_service.cc
  34. common_service.h
  35. common_service_unittest.cc
  36. connection_manager.cc
  37. connection_manager.h
  38. connection_manager_android.cc
  39. connection_manager_android.h
  40. connection_manager_interface.h
  41. connection_manager_unittest.cc
  42. connection_utils.cc
  43. connection_utils.h
  44. daemon.cc
  45. daemon.h
  46. daemon_state_android.cc
  47. daemon_state_android.h
  48. daemon_state_interface.h
  49. dbus_connection.cc
  50. dbus_connection.h
  51. dbus_service.cc
  52. dbus_service.h
  53. dbus_test_utils.h
  54. fake_file_writer.h
  55. fake_p2p_manager.h
  56. fake_p2p_manager_configuration.h
  57. fake_shill_proxy.cc
  58. fake_shill_proxy.h
  59. fake_system_state.cc
  60. fake_system_state.h
  61. generate_pc_file.sh
  62. hardware_android.cc
  63. hardware_android.h
  64. hardware_chromeos.cc
  65. hardware_chromeos.h
  66. hardware_chromeos_unittest.cc
  67. image_properties.h
  68. image_properties_android.cc
  69. image_properties_chromeos.cc
  70. image_properties_chromeos_unittest.cc
  71. libcros_proxy.cc
  72. libcros_proxy.h
  73. libcurl_http_fetcher.cc
  74. libcurl_http_fetcher.h
  75. libupdate_engine-client-test.pc.in
  76. libupdate_engine-client.pc.in
  77. local_coverage_rate
  78. main.cc
  79. metrics.cc
  80. metrics.h
  81. metrics_utils.cc
  82. metrics_utils.h
  83. metrics_utils_unittest.cc
  84. mock_certificate_checker.h
  85. mock_connection_manager.h
  86. mock_file_writer.h
  87. mock_omaha_request_params.h
  88. mock_p2p_manager.h
  89. mock_payload_state.h
  90. mock_power_manager.h
  91. mock_proxy_resolver.h
  92. mock_update_attempter.h
  93. MODULE_LICENSE_APACHE2
  94. network_selector.h
  95. network_selector_android.cc
  96. network_selector_android.h
  97. network_selector_interface.h
  98. network_selector_stub.cc
  99. network_selector_stub.h
  100. NOTICE
  101. omaha_request_action.cc
  102. omaha_request_action.h
  103. omaha_request_action_unittest.cc
  104. omaha_request_params.cc
  105. omaha_request_params.h
  106. omaha_request_params_unittest.cc
  107. omaha_response.h
  108. omaha_response_handler_action.cc
  109. omaha_response_handler_action.h
  110. omaha_response_handler_action_unittest.cc
  111. omaha_utils.cc
  112. omaha_utils.h
  113. omaha_utils_unittest.cc
  114. OWNERS
  115. p2p_manager.cc
  116. p2p_manager.h
  117. p2p_manager_unittest.cc
  118. parcelable_update_engine_status.cc
  119. parcelable_update_engine_status.h
  120. payload_state.cc
  121. payload_state.h
  122. payload_state_interface.h
  123. payload_state_unittest.cc
  124. power_manager_android.cc
  125. power_manager_android.h
  126. power_manager_chromeos.cc
  127. power_manager_chromeos.h
  128. power_manager_interface.h
  129. PRESUBMIT.cfg
  130. PREUPLOAD.cfg
  131. proxy_resolver.cc
  132. proxy_resolver.h
  133. proxy_resolver_unittest.cc
  134. real_system_state.cc
  135. real_system_state.h
  136. run_unittests
  137. sample_omaha_v3_response.xml
  138. service_delegate_android_interface.h
  139. service_observer_interface.h
  140. shill_proxy.cc
  141. shill_proxy.h
  142. shill_proxy_interface.h
  143. sideload_main.cc
  144. system_state.h
  145. tar_bunzip2.gypi
  146. test_http_server.cc
  147. test_subprocess.cc
  148. testrunner.cc
  149. unittest_key.pem
  150. unittest_key2.pem
  151. update_attempter.cc
  152. update_attempter.h
  153. update_attempter_android.cc
  154. update_attempter_android.h
  155. update_attempter_unittest.cc
  156. update_engine-client.gyp
  157. update_engine.conf
  158. update_engine.gyp
  159. update_engine.rc
  160. update_engine_client.cc
  161. update_engine_client_android.cc
  162. update_metadata.proto
  163. update_status_utils.cc
  164. update_status_utils.h
  165. UpdateEngine.conf
  166. utils_android.cc
  167. utils_android.h
  168. WATCHLISTS
  169. weave_service.cc
  170. weave_service.h
  171. weave_service_factory.cc
  172. weave_service_factory.h
  173. weave_service_interface.h