public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
@ 2016-02-27 16:49 Heiner Kallweit
  2016-02-27 23:15 ` Luis R. Rodriguez
  0 siblings, 1 reply; 9+ messages in thread
From: Heiner Kallweit @ 2016-02-27 16:49 UTC (permalink / raw)
  To: Mimi Zohar; +Cc: Kees Cook, Luis R. Rodriguez, linux-kernel

Since this commit my system log is spammed with firmware load errors. One example:

loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
-> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds

Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
Only if all attempts failed an error message was printed.
Now for each single failed attempt an error message is printed what doesn't make sense.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-27 16:49 log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version] Heiner Kallweit
@ 2016-02-27 23:15 ` Luis R. Rodriguez
  2016-02-28  0:19   ` Mimi Zohar
  2016-02-28  2:27   ` Kees Cook
  0 siblings, 2 replies; 9+ messages in thread
From: Luis R. Rodriguez @ 2016-02-27 23:15 UTC (permalink / raw)
  To: Heiner Kallweit, James Morris, Ming Lei, Greg Kroah-Hartman
  Cc: Mimi Zohar, Kees Cook, Luis R. Rodriguez, linux-kernel

On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
> Since this commit my system log is spammed with firmware load errors. One example:
> 
> loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
> loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
> 
> Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
> Only if all attempts failed an error message was printed.
> Now for each single failed attempt an error message is printed what doesn't make sense.

To be clear, this is an issue on linux-next, due to the latest merge
of Mimi's common kernel file loader pulled recently by James.

Heiner, thanks for the report, this patch fixes that. I'll be submitting that
now.  James, should this go through your tree? Please note I've been meaning to
add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
summit as I've been helping with cleanup there but I hadn't done so as I had
some pending patches with a full new functionality added. With Mimi's changes
merged on linux-next though and the common kernel file loader now done I can
follow up with my series of changes after this.

  Luis

>From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
Date: Sat, 27 Feb 2016 14:58:08 -0800
Subject: [PATCH] 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.

Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 drivers/base/firmware_class.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 1cff832ab74e..b1cf4d61ffc9 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -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;
 		}
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-27 23:15 ` Luis R. Rodriguez
@ 2016-02-28  0:19   ` Mimi Zohar
  2016-02-28  2:27   ` Kees Cook
  1 sibling, 0 replies; 9+ messages in thread
From: Mimi Zohar @ 2016-02-28  0:19 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Heiner Kallweit, James Morris, Ming Lei, Greg Kroah-Hartman,
	Kees Cook, linux-kernel

On Sun, 2016-02-28 at 00:15 +0100, Luis R. Rodriguez wrote:
> On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
> > Since this commit my system log is spammed with firmware load errors. One example:
> > 
> > loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> > loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
> > loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> > -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
> > 
> > Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
> > Only if all attempts failed an error message was printed.
> > Now for each single failed attempt an error message is printed what doesn't make sense.
> 
> To be clear, this is an issue on linux-next, due to the latest merge
> of Mimi's common kernel file loader pulled recently by James.

It looks like commit "3e358ac firmware: Be a bit more verbose about
direct firmware loading failure", made the change.  Then commit ed04630
"firmware: simplify dev_*() print messages for generic helper" modified
the message.

Mimi

> Heiner, thanks for the report, this patch fixes that. I'll be submitting that
> now.  James, should this go through your tree? Please note I've been meaning to
> add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
> summit as I've been helping with cleanup there but I hadn't done so as I had
> some pending patches with a full new functionality added. With Mimi's changes
> merged on linux-next though and the common kernel file loader now done I can
> follow up with my series of changes after this.
> 
>   Luis
> 
> From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> Date: Sat, 27 Feb 2016 14:58:08 -0800
> Subject: [PATCH] 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.
> 
> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
>  drivers/base/firmware_class.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> index 1cff832ab74e..b1cf4d61ffc9 100644
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -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;
>  		}

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-27 23:15 ` Luis R. Rodriguez
  2016-02-28  0:19   ` Mimi Zohar
@ 2016-02-28  2:27   ` Kees Cook
  2016-02-28 14:10     ` Ming Lei
  1 sibling, 1 reply; 9+ messages in thread
From: Kees Cook @ 2016-02-28  2:27 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Heiner Kallweit, James Morris, Ming Lei, Greg Kroah-Hartman,
	Mimi Zohar, LKML

On Sat, Feb 27, 2016 at 3:15 PM, Luis R. Rodriguez <mcgrof@kernel.org> wrote:
> On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
>> Since this commit my system log is spammed with firmware load errors. One example:
>>
>> loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>> loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
>> loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>> -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
>>
>> Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
>> Only if all attempts failed an error message was printed.
>> Now for each single failed attempt an error message is printed what doesn't make sense.
>
> To be clear, this is an issue on linux-next, due to the latest merge
> of Mimi's common kernel file loader pulled recently by James.
>
> Heiner, thanks for the report, this patch fixes that. I'll be submitting that
> now.  James, should this go through your tree? Please note I've been meaning to
> add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
> summit as I've been helping with cleanup there but I hadn't done so as I had
> some pending patches with a full new functionality added. With Mimi's changes
> merged on linux-next though and the common kernel file loader now done I can
> follow up with my series of changes after this.
>
>   Luis
>
> From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> Date: Sat, 27 Feb 2016 14:58:08 -0800
> Subject: [PATCH] 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.
>
> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
>  drivers/base/firmware_class.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> index 1cff832ab74e..b1cf4d61ffc9 100644
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -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;
>                 }
> --
> 2.7.0
>

I think this should warn on non-ENOENT errors and dbg on ENOENT. What
do others think?

-Kees

-- 
Kees Cook
Chrome OS & Brillo Security

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-28  2:27   ` Kees Cook
@ 2016-02-28 14:10     ` Ming Lei
  2016-02-28 20:57       ` Luis R. Rodriguez
  0 siblings, 1 reply; 9+ messages in thread
