]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: airoha: Add NULL check for of_reserved_mem_lookup() in airoha_qdma_init_hfwd_que...
authorZhaoJinming <zhaojinming@uniontech.com>
Thu, 4 Jun 2026 07:03:52 +0000 (15:03 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 6 Jun 2026 01:25:14 +0000 (18:25 -0700)
of_reserved_mem_lookup() may return NULL if the reserved memory region
referenced by the "memory-region" phandle is not found in the reserved
memory table (e.g. due to a misconfigured DTS or a removed
memory-region node).  The current code dereferences the returned
pointer without checking for NULL, leading to a kernel NULL pointer
dereference at the following lines:

    dma_addr = rmem->base;                          // line 1156
    num_desc = div_u64(rmem->size, buf_size);       // line 1160

Add a NULL check after of_reserved_mem_lookup() and return -ENODEV if
the lookup fails, which is consistent with the existing error handling
for of_parse_phandle() failure in the same code block.

Fixes: 3a1ce9e3d01b ("net: airoha: Add the capability to allocate hwfd buffers via reserved-memory")
Cc: stable@vger.kernel.org
Signed-off-by: ZhaoJinming <zhaojinming@uniontech.com>
Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/airoha/airoha_eth.c

index eab6a98d62b9caf5eb69d221ba26b657ffd88b2f..31cdb11cd78dace139d7ba54e6a76b3e7cbc367a 100644 (file)
@@ -1153,6 +1153,9 @@ static int airoha_qdma_init_hfwd_queues(struct airoha_qdma *qdma)
 
                rmem = of_reserved_mem_lookup(np);
                of_node_put(np);
+               if (!rmem)
+                       return -ENODEV;
+
                dma_addr = rmem->base;
                /* Compute the number of hw descriptors according to the
                 * reserved memory size and the payload buffer size