On Fri, Aug 09, 2019 at 03:45:59PM -0700, Linus Torvalds wrote: >On Fri, Aug 9, 2019 at 3:38 PM Wei Yang <richard.weiy...@gmail.com> wrote: >> >> 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". >
Agree, this is what I want to say. >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)); > I am thinking about why this could happen. To guard the core kernel code, it looks reasonable. >or something? > >NOTE! The above is entirely untested, and written purely in my mail >reader. It might be seriously buggy, including not compiling, or doing >odd things. See it more as a "maybe something like this" code snippet >example than any kind of final form. > > Linus -- Wei Yang Help you, Help me