From: Ming Lei @ 2016-02-28 14:10 UTC (permalink / raw)
  To: Kees Cook
  Cc: Luis R. Rodriguez, Heiner Kallweit, James Morris,
	Greg Kroah-Hartman, Mimi Zohar, LKML

On Sun, Feb 28, 2016 at 10:27 AM, Kees Cook <keescook@chromium.org> wrote:
> On Sat, Feb 27, 2016 at 3:15 PM, Luis R. Rodriguez <mcgrof@kernel.org> wrote:
>> On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
>>> Since this commit my system log is spammed with firmware load errors. One example:
>>>
>>> loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>>> loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
>>> loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>>> -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
>>>
>>> Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
>>> Only if all attempts failed an error message was printed.
>>> Now for each single failed attempt an error message is printed what doesn't make sense.
>>
>> To be clear, this is an issue on linux-next, due to the latest merge
>> of Mimi's common kernel file loader pulled recently by James.
>>
>> Heiner, thanks for the report, this patch fixes that. I'll be submitting that
>> now.  James, should this go through your tree? Please note I've been meaning to
>> add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
>> summit as I've been helping with cleanup there but I hadn't done so as I had
>> some pending patches with a full new functionality added. With Mimi's changes
>> merged on linux-next though and the common kernel file loader now done I can
>> follow up with my series of changes after this.
>>
>>   Luis
>>
>> From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
>> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
>> Date: Sat, 27 Feb 2016 14:58:08 -0800
>> Subject: [PATCH] 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.
>>
>> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
>> Cc: Heiner Kallweit <hkallweit1@gmail.com>
>> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
>> Cc: Kees Cook <keescook@chromium.org>
>> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
>> ---
>>  drivers/base/firmware_class.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
>> index 1cff832ab74e..b1cf4d61ffc9 100644
>> --- a/drivers/base/firmware_class.c
>> +++ b/drivers/base/firmware_class.c
>> @@ -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;
>>                 }
>> --
>> 2.7.0
>>
>
> I think this should warn on non-ENOENT errors and dbg on ENOENT. What
> do others think?

Agree, that looks better.

