All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Terrell <terrelln@fb.com>
To: Kees Cook <keescook@chromium.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Chris Mason <clm@fb.com>,
	"linux-kbuild@vger.kernel.org" <linux-kbuild@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	Petr Malat <oss@malat.biz>, Kernel Team <Kernel-team@fb.com>,
	Nick Terrell <nickrterrell@gmail.com>,
	Adam Borowski <kilobyte@angband.pl>,
	Patrick Williams <patrickw3@fb.com>,
	"Michael van der Westhuizen" <rmikey@fb.com>,
	"mingo@kernel.org" <mingo@kernel.org>
Subject: Re: [PATCH v2 2/7] lib: prepare xxhash for preboot environment
Date: Thu, 19 Mar 2020 00:54:45 +0000	[thread overview]
Message-ID: <CE7DA1F7-651B-4ADF-859E-2AB1E7E4F5FB@fb.com> (raw)
In-Reply-To: <202003181545.B6CBE5FD@keescook>

> On Mar 18, 2020, at 3:45 PM, Kees Cook <keescook@chromium.org> wrote:
> 
> On Tue, Mar 17, 2020 at 05:22:58PM -0700, Nick Terrell wrote:
>> Don't export symbols if PREBOOT is defined.
>> 
>> This change is necessary to get xxhash to work in a preboot environment,
>> which is needed to support zstd-compressed kernels.
> 
> Hmm, I thought using this:
> 
> #define __DISABLE_EXPORTS
> 
> before the #include of the .c files solved this?

I was able to get __DISABLE_EXPORTS to work. However, that still leaves the
MODULE_LICENSE() and MODULE_DESCRIPTION() in. I would prefer to use
the same method other decompressors use, because it is a well tested route and
debugging is hard in the preboot environment. If you feel strongly about it I will
change it.

I will plan on submitting a v3 tomorrow morning that fixes the style nits, and
splits PREBOOT into XXH_PREBOOT and ZSTD_PREBOOT.

Thanks for reviewing the patches!

-Nick

> -Kees
> 
>> 
>> Signed-off-by: Nick Terrell <terrelln@fb.com>
>> ---
>> lib/xxhash.c | 21 ++++++++++++---------
>> 1 file changed, 12 insertions(+), 9 deletions(-)
>> 
>> diff --git a/lib/xxhash.c b/lib/xxhash.c
>> index aa61e2a3802f..7f1d3cb01729 100644
>> --- a/lib/xxhash.c
>> +++ b/lib/xxhash.c
>> @@ -80,13 +80,11 @@ void xxh32_copy_state(struct xxh32_state *dst, const struct xxh32_state *src)
>> {
>> 	memcpy(dst, src, sizeof(*dst));
>> }
>> -EXPORT_SYMBOL(xxh32_copy_state);
>> 
>> void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state *src)
>> {
>> 	memcpy(dst, src, sizeof(*dst));
>> }
>> -EXPORT_SYMBOL(xxh64_copy_state);
>> 
>> /*-***************************
>>  * Simple Hash Functions
>> @@ -151,7 +149,6 @@ uint32_t xxh32(const void *input, const size_t len, const uint32_t seed)
>> 
>> 	return h32;
>> }
>> -EXPORT_SYMBOL(xxh32);
>> 
>> static uint64_t xxh64_round(uint64_t acc, const uint64_t input)
>> {
>> @@ -234,7 +231,6 @@ uint64_t xxh64(const void *input, const size_t len, const uint64_t seed)
>> 
>> 	return h64;
>> }
>> -EXPORT_SYMBOL(xxh64);
>> 
>> /*-**************************************************
>>  * Advanced Hash Functions
>> @@ -251,7 +247,6 @@ void xxh32_reset(struct xxh32_state *statePtr, const uint32_t seed)
>> 	state.v4 = seed - PRIME32_1;
>> 	memcpy(statePtr, &state, sizeof(state));
>> }
>> -EXPORT_SYMBOL(xxh32_reset);
>> 
>> void xxh64_reset(struct xxh64_state *statePtr, const uint64_t seed)
>> {
>> @@ -265,7 +260,6 @@ void xxh64_reset(struct xxh64_state *statePtr, const uint64_t seed)
>> 	state.v4 = seed - PRIME64_1;
>> 	memcpy(statePtr, &state, sizeof(state));
>> }
>> -EXPORT_SYMBOL(xxh64_reset);
>> 
>> int xxh32_update(struct xxh32_state *state, const void *input, const size_t len)
>> {
>> @@ -334,7 +328,6 @@ int xxh32_update(struct xxh32_state *state, const void *input, const size_t len)
>> 
>> 	return 0;
>> }
>> -EXPORT_SYMBOL(xxh32_update);
>> 
>> uint32_t xxh32_digest(const struct xxh32_state *state)
>> {
>> @@ -372,7 +365,6 @@ uint32_t xxh32_digest(const struct xxh32_state *state)
>> 
>> 	return h32;
>> }
>> -EXPORT_SYMBOL(xxh32_digest);
>> 
>> int xxh64_update(struct xxh64_state *state, const void *input, const size_t len)
>> {
>> @@ -439,7 +431,6 @@ int xxh64_update(struct xxh64_state *state, const void *input, const size_t len)
>> 
>> 	return 0;
>> }
>> -EXPORT_SYMBOL(xxh64_update);
>> 
>> uint64_t xxh64_digest(const struct xxh64_state *state)
>> {
>> @@ -494,7 +485,19 @@ uint64_t xxh64_digest(const struct xxh64_state *state)
>> 
>> 	return h64;
>> }
>> +
>> +#ifndef PREBOOT
>> +EXPORT_SYMBOL(xxh32_copy_state);
>> +EXPORT_SYMBOL(xxh64_copy_state);
>> +EXPORT_SYMBOL(xxh32);
>> +EXPORT_SYMBOL(xxh64);
>> +EXPORT_SYMBOL(xxh32_reset);
>> +EXPORT_SYMBOL(xxh64_reset);
>> +EXPORT_SYMBOL(xxh32_update);
>> +EXPORT_SYMBOL(xxh32_digest);
>> +EXPORT_SYMBOL(xxh64_update);
>> EXPORT_SYMBOL(xxh64_digest);
>> 
>> MODULE_LICENSE("Dual BSD/GPL");
>> MODULE_DESCRIPTION("xxHash");
>> +#endif
>> -- 
>> 2.25.1
>> 
> 
> -- 
> Kees Cook


  reply	other threads:[~2020-03-19  0:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200318002303.977158-1-terrelln@fb.com>
     [not found] ` <20200318002303.977158-3-terrelln@fb.com>
2020-03-18 22:45   ` [PATCH v2 2/7] lib: prepare xxhash for preboot environment Kees Cook
2020-03-19  0:54     ` Nick Terrell [this message]
     [not found] ` <20200318002303.977158-4-terrelln@fb.com>
2020-03-18 22:47   ` [PATCH v2 3/7] lib: add zstd support to decompress Kees Cook
2020-03-19  1:00 ` [PATCH v2 8/7] .gitignore: add ZSTD-compressed files Adam Borowski
2020-03-19  1:36   ` Nick Terrell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CE7DA1F7-651B-4ADF-859E-2AB1E7E4F5FB@fb.com \
    --to=terrelln@fb.com \
    --cc=Kernel-team@fb.com \
    --cc=clm@fb.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=keescook@chromium.org \
    --cc=kilobyte@angband.pl \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=nickrterrell@gmail.com \
    --cc=oss@malat.biz \
    --cc=patrickw3@fb.com \
    --cc=rmikey@fb.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.