Андрей Коновалов от компания Google разработва нов модул , емулира USB устройства в потребителското пространство. В момента е в процес на разглеждане за включването на този модул в основния състав на ядрото на Linux. USB Raw Gadget вече в компания Google, за да опрости fuzzing тестването на USB стека на ядрото с помощта на инструменти .
Модулът добавя нов програмния интерфейс в подсистемата на ядрото и се развива като алтернатива на GadgetFS. Създаването на нов API е продиктувано от необходимостта да се получи нискоуровнев достъп и директен достъп до подсистемата USB Gadget от потребителското пространство, позволяващо обработката на всички възможни USB заявки (GadgetFS самостоятелно обработва някои заявки, без да ги предава на потребителското пространство). Управлението на USB Raw Gadget става чрез устройството /dev/raw-gadget аналогично на /dev/gadget в GadgetFS, но за взаимодействие се използва интерфейс на базата на ioctl(), а не псевдо-ФС.
Освен директната обработка на всички USB заявки от процеса в потребителското пространство, новият интерфейс също така се отличава със способността да връща произволни данни в отговор на USB заявка (GadgetFS извършва проверка на валидността на USB дескрипторите и филтрира определени отговори, което пречи на откритията на грешки при fuzzing тестването на USB стека). Raw Gadget също дава възможност за избор на конкретно устройство UDC (USB Device Controller) и драйвер за свързване, докато GadgetFS се свързва с първото налично устройство UDC. За различни UDC се назначават предсказуеми имена за разделяне на различни типове канали за обмен на данни в рамките на едно устройство.
Източник: opennet.ru
