xref: /linux/scripts/coccinelle/api/vma_pages.cocci (revision 96ac6d435100450f0565708d9b885ea2a7400e0a)
1// SPDX-License-Identifier: GPL-2.0
2///
3/// Use vma_pages function on vma object instead of explicit computation.
4///
5//  Confidence: High
6//  Keywords: vma_pages vma
7//  Comment: Based on resource_size.cocci
8
9virtual context
10virtual patch
11virtual org
12virtual report
13
14//----------------------------------------------------------
15//  For context mode
16//----------------------------------------------------------
17
18@r_context depends on context && !patch && !org && !report@
19struct vm_area_struct *vma;
20@@
21
22* (vma->vm_end - vma->vm_start) >> PAGE_SHIFT
23
24//----------------------------------------------------------
25//  For patch mode
26//----------------------------------------------------------
27
28@r_patch depends on !context && patch && !org && !report@
29struct vm_area_struct *vma;
30@@
31
32- ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT)
33+ vma_pages(vma)
34
35//----------------------------------------------------------
36//  For org mode
37//----------------------------------------------------------
38
39@r_org depends on !context && !patch && (org || report)@
40struct vm_area_struct *vma;
41position p;
42@@
43
44  (vma->vm_end@p - vma->vm_start) >> PAGE_SHIFT
45
46@script:python depends on report@
47p << r_org.p;
48x << r_org.vma;
49@@
50
51msg="WARNING: Consider using vma_pages helper on %s" % (x)
52coccilib.report.print_report(p[0], msg)
53
54@script:python depends on org@
55p << r_org.p;
56x << r_org.vma;
57@@
58
59msg="WARNING: Consider using vma_pages helper on %s" % (x)
60msg_safe=msg.replace("[","@(").replace("]",")")
61coccilib.org.print_todo(p[0], msg_safe)
62