> > > > In theory, child may have siblings. Would it be possible to have several > > devices under xhci-hcd? > > I'm less interested in the xhci-hcd case - which I certainly *hope* is > fixed already? - than in "if this happens somewhere else". > > So if we do want to remove the parent (which may be a good idea with a > warning), and want to make sure that the children are really removed > from the resource hierarchy, we should do somethiing like > > static bool detach_children(struct resource *res) > { > res = res->child; > if (!res) > return false; > do { > res->parent = NULL; > res = res->sibling; > } while (res); > return true; > } > > and then we could write the __release_region() warning as > > /* You should not release a resource that has children */ > WARN_ON_ONCE(detach_children(res)); > > or something? > ... and a child may have children too ...
There is a __release_child_resources in resource.c around line 242. A bit noisy, and does a similar thing you outlined above. I'm thinking about to re-use that, but with more precise output and WARN_ON_ONCE. Suggestions before i start work on that? Best regards Carsten