]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:35:15 +0000 (16:35 +0100)
commitf21c3fdb96833aac2f533506899fe38c19cf49d5
tree74e9119f55f12435e068971c295ff7c4d37b6084
parent6348d70af847b79805374fe628d3809a63fd7df3
libceph: make free_choose_arg_map() resilient to partial allocation

commit e3fe30e57649c551757a02e1cad073c47e1e075e upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ceph/osdmap.c