Message ID | 20231005-opp-of-wunsequenced-v1-1-778815980a8d@kernel.org |
---|---|
State | Accepted |
Commit | 184ff4f721638e37a5a5907bf98962b6d9318ef6 |
Headers | show |
Series | OPP: Fix -Wunsequenced in _of_add_opp_table_v1() | expand |
diff --git a/drivers/opp/of.c b/drivers/opp/of.c index ade6d42cae46..ae5c405bbf9a 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -1077,9 +1077,11 @@ static int _of_add_opp_table_v1(struct device *dev, struct opp_table *opp_table) val = prop->value; while (nr) { + unsigned long freq = be32_to_cpup(val++) * 1000; + unsigned long volt = be32_to_cpup(val++); struct dev_pm_opp_data data = { - .freq = be32_to_cpup(val++) * 1000, - .u_volt = be32_to_cpup(val++), + .freq = freq, + .u_volt = volt, }; ret = _opp_add_v1(opp_table, dev, &data, false);
Clang warns (or errors with CONFIG_WERROR=y): drivers/opp/of.c:1081:28: error: multiple unsequenced modifications to 'val' [-Werror,-Wunsequenced] 1081 | .freq = be32_to_cpup(val++) * 1000, | ^ 1082 | .u_volt = be32_to_cpup(val++), | ~~ 1 error generated. There is no sequence point in a designated initializer. Move back to separate variables for the creation of the values, so that there are sequence points between each evaluation and increment of val. Closes: https://github.com/ClangBuiltLinux/linux/issues/1940 Fixes: 75bbc92c09d8 ("OPP: Add dev_pm_opp_add_dynamic() to allow more flexibility") Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- drivers/opp/of.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- base-commit: 3c4746e28af13fdd134d3c4312169fda0a8abef0 change-id: 20231005-opp-of-wunsequenced-a594ea4c053d Best regards,