Commit 6b2bde08 authored by Reilly Grant's avatar Reilly Grant Committed by Commit Bot

[usb] Mark calls to SetupDiGetDeviceProperty as potentially blocking

According to hang reports this function performs an RPC call which may
take some time to complete. Mark calls with a base::ScopedBlockingCall
so that the thread pool knows this task may be busy for a while.

Bug: 637404
Change-Id: Ibf15e9b6d7ca59453a40c1282622e9a2b0f11460
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2209387
Auto-Submit: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Ovidio de Jesús Ruiz-Henríquez <odejesush@chromium.org>
Reviewed-by: default avatarOvidio de Jesús Ruiz-Henríquez <odejesush@chromium.org>
Cr-Commit-Position: refs/heads/master@{#770376}
parent 99ec9037
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/threading/scoped_blocking_call.h"
#include "base/threading/scoped_thread_priority.h" #include "base/threading/scoped_thread_priority.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "base/win/registry.h" #include "base/win/registry.h"
...@@ -42,6 +43,10 @@ namespace { ...@@ -42,6 +43,10 @@ namespace {
base::Optional<uint32_t> GetDeviceUint32Property(HDEVINFO dev_info, base::Optional<uint32_t> GetDeviceUint32Property(HDEVINFO dev_info,
SP_DEVINFO_DATA* dev_info_data, SP_DEVINFO_DATA* dev_info_data,
const DEVPROPKEY& property) { const DEVPROPKEY& property) {
// SetupDiGetDeviceProperty() makes an RPC which may block.
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
DEVPROPTYPE property_type; DEVPROPTYPE property_type;
uint32_t buffer; uint32_t buffer;
if (!SetupDiGetDeviceProperty( if (!SetupDiGetDeviceProperty(
...@@ -58,6 +63,10 @@ base::Optional<base::string16> GetDeviceStringProperty( ...@@ -58,6 +63,10 @@ base::Optional<base::string16> GetDeviceStringProperty(
HDEVINFO dev_info, HDEVINFO dev_info,
SP_DEVINFO_DATA* dev_info_data, SP_DEVINFO_DATA* dev_info_data,
const DEVPROPKEY& property) { const DEVPROPKEY& property) {
// SetupDiGetDeviceProperty() makes an RPC which may block.
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
DEVPROPTYPE property_type; DEVPROPTYPE property_type;
DWORD required_size; DWORD required_size;
if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property, if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property,
...@@ -82,6 +91,10 @@ base::Optional<std::vector<base::string16>> GetDeviceStringListProperty( ...@@ -82,6 +91,10 @@ base::Optional<std::vector<base::string16>> GetDeviceStringListProperty(
HDEVINFO dev_info, HDEVINFO dev_info,
SP_DEVINFO_DATA* dev_info_data, SP_DEVINFO_DATA* dev_info_data,
const DEVPROPKEY& property) { const DEVPROPKEY& property) {
// SetupDiGetDeviceProperty() makes an RPC which may block.
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
DEVPROPTYPE property_type; DEVPROPTYPE property_type;
DWORD required_size; DWORD required_size;
if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property, if (SetupDiGetDeviceProperty(dev_info, dev_info_data, &property,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment