lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 8 Mar 2017 01:22:01 +0900
From:   Namhyung Kim <namhyung@...il.com>
To:     Kees Cook <keescook@...omium.org>
Cc:     LKML <linux-kernel@...r.kernel.org>,
        Nobuhiro Iwamatsu <nobuhiro.iwamatsu.kw@...achi.com>,
        Qiuxu Zhuo <qiuxu.zhuo@...el.com>,
        Ard Biesheuvel <ard.biesheuvel@...aro.org>,
        Anton Vorontsov <anton@...msg.org>,
        Colin Cross <ccross@...roid.com>,
        Tony Luck <tony.luck@...el.com>,
        Benjamin Herrenschmidt <benh@...nel.crashing.org>,
        Paul Mackerras <paulus@...ba.org>,
        Michael Ellerman <mpe@...erman.id.au>,
        "Rafael J. Wysocki" <rjw@...ysocki.net>,
        Len Brown <lenb@...nel.org>,
        Matt Fleming <matt@...eblueprint.co.uk>,
        Nathan Fontenot <nfont@...ux.vnet.ibm.com>,
        Pan Xinhui <xinhui.pan@...ux.vnet.ibm.com>,
        Daniel Axtens <dja@...ens.net>,
        Paul Gortmaker <paul.gortmaker@...driver.com>,
        Geliang Tang <geliangtang@....com>,
        linuxppc-dev@...ts.ozlabs.org, linux-acpi@...r.kernel.org,
        linux-efi@...r.kernel.org, linux-doc@...r.kernel.org
Subject: Re: [PATCH 06/18] pstore: Extract common arguments into structure

On Tue, Mar 7, 2017 at 6:55 AM, Kees Cook <keescook@...omium.org> wrote:
> The read/mkfile pair pass the same arguments and should be cleared
> between calls. Move to a structure and wipe it after every loop.
>
> Signed-off-by: Kees Cook <keescook@...omium.org>
> ---
>  fs/pstore/platform.c   | 55 +++++++++++++++++++++++++++-----------------------
>  include/linux/pstore.h | 28 ++++++++++++++++++++++++-
>  2 files changed, 57 insertions(+), 26 deletions(-)
>
> diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
> index 320a673ecb5b..3fa1575a6e36 100644
> --- a/fs/pstore/platform.c
> +++ b/fs/pstore/platform.c
> @@ -766,16 +766,9 @@ EXPORT_SYMBOL_GPL(pstore_unregister);
>  void pstore_get_records(int quiet)
>  {
>         struct pstore_info *psi = psinfo;
> -       char                    *buf = NULL;
> -       ssize_t                 size;
> -       u64                     id;
> -       int                     count;
> -       enum pstore_type_id     type;
> -       struct timespec         time;
> +       struct pstore_record    record = { .psi = psi, };
>         int                     failed = 0, rc;
> -       bool                    compressed;
>         int                     unzipped_len = -1;
> -       ssize_t                 ecc_notice_size = 0;
>
>         if (!psi)
>                 return;
> @@ -784,39 +777,51 @@ void pstore_get_records(int quiet)
>         if (psi->open && psi->open(psi))
>                 goto out;
>
> -       while ((size = psi->read(&id, &type, &count, &time, &buf, &compressed,
> -                                &ecc_notice_size, psi)) > 0) {
> -               if (compressed && (type == PSTORE_TYPE_DMESG)) {
> +       while ((record.size = psi->read(&record.id, &record.type,
> +                                &record.count, &record.time,
> +                                &record.buf, &record.compressed,
> +                                &record.ecc_notice_size,
> +                                record.psi)) > 0) {
> +               if (record.compressed &&
> +                   record.type == PSTORE_TYPE_DMESG) {
>                         if (big_oops_buf)
> -                               unzipped_len = pstore_decompress(buf,
> -                                                       big_oops_buf, size,
> +                               unzipped_len = pstore_decompress(
> +                                                       record.buf,
> +                                                       big_oops_buf,
> +                                                       record.size,
>                                                         big_oops_buf_sz);
>
>                         if (unzipped_len > 0) {
> -                               if (ecc_notice_size)
> +                               if (record.ecc_notice_size)
>                                         memcpy(big_oops_buf + unzipped_len,
> -                                              buf + size, ecc_notice_size);
> -                               kfree(buf);
> -                               buf = big_oops_buf;
> -                               size = unzipped_len;
> -                               compressed = false;
> +                                              record.buf + recorrecord.size,

A typo on record.size.

Thanks,
Namhyung

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