From: Kees Cook <[email protected]>

The argument list for the pstore_read() interface is unwieldy. This changes
passes the new struct pstore_record instead. The erst backend was already
doing something similar internally.

Signed-off-by: Kees Cook <[email protected]>
---
 fs/pstore/platform.c   |  5 +----
 fs/pstore/ram.c        | 29 +++++++++++++++++------------
 include/linux/pstore.h |  4 +---
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index bad735e574..54fe60bf88 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -181,10 +181,7 @@ void pstore_get_records(int quiet)
        if (psi->open && psi->open(psi))
                goto out;
 
-       while ((record.size = psi->read(&record.id, &record.type,
-                                       &record.count,
-                                       &record.buf, &record.compressed,
-                                       record.psi)) > 0) {
+       while ((record.size = psi->read(&record)) > 0) {
                if (record.compressed &&
                    record.type == PSTORE_TYPE_DMESG) {
                        pr_err("barebox does not have ramoops compression 
support\n");
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index 714755bd66..fcf6b3087c 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -128,27 +128,32 @@ static bool prz_ok(struct persistent_ram_zone *prz)
                           persistent_ram_ecc_string(prz, NULL, 0));
 }
 
-static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type,
-                                  int *count, char **buf, bool *compressed,
-                                  struct pstore_info *psi)
+static ssize_t ramoops_pstore_read(struct pstore_record *record)
 {
        ssize_t size;
        ssize_t ecc_notice_size;
-       struct ramoops_context *cxt = psi->data;
+       struct ramoops_context *cxt = record->psi->data;
        struct persistent_ram_zone *prz;
 
+       record->compressed = false;
+
        prz = ramoops_get_next_prz(cxt->przs, &cxt->dump_read_cnt,
-                                  cxt->max_dump_cnt, id, type,
+                                  cxt->max_dump_cnt, &record->id,
+                                  &record->type,
                                   PSTORE_TYPE_DMESG, 0);
        if (!prz_ok(prz))
                prz = ramoops_get_next_prz(&cxt->cprz, &cxt->console_read_cnt,
-                                          1, id, type, PSTORE_TYPE_CONSOLE, 0);
+                                          1, &record->id, &record->type,
+                                          PSTORE_TYPE_CONSOLE, 0);
+
        if (!prz_ok(prz))
                prz = ramoops_get_next_prz(&cxt->fprz, &cxt->ftrace_read_cnt,
-                                          1, id, type, PSTORE_TYPE_FTRACE, 0);
+                                          1, &record->id, &record->type,
+                                          PSTORE_TYPE_FTRACE, 0);
        if (!prz_ok(prz))
                prz = ramoops_get_next_prz(&cxt->mprz, &cxt->pmsg_read_cnt,
-                                          1, id, type, PSTORE_TYPE_PMSG, 0);
+                                          1, &record->id, &record->type,
+                                          PSTORE_TYPE_PMSG, 0);
        if (!prz_ok(prz))
                return 0;
 
@@ -160,12 +165,12 @@ static ssize_t ramoops_pstore_read(u64 *id, enum 
pstore_type_id *type,
        /* ECC correction notice */
        ecc_notice_size = persistent_ram_ecc_string(prz, NULL, 0);
 
-       *buf = kmalloc(size + ecc_notice_size + 1, GFP_KERNEL);
-       if (*buf == NULL)
+       record->buf = kmalloc(size + ecc_notice_size + 1, GFP_KERNEL);
+       if (record->buf == NULL)
                return -ENOMEM;
 
-       memcpy(*buf, (char *)persistent_ram_old(prz), size);
-       persistent_ram_ecc_string(prz, *buf + size, ecc_notice_size + 1);
+       memcpy(record->buf, (char *)persistent_ram_old(prz), size);
+       persistent_ram_ecc_string(prz, record->buf + size, ecc_notice_size + 1);
 
        return size + ecc_notice_size;
 }
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index 23f35570aa..b136c354b9 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -66,9 +66,7 @@ struct pstore_info {
        int             flags;
        int             (*open)(struct pstore_info *psi);
        int             (*close)(struct pstore_info *psi);
-       ssize_t         (*read)(u64 *id, enum pstore_type_id *type,
-                       int *count, char **buf, bool *compressed,
-                       struct pstore_info *psi);
+       ssize_t         (*read)(struct pstore_record *record);
        int             (*write)(enum pstore_type_id type,
                        enum kmsg_dump_reason reason, u64 *id,
                        unsigned int part, int count, bool compressed,
-- 
2.11.0


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to