summaryrefslogtreecommitdiffstats
path: root/meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch')
-rw-r--r--meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch b/meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch
new file mode 100644
index 00000000..02024d11
--- /dev/null
+++ b/meta-egvirt/recipes-kernel/linux/linux-yocto/scmi/0001-firmware-arm_scmi-rework-scmi_sensors_protocol_init.patch
@@ -0,0 +1,69 @@
+From d9d8732bdf07755780f37cf083ead8b61ee3c95d Mon Sep 17 00:00:00 2001
+From: Cristian Marussi <cristian.marussi@arm.com>
+Date: Thu, 19 Nov 2020 17:49:01 +0000
+Subject: [PATCH] firmware: arm_scmi: rework scmi_sensors_protocol_init
+
+Properly handle return values from initialization helpers and avoid
+setting sensor_ops before sensor_priv.
+
+Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
+Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
+---
+ drivers/firmware/arm_scmi/sensors.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/firmware/arm_scmi/sensors.c b/drivers/firmware/arm_scmi/sensors.c
+index b4232d611033..6aaff478d032 100644
+--- a/drivers/firmware/arm_scmi/sensors.c
++++ b/drivers/firmware/arm_scmi/sensors.c
+@@ -2,7 +2,7 @@
+ /*
+ * System Control and Management Interface (SCMI) Sensor Protocol
+ *
+- * Copyright (C) 2018 ARM Ltd.
++ * Copyright (C) 2018-2020 ARM Ltd.
+ */
+
+ #define pr_fmt(fmt) "SCMI Notifications SENSOR - " fmt
+@@ -334,6 +334,7 @@ static const struct scmi_event_ops sensor_event_ops = {
+ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
+ {
+ u32 version;
++ int ret;
+ struct sensors_info *sinfo;
+
+ scmi_version_get(handle, SCMI_PROTOCOL_SENSOR, &version);
+@@ -344,15 +345,19 @@ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
+ sinfo = devm_kzalloc(handle->dev, sizeof(*sinfo), GFP_KERNEL);
+ if (!sinfo)
+ return -ENOMEM;
++ sinfo->version = version;
+
+- scmi_sensor_attributes_get(handle, sinfo);
+-
++ ret = scmi_sensor_attributes_get(handle, sinfo);
++ if (ret)
++ return ret;
+ sinfo->sensors = devm_kcalloc(handle->dev, sinfo->num_sensors,
+ sizeof(*sinfo->sensors), GFP_KERNEL);
+ if (!sinfo->sensors)
+ return -ENOMEM;
+
+- scmi_sensor_description_get(handle, sinfo);
++ ret = scmi_sensor_description_get(handle, sinfo);
++ if (ret)
++ return ret;
+
+ scmi_register_protocol_events(handle,
+ SCMI_PROTOCOL_SENSOR, SCMI_PROTO_QUEUE_SZ,
+@@ -360,9 +365,8 @@ static int scmi_sensors_protocol_init(struct scmi_handle *handle)
+ ARRAY_SIZE(sensor_events),
+ sinfo->num_sensors);
+
+- sinfo->version = version;
+- handle->sensor_ops = &sensor_ops;
+ handle->sensor_priv = sinfo;
++ handle->sensor_ops = &sensor_ops;
+
+ return 0;
+ }