lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <1332947356.31549.92.camel@sauron.fi.intel.com>
Date:	Wed, 28 Mar 2012 18:09:16 +0300
From:	Artem Bityutskiy <artem.bityutskiy@...ux.intel.com>
To:	Linux Kernel Maling List <linux-kernel@...r.kernel.org>
Subject: [Announce] Aiaiai

Hi,

I here is a tool which I find very helpful for subsystem maintainers and
individual developers. This tool checks patches or patch-sets using various
existing tools and reports new issues.

The main thing it does is:
1. Build the kernel before the patch and after the patch
2. Compare 2 build logs
3. Report about _new_ gcc warnings, coccinelle/spatch/smatch/cppcheck
   complaints.

For example, you can feed Aiaiai a patch-set, and it may report something
like this:

--------------------------------------------------------------------------------

1  Successfully built configuration "my_defconfig,i386", results:
2
3  --- before_patching.log
4  +++ after_patching.log
5  @@ @@
6  -drivers/staging/cruft/my_drv.c: In function ‘my_pool_destroy’:
7  -drivers/staging/cruft/my_drv.c:165:22: warning: variable ‘test1’ set but not used [-Wunused-but-set-variable]
8  @@ @@
9  +drivers/staging/cruft/my_drv.c: In function ‘my_event_handler’:
10 +drivers/staging/cruft/my_drv.c:311:36: warning: unused variable ‘reg’ [-Wunused-variable]
11 +drivers/staging/cruft/my_drv.c:1001:1-7: preceding lock on line 837 [coccinelle]
12 +drivers/staging/cruft/my_drv.c:834 my_int_data(12) warn: variable dereferenced before check 'priv' (see line 827) [smatch]

--------------------------------------------------------------------------------

Line 1 says that configuration my_defconfig for architecture i386 has been built,
so the patch-set is at least compilable.

Starting from line 3 we have a diff of 2 build logs - before and after patching.

Lines 6 and 7 tell that the patch-set eliminated a warning - which is very welcome.

Lines 9 and 10 tell that the patch-set introduced a gcc warning - not good.

Line 11 tells that the patch made coccinelle complain about locking - worth checking
as coccinelle scripts we have in the kernel are rather high quality.

Line 12 tells that smatch has a complaint - also worth looking if this is a
false-positive or not.

Additionally, Aiaiai runs the bisectability tests when the patch-set contains
more than one patch. It applies patches one-by-one and compiles at each step,
and will report if compilation breaks.

Aiaiai also checks if the patch changes a defconfig file, and if it does, it will
verify that it is changed properly (make savedefconfig was used).

And Aiaiai also runs checkpatch.pl for the whole patch-set (squashed) and
every individual patch.

Aiaiai also includes scripts which may be used to attach it to an e-mail address,
so that when you can send patches to this e-mail address, and it will respond
with test results.

E.g., I use Aiaiai to verify incoming patches for the MTD subsystem since recently.
I have small helper scripts which run Aiaiai for several configurations and
architectures (i386, x86_64, ia64, ppc64, arm, mips). This makes me feel "safe"
when I apply patches to my l2-mtd.git' tree. I do this also for UBIFS and UBI
now.

The README file contains more information:
http://git.infradead.org/users/dedekind/aiaiai.git/blob/refs/heads/master:/README

Sorry if this stuff is not very user-friendly - feel free to ask questions and
send patches.

You can find Aiaiai here:
git://git.infradead.org/users/dedekind/aiaiai.git
Gitweb: http://git.infradead.org/users/dedekind/aiaiai.git

Credits:
* Intel and my colleagues
* Kirill Shutemov - he started writing this stuff, review, gave ideas, etc
* AltLinux guys for libshell
  (git://git.altlinux.org/people/ldv/packages/libshell.git)
* Al Viro for the remapper
  (git://git.kernel.org/pub/scm/linux/kernel/git/viro/remap.git)
* Julia Lawall for amending coccinelle kernel patches to meet Aiaiai needs
* Dan Carpenter for amending smatch to meet Aiaiai needs
* Eric Melski for the serialize-log idea

-- 
Best Regards,
Artem Bityutskiy

Download attachment "signature.asc" of type "application/pgp-signature" (837 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