svn commit: r188464 - head/sys/kern
Alexander Motin
mav at FreeBSD.org
Tue Feb 10 22:49:11 PST 2009
> Alexander Motin <mav at freebsd.org> writes:
> : Author: mav
> : Date: Tue Feb 10 23:22:29 2009
> : New Revision: 188464
> : URL: http://svn.freebsd.org/changeset/base/188464
> :
> : Log:
> : Check for device_set_devclass() errors and skip driver probe/attach if any.
> : Attach call without devclass set crashes the system.
> :
> : On resume AHCI driver sometimes tries to create duplicate adX device.
> : It is surely his own problem, but IMHO it is not a reason to crash here.
> : Other reasons are also possible.
> :
> : Modified:
> : head/sys/kern/subr_bus.c
> :
> : Modified: head/sys/kern/subr_bus.c
> : ==============================================================================
> : --- head/sys/kern/subr_bus.c Tue Feb 10 23:17:20 2009 (r188463)
> : +++ head/sys/kern/subr_bus.c Tue Feb 10 23:22:29 2009 (r188464)
> : @@ -1756,8 +1756,13 @@ device_probe_child(device_t dev, device_
> : dl = next_matching_driver(dc, child, dl)) {
> : PDEBUG(("Trying %s", DRIVERNAME(dl->driver)));
> : device_set_driver(child, dl->driver);
> : - if (!hasclass)
> : - device_set_devclass(child, dl->driver->name);
> : + if (!hasclass) {
> : + if (device_set_devclass(child, dl->driver->name)) {
> : + PDEBUG(("Unable to set device class"));
> : + device_set_driver(child, NULL);
> : + continue;
> : + }
> : + }
> :
> : /* Fetch any flags for the device before probing. */
> : resource_int_value(dl->driver->name, child->unit,
>
> I'd prefer applying this patch to make it whine louder so we don't
> forget about it:
device_set_devclass() itself already complains about driver problem (but only with verbose messages). At this point the only thing we should do is not to crash. As I have said, there also can be other failure reasons except driver bugs, for example, low memory.
--
Alexander Motin
More information about the svn-src-head
mailing list