On 2022/06/16 5:45, Serge Semin wrote: [...] >>> + hpriv->clks = devm_kzalloc(dev, sizeof(*hpriv->clks), GFP_KERNEL); >>> + if (!hpriv->clks) { >>> + rc = -ENOMEM; >>> + goto err_out; >>> + } >>> + hpriv->clks->clk = devm_clk_get_optional(dev, NULL); > >>> + if (IS_ERR(hpriv->clks->clk)) { >>> + rc = PTR_ERR(hpriv->clks->clk); >>> + goto err_out; >>> + } else if (hpriv->clks->clk) { >> >> Nit: the else is not needed here. > > Well, it depends on what you see behind it. I see many reasons to keep > it and only one tiny reason to drop it. Keeping it will improve the > code readability and maintainability like having a more natural > execution flow representation, thus clearer read-flow (else part as > exception to the if part), less modifications should the goto part is > changed/removed, a more exact program flow representation can be used > by the compiler for some internal optimizations, it's one line shorter > than the case we no 'else' here. On the other hand indeed we can drop > it since if the conditional statement is true, the code afterwards > won't be executed due to the goto operator. But as I see it dropping > the else operator won't improve anything, but vise-versa will worsen > the code instead. So if I get to miss something please justify why you > want it being dropped, otherwise I would rather preserve it. An else after a goto or return is never necessary and in my opinion makes the code harder to read. I am not interested in debating this in general anyway. For this particular case, the code would be: hpriv->clks->clk = devm_clk_get_optional(dev, NULL); if (IS_ERR(hpriv->clks->clk)) { /* Error path */ rc = PTR_ERR(hpriv->clks->clk); goto err_out; } /* Normal path */ if (hpriv->clks->clk) { ... } Which in my opinion is a lot easier to understand compared to having to parse the if/else if and figure out which case in that sequence is normal vs error. As noted, this is a nit. If you really insist, keep that else if. > > -Sergey > >> >>> + hpriv->clks->id = __clk_get_name(hpriv->clks->clk); >>> + hpriv->n_clks = 1; >>> } >>> - hpriv->clks[i] = clk; >>> } >>> >>> hpriv->ahci_regulator = devm_regulator_get(dev, "ahci"); >> >> >> -- >> Damien Le Moal >> Western Digital Research -- Damien Le Moal Western Digital Research