Page MenuHomeFreeBSD

if_bnxt: avoid FTQM/STQM pg_info alias on reset
AcceptedPublic

Authored by sumit.saxena_broadcom.com on Mon, Aug 3, 1:04 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Aug 26, 5:28 PM
Unknown Object (File)
Wed, Aug 26, 2:02 PM
Unknown Object (File)
Wed, Aug 26, 7:17 AM
Unknown Object (File)
Tue, Aug 25, 4:39 PM
Unknown Object (File)
Tue, Aug 25, 1:59 AM
Unknown Object (File)
Mon, Aug 24, 8:11 PM
Unknown Object (File)
Mon, Aug 24, 4:57 PM
Unknown Object (File)
Sun, Aug 23, 5:09 AM
Subscribers
None

Details

Summary

Copying the STQM backing-store context to seed FTQM's also copied
STQM's pg_info pointer verbatim. On cold load STQM's pg_info is still
NULL so this is harmless, but on a firmware reset STQM's pg_info is
already non-NULL, making FTQM alias STQM's backing-store pages. The
allocator then skips FTQM since it looks already allocated, and FTQM
is later indexed as its own array, reading out of bounds into STQM's
buffer and dereferencing a bogus DMA address.

Clear ctxm->pg_info after the memcpy so FTQM always gets its own
backing store.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped