[PATCH v5 1/5] pstore: Change parameter of ramoops_free_przs()

From: Nobuhiro Iwamatsu
Date: Sun Feb 26 2017 - 20:54:22 EST


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 <nobuhiro.iwamatsu.kw@xxxxxxxxxxx>
Signed-off-by: Hiraku Toyooka <hiraku.toyooka.gu@xxxxxxxxxxx>
Cc: Anton Vorontsov <anton@xxxxxxxxxx>
Cc: Colin Cross <ccross@xxxxxxxxxxx>
Cc: Kees Cook <keescook@xxxxxxxxxxxx>
Cc: Mark Salyzyn <salyzyn@xxxxxxxxxxx>
Cc: Seiji Aguchi <seiji.aguchi.tr@xxxxxxxxxxx>
Cc: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>
Cc: Tony Luck <tony.luck@xxxxxxxxx>

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