All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Michal Marek <mmarek@suse.com>,
	Adam Borowski <kilobyte@angband.pl>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	Debian kernel maintainers <debian-kernel@lists.debian.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Ingo Molnar <mingo@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86/kbuild: enable modversions for symbols exported from asm
Date: Thu, 01 Dec 2016 02:35:54 +0000	[thread overview]
Message-ID: <1480559754.16599.92.camel@decadent.org.uk> (raw)
In-Reply-To: <20161201125545.406d092c@roar.ozlabs.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 4260 bytes --]

On Thu, 2016-12-01 at 12:55 +1100, Nicholas Piggin wrote:
> On Wed, 30 Nov 2016 21:33:01 +0000
> > Ben Hutchings <ben@decadent.org.uk> wrote:
> 
> > On Wed, 2016-11-30 at 10:40 -0800, Linus Torvalds wrote:
> > > > On Wed, Nov 30, 2016 at 10:18 AM, Nicholas Piggin <npiggin@gmail.com> wrote:
> > > > 
> > > > Here's an initial rough hack at removing modversions. It gives an idea
> > > > of the complexity we're carrying for this feature (keeping in mind most
> > > > of the lines removed are generated parser).  
> > > 
> > > You definitely don't have to try to convince me. We've had many issues
> > > with modversions over the years. This was just the "last drop" as far
> > > as I'm concerned, we've had random odd crc generation failures due to
> > > some build races too.
> > >   
> > > > In its place I just added a simple config option to override vermagic
> > > > so distros can manage it entirely themselves.  
> > > 
> > > So at least Fedora doesn't even enable CONFIG_MODVERSIONS as-is. I'm
> > > _hoping_ it's just Debian that wants this,  
> > 
> > The last time I looked, RHEL and SLE did.  They change the release
> > string for each new kernel version, but they will copy/link old out-of-
> > tree modules into the new version's "weak-updates" module subdirectory
> > if the symbol versions still match.
> > 
> > > and we'd need to get some
> > > input from the Debian people whether that "control vermagic" is
> > > sufficient? I suspect it isn't, but I can't come up with any simple
> > > alternate model either..  
> > 
> > Allowing the vermagic to be changed separately doesn't help us, as we
> > already control the release string.  If we were to change some of the
> > module tools to consider vermagic then it would allow us to report the
> > full version in the release string while not forcing rebuilds on every
> > kernel upgrade - but that's not a pressing problem.
> 
> Okay, but existing modversions AFAIKS does not solve your problems described
> in yor your earlier mail either. Modversions hardly catches ABI breakage at
> all, you can't rely on it that way. It's far more likely that some structure
> size changes deep in the kernel than an exported function type signature
> changes.

As I understand it, genksyms incorporates the definitions of a
function's parameter and return types - not just their names - and all
the types they refer to, recursively.  So a structure size change
should change the version of all functions where the function and its
caller pass that structure between them, however indirectly.  It finds
such indirect ABI breakage for me fairly regularly, though of course I
don't know that it finds everything.

> I'm not sure how you know which exports are used only by in-tree modules
> and which are used out of tree, but if you know that then you can version
> them manually as we said by adding _v2 in the rare case you need to change
> a behaviour.

That's fine for individual functions.

> So I'm still having trouble understanding what modversions is giving you.

Where there is a family of driver modules (e.g. foo-core, foo-pci, foo-
usb), a structure change can change all exports from foo-core.  That
ABI is of no use to out-of-tree drivers so we don't care about keeping
it stable, but we do care about preventing an accidental mismatch.

> > One thing that could work for us would be:
> > 
> > - Stricter version matching for in-tree modules (maybe some extra
> >   part in vermagic that is skipped for out-of-tree modules)
> > - Ability to blacklist use of a symbol, or all symbols in a module,
> >   by out-of-tree modules
> > 
> > where the blacklist would be a matter of distribution policy.  But this
> > would still require a fair amount of work by someone, and I doubt you'd
> > want this upstream.
> 
> I don't think people are adverse to carrying some upstream complexity for
> ditsros. Although for this fancy blacklist case, can it just be done in
> userspace?

Since the kernel does the symbol lookup and version matching, I'm not
sure what userland can do about it.

Ben.

