В ядре Chrome OS обнаружили смешной баг, отключающий USB-устройства

Один из разработчиков ядра Linux Сара Шарп из компании Intel посыпает голову пеплом: за восемь лет работы над стеком Linux USB они неоднократно сталкивались с ситуацией, когда USB-устройство внезапно отключалось после выхода из режима ожидания при включенной функции auto-suspend. Все это время проблему списывали на китайских производителей дешевых флэшек, мышек и клавиатур.

В ядре Chrome OS обнаружили смешной баг, отключающий USB-устройства

В ядре Chrome OS обнаружили смешной баг, отключающий USB-устройства

Обсуждалась даже идея внедрить «черный список» моделей таких устройств прямо в ядро, чтобы для них не активировался режим энергосбережения. От идеи отказались только когда стало ясно, что список будет слишком большим: так много было USB-устройств, которые вели себя некорректно.

Сейчас выяснилось, что сбои не всегда были аппаратными.

В коде хост-контроллера Intel xHCI (drivers/usb/core/hub.c) есть строчка с лаконичным комментарием "TRSMRCY = 10 msec". В соответствии с пунктом 7.1.7.7 спецификаций USB 2.0, система USB System Software должна обеспечить время в 10 миллисекунд для восстановления работы устройства, в течение которых не отправлять на него никаких запросов. В ядро Linux просто вставили таймаут 10 мс. Но специалисты по аппаратному обеспечению сейчас обратили внимание разработчиков ядра Linux, что в таблице 7-14 спецификаций USB 2.0 указано, что таймаут должен быть минимум 10 миллисекунд, а не максимум. Это означает, что устройство может восстанавливаться дольше, чем сейчас установлено в строке TRSMRCY в Linux USB. В таких случаях при попытке обратиться к нему может возникнуть ошибка передачи данных — тогда операционная система считает устройство отключенным.

Тесты показали, что выход устройства из спящего режима никогда не занимает больше 17 мс, но в 8% случаев превышают 10 мс. Для исправления бага достаточно увеличить значение таймаута с 10 до 20 мс, после чего все USB-устройства начнут нормально работать. Сара Шарп уже подготовила патч.

Разработчики говорят, что больше всего от бага страдают пользователи ChromeOS, потому что эта система очень агрессивно использует режим энергосбережения для USB, активируя auto-suspend для всех внутренних USB-устройств, включая WiFi и Bluetooth.

 

1 star2 star3 star4 star5 star (ОЦЕНИТЬ!)
Загрузка...
Безопасность и баги
Комментировать!

Вам понравится

Google анонсировал активацию блокировщика рекламы в Chrome... Компания Google официально объявила о включении 15 февраля встроенного в Chrome блокировщика рекламы. Встроенный блокировщик нацелен на борьбу с рекламными блоками, мешающими воспр...
С июля браузер Chrome начнёт помечать сайты с протоколом HTTP, как небезопасные... Ещё в прошлом году браузер Google Chrome стал помечать сайты, использующие протокол HTTP, как незащищённые. Сейчас сообщается, что ПО уже с июля, когда выйдет версия Chrome 68, ста...
Google удалила 89 вредоносных расширений нового типа из магазина Chrome... Недобросовестные разработчики расширений используют новый способ кражи конфиденциальной информации жертв. Исследователи из Trend Micro назвали новое семейство вредоносных расширени...
В четырёх популярных дополнениях к Chrome выявлен вредоносный код... Исследователи из компании ICEBRG выявили четыре дополнения к Google Chrome, в которых присутствовали вредоносные вставки, позволяющие выполнять в браузере произвольный код, загружа...
Google опубликовала список уязвимых хромбуков Google опубликовала список хромбуков с уязвимостью Meltdown. Напомним, в начале года разработчики Google Project Zero сообщили о критической уязвимости центральных процессоров Inte...
Google будет блокировать некачественную рекламу в Chrome с 15 февраля 2018 года... Браузер Google Chrome начнет блокировать недобросовестную рекламу с 15 февраля 2018 года. Об этом пишет Venture Beat. Google будет бороться с рекламой, которая мешает пользователям...