]> xenbits.xensource.com Git - people/jgross/linux.git/commitdiff
firmware: arm_scmi: Fix sorting of retrieved clock rates
authorCristian Marussi <cristian.marussi@arm.com>
Fri, 18 Mar 2022 09:28:13 +0000 (09:28 +0000)
committerSudeep Holla <sudeep.holla@arm.com>
Mon, 4 Apr 2022 22:06:09 +0000 (23:06 +0100)
During SCMI Clock protocol initialization, after having retrieved from the
SCMI platform all the available discrete rates for a specific clock, the
clock rates array is sorted, unfortunately using a pointer to its end as
a base instead of its start, so that sorting does not work.

Fix invocation of sort() passing as base a pointer to the start of the
retrieved clock rates array.

Link: https://lore.kernel.org/r/20220318092813.49283-1-cristian.marussi@arm.com
Fixes: dccec73de91d ("firmware: arm_scmi: Keep the discrete clock rates sorted")
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/clock.c

index cf6fed6dec773b74c810309fc7c564f50abed93c..ef6431c6eb1ce78a9e51f3258924ff35a509071e 100644 (file)
@@ -210,7 +210,8 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,
 
        if (rate_discrete && rate) {
                clk->list.num_rates = tot_rate_cnt;
-               sort(rate, tot_rate_cnt, sizeof(*rate), rate_cmp_func, NULL);
+               sort(clk->list.rates, tot_rate_cnt, sizeof(*rate),
+                    rate_cmp_func, NULL);
        }
 
        clk->rate_discrete = rate_discrete;