Message ID | 20231121-feature_firmware_error_code-v2-1-f879a7734a4e@bootlin.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v2] firmware_loader: Expand Firmware upload error codes with firmware invalid error | expand |
On Tue, 21 Nov 2023 11:50:35 +0100 Kory Maincent wrote: > No error code are available to signal an invalid firmware content. > Drivers that can check the firmware content validity can not return this > specific failure to the user-space > > Expand the firmware error code with an additional code: > - "firmware invalid" code which can be used when the provided firmware > is invalid Any idea what this is? lib/test_firmware.o: warning: objtool: test_fw_upload_prepare() falls through to next function __cfi_test_fw_upload_cancel() My build shows this on an incremental clang 17 build.
Hello Jakub, On Tue, 21 Nov 2023 17:30:22 -0800 Jakub Kicinski <kuba@kernel.org> wrote: > On Tue, 21 Nov 2023 11:50:35 +0100 Kory Maincent wrote: > > No error code are available to signal an invalid firmware content. > > Drivers that can check the firmware content validity can not return this > > specific failure to the user-space > > > > Expand the firmware error code with an additional code: > > - "firmware invalid" code which can be used when the provided firmware > > is invalid > > Any idea what this is? > > lib/test_firmware.o: warning: objtool: test_fw_upload_prepare() falls through > to next function __cfi_test_fw_upload_cancel() > > My build shows this on an incremental clang 17 build. Thanks for the report. It seems I have to update fw_upload_err_str accordingly. Didn't know about this test_firmware.c file. Regards,
On Tue, 21 Nov 2023 17:30:22 -0800 Jakub Kicinski <kuba@kernel.org> wrote: > On Tue, 21 Nov 2023 11:50:35 +0100 Kory Maincent wrote: > > No error code are available to signal an invalid firmware content. > > Drivers that can check the firmware content validity can not return this > > specific failure to the user-space > > > > Expand the firmware error code with an additional code: > > - "firmware invalid" code which can be used when the provided firmware > > is invalid > > Any idea what this is? > > lib/test_firmware.o: warning: objtool: test_fw_upload_prepare() falls through > to next function __cfi_test_fw_upload_cancel() > > My build shows this on an incremental clang 17 build. For my curiosity, how do you get this error? Enabling test_firmware and building with W=1 does not show the error. Regards,
On Wed, Nov 22, 2023 at 11:43:25AM +0100, Köry Maincent wrote: > On Tue, 21 Nov 2023 17:30:22 -0800 > Jakub Kicinski <kuba@kernel.org> wrote: > > > On Tue, 21 Nov 2023 11:50:35 +0100 Kory Maincent wrote: > > > No error code are available to signal an invalid firmware content. > > > Drivers that can check the firmware content validity can not return this > > > specific failure to the user-space > > > > > > Expand the firmware error code with an additional code: > > > - "firmware invalid" code which can be used when the provided firmware > > > is invalid > > > > Any idea what this is? > > > > lib/test_firmware.o: warning: objtool: test_fw_upload_prepare() falls through > > to next function __cfi_test_fw_upload_cancel() > > > > My build shows this on an incremental clang 17 build. > > For my curiosity, how do you get this error? > > Enabling test_firmware and building with W=1 does not show the error. Hi Kory, I am able to observe this warning when compiling with clang-16 make LLVM=1 lib/test_firmware.o ...
diff --git a/drivers/base/firmware_loader/sysfs_upload.c b/drivers/base/firmware_loader/sysfs_upload.c index a0af8f5f13d8..829270067d16 100644 --- a/drivers/base/firmware_loader/sysfs_upload.c +++ b/drivers/base/firmware_loader/sysfs_upload.c @@ -27,6 +27,7 @@ static const char * const fw_upload_err_str[] = { [FW_UPLOAD_ERR_INVALID_SIZE] = "invalid-file-size", [FW_UPLOAD_ERR_RW_ERROR] = "read-write-error", [FW_UPLOAD_ERR_WEAROUT] = "flash-wearout", + [FW_UPLOAD_ERR_FW_INVALID] = "firmware-invalid", }; static const char *fw_upload_progress(struct device *dev, diff --git a/include/linux/firmware.h b/include/linux/firmware.h index de7fea3bca51..0311858b46ce 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h @@ -27,6 +27,7 @@ struct firmware { * @FW_UPLOAD_ERR_INVALID_SIZE: invalid firmware image size * @FW_UPLOAD_ERR_RW_ERROR: read or write to HW failed, see kernel log * @FW_UPLOAD_ERR_WEAROUT: FLASH device is approaching wear-out, wait & retry + * @FW_UPLOAD_ERR_FW_INVALID: invalid firmware file * @FW_UPLOAD_ERR_MAX: Maximum error code marker */ enum fw_upload_err { @@ -38,6 +39,7 @@ enum fw_upload_err { FW_UPLOAD_ERR_INVALID_SIZE, FW_UPLOAD_ERR_RW_ERROR, FW_UPLOAD_ERR_WEAROUT, + FW_UPLOAD_ERR_FW_INVALID, FW_UPLOAD_ERR_MAX };