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]
Message-ID: <CAGXu5jL0E7ybLPvhFdwNxiHSa==QJr+fX45A-T8Ug7iXLhtW_A@mail.gmail.com>
Date:	Tue, 29 May 2012 09:28:57 -0700
From:	Kees Cook <keescook@...omium.org>
To:	Anton Vorontsov <anton.vorontsov@...aro.org>
Cc:	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	Colin Cross <ccross@...roid.com>,
	Tony Luck <tony.luck@...el.com>,
	Steven Rostedt <rostedt@...dmis.org>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Ingo Molnar <mingo@...hat.com>, Arnd Bergmann <arnd@...db.de>,
	John Stultz <john.stultz@...aro.org>,
	Shuah Khan <shuahkhan@...il.com>, arve@...roid.com,
	Rebecca Schultz Zavin <rebecca@...roid.com>,
	Jesper Juhl <jj@...osbits.net>,
	Randy Dunlap <rdunlap@...otime.net>,
	Stephen Boyd <sboyd@...eaurora.org>,
	Thomas Meyer <thomas@...3r.de>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Marco Stornelli <marco.stornelli@...il.com>,
	WANG Cong <xiyou.wangcong@...il.com>,
	linux-kernel@...r.kernel.org, devel@...verdev.osuosl.org,
	linaro-kernel@...ts.linaro.org, patches@...aro.org,
	kernel-team@...roid.com
Subject: Re: [PATCH 2/5] pstore: Introduce write_buf backend callback

On Sat, May 26, 2012 at 6:39 AM, Anton Vorontsov
<anton.vorontsov@...aro.org> wrote:
> For function tracing we need to stop using pstore.buf directly, since
> in a tracing callback we can't use spinlocks, and thus we can't safely
> use the global buffer.
>
> With write_buf callback, backends no longer need to access pstore.buf
> directly, and thus we can pass any buffers (e.g. allocated on stack).

Hrm, I thought the point of having pstore.buf pre-mapped was to allow
Oopses to be able to write directly to it without needing to hit any
additional kernel code. Maybe I'm misunderstanding this change,
though. I'd like to see Tony's opinion on it.

-Kees

> Signed-off-by: Anton Vorontsov <anton.vorontsov@...aro.org>
> ---
>  fs/pstore/platform.c   |   10 ++++++++++
>  include/linux/pstore.h |    4 ++++
>  2 files changed, 14 insertions(+)
>
> diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
> index be4614f..e7c0a52 100644
> --- a/fs/pstore/platform.c
> +++ b/fs/pstore/platform.c
> @@ -198,6 +198,14 @@ static void pstore_register_console(void)
>  static void pstore_register_console(void) {}
>  #endif
>
> +static int pstore_write_compat(enum pstore_type_id type,
> +                              enum kmsg_dump_reason reason,
> +                              u64 *id, unsigned int part,
> +                              size_t size, struct pstore_info *psi)
> +{
> +       return psi->write_buf(type, reason, id, part, psinfo->buf, size, psi);
> +}
> +
>  /*
>  * platform specific persistent storage driver registers with
>  * us here. If pstore is already mounted, call the platform
> @@ -222,6 +230,8 @@ int pstore_register(struct pstore_info *psi)
>                return -EINVAL;
>        }
>
> +       if (!psi->write)
> +               psi->write = pstore_write_compat;
>        psinfo = psi;
>        mutex_init(&psinfo->read_mutex);
>        spin_unlock(&pstore_lock);
> diff --git a/include/linux/pstore.h b/include/linux/pstore.h
> index 1bd014b..b107484 100644
> --- a/include/linux/pstore.h
> +++ b/include/linux/pstore.h
> @@ -48,6 +48,10 @@ struct pstore_info {
>        int             (*write)(enum pstore_type_id type,
>                        enum kmsg_dump_reason reason, u64 *id,
>                        unsigned int part, size_t size, struct pstore_info *psi);
> +       int             (*write_buf)(enum pstore_type_id type,
> +                       enum kmsg_dump_reason reason, u64 *id,
> +                       unsigned int part, const char *buf, size_t size,
> +                       struct pstore_info *psi);
>        int             (*erase)(enum pstore_type_id type, u64 id,
>                        struct pstore_info *psi);
>        void            *data;
> --
> 1.7.9.2
>



-- 
Kees Cook
Chrome OS Security
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