• Linus Torvalds's avatar
    ida: don't use BUG_ON() for debugging · fc82bbf4
    Linus Torvalds authored
    This is another old BUG_ON() that just shouldn't exist (see also commit
    a382f8fe: "signal handling: don't use BUG_ON() for debugging").
    
    In fact, as Matthew Wilcox points out, this condition shouldn't really
    even result in a warning, since a negative id allocation result is just
    a normal allocation failure:
    
      "I wonder if we should even warn here -- sure, the caller is trying to
       free something that wasn't allocated, but we don't warn for
       kfree(NULL)"
    
    and goes on to point out how that current error check is only causing
    people to unnecessarily do their own index range checking before freeing
    it.
    
    This was noted by Itay Iellin, because the bluetooth HCI socket cookie
    code does *not* do that range checking, and ends up just freeing the
    error case too, triggering the BUG_ON().
    
    The HCI code requires CAP_NET_RAW, and seems to just result in an ugly
    splat, but there really is no reason to BUG_ON() here, and we have
    generally striven for allocation models where it's always ok to just do
    
        free(alloc());
    
    even if the allocation were to fail for some random reason (usually
    obviously that "random" reason being some resource limit).
    
    Fixes: 88eca020 ("ida: simplified functions for id allocation")
    Reported-by: default avatarItay Iellin <ieitayie@gmail.com>
    Suggested-by: default avatarMatthew Wilcox <willy@infradead.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    fc82bbf4
idr.c 17.5 KB