]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commit
libceph: make free_choose_arg_map() resilient to partial allocation
authorTuo Li <islituo@gmail.com>
Sat, 20 Dec 2025 18:11:49 +0000 (02:11 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 5 Jan 2026 12:28:26 +0000 (13:28 +0100)
commite3fe30e57649c551757a02e1cad073c47e1e075e
tree32f7f7bc242d294aeb27f053549e8fa381c2c2d5
parentbc417a4baf0badbcb30325cabdaf433d8256c0e3
libceph: make free_choose_arg_map() resilient to partial allocation

free_choose_arg_map() may dereference a NULL pointer if its caller fails
after a partial allocation.

For example, in decode_choose_args(), if allocation of arg_map->args
fails, execution jumps to the fail label and free_choose_arg_map() is
called. Since arg_map->size is updated to a non-zero value before memory
allocation, free_choose_arg_map() will iterate over arg_map->args and
dereference a NULL pointer.

To prevent this potential NULL pointer dereference and make
free_choose_arg_map() more resilient, add checks for pointers before
iterating.

Cc: stable@vger.kernel.org
Co-authored-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Tuo Li <islituo@gmail.com>
Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/osdmap.c