firmware_loader: fix soundness issue in `request_internal`
authorDanilo Krummrich <dakr@redhat.com>
Mon, 8 Jul 2024 20:07:21 +0000 (22:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Jul 2024 07:35:09 +0000 (09:35 +0200)
commita23b018c3bf646274f02edd46bf448c20c826d94
tree21624acc0d86941a19ca26eb057a4ba4739fd10d
parent2c61b8c51d21d1b10c2881aa9c9918ff49f6fb7d
firmware_loader: fix soundness issue in `request_internal`

`request_internal` must be called with one of the following function
pointers: request_firmware(), firmware_request_nowarn(),
firmware_request_platform() or request_firmware_direct().

The previous `FwFunc` alias did not guarantee this, which is unsound.

In order to fix this up, implement `FwFunc` as new type with a
corresponding type invariant.

Reported-by: Gary Guo <gary@garyguo.net>
Closes: https://lore.kernel.org/lkml/20240620143611.7995e0bb@eugeo/
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Christian Schrefl <chrisi.schrefl@gmail.com>
Link: https://lore.kernel.org/r/20240708200724.3203-2-dakr@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
rust/kernel/firmware.rs