I've finally written a silly script to easily compare my tests
of Sparse on the kernel. So, it's now easy to share those results.
It's a comparison of Sparse's unique warnings between v5.7-rc1 &
v5.8-rc1 on x86-64 (defconfig + allyesconfig). The results are
quite similar on other architectures.
Note that the differences can be caused by changes in the kernel
code or in Sparse code.
Have fun.
- 20114 19249 Total
+ 95 161 Initializer entry defined twice
- 152 98 Using plain integer as NULL pointer
394 394 advancing past deep designator
4 4 arithmetics on pointers to functions
+ 15 16 bad assignment to restricted type
4 4 cast between address spaces (<asn:3> -> <asn:4>)
+ 0 38 cast from non-scalar
- 288 276 cast from restricted type
- 43 41 cast removes address space '<asn:1>' of expression
142 142 cast removes address space '<asn:2>' of expression
1 1 cast removes address space '<asn:3>' of expression
+ 10 15 cast removes address space '<asn:4>' of expression
+ 13 51 cast to non-scalar
- 4796 4512 cast to restricted type
+ 595 609 cast truncates bits from constant value
+ 335 349 context imbalance - different lock contexts for basic block
- 463 453 context imbalance - unexpected unlock
- 198 189 context imbalance - wrong count at exit
+ 117 118 dereference of noderef expression
+ 10 13 dubious: !x & y
+ 0 1 dubious: !x | !y
6 6 dubious: !x | y
+ 56 57 dubious: x & !y
21 21 dubious: x | !y
+ 17 21 function with external linkage has definition
2 2 implicit cast from nocast type
+ 497 500 incompatible types in comparison expression (different address spaces)
3 3 incompatible types in comparison expression (different base types)
1 1 incompatible types in comparison expression (different type sizes)
+ 5 6 incompatible types in conditional expression (different base types)
+ 1216 1225 incorrect type in argument (different address spaces)
- 528 515 incorrect type in argument (different base types)
+ 0 5 incorrect type in argument (different modifiers)
- 11 10 incorrect type in argument (different type sizes)
+ 0 1 incorrect type in argument (incompatible argument (different address spaces))
1 1 incorrect type in argument (incompatible argument (different base types))
+ 369 388 incorrect type in assignment (different address spaces)
- 5607 4945 incorrect type in assignment (different base types)
1 1 incorrect type in assignment (different modifiers)
+ 139 141 incorrect type in initializer (different address spaces)
- 141 132 incorrect type in initializer (different base types)
+ 4 7 incorrect type in initializer (incompatible argument (different address spaces))
- 27 26 incorrect type in return expression (different address spaces)
- 30 26 incorrect type in return expression (different base types)
- 516 451 invalid assignement
37 37 invalid bitfield specifier for type restricted type.
13 13 invalid initializer
1 1 marked inline, but without a definition
1 1 memcpy with byte count of ...
5 5 memset with byte count of ...
- 10 0 missing braces around initializer
7 7 mixed bitwiseness
10 10 mixing different enum types:
1 1 multiple address spaces given
- 2 1 no newline at end of file
1 1 non-scalar type in conditional:
- 1 0 preprocessor token offsetof redefined
+ 948 959 restricted type degrades to integer
+ 42 43 return expression in void function
3 3 shift count is (-1)
5 5 shift too big for type
12 12 static assertion failed
5 5 subtraction of different types can't work (different address spaces)
+ 23 24 subtraction of functions? Share your drugs
1 1 switch with no cases
+ 0 5 symbol redeclared with different type (incompatible argument (different address spaces))
+ 2109 2135 symbol was not declared. Should it be static?
1 1 too long token expansion
3 3 trying to concatenate long character string (8191 bytes max)
On Wed, Jul 08, 2020 at 02:06:51AM +0200, Luc Van Oostenryck wrote:
> I've finally written a silly script to easily compare my tests
> of Sparse on the kernel. So, it's now easy to share those results.
>
> It's a comparison of Sparse's unique warnings between v5.7-rc1 &
> v5.8-rc1 on x86-64 (defconfig + allyesconfig). The results are
> quite similar on other architectures.
>
> Note that the differences can be caused by changes in the kernel
> code or in Sparse code.
>
> Have fun.
>
This is quite fun! Could you post the raw errors from the v5.8-rc1
kernel as well? Probably it's too big for LKML, so it would have to
be posted to pastebin or something.
regards,
dan carpenter
On Wed, Jul 08, 2020 at 12:59:04PM +0300, Dan Carpenter wrote:
> On Wed, Jul 08, 2020 at 02:06:51AM +0200, Luc Van Oostenryck wrote:
> > I've finally written a silly script to easily compare my tests
> > of Sparse on the kernel. So, it's now easy to share those results.
> >
> > It's a comparison of Sparse's unique warnings between v5.7-rc1 &
> > v5.8-rc1 on x86-64 (defconfig + allyesconfig). The results are
> > quite similar on other architectures.
> >
> > Note that the differences can be caused by changes in the kernel
> > code or in Sparse code.
> >
> > Have fun.
> >
>
> This is quite fun! Could you post the raw errors from the v5.8-rc1
> kernel as well? Probably it's too big for LKML, so it would have to
> be posted to pastebin or something.
Yes, even compressed it's too big.
I've added them in my dev tree on github:
https://github.com/lucvoo/sparse-dev/commits/logs
It's just the last commit in the subdirectory 'Logs'.
I've added the raw and the cooked form.
Have fun,
-- Luc