IB/uverbs: Fix an potential error pointer dereference
authorXiang Yang <xiangyang3@huawei.com>
Fri, 4 Aug 2023 02:25:25 +0000 (10:25 +0800)
committerLeon Romanovsky <leon@kernel.org>
Mon, 7 Aug 2023 13:49:59 +0000 (16:49 +0300)
smatch reports the warning below:
drivers/infiniband/core/uverbs_std_types_counters.c:110
ib_uverbs_handler_UVERBS_METHOD_COUNTERS_READ() error: 'uattr'
dereferencing possible ERR_PTR()

The return value of uattr maybe ERR_PTR(-ENOENT), fix this by checking
the value of uattr before using it.

Fixes: ebb6796bd397 ("IB/uverbs: Add read counters support")
Signed-off-by: Xiang Yang <xiangyang3@huawei.com>
Link: https://lore.kernel.org/r/20230804022525.1916766-1-xiangyang3@huawei.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/uverbs_std_types_counters.c

index 999da9c7986687dc2e8392675ef150c0702d76df..381aa57976417c51628d6c197cb353891b9473a9 100644 (file)
@@ -107,6 +107,8 @@ static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_READ)(
                return ret;
 
        uattr = uverbs_attr_get(attrs, UVERBS_ATTR_READ_COUNTERS_BUFF);
+       if (IS_ERR(uattr))
+               return PTR_ERR(uattr);
        read_attr.ncounters = uattr->ptr_attr.len / sizeof(u64);
        read_attr.counters_buff = uverbs_zalloc(
                attrs, array_size(read_attr.ncounters, sizeof(u64)));