In the Linux kernel, the following vulnerability has been resolved: ubifs: Fix memleak when insert_old_idx() failed Following process will cause a memleak for copied up znode: dirty_cow_znode zn = copy_znode(c, znode); err = insert_old_idx(c, zbr->lnum, zbr->offs); if (unlikely(err)) return ERR_PTR(err); // No one refers to zn. Fetch a reproducer in [Link]. Function copy_znode() is split into 2 parts: resource allocation and znode replacement, insert_old_idx() is split in similar way, so resource cleanup could be done in error handling path without corrupting metadata(mem & disk). It's okay that old index inserting is put behind of add_idx_dirt(), old index is used in layout_leb_in_gaps(), so the two processes do not depend on each other.
https://git.kernel.org/stable/c/ef9aac603659e9ffe7d69ae16e3f0fc0991a965b
https://git.kernel.org/stable/c/cc29c7216d7f057eb0613b97dc38c7e1962a88d2
https://git.kernel.org/stable/c/b5fda08ef213352ac2df7447611eb4d383cce929
https://git.kernel.org/stable/c/a6da0ab9847779e05a7416c7a98148b549de69ef
https://git.kernel.org/stable/c/79079cebbeed624b9d01cfcf1e3254ae1a1f6e14
https://git.kernel.org/stable/c/6f2eee5457bc48b0426dedfd78cdbdea241a6edb
https://git.kernel.org/stable/c/66e9f2fb3e753f820bec2a98e8c6387029988320
https://git.kernel.org/stable/c/3ae75f82c33fa1b4ca2006b55c84f4ef4a428d4d