svn commit: r274249 - head/sys/dev/ofw
Zbigniew Bodek
zbb at FreeBSD.org
Fri Nov 7 19:34:11 UTC 2014
Author: zbb
Date: Fri Nov 7 19:34:10 2014
New Revision: 274249
URL: https://svnweb.freebsd.org/changeset/base/274249
Log:
Avoid panic in ofwbus caused by not released resource list entry
After resource allocation and release, resource list entry
stays non-NULL. This causes panic in ofwbus_alloc_resource()
on subsequent resource allocation.
Clean appropriate list entry on release to avoid this.
Obtained from: Semihalf
Reviewed by: ian
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/dev/ofw/ofwbus.c
Modified: head/sys/dev/ofw/ofwbus.c
==============================================================================
--- head/sys/dev/ofw/ofwbus.c Fri Nov 7 19:32:10 2014 (r274248)
+++ head/sys/dev/ofw/ofwbus.c Fri Nov 7 19:34:10 2014 (r274249)
@@ -399,11 +399,17 @@ ofwbus_adjust_resource(device_t bus, dev
}
static int
-ofwbus_release_resource(device_t bus __unused, device_t child, int type,
+ofwbus_release_resource(device_t bus, device_t child, int type,
int rid, struct resource *r)
{
+ struct resource_list_entry *rle;
int error;
+ /* Clean resource list entry */
+ rle = resource_list_find(BUS_GET_RESOURCE_LIST(bus, child), type, rid);
+ if (rle != NULL)
+ rle->res = NULL;
+
if ((rman_get_flags(r) & RF_ACTIVE) != 0) {
error = bus_deactivate_resource(child, type, rid, r);
if (error)
More information about the svn-src-all
mailing list