Re: [PATCH] pstore: set ecc_notice_size to zero

From: Kees Cook
Date: Thu Jun 02 2016 - 12:03:11 EST


On Wed, Jun 1, 2016 at 10:17 PM, Geliang Tang <geliangtang@xxxxxxxxx> wrote:
> Since a @ecc_notice_size parameter has been added in pstore_info.read(),
> this patch sets this parameter to zero in efi_pstore_read() and
> erst_reader().
>
> Signed-off-by: Geliang Tang <geliangtang@xxxxxxxxx>

Thanks! I'll get this added.

-Kees

> ---
> drivers/acpi/apei/erst.c | 1 +
> drivers/firmware/efi/efi-pstore.c | 5 +++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
> index 3024edf..f096ab3 100644
> --- a/drivers/acpi/apei/erst.c
> +++ b/drivers/acpi/apei/erst.c
> @@ -1035,6 +1035,7 @@ skip:
> memcpy(*buf, rcd->data, len - sizeof(*rcd));
> *id = record_id;
> *compressed = false;
> + *ecc_notice_size = 0;
> if (uuid_le_cmp(rcd->sec_hdr.section_type,
> CPER_SECTION_TYPE_DMESG_Z) == 0) {
> *type = PSTORE_TYPE_DMESG;
> diff --git a/drivers/firmware/efi/efi-pstore.c b/drivers/firmware/efi/efi-pstore.c
> index cd8c35f..d5903ea 100644
> --- a/drivers/firmware/efi/efi-pstore.c
> +++ b/drivers/firmware/efi/efi-pstore.c
> @@ -34,6 +34,7 @@ struct pstore_read_data {
> int *count;
> struct timespec *timespec;
> bool *compressed;
> + ssize_t *ecc_notice_size;
> char **buf;
> };
>
> @@ -69,6 +70,7 @@ static int efi_pstore_read_func(struct efivar_entry *entry, void *data)
> *cb_data->compressed = true;
> else
> *cb_data->compressed = false;
> + *cb_data->ecc_notice_size = 0;
> } else if (sscanf(name, "dump-type%u-%u-%d-%lu",
> cb_data->type, &part, &cnt, &time) == 4) {
> *cb_data->id = generic_id(time, part, cnt);
> @@ -76,6 +78,7 @@ static int efi_pstore_read_func(struct efivar_entry *entry, void *data)
> cb_data->timespec->tv_sec = time;
> cb_data->timespec->tv_nsec = 0;
> *cb_data->compressed = false;
> + *cb_data->ecc_notice_size = 0;
> } else if (sscanf(name, "dump-type%u-%u-%lu",
> cb_data->type, &part, &time) == 3) {
> /*
> @@ -88,6 +91,7 @@ static int efi_pstore_read_func(struct efivar_entry *entry, void *data)
> cb_data->timespec->tv_sec = time;
> cb_data->timespec->tv_nsec = 0;
> *cb_data->compressed = false;
> + *cb_data->ecc_notice_size = 0;
> } else
> return 0;
>
> @@ -221,6 +225,7 @@ static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
> data.count = count;
> data.timespec = timespec;
> data.compressed = compressed;
> + data.ecc_notice_size = ecc_notice_size;
> data.buf = buf;
>
> *data.buf = kzalloc(EFIVARS_DATA_SIZE_MAX, GFP_KERNEL);
> --
> 1.9.1
>



--
Kees Cook
Chrome OS & Brillo Security