diff options
author | eadler <eadler@FreeBSD.org> | 2012-01-15 07:09:18 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-01-15 07:09:18 +0000 |
commit | e07bec5a9c09cadd3c6ef93b38eb4aeefdb7a649 (patch) | |
tree | 4c9fac1857c8c7492ba11985ba62504841118551 /sys/kern/subr_bus.c | |
parent | 19c997ffb187fa972ee676f70314969915c35584 (diff) | |
download | FreeBSD-src-e07bec5a9c09cadd3c6ef93b38eb4aeefdb7a649.zip FreeBSD-src-e07bec5a9c09cadd3c6ef93b38eb4aeefdb7a649.tar.gz |
- Fix undefined behavior when device_get_name is null
- Make error message more informative
PR: kern/149800
Submitted by: olgeni
Approved by: cperciva
MFC after: 1 week
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r-- | sys/kern/subr_bus.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index a95bdb9..cc74204 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -2020,9 +2020,15 @@ device_probe_child(device_t dev, device_t child) if (!hasclass) { if (device_set_devclass(child, dl->driver->name) != 0) { + char const * devname = + device_get_name(child); + if (devname == NULL) + devname = "(unknown)"; printf("driver bug: Unable to set " - "devclass (devname: %s)\n", - device_get_name(child)); + "devclass (class: %s " + "devname: %s)\n", + dl->driver->name, + devname); (void)device_set_driver(child, NULL); continue; } |