[drivers][usb] Bound host interface setup and cleanup - #11822
manyangshen wants to merge 2 commits into
Conversation
Reject full configuration descriptors with more interfaces than the instance can hold. Clean up using the fixed interface-array capacity so an attach failure cannot leave detach trusting an oversized device-supplied count. Fixes RT-Thread#11288
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-09-22 18:48 CST)
📝 Review Instructions
|
9392162 to
e1a5447
Compare
拉取/合并请求描述:(PR description)
The legacy USB host uses bNumInterfaces to index a fixed interface array. Reject counts above USB_MAX_INTERFACE after reading the full configuration descriptor. Detach must also stay within the array because it can run after a failed attach with an invalid descriptor.
Fixes #11288.
Validation
GCC 16.1 host tests compile the complete host core and class-driver manager with an emulated HCD. They pass valid counts of 0, 1 and 8; invalid counts of 9 and 255; differing header/full-descriptor counts; and partial setup followed by detach. The original code fails. Checks include class callbacks, allocation cleanup and adjacent device state.
Changed-line clang-format and git diff --check pass. No target BSP, QEMU or physical USB enumeration test was run. Other descriptor-length checks are outside this change.
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up