-- 
Ben Hutchings
A free society is one where it is safe to be unpopular. - Adlai
Stevenson


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2016-12-01  3:16 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <a73aec83-ddad-2bdf-e612-178c9936a16f@manjaro.org>
     [not found] ` <20161102004639.6870806d@roar.ozlabs.ibm.com>
2016-11-23 20:08   ` BUG: 4.9-rc6 Still "no symbol version" on boot Philip Müller
2016-11-23 20:14     ` Robert LeBlanc
2016-11-23 20:27       ` Philip Müller
2016-11-23 20:53     ` Adam Borowski
2016-11-23 21:01       ` Robert LeBlanc
2016-11-23 21:02       ` [PATCH] x86/kbuild: enable modversions for symbols exported from asm Adam Borowski
2016-11-23 23:10         ` Philip Müller
2016-11-24  4:40         ` Ingo Molnar
2016-11-24  5:20           ` Nicholas Piggin
2016-11-24  6:00             ` Ingo Molnar
2016-11-24  7:20               ` Nicholas Piggin
2016-11-24  7:36                 ` Greg Kroah-Hartman
2016-11-24  7:53                   ` Nicholas Piggin
2016-11-24  9:32                     ` Michal Marek
2016-11-24 10:03                       ` Nicholas Piggin
2016-11-24 10:51                         ` Michal Marek
2016-11-24  9:38                     ` Arnd Bergmann
2016-11-24 10:01                       ` Nicholas Piggin
2016-11-24  9:56                     ` Greg Kroah-Hartman
2016-11-24 10:31                       ` Nicholas Piggin
2016-11-24 15:24                         ` Greg Kroah-Hartman
2016-11-25  0:40                           ` Nicholas Piggin
2016-11-25 18:00                             ` Linus Torvalds
2016-11-26  0:37                               ` Nicholas Piggin
2016-11-29  1:15                               ` Ben Hutchings
2016-11-29  2:31                                 ` Nicholas Piggin
2016-11-29  9:14                                   ` Michal Marek
2016-11-29  4:08                                 ` Linus Torvalds
2016-11-29 13:19                                   ` Adam Borowski
2016-11-29 13:29                                     ` Ingo Molnar
2016-11-29 14:24                                       ` Adam Borowski
2016-11-29 13:51                                     ` Adam Borowski
2016-11-29 15:27                                       ` Linus Torvalds
2016-11-29 16:03                                         ` Michal Marek
2016-11-29 16:17                                           ` Linus Torvalds
2016-11-29 19:57                                             ` Ben Hutchings
2016-11-29 20:35                                               ` Linus Torvalds
2016-11-30 18:18                                                 ` Nicholas Piggin
2016-11-30 18:40                                                   ` Linus Torvalds
2016-11-30 21:33                                                     ` Ben Hutchings
2016-12-01  1:55                                                       ` Nicholas Piggin
2016-12-01  2:35                                                         ` Ben Hutchings [this message]
2016-12-01  3:39                                                           ` Nicholas Piggin
2016-12-01 16:12                                                             ` Michal Marek
2016-12-02 14:36                                                               ` Hannes Frederic Sowa
2016-12-09  3:33                                                               ` Nicholas Piggin
2016-12-09 15:21                                                                 ` Ian Campbell
2016-12-09 16:15                                                                   ` Nicholas Piggin
2016-12-09 22:46                                                                     ` Dodji Seketeli
2016-12-09 22:46                                                                       ` Dodji Seketeli
2016-12-10 12:41                                                                       ` Greg Kroah-Hartman
2016-12-12  3:50                                                                         ` Nicholas Piggin
2016-12-12  9:08                                                                         ` Ian Campbell
2016-12-14 17:59                                                                         ` Don Zickus
2016-12-13  1:07                                                                       ` Stanislav Kozina
2016-12-13 22:51                                                                       ` Michal Marek
2016-12-14  8:58                                                                         ` Dodji Seketeli
2016-12-14  8:58                                                                           ` Dodji Seketeli
2016-12-14  9:15                                                                           ` Michal Marek
2016-12-14  9:36                                                                             ` Dodji Seketeli
2016-12-14  9:36                                                                               ` Dodji Seketeli
2016-12-14  9:44                                                                               ` Michal Marek
2016-12-14 10:02                                                                                 ` Dodji Seketeli
2016-12-14 10:02                                                                                   ` Dodji Seketeli
2016-12-14 10:15                                                                                   ` Michal Marek
2016-12-14  9:56                                                                               ` Dodji Seketeli
2016-12-14  9:56                                                                                 ` Dodji Seketeli
2016-12-14  9:37                                                                             ` Michal Marek
2016-12-01  4:13                                                     ` Don Zickus
2016-12-01  4:32                                                       ` Nicholas Piggin
2016-12-01 15:20                                                         ` Don Zickus
2016-12-01 15:26                                                           ` Christoph Hellwig
2016-12-01 15:40                                                             ` Don Zickus
2016-12-01 16:06                                                               ` Greg Kroah-Hartman
2016-12-01 18:42                                                                 ` Don Zickus
2016-12-09  3:50                                                           ` Nicholas Piggin
2016-12-09  7:55                                                             ` Stanislav Kozina
2016-12-09  8:14                                                               ` Nicholas Piggin
2016-12-09 14:36                                                                 ` Stanislav Kozina
2016-12-09 15:56                                                                   ` Nicholas Piggin
2016-12-09 16:03                                                                     ` Greg Kroah-Hartman
2016-12-12  9:48                                                                       ` Stanislav Kozina
2016-12-13  7:25                                                                         ` Nicholas Piggin
2016-12-14 14:04                                                                       ` Hannes Frederic Sowa
2016-12-15  2:06                                                                         ` Nicholas Piggin
2016-12-15 11:19                                                                           ` Hannes Frederic Sowa
2016-12-15 12:03                                                                             ` Nicholas Piggin
2016-12-15 13:15                                                                               ` Hannes Frederic Sowa
2016-12-15 14:15                                                                                 ` Nicholas Piggin
2016-12-15 15:17                                                                                   ` Hannes Frederic Sowa
2016-12-15 13:35                                                                               ` Stanislav Kozina
2016-12-09 16:16                                                             ` Don Zickus
2016-12-01 10:48                                                       ` Stanislav Kozina
2016-12-01 11:09                                                         ` Nicholas Piggin
2016-12-01 11:33                                                           ` Stanislav Kozina
2016-12-01 12:39                                                             ` Nicholas Piggin
2016-12-01 15:19                                                           ` Dodji Seketeli
2016-12-01 15:19                                                             ` Dodji Seketeli
2016-12-01 15:19                                                             ` Dodji Seketeli
2016-12-01 15:19                                                             ` Dodji Seketeli
2016-12-01 16:14                                                       ` Michal Marek
2016-11-29 17:05                                         ` Adam Borowski
2016-11-29 17:05                                           ` Adam Borowski
2016-11-29 17:10                                           ` Linus Torvalds
2016-11-29 17:14                                             ` Linus Torvalds
2016-12-01 13:58                                               ` Arnd Bergmann
2016-12-01 16:21                                                 ` Michal Marek
2016-12-01 18:26                                                 ` Linus Torvalds
2016-12-02 10:55                                                   ` Arnd Bergmann
2016-12-02 12:40                                                     ` [RFC, PATCH, v3.9] default exported asm symbols to zero Arnd Bergmann
2016-12-02 12:59                                                       ` Geert Uytterhoeven
2016-12-02 14:51                                                         ` Arnd Bergmann
2016-12-02 15:35                                                       ` Adam Borowski
2016-12-02 15:35                                                         ` Adam Borowski
2016-12-03  4:36                                                       ` Ben Hutchings
2016-12-03 10:43                                                         ` Arnd Bergmann
2016-12-02 17:04                                                     ` [PATCH] x86/kbuild: enable modversions for symbols exported from asm Linus Torvalds
2016-12-04  7:44                                                     ` Alan Modra
2016-12-04 20:44                                                       ` Linus Torvalds
2016-11-29 21:23                                             ` Michal Marek
2016-11-24  9:25           ` Michal Marek
2016-11-24 11:42         ` Regression: " Kalle Valo
2016-11-23 23:07       ` BUG: 4.9-rc6 Still "no symbol version" on boot Philip Müller
2016-11-28 17:10         ` Robert LeBlanc

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=1480559754.16599.92.camel@decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=arnd@arndb.de \
    --cc=debian-kernel@lists.debian.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kilobyte@angband.pl \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mmarek@suse.com \
    --cc=npiggin@gmail.com \
    --cc=torvalds@linux-foundation.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.