diff options
| author | Enji Cooper <ngie@FreeBSD.org> | 2026-10-07 18:22:00 +0000 |
|---|---|---|
| committer | Enji Cooper <ngie@FreeBSD.org> | 2026-10-07 18:22:12 +0000 |
| commit | ef947bb97302d8862545cd0a5f38b24fa1bae2f6 (patch) | |
| tree | 6f6dd3b3b960f80c60b0fdb652970384193e5b55 /doc/pdf | |
| parent | 26eb328b52c3ec0ff79c8914b1993dfad03a0a7d (diff) | |
Prior to this change, in the event that a firmware module could not be
loaded, the linux_firmware driver would return a partially initialized
structure with uninitialized/zeroed out values for certain fields. Linux
does not do this, however, so some drivers that use
`request_firmware_nowait` expecting Linux behavior, like `if_bcrmfmac`,
would crash trying to dereference a NULL pointer.
This doesn't address the load/unload situation completely as the driver
remains loaded after the "firmware crashes", but it makes a completely
unusable situation (a kernel panic) into a slightly more usable situation
(driver does not unload).
As a sidenote: the raw free(9) call was replaced with a call to
`linuxkpi_release_firmware` because the latter call [better] ensures
that all resources allocated earlier on in the function are cleaned up.
MFC after: 1 weeks
Reviewed by: bz
Differential Revision: https://reviews.freebsd.org/D58451
Diffstat (limited to 'doc/pdf')
0 files changed, 0 insertions, 0 deletions
