summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-03-27 15:57:19 +0200
committerArnd Bergmann <arnd@arndb.de>2018-03-27 15:57:19 +0200
commitf8d6dc78b8b994cf6903879ab6abf3cb25b76daf (patch)
tree8a3aa04d6b7873bef12f957648e58b34d268950d
parentb701b41bb4f6304e95fffb1c2b2f0bb9158a2245 (diff)
parent7f9badfceffc6d2ae331050f1cd155a633130437 (diff)
downloadlinux-f8d6dc78b8b994cf6903879ab6abf3cb25b76daf.tar.gz
linux-f8d6dc78b8b994cf6903879ab6abf3cb25b76daf.tar.bz2
linux-f8d6dc78b8b994cf6903879ab6abf3cb25b76daf.zip
Merge tag 'scmi-fixes-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into next/drivers
Pull "ARM SCMI fixes/cleanups for v4.17" from Sudeep Holla: Couple of fixes for build warning due to uninitialised variable and static checker warning for passing NULL pointer to PTR_ERR. It also contains cleanup suggested by Stephen Boyd in SCMI clock driver using the new devm_of_clk_add_hw_provider() API. * tag 'scmi-fixes-4.17' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux: clk: scmi: use devm_of_clk_add_hw_provider() API and drop scmi_clocks_remove firmware: arm_scmi: prevent accessing rate_discrete uninitialized hwmon: (scmi) return -EINVAL when sensor information is unavailable
-rw-r--r--drivers/clk/clk-scmi.c12
-rw-r--r--drivers/firmware/arm_scmi/clock.c5
-rw-r--r--drivers/hwmon/scmi-hwmon.c2
3 files changed, 6 insertions, 13 deletions
diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c
index 26f1476d4a79..488c21376b55 100644
--- a/drivers/clk/clk-scmi.c
+++ b/drivers/clk/clk-scmi.c
@@ -172,15 +172,8 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
}
}
- return of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_data);
-}
-
-static void scmi_clocks_remove(struct scmi_device *sdev)
-{
- struct device *dev = &sdev->dev;
- struct device_node *np = dev->of_node;
-
- of_clk_del_provider(np);
+ return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
+ clk_data);
}
static const struct scmi_device_id scmi_id_table[] = {
@@ -192,7 +185,6 @@ MODULE_DEVICE_TABLE(scmi, scmi_id_table);
static struct scmi_driver scmi_clocks_driver = {
.name = "scmi-clocks",
.probe = scmi_clocks_probe,
- .remove = scmi_clocks_remove,
.id_table = scmi_id_table,
};
module_scmi_driver(scmi_clocks_driver);
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index e8ffad33a0ff..e6f17825db79 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -125,7 +125,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id,
{
u64 *rate;
int ret, cnt;
- bool rate_discrete;
+ bool rate_discrete = false;
u32 tot_rate_cnt = 0, rates_flag;
u16 num_returned, num_remaining;
struct scmi_xfer *t;
@@ -147,7 +147,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id,
ret = scmi_do_xfer(handle, t);
if (ret)
- break;
+ goto err;
rates_flag = le32_to_cpu(rlist->num_rates_flags);
num_remaining = NUM_REMAINING(rates_flag);
@@ -185,6 +185,7 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id,
if (rate_discrete)
clk->list.num_rates = tot_rate_cnt;
+err:
scmi_one_xfer_put(handle, t);
return ret;
}
diff --git a/drivers/hwmon/scmi-hwmon.c b/drivers/hwmon/scmi-hwmon.c
index 32e750373ced..363bf56eb0f2 100644
--- a/drivers/hwmon/scmi-hwmon.c
+++ b/drivers/hwmon/scmi-hwmon.c
@@ -138,7 +138,7 @@ static int scmi_hwmon_probe(struct scmi_device *sdev)
for (i = 0; i < nr_sensors; i++) {
sensor = handle->sensor_ops->info_get(handle, i);
if (!sensor)
- return PTR_ERR(sensor);
+ return -EINVAL;
switch (sensor->type) {
case TEMPERATURE_C: