@@ -70,6 +70,7 @@ struct ramoops_context {
bool ecc;
unsigned int count;
unsigned int max_count;
+ unsigned int max_dump_count;
unsigned int read_count;
struct pstore_info pstore;
};
@@ -94,7 +95,7 @@ static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type,
struct ramoops_context *cxt = psi->data;
struct persistent_ram_zone *prz;
- if (cxt->read_count >= cxt->max_count)
+ if (cxt->read_count >= cxt->max_dump_count)
return -EINVAL;
*id = cxt->read_count++;
@@ -172,7 +173,7 @@ static int ramoops_pstore_write(enum pstore_type_id type,
size = prz->buffer_size - hlen;
persistent_ram_write(prz, cxt->pstore.buf, size);
- cxt->count = (cxt->count + 1) % cxt->max_count;
+ cxt->count = (cxt->count + 1) % cxt->max_dump_count;
return 0;
}
@@ -182,7 +183,7 @@ static int ramoops_pstore_erase(enum pstore_type_id type, u64 id,
{
struct ramoops_context *cxt = psi->data;
- if (id >= cxt->max_count)
+ if (id >= cxt->max_dump_count)
return -EINVAL;
persistent_ram_free_old(cxt->przs[id]);
@@ -213,7 +214,7 @@ static int __init ramoops_probe(struct platform_device *pdev)
/* Only a single ramoops area allowed at a time, so fail extra
* probes.
*/
- if (cxt->max_count)
+ if (cxt->max_dump_count)
goto fail_out;
if (!pdata->mem_size || !pdata->record_size) {
@@ -240,6 +241,7 @@ static int __init ramoops_probe(struct platform_device *pdev)
}
cxt->max_count = pdata->mem_size / pdata->record_size;
+ cxt->max_dump_count = cxt->max_count;
cxt->count = 0;
cxt->size = pdata->mem_size;
cxt->phys_addr = pdata->mem_address;
@@ -247,14 +249,14 @@ static int __init ramoops_probe(struct platform_device *pdev)
cxt->dump_oops = pdata->dump_oops;
cxt->ecc = pdata->ecc;
- cxt->przs = kzalloc(sizeof(*cxt->przs) * cxt->max_count, GFP_KERNEL);
+ cxt->przs = kzalloc(sizeof(*cxt->przs) * cxt->max_dump_count, GFP_KERNEL);
if (!cxt->przs) {
err = -ENOMEM;
dev_err(dev, "failed to initialize a prz array\n");
goto fail_out;
}
- for (i = 0; i < cxt->max_count; i++) {
+ for (i = 0; i < cxt->max_dump_count; i++) {
size_t sz = cxt->record_size;
phys_addr_t start = cxt->phys_addr + sz * i;
@@ -303,6 +305,7 @@ fail_buf:
fail_clear:
cxt->pstore.bufsize = 0;
cxt->max_count = 0;
+ cxt->max_dump_count = 0;
fail_przs:
for (i = 0; cxt->przs[i]; i++)
persistent_ram_free(cxt->przs[i]);
So far it is the same as max_count, but this will change when we'll add support for other message types (e.g. console, mce, tracing). Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> --- fs/pstore/ram.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)