Merge branch 'akpm' (patches from Andrew)
Merge second patch-bomb from Andrew Morton: "Almost all of the rest of MM. There was an unusually large amount of MM material this time" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (141 commits) zpool: remove no-op module init/exit mm: zbud: constify the zbud_ops mm: zpool: constify the zpool_ops mm: swap: zswap: maybe_preload & refactoring zram: unify error reporting zsmalloc: remove null check from destroy_handle_cache() zsmalloc: do not take class lock in zs_shrinker_count() zsmalloc: use class->pages_per_zspage zsmalloc: consider ZS_ALMOST_FULL as migrate source zsmalloc: partial page ordering within a fullness_list zsmalloc: use shrinker to trigger auto-compaction zsmalloc: account the number of compacted pages zsmalloc/zram: introduce zs_pool_stats api zsmalloc: cosmetic compaction code adjustments zsmalloc: introduce zs_can_compact() function zsmalloc: always keep per-class stats zsmalloc: drop unused variable `nr_to_migrate' mm/memblock.c: fix comment in __next_mem_range() mm/page_alloc.c: fix type information of memoryless node memory-hotplug: fix comments in zone_spanned_pages_in_node() and zone_spanned_pages_in_node() ...
This commit is contained in:
84
scripts/coccinelle/api/alloc/pool_zalloc-simple.cocci
Normal file
84
scripts/coccinelle/api/alloc/pool_zalloc-simple.cocci
Normal file
@@ -0,0 +1,84 @@
|
||||
///
|
||||
/// Use *_pool_zalloc rather than *_pool_alloc followed by memset with 0
|
||||
///
|
||||
// Copyright: (C) 2015 Intel Corp. GPLv2.
|
||||
// Options: --no-includes --include-headers
|
||||
//
|
||||
// Keywords: dma_pool_zalloc, pci_pool_zalloc
|
||||
//
|
||||
|
||||
virtual context
|
||||
virtual patch
|
||||
virtual org
|
||||
virtual report
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For context mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@depends on context@
|
||||
expression x;
|
||||
statement S;
|
||||
@@
|
||||
|
||||
* x = \(dma_pool_alloc\|pci_pool_alloc\)(...);
|
||||
if ((x==NULL) || ...) S
|
||||
* memset(x,0, ...);
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For patch mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@depends on patch@
|
||||
expression x;
|
||||
expression a,b,c;
|
||||
statement S;
|
||||
@@
|
||||
|
||||
- x = dma_pool_alloc(a,b,c);
|
||||
+ x = dma_pool_zalloc(a,b,c);
|
||||
if ((x==NULL) || ...) S
|
||||
- memset(x,0,...);
|
||||
|
||||
@depends on patch@
|
||||
expression x;
|
||||
expression a,b,c;
|
||||
statement S;
|
||||
@@
|
||||
|
||||
- x = pci_pool_alloc(a,b,c);
|
||||
+ x = pci_pool_zalloc(a,b,c);
|
||||
if ((x==NULL) || ...) S
|
||||
- memset(x,0,...);
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For org and report mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@r depends on org || report@
|
||||
expression x;
|
||||
expression a,b,c;
|
||||
statement S;
|
||||
position p;
|
||||
@@
|
||||
|
||||
x = @p\(dma_pool_alloc\|pci_pool_alloc\)(a,b,c);
|
||||
if ((x==NULL) || ...) S
|
||||
memset(x,0, ...);
|
||||
|
||||
@script:python depends on org@
|
||||
p << r.p;
|
||||
x << r.x;
|
||||
@@
|
||||
|
||||
msg="%s" % (x)
|
||||
msg_safe=msg.replace("[","@(").replace("]",")")
|
||||
coccilib.org.print_todo(p[0], msg_safe)
|
||||
|
||||
@script:python depends on report@
|
||||
p << r.p;
|
||||
x << r.x;
|
||||
@@
|
||||
|
||||
msg="WARNING: *_pool_zalloc should be used for %s, instead of *_pool_alloc/memset" % (x)
|
||||
coccilib.report.print_report(p[0], msg)
|
Reference in New Issue
Block a user