Thanks,

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-28 14:10     ` Ming Lei
@ 2016-02-28 20:57       ` Luis R. Rodriguez
  2016-02-28 23:25         ` Kees Cook
                           ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Luis R. Rodriguez @ 2016-02-28 20:57 UTC (permalink / raw)
  To: Ming Lei
  Cc: Kees Cook, Luis R. Rodriguez, Heiner Kallweit, James Morris,
	Greg Kroah-Hartman, Mimi Zohar, LKML

On Sun, Feb 28, 2016 at 10:10:57PM +0800, Ming Lei wrote:
> On Sun, Feb 28, 2016 at 10:27 AM, Kees Cook <keescook@chromium.org> wrote:
> > On Sat, Feb 27, 2016 at 3:15 PM, Luis R. Rodriguez <mcgrof@kernel.org> wrote:
> >> On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
> >>> Since this commit my system log is spammed with firmware load errors. One example:
> >>>
> >>> loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> >>> loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
> >>> loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
> >>> -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
> >>>
> >>> Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
> >>> Only if all attempts failed an error message was printed.
> >>> Now for each single failed attempt an error message is printed what doesn't make sense.
> >>
> >> To be clear, this is an issue on linux-next, due to the latest merge
> >> of Mimi's common kernel file loader pulled recently by James.
> >>
> >> Heiner, thanks for the report, this patch fixes that. I'll be submitting that
> >> now.  James, should this go through your tree? Please note I've been meaning to
> >> add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
> >> summit as I've been helping with cleanup there but I hadn't done so as I had
> >> some pending patches with a full new functionality added. With Mimi's changes
> >> merged on linux-next though and the common kernel file loader now done I can
> >> follow up with my series of changes after this.
> >>
> >>   Luis
> >>
> >> From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
> >> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> >> Date: Sat, 27 Feb 2016 14:58:08 -0800
> >> Subject: [PATCH] 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.
> >>
> >> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> >> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> >> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
> >> Cc: Kees Cook <keescook@chromium.org>
> >> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> >> ---
> >>  drivers/base/firmware_class.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> >> index 1cff832ab74e..b1cf4d61ffc9 100644
> >> --- a/drivers/base/firmware_class.c
> >> +++ b/drivers/base/firmware_class.c
> >> @@ -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;
> >>                 }
> >> --
> >> 2.7.0
> >>
> >
> > I think this should warn on non-ENOENT errors and dbg on ENOENT. What
> > do others think?
> 
> Agree, that looks better.

OK then this:

>From e63d19975787c0e237a47c17efd01e41b2a8e2fa Mon Sep 17 00:00:00 2001
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
Date: Sat, 27 Feb 2016 14:58:08 -0800
Subject: [PATCH] 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, 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"

Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 drivers/base/firmware_class.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 1cff832ab74e..9503a88b189b 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -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);
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-28 20:57       ` Luis R. Rodriguez
@ 2016-02-28 23:25         ` Kees Cook
  2016-02-29  1:07         ` Ming Lei
  2016-02-29  7:41         ` James Morris
  2 siblings, 0 replies; 9+ messages in thread
From: Kees Cook @ 2016-02-28 23:25 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Ming Lei, Luis R. Rodriguez, Heiner Kallweit, James Morris,
	Greg Kroah-Hartman, Mimi Zohar, LKML

On Sun, Feb 28, 2016 at 12:57 PM, Luis R. Rodriguez <mcgrof@suse.com> wrote:
> On Sun, Feb 28, 2016 at 10:10:57PM +0800, Ming Lei wrote:
>> On Sun, Feb 28, 2016 at 10:27 AM, Kees Cook <keescook@chromium.org> wrote:
>> > On Sat, Feb 27, 2016 at 3:15 PM, Luis R. Rodriguez <mcgrof@kernel.org> wrote:
>> >> On Sat, Feb 27, 2016 at 05:49:38PM +0100, Heiner Kallweit wrote:
>> >>> Since this commit my system log is spammed with firmware load errors. One example:
>> >>>
>> >>> loading /lib/firmware/updates/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>> >>> loading /lib/firmware/updates/iwlwifi-3160-16.ucode failed with error -2
>> >>> loading /lib/firmware/4.5.0-rc5-next-20160226/iwlwifi-3160-16.ucode failed with error -2
>> >>> -> finally load attempt from /lib/firmware/iwlwifi-3160-16.ucode succeeds
>> >>>
>> >>> Before this commit, when a load from one path in fw_path failed, silently the next path was tried.
>> >>> Only if all attempts failed an error message was printed.
>> >>> Now for each single failed attempt an error message is printed what doesn't make sense.
>> >>
>> >> To be clear, this is an issue on linux-next, due to the latest merge
>> >> of Mimi's common kernel file loader pulled recently by James.
>> >>
>> >> Heiner, thanks for the report, this patch fixes that. I'll be submitting that
>> >> now.  James, should this go through your tree? Please note I've been meaning to
>> >> add myself to MAINTAINERS for FIRMWARE_CLASS as requested by Greg at kernel
>> >> summit as I've been helping with cleanup there but I hadn't done so as I had
>> >> some pending patches with a full new functionality added. With Mimi's changes
>> >> merged on linux-next though and the common kernel file loader now done I can
>> >> follow up with my series of changes after this.
>> >>
>> >>   Luis
>> >>
>> >> From 92e2bd76bf1abb3ce381b8d54ba5486a295af1a9 Mon Sep 17 00:00:00 2001
>> >> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
>> >> Date: Sat, 27 Feb 2016 14:58:08 -0800
>> >> Subject: [PATCH] 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.
>> >>
>> >> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
>> >> Cc: Heiner Kallweit <hkallweit1@gmail.com>
>> >> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
>> >> Cc: Kees Cook <keescook@chromium.org>
>> >> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
>> >> ---
>> >>  drivers/base/firmware_class.c | 2 +-
>> >>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
>> >> index 1cff832ab74e..b1cf4d61ffc9 100644
>> >> --- a/drivers/base/firmware_class.c
>> >> +++ b/drivers/base/firmware_class.c
>> >> @@ -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;
>> >>                 }
>> >> --
>> >> 2.7.0
>> >>
>> >
>> > I think this should warn on non-ENOENT errors and dbg on ENOENT. What
>> > do others think?
>>
>> Agree, that looks better.
>
> OK then this:
>
> From e63d19975787c0e237a47c17efd01e41b2a8e2fa Mon Sep 17 00:00:00 2001
> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> Date: Sat, 27 Feb 2016 14:58:08 -0800
> Subject: [PATCH] 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, 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"
>
> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Neil Horman <nhorman@tuxdriver.com>
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>

Perfect, thanks!

Acked-by: Kees Cook <keescook@chromium.org>

-Kees

> ---
>  drivers/base/firmware_class.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> index 1cff832ab74e..9503a88b189b 100644
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -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);
> --
> 2.7.0
>



-- 
Kees Cook
Chrome OS & Brillo Security

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-28 20:57       ` Luis R. Rodriguez
  2016-02-28 23:25         ` Kees Cook
@ 2016-02-29  1:07         ` Ming Lei
  2016-02-29  7:41         ` James Morris
  2 siblings, 0 replies; 9+ messages in thread
From: Ming Lei @ 2016-02-29  1:07 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Kees Cook, Luis R. Rodriguez, Heiner Kallweit, James Morris,
	Greg Kroah-Hartman, Mimi Zohar, LKML

On Mon, Feb 29, 2016 at 4:57 AM, Luis R. Rodriguez <mcgrof@suse.com> wrote:
> On Sun, Feb 28, 2016 at 10:10:57PM +0800, Ming Lei wrote:


>
> OK then this:
>
> From e63d19975787c0e237a47c17efd01e41b2a8e2fa Mon Sep 17 00:00:00 2001
> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> Date: Sat, 27 Feb 2016 14:58:08 -0800
> Subject: [PATCH] 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, 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"
>
> Reported-by: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Neil Horman <nhorman@tuxdriver.com>
> Cc: Heiner Kallweit <hkallweit1@gmail.com>
> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> ---
>  drivers/base/firmware_class.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
> index 1cff832ab74e..9503a88b189b 100644
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -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);

Acked-by: Ming Lei <ming.lei@canonical.com>

Thanks,

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version]
  2016-02-28 20:57       ` Luis R. Rodriguez
  2016-02-28 23:25         ` Kees Cook
  2016-02-29  1:07         ` Ming Lei
