Move freeing a distro_rauc_priv struct to a new, separate function for
better reuse.

Signed-off-by: Martin Schwan <m.sch...@phytec.de>
---
 boot/bootmeth_rauc.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c
index 
c8efdce75b9134d1c329be40a1eecc57977ffff1..f781a7fc0b5153b952afc8da38b17d93e073485d
 100644
--- a/boot/bootmeth_rauc.c
+++ b/boot/bootmeth_rauc.c
@@ -52,6 +52,18 @@ struct distro_rauc_priv {
        struct distro_rauc_slot **slots;
 };
 
+static void distro_rauc_priv_free(struct distro_rauc_priv *priv)
+{
+       int i;
+
+       for (i = 0; priv->slots[i]; i++) {
+               free(priv->slots[i]->name);
+               free(priv->slots[i]);
+       }
+       free(priv->slots);
+       free(priv);
+}
+
 static struct distro_rauc_slot *get_slot(struct distro_rauc_priv *priv,
                                         const char *slot_name)
 {
@@ -187,11 +199,7 @@ static int distro_rauc_read_bootflow(struct udevice *dev, 
struct bootflow *bflow
 
        ret = distro_rauc_scan_parts(bflow);
        if (ret < 0) {
-               for (i = 0; priv->slots[i]; i++) {
-                       free(priv->slots[i]->name);
-                       free(priv->slots[i]);
-               }
-               free(priv);
+               distro_rauc_priv_free(priv);
                free(boot_order_copy);
                return ret;
        }

-- 
2.50.1

Reply via email to