[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230809210740.18392-1-jorge.lopez2@hp.com>
Date: Wed, 9 Aug 2023 16:07:40 -0500
From: Jorge Lopez <jorgealtxwork@...il.com>
To: hdegoede@...hat.com, platform-driver-x86@...r.kernel.org,
linux-kernel@...r.kernel.org, thomas@...ch.de,
ilpo.jarvinen@...ux.intel.com, dan.carpenter@...aro.org
Subject: [PATCH] hp-bioscfg: Update steps how order list elements are evaluated
Update steps how order list elements data and elements size are
evaluated
Signed-off-by: Jorge Lopez <jorge.lopez2@...com>
---
Based on the latest platform-drivers-x86.git/for-next
---
.../x86/hp/hp-bioscfg/order-list-attributes.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/hp/hp-bioscfg/order-list-attributes.c b/drivers/platform/x86/hp/hp-bioscfg/order-list-attributes.c
index b19644ed12e0..d2b61ab950d4 100644
--- a/drivers/platform/x86/hp/hp-bioscfg/order-list-attributes.c
+++ b/drivers/platform/x86/hp/hp-bioscfg/order-list-attributes.c
@@ -152,7 +152,7 @@ static int hp_populate_ordered_list_elements_from_package(union acpi_object *ord
switch (order_obj[elem].type) {
case ACPI_TYPE_STRING:
- if (elem != PREREQUISITES && elem != ORD_LIST_ELEMENTS) {
+ if (elem != PREREQUISITES) {
ret = hp_convert_hexstr_to_str(order_obj[elem].string.pointer,
order_obj[elem].string.length,
&str_value, &value_len);
@@ -266,6 +266,15 @@ static int hp_populate_ordered_list_elements_from_package(union acpi_object *ord
if (ret)
goto exit_list;
+ /*
+ * It is expected for the element size value
+ * to be 1 and not to represent the actual
+ * number of elements stored in comma
+ * separated format. element size value is
+ * recalculated to report the correct number
+ * of data elements found.
+ */
+
part_tmp = tmpstr;
part = strsep(&part_tmp, COMMA_SEP);
if (!part)
@@ -273,11 +282,14 @@ static int hp_populate_ordered_list_elements_from_package(union acpi_object *ord
tmpstr,
sizeof(ordered_list_data->elements[0]));
- for (olist_elem = 1; olist_elem < MAX_ELEMENTS_SIZE && part; olist_elem++) {
+ for (olist_elem = 0; olist_elem < MAX_ELEMENTS_SIZE && part; olist_elem++) {
strscpy(ordered_list_data->elements[olist_elem],
part,
sizeof(ordered_list_data->elements[olist_elem]));
+
part = strsep(&part_tmp, COMMA_SEP);
+ if (part && ordered_list_data->elements_size < MAX_ELEMENTS_SIZE)
+ ordered_list_data->elements_size++;
}
kfree(str_value);
--
2.34.1
Powered by blists - more mailing lists