DF-5185
intel_guc_ads_create() indexes GUC_MAX_ENGINES_NUM-sized ADS arrays with sparse engine->guc_id (hw_id) values β out-of-bounds array writes on ICL (VCS3_HW=6) that stay contained inside the packed blob but corrupt GuC-visible ADS fields
Summary
guc_id comes from the sparse hw_id table (VCS3_HW=6, VECS2_HW=12) but the arrays are sized 5 - on ICL (has_guc=1 inherited) the BSD3 iteration writes white_list[6]/eng_state_size[6] past the arrays into reg_state_buffer/reserved padding (in-blob, first page). No kernel-memory corruption or leak (blob never read back); wrong GuC data only. Requires ICL + root params. Assert/skip guard fix.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-5185 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| verdict.json | file | 1.1 KB | view raw |
Fix verification
not_testablebaseline noβ patch + rebuild βpatched clean
per-fix-DF-5185
Confirmed kernel references
Detail
Evidence (decisive lines)
static proof: sparse hw_id table (i915_reg.h:190-197) vs GUC_MAX_ENGINES_NUM=5 arrays (intel_guc_fwif.h:40)
Verified recommended fix
GEM_BUG_ON(engine->guc_id >= GUC_MAX_ENGINES_NUM) before array writes
Verdict
untested (requires ICL GPU + root i915.alpha_support + guc_firmware_path; no guest hw)
No comments yet.