forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
…mmarek/kbuild Pull misc kbuild updates from Michal Marek: "This is the non-critical part of kbuild for 3.17-rc1: - make help hint to use make -s with make kernelrelease et al. - moved a kbuild document to Documentation/kbuild where it belongs - four new Coccinelle scripts, one dropped and one fixed - new make kselftest target to run various tests on the kernel" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: kbuild: kselftest - new make target to build and run kernel selftests Coccinelle: Script to replace if and BUG with BUG_ON Coccinelle: Script to detect incorrect argument to sizeof Coccinelle: Script to use ARRAY_SIZE instead of division of two sizeofs Coccinelle: Script to detect cast after memory allocation coccinelle/null: solve parse error Documentation: headers_install.txt is part of kbuild kbuild: make -s should be used with kernelrelease/kernelversion/image_name
- Loading branch information
Showing
8 changed files
with
275 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/// Remove casting the values returned by memory allocation functions | ||
/// like kmalloc, kzalloc, kmem_cache_alloc, kmem_cache_zalloc etc. | ||
/// | ||
//# This makes an effort to find cases of casting of values returned by | ||
//# kmalloc, kzalloc, kcalloc, kmem_cache_alloc, kmem_cache_zalloc, | ||
//# kmem_cache_alloc_node, kmalloc_node and kzalloc_node and removes | ||
//# the casting as it is not required. The result in the patch case may | ||
//#need some reformatting. | ||
// | ||
// Confidence: High | ||
// Copyright: 2014, Himangi Saraogi GPLv2. | ||
// Comments: | ||
// Options: --no-includes --include-headers | ||
// | ||
|
||
virtual context | ||
virtual patch | ||
virtual org | ||
virtual report | ||
|
||
//---------------------------------------------------------- | ||
// For context mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on context@ | ||
type T; | ||
@@ | ||
|
||
* (T *) | ||
\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...) | ||
|
||
//---------------------------------------------------------- | ||
// For patch mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on patch@ | ||
type T; | ||
@@ | ||
|
||
- (T *) | ||
(\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)) | ||
|
||
//---------------------------------------------------------- | ||
// For org and report mode | ||
//---------------------------------------------------------- | ||
|
||
@r depends on org || report@ | ||
type T; | ||
position p; | ||
@@ | ||
|
||
(T@p *)\(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| | ||
kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...) | ||
|
||
@script:python depends on org@ | ||
p << r.p; | ||
t << r.T; | ||
@@ | ||
coccilib.org.print_safe_todo(p[0], t) | ||
@script:python depends on report@ | ||
p << r.p; | ||
t << r.T; | ||
@@ | ||
msg="WARNING: casting value returned by memory allocation function to (%s *) is useless." % (t) | ||
coccilib.report.print_report(p[0], msg) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
/// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element | ||
/// | ||
//# This makes an effort to find cases where ARRAY_SIZE can be used such as | ||
//# where there is a division of sizeof the array by the sizeof its first | ||
//# element or by any indexed element or the element type. It replaces the | ||
//# division of the two sizeofs by ARRAY_SIZE. | ||
// | ||
// Confidence: High | ||
// Copyright: (C) 2014 Himangi Saraogi. GPLv2. | ||
// Comments: | ||
// Options: --no-includes --include-headers | ||
|
||
virtual patch | ||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
@i@ | ||
@@ | ||
|
||
#include <linux/kernel.h> | ||
|
||
//---------------------------------------------------------- | ||
// For context mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on i&&context@ | ||
type T; | ||
T[] E; | ||
@@ | ||
( | ||
* (sizeof(E)/sizeof(*E)) | ||
| | ||
* (sizeof(E)/sizeof(E[...])) | ||
| | ||
* (sizeof(E)/sizeof(T)) | ||
) | ||
|
||
//---------------------------------------------------------- | ||
// For patch mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on i&&patch@ | ||
type T; | ||
T[] E; | ||
@@ | ||
( | ||
- (sizeof(E)/sizeof(*E)) | ||
+ ARRAY_SIZE(E) | ||
| | ||
- (sizeof(E)/sizeof(E[...])) | ||
+ ARRAY_SIZE(E) | ||
| | ||
- (sizeof(E)/sizeof(T)) | ||
+ ARRAY_SIZE(E) | ||
) | ||
|
||
//---------------------------------------------------------- | ||
// For org and report mode | ||
//---------------------------------------------------------- | ||
|
||
@r@ | ||
type T; | ||
T[] E; | ||
position p; | ||
@@ | ||
( | ||
(sizeof(E)@p /sizeof(*E)) | ||
| | ||
(sizeof(E)@p /sizeof(E[...])) | ||
| | ||
(sizeof(E)@p /sizeof(T)) | ||
) | ||
|
||
@script:python depends on i&&org@ | ||
p << r.p; | ||
@@ | ||
coccilib.org.print_todo(p[0], "WARNING should use ARRAY_SIZE") | ||
@script:python depends on i&&report@ | ||
p << r.p; | ||
@@ | ||
msg="WARNING: Use ARRAY_SIZE" | ||
coccilib.report.print_report(p[0], msg) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element | ||
/// | ||
//# This makes an effort to find cases where the argument to sizeof is wrong | ||
//# in memory allocation functions by checking the type of the allocated memory | ||
//# when it is a double pointer and ensuring the sizeof argument takes a pointer | ||
//# to the the memory being allocated. There are false positives in cases the | ||
//# sizeof argument is not used in constructing the return value. The result | ||
//# may need some reformatting. | ||
// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2014 Himangi Saraogi. GPLv2. | ||
// Comments: | ||
// Options: | ||
|
||
virtual patch | ||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
//---------------------------------------------------------- | ||
// For context mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on context disable sizeof_type_expr@ | ||
type T; | ||
T **x; | ||
@@ | ||
|
||
x = | ||
<+...sizeof( | ||
* T | ||
)...+> | ||
|
||
//---------------------------------------------------------- | ||
// For patch mode | ||
//---------------------------------------------------------- | ||
|
||
@depends on patch disable sizeof_type_expr@ | ||
type T; | ||
T **x; | ||
@@ | ||
|
||
x = | ||
<+...sizeof( | ||
- T | ||
+ *x | ||
)...+> | ||
|
||
//---------------------------------------------------------- | ||
// For org and report mode | ||
//---------------------------------------------------------- | ||
|
||
@r disable sizeof_type_expr@ | ||
type T; | ||
T **x; | ||
position p; | ||
@@ | ||
|
||
x = | ||
<+...sizeof( | ||
T@p | ||
)...+> | ||
|
||
@script:python depends on org@ | ||
p << r.p; | ||
@@ | ||
coccilib.org.print_todo(p[0], "WARNING sizeof argument should be pointer type, not structure type") | ||
@script:python depends on report@ | ||
p << r.p; | ||
@@ | ||
msg="WARNING: Use correct pointer type argument for sizeof" | ||
coccilib.report.print_report(p[0], msg) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters