The branch main has been updated by thj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=855c3dacfc6a1565a75086e64a154dece3ccf5fa

commit 855c3dacfc6a1565a75086e64a154dece3ccf5fa
Author:     Tom Jones <t...@freebsd.org>
AuthorDate: 2024-09-16 14:43:31 +0000
Commit:     Tom Jones <t...@freebsd.org>
CommitDate: 2024-09-16 14:45:26 +0000

    imx clk: Skip reconfiguring the clock if we don't have a new best_parent
    
    imx_clk_composite_find_best_parent can fail, when it does for all the
    clocks checked we attempt to configure an uninitialized best_parent
    leading to a panic.
    
    Initialize best_parent and skip reconfiguring the clock if we don't find
    a new best_parent to use.
    
    Reviewed By: manu
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D46662
---
 sys/arm64/freescale/imx/clk/imx_clk_composite.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sys/arm64/freescale/imx/clk/imx_clk_composite.c 
b/sys/arm64/freescale/imx/clk/imx_clk_composite.c
index 1d5ab5908d8c..3d2ef06fb8a2 100644
--- a/sys/arm64/freescale/imx/clk/imx_clk_composite.c
+++ b/sys/arm64/freescale/imx/clk/imx_clk_composite.c
@@ -217,6 +217,7 @@ imx_clk_composite_set_freq(struct clknode *clk, uint64_t 
fparent, uint64_t *fout
        p_names = clknode_get_parent_names(clk);
 
        best_diff = 0;
+       best_parent = -1;
 
        for (p_idx = 0; p_idx != clknode_get_parents_num(clk); p_idx++) {
                p_clk = clknode_find_by_name(p_names[p_idx]);
@@ -243,6 +244,10 @@ imx_clk_composite_set_freq(struct clknode *clk, uint64_t 
fparent, uint64_t *fout
        if (best_diff == INT64_MAX)
                return (ERANGE);
 
+       /* If we didn't find a new best_parent just return */
+       if (best_parent == -1)
+               return (0);
+
        if ((flags & CLK_SET_DRYRUN) != 0) {
                *fout = best;
                return (0);

Reply via email to