1{
2   "version": "1.0",
3   "content": [
4      {
5         "type": "function",
6         "value": "^printk.*$",
7         "properties":{
8            "pointee_write": "1..=never",
9            "taken": ""
10         }
11      },
12      {
13         "type": "function",
14         "value": "^debugtrace_printk.*$",
15         "properties":{
16            "pointee_write": "1..=never",
17            "taken": ""
18         }
19      },
20      {
21         "type": "function",
22         "value": "^panic.*$",
23         "properties":{
24            "pointee_write": "1..=never",
25            "taken": ""
26         }
27      },
28      {
29         "type": "macro",
30         "value": "^domain_crash$",
31         "properties":{
32            "pointee_write": "2..=never",
33            "taken": ""
34         }
35      },
36      {
37         "type": "macro",
38         "value": "^(g?d|mm_)?printk$",
39         "properties":{
40            "pointee_write": "2..=never",
41            "taken": ""
42         }
43      },
44      {
45         "type": "macro",
46         "value": "^guest_bug_on_failed$",
47         "properties":{
48            "pointee_write": "1=never",
49            "taken": ""
50         }
51      },
52      {
53         "type": "macro",
54         "value": "^spin_lock_init_prof$",
55         "properties":{
56            "pointee_write": "2=never",
57            "taken": ""
58         }
59      },
60      {
61         "type": "macro",
62         "value": "^sched_test_func$",
63         "properties":{
64            "pointee_write": "1..=never",
65            "taken": ""
66         }
67      },
68      {
69         "type": "macro",
70         "value": "^dev_(info|warn)$",
71         "properties":{
72            "pointee_write": "1..=never",
73            "taken": ""
74         }
75      },
76      {
77         "type": "macro",
78         "value": "^PAGING_DEBUG$",
79         "properties":{
80            "pointee_write": "1..=never",
81            "taken": ""
82         }
83      },
84      {
85         "type": "macro",
86         "value": "^ACPI_(WARNING|ERROR|INFO)$",
87         "properties":{
88            "pointee_write": "1..=never",
89            "taken": ""
90         }
91      },
92      {
93         "type": "function",
94         "value": "^fdt_get_property_by_offset_.*$",
95         "properties":{
96            "pointee_write": "3=always",
97            "pointee_read": "3=never",
98            "taken": ""
99         }
100      },
101      {
102         "type": "function",
103         "value": "^read_atomic_size.*$",
104         "properties":{
105            "pointee_write": "2=always",
106            "pointee_read": "2=never",
107            "taken": ""
108         }
109      },
110      {
111         "type": "function",
112         "value": "^device_tree_get_reg.*$",
113         "properties":{
114            "pointee_write": "4..=always",
115            "pointee_read": "4..=never",
116            "taken": ""
117         }
118      },
119      {
120         "type": "function",
121         "value": "^dt_get_range.*$",
122         "properties":{
123            "pointee_write": "3..=always",
124            "pointee_read": "3..=never",
125            "taken": ""
126         }
127      },
128      {
129         "type": "function",
130         "value": "^parse_static_mem_prop.*$",
131         "properties":{
132            "pointee_write": "2..=always",
133            "pointee_read": "2..=never",
134            "taken": ""
135         }
136      },
137      {
138         "type": "function",
139         "value": "^get_ttbr_and_gran_64bit.*$",
140         "properties":{
141            "pointee_write": "1..2=always",
142            "pointee_read": "1..2=never",
143            "taken": ""
144         }
145      },
146      {
147         "type": "function",
148         "value": "^hvm_emulate_init_once.*$",
149         "properties":{
150            "pointee_write": "1=always",
151            "pointee_read": "1=never",
152            "taken": ""
153         }
154      },
155      {
156         "type": "function",
157         "value": "^__vmread.*$",
158         "properties":{
159            "pointee_write": "2=always",
160            "pointee_read": "2=never",
161            "taken": ""
162         }
163      },
164      {
165         "type": "function",
166         "value": "^hvm_pci_decode_addr.*$",
167         "properties":{
168            "pointee_write": "3=always",
169            "pointee_read": "3=never",
170            "taken": ""
171         }
172      },
173      {
174         "type": "function",
175         "value": "^vpci_mmcfg_decode_addr.*$",
176         "properties":{
177            "pointee_write": "3=always",
178            "pointee_read": "3=never",
179            "taken": ""
180         }
181      },
182      {
183         "type": "function",
184         "value": "^x86emul_decode.*$",
185         "properties":{
186            "pointee_write": "1=always",
187            "pointee_read": "1=never",
188            "taken": ""
189         }
190      },
191      {
192         "type": "function",
193         "value": "^unmap_grant_ref.*$",
194         "properties":{
195            "pointee_write": "2=always",
196            "pointee_read": "2=never",
197            "taken": ""
198         }
199      },
200      {
201         "type": "function",
202         "value": "^arm_smmu_cmdq_build_cmd.*$",
203         "properties":{
204            "pointee_write": "1=always",
205            "pointee_read": "1=never",
206            "taken": ""
207         }
208      },
209      {
210         "type": "function",
211         "value": "^pci_size_mem_bar.*$",
212         "properties":{
213            "pointee_write": "4=always",
214            "pointee_read": "4=never",
215            "taken": ""
216         }
217      },
218      {
219         "type": "function",
220         "value": "^_hvm_read_entry.*$",
221         "properties":{
222            "pointee_write": "2=always",
223            "pointee_read": "2=never",
224            "taken": ""
225         }
226      },
227      {
228         "type": "function",
229         "value": "^hvm_map_guest_frame_rw.*$",
230         "properties":{
231            "pointee_write": "3=always",
232            "pointee_read": "3=never",
233            "taken": ""
234         }
235      },
236      {
237         "type": "function",
238         "value": "^guest_cpuid.*$",
239         "properties":{
240            "pointee_write": "4=always",
241            "pointee_read": "4=never",
242            "taken": ""
243         }
244      },
245      {
246         "type": "function",
247         "value": "^epte_get_entry_emt.*$",
248         "properties":{
249            "pointee_write": "5=always",
250            "pointee_read": "5=never",
251            "taken": ""
252         }
253      },
254      {
255         "type": "function",
256         "value": "^mcheck_mca_logout.*$",
257         "properties":{
258            "pointee_write": "3=always",
259            "pointee_read": "3=never",
260            "taken": ""
261         }
262      },
263      {
264         "type": "function",
265         "value": "^set_field_in_reg_u32.*$",
266         "properties":{
267            "pointee_write": "5=always",
268            "pointee_read": "5=never",
269            "taken": ""
270         }
271      },
272      {
273         "type": "function",
274         "value": "^alloc_affinity_masks.*$",
275         "properties":{
276            "pointee_write": "1=always",
277            "pointee_read": "1=never",
278            "taken": ""
279         }
280      },
281      {
282         "type": "function",
283         "value": "^xasprintf.*$",
284         "properties":{
285            "pointee_write": "1=always",
286            "pointee_read": "1=never",
287            "taken": ""
288         }
289      },
290      {
291         "type": "function",
292         "value": "^find_non_smt.*$",
293         "properties":{
294            "pointee_write": "2=always",
295            "pointee_read": "2=never",
296            "taken": ""
297         }
298      },
299      {
300         "type": "function",
301         "value": "^call_rcu.*$",
302         "properties":{
303            "pointee_write": "1=always",
304            "pointee_read": "1=never",
305            "taken": ""
306         }
307      },
308      {
309         "type": "function",
310         "value": "^getdomaininfo.*$",
311         "properties":{
312            "pointee_write": "2=always",
313            "pointee_read": "2=never",
314            "taken": ""
315         }
316      },
317      {
318         "type": "function",
319         "value": "^MAPPING_(INSERT|SEARCH)\\(.*$",
320         "properties":{
321            "pointee_write": "2..=always",
322            "pointee_read": "2..=never",
323            "taken": ""
324         }
325      },
326      {
327         "type": "function",
328         "value": "^FormatDec.*$",
329         "properties":{
330            "pointee_write": "2=always",
331            "pointee_read": "2=never",
332            "taken": ""
333         }
334      },
335      {
336         "type": "function",
337         "value": "^FormatHex.*$",
338         "properties":{
339            "pointee_write": "3=always",
340            "pointee_read": "3=never",
341            "taken": ""
342         }
343      },
344      {
345         "type": "function",
346         "value": "^p2m_get_ioreq_server.*$",
347         "properties":{
348            "pointee_write": "2=always",
349            "pointee_read": "2=never",
350            "taken": ""
351         }
352      },
353      {
354         "type": "function",
355         "value": "^elf_memset_unchecked.*$",
356         "properties":{
357            "pointee_write": "1=always",
358            "pointee_read": "1=never",
359            "taken": ""
360         }
361      },
362      {
363         "type": "function",
364         "value": "^set_iommu_pte_present.*$",
365         "properties":{
366            "pointee_write": "7=always",
367            "pointee_read": "7=never",
368            "taken": ""
369         }
370      },
371      {
372         "type": "function",
373         "value": "^clear_iommu_pte_present.*$",
374         "properties":{
375            "pointee_write": "4=always",
376            "pointee_read": "4=never",
377            "taken": ""
378         }
379      },
380      {
381         "type": "function",
382         "value": "^vcpu_runstate_get.*$",
383         "properties":{
384            "pointee_write": "2=always",
385            "pointee_read": "2=never",
386            "taken": ""
387         }
388      },
389      {
390         "type": "function",
391         "value": "^va_start.*$",
392         "properties":{
393            "pointee_write": "1=always",
394            "pointee_read": "1=never",
395            "taken": ""
396         }
397      },
398      {
399         "type": "function",
400         "value": "^sgi_target_init.*$",
401         "properties":{
402            "pointee_write": "1=always",
403            "pointee_read": "1=never",
404            "taken": ""
405         }
406      },
407      {
408         "type": "function",
409         "value": "^get_hw_residencies.*$",
410         "properties":{
411            "pointee_write": "2=always",
412            "pointee_read": "2=never",
413            "taken": ""
414         }
415      },
416      {
417         "type": "function",
418         "value": "^x86_cpu_policy_to_featureset.*$",
419         "properties":{
420            "pointee_write": "2=always",
421            "pointee_read": "2=never",
422            "taken": ""
423         }
424      },
425      {
426         "type": "function",
427         "value": "^simple_strtou?ll?\\(.*$",
428         "properties":{
429            "pointee_write": "2=always",
430            "pointee_read": "2=never",
431            "taken": ""
432         }
433      },
434      {
435         "type": "function",
436         "value": "^msi_compose_msg.*$",
437         "properties":{
438            "pointee_write": "3=always",
439            "pointee_read": "3=never",
440            "taken": ""
441         }
442      },
443      {
444         "type": "function",
445         "value": "^print_tainted.*$",
446         "properties":{
447            "pointee_write": "1=always",
448            "pointee_read": "1=never",
449            "taken": ""
450         }
451      },
452      {
453         "type": "function",
454         "value": "^get_hvm_registers.*$",
455         "properties":{
456            "pointee_write": "3=always",
457            "pointee_read": "3=never",
458            "taken": ""
459         }
460      },
461      {
462         "type": "function",
463         "value": "^x86_insn_modrm.*$",
464         "properties":{
465            "pointee_write": "2..3=always",
466            "pointee_read": "2..3=never",
467            "taken": ""
468         }
469      },
470      {
471         "type": "function",
472         "value": "^cpuid_count_leaf.*$",
473         "properties":{
474            "pointee_write": "3=always",
475            "pointee_read": "3=never",
476            "taken": ""
477         }
478      },
479      {
480         "type": "function",
481         "value": "^rcu_lock_remote_domain_by_id.*$",
482         "properties":{
483            "pointee_write": "2=always",
484            "pointee_read": "2=never",
485            "taken": ""
486         }
487      },
488      {
489         "type": "function",
490         "value": "^cpuid_count.*$",
491         "properties":{
492            "pointee_write": "3..=always",
493            "pointee_read": "3..=never",
494            "taken": ""
495         }
496      },
497      {
498         "type": "function",
499         "value": "^.*efi_boot_mem_unused.*$",
500         "properties":{
501            "pointee_write": "1..=always",
502            "pointee_read": "1..=never",
503            "taken": ""
504         }
505      },
506      {
507         "type": "function",
508         "value": "^collect_time_info.*$",
509         "properties":{
510            "pointee_write": "2=always",
511            "pointee_read": "2=never",
512            "taken": ""
513         }
514      },
515      {
516         "type": "function",
517         "value": "^setup_xstate_comp.*$",
518         "properties":{
519            "pointee_write": "1=always",
520            "pointee_read": "1=never",
521            "taken": ""
522         }
523      },
524      {
525         "type": "function",
526         "value": "^map_domain_gfn.*$",
527         "properties":{
528            "pointee_read": "5=never",
529            "taken": ""
530         }
531      },
532      {
533         "type": "function",
534         "value": "^fdt_getprop.*$",
535         "properties":{
536            "pointee_read": "4=never",
537            "taken": ""
538         }
539      },
540      {
541         "type": "function",
542         "value": "^fdt_get_name.*$",
543         "properties":{
544            "pointee_read": "3=never",
545            "taken": ""
546         }
547      },
548      {
549         "type": "function",
550         "value": "^fdt_get_property.*$",
551         "properties":{
552            "pointee_read": "4=never",
553            "taken": ""
554         }
555      },
556      {
557         "type": "function",
558         "value": "^pci_get_host_bridge_segment.*$",
559         "properties":{
560            "pointee_read": "2=never",
561            "taken": ""
562         }
563      },
564      {
565         "type": "function",
566         "value": "^dt_get_property.*$",
567         "properties":{
568            "pointee_read": "3=never",
569            "taken": ""
570         }
571      },
572      {
573         "type": "function",
574         "value": "^dt_property_read_u32.*$",
575         "properties":{
576            "pointee_read": "3=never",
577            "taken": ""
578         }
579      },
580      {
581         "type": "function",
582         "value": "^dt_device_get_paddr.*$",
583         "properties":{
584            "pointee_read": "3..4=never",
585            "taken": ""
586         }
587      },
588      {
589         "type": "function",
590         "value": "^get_evtchn_dt_property.*$",
591         "properties":{
592            "pointee_write": "2..3=maybe",
593            "pointee_read": "2..3=never",
594            "taken": ""
595         }
596      },
597      {
598         "type": "function",
599         "value": "^setup_chosen_node.*$",
600         "properties":{
601            "pointee_write": "2..3=maybe",
602            "pointee_read": "2..3=never",
603            "taken": ""
604         }
605      },
606      {
607         "type": "function",
608         "value": "^queue_remove_raw.*$",
609         "properties":{
610            "pointee_read": "2=never",
611            "taken": ""
612         }
613      },
614      {
615         "type": "macro",
616         "value": "^memset$",
617         "properties":{
618            "pointee_write": "1=always",
619            "pointee_read": "1=never",
620            "taken": ""
621         }
622      },
623      {
624         "type": "macro",
625         "value": "^va_start$",
626         "properties":{
627            "pointee_write": "1=always",
628            "pointee_read": "1=never",
629            "taken": ""
630         }
631      },
632      {
633         "type": "macro",
634         "value": "^memcmp$",
635         "properties":{
636            "pointee_write": "1..2=never",
637            "taken": ""
638         }
639      },
640      {
641         "type": "macro",
642         "value": "^memcpy$",
643         "properties":{
644            "pointee_write": "1=always&&2..=never",
645            "pointee_read": "1=never&&2..=always",
646            "taken": ""
647         }
648      },
649      {
650         "type": "function",
651         "value": "^get_cpu_info.*$",
652         "properties":{
653            "attribute": "pure"
654         }
655      },
656      {
657         "type": "function",
658         "value": "^pdx_to_pfn.*$",
659         "properties":{
660            "attribute": "pure"
661         }
662      },
663      {
664         "type": "function",
665         "value": "^is_pci_passthrough_enabled.*$",
666         "properties":{
667            "attribute": "const"
668         }
669      },
670      {
671         "type": "function",
672         "value": "^get_cycles.*$",
673         "properties":{
674            "attribute": "noeffect"
675         }
676      },
677      {
678         "type": "function",
679         "value": "^msi_gflags.*$",
680         "properties":{
681            "attribute": "const"
682         }
683      },
684      {
685         "type": "function",
686         "value": "^hvm_save_size.*$",
687         "properties":{
688            "attribute": "pure"
689         }
690      },
691      {
692         "type": "function",
693         "value": "^cpu_has.*$",
694         "properties":{
695            "attribute": "pure"
696         }
697      },
698      {
699         "type": "function",
700         "value": "^boot_cpu_has.*$",
701         "properties":{
702            "attribute": "pure"
703         }
704      },
705      {
706         "type": "function",
707         "value": "^get_cpu_info.*$",
708         "properties":{
709            "attribute": "pure"
710         }
711      },
712      {
713         "type": "function",
714         "value": "^put_pte_flags.*$",
715         "properties":{
716            "attribute": "const"
717         }
718      },
719      {
720         "type": "function",
721         "value": "^is_pv_cpu.*$",
722         "properties":{
723            "attribute": "pure"
724         }
725      },
726      {
727         "description": "Property inferred as a consequence of the semantics of device_tree_get_reg",
728         "type": "function",
729         "value": "^acquire_static_memory_bank.*$",
730         "properties":{
731            "pointee_write": "4..=always",
732            "pointee_read": "4..=never",
733            "taken": ""
734         }
735      },
736      {
737         "description": "Property inferred as a consequence of the semantics of dt_set_cell",
738         "type": "function",
739         "value": "^set_interrupt.*$",
740         "properties":{
741            "pointee_write": "1=always",
742            "pointee_read": "1=never",
743            "taken": ""
744         }
745      },
746      {
747         "description":"Property inferred as a consequence of the semantics of __p2m_get_mem_access",
748         "type": "function",
749         "value": "^p2m_get_mem_access.*$",
750         "properties":{
751            "pointee_write": "3=always",
752            "pointee_read": "3=never",
753            "taken": ""
754         }
755      },
756      {
757         "description": "This function has alternative definitions with props {write=always,read=never} and {write=never,read=never}",
758         "type": "function",
759         "value": "^alloc_cpumask_var.*$",
760         "properties":{
761            "pointee_write": "1=maybe",
762            "pointee_read": "1=never",
763            "taken": ""
764         }
765      },
766      {
767         "description": "Property inferred as a consequence of the semantics of alloc_cpumask_var",
768         "type": "function",
769         "value": "^xenctl_bitmap_to_cpumask.*$",
770         "properties":{
771            "pointee_write": "1=always",
772            "pointee_read": "1=never",
773            "taken": ""
774         }
775      },
776      {
777         "description": "The call to bitmap_and causes the pointee of dstp to be always written",
778         "type": "function",
779         "value": "^cpumask_(and|andnot|clear|copy|complement).*$",
780         "properties":{
781            "pointee_write": "1=always",
782            "pointee_read": "1=never",
783            "taken": ""
784         }
785      },
786      {
787         "description": "The call to bitmap_and causes the pointee of dstp to be always written",
788         "type": "function",
789         "value": "^bitmap_(andnot|complement|fill).*$",
790         "properties":{
791            "pointee_write": "1=always",
792            "pointee_read": "1=never",
793            "taken": ""
794         }
795      },
796      {
797         "description": "The .*copy_(to|from).* helpers all have a memcpy-like expectation that the destination is a copy of the source. Furthermore, their uses do initialize the involved variables as needed by futher uses in the caller.",
798         "type": "macro",
799         "value": "^(__)?(raw_)?copy_from_(paddr|guest|compat)(_offset)?$",
800         "properties":{
801            "pointee_write": "1=always",
802            "pointee_read": "1=never",
803            "taken": ""
804         }
805      },
806      {
807         "description":"The .*copy_(to|from).* helpers all have a memcpy-like expectation that the destination is a copy of the source. Furthermore, their uses do initialize the involved variables as needed by futher uses in the caller.",
808         "type": "macro",
809         "value": "^(__)?copy_to_(guest|compat)(_offset)?$",
810         "properties":{
811            "pointee_write": "2=always",
812            "pointee_read": "2=never",
813            "taken": ""
814         }
815      },
816      {
817         "description": "Functions generated by build_atomic_read cannot be considered pure since the input pointer is volatile, but they do not produce any persistent side effect.",
818         "type": "function",
819         "value": "^read_u(8|16|32|64|int)_atomic.*$",
820         "properties":{
821            "attribute": "noeffect"
822         }
823      },
824      {
825         "description": "Functions generated by TYPE_SAFE are const.",
826         "type": "function",
827         "value": "^(mfn|gfn|pfn)_x\\(.*$",
828         "properties":{
829            "attribute": "const"
830         }
831      },
832      {
833         "description": "Functions generated by TYPE_SAFE are const.",
834         "type": "function",
835         "value": "^_(mfn|gfn|pfn)\\(.*$",
836         "properties":{
837            "attribute": "const"
838         }
839      }
840   ]
841}
842