This commit changes parameter of ramoops_free_przs() from
struct ramoops_context * into struct persistent_ram_zone * in order to
make it available for all prz array.

Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
Signed-off-by: Hiraku Toyooka <[email protected]>
Cc: Anton Vorontsov <[email protected]>
Cc: Colin Cross <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: Mark Salyzyn <[email protected]>
Cc: Seiji Aguchi <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Tony Luck <[email protected]>

V5:
  - No chnages.

V4:
  - Rebase

V3:
 - Split patch.
 - Rebase.
---
 fs/pstore/ram.c | 35 +++++++++++++++++------------------
 1 file changed, 17 insertions(+), 18 deletions(-)

diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index 1d887efaaf71..8ad2d6d8cec2 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -508,26 +508,16 @@ static struct ramoops_context oops_cxt = {
        },
 };
 
-static void ramoops_free_przs(struct ramoops_context *cxt)
+static void ramoops_free_przs(struct persistent_ram_zone **przs)
 {
        int i;
 
-       /* Free dump PRZs */
-       if (cxt->dprzs) {
-               for (i = 0; i < cxt->max_dump_cnt; i++)
-                       persistent_ram_free(cxt->dprzs[i]);
-
-               kfree(cxt->dprzs);
-               cxt->max_dump_cnt = 0;
-       }
+       if (!przs)
+               return;
 
-       /* Free ftrace PRZs */
-       if (cxt->fprzs) {
-               for (i = 0; i < cxt->max_ftrace_cnt; i++)
-                       persistent_ram_free(cxt->fprzs[i]);
-               kfree(cxt->fprzs);
-               cxt->max_ftrace_cnt = 0;
-       }
+       for (i = 0; !IS_ERR_OR_NULL(przs[i]); i++)
+               persistent_ram_free(przs[i]);
+       kfree(przs);
 }
 
 static int ramoops_init_przs(const char *name,
@@ -863,10 +853,13 @@ static int ramoops_probe(struct platform_device *pdev)
        cxt->pstore.bufsize = 0;
        persistent_ram_free(cxt->mprz);
 fail_init_mprz:
+       cxt->max_ftrace_cnt = 0;
+       ramoops_free_przs(cxt->fprzs);
 fail_init_fprz:
        persistent_ram_free(cxt->cprz);
 fail_init_cprz:
-       ramoops_free_przs(cxt);
+       cxt->max_dump_cnt = 0;
+       ramoops_free_przs(cxt->dprzs);
 fail_out:
        return err;
 }
@@ -882,7 +875,13 @@ static int ramoops_remove(struct platform_device *pdev)
 
        persistent_ram_free(cxt->mprz);
        persistent_ram_free(cxt->cprz);
-       ramoops_free_przs(cxt);
+
+       /* Free ftrace PRZs */
+       cxt->max_ftrace_cnt = 0;
+       ramoops_free_przs(cxt->fprzs);
+       /* Free dump PRZs */
+       cxt->max_dump_cnt = 0;
+       ramoops_free_przs(cxt->dprzs);
 
        return 0;
 }
-- 
2.11.0

Reply via email to