firmware: change kernel read fail to dev_dbg()
PATCH 1/1 firmware: change kernel read fail to dev_dbg()
When we now use the new kernel_read_file_from_path() we are reporting a failure when we iterate over all the paths possible for firmware. Before using kernel_read_file_from_path() we only reported a failure once we confirmed a file existed with filp_open() but failed with fw_read_file_contents().
With kernel_read_file_from_path() both are done for us and we obviously are now reporting too much information given that some optional paths will always fail and clutter the logs.
fw_get_filesystem_firmware() already has a check for failure and uses an internal flag, FW_OPT_NO_WARN, to let users warn or not warn. For instance request_firmware_direct() does not warn as this can be used for optional firmware as it has no usermode helper fallback. In the future we may want to change this, given everyone is disabling the usermode helper anyway now, but for now keep reporting only as was designed. request_firmware_direct() will continue to not report errors as it was designed not to.
---
Note, this is a fix for a small issue reported by Heiner after Mimi's common kernel file loader changes were merged on James tree. I'm following up through James. If this should go through someone else's tree feel free to coordiante accordingly.
drivers/base/firmware_class.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/base/firmware_class.c +1 -1
@@ -328,7 +328,7 @@ static int fw_get_filesystem_firmware(struct device *device, rc =kernel_read_file_from_path (path, &buf->data, &size,INT_MAX ,READING_FIRMWARE );if (rc) { -dev_warn (device,"loading %s failed with error %d\n" , +dev_dbg (device,"loading %s failed with error %d\n" , path, rc);continue ; }
Signature · 1 line
2.7.0
Quoted 25 lines · Luis R. Rodriguez
When we now use the new
kernel_read_file_from_path()we are reporting a failure when we iterate over all the paths possible for firmware. Before usingkernel_read_file_from_path()we only reported a failure once we confirmed a file existed withfilp_open()but failed withfw_read_file_contents().With
kernel_read_file_from_path()both are done for us and we obviously are now reporting too much information given that some optional paths will always fail and clutter the logs.
fw_get_filesystem_firmware()already has a check for failure and uses an internal flag,FW_OPT_NO_WARN, to let users warn or not warn. For instancerequest_firmware_direct()does not warn as this can be used for optional firmware as it has no usermode helper fallback. In the future we may want to change this, given everyone is disabling the usermode helper anyway now, but for now keep reporting only as was designed.request_firmware_direct()will continue to not report errors as it was designed not to.Reported-by Heiner Kallweit <[email protected]>Cc Heiner Kallweit <[email protected]>Cc Mimi Zohar <[email protected]>Cc Kees Cook <[email protected]>Signed-off-by Luis R. Rodriguez <[email protected]>
Quoted 6 lines
---
Note, this is a fix for a small issue reported by Heiner after Mimi's common kernel file loader changes were merged on James tree. I'm following up through James. If this should go through someone else's tree feel free to coordiante accordingly.
I'll be replacing this shortly with a v2.
Luis
PATCH v2 1/1 firmware: change kernel read fail to dev_dbg()
In reply to Luis R. RodriguezWhen we now use the new kernel_read_file_from_path() we are reporting a failure when we iterate over all the paths possible for firmware. Before using kernel_read_file_from_path() we only reported a failure once we confirmed a file existed with filp_open() but failed with fw_read_file_contents().
With kernel_read_file_from_path() both are done for us and we obviously are now reporting too much information given that some optional paths will always fail and clutter the logs.
fw_get_filesystem_firmware() already has a check for failure and uses an internal flag, FW_OPT_NO_WARN, but this does not let us capture other unxpected errors. This enables that as changed by Neil via commit:
"firmware: Be a bit more verbose about direct firmware loading failure"
--- drivers/base/firmware_class.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/base/firmware_class.c +6 -2
@@ -328,8 +328,12 @@ static int fw_get_filesystem_firmware(struct device *device, rc =kernel_read_file_from_path (path, &buf->data, &size,INT_MAX ,READING_FIRMWARE );if (rc) { -dev_warn (device,"loading %s failed with error %d\n" , - path, rc); +if (rc == -ENOENT ) +dev_dbg (device,"loading %s failed with error %d\n" , + path, rc); +else +dev_warn (device,"loading %s failed with error %d\n" , + path, rc);continue ; }dev_dbg (device,"direct-loading %s\n" , buf->fw_id);
Signature · 1 line
2.7.0