Line data Source code
1 :
2 : struct device;
3 :
4 : void *ldv_dev_get_drvdata(const struct device *dev);
5 : int ldv_dev_set_drvdata(struct device *dev, void *data);
6 :
7 : struct spi_master;
8 : struct device;
9 : struct spi_master *ldv_spi_alloc_master(struct device *host, unsigned size);
10 :
11 : #include <linux/ldv/err.h>
12 :
13 : #include <linux/types.h>
14 : void *ldv_kzalloc(size_t size, gfp_t flags);
15 :
16 : struct clk;
17 :
18 : extern void ldv_clk_disable(struct clk *clk);
19 : extern int ldv_clk_enable(void);
20 :
21 : #include <linux/ldv/common.h>
22 : #include <linux/ldv/irq.h>
23 : #include <verifier/common.h>
24 : #include <verifier/nondet.h>
25 : #include <verifier/memory.h>
26 : #include <verifier/thread.h>
27 :
28 :
29 :
30 : struct ldv_struct_insmod_5 {
31 : int signal_pending;
32 : };
33 1 :
34 : struct ldv_struct_random_containerless_scenario_3 {
35 : struct file_system_type *arg0;
36 : int signal_pending;
37 : };
38 :
39 : /* EMG Function declarations */
40 : void ldv_dispatch_default_deregister_1_5_4(void);
41 : void ldv_dispatch_default_deregister_5_5_5(void);
42 : void ldv_dispatch_default_register_1_5_7(void);
43 : void ldv_dispatch_default_register_5_5_6(void);
44 : void ldv_dispatch_deregister_6_1(struct file_system_type *);
45 : void ldv_dispatch_insmod_deregister_8_2(void);
46 : void ldv_dispatch_insmod_register_8_3(void);
47 : void ldv_dispatch_register_7_3(struct file_system_type *);
48 : int ldv_emg_register_filesystem(struct file_system_type *);
49 : int ldv_emg_unregister_filesystem(struct file_system_type *);
50 : void ldv_insmod_5(void *);
51 : void ldv_insmod_exit_vfat_fs_5_2(void (*)(void));
52 : int ldv_insmod_init_vfat_fs_5_11(int (*)(void));
53 : void ldv_main_8(void *);
54 : void ldv_random_containerless_scenario_1(void *);
55 : void ldv_random_containerless_scenario_2(void *);
56 : void ldv_random_containerless_scenario_3(void *);
57 : void ldv_random_containerless_scenario_4(void *);
58 : void ldv_random_containerless_scenario_callback_1_10(int (*)(struct dentry *, struct qstr *), struct dentry *, struct qstr *);
59 : void ldv_random_containerless_scenario_callback_1_11(int (*)(struct dentry *, struct nameidata *), struct dentry *, struct nameidata *);
60 : void ldv_random_containerless_scenario_callback_1_4(int (*)(struct dentry *, struct qstr *, struct qstr *), struct dentry *, struct qstr *, struct qstr *);
61 : void ldv_random_containerless_scenario_callback_2_10(int (*)(struct dentry *, struct qstr *), struct dentry *, struct qstr *);
62 : void ldv_random_containerless_scenario_callback_2_11(int (*)(struct dentry *, struct nameidata *), struct dentry *, struct nameidata *);
63 : void ldv_random_containerless_scenario_callback_2_4(int (*)(struct dentry *, struct qstr *, struct qstr *), struct dentry *, struct qstr *, struct qstr *);
64 : void ldv_random_containerless_scenario_callback_3_3(int (*)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *, int, char *, void *, struct vfsmount *);
65 : void ldv_random_containerless_scenario_callback_3_8(void (*)(struct super_block *), struct super_block *);
66 : void ldv_random_containerless_scenario_callback_4_10(int (*)(struct vfsmount *, struct dentry *, struct kstat *), struct vfsmount *, struct dentry *, struct kstat *);
67 : void ldv_random_containerless_scenario_callback_4_11(struct dentry *(*)(struct inode *, struct dentry *, struct nameidata *), struct inode *, struct dentry *, struct nameidata *);
68 : void ldv_random_containerless_scenario_callback_4_12(int (*)(struct inode *, struct dentry *, int), struct inode *, struct dentry *, int);
69 : void ldv_random_containerless_scenario_callback_4_15(int (*)(struct inode *, struct dentry *, struct inode *, struct dentry *), struct inode *, struct dentry *, struct inode *, struct dentry *);
70 : void ldv_random_containerless_scenario_callback_4_18(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
71 : void ldv_random_containerless_scenario_callback_4_19(int (*)(struct dentry *, struct iattr *), struct dentry *, struct iattr *);
72 : void ldv_random_containerless_scenario_callback_4_20(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
73 : void ldv_random_containerless_scenario_callback_4_4(int (*)(struct inode *, struct dentry *, int, struct nameidata *), struct inode *, struct dentry *, int, struct nameidata *);
74 : int main(void);
75 :
76 : /* EMG variable declarations */
77 1 : struct ldv_thread ldv_thread_1;
78 1 : struct ldv_thread ldv_thread_2;
79 1 : struct ldv_thread ldv_thread_3;
80 1 : struct ldv_thread ldv_thread_4;
81 1 : struct ldv_thread ldv_thread_5;
82 1 : struct ldv_thread ldv_thread_8;
83 :
84 : /* EMG variable initialization */
85 :
86 : /* EMG function definitions */
87 : /* AUX_FUNC ldv_dispatch_default_deregister_1_5_4 */
88 : void ldv_dispatch_default_deregister_1_5_4() {
89 : struct ldv_struct_insmod_5 *cf_arg_1;
90 : struct ldv_struct_insmod_5 *cf_arg_2;
91 : /* Skip thread join call */
92 : /* Skip thread join call */
93 1 : return;
94 : }
95 :
96 : /* AUX_FUNC ldv_dispatch_default_deregister_5_5_5 */
97 : void ldv_dispatch_default_deregister_5_5_5() {
98 : struct ldv_struct_insmod_5 *cf_arg_4;
99 : /* Skip thread join call */
100 1 : return;
101 : }
102 :
103 : /* AUX_FUNC ldv_dispatch_default_register_1_5_7 */
104 : void ldv_dispatch_default_register_1_5_7() {
105 : struct ldv_struct_insmod_5 *cf_arg_1;
106 1 : struct ldv_struct_insmod_5 *cf_arg_2;
107 4 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_5));
108 3 : ldv_random_containerless_scenario_1(cf_arg_1);
109 4 : cf_arg_2 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_5));
110 2 : ldv_random_containerless_scenario_2(cf_arg_2);
111 1 : return;
112 : }
113 :
114 : /* AUX_FUNC ldv_dispatch_default_register_5_5_6 */
115 : void ldv_dispatch_default_register_5_5_6() {
116 : struct ldv_struct_insmod_5 *cf_arg_4;
117 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_5));
118 3 : ldv_random_containerless_scenario_4(cf_arg_4);
119 1 : return;
120 : }
121 :
122 : /* AUX_FUNC ldv_dispatch_deregister_6_1 */
123 : void ldv_dispatch_deregister_6_1(struct file_system_type *arg0) {
124 : struct ldv_struct_random_containerless_scenario_3 *cf_arg_3;
125 : /* Skip thread join call */
126 2 : return;
127 : }
128 :
129 : /* AUX_FUNC ldv_dispatch_insmod_deregister_8_2 */
130 : void ldv_dispatch_insmod_deregister_8_2() {
131 : struct ldv_struct_insmod_5 *cf_arg_5;
132 : /* Skip thread join call */
133 1 : return;
134 : }
135 :
136 : /* AUX_FUNC ldv_dispatch_insmod_register_8_3 */
137 : void ldv_dispatch_insmod_register_8_3() {
138 : struct ldv_struct_insmod_5 *cf_arg_5;
139 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_5));
140 4 : ldv_insmod_5(cf_arg_5);
141 1 : return;
142 : }
143 :
144 : /* AUX_FUNC ldv_dispatch_register_7_3 */
145 : void ldv_dispatch_register_7_3(struct file_system_type *arg0) {
146 : struct ldv_struct_random_containerless_scenario_3 *cf_arg_3;
147 4 : cf_arg_3 = ldv_xmalloc(sizeof(struct ldv_struct_random_containerless_scenario_3));
148 2 : cf_arg_3->arg0 = arg0;
149 2 : ldv_random_containerless_scenario_3(cf_arg_3);
150 1 : return;
151 : }
152 :
153 : /* AUX_FUNC ldv_emg_register_filesystem */
154 : int ldv_emg_register_filesystem(struct file_system_type *arg0) {
155 : /* LDV {"comment": "Control function 'register_filesystem'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_register_filesystem"} */
156 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
157 1 : struct file_system_type *ldv_7_struct_file_system_type_struct_file_system_type;
158 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
159 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
160 :
161 4 : if (ldv_undef_int()) {
162 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_file_system_type' callbacks to register."} */
163 1 : ldv_7_struct_file_system_type_struct_file_system_type = arg0;
164 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
165 :
166 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register STRUCT_FILE_SYSTEM_TYPE callbacks."} */
167 2 : ldv_dispatch_register_7_3(ldv_7_struct_file_system_type_struct_file_system_type);
168 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
169 :
170 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'struct_file_system_type' callbacks."} */
171 3 : return ldv_undef_int_negative();
172 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
173 :
174 : /* Exit function at a terminal state */
175 : }
176 : else {
177 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'struct_file_system_type' callbacks has been successful."} */
178 1 : return 0;
179 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
180 :
181 : /* Exit function at a terminal state */
182 : }
183 : /* End of the process */
184 : /* LDV {"comment": "End of control function based on process 'register_filesystem'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_register_filesystem"} */
185 : }
186 :
187 : /* AUX_FUNC ldv_emg_unregister_filesystem */
188 : int ldv_emg_unregister_filesystem(struct file_system_type *arg0) {
189 : /* LDV {"comment": "Control function 'unregister_filesystem'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_unregister_filesystem"} */
190 2 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
191 : struct file_system_type *ldv_6_struct_file_system_type_struct_file_system_type;
192 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
193 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_file_system_type' callbacks to deregister."} */
194 2 : ldv_6_struct_file_system_type_struct_file_system_type = arg0;
195 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
196 :
197 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister STRUCT_FILE_SYSTEM_TYPE callbacks."} */
198 4 : ldv_dispatch_deregister_6_1(ldv_6_struct_file_system_type_struct_file_system_type);
199 2 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
200 :
201 : /* Exit function at a terminal state */
202 : /* End of the process */
203 : /* LDV {"comment": "End of control function based on process 'unregister_filesystem'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_unregister_filesystem"} */
204 : }
205 :
206 : /* AUX_FUNC ldv_insmod_5 */
207 : void ldv_insmod_5(void *arg0) {
208 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_5"} */
209 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
210 1 : void (*ldv_5_exit_vfat_fs_default)(void);
211 1 : int (*ldv_5_init_vfat_fs_default)(void);
212 1 : int ldv_5_ret_default;
213 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
214 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
215 2 : ldv_free(arg0);
216 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
217 :
218 : /* LDV {"action": "INIT_VFAT_FS", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'init_vfat_fs' function. Invoke callback init_vfat_fs from ARTIFICIAL."} */
219 : /* LDV {"type": "CALLBACK", "call": "ldv_5_ret_default = (init_vfat_fs)();", "comment": "init_vfat_fs"} */
220 2 : ldv_5_ret_default = ldv_insmod_init_vfat_fs_5_11(ldv_5_init_vfat_fs_default);
221 : /* Callback post-call */
222 2 : ldv_5_ret_default = ldv_post_init(ldv_5_ret_default);
223 : /* LDV {"action": "INIT_VFAT_FS", "type": "CALL_END"} */
224 :
225 4 : if (ldv_undef_int()) {
226 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
227 2 : ldv_assume(ldv_5_ret_default != 0);
228 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
229 :
230 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
231 : /* Skip a non-replicative signal receiving */
232 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
233 :
234 : /* Exit function at a terminal state */
235 1 : return;
236 : }
237 : else {
238 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
239 2 : ldv_assume(ldv_5_ret_default == 0);
240 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
241 :
242 4 : if (ldv_undef_int()) {
243 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown registration function."} */
244 2 : ldv_dispatch_default_register_1_5_7();
245 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "DISPATCH_END"} */
246 :
247 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_INODE_OPERATIONS' callbacks with unknown registration function."} */
248 2 : ldv_dispatch_default_register_5_5_6();
249 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "DISPATCH_END"} */
250 :
251 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_INODE_OPERATIONS' callbacks with unknown deregistration function."} */
252 2 : ldv_dispatch_default_deregister_5_5_5();
253 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "DISPATCH_END"} */
254 :
255 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown deregistration function."} */
256 2 : ldv_dispatch_default_deregister_1_5_4();
257 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "DISPATCH_END"} */
258 :
259 : }
260 : else {
261 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
262 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
263 :
264 : }
265 : /* LDV {"action": "EXIT_VFAT_FS", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'exit_vfat_fs' function. Invoke callback exit_vfat_fs from ARTIFICIAL."} */
266 : /* LDV {"type": "CALLBACK", "call": "(exit_vfat_fs)();", "comment": "exit_vfat_fs"} */
267 4 : ldv_insmod_exit_vfat_fs_5_2(ldv_5_exit_vfat_fs_default);
268 : /* LDV {"action": "EXIT_VFAT_FS", "type": "CALL_END"} */
269 :
270 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
271 : /* Skip a non-replicative signal receiving */
272 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
273 :
274 : /* Exit function at a terminal state */
275 1 : return;
276 : }
277 : /* End of the process */
278 : return;
279 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_5"} */
280 : }
281 :
282 : /* AUX_FUNC_CALLBACK ldv_insmod_exit_vfat_fs_5_2 */
283 : void ldv_insmod_exit_vfat_fs_5_2(void (*arg0)(void)) {
284 4 : (exit_vfat_fs)();
285 2 : }
286 :
287 : /* AUX_FUNC_CALLBACK ldv_insmod_init_vfat_fs_5_11 */
288 : int ldv_insmod_init_vfat_fs_5_11(int (*arg0)(void)) {
289 3 : return (init_vfat_fs)();
290 1 : }
291 :
292 : /* AUX_FUNC ldv_main_8 */
293 : void ldv_main_8(void *arg0) {
294 : /* LDV {"thread": 8, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_8"} */
295 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
296 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
297 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
298 1 : ldv_initialize();
299 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
300 :
301 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
302 2 : ldv_dispatch_insmod_register_8_3();
303 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
304 :
305 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
306 2 : ldv_dispatch_insmod_deregister_8_2();
307 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
308 :
309 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
310 1 : ldv_check_final_state();
311 1 : ldv_stop();
312 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
313 :
314 : /* Exit function at a terminal state */
315 0 : return;
316 : /* End of the process */
317 : return;
318 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_8"} */
319 : }
320 :
321 : /* AUX_FUNC ldv_random_containerless_scenario_1 */
322 : void ldv_random_containerless_scenario_1(void *arg0) {
323 : /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_dentry_operations)'", "function": "ldv_random_containerless_scenario_1"} */
324 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
325 1 : int (*ldv_1_callback_d_compare)(struct dentry *, struct qstr *, struct qstr *);
326 1 : int (*ldv_1_callback_d_hash)(struct dentry *, struct qstr *);
327 1 : int (*ldv_1_callback_d_revalidate)(struct dentry *, struct nameidata *);
328 1 : struct dentry *ldv_1_container_struct_dentry_ptr;
329 1 : struct nameidata *ldv_1_container_struct_nameidata_ptr;
330 1 : struct qstr *ldv_1_container_struct_qstr_ptr;
331 1 : struct qstr *ldv_1_ldv_param_4_2_default;
332 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
333 1 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
334 3 : ldv_free(arg0);
335 1 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "RECEIVE_END"} */
336 1 :
337 : /* LDV {"action": "DEFAULT_ALLOC_1", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
338 3 : ldv_1_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
339 3 : ldv_1_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
340 3 : ldv_1_container_struct_qstr_ptr = ldv_xmalloc_unknown_size(0);
341 : /* LDV {"action": "DEFAULT_ALLOC_1", "type": "CONDITION_END"} */
342 :
343 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
344 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
345 :
346 : /* Jump to a subprocess 'call' initial state */
347 1 : goto ldv_call_1;
348 : /* End of the process */
349 : return;
350 1 :
351 : /* Sbprocess call */
352 : ldv_call_1:
353 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
354 :
355 4 : if (ldv_undef_int()) {
356 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
357 3 : ldv_1_ldv_param_4_2_default = ldv_xmalloc_unknown_size(0);
358 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
359 :
360 2 : switch (ldv_undef_int()) {
361 3 : case 1: {
362 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_revalidate from dentry_operations."} */
363 : /* LDV {"type": "CALLBACK", "call": "((& vfat_revalidate))(ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_nameidata_ptr);", "comment": "callback"} */
364 2 : ldv_random_containerless_scenario_callback_1_11(ldv_1_callback_d_revalidate, ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_nameidata_ptr);
365 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
366 :
367 1 : break;
368 1 : }
369 3 : case 2: {
370 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_hash from dentry_operations."} */
371 : /* LDV {"type": "CALLBACK", "call": "((& vfat_hash))(ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_qstr_ptr);", "comment": "callback"} */
372 2 : ldv_random_containerless_scenario_callback_1_10(ldv_1_callback_d_hash, ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_qstr_ptr);
373 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
374 :
375 1 : break;
376 1 : }
377 3 : case 3: {
378 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_compare from dentry_operations."} */
379 : /* LDV {"type": "CALLBACK", "call": "((& vfat_cmp))(ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_qstr_ptr, ldv_1_ldv_param_4_2_default);", "comment": "callback"} */
380 2 : ldv_random_containerless_scenario_callback_1_4(ldv_1_callback_d_compare, ldv_1_container_struct_dentry_ptr, ldv_1_container_struct_qstr_ptr, ldv_1_ldv_param_4_2_default);
381 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
382 :
383 1 : break;
384 1 : }
385 2 : default: ldv_stop();
386 1 : }
387 0 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
388 6 : ldv_free(ldv_1_ldv_param_4_2_default);
389 0 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
390 :
391 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
392 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
393 :
394 : /* Jump to a subprocess 'call' initial state */
395 1 : goto ldv_call_1;
396 : }
397 : else {
398 : /* LDV {"action": "DEFAULT_FREE_1", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
399 2 : ldv_free(ldv_1_container_struct_dentry_ptr);
400 2 : ldv_free(ldv_1_container_struct_nameidata_ptr);
401 2 : ldv_free(ldv_1_container_struct_qstr_ptr);
402 : /* LDV {"action": "DEFAULT_FREE_1", "type": "CONDITION_END"} */
403 :
404 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
405 : /* Skip a non-replicative signal receiving */
406 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "RECEIVE_END"} */
407 :
408 : /* Exit function at a terminal state */
409 1 : return;
410 : }
411 : /* End of the subprocess 'call' */
412 : return;
413 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_dentry_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_1"} */
414 : }
415 :
416 : /* AUX_FUNC ldv_random_containerless_scenario_2 */
417 : void ldv_random_containerless_scenario_2(void *arg0) {
418 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_dentry_operations)'", "function": "ldv_random_containerless_scenario_2"} */
419 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
420 1 : int (*ldv_2_callback_d_compare)(struct dentry *, struct qstr *, struct qstr *);
421 1 : int (*ldv_2_callback_d_hash)(struct dentry *, struct qstr *);
422 1 : int (*ldv_2_callback_d_revalidate)(struct dentry *, struct nameidata *);
423 1 : struct dentry *ldv_2_container_struct_dentry_ptr;
424 1 : struct nameidata *ldv_2_container_struct_nameidata_ptr;
425 1 : struct qstr *ldv_2_container_struct_qstr_ptr;
426 1 : struct qstr *ldv_2_ldv_param_4_2_default;
427 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
428 1 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
429 3 : ldv_free(arg0);
430 1 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "RECEIVE_END"} */
431 1 :
432 : /* LDV {"action": "DEFAULT_ALLOC_1", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
433 3 : ldv_2_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
434 3 : ldv_2_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
435 3 : ldv_2_container_struct_qstr_ptr = ldv_xmalloc_unknown_size(0);
436 : /* LDV {"action": "DEFAULT_ALLOC_1", "type": "CONDITION_END"} */
437 :
438 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
439 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
440 :
441 : /* Jump to a subprocess 'call' initial state */
442 1 : goto ldv_call_2;
443 : /* End of the process */
444 : return;
445 1 :
446 : /* Sbprocess call */
447 : ldv_call_2:
448 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
449 :
450 4 : if (ldv_undef_int()) {
451 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
452 3 : ldv_2_ldv_param_4_2_default = ldv_xmalloc_unknown_size(0);
453 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
454 :
455 2 : switch (ldv_undef_int()) {
456 3 : case 1: {
457 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_revalidate from dentry_operations."} */
458 : /* LDV {"type": "CALLBACK", "call": "((& vfat_revalidate_ci))(ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_nameidata_ptr);", "comment": "callback"} */
459 2 : ldv_random_containerless_scenario_callback_2_11(ldv_2_callback_d_revalidate, ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_nameidata_ptr);
460 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
461 :
462 1 : break;
463 1 : }
464 3 : case 2: {
465 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_hash from dentry_operations."} */
466 : /* LDV {"type": "CALLBACK", "call": "((& vfat_hashi))(ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_qstr_ptr);", "comment": "callback"} */
467 2 : ldv_random_containerless_scenario_callback_2_10(ldv_2_callback_d_hash, ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_qstr_ptr);
468 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
469 :
470 1 : break;
471 1 : }
472 3 : case 3: {
473 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_compare from dentry_operations."} */
474 : /* LDV {"type": "CALLBACK", "call": "((& vfat_cmpi))(ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_qstr_ptr, ldv_2_ldv_param_4_2_default);", "comment": "callback"} */
475 2 : ldv_random_containerless_scenario_callback_2_4(ldv_2_callback_d_compare, ldv_2_container_struct_dentry_ptr, ldv_2_container_struct_qstr_ptr, ldv_2_ldv_param_4_2_default);
476 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
477 :
478 1 : break;
479 1 : }
480 2 : default: ldv_stop();
481 1 : }
482 0 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
483 6 : ldv_free(ldv_2_ldv_param_4_2_default);
484 0 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
485 :
486 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
487 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
488 :
489 : /* Jump to a subprocess 'call' initial state */
490 1 : goto ldv_call_2;
491 : }
492 : else {
493 : /* LDV {"action": "DEFAULT_FREE_1", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
494 2 : ldv_free(ldv_2_container_struct_dentry_ptr);
495 2 : ldv_free(ldv_2_container_struct_nameidata_ptr);
496 2 : ldv_free(ldv_2_container_struct_qstr_ptr);
497 : /* LDV {"action": "DEFAULT_FREE_1", "type": "CONDITION_END"} */
498 :
499 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
500 : /* Skip a non-replicative signal receiving */
501 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "RECEIVE_END"} */
502 :
503 : /* Exit function at a terminal state */
504 1 : return;
505 : }
506 : /* End of the subprocess 'call' */
507 : return;
508 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_dentry_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_2"} */
509 : }
510 :
511 : /* AUX_FUNC ldv_random_containerless_scenario_3 */
512 : void ldv_random_containerless_scenario_3(void *arg0) {
513 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_file_system_type)'", "function": "ldv_random_containerless_scenario_3"} */
514 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
515 : int (*ldv_3_callback_get_sb)(struct file_system_type *, int, char *, void *, struct vfsmount *);
516 1 : void (*ldv_3_callback_kill_sb)(struct super_block *);
517 1 : struct file_system_type *ldv_3_container_struct_file_system_type;
518 1 : struct super_block *ldv_3_container_struct_super_block_ptr;
519 1 : struct vfsmount *ldv_3_container_struct_vfsmount_ptr;
520 1 : int ldv_3_ldv_param_3_1_default;
521 1 : char *ldv_3_ldv_param_3_2_default;
522 1 : /* Received labels */
523 2 : struct ldv_struct_random_containerless_scenario_3 *data = (struct ldv_struct_random_containerless_scenario_3*) arg0;
524 1 :
525 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
526 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_FILE_SYSTEM_TYPE callbacks invocations scenario."} */
527 : /* Assign recieved labels */
528 2 : if (data) {
529 1 : ldv_3_container_struct_file_system_type = data->arg0;
530 2 : ldv_free(data);
531 : }
532 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
533 :
534 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
535 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
536 :
537 : /* Jump to a subprocess 'call' initial state */
538 2 : goto ldv_call_3;
539 : /* End of the process */
540 : return;
541 1 :
542 : /* Sbprocess call */
543 : ldv_call_3:
544 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
545 :
546 4 : if (ldv_undef_int()) {
547 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
548 3 : ldv_3_ldv_param_3_2_default = ldv_xmalloc_unknown_size(0);
549 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_END"} */
550 :
551 4 : if (ldv_undef_int()) {
552 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback kill_sb from file_system_type."} */
553 : /* LDV {"type": "CALLBACK", "call": "((& kill_block_super))(ldv_3_container_struct_super_block_ptr);", "comment": "callback"} */
554 2 : ldv_random_containerless_scenario_callback_3_8(ldv_3_callback_kill_sb, ldv_3_container_struct_super_block_ptr);
555 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
556 :
557 : }
558 : else {
559 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_sb from file_system_type."} */
560 : /* LDV {"type": "CALLBACK", "call": "((& vfat_get_sb))(ldv_3_container_struct_file_system_type, ldv_3_ldv_param_3_1_default, ldv_3_ldv_param_3_2_default, ldv_3_container_struct_super_block_ptr, ldv_3_container_struct_vfsmount_ptr);", "comment": "callback"} */
561 2 : ldv_random_containerless_scenario_callback_3_3(ldv_3_callback_get_sb, ldv_3_container_struct_file_system_type, ldv_3_ldv_param_3_1_default, ldv_3_ldv_param_3_2_default, ldv_3_container_struct_super_block_ptr, ldv_3_container_struct_vfsmount_ptr);
562 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
563 :
564 : }
565 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
566 4 : ldv_free(ldv_3_ldv_param_3_2_default);
567 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_END"} */
568 :
569 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
570 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
571 :
572 : /* Jump to a subprocess 'call' initial state */
573 1 : goto ldv_call_3;
574 : }
575 : else {
576 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_FILE_SYSTEM_TYPE callbacks invocations scenario."} */
577 : /* Skip a non-replicative signal receiving */
578 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
579 :
580 : /* Exit function at a terminal state */
581 1 : return;
582 : }
583 : /* End of the subprocess 'call' */
584 : return;
585 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_file_system_type)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_3"} */
586 : }
587 :
588 : /* AUX_FUNC ldv_random_containerless_scenario_4 */
589 : void ldv_random_containerless_scenario_4(void *arg0) {
590 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_inode_operations)'", "function": "ldv_random_containerless_scenario_4"} */
591 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
592 1 : int (*ldv_4_callback_create)(struct inode *, struct dentry *, int, struct nameidata *);
593 1 : int (*ldv_4_callback_getattr)(struct vfsmount *, struct dentry *, struct kstat *);
594 1 : struct dentry *(*ldv_4_callback_lookup)(struct inode *, struct dentry *, struct nameidata *);
595 1 : int (*ldv_4_callback_mkdir)(struct inode *, struct dentry *, int);
596 : int (*ldv_4_callback_rename)(struct inode *, struct dentry *, struct inode *, struct dentry *);
597 1 : int (*ldv_4_callback_rmdir)(struct inode *, struct dentry *);
598 1 : int (*ldv_4_callback_setattr)(struct dentry *, struct iattr *);
599 1 : int (*ldv_4_callback_unlink)(struct inode *, struct dentry *);
600 1 : struct dentry *ldv_4_container_struct_dentry_ptr;
601 1 : struct iattr *ldv_4_container_struct_iattr_ptr;
602 1 : struct inode *ldv_4_container_struct_inode_ptr;
603 1 : struct kstat *ldv_4_container_struct_kstat_ptr;
604 1 : struct nameidata *ldv_4_container_struct_nameidata_ptr;
605 1 : struct vfsmount *ldv_4_container_struct_vfsmount_ptr;
606 1 : int ldv_4_ldv_param_12_2_default;
607 1 : struct inode *ldv_4_ldv_param_15_2_default;
608 1 : struct dentry *ldv_4_ldv_param_15_3_default;
609 1 : int ldv_4_ldv_param_4_2_default;
610 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
611 1 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
612 3 : ldv_free(arg0);
613 1 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "RECEIVE_END"} */
614 1 :
615 1 : /* LDV {"action": "DEFAULT_ALLOC_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
616 4 : ldv_4_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
617 4 : ldv_4_container_struct_iattr_ptr = ldv_xmalloc_unknown_size(0);
618 4 : ldv_4_container_struct_inode_ptr = ldv_xmalloc_unknown_size(0);
619 4 : ldv_4_container_struct_kstat_ptr = ldv_xmalloc_unknown_size(0);
620 3 : ldv_4_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
621 3 : ldv_4_container_struct_vfsmount_ptr = ldv_xmalloc_unknown_size(0);
622 : /* LDV {"action": "DEFAULT_ALLOC_5", "type": "CONDITION_END"} */
623 :
624 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
625 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
626 :
627 : /* Jump to a subprocess 'call' initial state */
628 1 : goto ldv_call_4;
629 : /* End of the process */
630 : return;
631 1 :
632 : /* Sbprocess call */
633 : ldv_call_4:
634 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
635 :
636 4 : if (ldv_undef_int()) {
637 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
638 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
639 :
640 2 : switch (ldv_undef_int()) {
641 3 : case 1: {
642 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback unlink from inode_operations."} */
643 : /* LDV {"type": "CALLBACK", "call": "((& vfat_unlink))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr);", "comment": "callback"} */
644 2 : ldv_random_containerless_scenario_callback_4_20(ldv_4_callback_unlink, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr);
645 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
646 :
647 1 : break;
648 1 : }
649 3 : case 2: {
650 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback setattr from inode_operations."} */
651 : /* LDV {"type": "CALLBACK", "call": "((& fat_setattr))(ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_iattr_ptr);", "comment": "callback"} */
652 2 : ldv_random_containerless_scenario_callback_4_19(ldv_4_callback_setattr, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_iattr_ptr);
653 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
654 :
655 1 : break;
656 1 : }
657 3 : case 3: {
658 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback rmdir from inode_operations."} */
659 : /* LDV {"type": "CALLBACK", "call": "((& vfat_rmdir))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr);", "comment": "callback"} */
660 2 : ldv_random_containerless_scenario_callback_4_18(ldv_4_callback_rmdir, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr);
661 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
662 :
663 1 : break;
664 1 : }
665 3 : case 4: {
666 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
667 3 : ldv_4_ldv_param_15_2_default = ldv_xmalloc_unknown_size(0);
668 3 : ldv_4_ldv_param_15_3_default = ldv_xmalloc_unknown_size(0);
669 : /* LDV {"action": "PRE_CALL_15", "type": "CONDITION_END"} */
670 :
671 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback rename from inode_operations."} */
672 : /* LDV {"type": "CALLBACK", "call": "((& vfat_rename))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_15_2_default, ldv_4_ldv_param_15_3_default);", "comment": "callback"} */
673 2 : ldv_random_containerless_scenario_callback_4_15(ldv_4_callback_rename, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_15_2_default, ldv_4_ldv_param_15_3_default);
674 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
675 :
676 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
677 2 : ldv_free(ldv_4_ldv_param_15_2_default);
678 2 : ldv_free(ldv_4_ldv_param_15_3_default);
679 : /* LDV {"action": "POST_CALL_15", "type": "CONDITION_END"} */
680 :
681 1 : break;
682 1 : }
683 3 : case 5: {
684 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
685 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_END"} */
686 :
687 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback mkdir from inode_operations."} */
688 : /* LDV {"type": "CALLBACK", "call": "((& vfat_mkdir))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_12_2_default);", "comment": "callback"} */
689 2 : ldv_random_containerless_scenario_callback_4_12(ldv_4_callback_mkdir, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_12_2_default);
690 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
691 :
692 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
693 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_END"} */
694 :
695 1 : break;
696 1 : }
697 3 : case 6: {
698 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback lookup from inode_operations."} */
699 : /* LDV {"type": "CALLBACK", "call": "((& vfat_lookup))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_nameidata_ptr);", "comment": "callback"} */
700 2 : ldv_random_containerless_scenario_callback_4_11(ldv_4_callback_lookup, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_nameidata_ptr);
701 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
702 :
703 1 : break;
704 1 : }
705 3 : case 7: {
706 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback getattr from inode_operations."} */
707 : /* LDV {"type": "CALLBACK", "call": "((& fat_getattr))(ldv_4_container_struct_vfsmount_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_kstat_ptr);", "comment": "callback"} */
708 2 : ldv_random_containerless_scenario_callback_4_10(ldv_4_callback_getattr, ldv_4_container_struct_vfsmount_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_kstat_ptr);
709 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
710 :
711 1 : break;
712 1 : }
713 3 : case 8: {
714 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback create from inode_operations."} */
715 : /* LDV {"type": "CALLBACK", "call": "((& vfat_create))(ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_4_2_default, ldv_4_container_struct_nameidata_ptr);", "comment": "callback"} */
716 2 : ldv_random_containerless_scenario_callback_4_4(ldv_4_callback_create, ldv_4_container_struct_inode_ptr, ldv_4_container_struct_dentry_ptr, ldv_4_ldv_param_4_2_default, ldv_4_container_struct_nameidata_ptr);
717 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
718 :
719 1 : break;
720 1 : }
721 2 : default: ldv_stop();
722 1 : }
723 0 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
724 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
725 0 :
726 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
727 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
728 :
729 : /* Jump to a subprocess 'call' initial state */
730 8 : goto ldv_call_4;
731 : }
732 : else {
733 : /* LDV {"action": "DEFAULT_FREE_5", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
734 2 : ldv_free(ldv_4_container_struct_dentry_ptr);
735 2 : ldv_free(ldv_4_container_struct_iattr_ptr);
736 2 : ldv_free(ldv_4_container_struct_inode_ptr);
737 2 : ldv_free(ldv_4_container_struct_kstat_ptr);
738 2 : ldv_free(ldv_4_container_struct_nameidata_ptr);
739 2 : ldv_free(ldv_4_container_struct_vfsmount_ptr);
740 : /* LDV {"action": "DEFAULT_FREE_5", "type": "CONDITION_END"} */
741 :
742 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
743 : /* Skip a non-replicative signal receiving */
744 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "RECEIVE_END"} */
745 :
746 : /* Exit function at a terminal state */
747 1 : return;
748 : }
749 : /* End of the subprocess 'call' */
750 : return;
751 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_inode_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_4"} */
752 : }
753 :
754 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_1_10 */
755 : void ldv_random_containerless_scenario_callback_1_10(int (*arg0)(struct dentry *, struct qstr *), struct dentry *arg1, struct qstr *arg2) {
756 2 : ((& vfat_hash))(arg1, arg2);
757 1 : }
758 :
759 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_1_11 */
760 : void ldv_random_containerless_scenario_callback_1_11(int (*arg0)(struct dentry *, struct nameidata *), struct dentry *arg1, struct nameidata *arg2) {
761 3 : ((& vfat_revalidate))(arg1, arg2);
762 1 : }
763 :
764 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_1_4 */
765 : void ldv_random_containerless_scenario_callback_1_4(int (*arg0)(struct dentry *, struct qstr *, struct qstr *), struct dentry *arg1, struct qstr *arg2, struct qstr *arg3) {
766 2 : ((& vfat_cmp))(arg1, arg2, arg3);
767 1 : }
768 :
769 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_10 */
770 : void ldv_random_containerless_scenario_callback_2_10(int (*arg0)(struct dentry *, struct qstr *), struct dentry *arg1, struct qstr *arg2) {
771 2 : ((& vfat_hashi))(arg1, arg2);
772 1 : }
773 :
774 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_11 */
775 : void ldv_random_containerless_scenario_callback_2_11(int (*arg0)(struct dentry *, struct nameidata *), struct dentry *arg1, struct nameidata *arg2) {
776 3 : ((& vfat_revalidate_ci))(arg1, arg2);
777 1 : }
778 :
779 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_2_4 */
780 : void ldv_random_containerless_scenario_callback_2_4(int (*arg0)(struct dentry *, struct qstr *, struct qstr *), struct dentry *arg1, struct qstr *arg2, struct qstr *arg3) {
781 3 : ((& vfat_cmpi))(arg1, arg2, arg3);
782 1 : }
783 :
784 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_3 */
785 : void ldv_random_containerless_scenario_callback_3_3(int (*arg0)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *arg1, int arg2, char *arg3, void *arg4, struct vfsmount *arg5) {
786 2 : ((& vfat_get_sb))(arg1, arg2, arg3, arg4, arg5);
787 1 : }
788 :
789 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_3_8 */
790 : void ldv_random_containerless_scenario_callback_3_8(void (*arg0)(struct super_block *), struct super_block *arg1) {
791 1 : ((& kill_block_super))(arg1);
792 1 : }
793 :
794 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_10 */
795 : void ldv_random_containerless_scenario_callback_4_10(int (*arg0)(struct vfsmount *, struct dentry *, struct kstat *), struct vfsmount *arg1, struct dentry *arg2, struct kstat *arg3) {
796 1 : ((& fat_getattr))(arg1, arg2, arg3);
797 1 : }
798 :
799 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_11 */
800 : void ldv_random_containerless_scenario_callback_4_11(struct dentry *(*arg0)(struct inode *, struct dentry *, struct nameidata *), struct inode *arg1, struct dentry *arg2, struct nameidata *arg3) {
801 5 : ((& vfat_lookup))(arg1, arg2, arg3);
802 1 : }
803 :
804 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_12 */
805 : void ldv_random_containerless_scenario_callback_4_12(int (*arg0)(struct inode *, struct dentry *, int), struct inode *arg1, struct dentry *arg2, int arg3) {
806 5 : ((& vfat_mkdir))(arg1, arg2, arg3);
807 1 : }
808 :
809 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_15 */
810 : void ldv_random_containerless_scenario_callback_4_15(int (*arg0)(struct inode *, struct dentry *, struct inode *, struct dentry *), struct inode *arg1, struct dentry *arg2, struct inode *arg3, struct dentry *arg4) {
811 2 : ((& vfat_rename))(arg1, arg2, arg3, arg4);
812 1 : }
813 :
814 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_18 */
815 : void ldv_random_containerless_scenario_callback_4_18(int (*arg0)(struct inode *, struct dentry *), struct inode *arg1, struct dentry *arg2) {
816 4 : ((& vfat_rmdir))(arg1, arg2);
817 1 : }
818 :
819 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_19 */
820 : void ldv_random_containerless_scenario_callback_4_19(int (*arg0)(struct dentry *, struct iattr *), struct dentry *arg1, struct iattr *arg2) {
821 1 : ((& fat_setattr))(arg1, arg2);
822 1 : }
823 :
824 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_20 */
825 : void ldv_random_containerless_scenario_callback_4_20(int (*arg0)(struct inode *, struct dentry *), struct inode *arg1, struct dentry *arg2) {
826 3 : ((& vfat_unlink))(arg1, arg2);
827 1 : }
828 :
829 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_4_4 */
830 : void ldv_random_containerless_scenario_callback_4_4(int (*arg0)(struct inode *, struct dentry *, int, struct nameidata *), struct inode *arg1, struct dentry *arg2, int arg3, struct nameidata *arg4) {
831 4 : ((& vfat_create))(arg1, arg2, arg3, arg4);
832 1 : }
833 :
834 : /* AUX_FUNC main */
835 : int main() {
836 1 : ldv_main_8(0);
837 0 : return 0;
838 : }
839 :
840 :
841 : /* AUX_FUNC ERR_PTR */
842 : static inline void *ERR_PTR (long int error)
843 : {
844 2 :
845 6 : return ldv_err_ptr(error);
846 : }
847 :
848 : /* AUX_FUNC PTR_ERR */
849 : static inline long int PTR_ERR (void const *ptr)
850 : {
851 3 :
852 9 : return ldv_ptr_err(ptr);
853 : }
854 :
855 : /* AUX_FUNC IS_ERR */
856 : static inline long int IS_ERR (void const *ptr)
857 : {
858 3 :
859 9 : return ldv_is_err(ptr);
860 : }
861 :
862 : /* AUX_FUNC IS_ERR_OR_NULL */
863 : static inline long int IS_ERR_OR_NULL (void const *ptr)
864 : {
865 :
866 : return ldv_is_err_or_null(ptr);
867 : }
868 :
869 : /* AUX_FUNC kzalloc */
870 : static inline void *kzalloc (size_t size, gfp_t flags)
871 : {
872 :
873 : return ldv_kzalloc(size, flags);
874 : }
875 :
876 : /* AUX_FUNC ldv_register_filesystem_6 */
877 : int ldv_register_filesystem_6 (struct file_system_type *ldv_func_arg1)
878 : {
879 1 :
880 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'register_filesystem'"} */
881 4 : return ldv_emg_register_filesystem(ldv_func_arg1);
882 : }
883 :
884 : /* AUX_FUNC ldv_unregister_filesystem_7 */
885 : int ldv_unregister_filesystem_7 (struct file_system_type *ldv_func_arg1)
886 : {
887 2 :
888 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_filesystem'"} */
889 6 : return ldv_emg_unregister_filesystem(ldv_func_arg1);
890 : }
|