@ 2016-02-29  7:41         ` James Morris
  2 siblings, 0 replies; 9+ messages in thread
From: James Morris @ 2016-02-29  7:41 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Ming Lei, Kees Cook, Luis R. Rodriguez, Heiner Kallweit,
	Greg Kroah-Hartman, Mimi Zohar, LKML

On Sun, 28 Feb 2016, Luis R. Rodriguez wrote:

> >From e63d19975787c0e237a47c17efd01e41b2a8e2fa Mon Sep 17 00:00:00 2001
> From: "Luis R. Rodriguez" <mcgrof@kernel.org>
> Date: Sat, 27 Feb 2016 14:58:08 -0800
> Subject: [PATCH] firmware: change kernel read fail to dev_dbg()
> 

Applied to
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git next



-- 
James Morris
<jmorris@namei.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-02-29  7:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-27 16:49 log spammed with "loading xx failed with error -2" since commit e40ba6d56b [replace call to fw_read_file_contents() with kernel version] Heiner Kallweit
2016-02-27 23:15 ` Luis R. Rodriguez
2016-02-28  0:19   ` Mimi Zohar
2016-02-28  2:27   ` Kees Cook
2016-02-28 14:10     ` Ming Lei
2016-02-28 20:57       ` Luis R. Rodriguez
2016-02-28 23:25         ` Kees Cook
2016-02-29  1:07         ` Ming Lei
2016-02-29  7:41         ` James Morris

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox