soc/cavium/cn81xx: Don't directly manipulate devicetree data

As preparation to constify devicetree data, do it the right way.

Change-Id: I5081de020bb73c56aa8bdf7bb17fe6b2913d0ffe
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/28266
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
diff --git a/src/soc/cavium/cn81xx/soc.c b/src/soc/cavium/cn81xx/soc.c
index dfb06e0..4a4312d 100644
--- a/src/soc/cavium/cn81xx/soc.c
+++ b/src/soc/cavium/cn81xx/soc.c
@@ -241,12 +241,24 @@
 			       __func__);
 			continue;
 		}
+
+		u32 *data_cleaned = malloc(size);
+		if (!data_cleaned)
+			continue;
+
+		size_t n = 0;
+		/* Remove phandle from mmu-masters list */
 		for (size_t j = 0; j < size / (sizeof(u32) * 2); j++)
-			if (be32_to_cpu(data[j * 2]) == phandle) {
-				data[j * 2] = 0;
-				data[j * 2 + 1] = 0;
-				break;
+			if (be32_to_cpu(data[j * 2]) != phandle) {
+				data_cleaned[n * 2] = data[j * 2];
+				data_cleaned[n * 2 + 1] = data[j * 2 + 1];
+				n++;
 			}
+
+		dt_add_bin_prop(dt_node, "mmu-masters", data_cleaned,
+				n * sizeof(u32) * 2);
+
+		free(data_cleaned);
 	}
 
 	/* Remove QLM mode entries */