linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] get_abi.pl: Check for missing symbols at the ABI specs
@ 2021-09-08 14:58 Mauro Carvalho Chehab
  2021-09-08 14:58 ` [PATCH 1/9] scripts: " Mauro Carvalho Chehab
                   ` (9 more replies)
  0 siblings, 10 replies; 15+ messages in thread
From: Mauro Carvalho Chehab @ 2021-09-08 14:58 UTC (permalink / raw)
  To: Linux Doc Mailing List, Greg KH
  Cc: Mauro Carvalho Chehab, linux-kernel, Jonathan Corbet,
	Anton Vorontsov, Colin Cross, John Fastabend, KP Singh,
	Kees Cook, Martin KaFai Lau, Song Liu, Tony Luck, Yonghong Song,
	bpf, netdev

Hi Greg,

Sometime ago, I discussed with Jonathan Cameron about providing 
a way check that the ABI documentation is incomplete.

While it would be doable to validate the ABI by searching __ATTR and 
similar macros around the driver, this would probably be very complex
and would take a while to parse.

So, I ended by implementing a new feature at scripts/get_abi.pl
which does a check on the sysfs contents of a running system:
it reads everything under /sys and reads the entire ABI from
Documentation/ABI. It then warns for symbols that weren't found,
optionally showing possible candidates that might be misdefined.

I opted to place it on 3 patches:

The first patch adds the basic logic. It runs really quicky (up to 2
seconds), but it doesn't use sysfs softlinks.

Patch 2 adds support for also parsing softlinks. It slows the logic,
with now takes ~40 seconds to run on my desktop (and ~23
seconds on a HiKey970 ARM board). There are space there for
performance improvements, by using a more sophisticated
algorithm, at the expense of making the code harder to
understand. I ended opting to use a simple implementation
for now, as ~40 seconds sounds acceptable on my eyes.

Patch 3 adds an optional parameter to allow filtering the results
using a regex given by the user.

One of the problems with the current ABI definitions is that several
symbols define wildcards, on non-standard ways. The more commonly
wildcards used there are:

	<foo>
	{foo}
	[foo]
	X
	Y
	Z
	/.../

The script converts the above wildcards into (somewhat relaxed)
regexes.

There's one place using  "(some description)". This one is harder to
parse, as parenthesis are used by the parsing regexes. As this happens
only on one file, patch 4 addresses such case.

Patch 5 to 9 fix some other ABI troubles I identified.

In long term, perhaps the better would be to just use regex on What:
fields, as this would avoid extra heuristics at get_abi.pl, but this is
OOT from this patch, and would mean a large number of changes.

-

As reference, I sent an early implementation of this change as a RFC:
	https://lore.kernel.org/lkml/cover.1624014140.git.mchehab+huawei@kernel.org/

Mauro Carvalho Chehab (9):
  scripts: get_abi.pl: Check for missing symbols at the ABI specs
  scripts: get_abi.pl: detect softlinks
  scripts: get_abi.pl: add an option to filter undefined results
  ABI: sysfs-bus-usb: better document variable argument
  ABI: sysfs-module: better document module name parameter
  ABI: sysfs-tty: better document module name parameter
  ABI: sysfs-kernel-slab: use a wildcard for the cache name
  ABI: security: fix location for evm and ima_policy
  ABI: sysfs-module: document initstate

 Documentation/ABI/stable/sysfs-module       |  10 +-
 Documentation/ABI/testing/evm               |   4 +-
 Documentation/ABI/testing/ima_policy        |   2 +-
 Documentation/ABI/testing/sysfs-bus-usb     |  16 +-
 Documentation/ABI/testing/sysfs-kernel-slab |  94 ++++-----
 Documentation/ABI/testing/sysfs-module      |   7 +
 Documentation/ABI/testing/sysfs-tty         |  32 +--
 scripts/get_abi.pl                          | 218 +++++++++++++++++++-
 8 files changed, 303 insertions(+), 80 deletions(-)

-- 
2.31.1



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-09-14 14:24 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-08 14:58 [PATCH 0/9] get_abi.pl: Check for missing symbols at the ABI specs Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 1/9] scripts: " Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 2/9] scripts: get_abi.pl: detect softlinks Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 3/9] scripts: get_abi.pl: add an option to filter undefined results Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 4/9] ABI: sysfs-bus-usb: better document variable argument Mauro Carvalho Chehab
2021-09-13 11:55   ` Heikki Krogerus
2021-09-08 14:58 ` [PATCH 5/9] ABI: sysfs-module: better document module name parameter Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 6/9] ABI: sysfs-tty: " Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 7/9] ABI: sysfs-kernel-slab: use a wildcard for the cache name Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 8/9] ABI: security: fix location for evm and ima_policy Mauro Carvalho Chehab
2021-09-09 13:48   ` Mimi Zohar
2021-09-09 14:11     ` Mauro Carvalho Chehab
2021-09-08 14:58 ` [PATCH 9/9] ABI: sysfs-module: document initstate Mauro Carvalho Chehab
2021-09-09 13:51 ` [PATCH 0/9] get_abi.pl: Check for missing symbols at the ABI specs Greg KH
2021-09-14 14:24   ` Mauro Carvalho Chehab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).