On Wed, May 16, 2012 at 09:45:35AM -0700, Kees Cook wrote:
On Wed, May 16, 2012 at 5:56 AM, Anton Vorontsov anton.vorontsov@linaro.org wrote:
This is all straightforward: we just use the last region for console logging. If there's just one region, we fall-back to the old behaviour: just a oops/dumps logging.
Signed-off-by: Anton Vorontsov anton.vorontsov@linaro.org
fs/pstore/ram.c | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-)
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index 9123cce..54213eb 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c [...] @@ -142,7 +148,12 @@ static int ramoops_pstore_write(enum pstore_type_id type, struct persistent_ram_zone *prz = cxt->przs[cxt->count]; size_t hlen;
- /* Currently ramoops is designed to only store dmesg dumps. */
- if (type == PSTORE_TYPE_CONSOLE) {
- if (!cxt->cprz)
- return -ENOMEM;
- persistent_ram_write(cxt->cprz, cxt->pstore.buf, size);
- }
if (type != PSTORE_TYPE_DMESG) return -EINVAL;
Doesn't this mean that type == PSTORE_TYPE_CONSOLE will write to the ram, but then fail with -EINVAL?
Right you are, there should be 'return 0' for TYPE_CONSOLE. It is harmless tho (and unnoticeable, since we can't check return value of the ->write() calback and print error, since this would recurse), but I'll surely amend that.
Thanks!