On Fri, Feb 06, 2026 at 04:41:13PM +0300, Dan Carpenter wrote: > [ Smatch checking is paused while we raise funding. #SadFace > https://lore.kernel.org/all/[email protected]/ -dan ] > > Hello Peng Fan, > > Commit edd2a9956055 ("remoteproc: imx_rproc: Introduce prepare ops > for imx_rproc_dcfg") from Jan 9, 2026 (linux-next), leads to the > following Smatch static checker warning: > > drivers/remoteproc/imx_rproc.c:648 imx_rproc_prepare() > warn: ignoring unreachable code. > > drivers/remoteproc/imx_rproc.c > 605 static int imx_rproc_prepare(struct rproc *rproc) > 606 { > 607 struct imx_rproc *priv = rproc->priv; > 608 struct device_node *np = priv->dev->of_node; > 609 struct rproc_mem_entry *mem; > 610 int i = 0; > 611 u32 da; > 612 > 613 /* Register associated reserved memory regions */ > 614 while (1) { > 615 int err; > 616 struct resource res; > 617 > 618 err = of_reserved_mem_region_to_resource(np, i++, > &res); > 619 if (err) > 620 return 0; > 621 > 622 /* > 623 * Ignore the first memory region which will be used > vdev buffer. > 624 * No need to do extra handlings, > rproc_add_virtio_dev will handle it. > 625 */ > 626 if (strstarts(res.name, "vdev0buffer")) > 627 continue; > 628 > 629 if (strstarts(res.name, "rsc-table")) > 630 continue; > 631 > 632 /* No need to translate pa to da, i.MX use same map */ > 633 da = res.start; > 634 > 635 /* Register memory region */ > 636 mem = rproc_mem_entry_init(priv->dev, NULL, > (dma_addr_t)res.start, > 637 resource_size(&res), da, > 638 imx_rproc_mem_alloc, > imx_rproc_mem_release, > 639 "%.*s", > strchrnul(res.name, '@') - res.name, > 640 res.name); > 641 if (!mem) > 642 return -ENOMEM; > 643 > 644 rproc_coredump_add_segment(rproc, da, > resource_size(&res)); > 645 rproc_add_carveout(rproc, mem); > 646 } > 647 > --> 648 if (priv->ops && priv->ops->prepare) > 649 return priv->ops->prepare(rproc); > > This is unreachable code.
It looks like Dan (and Smatch) has a point. > > 650 > 651 return 0; > 652 } > > regards, > dan carpenter >

