In the Linux kernel, the following vulnerability has been resolved:
btrfs: fix inode list leak during backref walking at resolveindirectrefs()
During backref walking, at resolveindirectrefs(), if we get an error we jump to the 'out' label and call ulist_free() on the 'parents' ulist, which frees all the elements in the ulist - however that does not free any inode lists that may be attached to elements, through the 'aux' field of a ulist node, so we end up leaking lists if we have any attached to the unodes.
Fix this by calling freeleaflist() instead of ulistfree() when we exit from resolveindirectrefs(). The static function freeleaf_list() is moved up for this to be possible and it's slightly simplified by removing unnecessary code.