Hi Jorge, On 8/9/23 23:07, Jorge Lopez wrote: > Update steps how order list elements data and elements size are > evaluated > > Signed-off-by: Jorge Lopez <jorge.lopez2@xxxxxx> > > --- > 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++; > } I believe that you can replace the: if (part && ordered_list_data->elements_size < MAX_ELEMENTS_SIZE) ordered_list_data->elements_size++; } Lines with simply (after the loop has finished) doing: } ordered_list_data->elements_size = olist_elem' Or am I missing something ? Regards, Hans