diff mbox series

[BlueZ] mesh: Fix node when loading from storage

Message ID 20230310013512.425033-1-inga.stotland@intel.com
State New
Headers show
Series [BlueZ] mesh: Fix node when loading from storage | expand

Commit Message

Inga Stotland March 10, 2023, 1:35 a.m. UTC
From: Inga Stotland <inga.stotland@gmail.com>

This fixes adding mandatory models (config server, remote provisioner)
to a node whose configuration is being loaded from storage:
mesh_model_add() was called with a wrong argument.

Was:     mesh_model_add(..., PRIMARY_ELE_IDX, ...);
Correct: mesh_model_add(..., ele->models, ...);
---
 mesh/node.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

Comments

patchwork-bot+bluetooth@kernel.org March 12, 2023, 7:10 p.m. UTC | #1
Hello:

This patch was applied to bluetooth/bluez.git (master)
by Brian Gix <brian.gix@gmail.com>:

On Thu,  9 Mar 2023 17:35:12 -0800 you wrote:
> From: Inga Stotland <inga.stotland@gmail.com>
> 
> This fixes adding mandatory models (config server, remote provisioner)
> to a node whose configuration is being loaded from storage:
> mesh_model_add() was called with a wrong argument.
> 
> Was:     mesh_model_add(..., PRIMARY_ELE_IDX, ...);
> Correct: mesh_model_add(..., ele->models, ...);
> 
> [...]

Here is the summary with links:
  - [BlueZ] mesh: Fix node when loading from storage
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=40576ac1badf

You are awesome, thank you!
diff mbox series

Patch

diff --git a/mesh/node.c b/mesh/node.c
index ed3212685..93537c5ba 100644
--- a/mesh/node.c
+++ b/mesh/node.c
@@ -347,6 +347,7 @@  static bool add_elements_from_storage(struct mesh_node *node,
 					struct mesh_config_node *db_node)
 {
 	const struct l_queue_entry *entry;
+	struct node_element *ele;
 
 	entry = l_queue_get_entries(db_node->elements);
 
@@ -354,14 +355,19 @@  static bool add_elements_from_storage(struct mesh_node *node,
 		if (!add_element_from_storage(node, entry->data))
 			return false;
 
+	ele = l_queue_find(node->elements, match_element_idx,
+						L_UINT_TO_PTR(PRIMARY_ELE_IDX));
+	if (!ele)
+		return false;
+
 	/* Add configuration server model on the primary element */
-	mesh_model_add(node, PRIMARY_ELE_IDX, CONFIG_SRV_MODEL, NULL);
+	mesh_model_add(node, ele->models, CONFIG_SRV_MODEL, NULL);
 
 	/* Add remote provisioning models on the primary element */
-	mesh_model_add(node, PRIMARY_ELE_IDX, REM_PROV_SRV_MODEL, NULL);
+	mesh_model_add(node, ele->models, REM_PROV_SRV_MODEL, NULL);
 
 	if (node->provisioner)
-		mesh_model_add(node, PRIMARY_ELE_IDX, REM_PROV_CLI_MODEL, NULL);
+		mesh_model_add(node, ele->models, REM_PROV_CLI_MODEL, NULL);
 
 	return true;
 }