On 11/17, Xu YiPing wrote: > From: Kaihua Zhong <zhongkaihua@xxxxxxxxxx> > + > +static struct clk_hw *hi3660_stub_clk_hw_get(struct of_phandle_args *clkspec, > + void *data) > +{ > + unsigned int idx = clkspec->args[0]; > + > + if (idx > HI3660_CLK_STUB_NUM) { This should be >= > + } > + > + return &hi3660_stub_clks[idx].hw; > +} > + > +static int hi3660_stub_clk_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct resource *res; > + unsigned int i; > + int ret; > + > + /* Use mailbox client without blocking */ > + stub_clk_chan.cl.dev = dev; > + stub_clk_chan.cl.tx_done = NULL; > + stub_clk_chan.cl.tx_block = false; > + stub_clk_chan.cl.knows_txdone = false; > + > + /* Allocate mailbox channel */ > + stub_clk_chan.mbox = mbox_request_channel(&stub_clk_chan.cl, 0); > + if (IS_ERR(stub_clk_chan.mbox)) > + return PTR_ERR(stub_clk_chan.mbox); > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + freq_reg = devm_ioremap(dev, res->start, resource_size(res)); > + if (IS_ERR(freq_reg)) Pretty sure this returns NULL on failure, not an error pointer. > + return -ENOMEM; > + > + freq_reg += HI3660_STUB_CLOCK_DATA; > + > + for (i = 0; i < HI3660_CLK_STUB_NUM; i++) { > + ret = devm_clk_hw_register(&pdev->dev, &hi3660_stub_clks[i].hw); > + if (ret) > + return ret; > + } > + > + ret = of_clk_add_hw_provider(pdev->dev.of_node, hi3660_stub_clk_hw_get, > + hi3660_stub_clks); This can use devm > + return ret; > +} > + I fixed it all and merged into clk-next. -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html