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 : #include <linux/cdev.h>
29 : #include <linux/miscdevice.h>
30 : #include <linux/fs.h>
31 : #include <linux/pagemap.h>
32 :
33 :
34 : struct ldv_struct_insmod_8 {
35 : int signal_pending;
36 : };
37 1 :
38 : struct ldv_struct_random_containerless_scenario_5 {
39 : struct file_system_type *arg0;
40 : int signal_pending;
41 : };
42 :
43 : /* EMG Function declarations */
44 : extern void ldv_character_driver_scenario_1(void *);
45 : extern void ldv_character_driver_scenario_2(void *);
46 : void ldv_character_driver_scenario_callback_2_25(int (*)(struct file *, void *, filldir_t ), struct file *, void *, int (*)(void *, char *, int, loff_t , u64 , unsigned int));
47 : void ldv_character_driver_scenario_write_1_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
48 : void ldv_dispatch_default_deregister_1_8_5(void);
49 : void ldv_dispatch_default_deregister_2_8_6(void);
50 : void ldv_dispatch_default_deregister_3_8_7(void);
51 : void ldv_dispatch_default_deregister_7_8_8(void);
52 : void ldv_dispatch_default_deregister_8_8_4(void);
53 : void ldv_dispatch_default_register_1_8_12(void);
54 : void ldv_dispatch_default_register_2_8_11(void);
55 : void ldv_dispatch_default_register_3_8_10(void);
56 : void ldv_dispatch_default_register_7_8_9(void);
57 : void ldv_dispatch_default_register_8_8_13(void);
58 : void ldv_dispatch_deregister_9_1(struct file_system_type *);
59 : void ldv_dispatch_insmod_deregister_11_2(void);
60 : void ldv_dispatch_insmod_register_11_3(void);
61 : void ldv_dispatch_register_10_3(struct file_system_type *);
62 : int ldv_emg_register_filesystem(struct file_system_type *);
63 : int ldv_emg_unregister_filesystem(struct file_system_type *);
64 : void ldv_insmod_8(void *);
65 : void ldv_insmod_configfs_exit_8_2(void (*)(void));
66 : int ldv_insmod_configfs_init_8_17(int (*)(void));
67 : void ldv_main_11(void *);
68 : void ldv_random_containerless_scenario_3(void *);
69 : void ldv_random_containerless_scenario_4(void *);
70 : void ldv_random_containerless_scenario_5(void *);
71 : void ldv_random_containerless_scenario_6(void *);
72 : void ldv_random_containerless_scenario_7(void *);
73 : extern void ldv_random_containerless_scenario_callback_3_11(int (*)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page *, void *), struct file *, struct address_space *, long long int, unsigned int, unsigned int, struct page *, void *);
74 : extern void ldv_random_containerless_scenario_callback_3_4(int (*)(struct file *, struct page *), struct file *, struct page *);
75 : extern void ldv_random_containerless_scenario_callback_3_8(int (*)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page **, void **), struct file *, struct address_space *, long long int, unsigned int, unsigned int, struct page **, void **);
76 : extern void ldv_random_containerless_scenario_callback_4_4(int (*)(struct dentry *), struct dentry *);
77 : extern void ldv_random_containerless_scenario_callback_4_8(void (*)(struct dentry *, struct inode *), struct dentry *, struct inode *);
78 : void ldv_random_containerless_scenario_callback_5_3(int (*)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *, int, char *, void *, struct vfsmount *);
79 : void ldv_random_containerless_scenario_callback_5_8(void (*)(struct super_block *), struct super_block *);
80 : extern void ldv_random_containerless_scenario_callback_6_12(void (*)(struct dentry *, struct nameidata *, void *), struct dentry *, struct nameidata *, void *);
81 : extern void ldv_random_containerless_scenario_callback_6_13(int (*)(struct dentry *, char *, int), struct dentry *, char *, int);
82 : extern void ldv_random_containerless_scenario_callback_6_16(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
83 : extern void ldv_random_containerless_scenario_callback_6_17(int (*)(struct dentry *, struct iattr *), struct dentry *, struct iattr *);
84 : extern void ldv_random_containerless_scenario_callback_6_18(int (*)(struct inode *, struct dentry *, char *), struct inode *, struct dentry *, char *);
85 : extern void ldv_random_containerless_scenario_callback_6_21(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
86 : extern void ldv_random_containerless_scenario_callback_6_4(void *(*)(struct dentry *, struct nameidata *), struct dentry *, struct nameidata *);
87 : extern void ldv_random_containerless_scenario_callback_6_8(struct dentry *(*)(struct inode *, struct dentry *, struct nameidata *), struct inode *, struct dentry *, struct nameidata *);
88 : extern void ldv_random_containerless_scenario_callback_6_9(int (*)(struct inode *, struct dentry *, int), struct inode *, struct dentry *, int);
89 : void ldv_random_containerless_scenario_callback_7_4(void (*)(struct inode *), struct inode *);
90 : void ldv_random_containerless_scenario_callback_7_8(int (*)(struct dentry *, struct kstatfs *), struct dentry *, struct kstatfs *);
91 : int main(void);
92 :
93 : /* EMG variable declarations */
94 1 : struct ldv_thread ldv_thread_11;
95 1 : struct ldv_thread ldv_thread_3;
96 1 : struct ldv_thread ldv_thread_4;
97 1 : struct ldv_thread ldv_thread_5;
98 1 : struct ldv_thread ldv_thread_6;
99 1 : struct ldv_thread ldv_thread_7;
100 1 : struct ldv_thread ldv_thread_8;
101 :
102 : /* EMG variable initialization */
103 :
104 : /* EMG function definitions */
105 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_25 */
106 : void ldv_character_driver_scenario_callback_2_25(int (*arg0)(struct file *, void *, filldir_t ), struct file *arg1, void *arg2, int (*arg3)(void *, char *, int, loff_t , u64 , unsigned int)) {
107 2 : (*arg0)(arg1, arg2, arg3);
108 1 : }
109 :
110 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_1_4 */
111 : void ldv_character_driver_scenario_write_1_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
112 3 : (*arg0)(arg1, arg2, arg3, arg4);
113 1 : }
114 :
115 : /* AUX_FUNC ldv_dispatch_default_deregister_1_8_5 */
116 : void ldv_dispatch_default_deregister_1_8_5() {
117 : struct ldv_struct_insmod_8 *cf_arg_1;
118 : struct ldv_struct_insmod_8 *cf_arg_2;
119 : /* Skip thread join call */
120 : /* Skip thread join call */
121 1 : return;
122 : }
123 :
124 : /* AUX_FUNC ldv_dispatch_default_deregister_2_8_6 */
125 : void ldv_dispatch_default_deregister_2_8_6() {
126 : struct ldv_struct_insmod_8 *cf_arg_3;
127 : /* Skip thread join call */
128 1 : return;
129 : }
130 :
131 : /* AUX_FUNC ldv_dispatch_default_deregister_3_8_7 */
132 : void ldv_dispatch_default_deregister_3_8_7() {
133 : struct ldv_struct_insmod_8 *cf_arg_4;
134 : /* Skip thread join call */
135 1 : return;
136 : }
137 :
138 : /* AUX_FUNC ldv_dispatch_default_deregister_7_8_8 */
139 : void ldv_dispatch_default_deregister_7_8_8() {
140 : struct ldv_struct_insmod_8 *cf_arg_6;
141 : /* Skip thread join call */
142 1 : return;
143 : }
144 :
145 : /* AUX_FUNC ldv_dispatch_default_deregister_8_8_4 */
146 : void ldv_dispatch_default_deregister_8_8_4() {
147 : struct ldv_struct_insmod_8 *cf_arg_7;
148 : /* Skip thread join call */
149 1 : return;
150 : }
151 :
152 : /* AUX_FUNC ldv_dispatch_default_register_1_8_12 */
153 : void ldv_dispatch_default_register_1_8_12() {
154 : struct ldv_struct_insmod_8 *cf_arg_1;
155 1 : struct ldv_struct_insmod_8 *cf_arg_2;
156 4 : cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
157 3 : ldv_character_driver_scenario_1(cf_arg_1);
158 4 : cf_arg_2 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
159 2 : ldv_character_driver_scenario_2(cf_arg_2);
160 1 : return;
161 : }
162 :
163 : /* AUX_FUNC ldv_dispatch_default_register_2_8_11 */
164 : void ldv_dispatch_default_register_2_8_11() {
165 : struct ldv_struct_insmod_8 *cf_arg_3;
166 4 : cf_arg_3 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
167 3 : ldv_random_containerless_scenario_3(cf_arg_3);
168 1 : return;
169 : }
170 :
171 : /* AUX_FUNC ldv_dispatch_default_register_3_8_10 */
172 : void ldv_dispatch_default_register_3_8_10() {
173 : struct ldv_struct_insmod_8 *cf_arg_4;
174 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
175 3 : ldv_random_containerless_scenario_4(cf_arg_4);
176 1 : return;
177 : }
178 :
179 : /* AUX_FUNC ldv_dispatch_default_register_7_8_9 */
180 : void ldv_dispatch_default_register_7_8_9() {
181 : struct ldv_struct_insmod_8 *cf_arg_6;
182 4 : cf_arg_6 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
183 3 : ldv_random_containerless_scenario_6(cf_arg_6);
184 1 : return;
185 : }
186 :
187 : /* AUX_FUNC ldv_dispatch_default_register_8_8_13 */
188 : void ldv_dispatch_default_register_8_8_13() {
189 : struct ldv_struct_insmod_8 *cf_arg_7;
190 4 : cf_arg_7 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
191 3 : ldv_random_containerless_scenario_7(cf_arg_7);
192 1 : return;
193 : }
194 :
195 : /* AUX_FUNC ldv_dispatch_deregister_9_1 */
196 : void ldv_dispatch_deregister_9_1(struct file_system_type *arg0) {
197 : struct ldv_struct_random_containerless_scenario_5 *cf_arg_5;
198 : /* Skip thread join call */
199 3 : return;
200 : }
201 :
202 : /* AUX_FUNC ldv_dispatch_insmod_deregister_11_2 */
203 : void ldv_dispatch_insmod_deregister_11_2() {
204 : struct ldv_struct_insmod_8 *cf_arg_8;
205 : /* Skip thread join call */
206 1 : return;
207 : }
208 :
209 : /* AUX_FUNC ldv_dispatch_insmod_register_11_3 */
210 : void ldv_dispatch_insmod_register_11_3() {
211 : struct ldv_struct_insmod_8 *cf_arg_8;
212 4 : cf_arg_8 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_8));
213 4 : ldv_insmod_8(cf_arg_8);
214 1 : return;
215 : }
216 :
217 : /* AUX_FUNC ldv_dispatch_register_10_3 */
218 : void ldv_dispatch_register_10_3(struct file_system_type *arg0) {
219 : struct ldv_struct_random_containerless_scenario_5 *cf_arg_5;
220 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_random_containerless_scenario_5));
221 2 : cf_arg_5->arg0 = arg0;
222 2 : ldv_random_containerless_scenario_5(cf_arg_5);
223 1 : return;
224 : }
225 :
226 : /* AUX_FUNC ldv_emg_register_filesystem */
227 : int ldv_emg_register_filesystem(struct file_system_type *arg0) {
228 : /* LDV {"comment": "Control function 'register_filesystem'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_register_filesystem"} */
229 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
230 1 : struct file_system_type *ldv_10_struct_file_system_type_struct_file_system_type;
231 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
232 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
233 :
234 4 : if (ldv_undef_int()) {
235 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_file_system_type' callbacks to register."} */
236 1 : ldv_10_struct_file_system_type_struct_file_system_type = arg0;
237 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
238 :
239 : /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register STRUCT_FILE_SYSTEM_TYPE callbacks."} */
240 2 : ldv_dispatch_register_10_3(ldv_10_struct_file_system_type_struct_file_system_type);
241 : /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
242 :
243 : /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'struct_file_system_type' callbacks."} */
244 3 : return ldv_undef_int_negative();
245 : /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
246 :
247 : /* Exit function at a terminal state */
248 : }
249 : else {
250 : /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'struct_file_system_type' callbacks has been successful."} */
251 1 : return 0;
252 : /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
253 :
254 : /* Exit function at a terminal state */
255 : }
256 : /* End of the process */
257 : /* LDV {"comment": "End of control function based on process 'register_filesystem'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_register_filesystem"} */
258 : }
259 :
260 : /* AUX_FUNC ldv_emg_unregister_filesystem */
261 : int ldv_emg_unregister_filesystem(struct file_system_type *arg0) {
262 : /* LDV {"comment": "Control function 'unregister_filesystem'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_unregister_filesystem"} */
263 3 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
264 : struct file_system_type *ldv_9_struct_file_system_type_struct_file_system_type;
265 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
266 : /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'struct_file_system_type' callbacks to deregister."} */
267 3 : ldv_9_struct_file_system_type_struct_file_system_type = arg0;
268 : /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
269 :
270 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister STRUCT_FILE_SYSTEM_TYPE callbacks."} */
271 6 : ldv_dispatch_deregister_9_1(ldv_9_struct_file_system_type_struct_file_system_type);
272 3 : /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
273 :
274 : /* Exit function at a terminal state */
275 : /* End of the process */
276 : /* LDV {"comment": "End of control function based on process 'unregister_filesystem'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_unregister_filesystem"} */
277 : }
278 :
279 : /* AUX_FUNC ldv_insmod_8 */
280 : void ldv_insmod_8(void *arg0) {
281 : /* LDV {"thread": 8, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_8"} */
282 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
283 1 : void (*ldv_8_configfs_exit_default)(void);
284 1 : int (*ldv_8_configfs_init_default)(void);
285 1 : int ldv_8_ret_default;
286 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
287 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
288 2 : ldv_free(arg0);
289 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
290 :
291 : /* LDV {"action": "CONFIGFS_INIT", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'configfs_init' function. Invoke callback configfs_init from ARTIFICIAL."} */
292 : /* LDV {"type": "CALLBACK", "call": "ldv_8_ret_default = (configfs_init)();", "comment": "configfs_init"} */
293 2 : ldv_8_ret_default = ldv_insmod_configfs_init_8_17(ldv_8_configfs_init_default);
294 : /* Callback post-call */
295 2 : ldv_8_ret_default = ldv_post_init(ldv_8_ret_default);
296 : /* LDV {"action": "CONFIGFS_INIT", "type": "CALL_END"} */
297 :
298 4 : if (ldv_undef_int()) {
299 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
300 2 : ldv_assume(ldv_8_ret_default != 0);
301 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
302 :
303 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
304 : /* Skip a non-replicative signal receiving */
305 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
306 :
307 : /* Exit function at a terminal state */
308 1 : return;
309 : }
310 : else {
311 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
312 2 : ldv_assume(ldv_8_ret_default == 0);
313 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
314 :
315 4 : if (ldv_undef_int()) {
316 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_SUPER_OPERATIONS' callbacks with unknown registration function."} */
317 2 : ldv_dispatch_default_register_8_8_13();
318 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "DISPATCH_END"} */
319 :
320 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "DISPATCH_BEGIN", "comment": "Register 'FILE_OPERATIONS' callbacks with unknown registration function."} */
321 2 : ldv_dispatch_default_register_1_8_12();
322 : /* LDV {"action": "DEFAULT_REGISTER_1", "type": "DISPATCH_END"} */
323 :
324 : /* LDV {"action": "DEFAULT_REGISTER_2", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_ADDRESS_SPACE_OPERATIONS' callbacks with unknown registration function."} */
325 2 : ldv_dispatch_default_register_2_8_11();
326 : /* LDV {"action": "DEFAULT_REGISTER_2", "type": "DISPATCH_END"} */
327 :
328 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown registration function."} */
329 2 : ldv_dispatch_default_register_3_8_10();
330 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "DISPATCH_END"} */
331 :
332 : /* LDV {"action": "DEFAULT_REGISTER_7", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_INODE_OPERATIONS' callbacks with unknown registration function."} */
333 2 : ldv_dispatch_default_register_7_8_9();
334 : /* LDV {"action": "DEFAULT_REGISTER_7", "type": "DISPATCH_END"} */
335 :
336 : /* LDV {"action": "DEFAULT_DEREGISTER_7", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_INODE_OPERATIONS' callbacks with unknown deregistration function."} */
337 2 : ldv_dispatch_default_deregister_7_8_8();
338 : /* LDV {"action": "DEFAULT_DEREGISTER_7", "type": "DISPATCH_END"} */
339 :
340 : /* LDV {"action": "DEFAULT_DEREGISTER_3", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown deregistration function."} */
341 2 : ldv_dispatch_default_deregister_3_8_7();
342 : /* LDV {"action": "DEFAULT_DEREGISTER_3", "type": "DISPATCH_END"} */
343 :
344 : /* LDV {"action": "DEFAULT_DEREGISTER_2", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_ADDRESS_SPACE_OPERATIONS' callbacks with unknown deregistration function."} */
345 2 : ldv_dispatch_default_deregister_2_8_6();
346 : /* LDV {"action": "DEFAULT_DEREGISTER_2", "type": "DISPATCH_END"} */
347 :
348 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "DISPATCH_BEGIN", "comment": "Deregister 'FILE_OPERATIONS' callbacks with unknown deregistration function."} */
349 2 : ldv_dispatch_default_deregister_1_8_5();
350 : /* LDV {"action": "DEFAULT_DEREGISTER_1", "type": "DISPATCH_END"} */
351 :
352 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_SUPER_OPERATIONS' callbacks with unknown deregistration function."} */
353 2 : ldv_dispatch_default_deregister_8_8_4();
354 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "DISPATCH_END"} */
355 :
356 : }
357 : else {
358 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
359 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
360 :
361 : }
362 : /* LDV {"action": "CONFIGFS_EXIT", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'configfs_exit' function. Invoke callback configfs_exit from ARTIFICIAL."} */
363 : /* LDV {"type": "CALLBACK", "call": "(configfs_exit)();", "comment": "configfs_exit"} */
364 4 : ldv_insmod_configfs_exit_8_2(ldv_8_configfs_exit_default);
365 : /* LDV {"action": "CONFIGFS_EXIT", "type": "CALL_END"} */
366 :
367 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
368 : /* Skip a non-replicative signal receiving */
369 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
370 :
371 : /* Exit function at a terminal state */
372 1 : return;
373 : }
374 : /* End of the process */
375 : return;
376 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_8"} */
377 : }
378 :
379 : /* AUX_FUNC_CALLBACK ldv_insmod_configfs_exit_8_2 */
380 : void ldv_insmod_configfs_exit_8_2(void (*arg0)(void)) {
381 4 : (configfs_exit)();
382 2 : }
383 :
384 : /* AUX_FUNC_CALLBACK ldv_insmod_configfs_init_8_17 */
385 : int ldv_insmod_configfs_init_8_17(int (*arg0)(void)) {
386 6 : return (configfs_init)();
387 1 : }
388 :
389 : /* AUX_FUNC ldv_main_11 */
390 : void ldv_main_11(void *arg0) {
391 : /* LDV {"thread": 11, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_11"} */
392 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
393 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
394 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
395 1 : ldv_initialize();
396 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
397 :
398 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
399 2 : ldv_dispatch_insmod_register_11_3();
400 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
401 :
402 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
403 2 : ldv_dispatch_insmod_deregister_11_2();
404 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
405 :
406 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
407 1 : ldv_check_final_state();
408 1 : ldv_stop();
409 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
410 :
411 : /* Exit function at a terminal state */
412 0 : return;
413 : /* End of the process */
414 : return;
415 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_11"} */
416 : }
417 :
418 : /* AUX_FUNC ldv_random_containerless_scenario_3 */
419 : void ldv_random_containerless_scenario_3(void *arg0) {
420 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_address_space_operations)'", "function": "ldv_random_containerless_scenario_3"} */
421 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
422 1 : int (*ldv_3_callback_readpage)(struct file *, struct page *);
423 : int (*ldv_3_callback_write_begin)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page **, void **);
424 : int (*ldv_3_callback_write_end)(struct file *, struct address_space *, loff_t , unsigned int, unsigned int, struct page *, void *);
425 1 : struct address_space *ldv_3_container_struct_address_space_ptr;
426 : struct file *ldv_3_container_struct_file_ptr;
427 : struct page *ldv_3_container_struct_page_ptr;
428 1 : long long int ldv_3_ldv_param_11_2_default;
429 1 : unsigned int ldv_3_ldv_param_11_3_default;
430 1 : unsigned int ldv_3_ldv_param_11_4_default;
431 1 : void *ldv_3_ldv_param_11_6_default;
432 1 : long long int ldv_3_ldv_param_8_2_default;
433 1 : unsigned int ldv_3_ldv_param_8_3_default;
434 1 : unsigned int ldv_3_ldv_param_8_4_default;
435 1 : void **ldv_3_ldv_param_8_6_default;
436 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
437 1 : /* LDV {"action": "DEFAULT_REGISTER_2", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_ADDRESS_SPACE_OPERATIONS callbacks invocations scenario."} */
438 3 : ldv_free(arg0);
439 1 : /* LDV {"action": "DEFAULT_REGISTER_2", "type": "RECEIVE_END"} */
440 1 :
441 1 : /* LDV {"action": "DEFAULT_ALLOC_2", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
442 4 : ldv_3_container_struct_address_space_ptr = ldv_xmalloc_unknown_size(0);
443 4 : ldv_3_container_struct_file_ptr = ldv_xmalloc_unknown_size(0);
444 3 : ldv_3_container_struct_page_ptr = ldv_xmalloc_unknown_size(0);
445 : /* LDV {"action": "DEFAULT_ALLOC_2", "type": "CONDITION_END"} */
446 :
447 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
448 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
449 :
450 : /* Jump to a subprocess 'call' initial state */
451 1 : goto ldv_call_3;
452 : /* End of the process */
453 : return;
454 1 :
455 : /* Sbprocess call */
456 : ldv_call_3:
457 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
458 :
459 2 : switch (ldv_undef_int()) {
460 3 : case 1: {
461 : /* LDV {"action": "PRE_CALL_11", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
462 2 : ldv_3_ldv_param_11_6_default = ldv_xmalloc_unknown_size(0);
463 : /* LDV {"action": "PRE_CALL_11", "type": "CONDITION_END"} */
464 :
465 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback write_end from address_space_operations."} */
466 : /* LDV {"type": "CALLBACK", "call": "((& simple_write_end))(ldv_3_container_struct_file_ptr, ldv_3_container_struct_address_space_ptr, ldv_3_ldv_param_11_2_default, ldv_3_ldv_param_11_3_default, ldv_3_ldv_param_11_4_default, ldv_3_container_struct_page_ptr, ldv_3_ldv_param_11_6_default);", "comment": "callback"} */
467 2 : ldv_random_containerless_scenario_callback_3_11(ldv_3_callback_write_end, ldv_3_container_struct_file_ptr, ldv_3_container_struct_address_space_ptr, ldv_3_ldv_param_11_2_default, ldv_3_ldv_param_11_3_default, ldv_3_ldv_param_11_4_default, ldv_3_container_struct_page_ptr, ldv_3_ldv_param_11_6_default);
468 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
469 :
470 : /* LDV {"action": "POST_CALL_11", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
471 2 : ldv_free(ldv_3_ldv_param_11_6_default);
472 : /* LDV {"action": "POST_CALL_11", "type": "CONDITION_END"} */
473 :
474 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
475 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
476 :
477 : /* Jump to a subprocess 'call' initial state */
478 1 : goto ldv_call_3;
479 1 : break;
480 : }
481 3 : case 2: {
482 : /* LDV {"action": "PRE_CALL_8", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
483 3 : ldv_3_ldv_param_8_6_default = ldv_xmalloc_unknown_size(0);
484 : /* LDV {"action": "PRE_CALL_8", "type": "CONDITION_END"} */
485 :
486 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback write_begin from address_space_operations."} */
487 : /* LDV {"type": "CALLBACK", "call": "((& simple_write_begin))(ldv_3_container_struct_file_ptr, ldv_3_container_struct_address_space_ptr, ldv_3_ldv_param_8_2_default, ldv_3_ldv_param_8_3_default, ldv_3_ldv_param_8_4_default, ldv_3_container_struct_page_ptr, ldv_3_ldv_param_8_6_default);", "comment": "callback"} */
488 2 : ldv_random_containerless_scenario_callback_3_8(ldv_3_callback_write_begin, ldv_3_container_struct_file_ptr, ldv_3_container_struct_address_space_ptr, ldv_3_ldv_param_8_2_default, ldv_3_ldv_param_8_3_default, ldv_3_ldv_param_8_4_default, ldv_3_container_struct_page_ptr, ldv_3_ldv_param_8_6_default);
489 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
490 :
491 : /* LDV {"action": "POST_CALL_8", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
492 2 : ldv_free(ldv_3_ldv_param_8_6_default);
493 : /* LDV {"action": "POST_CALL_8", "type": "CONDITION_END"} */
494 :
495 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
496 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
497 :
498 : /* Jump to a subprocess 'call' initial state */
499 1 : goto ldv_call_3;
500 : /* Jump to a subprocess 'call' initial state */
501 : goto ldv_call_3;
502 1 : break;
503 : }
504 3 : case 3: {
505 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback readpage from address_space_operations."} */
506 : /* LDV {"type": "CALLBACK", "call": "((& simple_readpage))(ldv_3_container_struct_file_ptr, ldv_3_container_struct_page_ptr);", "comment": "callback"} */
507 2 : ldv_random_containerless_scenario_callback_3_4(ldv_3_callback_readpage, ldv_3_container_struct_file_ptr, ldv_3_container_struct_page_ptr);
508 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
509 :
510 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
511 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
512 :
513 : /* Jump to a subprocess 'call' initial state */
514 1 : goto ldv_call_3;
515 : /* Jump to a subprocess 'call' initial state */
516 : goto ldv_call_3;
517 : /* Jump to a subprocess 'call' initial state */
518 : goto ldv_call_3;
519 1 : break;
520 : }
521 3 : case 4: {
522 : /* LDV {"action": "DEFAULT_FREE_2", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
523 2 : ldv_free(ldv_3_container_struct_address_space_ptr);
524 2 : ldv_free(ldv_3_container_struct_file_ptr);
525 2 : ldv_free(ldv_3_container_struct_page_ptr);
526 : /* LDV {"action": "DEFAULT_FREE_2", "type": "CONDITION_END"} */
527 :
528 : /* LDV {"action": "DEFAULT_DEREGISTER_2", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_ADDRESS_SPACE_OPERATIONS callbacks invocations scenario."} */
529 : /* Skip a non-replicative signal receiving */
530 : /* LDV {"action": "DEFAULT_DEREGISTER_2", "type": "RECEIVE_END"} */
531 :
532 : /* Exit function at a terminal state */
533 1 : return;
534 1 : break;
535 : }
536 2 : default: ldv_stop();
537 1 : }
538 0 : /* End of the subprocess 'call' */
539 0 : return;
540 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_address_space_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_3"} */
541 : }
542 :
543 : /* AUX_FUNC ldv_random_containerless_scenario_4 */
544 : void ldv_random_containerless_scenario_4(void *arg0) {
545 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_dentry_operations)'", "function": "ldv_random_containerless_scenario_4"} */
546 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
547 1 : int (*ldv_4_callback_d_delete)(struct dentry *);
548 1 : void (*ldv_4_callback_d_iput)(struct dentry *, struct inode *);
549 1 : struct dentry *ldv_4_container_struct_dentry_ptr;
550 1 : struct inode *ldv_4_container_struct_inode_ptr;
551 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
552 1 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
553 2 : ldv_free(arg0);
554 : /* LDV {"action": "DEFAULT_REGISTER_3", "type": "RECEIVE_END"} */
555 :
556 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
557 3 : ldv_4_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
558 3 : ldv_4_container_struct_inode_ptr = ldv_xmalloc_unknown_size(0);
559 : /* LDV {"action": "DEFAULT_ALLOC_3", "type": "CONDITION_END"} */
560 :
561 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
562 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
563 :
564 : /* Jump to a subprocess 'call' initial state */
565 1 : goto ldv_call_4;
566 : /* End of the process */
567 : return;
568 1 :
569 : /* Sbprocess call */
570 : ldv_call_4:
571 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
572 :
573 2 : switch (ldv_undef_int()) {
574 3 : case 1: {
575 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_iput from dentry_operations."} */
576 : /* LDV {"type": "CALLBACK", "call": "((& configfs_d_iput))(ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_inode_ptr);", "comment": "callback"} */
577 2 : ldv_random_containerless_scenario_callback_4_8(ldv_4_callback_d_iput, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_inode_ptr);
578 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
579 :
580 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
581 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
582 :
583 : /* Jump to a subprocess 'call' initial state */
584 1 : goto ldv_call_4;
585 1 : break;
586 : }
587 3 : case 2: {
588 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_delete from dentry_operations."} */
589 : /* LDV {"type": "CALLBACK", "call": "((& configfs_d_delete))(ldv_4_container_struct_dentry_ptr);", "comment": "callback"} */
590 2 : ldv_random_containerless_scenario_callback_4_4(ldv_4_callback_d_delete, ldv_4_container_struct_dentry_ptr);
591 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
592 :
593 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
594 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
595 :
596 : /* Jump to a subprocess 'call' initial state */
597 1 : goto ldv_call_4;
598 : /* Jump to a subprocess 'call' initial state */
599 : goto ldv_call_4;
600 1 : break;
601 : }
602 3 : case 3: {
603 : /* LDV {"action": "DEFAULT_FREE_3", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
604 2 : ldv_free(ldv_4_container_struct_dentry_ptr);
605 2 : ldv_free(ldv_4_container_struct_inode_ptr);
606 : /* LDV {"action": "DEFAULT_FREE_3", "type": "CONDITION_END"} */
607 :
608 : /* LDV {"action": "DEFAULT_DEREGISTER_3", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
609 : /* Skip a non-replicative signal receiving */
610 : /* LDV {"action": "DEFAULT_DEREGISTER_3", "type": "RECEIVE_END"} */
611 :
612 : /* Exit function at a terminal state */
613 1 : return;
614 1 : break;
615 : }
616 2 : default: ldv_stop();
617 1 : }
618 0 : /* End of the subprocess 'call' */
619 0 : return;
620 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_dentry_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_4"} */
621 : }
622 :
623 : /* AUX_FUNC ldv_random_containerless_scenario_5 */
624 : void ldv_random_containerless_scenario_5(void *arg0) {
625 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_file_system_type)'", "function": "ldv_random_containerless_scenario_5"} */
626 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
627 : int (*ldv_5_callback_get_sb)(struct file_system_type *, int, char *, void *, struct vfsmount *);
628 1 : void (*ldv_5_callback_kill_sb)(struct super_block *);
629 1 : struct file_system_type *ldv_5_container_struct_file_system_type;
630 1 : struct super_block *ldv_5_container_struct_super_block_ptr;
631 1 : struct vfsmount *ldv_5_container_struct_vfsmount_ptr;
632 1 : int ldv_5_ldv_param_3_1_default;
633 1 : char *ldv_5_ldv_param_3_2_default;
634 1 : /* Received labels */
635 2 : struct ldv_struct_random_containerless_scenario_5 *data = (struct ldv_struct_random_containerless_scenario_5*) arg0;
636 1 :
637 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
638 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_FILE_SYSTEM_TYPE callbacks invocations scenario."} */
639 : /* Assign recieved labels */
640 2 : if (data) {
641 1 : ldv_5_container_struct_file_system_type = data->arg0;
642 2 : ldv_free(data);
643 : }
644 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
645 :
646 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
647 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
648 :
649 : /* Jump to a subprocess 'call' initial state */
650 2 : goto ldv_call_5;
651 : /* End of the process */
652 : return;
653 1 :
654 : /* Sbprocess call */
655 : ldv_call_5:
656 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
657 :
658 4 : if (ldv_undef_int()) {
659 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
660 3 : ldv_5_ldv_param_3_2_default = ldv_xmalloc_unknown_size(0);
661 : /* LDV {"action": "PRE_CALL_3", "type": "CONDITION_END"} */
662 :
663 4 : if (ldv_undef_int()) {
664 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback kill_sb from file_system_type."} */
665 : /* LDV {"type": "CALLBACK", "call": "((& kill_litter_super))(ldv_5_container_struct_super_block_ptr);", "comment": "callback"} */
666 2 : ldv_random_containerless_scenario_callback_5_8(ldv_5_callback_kill_sb, ldv_5_container_struct_super_block_ptr);
667 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
668 :
669 : }
670 : else {
671 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_sb from file_system_type."} */
672 : /* LDV {"type": "CALLBACK", "call": "((& configfs_get_sb))(ldv_5_container_struct_file_system_type, ldv_5_ldv_param_3_1_default, ldv_5_ldv_param_3_2_default, ldv_5_container_struct_super_block_ptr, ldv_5_container_struct_vfsmount_ptr);", "comment": "callback"} */
673 2 : ldv_random_containerless_scenario_callback_5_3(ldv_5_callback_get_sb, ldv_5_container_struct_file_system_type, ldv_5_ldv_param_3_1_default, ldv_5_ldv_param_3_2_default, ldv_5_container_struct_super_block_ptr, ldv_5_container_struct_vfsmount_ptr);
674 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
675 :
676 : }
677 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
678 4 : ldv_free(ldv_5_ldv_param_3_2_default);
679 : /* LDV {"action": "POST_CALL_3", "type": "CONDITION_END"} */
680 :
681 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
682 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
683 :
684 : /* Jump to a subprocess 'call' initial state */
685 1 : goto ldv_call_5;
686 : }
687 : else {
688 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_FILE_SYSTEM_TYPE callbacks invocations scenario."} */
689 : /* Skip a non-replicative signal receiving */
690 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
691 :
692 : /* Exit function at a terminal state */
693 1 : return;
694 : }
695 : /* End of the subprocess 'call' */
696 : return;
697 : /* 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_5"} */
698 : }
699 :
700 : /* AUX_FUNC ldv_random_containerless_scenario_6 */
701 : void ldv_random_containerless_scenario_6(void *arg0) {
702 : /* LDV {"thread": 6, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_inode_operations)'", "function": "ldv_random_containerless_scenario_6"} */
703 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
704 1 : void *(*ldv_6_callback_follow_link)(struct dentry *, struct nameidata *);
705 1 : struct dentry *(*ldv_6_callback_lookup)(struct inode *, struct dentry *, struct nameidata *);
706 1 : int (*ldv_6_callback_mkdir)(struct inode *, struct dentry *, int);
707 1 : void (*ldv_6_callback_put_link)(struct dentry *, struct nameidata *, void *);
708 1 : int (*ldv_6_callback_readlink)(struct dentry *, char *, int);
709 1 : int (*ldv_6_callback_rmdir)(struct inode *, struct dentry *);
710 1 : int (*ldv_6_callback_setattr)(struct dentry *, struct iattr *);
711 1 : int (*ldv_6_callback_symlink)(struct inode *, struct dentry *, char *);
712 1 : int (*ldv_6_callback_unlink)(struct inode *, struct dentry *);
713 1 : struct dentry *ldv_6_container_struct_dentry_ptr;
714 1 : struct iattr *ldv_6_container_struct_iattr_ptr;
715 1 : struct inode *ldv_6_container_struct_inode_ptr;
716 1 : struct nameidata *ldv_6_container_struct_nameidata_ptr;
717 1 : char *ldv_6_ldv_param_13_1_default;
718 1 : int ldv_6_ldv_param_13_2_default;
719 1 : char *ldv_6_ldv_param_18_2_default;
720 1 : int ldv_6_ldv_param_9_2_default;
721 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
722 1 : /* LDV {"action": "DEFAULT_REGISTER_7", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
723 3 : ldv_free(arg0);
724 1 : /* LDV {"action": "DEFAULT_REGISTER_7", "type": "RECEIVE_END"} */
725 1 :
726 1 : /* LDV {"action": "DEFAULT_ALLOC_7", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
727 3 : ldv_6_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
728 3 : ldv_6_container_struct_iattr_ptr = ldv_xmalloc_unknown_size(0);
729 3 : ldv_6_container_struct_inode_ptr = ldv_xmalloc_unknown_size(0);
730 3 : ldv_6_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
731 : /* LDV {"action": "DEFAULT_ALLOC_7", "type": "CONDITION_END"} */
732 :
733 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
734 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
735 :
736 : /* Jump to a subprocess 'call' initial state */
737 1 : goto ldv_call_6;
738 : /* End of the process */
739 : return;
740 1 :
741 : /* Sbprocess call */
742 : ldv_call_6:
743 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
744 :
745 2 : switch (ldv_undef_int()) {
746 3 : case 1: {
747 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback unlink from inode_operations."} */
748 : /* LDV {"type": "CALLBACK", "call": "((& configfs_unlink))(ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr);", "comment": "callback"} */
749 2 : ldv_random_containerless_scenario_callback_6_21(ldv_6_callback_unlink, ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr);
750 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
751 :
752 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
753 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
754 :
755 : /* Jump to a subprocess 'call' initial state */
756 1 : goto ldv_call_6;
757 1 : break;
758 : }
759 3 : case 2: {
760 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
761 3 : ldv_6_ldv_param_18_2_default = ldv_xmalloc_unknown_size(0);
762 : /* LDV {"action": "PRE_CALL_18", "type": "CONDITION_END"} */
763 :
764 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback symlink from inode_operations."} */
765 : /* LDV {"type": "CALLBACK", "call": "((& configfs_symlink))(ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_18_2_default);", "comment": "callback"} */
766 2 : ldv_random_containerless_scenario_callback_6_18(ldv_6_callback_symlink, ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_18_2_default);
767 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
768 :
769 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
770 2 : ldv_free(ldv_6_ldv_param_18_2_default);
771 : /* LDV {"action": "POST_CALL_18", "type": "CONDITION_END"} */
772 :
773 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
774 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
775 :
776 : /* Jump to a subprocess 'call' initial state */
777 1 : goto ldv_call_6;
778 : /* Jump to a subprocess 'call' initial state */
779 : goto ldv_call_6;
780 1 : break;
781 : }
782 3 : case 3: {
783 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback setattr from inode_operations."} */
784 : /* LDV {"type": "CALLBACK", "call": "((& configfs_setattr))(ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_iattr_ptr);", "comment": "callback"} */
785 2 : ldv_random_containerless_scenario_callback_6_17(ldv_6_callback_setattr, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_iattr_ptr);
786 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
787 :
788 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
789 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
790 :
791 : /* Jump to a subprocess 'call' initial state */
792 1 : goto ldv_call_6;
793 : /* Jump to a subprocess 'call' initial state */
794 : goto ldv_call_6;
795 : /* Jump to a subprocess 'call' initial state */
796 : goto ldv_call_6;
797 1 : break;
798 : }
799 3 : case 4: {
800 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback rmdir from inode_operations."} */
801 : /* LDV {"type": "CALLBACK", "call": "((& configfs_rmdir))(ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr);", "comment": "callback"} */
802 2 : ldv_random_containerless_scenario_callback_6_16(ldv_6_callback_rmdir, ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr);
803 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
804 :
805 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
806 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
807 :
808 : /* Jump to a subprocess 'call' initial state */
809 1 : goto ldv_call_6;
810 : /* Jump to a subprocess 'call' initial state */
811 : goto ldv_call_6;
812 : /* Jump to a subprocess 'call' initial state */
813 : goto ldv_call_6;
814 : /* Jump to a subprocess 'call' initial state */
815 : goto ldv_call_6;
816 1 : break;
817 : }
818 3 : case 5: {
819 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
820 3 : ldv_6_ldv_param_13_1_default = ldv_xmalloc_unknown_size(0);
821 : /* LDV {"action": "PRE_CALL_13", "type": "CONDITION_END"} */
822 :
823 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback readlink from inode_operations."} */
824 : /* LDV {"type": "CALLBACK", "call": "((& generic_readlink))(ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_13_1_default, ldv_6_ldv_param_13_2_default);", "comment": "callback"} */
825 2 : ldv_random_containerless_scenario_callback_6_13(ldv_6_callback_readlink, ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_13_1_default, ldv_6_ldv_param_13_2_default);
826 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
827 :
828 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
829 2 : ldv_free(ldv_6_ldv_param_13_1_default);
830 : /* LDV {"action": "POST_CALL_13", "type": "CONDITION_END"} */
831 :
832 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
833 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
834 :
835 : /* Jump to a subprocess 'call' initial state */
836 1 : goto ldv_call_6;
837 : /* Jump to a subprocess 'call' initial state */
838 : goto ldv_call_6;
839 : /* Jump to a subprocess 'call' initial state */
840 : goto ldv_call_6;
841 : /* Jump to a subprocess 'call' initial state */
842 : goto ldv_call_6;
843 : /* Jump to a subprocess 'call' initial state */
844 : goto ldv_call_6;
845 1 : break;
846 : }
847 3 : case 6: {
848 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback put_link from inode_operations."} */
849 : /* LDV {"type": "CALLBACK", "call": "((& configfs_put_link))(ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr, ldv_6_container_struct_iattr_ptr);", "comment": "callback"} */
850 2 : ldv_random_containerless_scenario_callback_6_12(ldv_6_callback_put_link, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr, ldv_6_container_struct_iattr_ptr);
851 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
852 :
853 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
854 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
855 :
856 : /* Jump to a subprocess 'call' initial state */
857 1 : goto ldv_call_6;
858 : /* Jump to a subprocess 'call' initial state */
859 : goto ldv_call_6;
860 : /* Jump to a subprocess 'call' initial state */
861 : goto ldv_call_6;
862 : /* Jump to a subprocess 'call' initial state */
863 : goto ldv_call_6;
864 : /* Jump to a subprocess 'call' initial state */
865 : goto ldv_call_6;
866 : /* Jump to a subprocess 'call' initial state */
867 : goto ldv_call_6;
868 1 : break;
869 : }
870 3 : case 7: {
871 : /* LDV {"action": "PRE_CALL_9", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
872 : /* LDV {"action": "PRE_CALL_9", "type": "CONDITION_END"} */
873 :
874 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback mkdir from inode_operations."} */
875 : /* LDV {"type": "CALLBACK", "call": "((& configfs_mkdir))(ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_9_2_default);", "comment": "callback"} */
876 2 : ldv_random_containerless_scenario_callback_6_9(ldv_6_callback_mkdir, ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_ldv_param_9_2_default);
877 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
878 :
879 : /* LDV {"action": "POST_CALL_9", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
880 : /* LDV {"action": "POST_CALL_9", "type": "CONDITION_END"} */
881 :
882 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
883 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
884 :
885 : /* Jump to a subprocess 'call' initial state */
886 1 : goto ldv_call_6;
887 : /* Jump to a subprocess 'call' initial state */
888 : goto ldv_call_6;
889 : /* Jump to a subprocess 'call' initial state */
890 : goto ldv_call_6;
891 : /* Jump to a subprocess 'call' initial state */
892 : goto ldv_call_6;
893 : /* Jump to a subprocess 'call' initial state */
894 : goto ldv_call_6;
895 : /* Jump to a subprocess 'call' initial state */
896 : goto ldv_call_6;
897 : /* Jump to a subprocess 'call' initial state */
898 : goto ldv_call_6;
899 1 : break;
900 : }
901 3 : case 8: {
902 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback lookup from inode_operations."} */
903 : /* LDV {"type": "CALLBACK", "call": "((& configfs_lookup))(ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr);", "comment": "callback"} */
904 2 : ldv_random_containerless_scenario_callback_6_8(ldv_6_callback_lookup, ldv_6_container_struct_inode_ptr, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr);
905 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
906 :
907 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
908 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
909 :
910 : /* Jump to a subprocess 'call' initial state */
911 1 : goto ldv_call_6;
912 : /* Jump to a subprocess 'call' initial state */
913 : goto ldv_call_6;
914 : /* Jump to a subprocess 'call' initial state */
915 : goto ldv_call_6;
916 : /* Jump to a subprocess 'call' initial state */
917 : goto ldv_call_6;
918 : /* Jump to a subprocess 'call' initial state */
919 : goto ldv_call_6;
920 : /* Jump to a subprocess 'call' initial state */
921 : goto ldv_call_6;
922 : /* Jump to a subprocess 'call' initial state */
923 : goto ldv_call_6;
924 : /* Jump to a subprocess 'call' initial state */
925 : goto ldv_call_6;
926 1 : break;
927 : }
928 3 : case 9: {
929 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback follow_link from inode_operations."} */
930 : /* LDV {"type": "CALLBACK", "call": "((& configfs_follow_link))(ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr);", "comment": "callback"} */
931 2 : ldv_random_containerless_scenario_callback_6_4(ldv_6_callback_follow_link, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_nameidata_ptr);
932 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
933 :
934 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
935 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
936 :
937 : /* Jump to a subprocess 'call' initial state */
938 1 : goto ldv_call_6;
939 : /* Jump to a subprocess 'call' initial state */
940 : goto ldv_call_6;
941 : /* Jump to a subprocess 'call' initial state */
942 : goto ldv_call_6;
943 : /* Jump to a subprocess 'call' initial state */
944 : goto ldv_call_6;
945 : /* Jump to a subprocess 'call' initial state */
946 : goto ldv_call_6;
947 : /* Jump to a subprocess 'call' initial state */
948 : goto ldv_call_6;
949 : /* Jump to a subprocess 'call' initial state */
950 : goto ldv_call_6;
951 : /* Jump to a subprocess 'call' initial state */
952 : goto ldv_call_6;
953 : /* Jump to a subprocess 'call' initial state */
954 : goto ldv_call_6;
955 1 : break;
956 : }
957 3 : case 10: {
958 : /* LDV {"action": "DEFAULT_FREE_7", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
959 2 : ldv_free(ldv_6_container_struct_dentry_ptr);
960 2 : ldv_free(ldv_6_container_struct_iattr_ptr);
961 2 : ldv_free(ldv_6_container_struct_inode_ptr);
962 2 : ldv_free(ldv_6_container_struct_nameidata_ptr);
963 : /* LDV {"action": "DEFAULT_FREE_7", "type": "CONDITION_END"} */
964 :
965 : /* LDV {"action": "DEFAULT_DEREGISTER_7", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
966 : /* Skip a non-replicative signal receiving */
967 : /* LDV {"action": "DEFAULT_DEREGISTER_7", "type": "RECEIVE_END"} */
968 :
969 : /* Exit function at a terminal state */
970 1 : return;
971 1 : break;
972 : }
973 2 : default: ldv_stop();
974 1 : }
975 0 : /* End of the subprocess 'call' */
976 0 : return;
977 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_inode_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_6"} */
978 : }
979 :
980 : /* AUX_FUNC ldv_random_containerless_scenario_7 */
981 : void ldv_random_containerless_scenario_7(void *arg0) {
982 : /* LDV {"thread": 7, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_super_operations)'", "function": "ldv_random_containerless_scenario_7"} */
983 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
984 1 : void (*ldv_7_callback_drop_inode)(struct inode *);
985 1 : int (*ldv_7_callback_statfs)(struct dentry *, struct kstatfs *);
986 1 : struct dentry *ldv_7_container_struct_dentry_ptr;
987 1 : struct inode *ldv_7_container_struct_inode_ptr;
988 1 : struct kstatfs *ldv_7_container_struct_kstatfs_ptr;
989 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
990 1 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_SUPER_OPERATIONS callbacks invocations scenario."} */
991 3 : ldv_free(arg0);
992 : /* LDV {"action": "DEFAULT_REGISTER_8", "type": "RECEIVE_END"} */
993 :
994 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
995 3 : ldv_7_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
996 3 : ldv_7_container_struct_inode_ptr = ldv_xmalloc_unknown_size(0);
997 3 : ldv_7_container_struct_kstatfs_ptr = ldv_xmalloc_unknown_size(0);
998 : /* LDV {"action": "DEFAULT_ALLOC_8", "type": "CONDITION_END"} */
999 :
1000 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1001 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1002 :
1003 : /* Jump to a subprocess 'call' initial state */
1004 1 : goto ldv_call_7;
1005 : /* End of the process */
1006 : return;
1007 1 :
1008 : /* Sbprocess call */
1009 : ldv_call_7:
1010 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1011 :
1012 2 : switch (ldv_undef_int()) {
1013 3 : case 1: {
1014 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback statfs from super_operations."} */
1015 : /* LDV {"type": "CALLBACK", "call": "((& simple_statfs))(ldv_7_container_struct_dentry_ptr, ldv_7_container_struct_kstatfs_ptr);", "comment": "callback"} */
1016 2 : ldv_random_containerless_scenario_callback_7_8(ldv_7_callback_statfs, ldv_7_container_struct_dentry_ptr, ldv_7_container_struct_kstatfs_ptr);
1017 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1018 :
1019 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1020 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1021 :
1022 : /* Jump to a subprocess 'call' initial state */
1023 1 : goto ldv_call_7;
1024 1 : break;
1025 : }
1026 3 : case 2: {
1027 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback drop_inode from super_operations."} */
1028 : /* LDV {"type": "CALLBACK", "call": "((& generic_delete_inode))(ldv_7_container_struct_inode_ptr);", "comment": "callback"} */
1029 2 : ldv_random_containerless_scenario_callback_7_4(ldv_7_callback_drop_inode, ldv_7_container_struct_inode_ptr);
1030 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1031 :
1032 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1033 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1034 :
1035 : /* Jump to a subprocess 'call' initial state */
1036 1 : goto ldv_call_7;
1037 : /* Jump to a subprocess 'call' initial state */
1038 : goto ldv_call_7;
1039 1 : break;
1040 : }
1041 3 : case 3: {
1042 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1043 2 : ldv_free(ldv_7_container_struct_dentry_ptr);
1044 2 : ldv_free(ldv_7_container_struct_inode_ptr);
1045 2 : ldv_free(ldv_7_container_struct_kstatfs_ptr);
1046 : /* LDV {"action": "DEFAULT_FREE_8", "type": "CONDITION_END"} */
1047 :
1048 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_SUPER_OPERATIONS callbacks invocations scenario."} */
1049 : /* Skip a non-replicative signal receiving */
1050 : /* LDV {"action": "DEFAULT_DEREGISTER_8", "type": "RECEIVE_END"} */
1051 :
1052 : /* Exit function at a terminal state */
1053 1 : return;
1054 1 : break;
1055 : }
1056 2 : default: ldv_stop();
1057 1 : }
1058 0 : /* End of the subprocess 'call' */
1059 0 : return;
1060 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_super_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_7"} */
1061 : }
1062 :
1063 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_5_3 */
1064 : void ldv_random_containerless_scenario_callback_5_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) {
1065 2 : ((& configfs_get_sb))(arg1, arg2, arg3, arg4, arg5);
1066 1 : }
1067 :
1068 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_5_8 */
1069 : void ldv_random_containerless_scenario_callback_5_8(void (*arg0)(struct super_block *), struct super_block *arg1) {
1070 1 : ((& kill_litter_super))(arg1);
1071 1 : }
1072 :
1073 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_7_4 */
1074 : void ldv_random_containerless_scenario_callback_7_4(void (*arg0)(struct inode *), struct inode *arg1) {
1075 1 : ((& generic_delete_inode))(arg1);
1076 1 : }
1077 :
1078 : /* AUX_FUNC_CALLBACK ldv_random_containerless_scenario_callback_7_8 */
1079 : void ldv_random_containerless_scenario_callback_7_8(int (*arg0)(struct dentry *, struct kstatfs *), struct dentry *arg1, struct kstatfs *arg2) {
1080 1 : ((& simple_statfs))(arg1, arg2);
1081 1 : }
1082 :
1083 : /* AUX_FUNC main */
1084 : int main() {
1085 1 : ldv_main_11(0);
1086 0 : return 0;
1087 : }
1088 :
1089 :
1090 : /* AUX_FUNC ERR_PTR */
1091 : static inline void *ERR_PTR (long int error)
1092 : {
1093 :
1094 : return ldv_err_ptr(error);
1095 : }
1096 :
1097 : /* AUX_FUNC PTR_ERR */
1098 : static inline long int PTR_ERR (void const *ptr)
1099 : {
1100 :
1101 : return ldv_ptr_err(ptr);
1102 : }
1103 :
1104 : /* AUX_FUNC IS_ERR */
1105 : static inline long int IS_ERR (void const *ptr)
1106 : {
1107 :
1108 : return ldv_is_err(ptr);
1109 : }
1110 :
1111 : /* AUX_FUNC IS_ERR_OR_NULL */
1112 : static inline long int IS_ERR_OR_NULL (void const *ptr)
1113 : {
1114 :
1115 : return ldv_is_err_or_null(ptr);
1116 : }
1117 :
1118 : /* AUX_FUNC kzalloc */
1119 : static inline void *kzalloc (size_t size, gfp_t flags)
1120 : {
1121 :
1122 : return ldv_kzalloc(size, flags);
1123 : }
1124 :
1125 : /* AUX_FUNC ldv_register_filesystem_6 */
1126 : int ldv_register_filesystem_6 (struct file_system_type *ldv_func_arg1)
1127 : {
1128 1 :
1129 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'register_filesystem'"} */
1130 4 : return ldv_emg_register_filesystem(ldv_func_arg1);
1131 : }
1132 :
1133 : /* AUX_FUNC ldv_unregister_filesystem_7 */
1134 : int ldv_unregister_filesystem_7 (struct file_system_type *ldv_func_arg1)
1135 : {
1136 1 :
1137 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_filesystem'"} */
1138 3 : return ldv_emg_unregister_filesystem(ldv_func_arg1);
1139 : }
1140 :
1141 : /* AUX_FUNC ldv_unregister_filesystem_8 */
1142 : int ldv_unregister_filesystem_8 (struct file_system_type *ldv_func_arg1)
1143 : {
1144 2 :
1145 : /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'unregister_filesystem'"} */
1146 6 : return ldv_emg_unregister_filesystem(ldv_func_arg1);
1147 : }
|