]> git.itanic.dy.fi Git - linux-stable/commitdiff
RDMA/uverbs: Check for null return of kmalloc_array
authorJiasheng Jiang <jiasheng@iscas.ac.cn>
Fri, 31 Dec 2021 09:33:15 +0000 (17:33 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 11 Jan 2022 14:23:31 +0000 (15:23 +0100)
commit 7694a7de22c53a312ea98960fcafc6ec62046531 upstream.

Because of the possible failure of the allocation, data might be NULL
pointer and will cause the dereference of the NULL pointer later.
Therefore, it might be better to check it and return -ENOMEM.

Fixes: 6884c6c4bd09 ("RDMA/verbs: Store the write/write_ex uapi entry points in the uverbs_api")
Link: https://lore.kernel.org/r/20211231093315.1917667-1-jiasheng@iscas.ac.cn
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/core/uverbs_uapi.c

index 00c5478871322a7a85274140b593eb23ebf451e2..818699b855c5c753168ea7f2e7eb7e242c3819ca 100644 (file)
@@ -450,6 +450,9 @@ static int uapi_finalize(struct uverbs_api *uapi)
        uapi->num_write_ex = max_write_ex + 1;
        data = kmalloc_array(uapi->num_write + uapi->num_write_ex,
                             sizeof(*uapi->write_methods), GFP_KERNEL);
+       if (!data)
+               return -ENOMEM;
+
        for (i = 0; i != uapi->num_write + uapi->num_write_ex; i++)
                data[i] = &uapi->notsupp_method;
        uapi->write_methods = data;