public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Enrico Weigelt <weigelt@metux.de>
To: unlisted-recipients:; (no To-header on input)
Cc: linux-kernel@vger.kernel.org
Subject: Re: Dynamic linking in the kernel
Date: Mon, 22 Feb 2010 06:43:27 +0100	[thread overview]
Message-ID: <4B82197F.4050902@metux.de> (raw)
In-Reply-To: <20100220.125758.174837163.davem@davemloft.net>

David Miller wrote:

> In order to implement this the kernel would have to also save a copy
> of all pieces of the processes's environment and compare all of the
> environment variable settings on every execution.  This would be
> needed to handle things like LD_PRELOAD, LD_LIBRARY_PATH, and LD_DEBUG
> as just three examples.

Fairly simple:

* parsed per-module data is cached by its inode id
* cached data that can be influenced by LD_PRELOAD/LD_LIBRARY_PATH
  (eg. mapping of library names to actual filenames or inode-id's)
  is cached on hash of these variables plus inode-id

> What's more, any filesystem change involved in the shared libraries,
> the executable, or the dynamic linker would have to be monitored as
> well.

What could go wrong ?

a) overwring an currently mapped-in library. this also applies to
   the traditional approach as well. write-locking (w/o locking
   against removal, of course ;-)) might help.
b) filesystems could get remounted while modules are already cached:
   that (IMHO) changes the inode-id's as well, so not affecting the
   inode-id based cache lookups
c) permissions could get changed: either use the inode data we can on
   the file lookups (we most likely wont get rid of) or use inotify.

> Really, this is not a good idea, and the cost is only ~3 system calls
> per shared library and considering the amount of flexibility we get in
> return it's not that bad at all.

It's worth much more than that:

a) able to cache much data that now have to be parsed/computed on
   each single exec (eg. dependencies, symbol tables, etc)
b) sharing pages even when mmap() is not available


cu
-- 
----------------------------------------------------------------------
 Enrico Weigelt, metux IT service -- http://www.metux.de/

 cellphone: +49 174 7066481   email: info@metux.de   skype: nekrad666
----------------------------------------------------------------------
 Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------


  reply	other threads:[~2010-02-22  5:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-20 18:22 Dynamic linking in the kernel Enrico Weigelt
2010-02-20 20:57 ` David Miller
2010-02-22  5:43   ` Enrico Weigelt [this message]
2010-02-22  6:21     ` David Miller

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=4B82197F.4050902@metux.de \
    --to=weigelt@metux.de \
    --cc=linux-kernel@vger.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