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/fs.h>
30 : #include <linux/pagemap.h>
31 :
32 :
33 : struct ldv_struct_character_driver_scenario_1 {
34 : struct file_operations *arg0;
35 : int signal_pending;
36 : };
37 1 :
38 : struct ldv_struct_insmod_7 {
39 : int signal_pending;
40 : };
41 :
42 : /* EMG Function declarations */
43 : extern void ldv_character_driver_scenario_1(void *);
44 : void ldv_character_driver_scenario_2(void *);
45 : void ldv_character_driver_scenario_3(void *);
46 : void ldv_character_driver_scenario_callback_1_20(int (*)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *, int, char *, void *, struct vfsmount *);
47 : void ldv_character_driver_scenario_callback_1_23(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
48 : void ldv_character_driver_scenario_callback_1_26(void (*)(struct super_block *), struct super_block *);
49 : void ldv_character_driver_scenario_callback_1_29(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
50 : void ldv_character_driver_scenario_callback_1_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
51 : void ldv_character_driver_scenario_callback_1_35(int (*)(struct file *, void *, filldir_t ), struct file *, void *, int (*)(void *, char *, int, loff_t , u64 , unsigned int));
52 : void ldv_character_driver_scenario_callback_2_20(int (*)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *, int, char *, void *, struct vfsmount *);
53 : void ldv_character_driver_scenario_callback_2_23(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
54 : void ldv_character_driver_scenario_callback_2_26(void (*)(struct super_block *), struct super_block *);
55 : extern void ldv_character_driver_scenario_callback_2_29(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
56 : extern void ldv_character_driver_scenario_callback_2_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
57 : extern void ldv_character_driver_scenario_callback_2_35(int (*)(struct file *, void *, filldir_t ), struct file *, void *, int (*)(void *, char *, int, loff_t , u64 , unsigned int));
58 : void ldv_character_driver_scenario_callback_2_36(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
59 : void ldv_character_driver_scenario_callback_2_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
60 : void ldv_character_driver_scenario_callback_3_20(int (*)(struct file_system_type *, int, char *, void *, struct vfsmount *), struct file_system_type *, int, char *, void *, struct vfsmount *);
61 : extern void ldv_character_driver_scenario_callback_3_23(int (*)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *, struct file *, unsigned int, long unsigned int);
62 : void ldv_character_driver_scenario_callback_3_26(void (*)(struct super_block *), struct super_block *);
63 : extern void ldv_character_driver_scenario_callback_3_29(loff_t (*)(struct file *, loff_t , int), struct file *, long long int, int);
64 : extern void ldv_character_driver_scenario_callback_3_32(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
65 : extern void ldv_character_driver_scenario_callback_3_35(int (*)(struct file *, void *, filldir_t ), struct file *, void *, int (*)(void *, char *, int, loff_t , u64 , unsigned int));
66 : void ldv_character_driver_scenario_callback_3_36(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
67 : void ldv_character_driver_scenario_callback_3_5(long int (*)(struct file *, unsigned int, long unsigned int), struct file *, unsigned int, long unsigned int);
68 : int ldv_character_driver_scenario_probe_1_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
69 : extern int ldv_character_driver_scenario_probe_2_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
70 : extern int ldv_character_driver_scenario_probe_3_12(int (*)(struct inode *, struct file *), struct inode *, struct file *);
71 : void ldv_character_driver_scenario_release_1_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
72 : extern void ldv_character_driver_scenario_release_2_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
73 : extern void ldv_character_driver_scenario_release_3_2(int (*)(struct inode *, struct file *), struct inode *, struct file *);
74 : 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 *);
75 : void ldv_character_driver_scenario_write_2_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
76 : void ldv_character_driver_scenario_write_3_4(ssize_t (*)(struct file *, char *, size_t , loff_t *), struct file *, char *, long unsigned int, loff_t *);
77 : void ldv_dispatch_default_deregister_4_7_4(void);
78 : void ldv_dispatch_default_deregister_5_7_5(void);
79 : void ldv_dispatch_default_deregister_6_7_6(void);
80 : void ldv_dispatch_default_register_4_7_9(void);
81 : void ldv_dispatch_default_register_5_7_8(void);
82 : void ldv_dispatch_default_register_6_7_7(void);
83 : void ldv_dispatch_insmod_deregister_10_2(void);
84 : void ldv_dispatch_insmod_register_10_3(void);
85 : extern void ldv_emg_misc_deregister(struct miscdevice *);
86 : extern int ldv_emg_misc_register(struct miscdevice *);
87 : void ldv_insmod_7(void *);
88 : void ldv_insmod_exit_autofs4_fs_7_2(void (*)(void));
89 : int ldv_insmod_init_autofs4_fs_7_13(int (*)(void));
90 : void ldv_main_10(void *);
91 : void ldv_random_containerless_scenario_4(void *);
92 : void ldv_random_containerless_scenario_5(void *);
93 : void ldv_random_containerless_scenario_6(void *);
94 : extern void ldv_random_containerless_scenario_callback_4_4(void (*)(struct dentry *), struct dentry *);
95 : extern void ldv_random_containerless_scenario_callback_4_8(int (*)(struct dentry *, struct nameidata *), struct dentry *, struct nameidata *);
96 : extern void ldv_random_containerless_scenario_callback_5_12(int (*)(struct dentry *, char *, int), struct dentry *, char *, int);
97 : extern void ldv_random_containerless_scenario_callback_5_15(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
98 : extern void ldv_random_containerless_scenario_callback_5_16(int (*)(struct inode *, struct dentry *, char *), struct inode *, struct dentry *, char *);
99 : extern void ldv_random_containerless_scenario_callback_5_19(int (*)(struct inode *, struct dentry *), struct inode *, struct dentry *);
100 : extern void ldv_random_containerless_scenario_callback_5_4(void *(*)(struct dentry *, struct nameidata *), struct dentry *, struct nameidata *);
101 : extern void ldv_random_containerless_scenario_callback_5_8(struct dentry *(*)(struct inode *, struct dentry *, struct nameidata *), struct inode *, struct dentry *, struct nameidata *);
102 : extern void ldv_random_containerless_scenario_callback_5_9(int (*)(struct inode *, struct dentry *, int), struct inode *, struct dentry *, int);
103 : extern void ldv_random_containerless_scenario_callback_6_4(int (*)(struct seq_file *, struct vfsmount *), struct seq_file *, struct vfsmount *);
104 : extern void ldv_random_containerless_scenario_callback_6_8(int (*)(struct dentry *, struct kstatfs *), struct dentry *, struct kstatfs *);
105 : int main(void);
106 :
107 : /* EMG variable declarations */
108 1 : struct ldv_thread ldv_thread_10;
109 1 : struct ldv_thread ldv_thread_2;
110 1 : struct ldv_thread ldv_thread_3;
111 1 : struct ldv_thread ldv_thread_4;
112 1 : struct ldv_thread ldv_thread_5;
113 1 : struct ldv_thread ldv_thread_6;
114 1 : struct ldv_thread ldv_thread_7;
115 :
116 : /* EMG variable initialization */
117 :
118 : /* EMG function definitions */
119 : /* AUX_FUNC ldv_character_driver_scenario_2 */
120 : void ldv_character_driver_scenario_2(void *arg0) {
121 : /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_2"} */
122 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
123 1 : long int (*ldv_2_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
124 : int (*ldv_2_callback_get_sb)(struct file_system_type *, int, char *, void *, struct vfsmount *);
125 1 : int (*ldv_2_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
126 1 : void (*ldv_2_callback_kill_sb)(struct super_block *);
127 1 : loff_t (*ldv_2_callback_llseek)(struct file *, loff_t , int);
128 1 : ssize_t (*ldv_2_callback_read)(struct file *, char *, size_t , loff_t *);
129 1 : int (*ldv_2_callback_readdir)(struct file *, void *, filldir_t );
130 : long int (*ldv_2_callback_unlocked_ioctl)(struct file *, unsigned int, long unsigned int);
131 : struct file_operations *ldv_2_container_file_operations;
132 1 : int ldv_2_ldv_param_20_1_default;
133 1 : char *ldv_2_ldv_param_20_2_default;
134 1 : unsigned int ldv_2_ldv_param_23_2_default;
135 1 : struct super_block *ldv_2_ldv_param_26_0_default;
136 1 : long long int ldv_2_ldv_param_29_1_default;
137 1 : int ldv_2_ldv_param_29_2_default;
138 1 : char *ldv_2_ldv_param_32_1_default;
139 1 : long long int *ldv_2_ldv_param_32_3_default;
140 1 : unsigned int ldv_2_ldv_param_36_1_default;
141 1 : char *ldv_2_ldv_param_4_1_default;
142 1 : long long int *ldv_2_ldv_param_4_3_default;
143 1 : unsigned int ldv_2_ldv_param_5_1_default;
144 1 : struct file *ldv_2_resource_file;
145 1 : struct inode *ldv_2_resource_inode;
146 1 : struct file_system_type *ldv_2_resource_struct_file_system_type;
147 1 : int ldv_2_ret_default;
148 1 : int (*ldv_2_size_cnt_func_1_ptr)(void *, char *, int, loff_t , u64 , unsigned int);
149 1 : struct super_block *ldv_2_size_cnt_struct_super_block_ptr;
150 1 : struct vfsmount *ldv_2_size_cnt_struct_vfsmount_ptr;
151 1 : long unsigned int ldv_2_size_cnt_write_size;
152 1 : /* Received labels */
153 2 : struct ldv_struct_character_driver_scenario_1 *data = (struct ldv_struct_character_driver_scenario_1*) arg0;
154 1 :
155 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
156 1 : /* Initialize automaton variables */
157 2 : ldv_2_ret_default = 1;
158 1 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
159 1 : /* Assign recieved labels */
160 3 : if (data) {
161 2 : ldv_2_container_file_operations = data->arg0;
162 3 : ldv_free(data);
163 1 : }
164 1 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
165 1 :
166 1 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
167 6 : ldv_2_resource_file = ldv_xmalloc(sizeof(struct file));
168 3 : ldv_2_resource_inode = ldv_xmalloc(sizeof(struct inode));
169 3 : ldv_2_resource_struct_file_system_type = ldv_xmalloc_unknown_size(0);
170 3 : ldv_2_size_cnt_func_1_ptr = ldv_undef_int();
171 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
172 :
173 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
174 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
175 :
176 : /* Jump to a subprocess 'main' initial state */
177 1 : goto ldv_main_2;
178 : /* End of the process */
179 : return;
180 1 :
181 : /* Sbprocess main */
182 : ldv_main_2:
183 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
184 :
185 4 : if (ldv_undef_int()) {
186 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
187 : /* LDV {"type": "CALLBACK", "call": "ldv_2_ret_default = ((& autofs4_dir_open))(ldv_2_resource_inode, ldv_2_resource_file);", "comment": "probe"} */
188 2 : ldv_2_ret_default = ldv_character_driver_scenario_probe_2_12(ldv_2_container_file_operations->open, ldv_2_resource_inode, ldv_2_resource_file);
189 : /* Callback post-call */
190 2 : ldv_2_ret_default = ldv_filter_err_code(ldv_2_ret_default);
191 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
192 :
193 4 : if (ldv_undef_int()) {
194 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
195 2 : ldv_assume(ldv_2_ret_default == 0);
196 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
197 :
198 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
199 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
200 :
201 : /* Jump to a subprocess 'call' initial state */
202 1 : goto ldv_call_2;
203 : }
204 : else {
205 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
206 2 : ldv_assume(ldv_2_ret_default != 0);
207 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
208 :
209 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
210 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
211 :
212 : /* Jump to a subprocess 'main' initial state */
213 1 : goto ldv_main_2;
214 : }
215 : }
216 : else {
217 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
218 2 : ldv_free(ldv_2_resource_file);
219 2 : ldv_free(ldv_2_resource_inode);
220 2 : ldv_free(ldv_2_resource_struct_file_system_type);
221 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
222 :
223 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
224 : /* Skip a non-replicative signal receiving */
225 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
226 :
227 : /* Exit function at a terminal state */
228 1 : return;
229 : }
230 : /* End of the subprocess 'main' */
231 : return;
232 1 :
233 : /* Sbprocess call */
234 : ldv_call_2:
235 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
236 :
237 2 : switch (ldv_undef_int()) {
238 3 : case 1: {
239 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
240 3 : ldv_2_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
241 3 : ldv_2_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
242 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
243 :
244 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
245 : /* Callback pre-call */
246 2 : ldv_assume(ldv_2_size_cnt_func_1_ptr <= (INT_MAX & PAGE_CACHE_MASK));
247 3 : if (ldv_2_container_file_operations->write) {
248 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_container_file_operations->write)(ldv_2_resource_file, ldv_2_ldv_param_4_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_4_3_default);", "comment": "write"} */
249 3 : ldv_character_driver_scenario_write_2_4(ldv_2_container_file_operations->write, ldv_2_resource_file, ldv_2_ldv_param_4_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_4_3_default);
250 : }
251 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
252 :
253 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
254 4 : ldv_free(ldv_2_ldv_param_4_1_default);
255 2 : ldv_free(ldv_2_ldv_param_4_3_default);
256 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
257 :
258 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
259 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
260 :
261 : /* Jump to a subprocess 'call' initial state */
262 1 : goto ldv_call_2;
263 1 : break;
264 : }
265 3 : case 2: {
266 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
267 : /* LDV {"type": "CALLBACK", "call": "((& dcache_dir_close))(ldv_2_resource_inode, ldv_2_resource_file);", "comment": "release"} */
268 2 : ldv_character_driver_scenario_release_2_2(ldv_2_container_file_operations->release, ldv_2_resource_inode, ldv_2_resource_file);
269 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
270 :
271 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
272 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
273 :
274 : /* Jump to a subprocess 'main' initial state */
275 1 : goto ldv_main_2;
276 1 : break;
277 : }
278 3 : case 3: {
279 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
280 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
281 :
282 2 : switch (ldv_undef_int()) {
283 3 : case 1: {
284 : /* LDV {"action": "PRE_CALL_36", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
285 : /* LDV {"action": "PRE_CALL_36", "type": "CONDITION_END"} */
286 :
287 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
288 2 : if (ldv_2_callback_unlocked_ioctl) {
289 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_unlocked_ioctl)(ldv_2_resource_file, ldv_2_ldv_param_36_1_default, ldv_2_size_cnt_write_size);", "comment": "callback"} */
290 2 : ldv_character_driver_scenario_callback_2_36(ldv_2_callback_unlocked_ioctl, ldv_2_resource_file, ldv_2_ldv_param_36_1_default, ldv_2_size_cnt_write_size);
291 : }
292 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
293 :
294 : /* LDV {"action": "POST_CALL_36", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
295 : /* LDV {"action": "POST_CALL_36", "type": "CONDITION_END"} */
296 :
297 2 : break;
298 1 : }
299 3 : case 2: {
300 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback readdir from file_operations."} */
301 : /* LDV {"type": "CALLBACK", "call": "((& dcache_readdir))(ldv_2_resource_file, ldv_2_resource_inode, ldv_2_size_cnt_func_1_ptr);", "comment": "callback"} */
302 2 : ldv_character_driver_scenario_callback_2_35(ldv_2_callback_readdir, ldv_2_resource_file, ldv_2_resource_inode, ldv_2_size_cnt_func_1_ptr);
303 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
304 :
305 1 : break;
306 1 : }
307 3 : case 3: {
308 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
309 3 : ldv_2_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
310 3 : ldv_2_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
311 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
312 :
313 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
314 : /* LDV {"type": "CALLBACK", "call": "((& generic_read_dir))(ldv_2_resource_file, ldv_2_ldv_param_32_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_32_3_default);", "comment": "callback"} */
315 2 : ldv_character_driver_scenario_callback_2_32(ldv_2_callback_read, ldv_2_resource_file, ldv_2_ldv_param_32_1_default, ldv_2_size_cnt_write_size, ldv_2_ldv_param_32_3_default);
316 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
317 :
318 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
319 2 : ldv_free(ldv_2_ldv_param_32_1_default);
320 2 : ldv_free(ldv_2_ldv_param_32_3_default);
321 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
322 :
323 1 : break;
324 1 : }
325 3 : case 4: {
326 : /* LDV {"action": "PRE_CALL_29", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
327 : /* LDV {"action": "PRE_CALL_29", "type": "CONDITION_END"} */
328 :
329 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
330 : /* LDV {"type": "CALLBACK", "call": "((& dcache_dir_lseek))(ldv_2_resource_file, ldv_2_ldv_param_29_1_default, ldv_2_ldv_param_29_2_default);", "comment": "callback"} */
331 2 : ldv_character_driver_scenario_callback_2_29(ldv_2_callback_llseek, ldv_2_resource_file, ldv_2_ldv_param_29_1_default, ldv_2_ldv_param_29_2_default);
332 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
333 :
334 : /* LDV {"action": "POST_CALL_29", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
335 : /* LDV {"action": "POST_CALL_29", "type": "CONDITION_END"} */
336 :
337 1 : break;
338 1 : }
339 3 : case 5: {
340 : /* LDV {"action": "PRE_CALL_26", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
341 3 : ldv_2_ldv_param_26_0_default = ldv_xmalloc_unknown_size(0);
342 : /* LDV {"action": "PRE_CALL_26", "type": "CONDITION_END"} */
343 :
344 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback kill_sb from file_system_type."} */
345 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_kill_sb))(ldv_2_ldv_param_26_0_default);", "comment": "callback"} */
346 2 : ldv_character_driver_scenario_callback_2_26(ldv_2_callback_kill_sb, ldv_2_ldv_param_26_0_default);
347 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
348 :
349 : /* LDV {"action": "POST_CALL_26", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
350 2 : ldv_free(ldv_2_ldv_param_26_0_default);
351 : /* LDV {"action": "POST_CALL_26", "type": "CONDITION_END"} */
352 :
353 1 : break;
354 1 : }
355 3 : case 6: {
356 : /* LDV {"action": "PRE_CALL_23", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
357 : /* LDV {"action": "PRE_CALL_23", "type": "CONDITION_END"} */
358 :
359 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
360 2 : if (ldv_2_callback_ioctl) {
361 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_ioctl)(ldv_2_resource_inode, ldv_2_resource_file, ldv_2_ldv_param_23_2_default, ldv_2_size_cnt_write_size);", "comment": "callback"} */
362 2 : ldv_character_driver_scenario_callback_2_23(ldv_2_callback_ioctl, ldv_2_resource_inode, ldv_2_resource_file, ldv_2_ldv_param_23_2_default, ldv_2_size_cnt_write_size);
363 : }
364 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
365 :
366 : /* LDV {"action": "POST_CALL_23", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
367 : /* LDV {"action": "POST_CALL_23", "type": "CONDITION_END"} */
368 :
369 2 : break;
370 1 : }
371 3 : case 7: {
372 : /* LDV {"action": "PRE_CALL_20", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
373 3 : ldv_2_ldv_param_20_2_default = ldv_xmalloc_unknown_size(0);
374 : /* LDV {"action": "PRE_CALL_20", "type": "CONDITION_END"} */
375 :
376 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback get_sb from file_system_type."} */
377 : /* LDV {"type": "CALLBACK", "call": "((& autofs_get_sb))(ldv_2_resource_struct_file_system_type, ldv_2_ldv_param_20_1_default, ldv_2_ldv_param_20_2_default, ldv_2_resource_file, ldv_2_size_cnt_struct_vfsmount_ptr);", "comment": "callback"} */
378 2 : ldv_character_driver_scenario_callback_2_20(ldv_2_callback_get_sb, ldv_2_resource_struct_file_system_type, ldv_2_ldv_param_20_1_default, ldv_2_ldv_param_20_2_default, ldv_2_resource_file, ldv_2_size_cnt_struct_vfsmount_ptr);
379 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
380 :
381 : /* LDV {"action": "POST_CALL_20", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
382 2 : ldv_free(ldv_2_ldv_param_20_2_default);
383 : /* LDV {"action": "POST_CALL_20", "type": "CONDITION_END"} */
384 :
385 1 : break;
386 1 : }
387 3 : case 8: {
388 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
389 2 : if (ldv_2_callback_compat_ioctl) {
390 : /* LDV {"type": "CALLBACK", "call": "(ldv_2_callback_compat_ioctl)(ldv_2_resource_file, ldv_2_ldv_param_5_1_default, ldv_2_size_cnt_write_size);", "comment": "callback"} */
391 2 : ldv_character_driver_scenario_callback_2_5(ldv_2_callback_compat_ioctl, ldv_2_resource_file, ldv_2_ldv_param_5_1_default, ldv_2_size_cnt_write_size);
392 : }
393 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
394 :
395 2 : break;
396 1 : }
397 2 : default: ldv_stop();
398 1 : }
399 9 : break;
400 1 : }
401 2 : default: ldv_stop();
402 1 : }
403 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
404 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
405 0 :
406 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
407 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
408 :
409 : /* Jump to a subprocess 'call' initial state */
410 9 : goto ldv_call_2;
411 : /* Jump to a subprocess 'call' initial state */
412 : goto ldv_call_2;
413 : /* End of the subprocess 'call' */
414 : return;
415 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_2"} */
416 : }
417 :
418 : /* AUX_FUNC ldv_character_driver_scenario_3 */
419 : void ldv_character_driver_scenario_3(void *arg0) {
420 : /* LDV {"thread": 3, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'character_driver_scenario(file_operations)'", "function": "ldv_character_driver_scenario_3"} */
421 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
422 1 : long int (*ldv_3_callback_compat_ioctl)(struct file *, unsigned int, long unsigned int);
423 : int (*ldv_3_callback_get_sb)(struct file_system_type *, int, char *, void *, struct vfsmount *);
424 1 : int (*ldv_3_callback_ioctl)(struct inode *, struct file *, unsigned int, long unsigned int);
425 1 : void (*ldv_3_callback_kill_sb)(struct super_block *);
426 1 : loff_t (*ldv_3_callback_llseek)(struct file *, loff_t , int);
427 1 : ssize_t (*ldv_3_callback_read)(struct file *, char *, size_t , loff_t *);
428 1 : int (*ldv_3_callback_readdir)(struct file *, void *, filldir_t );
429 : long int (*ldv_3_callback_unlocked_ioctl)(struct file *, unsigned int, long unsigned int);
430 : struct file_operations *ldv_3_container_file_operations;
431 1 : int ldv_3_ldv_param_20_1_default;
432 1 : char *ldv_3_ldv_param_20_2_default;
433 1 : unsigned int ldv_3_ldv_param_23_2_default;
434 1 : struct super_block *ldv_3_ldv_param_26_0_default;
435 1 : long long int ldv_3_ldv_param_29_1_default;
436 1 : int ldv_3_ldv_param_29_2_default;
437 1 : char *ldv_3_ldv_param_32_1_default;
438 1 : long long int *ldv_3_ldv_param_32_3_default;
439 1 : unsigned int ldv_3_ldv_param_36_1_default;
440 1 : char *ldv_3_ldv_param_4_1_default;
441 1 : long long int *ldv_3_ldv_param_4_3_default;
442 1 : unsigned int ldv_3_ldv_param_5_1_default;
443 1 : struct file *ldv_3_resource_file;
444 1 : struct inode *ldv_3_resource_inode;
445 1 : struct file_system_type *ldv_3_resource_struct_file_system_type;
446 1 : int ldv_3_ret_default;
447 1 : int (*ldv_3_size_cnt_func_1_ptr)(void *, char *, int, loff_t , u64 , unsigned int);
448 1 : struct super_block *ldv_3_size_cnt_struct_super_block_ptr;
449 1 : struct vfsmount *ldv_3_size_cnt_struct_vfsmount_ptr;
450 1 : long unsigned int ldv_3_size_cnt_write_size;
451 1 : /* Received labels */
452 2 : struct ldv_struct_character_driver_scenario_1 *data = (struct ldv_struct_character_driver_scenario_1*) arg0;
453 1 :
454 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
455 1 : /* Initialize automaton variables */
456 2 : ldv_3_ret_default = 1;
457 1 : /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin FILE_OPERATIONS callbacks invocations scenario."} */
458 1 : /* Assign recieved labels */
459 3 : if (data) {
460 2 : ldv_3_container_file_operations = data->arg0;
461 3 : ldv_free(data);
462 1 : }
463 1 : /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
464 1 :
465 1 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for file and inode structures."} */
466 6 : ldv_3_resource_file = ldv_xmalloc(sizeof(struct file));
467 3 : ldv_3_resource_inode = ldv_xmalloc(sizeof(struct inode));
468 3 : ldv_3_resource_struct_file_system_type = ldv_xmalloc_unknown_size(0);
469 3 : ldv_3_size_cnt_func_1_ptr = ldv_undef_int();
470 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
471 :
472 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
473 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
474 :
475 : /* Jump to a subprocess 'main' initial state */
476 1 : goto ldv_main_3;
477 : /* End of the process */
478 : return;
479 1 :
480 : /* Sbprocess main */
481 : ldv_main_3:
482 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
483 :
484 4 : if (ldv_undef_int()) {
485 : /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Open the device file. Invoke callback open from file_operations."} */
486 : /* LDV {"type": "CALLBACK", "call": "ldv_3_ret_default = ((& dcache_dir_open))(ldv_3_resource_inode, ldv_3_resource_file);", "comment": "probe"} */
487 2 : ldv_3_ret_default = ldv_character_driver_scenario_probe_3_12(ldv_3_container_file_operations->open, ldv_3_resource_inode, ldv_3_resource_file);
488 : /* Callback post-call */
489 2 : ldv_3_ret_default = ldv_filter_err_code(ldv_3_ret_default);
490 : /* LDV {"action": "PROBE", "type": "CALL_END"} */
491 :
492 4 : if (ldv_undef_int()) {
493 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Device file is opened successfully."} */
494 2 : ldv_assume(ldv_3_ret_default == 0);
495 : /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
496 :
497 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
498 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
499 :
500 : /* Jump to a subprocess 'call' initial state */
501 1 : goto ldv_call_3;
502 : }
503 : else {
504 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_BEGIN", "comment": "Failed to open devices file."} */
505 2 : ldv_assume(ldv_3_ret_default != 0);
506 : /* LDV {"action": "PROBE_FAIL", "type": "CONDITION_END"} */
507 :
508 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
509 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
510 :
511 : /* Jump to a subprocess 'main' initial state */
512 1 : goto ldv_main_3;
513 : }
514 : }
515 : else {
516 : /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of file and inode structures."} */
517 2 : ldv_free(ldv_3_resource_file);
518 2 : ldv_free(ldv_3_resource_inode);
519 2 : ldv_free(ldv_3_resource_struct_file_system_type);
520 : /* LDV {"action": "FREE", "type": "CONDITION_END"} */
521 :
522 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Finish FILE_OPERATIONS callbacks invocations scenario."} */
523 : /* Skip a non-replicative signal receiving */
524 : /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
525 :
526 : /* Exit function at a terminal state */
527 1 : return;
528 : }
529 : /* End of the subprocess 'main' */
530 : return;
531 1 :
532 : /* Sbprocess call */
533 : ldv_call_3:
534 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
535 :
536 2 : switch (ldv_undef_int()) {
537 3 : case 1: {
538 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
539 3 : ldv_3_ldv_param_4_1_default = ldv_xmalloc_unknown_size(0);
540 3 : ldv_3_ldv_param_4_3_default = ldv_xmalloc_unknown_size(0);
541 : /* LDV {"action": "PRE_CALL_4", "type": "CONDITION_END"} */
542 :
543 : /* LDV {"action": "WRITE", "type": "CALL_BEGIN", "callback": true, "comment": "Write data to the device. Invoke callback write from FILE_OPERATIONS."} */
544 : /* Callback pre-call */
545 2 : ldv_assume(ldv_3_size_cnt_func_1_ptr <= (INT_MAX & PAGE_CACHE_MASK));
546 3 : if (ldv_3_container_file_operations->write) {
547 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_container_file_operations->write)(ldv_3_resource_file, ldv_3_ldv_param_4_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_4_3_default);", "comment": "write"} */
548 3 : ldv_character_driver_scenario_write_3_4(ldv_3_container_file_operations->write, ldv_3_resource_file, ldv_3_ldv_param_4_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_4_3_default);
549 : }
550 : /* LDV {"action": "WRITE", "type": "CALL_END"} */
551 :
552 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
553 4 : ldv_free(ldv_3_ldv_param_4_1_default);
554 2 : ldv_free(ldv_3_ldv_param_4_3_default);
555 : /* LDV {"action": "POST_CALL_4", "type": "CONDITION_END"} */
556 :
557 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
558 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
559 :
560 : /* Jump to a subprocess 'call' initial state */
561 1 : goto ldv_call_3;
562 1 : break;
563 : }
564 3 : case 2: {
565 : /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "File structure is released. Invoke callback release from file_operations."} */
566 : /* LDV {"type": "CALLBACK", "call": "((& dcache_dir_close))(ldv_3_resource_inode, ldv_3_resource_file);", "comment": "release"} */
567 2 : ldv_character_driver_scenario_release_3_2(ldv_3_container_file_operations->release, ldv_3_resource_inode, ldv_3_resource_file);
568 : /* LDV {"action": "RELEASE", "type": "CALL_END"} */
569 :
570 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Device appeared in the system."} */
571 : /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
572 :
573 : /* Jump to a subprocess 'main' initial state */
574 1 : goto ldv_main_3;
575 1 : break;
576 : }
577 3 : case 3: {
578 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
579 : /* LDV {"action": "PRE_CALL_5", "type": "CONDITION_END"} */
580 :
581 2 : switch (ldv_undef_int()) {
582 3 : case 1: {
583 : /* LDV {"action": "PRE_CALL_36", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
584 : /* LDV {"action": "PRE_CALL_36", "type": "CONDITION_END"} */
585 :
586 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
587 2 : if (ldv_3_callback_unlocked_ioctl) {
588 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_unlocked_ioctl)(ldv_3_resource_file, ldv_3_ldv_param_36_1_default, ldv_3_size_cnt_write_size);", "comment": "callback"} */
589 2 : ldv_character_driver_scenario_callback_3_36(ldv_3_callback_unlocked_ioctl, ldv_3_resource_file, ldv_3_ldv_param_36_1_default, ldv_3_size_cnt_write_size);
590 : }
591 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
592 :
593 : /* LDV {"action": "POST_CALL_36", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
594 : /* LDV {"action": "POST_CALL_36", "type": "CONDITION_END"} */
595 :
596 2 : break;
597 1 : }
598 3 : case 2: {
599 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback readdir from file_operations."} */
600 : /* LDV {"type": "CALLBACK", "call": "((& dcache_readdir))(ldv_3_resource_file, ldv_3_resource_inode, ldv_3_size_cnt_func_1_ptr);", "comment": "callback"} */
601 2 : ldv_character_driver_scenario_callback_3_35(ldv_3_callback_readdir, ldv_3_resource_file, ldv_3_resource_inode, ldv_3_size_cnt_func_1_ptr);
602 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
603 :
604 1 : break;
605 1 : }
606 3 : case 3: {
607 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
608 3 : ldv_3_ldv_param_32_1_default = ldv_xmalloc_unknown_size(0);
609 3 : ldv_3_ldv_param_32_3_default = ldv_xmalloc_unknown_size(0);
610 : /* LDV {"action": "PRE_CALL_32", "type": "CONDITION_END"} */
611 :
612 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback read from file_operations."} */
613 : /* LDV {"type": "CALLBACK", "call": "((& generic_read_dir))(ldv_3_resource_file, ldv_3_ldv_param_32_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_32_3_default);", "comment": "callback"} */
614 2 : ldv_character_driver_scenario_callback_3_32(ldv_3_callback_read, ldv_3_resource_file, ldv_3_ldv_param_32_1_default, ldv_3_size_cnt_write_size, ldv_3_ldv_param_32_3_default);
615 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
616 :
617 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
618 2 : ldv_free(ldv_3_ldv_param_32_1_default);
619 2 : ldv_free(ldv_3_ldv_param_32_3_default);
620 : /* LDV {"action": "POST_CALL_32", "type": "CONDITION_END"} */
621 :
622 1 : break;
623 1 : }
624 3 : case 4: {
625 : /* LDV {"action": "PRE_CALL_29", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
626 : /* LDV {"action": "PRE_CALL_29", "type": "CONDITION_END"} */
627 :
628 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback llseek from file_operations."} */
629 : /* LDV {"type": "CALLBACK", "call": "((& dcache_dir_lseek))(ldv_3_resource_file, ldv_3_ldv_param_29_1_default, ldv_3_ldv_param_29_2_default);", "comment": "callback"} */
630 2 : ldv_character_driver_scenario_callback_3_29(ldv_3_callback_llseek, ldv_3_resource_file, ldv_3_ldv_param_29_1_default, ldv_3_ldv_param_29_2_default);
631 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
632 :
633 : /* LDV {"action": "POST_CALL_29", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
634 : /* LDV {"action": "POST_CALL_29", "type": "CONDITION_END"} */
635 :
636 1 : break;
637 1 : }
638 3 : case 5: {
639 : /* LDV {"action": "PRE_CALL_26", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
640 3 : ldv_3_ldv_param_26_0_default = ldv_xmalloc_unknown_size(0);
641 : /* LDV {"action": "PRE_CALL_26", "type": "CONDITION_END"} */
642 :
643 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback kill_sb from file_system_type."} */
644 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_kill_sb))(ldv_3_ldv_param_26_0_default);", "comment": "callback"} */
645 2 : ldv_character_driver_scenario_callback_3_26(ldv_3_callback_kill_sb, ldv_3_ldv_param_26_0_default);
646 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
647 :
648 : /* LDV {"action": "POST_CALL_26", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
649 2 : ldv_free(ldv_3_ldv_param_26_0_default);
650 : /* LDV {"action": "POST_CALL_26", "type": "CONDITION_END"} */
651 :
652 1 : break;
653 1 : }
654 3 : case 6: {
655 : /* LDV {"action": "PRE_CALL_23", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
656 : /* LDV {"action": "PRE_CALL_23", "type": "CONDITION_END"} */
657 :
658 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback ioctl from file_operations."} */
659 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_root_ioctl))(ldv_3_resource_inode, ldv_3_resource_file, ldv_3_ldv_param_23_2_default, ldv_3_size_cnt_write_size);", "comment": "callback"} */
660 2 : ldv_character_driver_scenario_callback_3_23(ldv_3_callback_ioctl, ldv_3_resource_inode, ldv_3_resource_file, ldv_3_ldv_param_23_2_default, ldv_3_size_cnt_write_size);
661 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
662 :
663 : /* LDV {"action": "POST_CALL_23", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
664 : /* LDV {"action": "POST_CALL_23", "type": "CONDITION_END"} */
665 :
666 1 : break;
667 1 : }
668 3 : case 7: {
669 : /* LDV {"action": "PRE_CALL_20", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
670 3 : ldv_3_ldv_param_20_2_default = ldv_xmalloc_unknown_size(0);
671 : /* LDV {"action": "PRE_CALL_20", "type": "CONDITION_END"} */
672 :
673 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback get_sb from file_system_type."} */
674 : /* LDV {"type": "CALLBACK", "call": "((& autofs_get_sb))(ldv_3_resource_struct_file_system_type, ldv_3_ldv_param_20_1_default, ldv_3_ldv_param_20_2_default, ldv_3_resource_file, ldv_3_size_cnt_struct_vfsmount_ptr);", "comment": "callback"} */
675 2 : ldv_character_driver_scenario_callback_3_20(ldv_3_callback_get_sb, ldv_3_resource_struct_file_system_type, ldv_3_ldv_param_20_1_default, ldv_3_ldv_param_20_2_default, ldv_3_resource_file, ldv_3_size_cnt_struct_vfsmount_ptr);
676 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
677 :
678 : /* LDV {"action": "POST_CALL_20", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
679 2 : ldv_free(ldv_3_ldv_param_20_2_default);
680 : /* LDV {"action": "POST_CALL_20", "type": "CONDITION_END"} */
681 :
682 1 : break;
683 1 : }
684 3 : case 8: {
685 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback callback from FILE_OPERATIONS."} */
686 2 : if (ldv_3_callback_compat_ioctl) {
687 : /* LDV {"type": "CALLBACK", "call": "(ldv_3_callback_compat_ioctl)(ldv_3_resource_file, ldv_3_ldv_param_5_1_default, ldv_3_size_cnt_write_size);", "comment": "callback"} */
688 2 : ldv_character_driver_scenario_callback_3_5(ldv_3_callback_compat_ioctl, ldv_3_resource_file, ldv_3_ldv_param_5_1_default, ldv_3_size_cnt_write_size);
689 : }
690 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
691 :
692 2 : break;
693 1 : }
694 2 : default: ldv_stop();
695 1 : }
696 9 : break;
697 1 : }
698 2 : default: ldv_stop();
699 1 : }
700 0 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
701 : /* LDV {"action": "POST_CALL_5", "type": "CONDITION_END"} */
702 0 :
703 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Device file is opened, ready to read and write."} */
704 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
705 :
706 : /* Jump to a subprocess 'call' initial state */
707 9 : goto ldv_call_3;
708 : /* Jump to a subprocess 'call' initial state */
709 : goto ldv_call_3;
710 : /* End of the subprocess 'call' */
711 : return;
712 : /* LDV {"comment": "End of control function based on process 'character_driver_scenario(file_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_character_driver_scenario_3"} */
713 : }
714 :
715 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_20 */
716 : void ldv_character_driver_scenario_callback_1_20(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) {
717 2 : ((& autofs_get_sb))(arg1, arg2, arg3, arg4, arg5);
718 1 : }
719 :
720 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_23 */
721 : void ldv_character_driver_scenario_callback_1_23(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
722 2 : (*arg0)(arg1, arg2, arg3, arg4);
723 1 : }
724 :
725 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_26 */
726 : void ldv_character_driver_scenario_callback_1_26(void (*arg0)(struct super_block *), struct super_block *arg1) {
727 3 : ((& autofs4_kill_sb))(arg1);
728 1 : }
729 :
730 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_29 */
731 : void ldv_character_driver_scenario_callback_1_29(loff_t (*arg0)(struct file *, loff_t , int), struct file *arg1, long long int arg2, int arg3) {
732 3 : (*arg0)(arg1, arg2, arg3);
733 1 : }
734 :
735 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_32 */
736 : void ldv_character_driver_scenario_callback_1_32(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
737 1 : (*arg0)(arg1, arg2, arg3, arg4);
738 1 : }
739 :
740 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_1_35 */
741 : void ldv_character_driver_scenario_callback_1_35(int (*arg0)(struct file *, void *, filldir_t ), struct file *arg1, void *arg2, int (*arg3)(void *, char *, int, loff_t , u64 , unsigned int)) {
742 1 : (*arg0)(arg1, arg2, arg3);
743 1 : }
744 :
745 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_20 */
746 : void ldv_character_driver_scenario_callback_2_20(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) {
747 2 : ((& autofs_get_sb))(arg1, arg2, arg3, arg4, arg5);
748 1 : }
749 :
750 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_23 */
751 : void ldv_character_driver_scenario_callback_2_23(int (*arg0)(struct inode *, struct file *, unsigned int, long unsigned int), struct inode *arg1, struct file *arg2, unsigned int arg3, long unsigned int arg4) {
752 2 : (*arg0)(arg1, arg2, arg3, arg4);
753 1 : }
754 :
755 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_26 */
756 : void ldv_character_driver_scenario_callback_2_26(void (*arg0)(struct super_block *), struct super_block *arg1) {
757 3 : ((& autofs4_kill_sb))(arg1);
758 1 : }
759 :
760 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_36 */
761 : void ldv_character_driver_scenario_callback_2_36(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
762 3 : (*arg0)(arg1, arg2, arg3);
763 1 : }
764 :
765 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_2_5 */
766 : void ldv_character_driver_scenario_callback_2_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
767 3 : (*arg0)(arg1, arg2, arg3);
768 1 : }
769 :
770 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_20 */
771 : void ldv_character_driver_scenario_callback_3_20(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) {
772 2 : ((& autofs_get_sb))(arg1, arg2, arg3, arg4, arg5);
773 1 : }
774 :
775 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_26 */
776 : void ldv_character_driver_scenario_callback_3_26(void (*arg0)(struct super_block *), struct super_block *arg1) {
777 3 : ((& autofs4_kill_sb))(arg1);
778 1 : }
779 :
780 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_36 */
781 : void ldv_character_driver_scenario_callback_3_36(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
782 3 : (*arg0)(arg1, arg2, arg3);
783 1 : }
784 :
785 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_callback_3_5 */
786 : void ldv_character_driver_scenario_callback_3_5(long int (*arg0)(struct file *, unsigned int, long unsigned int), struct file *arg1, unsigned int arg2, long unsigned int arg3) {
787 3 : (*arg0)(arg1, arg2, arg3);
788 1 : }
789 :
790 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_probe_1_12 */
791 : int ldv_character_driver_scenario_probe_1_12(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
792 3 : return (*arg0)(arg1, arg2);
793 : }
794 1 :
795 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_release_1_2 */
796 : void ldv_character_driver_scenario_release_1_2(int (*arg0)(struct inode *, struct file *), struct inode *arg1, struct file *arg2) {
797 2 : (*arg0)(arg1, arg2);
798 1 : }
799 :
800 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_1_4 */
801 : 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) {
802 1 : (*arg0)(arg1, arg2, arg3, arg4);
803 1 : }
804 :
805 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_2_4 */
806 : void ldv_character_driver_scenario_write_2_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
807 1 : (*arg0)(arg1, arg2, arg3, arg4);
808 1 : }
809 :
810 : /* AUX_FUNC_CALLBACK ldv_character_driver_scenario_write_3_4 */
811 : void ldv_character_driver_scenario_write_3_4(ssize_t (*arg0)(struct file *, char *, size_t , loff_t *), struct file *arg1, char *arg2, long unsigned int arg3, long long int *arg4) {
812 1 : (*arg0)(arg1, arg2, arg3, arg4);
813 1 : }
814 :
815 : /* AUX_FUNC ldv_dispatch_default_deregister_4_7_4 */
816 : void ldv_dispatch_default_deregister_4_7_4() {
817 : struct ldv_struct_insmod_7 *cf_arg_4;
818 : /* Skip thread join call */
819 1 : return;
820 : }
821 :
822 : /* AUX_FUNC ldv_dispatch_default_deregister_5_7_5 */
823 : void ldv_dispatch_default_deregister_5_7_5() {
824 : struct ldv_struct_insmod_7 *cf_arg_5;
825 : /* Skip thread join call */
826 1 : return;
827 : }
828 :
829 : /* AUX_FUNC ldv_dispatch_default_deregister_6_7_6 */
830 : void ldv_dispatch_default_deregister_6_7_6() {
831 : struct ldv_struct_insmod_7 *cf_arg_6;
832 : /* Skip thread join call */
833 1 : return;
834 : }
835 :
836 : /* AUX_FUNC ldv_dispatch_default_register_4_7_9 */
837 : void ldv_dispatch_default_register_4_7_9() {
838 : struct ldv_struct_insmod_7 *cf_arg_4;
839 4 : cf_arg_4 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
840 3 : ldv_random_containerless_scenario_4(cf_arg_4);
841 1 : return;
842 : }
843 :
844 : /* AUX_FUNC ldv_dispatch_default_register_5_7_8 */
845 : void ldv_dispatch_default_register_5_7_8() {
846 : struct ldv_struct_insmod_7 *cf_arg_5;
847 4 : cf_arg_5 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
848 3 : ldv_random_containerless_scenario_5(cf_arg_5);
849 1 : return;
850 : }
851 :
852 : /* AUX_FUNC ldv_dispatch_default_register_6_7_7 */
853 : void ldv_dispatch_default_register_6_7_7() {
854 : struct ldv_struct_insmod_7 *cf_arg_6;
855 4 : cf_arg_6 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
856 3 : ldv_random_containerless_scenario_6(cf_arg_6);
857 1 : return;
858 : }
859 :
860 : /* AUX_FUNC ldv_dispatch_insmod_deregister_10_2 */
861 : void ldv_dispatch_insmod_deregister_10_2() {
862 : struct ldv_struct_insmod_7 *cf_arg_7;
863 : /* Skip thread join call */
864 1 : return;
865 : }
866 :
867 : /* AUX_FUNC ldv_dispatch_insmod_register_10_3 */
868 : void ldv_dispatch_insmod_register_10_3() {
869 : struct ldv_struct_insmod_7 *cf_arg_7;
870 4 : cf_arg_7 = ldv_xmalloc(sizeof(struct ldv_struct_insmod_7));
871 4 : ldv_insmod_7(cf_arg_7);
872 1 : return;
873 : }
874 :
875 : /* AUX_FUNC ldv_insmod_7 */
876 : void ldv_insmod_7(void *arg0) {
877 : /* LDV {"thread": 7, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'insmod(artificial)'", "function": "ldv_insmod_7"} */
878 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
879 1 : void (*ldv_7_exit_autofs4_fs_default)(void);
880 1 : int (*ldv_7_init_autofs4_fs_default)(void);
881 1 : int ldv_7_ret_default;
882 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
883 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module initialization."} */
884 2 : ldv_free(arg0);
885 : /* LDV {"action": "INSMOD_REGISTER", "type": "RECEIVE_END"} */
886 :
887 : /* LDV {"action": "INIT_AUTOFS4_FS", "type": "CALL_BEGIN", "callback": true, "comment": "Initialize the module after insmod with 'init_autofs4_fs' function. Invoke callback init_autofs4_fs from ARTIFICIAL."} */
888 : /* LDV {"type": "CALLBACK", "call": "ldv_7_ret_default = (init_autofs4_fs)();", "comment": "init_autofs4_fs"} */
889 2 : ldv_7_ret_default = ldv_insmod_init_autofs4_fs_7_13(ldv_7_init_autofs4_fs_default);
890 : /* Callback post-call */
891 2 : ldv_7_ret_default = ldv_post_init(ldv_7_ret_default);
892 : /* LDV {"action": "INIT_AUTOFS4_FS", "type": "CALL_END"} */
893 :
894 4 : if (ldv_undef_int()) {
895 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to initialize the module."} */
896 2 : ldv_assume(ldv_7_ret_default != 0);
897 : /* LDV {"action": "INIT_FAILED", "type": "CONDITION_END"} */
898 :
899 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
900 : /* Skip a non-replicative signal receiving */
901 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
902 :
903 : /* Exit function at a terminal state */
904 1 : return;
905 : }
906 : else {
907 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Module has been initialized."} */
908 2 : ldv_assume(ldv_7_ret_default == 0);
909 : /* LDV {"action": "INIT_SUCCESS", "type": "CONDITION_END"} */
910 :
911 4 : if (ldv_undef_int()) {
912 : /* LDV {"action": "DEFAULT_REGISTER_4", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown registration function."} */
913 2 : ldv_dispatch_default_register_4_7_9();
914 : /* LDV {"action": "DEFAULT_REGISTER_4", "type": "DISPATCH_END"} */
915 :
916 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_INODE_OPERATIONS' callbacks with unknown registration function."} */
917 2 : ldv_dispatch_default_register_5_7_8();
918 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "DISPATCH_END"} */
919 :
920 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "DISPATCH_BEGIN", "comment": "Register 'STRUCT_SUPER_OPERATIONS' callbacks with unknown registration function."} */
921 2 : ldv_dispatch_default_register_6_7_7();
922 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "DISPATCH_END"} */
923 :
924 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_SUPER_OPERATIONS' callbacks with unknown deregistration function."} */
925 2 : ldv_dispatch_default_deregister_6_7_6();
926 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "DISPATCH_END"} */
927 :
928 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_INODE_OPERATIONS' callbacks with unknown deregistration function."} */
929 2 : ldv_dispatch_default_deregister_5_7_5();
930 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "DISPATCH_END"} */
931 :
932 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "DISPATCH_BEGIN", "comment": "Deregister 'STRUCT_DENTRY_OPERATIONS' callbacks with unknown deregistration function."} */
933 2 : ldv_dispatch_default_deregister_4_7_4();
934 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "DISPATCH_END"} */
935 :
936 : }
937 : else {
938 : /* LDV {"action": "NONE", "type": "CONDITION_BEGIN", "comment": "Skip default callbacks registrations and deregistrations."} */
939 : /* LDV {"action": "NONE", "type": "CONDITION_END"} */
940 :
941 : }
942 : /* LDV {"action": "EXIT_AUTOFS4_FS", "type": "CALL_BEGIN", "callback": true, "comment": "Exit the module before its unloading with 'exit_autofs4_fs' function. Invoke callback exit_autofs4_fs from ARTIFICIAL."} */
943 : /* LDV {"type": "CALLBACK", "call": "(exit_autofs4_fs)();", "comment": "exit_autofs4_fs"} */
944 4 : ldv_insmod_exit_autofs4_fs_7_2(ldv_7_exit_autofs4_fs_default);
945 : /* LDV {"action": "EXIT_AUTOFS4_FS", "type": "CALL_END"} */
946 :
947 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Trigger module exit."} */
948 : /* Skip a non-replicative signal receiving */
949 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "RECEIVE_END"} */
950 :
951 : /* Exit function at a terminal state */
952 1 : return;
953 : }
954 : /* End of the process */
955 : return;
956 : /* LDV {"comment": "End of control function based on process 'insmod(artificial)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_insmod_7"} */
957 : }
958 :
959 : /* AUX_FUNC_CALLBACK ldv_insmod_exit_autofs4_fs_7_2 */
960 : void ldv_insmod_exit_autofs4_fs_7_2(void (*arg0)(void)) {
961 4 : (exit_autofs4_fs)();
962 2 : }
963 :
964 : /* AUX_FUNC_CALLBACK ldv_insmod_init_autofs4_fs_7_13 */
965 : int ldv_insmod_init_autofs4_fs_7_13(int (*arg0)(void)) {
966 4 : return (init_autofs4_fs)();
967 1 : }
968 :
969 : /* AUX_FUNC ldv_main_10 */
970 : void ldv_main_10(void *arg0) {
971 : /* LDV {"thread": 10, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'main(main)'", "function": "ldv_main_10"} */
972 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
973 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
974 : /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Initialize rule models."} */
975 1 : ldv_initialize();
976 : /* LDV {"action": "INIT", "type": "CONDITION_END"} */
977 :
978 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_BEGIN", "comment": "Start environment model scenarios."} */
979 2 : ldv_dispatch_insmod_register_10_3();
980 : /* LDV {"action": "INSMOD_REGISTER", "type": "DISPATCH_END"} */
981 :
982 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Stop environment model scenarios."} */
983 2 : ldv_dispatch_insmod_deregister_10_2();
984 : /* LDV {"action": "INSMOD_DEREGISTER", "type": "DISPATCH_END"} */
985 :
986 : /* LDV {"action": "FINAL", "type": "CONDITION_BEGIN", "comment": "Check rule model state at the exit."} */
987 1 : ldv_check_final_state();
988 1 : ldv_stop();
989 : /* LDV {"action": "FINAL", "type": "CONDITION_END"} */
990 :
991 : /* Exit function at a terminal state */
992 0 : return;
993 : /* End of the process */
994 : return;
995 : /* LDV {"comment": "End of control function based on process 'main(main)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_main_10"} */
996 : }
997 :
998 : /* AUX_FUNC ldv_random_containerless_scenario_4 */
999 : void ldv_random_containerless_scenario_4(void *arg0) {
1000 : /* LDV {"thread": 4, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_dentry_operations)'", "function": "ldv_random_containerless_scenario_4"} */
1001 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1002 1 : void (*ldv_4_callback_d_release)(struct dentry *);
1003 1 : int (*ldv_4_callback_d_revalidate)(struct dentry *, struct nameidata *);
1004 1 : struct dentry *ldv_4_container_struct_dentry_ptr;
1005 1 : struct nameidata *ldv_4_container_struct_nameidata_ptr;
1006 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1007 1 : /* LDV {"action": "DEFAULT_REGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
1008 2 : ldv_free(arg0);
1009 : /* LDV {"action": "DEFAULT_REGISTER_4", "type": "RECEIVE_END"} */
1010 :
1011 : /* LDV {"action": "DEFAULT_ALLOC_4", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1012 3 : ldv_4_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
1013 3 : ldv_4_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
1014 : /* LDV {"action": "DEFAULT_ALLOC_4", "type": "CONDITION_END"} */
1015 :
1016 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1017 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1018 :
1019 : /* Jump to a subprocess 'call' initial state */
1020 1 : goto ldv_call_4;
1021 : /* End of the process */
1022 : return;
1023 1 :
1024 : /* Sbprocess call */
1025 : ldv_call_4:
1026 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1027 :
1028 2 : switch (ldv_undef_int()) {
1029 3 : case 1: {
1030 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_revalidate from dentry_operations."} */
1031 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_revalidate))(ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_nameidata_ptr);", "comment": "callback"} */
1032 2 : ldv_random_containerless_scenario_callback_4_8(ldv_4_callback_d_revalidate, ldv_4_container_struct_dentry_ptr, ldv_4_container_struct_nameidata_ptr);
1033 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1034 :
1035 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1036 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1037 :
1038 : /* Jump to a subprocess 'call' initial state */
1039 1 : goto ldv_call_4;
1040 1 : break;
1041 : }
1042 3 : case 2: {
1043 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback d_release from dentry_operations."} */
1044 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_dentry_release))(ldv_4_container_struct_dentry_ptr);", "comment": "callback"} */
1045 2 : ldv_random_containerless_scenario_callback_4_4(ldv_4_callback_d_release, ldv_4_container_struct_dentry_ptr);
1046 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1047 :
1048 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1049 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1050 :
1051 : /* Jump to a subprocess 'call' initial state */
1052 1 : goto ldv_call_4;
1053 : /* Jump to a subprocess 'call' initial state */
1054 : goto ldv_call_4;
1055 1 : break;
1056 : }
1057 3 : case 3: {
1058 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1059 2 : ldv_free(ldv_4_container_struct_dentry_ptr);
1060 2 : ldv_free(ldv_4_container_struct_nameidata_ptr);
1061 : /* LDV {"action": "DEFAULT_FREE_4", "type": "CONDITION_END"} */
1062 :
1063 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_DENTRY_OPERATIONS callbacks invocations scenario."} */
1064 : /* Skip a non-replicative signal receiving */
1065 : /* LDV {"action": "DEFAULT_DEREGISTER_4", "type": "RECEIVE_END"} */
1066 :
1067 : /* Exit function at a terminal state */
1068 1 : return;
1069 1 : break;
1070 : }
1071 2 : default: ldv_stop();
1072 1 : }
1073 0 : /* End of the subprocess 'call' */
1074 0 : return;
1075 : /* 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"} */
1076 : }
1077 :
1078 : /* AUX_FUNC ldv_random_containerless_scenario_5 */
1079 : void ldv_random_containerless_scenario_5(void *arg0) {
1080 : /* LDV {"thread": 5, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_inode_operations)'", "function": "ldv_random_containerless_scenario_5"} */
1081 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1082 1 : void *(*ldv_5_callback_follow_link)(struct dentry *, struct nameidata *);
1083 1 : struct dentry *(*ldv_5_callback_lookup)(struct inode *, struct dentry *, struct nameidata *);
1084 1 : int (*ldv_5_callback_mkdir)(struct inode *, struct dentry *, int);
1085 1 : int (*ldv_5_callback_readlink)(struct dentry *, char *, int);
1086 1 : int (*ldv_5_callback_rmdir)(struct inode *, struct dentry *);
1087 1 : int (*ldv_5_callback_symlink)(struct inode *, struct dentry *, char *);
1088 1 : int (*ldv_5_callback_unlink)(struct inode *, struct dentry *);
1089 1 : struct dentry *ldv_5_container_struct_dentry_ptr;
1090 1 : struct inode *ldv_5_container_struct_inode_ptr;
1091 1 : struct nameidata *ldv_5_container_struct_nameidata_ptr;
1092 1 : char *ldv_5_ldv_param_12_1_default;
1093 1 : int ldv_5_ldv_param_12_2_default;
1094 1 : char *ldv_5_ldv_param_16_2_default;
1095 1 : int ldv_5_ldv_param_9_2_default;
1096 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1097 1 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
1098 3 : ldv_free(arg0);
1099 1 : /* LDV {"action": "DEFAULT_REGISTER_5", "type": "RECEIVE_END"} */
1100 1 :
1101 : /* LDV {"action": "DEFAULT_ALLOC_5", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1102 3 : ldv_5_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
1103 3 : ldv_5_container_struct_inode_ptr = ldv_xmalloc_unknown_size(0);
1104 3 : ldv_5_container_struct_nameidata_ptr = ldv_xmalloc_unknown_size(0);
1105 : /* LDV {"action": "DEFAULT_ALLOC_5", "type": "CONDITION_END"} */
1106 :
1107 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1108 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1109 :
1110 : /* Jump to a subprocess 'call' initial state */
1111 1 : goto ldv_call_5;
1112 : /* End of the process */
1113 : return;
1114 1 :
1115 : /* Sbprocess call */
1116 : ldv_call_5:
1117 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1118 :
1119 2 : switch (ldv_undef_int()) {
1120 3 : case 1: {
1121 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback unlink from inode_operations."} */
1122 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_dir_unlink))(ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr);", "comment": "callback"} */
1123 2 : ldv_random_containerless_scenario_callback_5_19(ldv_5_callback_unlink, ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr);
1124 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1125 :
1126 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1127 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1128 :
1129 : /* Jump to a subprocess 'call' initial state */
1130 1 : goto ldv_call_5;
1131 1 : break;
1132 : }
1133 3 : case 2: {
1134 : /* LDV {"action": "PRE_CALL_16", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1135 3 : ldv_5_ldv_param_16_2_default = ldv_xmalloc_unknown_size(0);
1136 : /* LDV {"action": "PRE_CALL_16", "type": "CONDITION_END"} */
1137 :
1138 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback symlink from inode_operations."} */
1139 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_dir_symlink))(ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_16_2_default);", "comment": "callback"} */
1140 2 : ldv_random_containerless_scenario_callback_5_16(ldv_5_callback_symlink, ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_16_2_default);
1141 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1142 :
1143 : /* LDV {"action": "POST_CALL_16", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1144 2 : ldv_free(ldv_5_ldv_param_16_2_default);
1145 : /* LDV {"action": "POST_CALL_16", "type": "CONDITION_END"} */
1146 :
1147 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1148 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1149 :
1150 : /* Jump to a subprocess 'call' initial state */
1151 1 : goto ldv_call_5;
1152 : /* Jump to a subprocess 'call' initial state */
1153 : goto ldv_call_5;
1154 1 : break;
1155 : }
1156 3 : case 3: {
1157 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback rmdir from inode_operations."} */
1158 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_dir_rmdir))(ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr);", "comment": "callback"} */
1159 2 : ldv_random_containerless_scenario_callback_5_15(ldv_5_callback_rmdir, ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr);
1160 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1161 :
1162 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1163 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1164 :
1165 : /* Jump to a subprocess 'call' initial state */
1166 1 : goto ldv_call_5;
1167 : /* Jump to a subprocess 'call' initial state */
1168 : goto ldv_call_5;
1169 : /* Jump to a subprocess 'call' initial state */
1170 : goto ldv_call_5;
1171 1 : break;
1172 : }
1173 3 : case 4: {
1174 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1175 3 : ldv_5_ldv_param_12_1_default = ldv_xmalloc_unknown_size(0);
1176 : /* LDV {"action": "PRE_CALL_12", "type": "CONDITION_END"} */
1177 :
1178 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback readlink from inode_operations."} */
1179 : /* LDV {"type": "CALLBACK", "call": "((& generic_readlink))(ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_12_1_default, ldv_5_ldv_param_12_2_default);", "comment": "callback"} */
1180 2 : ldv_random_containerless_scenario_callback_5_12(ldv_5_callback_readlink, ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_12_1_default, ldv_5_ldv_param_12_2_default);
1181 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1182 :
1183 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1184 2 : ldv_free(ldv_5_ldv_param_12_1_default);
1185 : /* LDV {"action": "POST_CALL_12", "type": "CONDITION_END"} */
1186 :
1187 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1188 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1189 :
1190 : /* Jump to a subprocess 'call' initial state */
1191 1 : goto ldv_call_5;
1192 : /* Jump to a subprocess 'call' initial state */
1193 : goto ldv_call_5;
1194 : /* Jump to a subprocess 'call' initial state */
1195 : goto ldv_call_5;
1196 : /* Jump to a subprocess 'call' initial state */
1197 : goto ldv_call_5;
1198 1 : break;
1199 : }
1200 3 : case 5: {
1201 : /* LDV {"action": "PRE_CALL_9", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
1202 : /* LDV {"action": "PRE_CALL_9", "type": "CONDITION_END"} */
1203 :
1204 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback mkdir from inode_operations."} */
1205 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_dir_mkdir))(ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_9_2_default);", "comment": "callback"} */
1206 2 : ldv_random_containerless_scenario_callback_5_9(ldv_5_callback_mkdir, ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_ldv_param_9_2_default);
1207 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1208 :
1209 : /* LDV {"action": "POST_CALL_9", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
1210 : /* LDV {"action": "POST_CALL_9", "type": "CONDITION_END"} */
1211 :
1212 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1213 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1214 :
1215 : /* Jump to a subprocess 'call' initial state */
1216 1 : goto ldv_call_5;
1217 : /* Jump to a subprocess 'call' initial state */
1218 : goto ldv_call_5;
1219 : /* Jump to a subprocess 'call' initial state */
1220 : goto ldv_call_5;
1221 : /* Jump to a subprocess 'call' initial state */
1222 : goto ldv_call_5;
1223 : /* Jump to a subprocess 'call' initial state */
1224 : goto ldv_call_5;
1225 1 : break;
1226 : }
1227 3 : case 6: {
1228 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback lookup from inode_operations."} */
1229 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_lookup))(ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_container_struct_nameidata_ptr);", "comment": "callback"} */
1230 2 : ldv_random_containerless_scenario_callback_5_8(ldv_5_callback_lookup, ldv_5_container_struct_inode_ptr, ldv_5_container_struct_dentry_ptr, ldv_5_container_struct_nameidata_ptr);
1231 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1232 :
1233 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1234 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1235 :
1236 : /* Jump to a subprocess 'call' initial state */
1237 1 : goto ldv_call_5;
1238 : /* Jump to a subprocess 'call' initial state */
1239 : goto ldv_call_5;
1240 : /* Jump to a subprocess 'call' initial state */
1241 : goto ldv_call_5;
1242 : /* Jump to a subprocess 'call' initial state */
1243 : goto ldv_call_5;
1244 : /* Jump to a subprocess 'call' initial state */
1245 : goto ldv_call_5;
1246 : /* Jump to a subprocess 'call' initial state */
1247 : goto ldv_call_5;
1248 1 : break;
1249 : }
1250 3 : case 7: {
1251 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback follow_link from inode_operations."} */
1252 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_follow_link))(ldv_5_container_struct_dentry_ptr, ldv_5_container_struct_nameidata_ptr);", "comment": "callback"} */
1253 2 : ldv_random_containerless_scenario_callback_5_4(ldv_5_callback_follow_link, ldv_5_container_struct_dentry_ptr, ldv_5_container_struct_nameidata_ptr);
1254 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1255 :
1256 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1257 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1258 :
1259 : /* Jump to a subprocess 'call' initial state */
1260 1 : goto ldv_call_5;
1261 : /* Jump to a subprocess 'call' initial state */
1262 : goto ldv_call_5;
1263 : /* Jump to a subprocess 'call' initial state */
1264 : goto ldv_call_5;
1265 : /* Jump to a subprocess 'call' initial state */
1266 : goto ldv_call_5;
1267 : /* Jump to a subprocess 'call' initial state */
1268 : goto ldv_call_5;
1269 : /* Jump to a subprocess 'call' initial state */
1270 : goto ldv_call_5;
1271 : /* Jump to a subprocess 'call' initial state */
1272 : goto ldv_call_5;
1273 1 : break;
1274 : }
1275 3 : case 8: {
1276 : /* LDV {"action": "DEFAULT_FREE_5", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1277 2 : ldv_free(ldv_5_container_struct_dentry_ptr);
1278 2 : ldv_free(ldv_5_container_struct_inode_ptr);
1279 2 : ldv_free(ldv_5_container_struct_nameidata_ptr);
1280 : /* LDV {"action": "DEFAULT_FREE_5", "type": "CONDITION_END"} */
1281 :
1282 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_INODE_OPERATIONS callbacks invocations scenario."} */
1283 : /* Skip a non-replicative signal receiving */
1284 : /* LDV {"action": "DEFAULT_DEREGISTER_5", "type": "RECEIVE_END"} */
1285 :
1286 : /* Exit function at a terminal state */
1287 1 : return;
1288 1 : break;
1289 : }
1290 2 : default: ldv_stop();
1291 1 : }
1292 0 : /* End of the subprocess 'call' */
1293 0 : return;
1294 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_inode_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_5"} */
1295 : }
1296 :
1297 : /* AUX_FUNC ldv_random_containerless_scenario_6 */
1298 : void ldv_random_containerless_scenario_6(void *arg0) {
1299 : /* LDV {"thread": 6, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'random_containerless_scenario(struct_super_operations)'", "function": "ldv_random_containerless_scenario_6"} */
1300 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
1301 1 : int (*ldv_6_callback_show_options)(struct seq_file *, struct vfsmount *);
1302 1 : int (*ldv_6_callback_statfs)(struct dentry *, struct kstatfs *);
1303 1 : struct dentry *ldv_6_container_struct_dentry_ptr;
1304 1 : struct kstatfs *ldv_6_container_struct_kstatfs_ptr;
1305 1 : struct seq_file *ldv_6_container_struct_seq_file_ptr;
1306 1 : struct vfsmount *ldv_6_container_struct_vfsmount_ptr;
1307 1 : /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
1308 1 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_SUPER_OPERATIONS callbacks invocations scenario."} */
1309 3 : ldv_free(arg0);
1310 1 : /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_END"} */
1311 :
1312 : /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
1313 3 : ldv_6_container_struct_dentry_ptr = ldv_xmalloc_unknown_size(0);
1314 3 : ldv_6_container_struct_kstatfs_ptr = ldv_xmalloc_unknown_size(0);
1315 3 : ldv_6_container_struct_seq_file_ptr = ldv_xmalloc_unknown_size(0);
1316 3 : ldv_6_container_struct_vfsmount_ptr = ldv_xmalloc_unknown_size(0);
1317 : /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_END"} */
1318 :
1319 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1320 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1321 :
1322 : /* Jump to a subprocess 'call' initial state */
1323 1 : goto ldv_call_6;
1324 : /* End of the process */
1325 : return;
1326 1 :
1327 : /* Sbprocess call */
1328 : ldv_call_6:
1329 : /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
1330 :
1331 2 : switch (ldv_undef_int()) {
1332 3 : case 1: {
1333 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback statfs from super_operations."} */
1334 : /* LDV {"type": "CALLBACK", "call": "((& simple_statfs))(ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_kstatfs_ptr);", "comment": "callback"} */
1335 2 : ldv_random_containerless_scenario_callback_6_8(ldv_6_callback_statfs, ldv_6_container_struct_dentry_ptr, ldv_6_container_struct_kstatfs_ptr);
1336 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1337 :
1338 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1339 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1340 :
1341 : /* Jump to a subprocess 'call' initial state */
1342 1 : goto ldv_call_6;
1343 1 : break;
1344 : }
1345 3 : case 2: {
1346 : /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback show_options from super_operations."} */
1347 : /* LDV {"type": "CALLBACK", "call": "((& autofs4_show_options))(ldv_6_container_struct_seq_file_ptr, ldv_6_container_struct_vfsmount_ptr);", "comment": "callback"} */
1348 2 : ldv_random_containerless_scenario_callback_6_4(ldv_6_callback_show_options, ldv_6_container_struct_seq_file_ptr, ldv_6_container_struct_vfsmount_ptr);
1349 : /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
1350 :
1351 : /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Prepare to call a random callback or deregister the callbacks."} */
1352 : /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
1353 :
1354 : /* Jump to a subprocess 'call' initial state */
1355 1 : goto ldv_call_6;
1356 : /* Jump to a subprocess 'call' initial state */
1357 : goto ldv_call_6;
1358 1 : break;
1359 : }
1360 3 : case 3: {
1361 : /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
1362 2 : ldv_free(ldv_6_container_struct_dentry_ptr);
1363 2 : ldv_free(ldv_6_container_struct_kstatfs_ptr);
1364 2 : ldv_free(ldv_6_container_struct_seq_file_ptr);
1365 2 : ldv_free(ldv_6_container_struct_vfsmount_ptr);
1366 : /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_END"} */
1367 :
1368 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_SUPER_OPERATIONS callbacks invocations scenario."} */
1369 : /* Skip a non-replicative signal receiving */
1370 : /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_END"} */
1371 :
1372 : /* Exit function at a terminal state */
1373 1 : return;
1374 1 : break;
1375 : }
1376 2 : default: ldv_stop();
1377 1 : }
1378 0 : /* End of the subprocess 'call' */
1379 0 : return;
1380 : /* LDV {"comment": "End of control function based on process 'random_containerless_scenario(struct_super_operations)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_random_containerless_scenario_6"} */
1381 : }
1382 :
1383 : /* AUX_FUNC main */
1384 : int main() {
1385 1 : ldv_main_10(0);
1386 0 : return 0;
1387 : }
1388 :
1389 :
1390 : /* AUX_FUNC ERR_PTR */
1391 : static inline void *ERR_PTR (long int error)
1392 : {
1393 :
1394 : return ldv_err_ptr(error);
1395 : }
1396 :
1397 : /* AUX_FUNC PTR_ERR */
1398 : static inline long int PTR_ERR (void const *ptr)
1399 : {
1400 :
1401 : return ldv_ptr_err(ptr);
1402 : }
1403 :
1404 : /* AUX_FUNC IS_ERR */
1405 : static inline long int IS_ERR (void const *ptr)
1406 : {
1407 :
1408 : return ldv_is_err(ptr);
1409 : }
1410 :
1411 : /* AUX_FUNC IS_ERR_OR_NULL */
1412 : static inline long int IS_ERR_OR_NULL (void const *ptr)
1413 : {
1414 :
1415 : return ldv_is_err_or_null(ptr);
1416 : }
1417 :
1418 : /* AUX_FUNC kzalloc */
1419 : static inline void *kzalloc (size_t size, gfp_t flags)
1420 : {
1421 :
1422 : return ldv_kzalloc(size, flags);
1423 : }
|