LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] driver-core: Log the BUG() causing driver
@ 2018-03-07 9:49 Florian Schmaus
2018-03-07 15:13 ` Greg Kroah-Hartman
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
0 siblings, 2 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-03-07 9:49 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Florian Schmaus
I triggerd the BUG_ON(), which was added in
f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my case).
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
drivers/base/driver.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..55f8db41df2b 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
+ drv->name);
+ BUG();
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.13.6
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH] driver-core: Log the BUG() causing driver
2018-03-07 9:49 [PATCH] driver-core: Log the BUG() causing driver Florian Schmaus
@ 2018-03-07 15:13 ` Greg Kroah-Hartman
2018-03-07 15:36 ` Florian Schmaus
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
1 sibling, 1 reply; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-03-07 15:13 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, Mar 07, 2018 at 10:49:02AM +0100, Florian Schmaus wrote:
> I triggerd the BUG_ON(), which was added in
> f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
> domain.
How?
> Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my case).
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
> drivers/base/driver.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index ba912558a510..55f8db41df2b 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
> int ret;
> struct device_driver *other;
>
> - BUG_ON(!drv->bus->p);
> + if (!drv->bus->p) {
> + printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
> + drv->name);
> + BUG();
> + }
We could just log the error and return with an error, that would be
nicer, right? Crashing the system isn't usually a good idea, even at
boot time :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH] driver-core: Log the BUG() causing driver
2018-03-07 15:13 ` Greg Kroah-Hartman
@ 2018-03-07 15:36 ` Florian Schmaus
0 siblings, 0 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-03-07 15:36 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 1971 bytes --]
On 07.03.2018 16:13, Greg Kroah-Hartman wrote:
> On Wed, Mar 07, 2018 at 10:49:02AM +0100, Florian Schmaus wrote:
>> I triggerd the BUG_ON(), which was added in
>> f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
>> domain.
>
> How?
Basically just by booting the domU kernel with the wmi-bmof driver
compiled in. After I deselected the wmi-bmof driver, the kernel booted
just fine.
I'd probably be able to re-create the faulty kernel and show you the
image and/or kernel config if you want.
>> Since there was no contextual information logged, I needed to
>> attach kgdb to determine the culprit (the wmi-bmof driver in my case).
>>
>> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
>> ---
>> drivers/base/driver.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
>> index ba912558a510..55f8db41df2b 100644
>> --- a/drivers/base/driver.c
>> +++ b/drivers/base/driver.c
>> @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
>> int ret;
>> struct device_driver *other;
>>
>> - BUG_ON(!drv->bus->p);
>> + if (!drv->bus->p) {
>> + printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
>> + drv->name);
>> + BUG();
>> + }
>
> We could just log the error and return with an error, that would be
> nicer, right? Crashing the system isn't usually a good idea, even at
> boot time :)
It sure is, and I did consider it. I just wasn't sure which return value
to use in that case. Probably the best solution would be to use the
return value of bus_register(), which caused p to become NULL. Although
that possibly requires extending the bus_type struct by an 'int' storing
the return value (Or could the return value be mangled into the 'p'
pointer?).
I'd be happy to hear your thoughts on this.
BTW: Should I retain the 'unlikely' semantic of BUG_ON() in this case?
- Florian
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 642 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON()
2018-03-07 9:49 [PATCH] driver-core: Log the BUG() causing driver Florian Schmaus
2018-03-07 15:13 ` Greg Kroah-Hartman
@ 2018-05-04 13:23 ` Florian Schmaus
2018-05-04 17:37 ` Greg Kroah-Hartman
` (5 more replies)
1 sibling, 6 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-04 13:23 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Florian Schmaus
I triggerd the BUG_ON() in driver_register(), which was added in
f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my case).
Instead of running into a BUG_ON() we print an error message
identifying the driver but continue booting.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
drivers/base/driver.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..63baec586eba 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
+ drv->name);
+ return -EBUSY;
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON()
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
@ 2018-05-04 17:37 ` Greg Kroah-Hartman
2018-05-04 17:38 ` Greg Kroah-Hartman
` (4 subsequent siblings)
5 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-04 17:37 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Fri, May 04, 2018 at 03:23:57PM +0200, Florian Schmaus wrote:
> I triggerd the BUG_ON() in driver_register(), which was added in
> f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
> domain. Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my case).
>
> Instead of running into a BUG_ON() we print an error message
> identifying the driver but continue booting.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
> drivers/base/driver.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
What changed from v1? Always put that below the --- line.
Also, it's best to quote commits with the following format:
f48f3febb2cb ("driver-core: do not register a driver with bus_type not registered")
v3?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON()
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
2018-05-04 17:37 ` Greg Kroah-Hartman
@ 2018-05-04 17:38 ` Greg Kroah-Hartman
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
` (3 subsequent siblings)
5 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-04 17:38 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Fri, May 04, 2018 at 03:23:57PM +0200, Florian Schmaus wrote:
> I triggerd the BUG_ON() in driver_register(), which was added in
> f48f3febb2cbfd0f2ecee7690835ba745c1034a4, when booting a domU Xen
> domain. Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my case).
>
> Instead of running into a BUG_ON() we print an error message
> identifying the driver but continue booting.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
> drivers/base/driver.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index ba912558a510..63baec586eba 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
> int ret;
> struct device_driver *other;
>
> - BUG_ON(!drv->bus->p);
> + if (!drv->bus->p) {
> + printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
> + drv->name);
> + return -EBUSY;
> + }
In looking at this code, that's a real bug somewhere in the logic of the
bus subsystem. BUG_ON() is a pretty big hammer, I agree, but your error
message should be a lot more descriptive, and the error value should not
be BUSY, as something went wrong, it's not just a "come back later" type
of thing.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v3 0/3] return EINVAL error instead of BUG_ON()
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
2018-05-04 17:37 ` Greg Kroah-Hartman
2018-05-04 17:38 ` Greg Kroah-Hartman
@ 2018-05-15 13:51 ` Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
` (3 more replies)
2018-05-15 13:51 ` [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
` (2 subsequent siblings)
5 siblings, 4 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-15 13:51 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
This patch series makes driver_register() emit an error message and
return a failure code instead of triggering a BUG_ON()
I tried to make the error message more descriptive compared to v2 by
including the error of the failed bus registration in [3/3]. I'd be
happy to include some more context if you have further suggestions.
Florian Schmaus (3):
driver-core: return EINVAL error instead of BUG_ON()
driver-core: record error on bus registration
driver-core: print bus registration error value
drivers/base/bus.c | 2 ++
drivers/base/driver.c | 7 ++++++-
include/linux/device.h | 1 +
3 files changed, 9 insertions(+), 1 deletion(-)
--
2.16.1
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
` (2 preceding siblings ...)
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
@ 2018-05-15 13:51 ` Florian Schmaus
2018-05-15 15:10 ` Greg Kroah-Hartman
2018-05-15 13:51 ` [PATCH v3 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
5 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-15 13:51 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
I triggerd the BUG_ON() in driver_register() when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my
case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
not register a driver with bus_type not registered").
Instead of running into a BUG_ON() we print an error message
identifying the, likely faulty, driver but continue booting.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- return EINVAL (instead of EBUSY)
- follow common pattern when quoting commits in commit messages
drivers/base/driver.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..afd5b08b7677 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
+ drv->name);
+ return -EINVAL;
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v3 2/3] driver-core: record error on bus registration
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
` (3 preceding siblings ...)
2018-05-15 13:51 ` [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-15 13:51 ` Florian Schmaus
2018-05-16 8:50 ` kbuild test robot
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
5 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-15 13:51 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If bus_register() fails on a driver then record the error code so that
it can be inspected later on.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
drivers/base/bus.c | 2 ++
include/linux/device.h | 1 +
2 files changed, 3 insertions(+)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index ef6183306b40..dce677dddba4 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -152,6 +152,7 @@ static void bus_release(struct kobject *kobj)
kfree(priv);
bus->p = NULL;
+ bus->bus_register_error = 0;
}
static struct kobj_type bus_ktype = {
@@ -915,6 +916,7 @@ int bus_register(struct bus_type *bus)
out:
kfree(bus->p);
bus->p = NULL;
+ bus->bus_register_error = retval;
return retval;
}
EXPORT_SYMBOL_GPL(bus_register);
diff --git a/include/linux/device.h b/include/linux/device.h
index 0059b99e1f25..5b1f3c08bebe 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -135,6 +135,7 @@ struct bus_type {
const struct iommu_ops *iommu_ops;
struct subsys_private *p;
+ int bus_register_error;
struct lock_class_key lock_key;
bool force_dma;
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v3 3/3] driver-core: print bus registration error value
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
` (4 preceding siblings ...)
2018-05-15 13:51 ` [PATCH v3 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-15 13:51 ` Florian Schmaus
2018-05-15 15:12 ` Greg Kroah-Hartman
` (2 more replies)
5 siblings, 3 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-15 13:51 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
drivers/base/driver.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index afd5b08b7677..c68d35139c0f 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -149,8 +149,9 @@ int driver_register(struct device_driver *drv)
struct device_driver *other;
if (!drv->bus->p) {
- printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
- drv->name);
+ printk(KERN_ERR "Driver '%s' was unable to register bus_type "
+ "(error: %d)\n",
+ drv->name, drv->bus->bus_register_retval);
return -EINVAL;
}
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-15 13:51 ` [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-15 15:10 ` Greg Kroah-Hartman
2018-05-15 15:13 ` Greg Kroah-Hartman
0 siblings, 1 reply; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-15 15:10 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Tue, May 15, 2018 at 03:51:12PM +0200, Florian Schmaus wrote:
> I triggerd the BUG_ON() in driver_register() when booting a domU Xen
> domain. Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my
> case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
> not register a driver with bus_type not registered").
>
> Instead of running into a BUG_ON() we print an error message
> identifying the, likely faulty, driver but continue booting.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
>
> Notes:
> - return EINVAL (instead of EBUSY)
> - follow common pattern when quoting commits in commit messages
>
> drivers/base/driver.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index ba912558a510..afd5b08b7677 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
> int ret;
> struct device_driver *other;
>
> - BUG_ON(!drv->bus->p);
> + if (!drv->bus->p) {
> + printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
> + drv->name);
checkpatch.pl should have said to use pr_err(), right? :)
Also, why not print out the driver name as well?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v3 3/3] driver-core: print bus registration error value
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
@ 2018-05-15 15:12 ` Greg Kroah-Hartman
2018-05-16 8:24 ` kbuild test robot
2018-05-16 8:35 ` kbuild test robot
2 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-15 15:12 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Tue, May 15, 2018 at 03:51:14PM +0200, Florian Schmaus wrote:
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
> drivers/base/driver.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index afd5b08b7677..c68d35139c0f 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -149,8 +149,9 @@ int driver_register(struct device_driver *drv)
> struct device_driver *other;
>
> if (!drv->bus->p) {
> - printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
> - drv->name);
> + printk(KERN_ERR "Driver '%s' was unable to register bus_type "
> + "(error: %d)\n",
> + drv->name, drv->bus->bus_register_retval);
I don't understand, if a bus was never registered, this is going to fail
in lots of odd ways, including the value being 0, so that would show "no
error"? Is this really needed?
A better message would be something like:
"Driver '%s" was unable to register with bus_type '%s' because it was not initialized."
right?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-15 15:10 ` Greg Kroah-Hartman
@ 2018-05-15 15:13 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-15 15:13 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Tue, May 15, 2018 at 05:10:35PM +0200, Greg Kroah-Hartman wrote:
> On Tue, May 15, 2018 at 03:51:12PM +0200, Florian Schmaus wrote:
> > I triggerd the BUG_ON() in driver_register() when booting a domU Xen
> > domain. Since there was no contextual information logged, I needed to
> > attach kgdb to determine the culprit (the wmi-bmof driver in my
> > case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
> > not register a driver with bus_type not registered").
> >
> > Instead of running into a BUG_ON() we print an error message
> > identifying the, likely faulty, driver but continue booting.
> >
> > Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> > ---
> >
> > Notes:
> > - return EINVAL (instead of EBUSY)
> > - follow common pattern when quoting commits in commit messages
> >
> > drivers/base/driver.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> > index ba912558a510..afd5b08b7677 100644
> > --- a/drivers/base/driver.c
> > +++ b/drivers/base/driver.c
> > @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
> > int ret;
> > struct device_driver *other;
> >
> > - BUG_ON(!drv->bus->p);
> > + if (!drv->bus->p) {
> > + printk(KERN_ERR "Driver '%s' was unable to register bus_type\n",
> > + drv->name);
>
> checkpatch.pl should have said to use pr_err(), right? :)
>
> Also, why not print out the driver name as well?
Sorry, I meant the bus name.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v3 3/3] driver-core: print bus registration error value
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-15 15:12 ` Greg Kroah-Hartman
@ 2018-05-16 8:24 ` kbuild test robot
2018-05-16 8:35 ` kbuild test robot
2 siblings, 0 replies; 39+ messages in thread
From: kbuild test robot @ 2018-05-16 8:24 UTC (permalink / raw)
To: Florian Schmaus
Cc: kbuild-all, Greg Kroah-Hartman, Florian Schmaus, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2629 bytes --]
Hi Florian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on driver-core/driver-core-testing]
[also build test ERROR on v4.17-rc5 next-20180515]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Schmaus/return-EINVAL-error-instead-of-BUG_ON/20180516-141149
config: i386-tinyconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
drivers/base/driver.c: In function 'driver_register':
>> drivers/base/driver.c:154:28: error: 'struct bus_type' has no member named 'bus_register_retval'; did you mean 'bus_register_error'?
drv->name, drv->bus->bus_register_retval);
^~~~~~~~~~~~~~~~~~~
bus_register_error
vim +154 drivers/base/driver.c
137
138 /**
139 * driver_register - register driver with bus
140 * @drv: driver to register
141 *
142 * We pass off most of the work to the bus_add_driver() call,
143 * since most of the things we have to do deal with the bus
144 * structures.
145 */
146 int driver_register(struct device_driver *drv)
147 {
148 int ret;
149 struct device_driver *other;
150
151 if (!drv->bus->p) {
152 printk(KERN_ERR "Driver '%s' was unable to register bus_type "
153 "(error: %d)\n",
> 154 drv->name, drv->bus->bus_register_retval);
155 return -EINVAL;
156 }
157
158 if ((drv->bus->probe && drv->probe) ||
159 (drv->bus->remove && drv->remove) ||
160 (drv->bus->shutdown && drv->shutdown))
161 printk(KERN_WARNING "Driver '%s' needs updating - please use "
162 "bus_type methods\n", drv->name);
163
164 other = driver_find(drv->name, drv->bus);
165 if (other) {
166 printk(KERN_ERR "Error: Driver '%s' is already registered, "
167 "aborting...\n", drv->name);
168 return -EBUSY;
169 }
170
171 ret = bus_add_driver(drv);
172 if (ret)
173 return ret;
174 ret = driver_add_groups(drv, drv->groups);
175 if (ret) {
176 bus_remove_driver(drv);
177 return ret;
178 }
179 kobject_uevent(&drv->p->kobj, KOBJ_ADD);
180
181 return ret;
182 }
183 EXPORT_SYMBOL_GPL(driver_register);
184
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6309 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v3 3/3] driver-core: print bus registration error value
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-15 15:12 ` Greg Kroah-Hartman
2018-05-16 8:24 ` kbuild test robot
@ 2018-05-16 8:35 ` kbuild test robot
2 siblings, 0 replies; 39+ messages in thread
From: kbuild test robot @ 2018-05-16 8:35 UTC (permalink / raw)
To: Florian Schmaus
Cc: kbuild-all, Greg Kroah-Hartman, Florian Schmaus, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2534 bytes --]
Hi Florian,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on driver-core/driver-core-testing]
[also build test ERROR on v4.17-rc5 next-20180515]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Schmaus/return-EINVAL-error-instead-of-BUG_ON/20180516-141149
config: i386-randconfig-a0-201819 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
drivers/base/driver.c: In function 'driver_register':
>> drivers/base/driver.c:154:26: error: 'struct bus_type' has no member named 'bus_register_retval'
drv->name, drv->bus->bus_register_retval);
^
vim +154 drivers/base/driver.c
137
138 /**
139 * driver_register - register driver with bus
140 * @drv: driver to register
141 *
142 * We pass off most of the work to the bus_add_driver() call,
143 * since most of the things we have to do deal with the bus
144 * structures.
145 */
146 int driver_register(struct device_driver *drv)
147 {
148 int ret;
149 struct device_driver *other;
150
151 if (!drv->bus->p) {
152 printk(KERN_ERR "Driver '%s' was unable to register bus_type "
153 "(error: %d)\n",
> 154 drv->name, drv->bus->bus_register_retval);
155 return -EINVAL;
156 }
157
158 if ((drv->bus->probe && drv->probe) ||
159 (drv->bus->remove && drv->remove) ||
160 (drv->bus->shutdown && drv->shutdown))
161 printk(KERN_WARNING "Driver '%s' needs updating - please use "
162 "bus_type methods\n", drv->name);
163
164 other = driver_find(drv->name, drv->bus);
165 if (other) {
166 printk(KERN_ERR "Error: Driver '%s' is already registered, "
167 "aborting...\n", drv->name);
168 return -EBUSY;
169 }
170
171 ret = bus_add_driver(drv);
172 if (ret)
173 return ret;
174 ret = driver_add_groups(drv, drv->groups);
175 if (ret) {
176 bus_remove_driver(drv);
177 return ret;
178 }
179 kobject_uevent(&drv->p->kobj, KOBJ_ADD);
180
181 return ret;
182 }
183 EXPORT_SYMBOL_GPL(driver_register);
184
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34081 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v3 2/3] driver-core: record error on bus registration
2018-05-15 13:51 ` [PATCH v3 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-16 8:50 ` kbuild test robot
0 siblings, 0 replies; 39+ messages in thread
From: kbuild test robot @ 2018-05-16 8:50 UTC (permalink / raw)
To: Florian Schmaus
Cc: kbuild-all, Greg Kroah-Hartman, Florian Schmaus, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 20297 bytes --]
Hi Florian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on driver-core/driver-core-testing]
[also build test WARNING on v4.17-rc5 next-20180515]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Schmaus/return-EINVAL-error-instead-of-BUG_ON/20180516-141149
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
kernel/sched/fair.c:3731: warning: Function parameter or member 'flags' not described in 'attach_entity_load_avg'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
include/linux/gpio/driver.h:142: warning: Function parameter or member 'request_key' not described in 'gpio_irq_chip'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.sign' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.realbits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.storagebits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.shift' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.repeat' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.endianness' not described in 'iio_chan_spec'
include/linux/iio/hw-consumer.h:1: warning: no structured comments found
>> include/linux/device.h:143: warning: Function parameter or member 'bus_register_error' not described in 'bus_type'
include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
include/linux/mtd/rawnand.h:752: warning: Function parameter or member 'timings.sdr' not described in 'nand_data_interface'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.in' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.out' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.cmd' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.data' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.waitrdy' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.data' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.desc' not described in 'nand_chip'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.priv' not described in 'nand_chip'
include/linux/regulator/driver.h:222: warning: Function parameter or member 'resume_early' not described in 'regulator_ops'
drivers/regulator/core.c:4306: warning: Excess function parameter 'state' description in 'regulator_suspend_late'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
drivers/usb/typec/mux.c:186: warning: Function parameter or member 'mux' not described in 'typec_mux_unregister'
drivers/usb/typec/mux.c:186: warning: Excess function parameter 'sw' description in 'typec_mux_unregister'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'attach' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'sgt' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'dir' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap_atomic'
drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap'
drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap'
include/media/v4l2-dev.h:42: warning: Enum value 'VFL_TYPE_MAX' not described in enum 'vfl_devnode_type'
include/linux/skbuff.h:850: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__unused' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'pfmemalloc' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
include/net/sock.h:234: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'
vim +143 include/linux/device.h
^1da177e Linus Torvalds 2005-04-16 @143
:::::: The code at line 143 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6370 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v4 0/3] return EINVAL error instead of BUG_ON()
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
@ 2018-05-16 12:05 ` Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
` (3 more replies)
2018-05-16 12:05 ` [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
` (2 subsequent siblings)
3 siblings, 4 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
This patch series makes driver_register() emit an error message and
return a failure code instead of triggering a BUG_ON().
The first patch will now print out the name of the faulty driver *and*
the name of the involved bus. The second patch records the error code
if bus_register() fails. The third and final patch of the series
extends the first patch so that the recorded error code is also print
out if non-zero. Otherwhise, if drv->bus->p is NULL but the error code
is zero, then probably bus_register() was never called before.
Florian Schmaus (3):
driver-core: return EINVAL error instead of BUG_ON()
driver-core: record error on bus registration
driver-core: print bus registration error value
drivers/base/bus.c | 2 ++
drivers/base/driver.c | 14 +++++++++++++-
include/linux/device.h | 1 +
3 files changed, 16 insertions(+), 1 deletion(-)
--
2.16.1
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
@ 2018-05-16 12:05 ` Florian Schmaus
2018-05-16 15:39 ` Greg Kroah-Hartman
2018-05-16 12:05 ` [PATCH v4 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
I triggerd the BUG_ON() in driver_register() when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my
case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
not register a driver with bus_type not registered").
Instead of running into a BUG_ON() we print an error message
identifying the, likely faulty, driver but continue booting.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Also print out the bus name
- Use pr_err() instead of printk()
drivers/base/driver.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..203fa731e3ee 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,12 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s'"
+ " because it was not initialized.\n",
+ drv->name, drv->bus->name);
+ return -EINVAL;
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v4 2/3] driver-core: record error on bus registration
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-16 12:05 ` Florian Schmaus
2018-05-17 13:08 ` kbuild test robot
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If bus_register() fails on a driver then record the error code so that
it can be inspected later on.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Also record ENOMEM error if initial alloc fails
drivers/base/bus.c | 2 ++
include/linux/device.h | 1 +
2 files changed, 3 insertions(+)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index ef6183306b40..dce677dddba4 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -152,6 +152,7 @@ static void bus_release(struct kobject *kobj)
kfree(priv);
bus->p = NULL;
+ bus->bus_register_error = 0;
}
static struct kobj_type bus_ktype = {
@@ -915,6 +916,7 @@ int bus_register(struct bus_type *bus)
out:
kfree(bus->p);
bus->p = NULL;
+ bus->bus_register_error = retval;
return retval;
}
EXPORT_SYMBOL_GPL(bus_register);
diff --git a/include/linux/device.h b/include/linux/device.h
index 0059b99e1f25..5b1f3c08bebe 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -135,6 +135,7 @@ struct bus_type {
const struct iommu_ops *iommu_ops;
struct subsys_private *p;
+ int bus_register_error;
struct lock_class_key lock_key;
bool force_dma;
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v4 3/3] driver-core: print bus registration error value
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
` (2 preceding siblings ...)
2018-05-16 12:05 ` [PATCH v4 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-16 12:05 ` Florian Schmaus
2018-05-16 12:09 ` Florian Schmaus
` (2 more replies)
3 siblings, 3 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 12:05 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Use correct member name 'bus_register_error'
- Only print out error code if it is non-zero
drivers/base/bus.c | 4 +++-
drivers/base/driver.c | 13 ++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index dce677dddba4..5814ecb07648 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -849,8 +849,10 @@ int bus_register(struct bus_type *bus)
struct lock_class_key *key = &bus->lock_key;
priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
- if (!priv)
+ if (!priv) {
+ bus->bus_register_error = -ENOMEM;
return -ENOMEM;
+ }
priv->bus = bus;
bus->p = priv;
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index 203fa731e3ee..a798aeae08c7 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -149,9 +149,16 @@ int driver_register(struct device_driver *drv)
struct device_driver *other;
if (!drv->bus->p) {
- pr_err("Driver '%s' was unable to register with bus_type '%s'"
- " because it was not initialized.\n",
- drv->name, drv->bus->name);
+ if (drv->bus->bus_register_error) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s'",
+ " (error: %d).\n",
+ drv->name, drv->bus->name,
+ drv->bus->bus_register_error);
+ } else {
+ pr_err("Driver '%s' was unable to register with bus_type '%s'",
+ " because it was not initialized.\n",
+ drv->name, drv->bus->name);
+ }
return -EINVAL;
}
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH v4 3/3] driver-core: print bus registration error value
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
@ 2018-05-16 12:09 ` Florian Schmaus
2018-05-16 15:38 ` Greg Kroah-Hartman
2018-05-16 15:37 ` Greg Kroah-Hartman
2018-05-17 8:10 ` kbuild test robot
2 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 12:09 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 981 bytes --]
On 16.05.2018 14:05, Florian Schmaus wrote:
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
>
> Notes:
> - Use correct member name 'bus_register_error'
> - Only print out error code if it is non-zero
>
> drivers/base/bus.c | 4 +++-
> drivers/base/driver.c | 13 ++++++++++---
> 2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/bus.c b/drivers/base/bus.c
> index dce677dddba4..5814ecb07648 100644
> --- a/drivers/base/bus.c
> +++ b/drivers/base/bus.c
> @@ -849,8 +849,10 @@ int bus_register(struct bus_type *bus)
> struct lock_class_key *key = &bus->lock_key;
>
> priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
> - if (!priv)
> + if (!priv) {
> + bus->bus_register_error = -ENOMEM;
> return -ENOMEM;
> + }
>
> priv->bus = bus;
> bus->p = priv;
I'm sorry, this change was meant to be part of 2/3 (and not 3/3). Shall
I send a v5 where this is fixed?
- Florian
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 3/3] driver-core: print bus registration error value
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-16 12:09 ` Florian Schmaus
@ 2018-05-16 15:37 ` Greg Kroah-Hartman
2018-05-17 8:10 ` kbuild test robot
2 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 15:37 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 02:05:27PM +0200, Florian Schmaus wrote:
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
I can't take patches without any changelog text at all, sorry.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 3/3] driver-core: print bus registration error value
2018-05-16 12:09 ` Florian Schmaus
@ 2018-05-16 15:38 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 15:38 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 02:09:54PM +0200, Florian Schmaus wrote:
> On 16.05.2018 14:05, Florian Schmaus wrote:
> > Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> > ---
> >
> > Notes:
> > - Use correct member name 'bus_register_error'
> > - Only print out error code if it is non-zero
> >
> > drivers/base/bus.c | 4 +++-
> > drivers/base/driver.c | 13 ++++++++++---
> > 2 files changed, 13 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/base/bus.c b/drivers/base/bus.c
> > index dce677dddba4..5814ecb07648 100644
> > --- a/drivers/base/bus.c
> > +++ b/drivers/base/bus.c
> > @@ -849,8 +849,10 @@ int bus_register(struct bus_type *bus)
> > struct lock_class_key *key = &bus->lock_key;
> >
> > priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
> > - if (!priv)
> > + if (!priv) {
> > + bus->bus_register_error = -ENOMEM;
> > return -ENOMEM;
> > + }
> >
> > priv->bus = bus;
> > bus->p = priv;
>
> I'm sorry, this change was meant to be part of 2/3 (and not 3/3). Shall
> I send a v5 where this is fixed?
Well, I can't take it as-is, so of course :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 12:05 ` [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-16 15:39 ` Greg Kroah-Hartman
2018-05-16 16:07 ` Florian Schmaus
0 siblings, 1 reply; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 15:39 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 02:05:25PM +0200, Florian Schmaus wrote:
> I triggerd the BUG_ON() in driver_register() when booting a domU Xen
> domain. Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my
> case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
> not register a driver with bus_type not registered").
>
> Instead of running into a BUG_ON() we print an error message
> identifying the, likely faulty, driver but continue booting.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
>
> Notes:
> - Also print out the bus name
> - Use pr_err() instead of printk()
>
> drivers/base/driver.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index ba912558a510..203fa731e3ee 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -148,7 +148,12 @@ int driver_register(struct device_driver *drv)
> int ret;
> struct device_driver *other;
>
> - BUG_ON(!drv->bus->p);
> + if (!drv->bus->p) {
> + pr_err("Driver '%s' was unable to register with bus_type '%s'"
> + " because it was not initialized.\n",
Are you using checkpatch.pl?
Anyway, long strings should never be split across lines. This needs to
be one line.
Sometimes making small changes is hard :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 15:39 ` Greg Kroah-Hartman
@ 2018-05-16 16:07 ` Florian Schmaus
0 siblings, 0 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 16:07 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel
[-- Attachment #1.1: Type: text/plain, Size: 1727 bytes --]
On 16.05.2018 17:39, Greg Kroah-Hartman wrote:
> On Wed, May 16, 2018 at 02:05:25PM +0200, Florian Schmaus wrote:
>> I triggerd the BUG_ON() in driver_register() when booting a domU Xen
>> domain. Since there was no contextual information logged, I needed to
>> attach kgdb to determine the culprit (the wmi-bmof driver in my
>> case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
>> not register a driver with bus_type not registered").
>>
>> Instead of running into a BUG_ON() we print an error message
>> identifying the, likely faulty, driver but continue booting.
>>
>> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
>> ---
>>
>> Notes:
>> - Also print out the bus name
>> - Use pr_err() instead of printk()
>>
>> drivers/base/driver.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
>> index ba912558a510..203fa731e3ee 100644
>> --- a/drivers/base/driver.c
>> +++ b/drivers/base/driver.c
>> @@ -148,7 +148,12 @@ int driver_register(struct device_driver *drv)
>> int ret;
>> struct device_driver *other;
>>
>> - BUG_ON(!drv->bus->p);
>> + if (!drv->bus->p) {
>> + pr_err("Driver '%s' was unable to register with bus_type '%s'"
>> + " because it was not initialized.\n",
>
> Are you using checkpatch.pl?
I do, I thought this was one of the rare occasions where it is sensible
to split the lines, also given that the other strings within the same
function are also split.
> Anyway, long strings should never be split across lines. This needs to
> be one line.
Fixed in v5.
> Sometimes making small changes is hard :)
True words ;)
- Florian
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v5 0/3] return EINVAL error instead of BUG_ON()
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
@ 2018-05-16 16:08 ` Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 0/3] driver-core: " Florian Schmaus
` (3 more replies)
2018-05-16 16:08 ` [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
` (2 subsequent siblings)
3 siblings, 4 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 16:08 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
This patch series makes driver_register() emit an error message and
return a failure code instead of triggering a BUG_ON().
The first patch will cause driver_register() to fail gracefully if the
driver's bus was not initialized while printing out the name of the
faulty driver *and* the name of the involved bus. The second patch
records the error code if bus_register() fails. The third and final
patch of the series extends the first patch so that the recorded error
code is also print out if non-zero. Otherwhise, if drv->bus->p is NULL
but the error code is zero, then probably bus_register() was never
called before.
Florian Schmaus (3):
driver-core: return EINVAL error instead of BUG_ON()
driver-core: record error on bus registration
driver-core: print bus registration error value
drivers/base/bus.c | 6 +++++-
drivers/base/driver.c | 12 +++++++++++-
include/linux/device.h | 1 +
3 files changed, 17 insertions(+), 2 deletions(-)
--
2.16.1
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
@ 2018-05-16 16:08 ` Florian Schmaus
2018-05-16 16:35 ` Greg Kroah-Hartman
2018-05-16 16:08 ` [PATCH v5 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 16:08 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
I triggerd the BUG_ON() in driver_register() when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my
case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
not register a driver with bus_type not registered").
Instead of running into a BUG_ON() we print an error message
identifying the, likely faulty, driver but continue booting.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Do not split long strings across lines.
drivers/base/driver.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..16b81d1c6cb7 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because it was not initialized.\n",
+ drv->name, drv->bus->name);
+ return -EINVAL;
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v5 2/3] driver-core: record error on bus registration
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-16 16:08 ` Florian Schmaus
2018-05-16 16:35 ` Greg Kroah-Hartman
2018-05-16 16:08 ` [PATCH v5 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 16:08 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If bus_register() fails on a driver then record the error code so that
it can be inspected later on.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Also record ENOMEM error code.
drivers/base/bus.c | 6 +++++-
include/linux/device.h | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index ef6183306b40..5814ecb07648 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -152,6 +152,7 @@ static void bus_release(struct kobject *kobj)
kfree(priv);
bus->p = NULL;
+ bus->bus_register_error = 0;
}
static struct kobj_type bus_ktype = {
@@ -848,8 +849,10 @@ int bus_register(struct bus_type *bus)
struct lock_class_key *key = &bus->lock_key;
priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
- if (!priv)
+ if (!priv) {
+ bus->bus_register_error = -ENOMEM;
return -ENOMEM;
+ }
priv->bus = bus;
bus->p = priv;
@@ -915,6 +918,7 @@ int bus_register(struct bus_type *bus)
out:
kfree(bus->p);
bus->p = NULL;
+ bus->bus_register_error = retval;
return retval;
}
EXPORT_SYMBOL_GPL(bus_register);
diff --git a/include/linux/device.h b/include/linux/device.h
index 0059b99e1f25..5b1f3c08bebe 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -135,6 +135,7 @@ struct bus_type {
const struct iommu_ops *iommu_ops;
struct subsys_private *p;
+ int bus_register_error;
struct lock_class_key lock_key;
bool force_dma;
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v5 3/3] driver-core: print bus registration error value
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
` (2 preceding siblings ...)
2018-05-16 16:08 ` [PATCH v5 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-16 16:08 ` Florian Schmaus
2018-05-16 16:37 ` Greg Kroah-Hartman
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-16 16:08 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If driver_register() is called with an device driver which previously
called bus_register() but failed, then print out the bus_register()
error code.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
- Do not split long strings across lines.
drivers/base/driver.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index 16b81d1c6cb7..a1fe7cb43c7e 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -149,8 +149,14 @@ int driver_register(struct device_driver *drv)
struct device_driver *other;
if (!drv->bus->p) {
- pr_err("Driver '%s' was unable to register with bus_type '%s' because it was not initialized.\n",
- drv->name, drv->bus->name);
+ if (drv->bus->bus_register_error) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because of error: %d.\n",
+ drv->name, drv->bus->name,
+ drv->bus->bus_register_error);
+ } else {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because it was not initialized.\n",
+ drv->name, drv->bus->name);
+ }
return -EINVAL;
}
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 16:08 ` [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
@ 2018-05-16 16:35 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 16:35 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 06:08:14PM +0200, Florian Schmaus wrote:
> I triggerd the BUG_ON() in driver_register() when booting a domU Xen
> domain. Since there was no contextual information logged, I needed to
> attach kgdb to determine the culprit (the wmi-bmof driver in my
> case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
> not register a driver with bus_type not registered").
>
> Instead of running into a BUG_ON() we print an error message
> identifying the, likely faulty, driver but continue booting.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
>
> Notes:
> - Do not split long strings across lines.
>
> drivers/base/driver.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index ba912558a510..16b81d1c6cb7 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
> int ret;
> struct device_driver *other;
>
> - BUG_ON(!drv->bus->p);
> + if (!drv->bus->p) {
> + pr_err("Driver '%s' was unable to register with bus_type '%s' because it was not initialized.\n",
The bus is not initialized, not the driver, right? This kind of makes
it sound the other way around :(
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v5 2/3] driver-core: record error on bus registration
2018-05-16 16:08 ` [PATCH v5 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-16 16:35 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 16:35 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 06:08:15PM +0200, Florian Schmaus wrote:
> If bus_register() fails on a driver then record the error code so that
> it can be inspected later on.
I don't think this is really needed, has it ever triggered before?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v5 3/3] driver-core: print bus registration error value
2018-05-16 16:08 ` [PATCH v5 3/3] driver-core: print bus registration error value Florian Schmaus
@ 2018-05-16 16:37 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-16 16:37 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 16, 2018 at 06:08:16PM +0200, Florian Schmaus wrote:
> If driver_register() is called with an device driver which previously
> called bus_register() but failed, then print out the bus_register()
> error code.
>
> Signed-off-by: Florian Schmaus <flo@geekplace.eu>
> ---
>
> Notes:
> - Do not split long strings across lines.
>
> drivers/base/driver.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/base/driver.c b/drivers/base/driver.c
> index 16b81d1c6cb7..a1fe7cb43c7e 100644
> --- a/drivers/base/driver.c
> +++ b/drivers/base/driver.c
> @@ -149,8 +149,14 @@ int driver_register(struct device_driver *drv)
> struct device_driver *other;
>
> if (!drv->bus->p) {
> - pr_err("Driver '%s' was unable to register with bus_type '%s' because it was not initialized.\n",
> - drv->name, drv->bus->name);
> + if (drv->bus->bus_register_error) {
> + pr_err("Driver '%s' was unable to register with bus_type '%s' because of error: %d.\n",
> + drv->name, drv->bus->name,
> + drv->bus->bus_register_error);
The error was with the bus registration, not the driver registration.
And really, when has this ever happened? Why would a bus registration
fail and later allow a driver to be registered? The bus registration
error would have shown up somewhere, no need to keep it around for no
real good reason.
So I don't think that patches 2 and 3 are needed at all here, sorry.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 3/3] driver-core: print bus registration error value
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-16 12:09 ` Florian Schmaus
2018-05-16 15:37 ` Greg Kroah-Hartman
@ 2018-05-17 8:10 ` kbuild test robot
2 siblings, 0 replies; 39+ messages in thread
From: kbuild test robot @ 2018-05-17 8:10 UTC (permalink / raw)
To: Florian Schmaus
Cc: kbuild-all, Greg Kroah-Hartman, Florian Schmaus, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 5887 bytes --]
Hi Florian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on driver-core/driver-core-testing]
[also build test WARNING on v4.17-rc5 next-20180516]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Schmaus/return-EINVAL-error-instead-of-BUG_ON/20180517-145147
config: x86_64-randconfig-x002-201819 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All warnings (new ones prefixed by >>):
In file included from include/linux/printk.h:7:0,
from include/linux/kernel.h:14,
from include/linux/list.h:9,
from include/linux/kobject.h:19,
from include/linux/device.h:16,
from drivers/base/driver.c:11:
drivers/base/driver.c: In function 'driver_register':
>> include/linux/kern_levels.h:5:18: warning: too many arguments for format [-Wformat-extra-args]
#define KERN_SOH "\001" /* ASCII Start Of Header */
^
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
#define KERN_ERR KERN_SOH "3" /* error conditions */
^~~~~~~~
>> include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~
>> drivers/base/driver.c:153:4: note: in expansion of macro 'pr_err'
pr_err("Driver '%s' was unable to register with bus_type '%s'",
^~~~~~
>> include/linux/kern_levels.h:5:18: warning: too many arguments for format [-Wformat-extra-args]
#define KERN_SOH "\001" /* ASCII Start Of Header */
^
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
#define KERN_ERR KERN_SOH "3" /* error conditions */
^~~~~~~~
>> include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~
drivers/base/driver.c:158:4: note: in expansion of macro 'pr_err'
pr_err("Driver '%s' was unable to register with bus_type '%s'",
^~~~~~
--
In file included from include/linux/printk.h:7:0,
from include/linux/kernel.h:14,
from include/linux/list.h:9,
from include/linux/kobject.h:19,
from include/linux/device.h:16,
from drivers//base/driver.c:11:
drivers//base/driver.c: In function 'driver_register':
>> include/linux/kern_levels.h:5:18: warning: too many arguments for format [-Wformat-extra-args]
#define KERN_SOH "\001" /* ASCII Start Of Header */
^
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
#define KERN_ERR KERN_SOH "3" /* error conditions */
^~~~~~~~
>> include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~
drivers//base/driver.c:153:4: note: in expansion of macro 'pr_err'
pr_err("Driver '%s' was unable to register with bus_type '%s'",
^~~~~~
>> include/linux/kern_levels.h:5:18: warning: too many arguments for format [-Wformat-extra-args]
#define KERN_SOH "\001" /* ASCII Start Of Header */
^
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
#define KERN_ERR KERN_SOH "3" /* error conditions */
^~~~~~~~
>> include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~
drivers//base/driver.c:158:4: note: in expansion of macro 'pr_err'
pr_err("Driver '%s' was unable to register with bus_type '%s'",
^~~~~~
vim +/pr_err +153 drivers/base/driver.c
137
138 /**
139 * driver_register - register driver with bus
140 * @drv: driver to register
141 *
142 * We pass off most of the work to the bus_add_driver() call,
143 * since most of the things we have to do deal with the bus
144 * structures.
145 */
146 int driver_register(struct device_driver *drv)
147 {
148 int ret;
149 struct device_driver *other;
150
151 if (!drv->bus->p) {
152 if (drv->bus->bus_register_error) {
> 153 pr_err("Driver '%s' was unable to register with bus_type '%s'",
154 " (error: %d).\n",
155 drv->name, drv->bus->name,
156 drv->bus->bus_register_error);
157 } else {
158 pr_err("Driver '%s' was unable to register with bus_type '%s'",
159 " because it was not initialized.\n",
160 drv->name, drv->bus->name);
161 }
162 return -EINVAL;
163 }
164
165 if ((drv->bus->probe && drv->probe) ||
166 (drv->bus->remove && drv->remove) ||
167 (drv->bus->shutdown && drv->shutdown))
168 printk(KERN_WARNING "Driver '%s' needs updating - please use "
169 "bus_type methods\n", drv->name);
170
171 other = driver_find(drv->name, drv->bus);
172 if (other) {
173 printk(KERN_ERR "Error: Driver '%s' is already registered, "
174 "aborting...\n", drv->name);
175 return -EBUSY;
176 }
177
178 ret = bus_add_driver(drv);
179 if (ret)
180 return ret;
181 ret = driver_add_groups(drv, drv->groups);
182 if (ret) {
183 bus_remove_driver(drv);
184 return ret;
185 }
186 kobject_uevent(&drv->p->kobj, KOBJ_ADD);
187
188 return ret;
189 }
190 EXPORT_SYMBOL_GPL(driver_register);
191
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 24347 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [PATCH v4 2/3] driver-core: record error on bus registration
2018-05-16 12:05 ` [PATCH v4 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-17 13:08 ` kbuild test robot
0 siblings, 0 replies; 39+ messages in thread
From: kbuild test robot @ 2018-05-17 13:08 UTC (permalink / raw)
To: Florian Schmaus
Cc: kbuild-all, Greg Kroah-Hartman, Florian Schmaus, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 20297 bytes --]
Hi Florian,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on driver-core/driver-core-testing]
[also build test WARNING on v4.17-rc5 next-20180516]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Florian-Schmaus/return-EINVAL-error-instead-of-BUG_ON/20180517-145147
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
include/net/mac80211.h:2083: warning: bad line: >
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
kernel/sched/fair.c:3731: warning: Function parameter or member 'flags' not described in 'attach_entity_load_avg'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
include/linux/gpio/driver.h:142: warning: Function parameter or member 'request_key' not described in 'gpio_irq_chip'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.sign' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.realbits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.storagebits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.shift' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.repeat' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.endianness' not described in 'iio_chan_spec'
include/linux/iio/hw-consumer.h:1: warning: no structured comments found
>> include/linux/device.h:143: warning: Function parameter or member 'bus_register_error' not described in 'bus_type'
include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
include/linux/mtd/rawnand.h:752: warning: Function parameter or member 'timings.sdr' not described in 'nand_data_interface'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.in' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.out' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.cmd' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.data' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.waitrdy' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.data' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.desc' not described in 'nand_chip'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.priv' not described in 'nand_chip'
include/linux/regulator/driver.h:222: warning: Function parameter or member 'resume_early' not described in 'regulator_ops'
drivers/regulator/core.c:4306: warning: Excess function parameter 'state' description in 'regulator_suspend_late'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
drivers/usb/typec/mux.c:186: warning: Function parameter or member 'mux' not described in 'typec_mux_unregister'
drivers/usb/typec/mux.c:186: warning: Excess function parameter 'sw' description in 'typec_mux_unregister'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'attach' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'sgt' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:342: warning: Function parameter or member 'dir' not described in 'drm_gem_unmap_dma_buf'
drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap_atomic'
drivers/gpu/drm/drm_prime.c:438: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:450: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap_atomic'
drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kmap'
drivers/gpu/drm/drm_prime.c:461: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'dma_buf' not described in 'drm_gem_dmabuf_kunmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'page_num' not described in 'drm_gem_dmabuf_kunmap'
drivers/gpu/drm/drm_prime.c:473: warning: Function parameter or member 'addr' not described in 'drm_gem_dmabuf_kunmap'
include/media/v4l2-dev.h:42: warning: Enum value 'VFL_TYPE_MAX' not described in enum 'vfl_devnode_type'
include/linux/skbuff.h:850: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__unused' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'pfmemalloc' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
include/net/sock.h:234: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'
vim +143 include/linux/device.h
^1da177e Linus Torvalds 2005-04-16 @143
:::::: The code at line 143 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6370 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v6 0/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
@ 2018-05-23 15:59 ` Florian Schmaus
2018-05-25 16:21 ` Greg Kroah-Hartman
2018-05-23 15:59 ` [PATCH v6 1/3] " Florian Schmaus
` (2 subsequent siblings)
3 siblings, 1 reply; 39+ messages in thread
From: Florian Schmaus @ 2018-05-23 15:59 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
This patch series makes driver_register() emit an error message and
return a failure code instead of triggering a BUG_ON().
The first patch will cause driver_register() to fail gracefully if the
driver's bus was not initialized while printing out the name of the
faulty driver *and* the name of the involved bus. The second patch
records the error code if bus_register() fails. The third and final
patch of the series extends the first patch so that the recorded error
code is also print out if non-zero. Otherwise, if drv->bus->p is NULL
but the error code is zero, then probably bus_register() was never
called before.
Greg questioned [1] whether [2/3] and [3/3] are necessary:
> And really, when has this ever happened? Why would a bus registration
> fail and later allow a driver to be registered?
I initially assumed that this is what cause me hitting the BUG_ON()
which [1/3] replaces: The bus registration failed and then the driver
attempts to register itself. But I did not had a chance to verify
that. I'll try to do so after my vacation. Meanwhile I hope that at
least [1/3] is considered an improvement of the kernel. If so, feel
free to pick it up.
1: Message-ID: <20180516163707.GD20425@kroah.com>
Florian Schmaus (3):
driver-core: return EINVAL error instead of BUG_ON()
driver-core: record error on bus registration
driver-core: print bus registration error value
drivers/base/bus.c | 9 +++++++--
drivers/base/driver.c | 12 +++++++++++-
include/linux/device.h | 1 +
3 files changed, 19 insertions(+), 3 deletions(-)
--
2.16.1
^ permalink raw reply [flat|nested] 39+ messages in thread
* [PATCH v6 1/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 0/3] driver-core: " Florian Schmaus
@ 2018-05-23 15:59 ` Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 0 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-23 15:59 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
I triggerd the BUG_ON() in driver_register() when booting a domU Xen
domain. Since there was no contextual information logged, I needed to
attach kgdb to determine the culprit (the wmi-bmof driver in my
case). The BUG_ON() was added in commit f48f3febb2cb ("driver-core: do
not register a driver with bus_type not registered").
Instead of running into a BUG_ON() we print an error message
identifying the, likely faulty, driver but continue booting.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
Make it clear in the error message that the bus was not initialized
and *not* the driver.
drivers/base/driver.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index ba912558a510..857c8f1b876e 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -148,7 +148,11 @@ int driver_register(struct device_driver *drv)
int ret;
struct device_driver *other;
- BUG_ON(!drv->bus->p);
+ if (!drv->bus->p) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because the bus was not initialized.\n",
+ drv->name, drv->bus->name);
+ return -EINVAL;
+ }
if ((drv->bus->probe && drv->probe) ||
(drv->bus->remove && drv->remove) ||
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v6 2/3] driver-core: record error on bus registration
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 0/3] driver-core: " Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 1/3] " Florian Schmaus
@ 2018-05-23 15:59 ` Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 3/3] driver-core: print bus registration error value Florian Schmaus
3 siblings, 0 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-23 15:59 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If bus_register() fails on a driver then record the error code so that
it can be inspected later on.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
Also record ENOMEM error
drivers/base/bus.c | 9 +++++++--
include/linux/device.h | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index ef6183306b40..6e27741eb03e 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -152,6 +152,7 @@ static void bus_release(struct kobject *kobj)
kfree(priv);
bus->p = NULL;
+ bus->bus_register_error = 0;
}
static struct kobj_type bus_ktype = {
@@ -848,8 +849,10 @@ int bus_register(struct bus_type *bus)
struct lock_class_key *key = &bus->lock_key;
priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
- if (!priv)
- return -ENOMEM;
+ if (!priv) {
+ retval = -ENOMEM;
+ goto bus_alloc_fail;
+ }
priv->bus = bus;
bus->p = priv;
@@ -914,7 +917,9 @@ int bus_register(struct bus_type *bus)
kset_unregister(&bus->p->subsys);
out:
kfree(bus->p);
+bus_alloc_fail:
bus->p = NULL;
+ bus->bus_register_error = retval;
return retval;
}
EXPORT_SYMBOL_GPL(bus_register);
diff --git a/include/linux/device.h b/include/linux/device.h
index 0059b99e1f25..5b1f3c08bebe 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -135,6 +135,7 @@ struct bus_type {
const struct iommu_ops *iommu_ops;
struct subsys_private *p;
+ int bus_register_error;
struct lock_class_key lock_key;
bool force_dma;
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* [PATCH v6 3/3] driver-core: print bus registration error value
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
` (2 preceding siblings ...)
2018-05-23 15:59 ` [PATCH v6 2/3] driver-core: record error on bus registration Florian Schmaus
@ 2018-05-23 15:59 ` Florian Schmaus
3 siblings, 0 replies; 39+ messages in thread
From: Florian Schmaus @ 2018-05-23 15:59 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Florian Schmaus, linux-kernel
If driver_register() is called with an device driver which previously
called bus_register() but failed, then print out the bus_register()
error code.
Signed-off-by: Florian Schmaus <flo@geekplace.eu>
---
Notes:
Make it clear in the error message that the error code is from the bus
registration and *not* from the driver registration.
drivers/base/driver.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index 857c8f1b876e..b21fed9687c9 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -149,8 +149,14 @@ int driver_register(struct device_driver *drv)
struct device_driver *other;
if (!drv->bus->p) {
- pr_err("Driver '%s' was unable to register with bus_type '%s' because the bus was not initialized.\n",
- drv->name, drv->bus->name);
+ if (drv->bus->bus_register_error) {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because bus registration failed with error %d.\n",
+ drv->name, drv->bus->name,
+ drv->bus->bus_register_error);
+ } else {
+ pr_err("Driver '%s' was unable to register with bus_type '%s' because the bus was not initialized.\n",
+ drv->name, drv->bus->name);
+ }
return -EINVAL;
}
--
2.16.1
^ permalink raw reply related [flat|nested] 39+ messages in thread
* Re: [PATCH v6 0/3] driver-core: return EINVAL error instead of BUG_ON()
2018-05-23 15:59 ` [PATCH v6 0/3] driver-core: " Florian Schmaus
@ 2018-05-25 16:21 ` Greg Kroah-Hartman
0 siblings, 0 replies; 39+ messages in thread
From: Greg Kroah-Hartman @ 2018-05-25 16:21 UTC (permalink / raw)
To: Florian Schmaus; +Cc: linux-kernel
On Wed, May 23, 2018 at 05:59:10PM +0200, Florian Schmaus wrote:
> This patch series makes driver_register() emit an error message and
> return a failure code instead of triggering a BUG_ON().
>
> The first patch will cause driver_register() to fail gracefully if the
> driver's bus was not initialized while printing out the name of the
> faulty driver *and* the name of the involved bus. The second patch
> records the error code if bus_register() fails. The third and final
> patch of the series extends the first patch so that the recorded error
> code is also print out if non-zero. Otherwise, if drv->bus->p is NULL
> but the error code is zero, then probably bus_register() was never
> called before.
>
> Greg questioned [1] whether [2/3] and [3/3] are necessary:
>
> > And really, when has this ever happened? Why would a bus registration
> > fail and later allow a driver to be registered?
>
> I initially assumed that this is what cause me hitting the BUG_ON()
> which [1/3] replaces: The bus registration failed and then the driver
> attempts to register itself. But I did not had a chance to verify
> that. I'll try to do so after my vacation. Meanwhile I hope that at
> least [1/3] is considered an improvement of the kernel. If so, feel
> free to pick it up.
I've picked up patch 1, I don't think patches 2 or 3 are needed, due to
the extreme unfrequency that this problem ever happens :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2018-05-25 16:22 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-07 9:49 [PATCH] driver-core: Log the BUG() causing driver Florian Schmaus
2018-03-07 15:13 ` Greg Kroah-Hartman
2018-03-07 15:36 ` Florian Schmaus
2018-05-04 13:23 ` [PATCH v2] driver-core: Return EBUSY error instead of BUG_ON() Florian Schmaus
2018-05-04 17:37 ` Greg Kroah-Hartman
2018-05-04 17:38 ` Greg Kroah-Hartman
2018-05-15 13:51 ` [PATCH v3 0/3] return EINVAL " Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 " Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 " Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 0/3] driver-core: " Florian Schmaus
2018-05-25 16:21 ` Greg Kroah-Hartman
2018-05-23 15:59 ` [PATCH v6 1/3] " Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-23 15:59 ` [PATCH v6 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-16 16:08 ` [PATCH v5 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
2018-05-16 16:35 ` Greg Kroah-Hartman
2018-05-16 16:08 ` [PATCH v5 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-16 16:35 ` Greg Kroah-Hartman
2018-05-16 16:08 ` [PATCH v5 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-16 16:37 ` Greg Kroah-Hartman
2018-05-16 12:05 ` [PATCH v4 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
2018-05-16 15:39 ` Greg Kroah-Hartman
2018-05-16 16:07 ` Florian Schmaus
2018-05-16 12:05 ` [PATCH v4 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-17 13:08 ` kbuild test robot
2018-05-16 12:05 ` [PATCH v4 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-16 12:09 ` Florian Schmaus
2018-05-16 15:38 ` Greg Kroah-Hartman
2018-05-16 15:37 ` Greg Kroah-Hartman
2018-05-17 8:10 ` kbuild test robot
2018-05-15 13:51 ` [PATCH v3 1/3] driver-core: return EINVAL error instead of BUG_ON() Florian Schmaus
2018-05-15 15:10 ` Greg Kroah-Hartman
2018-05-15 15:13 ` Greg Kroah-Hartman
2018-05-15 13:51 ` [PATCH v3 2/3] driver-core: record error on bus registration Florian Schmaus
2018-05-16 8:50 ` kbuild test robot
2018-05-15 13:51 ` [PATCH v3 3/3] driver-core: print bus registration error value Florian Schmaus
2018-05-15 15:12 ` Greg Kroah-Hartman
2018-05-16 8:24 ` kbuild test robot
2018-05-16 8:35 ` kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).