public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: Martin Wilck <martin.wilck@suse.com>,
	Jessica Yu <jeyu@kernel.org>, Kees Cook <keescook@chromium.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] module: add in-kernel support for decompressing
Date: Mon, 20 Dec 2021 19:17:57 -0800	[thread overview]
Message-ID: <YcFHZVHbIG3ujDlC@google.com> (raw)
In-Reply-To: <YcC0zpFV8ppOCtZw@bombadil.infradead.org>

On Mon, Dec 20, 2021 at 08:52:30AM -0800, Luis Chamberlain wrote:
> On Fri, Dec 10, 2021 at 05:09:23PM -0800, Dmitry Torokhov wrote:
> > On Fri, Dec 10, 2021 at 04:11:21PM -0800, Luis Chamberlain wrote:
> > > On Thu, Dec 09, 2021 at 10:09:17PM -0800, Dmitry Torokhov wrote:
> > > > diff --git a/init/Kconfig b/init/Kconfig
> > > > index cd23faa163d1..d90774ff7610 100644
> > > > --- a/init/Kconfig
> > > > +++ b/init/Kconfig
> > > > @@ -2305,6 +2305,19 @@ config MODULE_COMPRESS_ZSTD
> > > >  
> > > >  endchoice
> > > >  
> > > > +config MODULE_DECOMPRESS
> > > > +	bool "Support in-kernel module decompression"
> > > > +	depends on MODULE_COMPRESS_GZIP || MODULE_COMPRESS_XZ
> > > > +	select ZLIB_INFLATE if MODULE_COMPRESS_GZIP
> > > > +	select XZ_DEC if MODULE_COMPRESS_XZ
> > > 
> > > What if MODULE_COMPRESS_GZIP and MODULE_COMPRESS_XZ are enabled?
> > > These are not mutually exclusive.
> > 
> > They are mutually exclusive, the kernel uses the same (one) compression
> > method for all kernel modules that it generates (i.e we do not compress
> > drivers/usb/... with gzip while drivers/net/... with xz).
> 
> Ah yes I failed to see the choice/prompt for it.
> 
> > The idea here is to allow the kernel consume the same format that was
> > used when generating modules. Supporting multiple formats at once is
> > overkill IMO.
> 
> Indeed.
> 
> > > > +	help
> > > > +
> > > > +	  Support for decompressing kernel modules by the kernel itself
> > > > +	  instead of relying on userspace to perform this task. Useful when
> > > > +	  load pinning security policy is enabled.
> > > 
> > > Shouldn't kernel decompression be faster too? If so, what's the
> > > point of doing it in userspace?
> > 
> > Make the kernel smaller?
> 
> Yes this I buy.
> 
> > Have more flexibility with exotic compression
> > formats?
> 
> I just have a hunch that doing module decompression in the kernel will
> speed things quite a bit... any chance you can provide some before and
> after systemd-analyze ?

If you insist I can try running it, but it should be slower unless your
memory controller is so slow that reading file from disk and dealing
with page by page decompression is quicker than copying already
decompressed data from userspace. We still reading and uncompressing
file in kmod (to make sure the format is valid) and we can uncompress
using large buffers (we are not concerned with using unswappable kernel
memory).

Maybe in the future when we have streaming and accelerated in-kernel
decompression API we could optimize for that in kmod and see some
savings on very large modules.

Thanks.

-- 
Dmitry

  reply	other threads:[~2021-12-21  3:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-10  6:09 [PATCH v3] module: add in-kernel support for decompressing Dmitry Torokhov
2021-12-10 22:05 ` Luis Chamberlain
2021-12-10 23:21   ` Dmitry Torokhov
2021-12-10 23:35     ` Luis Chamberlain
2021-12-10 23:47       ` Dmitry Torokhov
2021-12-11  0:11 ` Luis Chamberlain
2021-12-11  1:09   ` Dmitry Torokhov
2021-12-20 16:52     ` Luis Chamberlain
2021-12-21  3:17       ` Dmitry Torokhov [this message]
2021-12-21 21:59         ` Luis Chamberlain
2022-01-03  2:58           ` Dmitry Torokhov
2022-01-11 15:42             ` Luis Chamberlain

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=YcFHZVHbIG3ujDlC@google.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=jeyu@kernel.org \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.wilck@suse.com \
    --cc=mcgrof@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox