// RUN: %sea --mem=-1 -m64 pf --step=large -g --horn-global-constraints=true --track=mem --horn-stats --enable-nondet-init --strip-extern --externalize-addr-taken-functions --horn-singleton-aliases=true --devirt-functions --horn-ignore-calloc=false --enable-indvar --enable-loop-idiom --horn-make-undef-warning-error=false --dsa=sea-ci --inline "%s"
// CHECK: ^unsat$

extern void __VERIFIER_error() __attribute__ ((__noreturn__));
/* Generated by CIL v. 1.5.1 */
/* print_CIL_Input is false */

#line 23 "include/uapi/asm-generic/int-ll64.h"
typedef unsigned short __u16;
#line 25 "include/uapi/asm-generic/int-ll64.h"
typedef int __s32;
#line 26 "include/uapi/asm-generic/int-ll64.h"
typedef unsigned int __u32;
#line 30 "include/uapi/asm-generic/int-ll64.h"
typedef unsigned long long __u64;
#line 15 "include/asm-generic/int-ll64.h"
typedef signed char s8;
#line 16 "include/asm-generic/int-ll64.h"
typedef unsigned char u8;
#line 19 "include/asm-generic/int-ll64.h"
typedef unsigned short u16;
#line 21 "include/asm-generic/int-ll64.h"
typedef int s32;
#line 22 "include/asm-generic/int-ll64.h"
typedef unsigned int u32;
#line 24 "include/asm-generic/int-ll64.h"
typedef long long s64;
#line 25 "include/asm-generic/int-ll64.h"
typedef unsigned long long u64;
#line 14 "./include/uapi/asm-generic/posix_types.h"
typedef long __kernel_long_t;
#line 15 "./include/uapi/asm-generic/posix_types.h"
typedef unsigned long __kernel_ulong_t;
#line 27 "./include/uapi/asm-generic/posix_types.h"
typedef int __kernel_pid_t;
#line 48 "./include/uapi/asm-generic/posix_types.h"
typedef unsigned int __kernel_uid32_t;
#line 49 "./include/uapi/asm-generic/posix_types.h"
typedef unsigned int __kernel_gid32_t;
#line 71 "./include/uapi/asm-generic/posix_types.h"
typedef __kernel_ulong_t __kernel_size_t;
#line 72 "./include/uapi/asm-generic/posix_types.h"
typedef __kernel_long_t __kernel_ssize_t;
#line 87 "./include/uapi/asm-generic/posix_types.h"
typedef long long __kernel_loff_t;
#line 88 "./include/uapi/asm-generic/posix_types.h"
typedef __kernel_long_t __kernel_time_t;
#line 89 "./include/uapi/asm-generic/posix_types.h"
typedef __kernel_long_t __kernel_clock_t;
#line 90 "./include/uapi/asm-generic/posix_types.h"
typedef int __kernel_timer_t;
#line 91 "./include/uapi/asm-generic/posix_types.h"
typedef int __kernel_clockid_t;
#line 33 "include/uapi/linux/types.h"
typedef __u16 __be16;
#line 35 "include/uapi/linux/types.h"
typedef __u32 __be32;
#line 37 "include/uapi/linux/types.h"
typedef __u64 __be64;
#line 229 "include/linux/compiler.h"
struct kernel_symbol {
   unsigned long value ;
   char const   *name ;
};
#line 33 "include/linux/export.h"
struct module;
#line 12 "include/linux/types.h"
typedef __u32 __kernel_dev_t;
#line 15 "include/linux/types.h"
typedef __kernel_dev_t dev_t;
#line 18 "include/linux/types.h"
typedef unsigned short umode_t;
#line 21 "include/linux/types.h"
typedef __kernel_pid_t pid_t;
#line 26 "include/linux/types.h"
typedef __kernel_clockid_t clockid_t;
#line 29 "include/linux/types.h"
typedef _Bool bool;
#line 31 "include/linux/types.h"
typedef __kernel_uid32_t uid_t;
#line 32 "include/linux/types.h"
typedef __kernel_gid32_t gid_t;
#line 45 "include/linux/types.h"
typedef __kernel_loff_t loff_t;
#line 54 "include/linux/types.h"
typedef __kernel_size_t size_t;
#line 59 "include/linux/types.h"
typedef __kernel_ssize_t ssize_t;
#line 69 "include/linux/types.h"
typedef __kernel_time_t time_t;
#line 102 "include/linux/types.h"
typedef __s32 int32_t;
#line 108 "include/linux/types.h"
typedef __u32 uint32_t;
#line 111 "include/linux/types.h"
typedef __u64 uint64_t;
#line 133 "include/linux/types.h"
typedef unsigned long sector_t;
#line 134 "include/linux/types.h"
typedef unsigned long blkcnt_t;
#line 152 "include/linux/types.h"
typedef u64 dma_addr_t;
#line 157 "include/linux/types.h"
typedef unsigned int gfp_t;
#line 158 "include/linux/types.h"
typedef unsigned int fmode_t;
#line 159 "include/linux/types.h"
typedef unsigned int oom_flags_t;
#line 177 "include/linux/types.h"
struct __anonstruct_atomic_t_6 {
   int counter ;
};
#line 177 "include/linux/types.h"
typedef struct __anonstruct_atomic_t_6 atomic_t;
#line 182 "include/linux/types.h"
struct __anonstruct_atomic64_t_7 {
   long counter ;
};
#line 182 "include/linux/types.h"
typedef struct __anonstruct_atomic64_t_7 atomic64_t;
#line 183 "include/linux/types.h"
struct list_head {
   struct list_head *next ;
   struct list_head *prev ;
};
#line 188
struct hlist_node;
#line 188 "include/linux/types.h"
struct hlist_head {
   struct hlist_node *first ;
};
#line 192 "include/linux/types.h"
struct hlist_node {
   struct hlist_node *next ;
   struct hlist_node **pprev ;
};
#line 203 "include/linux/types.h"
struct callback_head {
   struct callback_head *next ;
   void (*func)(struct callback_head * ) ;
};
#line 67 "./arch/x86/include/asm/page_types.h"
struct pt_regs {
   unsigned long r15 ;
   unsigned long r14 ;
   unsigned long r13 ;
   unsigned long r12 ;
   unsigned long bp ;
   unsigned long bx ;
   unsigned long r11 ;
   unsigned long r10 ;
   unsigned long r9 ;
   unsigned long r8 ;
   unsigned long ax ;
   unsigned long cx ;
   unsigned long dx ;
   unsigned long si ;
   unsigned long di ;
   unsigned long orig_ax ;
   unsigned long ip ;
   unsigned long cs ;
   unsigned long flags ;
   unsigned long sp ;
   unsigned long ss ;
};
#line 66 "./arch/x86/include/asm/ptrace.h"
struct __anonstruct____missing_field_name_9 {
   unsigned int a ;
   unsigned int b ;
};
#line 66 "./arch/x86/include/asm/ptrace.h"
struct __anonstruct____missing_field_name_10 {
   u16 limit0 ;
   u16 base0 ;
   unsigned char base1 ;
   unsigned char type : 4 ;
   unsigned char s : 1 ;
   unsigned char dpl : 2 ;
   unsigned char p : 1 ;
   unsigned char limit : 4 ;
   unsigned char avl : 1 ;
   unsigned char l : 1 ;
   unsigned char d : 1 ;
   unsigned char g : 1 ;
   unsigned char base2 ;
};
#line 66 "./arch/x86/include/asm/ptrace.h"
union __anonunion____missing_field_name_8 {
   struct __anonstruct____missing_field_name_9 __annonCompField4 ;
   struct __anonstruct____missing_field_name_10 __annonCompField5 ;
};
#line 66 "./arch/x86/include/asm/ptrace.h"
struct desc_struct {
   union __anonunion____missing_field_name_8 __annonCompField6 ;
};
#line 12 "./arch/x86/include/asm/pgtable_64_types.h"
typedef unsigned long pteval_t;
#line 15 "./arch/x86/include/asm/pgtable_64_types.h"
typedef unsigned long pgdval_t;
#line 16 "./arch/x86/include/asm/pgtable_64_types.h"
typedef unsigned long pgprotval_t;
#line 18 "./arch/x86/include/asm/pgtable_64_types.h"
struct __anonstruct_pte_t_11 {
   pteval_t pte ;
};
#line 18 "./arch/x86/include/asm/pgtable_64_types.h"
typedef struct __anonstruct_pte_t_11 pte_t;
#line 20 "./arch/x86/include/asm/pgtable_64_types.h"
struct pgprot {
   pgprotval_t pgprot ;
};
#line 218 "./arch/x86/include/asm/pgtable_types.h"
typedef struct pgprot pgprot_t;
#line 220 "./arch/x86/include/asm/pgtable_types.h"
struct __anonstruct_pgd_t_12 {
   pgdval_t pgd ;
};
#line 220 "./arch/x86/include/asm/pgtable_types.h"
typedef struct __anonstruct_pgd_t_12 pgd_t;
#line 361
struct page;
#line 361 "./arch/x86/include/asm/pgtable_types.h"
typedef struct page *pgtable_t;
#line 372
struct file;
#line 385
struct seq_file;
#line 423
struct thread_struct;
#line 424
struct tss_struct;
#line 425
struct mm_struct;
#line 426
struct task_struct;
#line 427
struct cpumask;
#line 20 "./arch/x86/include/asm/spinlock_types.h"
struct qspinlock {
   atomic_t val ;
};
#line 33 "include/asm-generic/qspinlock_types.h"
typedef struct qspinlock arch_spinlock_t;
#line 34 "include/asm-generic/qspinlock_types.h"
struct qrwlock {
   atomic_t cnts ;
   arch_spinlock_t lock ;
};
#line 14 "include/asm-generic/qrwlock_types.h"
typedef struct qrwlock arch_rwlock_t;
#line 131 "include/linux/init.h"
typedef void (*ctor_fn_t)(void);
#line 48 "include/linux/dynamic_debug.h"
struct device;
#line 420 "include/linux/printk.h"
struct file_operations;
#line 432
struct completion;
#line 555 "./arch/x86/include/asm/percpu.h"
struct bug_entry {
   int bug_addr_disp ;
   int file_disp ;
   unsigned short line ;
   unsigned short flags ;
};
#line 102 "include/linux/bug.h"
struct timespec;
#line 103
struct compat_timespec;
#line 104 "include/linux/bug.h"
struct __anonstruct_futex_16 {
   u32 *uaddr ;
   u32 val ;
   u32 flags ;
   u32 bitset ;
   u64 time ;
   u32 *uaddr2 ;
};
#line 104 "include/linux/bug.h"
struct __anonstruct_nanosleep_17 {
   clockid_t clockid ;
   struct timespec *rmtp ;
   struct compat_timespec *compat_rmtp ;
   u64 expires ;
};
#line 104
struct pollfd;
#line 104 "include/linux/bug.h"
struct __anonstruct_poll_18 {
   struct pollfd *ufds ;
   int nfds ;
   int has_timeout ;
   unsigned long tv_sec ;
   unsigned long tv_nsec ;
};
#line 104 "include/linux/bug.h"
union __anonunion____missing_field_name_15 {
   struct __anonstruct_futex_16 futex ;
   struct __anonstruct_nanosleep_17 nanosleep ;
   struct __anonstruct_poll_18 poll ;
};
#line 104 "include/linux/bug.h"
struct restart_block {
   long (*fn)(struct restart_block * ) ;
   union __anonunion____missing_field_name_15 __annonCompField7 ;
};
#line 127 "./arch/x86/include/uapi/asm/vm86.h"
struct kernel_vm86_regs {
   struct pt_regs pt ;
   unsigned short es ;
   unsigned short __esh ;
   unsigned short ds ;
   unsigned short __dsh ;
   unsigned short fs ;
   unsigned short __fsh ;
   unsigned short gs ;
   unsigned short __gsh ;
};
#line 79 "./arch/x86/include/asm/vm86.h"
union __anonunion____missing_field_name_19 {
   struct pt_regs *regs ;
   struct kernel_vm86_regs *vm86 ;
};
#line 79 "./arch/x86/include/asm/vm86.h"
struct math_emu_info {
   long ___orig_eip ;
   union __anonunion____missing_field_name_19 __annonCompField8 ;
};
#line 328 "include/linux/bitmap.h"
struct cpumask {
   unsigned long bits[128U] ;
};
#line 15 "include/linux/cpumask.h"
typedef struct cpumask cpumask_t;
#line 652 "include/linux/cpumask.h"
typedef struct cpumask *cpumask_var_t;
#line 260 "./arch/x86/include/asm/special_insns.h"
struct fregs_state {
   u32 cwd ;
   u32 swd ;
   u32 twd ;
   u32 fip ;
   u32 fcs ;
   u32 foo ;
   u32 fos ;
   u32 st_space[20U] ;
   u32 status ;
};
#line 26 "./arch/x86/include/asm/fpu/types.h"
struct __anonstruct____missing_field_name_29 {
   u64 rip ;
   u64 rdp ;
};
#line 26 "./arch/x86/include/asm/fpu/types.h"
struct __anonstruct____missing_field_name_30 {
   u32 fip ;
   u32 fcs ;
   u32 foo ;
   u32 fos ;
};
#line 26 "./arch/x86/include/asm/fpu/types.h"
union __anonunion____missing_field_name_28 {
   struct __anonstruct____missing_field_name_29 __annonCompField12 ;
   struct __anonstruct____missing_field_name_30 __annonCompField13 ;
};
#line 26 "./arch/x86/include/asm/fpu/types.h"
union __anonunion____missing_field_name_31 {
   u32 padding1[12U] ;
   u32 sw_reserved[12U] ;
};
#line 26 "./arch/x86/include/asm/fpu/types.h"
struct fxregs_state {
   u16 cwd ;
   u16 swd ;
   u16 twd ;
   u16 fop ;
   union __anonunion____missing_field_name_28 __annonCompField14 ;
   u32 mxcsr ;
   u32 mxcsr_mask ;
   u32 st_space[32U] ;
   u32 xmm_space[64U] ;
   u32 padding[12U] ;
   union __anonunion____missing_field_name_31 __annonCompField15 ;
};
#line 66 "./arch/x86/include/asm/fpu/types.h"
struct swregs_state {
   u32 cwd ;
   u32 swd ;
   u32 twd ;
   u32 fip ;
   u32 fcs ;
   u32 foo ;
   u32 fos ;
   u32 st_space[20U] ;
   u8 ftop ;
   u8 changed ;
   u8 lookahead ;
   u8 no_update ;
   u8 rm ;
   u8 alimit ;
   struct math_emu_info *info ;
   u32 entry_eip ;
};
#line 155 "./arch/x86/include/asm/fpu/types.h"
struct xstate_header {
   u64 xfeatures ;
   u64 xcomp_bv ;
   u64 reserved[6U] ;
};
#line 161 "./arch/x86/include/asm/fpu/types.h"
struct xregs_state {
   struct fxregs_state i387 ;
   struct xstate_header header ;
   u8 __reserved[464U] ;
};
#line 179 "./arch/x86/include/asm/fpu/types.h"
union fpregs_state {
   struct fregs_state fsave ;
   struct fxregs_state fxsave ;
   struct swregs_state soft ;
   struct xregs_state xsave ;
};
#line 193 "./arch/x86/include/asm/fpu/types.h"
struct fpu {
   union fpregs_state state ;
   unsigned int last_cpu ;
   unsigned char fpstate_active ;
   unsigned char fpregs_active ;
   unsigned char counter ;
};
#line 170 "./arch/x86/include/asm/processor.h"
struct seq_operations;
#line 213 "./arch/x86/include/asm/processor.h"
struct x86_hw_tss {
   u32 reserved1 ;
   u64 sp0 ;
   u64 sp1 ;
   u64 sp2 ;
   u64 reserved2 ;
   u64 ist[7U] ;
   u32 reserved3 ;
   u32 reserved4 ;
   u16 reserved5 ;
   u16 io_bitmap_base ;
};
#line 275 "./arch/x86/include/asm/processor.h"
struct tss_struct {
   struct x86_hw_tss x86_tss ;
   unsigned long io_bitmap[1025U] ;
   unsigned long SYSENTER_stack[64U] ;
};
#line 369
struct perf_event;
#line 370 "./arch/x86/include/asm/processor.h"
struct thread_struct {
   struct desc_struct tls_array[3U] ;
   unsigned long sp0 ;
   unsigned long sp ;
   unsigned short es ;
   unsigned short ds ;
   unsigned short fsindex ;
   unsigned short gsindex ;
   unsigned long fs ;
   unsigned long gs ;
   struct fpu fpu ;
   struct perf_event *ptrace_bps[4U] ;
   unsigned long debugreg6 ;
   unsigned long ptrace_dr7 ;
   unsigned long cr2 ;
   unsigned long trap_nr ;
   unsigned long error_code ;
   unsigned long *io_bitmap_ptr ;
   unsigned long iopl ;
   unsigned int io_bitmap_max ;
};
#line 489 "./arch/x86/include/asm/processor.h"
struct __anonstruct_mm_segment_t_33 {
   unsigned long seg ;
};
#line 489 "./arch/x86/include/asm/processor.h"
typedef struct __anonstruct_mm_segment_t_33 mm_segment_t;
#line 23 "include/asm-generic/atomic-long.h"
typedef atomic64_t atomic_long_t;
#line 131 "include/asm-generic/atomic-long.h"
struct thread_info {
   struct task_struct *task ;
   __u32 flags ;
   __u32 status ;
   __u32 cpu ;
   int saved_preempt_count ;
   mm_segment_t addr_limit ;
   void *sysenter_return ;
   unsigned char sig_on_uaccess_error : 1 ;
   unsigned char uaccess_err : 1 ;
};
#line 33 "include/linux/bottom_half.h"
struct lockdep_map;
#line 55 "include/linux/debug_locks.h"
struct stack_trace {
   unsigned int nr_entries ;
   unsigned int max_entries ;
   unsigned long *entries ;
   int skip ;
};
#line 28 "include/linux/stacktrace.h"
struct lockdep_subclass_key {
   char __one_byte ;
};
#line 53 "include/linux/lockdep.h"
struct lock_class_key {
   struct lockdep_subclass_key subkeys[8U] ;
};
#line 59 "include/linux/lockdep.h"
struct lock_class {
   struct list_head hash_entry ;
   struct list_head lock_entry ;
   struct lockdep_subclass_key *key ;
   unsigned int subclass ;
   unsigned int dep_gen_id ;
   unsigned long usage_mask ;
   struct stack_trace usage_traces[13U] ;
   struct list_head locks_after ;
   struct list_head locks_before ;
   unsigned int version ;
   unsigned long ops ;
   char const   *name ;
   int name_version ;
   unsigned long contention_point[4U] ;
   unsigned long contending_point[4U] ;
};
#line 144 "include/linux/lockdep.h"
struct lockdep_map {
   struct lock_class_key *key ;
   struct lock_class *class_cache[2U] ;
   char const   *name ;
   int cpu ;
   unsigned long ip ;
};
#line 205 "include/linux/lockdep.h"
struct held_lock {
   u64 prev_chain_key ;
   unsigned long acquire_ip ;
   struct lockdep_map *instance ;
   struct lockdep_map *nest_lock ;
   u64 waittime_stamp ;
   u64 holdtime_stamp ;
   unsigned short class_idx : 13 ;
   unsigned char irq_context : 2 ;
   unsigned char trylock : 1 ;
   unsigned char read : 2 ;
   unsigned char check : 1 ;
   unsigned char hardirqs_off : 1 ;
   unsigned short references : 12 ;
   unsigned int pin_count ;
};
#line 546 "include/linux/lockdep.h"
struct raw_spinlock {
   arch_spinlock_t raw_lock ;
   unsigned int magic ;
   unsigned int owner_cpu ;
   void *owner ;
   struct lockdep_map dep_map ;
};
#line 32 "include/linux/spinlock_types.h"
typedef struct raw_spinlock raw_spinlock_t;
#line 33 "include/linux/spinlock_types.h"
struct __anonstruct____missing_field_name_35 {
   u8 __padding[24U] ;
   struct lockdep_map dep_map ;
};
#line 33 "include/linux/spinlock_types.h"
union __anonunion____missing_field_name_34 {
   struct raw_spinlock rlock ;
   struct __anonstruct____missing_field_name_35 __annonCompField17 ;
};
#line 33 "include/linux/spinlock_types.h"
struct spinlock {
   union __anonunion____missing_field_name_34 __annonCompField18 ;
};
#line 76 "include/linux/spinlock_types.h"
typedef struct spinlock spinlock_t;
#line 23 "include/linux/rwlock_types.h"
struct __anonstruct_rwlock_t_36 {
   arch_rwlock_t raw_lock ;
   unsigned int magic ;
   unsigned int owner_cpu ;
   void *owner ;
   struct lockdep_map dep_map ;
};
#line 23 "include/linux/rwlock_types.h"
typedef struct __anonstruct_rwlock_t_36 rwlock_t;
#line 426 "include/linux/spinlock.h"
struct seqcount {
   unsigned int sequence ;
   struct lockdep_map dep_map ;
};
#line 52 "include/linux/seqlock.h"
typedef struct seqcount seqcount_t;
#line 404 "include/linux/seqlock.h"
struct __anonstruct_seqlock_t_45 {
   struct seqcount seqcount ;
   spinlock_t lock ;
};
#line 404 "include/linux/seqlock.h"
typedef struct __anonstruct_seqlock_t_45 seqlock_t;
#line 598 "include/linux/seqlock.h"
struct timespec {
   __kernel_time_t tv_sec ;
   long tv_nsec ;
};
#line 83 "include/linux/highuid.h"
struct user_namespace;
#line 22 "include/linux/uidgid.h"
struct __anonstruct_kuid_t_46 {
   uid_t val ;
};
#line 22 "include/linux/uidgid.h"
typedef struct __anonstruct_kuid_t_46 kuid_t;
#line 27 "include/linux/uidgid.h"
struct __anonstruct_kgid_t_47 {
   gid_t val ;
};
#line 27 "include/linux/uidgid.h"
typedef struct __anonstruct_kgid_t_47 kgid_t;
#line 139 "include/linux/uidgid.h"
struct kstat {
   u64 ino ;
   dev_t dev ;
   umode_t mode ;
   unsigned int nlink ;
   kuid_t uid ;
   kgid_t gid ;
   dev_t rdev ;
   loff_t size ;
   struct timespec atime ;
   struct timespec mtime ;
   struct timespec ctime ;
   unsigned long blksize ;
   unsigned long long blocks ;
};
#line 36 "include/linux/stat.h"
struct vm_area_struct;
#line 12 "include/linux/wait.h"
struct __wait_queue;
#line 12 "include/linux/wait.h"
typedef struct __wait_queue wait_queue_t;
#line 15 "include/linux/wait.h"
struct __wait_queue {
   unsigned int flags ;
   void *private ;
   int (*func)(wait_queue_t * , unsigned int  , int  , void * ) ;
   struct list_head task_list ;
};
#line 38 "include/linux/wait.h"
struct __wait_queue_head {
   spinlock_t lock ;
   struct list_head task_list ;
};
#line 43 "include/linux/wait.h"
typedef struct __wait_queue_head wait_queue_head_t;
#line 95 "include/linux/nodemask.h"
struct __anonstruct_nodemask_t_48 {
   unsigned long bits[16U] ;
};
#line 95 "include/linux/nodemask.h"
typedef struct __anonstruct_nodemask_t_48 nodemask_t;
#line 13 "include/linux/osq_lock.h"
struct optimistic_spin_queue {
   atomic_t tail ;
};
#line 39 "include/linux/osq_lock.h"
struct mutex {
   atomic_t count ;
   spinlock_t wait_lock ;
   struct list_head wait_list ;
   struct task_struct *owner ;
   void *magic ;
   struct lockdep_map dep_map ;
};
#line 67 "include/linux/mutex.h"
struct mutex_waiter {
   struct list_head list ;
   struct task_struct *task ;
   void *magic ;
};
#line 177
struct rw_semaphore;
#line 178 "include/linux/mutex.h"
struct rw_semaphore {
   long count ;
   struct list_head wait_list ;
   raw_spinlock_t wait_lock ;
   struct optimistic_spin_queue osq ;
   struct task_struct *owner ;
   struct lockdep_map dep_map ;
};
#line 172 "include/linux/rwsem.h"
struct completion {
   unsigned int done ;
   wait_queue_head_t wait ;
};
#line 437 "include/linux/jiffies.h"
union ktime {
   s64 tv64 ;
};
#line 41 "include/linux/ktime.h"
typedef union ktime ktime_t;
#line 1121 "include/linux/rcupdate.h"
struct timer_list {
   struct hlist_node entry ;
   unsigned long expires ;
   void (*function)(unsigned long  ) ;
   unsigned long data ;
   u32 flags ;
   int slack ;
   int start_pid ;
   void *start_site ;
   char start_comm[16U] ;
   struct lockdep_map lockdep_map ;
};
#line 238 "include/linux/timer.h"
struct hrtimer;
#line 239
enum hrtimer_restart;
#line 240 "include/linux/timer.h"
struct rb_node {
   unsigned long __rb_parent_color ;
   struct rb_node *rb_right ;
   struct rb_node *rb_left ;
};
#line 41 "include/linux/rbtree.h"
struct rb_root {
   struct rb_node *rb_node ;
};
#line 838 "include/uapi/linux/sysctl.h"
struct nsproxy;
#line 259 "include/linux/timer.h"
struct workqueue_struct;
#line 260
struct work_struct;
#line 54 "include/linux/workqueue.h"
struct work_struct {
   atomic_long_t data ;
   struct list_head entry ;
   void (*func)(struct work_struct * ) ;
   struct lockdep_map lockdep_map ;
};
#line 107 "include/linux/workqueue.h"
struct delayed_work {
   struct work_struct work ;
   struct timer_list timer ;
   struct workqueue_struct *wq ;
   int cpu ;
};
#line 58 "include/linux/pm.h"
struct pm_message {
   int event ;
};
#line 64 "include/linux/pm.h"
typedef struct pm_message pm_message_t;
#line 65 "include/linux/pm.h"
struct dev_pm_ops {
   int (*prepare)(struct device * ) ;
   void (*complete)(struct device * ) ;
   int (*suspend)(struct device * ) ;
   int (*resume)(struct device * ) ;
   int (*freeze)(struct device * ) ;
   int (*thaw)(struct device * ) ;
   int (*poweroff)(struct device * ) ;
   int (*restore)(struct device * ) ;
   int (*suspend_late)(struct device * ) ;
   int (*resume_early)(struct device * ) ;
   int (*freeze_late)(struct device * ) ;
   int (*thaw_early)(struct device * ) ;
   int (*poweroff_late)(struct device * ) ;
   int (*restore_early)(struct device * ) ;
   int (*suspend_noirq)(struct device * ) ;
   int (*resume_noirq)(struct device * ) ;
   int (*freeze_noirq)(struct device * ) ;
   int (*thaw_noirq)(struct device * ) ;
   int (*poweroff_noirq)(struct device * ) ;
   int (*restore_noirq)(struct device * ) ;
   int (*runtime_suspend)(struct device * ) ;
   int (*runtime_resume)(struct device * ) ;
   int (*runtime_idle)(struct device * ) ;
};
#line 320
enum rpm_status {
    RPM_ACTIVE = 0,
    RPM_RESUMING = 1,
    RPM_SUSPENDED = 2,
    RPM_SUSPENDING = 3
} ;
#line 327
enum rpm_request {
    RPM_REQ_NONE = 0,
    RPM_REQ_IDLE = 1,
    RPM_REQ_SUSPEND = 2,
    RPM_REQ_AUTOSUSPEND = 3,
    RPM_REQ_RESUME = 4
} ;
#line 335
struct wakeup_source;
#line 336
struct wake_irq;
#line 338 "include/linux/pm.h"
struct pm_subsys_data {
   spinlock_t lock ;
   unsigned int refcount ;
   struct list_head clock_list ;
};
#line 553
struct dev_pm_qos;
#line 553 "include/linux/pm.h"
struct dev_pm_info {
   pm_message_t power_state ;
   unsigned char can_wakeup : 1 ;
   unsigned char async_suspend : 1 ;
   bool is_prepared ;
   bool is_suspended ;
   bool is_noirq_suspended ;
   bool is_late_suspended ;
   bool ignore_children ;
   bool early_init ;
   bool direct_complete ;
   spinlock_t lock ;
   struct list_head entry ;
   struct completion completion ;
   struct wakeup_source *wakeup ;
   bool wakeup_path ;
   bool syscore ;
   struct timer_list suspend_timer ;
   unsigned long timer_expires ;
   struct work_struct work ;
   wait_queue_head_t wait_queue ;
   struct wake_irq *wakeirq ;
   atomic_t usage_count ;
   atomic_t child_count ;
   unsigned char disable_depth : 3 ;
   unsigned char idle_notification : 1 ;
   unsigned char request_pending : 1 ;
   unsigned char deferred_resume : 1 ;
   unsigned char run_wake : 1 ;
   unsigned char runtime_auto : 1 ;
   unsigned char no_callbacks : 1 ;
   unsigned char irq_safe : 1 ;
   unsigned char use_autosuspend : 1 ;
   unsigned char timer_autosuspends : 1 ;
   unsigned char memalloc_noio : 1 ;
   enum rpm_request request ;
   enum rpm_status runtime_status ;
   int runtime_error ;
   int autosuspend_delay ;
   unsigned long last_busy ;
   unsigned long active_jiffies ;
   unsigned long suspended_jiffies ;
   unsigned long accounting_timestamp ;
   struct pm_subsys_data *subsys_data ;
   void (*set_latency_tolerance)(struct device * , s32  ) ;
   struct dev_pm_qos *qos ;
};
#line 615 "include/linux/pm.h"
struct dev_pm_domain {
   struct dev_pm_ops ops ;
   void (*detach)(struct device * , bool  ) ;
   int (*activate)(struct device * ) ;
   void (*sync)(struct device * ) ;
   void (*dismiss)(struct device * ) ;
};
#line 24 "./arch/x86/include/asm/mmu.h"
struct __anonstruct_mm_context_t_115 {
   void *ldt ;
   int size ;
   unsigned short ia32_compat ;
   struct mutex lock ;
   void *vdso ;
   atomic_t perf_rdpmc_allowed ;
};
#line 24 "./arch/x86/include/asm/mmu.h"
typedef struct __anonstruct_mm_context_t_115 mm_context_t;
#line 1281 "include/linux/mmzone.h"
struct llist_node;
#line 64 "include/linux/llist.h"
struct llist_node {
   struct llist_node *next ;
};
#line 37 "include/linux/kmod.h"
struct cred;
#line 19 "./arch/x86/include/asm/elf.h"
struct inode;
#line 58 "./arch/x86/include/asm/uprobes.h"
struct arch_uprobe_task {
   unsigned long saved_scratch_register ;
   unsigned int saved_trap_nr ;
   unsigned int saved_tf ;
};
#line 66
enum uprobe_task_state {
    UTASK_RUNNING = 0,
    UTASK_SSTEP = 1,
    UTASK_SSTEP_ACK = 2,
    UTASK_SSTEP_TRAPPED = 3
} ;
#line 73 "./arch/x86/include/asm/uprobes.h"
struct __anonstruct____missing_field_name_148 {
   struct arch_uprobe_task autask ;
   unsigned long vaddr ;
};
#line 73 "./arch/x86/include/asm/uprobes.h"
struct __anonstruct____missing_field_name_149 {
   struct callback_head dup_xol_work ;
   unsigned long dup_xol_addr ;
};
#line 73 "./arch/x86/include/asm/uprobes.h"
union __anonunion____missing_field_name_147 {
   struct __anonstruct____missing_field_name_148 __annonCompField33 ;
   struct __anonstruct____missing_field_name_149 __annonCompField34 ;
};
#line 73
struct uprobe;
#line 73
struct return_instance;
#line 73 "./arch/x86/include/asm/uprobes.h"
struct uprobe_task {
   enum uprobe_task_state state ;
   union __anonunion____missing_field_name_147 __annonCompField35 ;
   struct uprobe *active_uprobe ;
   unsigned long xol_vaddr ;
   struct return_instance *return_instances ;
   unsigned int depth ;
};
#line 94 "include/linux/uprobes.h"
struct xol_area;
#line 95 "include/linux/uprobes.h"
struct uprobes_state {
   struct xol_area *xol_area ;
};
#line 133
struct address_space;
#line 134
struct mem_cgroup;
#line 31 "include/linux/mm_types.h"
typedef void compound_page_dtor(struct page * );
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_150 {
   struct address_space *mapping ;
   void *s_mem ;
};
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_152 {
   unsigned long index ;
   void *freelist ;
   bool pfmemalloc ;
};
#line 32 "include/linux/mm_types.h"
struct __anonstruct____missing_field_name_156 {
   unsigned short inuse ;
   unsigned short objects : 15 ;
   unsigned char frozen : 1 ;
};
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_155 {
   atomic_t _mapcount ;
   struct __anonstruct____missing_field_name_156 __annonCompField38 ;
   int units ;
};
#line 32 "include/linux/mm_types.h"
struct __anonstruct____missing_field_name_154 {
   union __anonunion____missing_field_name_155 __annonCompField39 ;
   atomic_t _count ;
};
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_153 {
   unsigned long counters ;
   struct __anonstruct____missing_field_name_154 __annonCompField40 ;
   unsigned int active ;
};
#line 32 "include/linux/mm_types.h"
struct __anonstruct____missing_field_name_151 {
   union __anonunion____missing_field_name_152 __annonCompField37 ;
   union __anonunion____missing_field_name_153 __annonCompField41 ;
};
#line 32 "include/linux/mm_types.h"
struct __anonstruct____missing_field_name_158 {
   struct page *next ;
   int pages ;
   int pobjects ;
};
#line 32
struct slab;
#line 32 "include/linux/mm_types.h"
struct __anonstruct____missing_field_name_159 {
   compound_page_dtor *compound_dtor ;
   unsigned long compound_order ;
};
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_157 {
   struct list_head lru ;
   struct __anonstruct____missing_field_name_158 __annonCompField43 ;
   struct slab *slab_page ;
   struct callback_head callback_head ;
   struct __anonstruct____missing_field_name_159 __annonCompField44 ;
   pgtable_t pmd_huge_pte ;
};
#line 32
struct kmem_cache;
#line 32 "include/linux/mm_types.h"
union __anonunion____missing_field_name_160 {
   unsigned long private ;
   spinlock_t *ptl ;
   struct kmem_cache *slab_cache ;
   struct page *first_page ;
};
#line 32 "include/linux/mm_types.h"
struct page {
   unsigned long flags ;
   union __anonunion____missing_field_name_150 __annonCompField36 ;
   struct __anonstruct____missing_field_name_151 __annonCompField42 ;
   union __anonunion____missing_field_name_157 __annonCompField45 ;
   union __anonunion____missing_field_name_160 __annonCompField46 ;
   struct mem_cgroup *mem_cgroup ;
};
#line 181 "include/linux/mm_types.h"
struct page_frag {
   struct page *page ;
   __u32 offset ;
   __u32 size ;
};
#line 266 "include/linux/mm_types.h"
struct __anonstruct_shared_161 {
   struct rb_node rb ;
   unsigned long rb_subtree_last ;
};
#line 266
struct anon_vma;
#line 266
struct vm_operations_struct;
#line 266
struct mempolicy;
#line 266 "include/linux/mm_types.h"
struct vm_area_struct {
   unsigned long vm_start ;
   unsigned long vm_end ;
   struct vm_area_struct *vm_next ;
   struct vm_area_struct *vm_prev ;
   struct rb_node vm_rb ;
   unsigned long rb_subtree_gap ;
   struct mm_struct *vm_mm ;
   pgprot_t vm_page_prot ;
   unsigned long vm_flags ;
   struct __anonstruct_shared_161 shared ;
   struct list_head anon_vma_chain ;
   struct anon_vma *anon_vma ;
   struct vm_operations_struct  const  *vm_ops ;
   unsigned long vm_pgoff ;
   struct file *vm_file ;
   void *vm_private_data ;
   struct mempolicy *vm_policy ;
};
#line 334 "include/linux/mm_types.h"
struct core_thread {
   struct task_struct *task ;
   struct core_thread *next ;
};
#line 340 "include/linux/mm_types.h"
struct core_state {
   atomic_t nr_threads ;
   struct core_thread dumper ;
   struct completion startup ;
};
#line 353 "include/linux/mm_types.h"
struct task_rss_stat {
   int events ;
   int count[3U] ;
};
#line 361 "include/linux/mm_types.h"
struct mm_rss_stat {
   atomic_long_t count[3U] ;
};
#line 366
struct kioctx_table;
#line 367
struct linux_binfmt;
#line 367
struct mmu_notifier_mm;
#line 367 "include/linux/mm_types.h"
struct mm_struct {
   struct vm_area_struct *mmap ;
   struct rb_root mm_rb ;
   u32 vmacache_seqnum ;
   unsigned long (*get_unmapped_area)(struct file * , unsigned long  , unsigned long  ,
                                      unsigned long  , unsigned long  ) ;
   unsigned long mmap_base ;
   unsigned long mmap_legacy_base ;
   unsigned long task_size ;
   unsigned long highest_vm_end ;
   pgd_t *pgd ;
   atomic_t mm_users ;
   atomic_t mm_count ;
   atomic_long_t nr_ptes ;
   atomic_long_t nr_pmds ;
   int map_count ;
   spinlock_t page_table_lock ;
   struct rw_semaphore mmap_sem ;
   struct list_head mmlist ;
   unsigned long hiwater_rss ;
   unsigned long hiwater_vm ;
   unsigned long total_vm ;
   unsigned long locked_vm ;
   unsigned long pinned_vm ;
   unsigned long shared_vm ;
   unsigned long exec_vm ;
   unsigned long stack_vm ;
   unsigned long def_flags ;
   unsigned long start_code ;
   unsigned long end_code ;
   unsigned long start_data ;
   unsigned long end_data ;
   unsigned long start_brk ;
   unsigned long brk ;
   unsigned long start_stack ;
   unsigned long arg_start ;
   unsigned long arg_end ;
   unsigned long env_start ;
   unsigned long env_end ;
   unsigned long saved_auxv[46U] ;
   struct mm_rss_stat rss_stat ;
   struct linux_binfmt *binfmt ;
   cpumask_var_t cpu_vm_mask_var ;
   mm_context_t context ;
   unsigned long flags ;
   struct core_state *core_state ;
   spinlock_t ioctx_lock ;
   struct kioctx_table *ioctx_table ;
   struct task_struct *owner ;
   struct file *exe_file ;
   struct mmu_notifier_mm *mmu_notifier_mm ;
   struct cpumask cpumask_allocation ;
   unsigned long numa_next_scan ;
   unsigned long numa_scan_offset ;
   int numa_scan_seq ;
   bool tlb_flush_pending ;
   struct uprobes_state uprobes_state ;
   void *bd_addr ;
};
#line 15 "include/uapi/linux/elf.h"
typedef __u64 Elf64_Addr;
#line 16 "include/uapi/linux/elf.h"
typedef __u16 Elf64_Half;
#line 20 "include/uapi/linux/elf.h"
typedef __u32 Elf64_Word;
#line 21 "include/uapi/linux/elf.h"
typedef __u64 Elf64_Xword;
#line 190 "include/uapi/linux/elf.h"
struct elf64_sym {
   Elf64_Word st_name ;
   unsigned char st_info ;
   unsigned char st_other ;
   Elf64_Half st_shndx ;
   Elf64_Addr st_value ;
   Elf64_Xword st_size ;
};
#line 198 "include/uapi/linux/elf.h"
typedef struct elf64_sym Elf64_Sym;
#line 53 "include/linux/elf.h"
union __anonunion____missing_field_name_166 {
   unsigned long bitmap[4U] ;
   struct callback_head callback_head ;
};
#line 53 "include/linux/elf.h"
struct idr_layer {
   int prefix ;
   int layer ;
   struct idr_layer *ary[256U] ;
   int count ;
   union __anonunion____missing_field_name_166 __annonCompField47 ;
};
#line 41 "include/linux/idr.h"
struct idr {
   struct idr_layer *hint ;
   struct idr_layer *top ;
   int layers ;
   int cur ;
   spinlock_t lock ;
   int id_free_cnt ;
   struct idr_layer *id_free ;
};
#line 124 "include/linux/idr.h"
struct ida_bitmap {
   long nr_busy ;
   unsigned long bitmap[15U] ;
};
#line 153 "include/linux/idr.h"
struct ida {
   struct idr idr ;
   struct ida_bitmap *free_bitmap ;
};
#line 185
struct dentry;
#line 186
struct iattr;
#line 187
struct super_block;
#line 188
struct file_system_type;
#line 189
struct kernfs_open_node;
#line 190
struct kernfs_iattrs;
#line 213
struct kernfs_root;
#line 213 "include/linux/idr.h"
struct kernfs_elem_dir {
   unsigned long subdirs ;
   struct rb_root children ;
   struct kernfs_root *root ;
};
#line 85 "include/linux/kernfs.h"
struct kernfs_node;
#line 85 "include/linux/kernfs.h"
struct kernfs_elem_symlink {
   struct kernfs_node *target_kn ;
};
#line 89
struct kernfs_ops;
#line 89 "include/linux/kernfs.h"
struct kernfs_elem_attr {
   struct kernfs_ops  const  *ops ;
   struct kernfs_open_node *open ;
   loff_t size ;
   struct kernfs_node *notify_next ;
};
#line 96 "include/linux/kernfs.h"
union __anonunion____missing_field_name_171 {
   struct kernfs_elem_dir dir ;
   struct kernfs_elem_symlink symlink ;
   struct kernfs_elem_attr attr ;
};
#line 96 "include/linux/kernfs.h"
struct kernfs_node {
   atomic_t count ;
   atomic_t active ;
   struct lockdep_map dep_map ;
   struct kernfs_node *parent ;
   char const   *name ;
   struct rb_node rb ;
   void const   *ns ;
   unsigned int hash ;
   union __anonunion____missing_field_name_171 __annonCompField48 ;
   void *priv ;
   unsigned short flags ;
   umode_t mode ;
   unsigned int ino ;
   struct kernfs_iattrs *iattr ;
};
#line 138 "include/linux/kernfs.h"
struct kernfs_syscall_ops {
   int (*remount_fs)(struct kernfs_root * , int * , char * ) ;
   int (*show_options)(struct seq_file * , struct kernfs_root * ) ;
   int (*mkdir)(struct kernfs_node * , char const   * , umode_t  ) ;
   int (*rmdir)(struct kernfs_node * ) ;
   int (*rename)(struct kernfs_node * , struct kernfs_node * , char const   * ) ;
};
#line 155 "include/linux/kernfs.h"
struct kernfs_root {
   struct kernfs_node *kn ;
   unsigned int flags ;
   struct ida ino_ida ;
   struct kernfs_syscall_ops *syscall_ops ;
   struct list_head supers ;
   wait_queue_head_t deactivate_waitq ;
};
#line 171 "include/linux/kernfs.h"
struct kernfs_open_file {
   struct kernfs_node *kn ;
   struct file *file ;
   void *priv ;
   struct mutex mutex ;
   int event ;
   struct list_head list ;
   char *prealloc_buf ;
   size_t atomic_write_len ;
   bool mmapped ;
   struct vm_operations_struct  const  *vm_ops ;
};
#line 188 "include/linux/kernfs.h"
struct kernfs_ops {
   int (*seq_show)(struct seq_file * , void * ) ;
   void *(*seq_start)(struct seq_file * , loff_t * ) ;
   void *(*seq_next)(struct seq_file * , void * , loff_t * ) ;
   void (*seq_stop)(struct seq_file * , void * ) ;
   ssize_t (*read)(struct kernfs_open_file * , char * , size_t  , loff_t  ) ;
   size_t atomic_write_len ;
   bool prealloc ;
   ssize_t (*write)(struct kernfs_open_file * , char * , size_t  , loff_t  ) ;
   int (*mmap)(struct kernfs_open_file * , struct vm_area_struct * ) ;
   struct lock_class_key lockdep_key ;
};
#line 477
struct sock;
#line 478
struct kobject;
#line 479
enum kobj_ns_type {
    KOBJ_NS_TYPE_NONE = 0,
    KOBJ_NS_TYPE_NET = 1,
    KOBJ_NS_TYPES = 2
} ;
#line 485 "include/linux/kernfs.h"
struct kobj_ns_type_operations {
   enum kobj_ns_type type ;
   bool (*current_may_mount)(void) ;
   void *(*grab_current_ns)(void) ;
   void const   *(*netlink_ns)(struct sock * ) ;
   void const   *(*initial_ns)(void) ;
   void (*drop_ns)(void * ) ;
};
#line 59 "include/linux/kobject_ns.h"
struct bin_attribute;
#line 60 "include/linux/kobject_ns.h"
struct attribute {
   char const   *name ;
   umode_t mode ;
   bool ignore_lockdep ;
   struct lock_class_key *key ;
   struct lock_class_key skey ;
};
#line 37 "include/linux/sysfs.h"
struct attribute_group {
   char const   *name ;
   umode_t (*is_visible)(struct kobject * , struct attribute * , int  ) ;
   struct attribute **attrs ;
   struct bin_attribute **bin_attrs ;
};
#line 82 "include/linux/sysfs.h"
struct bin_attribute {
   struct attribute attr ;
   size_t size ;
   void *private ;
   ssize_t (*read)(struct file * , struct kobject * , struct bin_attribute * , char * ,
                   loff_t  , size_t  ) ;
   ssize_t (*write)(struct file * , struct kobject * , struct bin_attribute * , char * ,
                    loff_t  , size_t  ) ;
   int (*mmap)(struct file * , struct kobject * , struct bin_attribute * , struct vm_area_struct * ) ;
};
#line 155 "include/linux/sysfs.h"
struct sysfs_ops {
   ssize_t (*show)(struct kobject * , struct attribute * , char * ) ;
   ssize_t (*store)(struct kobject * , struct attribute * , char const   * , size_t  ) ;
};
#line 509 "include/linux/sysfs.h"
struct kref {
   atomic_t refcount ;
};
#line 52 "include/linux/kobject.h"
struct kset;
#line 52
struct kobj_type;
#line 52 "include/linux/kobject.h"
struct kobject {
   char const   *name ;
   struct list_head entry ;
   struct kobject *parent ;
   struct kset *kset ;
   struct kobj_type *ktype ;
   struct kernfs_node *sd ;
   struct kref kref ;
   struct delayed_work release ;
   unsigned char state_initialized : 1 ;
   unsigned char state_in_sysfs : 1 ;
   unsigned char state_add_uevent_sent : 1 ;
   unsigned char state_remove_uevent_sent : 1 ;
   unsigned char uevent_suppress : 1 ;
};
#line 114 "include/linux/kobject.h"
struct kobj_type {
   void (*release)(struct kobject * ) ;
   struct sysfs_ops  const  *sysfs_ops ;
   struct attribute **default_attrs ;
   struct kobj_ns_type_operations  const  *(*child_ns_type)(struct kobject * ) ;
   void const   *(*namespace)(struct kobject * ) ;
};
#line 122 "include/linux/kobject.h"
struct kobj_uevent_env {
   char *argv[3U] ;
   char *envp[32U] ;
   int envp_idx ;
   char buf[2048U] ;
   int buflen ;
};
#line 130 "include/linux/kobject.h"
struct kset_uevent_ops {
   int (* const  filter)(struct kset * , struct kobject * ) ;
   char const   *(* const  name)(struct kset * , struct kobject * ) ;
   int (* const  uevent)(struct kset * , struct kobject * , struct kobj_uevent_env * ) ;
};
#line 147 "include/linux/kobject.h"
struct kset {
   struct list_head list ;
   spinlock_t list_lock ;
   struct kobject kobj ;
   struct kset_uevent_ops  const  *uevent_ops ;
};
#line 222
struct kernel_param;
#line 227 "include/linux/kobject.h"
struct kernel_param_ops {
   unsigned int flags ;
   int (*set)(char const   * , struct kernel_param  const  * ) ;
   int (*get)(char * , struct kernel_param  const  * ) ;
   void (*free)(void * ) ;
};
#line 62 "include/linux/moduleparam.h"
struct kparam_string;
#line 62
struct kparam_array;
#line 62 "include/linux/moduleparam.h"
union __anonunion____missing_field_name_172 {
   void *arg ;
   struct kparam_string  const  *str ;
   struct kparam_array  const  *arr ;
};
#line 62 "include/linux/moduleparam.h"
struct kernel_param {
   char const   *name ;
   struct module *mod ;
   struct kernel_param_ops  const  *ops ;
   u16 const   perm ;
   s8 level ;
   u8 flags ;
   union __anonunion____missing_field_name_172 __annonCompField49 ;
};
#line 83 "include/linux/moduleparam.h"
struct kparam_string {
   unsigned int maxlen ;
   char *string ;
};
#line 89 "include/linux/moduleparam.h"
struct kparam_array {
   unsigned int max ;
   unsigned int elemsize ;
   unsigned int *num ;
   struct kernel_param_ops  const  *ops ;
   void *elem ;
};
#line 469 "include/linux/moduleparam.h"
struct latch_tree_node {
   struct rb_node node[2U] ;
};
#line 211 "include/linux/rbtree_latch.h"
struct mod_arch_specific {

};
#line 37 "include/linux/module.h"
struct module_param_attrs;
#line 37 "include/linux/module.h"
struct module_kobject {
   struct kobject kobj ;
   struct module *mod ;
   struct kobject *drivers_dir ;
   struct module_param_attrs *mp ;
   struct completion *kobj_completion ;
};
#line 47 "include/linux/module.h"
struct module_attribute {
   struct attribute attr ;
   ssize_t (*show)(struct module_attribute * , struct module_kobject * , char * ) ;
   ssize_t (*store)(struct module_attribute * , struct module_kobject * , char const   * ,
                    size_t  ) ;
   void (*setup)(struct module * , char const   * ) ;
   int (*test)(struct module * ) ;
   void (*free)(struct module * ) ;
};
#line 73
struct exception_table_entry;
#line 206
enum module_state {
    MODULE_STATE_LIVE = 0,
    MODULE_STATE_COMING = 1,
    MODULE_STATE_GOING = 2,
    MODULE_STATE_UNFORMED = 3
} ;
#line 213 "include/linux/module.h"
struct mod_tree_node {
   struct module *mod ;
   struct latch_tree_node node ;
};
#line 220
struct module_sect_attrs;
#line 220
struct module_notes_attrs;
#line 220
struct tracepoint;
#line 220
struct trace_event_call;
#line 220
struct trace_enum_map;
#line 220 "include/linux/module.h"
struct module {
   enum module_state state ;
   struct list_head list ;
   char name[56U] ;
   struct module_kobject mkobj ;
   struct module_attribute *modinfo_attrs ;
   char const   *version ;
   char const   *srcversion ;
   struct kobject *holders_dir ;
   struct kernel_symbol  const  *syms ;
   unsigned long const   *crcs ;
   unsigned int num_syms ;
   struct mutex param_lock ;
   struct kernel_param *kp ;
   unsigned int num_kp ;
   unsigned int num_gpl_syms ;
   struct kernel_symbol  const  *gpl_syms ;
   unsigned long const   *gpl_crcs ;
   struct kernel_symbol  const  *unused_syms ;
   unsigned long const   *unused_crcs ;
   unsigned int num_unused_syms ;
   unsigned int num_unused_gpl_syms ;
   struct kernel_symbol  const  *unused_gpl_syms ;
   unsigned long const   *unused_gpl_crcs ;
   bool sig_ok ;
   bool async_probe_requested ;
   struct kernel_symbol  const  *gpl_future_syms ;
   unsigned long const   *gpl_future_crcs ;
   unsigned int num_gpl_future_syms ;
   unsigned int num_exentries ;
   struct exception_table_entry *extable ;
   int (*init)(void) ;
   void *module_init ;
   void *module_core ;
   unsigned int init_size ;
   unsigned int core_size ;
   unsigned int init_text_size ;
   unsigned int core_text_size ;
   struct mod_tree_node mtn_core ;
   struct mod_tree_node mtn_init ;
   unsigned int init_ro_size ;
   unsigned int core_ro_size ;
   struct mod_arch_specific arch ;
   unsigned int taints ;
   unsigned int num_bugs ;
   struct list_head bug_list ;
   struct bug_entry *bug_table ;
   Elf64_Sym *symtab ;
   Elf64_Sym *core_symtab ;
   unsigned int num_symtab ;
   unsigned int core_num_syms ;
   char *strtab ;
   char *core_strtab ;
   struct module_sect_attrs *sect_attrs ;
   struct module_notes_attrs *notes_attrs ;
   char *args ;
   void *percpu ;
   unsigned int percpu_size ;
   unsigned int num_tracepoints ;
   struct tracepoint * const  *tracepoints_ptrs ;
   unsigned int num_trace_bprintk_fmt ;
   char const   **trace_bprintk_fmt_start ;
   struct trace_event_call **trace_events ;
   unsigned int num_trace_events ;
   struct trace_enum_map **trace_enums ;
   unsigned int num_trace_enums ;
   unsigned int num_ftrace_callsites ;
   unsigned long *ftrace_callsites ;
   bool klp_alive ;
   struct list_head source_list ;
   struct list_head target_list ;
   void (*exit)(void) ;
   atomic_t refcnt ;
   ctor_fn_t (**ctors)(void) ;
   unsigned int num_ctors ;
};
#line 22 "include/linux/capability.h"
struct kernel_cap_struct {
   __u32 cap[2U] ;
};
#line 25 "include/linux/capability.h"
typedef struct kernel_cap_struct kernel_cap_t;
#line 84 "include/linux/plist.h"
struct plist_node {
   int prio ;
   struct list_head prio_list ;
   struct list_head node_list ;
};
#line 4 "include/asm-generic/cputime_jiffies.h"
typedef unsigned long cputime_t;
#line 25 "include/linux/sem.h"
struct sem_undo_list;
#line 25 "include/linux/sem.h"
struct sysv_sem {
   struct sem_undo_list *undo_list ;
};
#line 78 "include/uapi/linux/shm.h"
struct user_struct;
#line 26 "include/linux/shm.h"
struct sysv_shm {
   struct list_head shm_clist ;
};
#line 24 "./arch/x86/include/asm/signal.h"
struct __anonstruct_sigset_t_180 {
   unsigned long sig[1U] ;
};
#line 24 "./arch/x86/include/asm/signal.h"
typedef struct __anonstruct_sigset_t_180 sigset_t;
#line 25
struct siginfo;
#line 17 "./include/uapi/asm-generic/signal-defs.h"
typedef void __signalfn_t(int  );
#line 18 "./include/uapi/asm-generic/signal-defs.h"
typedef __signalfn_t *__sighandler_t;
#line 20 "./include/uapi/asm-generic/signal-defs.h"
typedef void __restorefn_t(void);
#line 21 "./include/uapi/asm-generic/signal-defs.h"
typedef __restorefn_t *__sigrestore_t;
#line 34 "./arch/x86/include/asm/signal.h"
union sigval {
   int sival_int ;
   void *sival_ptr ;
};
#line 10 "include/uapi/asm-generic/siginfo.h"
typedef union sigval sigval_t;
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__kill_182 {
   __kernel_pid_t _pid ;
   __kernel_uid32_t _uid ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__timer_183 {
   __kernel_timer_t _tid ;
   int _overrun ;
   char _pad[0U] ;
   sigval_t _sigval ;
   int _sys_private ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__rt_184 {
   __kernel_pid_t _pid ;
   __kernel_uid32_t _uid ;
   sigval_t _sigval ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__sigchld_185 {
   __kernel_pid_t _pid ;
   __kernel_uid32_t _uid ;
   int _status ;
   __kernel_clock_t _utime ;
   __kernel_clock_t _stime ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__addr_bnd_187 {
   void *_lower ;
   void *_upper ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__sigfault_186 {
   void *_addr ;
   short _addr_lsb ;
   struct __anonstruct__addr_bnd_187 _addr_bnd ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__sigpoll_188 {
   long _band ;
   int _fd ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct __anonstruct__sigsys_189 {
   void *_call_addr ;
   int _syscall ;
   unsigned int _arch ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
union __anonunion__sifields_181 {
   int _pad[28U] ;
   struct __anonstruct__kill_182 _kill ;
   struct __anonstruct__timer_183 _timer ;
   struct __anonstruct__rt_184 _rt ;
   struct __anonstruct__sigchld_185 _sigchld ;
   struct __anonstruct__sigfault_186 _sigfault ;
   struct __anonstruct__sigpoll_188 _sigpoll ;
   struct __anonstruct__sigsys_189 _sigsys ;
};
#line 11 "include/uapi/asm-generic/siginfo.h"
struct siginfo {
   int si_signo ;
   int si_errno ;
   int si_code ;
   union __anonunion__sifields_181 _sifields ;
};
#line 113 "include/uapi/asm-generic/siginfo.h"
typedef struct siginfo siginfo_t;
#line 22 "include/linux/signal.h"
struct sigpending {
   struct list_head list ;
   sigset_t signal ;
};
#line 243 "include/linux/signal.h"
struct sigaction {
   __sighandler_t sa_handler ;
   unsigned long sa_flags ;
   __sigrestore_t sa_restorer ;
   sigset_t sa_mask ;
};
#line 257 "include/linux/signal.h"
struct k_sigaction {
   struct sigaction sa ;
};
#line 443
enum pid_type {
    PIDTYPE_PID = 0,
    PIDTYPE_PGID = 1,
    PIDTYPE_SID = 2,
    PIDTYPE_MAX = 3
} ;
#line 450
struct pid_namespace;
#line 450 "include/linux/signal.h"
struct upid {
   int nr ;
   struct pid_namespace *ns ;
   struct hlist_node pid_chain ;
};
#line 56 "include/linux/pid.h"
struct pid {
   atomic_t count ;
   unsigned int level ;
   struct hlist_head tasks[3U] ;
   struct callback_head rcu ;
   struct upid numbers[1U] ;
};
#line 68 "include/linux/pid.h"
struct pid_link {
   struct hlist_node node ;
   struct pid *pid ;
};
#line 174 "include/linux/pid.h"
struct percpu_counter {
   raw_spinlock_t lock ;
   s64 count ;
   struct list_head list ;
   s32 *counters ;
};
#line 53 "include/uapi/linux/seccomp.h"
struct seccomp_filter;
#line 54 "include/uapi/linux/seccomp.h"
struct seccomp {
   int mode ;
   struct seccomp_filter *filter ;
};
#line 40 "include/linux/rtmutex.h"
struct rt_mutex_waiter;
#line 41 "include/uapi/linux/resource.h"
struct rlimit {
   __kernel_ulong_t rlim_cur ;
   __kernel_ulong_t rlim_max ;
};
#line 11 "include/linux/resource.h"
struct timerqueue_node {
   struct rb_node node ;
   ktime_t expires ;
};
#line 12 "include/linux/timerqueue.h"
struct timerqueue_head {
   struct rb_root head ;
   struct timerqueue_node *next ;
};
#line 50
struct hrtimer_clock_base;
#line 51
struct hrtimer_cpu_base;
#line 60
enum hrtimer_restart {
    HRTIMER_NORESTART = 0,
    HRTIMER_RESTART = 1
} ;
#line 65 "include/linux/timerqueue.h"
struct hrtimer {
   struct timerqueue_node node ;
   ktime_t _softexpires ;
   enum hrtimer_restart (*function)(struct hrtimer * ) ;
   struct hrtimer_clock_base *base ;
   unsigned long state ;
   int start_pid ;
   void *start_site ;
   char start_comm[16U] ;
};
#line 123 "include/linux/hrtimer.h"
struct hrtimer_clock_base {
   struct hrtimer_cpu_base *cpu_base ;
   int index ;
   clockid_t clockid ;
   struct timerqueue_head active ;
   ktime_t (*get_time)(void) ;
   ktime_t offset ;
};
#line 156 "include/linux/hrtimer.h"
struct hrtimer_cpu_base {
   raw_spinlock_t lock ;
   seqcount_t seq ;
   struct hrtimer *running ;
   unsigned int cpu ;
   unsigned int active_bases ;
   unsigned int clock_was_set_seq ;
   bool migration_enabled ;
   bool nohz_active ;
   unsigned char in_hrtirq : 1 ;
   unsigned char hres_active : 1 ;
   unsigned char hang_detected : 1 ;
   ktime_t expires_next ;
   struct hrtimer *next_timer ;
   unsigned int nr_events ;
   unsigned int nr_retries ;
   unsigned int nr_hangs ;
   unsigned int max_hang_time ;
   struct hrtimer_clock_base clock_base[4U] ;
};
#line 466 "include/linux/hrtimer.h"
struct task_io_accounting {
   u64 rchar ;
   u64 wchar ;
   u64 syscr ;
   u64 syscw ;
   u64 read_bytes ;
   u64 write_bytes ;
   u64 cancelled_write_bytes ;
};
#line 45 "include/linux/task_io_accounting.h"
struct latency_record {
   unsigned long backtrace[12U] ;
   unsigned int count ;
   unsigned long time ;
   unsigned long max ;
};
#line 39 "include/linux/latencytop.h"
struct assoc_array_ptr;
#line 39 "include/linux/latencytop.h"
struct assoc_array {
   struct assoc_array_ptr *root ;
   unsigned long nr_leaves_on_tree ;
};
#line 31 "include/linux/key.h"
typedef int32_t key_serial_t;
#line 34 "include/linux/key.h"
typedef uint32_t key_perm_t;
#line 35
struct key;
#line 36
struct signal_struct;
#line 37
struct key_type;
#line 41 "include/linux/key.h"
struct keyring_index_key {
   struct key_type *type ;
   char const   *description ;
   size_t desc_len ;
};
#line 123 "include/linux/key.h"
union __anonunion____missing_field_name_196 {
   struct list_head graveyard_link ;
   struct rb_node serial_node ;
};
#line 123
struct key_user;
#line 123 "include/linux/key.h"
union __anonunion____missing_field_name_197 {
   time_t expiry ;
   time_t revoked_at ;
};
#line 123 "include/linux/key.h"
struct __anonstruct____missing_field_name_199 {
   struct key_type *type ;
   char *description ;
};
#line 123 "include/linux/key.h"
union __anonunion____missing_field_name_198 {
   struct keyring_index_key index_key ;
   struct __anonstruct____missing_field_name_199 __annonCompField52 ;
};
#line 123 "include/linux/key.h"
union __anonunion_type_data_200 {
   struct list_head link ;
   unsigned long x[2U] ;
   void *p[2U] ;
   int reject_error ;
};
#line 123 "include/linux/key.h"
union __anonunion_payload_202 {
   unsigned long value ;
   void *rcudata ;
   void *data ;
   void *data2[2U] ;
};
#line 123 "include/linux/key.h"
union __anonunion____missing_field_name_201 {
   union __anonunion_payload_202 payload ;
   struct assoc_array keys ;
};
#line 123 "include/linux/key.h"
struct key {
   atomic_t usage ;
   key_serial_t serial ;
   union __anonunion____missing_field_name_196 __annonCompField50 ;
   struct rw_semaphore sem ;
   struct key_user *user ;
   void *security ;
   union __anonunion____missing_field_name_197 __annonCompField51 ;
   time_t last_used_at ;
   kuid_t uid ;
   kgid_t gid ;
   key_perm_t perm ;
   unsigned short quotalen ;
   unsigned short datalen ;
   unsigned long flags ;
   union __anonunion____missing_field_name_198 __annonCompField53 ;
   union __anonunion_type_data_200 type_data ;
   union __anonunion____missing_field_name_201 __annonCompField54 ;
};
#line 358
struct audit_context;
#line 27 "include/linux/selinux.h"
struct group_info {
   atomic_t usage ;
   int ngroups ;
   int nblocks ;
   kgid_t small_block[32U] ;
   kgid_t *blocks[0U] ;
};
#line 90 "include/linux/cred.h"
struct cred {
   atomic_t usage ;
   atomic_t subscribers ;
   void *put_addr ;
   unsigned int magic ;
   kuid_t uid ;
   kgid_t gid ;
   kuid_t suid ;
   kgid_t sgid ;
   kuid_t euid ;
   kgid_t egid ;
   kuid_t fsuid ;
   kgid_t fsgid ;
   unsigned int securebits ;
   kernel_cap_t cap_inheritable ;
   kernel_cap_t cap_permitted ;
   kernel_cap_t cap_effective ;
   kernel_cap_t cap_bset ;
   unsigned char jit_keyring ;
   struct key *session_keyring ;
   struct key *process_keyring ;
   struct key *thread_keyring ;
   struct key *request_key_auth ;
   void *security ;
   struct user_struct *user ;
   struct user_namespace *user_ns ;
   struct group_info *group_info ;
   struct callback_head rcu ;
};
#line 369
struct percpu_ref;
#line 55 "include/linux/percpu-refcount.h"
typedef void percpu_ref_func_t(struct percpu_ref * );
#line 68 "include/linux/percpu-refcount.h"
struct percpu_ref {
   atomic_long_t count ;
   unsigned long percpu_count_ptr ;
   percpu_ref_func_t *release ;
   percpu_ref_func_t *confirm_switch ;
   bool force_atomic ;
   struct callback_head rcu ;
};
#line 27 "include/linux/percpu-rwsem.h"
struct cgroup;
#line 28
struct cgroup_root;
#line 29
struct cgroup_subsys;
#line 30
struct cgroup_taskset;
#line 72 "include/linux/percpu-rwsem.h"
struct cgroup_subsys_state {
   struct cgroup *cgroup ;
   struct cgroup_subsys *ss ;
   struct percpu_ref refcnt ;
   struct cgroup_subsys_state *parent ;
   struct list_head sibling ;
   struct list_head children ;
   int id ;
   unsigned int flags ;
   u64 serial_nr ;
   struct callback_head callback_head ;
   struct work_struct destroy_work ;
};
#line 124 "include/linux/cgroup-defs.h"
struct css_set {
   atomic_t refcount ;
   struct hlist_node hlist ;
   struct list_head tasks ;
   struct list_head mg_tasks ;
   struct list_head cgrp_links ;
   struct cgroup *dfl_cgrp ;
   struct cgroup_subsys_state *subsys[12U] ;
   struct list_head mg_preload_node ;
   struct list_head mg_node ;
   struct cgroup *mg_src_cgrp ;
   struct css_set *mg_dst_cset ;
   struct list_head e_cset_node[12U] ;
   struct callback_head callback_head ;
};
#line 197 "include/linux/cgroup-defs.h"
struct cgroup {
   struct cgroup_subsys_state self ;
   unsigned long flags ;
   int id ;
   int populated_cnt ;
   struct kernfs_node *kn ;
   struct kernfs_node *procs_kn ;
   struct kernfs_node *populated_kn ;
   unsigned int subtree_control ;
   unsigned int child_subsys_mask ;
   struct cgroup_subsys_state *subsys[12U] ;
   struct cgroup_root *root ;
   struct list_head cset_links ;
   struct list_head e_csets[12U] ;
   struct list_head pidlists ;
   struct mutex pidlist_mutex ;
   wait_queue_head_t offline_waitq ;
   struct work_struct release_agent_work ;
};
#line 270 "include/linux/cgroup-defs.h"
struct cgroup_root {
   struct kernfs_root *kf_root ;
   unsigned int subsys_mask ;
   int hierarchy_id ;
   struct cgroup cgrp ;
   atomic_t nr_cgrps ;
   struct list_head root_list ;
   unsigned int flags ;
   struct idr cgroup_idr ;
   char release_agent_path[4096U] ;
   char name[64U] ;
};
#line 306 "include/linux/cgroup-defs.h"
struct cftype {
   char name[64U] ;
   int private ;
   umode_t mode ;
   size_t max_write_len ;
   unsigned int flags ;
   struct cgroup_subsys *ss ;
   struct list_head node ;
   struct kernfs_ops *kf_ops ;
   u64 (*read_u64)(struct cgroup_subsys_state * , struct cftype * ) ;
   s64 (*read_s64)(struct cgroup_subsys_state * , struct cftype * ) ;
   int (*seq_show)(struct seq_file * , void * ) ;
   void *(*seq_start)(struct seq_file * , loff_t * ) ;
   void *(*seq_next)(struct seq_file * , void * , loff_t * ) ;
   void (*seq_stop)(struct seq_file * , void * ) ;
   int (*write_u64)(struct cgroup_subsys_state * , struct cftype * , u64  ) ;
   int (*write_s64)(struct cgroup_subsys_state * , struct cftype * , s64  ) ;
   ssize_t (*write)(struct kernfs_open_file * , char * , size_t  , loff_t  ) ;
   struct lock_class_key lockdep_key ;
};
#line 388 "include/linux/cgroup-defs.h"
struct cgroup_subsys {
   struct cgroup_subsys_state *(*css_alloc)(struct cgroup_subsys_state * ) ;
   int (*css_online)(struct cgroup_subsys_state * ) ;
   void (*css_offline)(struct cgroup_subsys_state * ) ;
   void (*css_released)(struct cgroup_subsys_state * ) ;
   void (*css_free)(struct cgroup_subsys_state * ) ;
   void (*css_reset)(struct cgroup_subsys_state * ) ;
   void (*css_e_css_changed)(struct cgroup_subsys_state * ) ;
   int (*can_attach)(struct cgroup_subsys_state * , struct cgroup_taskset * ) ;
   void (*cancel_attach)(struct cgroup_subsys_state * , struct cgroup_taskset * ) ;
   void (*attach)(struct cgroup_subsys_state * , struct cgroup_taskset * ) ;
   void (*fork)(struct task_struct * ) ;
   void (*exit)(struct cgroup_subsys_state * , struct cgroup_subsys_state * , struct task_struct * ) ;
   void (*bind)(struct cgroup_subsys_state * ) ;
   int disabled ;
   int early_init ;
   bool broken_hierarchy ;
   bool warned_broken_hierarchy ;
   int id ;
   char const   *name ;
   struct cgroup_root *root ;
   struct idr css_idr ;
   struct list_head cfts ;
   struct cftype *dfl_cftypes ;
   struct cftype *legacy_cftypes ;
   unsigned int depends_on ;
};
#line 128 "include/linux/sched.h"
struct futex_pi_state;
#line 129
struct robust_list_head;
#line 130
struct bio_list;
#line 131
struct fs_struct;
#line 132
struct perf_event_context;
#line 133
struct blk_plug;
#line 135
struct nameidata;
#line 188
struct cfs_rq;
#line 189
struct task_group;
#line 477 "include/linux/sched.h"
struct sighand_struct {
   atomic_t count ;
   struct k_sigaction action[64U] ;
   spinlock_t siglock ;
   wait_queue_head_t signalfd_wqh ;
};
#line 516 "include/linux/sched.h"
struct pacct_struct {
   int ac_flag ;
   long ac_exitcode ;
   unsigned long ac_mem ;
   cputime_t ac_utime ;
   cputime_t ac_stime ;
   unsigned long ac_minflt ;
   unsigned long ac_majflt ;
};
#line 524 "include/linux/sched.h"
struct cpu_itimer {
   cputime_t expires ;
   cputime_t incr ;
   u32 error ;
   u32 incr_error ;
};
#line 531 "include/linux/sched.h"
struct cputime {
   cputime_t utime ;
   cputime_t stime ;
};
#line 543 "include/linux/sched.h"
struct task_cputime {
   cputime_t utime ;
   cputime_t stime ;
   unsigned long long sum_exec_runtime ;
};
#line 563 "include/linux/sched.h"
struct task_cputime_atomic {
   atomic64_t utime ;
   atomic64_t stime ;
   atomic64_t sum_exec_runtime ;
};
#line 584 "include/linux/sched.h"
struct thread_group_cputimer {
   struct task_cputime_atomic cputime_atomic ;
   int running ;
};
#line 620
struct autogroup;
#line 621
struct tty_struct;
#line 621
struct taskstats;
#line 621
struct tty_audit_buf;
#line 621 "include/linux/sched.h"
struct signal_struct {
   atomic_t sigcnt ;
   atomic_t live ;
   int nr_threads ;
   struct list_head thread_head ;
   wait_queue_head_t wait_chldexit ;
   struct task_struct *curr_target ;
   struct sigpending shared_pending ;
   int group_exit_code ;
   int notify_count ;
   struct task_struct *group_exit_task ;
   int group_stop_count ;
   unsigned int flags ;
   unsigned char is_child_subreaper : 1 ;
   unsigned char has_child_subreaper : 1 ;
   int posix_timer_id ;
   struct list_head posix_timers ;
   struct hrtimer real_timer ;
   struct pid *leader_pid ;
   ktime_t it_real_incr ;
   struct cpu_itimer it[2U] ;
   struct thread_group_cputimer cputimer ;
   struct task_cputime cputime_expires ;
   struct list_head cpu_timers[3U] ;
   struct pid *tty_old_pgrp ;
   int leader ;
   struct tty_struct *tty ;
   struct autogroup *autogroup ;
   seqlock_t stats_lock ;
   cputime_t utime ;
   cputime_t stime ;
   cputime_t cutime ;
   cputime_t cstime ;
   cputime_t gtime ;
   cputime_t cgtime ;
   struct cputime prev_cputime ;
   unsigned long nvcsw ;
   unsigned long nivcsw ;
   unsigned long cnvcsw ;
   unsigned long cnivcsw ;
   unsigned long min_flt ;
   unsigned long maj_flt ;
   unsigned long cmin_flt ;
   unsigned long cmaj_flt ;
   unsigned long inblock ;
   unsigned long oublock ;
   unsigned long cinblock ;
   unsigned long coublock ;
   unsigned long maxrss ;
   unsigned long cmaxrss ;
   struct task_io_accounting ioac ;
   unsigned long long sum_sched_runtime ;
   struct rlimit rlim[16U] ;
   struct pacct_struct pacct ;
   struct taskstats *stats ;
   unsigned int audit_tty ;
   unsigned int audit_tty_log_passwd ;
   struct tty_audit_buf *tty_audit_buf ;
   oom_flags_t oom_flags ;
   short oom_score_adj ;
   short oom_score_adj_min ;
   struct mutex cred_guard_mutex ;
};
#line 790 "include/linux/sched.h"
struct user_struct {
   atomic_t __count ;
   atomic_t processes ;
   atomic_t sigpending ;
   atomic_t inotify_watches ;
   atomic_t inotify_devs ;
   atomic_t fanotify_listeners ;
   atomic_long_t epoll_watches ;
   unsigned long mq_bytes ;
   unsigned long locked_shm ;
   struct key *uid_keyring ;
   struct key *session_keyring ;
   struct hlist_node uidhash_node ;
   kuid_t uid ;
   atomic_long_t locked_vm ;
};
#line 833
struct backing_dev_info;
#line 834
struct reclaim_state;
#line 835 "include/linux/sched.h"
struct sched_info {
   unsigned long pcount ;
   unsigned long long run_delay ;
   unsigned long long last_arrival ;
   unsigned long long last_queued ;
};
#line 849 "include/linux/sched.h"
struct task_delay_info {
   spinlock_t lock ;
   unsigned int flags ;
   u64 blkio_start ;
   u64 blkio_delay ;
   u64 swapin_delay ;
   u32 blkio_count ;
   u32 swapin_count ;
   u64 freepages_start ;
   u64 freepages_delay ;
   u32 freepages_count ;
};
#line 897 "include/linux/sched.h"
struct wake_q_node {
   struct wake_q_node *next ;
};
#line 1126
struct io_context;
#line 1160
struct pipe_inode_info;
#line 1162 "include/linux/sched.h"
struct load_weight {
   unsigned long weight ;
   u32 inv_weight ;
};
#line 1169 "include/linux/sched.h"
struct sched_avg {
   u64 last_runnable_update ;
   s64 decay_count ;
   unsigned long load_avg_contrib ;
   unsigned long utilization_avg_contrib ;
   u32 runnable_avg_sum ;
   u32 avg_period ;
   u32 running_avg_sum ;
};
#line 1194 "include/linux/sched.h"
struct sched_statistics {
   u64 wait_start ;
   u64 wait_max ;
   u64 wait_count ;
   u64 wait_sum ;
   u64 iowait_count ;
   u64 iowait_sum ;
   u64 sleep_start ;
   u64 sleep_max ;
   s64 sum_sleep_runtime ;
   u64 block_start ;
   u64 block_max ;
   u64 exec_max ;
   u64 slice_max ;
   u64 nr_migrations_cold ;
   u64 nr_failed_migrations_affine ;
   u64 nr_failed_migrations_running ;
   u64 nr_failed_migrations_hot ;
   u64 nr_forced_migrations ;
   u64 nr_wakeups ;
   u64 nr_wakeups_sync ;
   u64 nr_wakeups_migrate ;
   u64 nr_wakeups_local ;
   u64 nr_wakeups_remote ;
   u64 nr_wakeups_affine ;
   u64 nr_wakeups_affine_attempts ;
   u64 nr_wakeups_passive ;
   u64 nr_wakeups_idle ;
};
#line 1229 "include/linux/sched.h"
struct sched_entity {
   struct load_weight load ;
   struct rb_node run_node ;
   struct list_head group_node ;
   unsigned int on_rq ;
   u64 exec_start ;
   u64 sum_exec_runtime ;
   u64 vruntime ;
   u64 prev_sum_exec_runtime ;
   u64 nr_migrations ;
   struct sched_statistics statistics ;
   int depth ;
   struct sched_entity *parent ;
   struct cfs_rq *cfs_rq ;
   struct cfs_rq *my_q ;
   struct sched_avg avg ;
};
#line 1261
struct rt_rq;
#line 1261 "include/linux/sched.h"
struct sched_rt_entity {
   struct list_head run_list ;
   unsigned long timeout ;
   unsigned long watchdog_stamp ;
   unsigned int time_slice ;
   struct sched_rt_entity *back ;
   struct sched_rt_entity *parent ;
   struct rt_rq *rt_rq ;
   struct rt_rq *my_q ;
};
#line 1277 "include/linux/sched.h"
struct sched_dl_entity {
   struct rb_node rb_node ;
   u64 dl_runtime ;
   u64 dl_deadline ;
   u64 dl_period ;
   u64 dl_bw ;
   s64 runtime ;
   u64 deadline ;
   unsigned int flags ;
   int dl_throttled ;
   int dl_new ;
   int dl_boosted ;
   int dl_yielded ;
   struct hrtimer dl_timer ;
};
#line 1343 "include/linux/sched.h"
struct memcg_oom_info {
   struct mem_cgroup *memcg ;
   gfp_t gfp_mask ;
   int order ;
   unsigned char may_oom : 1 ;
};
#line 1769
struct sched_class;
#line 1769
struct files_struct;
#line 1769
struct compat_robust_list_head;
#line 1769
struct numa_group;
#line 1769
struct ftrace_ret_stack;
#line 1769 "include/linux/sched.h"
struct task_struct {
   long volatile   state ;
   void *stack ;
   atomic_t usage ;
   unsigned int flags ;
   unsigned int ptrace ;
   struct llist_node wake_entry ;
   int on_cpu ;
   struct task_struct *last_wakee ;
   unsigned long wakee_flips ;
   unsigned long wakee_flip_decay_ts ;
   int wake_cpu ;
   int on_rq ;
   int prio ;
   int static_prio ;
   int normal_prio ;
   unsigned int rt_priority ;
   struct sched_class  const  *sched_class ;
   struct sched_entity se ;
   struct sched_rt_entity rt ;
   struct task_group *sched_task_group ;
   struct sched_dl_entity dl ;
   struct hlist_head preempt_notifiers ;
   unsigned int btrace_seq ;
   unsigned int policy ;
   int nr_cpus_allowed ;
   cpumask_t cpus_allowed ;
   unsigned long rcu_tasks_nvcsw ;
   bool rcu_tasks_holdout ;
   struct list_head rcu_tasks_holdout_list ;
   int rcu_tasks_idle_cpu ;
   struct sched_info sched_info ;
   struct list_head tasks ;
   struct plist_node pushable_tasks ;
   struct rb_node pushable_dl_tasks ;
   struct mm_struct *mm ;
   struct mm_struct *active_mm ;
   u32 vmacache_seqnum ;
   struct vm_area_struct *vmacache[4U] ;
   struct task_rss_stat rss_stat ;
   int exit_state ;
   int exit_code ;
   int exit_signal ;
   int pdeath_signal ;
   unsigned long jobctl ;
   unsigned int personality ;
   unsigned char in_execve : 1 ;
   unsigned char in_iowait : 1 ;
   unsigned char sched_reset_on_fork : 1 ;
   unsigned char sched_contributes_to_load : 1 ;
   unsigned char sched_migrated : 1 ;
   unsigned char memcg_kmem_skip_account : 1 ;
   unsigned char brk_randomized : 1 ;
   unsigned long atomic_flags ;
   struct restart_block restart_block ;
   pid_t pid ;
   pid_t tgid ;
   struct task_struct *real_parent ;
   struct task_struct *parent ;
   struct list_head children ;
   struct list_head sibling ;
   struct task_struct *group_leader ;
   struct list_head ptraced ;
   struct list_head ptrace_entry ;
   struct pid_link pids[3U] ;
   struct list_head thread_group ;
   struct list_head thread_node ;
   struct completion *vfork_done ;
   int *set_child_tid ;
   int *clear_child_tid ;
   cputime_t utime ;
   cputime_t stime ;
   cputime_t utimescaled ;
   cputime_t stimescaled ;
   cputime_t gtime ;
   struct cputime prev_cputime ;
   unsigned long nvcsw ;
   unsigned long nivcsw ;
   u64 start_time ;
   u64 real_start_time ;
   unsigned long min_flt ;
   unsigned long maj_flt ;
   struct task_cputime cputime_expires ;
   struct list_head cpu_timers[3U] ;
   struct cred  const  *real_cred ;
   struct cred  const  *cred ;
   char comm[16U] ;
   struct nameidata *nameidata ;
   struct sysv_sem sysvsem ;
   struct sysv_shm sysvshm ;
   unsigned long last_switch_count ;
   struct thread_struct thread ;
   struct fs_struct *fs ;
   struct files_struct *files ;
   struct nsproxy *nsproxy ;
   struct signal_struct *signal ;
   struct sighand_struct *sighand ;
   sigset_t blocked ;
   sigset_t real_blocked ;
   sigset_t saved_sigmask ;
   struct sigpending pending ;
   unsigned long sas_ss_sp ;
   size_t sas_ss_size ;
   int (*notifier)(void * ) ;
   void *notifier_data ;
   sigset_t *notifier_mask ;
   struct callback_head *task_works ;
   struct audit_context *audit_context ;
   kuid_t loginuid ;
   unsigned int sessionid ;
   struct seccomp seccomp ;
   u32 parent_exec_id ;
   u32 self_exec_id ;
   spinlock_t alloc_lock ;
   raw_spinlock_t pi_lock ;
   struct wake_q_node wake_q ;
   struct rb_root pi_waiters ;
   struct rb_node *pi_waiters_leftmost ;
   struct rt_mutex_waiter *pi_blocked_on ;
   struct mutex_waiter *blocked_on ;
   unsigned int irq_events ;
   unsigned long hardirq_enable_ip ;
   unsigned long hardirq_disable_ip ;
   unsigned int hardirq_enable_event ;
   unsigned int hardirq_disable_event ;
   int hardirqs_enabled ;
   int hardirq_context ;
   unsigned long softirq_disable_ip ;
   unsigned long softirq_enable_ip ;
   unsigned int softirq_disable_event ;
   unsigned int softirq_enable_event ;
   int softirqs_enabled ;
   int softirq_context ;
   u64 curr_chain_key ;
   int lockdep_depth ;
   unsigned int lockdep_recursion ;
   struct held_lock held_locks[48U] ;
   gfp_t lockdep_reclaim_gfp ;
   void *journal_info ;
   struct bio_list *bio_list ;
   struct blk_plug *plug ;
   struct reclaim_state *reclaim_state ;
   struct backing_dev_info *backing_dev_info ;
   struct io_context *io_context ;
   unsigned long ptrace_message ;
   siginfo_t *last_siginfo ;
   struct task_io_accounting ioac ;
   u64 acct_rss_mem1 ;
   u64 acct_vm_mem1 ;
   cputime_t acct_timexpd ;
   nodemask_t mems_allowed ;
   seqcount_t mems_allowed_seq ;
   int cpuset_mem_spread_rotor ;
   int cpuset_slab_spread_rotor ;
   struct css_set *cgroups ;
   struct list_head cg_list ;
   struct robust_list_head *robust_list ;
   struct compat_robust_list_head *compat_robust_list ;
   struct list_head pi_state_list ;
   struct futex_pi_state *pi_state_cache ;
   struct perf_event_context *perf_event_ctxp[2U] ;
   struct mutex perf_event_mutex ;
   struct list_head perf_event_list ;
   struct mempolicy *mempolicy ;
   short il_next ;
   short pref_node_fork ;
   int numa_scan_seq ;
   unsigned int numa_scan_period ;
   unsigned int numa_scan_period_max ;
   int numa_preferred_nid ;
   unsigned long numa_migrate_retry ;
   u64 node_stamp ;
   u64 last_task_numa_placement ;
   u64 last_sum_exec_runtime ;
   struct callback_head numa_work ;
   struct list_head numa_entry ;
   struct numa_group *numa_group ;
   unsigned long *numa_faults ;
   unsigned long total_numa_faults ;
   unsigned long numa_faults_locality[3U] ;
   unsigned long numa_pages_migrated ;
   struct callback_head rcu ;
   struct pipe_inode_info *splice_pipe ;
   struct page_frag task_frag ;
   struct task_delay_info *delays ;
   int make_it_fail ;
   int nr_dirtied ;
   int nr_dirtied_pause ;
   unsigned long dirty_paused_when ;
   int latency_record_count ;
   struct latency_record latency_record[32U] ;
   unsigned long timer_slack_ns ;
   unsigned long default_timer_slack_ns ;
   unsigned int kasan_depth ;
   int curr_ret_stack ;
   struct ftrace_ret_stack *ret_stack ;
   unsigned long long ftrace_timestamp ;
   atomic_t trace_overrun ;
   atomic_t tracing_graph_pause ;
   unsigned long trace ;
   unsigned long trace_recursion ;
   struct memcg_oom_info memcg_oom ;
   struct uprobe_task *utask ;
   unsigned int sequential_io ;
   unsigned int sequential_io_avg ;
   unsigned long task_state_change ;
   int pagefault_disabled ;
};
#line 19 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct ib_device;
#line 41
struct klist_node;
#line 37 "include/linux/klist.h"
struct klist_node {
   void *n_klist ;
   struct list_head n_node ;
   struct kref n_ref ;
};
#line 67
struct path;
#line 68 "include/linux/klist.h"
struct seq_file {
   char *buf ;
   size_t size ;
   size_t from ;
   size_t count ;
   size_t pad_until ;
   loff_t index ;
   loff_t read_pos ;
   u64 version ;
   struct mutex lock ;
   struct seq_operations  const  *op ;
   int poll_event ;
   struct user_namespace *user_ns ;
   void *private ;
};
#line 35 "include/linux/seq_file.h"
struct seq_operations {
   void *(*start)(struct seq_file * , loff_t * ) ;
   void (*stop)(struct seq_file * , void * ) ;
   void *(*next)(struct seq_file * , void * , loff_t * ) ;
   int (*show)(struct seq_file * , void * ) ;
};
#line 187
struct pinctrl;
#line 188
struct pinctrl_state;
#line 194 "include/linux/pinctrl/consumer.h"
struct dev_pin_info {
   struct pinctrl *p ;
   struct pinctrl_state *default_state ;
   struct pinctrl_state *sleep_state ;
   struct pinctrl_state *idle_state ;
};
#line 48 "include/linux/ratelimit.h"
struct dma_map_ops;
#line 48 "include/linux/ratelimit.h"
struct dev_archdata {
   struct dma_map_ops *dma_ops ;
   void *iommu ;
};
#line 14 "./arch/x86/include/asm/device.h"
struct device_private;
#line 15
struct device_driver;
#line 16
struct driver_private;
#line 17
struct class;
#line 18
struct subsys_private;
#line 19
struct bus_type;
#line 20
struct device_node;
#line 21
struct fwnode_handle;
#line 22
struct iommu_ops;
#line 23
struct iommu_group;
#line 61 "include/linux/device.h"
struct device_attribute;
#line 61 "include/linux/device.h"
struct bus_type {
   char const   *name ;
   char const   *dev_name ;
   struct device *dev_root ;
   struct device_attribute *dev_attrs ;
   struct attribute_group  const  **bus_groups ;
   struct attribute_group  const  **dev_groups ;
   struct attribute_group  const  **drv_groups ;
   int (*match)(struct device * , struct device_driver * ) ;
   int (*uevent)(struct device * , struct kobj_uevent_env * ) ;
   int (*probe)(struct device * ) ;
   int (*remove)(struct device * ) ;
   void (*shutdown)(struct device * ) ;
   int (*online)(struct device * ) ;
   int (*offline)(struct device * ) ;
   int (*suspend)(struct device * , pm_message_t  ) ;
   int (*resume)(struct device * ) ;
   struct dev_pm_ops  const  *pm ;
   struct iommu_ops  const  *iommu_ops ;
   struct subsys_private *p ;
   struct lock_class_key lock_key ;
};
#line 139
struct device_type;
#line 197
enum probe_type {
    PROBE_DEFAULT_STRATEGY = 0,
    PROBE_PREFER_ASYNCHRONOUS = 1,
    PROBE_FORCE_SYNCHRONOUS = 2
} ;
#line 203
struct of_device_id;
#line 203
struct acpi_device_id;
#line 203 "include/linux/device.h"
struct device_driver {
   char const   *name ;
   struct bus_type *bus ;
   struct module *owner ;
   char const   *mod_name ;
   bool suppress_bind_attrs ;
   enum probe_type probe_type ;
   struct of_device_id  const  *of_match_table ;
   struct acpi_device_id  const  *acpi_match_table ;
   int (*probe)(struct device * ) ;
   int (*remove)(struct device * ) ;
   void (*shutdown)(struct device * ) ;
   int (*suspend)(struct device * , pm_message_t  ) ;
   int (*resume)(struct device * ) ;
   struct attribute_group  const  **groups ;
   struct dev_pm_ops  const  *pm ;
   struct driver_private *p ;
};
#line 353
struct class_attribute;
#line 353 "include/linux/device.h"
struct class {
   char const   *name ;
   struct module *owner ;
   struct class_attribute *class_attrs ;
   struct attribute_group  const  **dev_groups ;
   struct kobject *dev_kobj ;
   int (*dev_uevent)(struct device * , struct kobj_uevent_env * ) ;
   char *(*devnode)(struct device * , umode_t * ) ;
   void (*class_release)(struct class * ) ;
   void (*dev_release)(struct device * ) ;
   int (*suspend)(struct device * , pm_message_t  ) ;
   int (*resume)(struct device * ) ;
   struct kobj_ns_type_operations  const  *ns_type ;
   void const   *(*namespace)(struct device * ) ;
   struct dev_pm_ops  const  *pm ;
   struct subsys_private *p ;
};
#line 446 "include/linux/device.h"
struct class_attribute {
   struct attribute attr ;
   ssize_t (*show)(struct class * , struct class_attribute * , char * ) ;
   ssize_t (*store)(struct class * , struct class_attribute * , char const   * , size_t  ) ;
};
#line 482 "include/linux/device.h"
struct class_attribute_string {
   struct class_attribute attr ;
   char *str ;
};
#line 514 "include/linux/device.h"
struct device_type {
   char const   *name ;
   struct attribute_group  const  **groups ;
   int (*uevent)(struct device * , struct kobj_uevent_env * ) ;
   char *(*devnode)(struct device * , umode_t * , kuid_t * , kgid_t * ) ;
   void (*release)(struct device * ) ;
   struct dev_pm_ops  const  *pm ;
};
#line 542 "include/linux/device.h"
struct device_attribute {
   struct attribute attr ;
   ssize_t (*show)(struct device * , struct device_attribute * , char * ) ;
   ssize_t (*store)(struct device * , struct device_attribute * , char const   * ,
                    size_t  ) ;
};
#line 674 "include/linux/device.h"
struct device_dma_parameters {
   unsigned int max_segment_size ;
   unsigned long segment_boundary_mask ;
};
#line 683
struct dma_coherent_mem;
#line 683
struct cma;
#line 683 "include/linux/device.h"
struct device {
   struct device *parent ;
   struct device_private *p ;
   struct kobject kobj ;
   char const   *init_name ;
   struct device_type  const  *type ;
   struct mutex mutex ;
   struct bus_type *bus ;
   struct device_driver *driver ;
   void *platform_data ;
   void *driver_data ;
   struct dev_pm_info power ;
   struct dev_pm_domain *pm_domain ;
   struct dev_pin_info *pins ;
   int numa_node ;
   u64 *dma_mask ;
   u64 coherent_dma_mask ;
   unsigned long dma_pfn_offset ;
   struct device_dma_parameters *dma_parms ;
   struct list_head dma_pools ;
   struct dma_coherent_mem *dma_mem ;
   struct cma *cma_area ;
   struct dev_archdata archdata ;
   struct device_node *of_node ;
   struct fwnode_handle *fwnode ;
   dev_t devt ;
   u32 id ;
   spinlock_t devres_lock ;
   struct list_head devres_head ;
   struct klist_node knode_class ;
   struct class *class ;
   struct attribute_group  const  **groups ;
   void (*release)(struct device * ) ;
   struct iommu_group *iommu_group ;
   bool offline_disabled ;
   bool offline ;
};
#line 829 "include/linux/device.h"
struct wakeup_source {
   char const   *name ;
   struct list_head entry ;
   spinlock_t lock ;
   struct wake_irq *wakeirq ;
   struct timer_list timer ;
   unsigned long timer_expires ;
   ktime_t total_time ;
   ktime_t max_time ;
   ktime_t last_time ;
   ktime_t start_prevent_time ;
   ktime_t prevent_sleep_time ;
   unsigned long event_count ;
   unsigned long active_count ;
   unsigned long relax_count ;
   unsigned long expire_count ;
   unsigned long wakeup_count ;
   bool active ;
   bool autosleep_enabled ;
};
#line 93 "include/linux/bit_spinlock.h"
struct hlist_bl_node;
#line 93 "include/linux/bit_spinlock.h"
struct hlist_bl_head {
   struct hlist_bl_node *first ;
};
#line 36 "include/linux/list_bl.h"
struct hlist_bl_node {
   struct hlist_bl_node *next ;
   struct hlist_bl_node **pprev ;
};
#line 114 "include/linux/rculist_bl.h"
struct __anonstruct____missing_field_name_220 {
   spinlock_t lock ;
   int count ;
};
#line 114 "include/linux/rculist_bl.h"
union __anonunion____missing_field_name_219 {
   struct __anonstruct____missing_field_name_220 __annonCompField58 ;
};
#line 114 "include/linux/rculist_bl.h"
struct lockref {
   union __anonunion____missing_field_name_219 __annonCompField59 ;
};
#line 50 "include/linux/lockref.h"
struct vfsmount;
#line 51 "include/linux/lockref.h"
struct __anonstruct____missing_field_name_222 {
   u32 hash ;
   u32 len ;
};
#line 51 "include/linux/lockref.h"
union __anonunion____missing_field_name_221 {
   struct __anonstruct____missing_field_name_222 __annonCompField60 ;
   u64 hash_len ;
};
#line 51 "include/linux/lockref.h"
struct qstr {
   union __anonunion____missing_field_name_221 __annonCompField61 ;
   unsigned char const   *name ;
};
#line 90 "include/linux/dcache.h"
struct dentry_operations;
#line 90 "include/linux/dcache.h"
union __anonunion_d_u_223 {
   struct hlist_node d_alias ;
   struct callback_head d_rcu ;
};
#line 90 "include/linux/dcache.h"
struct dentry {
   unsigned int d_flags ;
   seqcount_t d_seq ;
   struct hlist_bl_node d_hash ;
   struct dentry *d_parent ;
   struct qstr d_name ;
   struct inode *d_inode ;
   unsigned char d_iname[32U] ;
   struct lockref d_lockref ;
   struct dentry_operations  const  *d_op ;
   struct super_block *d_sb ;
   unsigned long d_time ;
   void *d_fsdata ;
   struct list_head d_lru ;
   struct list_head d_child ;
   struct list_head d_subdirs ;
   union __anonunion_d_u_223 d_u ;
};
#line 142 "include/linux/dcache.h"
struct dentry_operations {
   int (*d_revalidate)(struct dentry * , unsigned int  ) ;
   int (*d_weak_revalidate)(struct dentry * , unsigned int  ) ;
   int (*d_hash)(struct dentry  const  * , struct qstr * ) ;
   int (*d_compare)(struct dentry  const  * , struct dentry  const  * , unsigned int  ,
                    char const   * , struct qstr  const  * ) ;
   int (*d_delete)(struct dentry  const  * ) ;
   void (*d_release)(struct dentry * ) ;
   void (*d_prune)(struct dentry * ) ;
   void (*d_iput)(struct dentry * , struct inode * ) ;
   char *(*d_dname)(struct dentry * , char * , int  ) ;
   struct vfsmount *(*d_automount)(struct path * ) ;
   int (*d_manage)(struct dentry * , bool  ) ;
   struct inode *(*d_select_inode)(struct dentry * , unsigned int  ) ;
};
#line 585 "include/linux/dcache.h"
struct path {
   struct vfsmount *mnt ;
   struct dentry *dentry ;
};
#line 19 "include/linux/path.h"
struct shrink_control {
   gfp_t gfp_mask ;
   unsigned long nr_to_scan ;
   int nid ;
   struct mem_cgroup *memcg ;
};
#line 27 "include/linux/shrinker.h"
struct shrinker {
   unsigned long (*count_objects)(struct shrinker * , struct shrink_control * ) ;
   unsigned long (*scan_objects)(struct shrinker * , struct shrink_control * ) ;
   int seeks ;
   long batch ;
   unsigned long flags ;
   struct list_head list ;
   atomic_long_t *nr_deferred ;
};
#line 80 "include/linux/shrinker.h"
struct list_lru_one {
   struct list_head list ;
   long nr_items ;
};
#line 32 "include/linux/list_lru.h"
struct list_lru_memcg {
   struct list_lru_one *lru[0U] ;
};
#line 37 "include/linux/list_lru.h"
struct list_lru_node {
   spinlock_t lock ;
   struct list_lru_one lru ;
   struct list_lru_memcg *memcg_lrus ;
};
#line 47 "include/linux/list_lru.h"
struct list_lru {
   struct list_lru_node *node ;
   struct list_head list ;
};
#line 58 "include/linux/radix-tree.h"
struct __anonstruct____missing_field_name_227 {
   struct radix_tree_node *parent ;
   void *private_data ;
};
#line 58 "include/linux/radix-tree.h"
union __anonunion____missing_field_name_226 {
   struct __anonstruct____missing_field_name_227 __annonCompField62 ;
   struct callback_head callback_head ;
};
#line 58 "include/linux/radix-tree.h"
struct radix_tree_node {
   unsigned int path ;
   unsigned int count ;
   union __anonunion____missing_field_name_226 __annonCompField63 ;
   struct list_head private_list ;
   void *slots[64U] ;
   unsigned long tags[3U][1U] ;
};
#line 105 "include/linux/radix-tree.h"
struct radix_tree_root {
   unsigned int height ;
   gfp_t gfp_mask ;
   struct radix_tree_node *rnode ;
};
#line 45 "include/linux/semaphore.h"
struct fiemap_extent {
   __u64 fe_logical ;
   __u64 fe_physical ;
   __u64 fe_length ;
   __u64 fe_reserved64[2U] ;
   __u32 fe_flags ;
   __u32 fe_reserved[3U] ;
};
#line 38 "./include/uapi/linux/fiemap.h"
enum migrate_mode {
    MIGRATE_ASYNC = 0,
    MIGRATE_SYNC_LIGHT = 1,
    MIGRATE_SYNC = 2
} ;
#line 47
struct block_device;
#line 60 "include/uapi/linux/fs.h"
struct bdi_writeback;
#line 61
struct export_operations;
#line 64
struct kiocb;
#line 65
struct poll_table_struct;
#line 66
struct kstatfs;
#line 67
struct swap_info_struct;
#line 68
struct iov_iter;
#line 69
struct vm_fault;
#line 74 "include/linux/fs.h"
struct iattr {
   unsigned int ia_valid ;
   umode_t ia_mode ;
   kuid_t ia_uid ;
   kgid_t ia_gid ;
   loff_t ia_size ;
   struct timespec ia_atime ;
   struct timespec ia_mtime ;
   struct timespec ia_ctime ;
   struct file *ia_file ;
};
#line 212 "./include/uapi/linux/dqblk_xfs.h"
struct dquot;
#line 19 "include/linux/projid.h"
typedef __kernel_uid32_t projid_t;
#line 23 "include/linux/projid.h"
struct __anonstruct_kprojid_t_231 {
   projid_t val ;
};
#line 23 "include/linux/projid.h"
typedef struct __anonstruct_kprojid_t_231 kprojid_t;
#line 166 "include/uapi/linux/quota.h"
enum quota_type {
    USRQUOTA = 0,
    GRPQUOTA = 1,
    PRJQUOTA = 2
} ;
#line 66 "include/linux/quota.h"
typedef long long qsize_t;
#line 67 "include/linux/quota.h"
union __anonunion____missing_field_name_232 {
   kuid_t uid ;
   kgid_t gid ;
   kprojid_t projid ;
};
#line 67 "include/linux/quota.h"
struct kqid {
   union __anonunion____missing_field_name_232 __annonCompField65 ;
   enum quota_type type ;
};
#line 184 "include/linux/quota.h"
struct mem_dqblk {
   qsize_t dqb_bhardlimit ;
   qsize_t dqb_bsoftlimit ;
   qsize_t dqb_curspace ;
   qsize_t dqb_rsvspace ;
   qsize_t dqb_ihardlimit ;
   qsize_t dqb_isoftlimit ;
   qsize_t dqb_curinodes ;
   time_t dqb_btime ;
   time_t dqb_itime ;
};
#line 206
struct quota_format_type;
#line 207 "include/linux/quota.h"
struct mem_dqinfo {
   struct quota_format_type *dqi_format ;
   int dqi_fmt_id ;
   struct list_head dqi_dirty_list ;
   unsigned long dqi_flags ;
   unsigned int dqi_bgrace ;
   unsigned int dqi_igrace ;
   qsize_t dqi_max_spc_limit ;
   qsize_t dqi_max_ino_limit ;
   void *dqi_priv ;
};
#line 272 "include/linux/quota.h"
struct dquot {
   struct hlist_node dq_hash ;
   struct list_head dq_inuse ;
   struct list_head dq_free ;
   struct list_head dq_dirty ;
   struct mutex dq_lock ;
   atomic_t dq_count ;
   wait_queue_head_t dq_wait_unused ;
   struct super_block *dq_sb ;
   struct kqid dq_id ;
   loff_t dq_off ;
   unsigned long dq_flags ;
   struct mem_dqblk dq_dqb ;
};
#line 299 "include/linux/quota.h"
struct quota_format_ops {
   int (*check_quota_file)(struct super_block * , int  ) ;
   int (*read_file_info)(struct super_block * , int  ) ;
   int (*write_file_info)(struct super_block * , int  ) ;
   int (*free_file_info)(struct super_block * , int  ) ;
   int (*read_dqblk)(struct dquot * ) ;
   int (*commit_dqblk)(struct dquot * ) ;
   int (*release_dqblk)(struct dquot * ) ;
};
#line 310 "include/linux/quota.h"
struct dquot_operations {
   int (*write_dquot)(struct dquot * ) ;
   struct dquot *(*alloc_dquot)(struct super_block * , int  ) ;
   void (*destroy_dquot)(struct dquot * ) ;
   int (*acquire_dquot)(struct dquot * ) ;
   int (*release_dquot)(struct dquot * ) ;
   int (*mark_dirty)(struct dquot * ) ;
   int (*write_info)(struct super_block * , int  ) ;
   qsize_t *(*get_reserved_space)(struct inode * ) ;
   int (*get_projid)(struct inode * , kprojid_t * ) ;
};
#line 325 "include/linux/quota.h"
struct qc_dqblk {
   int d_fieldmask ;
   u64 d_spc_hardlimit ;
   u64 d_spc_softlimit ;
   u64 d_ino_hardlimit ;
   u64 d_ino_softlimit ;
   u64 d_space ;
   u64 d_ino_count ;
   s64 d_ino_timer ;
   s64 d_spc_timer ;
   int d_ino_warns ;
   int d_spc_warns ;
   u64 d_rt_spc_hardlimit ;
   u64 d_rt_spc_softlimit ;
   u64 d_rt_space ;
   s64 d_rt_spc_timer ;
   int d_rt_spc_warns ;
};
#line 348 "include/linux/quota.h"
struct qc_type_state {
   unsigned int flags ;
   unsigned int spc_timelimit ;
   unsigned int ino_timelimit ;
   unsigned int rt_spc_timelimit ;
   unsigned int spc_warnlimit ;
   unsigned int ino_warnlimit ;
   unsigned int rt_spc_warnlimit ;
   unsigned long long ino ;
   blkcnt_t blocks ;
   blkcnt_t nextents ;
};
#line 394 "include/linux/quota.h"
struct qc_state {
   unsigned int s_incoredqs ;
   struct qc_type_state s_state[3U] ;
};
#line 405 "include/linux/quota.h"
struct qc_info {
   int i_fieldmask ;
   unsigned int i_flags ;
   unsigned int i_spc_timelimit ;
   unsigned int i_ino_timelimit ;
   unsigned int i_rt_spc_timelimit ;
   unsigned int i_spc_warnlimit ;
   unsigned int i_ino_warnlimit ;
   unsigned int i_rt_spc_warnlimit ;
};
#line 418 "include/linux/quota.h"
struct quotactl_ops {
   int (*quota_on)(struct super_block * , int  , int  , struct path * ) ;
   int (*quota_off)(struct super_block * , int  ) ;
   int (*quota_enable)(struct super_block * , unsigned int  ) ;
   int (*quota_disable)(struct super_block * , unsigned int  ) ;
   int (*quota_sync)(struct super_block * , int  ) ;
   int (*set_info)(struct super_block * , int  , struct qc_info * ) ;
   int (*get_dqblk)(struct super_block * , struct kqid  , struct qc_dqblk * ) ;
   int (*set_dqblk)(struct super_block * , struct kqid  , struct qc_dqblk * ) ;
   int (*get_state)(struct super_block * , struct qc_state * ) ;
   int (*rm_xquota)(struct super_block * , unsigned int  ) ;
};
#line 432 "include/linux/quota.h"
struct quota_format_type {
   int qf_fmt_id ;
   struct quota_format_ops  const  *qf_ops ;
   struct module *qf_owner ;
   struct quota_format_type *qf_next ;
};
#line 496 "include/linux/quota.h"
struct quota_info {
   unsigned int flags ;
   struct mutex dqio_mutex ;
   struct mutex dqonoff_mutex ;
   struct inode *files[3U] ;
   struct mem_dqinfo info[3U] ;
   struct quota_format_ops  const  *ops[3U] ;
};
#line 526
struct writeback_control;
#line 527 "include/linux/quota.h"
struct kiocb {
   struct file *ki_filp ;
   loff_t ki_pos ;
   void (*ki_complete)(struct kiocb * , long  , long  ) ;
   void *private ;
   int ki_flags ;
};
#line 365 "include/linux/fs.h"
struct address_space_operations {
   int (*writepage)(struct page * , struct writeback_control * ) ;
   int (*readpage)(struct file * , struct page * ) ;
   int (*writepages)(struct address_space * , struct writeback_control * ) ;
   int (*set_page_dirty)(struct page * ) ;
   int (*readpages)(struct file * , struct address_space * , struct list_head * ,
                    unsigned int  ) ;
   int (*write_begin)(struct file * , struct address_space * , loff_t  , unsigned int  ,
                      unsigned int  , struct page ** , void ** ) ;
   int (*write_end)(struct file * , struct address_space * , loff_t  , unsigned int  ,
                    unsigned int  , struct page * , void * ) ;
   sector_t (*bmap)(struct address_space * , sector_t  ) ;
   void (*invalidatepage)(struct page * , unsigned int  , unsigned int  ) ;
   int (*releasepage)(struct page * , gfp_t  ) ;
   void (*freepage)(struct page * ) ;
   ssize_t (*direct_IO)(struct kiocb * , struct iov_iter * , loff_t  ) ;
   int (*migratepage)(struct address_space * , struct page * , struct page * , enum migrate_mode  ) ;
   int (*launder_page)(struct page * ) ;
   int (*is_partially_uptodate)(struct page * , unsigned long  , unsigned long  ) ;
   void (*is_dirty_writeback)(struct page * , bool * , bool * ) ;
   int (*error_remove_page)(struct address_space * , struct page * ) ;
   int (*swap_activate)(struct swap_info_struct * , struct file * , sector_t * ) ;
   void (*swap_deactivate)(struct file * ) ;
};
#line 422 "include/linux/fs.h"
struct address_space {
   struct inode *host ;
   struct radix_tree_root page_tree ;
   spinlock_t tree_lock ;
   atomic_t i_mmap_writable ;
   struct rb_root i_mmap ;
   struct rw_semaphore i_mmap_rwsem ;
   unsigned long nrpages ;
   unsigned long nrshadows ;
   unsigned long writeback_index ;
   struct address_space_operations  const  *a_ops ;
   unsigned long flags ;
   spinlock_t private_lock ;
   struct list_head private_list ;
   void *private_data ;
};
#line 442
struct request_queue;
#line 443
struct hd_struct;
#line 443
struct gendisk;
#line 443 "include/linux/fs.h"
struct block_device {
   dev_t bd_dev ;
   int bd_openers ;
   struct inode *bd_inode ;
   struct super_block *bd_super ;
   struct mutex bd_mutex ;
   struct list_head bd_inodes ;
   void *bd_claiming ;
   void *bd_holder ;
   int bd_holders ;
   bool bd_write_holder ;
   struct list_head bd_holder_disks ;
   struct block_device *bd_contains ;
   unsigned int bd_block_size ;
   struct hd_struct *bd_part ;
   unsigned int bd_part_count ;
   int bd_invalidated ;
   struct gendisk *bd_disk ;
   struct request_queue *bd_queue ;
   struct list_head bd_list ;
   unsigned long bd_private ;
   int bd_fsfreeze_count ;
   struct mutex bd_fsfreeze_mutex ;
};
#line 559
struct posix_acl;
#line 560
struct inode_operations;
#line 560 "include/linux/fs.h"
union __anonunion____missing_field_name_235 {
   unsigned int const   i_nlink ;
   unsigned int __i_nlink ;
};
#line 560 "include/linux/fs.h"
union __anonunion____missing_field_name_236 {
   struct hlist_head i_dentry ;
   struct callback_head i_rcu ;
};
#line 560
struct file_lock_context;
#line 560
struct cdev;
#line 560 "include/linux/fs.h"
union __anonunion____missing_field_name_237 {
   struct pipe_inode_info *i_pipe ;
   struct block_device *i_bdev ;
   struct cdev *i_cdev ;
   char *i_link ;
};
#line 560 "include/linux/fs.h"
struct inode {
   umode_t i_mode ;
   unsigned short i_opflags ;
   kuid_t i_uid ;
   kgid_t i_gid ;
   unsigned int i_flags ;
   struct posix_acl *i_acl ;
   struct posix_acl *i_default_acl ;
   struct inode_operations  const  *i_op ;
   struct super_block *i_sb ;
   struct address_space *i_mapping ;
   void *i_security ;
   unsigned long i_ino ;
   union __anonunion____missing_field_name_235 __annonCompField66 ;
   dev_t i_rdev ;
   loff_t i_size ;
   struct timespec i_atime ;
   struct timespec i_mtime ;
   struct timespec i_ctime ;
   spinlock_t i_lock ;
   unsigned short i_bytes ;
   unsigned int i_blkbits ;
   blkcnt_t i_blocks ;
   unsigned long i_state ;
   struct mutex i_mutex ;
   unsigned long dirtied_when ;
   unsigned long dirtied_time_when ;
   struct hlist_node i_hash ;
   struct list_head i_wb_list ;
   struct bdi_writeback *i_wb ;
   int i_wb_frn_winner ;
   u16 i_wb_frn_avg_time ;
   u16 i_wb_frn_history ;
   struct list_head i_lru ;
   struct list_head i_sb_list ;
   union __anonunion____missing_field_name_236 __annonCompField67 ;
   u64 i_version ;
   atomic_t i_count ;
   atomic_t i_dio_count ;
   atomic_t i_writecount ;
   atomic_t i_readcount ;
   struct file_operations  const  *i_fop ;
   struct file_lock_context *i_flctx ;
   struct address_space i_data ;
   struct list_head i_devices ;
   union __anonunion____missing_field_name_237 __annonCompField68 ;
   __u32 i_generation ;
   __u32 i_fsnotify_mask ;
   struct hlist_head i_fsnotify_marks ;
   void *i_private ;
};
#line 806 "include/linux/fs.h"
struct fown_struct {
   rwlock_t lock ;
   struct pid *pid ;
   enum pid_type pid_type ;
   kuid_t uid ;
   kuid_t euid ;
   int signum ;
};
#line 814 "include/linux/fs.h"
struct file_ra_state {
   unsigned long start ;
   unsigned int size ;
   unsigned int async_size ;
   unsigned int ra_pages ;
   unsigned int mmap_miss ;
   loff_t prev_pos ;
};
#line 837 "include/linux/fs.h"
union __anonunion_f_u_238 {
   struct llist_node fu_llist ;
   struct callback_head fu_rcuhead ;
};
#line 837 "include/linux/fs.h"
struct file {
   union __anonunion_f_u_238 f_u ;
   struct path f_path ;
   struct inode *f_inode ;
   struct file_operations  const  *f_op ;
   spinlock_t f_lock ;
   atomic_long_t f_count ;
   unsigned int f_flags ;
   fmode_t f_mode ;
   struct mutex f_pos_lock ;
   loff_t f_pos ;
   struct fown_struct f_owner ;
   struct cred  const  *f_cred ;
   struct file_ra_state f_ra ;
   u64 f_version ;
   void *f_security ;
   void *private_data ;
   struct list_head f_ep_links ;
   struct list_head f_tfile_llink ;
   struct address_space *f_mapping ;
};
#line 922 "include/linux/fs.h"
typedef void *fl_owner_t;
#line 923
struct file_lock;
#line 924 "include/linux/fs.h"
struct file_lock_operations {
   void (*fl_copy_lock)(struct file_lock * , struct file_lock * ) ;
   void (*fl_release_private)(struct file_lock * ) ;
};
#line 930 "include/linux/fs.h"
struct lock_manager_operations {
   int (*lm_compare_owner)(struct file_lock * , struct file_lock * ) ;
   unsigned long (*lm_owner_key)(struct file_lock * ) ;
   fl_owner_t (*lm_get_owner)(fl_owner_t  ) ;
   void (*lm_put_owner)(fl_owner_t  ) ;
   void (*lm_notify)(struct file_lock * ) ;
   int (*lm_grant)(struct file_lock * , int  ) ;
   bool (*lm_break)(struct file_lock * ) ;
   int (*lm_change)(struct file_lock * , int  , struct list_head * ) ;
   void (*lm_setup)(struct file_lock * , void ** ) ;
};
#line 951
struct nlm_lockowner;
#line 952 "include/linux/fs.h"
struct nfs_lock_info {
   u32 state ;
   struct nlm_lockowner *owner ;
   struct list_head list ;
};
#line 14 "include/linux/nfs_fs_i.h"
struct nfs4_lock_state;
#line 15 "include/linux/nfs_fs_i.h"
struct nfs4_lock_info {
   struct nfs4_lock_state *owner ;
};
#line 19
struct fasync_struct;
#line 19 "include/linux/nfs_fs_i.h"
struct __anonstruct_afs_240 {
   struct list_head link ;
   int state ;
};
#line 19 "include/linux/nfs_fs_i.h"
union __anonunion_fl_u_239 {
   struct nfs_lock_info nfs_fl ;
   struct nfs4_lock_info nfs4_fl ;
   struct __anonstruct_afs_240 afs ;
};
#line 19 "include/linux/nfs_fs_i.h"
struct file_lock {
   struct file_lock *fl_next ;
   struct list_head fl_list ;
   struct hlist_node fl_link ;
   struct list_head fl_block ;
   fl_owner_t fl_owner ;
   unsigned int fl_flags ;
   unsigned char fl_type ;
   unsigned int fl_pid ;
   int fl_link_cpu ;
   struct pid *fl_nspid ;
   wait_queue_head_t fl_wait ;
   struct file *fl_file ;
   loff_t fl_start ;
   loff_t fl_end ;
   struct fasync_struct *fl_fasync ;
   unsigned long fl_break_time ;
   unsigned long fl_downgrade_time ;
   struct file_lock_operations  const  *fl_ops ;
   struct lock_manager_operations  const  *fl_lmops ;
   union __anonunion_fl_u_239 fl_u ;
};
#line 1004 "include/linux/fs.h"
struct file_lock_context {
   spinlock_t flc_lock ;
   struct list_head flc_flock ;
   struct list_head flc_posix ;
   struct list_head flc_lease ;
};
#line 1062 "include/linux/fs.h"
struct fasync_struct {
   spinlock_t fa_lock ;
   int magic ;
   int fa_fd ;
   struct fasync_struct *fa_next ;
   struct file *fa_file ;
   struct callback_head fa_rcu ;
};
#line 1240 "include/linux/fs.h"
struct sb_writers {
   struct percpu_counter counter[3U] ;
   wait_queue_head_t wait ;
   int frozen ;
   wait_queue_head_t wait_unfrozen ;
   struct lockdep_map lock_map[3U] ;
};
#line 1271
struct super_operations;
#line 1271
struct xattr_handler;
#line 1271
struct mtd_info;
#line 1271 "include/linux/fs.h"
struct super_block {
   struct list_head s_list ;
   dev_t s_dev ;
   unsigned char s_blocksize_bits ;
   unsigned long s_blocksize ;
   loff_t s_maxbytes ;
   struct file_system_type *s_type ;
   struct super_operations  const  *s_op ;
   struct dquot_operations  const  *dq_op ;
   struct quotactl_ops  const  *s_qcop ;
   struct export_operations  const  *s_export_op ;
   unsigned long s_flags ;
   unsigned long s_iflags ;
   unsigned long s_magic ;
   struct dentry *s_root ;
   struct rw_semaphore s_umount ;
   int s_count ;
   atomic_t s_active ;
   void *s_security ;
   struct xattr_handler  const  **s_xattr ;
   struct list_head s_inodes ;
   struct hlist_bl_head s_anon ;
   struct list_head s_mounts ;
   struct block_device *s_bdev ;
   struct backing_dev_info *s_bdi ;
   struct mtd_info *s_mtd ;
   struct hlist_node s_instances ;
   unsigned int s_quota_types ;
   struct quota_info s_dquot ;
   struct sb_writers s_writers ;
   char s_id[32U] ;
   u8 s_uuid[16U] ;
   void *s_fs_info ;
   unsigned int s_max_links ;
   fmode_t s_mode ;
   u32 s_time_gran ;
   struct mutex s_vfs_rename_mutex ;
   char *s_subtype ;
   char *s_options ;
   struct dentry_operations  const  *s_d_op ;
   int cleancache_poolid ;
   struct shrinker s_shrink ;
   atomic_long_t s_remove_count ;
   int s_readonly_remount ;
   struct workqueue_struct *s_dio_done_wq ;
   struct hlist_head s_pins ;
   struct list_lru s_dentry_lru ;
   struct list_lru s_inode_lru ;
   struct callback_head rcu ;
   int s_stack_depth ;
};
#line 1510 "include/linux/fs.h"
struct fiemap_extent_info {
   unsigned int fi_flags ;
   unsigned int fi_extents_mapped ;
   unsigned int fi_extents_max ;
   struct fiemap_extent *fi_extents_start ;
};
#line 1524
struct dir_context;
#line 1549 "include/linux/fs.h"
struct dir_context {
   int (*actor)(struct dir_context * , char const   * , int  , loff_t  , u64  , unsigned int  ) ;
   loff_t pos ;
};
#line 1556 "include/linux/fs.h"
struct file_operations {
   struct module *owner ;
   loff_t (*llseek)(struct file * , loff_t  , int  ) ;
   ssize_t (*read)(struct file * , char * , size_t  , loff_t * ) ;
   ssize_t (*write)(struct file * , char const   * , size_t  , loff_t * ) ;
   ssize_t (*read_iter)(struct kiocb * , struct iov_iter * ) ;
   ssize_t (*write_iter)(struct kiocb * , struct iov_iter * ) ;
   int (*iterate)(struct file * , struct dir_context * ) ;
   unsigned int (*poll)(struct file * , struct poll_table_struct * ) ;
   long (*unlocked_ioctl)(struct file * , unsigned int  , unsigned long  ) ;
   long (*compat_ioctl)(struct file * , unsigned int  , unsigned long  ) ;
   int (*mmap)(struct file * , struct vm_area_struct * ) ;
   int (*mremap)(struct file * , struct vm_area_struct * ) ;
   int (*open)(struct inode * , struct file * ) ;
   int (*flush)(struct file * , fl_owner_t  ) ;
   int (*release)(struct inode * , struct file * ) ;
   int (*fsync)(struct file * , loff_t  , loff_t  , int  ) ;
   int (*aio_fsync)(struct kiocb * , int  ) ;
   int (*fasync)(int  , struct file * , int  ) ;
   int (*lock)(struct file * , int  , struct file_lock * ) ;
   ssize_t (*sendpage)(struct file * , struct page * , int  , size_t  , loff_t * ,
                       int  ) ;
   unsigned long (*get_unmapped_area)(struct file * , unsigned long  , unsigned long  ,
                                      unsigned long  , unsigned long  ) ;
   int (*check_flags)(int  ) ;
   int (*flock)(struct file * , int  , struct file_lock * ) ;
   ssize_t (*splice_write)(struct pipe_inode_info * , struct file * , loff_t * , size_t  ,
                           unsigned int  ) ;
   ssize_t (*splice_read)(struct file * , loff_t * , struct pipe_inode_info * , size_t  ,
                          unsigned int  ) ;
   int (*setlease)(struct file * , long  , struct file_lock ** , void ** ) ;
   long (*fallocate)(struct file * , int  , loff_t  , loff_t  ) ;
   void (*show_fdinfo)(struct seq_file * , struct file * ) ;
};
#line 1617 "include/linux/fs.h"
struct inode_operations {
   struct dentry *(*lookup)(struct inode * , struct dentry * , unsigned int  ) ;
   char const   *(*follow_link)(struct dentry * , void ** ) ;
   int (*permission)(struct inode * , int  ) ;
   struct posix_acl *(*get_acl)(struct inode * , int  ) ;
   int (*readlink)(struct dentry * , char * , int  ) ;
   void (*put_link)(struct inode * , void * ) ;
   int (*create)(struct inode * , struct dentry * , umode_t  , bool  ) ;
   int (*link)(struct dentry * , struct inode * , struct dentry * ) ;
   int (*unlink)(struct inode * , struct dentry * ) ;
   int (*symlink)(struct inode * , struct dentry * , char const   * ) ;
   int (*mkdir)(struct inode * , struct dentry * , umode_t  ) ;
   int (*rmdir)(struct inode * , struct dentry * ) ;
   int (*mknod)(struct inode * , struct dentry * , umode_t  , dev_t  ) ;
   int (*rename)(struct inode * , struct dentry * , struct inode * , struct dentry * ) ;
   int (*rename2)(struct inode * , struct dentry * , struct inode * , struct dentry * ,
                  unsigned int  ) ;
   int (*setattr)(struct dentry * , struct iattr * ) ;
   int (*getattr)(struct vfsmount * , struct dentry * , struct kstat * ) ;
   int (*setxattr)(struct dentry * , char const   * , void const   * , size_t  , int  ) ;
   ssize_t (*getxattr)(struct dentry * , char const   * , void * , size_t  ) ;
   ssize_t (*listxattr)(struct dentry * , char * , size_t  ) ;
   int (*removexattr)(struct dentry * , char const   * ) ;
   int (*fiemap)(struct inode * , struct fiemap_extent_info * , u64  , u64  ) ;
   int (*update_time)(struct inode * , struct timespec * , int  ) ;
   int (*atomic_open)(struct inode * , struct dentry * , struct file * , unsigned int  ,
                      umode_t  , int * ) ;
   int (*tmpfile)(struct inode * , struct dentry * , umode_t  ) ;
   int (*set_acl)(struct inode * , struct posix_acl * , int  ) ;
};
#line 1671 "include/linux/fs.h"
struct super_operations {
   struct inode *(*alloc_inode)(struct super_block * ) ;
   void (*destroy_inode)(struct inode * ) ;
   void (*dirty_inode)(struct inode * , int  ) ;
   int (*write_inode)(struct inode * , struct writeback_control * ) ;
   int (*drop_inode)(struct inode * ) ;
   void (*evict_inode)(struct inode * ) ;
   void (*put_super)(struct super_block * ) ;
   int (*sync_fs)(struct super_block * , int  ) ;
   int (*freeze_super)(struct super_block * ) ;
   int (*freeze_fs)(struct super_block * ) ;
   int (*thaw_super)(struct super_block * ) ;
   int (*unfreeze_fs)(struct super_block * ) ;
   int (*statfs)(struct dentry * , struct kstatfs * ) ;
   int (*remount_fs)(struct super_block * , int * , char * ) ;
   void (*umount_begin)(struct super_block * ) ;
   int (*show_options)(struct seq_file * , struct dentry * ) ;
   int (*show_devname)(struct seq_file * , struct dentry * ) ;
   int (*show_path)(struct seq_file * , struct dentry * ) ;
   int (*show_stats)(struct seq_file * , struct dentry * ) ;
   ssize_t (*quota_read)(struct super_block * , int  , char * , size_t  , loff_t  ) ;
   ssize_t (*quota_write)(struct super_block * , int  , char const   * , size_t  ,
                          loff_t  ) ;
   struct dquot **(*get_dquots)(struct inode * ) ;
   int (*bdev_try_to_free_page)(struct super_block * , struct page * , gfp_t  ) ;
   long (*nr_cached_objects)(struct super_block * , struct shrink_control * ) ;
   long (*free_cached_objects)(struct super_block * , struct shrink_control * ) ;
};
#line 1910 "include/linux/fs.h"
struct file_system_type {
   char const   *name ;
   int fs_flags ;
   struct dentry *(*mount)(struct file_system_type * , int  , char const   * , void * ) ;
   void (*kill_sb)(struct super_block * ) ;
   struct module *owner ;
   struct file_system_type *next ;
   struct hlist_head fs_supers ;
   struct lock_class_key s_lock_key ;
   struct lock_class_key s_umount_key ;
   struct lock_class_key s_vfs_rename_key ;
   struct lock_class_key s_writers_key[3U] ;
   struct lock_class_key i_lock_key ;
   struct lock_class_key i_mutex_key ;
   struct lock_class_key i_mutex_dir_key ;
};
#line 62 "./arch/x86/include/asm/uaccess.h"
struct exception_table_entry {
   int insn ;
   int fixup ;
};
#line 744 "./arch/x86/include/asm/uaccess.h"
struct pollfd {
   int fd ;
   short events ;
   short revents ;
};
#line 32 "include/linux/poll.h"
struct poll_table_struct {
   void (*_qproc)(struct file * , wait_queue_head_t * , struct poll_table_struct * ) ;
   unsigned long _key ;
};
#line 40 "include/linux/poll.h"
typedef struct poll_table_struct poll_table;
#line 28 "include/linux/file.h"
struct fd {
   struct file *file ;
   unsigned int flags ;
};
#line 75 "include/linux/file.h"
struct cdev {
   struct kobject kobj ;
   struct module *owner ;
   struct file_operations  const  *ops ;
   struct list_head list ;
   dev_t dev ;
   unsigned int count ;
};
#line 207 "include/linux/mm.h"
struct vm_fault {
   unsigned int flags ;
   unsigned long pgoff ;
   void *virtual_address ;
   struct page *cow_page ;
   struct page *page ;
   unsigned long max_pgoff ;
   pte_t *pte ;
};
#line 239 "include/linux/mm.h"
struct vm_operations_struct {
   void (*open)(struct vm_area_struct * ) ;
   void (*close)(struct vm_area_struct * ) ;
   int (*fault)(struct vm_area_struct * , struct vm_fault * ) ;
   void (*map_pages)(struct vm_area_struct * , struct vm_fault * ) ;
   int (*page_mkwrite)(struct vm_area_struct * , struct vm_fault * ) ;
   int (*pfn_mkwrite)(struct vm_area_struct * , struct vm_fault * ) ;
   int (*access)(struct vm_area_struct * , unsigned long  , void * , int  , int  ) ;
   char const   *(*name)(struct vm_area_struct * ) ;
   int (*set_policy)(struct vm_area_struct * , struct mempolicy * ) ;
   struct mempolicy *(*get_policy)(struct vm_area_struct * , unsigned long  ) ;
   struct page *(*find_special_page)(struct vm_area_struct * , unsigned long  ) ;
};
#line 2253 "include/linux/mm.h"
struct dma_attrs {
   unsigned long flags[1U] ;
};
#line 70 "include/linux/dma-attrs.h"
enum dma_data_direction {
    DMA_BIDIRECTIONAL = 0,
    DMA_TO_DEVICE = 1,
    DMA_FROM_DEVICE = 2,
    DMA_NONE = 3
} ;
#line 77 "include/linux/dma-attrs.h"
struct scatterlist {
   unsigned long sg_magic ;
   unsigned long page_link ;
   unsigned int offset ;
   unsigned int length ;
   dma_addr_t dma_address ;
   unsigned int dma_length ;
};
#line 21 "include/linux/scatterlist.h"
struct sg_table {
   struct scatterlist *sgl ;
   unsigned int nents ;
   unsigned int orig_nents ;
};
#line 380 "include/linux/scatterlist.h"
struct dma_map_ops {
   void *(*alloc)(struct device * , size_t  , dma_addr_t * , gfp_t  , struct dma_attrs * ) ;
   void (*free)(struct device * , size_t  , void * , dma_addr_t  , struct dma_attrs * ) ;
   int (*mmap)(struct device * , struct vm_area_struct * , void * , dma_addr_t  ,
               size_t  , struct dma_attrs * ) ;
   int (*get_sgtable)(struct device * , struct sg_table * , void * , dma_addr_t  ,
                      size_t  , struct dma_attrs * ) ;
   dma_addr_t (*map_page)(struct device * , struct page * , unsigned long  , size_t  ,
                          enum dma_data_direction  , struct dma_attrs * ) ;
   void (*unmap_page)(struct device * , dma_addr_t  , size_t  , enum dma_data_direction  ,
                      struct dma_attrs * ) ;
   int (*map_sg)(struct device * , struct scatterlist * , int  , enum dma_data_direction  ,
                 struct dma_attrs * ) ;
   void (*unmap_sg)(struct device * , struct scatterlist * , int  , enum dma_data_direction  ,
                    struct dma_attrs * ) ;
   void (*sync_single_for_cpu)(struct device * , dma_addr_t  , size_t  , enum dma_data_direction  ) ;
   void (*sync_single_for_device)(struct device * , dma_addr_t  , size_t  , enum dma_data_direction  ) ;
   void (*sync_sg_for_cpu)(struct device * , struct scatterlist * , int  , enum dma_data_direction  ) ;
   void (*sync_sg_for_device)(struct device * , struct scatterlist * , int  , enum dma_data_direction  ) ;
   int (*mapping_error)(struct device * , dma_addr_t  ) ;
   int (*dma_supported)(struct device * , u64  ) ;
   int (*set_dma_mask)(struct device * , u64  ) ;
   int is_phys ;
};
#line 142 "include/uapi/linux/if_ether.h"
struct mmu_notifier;
#line 143
struct mmu_notifier_ops;
#line 144 "include/uapi/linux/if_ether.h"
struct mmu_notifier_mm {
   struct hlist_head list ;
   spinlock_t lock ;
};
#line 26 "include/linux/mmu_notifier.h"
struct mmu_notifier_ops {
   void (*release)(struct mmu_notifier * , struct mm_struct * ) ;
   int (*clear_flush_young)(struct mmu_notifier * , struct mm_struct * , unsigned long  ,
                            unsigned long  ) ;
   int (*test_young)(struct mmu_notifier * , struct mm_struct * , unsigned long  ) ;
   void (*change_pte)(struct mmu_notifier * , struct mm_struct * , unsigned long  ,
                      pte_t  ) ;
   void (*invalidate_page)(struct mmu_notifier * , struct mm_struct * , unsigned long  ) ;
   void (*invalidate_range_start)(struct mmu_notifier * , struct mm_struct * , unsigned long  ,
                                  unsigned long  ) ;
   void (*invalidate_range_end)(struct mmu_notifier * , struct mm_struct * , unsigned long  ,
                                unsigned long  ) ;
   void (*invalidate_range)(struct mmu_notifier * , struct mm_struct * , unsigned long  ,
                            unsigned long  ) ;
};
#line 170 "include/linux/mmu_notifier.h"
struct mmu_notifier {
   struct hlist_node hlist ;
   struct mmu_notifier_ops  const  *ops ;
};
#line 58 "include/rdma/ib_verbs.h"
struct __anonstruct_global_242 {
   __be64 subnet_prefix ;
   __be64 interface_id ;
};
#line 58 "include/rdma/ib_verbs.h"
union ib_gid {
   u8 raw[16U] ;
   struct __anonstruct_global_242 global ;
};
#line 93
enum rdma_link_layer {
    IB_LINK_LAYER_UNSPECIFIED = 0,
    IB_LINK_LAYER_INFINIBAND = 1,
    IB_LINK_LAYER_ETHERNET = 2
} ;
#line 141
enum ib_atomic_cap {
    IB_ATOMIC_NONE = 0,
    IB_ATOMIC_HCA = 1,
    IB_ATOMIC_GLOB = 2
} ;
#line 159 "include/rdma/ib_verbs.h"
struct __anonstruct_per_transport_caps_243 {
   uint32_t rc_odp_caps ;
   uint32_t uc_odp_caps ;
   uint32_t ud_odp_caps ;
};
#line 159 "include/rdma/ib_verbs.h"
struct ib_odp_caps {
   uint64_t general_caps ;
   struct __anonstruct_per_transport_caps_243 per_transport_caps ;
};
#line 179 "include/rdma/ib_verbs.h"
struct ib_cq_init_attr {
   unsigned int cqe ;
   int comp_vector ;
   u32 flags ;
};
#line 185 "include/rdma/ib_verbs.h"
struct ib_device_attr {
   u64 fw_ver ;
   __be64 sys_image_guid ;
   u64 max_mr_size ;
   u64 page_size_cap ;
   u32 vendor_id ;
   u32 vendor_part_id ;
   u32 hw_ver ;
   int max_qp ;
   int max_qp_wr ;
   int device_cap_flags ;
   int max_sge ;
   int max_sge_rd ;
   int max_cq ;
   int max_cqe ;
   int max_mr ;
   int max_pd ;
   int max_qp_rd_atom ;
   int max_ee_rd_atom ;
   int max_res_rd_atom ;
   int max_qp_init_rd_atom ;
   int max_ee_init_rd_atom ;
   enum ib_atomic_cap atomic_cap ;
   enum ib_atomic_cap masked_atomic_cap ;
   int max_ee ;
   int max_rdd ;
   int max_mw ;
   int max_raw_ipv6_qp ;
   int max_raw_ethy_qp ;
   int max_mcast_grp ;
   int max_mcast_qp_attach ;
   int max_total_mcast_qp_attach ;
   int max_ah ;
   int max_fmr ;
   int max_map_per_fmr ;
   int max_srq ;
   int max_srq_wr ;
   int max_srq_sge ;
   unsigned int max_fast_reg_page_list_len ;
   u16 max_pkeys ;
   u8 local_ca_ack_delay ;
   int sig_prot_cap ;
   int sig_guard_cap ;
   struct ib_odp_caps odp_caps ;
   uint64_t timestamp_mask ;
   uint64_t hca_core_clock ;
};
#line 233
enum ib_mtu {
    IB_MTU_256 = 1,
    IB_MTU_512 = 2,
    IB_MTU_1024 = 3,
    IB_MTU_2048 = 4,
    IB_MTU_4096 = 5
} ;
#line 253
enum ib_port_state {
    IB_PORT_NOP = 0,
    IB_PORT_DOWN = 1,
    IB_PORT_INIT = 2,
    IB_PORT_ARMED = 3,
    IB_PORT_ACTIVE = 4,
    IB_PORT_ACTIVE_DEFER = 5
} ;
#line 316 "include/rdma/ib_verbs.h"
struct ib_protocol_stats {

};
#line 319 "include/rdma/ib_verbs.h"
struct iw_protocol_stats {
   u64 ipInReceives ;
   u64 ipInHdrErrors ;
   u64 ipInTooBigErrors ;
   u64 ipInNoRoutes ;
   u64 ipInAddrErrors ;
   u64 ipInUnknownProtos ;
   u64 ipInTruncatedPkts ;
   u64 ipInDiscards ;
   u64 ipInDelivers ;
   u64 ipOutForwDatagrams ;
   u64 ipOutRequests ;
   u64 ipOutDiscards ;
   u64 ipOutNoRoutes ;
   u64 ipReasmTimeout ;
   u64 ipReasmReqds ;
   u64 ipReasmOKs ;
   u64 ipReasmFails ;
   u64 ipFragOKs ;
   u64 ipFragFails ;
   u64 ipFragCreates ;
   u64 ipInMcastPkts ;
   u64 ipOutMcastPkts ;
   u64 ipInBcastPkts ;
   u64 ipOutBcastPkts ;
   u64 tcpRtoAlgorithm ;
   u64 tcpRtoMin ;
   u64 tcpRtoMax ;
   u64 tcpMaxConn ;
   u64 tcpActiveOpens ;
   u64 tcpPassiveOpens ;
   u64 tcpAttemptFails ;
   u64 tcpEstabResets ;
   u64 tcpCurrEstab ;
   u64 tcpInSegs ;
   u64 tcpOutSegs ;
   u64 tcpRetransSegs ;
   u64 tcpInErrs ;
   u64 tcpOutRsts ;
};
#line 362 "include/rdma/ib_verbs.h"
union rdma_protocol_stats {
   struct ib_protocol_stats ib ;
   struct iw_protocol_stats iw ;
};
#line 367 "include/rdma/ib_verbs.h"
struct ib_port_attr {
   enum ib_port_state state ;
   enum ib_mtu max_mtu ;
   enum ib_mtu active_mtu ;
   int gid_tbl_len ;
   u32 port_cap_flags ;
   u32 max_msg_sz ;
   u32 bad_pkey_cntr ;
   u32 qkey_viol_cntr ;
   u16 pkey_tbl_len ;
   u16 lid ;
   u16 sm_lid ;
   u8 lmc ;
   u8 max_vl_num ;
   u8 sm_sl ;
   u8 subnet_timeout ;
   u8 init_type_reply ;
   u8 active_width ;
   u8 active_speed ;
   u8 phys_state ;
};
#line 430 "include/rdma/ib_verbs.h"
struct ib_device_modify {
   u64 sys_image_guid ;
   char node_desc[64U] ;
};
#line 441 "include/rdma/ib_verbs.h"
struct ib_port_modify {
   u32 set_port_cap_mask ;
   u32 clr_port_cap_mask ;
   u8 init_type ;
};
#line 447
enum ib_event_type {
    IB_EVENT_CQ_ERR = 0,
    IB_EVENT_QP_FATAL = 1,
    IB_EVENT_QP_REQ_ERR = 2,
    IB_EVENT_QP_ACCESS_ERR = 3,
    IB_EVENT_COMM_EST = 4,
    IB_EVENT_SQ_DRAINED = 5,
    IB_EVENT_PATH_MIG = 6,
    IB_EVENT_PATH_MIG_ERR = 7,
    IB_EVENT_DEVICE_FATAL = 8,
    IB_EVENT_PORT_ACTIVE = 9,
    IB_EVENT_PORT_ERR = 10,
    IB_EVENT_LID_CHANGE = 11,
    IB_EVENT_PKEY_CHANGE = 12,
    IB_EVENT_SM_CHANGE = 13,
    IB_EVENT_SRQ_ERR = 14,
    IB_EVENT_SRQ_LIMIT_REACHED = 15,
    IB_EVENT_QP_LAST_WQE_REACHED = 16,
    IB_EVENT_CLIENT_REREGISTER = 17,
    IB_EVENT_GID_CHANGE = 18
} ;
#line 471
struct ib_cq;
#line 471
struct ib_qp;
#line 471
struct ib_srq;
#line 471 "include/rdma/ib_verbs.h"
union __anonunion_element_244 {
   struct ib_cq *cq ;
   struct ib_qp *qp ;
   struct ib_srq *srq ;
   u8 port_num ;
};
#line 471 "include/rdma/ib_verbs.h"
struct ib_event {
   struct ib_device *device ;
   union __anonunion_element_244 element ;
   enum ib_event_type event ;
};
#line 482 "include/rdma/ib_verbs.h"
struct ib_event_handler {
   struct ib_device *device ;
   void (*handler)(struct ib_event_handler * , struct ib_event * ) ;
   struct list_head list ;
};
#line 488 "include/rdma/ib_verbs.h"
struct ib_global_route {
   union ib_gid dgid ;
   u32 flow_label ;
   u8 sgid_index ;
   u8 hop_limit ;
   u8 traffic_class ;
};
#line 503 "include/rdma/ib_verbs.h"
struct ib_grh {
   __be32 version_tclass_flow ;
   __be16 paylen ;
   u8 next_hdr ;
   u8 hop_limit ;
   union ib_gid sgid ;
   union ib_gid dgid ;
};
#line 562 "include/rdma/ib_verbs.h"
struct ib_mr_init_attr {
   int max_reg_descriptors ;
   u32 flags ;
};
#line 574
enum ib_signature_type {
    IB_SIG_TYPE_NONE = 0,
    IB_SIG_TYPE_T10_DIF = 1
} ;
#line 579
enum ib_t10_dif_bg_type {
    IB_T10DIF_CRC = 0,
    IB_T10DIF_CSUM = 1
} ;
#line 584 "include/rdma/ib_verbs.h"
struct ib_t10_dif_domain {
   enum ib_t10_dif_bg_type bg_type ;
   u16 pi_interval ;
   u16 bg ;
   u16 app_tag ;
   u32 ref_tag ;
   bool ref_remap ;
   bool app_escape ;
   bool ref_escape ;
   u16 apptag_check_mask ;
};
#line 619 "include/rdma/ib_verbs.h"
union __anonunion_sig_245 {
   struct ib_t10_dif_domain dif ;
};
#line 619 "include/rdma/ib_verbs.h"
struct ib_sig_domain {
   enum ib_signature_type sig_type ;
   union __anonunion_sig_245 sig ;
};
#line 632 "include/rdma/ib_verbs.h"
struct ib_sig_attrs {
   u8 check_mask ;
   struct ib_sig_domain mem ;
   struct ib_sig_domain wire ;
};
#line 644
enum ib_sig_err_type {
    IB_SIG_BAD_GUARD = 0,
    IB_SIG_BAD_REFTAG = 1,
    IB_SIG_BAD_APPTAG = 2
} ;
#line 650 "include/rdma/ib_verbs.h"
struct ib_sig_err {
   enum ib_sig_err_type err_type ;
   u32 expected ;
   u32 actual ;
   u64 sig_err_offset ;
   u32 key ;
};
#line 665 "include/rdma/ib_verbs.h"
struct ib_mr_status {
   u32 fail_status ;
   struct ib_sig_err sig_err ;
};
#line 685 "include/rdma/ib_verbs.h"
struct ib_ah_attr {
   struct ib_global_route grh ;
   u16 dlid ;
   u8 sl ;
   u8 src_path_bits ;
   u8 static_rate ;
   u8 ah_flags ;
   u8 port_num ;
   u8 dmac[6U] ;
   u16 vlan_id ;
};
#line 697
enum ib_wc_status {
    IB_WC_SUCCESS = 0,
    IB_WC_LOC_LEN_ERR = 1,
    IB_WC_LOC_QP_OP_ERR = 2,
    IB_WC_LOC_EEC_OP_ERR = 3,
    IB_WC_LOC_PROT_ERR = 4,
    IB_WC_WR_FLUSH_ERR = 5,
    IB_WC_MW_BIND_ERR = 6,
    IB_WC_BAD_RESP_ERR = 7,
    IB_WC_LOC_ACCESS_ERR = 8,
    IB_WC_REM_INV_REQ_ERR = 9,
    IB_WC_REM_ACCESS_ERR = 10,
    IB_WC_REM_OP_ERR = 11,
    IB_WC_RETRY_EXC_ERR = 12,
    IB_WC_RNR_RETRY_EXC_ERR = 13,
    IB_WC_LOC_RDD_VIOL_ERR = 14,
    IB_WC_REM_INV_RD_REQ_ERR = 15,
    IB_WC_REM_ABORT_ERR = 16,
    IB_WC_INV_EECN_ERR = 17,
    IB_WC_INV_EEC_STATE_ERR = 18,
    IB_WC_FATAL_ERR = 19,
    IB_WC_RESP_TIMEOUT_ERR = 20,
    IB_WC_GENERAL_ERR = 21
} ;
#line 724
enum ib_wc_opcode {
    IB_WC_SEND = 0,
    IB_WC_RDMA_WRITE = 1,
    IB_WC_RDMA_READ = 2,
    IB_WC_COMP_SWAP = 3,
    IB_WC_FETCH_ADD = 4,
    IB_WC_BIND_MW = 5,
    IB_WC_LSO = 6,
    IB_WC_LOCAL_INV = 7,
    IB_WC_FAST_REG_MR = 8,
    IB_WC_MASKED_COMP_SWAP = 9,
    IB_WC_MASKED_FETCH_ADD = 10,
    IB_WC_RECV = 128,
    IB_WC_RECV_RDMA_WITH_IMM = 129
} ;
#line 749 "include/rdma/ib_verbs.h"
union __anonunion_ex_246 {
   __be32 imm_data ;
   u32 invalidate_rkey ;
};
#line 749 "include/rdma/ib_verbs.h"
struct ib_wc {
   u64 wr_id ;
   enum ib_wc_status status ;
   enum ib_wc_opcode opcode ;
   u32 vendor_err ;
   u32 byte_len ;
   struct ib_qp *qp ;
   union __anonunion_ex_246 ex ;
   u32 src_qp ;
   int wc_flags ;
   u16 pkey_index ;
   u16 slid ;
   u8 sl ;
   u8 dlid_path_bits ;
   u8 port_num ;
   u8 smac[6U] ;
   u16 vlan_id ;
};
#line 775
enum ib_cq_notify_flags {
    IB_CQ_SOLICITED = 1,
    IB_CQ_NEXT_COMP = 2,
    IB_CQ_SOLICITED_MASK = 3,
    IB_CQ_REPORT_MISSED_EVENTS = 4
} ;
#line 782
enum ib_srq_type {
    IB_SRQT_BASIC = 0,
    IB_SRQT_XRC = 1
} ;
#line 787
enum ib_srq_attr_mask {
    IB_SRQ_MAX_WR = 1,
    IB_SRQ_LIMIT = 2
} ;
#line 792 "include/rdma/ib_verbs.h"
struct ib_srq_attr {
   u32 max_wr ;
   u32 max_sge ;
   u32 srq_limit ;
};
#line 798
struct ib_xrcd;
#line 798 "include/rdma/ib_verbs.h"
struct __anonstruct_xrc_248 {
   struct ib_xrcd *xrcd ;
   struct ib_cq *cq ;
};
#line 798 "include/rdma/ib_verbs.h"
union __anonunion_ext_247 {
   struct __anonstruct_xrc_248 xrc ;
};
#line 798 "include/rdma/ib_verbs.h"
struct ib_srq_init_attr {
   void (*event_handler)(struct ib_event * , void * ) ;
   void *srq_context ;
   struct ib_srq_attr attr ;
   enum ib_srq_type srq_type ;
   union __anonunion_ext_247 ext ;
};
#line 812 "include/rdma/ib_verbs.h"
struct ib_qp_cap {
   u32 max_send_wr ;
   u32 max_recv_wr ;
   u32 max_send_sge ;
   u32 max_recv_sge ;
   u32 max_inline_data ;
};
#line 820
enum ib_sig_type {
    IB_SIGNAL_ALL_WR = 0,
    IB_SIGNAL_REQ_WR = 1
} ;
#line 825
enum ib_qp_type {
    IB_QPT_SMI = 0,
    IB_QPT_GSI = 1,
    IB_QPT_RC = 2,
    IB_QPT_UC = 3,
    IB_QPT_UD = 4,
    IB_QPT_RAW_IPV6 = 5,
    IB_QPT_RAW_ETHERTYPE = 6,
    IB_QPT_RAW_PACKET = 8,
    IB_QPT_XRC_INI = 9,
    IB_QPT_XRC_TGT = 10,
    IB_QPT_MAX = 11,
    IB_QPT_RESERVED1 = 4096,
    IB_QPT_RESERVED2 = 4097,
    IB_QPT_RESERVED3 = 4098,
    IB_QPT_RESERVED4 = 4099,
    IB_QPT_RESERVED5 = 4100,
    IB_QPT_RESERVED6 = 4101,
    IB_QPT_RESERVED7 = 4102,
    IB_QPT_RESERVED8 = 4103,
    IB_QPT_RESERVED9 = 4104,
    IB_QPT_RESERVED10 = 4105
} ;
#line 849
enum ib_qp_create_flags {
    IB_QP_CREATE_IPOIB_UD_LSO = 1,
    IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 2,
    IB_QP_CREATE_NETIF_QP = 32,
    IB_QP_CREATE_SIGNATURE_EN = 64,
    IB_QP_CREATE_USE_GFP_NOIO = 128,
    IB_QP_CREATE_RESERVED_START = 67108864,
    IB_QP_CREATE_RESERVED_END = (-0x7FFFFFFF-1)
} ;
#line 859 "include/rdma/ib_verbs.h"
struct ib_qp_init_attr {
   void (*event_handler)(struct ib_event * , void * ) ;
   void *qp_context ;
   struct ib_cq *send_cq ;
   struct ib_cq *recv_cq ;
   struct ib_srq *srq ;
   struct ib_xrcd *xrcd ;
   struct ib_qp_cap cap ;
   enum ib_sig_type sq_sig_type ;
   enum ib_qp_type qp_type ;
   enum ib_qp_create_flags create_flags ;
   u8 port_num ;
};
#line 960
enum ib_qp_state {
    IB_QPS_RESET = 0,
    IB_QPS_INIT = 1,
    IB_QPS_RTR = 2,
    IB_QPS_RTS = 3,
    IB_QPS_SQD = 4,
    IB_QPS_SQE = 5,
    IB_QPS_ERR = 6
} ;
#line 970
enum ib_mig_state {
    IB_MIG_MIGRATED = 0,
    IB_MIG_REARM = 1,
    IB_MIG_ARMED = 2
} ;
#line 976
enum ib_mw_type {
    IB_MW_TYPE_1 = 1,
    IB_MW_TYPE_2 = 2
} ;
#line 981 "include/rdma/ib_verbs.h"
struct ib_qp_attr {
   enum ib_qp_state qp_state ;
   enum ib_qp_state cur_qp_state ;
   enum ib_mtu path_mtu ;
   enum ib_mig_state path_mig_state ;
   u32 qkey ;
   u32 rq_psn ;
   u32 sq_psn ;
   u32 dest_qp_num ;
   int qp_access_flags ;
   struct ib_qp_cap cap ;
   struct ib_ah_attr ah_attr ;
   struct ib_ah_attr alt_ah_attr ;
   u16 pkey_index ;
   u16 alt_pkey_index ;
   u8 en_sqd_async_notify ;
   u8 sq_draining ;
   u8 max_rd_atomic ;
   u8 max_dest_rd_atomic ;
   u8 min_rnr_timer ;
   u8 port_num ;
   u8 timeout ;
   u8 retry_cnt ;
   u8 rnr_retry ;
   u8 alt_port_num ;
   u8 alt_timeout ;
   u8 smac[6U] ;
   u8 alt_smac[6U] ;
   u16 vlan_id ;
   u16 alt_vlan_id ;
};
#line 1013
enum ib_wr_opcode {
    IB_WR_RDMA_WRITE = 0,
    IB_WR_RDMA_WRITE_WITH_IMM = 1,
    IB_WR_SEND = 2,
    IB_WR_SEND_WITH_IMM = 3,
    IB_WR_RDMA_READ = 4,
    IB_WR_ATOMIC_CMP_AND_SWP = 5,
    IB_WR_ATOMIC_FETCH_AND_ADD = 6,
    IB_WR_LSO = 7,
    IB_WR_SEND_WITH_INV = 8,
    IB_WR_RDMA_READ_WITH_INV = 9,
    IB_WR_LOCAL_INV = 10,
    IB_WR_FAST_REG_MR = 11,
    IB_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
    IB_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
    IB_WR_BIND_MW = 14,
    IB_WR_REG_SIG_MR = 15,
    IB_WR_RESERVED1 = 240,
    IB_WR_RESERVED2 = 241,
    IB_WR_RESERVED3 = 242,
    IB_WR_RESERVED4 = 243,
    IB_WR_RESERVED5 = 244,
    IB_WR_RESERVED6 = 245,
    IB_WR_RESERVED7 = 246,
    IB_WR_RESERVED8 = 247,
    IB_WR_RESERVED9 = 248,
    IB_WR_RESERVED10 = 249
} ;
#line 1052 "include/rdma/ib_verbs.h"
struct ib_sge {
   u64 addr ;
   u32 length ;
   u32 lkey ;
};
#line 1063 "include/rdma/ib_verbs.h"
struct ib_fast_reg_page_list {
   struct ib_device *device ;
   u64 *page_list ;
   unsigned int max_page_list_len ;
};
#line 1069
struct ib_mr;
#line 1069 "include/rdma/ib_verbs.h"
struct ib_mw_bind_info {
   struct ib_mr *mr ;
   u64 addr ;
   u64 length ;
   int mw_access_flags ;
};
#line 1086 "include/rdma/ib_verbs.h"
union __anonunion_ex_249 {
   __be32 imm_data ;
   u32 invalidate_rkey ;
};
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_rdma_251 {
   u64 remote_addr ;
   u32 rkey ;
};
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_atomic_252 {
   u64 remote_addr ;
   u64 compare_add ;
   u64 swap ;
   u64 compare_add_mask ;
   u64 swap_mask ;
   u32 rkey ;
};
#line 1086
struct ib_ah;
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_ud_253 {
   struct ib_ah *ah ;
   void *header ;
   int hlen ;
   int mss ;
   u32 remote_qpn ;
   u32 remote_qkey ;
   u16 pkey_index ;
   u8 port_num ;
};
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_fast_reg_254 {
   u64 iova_start ;
   struct ib_fast_reg_page_list *page_list ;
   unsigned int page_shift ;
   unsigned int page_list_len ;
   u32 length ;
   int access_flags ;
   u32 rkey ;
};
#line 1086
struct ib_mw;
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_bind_mw_255 {
   struct ib_mw *mw ;
   u32 rkey ;
   struct ib_mw_bind_info bind_info ;
};
#line 1086 "include/rdma/ib_verbs.h"
struct __anonstruct_sig_handover_256 {
   struct ib_sig_attrs *sig_attrs ;
   struct ib_mr *sig_mr ;
   int access_flags ;
   struct ib_sge *prot ;
};
#line 1086 "include/rdma/ib_verbs.h"
union __anonunion_wr_250 {
   struct __anonstruct_rdma_251 rdma ;
   struct __anonstruct_atomic_252 atomic ;
   struct __anonstruct_ud_253 ud ;
   struct __anonstruct_fast_reg_254 fast_reg ;
   struct __anonstruct_bind_mw_255 bind_mw ;
   struct __anonstruct_sig_handover_256 sig_handover ;
};
#line 1086 "include/rdma/ib_verbs.h"
struct ib_send_wr {
   struct ib_send_wr *next ;
   u64 wr_id ;
   struct ib_sge *sg_list ;
   int num_sge ;
   enum ib_wr_opcode opcode ;
   int send_flags ;
   union __anonunion_ex_249 ex ;
   union __anonunion_wr_250 wr ;
   u32 xrc_remote_srq_num ;
};
#line 1145 "include/rdma/ib_verbs.h"
struct ib_recv_wr {
   struct ib_recv_wr *next ;
   u64 wr_id ;
   struct ib_sge *sg_list ;
   int num_sge ;
};
#line 1162 "include/rdma/ib_verbs.h"
struct ib_phys_buf {
   u64 addr ;
   u64 size ;
};
#line 1167
struct ib_pd;
#line 1167 "include/rdma/ib_verbs.h"
struct ib_mr_attr {
   struct ib_pd *pd ;
   u64 device_virt_addr ;
   u64 size ;
   int mr_access_flags ;
   u32 lkey ;
   u32 rkey ;
};
#line 1183 "include/rdma/ib_verbs.h"
struct ib_mw_bind {
   u64 wr_id ;
   int send_flags ;
   struct ib_mw_bind_info bind_info ;
};
#line 1195 "include/rdma/ib_verbs.h"
struct ib_fmr_attr {
   int max_pages ;
   int max_maps ;
   u8 page_shift ;
};
#line 1201
struct ib_umem;
#line 1202 "include/rdma/ib_verbs.h"
struct ib_ucontext {
   struct ib_device *device ;
   struct list_head pd_list ;
   struct list_head mr_list ;
   struct list_head mw_list ;
   struct list_head cq_list ;
   struct list_head qp_list ;
   struct list_head srq_list ;
   struct list_head ah_list ;
   struct list_head xrcd_list ;
   struct list_head rule_list ;
   int closing ;
   struct pid *tgid ;
   struct rb_root umem_tree ;
   struct rw_semaphore umem_rwsem ;
   void (*invalidate_range)(struct ib_umem * , unsigned long  , unsigned long  ) ;
   struct mmu_notifier mn ;
   atomic_t notifier_count ;
   struct list_head no_private_counters ;
   int odp_mrs_count ;
};
#line 1234 "include/rdma/ib_verbs.h"
struct ib_uobject {
   u64 user_handle ;
   struct ib_ucontext *context ;
   void *object ;
   struct list_head list ;
   int id ;
   struct kref ref ;
   struct rw_semaphore mutex ;
   int live ;
};
#line 1246 "include/rdma/ib_verbs.h"
struct ib_udata {
   void const   *inbuf ;
   void *outbuf ;
   size_t inlen ;
   size_t outlen ;
};
#line 1253 "include/rdma/ib_verbs.h"
struct ib_pd {
   struct ib_device *device ;
   struct ib_uobject *uobject ;
   atomic_t usecnt ;
};
#line 1259 "include/rdma/ib_verbs.h"
struct ib_xrcd {
   struct ib_device *device ;
   atomic_t usecnt ;
   struct inode *inode ;
   struct mutex tgt_qp_mutex ;
   struct list_head tgt_qp_list ;
};
#line 1268 "include/rdma/ib_verbs.h"
struct ib_ah {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct ib_uobject *uobject ;
};
#line 1276 "include/rdma/ib_verbs.h"
struct ib_cq {
   struct ib_device *device ;
   struct ib_uobject *uobject ;
   void (*comp_handler)(struct ib_cq * , void * ) ;
   void (*event_handler)(struct ib_event * , void * ) ;
   void *cq_context ;
   int cqe ;
   atomic_t usecnt ;
};
#line 1286 "include/rdma/ib_verbs.h"
struct __anonstruct_xrc_258 {
   struct ib_xrcd *xrcd ;
   struct ib_cq *cq ;
   u32 srq_num ;
};
#line 1286 "include/rdma/ib_verbs.h"
union __anonunion_ext_257 {
   struct __anonstruct_xrc_258 xrc ;
};
#line 1286 "include/rdma/ib_verbs.h"
struct ib_srq {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct ib_uobject *uobject ;
   void (*event_handler)(struct ib_event * , void * ) ;
   void *srq_context ;
   enum ib_srq_type srq_type ;
   atomic_t usecnt ;
   union __anonunion_ext_257 ext ;
};
#line 1304 "include/rdma/ib_verbs.h"
struct ib_qp {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct ib_cq *send_cq ;
   struct ib_cq *recv_cq ;
   struct ib_srq *srq ;
   struct ib_xrcd *xrcd ;
   struct list_head xrcd_list ;
   atomic_t usecnt ;
   struct list_head open_list ;
   struct ib_qp *real_qp ;
   struct ib_uobject *uobject ;
   void (*event_handler)(struct ib_event * , void * ) ;
   void *qp_context ;
   u32 qp_num ;
   enum ib_qp_type qp_type ;
};
#line 1323 "include/rdma/ib_verbs.h"
struct ib_mr {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct ib_uobject *uobject ;
   u32 lkey ;
   u32 rkey ;
   atomic_t usecnt ;
};
#line 1332 "include/rdma/ib_verbs.h"
struct ib_mw {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct ib_uobject *uobject ;
   u32 rkey ;
   enum ib_mw_type type ;
};
#line 1340 "include/rdma/ib_verbs.h"
struct ib_fmr {
   struct ib_device *device ;
   struct ib_pd *pd ;
   struct list_head list ;
   u32 lkey ;
   u32 rkey ;
};
#line 1348
enum ib_flow_attr_type {
    IB_FLOW_ATTR_NORMAL = 0,
    IB_FLOW_ATTR_ALL_DEFAULT = 1,
    IB_FLOW_ATTR_MC_DEFAULT = 2,
    IB_FLOW_ATTR_SNIFFER = 3
} ;
#line 1450 "include/rdma/ib_verbs.h"
struct ib_flow_attr {
   enum ib_flow_attr_type type ;
   u16 size ;
   u16 priority ;
   u32 flags ;
   u8 num_of_specs ;
   u8 port ;
};
#line 1459 "include/rdma/ib_verbs.h"
struct ib_flow {
   struct ib_qp *qp ;
   struct ib_uobject *uobject ;
};
#line 1468
struct ib_mad_hdr;
#line 1482
struct ib_pkey_cache;
#line 1482
struct ib_gid_cache;
#line 1482 "include/rdma/ib_verbs.h"
struct ib_cache {
   rwlock_t lock ;
   struct ib_event_handler event_handler ;
   struct ib_pkey_cache **pkey_cache ;
   struct ib_gid_cache **gid_cache ;
   u8 *lmc_cache ;
};
#line 1494 "include/rdma/ib_verbs.h"
struct ib_dma_mapping_ops {
   int (*mapping_error)(struct ib_device * , u64  ) ;
   u64 (*map_single)(struct ib_device * , void * , size_t  , enum dma_data_direction  ) ;
   void (*unmap_single)(struct ib_device * , u64  , size_t  , enum dma_data_direction  ) ;
   u64 (*map_page)(struct ib_device * , struct page * , unsigned long  , size_t  ,
                   enum dma_data_direction  ) ;
   void (*unmap_page)(struct ib_device * , u64  , size_t  , enum dma_data_direction  ) ;
   int (*map_sg)(struct ib_device * , struct scatterlist * , int  , enum dma_data_direction  ) ;
   void (*unmap_sg)(struct ib_device * , struct scatterlist * , int  , enum dma_data_direction  ) ;
   void (*sync_single_for_cpu)(struct ib_device * , u64  , size_t  , enum dma_data_direction  ) ;
   void (*sync_single_for_device)(struct ib_device * , u64  , size_t  , enum dma_data_direction  ) ;
   void *(*alloc_coherent)(struct ib_device * , size_t  , u64 * , gfp_t  ) ;
   void (*free_coherent)(struct ib_device * , size_t  , void * , u64  ) ;
};
#line 1531
struct iw_cm_verbs;
#line 1532 "include/rdma/ib_verbs.h"
struct ib_port_immutable {
   int pkey_tbl_len ;
   int gid_tbl_len ;
   u32 core_cap_flags ;
   u32 max_mad_size ;
};
#line 1542
enum ldv_23941 {
    IB_DEV_UNINITIALIZED = 0,
    IB_DEV_REGISTERED = 1,
    IB_DEV_UNREGISTERED = 2
} ;
#line 1548 "include/rdma/ib_verbs.h"
struct ib_device {
   struct device *dma_device ;
   char name[64U] ;
   struct list_head event_handler_list ;
   spinlock_t event_handler_lock ;
   spinlock_t client_data_lock ;
   struct list_head core_list ;
   struct list_head client_data_list ;
   struct ib_cache cache ;
   struct ib_port_immutable *port_immutable ;
   int num_comp_vectors ;
   struct iw_cm_verbs *iwcm ;
   int (*get_protocol_stats)(struct ib_device * , union rdma_protocol_stats * ) ;
   int (*query_device)(struct ib_device * , struct ib_device_attr * , struct ib_udata * ) ;
   int (*query_port)(struct ib_device * , u8  , struct ib_port_attr * ) ;
   enum rdma_link_layer (*get_link_layer)(struct ib_device * , u8  ) ;
   int (*query_gid)(struct ib_device * , u8  , int  , union ib_gid * ) ;
   int (*query_pkey)(struct ib_device * , u8  , u16  , u16 * ) ;
   int (*modify_device)(struct ib_device * , int  , struct ib_device_modify * ) ;
   int (*modify_port)(struct ib_device * , u8  , int  , struct ib_port_modify * ) ;
   struct ib_ucontext *(*alloc_ucontext)(struct ib_device * , struct ib_udata * ) ;
   int (*dealloc_ucontext)(struct ib_ucontext * ) ;
   int (*mmap)(struct ib_ucontext * , struct vm_area_struct * ) ;
   struct ib_pd *(*alloc_pd)(struct ib_device * , struct ib_ucontext * , struct ib_udata * ) ;
   int (*dealloc_pd)(struct ib_pd * ) ;
   struct ib_ah *(*create_ah)(struct ib_pd * , struct ib_ah_attr * ) ;
   int (*modify_ah)(struct ib_ah * , struct ib_ah_attr * ) ;
   int (*query_ah)(struct ib_ah * , struct ib_ah_attr * ) ;
   int (*destroy_ah)(struct ib_ah * ) ;
   struct ib_srq *(*create_srq)(struct ib_pd * , struct ib_srq_init_attr * , struct ib_udata * ) ;
   int (*modify_srq)(struct ib_srq * , struct ib_srq_attr * , enum ib_srq_attr_mask  ,
                     struct ib_udata * ) ;
   int (*query_srq)(struct ib_srq * , struct ib_srq_attr * ) ;
   int (*destroy_srq)(struct ib_srq * ) ;
   int (*post_srq_recv)(struct ib_srq * , struct ib_recv_wr * , struct ib_recv_wr ** ) ;
   struct ib_qp *(*create_qp)(struct ib_pd * , struct ib_qp_init_attr * , struct ib_udata * ) ;
   int (*modify_qp)(struct ib_qp * , struct ib_qp_attr * , int  , struct ib_udata * ) ;
   int (*query_qp)(struct ib_qp * , struct ib_qp_attr * , int  , struct ib_qp_init_attr * ) ;
   int (*destroy_qp)(struct ib_qp * ) ;
   int (*post_send)(struct ib_qp * , struct ib_send_wr * , struct ib_send_wr ** ) ;
   int (*post_recv)(struct ib_qp * , struct ib_recv_wr * , struct ib_recv_wr ** ) ;
   struct ib_cq *(*create_cq)(struct ib_device * , struct ib_cq_init_attr  const  * ,
                              struct ib_ucontext * , struct ib_udata * ) ;
   int (*modify_cq)(struct ib_cq * , u16  , u16  ) ;
   int (*destroy_cq)(struct ib_cq * ) ;
   int (*resize_cq)(struct ib_cq * , int  , struct ib_udata * ) ;
   int (*poll_cq)(struct ib_cq * , int  , struct ib_wc * ) ;
   int (*peek_cq)(struct ib_cq * , int  ) ;
   int (*req_notify_cq)(struct ib_cq * , enum ib_cq_notify_flags  ) ;
   int (*req_ncomp_notif)(struct ib_cq * , int  ) ;
   struct ib_mr *(*get_dma_mr)(struct ib_pd * , int  ) ;
   struct ib_mr *(*reg_phys_mr)(struct ib_pd * , struct ib_phys_buf * , int  , int  ,
                                u64 * ) ;
   struct ib_mr *(*reg_user_mr)(struct ib_pd * , u64  , u64  , u64  , int  , struct ib_udata * ) ;
   int (*rereg_user_mr)(struct ib_mr * , int  , u64  , u64  , u64  , int  , struct ib_pd * ,
                        struct ib_udata * ) ;
   int (*query_mr)(struct ib_mr * , struct ib_mr_attr * ) ;
   int (*dereg_mr)(struct ib_mr * ) ;
   int (*destroy_mr)(struct ib_mr * ) ;
   struct ib_mr *(*create_mr)(struct ib_pd * , struct ib_mr_init_attr * ) ;
   struct ib_mr *(*alloc_fast_reg_mr)(struct ib_pd * , int  ) ;
   struct ib_fast_reg_page_list *(*alloc_fast_reg_page_list)(struct ib_device * ,
                                                             int  ) ;
   void (*free_fast_reg_page_list)(struct ib_fast_reg_page_list * ) ;
   int (*rereg_phys_mr)(struct ib_mr * , int  , struct ib_pd * , struct ib_phys_buf * ,
                        int  , int  , u64 * ) ;
   struct ib_mw *(*alloc_mw)(struct ib_pd * , enum ib_mw_type  ) ;
   int (*bind_mw)(struct ib_qp * , struct ib_mw * , struct ib_mw_bind * ) ;
   int (*dealloc_mw)(struct ib_mw * ) ;
   struct ib_fmr *(*alloc_fmr)(struct ib_pd * , int  , struct ib_fmr_attr * ) ;
   int (*map_phys_fmr)(struct ib_fmr * , u64 * , int  , u64  ) ;
   int (*unmap_fmr)(struct list_head * ) ;
   int (*dealloc_fmr)(struct ib_fmr * ) ;
   int (*attach_mcast)(struct ib_qp * , union ib_gid * , u16  ) ;
   int (*detach_mcast)(struct ib_qp * , union ib_gid * , u16  ) ;
   int (*process_mad)(struct ib_device * , int  , u8  , struct ib_wc  const  * , struct ib_grh  const  * ,
                      struct ib_mad_hdr  const  * , size_t  , struct ib_mad_hdr * ,
                      size_t * , u16 * ) ;
   struct ib_xrcd *(*alloc_xrcd)(struct ib_device * , struct ib_ucontext * , struct ib_udata * ) ;
   int (*dealloc_xrcd)(struct ib_xrcd * ) ;
   struct ib_flow *(*create_flow)(struct ib_qp * , struct ib_flow_attr * , int  ) ;
   int (*destroy_flow)(struct ib_flow * ) ;
   int (*check_mr_status)(struct ib_mr * , u32  , struct ib_mr_status * ) ;
   struct ib_dma_mapping_ops *dma_ops ;
   struct module *owner ;
   struct device dev ;
   struct kobject *ports_parent ;
   struct list_head port_list ;
   enum ldv_23941 reg_state ;
   int uverbs_abi_ver ;
   u64 uverbs_cmd_mask ;
   u64 uverbs_ex_cmd_mask ;
   char node_desc[64U] ;
   __be64 node_guid ;
   u32 local_dma_lkey ;
   u8 node_type ;
   u8 phys_port_cnt ;
   int (*get_port_immutable)(struct ib_device * , u8  , struct ib_port_immutable * ) ;
};
#line 1759 "include/rdma/ib_verbs.h"
struct ib_client {
   char *name ;
   void (*add)(struct ib_device * ) ;
   void (*remove)(struct ib_device * ) ;
   struct list_head list ;
};
#line 3027
struct ib_umem_odp;
#line 3028 "include/rdma/ib_verbs.h"
struct ib_umem {
   struct ib_ucontext *context ;
   size_t length ;
   unsigned long address ;
   int page_size ;
   int writable ;
   int hugetlb ;
   struct work_struct work ;
   struct pid *pid ;
   struct mm_struct *mm ;
   unsigned long diff ;
   struct ib_umem_odp *odp_data ;
   struct sg_table sg_head ;
   int nmap ;
   int npages ;
};
#line 141 "include/rdma/ib_umem.h"
struct ib_uverbs_async_event_desc {
   __u64 element ;
   __u32 event_type ;
   __u32 reserved ;
};
#line 115 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_comp_event_desc {
   __u64 cq_handle ;
};
#line 119 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_cmd_hdr {
   __u32 command ;
   __u16 in_words ;
   __u16 out_words ;
};
#line 139 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ex_cmd_hdr {
   __u64 response ;
   __u16 provider_in_words ;
   __u16 provider_out_words ;
   __u32 cmd_hdr_reserved ;
};
#line 921 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_device {
   struct kref ref ;
   int num_comp_vectors ;
   struct completion comp ;
   struct device *dev ;
   struct ib_device *ib_dev ;
   int devnum ;
   struct cdev cdev ;
   struct rb_root xrcd_tree ;
   struct mutex xrcd_tree_mutex ;
};
#line 98 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_file;
#line 98 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_event_file {
   struct kref ref ;
   int is_async ;
   struct ib_uverbs_file *uverbs_file ;
   spinlock_t lock ;
   int is_closed ;
   wait_queue_head_t poll_wait ;
   struct fasync_struct *async_queue ;
   struct list_head event_list ;
};
#line 109 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_file {
   struct kref ref ;
   struct mutex mutex ;
   struct ib_uverbs_device *device ;
   struct ib_ucontext *ucontext ;
   struct ib_event_handler event_handler ;
   struct ib_uverbs_event_file *async_file ;
};
#line 118 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
union __anonunion_desc_273 {
   struct ib_uverbs_async_event_desc async ;
   struct ib_uverbs_comp_event_desc comp ;
};
#line 118 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_event {
   union __anonunion_desc_273 desc ;
   struct list_head list ;
   struct list_head obj_list ;
   u32 *counter ;
};
#line 128 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_mcast_entry {
   struct list_head list ;
   union ib_gid gid ;
   u16 lid ;
};
#line 134 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uevent_object {
   struct ib_uobject uobject ;
   struct list_head event_list ;
   u32 events_reported ;
};
#line 140 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uxrcd_object {
   struct ib_uobject uobject ;
   atomic_t refcnt ;
};
#line 150 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uqp_object {
   struct ib_uevent_object uevent ;
   struct list_head mcast_list ;
   struct ib_uxrcd_object *uxrcd ;
};
#line 156 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_ucq_object {
   struct ib_uobject uobject ;
   struct ib_uverbs_file *uverbs_file ;
   struct list_head comp_list ;
   struct list_head async_list ;
   u32 comp_events_reported ;
   u32 async_events_reported ;
};
#line 20 "include/uapi/asm-generic/int-ll64.h"
typedef unsigned char __u8;
#line 234 "include/linux/printk.h"
struct _ddebug {
   char const   *modname ;
   char const   *function ;
   char const   *filename ;
   char const   *format ;
   unsigned int lineno : 18 ;
   unsigned char flags ;
};
#line 72 "./arch/x86/include/asm/preempt.h"
typedef int pao_T__;
#line 77 "./arch/x86/include/asm/preempt.h"
typedef int pao_T_____0;
#line 239 "include/linux/timer.h"
enum hrtimer_restart;
#line 117 "include/linux/idr.h"
union __anonunion___u_168 {
   struct idr_layer *__val ;
   char __c[1U] ;
};
#line 120 "include/linux/idr.h"
union __anonunion___u_170 {
   struct idr_layer *__val ;
   char __c[1U] ;
};
#line 890 "include/rdma/ib_verbs.h"
struct ib_qp_open_attr {
   void (*event_handler)(struct ib_event * , void * ) ;
   void *qp_context ;
   u32 qp_num ;
   enum ib_qp_type qp_type ;
};
#line 1355
enum ib_flow_spec_type {
    IB_FLOW_SPEC_ETH = 32,
    IB_FLOW_SPEC_IB = 34,
    IB_FLOW_SPEC_IPV4 = 48,
    IB_FLOW_SPEC_TCP = 64,
    IB_FLOW_SPEC_UDP = 65
} ;
#line 1371 "include/rdma/ib_verbs.h"
struct ib_flow_eth_filter {
   u8 dst_mac[6U] ;
   u8 src_mac[6U] ;
   __be16 ether_type ;
   __be16 vlan_tag ;
};
#line 1396 "include/rdma/ib_verbs.h"
struct ib_flow_spec_eth {
   enum ib_flow_spec_type type ;
   u16 size ;
   struct ib_flow_eth_filter val ;
   struct ib_flow_eth_filter mask ;
};
#line 1403 "include/rdma/ib_verbs.h"
struct ib_flow_ib_filter {
   __be16 dlid ;
   __u8 sl ;
};
#line 1408 "include/rdma/ib_verbs.h"
struct ib_flow_spec_ib {
   enum ib_flow_spec_type type ;
   u16 size ;
   struct ib_flow_ib_filter val ;
   struct ib_flow_ib_filter mask ;
};
#line 1415 "include/rdma/ib_verbs.h"
struct ib_flow_ipv4_filter {
   __be32 src_ip ;
   __be32 dst_ip ;
};
#line 1420 "include/rdma/ib_verbs.h"
struct ib_flow_spec_ipv4 {
   enum ib_flow_spec_type type ;
   u16 size ;
   struct ib_flow_ipv4_filter val ;
   struct ib_flow_ipv4_filter mask ;
};
#line 1427 "include/rdma/ib_verbs.h"
struct ib_flow_tcp_udp_filter {
   __be16 dst_port ;
   __be16 src_port ;
};
#line 1432 "include/rdma/ib_verbs.h"
struct ib_flow_spec_tcp_udp {
   enum ib_flow_spec_type type ;
   u16 size ;
   struct ib_flow_tcp_udp_filter val ;
   struct ib_flow_tcp_udp_filter mask ;
};
#line 1439 "include/rdma/ib_verbs.h"
struct __anonstruct____missing_field_name_258 {
   enum ib_flow_spec_type type ;
   u16 size ;
};
#line 1439 "include/rdma/ib_verbs.h"
union ib_flow_spec {
   struct __anonstruct____missing_field_name_258 __annonCompField69 ;
   struct ib_flow_spec_eth eth ;
   struct ib_flow_spec_ib ib ;
   struct ib_flow_spec_ipv4 ipv4 ;
   struct ib_flow_spec_tcp_udp tcp_udp ;
};
#line 146 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_get_context {
   __u64 response ;
   __u64 driver_data[0U] ;
};
#line 151 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_get_context_resp {
   __u32 async_fd ;
   __u32 num_comp_vectors ;
};
#line 156 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_device {
   __u64 response ;
   __u64 driver_data[0U] ;
};
#line 161 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_device_resp {
   __u64 fw_ver ;
   __be64 node_guid ;
   __be64 sys_image_guid ;
   __u64 max_mr_size ;
   __u64 page_size_cap ;
   __u32 vendor_id ;
   __u32 vendor_part_id ;
   __u32 hw_ver ;
   __u32 max_qp ;
   __u32 max_qp_wr ;
   __u32 device_cap_flags ;
   __u32 max_sge ;
   __u32 max_sge_rd ;
   __u32 max_cq ;
   __u32 max_cqe ;
   __u32 max_mr ;
   __u32 max_pd ;
   __u32 max_qp_rd_atom ;
   __u32 max_ee_rd_atom ;
   __u32 max_res_rd_atom ;
   __u32 max_qp_init_rd_atom ;
   __u32 max_ee_init_rd_atom ;
   __u32 atomic_cap ;
   __u32 max_ee ;
   __u32 max_rdd ;
   __u32 max_mw ;
   __u32 max_raw_ipv6_qp ;
   __u32 max_raw_ethy_qp ;
   __u32 max_mcast_grp ;
   __u32 max_mcast_qp_attach ;
   __u32 max_total_mcast_qp_attach ;
   __u32 max_ah ;
   __u32 max_fmr ;
   __u32 max_map_per_fmr ;
   __u32 max_srq ;
   __u32 max_srq_wr ;
   __u32 max_srq_sge ;
   __u16 max_pkeys ;
   __u8 local_ca_ack_delay ;
   __u8 phys_port_cnt ;
   __u8 reserved[4U] ;
};
#line 205 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ex_query_device {
   __u32 comp_mask ;
   __u32 reserved ;
};
#line 210 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct_per_transport_caps_259 {
   __u32 rc_odp_caps ;
   __u32 uc_odp_caps ;
   __u32 ud_odp_caps ;
};
#line 210 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_odp_caps {
   __u64 general_caps ;
   struct __anonstruct_per_transport_caps_259 per_transport_caps ;
   __u32 reserved ;
};
#line 220 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ex_query_device_resp {
   struct ib_uverbs_query_device_resp base ;
   __u32 comp_mask ;
   __u32 response_length ;
   struct ib_uverbs_odp_caps odp_caps ;
   __u64 timestamp_mask ;
   __u64 hca_core_clock ;
};
#line 229 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_port {
   __u64 response ;
   __u8 port_num ;
   __u8 reserved[7U] ;
   __u64 driver_data[0U] ;
};
#line 236 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags ;
   __u32 max_msg_sz ;
   __u32 bad_pkey_cntr ;
   __u32 qkey_viol_cntr ;
   __u32 gid_tbl_len ;
   __u16 pkey_tbl_len ;
   __u16 lid ;
   __u16 sm_lid ;
   __u8 state ;
   __u8 max_mtu ;
   __u8 active_mtu ;
   __u8 lmc ;
   __u8 max_vl_num ;
   __u8 sm_sl ;
   __u8 subnet_timeout ;
   __u8 init_type_reply ;
   __u8 active_width ;
   __u8 active_speed ;
   __u8 phys_state ;
   __u8 link_layer ;
   __u8 reserved[2U] ;
};
#line 260 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_alloc_pd {
   __u64 response ;
   __u64 driver_data[0U] ;
};
#line 265 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle ;
};
#line 269 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_dealloc_pd {
   __u32 pd_handle ;
};
#line 273 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_open_xrcd {
   __u64 response ;
   __u32 fd ;
   __u32 oflags ;
   __u64 driver_data[0U] ;
};
#line 280 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle ;
};
#line 284 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle ;
};
#line 288 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_reg_mr {
   __u64 response ;
   __u64 start ;
   __u64 length ;
   __u64 hca_va ;
   __u32 pd_handle ;
   __u32 access_flags ;
   __u64 driver_data[0U] ;
};
#line 298 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle ;
   __u32 lkey ;
   __u32 rkey ;
};
#line 304 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_rereg_mr {
   __u64 response ;
   __u32 mr_handle ;
   __u32 flags ;
   __u64 start ;
   __u64 length ;
   __u64 hca_va ;
   __u32 pd_handle ;
   __u32 access_flags ;
};
#line 315 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_rereg_mr_resp {
   __u32 lkey ;
   __u32 rkey ;
};
#line 320 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_dereg_mr {
   __u32 mr_handle ;
};
#line 324 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_alloc_mw {
   __u64 response ;
   __u32 pd_handle ;
   __u8 mw_type ;
   __u8 reserved[3U] ;
};
#line 331 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle ;
   __u32 rkey ;
};
#line 336 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_dealloc_mw {
   __u32 mw_handle ;
};
#line 340 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_comp_channel {
   __u64 response ;
};
#line 344 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_comp_channel_resp {
   __u32 fd ;
};
#line 348 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_cq {
   __u64 response ;
   __u64 user_handle ;
   __u32 cqe ;
   __u32 comp_vector ;
   __s32 comp_channel ;
   __u32 reserved ;
   __u64 driver_data[0U] ;
};
#line 358 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ex_create_cq {
   __u64 user_handle ;
   __u32 cqe ;
   __u32 comp_vector ;
   __s32 comp_channel ;
   __u32 comp_mask ;
   __u32 flags ;
   __u32 reserved ;
};
#line 368 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_cq_resp {
   __u32 cq_handle ;
   __u32 cqe ;
};
#line 373 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ex_create_cq_resp {
   struct ib_uverbs_create_cq_resp base ;
   __u32 comp_mask ;
   __u32 response_length ;
};
#line 379 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_resize_cq {
   __u64 response ;
   __u32 cq_handle ;
   __u32 cqe ;
   __u64 driver_data[0U] ;
};
#line 386 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_resize_cq_resp {
   __u32 cqe ;
   __u32 reserved ;
   __u64 driver_data[0U] ;
};
#line 392 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_poll_cq {
   __u64 response ;
   __u32 cq_handle ;
   __u32 ne ;
};
#line 398 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion_ex_260 {
   __u32 imm_data ;
   __u32 invalidate_rkey ;
};
#line 398 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_wc {
   __u64 wr_id ;
   __u32 status ;
   __u32 opcode ;
   __u32 vendor_err ;
   __u32 byte_len ;
   union __anonunion_ex_260 ex ;
   __u32 qp_num ;
   __u32 src_qp ;
   __u32 wc_flags ;
   __u16 pkey_index ;
   __u16 slid ;
   __u8 sl ;
   __u8 dlid_path_bits ;
   __u8 port_num ;
   __u8 reserved ;
};
#line 419 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_poll_cq_resp {
   __u32 count ;
   __u32 reserved ;
   struct ib_uverbs_wc wc[0U] ;
};
#line 425 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_req_notify_cq {
   __u32 cq_handle ;
   __u32 solicited_only ;
};
#line 430 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_cq {
   __u64 response ;
   __u32 cq_handle ;
   __u32 reserved ;
};
#line 436 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_cq_resp {
   __u32 comp_events_reported ;
   __u32 async_events_reported ;
};
#line 441 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_global_route {
   __u8 dgid[16U] ;
   __u32 flow_label ;
   __u8 sgid_index ;
   __u8 hop_limit ;
   __u8 traffic_class ;
   __u8 reserved ;
};
#line 450 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_ah_attr {
   struct ib_uverbs_global_route grh ;
   __u16 dlid ;
   __u8 sl ;
   __u8 src_path_bits ;
   __u8 static_rate ;
   __u8 is_global ;
   __u8 port_num ;
   __u8 reserved ;
};
#line 499 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_qp {
   __u64 response ;
   __u64 user_handle ;
   __u32 pd_handle ;
   __u32 send_cq_handle ;
   __u32 recv_cq_handle ;
   __u32 srq_handle ;
   __u32 max_send_wr ;
   __u32 max_recv_wr ;
   __u32 max_send_sge ;
   __u32 max_recv_sge ;
   __u32 max_inline_data ;
   __u8 sq_sig_all ;
   __u8 qp_type ;
   __u8 is_srq ;
   __u8 reserved ;
   __u64 driver_data[0U] ;
};
#line 518 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_open_qp {
   __u64 response ;
   __u64 user_handle ;
   __u32 pd_handle ;
   __u32 qpn ;
   __u8 qp_type ;
   __u8 reserved[7U] ;
   __u64 driver_data[0U] ;
};
#line 528 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_qp_resp {
   __u32 qp_handle ;
   __u32 qpn ;
   __u32 max_send_wr ;
   __u32 max_recv_wr ;
   __u32 max_send_sge ;
   __u32 max_recv_sge ;
   __u32 max_inline_data ;
   __u32 reserved ;
};
#line 540 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_qp_dest {
   __u8 dgid[16U] ;
   __u32 flow_label ;
   __u16 dlid ;
   __u16 reserved ;
   __u8 sgid_index ;
   __u8 hop_limit ;
   __u8 traffic_class ;
   __u8 sl ;
   __u8 src_path_bits ;
   __u8 static_rate ;
   __u8 is_global ;
   __u8 port_num ;
};
#line 559 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_qp {
   __u64 response ;
   __u32 qp_handle ;
   __u32 attr_mask ;
   __u64 driver_data[0U] ;
};
#line 566 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest ;
   struct ib_uverbs_qp_dest alt_dest ;
   __u32 max_send_wr ;
   __u32 max_recv_wr ;
   __u32 max_send_sge ;
   __u32 max_recv_sge ;
   __u32 max_inline_data ;
   __u32 qkey ;
   __u32 rq_psn ;
   __u32 sq_psn ;
   __u32 dest_qp_num ;
   __u32 qp_access_flags ;
   __u16 pkey_index ;
   __u16 alt_pkey_index ;
   __u8 qp_state ;
   __u8 cur_qp_state ;
   __u8 path_mtu ;
   __u8 path_mig_state ;
   __u8 sq_draining ;
   __u8 max_rd_atomic ;
   __u8 max_dest_rd_atomic ;
   __u8 min_rnr_timer ;
   __u8 port_num ;
   __u8 timeout ;
   __u8 retry_cnt ;
   __u8 rnr_retry ;
   __u8 alt_port_num ;
   __u8 alt_timeout ;
   __u8 sq_sig_all ;
   __u8 reserved[5U] ;
   __u64 driver_data[0U] ;
};
#line 600 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest ;
   struct ib_uverbs_qp_dest alt_dest ;
   __u32 qp_handle ;
   __u32 attr_mask ;
   __u32 qkey ;
   __u32 rq_psn ;
   __u32 sq_psn ;
   __u32 dest_qp_num ;
   __u32 qp_access_flags ;
   __u16 pkey_index ;
   __u16 alt_pkey_index ;
   __u8 qp_state ;
   __u8 cur_qp_state ;
   __u8 path_mtu ;
   __u8 path_mig_state ;
   __u8 en_sqd_async_notify ;
   __u8 max_rd_atomic ;
   __u8 max_dest_rd_atomic ;
   __u8 min_rnr_timer ;
   __u8 port_num ;
   __u8 timeout ;
   __u8 retry_cnt ;
   __u8 rnr_retry ;
   __u8 alt_port_num ;
   __u8 alt_timeout ;
   __u8 reserved[2U] ;
   __u64 driver_data[0U] ;
};
#line 633 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_qp {
   __u64 response ;
   __u32 qp_handle ;
   __u32 reserved ;
};
#line 639 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_qp_resp {
   __u32 events_reported ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion_ex_261 {
   __u32 imm_data ;
   __u32 invalidate_rkey ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct_rdma_263 {
   __u64 remote_addr ;
   __u32 rkey ;
   __u32 reserved ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct_atomic_264 {
   __u64 remote_addr ;
   __u64 compare_add ;
   __u64 swap ;
   __u32 rkey ;
   __u32 reserved ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct_ud_265 {
   __u32 ah ;
   __u32 remote_qpn ;
   __u32 remote_qkey ;
   __u32 reserved ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion_wr_262 {
   struct __anonstruct_rdma_263 rdma ;
   struct __anonstruct_atomic_264 atomic ;
   struct __anonstruct_ud_265 ud ;
};
#line 655 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_send_wr {
   __u64 wr_id ;
   __u32 num_sge ;
   __u32 opcode ;
   __u32 send_flags ;
   union __anonunion_ex_261 ex ;
   union __anonunion_wr_262 wr ;
};
#line 686 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_send {
   __u64 response ;
   __u32 qp_handle ;
   __u32 wr_count ;
   __u32 sge_count ;
   __u32 wqe_size ;
   struct ib_uverbs_send_wr send_wr[0U] ;
};
#line 695 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_send_resp {
   __u32 bad_wr ;
};
#line 699 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_recv_wr {
   __u64 wr_id ;
   __u32 num_sge ;
   __u32 reserved ;
};
#line 705 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_recv {
   __u64 response ;
   __u32 qp_handle ;
   __u32 wr_count ;
   __u32 sge_count ;
   __u32 wqe_size ;
   struct ib_uverbs_recv_wr recv_wr[0U] ;
};
#line 714 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_recv_resp {
   __u32 bad_wr ;
};
#line 718 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_srq_recv {
   __u64 response ;
   __u32 srq_handle ;
   __u32 wr_count ;
   __u32 sge_count ;
   __u32 wqe_size ;
   struct ib_uverbs_recv_wr recv[0U] ;
};
#line 727 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr ;
};
#line 731 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_ah {
   __u64 response ;
   __u64 user_handle ;
   __u32 pd_handle ;
   __u32 reserved ;
   struct ib_uverbs_ah_attr attr ;
};
#line 739 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_ah_resp {
   __u32 ah_handle ;
};
#line 743 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_ah {
   __u32 ah_handle ;
};
#line 747 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_attach_mcast {
   __u8 gid[16U] ;
   __u32 qp_handle ;
   __u16 mlid ;
   __u16 reserved ;
   __u64 driver_data[0U] ;
};
#line 755 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_detach_mcast {
   __u8 gid[16U] ;
   __u32 qp_handle ;
   __u16 mlid ;
   __u16 reserved ;
   __u64 driver_data[0U] ;
};
#line 763 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_spec_hdr {
   __u32 type ;
   __u16 size ;
   __u16 reserved ;
   __u64 flow_spec_data[0U] ;
};
#line 771 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_eth_filter {
   __u8 dst_mac[6U] ;
   __u8 src_mac[6U] ;
   __be16 ether_type ;
   __be16 vlan_tag ;
};
#line 778 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct____missing_field_name_267 {
   __u32 type ;
   __u16 size ;
   __u16 reserved ;
};
#line 778 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion____missing_field_name_266 {
   struct ib_uverbs_flow_spec_hdr hdr ;
   struct __anonstruct____missing_field_name_267 __annonCompField70 ;
};
#line 778 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_spec_eth {
   union __anonunion____missing_field_name_266 __annonCompField71 ;
   struct ib_uverbs_flow_eth_filter val ;
   struct ib_uverbs_flow_eth_filter mask ;
};
#line 791 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_ipv4_filter {
   __be32 src_ip ;
   __be32 dst_ip ;
};
#line 796 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct____missing_field_name_269 {
   __u32 type ;
   __u16 size ;
   __u16 reserved ;
};
#line 796 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion____missing_field_name_268 {
   struct ib_uverbs_flow_spec_hdr hdr ;
   struct __anonstruct____missing_field_name_269 __annonCompField72 ;
};
#line 796 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_spec_ipv4 {
   union __anonunion____missing_field_name_268 __annonCompField73 ;
   struct ib_uverbs_flow_ipv4_filter val ;
   struct ib_uverbs_flow_ipv4_filter mask ;
};
#line 809 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_tcp_udp_filter {
   __be16 dst_port ;
   __be16 src_port ;
};
#line 814 "./include/uapi/rdma/ib_user_verbs.h"
struct __anonstruct____missing_field_name_271 {
   __u32 type ;
   __u16 size ;
   __u16 reserved ;
};
#line 814 "./include/uapi/rdma/ib_user_verbs.h"
union __anonunion____missing_field_name_270 {
   struct ib_uverbs_flow_spec_hdr hdr ;
   struct __anonstruct____missing_field_name_271 __annonCompField74 ;
};
#line 814 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_spec_tcp_udp {
   union __anonunion____missing_field_name_270 __annonCompField75 ;
   struct ib_uverbs_flow_tcp_udp_filter val ;
   struct ib_uverbs_flow_tcp_udp_filter mask ;
};
#line 827 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_flow_attr {
   __u32 type ;
   __u16 size ;
   __u16 priority ;
   __u8 num_of_specs ;
   __u8 reserved[2U] ;
   __u8 port ;
   __u32 flags ;
   struct ib_uverbs_flow_spec_hdr flow_specs[0U] ;
};
#line 842 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_flow {
   __u32 comp_mask ;
   __u32 qp_handle ;
   struct ib_uverbs_flow_attr flow_attr ;
};
#line 848 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_flow_resp {
   __u32 comp_mask ;
   __u32 flow_handle ;
};
#line 853 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_flow {
   __u32 comp_mask ;
   __u32 flow_handle ;
};
#line 858 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_srq {
   __u64 response ;
   __u64 user_handle ;
   __u32 pd_handle ;
   __u32 max_wr ;
   __u32 max_sge ;
   __u32 srq_limit ;
   __u64 driver_data[0U] ;
};
#line 868 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_xsrq {
   __u64 response ;
   __u64 user_handle ;
   __u32 srq_type ;
   __u32 pd_handle ;
   __u32 max_wr ;
   __u32 max_sge ;
   __u32 srq_limit ;
   __u32 reserved ;
   __u32 xrcd_handle ;
   __u32 cq_handle ;
   __u64 driver_data[0U] ;
};
#line 882 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_create_srq_resp {
   __u32 srq_handle ;
   __u32 max_wr ;
   __u32 max_sge ;
   __u32 srqn ;
};
#line 889 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_modify_srq {
   __u32 srq_handle ;
   __u32 attr_mask ;
   __u32 max_wr ;
   __u32 srq_limit ;
   __u64 driver_data[0U] ;
};
#line 897 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_srq {
   __u64 response ;
   __u32 srq_handle ;
   __u32 reserved ;
   __u64 driver_data[0U] ;
};
#line 904 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_query_srq_resp {
   __u32 max_wr ;
   __u32 max_sge ;
   __u32 srq_limit ;
   __u32 reserved ;
};
#line 911 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_srq {
   __u64 response ;
   __u32 srq_handle ;
   __u32 reserved ;
};
#line 917 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_destroy_srq_resp {
   __u32 events_reported ;
};
#line 145 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_usrq_object {
   struct ib_uevent_object uevent ;
   struct ib_uxrcd_object *uxrcd ;
};
#line 196 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct __anonstruct____missing_field_name_275 {
   __u32 type ;
   __u16 size ;
   __u16 reserved ;
};
#line 196 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
union __anonunion____missing_field_name_274 {
   struct ib_uverbs_flow_spec_hdr hdr ;
   struct __anonstruct____missing_field_name_275 __annonCompField76 ;
};
#line 196 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
union __anonunion____missing_field_name_273 {
   union __anonunion____missing_field_name_274 __annonCompField77 ;
   struct ib_uverbs_flow_spec_eth eth ;
   struct ib_uverbs_flow_spec_ipv4 ipv4 ;
   struct ib_uverbs_flow_spec_tcp_udp tcp_udp ;
};
#line 196 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
struct ib_uverbs_flow_spec {
   union __anonunion____missing_field_name_273 __annonCompField78 ;
};
#line 53 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/core_priv.h"
struct uverbs_lock_class {
   struct lock_class_key key ;
   char name[16U] ;
};
#line 636 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
struct xrcd_table_entry {
   struct rb_node node ;
   struct ib_xrcd *xrcd ;
   struct inode *inode ;
};
#line 751 "include/rdma/ib_mad.h"
struct ib_sa_path_rec {
   __be64 service_id ;
   union ib_gid dgid ;
   union ib_gid sgid ;
   __be16 dlid ;
   __be16 slid ;
   int raw_traffic ;
   __be32 flow_label ;
   u8 hop_limit ;
   u8 traffic_class ;
   int reversible ;
   u8 numb_path ;
   __be16 pkey ;
   __be16 qos_class ;
   u8 sl ;
   u8 mtu_selector ;
   u8 mtu ;
   u8 rate_selector ;
   u8 rate ;
   u8 packet_life_time_selector ;
   u8 packet_life_time ;
   u8 preference ;
   u8 smac[6U] ;
   u8 dmac[6U] ;
   u16 vlan_id ;
};
#line 461 "./include/uapi/rdma/ib_user_verbs.h"
struct ib_uverbs_qp_attr {
   __u32 qp_attr_mask ;
   __u32 qp_state ;
   __u32 cur_qp_state ;
   __u32 path_mtu ;
   __u32 path_mig_state ;
   __u32 qkey ;
   __u32 rq_psn ;
   __u32 sq_psn ;
   __u32 dest_qp_num ;
   __u32 qp_access_flags ;
   struct ib_uverbs_ah_attr ah_attr ;
   struct ib_uverbs_ah_attr alt_ah_attr ;
   __u32 max_send_wr ;
   __u32 max_recv_wr ;
   __u32 max_send_sge ;
   __u32 max_recv_sge ;
   __u32 max_inline_data ;
   __u16 pkey_index ;
   __u16 alt_pkey_index ;
   __u8 en_sqd_async_notify ;
   __u8 sq_draining ;
   __u8 max_rd_atomic ;
   __u8 max_dest_rd_atomic ;
   __u8 min_rnr_timer ;
   __u8 port_num ;
   __u8 timeout ;
   __u8 retry_cnt ;
   __u8 rnr_retry ;
   __u8 alt_port_num ;
   __u8 alt_timeout ;
   __u8 reserved[5U] ;
};
#line 53 "./include/uapi/rdma/ib_user_sa.h"
struct ib_user_path_rec {
   __u8 dgid[16U] ;
   __u8 sgid[16U] ;
   __be16 dlid ;
   __be16 slid ;
   __u32 raw_traffic ;
   __be32 flow_label ;
   __u32 reversible ;
   __u32 mtu ;
   __be16 pkey ;
   __u8 hop_limit ;
   __u8 traffic_class ;
   __u8 numb_path ;
   __u8 sl ;
   __u8 mtu_selector ;
   __u8 rate_selector ;
   __u8 rate ;
   __u8 packet_life_time_selector ;
   __u8 packet_life_time ;
   __u8 preference ;
};
#line 1 "<compiler builtins>"
#line 1
__inline static long ldv__builtin_expect(long exp , long c ) ;
#line 33 "include/linux/export.h"
extern struct module __this_module ;
#line 72 "./arch/x86/include/asm/bitops.h"
__inline static void set_bit(long nr , unsigned long volatile   *addr ) 
{ 


  {
#line 80
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; bts %1,%0": "+m" (*((long volatile   *)addr)): "Ir" (nr): "memory");
#line 82
  return;
}
}
#line 110 "./arch/x86/include/asm/bitops.h"
__inline static void clear_bit(long nr , unsigned long volatile   *addr ) 
{ 


  {
#line 117
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; btr %1,%0": "+m" (*((long volatile   *)addr)): "Ir" (nr));
#line 119
  return;
}
}
#line 53 "include/asm-generic/bitops/find.h"
extern unsigned long find_first_zero_bit(unsigned long const   * , unsigned long  ) ;
#line 142 "include/linux/printk.h"
extern int printk(char const   *  , ...) ;
#line 178 "include/linux/kernel.h"
extern void __might_sleep(char const   * , int  , int  ) ;
#line 248
extern void __might_fault(char const   * , int  ) ;
#line 402
extern int sprintf(char * , char const   *  , ...) ;
#line 413
extern char *kasprintf(gfp_t  , char const   *  , ...) ;
#line 3 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
bool ldv_is_err(void const   *ptr ) ;
#line 5
void *ldv_err_ptr(long error ) ;
#line 6
long ldv_ptr_err(void const   *ptr ) ;
#line 25 "include/linux/list.h"
__inline static void INIT_LIST_HEAD(struct list_head *list ) 
{ 


  {
#line 27
  list->next = list;
#line 28
  list->prev = list;
#line 29
  return;
}
}
#line 48
extern void __list_add(struct list_head * , struct list_head * , struct list_head * ) ;
#line 75 "include/linux/list.h"
__inline static void list_add_tail(struct list_head *new , struct list_head *head ) 
{ 


  {
#line 77
  __list_add(new, head->prev, head);
#line 78
  return;
}
}
#line 113
extern void list_del(struct list_head * ) ;
#line 187 "include/linux/list.h"
__inline static int list_empty(struct list_head  const  *head ) 
{ 


  {
#line 189
  return ((unsigned long )((struct list_head  const  *)head->next) == (unsigned long )head);
}
}
#line 87 "./arch/x86/include/asm/percpu.h"
extern void __bad_percpu_size(void) ;
#line 71 "include/asm-generic/bug.h"
extern void warn_slowpath_null(char const   * , int const    ) ;
#line 57 "./arch/x86/include/asm/string_64.h"
extern void *memset(void * , int  , size_t  ) ;
#line 23 "include/linux/err.h"
__inline static void *ERR_PTR(long error ) ;
#line 32
__inline static long PTR_ERR(void const   *ptr ) ;
#line 41
__inline static bool IS_ERR(void const   *ptr ) ;
#line 308 "./arch/x86/include/asm/processor.h"
extern struct tss_struct cpu_tss ;
#line 462 "./arch/x86/include/asm/processor.h"
__inline static unsigned long current_top_of_stack(void) 
{ 
  u64 pfo_ret__ ;

  {
#line 465
  switch (8UL) {
  case 1UL: 
#line 465
  __asm__  ("movb %%gs:%P1,%0": "=q" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0));
#line 465
  goto ldv_5437;
  case 2UL: 
#line 465
  __asm__  ("movw %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0));
#line 465
  goto ldv_5437;
  case 4UL: 
#line 465
  __asm__  ("movl %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0));
#line 465
  goto ldv_5437;
  case 8UL: 
#line 465
  __asm__  ("movq %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0));
#line 465
  goto ldv_5437;
  default: 
#line 465
  __bad_percpu_size();
  }
  ldv_5437: ;
#line 465
  return ((unsigned long )pfo_ret__);
}
}
#line 15 "./arch/x86/include/asm/cmpxchg.h"
extern void __xadd_wrong_size(void) ;
#line 37 "./arch/x86/include/asm/atomic.h"
__inline static void atomic_set(atomic_t *v , int i ) 
{ 


  {
#line 39
  v->counter = i;
#line 40
  return;
}
}
#line 79 "./arch/x86/include/asm/atomic.h"
__inline static int atomic_sub_and_test(int i , atomic_t *v ) 
{ 
  char c ;

  {
#line 81
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; subl %2, %0; sete %1": "+m" (v->counter),
                       "=qm" (c): "er" (i): "memory");
#line 81
  return ((int )((signed char )c) != 0);
}
}
#line 155 "./arch/x86/include/asm/atomic.h"
__inline static int atomic_add_return(int i , atomic_t *v ) 
{ 
  int __ret ;

  {
#line 157
  __ret = i;
#line 157
  switch (4UL) {
  case 1UL: 
#line 157
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; xaddb %b0, %1\n": "+q" (__ret),
                       "+m" (v->counter): : "memory", "cc");
#line 157
  goto ldv_5659;
  case 2UL: 
#line 157
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; xaddw %w0, %1\n": "+r" (__ret),
                       "+m" (v->counter): : "memory", "cc");
#line 157
  goto ldv_5659;
  case 4UL: 
#line 157
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; xaddl %0, %1\n": "+r" (__ret),
                       "+m" (v->counter): : "memory", "cc");
#line 157
  goto ldv_5659;
  case 8UL: 
#line 157
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; xaddq %q0, %1\n": "+r" (__ret),
                       "+m" (v->counter): : "memory", "cc");
#line 157
  goto ldv_5659;
  default: 
#line 157
  __xadd_wrong_size();
  }
  ldv_5659: ;
#line 157
  return (__ret + i);
}
}
#line 180 "./arch/x86/include/asm/thread_info.h"
__inline static struct thread_info *current_thread_info(void) 
{ 
  unsigned long tmp ;

  {
#line 182
  tmp = current_top_of_stack();
#line 182
  return ((struct thread_info *)(tmp - 32768UL));
}
}
#line 93 "include/linux/spinlock.h"
extern void __raw_spin_lock_init(raw_spinlock_t * , char const   * , struct lock_class_key * ) ;
#line 22 "include/linux/spinlock_api_smp.h"
extern void _raw_spin_lock(raw_spinlock_t * ) ;
#line 31
extern void _raw_spin_lock_irq(raw_spinlock_t * ) ;
#line 34
extern unsigned long _raw_spin_lock_irqsave(raw_spinlock_t * ) ;
#line 41
extern void _raw_spin_unlock(raw_spinlock_t * ) ;
#line 43
extern void _raw_spin_unlock_irq(raw_spinlock_t * ) ;
#line 45
extern void _raw_spin_unlock_irqrestore(raw_spinlock_t * , unsigned long  ) ;
#line 299 "include/linux/spinlock.h"
__inline static raw_spinlock_t *spinlock_check(spinlock_t *lock ) 
{ 


  {
#line 301
  return (& lock->__annonCompField18.rlock);
}
}
#line 310 "include/linux/spinlock.h"
__inline static void spin_lock(spinlock_t *lock ) 
{ 


  {
#line 312
  _raw_spin_lock(& lock->__annonCompField18.rlock);
#line 313
  return;
}
}
#line 340 "include/linux/spinlock.h"
__inline static void spin_lock_irq(spinlock_t *lock ) 
{ 


  {
#line 342
  _raw_spin_lock_irq(& lock->__annonCompField18.rlock);
#line 343
  return;
}
}
#line 355 "include/linux/spinlock.h"
__inline static void spin_unlock(spinlock_t *lock ) 
{ 


  {
#line 357
  _raw_spin_unlock(& lock->__annonCompField18.rlock);
#line 358
  return;
}
}
#line 365 "include/linux/spinlock.h"
__inline static void spin_unlock_irq(spinlock_t *lock ) 
{ 


  {
#line 367
  _raw_spin_unlock_irq(& lock->__annonCompField18.rlock);
#line 368
  return;
}
}
#line 370 "include/linux/spinlock.h"
__inline static void spin_unlock_irqrestore(spinlock_t *lock , unsigned long flags ) 
{ 


  {
#line 372
  _raw_spin_unlock_irqrestore(& lock->__annonCompField18.rlock, flags);
#line 373
  return;
}
}
#line 72 "include/linux/wait.h"
extern void __init_waitqueue_head(wait_queue_head_t * , char const   * , struct lock_class_key * ) ;
#line 149
extern void __wake_up(wait_queue_head_t * , unsigned int  , int  , void * ) ;
#line 926
extern long prepare_to_wait_event(wait_queue_head_t * , wait_queue_t * , int  ) ;
#line 927
extern void finish_wait(wait_queue_head_t * , wait_queue_t * ) ;
#line 119 "include/linux/mutex.h"
extern void __mutex_init(struct mutex * , char const   * , struct lock_class_key * ) ;
#line 138
extern void mutex_lock_nested(struct mutex * , unsigned int  ) ;
#line 174
extern void mutex_unlock(struct mutex * ) ;
#line 73 "include/linux/completion.h"
__inline static void init_completion(struct completion *x ) 
{ 
  struct lock_class_key __key ;

  {
#line 75
  x->done = 0U;
#line 76
  __init_waitqueue_head(& x->wait, "&x->wait", & __key);
#line 78
  return;
}
}
#line 91
extern void wait_for_completion(struct completion * ) ;
#line 106
extern void complete(struct completion * ) ;
#line 88 "include/linux/idr.h"
extern void idr_destroy(struct idr * ) ;
#line 32 "include/linux/kref.h"
__inline static void kref_init(struct kref *kref ) 
{ 


  {
#line 34
  atomic_set(& kref->refcount, 1);
#line 35
  return;
}
}
#line 41 "include/linux/kref.h"
__inline static void kref_get(struct kref *kref ) 
{ 
  bool __warned ;
  int __ret_warn_once ;
  int tmp ;
  int __ret_warn_on ;
  long tmp___0 ;
  long tmp___1 ;
  long tmp___2 ;

  {
#line 47
  tmp = atomic_add_return(1, & kref->refcount);
#line 47
  __ret_warn_once = tmp <= 1;
#line 47
  tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L);
#line 47
  if (tmp___2 != 0L) {
#line 47
    __ret_warn_on = ! __warned;
#line 47
    tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 47
    if (tmp___0 != 0L) {
#line 47
      warn_slowpath_null("include/linux/kref.h", 47);
    } else {

    }
#line 47
    tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 47
    if (tmp___1 != 0L) {
#line 47
      __warned = 1;
    } else {

    }
  } else {

  }
#line 47
  ldv__builtin_expect(__ret_warn_once != 0, 0L);
#line 49
  return;
}
}
#line 68 "include/linux/kref.h"
__inline static int kref_sub(struct kref *kref , unsigned int count , void (*release)(struct kref * ) ) 
{ 
  int __ret_warn_on ;
  long tmp ;
  int tmp___0 ;

  {
#line 71
  __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0);
#line 71
  tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 71
  if (tmp != 0L) {
#line 71
    warn_slowpath_null("include/linux/kref.h", 71);
  } else {

  }
#line 71
  ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 73
  tmp___0 = atomic_sub_and_test((int )count, & kref->refcount);
#line 73
  if (tmp___0 != 0) {
#line 74
    (*release)(kref);
#line 75
    return (1);
  } else {

  }
#line 77
  return (0);
}
}
#line 97 "include/linux/kref.h"
__inline static int kref_put(struct kref *kref , void (*release)(struct kref * ) ) 
{ 
  int tmp ;

  {
#line 99
  tmp = kref_sub(kref, 1U, release);
#line 99
  return (tmp);
}
}
#line 82 "include/linux/kobject.h"
extern int kobject_set_name(struct kobject * , char const   *  , ...) ;
#line 86 "include/linux/kobject.h"
__inline static char const   *kobject_name(struct kobject  const  *kobj ) 
{ 


  {
#line 88
  return ((char const   *)kobj->name);
}
}
#line 505 "include/linux/module.h"
bool ldv_try_module_get_6(struct module *ldv_func_arg1 ) ;
#line 511
void ldv_module_put_5(struct module *ldv_func_arg1 ) ;
#line 515
void ldv_module_put_8(struct module *ldv_func_arg1 ) ;
#line 9 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_try_module_get(struct module *module ) ;
#line 11
void ldv_module_put(struct module *module ) ;
#line 82 "include/linux/pid.h"
extern void put_pid(struct pid * ) ;
#line 425 "include/linux/sched.h"
extern void schedule(void) ;
#line 143 "include/linux/slab.h"
extern void kfree(void const   * ) ;
#line 289
extern void *__kmalloc(size_t  , gfp_t  ) ;
#line 418 "include/linux/slab.h"
__inline static void *kmalloc(size_t size , gfp_t flags ) 
{ 
  void *tmp___2 ;

  {
#line 435
  tmp___2 = __kmalloc(size, flags);
#line 435
  return (tmp___2);
}
}
#line 581 "include/linux/slab.h"
__inline static void *kzalloc(size_t size , gfp_t flags ) 
{ 
  void *tmp ;

  {
#line 583
  tmp = kmalloc(size, flags | 32768U);
#line 583
  return (tmp);
}
}
#line 6 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
extern void *malloc(size_t  ) ;
#line 7
extern void *calloc(size_t  , size_t  ) ;
#line 13
extern int __VERIFIER_nondet_int(void) ;
#line 28
extern unsigned long __VERIFIER_nondet_ulong(void) ;
#line 29
extern void *__VERIFIER_nondet_pointer(void) ;
#line 30
extern void __VERIFIER_assume(int  ) ;
#line 32 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
void *ldv_malloc(size_t size ) 
{ 
  void *p ;
  void *tmp ;
  int tmp___0 ;

  {
#line 33
  tmp___0 = __VERIFIER_nondet_int();
#line 33
  if (tmp___0 != 0) {
#line 34
    return ((void *)0);
  } else {
#line 36
    tmp = malloc(size);
#line 36
    p = tmp;
#line 37
    __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0));
#line 38
    return (p);
  }
}
}
#line 42 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
void *ldv_zalloc(size_t size ) 
{ 
  void *p ;
  void *tmp ;
  int tmp___0 ;

  {
#line 43
  tmp___0 = __VERIFIER_nondet_int();
#line 43
  if (tmp___0 != 0) {
#line 44
    return ((void *)0);
  } else {
#line 46
    tmp = calloc(1UL, size);
#line 46
    p = tmp;
#line 47
    __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0));
#line 48
    return (p);
  }
}
}
#line 52 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
void *ldv_init_zalloc(size_t size ) 
{ 
  void *p ;
  void *tmp ;

  {
#line 53
  tmp = calloc(1UL, size);
#line 53
  p = tmp;
#line 54
  __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0));
#line 55
  return (p);
}
}
#line 58 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
void *ldv_memset(void *s , int c , size_t n ) 
{ 
  void *tmp ;

  {
#line 59
  tmp = memset(s, c, n);
#line 59
  return (tmp);
}
}
#line 62 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
int ldv_undef_int(void) 
{ 
  int tmp ;

  {
#line 63
  tmp = __VERIFIER_nondet_int();
#line 63
  return (tmp);
}
}
#line 66 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
void *ldv_undef_ptr(void) 
{ 
  void *tmp ;

  {
#line 67
  tmp = __VERIFIER_nondet_pointer();
#line 67
  return (tmp);
}
}
#line 70 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
unsigned long ldv_undef_ulong(void) 
{ 
  unsigned long tmp ;

  {
#line 71
  tmp = __VERIFIER_nondet_ulong();
#line 71
  return (tmp);
}
}
#line 22 "/home/ldvuser/ldv/inst/kernel-rules/verifier/rcv.h"
__inline static void ldv_stop(void) 
{ 


  {
  LDV_STOP: ;
#line 23
  goto LDV_STOP;
}
}
#line 52 "/home/ldvuser/ldv/inst/kernel-rules/verifier/rcv.h"
__inline static long ldv__builtin_expect(long exp , long c ) 
{ 


  {
#line 54
  return (exp);
}
}
#line 18 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct inode *uverbs_mmap_fops_group1  ;
#line 19 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct ib_device *uverbs_client_group0  ;
#line 20 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct file *uverbs_fops_group2  ;
#line 21 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int LDV_IN_INTERRUPT  =    1;
#line 23 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct file *uverbs_mmap_fops_group2  ;
#line 24 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_6  ;
#line 25 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_0  ;
#line 26 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_5  ;
#line 27 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_3  ;
#line 28 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_2  ;
#line 29 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct inode *uverbs_event_fops_group1  ;
#line 30 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ref_cnt  ;
#line 31 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct inode *uverbs_fops_group1  ;
#line 32 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_1  ;
#line 33 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_7  ;
#line 34 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_state_variable_4  ;
#line 35 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
struct file *uverbs_event_fops_group2  ;
#line 37
void ldv_file_operations_7(void) ;
#line 38
void ldv_file_operations_6(void) ;
#line 39
void ldv_file_operations_5(void) ;
#line 40
void ldv_initialize_ib_client_4(void) ;
#line 464 "include/linux/device.h"
extern int class_create_file_ns(struct class * , struct class_attribute  const  * ,
                                void const   * ) ;
#line 471 "include/linux/device.h"
__inline static int class_create_file(struct class *class , struct class_attribute  const  *attr ) 
{ 
  int tmp ;

  {
#line 474
  tmp = class_create_file_ns(class, attr, (void const   *)0);
#line 474
  return (tmp);
}
}
#line 496
extern ssize_t show_class_attr_string(struct class * , struct class_attribute * ,
                                      char * ) ;
#line 510
extern struct class *__class_create(struct module * , char const   * , struct lock_class_key * ) ;
#line 513
extern void class_destroy(struct class * ) ;
#line 591
extern int device_create_file(struct device * , struct device_attribute  const  * ) ;
#line 832 "include/linux/device.h"
__inline static char const   *dev_name(struct device  const  *dev ) 
{ 
  char const   *tmp ;

  {
#line 835
  if ((unsigned long )dev->init_name != (unsigned long )((char const   */* const  */)0)) {
#line 836
    return ((char const   *)dev->init_name);
  } else {

  }
#line 838
  tmp = kobject_name(& dev->kobj);
#line 838
  return (tmp);
}
}
#line 863 "include/linux/device.h"
__inline static void *dev_get_drvdata(struct device  const  *dev ) 
{ 


  {
#line 865
  return ((void *)dev->driver_data);
}
}
#line 868 "include/linux/device.h"
__inline static void dev_set_drvdata(struct device *dev , void *data ) 
{ 


  {
#line 870
  dev->driver_data = data;
#line 871
  return;
}
}
#line 1021
extern struct device *device_create(struct class * , struct device * , dev_t  , void * ,
                                    char const   *  , ...) ;
#line 1029
extern void device_destroy(struct class * , dev_t  ) ;
#line 1218 "include/linux/fs.h"
extern int fasync_helper(int  , struct file * , int  , struct fasync_struct ** ) ;
#line 1225
extern void kill_fasync(struct fasync_struct ** , int  , int  ) ;
#line 2328
extern int alloc_chrdev_region(dev_t * , unsigned int  , unsigned int  , char const   * ) ;
#line 2329
extern int register_chrdev_region(dev_t  , unsigned int  , char const   * ) ;
#line 2335
extern void unregister_chrdev_region(dev_t  , unsigned int  ) ;
#line 2649
extern loff_t no_llseek(struct file * , loff_t  , int  ) ;
#line 2660
int ldv_nonseekable_open_7(struct inode *ldv_func_arg1 , struct file *ldv_func_arg2 ) ;
#line 44 "./arch/x86/include/asm/uaccess.h"
__inline static bool __chk_range_not_ok(unsigned long addr , unsigned long size ,
                                        unsigned long limit ) 
{ 


  {
#line 57
  addr = addr + size;
#line 58
  if (addr < size) {
#line 59
    return (1);
  } else {

  }
#line 60
  return (addr > limit);
}
}
#line 650
extern unsigned long _copy_from_user(void * , void const   * , unsigned int  ) ;
#line 652
extern unsigned long _copy_to_user(void * , void const   * , unsigned int  ) ;
#line 672
extern void __copy_from_user_overflow(void) ;
#line 677
extern void __copy_to_user_overflow(void) ;
#line 693 "./arch/x86/include/asm/uaccess.h"
__inline static unsigned long copy_from_user(void *to , void const   *from , unsigned long n ) 
{ 
  int sz ;
  unsigned long tmp ;
  long tmp___0 ;

  {
#line 695
  tmp = __builtin_object_size((void const   *)to, 0);
#line 695
  sz = (int )tmp;
#line 697
  __might_fault("./arch/x86/include/asm/uaccess.h", 697);
#line 717
  tmp___0 = ldv__builtin_expect((long )(sz < 0 || (unsigned long )sz >= n), 1L);
#line 717
  if (tmp___0 != 0L) {
#line 718
    n = _copy_from_user(to, from, (unsigned int )n);
  } else {
#line 722
    __copy_from_user_overflow();
  }
#line 724
  return (n);
}
}
#line 728 "./arch/x86/include/asm/uaccess.h"
__inline static unsigned long copy_to_user(void *to , void const   *from , unsigned long n ) 
{ 
  int sz ;
  unsigned long tmp ;
  long tmp___0 ;

  {
#line 730
  tmp = __builtin_object_size(from, 0);
#line 730
  sz = (int )tmp;
#line 732
  __might_fault("./arch/x86/include/asm/uaccess.h", 732);
#line 735
  tmp___0 = ldv__builtin_expect((long )(sz < 0 || (unsigned long )sz >= n), 1L);
#line 735
  if (tmp___0 != 0L) {
#line 736
    n = _copy_to_user(to, from, (unsigned int )n);
  } else {
#line 740
    __copy_to_user_overflow();
  }
#line 742
  return (n);
}
}
#line 42 "include/linux/poll.h"
__inline static void poll_wait(struct file *filp , wait_queue_head_t *wait_address ,
                               poll_table *p ) 
{ 


  {
#line 44
  if (((unsigned long )p != (unsigned long )((poll_table *)0) && (unsigned long )p->_qproc != (unsigned long )((void (*)(struct file * ,
                                                                                                                         wait_queue_head_t * ,
                                                                                                                         struct poll_table_struct * ))0)) && (unsigned long )wait_address != (unsigned long )((wait_queue_head_t *)0)) {
#line 45
    (*(p->_qproc))(filp, wait_address, p);
  } else {

  }
#line 46
  return;
}
}
#line 14 "include/linux/file.h"
extern void fput(struct file * ) ;
#line 36 "include/linux/file.h"
__inline static void fdput(struct fd fd ) 
{ 


  {
#line 38
  if ((int )fd.flags & 1) {
#line 39
    fput(fd.file);
  } else {

  }
#line 40
  return;
}
}
#line 44
extern unsigned long __fdget(unsigned int  ) ;
#line 48 "include/linux/file.h"
__inline static struct fd __to_fd(unsigned long v ) 
{ 
  struct fd __constr_expr_0 ;

  {
#line 50
  __constr_expr_0.file = (struct file *)(v & 0xfffffffffffffffcUL);
#line 50
  __constr_expr_0.flags = (unsigned int )v & 3U;
#line 50
  return (__constr_expr_0);
}
}
#line 53 "include/linux/file.h"
__inline static struct fd fdget(unsigned int fd ) 
{ 
  unsigned long tmp ;
  struct fd tmp___0 ;

  {
#line 55
  tmp = __fdget(fd);
#line 55
  tmp___0 = __to_fd(tmp);
#line 55
  return (tmp___0);
}
}
#line 21 "include/linux/cdev.h"
extern void cdev_init(struct cdev * , struct file_operations  const  * ) ;
#line 24
void ldv_cdev_init_9(struct cdev *cdev , struct file_operations  const  *fops ) ;
#line 31
extern int cdev_add(struct cdev * , dev_t  , unsigned int  ) ;
#line 33
extern void cdev_del(struct cdev * ) ;
#line 36
void ldv_cdev_del_10(struct cdev *p ) ;
#line 40
void ldv_cdev_del_11(struct cdev *p ) ;
#line 13 "include/linux/anon_inodes.h"
extern struct file *anon_inode_getfile(char const   * , struct file_operations  const  * ,
                                       void * , int  ) ;
#line 1776 "include/rdma/ib_verbs.h"
extern int ib_register_client(struct ib_client * ) ;
#line 1777
extern void ib_unregister_client(struct ib_client * ) ;
#line 1779
extern void *ib_get_client_data(struct ib_device * , struct ib_client * ) ;
#line 1780
extern void ib_set_client_data(struct ib_device * , struct ib_client * , void * ) ;
#line 1814
extern int ib_unregister_event_handler(struct ib_event_handler * ) ;
#line 2137
extern int ib_dealloc_pd(struct ib_pd * ) ;
#line 2201
extern int ib_destroy_ah(struct ib_ah * ) ;
#line 2248
extern int ib_destroy_srq(struct ib_srq * ) ;
#line 2308
extern int ib_destroy_qp(struct ib_qp * ) ;
#line 2327
extern int ib_close_qp(struct ib_qp * ) ;
#line 2405
extern int ib_destroy_cq(struct ib_cq * ) ;
#line 2808
extern int ib_dereg_mr(struct ib_mr * ) ;
#line 2922
extern int ib_dealloc_mw(struct ib_mw * ) ;
#line 2983
extern int ib_detach_mcast(struct ib_qp * , union ib_gid * , u16  ) ;
#line 2999
extern int ib_destroy_flow(struct ib_flow * ) ;
#line 166 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/uverbs.h"
spinlock_t ib_uverbs_idr_lock ;
#line 167
struct idr ib_uverbs_pd_idr ;
#line 168
struct idr ib_uverbs_mr_idr ;
#line 169
struct idr ib_uverbs_mw_idr ;
#line 170
struct idr ib_uverbs_ah_idr ;
#line 171
struct idr ib_uverbs_cq_idr ;
#line 172
struct idr ib_uverbs_qp_idr ;
#line 173
struct idr ib_uverbs_srq_idr ;
#line 174
struct idr ib_uverbs_xrcd_idr ;
#line 175
struct idr ib_uverbs_rule_idr ;
#line 177
void idr_remove_uobj(struct idr *idr , struct ib_uobject *uobj ) ;
#line 179
struct file *ib_uverbs_alloc_event_file(struct ib_uverbs_file *uverbs_file , int is_async ) ;
#line 181
struct ib_uverbs_event_file *ib_uverbs_lookup_comp_file(int fd ) ;
#line 183
void ib_uverbs_release_ucq(struct ib_uverbs_file *file , struct ib_uverbs_event_file *ev_file ,
                           struct ib_ucq_object *uobj ) ;
#line 186
void ib_uverbs_release_uevent(struct ib_uverbs_file *file , struct ib_uevent_object *uobj ) ;
#line 189
void ib_uverbs_comp_handler(struct ib_cq *cq , void *cq_context ) ;
#line 190
void ib_uverbs_cq_event_handler(struct ib_event *event , void *context_ptr ) ;
#line 191
void ib_uverbs_qp_event_handler(struct ib_event *event , void *context_ptr ) ;
#line 192
void ib_uverbs_srq_event_handler(struct ib_event *event , void *context_ptr ) ;
#line 193
void ib_uverbs_event_handler(struct ib_event_handler *handler , struct ib_event *event ) ;
#line 195
void ib_uverbs_dealloc_xrcd(struct ib_uverbs_device *dev , struct ib_xrcd *xrcd ) ;
#line 218
ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) ;
#line 219
ssize_t ib_uverbs_query_device(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) ;
#line 220
ssize_t ib_uverbs_query_port(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 221
ssize_t ib_uverbs_alloc_pd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) ;
#line 222
ssize_t ib_uverbs_dealloc_pd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 223
ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                         int out_len ) ;
#line 224
ssize_t ib_uverbs_rereg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) ;
#line 225
ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) ;
#line 226
ssize_t ib_uverbs_alloc_mw(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) ;
#line 227
ssize_t ib_uverbs_dealloc_mw(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 228
ssize_t ib_uverbs_create_comp_channel(struct ib_uverbs_file *file , char const   *buf ,
                                      int in_len , int out_len ) ;
#line 229
ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 230
ssize_t ib_uverbs_resize_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 231
ssize_t ib_uverbs_poll_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                          int out_len ) ;
#line 232
ssize_t ib_uverbs_req_notify_cq(struct ib_uverbs_file *file , char const   *buf ,
                                int in_len , int out_len ) ;
#line 233
ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 234
ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 235
ssize_t ib_uverbs_open_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                          int out_len ) ;
#line 236
ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) ;
#line 237
ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 238
ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 239
ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 240
ssize_t ib_uverbs_post_recv(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 241
ssize_t ib_uverbs_post_srq_recv(struct ib_uverbs_file *file , char const   *buf ,
                                int in_len , int out_len ) ;
#line 242
ssize_t ib_uverbs_create_ah(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 243
ssize_t ib_uverbs_destroy_ah(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 244
ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) ;
#line 245
ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) ;
#line 246
ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 247
ssize_t ib_uverbs_modify_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 248
ssize_t ib_uverbs_query_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 249
ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) ;
#line 250
ssize_t ib_uverbs_create_xsrq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) ;
#line 251
ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) ;
#line 252
ssize_t ib_uverbs_close_xrcd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) ;
#line 259
int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                             struct ib_udata *uhw ) ;
#line 260
int ib_uverbs_ex_destroy_flow(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                              struct ib_udata *uhw ) ;
#line 261
int ib_uverbs_ex_query_device(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                              struct ib_udata *uhw ) ;
#line 262
int ib_uverbs_ex_create_cq(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                           struct ib_udata *uhw ) ;
#line 65 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct class *uverbs_class  ;
#line 67 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
spinlock_t ib_uverbs_idr_lock  =    {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_idr_lock",
                                                    0, 0UL}}}};
#line 68 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_pd_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_pd_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 69 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_mr_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_mr_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 70 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_mw_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_mw_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 71 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_ah_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_ah_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 72 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_cq_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_cq_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 73 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_qp_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_qp_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 74 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_srq_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_srq_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 75 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_xrcd_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_xrcd_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 76 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct idr ib_uverbs_rule_idr  =    {0, 0, 0, 0, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "ib_uverbs_rule_idr.lock",
                                                                 0, 0UL}}}}, 0, 0};
#line 78 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static spinlock_t map_lock  =    {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "map_lock", 0, 0UL}}}};
#line 79 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static unsigned long dev_map[1U]  ;
#line 81 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static ssize_t (*uverbs_cmd_table[41U])(struct ib_uverbs_file * , char const   * ,
                                        int  , int  )  = 
#line 81
  {      & ib_uverbs_get_context,      & ib_uverbs_query_device,      & ib_uverbs_query_port,      & ib_uverbs_alloc_pd, 
        & ib_uverbs_dealloc_pd,      & ib_uverbs_create_ah,      0,      0, 
        & ib_uverbs_destroy_ah,      & ib_uverbs_reg_mr,      0,      & ib_uverbs_rereg_mr, 
        0,      & ib_uverbs_dereg_mr,      & ib_uverbs_alloc_mw,      0, 
        & ib_uverbs_dealloc_mw,      & ib_uverbs_create_comp_channel,      & ib_uverbs_create_cq,      & ib_uverbs_resize_cq, 
        & ib_uverbs_destroy_cq,      & ib_uverbs_poll_cq,      0,      & ib_uverbs_req_notify_cq, 
        & ib_uverbs_create_qp,      & ib_uverbs_query_qp,      & ib_uverbs_modify_qp,      & ib_uverbs_destroy_qp, 
        & ib_uverbs_post_send,      & ib_uverbs_post_recv,      & ib_uverbs_attach_mcast,      & ib_uverbs_detach_mcast, 
        & ib_uverbs_create_srq,      & ib_uverbs_modify_srq,      & ib_uverbs_query_srq,      & ib_uverbs_destroy_srq, 
        & ib_uverbs_post_srq_recv,      & ib_uverbs_open_xrcd,      & ib_uverbs_close_xrcd,      & ib_uverbs_create_xsrq, 
        & ib_uverbs_open_qp};
#line 121 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int (*uverbs_ex_cmd_table[52U])(struct ib_uverbs_file * , struct ib_udata * ,
                                       struct ib_udata * )  = 
#line 121
  {      0,      & ib_uverbs_ex_query_device,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      & ib_uverbs_ex_create_cq,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      0,      0, 
        0,      0,      & ib_uverbs_ex_create_flow,      & ib_uverbs_ex_destroy_flow};
#line 130
static void ib_uverbs_add_one(struct ib_device *device ) ;
#line 131
static void ib_uverbs_remove_one(struct ib_device *device ) ;
#line 133 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_release_dev(struct kref *ref ) 
{ 
  struct ib_uverbs_device *dev ;
  struct kref  const  *__mptr ;

  {
#line 136
  __mptr = (struct kref  const  *)ref;
#line 136
  dev = (struct ib_uverbs_device *)__mptr;
#line 138
  complete(& dev->comp);
#line 139
  return;
}
}
#line 141 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_release_event_file(struct kref *ref ) 
{ 
  struct ib_uverbs_event_file *file ;
  struct kref  const  *__mptr ;

  {
#line 144
  __mptr = (struct kref  const  *)ref;
#line 144
  file = (struct ib_uverbs_event_file *)__mptr;
#line 146
  kfree((void const   *)file);
#line 147
  return;
}
}
#line 149 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_release_ucq(struct ib_uverbs_file *file , struct ib_uverbs_event_file *ev_file ,
                           struct ib_ucq_object *uobj ) 
{ 
  struct ib_uverbs_event *evt ;
  struct ib_uverbs_event *tmp ;
  struct list_head  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  struct list_head  const  *__mptr___1 ;
  struct list_head  const  *__mptr___2 ;
  struct list_head  const  *__mptr___3 ;
  struct list_head  const  *__mptr___4 ;

  {
#line 155
  if ((unsigned long )ev_file != (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 156
    spin_lock_irq(& ev_file->lock);
#line 157
    __mptr = (struct list_head  const  *)uobj->comp_list.next;
#line 157
    evt = (struct ib_uverbs_event *)__mptr + 0xffffffffffffffe0UL;
#line 157
    __mptr___0 = (struct list_head  const  *)evt->obj_list.next;
#line 157
    tmp = (struct ib_uverbs_event *)__mptr___0 + 0xffffffffffffffe0UL;
#line 157
    goto ldv_32192;
    ldv_32191: 
#line 158
    list_del(& evt->list);
#line 159
    kfree((void const   *)evt);
#line 157
    evt = tmp;
#line 157
    __mptr___1 = (struct list_head  const  *)tmp->obj_list.next;
#line 157
    tmp = (struct ib_uverbs_event *)__mptr___1 + 0xffffffffffffffe0UL;
    ldv_32192: ;
#line 157
    if ((unsigned long )(& evt->obj_list) != (unsigned long )(& uobj->comp_list)) {
#line 159
      goto ldv_32191;
    } else {

    }
#line 161
    spin_unlock_irq(& ev_file->lock);
#line 163
    kref_put(& ev_file->ref, & ib_uverbs_release_event_file);
  } else {

  }
#line 166
  spin_lock_irq(& (file->async_file)->lock);
#line 167
  __mptr___2 = (struct list_head  const  *)uobj->async_list.next;
#line 167
  evt = (struct ib_uverbs_event *)__mptr___2 + 0xffffffffffffffe0UL;
#line 167
  __mptr___3 = (struct list_head  const  *)evt->obj_list.next;
#line 167
  tmp = (struct ib_uverbs_event *)__mptr___3 + 0xffffffffffffffe0UL;
#line 167
  goto ldv_32201;
  ldv_32200: 
#line 168
  list_del(& evt->list);
#line 169
  kfree((void const   *)evt);
#line 167
  evt = tmp;
#line 167
  __mptr___4 = (struct list_head  const  *)tmp->obj_list.next;
#line 167
  tmp = (struct ib_uverbs_event *)__mptr___4 + 0xffffffffffffffe0UL;
  ldv_32201: ;
#line 167
  if ((unsigned long )(& evt->obj_list) != (unsigned long )(& uobj->async_list)) {
#line 169
    goto ldv_32200;
  } else {

  }
#line 171
  spin_unlock_irq(& (file->async_file)->lock);
#line 172
  return;
}
}
#line 174 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_release_uevent(struct ib_uverbs_file *file , struct ib_uevent_object *uobj ) 
{ 
  struct ib_uverbs_event *evt ;
  struct ib_uverbs_event *tmp ;
  struct list_head  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  struct list_head  const  *__mptr___1 ;

  {
#line 179
  spin_lock_irq(& (file->async_file)->lock);
#line 180
  __mptr = (struct list_head  const  *)uobj->event_list.next;
#line 180
  evt = (struct ib_uverbs_event *)__mptr + 0xffffffffffffffe0UL;
#line 180
  __mptr___0 = (struct list_head  const  *)evt->obj_list.next;
#line 180
  tmp = (struct ib_uverbs_event *)__mptr___0 + 0xffffffffffffffe0UL;
#line 180
  goto ldv_32216;
  ldv_32215: 
#line 181
  list_del(& evt->list);
#line 182
  kfree((void const   *)evt);
#line 180
  evt = tmp;
#line 180
  __mptr___1 = (struct list_head  const  *)tmp->obj_list.next;
#line 180
  tmp = (struct ib_uverbs_event *)__mptr___1 + 0xffffffffffffffe0UL;
  ldv_32216: ;
#line 180
  if ((unsigned long )(& evt->obj_list) != (unsigned long )(& uobj->event_list)) {
#line 182
    goto ldv_32215;
  } else {

  }
#line 184
  spin_unlock_irq(& (file->async_file)->lock);
#line 185
  return;
}
}
#line 187 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_detach_umcast(struct ib_qp *qp , struct ib_uqp_object *uobj ) 
{ 
  struct ib_uverbs_mcast_entry *mcast ;
  struct ib_uverbs_mcast_entry *tmp ;
  struct list_head  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  struct list_head  const  *__mptr___1 ;

  {
#line 192
  __mptr = (struct list_head  const  *)uobj->mcast_list.next;
#line 192
  mcast = (struct ib_uverbs_mcast_entry *)__mptr;
#line 192
  __mptr___0 = (struct list_head  const  *)mcast->list.next;
#line 192
  tmp = (struct ib_uverbs_mcast_entry *)__mptr___0;
#line 192
  goto ldv_32231;
  ldv_32230: 
#line 193
  ib_detach_mcast(qp, & mcast->gid, (int )mcast->lid);
#line 194
  list_del(& mcast->list);
#line 195
  kfree((void const   *)mcast);
#line 192
  mcast = tmp;
#line 192
  __mptr___1 = (struct list_head  const  *)tmp->list.next;
#line 192
  tmp = (struct ib_uverbs_mcast_entry *)__mptr___1;
  ldv_32231: ;
#line 192
  if ((unsigned long )(& mcast->list) != (unsigned long )(& uobj->mcast_list)) {
#line 194
    goto ldv_32230;
  } else {

  }

#line 199
  return;
}
}
#line 199 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_cleanup_ucontext(struct ib_uverbs_file *file , struct ib_ucontext *context ) 
{ 
  struct ib_uobject *uobj ;
  struct ib_uobject *tmp ;
  struct list_head  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  struct ib_ah *ah ;
  struct list_head  const  *__mptr___1 ;
  struct list_head  const  *__mptr___2 ;
  struct list_head  const  *__mptr___3 ;
  struct ib_mw *mw ;
  struct list_head  const  *__mptr___4 ;
  struct list_head  const  *__mptr___5 ;
  struct list_head  const  *__mptr___6 ;
  struct ib_flow *flow_id ;
  struct list_head  const  *__mptr___7 ;
  struct list_head  const  *__mptr___8 ;
  struct list_head  const  *__mptr___9 ;
  struct ib_qp *qp ;
  struct ib_uqp_object *uqp ;
  struct ib_uobject  const  *__mptr___10 ;
  struct list_head  const  *__mptr___11 ;
  struct list_head  const  *__mptr___12 ;
  struct list_head  const  *__mptr___13 ;
  struct ib_srq *srq ;
  struct ib_uevent_object *uevent ;
  struct ib_uobject  const  *__mptr___14 ;
  struct list_head  const  *__mptr___15 ;
  struct list_head  const  *__mptr___16 ;
  struct list_head  const  *__mptr___17 ;
  struct ib_cq *cq ;
  struct ib_uverbs_event_file *ev_file ;
  struct ib_ucq_object *ucq ;
  struct ib_uobject  const  *__mptr___18 ;
  struct list_head  const  *__mptr___19 ;
  struct list_head  const  *__mptr___20 ;
  struct list_head  const  *__mptr___21 ;
  struct ib_mr *mr ;
  struct list_head  const  *__mptr___22 ;
  struct list_head  const  *__mptr___23 ;
  struct list_head  const  *__mptr___24 ;
  struct ib_xrcd *xrcd ;
  struct ib_uxrcd_object *uxrcd ;
  struct ib_uobject  const  *__mptr___25 ;
  struct list_head  const  *__mptr___26 ;
  struct list_head  const  *__mptr___27 ;
  struct list_head  const  *__mptr___28 ;
  struct ib_pd *pd ;
  struct list_head  const  *__mptr___29 ;
  int tmp___0 ;

  {
#line 204
  if ((unsigned long )context == (unsigned long )((struct ib_ucontext *)0)) {
#line 205
    return (0);
  } else {

  }
#line 207
  context->closing = 1;
#line 209
  __mptr = (struct list_head  const  *)context->ah_list.next;
#line 209
  uobj = (struct ib_uobject *)__mptr + 0xffffffffffffffe8UL;
#line 209
  __mptr___0 = (struct list_head  const  *)uobj->list.next;
#line 209
  tmp = (struct ib_uobject *)__mptr___0 + 0xffffffffffffffe8UL;
#line 209
  goto ldv_32247;
  ldv_32246: 
#line 210
  ah = (struct ib_ah *)uobj->object;
#line 212
  idr_remove_uobj(& ib_uverbs_ah_idr, uobj);
#line 213
  ib_destroy_ah(ah);
#line 214
  kfree((void const   *)uobj);
#line 209
  uobj = tmp;
#line 209
  __mptr___1 = (struct list_head  const  *)tmp->list.next;
#line 209
  tmp = (struct ib_uobject *)__mptr___1 + 0xffffffffffffffe8UL;
  ldv_32247: ;
#line 209
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->ah_list)) {
#line 211
    goto ldv_32246;
  } else {

  }
#line 218
  __mptr___2 = (struct list_head  const  *)context->mw_list.next;
#line 218
  uobj = (struct ib_uobject *)__mptr___2 + 0xffffffffffffffe8UL;
#line 218
  __mptr___3 = (struct list_head  const  *)uobj->list.next;
#line 218
  tmp = (struct ib_uobject *)__mptr___3 + 0xffffffffffffffe8UL;
#line 218
  goto ldv_32257;
  ldv_32256: 
#line 219
  mw = (struct ib_mw *)uobj->object;
#line 221
  idr_remove_uobj(& ib_uverbs_mw_idr, uobj);
#line 222
  ib_dealloc_mw(mw);
#line 223
  kfree((void const   *)uobj);
#line 218
  uobj = tmp;
#line 218
  __mptr___4 = (struct list_head  const  *)tmp->list.next;
#line 218
  tmp = (struct ib_uobject *)__mptr___4 + 0xffffffffffffffe8UL;
  ldv_32257: ;
#line 218
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->mw_list)) {
#line 220
    goto ldv_32256;
  } else {

  }
#line 226
  __mptr___5 = (struct list_head  const  *)context->rule_list.next;
#line 226
  uobj = (struct ib_uobject *)__mptr___5 + 0xffffffffffffffe8UL;
#line 226
  __mptr___6 = (struct list_head  const  *)uobj->list.next;
#line 226
  tmp = (struct ib_uobject *)__mptr___6 + 0xffffffffffffffe8UL;
#line 226
  goto ldv_32267;
  ldv_32266: 
#line 227
  flow_id = (struct ib_flow *)uobj->object;
#line 229
  idr_remove_uobj(& ib_uverbs_rule_idr, uobj);
#line 230
  ib_destroy_flow(flow_id);
#line 231
  kfree((void const   *)uobj);
#line 226
  uobj = tmp;
#line 226
  __mptr___7 = (struct list_head  const  *)tmp->list.next;
#line 226
  tmp = (struct ib_uobject *)__mptr___7 + 0xffffffffffffffe8UL;
  ldv_32267: ;
#line 226
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->rule_list)) {
#line 228
    goto ldv_32266;
  } else {

  }
#line 234
  __mptr___8 = (struct list_head  const  *)context->qp_list.next;
#line 234
  uobj = (struct ib_uobject *)__mptr___8 + 0xffffffffffffffe8UL;
#line 234
  __mptr___9 = (struct list_head  const  *)uobj->list.next;
#line 234
  tmp = (struct ib_uobject *)__mptr___9 + 0xffffffffffffffe8UL;
#line 234
  goto ldv_32280;
  ldv_32279: 
#line 235
  qp = (struct ib_qp *)uobj->object;
#line 237
  __mptr___10 = (struct ib_uobject  const  *)uobj;
#line 237
  uqp = (struct ib_uqp_object *)__mptr___10;
#line 239
  idr_remove_uobj(& ib_uverbs_qp_idr, uobj);
#line 240
  if ((unsigned long )qp->real_qp != (unsigned long )qp) {
#line 241
    ib_close_qp(qp);
  } else {
#line 243
    ib_uverbs_detach_umcast(qp, uqp);
#line 244
    ib_destroy_qp(qp);
  }
#line 246
  ib_uverbs_release_uevent(file, & uqp->uevent);
#line 247
  kfree((void const   *)uqp);
#line 234
  uobj = tmp;
#line 234
  __mptr___11 = (struct list_head  const  *)tmp->list.next;
#line 234
  tmp = (struct ib_uobject *)__mptr___11 + 0xffffffffffffffe8UL;
  ldv_32280: ;
#line 234
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->qp_list)) {
#line 236
    goto ldv_32279;
  } else {

  }
#line 250
  __mptr___12 = (struct list_head  const  *)context->srq_list.next;
#line 250
  uobj = (struct ib_uobject *)__mptr___12 + 0xffffffffffffffe8UL;
#line 250
  __mptr___13 = (struct list_head  const  *)uobj->list.next;
#line 250
  tmp = (struct ib_uobject *)__mptr___13 + 0xffffffffffffffe8UL;
#line 250
  goto ldv_32293;
  ldv_32292: 
#line 251
  srq = (struct ib_srq *)uobj->object;
#line 253
  __mptr___14 = (struct ib_uobject  const  *)uobj;
#line 253
  uevent = (struct ib_uevent_object *)__mptr___14;
#line 255
  idr_remove_uobj(& ib_uverbs_srq_idr, uobj);
#line 256
  ib_destroy_srq(srq);
#line 257
  ib_uverbs_release_uevent(file, uevent);
#line 258
  kfree((void const   *)uevent);
#line 250
  uobj = tmp;
#line 250
  __mptr___15 = (struct list_head  const  *)tmp->list.next;
#line 250
  tmp = (struct ib_uobject *)__mptr___15 + 0xffffffffffffffe8UL;
  ldv_32293: ;
#line 250
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->srq_list)) {
#line 252
    goto ldv_32292;
  } else {

  }
#line 261
  __mptr___16 = (struct list_head  const  *)context->cq_list.next;
#line 261
  uobj = (struct ib_uobject *)__mptr___16 + 0xffffffffffffffe8UL;
#line 261
  __mptr___17 = (struct list_head  const  *)uobj->list.next;
#line 261
  tmp = (struct ib_uobject *)__mptr___17 + 0xffffffffffffffe8UL;
#line 261
  goto ldv_32307;
  ldv_32306: 
#line 262
  cq = (struct ib_cq *)uobj->object;
#line 263
  ev_file = (struct ib_uverbs_event_file *)cq->cq_context;
#line 265
  __mptr___18 = (struct ib_uobject  const  *)uobj;
#line 265
  ucq = (struct ib_ucq_object *)__mptr___18;
#line 267
  idr_remove_uobj(& ib_uverbs_cq_idr, uobj);
#line 268
  ib_destroy_cq(cq);
#line 269
  ib_uverbs_release_ucq(file, ev_file, ucq);
#line 270
  kfree((void const   *)ucq);
#line 261
  uobj = tmp;
#line 261
  __mptr___19 = (struct list_head  const  *)tmp->list.next;
#line 261
  tmp = (struct ib_uobject *)__mptr___19 + 0xffffffffffffffe8UL;
  ldv_32307: ;
#line 261
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->cq_list)) {
#line 263
    goto ldv_32306;
  } else {

  }
#line 273
  __mptr___20 = (struct list_head  const  *)context->mr_list.next;
#line 273
  uobj = (struct ib_uobject *)__mptr___20 + 0xffffffffffffffe8UL;
#line 273
  __mptr___21 = (struct list_head  const  *)uobj->list.next;
#line 273
  tmp = (struct ib_uobject *)__mptr___21 + 0xffffffffffffffe8UL;
#line 273
  goto ldv_32317;
  ldv_32316: 
#line 274
  mr = (struct ib_mr *)uobj->object;
#line 276
  idr_remove_uobj(& ib_uverbs_mr_idr, uobj);
#line 277
  ib_dereg_mr(mr);
#line 278
  kfree((void const   *)uobj);
#line 273
  uobj = tmp;
#line 273
  __mptr___22 = (struct list_head  const  *)tmp->list.next;
#line 273
  tmp = (struct ib_uobject *)__mptr___22 + 0xffffffffffffffe8UL;
  ldv_32317: ;
#line 273
  if ((unsigned long )uobj != (unsigned long )context) {
#line 275
    goto ldv_32316;
  } else {

  }
#line 281
  mutex_lock_nested(& (file->device)->xrcd_tree_mutex, 0U);
#line 282
  __mptr___23 = (struct list_head  const  *)context->xrcd_list.next;
#line 282
  uobj = (struct ib_uobject *)__mptr___23 + 0xffffffffffffffe8UL;
#line 282
  __mptr___24 = (struct list_head  const  *)uobj->list.next;
#line 282
  tmp = (struct ib_uobject *)__mptr___24 + 0xffffffffffffffe8UL;
#line 282
  goto ldv_32330;
  ldv_32329: 
#line 283
  xrcd = (struct ib_xrcd *)uobj->object;
#line 285
  __mptr___25 = (struct ib_uobject  const  *)uobj;
#line 285
  uxrcd = (struct ib_uxrcd_object *)__mptr___25;
#line 287
  idr_remove_uobj(& ib_uverbs_xrcd_idr, uobj);
#line 288
  ib_uverbs_dealloc_xrcd(file->device, xrcd);
#line 289
  kfree((void const   *)uxrcd);
#line 282
  uobj = tmp;
#line 282
  __mptr___26 = (struct list_head  const  *)tmp->list.next;
#line 282
  tmp = (struct ib_uobject *)__mptr___26 + 0xffffffffffffffe8UL;
  ldv_32330: ;
#line 282
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->xrcd_list)) {
#line 284
    goto ldv_32329;
  } else {

  }
#line 291
  mutex_unlock(& (file->device)->xrcd_tree_mutex);
#line 293
  __mptr___27 = (struct list_head  const  *)context->pd_list.next;
#line 293
  uobj = (struct ib_uobject *)__mptr___27 + 0xffffffffffffffe8UL;
#line 293
  __mptr___28 = (struct list_head  const  *)uobj->list.next;
#line 293
  tmp = (struct ib_uobject *)__mptr___28 + 0xffffffffffffffe8UL;
#line 293
  goto ldv_32340;
  ldv_32339: 
#line 294
  pd = (struct ib_pd *)uobj->object;
#line 296
  idr_remove_uobj(& ib_uverbs_pd_idr, uobj);
#line 297
  ib_dealloc_pd(pd);
#line 298
  kfree((void const   *)uobj);
#line 293
  uobj = tmp;
#line 293
  __mptr___29 = (struct list_head  const  *)tmp->list.next;
#line 293
  tmp = (struct ib_uobject *)__mptr___29 + 0xffffffffffffffe8UL;
  ldv_32340: ;
#line 293
  if ((unsigned long )(& uobj->list) != (unsigned long )(& context->pd_list)) {
#line 295
    goto ldv_32339;
  } else {

  }
#line 301
  put_pid(context->tgid);
#line 303
  tmp___0 = (*((context->device)->dealloc_ucontext))(context);
#line 303
  return (tmp___0);
}
}
#line 306 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_release_file(struct kref *ref ) 
{ 
  struct ib_uverbs_file *file ;
  struct kref  const  *__mptr ;

  {
#line 309
  __mptr = (struct kref  const  *)ref;
#line 309
  file = (struct ib_uverbs_file *)__mptr;
#line 311
  ldv_module_put_5(((file->device)->ib_dev)->owner);
#line 312
  kref_put(& (file->device)->ref, & ib_uverbs_release_dev);
#line 314
  kfree((void const   *)file);
#line 315
  return;
}
}
#line 317 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static ssize_t ib_uverbs_event_read(struct file *filp , char *buf , size_t count ,
                                    loff_t *pos ) 
{ 
  struct ib_uverbs_event_file *file ;
  struct ib_uverbs_event *event ;
  int eventsz ;
  int ret ;
  int __ret ;
  wait_queue_t __wait ;
  long __ret___0 ;
  long __int ;
  long tmp ;
  int tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;
  struct list_head  const  *__mptr ;
  unsigned long tmp___3 ;

  {
#line 320
  file = (struct ib_uverbs_event_file *)filp->private_data;
#line 323
  ret = 0;
#line 325
  spin_lock_irq(& file->lock);
#line 327
  goto ldv_32368;
  ldv_32367: 
#line 328
  spin_unlock_irq(& file->lock);
#line 330
  if ((filp->f_flags & 2048U) != 0U) {
#line 331
    return (-11L);
  } else {

  }
#line 333
  __ret = 0;
#line 333
  __might_sleep("/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c",
                334, 0);
#line 333
  tmp___1 = list_empty((struct list_head  const  *)(& file->event_list));
#line 333
  if (tmp___1 != 0) {
#line 333
    __ret___0 = 0L;
#line 333
    INIT_LIST_HEAD(& __wait.task_list);
#line 333
    __wait.flags = 0U;
    ldv_32364: 
#line 333
    tmp = prepare_to_wait_event(& file->poll_wait, & __wait, 1);
#line 333
    __int = tmp;
#line 333
    tmp___0 = list_empty((struct list_head  const  *)(& file->event_list));
#line 333
    if (tmp___0 == 0) {
#line 333
      goto ldv_32363;
    } else {

    }
#line 333
    if (__int != 0L) {
#line 333
      __ret___0 = __int;
#line 333
      goto ldv_32363;
    } else {

    }
#line 333
    schedule();
#line 333
    goto ldv_32364;
    ldv_32363: 
#line 333
    finish_wait(& file->poll_wait, & __wait);
#line 333
    __ret = (int )__ret___0;
  } else {

  }
#line 333
  if (__ret != 0) {
#line 335
    return (-512L);
  } else {

  }
#line 337
  spin_lock_irq(& file->lock);
  ldv_32368: 
#line 327
  tmp___2 = list_empty((struct list_head  const  *)(& file->event_list));
#line 327
  if (tmp___2 != 0) {
#line 329
    goto ldv_32367;
  } else {

  }
#line 340
  __mptr = (struct list_head  const  *)file->event_list.next;
#line 340
  event = (struct ib_uverbs_event *)__mptr + 0xfffffffffffffff0UL;
#line 342
  if (file->is_async != 0) {
#line 343
    eventsz = 16;
  } else {
#line 345
    eventsz = 8;
  }
#line 347
  if ((size_t )eventsz > count) {
#line 348
    ret = -22;
#line 349
    event = (struct ib_uverbs_event *)0;
  } else {
#line 351
    list_del(file->event_list.next);
#line 352
    if ((unsigned long )event->counter != (unsigned long )((u32 *)0U)) {
#line 353
      *(event->counter) = *(event->counter) + 1U;
#line 354
      list_del(& event->obj_list);
    } else {

    }
  }
#line 358
  spin_unlock_irq(& file->lock);
#line 360
  if ((unsigned long )event != (unsigned long )((struct ib_uverbs_event *)0)) {
#line 361
    tmp___3 = copy_to_user((void *)buf, (void const   *)event, (unsigned long )eventsz);
#line 361
    if (tmp___3 != 0UL) {
#line 362
      ret = -14;
    } else {
#line 364
      ret = eventsz;
    }
  } else {

  }
#line 367
  kfree((void const   *)event);
#line 369
  return ((ssize_t )ret);
}
}
#line 372 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static unsigned int ib_uverbs_event_poll(struct file *filp , struct poll_table_struct *wait ) 
{ 
  unsigned int pollflags ;
  struct ib_uverbs_event_file *file ;
  int tmp ;

  {
#line 375
  pollflags = 0U;
#line 376
  file = (struct ib_uverbs_event_file *)filp->private_data;
#line 378
  poll_wait(filp, & file->poll_wait, wait);
#line 380
  spin_lock_irq(& file->lock);
#line 381
  tmp = list_empty((struct list_head  const  *)(& file->event_list));
#line 381
  if (tmp == 0) {
#line 382
    pollflags = 65U;
  } else {

  }
#line 383
  spin_unlock_irq(& file->lock);
#line 385
  return (pollflags);
}
}
#line 388 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_event_fasync(int fd , struct file *filp , int on ) 
{ 
  struct ib_uverbs_event_file *file ;
  int tmp ;

  {
#line 390
  file = (struct ib_uverbs_event_file *)filp->private_data;
#line 392
  tmp = fasync_helper(fd, filp, on, & file->async_queue);
#line 392
  return (tmp);
}
}
#line 395 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_event_close(struct inode *inode , struct file *filp ) 
{ 
  struct ib_uverbs_event_file *file ;
  struct ib_uverbs_event *entry ;
  struct ib_uverbs_event *tmp ;
  struct list_head  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  struct list_head  const  *__mptr___1 ;

  {
#line 397
  file = (struct ib_uverbs_event_file *)filp->private_data;
#line 400
  spin_lock_irq(& file->lock);
#line 401
  file->is_closed = 1;
#line 402
  __mptr = (struct list_head  const  *)file->event_list.next;
#line 402
  entry = (struct ib_uverbs_event *)__mptr + 0xfffffffffffffff0UL;
#line 402
  __mptr___0 = (struct list_head  const  *)entry->list.next;
#line 402
  tmp = (struct ib_uverbs_event *)__mptr___0 + 0xfffffffffffffff0UL;
#line 402
  goto ldv_32398;
  ldv_32397: ;
#line 403
  if ((unsigned long )entry->counter != (unsigned long )((u32 *)0U)) {
#line 404
    list_del(& entry->obj_list);
  } else {

  }
#line 405
  kfree((void const   *)entry);
#line 402
  entry = tmp;
#line 402
  __mptr___1 = (struct list_head  const  *)tmp->list.next;
#line 402
  tmp = (struct ib_uverbs_event *)__mptr___1 + 0xfffffffffffffff0UL;
  ldv_32398: ;
#line 402
  if ((unsigned long )(& entry->list) != (unsigned long )(& file->event_list)) {
#line 404
    goto ldv_32397;
  } else {

  }
#line 407
  spin_unlock_irq(& file->lock);
#line 409
  if (file->is_async != 0) {
#line 410
    ib_unregister_event_handler(& (file->uverbs_file)->event_handler);
#line 411
    kref_put(& (file->uverbs_file)->ref, & ib_uverbs_release_file);
  } else {

  }
#line 413
  kref_put(& file->ref, & ib_uverbs_release_event_file);
#line 415
  return (0);
}
}
#line 418 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct file_operations  const  uverbs_event_fops  = 
#line 418
     {& __this_module, & no_llseek, & ib_uverbs_event_read, 0, 0, 0, 0, & ib_uverbs_event_poll,
    0, 0, 0, 0, 0, 0, & ib_uverbs_event_close, 0, 0, & ib_uverbs_event_fasync, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0};
#line 427 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_comp_handler(struct ib_cq *cq , void *cq_context ) 
{ 
  struct ib_uverbs_event_file *file ;
  struct ib_ucq_object *uobj ;
  struct ib_uverbs_event *entry ;
  unsigned long flags ;
  raw_spinlock_t *tmp ;
  void *tmp___0 ;
  struct ib_uobject  const  *__mptr ;

  {
#line 429
  file = (struct ib_uverbs_event_file *)cq_context;
#line 434
  if ((unsigned long )file == (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 435
    return;
  } else {

  }
#line 437
  tmp = spinlock_check(& file->lock);
#line 437
  flags = _raw_spin_lock_irqsave(tmp);
#line 438
  if (file->is_closed != 0) {
#line 439
    spin_unlock_irqrestore(& file->lock, flags);
#line 440
    return;
  } else {

  }
#line 443
  tmp___0 = kmalloc(56UL, 32U);
#line 443
  entry = (struct ib_uverbs_event *)tmp___0;
#line 444
  if ((unsigned long )entry == (unsigned long )((struct ib_uverbs_event *)0)) {
#line 445
    spin_unlock_irqrestore(& file->lock, flags);
#line 446
    return;
  } else {

  }
#line 449
  __mptr = (struct ib_uobject  const  *)cq->uobject;
#line 449
  uobj = (struct ib_ucq_object *)__mptr;
#line 451
  entry->desc.comp.cq_handle = (cq->uobject)->user_handle;
#line 452
  entry->counter = & uobj->comp_events_reported;
#line 454
  list_add_tail(& entry->list, & file->event_list);
#line 455
  list_add_tail(& entry->obj_list, & uobj->comp_list);
#line 456
  spin_unlock_irqrestore(& file->lock, flags);
#line 458
  __wake_up(& file->poll_wait, 1U, 1, (void *)0);
#line 459
  kill_fasync(& file->async_queue, 29, 131073);
#line 460
  return;
}
}
#line 462 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_async_handler(struct ib_uverbs_file *file , __u64 element ,
                                    __u64 event , struct list_head *obj_list , u32 *counter ) 
{ 
  struct ib_uverbs_event *entry ;
  unsigned long flags ;
  raw_spinlock_t *tmp ;
  void *tmp___0 ;

  {
#line 470
  tmp = spinlock_check(& (file->async_file)->lock);
#line 470
  flags = _raw_spin_lock_irqsave(tmp);
#line 471
  if ((file->async_file)->is_closed != 0) {
#line 472
    spin_unlock_irqrestore(& (file->async_file)->lock, flags);
#line 473
    return;
  } else {

  }
#line 476
  tmp___0 = kmalloc(56UL, 32U);
#line 476
  entry = (struct ib_uverbs_event *)tmp___0;
#line 477
  if ((unsigned long )entry == (unsigned long )((struct ib_uverbs_event *)0)) {
#line 478
    spin_unlock_irqrestore(& (file->async_file)->lock, flags);
#line 479
    return;
  } else {

  }
#line 482
  entry->desc.async.element = element;
#line 483
  entry->desc.async.event_type = (__u32 )event;
#line 484
  entry->desc.async.reserved = 0U;
#line 485
  entry->counter = counter;
#line 487
  list_add_tail(& entry->list, & (file->async_file)->event_list);
#line 488
  if ((unsigned long )obj_list != (unsigned long )((struct list_head *)0)) {
#line 489
    list_add_tail(& entry->obj_list, obj_list);
  } else {

  }
#line 490
  spin_unlock_irqrestore(& (file->async_file)->lock, flags);
#line 492
  __wake_up(& (file->async_file)->poll_wait, 1U, 1, (void *)0);
#line 493
  kill_fasync(& (file->async_file)->async_queue, 29, 131073);
#line 494
  return;
}
}
#line 496 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_cq_event_handler(struct ib_event *event , void *context_ptr ) 
{ 
  struct ib_ucq_object *uobj ;
  struct ib_uobject  const  *__mptr ;

  {
#line 498
  __mptr = (struct ib_uobject  const  *)(event->element.cq)->uobject;
#line 498
  uobj = (struct ib_ucq_object *)__mptr;
#line 501
  ib_uverbs_async_handler(uobj->uverbs_file, uobj->uobject.user_handle, (__u64 )event->event,
                          & uobj->async_list, & uobj->async_events_reported);
#line 504
  return;
}
}
#line 506 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_qp_event_handler(struct ib_event *event , void *context_ptr ) 
{ 
  struct ib_uevent_object *uobj ;
  struct ib_uobject  const  *__mptr ;

  {
#line 511
  if ((unsigned long )(event->element.qp)->uobject == (unsigned long )((struct ib_uobject *)0) || ((event->element.qp)->uobject)->live == 0) {
#line 512
    return;
  } else {

  }
#line 514
  __mptr = (struct ib_uobject  const  *)(event->element.qp)->uobject;
#line 514
  uobj = (struct ib_uevent_object *)__mptr;
#line 517
  ib_uverbs_async_handler((struct ib_uverbs_file *)context_ptr, uobj->uobject.user_handle,
                          (__u64 )event->event, & uobj->event_list, & uobj->events_reported);
#line 520
  return;
}
}
#line 522 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_srq_event_handler(struct ib_event *event , void *context_ptr ) 
{ 
  struct ib_uevent_object *uobj ;
  struct ib_uobject  const  *__mptr ;

  {
#line 526
  __mptr = (struct ib_uobject  const  *)(event->element.srq)->uobject;
#line 526
  uobj = (struct ib_uevent_object *)__mptr;
#line 529
  ib_uverbs_async_handler((struct ib_uverbs_file *)context_ptr, uobj->uobject.user_handle,
                          (__u64 )event->event, & uobj->event_list, & uobj->events_reported);
#line 532
  return;
}
}
#line 534 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
void ib_uverbs_event_handler(struct ib_event_handler *handler , struct ib_event *event ) 
{ 
  struct ib_uverbs_file *file ;
  struct ib_event_handler  const  *__mptr ;

  {
#line 538
  __mptr = (struct ib_event_handler  const  *)handler;
#line 538
  file = (struct ib_uverbs_file *)__mptr + 0xffffffffffffff48UL;
#line 540
  ib_uverbs_async_handler(file, (__u64 )event->element.port_num, (__u64 )event->event,
                          (struct list_head *)0, (u32 *)0U);
#line 541
  return;
}
}
#line 544 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct file *ib_uverbs_alloc_event_file(struct ib_uverbs_file *uverbs_file , int is_async ) 
{ 
  struct ib_uverbs_event_file *ev_file ;
  struct file *filp ;
  void *tmp ;
  void *tmp___0 ;
  struct lock_class_key __key ;
  struct lock_class_key __key___0 ;
  bool tmp___1 ;

  {
#line 550
  tmp = kmalloc(208UL, 208U);
#line 550
  ev_file = (struct ib_uverbs_event_file *)tmp;
#line 551
  if ((unsigned long )ev_file == (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 552
    tmp___0 = ERR_PTR(-12L);
#line 552
    return ((struct file *)tmp___0);
  } else {

  }
#line 554
  kref_init(& ev_file->ref);
#line 555
  spinlock_check(& ev_file->lock);
#line 555
  __raw_spin_lock_init(& ev_file->lock.__annonCompField18.rlock, "&(&ev_file->lock)->rlock",
                       & __key);
#line 556
  INIT_LIST_HEAD(& ev_file->event_list);
#line 557
  __init_waitqueue_head(& ev_file->poll_wait, "&ev_file->poll_wait", & __key___0);
#line 558
  ev_file->uverbs_file = uverbs_file;
#line 559
  ev_file->async_queue = (struct fasync_struct *)0;
#line 560
  ev_file->is_async = is_async;
#line 561
  ev_file->is_closed = 0;
#line 563
  filp = anon_inode_getfile("[infinibandevent]", & uverbs_event_fops, (void *)ev_file,
                            0);
#line 565
  tmp___1 = IS_ERR((void const   *)filp);
#line 565
  if ((int )tmp___1) {
#line 566
    kfree((void const   *)ev_file);
  } else {

  }
#line 568
  return (filp);
}
}
#line 576 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
struct ib_uverbs_event_file *ib_uverbs_lookup_comp_file(int fd ) 
{ 
  struct ib_uverbs_event_file *ev_file ;
  struct fd f ;
  struct fd tmp ;

  {
#line 578
  ev_file = (struct ib_uverbs_event_file *)0;
#line 579
  tmp = fdget((unsigned int )fd);
#line 579
  f = tmp;
#line 581
  if ((unsigned long )f.file == (unsigned long )((struct file *)0)) {
#line 582
    return ((struct ib_uverbs_event_file *)0);
  } else {

  }
#line 584
  if ((unsigned long )(f.file)->f_op != (unsigned long )(& uverbs_event_fops)) {
#line 585
    goto out;
  } else {

  }
#line 587
  ev_file = (struct ib_uverbs_event_file *)(f.file)->private_data;
#line 588
  if (ev_file->is_async != 0) {
#line 589
    ev_file = (struct ib_uverbs_event_file *)0;
#line 590
    goto out;
  } else {

  }
#line 593
  kref_get(& ev_file->ref);
  out: 
#line 596
  fdput(f);
#line 597
  return (ev_file);
}
}
#line 600 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static ssize_t ib_uverbs_write(struct file *filp , char const   *buf , size_t count ,
                               loff_t *pos ) 
{ 
  struct ib_uverbs_file *file ;
  struct ib_uverbs_cmd_hdr hdr ;
  __u32 flags ;
  unsigned long tmp ;
  __u32 command ;
  ssize_t tmp___0 ;
  __u32 command___0 ;
  struct ib_uverbs_ex_cmd_hdr ex_hdr ;
  struct ib_udata ucore ;
  struct ib_udata uhw ;
  int err ;
  size_t written_count ;
  unsigned long tmp___1 ;
  struct thread_info *tmp___2 ;
  bool tmp___3 ;
  int tmp___4 ;
  long tmp___5 ;

  {
#line 603
  file = (struct ib_uverbs_file *)filp->private_data;
#line 607
  if (count <= 7UL) {
#line 608
    return (-22L);
  } else {

  }
#line 610
  tmp = copy_from_user((void *)(& hdr), (void const   *)buf, 8UL);
#line 610
  if (tmp != 0UL) {
#line 611
    return (-14L);
  } else {

  }
#line 613
  flags = hdr.command >> 24;
#line 616
  if (flags == 0U) {
#line 619
    if ((hdr.command & 16776960U) != 0U) {
#line 621
      return (-22L);
    } else {

    }
#line 623
    command = hdr.command & 255U;
#line 625
    if (command > 40U || (unsigned long )uverbs_cmd_table[command] == (unsigned long )((ssize_t (*)(struct ib_uverbs_file * ,
                                                                                                    char const   * ,
                                                                                                    int  ,
                                                                                                    int  ))0)) {
#line 627
      return (-22L);
    } else {

    }
#line 629
    if ((unsigned long )file->ucontext == (unsigned long )((struct ib_ucontext *)0) && command != 0U) {
#line 631
      return (-22L);
    } else {

    }
#line 633
    if (((((file->device)->ib_dev)->uverbs_cmd_mask >> (int )command) & 1ULL) == 0ULL) {
#line 634
      return (-38L);
    } else {

    }
#line 636
    if ((size_t )((int )hdr.in_words * 4) != count) {
#line 637
      return (-22L);
    } else {

    }
#line 639
    tmp___0 = (*(uverbs_cmd_table[command]))(file, buf + 8UL, (int )hdr.in_words * 4,
                                             (int )hdr.out_words * 4);
#line 639
    return (tmp___0);
  } else
#line 644
  if (flags == 128U) {
#line 651
    written_count = count;
#line 653
    if ((hdr.command & 16776960U) != 0U) {
#line 655
      return (-22L);
    } else {

    }
#line 657
    command___0 = hdr.command & 255U;
#line 659
    if (command___0 > 51U || (unsigned long )uverbs_ex_cmd_table[command___0] == (unsigned long )((int (*)(struct ib_uverbs_file * ,
                                                                                                           struct ib_udata * ,
                                                                                                           struct ib_udata * ))0)) {
#line 661
      return (-38L);
    } else {

    }
#line 663
    if ((unsigned long )file->ucontext == (unsigned long )((struct ib_ucontext *)0)) {
#line 664
      return (-22L);
    } else {

    }
#line 666
    if (((((file->device)->ib_dev)->uverbs_ex_cmd_mask >> (int )command___0) & 1ULL) == 0ULL) {
#line 667
      return (-38L);
    } else {

    }
#line 669
    if (count <= 23UL) {
#line 670
      return (-22L);
    } else {

    }
#line 672
    tmp___1 = copy_from_user((void *)(& ex_hdr), (void const   *)buf + 8U, 16UL);
#line 672
    if (tmp___1 != 0UL) {
#line 673
      return (-14L);
    } else {

    }
#line 675
    count = count - 24UL;
#line 676
    buf = buf + 24UL;
#line 678
    if ((size_t )(((int )hdr.in_words + (int )ex_hdr.provider_in_words) * 8) != count) {
#line 679
      return (-22L);
    } else {

    }
#line 681
    if (ex_hdr.cmd_hdr_reserved != 0U) {
#line 682
      return (-22L);
    } else {

    }
#line 684
    if (ex_hdr.response != 0ULL) {
#line 685
      if ((unsigned int )hdr.out_words == 0U && (unsigned int )ex_hdr.provider_out_words == 0U) {
#line 686
        return (-22L);
      } else {

      }
#line 688
      tmp___2 = current_thread_info();
#line 688
      tmp___3 = __chk_range_not_ok((unsigned long )ex_hdr.response, (unsigned long )(((int )hdr.out_words + (int )ex_hdr.provider_out_words) * 8),
                                   tmp___2->addr_limit.seg);
#line 688
      if (tmp___3) {
#line 688
        tmp___4 = 0;
      } else {
#line 688
        tmp___4 = 1;
      }
#line 688
      tmp___5 = ldv__builtin_expect((long )tmp___4, 1L);
#line 688
      if (tmp___5 == 0L) {
#line 691
        return (-14L);
      } else {

      }
    } else
#line 693
    if ((unsigned int )hdr.out_words != 0U || (unsigned int )ex_hdr.provider_out_words != 0U) {
#line 694
      return (-22L);
    } else {

    }
#line 697
    ucore.inbuf = (int )hdr.in_words * 8 != 0 ? (void const   *)buf : (void const   *)0;
#line 697
    ucore.outbuf = (int )hdr.out_words * 8 != 0 ? (void *)ex_hdr.response : (void *)0;
#line 697
    ucore.inlen = (size_t )((int )hdr.in_words * 8);
#line 697
    ucore.outlen = (size_t )((int )hdr.out_words * 8);
#line 700
    uhw.inbuf = (int )ex_hdr.provider_in_words * 8 != 0 ? (void const   *)(buf + ucore.inlen) : (void const   *)0;
#line 700
    uhw.outbuf = (int )ex_hdr.provider_out_words * 8 != 0 ? (void *)((unsigned long )ex_hdr.response + ucore.outlen) : (void *)0;
#line 700
    uhw.inlen = (size_t )((int )ex_hdr.provider_in_words * 8);
#line 700
    uhw.outlen = (size_t )((int )ex_hdr.provider_out_words * 8);
#line 706
    err = (*(uverbs_ex_cmd_table[command___0]))(file, & ucore, & uhw);
#line 710
    if (err != 0) {
#line 711
      return ((ssize_t )err);
    } else {

    }
#line 713
    return ((ssize_t )written_count);
  } else {

  }
#line 716
  return (-38L);
}
}
#line 719 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_mmap(struct file *filp , struct vm_area_struct *vma ) 
{ 
  struct ib_uverbs_file *file ;
  int tmp ;

  {
#line 721
  file = (struct ib_uverbs_file *)filp->private_data;
#line 723
  if ((unsigned long )file->ucontext == (unsigned long )((struct ib_ucontext *)0)) {
#line 724
    return (-19);
  } else {
#line 726
    tmp = (*(((file->device)->ib_dev)->mmap))(file->ucontext, vma);
#line 726
    return (tmp);
  }
}
}
#line 739 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_open(struct inode *inode , struct file *filp ) 
{ 
  struct ib_uverbs_device *dev ;
  struct ib_uverbs_file *file ;
  int ret ;
  struct cdev  const  *__mptr ;
  bool tmp ;
  int tmp___0 ;
  void *tmp___1 ;
  struct lock_class_key __key ;
  int tmp___2 ;

  {
#line 745
  __mptr = (struct cdev  const  *)inode->__annonCompField68.i_cdev;
#line 745
  dev = (struct ib_uverbs_device *)__mptr + 0xffffffffffffff80UL;
#line 746
  if ((unsigned long )dev != (unsigned long )((struct ib_uverbs_device *)0)) {
#line 747
    kref_get(& dev->ref);
  } else {
#line 749
    return (-6);
  }
#line 751
  tmp = ldv_try_module_get_6((dev->ib_dev)->owner);
#line 751
  if (tmp) {
#line 751
    tmp___0 = 0;
  } else {
#line 751
    tmp___0 = 1;
  }
#line 751
  if (tmp___0) {
#line 752
    ret = -19;
#line 753
    goto err;
  } else {

  }
#line 756
  tmp___1 = kmalloc(224UL, 208U);
#line 756
  file = (struct ib_uverbs_file *)tmp___1;
#line 757
  if ((unsigned long )file == (unsigned long )((struct ib_uverbs_file *)0)) {
#line 758
    ret = -12;
#line 759
    goto err_module;
  } else {

  }
#line 762
  file->device = dev;
#line 763
  file->ucontext = (struct ib_ucontext *)0;
#line 764
  file->async_file = (struct ib_uverbs_event_file *)0;
#line 765
  kref_init(& file->ref);
#line 766
  __mutex_init(& file->mutex, "&file->mutex", & __key);
#line 768
  filp->private_data = (void *)file;
#line 770
  tmp___2 = ldv_nonseekable_open_7(inode, filp);
#line 770
  return (tmp___2);
  err_module: 
#line 773
  ldv_module_put_8((dev->ib_dev)->owner);
  err: 
#line 776
  kref_put(& dev->ref, & ib_uverbs_release_dev);
#line 777
  return (ret);
}
}
#line 780 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_close(struct inode *inode , struct file *filp ) 
{ 
  struct ib_uverbs_file *file ;

  {
#line 782
  file = (struct ib_uverbs_file *)filp->private_data;
#line 784
  ib_uverbs_cleanup_ucontext(file, file->ucontext);
#line 786
  if ((unsigned long )file->async_file != (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 787
    kref_put(& (file->async_file)->ref, & ib_uverbs_release_event_file);
  } else {

  }
#line 789
  kref_put(& file->ref, & ib_uverbs_release_file);
#line 791
  return (0);
}
}
#line 794 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct file_operations  const  uverbs_fops  = 
#line 794
     {& __this_module, & no_llseek, 0, & ib_uverbs_write, 0, 0, 0, 0, 0, 0, 0, 0, & ib_uverbs_open,
    0, & ib_uverbs_close, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
#line 802 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct file_operations  const  uverbs_mmap_fops  = 
#line 802
     {& __this_module, & no_llseek, 0, & ib_uverbs_write, 0, 0, 0, 0, 0, 0, & ib_uverbs_mmap,
    0, & ib_uverbs_open, 0, & ib_uverbs_close, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0};
#line 811 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct ib_client uverbs_client  =    {(char *)"uverbs", & ib_uverbs_add_one, & ib_uverbs_remove_one, {0, 0}};
#line 817 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static ssize_t show_ibdev(struct device *device , struct device_attribute *attr ,
                          char *buf ) 
{ 
  struct ib_uverbs_device *dev ;
  void *tmp ;
  int tmp___0 ;

  {
#line 820
  tmp = dev_get_drvdata((struct device  const  *)device);
#line 820
  dev = (struct ib_uverbs_device *)tmp;
#line 822
  if ((unsigned long )dev == (unsigned long )((struct ib_uverbs_device *)0)) {
#line 823
    return (-19L);
  } else {

  }
#line 825
  tmp___0 = sprintf(buf, "%s\n", (char *)(& (dev->ib_dev)->name));
#line 825
  return ((ssize_t )tmp___0);
}
}
#line 827 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct device_attribute dev_attr_ibdev  =    {{"ibdev", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
                                   {(char)0}, {(char)0}, {(char)0}}}}, & show_ibdev,
    (ssize_t (*)(struct device * , struct device_attribute * , char const   * , size_t  ))0};
#line 829 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static ssize_t show_dev_abi_version(struct device *device , struct device_attribute *attr ,
                                    char *buf ) 
{ 
  struct ib_uverbs_device *dev ;
  void *tmp ;
  int tmp___0 ;

  {
#line 832
  tmp = dev_get_drvdata((struct device  const  *)device);
#line 832
  dev = (struct ib_uverbs_device *)tmp;
#line 834
  if ((unsigned long )dev == (unsigned long )((struct ib_uverbs_device *)0)) {
#line 835
    return (-19L);
  } else {

  }
#line 837
  tmp___0 = sprintf(buf, "%d\n", (dev->ib_dev)->uverbs_abi_ver);
#line 837
  return ((ssize_t )tmp___0);
}
}
#line 839 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct device_attribute dev_attr_abi_version  =    {{"abi_version", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0},
                                         {(char)0}, {(char)0}, {(char)0}, {(char)0}}}},
    & show_dev_abi_version, (ssize_t (*)(struct device * , struct device_attribute * ,
                                         char const   * , size_t  ))0};
#line 842 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static struct class_attribute_string class_attr_abi_version  =    {{{"abi_version", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0},
                                          {(char)0}, {(char)0}, {(char)0}, {(char)0}}}},
     & show_class_attr_string, (ssize_t (*)(struct class * , struct class_attribute * ,
                                            char const   * , size_t  ))0}, (char *)"6"};
#line 844 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static dev_t overflow_maj  ;
#line 845 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static unsigned long overflow_map[1U]  ;
#line 852 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int find_overflow_devnum(void) 
{ 
  int ret ;
  unsigned long tmp ;

  {
#line 856
  if (overflow_maj == 0U) {
#line 857
    ret = alloc_chrdev_region(& overflow_maj, 0U, 32U, "infiniband_verbs");
#line 859
    if (ret != 0) {
#line 860
      printk("\vuser_verbs: couldn\'t register dynamic device number\n");
#line 861
      return (ret);
    } else {

    }
  } else {

  }
#line 865
  tmp = find_first_zero_bit((unsigned long const   *)(& overflow_map), 32UL);
#line 865
  ret = (int )tmp;
#line 866
  if (ret > 31) {
#line 867
    return (-1);
  } else {

  }
#line 869
  return (ret);
}
}
#line 872 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_add_one(struct ib_device *device ) 
{ 
  int devnum ;
  dev_t base ;
  struct ib_uverbs_device *uverbs_dev ;
  void *tmp ;
  struct rb_root __constr_expr_0 ;
  struct lock_class_key __key ;
  unsigned long tmp___0 ;
  int tmp___1 ;
  bool tmp___2 ;
  int tmp___3 ;
  int tmp___4 ;

  {
#line 878
  if ((unsigned long )device->alloc_ucontext == (unsigned long )((struct ib_ucontext *(*)(struct ib_device * ,
                                                                                          struct ib_udata * ))0)) {
#line 879
    return;
  } else {

  }
#line 881
  tmp = kzalloc(632UL, 208U);
#line 881
  uverbs_dev = (struct ib_uverbs_device *)tmp;
#line 882
  if ((unsigned long )uverbs_dev == (unsigned long )((struct ib_uverbs_device *)0)) {
#line 883
    return;
  } else {

  }
#line 885
  kref_init(& uverbs_dev->ref);
#line 886
  init_completion(& uverbs_dev->comp);
#line 887
  __constr_expr_0.rb_node = (struct rb_node *)0;
#line 887
  uverbs_dev->xrcd_tree = __constr_expr_0;
#line 888
  __mutex_init(& uverbs_dev->xrcd_tree_mutex, "&uverbs_dev->xrcd_tree_mutex", & __key);
#line 890
  spin_lock(& map_lock);
#line 891
  tmp___0 = find_first_zero_bit((unsigned long const   *)(& dev_map), 32UL);
#line 891
  devnum = (int )tmp___0;
#line 892
  if (devnum > 31) {
#line 893
    spin_unlock(& map_lock);
#line 894
    devnum = find_overflow_devnum();
#line 895
    if (devnum < 0) {
#line 896
      goto err;
    } else {

    }
#line 898
    spin_lock(& map_lock);
#line 899
    uverbs_dev->devnum = devnum + 32;
#line 900
    base = (dev_t )devnum + overflow_maj;
#line 901
    set_bit((long )devnum, (unsigned long volatile   *)(& overflow_map));
  } else {
#line 903
    uverbs_dev->devnum = devnum;
#line 904
    base = (dev_t )(devnum + 242221248);
#line 905
    set_bit((long )devnum, (unsigned long volatile   *)(& dev_map));
  }
#line 907
  spin_unlock(& map_lock);
#line 909
  uverbs_dev->ib_dev = device;
#line 910
  uverbs_dev->num_comp_vectors = device->num_comp_vectors;
#line 912
  ldv_cdev_init_9(& uverbs_dev->cdev, (struct file_operations  const  *)0);
#line 913
  uverbs_dev->cdev.owner = & __this_module;
#line 914
  uverbs_dev->cdev.ops = (unsigned long )device->mmap != (unsigned long )((int (*)(struct ib_ucontext * ,
                                                                                   struct vm_area_struct * ))0) ? & uverbs_mmap_fops : & uverbs_fops;
#line 915
  kobject_set_name(& uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum);
#line 916
  tmp___1 = cdev_add(& uverbs_dev->cdev, base, 1U);
#line 916
  if (tmp___1 != 0) {
#line 917
    goto err_cdev;
  } else {

  }
#line 919
  uverbs_dev->dev = device_create(uverbs_class, device->dma_device, uverbs_dev->cdev.dev,
                                  (void *)uverbs_dev, "uverbs%d", uverbs_dev->devnum);
#line 922
  tmp___2 = IS_ERR((void const   *)uverbs_dev->dev);
#line 922
  if ((int )tmp___2) {
#line 923
    goto err_cdev;
  } else {

  }
#line 925
  tmp___3 = device_create_file(uverbs_dev->dev, (struct device_attribute  const  *)(& dev_attr_ibdev));
#line 925
  if (tmp___3 != 0) {
#line 926
    goto err_class;
  } else {

  }
#line 927
  tmp___4 = device_create_file(uverbs_dev->dev, (struct device_attribute  const  *)(& dev_attr_abi_version));
#line 927
  if (tmp___4 != 0) {
#line 928
    goto err_class;
  } else {

  }
#line 930
  ib_set_client_data(device, & uverbs_client, (void *)uverbs_dev);
#line 932
  return;
  err_class: 
#line 935
  device_destroy(uverbs_class, uverbs_dev->cdev.dev);
  err_cdev: 
#line 938
  ldv_cdev_del_10(& uverbs_dev->cdev);
#line 939
  if (uverbs_dev->devnum <= 31) {
#line 940
    clear_bit((long )devnum, (unsigned long volatile   *)(& dev_map));
  } else {
#line 942
    clear_bit((long )devnum, (unsigned long volatile   *)(& overflow_map));
  }
  err: 
#line 945
  kref_put(& uverbs_dev->ref, & ib_uverbs_release_dev);
#line 946
  wait_for_completion(& uverbs_dev->comp);
#line 947
  kfree((void const   *)uverbs_dev);
#line 948
  return;
}
}
#line 951 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_remove_one(struct ib_device *device ) 
{ 
  struct ib_uverbs_device *uverbs_dev ;
  void *tmp ;

  {
#line 953
  tmp = ib_get_client_data(device, & uverbs_client);
#line 953
  uverbs_dev = (struct ib_uverbs_device *)tmp;
#line 955
  if ((unsigned long )uverbs_dev == (unsigned long )((struct ib_uverbs_device *)0)) {
#line 956
    return;
  } else {

  }
#line 958
  dev_set_drvdata(uverbs_dev->dev, (void *)0);
#line 959
  device_destroy(uverbs_class, uverbs_dev->cdev.dev);
#line 960
  ldv_cdev_del_11(& uverbs_dev->cdev);
#line 962
  if (uverbs_dev->devnum <= 31) {
#line 963
    clear_bit((long )uverbs_dev->devnum, (unsigned long volatile   *)(& dev_map));
  } else {
#line 965
    clear_bit((long )(uverbs_dev->devnum + -32), (unsigned long volatile   *)(& overflow_map));
  }
#line 967
  kref_put(& uverbs_dev->ref, & ib_uverbs_release_dev);
#line 968
  wait_for_completion(& uverbs_dev->comp);
#line 969
  kfree((void const   *)uverbs_dev);
#line 970
  return;
}
}
#line 972 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static char *uverbs_devnode(struct device *dev , umode_t *mode ) 
{ 
  char const   *tmp ;
  char *tmp___0 ;

  {
#line 974
  if ((unsigned long )mode != (unsigned long )((umode_t *)0U)) {
#line 975
    *mode = 438U;
  } else {

  }
#line 976
  tmp = dev_name((struct device  const  *)dev);
#line 976
  tmp___0 = kasprintf(208U, "infiniband/%s", tmp);
#line 976
  return (tmp___0);
}
}
#line 979 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static int ib_uverbs_init(void) 
{ 
  int ret ;
  struct lock_class_key __key ;
  struct class *tmp ;
  long tmp___0 ;
  bool tmp___1 ;

  {
#line 983
  ret = register_chrdev_region(242221248U, 32U, "infiniband_verbs");
#line 985
  if (ret != 0) {
#line 986
    printk("\vuser_verbs: couldn\'t register device number\n");
#line 987
    goto out;
  } else {

  }
#line 990
  tmp = __class_create(& __this_module, "infiniband_verbs", & __key);
#line 990
  uverbs_class = tmp;
#line 991
  tmp___1 = IS_ERR((void const   *)uverbs_class);
#line 991
  if ((int )tmp___1) {
#line 992
    tmp___0 = PTR_ERR((void const   *)uverbs_class);
#line 992
    ret = (int )tmp___0;
#line 993
    printk("\vuser_verbs: couldn\'t create class infiniband_verbs\n");
#line 994
    goto out_chrdev;
  } else {

  }
#line 997
  uverbs_class->devnode = & uverbs_devnode;
#line 999
  ret = class_create_file(uverbs_class, (struct class_attribute  const  *)(& class_attr_abi_version.attr));
#line 1000
  if (ret != 0) {
#line 1001
    printk("\vuser_verbs: couldn\'t create abi_version attribute\n");
#line 1002
    goto out_class;
  } else {

  }
#line 1005
  ret = ib_register_client(& uverbs_client);
#line 1006
  if (ret != 0) {
#line 1007
    printk("\vuser_verbs: couldn\'t register client\n");
#line 1008
    goto out_class;
  } else {

  }
#line 1011
  return (0);
  out_class: 
#line 1014
  class_destroy(uverbs_class);
  out_chrdev: 
#line 1017
  unregister_chrdev_region(242221248U, 32U);
  out: ;
#line 1020
  return (ret);
}
}
#line 1023 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.c"
static void ib_uverbs_cleanup(void) 
{ 


  {
#line 1025
  ib_unregister_client(& uverbs_client);
#line 1026
  class_destroy(uverbs_class);
#line 1027
  unregister_chrdev_region(242221248U, 32U);
#line 1028
  if (overflow_maj != 0U) {
#line 1029
    unregister_chrdev_region(overflow_maj, 32U);
  } else {

  }
#line 1030
  idr_destroy(& ib_uverbs_pd_idr);
#line 1031
  idr_destroy(& ib_uverbs_mr_idr);
#line 1032
  idr_destroy(& ib_uverbs_mw_idr);
#line 1033
  idr_destroy(& ib_uverbs_ah_idr);
#line 1034
  idr_destroy(& ib_uverbs_cq_idr);
#line 1035
  idr_destroy(& ib_uverbs_qp_idr);
#line 1036
  idr_destroy(& ib_uverbs_srq_idr);
#line 1037
  return;
}
}
#line 42 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_retval_0  ;
#line 43 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_retval_1  ;
#line 44
extern void ldv_initialize(void) ;
#line 45
void ldv_check_final_state(void) ;
#line 46
extern int ldv_open_7(void) ;
#line 47 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_retval_3  ;
#line 48 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_retval_2  ;
#line 52 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_file_operations_7(void) 
{ 
  void *tmp ;
  void *tmp___0 ;

  {
#line 53
  tmp = ldv_init_zalloc(1000UL);
#line 53
  uverbs_event_fops_group1 = (struct inode *)tmp;
#line 54
  tmp___0 = ldv_init_zalloc(504UL);
#line 54
  uverbs_event_fops_group2 = (struct file *)tmp___0;
#line 55
  return;
}
}
#line 58 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_file_operations_6(void) 
{ 
  void *tmp ;
  void *tmp___0 ;

  {
#line 59
  tmp = ldv_init_zalloc(1000UL);
#line 59
  uverbs_fops_group1 = (struct inode *)tmp;
#line 60
  tmp___0 = ldv_init_zalloc(504UL);
#line 60
  uverbs_fops_group2 = (struct file *)tmp___0;
#line 61
  return;
}
}
#line 64 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_file_operations_5(void) 
{ 
  void *tmp ;
  void *tmp___0 ;

  {
#line 65
  tmp = ldv_init_zalloc(1000UL);
#line 65
  uverbs_mmap_fops_group1 = (struct inode *)tmp;
#line 66
  tmp___0 = ldv_init_zalloc(504UL);
#line 66
  uverbs_mmap_fops_group2 = (struct file *)tmp___0;
#line 67
  return;
}
}
#line 70 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_initialize_ib_client_4(void) 
{ 
  void *tmp ;

  {
#line 71
  tmp = ldv_init_zalloc(2488UL);
#line 71
  uverbs_client_group0 = (struct ib_device *)tmp;
#line 72
  return;
}
}
#line 86 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int main(void) 
{ 
  loff_t ldvarg1 ;
  char *ldvarg4 ;
  void *tmp ;
  size_t ldvarg3 ;
  int ldvarg0 ;
  loff_t *ldvarg2 ;
  void *tmp___0 ;
  struct device_attribute *ldvarg7 ;
  void *tmp___1 ;
  struct device *ldvarg5 ;
  void *tmp___2 ;
  char *ldvarg6 ;
  void *tmp___3 ;
  int ldvarg11 ;
  struct poll_table_struct *ldvarg12 ;
  void *tmp___4 ;
  char *ldvarg15 ;
  void *tmp___5 ;
  int ldvarg8 ;
  size_t ldvarg14 ;
  loff_t *ldvarg13 ;
  void *tmp___6 ;
  int ldvarg10 ;
  loff_t ldvarg9 ;
  struct device_attribute *ldvarg18 ;
  void *tmp___7 ;
  char *ldvarg17 ;
  void *tmp___8 ;
  struct device *ldvarg16 ;
  void *tmp___9 ;
  struct class_attribute *ldvarg21 ;
  void *tmp___10 ;
  char *ldvarg20 ;
  void *tmp___11 ;
  struct class *ldvarg19 ;
  void *tmp___12 ;
  loff_t *ldvarg24 ;
  void *tmp___13 ;
  struct vm_area_struct *ldvarg27 ;
  void *tmp___14 ;
  char *ldvarg26 ;
  void *tmp___15 ;
  size_t ldvarg25 ;
  loff_t ldvarg23 ;
  int ldvarg22 ;
  int tmp___16 ;
  int tmp___17 ;
  int tmp___18 ;
  int tmp___19 ;
  int tmp___20 ;
  int tmp___21 ;
  int tmp___22 ;
  int tmp___23 ;
  int tmp___24 ;

  {
#line 90
  tmp = ldv_init_zalloc(1UL);
#line 90
  ldvarg4 = (char *)tmp;
#line 93
  tmp___0 = ldv_init_zalloc(8UL);
#line 93
  ldvarg2 = (loff_t *)tmp___0;
#line 94
  tmp___1 = ldv_init_zalloc(48UL);
#line 94
  ldvarg7 = (struct device_attribute *)tmp___1;
#line 95
  tmp___2 = ldv_init_zalloc(1416UL);
#line 95
  ldvarg5 = (struct device *)tmp___2;
#line 96
  tmp___3 = ldv_init_zalloc(1UL);
#line 96
  ldvarg6 = (char *)tmp___3;
#line 98
  tmp___4 = ldv_init_zalloc(16UL);
#line 98
  ldvarg12 = (struct poll_table_struct *)tmp___4;
#line 99
  tmp___5 = ldv_init_zalloc(1UL);
#line 99
  ldvarg15 = (char *)tmp___5;
#line 102
  tmp___6 = ldv_init_zalloc(8UL);
#line 102
  ldvarg13 = (loff_t *)tmp___6;
#line 105
  tmp___7 = ldv_init_zalloc(48UL);
#line 105
  ldvarg18 = (struct device_attribute *)tmp___7;
#line 106
  tmp___8 = ldv_init_zalloc(1UL);
#line 106
  ldvarg17 = (char *)tmp___8;
#line 107
  tmp___9 = ldv_init_zalloc(1416UL);
#line 107
  ldvarg16 = (struct device *)tmp___9;
#line 108
  tmp___10 = ldv_init_zalloc(48UL);
#line 108
  ldvarg21 = (struct class_attribute *)tmp___10;
#line 109
  tmp___11 = ldv_init_zalloc(1UL);
#line 109
  ldvarg20 = (char *)tmp___11;
#line 110
  tmp___12 = ldv_init_zalloc(120UL);
#line 110
  ldvarg19 = (struct class *)tmp___12;
#line 111
  tmp___13 = ldv_init_zalloc(8UL);
#line 111
  ldvarg24 = (loff_t *)tmp___13;
#line 112
  tmp___14 = ldv_init_zalloc(184UL);
#line 112
  ldvarg27 = (struct vm_area_struct *)tmp___14;
#line 113
  tmp___15 = ldv_init_zalloc(1UL);
#line 113
  ldvarg26 = (char *)tmp___15;
#line 87
  ldv_initialize();
#line 89
  ldv_memset((void *)(& ldvarg1), 0, 8UL);
#line 91
  ldv_memset((void *)(& ldvarg3), 0, 8UL);
#line 92
  ldv_memset((void *)(& ldvarg0), 0, 4UL);
#line 97
  ldv_memset((void *)(& ldvarg11), 0, 4UL);
#line 100
  ldv_memset((void *)(& ldvarg8), 0, 4UL);
#line 101
  ldv_memset((void *)(& ldvarg14), 0, 8UL);
#line 103
  ldv_memset((void *)(& ldvarg10), 0, 4UL);
#line 104
  ldv_memset((void *)(& ldvarg9), 0, 8UL);
#line 114
  ldv_memset((void *)(& ldvarg25), 0, 8UL);
#line 115
  ldv_memset((void *)(& ldvarg23), 0, 8UL);
#line 116
  ldv_memset((void *)(& ldvarg22), 0, 4UL);
#line 118
  ldv_state_variable_6 = 0;
#line 119
  ldv_state_variable_3 = 0;
#line 120
  ldv_state_variable_7 = 0;
#line 121
  ldv_state_variable_2 = 0;
#line 122
  ldv_state_variable_1 = 0;
#line 123
  ldv_state_variable_4 = 0;
#line 124
  ref_cnt = 0;
#line 125
  ldv_state_variable_0 = 1;
#line 126
  ldv_state_variable_5 = 0;
  ldv_32732: 
#line 128
  tmp___16 = __VERIFIER_nondet_int();
#line 128
  switch (tmp___16) {
  case 0: ;
#line 132
  if (ldv_state_variable_6 != 0) {
#line 133
    tmp___17 = __VERIFIER_nondet_int();
#line 133
    switch (tmp___17) {
    case 0: ;
#line 136
    if (ldv_state_variable_6 == 1) {
#line 138
      ib_uverbs_write(uverbs_fops_group2, (char const   *)ldvarg4, ldvarg3, ldvarg2);
#line 140
      ldv_state_variable_6 = 1;
    } else {

    }
#line 143
    if (ldv_state_variable_6 == 2) {
#line 145
      ib_uverbs_write(uverbs_fops_group2, (char const   *)ldvarg4, ldvarg3, ldvarg2);
#line 147
      ldv_state_variable_6 = 2;
    } else {

    }
#line 150
    goto ldv_32685;
    case 1: ;
#line 153
    if (ldv_state_variable_6 == 2) {
#line 155
      ib_uverbs_close(uverbs_fops_group1, uverbs_fops_group2);
#line 156
      ldv_state_variable_6 = 1;
#line 157
      ref_cnt = ref_cnt - 1;
    } else {

    }
#line 160
    goto ldv_32685;
    case 2: ;
#line 163
    if (ldv_state_variable_6 == 2) {
#line 165
      no_llseek(uverbs_fops_group2, ldvarg1, ldvarg0);
#line 167
      ldv_state_variable_6 = 2;
    } else {

    }
#line 170
    goto ldv_32685;
    case 3: ;
#line 173
    if (ldv_state_variable_6 == 1) {
#line 175
      ldv_retval_0 = ib_uverbs_open(uverbs_fops_group1, uverbs_fops_group2);
#line 176
      if (ldv_retval_0 == 0) {
#line 177
        ldv_state_variable_6 = 2;
#line 178
        ref_cnt = ref_cnt + 1;
      } else {

      }
    } else {

    }
#line 182
    goto ldv_32685;
    default: 
#line 183
    ldv_stop();
    }
    ldv_32685: ;
  } else {

  }
#line 187
  goto ldv_32690;
  case 1: ;
#line 191
  if (ldv_state_variable_3 != 0) {
#line 192
    tmp___18 = __VERIFIER_nondet_int();
#line 192
    switch (tmp___18) {
    case 0: ;
#line 195
    if (ldv_state_variable_3 == 1) {
#line 197
      show_ibdev(ldvarg5, ldvarg7, ldvarg6);
#line 199
      ldv_state_variable_3 = 1;
    } else {

    }
#line 202
    goto ldv_32693;
    default: 
#line 203
    ldv_stop();
    }
    ldv_32693: ;
  } else {

  }
#line 207
  goto ldv_32690;
  case 2: ;
#line 211
  if (ldv_state_variable_7 != 0) {
#line 212
    tmp___19 = __VERIFIER_nondet_int();
#line 212
    switch (tmp___19) {
    case 0: ;
#line 215
    if (ldv_state_variable_7 == 2) {
#line 217
      ib_uverbs_event_close(uverbs_event_fops_group1, uverbs_event_fops_group2);
#line 218
      ldv_state_variable_7 = 1;
#line 219
      ref_cnt = ref_cnt - 1;
    } else {

    }
#line 222
    goto ldv_32697;
    case 1: ;
#line 225
    if (ldv_state_variable_7 == 2) {
#line 227
      ib_uverbs_event_read(uverbs_event_fops_group2, ldvarg15, ldvarg14, ldvarg13);
#line 229
      ldv_state_variable_7 = 2;
    } else {

    }
#line 232
    goto ldv_32697;
    case 2: ;
#line 235
    if (ldv_state_variable_7 == 1) {
#line 237
      ib_uverbs_event_poll(uverbs_event_fops_group2, ldvarg12);
#line 239
      ldv_state_variable_7 = 1;
    } else {

    }
#line 242
    if (ldv_state_variable_7 == 2) {
#line 244
      ib_uverbs_event_poll(uverbs_event_fops_group2, ldvarg12);
#line 246
      ldv_state_variable_7 = 2;
    } else {

    }
#line 249
    goto ldv_32697;
    case 3: ;
#line 252
    if (ldv_state_variable_7 == 1) {
#line 254
      ib_uverbs_event_fasync(ldvarg10, uverbs_event_fops_group2, ldvarg11);
#line 256
      ldv_state_variable_7 = 1;
    } else {

    }
#line 259
    if (ldv_state_variable_7 == 2) {
#line 261
      ib_uverbs_event_fasync(ldvarg10, uverbs_event_fops_group2, ldvarg11);
#line 263
      ldv_state_variable_7 = 2;
    } else {

    }
#line 266
    goto ldv_32697;
    case 4: ;
#line 269
    if (ldv_state_variable_7 == 2) {
#line 271
      no_llseek(uverbs_event_fops_group2, ldvarg9, ldvarg8);
#line 273
      ldv_state_variable_7 = 2;
    } else {

    }
#line 276
    goto ldv_32697;
    case 5: ;
#line 279
    if (ldv_state_variable_7 == 1) {
#line 281
      ldv_retval_1 = ldv_open_7();
#line 282
      if (ldv_retval_1 == 0) {
#line 283
        ldv_state_variable_7 = 2;
#line 284
        ref_cnt = ref_cnt + 1;
      } else {

      }
    } else {

    }
#line 288
    goto ldv_32697;
    default: 
#line 289
    ldv_stop();
    }
    ldv_32697: ;
  } else {

  }
#line 293
  goto ldv_32690;
  case 3: ;
#line 297
  if (ldv_state_variable_2 != 0) {
#line 298
    tmp___20 = __VERIFIER_nondet_int();
#line 298
    switch (tmp___20) {
    case 0: ;
#line 301
    if (ldv_state_variable_2 == 1) {
#line 303
      show_dev_abi_version(ldvarg16, ldvarg18, ldvarg17);
#line 305
      ldv_state_variable_2 = 1;
    } else {

    }
#line 308
    goto ldv_32706;
    default: 
#line 309
    ldv_stop();
    }
    ldv_32706: ;
  } else {

  }
#line 313
  goto ldv_32690;
  case 4: ;
#line 317
  if (ldv_state_variable_1 != 0) {
#line 318
    tmp___21 = __VERIFIER_nondet_int();
#line 318
    switch (tmp___21) {
    case 0: ;
#line 321
    if (ldv_state_variable_1 == 1) {
#line 323
      show_class_attr_string(ldvarg19, ldvarg21, ldvarg20);
#line 325
      ldv_state_variable_1 = 1;
    } else {

    }
#line 328
    goto ldv_32710;
    default: 
#line 329
    ldv_stop();
    }
    ldv_32710: ;
  } else {

  }
#line 333
  goto ldv_32690;
  case 5: ;
#line 337
  if (ldv_state_variable_4 != 0) {
#line 338
    tmp___22 = __VERIFIER_nondet_int();
#line 338
    switch (tmp___22) {
    case 0: ;
#line 341
    if (ldv_state_variable_4 == 1) {
#line 343
      ib_uverbs_add_one(uverbs_client_group0);
#line 345
      ldv_state_variable_4 = 2;
#line 346
      ref_cnt = ref_cnt + 1;
    } else {

    }
#line 349
    goto ldv_32714;
    case 1: ;
#line 352
    if (ldv_state_variable_4 == 2) {
#line 354
      ib_uverbs_remove_one(uverbs_client_group0);
#line 356
      ldv_state_variable_4 = 1;
#line 357
      ref_cnt = ref_cnt - 1;
    } else {

    }
#line 360
    goto ldv_32714;
    default: 
#line 361
    ldv_stop();
    }
    ldv_32714: ;
  } else {

  }
#line 365
  goto ldv_32690;
  case 6: ;
#line 369
  if (ldv_state_variable_0 != 0) {
#line 370
    tmp___23 = __VERIFIER_nondet_int();
#line 370
    switch (tmp___23) {
    case 0: ;
#line 373
    if (ldv_state_variable_0 == 2 && ref_cnt == 0) {
#line 375
      ib_uverbs_cleanup();
#line 376
      ldv_state_variable_0 = 3;
#line 377
      goto ldv_final;
    } else {

    }
#line 380
    goto ldv_32720;
    case 1: ;
#line 383
    if (ldv_state_variable_0 == 1) {
#line 385
      ldv_retval_2 = ib_uverbs_init();
#line 386
      if (ldv_retval_2 != 0) {
#line 387
        ldv_state_variable_0 = 3;
#line 388
        goto ldv_final;
      } else {

      }
#line 391
      if (ldv_retval_2 == 0) {
#line 392
        ldv_state_variable_0 = 2;
#line 393
        ldv_state_variable_2 = 1;
#line 394
        ldv_state_variable_3 = 1;
#line 395
        ldv_state_variable_1 = 1;
#line 396
        ldv_state_variable_4 = 1;
#line 397
        ldv_initialize_ib_client_4();
      } else {

      }
    } else {

    }
#line 401
    goto ldv_32720;
    default: 
#line 402
    ldv_stop();
    }
    ldv_32720: ;
  } else {

  }
#line 406
  goto ldv_32690;
  case 7: ;
#line 410
  if (ldv_state_variable_5 != 0) {
#line 411
    tmp___24 = __VERIFIER_nondet_int();
#line 411
    switch (tmp___24) {
    case 0: ;
#line 414
    if (ldv_state_variable_5 == 1) {
#line 416
      ib_uverbs_mmap(uverbs_mmap_fops_group2, ldvarg27);
#line 418
      ldv_state_variable_5 = 1;
    } else {

    }
#line 421
    if (ldv_state_variable_5 == 2) {
#line 423
      ib_uverbs_mmap(uverbs_mmap_fops_group2, ldvarg27);
#line 425
      ldv_state_variable_5 = 2;
    } else {

    }
#line 428
    goto ldv_32725;
    case 1: ;
#line 431
    if (ldv_state_variable_5 == 1) {
#line 433
      ib_uverbs_write(uverbs_mmap_fops_group2, (char const   *)ldvarg26, ldvarg25,
                      ldvarg24);
#line 435
      ldv_state_variable_5 = 1;
    } else {

    }
#line 438
    if (ldv_state_variable_5 == 2) {
#line 440
      ib_uverbs_write(uverbs_mmap_fops_group2, (char const   *)ldvarg26, ldvarg25,
                      ldvarg24);
#line 442
      ldv_state_variable_5 = 2;
    } else {

    }
#line 445
    goto ldv_32725;
    case 2: ;
#line 448
    if (ldv_state_variable_5 == 2) {
#line 450
      ib_uverbs_close(uverbs_mmap_fops_group1, uverbs_mmap_fops_group2);
#line 451
      ldv_state_variable_5 = 1;
#line 452
      ref_cnt = ref_cnt - 1;
    } else {

    }
#line 455
    goto ldv_32725;
    case 3: ;
#line 458
    if (ldv_state_variable_5 == 2) {
#line 460
      no_llseek(uverbs_mmap_fops_group2, ldvarg23, ldvarg22);
#line 462
      ldv_state_variable_5 = 2;
    } else {

    }
#line 465
    goto ldv_32725;
    case 4: ;
#line 468
    if (ldv_state_variable_5 == 1) {
#line 470
      ldv_retval_3 = ib_uverbs_open(uverbs_mmap_fops_group1, uverbs_mmap_fops_group2);
#line 471
      if (ldv_retval_3 == 0) {
#line 472
        ldv_state_variable_5 = 2;
#line 473
        ref_cnt = ref_cnt + 1;
      } else {

      }
    } else {

    }
#line 477
    goto ldv_32725;
    default: 
#line 478
    ldv_stop();
    }
    ldv_32725: ;
  } else {

  }
#line 482
  goto ldv_32690;
  default: 
#line 483
  ldv_stop();
  }
  ldv_32690: ;
#line 485
  goto ldv_32732;
  ldv_final: 
#line 487
  ldv_check_final_state();
#line 488
  return 0;
}
}
#line 491 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
__inline static void *ERR_PTR(long error ) 
{ 
  void *tmp ;

  {
#line 494
  tmp = ldv_err_ptr(error);
#line 494
  return (tmp);
}
}
#line 497 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
__inline static long PTR_ERR(void const   *ptr ) 
{ 
  long tmp ;

  {
#line 500
  tmp = ldv_ptr_err(ptr);
#line 500
  return (tmp);
}
}
#line 503 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
__inline static bool IS_ERR(void const   *ptr ) 
{ 
  bool tmp ;

  {
#line 506
  tmp = ldv_is_err(ptr);
#line 506
  return (tmp);
}
}
#line 515 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_module_put_5(struct module *ldv_func_arg1 ) 
{ 


  {
#line 518
  ldv_module_put(ldv_func_arg1);
#line 519
  return;
}
}
#line 521 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
bool ldv_try_module_get_6(struct module *ldv_func_arg1 ) 
{ 
  int tmp ;

  {
#line 524
  tmp = ldv_try_module_get(ldv_func_arg1);
#line 524
  return (tmp != 0);
}
}
#line 527 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
int ldv_nonseekable_open_7(struct inode *ldv_func_arg1 , struct file *ldv_func_arg2 ) 
{ 


  {
#line 530
  return (0);
}
}
#line 533 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_module_put_8(struct module *ldv_func_arg1 ) 
{ 


  {
#line 536
  ldv_module_put(ldv_func_arg1);
#line 537
  return;
}
}
#line 539 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_cdev_init_9(struct cdev *cdev , struct file_operations  const  *fops ) 
{ 


  {
#line 542
  cdev_init(cdev, fops);
#line 544
  ldv_state_variable_6 = 1;
#line 545
  ldv_file_operations_6();
#line 546
  return;
}
}
#line 549 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_cdev_del_10(struct cdev *p ) 
{ 


  {
#line 552
  cdev_del(p);
#line 554
  ldv_state_variable_6 = 0;
#line 555
  return;
}
}
#line 557 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_main.o.c.prepared"
void ldv_cdev_del_11(struct cdev *p ) 
{ 


  {
#line 560
  cdev_del(p);
#line 562
  ldv_state_variable_6 = 0;
#line 563
  return;
}
}
#line 1 "<compiler builtins>"
#line 1
__inline static long ldv__builtin_expect(long exp , long c ) ;
#line 201 "include/linux/compiler.h"
__inline static void __read_once_size(void const volatile   *p , void *res , int size ) 
{ 


  {
#line 203
  switch (size) {
  case 1: 
#line 204
  *((__u8 *)res) = *((__u8 volatile   *)p);
#line 204
  goto ldv_880;
  case 2: 
#line 205
  *((__u16 *)res) = *((__u16 volatile   *)p);
#line 205
  goto ldv_880;
  case 4: 
#line 206
  *((__u32 *)res) = *((__u32 volatile   *)p);
#line 206
  goto ldv_880;
  case 8: 
#line 207
  *((__u64 *)res) = *((__u64 volatile   *)p);
#line 207
  goto ldv_880;
  default: 
#line 209
  __asm__  volatile   ("": : : "memory");
#line 210
  __builtin_memcpy(res, (void const   *)p, (unsigned long )size);
#line 211
  __asm__  volatile   ("": : : "memory");
  }
  ldv_880: ;
#line 214
  return;
}
}
#line 45 "include/linux/dynamic_debug.h"
extern void __dynamic_pr_debug(struct _ddebug * , char const   *  , ...) ;
#line 10 "./arch/x86/include/asm/current.h"
extern struct task_struct *current_task ;
#line 12 "./arch/x86/include/asm/current.h"
__inline static struct task_struct *get_current(void) 
{ 
  struct task_struct *pfo_ret__ ;

  {
#line 14
  switch (8UL) {
  case 1UL: 
#line 14
  __asm__  ("movb %%gs:%P1,%0": "=q" (pfo_ret__): "p" (& current_task));
#line 14
  goto ldv_3129;
  case 2UL: 
#line 14
  __asm__  ("movw %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task));
#line 14
  goto ldv_3129;
  case 4UL: 
#line 14
  __asm__  ("movl %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task));
#line 14
  goto ldv_3129;
  case 8UL: 
#line 14
  __asm__  ("movq %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task));
#line 14
  goto ldv_3129;
  default: 
#line 14
  __bad_percpu_size();
  }
  ldv_3129: ;
#line 14
  return (pfo_ret__);
}
}
#line 30 "./arch/x86/include/asm/string_64.h"
extern void *memcpy(void * , void const   * , size_t  ) ;
#line 63
extern int memcmp(void const   * , void const   * , size_t  ) ;
#line 23 "include/linux/err.h"
__inline static void *ERR_PTR(long error ) ;
#line 32
__inline static long PTR_ERR(void const   *ptr ) ;
#line 41
__inline static bool IS_ERR(void const   *ptr ) ;
#line 25 "./arch/x86/include/asm/atomic.h"
__inline static int atomic_read(atomic_t const   *v ) 
{ 
  int __var ;

  {
#line 27
  __var = 0;
#line 27
  return ((int )*((int const volatile   *)(& v->counter)));
}
}
#line 90 "./arch/x86/include/asm/atomic.h"
__inline static void atomic_inc(atomic_t *v ) 
{ 


  {
#line 92
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; incl %0": "+m" (v->counter));
#line 94
  return;
}
}
#line 102 "./arch/x86/include/asm/atomic.h"
__inline static void atomic_dec(atomic_t *v ) 
{ 


  {
#line 104
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; decl %0": "+m" (v->counter));
#line 106
  return;
}
}
#line 116 "./arch/x86/include/asm/atomic.h"
__inline static int atomic_dec_and_test(atomic_t *v ) 
{ 
  char c ;

  {
#line 118
  __asm__  volatile   (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; decl %0; sete %1": "+m" (v->counter),
                       "=qm" (c): : "memory");
#line 118
  return ((int )((signed char )c) != 0);
}
}
#line 8 "./arch/x86/include/asm/preempt.h"
extern int __preempt_count ;
#line 70 "./arch/x86/include/asm/preempt.h"
__inline static void __preempt_count_add(int val ) 
{ 
  int pao_ID__ ;

  {
#line 72
  pao_ID__ = 0;
#line 72
  switch (4UL) {
  case 1UL: ;
#line 72
  if (pao_ID__ == 1) {
#line 72
    __asm__  ("incb %%gs:%0": "+m" (__preempt_count));
  } else
#line 72
  if (pao_ID__ == -1) {
#line 72
    __asm__  ("decb %%gs:%0": "+m" (__preempt_count));
  } else {
#line 72
    __asm__  ("addb %1, %%gs:%0": "+m" (__preempt_count): "qi" (val));
  }
#line 72
  goto ldv_6059;
  case 2UL: ;
#line 72
  if (pao_ID__ == 1) {
#line 72
    __asm__  ("incw %%gs:%0": "+m" (__preempt_count));
  } else
#line 72
  if (pao_ID__ == -1) {
#line 72
    __asm__  ("decw %%gs:%0": "+m" (__preempt_count));
  } else {
#line 72
    __asm__  ("addw %1, %%gs:%0": "+m" (__preempt_count): "ri" (val));
  }
#line 72
  goto ldv_6059;
  case 4UL: ;
#line 72
  if (pao_ID__ == 1) {
#line 72
    __asm__  ("incl %%gs:%0": "+m" (__preempt_count));
  } else
#line 72
  if (pao_ID__ == -1) {
#line 72
    __asm__  ("decl %%gs:%0": "+m" (__preempt_count));
  } else {
#line 72
    __asm__  ("addl %1, %%gs:%0": "+m" (__preempt_count): "ri" (val));
  }
#line 72
  goto ldv_6059;
  case 8UL: ;
#line 72
  if (pao_ID__ == 1) {
#line 72
    __asm__  ("incq %%gs:%0": "+m" (__preempt_count));
  } else
#line 72
  if (pao_ID__ == -1) {
#line 72
    __asm__  ("decq %%gs:%0": "+m" (__preempt_count));
  } else {
#line 72
    __asm__  ("addq %1, %%gs:%0": "+m" (__preempt_count): "re" (val));
  }
#line 72
  goto ldv_6059;
  default: 
#line 72
  __bad_percpu_size();
  }
  ldv_6059: ;
#line 74
  return;
}
}
#line 75 "./arch/x86/include/asm/preempt.h"
__inline static void __preempt_count_sub(int val ) 
{ 
  int pao_ID__ ;

  {
#line 77
  pao_ID__ = 0;
#line 77
  switch (4UL) {
  case 1UL: ;
#line 77
  if (pao_ID__ == 1) {
#line 77
    __asm__  ("incb %%gs:%0": "+m" (__preempt_count));
  } else
#line 77
  if (pao_ID__ == -1) {
#line 77
    __asm__  ("decb %%gs:%0": "+m" (__preempt_count));
  } else {
#line 77
    __asm__  ("addb %1, %%gs:%0": "+m" (__preempt_count): "qi" (- val));
  }
#line 77
  goto ldv_6071;
  case 2UL: ;
#line 77
  if (pao_ID__ == 1) {
#line 77
    __asm__  ("incw %%gs:%0": "+m" (__preempt_count));
  } else
#line 77
  if (pao_ID__ == -1) {
#line 77
    __asm__  ("decw %%gs:%0": "+m" (__preempt_count));
  } else {
#line 77
    __asm__  ("addw %1, %%gs:%0": "+m" (__preempt_count): "ri" (- val));
  }
#line 77
  goto ldv_6071;
  case 4UL: ;
#line 77
  if (pao_ID__ == 1) {
#line 77
    __asm__  ("incl %%gs:%0": "+m" (__preempt_count));
  } else
#line 77
  if (pao_ID__ == -1) {
#line 77
    __asm__  ("decl %%gs:%0": "+m" (__preempt_count));
  } else {
#line 77
    __asm__  ("addl %1, %%gs:%0": "+m" (__preempt_count): "ri" (- val));
  }
#line 77
  goto ldv_6071;
  case 8UL: ;
#line 77
  if (pao_ID__ == 1) {
#line 77
    __asm__  ("incq %%gs:%0": "+m" (__preempt_count));
  } else
#line 77
  if (pao_ID__ == -1) {
#line 77
    __asm__  ("decq %%gs:%0": "+m" (__preempt_count));
  } else {
#line 77
    __asm__  ("addq %1, %%gs:%0": "+m" (__preempt_count): "re" (- val));
  }
#line 77
  goto ldv_6071;
  default: 
#line 77
  __bad_percpu_size();
  }
  ldv_6071: ;
#line 79
  return;
}
}
#line 280 "include/linux/lockdep.h"
extern void lockdep_init_map(struct lockdep_map * , char const   * , struct lock_class_key * ,
                             int  ) ;
#line 333
extern void lock_acquire(struct lockdep_map * , unsigned int  , int  , int  , int  ,
                         struct lockdep_map * , unsigned long  ) ;
#line 337
extern void lock_release(struct lockdep_map * , int  , unsigned long  ) ;
#line 545
extern void lockdep_rcu_suspicious(char const   * , int const    , char const   * ) ;
#line 84 "include/linux/rwsem.h"
extern void __init_rwsem(struct rw_semaphore * , char const   * , struct lock_class_key * ) ;
#line 108
extern void down_read(struct rw_semaphore * ) ;
#line 118
extern void down_write(struct rw_semaphore * ) ;
#line 128
extern void up_read(struct rw_semaphore * ) ;
#line 133
extern void up_write(struct rw_semaphore * ) ;
#line 154
extern void down_read_nested(struct rw_semaphore * , int  ) ;
#line 268 "include/linux/rcupdate.h"
__inline static void __rcu_read_lock(void) 
{ 


  {
#line 270
  __preempt_count_add(1);
#line 270
  __asm__  volatile   ("": : : "memory");
#line 271
  return;
}
}
#line 273 "include/linux/rcupdate.h"
__inline static void __rcu_read_unlock(void) 
{ 


  {
#line 275
  __asm__  volatile   ("": : : "memory");
#line 275
  __preempt_count_sub(1);
#line 276
  return;
}
}
#line 104 "include/linux/rcutree.h"
extern bool rcu_is_watching(void) ;
#line 447 "include/linux/rcupdate.h"
__inline static void rcu_lock_acquire(struct lockdep_map *map ) 
{ 


  {
#line 449
  lock_acquire(map, 0U, 0, 2, 0, (struct lockdep_map *)0, 0UL);
#line 450
  return;
}
}
#line 452 "include/linux/rcupdate.h"
__inline static void rcu_lock_release(struct lockdep_map *map ) 
{ 


  {
#line 454
  lock_release(map, 1, 0UL);
#line 455
  return;
}
}
#line 457
extern struct lockdep_map rcu_lock_map ;
#line 461
extern int debug_lockdep_rcu_enabled(void) ;
#line 843 "include/linux/rcupdate.h"
__inline static void rcu_read_lock(void) 
{ 
  bool __warned ;
  int tmp ;
  bool tmp___0 ;
  int tmp___1 ;

  {
#line 845
  __rcu_read_lock();
#line 847
  rcu_lock_acquire(& rcu_lock_map);
#line 848
  tmp = debug_lockdep_rcu_enabled();
#line 848
  if (tmp != 0 && ! __warned) {
#line 848
    tmp___0 = rcu_is_watching();
#line 848
    if (tmp___0) {
#line 848
      tmp___1 = 0;
    } else {
#line 848
      tmp___1 = 1;
    }
#line 848
    if (tmp___1) {
#line 848
      __warned = 1;
#line 848
      lockdep_rcu_suspicious("include/linux/rcupdate.h", 849, "rcu_read_lock() used illegally while idle");
    } else {

    }
  } else {

  }
#line 851
  return;
}
}
#line 897 "include/linux/rcupdate.h"
__inline static void rcu_read_unlock(void) 
{ 
  bool __warned ;
  int tmp ;
  bool tmp___0 ;
  int tmp___1 ;

  {
#line 899
  tmp = debug_lockdep_rcu_enabled();
#line 899
  if (tmp != 0 && ! __warned) {
#line 899
    tmp___0 = rcu_is_watching();
#line 899
    if (tmp___0) {
#line 899
      tmp___1 = 0;
    } else {
#line 899
      tmp___1 = 1;
    }
#line 899
    if (tmp___1) {
#line 899
      __warned = 1;
#line 899
      lockdep_rcu_suspicious("include/linux/rcupdate.h", 900, "rcu_read_unlock() used illegally while idle");
    } else {

    }
  } else {

  }
#line 902
  __rcu_read_unlock();
#line 903
  rcu_lock_release(& rcu_lock_map);
#line 904
  return;
}
}
#line 62 "include/linux/rbtree.h"
extern void rb_insert_color(struct rb_node * , struct rb_root * ) ;
#line 63
extern void rb_erase(struct rb_node * , struct rb_root * ) ;
#line 80 "include/linux/rbtree.h"
__inline static void rb_link_node(struct rb_node *node , struct rb_node *parent ,
                                  struct rb_node **rb_link ) 
{ 
  struct rb_node *tmp ;

  {
#line 83
  node->__rb_parent_color = (unsigned long )parent;
#line 84
  tmp = (struct rb_node *)0;
#line 84
  node->rb_right = tmp;
#line 84
  node->rb_left = tmp;
#line 86
  *rb_link = node;
#line 87
  return;
}
}
#line 79 "include/linux/idr.h"
extern void *idr_find_slowpath(struct idr * , int  ) ;
#line 80
extern void idr_preload(gfp_t  ) ;
#line 81
extern int idr_alloc(struct idr * , void * , int  , int  , gfp_t  ) ;
#line 87
extern void idr_remove(struct idr * , int  ) ;
#line 115 "include/linux/idr.h"
__inline static void *idr_find(struct idr *idr , int id ) 
{ 
  struct idr_layer *hint ;
  struct idr_layer *________p1 ;
  struct idr_layer *_________p1 ;
  union __anonunion___u_168 __u ;
  int tmp ;
  struct idr_layer *________p1___0 ;
  struct idr_layer *_________p1___0 ;
  union __anonunion___u_170 __u___0 ;
  int tmp___0 ;
  void *tmp___1 ;

  {
#line 117
  __read_once_size((void const volatile   *)(& idr->hint), (void *)(& __u.__c), 8);
#line 117
  _________p1 = __u.__val;
#line 117
  ________p1 = _________p1;
#line 117
  tmp = debug_lockdep_rcu_enabled();
#line 117
  hint = ________p1;
#line 119
  if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) {
#line 120
    __read_once_size((void const volatile   *)(& hint->ary) + ((unsigned long )id & 255UL),
                     (void *)(& __u___0.__c), 8);
#line 120
    _________p1___0 = __u___0.__val;
#line 120
    ________p1___0 = _________p1___0;
#line 120
    tmp___0 = debug_lockdep_rcu_enabled();
#line 120
    return ((void *)________p1___0);
  } else {

  }
#line 122
  tmp___1 = idr_find_slowpath(idr, id);
#line 122
  return (tmp___1);
}
}
#line 41 "include/linux/kref.h"
__inline static void kref_get___0(struct kref *kref ) 
{ 
  bool __warned ;
  int __ret_warn_once ;
  int tmp ;
  int __ret_warn_on ;
  long tmp___0 ;
  long tmp___1 ;
  long tmp___2 ;

  {
#line 47
  tmp = atomic_add_return(1, & kref->refcount);
#line 47
  __ret_warn_once = tmp <= 1;
#line 47
  tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L);
#line 47
  if (tmp___2 != 0L) {
#line 47
    __ret_warn_on = ! __warned;
#line 47
    tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 47
    if (tmp___0 != 0L) {
#line 47
      warn_slowpath_null("include/linux/kref.h", 47);
    } else {

    }
#line 47
    tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 47
    if (tmp___1 != 0L) {
#line 47
      __warned = 1;
    } else {

    }
  } else {

  }
#line 47
  ldv__builtin_expect(__ret_warn_once != 0, 0L);
#line 49
  return;
}
}
#line 68 "include/linux/kref.h"
__inline static int kref_sub___0(struct kref *kref , unsigned int count , void (*release)(struct kref * ) ) 
{ 
  int __ret_warn_on ;
  long tmp ;
  int tmp___0 ;

  {
#line 71
  __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0);
#line 71
  tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 71
  if (tmp != 0L) {
#line 71
    warn_slowpath_null("include/linux/kref.h", 71);
  } else {

  }
#line 71
  ldv__builtin_expect(__ret_warn_on != 0, 0L);
#line 73
  tmp___0 = atomic_sub_and_test((int )count, & kref->refcount);
#line 73
  if (tmp___0 != 0) {
#line 74
    (*release)(kref);
#line 75
    return (1);
  } else {

  }
#line 77
  return (0);
}
}
#line 97 "include/linux/kref.h"
__inline static int kref_put___0(struct kref *kref , void (*release)(struct kref * ) ) 
{ 
  int tmp ;

  {
#line 99
  tmp = kref_sub___0(kref, 1U, release);
#line 99
  return (tmp);
}
}
#line 215 "include/linux/capability.h"
extern bool capable(int  ) ;
#line 86 "include/linux/pid.h"
extern struct pid *get_task_pid(struct task_struct * , enum pid_type  ) ;
#line 68 "include/linux/file.h"
extern int get_unused_fd_flags(unsigned int  ) ;
#line 69
extern void put_unused_fd(unsigned int  ) ;
#line 71
extern void fd_install(unsigned int  , struct file * ) ;
#line 2011 "include/linux/fs.h"
extern void iput(struct inode * ) ;
#line 2014 "include/linux/fs.h"
__inline static struct inode *file_inode(struct file  const  *f ) 
{ 


  {
#line 2016
  return ((struct inode *)f->f_inode);
}
}
#line 2543
extern struct inode *igrab(struct inode * ) ;
#line 1783 "include/rdma/ib_verbs.h"
__inline static int ib_copy_from_udata(void *dest , struct ib_udata *udata , size_t len ) 
{ 
  unsigned long tmp ;

  {
#line 1785
  tmp = copy_from_user(dest, udata->inbuf, len);
#line 1785
  return (tmp != 0UL ? -14 : 0);
}
}
#line 1788 "include/rdma/ib_verbs.h"
__inline static int ib_copy_to_udata(struct ib_udata *udata , void *src , size_t len ) 
{ 
  unsigned long tmp ;

  {
#line 1790
  tmp = copy_to_user(udata->outbuf, (void const   *)src, len);
#line 1790
  return (tmp != 0UL ? -14 : 0);
}
}
#line 1813
extern int ib_register_event_handler(struct ib_event_handler * ) ;
#line 1817
extern int ib_query_device(struct ib_device * , struct ib_device_attr * ) ;
#line 1820
extern int ib_query_port(struct ib_device * , u8  , struct ib_port_attr * ) ;
#line 1823
extern enum rdma_link_layer rdma_port_get_link_layer(struct ib_device * , u8  ) ;
#line 2147
extern struct ib_ah *ib_create_ah(struct ib_pd * , struct ib_ah_attr * ) ;
#line 2241
extern int ib_query_srq(struct ib_srq * , struct ib_srq_attr * ) ;
#line 2272
extern struct ib_qp *ib_create_qp(struct ib_pd * , struct ib_qp_init_attr * ) ;
#line 2284
extern int ib_modify_qp(struct ib_qp * , struct ib_qp_attr * , int  ) ;
#line 2299
extern int ib_query_qp(struct ib_qp * , struct ib_qp_attr * , int  , struct ib_qp_init_attr * ) ;
#line 2317
extern struct ib_qp *ib_open_qp(struct ib_xrcd * , struct ib_qp_open_attr * ) ;
#line 2419 "include/rdma/ib_verbs.h"
__inline static int ib_poll_cq(struct ib_cq *cq , int num_entries , struct ib_wc *wc ) 
{ 
  int tmp ;

  {
#line 2422
  tmp = (*((cq->device)->poll_cq))(cq, num_entries, wc);
#line 2422
  return (tmp);
}
}
#line 2464 "include/rdma/ib_verbs.h"
__inline static int ib_req_notify_cq(struct ib_cq *cq , enum ib_cq_notify_flags flags ) 
{ 
  int tmp ;

  {
#line 2467
  tmp = (*((cq->device)->req_notify_cq))(cq, flags);
#line 2467
  return (tmp);
}
}
#line 2975
extern int ib_attach_mcast(struct ib_qp * , union ib_gid * , u16  ) ;
#line 2995
extern int ib_dealloc_xrcd(struct ib_xrcd * ) ;
#line 2997
extern struct ib_flow *ib_create_flow(struct ib_qp * , struct ib_flow_attr * , int  ) ;
#line 3001 "include/rdma/ib_verbs.h"
__inline static int ib_check_mr_access(int flags ) 
{ 


  {
#line 3007
  if ((flags & 10) != 0 && (flags & 1) == 0) {
#line 3009
    return (-22);
  } else {

  }
#line 3011
  return (0);
}
}
#line 52 "/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/infiniband/core/core_priv.h"
extern int ib_resolve_eth_l2_attrs(struct ib_qp * , struct ib_qp_attr * , int * ) ;
#line 51 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class pd_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'P', 'D', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 52 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class mr_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'M', 'R', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 53 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class mw_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'M', 'W', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 54 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class cq_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'C', 'Q', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 55 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class qp_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'Q', 'P', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 56 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class ah_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'A', 'H', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 57 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class srq_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'S', 'R', 'Q', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 58 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class xrcd_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'X', 'R', 'C', 'D', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 59 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct uverbs_lock_class rule_lock_class  =    {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0},
      {(char)0}}}, {'R', 'U', 'L', 'E', '-', 'u', 'o', 'b', 'j', '\000'}};
#line 86 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void init_uobj(struct ib_uobject *uobj , u64 user_handle , struct ib_ucontext *context ,
                      struct uverbs_lock_class *c ) 
{ 
  struct lock_class_key __key ;

  {
#line 89
  uobj->user_handle = user_handle;
#line 90
  uobj->context = context;
#line 91
  kref_init(& uobj->ref);
#line 92
  __init_rwsem(& uobj->mutex, "&uobj->mutex", & __key);
#line 93
  lockdep_init_map(& uobj->mutex.dep_map, (char const   *)(& c->name), & c->key, 0);
#line 94
  uobj->live = 0;
#line 95
  return;
}
}
#line 97 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void release_uobj(struct kref *kref ) 
{ 
  struct kref  const  *__mptr ;

  {
#line 99
  __mptr = (struct kref  const  *)kref;
#line 99
  kfree((void const   *)((struct ib_uobject *)__mptr + 0xffffffffffffffd4UL));
#line 101
  return;
}
}
#line 102 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_uobj(struct ib_uobject *uobj ) 
{ 


  {
#line 104
  kref_put___0(& uobj->ref, & release_uobj);
#line 105
  return;
}
}
#line 107 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_uobj_read(struct ib_uobject *uobj ) 
{ 


  {
#line 109
  up_read(& uobj->mutex);
#line 110
  put_uobj(uobj);
#line 111
  return;
}
}
#line 113 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_uobj_write(struct ib_uobject *uobj ) 
{ 


  {
#line 115
  up_write(& uobj->mutex);
#line 116
  put_uobj(uobj);
#line 117
  return;
}
}
#line 119 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int idr_add_uobj(struct idr *idr , struct ib_uobject *uobj ) 
{ 
  int ret ;

  {
#line 123
  idr_preload(208U);
#line 124
  spin_lock(& ib_uverbs_idr_lock);
#line 126
  ret = idr_alloc(idr, (void *)uobj, 0, 0, 0U);
#line 127
  if (ret >= 0) {
#line 128
    uobj->id = ret;
  } else {

  }
#line 130
  spin_unlock(& ib_uverbs_idr_lock);
#line 131
  __rcu_read_unlock();
#line 133
  return (0 < ret ? 0 : ret);
}
}
#line 136 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
void idr_remove_uobj(struct idr *idr , struct ib_uobject *uobj ) 
{ 


  {
#line 138
  spin_lock(& ib_uverbs_idr_lock);
#line 139
  idr_remove(idr, uobj->id);
#line 140
  spin_unlock(& ib_uverbs_idr_lock);
#line 141
  return;
}
}
#line 143 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_uobject *__idr_get_uobj(struct idr *idr , int id , struct ib_ucontext *context ) 
{ 
  struct ib_uobject *uobj ;
  void *tmp ;

  {
#line 148
  spin_lock(& ib_uverbs_idr_lock);
#line 149
  tmp = idr_find(idr, id);
#line 149
  uobj = (struct ib_uobject *)tmp;
#line 150
  if ((unsigned long )uobj != (unsigned long )((struct ib_uobject *)0)) {
#line 151
    if ((unsigned long )uobj->context == (unsigned long )context) {
#line 152
      kref_get___0(& uobj->ref);
    } else {
#line 154
      uobj = (struct ib_uobject *)0;
    }
  } else {

  }
#line 156
  spin_unlock(& ib_uverbs_idr_lock);
#line 158
  return (uobj);
}
}
#line 161 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_uobject *idr_read_uobj(struct idr *idr , int id , struct ib_ucontext *context ,
                                        int nested ) 
{ 
  struct ib_uobject *uobj ;

  {
#line 166
  uobj = __idr_get_uobj(idr, id, context);
#line 167
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 168
    return ((struct ib_uobject *)0);
  } else {

  }
#line 170
  if (nested != 0) {
#line 171
    down_read_nested(& uobj->mutex, 1);
  } else {
#line 173
    down_read(& uobj->mutex);
  }
#line 174
  if (uobj->live == 0) {
#line 175
    put_uobj_read(uobj);
#line 176
    return ((struct ib_uobject *)0);
  } else {

  }
#line 179
  return (uobj);
}
}
#line 182 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_uobject *idr_write_uobj(struct idr *idr , int id , struct ib_ucontext *context ) 
{ 
  struct ib_uobject *uobj ;

  {
#line 187
  uobj = __idr_get_uobj(idr, id, context);
#line 188
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 189
    return ((struct ib_uobject *)0);
  } else {

  }
#line 191
  down_write(& uobj->mutex);
#line 192
  if (uobj->live == 0) {
#line 193
    put_uobj_write(uobj);
#line 194
    return ((struct ib_uobject *)0);
  } else {

  }
#line 197
  return (uobj);
}
}
#line 200 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void *idr_read_obj(struct idr *idr , int id , struct ib_ucontext *context ,
                          int nested ) 
{ 
  struct ib_uobject *uobj ;

  {
#line 205
  uobj = idr_read_uobj(idr, id, context, nested);
#line 206
  return ((unsigned long )uobj != (unsigned long )((struct ib_uobject *)0) ? uobj->object : (void *)0);
}
}
#line 209 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_pd *idr_read_pd(int pd_handle , struct ib_ucontext *context ) 
{ 
  void *tmp ;

  {
#line 211
  tmp = idr_read_obj(& ib_uverbs_pd_idr, pd_handle, context, 0);
#line 211
  return ((struct ib_pd *)tmp);
}
}
#line 214 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_pd_read(struct ib_pd *pd ) 
{ 


  {
#line 216
  put_uobj_read(pd->uobject);
#line 217
  return;
}
}
#line 219 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_cq *idr_read_cq(int cq_handle , struct ib_ucontext *context , int nested ) 
{ 
  void *tmp ;

  {
#line 221
  tmp = idr_read_obj(& ib_uverbs_cq_idr, cq_handle, context, nested);
#line 221
  return ((struct ib_cq *)tmp);
}
}
#line 224 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_cq_read(struct ib_cq *cq ) 
{ 


  {
#line 226
  put_uobj_read(cq->uobject);
#line 227
  return;
}
}
#line 229 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_ah *idr_read_ah(int ah_handle , struct ib_ucontext *context ) 
{ 
  void *tmp ;

  {
#line 231
  tmp = idr_read_obj(& ib_uverbs_ah_idr, ah_handle, context, 0);
#line 231
  return ((struct ib_ah *)tmp);
}
}
#line 234 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_ah_read(struct ib_ah *ah ) 
{ 


  {
#line 236
  put_uobj_read(ah->uobject);
#line 237
  return;
}
}
#line 239 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_qp *idr_read_qp(int qp_handle , struct ib_ucontext *context ) 
{ 
  void *tmp ;

  {
#line 241
  tmp = idr_read_obj(& ib_uverbs_qp_idr, qp_handle, context, 0);
#line 241
  return ((struct ib_qp *)tmp);
}
}
#line 244 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_qp *idr_write_qp(int qp_handle , struct ib_ucontext *context ) 
{ 
  struct ib_uobject *uobj ;

  {
#line 248
  uobj = idr_write_uobj(& ib_uverbs_qp_idr, qp_handle, context);
#line 249
  return ((unsigned long )uobj != (unsigned long )((struct ib_uobject *)0) ? (struct ib_qp *)uobj->object : (struct ib_qp *)0);
}
}
#line 252 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_qp_read(struct ib_qp *qp ) 
{ 


  {
#line 254
  put_uobj_read(qp->uobject);
#line 255
  return;
}
}
#line 257 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_qp_write(struct ib_qp *qp ) 
{ 


  {
#line 259
  put_uobj_write(qp->uobject);
#line 260
  return;
}
}
#line 262 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_srq *idr_read_srq(int srq_handle , struct ib_ucontext *context ) 
{ 
  void *tmp ;

  {
#line 264
  tmp = idr_read_obj(& ib_uverbs_srq_idr, srq_handle, context, 0);
#line 264
  return ((struct ib_srq *)tmp);
}
}
#line 267 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_srq_read(struct ib_srq *srq ) 
{ 


  {
#line 269
  put_uobj_read(srq->uobject);
#line 270
  return;
}
}
#line 272 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_xrcd *idr_read_xrcd(int xrcd_handle , struct ib_ucontext *context ,
                                     struct ib_uobject **uobj ) 
{ 


  {
#line 275
  *uobj = idr_read_uobj(& ib_uverbs_xrcd_idr, xrcd_handle, context, 0);
#line 276
  return ((unsigned long )*uobj != (unsigned long )((struct ib_uobject *)0) ? (struct ib_xrcd *)(*uobj)->object : (struct ib_xrcd *)0);
}
}
#line 279 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void put_xrcd_read(struct ib_uobject *uobj ) 
{ 


  {
#line 281
  put_uobj_read(uobj);
#line 282
  return;
}
}
#line 284 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_get_context(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) 
{ 
  struct ib_uverbs_get_context cmd ;
  struct ib_uverbs_get_context_resp resp ;
  struct ib_udata udata ;
  struct ib_device *ibdev ;
  struct ib_device_attr dev_attr ;
  struct ib_ucontext *ucontext ;
  struct file *filp ;
  int ret ;
  unsigned long tmp ;
  long tmp___0 ;
  bool tmp___1 ;
  struct task_struct *tmp___2 ;
  struct rb_root __constr_expr_0 ;
  struct lock_class_key __key ;
  long tmp___3 ;
  bool tmp___4 ;
  unsigned long tmp___5 ;

  {
#line 291
  ibdev = (file->device)->ib_dev;
#line 299
  if ((unsigned int )out_len <= 7U) {
#line 300
    return (-28L);
  } else {

  }
#line 302
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 8UL);
#line 302
  if (tmp != 0UL) {
#line 303
    return (-14L);
  } else {

  }
#line 305
  mutex_lock_nested(& file->mutex, 0U);
#line 307
  if ((unsigned long )file->ucontext != (unsigned long )((struct ib_ucontext *)0)) {
#line 308
    ret = -22;
#line 309
    goto err;
  } else {

  }
#line 312
  udata.inbuf = (void const   *)buf + 8U;
#line 312
  udata.outbuf = (void *)((unsigned long )cmd.response + 8UL);
#line 312
  udata.inlen = (unsigned long )in_len - 8UL;
#line 312
  udata.outlen = (unsigned long )out_len - 8UL;
#line 316
  ucontext = (*(ibdev->alloc_ucontext))(ibdev, & udata);
#line 317
  tmp___1 = IS_ERR((void const   *)ucontext);
#line 317
  if ((int )tmp___1) {
#line 318
    tmp___0 = PTR_ERR((void const   *)ucontext);
#line 318
    ret = (int )tmp___0;
#line 319
    goto err;
  } else {

  }
#line 322
  ucontext->device = ibdev;
#line 323
  INIT_LIST_HEAD(& ucontext->pd_list);
#line 324
  INIT_LIST_HEAD(& ucontext->mr_list);
#line 325
  INIT_LIST_HEAD(& ucontext->mw_list);
#line 326
  INIT_LIST_HEAD(& ucontext->cq_list);
#line 327
  INIT_LIST_HEAD(& ucontext->qp_list);
#line 328
  INIT_LIST_HEAD(& ucontext->srq_list);
#line 329
  INIT_LIST_HEAD(& ucontext->ah_list);
#line 330
  INIT_LIST_HEAD(& ucontext->xrcd_list);
#line 331
  INIT_LIST_HEAD(& ucontext->rule_list);
#line 332
  rcu_read_lock();
#line 333
  tmp___2 = get_current();
#line 333
  ucontext->tgid = get_task_pid(tmp___2->group_leader, 0);
#line 334
  rcu_read_unlock();
#line 335
  ucontext->closing = 0;
#line 338
  __constr_expr_0.rb_node = (struct rb_node *)0;
#line 338
  ucontext->umem_tree = __constr_expr_0;
#line 339
  __init_rwsem(& ucontext->umem_rwsem, "&ucontext->umem_rwsem", & __key);
#line 340
  ucontext->odp_mrs_count = 0;
#line 341
  INIT_LIST_HEAD(& ucontext->no_private_counters);
#line 343
  ret = ib_query_device(ibdev, & dev_attr);
#line 344
  if (ret != 0) {
#line 345
    goto err_free;
  } else {

  }
#line 346
  if (dev_attr.device_cap_flags >= 0) {
#line 347
    ucontext->invalidate_range = (void (*)(struct ib_umem * , unsigned long  , unsigned long  ))0;
  } else {

  }
#line 351
  resp.num_comp_vectors = (__u32 )(file->device)->num_comp_vectors;
#line 353
  ret = get_unused_fd_flags(524288U);
#line 354
  if (ret < 0) {
#line 355
    goto err_free;
  } else {

  }
#line 356
  resp.async_fd = (__u32 )ret;
#line 358
  filp = ib_uverbs_alloc_event_file(file, 1);
#line 359
  tmp___4 = IS_ERR((void const   *)filp);
#line 359
  if ((int )tmp___4) {
#line 360
    tmp___3 = PTR_ERR((void const   *)filp);
#line 360
    ret = (int )tmp___3;
#line 361
    goto err_fd;
  } else {

  }
#line 364
  tmp___5 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 8UL);
#line 364
  if (tmp___5 != 0UL) {
#line 366
    ret = -14;
#line 367
    goto err_file;
  } else {

  }
#line 370
  file->async_file = (struct ib_uverbs_event_file *)filp->private_data;
#line 372
  file->event_handler.device = (file->device)->ib_dev;
#line 372
  file->event_handler.handler = & ib_uverbs_event_handler;
#line 372
  INIT_LIST_HEAD(& file->event_handler.list);
#line 374
  ret = ib_register_event_handler(& file->event_handler);
#line 375
  if (ret != 0) {
#line 376
    goto err_file;
  } else {

  }
#line 378
  kref_get___0(& (file->async_file)->ref);
#line 379
  kref_get___0(& file->ref);
#line 380
  file->ucontext = ucontext;
#line 382
  fd_install(resp.async_fd, filp);
#line 384
  mutex_unlock(& file->mutex);
#line 386
  return ((ssize_t )in_len);
  err_file: 
#line 389
  fput(filp);
  err_fd: 
#line 392
  put_unused_fd(resp.async_fd);
  err_free: 
#line 395
  put_pid(ucontext->tgid);
#line 396
  (*(ibdev->dealloc_ucontext))(ucontext);
  err: 
#line 399
  mutex_unlock(& file->mutex);
#line 400
  return ((ssize_t )ret);
}
}
#line 403 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void copy_query_dev_fields(struct ib_uverbs_file *file , struct ib_uverbs_query_device_resp *resp ,
                                  struct ib_device_attr *attr ) 
{ 


  {
#line 407
  resp->fw_ver = attr->fw_ver;
#line 408
  resp->node_guid = ((file->device)->ib_dev)->node_guid;
#line 409
  resp->sys_image_guid = attr->sys_image_guid;
#line 410
  resp->max_mr_size = attr->max_mr_size;
#line 411
  resp->page_size_cap = attr->page_size_cap;
#line 412
  resp->vendor_id = attr->vendor_id;
#line 413
  resp->vendor_part_id = attr->vendor_part_id;
#line 414
  resp->hw_ver = attr->hw_ver;
#line 415
  resp->max_qp = (__u32 )attr->max_qp;
#line 416
  resp->max_qp_wr = (__u32 )attr->max_qp_wr;
#line 417
  resp->device_cap_flags = (__u32 )attr->device_cap_flags;
#line 418
  resp->max_sge = (__u32 )attr->max_sge;
#line 419
  resp->max_sge_rd = (__u32 )attr->max_sge_rd;
#line 420
  resp->max_cq = (__u32 )attr->max_cq;
#line 421
  resp->max_cqe = (__u32 )attr->max_cqe;
#line 422
  resp->max_mr = (__u32 )attr->max_mr;
#line 423
  resp->max_pd = (__u32 )attr->max_pd;
#line 424
  resp->max_qp_rd_atom = (__u32 )attr->max_qp_rd_atom;
#line 425
  resp->max_ee_rd_atom = (__u32 )attr->max_ee_rd_atom;
#line 426
  resp->max_res_rd_atom = (__u32 )attr->max_res_rd_atom;
#line 427
  resp->max_qp_init_rd_atom = (__u32 )attr->max_qp_init_rd_atom;
#line 428
  resp->max_ee_init_rd_atom = (__u32 )attr->max_ee_init_rd_atom;
#line 429
  resp->atomic_cap = (__u32 )attr->atomic_cap;
#line 430
  resp->max_ee = (__u32 )attr->max_ee;
#line 431
  resp->max_rdd = (__u32 )attr->max_rdd;
#line 432
  resp->max_mw = (__u32 )attr->max_mw;
#line 433
  resp->max_raw_ipv6_qp = (__u32 )attr->max_raw_ipv6_qp;
#line 434
  resp->max_raw_ethy_qp = (__u32 )attr->max_raw_ethy_qp;
#line 435
  resp->max_mcast_grp = (__u32 )attr->max_mcast_grp;
#line 436
  resp->max_mcast_qp_attach = (__u32 )attr->max_mcast_qp_attach;
#line 437
  resp->max_total_mcast_qp_attach = (__u32 )attr->max_total_mcast_qp_attach;
#line 438
  resp->max_ah = (__u32 )attr->max_ah;
#line 439
  resp->max_fmr = (__u32 )attr->max_fmr;
#line 440
  resp->max_map_per_fmr = (__u32 )attr->max_map_per_fmr;
#line 441
  resp->max_srq = (__u32 )attr->max_srq;
#line 442
  resp->max_srq_wr = (__u32 )attr->max_srq_wr;
#line 443
  resp->max_srq_sge = (__u32 )attr->max_srq_sge;
#line 444
  resp->max_pkeys = attr->max_pkeys;
#line 445
  resp->local_ca_ack_delay = attr->local_ca_ack_delay;
#line 446
  resp->phys_port_cnt = ((file->device)->ib_dev)->phys_port_cnt;
#line 447
  return;
}
}
#line 449 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_query_device(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) 
{ 
  struct ib_uverbs_query_device cmd ;
  struct ib_uverbs_query_device_resp resp ;
  struct ib_device_attr attr ;
  int ret ;
  unsigned long tmp ;
  unsigned long tmp___0 ;

  {
#line 458
  if ((unsigned int )out_len <= 175U) {
#line 459
    return (-28L);
  } else {

  }
#line 461
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 8UL);
#line 461
  if (tmp != 0UL) {
#line 462
    return (-14L);
  } else {

  }
#line 464
  ret = ib_query_device((file->device)->ib_dev, & attr);
#line 465
  if (ret != 0) {
#line 466
    return ((ssize_t )ret);
  } else {

  }
#line 468
  memset((void *)(& resp), 0, 176UL);
#line 469
  copy_query_dev_fields(file, & resp, & attr);
#line 471
  tmp___0 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 176UL);
#line 471
  if (tmp___0 != 0UL) {
#line 473
    return (-14L);
  } else {

  }
#line 475
  return ((ssize_t )in_len);
}
}
#line 478 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_query_port(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_query_port cmd ;
  struct ib_uverbs_query_port_resp resp ;
  struct ib_port_attr attr ;
  int ret ;
  unsigned long tmp ;
  enum rdma_link_layer tmp___0 ;
  unsigned long tmp___1 ;

  {
#line 487
  if ((unsigned int )out_len <= 39U) {
#line 488
    return (-28L);
  } else {

  }
#line 490
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 490
  if (tmp != 0UL) {
#line 491
    return (-14L);
  } else {

  }
#line 493
  ret = ib_query_port((file->device)->ib_dev, (int )cmd.port_num, & attr);
#line 494
  if (ret != 0) {
#line 495
    return ((ssize_t )ret);
  } else {

  }
#line 497
  memset((void *)(& resp), 0, 40UL);
#line 499
  resp.state = (__u8 )attr.state;
#line 500
  resp.max_mtu = (__u8 )attr.max_mtu;
#line 501
  resp.active_mtu = (__u8 )attr.active_mtu;
#line 502
  resp.gid_tbl_len = (__u32 )attr.gid_tbl_len;
#line 503
  resp.port_cap_flags = attr.port_cap_flags;
#line 504
  resp.max_msg_sz = attr.max_msg_sz;
#line 505
  resp.bad_pkey_cntr = attr.bad_pkey_cntr;
#line 506
  resp.qkey_viol_cntr = attr.qkey_viol_cntr;
#line 507
  resp.pkey_tbl_len = attr.pkey_tbl_len;
#line 508
  resp.lid = attr.lid;
#line 509
  resp.sm_lid = attr.sm_lid;
#line 510
  resp.lmc = attr.lmc;
#line 511
  resp.max_vl_num = attr.max_vl_num;
#line 512
  resp.sm_sl = attr.sm_sl;
#line 513
  resp.subnet_timeout = attr.subnet_timeout;
#line 514
  resp.init_type_reply = attr.init_type_reply;
#line 515
  resp.active_width = attr.active_width;
#line 516
  resp.active_speed = attr.active_speed;
#line 517
  resp.phys_state = attr.phys_state;
#line 518
  tmp___0 = rdma_port_get_link_layer((file->device)->ib_dev, (int )cmd.port_num);
#line 518
  resp.link_layer = (__u8 )tmp___0;
#line 521
  tmp___1 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 40UL);
#line 521
  if (tmp___1 != 0UL) {
#line 523
    return (-14L);
  } else {

  }
#line 525
  return ((ssize_t )in_len);
}
}
#line 528 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_alloc_pd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) 
{ 
  struct ib_uverbs_alloc_pd cmd ;
  struct ib_uverbs_alloc_pd_resp resp ;
  struct ib_udata udata ;
  struct ib_uobject *uobj ;
  struct ib_pd *pd ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  long tmp___1 ;
  bool tmp___2 ;
  unsigned long tmp___3 ;

  {
#line 539
  if ((unsigned int )out_len <= 3U) {
#line 540
    return (-28L);
  } else {

  }
#line 542
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 8UL);
#line 542
  if (tmp != 0UL) {
#line 543
    return (-14L);
  } else {

  }
#line 545
  udata.inbuf = (void const   *)buf + 8U;
#line 545
  udata.outbuf = (void *)((unsigned long )cmd.response + 4UL);
#line 545
  udata.inlen = (unsigned long )in_len - 8UL;
#line 545
  udata.outlen = (unsigned long )out_len - 4UL;
#line 549
  tmp___0 = kmalloc(216UL, 208U);
#line 549
  uobj = (struct ib_uobject *)tmp___0;
#line 550
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 551
    return (-12L);
  } else {

  }
#line 553
  init_uobj(uobj, 0ULL, file->ucontext, & pd_lock_class);
#line 554
  down_write(& uobj->mutex);
#line 556
  pd = (*(((file->device)->ib_dev)->alloc_pd))((file->device)->ib_dev, file->ucontext,
                                               & udata);
#line 558
  tmp___2 = IS_ERR((void const   *)pd);
#line 558
  if ((int )tmp___2) {
#line 559
    tmp___1 = PTR_ERR((void const   *)pd);
#line 559
    ret = (int )tmp___1;
#line 560
    goto err;
  } else {

  }
#line 563
  pd->device = (file->device)->ib_dev;
#line 564
  pd->uobject = uobj;
#line 565
  atomic_set(& pd->usecnt, 0);
#line 567
  uobj->object = (void *)pd;
#line 568
  ret = idr_add_uobj(& ib_uverbs_pd_idr, uobj);
#line 569
  if (ret != 0) {
#line 570
    goto err_idr;
  } else {

  }
#line 572
  memset((void *)(& resp), 0, 4UL);
#line 573
  resp.pd_handle = (__u32 )uobj->id;
#line 575
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 575
  if (tmp___3 != 0UL) {
#line 577
    ret = -14;
#line 578
    goto err_copy;
  } else {

  }
#line 581
  mutex_lock_nested(& file->mutex, 0U);
#line 582
  list_add_tail(& uobj->list, & (file->ucontext)->pd_list);
#line 583
  mutex_unlock(& file->mutex);
#line 585
  uobj->live = 1;
#line 587
  up_write(& uobj->mutex);
#line 589
  return ((ssize_t )in_len);
  err_copy: 
#line 592
  idr_remove_uobj(& ib_uverbs_pd_idr, uobj);
  err_idr: 
#line 595
  ib_dealloc_pd(pd);
  err: 
#line 598
  put_uobj_write(uobj);
#line 599
  return ((ssize_t )ret);
}
}
#line 602 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_dealloc_pd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_dealloc_pd cmd ;
  struct ib_uobject *uobj ;
  int ret ;
  unsigned long tmp ;

  {
#line 610
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 4UL);
#line 610
  if (tmp != 0UL) {
#line 611
    return (-14L);
  } else {

  }
#line 613
  uobj = idr_write_uobj(& ib_uverbs_pd_idr, (int )cmd.pd_handle, file->ucontext);
#line 614
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 615
    return (-22L);
  } else {

  }
#line 617
  ret = ib_dealloc_pd((struct ib_pd *)uobj->object);
#line 618
  if (ret == 0) {
#line 619
    uobj->live = 0;
  } else {

  }
#line 621
  put_uobj_write(uobj);
#line 623
  if (ret != 0) {
#line 624
    return ((ssize_t )ret);
  } else {

  }
#line 626
  idr_remove_uobj(& ib_uverbs_pd_idr, uobj);
#line 628
  mutex_lock_nested(& file->mutex, 0U);
#line 629
  list_del(& uobj->list);
#line 630
  mutex_unlock(& file->mutex);
#line 632
  put_uobj(uobj);
#line 634
  return ((ssize_t )in_len);
}
}
#line 643 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int xrcd_table_insert(struct ib_uverbs_device *dev , struct inode *inode ,
                             struct ib_xrcd *xrcd ) 
{ 
  struct xrcd_table_entry *entry ;
  struct xrcd_table_entry *scan ;
  struct rb_node **p ;
  struct rb_node *parent ;
  void *tmp ;
  struct rb_node  const  *__mptr ;

  {
#line 648
  p = & dev->xrcd_tree.rb_node;
#line 649
  parent = (struct rb_node *)0;
#line 651
  tmp = kmalloc(40UL, 208U);
#line 651
  entry = (struct xrcd_table_entry *)tmp;
#line 652
  if ((unsigned long )entry == (unsigned long )((struct xrcd_table_entry *)0)) {
#line 653
    return (-12);
  } else {

  }
#line 655
  entry->xrcd = xrcd;
#line 656
  entry->inode = inode;
#line 658
  goto ldv_32208;
  ldv_32207: 
#line 659
  parent = *p;
#line 660
  __mptr = (struct rb_node  const  *)parent;
#line 660
  scan = (struct xrcd_table_entry *)__mptr;
#line 662
  if ((unsigned long )scan->inode > (unsigned long )inode) {
#line 663
    p = & (*p)->rb_left;
  } else
#line 664
  if ((unsigned long )scan->inode < (unsigned long )inode) {
#line 665
    p = & (*p)->rb_right;
  } else {
#line 667
    kfree((void const   *)entry);
#line 668
    return (-17);
  }
  ldv_32208: ;
#line 658
  if ((unsigned long )*p != (unsigned long )((struct rb_node *)0)) {
#line 660
    goto ldv_32207;
  } else {

  }
#line 672
  rb_link_node(& entry->node, parent, p);
#line 673
  rb_insert_color(& entry->node, & dev->xrcd_tree);
#line 674
  igrab(inode);
#line 675
  return (0);
}
}
#line 678 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct xrcd_table_entry *xrcd_table_search(struct ib_uverbs_device *dev , struct inode *inode ) 
{ 
  struct xrcd_table_entry *entry ;
  struct rb_node *p ;
  struct rb_node  const  *__mptr ;

  {
#line 682
  p = dev->xrcd_tree.rb_node;
#line 684
  goto ldv_32219;
  ldv_32218: 
#line 685
  __mptr = (struct rb_node  const  *)p;
#line 685
  entry = (struct xrcd_table_entry *)__mptr;
#line 687
  if ((unsigned long )entry->inode > (unsigned long )inode) {
#line 688
    p = p->rb_left;
  } else
#line 689
  if ((unsigned long )entry->inode < (unsigned long )inode) {
#line 690
    p = p->rb_right;
  } else {
#line 692
    return (entry);
  }
  ldv_32219: ;
#line 684
  if ((unsigned long )p != (unsigned long )((struct rb_node *)0)) {
#line 686
    goto ldv_32218;
  } else {

  }

#line 695
  return ((struct xrcd_table_entry *)0);
}
}
#line 698 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_xrcd *find_xrcd(struct ib_uverbs_device *dev , struct inode *inode ) 
{ 
  struct xrcd_table_entry *entry ;

  {
#line 702
  entry = xrcd_table_search(dev, inode);
#line 703
  if ((unsigned long )entry == (unsigned long )((struct xrcd_table_entry *)0)) {
#line 704
    return ((struct ib_xrcd *)0);
  } else {

  }
#line 706
  return (entry->xrcd);
}
}
#line 709 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static void xrcd_table_delete(struct ib_uverbs_device *dev , struct inode *inode ) 
{ 
  struct xrcd_table_entry *entry ;

  {
#line 714
  entry = xrcd_table_search(dev, inode);
#line 715
  if ((unsigned long )entry != (unsigned long )((struct xrcd_table_entry *)0)) {
#line 716
    iput(inode);
#line 717
    rb_erase(& entry->node, & dev->xrcd_tree);
#line 718
    kfree((void const   *)entry);
  } else {

  }
#line 720
  return;
}
}
#line 722 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_open_xrcd cmd ;
  struct ib_uverbs_open_xrcd_resp resp ;
  struct ib_udata udata ;
  struct ib_uxrcd_object *obj ;
  struct ib_xrcd *xrcd ;
  struct fd f ;
  struct inode *inode ;
  int ret ;
  int new_xrcd ;
  unsigned long tmp ;
  void *tmp___0 ;
  long tmp___1 ;
  bool tmp___2 ;
  struct lock_class_key __key ;
  unsigned long tmp___3 ;

  {
#line 730
  xrcd = (struct ib_xrcd *)0;
#line 731
  f.file = (struct file *)0;
#line 731
  f.flags = 0U;
#line 732
  inode = (struct inode *)0;
#line 733
  ret = 0;
#line 734
  new_xrcd = 0;
#line 736
  if ((unsigned int )out_len <= 3U) {
#line 737
    return (-28L);
  } else {

  }
#line 739
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 739
  if (tmp != 0UL) {
#line 740
    return (-14L);
  } else {

  }
#line 742
  udata.inbuf = (void const   *)buf + 16U;
#line 742
  udata.outbuf = (void *)((unsigned long )cmd.response + 4UL);
#line 742
  udata.inlen = (unsigned long )in_len - 16UL;
#line 742
  udata.outlen = (unsigned long )out_len - 4UL;
#line 746
  mutex_lock_nested(& (file->device)->xrcd_tree_mutex, 0U);
#line 748
  if (cmd.fd != 4294967295U) {
#line 750
    f = fdget(cmd.fd);
#line 751
    if ((unsigned long )f.file == (unsigned long )((struct file *)0)) {
#line 752
      ret = -9;
#line 753
      goto err_tree_mutex_unlock;
    } else {

    }
#line 756
    inode = file_inode((struct file  const  *)f.file);
#line 757
    xrcd = find_xrcd(file->device, inode);
#line 758
    if ((unsigned long )xrcd == (unsigned long )((struct ib_xrcd *)0) && (cmd.oflags & 64U) == 0U) {
#line 760
      ret = -11;
#line 761
      goto err_tree_mutex_unlock;
    } else {

    }
#line 764
    if ((unsigned long )xrcd != (unsigned long )((struct ib_xrcd *)0) && (cmd.oflags & 128U) != 0U) {
#line 765
      ret = -22;
#line 766
      goto err_tree_mutex_unlock;
    } else {

    }
  } else {

  }
#line 770
  tmp___0 = kmalloc(224UL, 208U);
#line 770
  obj = (struct ib_uxrcd_object *)tmp___0;
#line 771
  if ((unsigned long )obj == (unsigned long )((struct ib_uxrcd_object *)0)) {
#line 772
    ret = -12;
#line 773
    goto err_tree_mutex_unlock;
  } else {

  }
#line 776
  init_uobj(& obj->uobject, 0ULL, file->ucontext, & xrcd_lock_class);
#line 778
  down_write(& obj->uobject.mutex);
#line 780
  if ((unsigned long )xrcd == (unsigned long )((struct ib_xrcd *)0)) {
#line 781
    xrcd = (*(((file->device)->ib_dev)->alloc_xrcd))((file->device)->ib_dev, file->ucontext,
                                                     & udata);
#line 783
    tmp___2 = IS_ERR((void const   *)xrcd);
#line 783
    if ((int )tmp___2) {
#line 784
      tmp___1 = PTR_ERR((void const   *)xrcd);
#line 784
      ret = (int )tmp___1;
#line 785
      goto err;
    } else {

    }
#line 788
    xrcd->inode = inode;
#line 789
    xrcd->device = (file->device)->ib_dev;
#line 790
    atomic_set(& xrcd->usecnt, 0);
#line 791
    __mutex_init(& xrcd->tgt_qp_mutex, "&xrcd->tgt_qp_mutex", & __key);
#line 792
    INIT_LIST_HEAD(& xrcd->tgt_qp_list);
#line 793
    new_xrcd = 1;
  } else {

  }
#line 796
  atomic_set(& obj->refcnt, 0);
#line 797
  obj->uobject.object = (void *)xrcd;
#line 798
  ret = idr_add_uobj(& ib_uverbs_xrcd_idr, & obj->uobject);
#line 799
  if (ret != 0) {
#line 800
    goto err_idr;
  } else {

  }
#line 802
  memset((void *)(& resp), 0, 4UL);
#line 803
  resp.xrcd_handle = (__u32 )obj->uobject.id;
#line 805
  if ((unsigned long )inode != (unsigned long )((struct inode *)0)) {
#line 806
    if (new_xrcd != 0) {
#line 808
      ret = xrcd_table_insert(file->device, inode, xrcd);
#line 809
      if (ret != 0) {
#line 810
        goto err_insert_xrcd;
      } else {

      }
    } else {

    }
#line 812
    atomic_inc(& xrcd->usecnt);
  } else {

  }
#line 815
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 815
  if (tmp___3 != 0UL) {
#line 817
    ret = -14;
#line 818
    goto err_copy;
  } else {

  }
#line 821
  if ((unsigned long )f.file != (unsigned long )((struct file *)0)) {
#line 822
    fdput(f);
  } else {

  }
#line 824
  mutex_lock_nested(& file->mutex, 0U);
#line 825
  list_add_tail(& obj->uobject.list, & (file->ucontext)->xrcd_list);
#line 826
  mutex_unlock(& file->mutex);
#line 828
  obj->uobject.live = 1;
#line 829
  up_write(& obj->uobject.mutex);
#line 831
  mutex_unlock(& (file->device)->xrcd_tree_mutex);
#line 832
  return ((ssize_t )in_len);
  err_copy: ;
#line 835
  if ((unsigned long )inode != (unsigned long )((struct inode *)0)) {
#line 836
    if (new_xrcd != 0) {
#line 837
      xrcd_table_delete(file->device, inode);
    } else {

    }
#line 838
    atomic_dec(& xrcd->usecnt);
  } else {

  }
  err_insert_xrcd: 
#line 842
  idr_remove_uobj(& ib_uverbs_xrcd_idr, & obj->uobject);
  err_idr: 
#line 845
  ib_dealloc_xrcd(xrcd);
  err: 
#line 848
  put_uobj_write(& obj->uobject);
  err_tree_mutex_unlock: ;
#line 851
  if ((unsigned long )f.file != (unsigned long )((struct file *)0)) {
#line 852
    fdput(f);
  } else {

  }
#line 854
  mutex_unlock(& (file->device)->xrcd_tree_mutex);
#line 856
  return ((ssize_t )ret);
}
}
#line 859 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_close_xrcd(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_close_xrcd cmd ;
  struct ib_uobject *uobj ;
  struct ib_xrcd *xrcd ;
  struct inode *inode ;
  struct ib_uxrcd_object *obj ;
  int live ;
  int ret ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  int tmp___0 ;
  int tmp___1 ;

  {
#line 865
  xrcd = (struct ib_xrcd *)0;
#line 866
  inode = (struct inode *)0;
#line 869
  ret = 0;
#line 871
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 4UL);
#line 871
  if (tmp != 0UL) {
#line 872
    return (-14L);
  } else {

  }
#line 874
  mutex_lock_nested(& (file->device)->xrcd_tree_mutex, 0U);
#line 875
  uobj = idr_write_uobj(& ib_uverbs_xrcd_idr, (int )cmd.xrcd_handle, file->ucontext);
#line 876
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 877
    ret = -22;
#line 878
    goto out;
  } else {

  }
#line 881
  xrcd = (struct ib_xrcd *)uobj->object;
#line 882
  inode = xrcd->inode;
#line 883
  __mptr = (struct ib_uobject  const  *)uobj;
#line 883
  obj = (struct ib_uxrcd_object *)__mptr;
#line 884
  tmp___0 = atomic_read((atomic_t const   *)(& obj->refcnt));
#line 884
  if (tmp___0 != 0) {
#line 885
    put_uobj_write(uobj);
#line 886
    ret = -16;
#line 887
    goto out;
  } else {

  }
#line 890
  if ((unsigned long )inode == (unsigned long )((struct inode *)0)) {
#line 890
    goto _L;
  } else {
#line 890
    tmp___1 = atomic_dec_and_test(& xrcd->usecnt);
#line 890
    if (tmp___1 != 0) {
      _L: /* CIL Label */ 
#line 891
      ret = ib_dealloc_xrcd((struct ib_xrcd *)uobj->object);
#line 892
      if (ret == 0) {
#line 893
        uobj->live = 0;
      } else {

      }
    } else {

    }
  }
#line 896
  live = uobj->live;
#line 897
  if ((unsigned long )inode != (unsigned long )((struct inode *)0) && ret != 0) {
#line 898
    atomic_inc(& xrcd->usecnt);
  } else {

  }
#line 900
  put_uobj_write(uobj);
#line 902
  if (ret != 0) {
#line 903
    goto out;
  } else {

  }
#line 905
  if ((unsigned long )inode != (unsigned long )((struct inode *)0) && live == 0) {
#line 906
    xrcd_table_delete(file->device, inode);
  } else {

  }
#line 908
  idr_remove_uobj(& ib_uverbs_xrcd_idr, uobj);
#line 909
  mutex_lock_nested(& file->mutex, 0U);
#line 910
  list_del(& uobj->list);
#line 911
  mutex_unlock(& file->mutex);
#line 913
  put_uobj(uobj);
#line 914
  ret = in_len;
  out: 
#line 917
  mutex_unlock(& (file->device)->xrcd_tree_mutex);
#line 918
  return ((ssize_t )ret);
}
}
#line 921 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
void ib_uverbs_dealloc_xrcd(struct ib_uverbs_device *dev , struct ib_xrcd *xrcd ) 
{ 
  struct inode *inode ;
  int tmp ;

  {
#line 926
  inode = xrcd->inode;
#line 927
  if ((unsigned long )inode != (unsigned long )((struct inode *)0)) {
#line 927
    tmp = atomic_dec_and_test(& xrcd->usecnt);
#line 927
    if (tmp == 0) {
#line 928
      return;
    } else {

    }
  } else {

  }
#line 930
  ib_dealloc_xrcd(xrcd);
#line 932
  if ((unsigned long )inode != (unsigned long )((struct inode *)0)) {
#line 933
    xrcd_table_delete(dev, inode);
  } else {

  }
#line 934
  return;
}
}
#line 936 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_reg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                         int out_len ) 
{ 
  struct ib_uverbs_reg_mr cmd ;
  struct ib_uverbs_reg_mr_resp resp ;
  struct ib_udata udata ;
  struct ib_uobject *uobj ;
  struct ib_pd *pd ;
  struct ib_mr *mr ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  struct ib_device_attr attr ;
  struct _ddebug descriptor ;
  long tmp___1 ;
  long tmp___2 ;
  bool tmp___3 ;
  unsigned long tmp___4 ;

  {
#line 948
  if ((unsigned int )out_len <= 11U) {
#line 949
    return (-28L);
  } else {

  }
#line 951
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 40UL);
#line 951
  if (tmp != 0UL) {
#line 952
    return (-14L);
  } else {

  }
#line 954
  udata.inbuf = (void const   *)buf + 40U;
#line 954
  udata.outbuf = (void *)((unsigned long )cmd.response + 12UL);
#line 954
  udata.inlen = (unsigned long )in_len - 40UL;
#line 954
  udata.outlen = (unsigned long )out_len - 12UL;
#line 958
  if (((cmd.start ^ cmd.hca_va) & 4095ULL) != 0ULL) {
#line 959
    return (-22L);
  } else {

  }
#line 961
  ret = ib_check_mr_access((int )cmd.access_flags);
#line 962
  if (ret != 0) {
#line 963
    return ((ssize_t )ret);
  } else {

  }
#line 965
  tmp___0 = kmalloc(216UL, 208U);
#line 965
  uobj = (struct ib_uobject *)tmp___0;
#line 966
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 967
    return (-12L);
  } else {

  }
#line 969
  init_uobj(uobj, 0ULL, file->ucontext, & mr_lock_class);
#line 970
  down_write(& uobj->mutex);
#line 972
  pd = idr_read_pd((int )cmd.pd_handle, file->ucontext);
#line 973
  if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0)) {
#line 974
    ret = -22;
#line 975
    goto err_free;
  } else {

  }
#line 978
  if ((cmd.access_flags & 64U) != 0U) {
#line 981
    ret = ib_query_device(pd->device, & attr);
#line 982
    if (ret != 0 || attr.device_cap_flags >= 0) {
#line 984
      descriptor.modname = "ib_uverbs";
#line 984
      descriptor.function = "ib_uverbs_reg_mr";
#line 984
      descriptor.filename = "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c";
#line 984
      descriptor.format = "ODP support not available\n";
#line 984
      descriptor.lineno = 984U;
#line 984
      descriptor.flags = 0U;
#line 984
      tmp___1 = ldv__builtin_expect((long )descriptor.flags & 1L, 0L);
#line 984
      if (tmp___1 != 0L) {
#line 984
        __dynamic_pr_debug(& descriptor, "ODP support not available\n");
      } else {

      }
#line 985
      ret = -22;
#line 986
      goto err_put;
    } else {

    }
  } else {

  }
#line 990
  mr = (*((pd->device)->reg_user_mr))(pd, cmd.start, cmd.length, cmd.hca_va, (int )cmd.access_flags,
                                      & udata);
#line 992
  tmp___3 = IS_ERR((void const   *)mr);
#line 992
  if ((int )tmp___3) {
#line 993
    tmp___2 = PTR_ERR((void const   *)mr);
#line 993
    ret = (int )tmp___2;
#line 994
    goto err_put;
  } else {

  }
#line 997
  mr->device = pd->device;
#line 998
  mr->pd = pd;
#line 999
  mr->uobject = uobj;
#line 1000
  atomic_inc(& pd->usecnt);
#line 1001
  atomic_set(& mr->usecnt, 0);
#line 1003
  uobj->object = (void *)mr;
#line 1004
  ret = idr_add_uobj(& ib_uverbs_mr_idr, uobj);
#line 1005
  if (ret != 0) {
#line 1006
    goto err_unreg;
  } else {

  }
#line 1008
  memset((void *)(& resp), 0, 12UL);
#line 1009
  resp.lkey = mr->lkey;
#line 1010
  resp.rkey = mr->rkey;
#line 1011
  resp.mr_handle = (__u32 )uobj->id;
#line 1013
  tmp___4 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 12UL);
#line 1013
  if (tmp___4 != 0UL) {
#line 1015
    ret = -14;
#line 1016
    goto err_copy;
  } else {

  }
#line 1019
  put_pd_read(pd);
#line 1021
  mutex_lock_nested(& file->mutex, 0U);
#line 1022
  list_add_tail(& uobj->list, & (file->ucontext)->mr_list);
#line 1023
  mutex_unlock(& file->mutex);
#line 1025
  uobj->live = 1;
#line 1027
  up_write(& uobj->mutex);
#line 1029
  return ((ssize_t )in_len);
  err_copy: 
#line 1032
  idr_remove_uobj(& ib_uverbs_mr_idr, uobj);
  err_unreg: 
#line 1035
  ib_dereg_mr(mr);
  err_put: 
#line 1038
  put_pd_read(pd);
  err_free: 
#line 1041
  put_uobj_write(uobj);
#line 1042
  return ((ssize_t )ret);
}
}
#line 1045 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_rereg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) 
{ 
  struct ib_uverbs_rereg_mr cmd ;
  struct ib_uverbs_rereg_mr_resp resp ;
  struct ib_udata udata ;
  struct ib_pd *pd ;
  struct ib_mr *mr ;
  struct ib_pd *old_pd ;
  int ret ;
  struct ib_uobject *uobj ;
  unsigned long tmp ;
  int tmp___0 ;
  unsigned long tmp___1 ;

  {
#line 1052
  pd = (struct ib_pd *)0;
#line 1058
  if ((unsigned int )out_len <= 7U) {
#line 1059
    return (-28L);
  } else {

  }
#line 1061
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 48UL);
#line 1061
  if (tmp != 0UL) {
#line 1062
    return (-14L);
  } else {

  }
#line 1064
  udata.inbuf = (void const   *)buf + 48U;
#line 1064
  udata.outbuf = (void *)((unsigned long )cmd.response + 8UL);
#line 1064
  udata.inlen = (unsigned long )in_len - 48UL;
#line 1064
  udata.outlen = (unsigned long )out_len - 8UL;
#line 1068
  if ((cmd.flags & 4294967288U) != 0U || cmd.flags == 0U) {
#line 1069
    return (-22L);
  } else {

  }
#line 1071
  if ((int )cmd.flags & 1 && (((cmd.start == 0ULL || cmd.hca_va == 0ULL) || cmd.length == 0ULL) || ((cmd.start ^ cmd.hca_va) & 4095ULL) != 0ULL)) {
#line 1074
    return (-22L);
  } else {

  }
#line 1076
  uobj = idr_write_uobj(& ib_uverbs_mr_idr, (int )cmd.mr_handle, file->ucontext);
#line 1079
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 1080
    return (-22L);
  } else {

  }
#line 1082
  mr = (struct ib_mr *)uobj->object;
#line 1084
  if ((cmd.flags & 4U) != 0U) {
#line 1085
    ret = ib_check_mr_access((int )cmd.access_flags);
#line 1086
    if (ret != 0) {
#line 1087
      goto put_uobjs;
    } else {

    }
  } else {

  }
#line 1090
  if ((cmd.flags & 2U) != 0U) {
#line 1091
    pd = idr_read_pd((int )cmd.pd_handle, file->ucontext);
#line 1092
    if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0)) {
#line 1093
      ret = -22;
#line 1094
      goto put_uobjs;
    } else {

    }
  } else {

  }
#line 1098
  tmp___0 = atomic_read((atomic_t const   *)(& mr->usecnt));
#line 1098
  if (tmp___0 != 0) {
#line 1099
    ret = -16;
#line 1100
    goto put_uobj_pd;
  } else {

  }
#line 1103
  old_pd = mr->pd;
#line 1104
  ret = (*((mr->device)->rereg_user_mr))(mr, (int )cmd.flags, cmd.start, cmd.length,
                                         cmd.hca_va, (int )cmd.access_flags, pd, & udata);
#line 1107
  if (ret == 0) {
#line 1108
    if ((cmd.flags & 2U) != 0U) {
#line 1109
      atomic_inc(& pd->usecnt);
#line 1110
      mr->pd = pd;
#line 1111
      atomic_dec(& old_pd->usecnt);
    } else {

    }
  } else {
#line 1114
    goto put_uobj_pd;
  }
#line 1117
  memset((void *)(& resp), 0, 8UL);
#line 1118
  resp.lkey = mr->lkey;
#line 1119
  resp.rkey = mr->rkey;
#line 1121
  tmp___1 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 8UL);
#line 1121
  if (tmp___1 != 0UL) {
#line 1123
    ret = -14;
  } else {
#line 1125
    ret = in_len;
  }
  put_uobj_pd: ;
#line 1128
  if ((cmd.flags & 2U) != 0U) {
#line 1129
    put_pd_read(pd);
  } else {

  }
  put_uobjs: 
#line 1133
  put_uobj_write(mr->uobject);
#line 1135
  return ((ssize_t )ret);
}
}
#line 1138 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) 
{ 
  struct ib_uverbs_dereg_mr cmd ;
  struct ib_mr *mr ;
  struct ib_uobject *uobj ;
  int ret ;
  unsigned long tmp ;

  {
#line 1145
  ret = -22;
#line 1147
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 4UL);
#line 1147
  if (tmp != 0UL) {
#line 1148
    return (-14L);
  } else {

  }
#line 1150
  uobj = idr_write_uobj(& ib_uverbs_mr_idr, (int )cmd.mr_handle, file->ucontext);
#line 1151
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 1152
    return (-22L);
  } else {

  }
#line 1154
  mr = (struct ib_mr *)uobj->object;
#line 1156
  ret = ib_dereg_mr(mr);
#line 1157
  if (ret == 0) {
#line 1158
    uobj->live = 0;
  } else {

  }
#line 1160
  put_uobj_write(uobj);
#line 1162
  if (ret != 0) {
#line 1163
    return ((ssize_t )ret);
  } else {

  }
#line 1165
  idr_remove_uobj(& ib_uverbs_mr_idr, uobj);
#line 1167
  mutex_lock_nested(& file->mutex, 0U);
#line 1168
  list_del(& uobj->list);
#line 1169
  mutex_unlock(& file->mutex);
#line 1171
  put_uobj(uobj);
#line 1173
  return ((ssize_t )in_len);
}
}
#line 1176 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_alloc_mw(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) 
{ 
  struct ib_uverbs_alloc_mw cmd ;
  struct ib_uverbs_alloc_mw_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_pd *pd ;
  struct ib_mw *mw ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  long tmp___1 ;
  bool tmp___2 ;
  unsigned long tmp___3 ;

  {
#line 1187
  if ((unsigned int )out_len <= 7U) {
#line 1188
    return (-28L);
  } else {

  }
#line 1190
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 1190
  if (tmp != 0UL) {
#line 1191
    return (-14L);
  } else {

  }
#line 1193
  tmp___0 = kmalloc(216UL, 208U);
#line 1193
  uobj = (struct ib_uobject *)tmp___0;
#line 1194
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 1195
    return (-12L);
  } else {

  }
#line 1197
  init_uobj(uobj, 0ULL, file->ucontext, & mw_lock_class);
#line 1198
  down_write(& uobj->mutex);
#line 1200
  pd = idr_read_pd((int )cmd.pd_handle, file->ucontext);
#line 1201
  if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0)) {
#line 1202
    ret = -22;
#line 1203
    goto err_free;
  } else {

  }
#line 1206
  mw = (*((pd->device)->alloc_mw))(pd, (enum ib_mw_type )cmd.mw_type);
#line 1207
  tmp___2 = IS_ERR((void const   *)mw);
#line 1207
  if ((int )tmp___2) {
#line 1208
    tmp___1 = PTR_ERR((void const   *)mw);
#line 1208
    ret = (int )tmp___1;
#line 1209
    goto err_put;
  } else {

  }
#line 1212
  mw->device = pd->device;
#line 1213
  mw->pd = pd;
#line 1214
  mw->uobject = uobj;
#line 1215
  atomic_inc(& pd->usecnt);
#line 1217
  uobj->object = (void *)mw;
#line 1218
  ret = idr_add_uobj(& ib_uverbs_mw_idr, uobj);
#line 1219
  if (ret != 0) {
#line 1220
    goto err_unalloc;
  } else {

  }
#line 1222
  memset((void *)(& resp), 0, 8UL);
#line 1223
  resp.rkey = mw->rkey;
#line 1224
  resp.mw_handle = (__u32 )uobj->id;
#line 1226
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 8UL);
#line 1226
  if (tmp___3 != 0UL) {
#line 1228
    ret = -14;
#line 1229
    goto err_copy;
  } else {

  }
#line 1232
  put_pd_read(pd);
#line 1234
  mutex_lock_nested(& file->mutex, 0U);
#line 1235
  list_add_tail(& uobj->list, & (file->ucontext)->mw_list);
#line 1236
  mutex_unlock(& file->mutex);
#line 1238
  uobj->live = 1;
#line 1240
  up_write(& uobj->mutex);
#line 1242
  return ((ssize_t )in_len);
  err_copy: 
#line 1245
  idr_remove_uobj(& ib_uverbs_mw_idr, uobj);
  err_unalloc: 
#line 1248
  ib_dealloc_mw(mw);
  err_put: 
#line 1251
  put_pd_read(pd);
  err_free: 
#line 1254
  put_uobj_write(uobj);
#line 1255
  return ((ssize_t )ret);
}
}
#line 1258 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_dealloc_mw(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_dealloc_mw cmd ;
  struct ib_mw *mw ;
  struct ib_uobject *uobj ;
  int ret ;
  unsigned long tmp ;

  {
#line 1265
  ret = -22;
#line 1267
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 4UL);
#line 1267
  if (tmp != 0UL) {
#line 1268
    return (-14L);
  } else {

  }
#line 1270
  uobj = idr_write_uobj(& ib_uverbs_mw_idr, (int )cmd.mw_handle, file->ucontext);
#line 1271
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 1272
    return (-22L);
  } else {

  }
#line 1274
  mw = (struct ib_mw *)uobj->object;
#line 1276
  ret = ib_dealloc_mw(mw);
#line 1277
  if (ret == 0) {
#line 1278
    uobj->live = 0;
  } else {

  }
#line 1280
  put_uobj_write(uobj);
#line 1282
  if (ret != 0) {
#line 1283
    return ((ssize_t )ret);
  } else {

  }
#line 1285
  idr_remove_uobj(& ib_uverbs_mw_idr, uobj);
#line 1287
  mutex_lock_nested(& file->mutex, 0U);
#line 1288
  list_del(& uobj->list);
#line 1289
  mutex_unlock(& file->mutex);
#line 1291
  put_uobj(uobj);
#line 1293
  return ((ssize_t )in_len);
}
}
#line 1296 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_comp_channel(struct ib_uverbs_file *file , char const   *buf ,
                                      int in_len , int out_len ) 
{ 
  struct ib_uverbs_create_comp_channel cmd ;
  struct ib_uverbs_create_comp_channel_resp resp ;
  struct file *filp ;
  int ret ;
  unsigned long tmp ;
  long tmp___0 ;
  bool tmp___1 ;
  unsigned long tmp___2 ;

  {
#line 1305
  if ((unsigned int )out_len <= 3U) {
#line 1306
    return (-28L);
  } else {

  }
#line 1308
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 8UL);
#line 1308
  if (tmp != 0UL) {
#line 1309
    return (-14L);
  } else {

  }
#line 1311
  ret = get_unused_fd_flags(524288U);
#line 1312
  if (ret < 0) {
#line 1313
    return ((ssize_t )ret);
  } else {

  }
#line 1314
  resp.fd = (__u32 )ret;
#line 1316
  filp = ib_uverbs_alloc_event_file(file, 0);
#line 1317
  tmp___1 = IS_ERR((void const   *)filp);
#line 1317
  if ((int )tmp___1) {
#line 1318
    put_unused_fd(resp.fd);
#line 1319
    tmp___0 = PTR_ERR((void const   *)filp);
#line 1319
    return (tmp___0);
  } else {

  }
#line 1322
  tmp___2 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 1322
  if (tmp___2 != 0UL) {
#line 1324
    put_unused_fd(resp.fd);
#line 1325
    fput(filp);
#line 1326
    return (-14L);
  } else {

  }
#line 1329
  fd_install(resp.fd, filp);
#line 1330
  return ((ssize_t )in_len);
}
}
#line 1333 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_ucq_object *create_cq(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                                       struct ib_udata *uhw , struct ib_uverbs_ex_create_cq *cmd ,
                                       size_t cmd_sz , int (*cb)(struct ib_uverbs_file * ,
                                                                 struct ib_ucq_object * ,
                                                                 struct ib_uverbs_ex_create_cq_resp * ,
                                                                 struct ib_udata * ,
                                                                 void * ) , void *context ) 
{ 
  struct ib_ucq_object *obj ;
  struct ib_uverbs_event_file *ev_file ;
  struct ib_cq *cq ;
  int ret ;
  struct ib_uverbs_ex_create_cq_resp resp ;
  struct ib_cq_init_attr attr ;
  void *tmp ;
  void *tmp___0 ;
  void *tmp___1 ;
  long tmp___2 ;
  bool tmp___3 ;
  void *tmp___4 ;

  {
#line 1346
  ev_file = (struct ib_uverbs_event_file *)0;
#line 1350
  attr.cqe = 0U;
#line 1350
  attr.comp_vector = 0;
#line 1350
  attr.flags = 0U;
#line 1352
  if (cmd->comp_vector >= (__u32 )(file->device)->num_comp_vectors) {
#line 1353
    tmp = ERR_PTR(-22L);
#line 1353
    return ((struct ib_ucq_object *)tmp);
  } else {

  }
#line 1355
  tmp___0 = kmalloc(264UL, 208U);
#line 1355
  obj = (struct ib_ucq_object *)tmp___0;
#line 1356
  if ((unsigned long )obj == (unsigned long )((struct ib_ucq_object *)0)) {
#line 1357
    tmp___1 = ERR_PTR(-12L);
#line 1357
    return ((struct ib_ucq_object *)tmp___1);
  } else {

  }
#line 1359
  init_uobj(& obj->uobject, cmd->user_handle, file->ucontext, & cq_lock_class);
#line 1360
  down_write(& obj->uobject.mutex);
#line 1362
  if (cmd->comp_channel >= 0) {
#line 1363
    ev_file = ib_uverbs_lookup_comp_file(cmd->comp_channel);
#line 1364
    if ((unsigned long )ev_file == (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 1365
      ret = -22;
#line 1366
      goto err;
    } else {

    }
  } else {

  }
#line 1370
  obj->uverbs_file = file;
#line 1371
  obj->comp_events_reported = 0U;
#line 1372
  obj->async_events_reported = 0U;
#line 1373
  INIT_LIST_HEAD(& obj->comp_list);
#line 1374
  INIT_LIST_HEAD(& obj->async_list);
#line 1376
  attr.cqe = cmd->cqe;
#line 1377
  attr.comp_vector = (int )cmd->comp_vector;
#line 1379
  if (cmd_sz > 28UL) {
#line 1380
    attr.flags = cmd->flags;
  } else {

  }
#line 1382
  cq = (*(((file->device)->ib_dev)->create_cq))((file->device)->ib_dev, (struct ib_cq_init_attr  const  *)(& attr),
                                                file->ucontext, uhw);
#line 1384
  tmp___3 = IS_ERR((void const   *)cq);
#line 1384
  if ((int )tmp___3) {
#line 1385
    tmp___2 = PTR_ERR((void const   *)cq);
#line 1385
    ret = (int )tmp___2;
#line 1386
    goto err_file;
  } else {

  }
#line 1389
  cq->device = (file->device)->ib_dev;
#line 1390
  cq->uobject = & obj->uobject;
#line 1391
  cq->comp_handler = & ib_uverbs_comp_handler;
#line 1392
  cq->event_handler = & ib_uverbs_cq_event_handler;
#line 1393
  cq->cq_context = (void *)ev_file;
#line 1394
  atomic_set(& cq->usecnt, 0);
#line 1396
  obj->uobject.object = (void *)cq;
#line 1397
  ret = idr_add_uobj(& ib_uverbs_cq_idr, & obj->uobject);
#line 1398
  if (ret != 0) {
#line 1399
    goto err_free;
  } else {

  }
#line 1401
  memset((void *)(& resp), 0, 16UL);
#line 1402
  resp.base.cq_handle = (__u32 )obj->uobject.id;
#line 1403
  resp.base.cqe = (__u32 )cq->cqe;
#line 1405
  resp.response_length = 16U;
#line 1408
  ret = (*cb)(file, obj, & resp, ucore, context);
#line 1409
  if (ret != 0) {
#line 1410
    goto err_cb;
  } else {

  }
#line 1412
  mutex_lock_nested(& file->mutex, 0U);
#line 1413
  list_add_tail(& obj->uobject.list, & (file->ucontext)->cq_list);
#line 1414
  mutex_unlock(& file->mutex);
#line 1416
  obj->uobject.live = 1;
#line 1418
  up_write(& obj->uobject.mutex);
#line 1420
  return (obj);
  err_cb: 
#line 1423
  idr_remove_uobj(& ib_uverbs_cq_idr, & obj->uobject);
  err_free: 
#line 1426
  ib_destroy_cq(cq);
  err_file: ;
#line 1429
  if ((unsigned long )ev_file != (unsigned long )((struct ib_uverbs_event_file *)0)) {
#line 1430
    ib_uverbs_release_ucq(file, ev_file, obj);
  } else {

  }
  err: 
#line 1433
  put_uobj_write(& obj->uobject);
#line 1435
  tmp___4 = ERR_PTR((long )ret);
#line 1435
  return ((struct ib_ucq_object *)tmp___4);
}
}
#line 1438 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int ib_uverbs_create_cq_cb(struct ib_uverbs_file *file , struct ib_ucq_object *obj ,
                                  struct ib_uverbs_ex_create_cq_resp *resp , struct ib_udata *ucore ,
                                  void *context ) 
{ 
  int tmp ;

  {
#line 1443
  tmp = ib_copy_to_udata(ucore, (void *)(& resp->base), 8UL);
#line 1443
  if (tmp != 0) {
#line 1444
    return (-14);
  } else {

  }
#line 1446
  return (0);
}
}
#line 1449 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_create_cq cmd ;
  struct ib_uverbs_ex_create_cq cmd_ex ;
  struct ib_udata ucore ;
  struct ib_udata uhw ;
  struct ib_ucq_object *obj ;
  unsigned long tmp ;
  long tmp___0 ;
  bool tmp___1 ;

  {
#line 1460
  if ((unsigned int )out_len <= 7U) {
#line 1461
    return (-28L);
  } else {

  }
#line 1463
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 32UL);
#line 1463
  if (tmp != 0UL) {
#line 1464
    return (-14L);
  } else {

  }
#line 1466
  ucore.inbuf = (void const   *)buf;
#line 1466
  ucore.outbuf = (void *)cmd.response;
#line 1466
  ucore.inlen = 32UL;
#line 1466
  ucore.outlen = 8UL;
#line 1468
  uhw.inbuf = (void const   *)buf + 32U;
#line 1468
  uhw.outbuf = (void *)((unsigned long )cmd.response + 8UL);
#line 1468
  uhw.inlen = (unsigned long )in_len - 32UL;
#line 1468
  uhw.outlen = (unsigned long )out_len - 8UL;
#line 1472
  memset((void *)(& cmd_ex), 0, 32UL);
#line 1473
  cmd_ex.user_handle = cmd.user_handle;
#line 1474
  cmd_ex.cqe = cmd.cqe;
#line 1475
  cmd_ex.comp_vector = cmd.comp_vector;
#line 1476
  cmd_ex.comp_channel = cmd.comp_channel;
#line 1478
  obj = create_cq(file, & ucore, & uhw, & cmd_ex, 20UL, & ib_uverbs_create_cq_cb,
                  (void *)0);
#line 1483
  tmp___1 = IS_ERR((void const   *)obj);
#line 1483
  if ((int )tmp___1) {
#line 1484
    tmp___0 = PTR_ERR((void const   *)obj);
#line 1484
    return (tmp___0);
  } else {

  }
#line 1486
  return ((ssize_t )in_len);
}
}
#line 1489 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int ib_uverbs_ex_create_cq_cb(struct ib_uverbs_file *file , struct ib_ucq_object *obj ,
                                     struct ib_uverbs_ex_create_cq_resp *resp , struct ib_udata *ucore ,
                                     void *context ) 
{ 
  int tmp ;

  {
#line 1494
  tmp = ib_copy_to_udata(ucore, (void *)resp, (size_t )resp->response_length);
#line 1494
  if (tmp != 0) {
#line 1495
    return (-14);
  } else {

  }
#line 1497
  return (0);
}
}
#line 1500 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
int ib_uverbs_ex_create_cq(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                           struct ib_udata *uhw ) 
{ 
  struct ib_uverbs_ex_create_cq cmd ;
  struct ib_ucq_object *obj ;
  int err ;
  size_t _min1 ;
  unsigned long _min2 ;
  long tmp ;
  bool tmp___0 ;

  {
#line 1509
  if (ucore->inlen <= 31UL) {
#line 1510
    return (-22);
  } else {

  }
#line 1512
  err = ib_copy_from_udata((void *)(& cmd), ucore, 32UL);
#line 1513
  if (err != 0) {
#line 1514
    return (err);
  } else {

  }
#line 1516
  if (cmd.comp_mask != 0U) {
#line 1517
    return (-22);
  } else {

  }
#line 1519
  if (cmd.reserved != 0U) {
#line 1520
    return (-22);
  } else {

  }
#line 1522
  if (ucore->outlen <= 15UL) {
#line 1524
    return (-28);
  } else {

  }
#line 1527
  _min1 = ucore->inlen;
#line 1527
  _min2 = 32UL;
#line 1527
  obj = create_cq(file, ucore, uhw, & cmd, _min1 < _min2 ? _min1 : _min2, & ib_uverbs_ex_create_cq_cb,
                  (void *)0);
#line 1530
  tmp___0 = IS_ERR((void const   *)obj);
#line 1530
  if ((int )tmp___0) {
#line 1531
    tmp = PTR_ERR((void const   *)obj);
#line 1531
    return ((int )tmp);
  } else {

  }
#line 1533
  return (0);
}
}
#line 1536 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_resize_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_resize_cq cmd ;
  struct ib_uverbs_resize_cq_resp resp ;
  struct ib_udata udata ;
  struct ib_cq *cq ;
  int ret ;
  unsigned long tmp ;
  unsigned long tmp___0 ;

  {
#line 1544
  ret = -22;
#line 1546
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 1546
  if (tmp != 0UL) {
#line 1547
    return (-14L);
  } else {

  }
#line 1549
  udata.inbuf = (void const   *)buf + 16U;
#line 1549
  udata.outbuf = (void *)((unsigned long )cmd.response + 8UL);
#line 1549
  udata.inlen = (unsigned long )in_len - 16UL;
#line 1549
  udata.outlen = (unsigned long )out_len - 8UL;
#line 1553
  cq = idr_read_cq((int )cmd.cq_handle, file->ucontext, 0);
#line 1554
  if ((unsigned long )cq == (unsigned long )((struct ib_cq *)0)) {
#line 1555
    return (-22L);
  } else {

  }
#line 1557
  ret = (*((cq->device)->resize_cq))(cq, (int )cmd.cqe, & udata);
#line 1558
  if (ret != 0) {
#line 1559
    goto out;
  } else {

  }
#line 1561
  resp.cqe = (__u32 )cq->cqe;
#line 1563
  tmp___0 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 1563
  if (tmp___0 != 0UL) {
#line 1565
    ret = -14;
  } else {

  }
  out: 
#line 1568
  put_cq_read(cq);
#line 1570
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 1573 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int copy_wc_to_user(void *dest , struct ib_wc *wc ) 
{ 
  struct ib_uverbs_wc tmp ;
  unsigned long tmp___0 ;

  {
#line 1577
  tmp.wr_id = wc->wr_id;
#line 1578
  tmp.status = (__u32 )wc->status;
#line 1579
  tmp.opcode = (__u32 )wc->opcode;
#line 1580
  tmp.vendor_err = wc->vendor_err;
#line 1581
  tmp.byte_len = wc->byte_len;
#line 1582
  tmp.ex.imm_data = wc->ex.imm_data;
#line 1583
  tmp.qp_num = (wc->qp)->qp_num;
#line 1584
  tmp.src_qp = wc->src_qp;
#line 1585
  tmp.wc_flags = (__u32 )wc->wc_flags;
#line 1586
  tmp.pkey_index = wc->pkey_index;
#line 1587
  tmp.slid = wc->slid;
#line 1588
  tmp.sl = wc->sl;
#line 1589
  tmp.dlid_path_bits = wc->dlid_path_bits;
#line 1590
  tmp.port_num = wc->port_num;
#line 1591
  tmp.reserved = 0U;
#line 1593
  tmp___0 = copy_to_user(dest, (void const   *)(& tmp), 48UL);
#line 1593
  if (tmp___0 != 0UL) {
#line 1594
    return (-14);
  } else {

  }
#line 1596
  return (0);
}
}
#line 1599 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_poll_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                          int out_len ) 
{ 
  struct ib_uverbs_poll_cq cmd ;
  struct ib_uverbs_poll_cq_resp resp ;
  u8 *header_ptr ;
  u8 *data_ptr ;
  struct ib_cq *cq ;
  struct ib_wc wc ;
  int ret ;
  unsigned long tmp ;
  unsigned long tmp___0 ;

  {
#line 1611
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 1611
  if (tmp != 0UL) {
#line 1612
    return (-14L);
  } else {

  }
#line 1614
  cq = idr_read_cq((int )cmd.cq_handle, file->ucontext, 0);
#line 1615
  if ((unsigned long )cq == (unsigned long )((struct ib_cq *)0)) {
#line 1616
    return (-22L);
  } else {

  }
#line 1619
  header_ptr = (u8 *)cmd.response;
#line 1620
  data_ptr = header_ptr + 8UL;
#line 1622
  memset((void *)(& resp), 0, 8UL);
#line 1623
  goto ldv_32450;
  ldv_32449: 
#line 1624
  ret = ib_poll_cq(cq, 1, & wc);
#line 1625
  if (ret < 0) {
#line 1626
    goto out_put;
  } else {

  }
#line 1627
  if (ret == 0) {
#line 1628
    goto ldv_32448;
  } else {

  }
#line 1630
  ret = copy_wc_to_user((void *)data_ptr, & wc);
#line 1631
  if (ret != 0) {
#line 1632
    goto out_put;
  } else {

  }
#line 1634
  data_ptr = data_ptr + 48UL;
#line 1635
  resp.count = resp.count + 1U;
  ldv_32450: ;
#line 1623
  if (resp.count < cmd.ne) {
#line 1625
    goto ldv_32449;
  } else {

  }
  ldv_32448: 
#line 1638
  tmp___0 = copy_to_user((void *)header_ptr, (void const   *)(& resp), 8UL);
#line 1638
  if (tmp___0 != 0UL) {
#line 1639
    ret = -14;
#line 1640
    goto out_put;
  } else {

  }
#line 1643
  ret = in_len;
  out_put: 
#line 1646
  put_cq_read(cq);
#line 1647
  return ((ssize_t )ret);
}
}
#line 1650 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_req_notify_cq(struct ib_uverbs_file *file , char const   *buf ,
                                int in_len , int out_len ) 
{ 
  struct ib_uverbs_req_notify_cq cmd ;
  struct ib_cq *cq ;
  unsigned long tmp ;

  {
#line 1657
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 8UL);
#line 1657
  if (tmp != 0UL) {
#line 1658
    return (-14L);
  } else {

  }
#line 1660
  cq = idr_read_cq((int )cmd.cq_handle, file->ucontext, 0);
#line 1661
  if ((unsigned long )cq == (unsigned long )((struct ib_cq *)0)) {
#line 1662
    return (-22L);
  } else {

  }
#line 1664
  ib_req_notify_cq(cq, cmd.solicited_only != 0U ? 1 : 2);
#line 1667
  put_cq_read(cq);
#line 1669
  return ((ssize_t )in_len);
}
}
#line 1672 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_destroy_cq cmd ;
  struct ib_uverbs_destroy_cq_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_cq *cq ;
  struct ib_ucq_object *obj ;
  struct ib_uverbs_event_file *ev_file ;
  int ret ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  unsigned long tmp___0 ;

  {
#line 1682
  ret = -22;
#line 1684
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 1684
  if (tmp != 0UL) {
#line 1685
    return (-14L);
  } else {

  }
#line 1687
  uobj = idr_write_uobj(& ib_uverbs_cq_idr, (int )cmd.cq_handle, file->ucontext);
#line 1688
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 1689
    return (-22L);
  } else {

  }
#line 1690
  cq = (struct ib_cq *)uobj->object;
#line 1691
  ev_file = (struct ib_uverbs_event_file *)cq->cq_context;
#line 1692
  __mptr = (struct ib_uobject  const  *)cq->uobject;
#line 1692
  obj = (struct ib_ucq_object *)__mptr;
#line 1694
  ret = ib_destroy_cq(cq);
#line 1695
  if (ret == 0) {
#line 1696
    uobj->live = 0;
  } else {

  }
#line 1698
  put_uobj_write(uobj);
#line 1700
  if (ret != 0) {
#line 1701
    return ((ssize_t )ret);
  } else {

  }
#line 1703
  idr_remove_uobj(& ib_uverbs_cq_idr, uobj);
#line 1705
  mutex_lock_nested(& file->mutex, 0U);
#line 1706
  list_del(& uobj->list);
#line 1707
  mutex_unlock(& file->mutex);
#line 1709
  ib_uverbs_release_ucq(file, ev_file, obj);
#line 1711
  memset((void *)(& resp), 0, 8UL);
#line 1712
  resp.comp_events_reported = obj->comp_events_reported;
#line 1713
  resp.async_events_reported = obj->async_events_reported;
#line 1715
  put_uobj(uobj);
#line 1717
  tmp___0 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 8UL);
#line 1717
  if (tmp___0 != 0UL) {
#line 1719
    return (-14L);
  } else {

  }
#line 1721
  return ((ssize_t )in_len);
}
}
#line 1724 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_create_qp cmd ;
  struct ib_uverbs_create_qp_resp resp ;
  struct ib_udata udata ;
  struct ib_uqp_object *obj ;
  struct ib_device *device ;
  struct ib_pd *pd ;
  struct ib_xrcd *xrcd ;
  struct ib_uobject *xrcd_uobj ;
  struct ib_cq *scq ;
  struct ib_cq *rcq ;
  struct ib_srq *srq ;
  struct ib_qp *qp ;
  struct ib_qp_init_attr attr ;
  int ret ;
  unsigned long tmp ;
  bool tmp___0 ;
  int tmp___1 ;
  void *tmp___2 ;
  long tmp___3 ;
  bool tmp___4 ;
  unsigned long tmp___5 ;
  struct ib_uobject  const  *__mptr ;

  {
#line 1733
  pd = (struct ib_pd *)0;
#line 1734
  xrcd = (struct ib_xrcd *)0;
#line 1735
  xrcd_uobj = xrcd_uobj;
#line 1736
  scq = (struct ib_cq *)0;
#line 1736
  rcq = (struct ib_cq *)0;
#line 1737
  srq = (struct ib_srq *)0;
#line 1742
  if ((unsigned int )out_len <= 31U) {
#line 1743
    return (-28L);
  } else {

  }
#line 1745
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 56UL);
#line 1745
  if (tmp != 0UL) {
#line 1746
    return (-14L);
  } else {

  }
#line 1748
  if ((unsigned int )cmd.qp_type == 8U) {
#line 1748
    tmp___0 = capable(13);
#line 1748
    if (tmp___0) {
#line 1748
      tmp___1 = 0;
    } else {
#line 1748
      tmp___1 = 1;
    }
#line 1748
    if (tmp___1) {
#line 1749
      return (-1L);
    } else {

    }
  } else {

  }
#line 1751
  udata.inbuf = (void const   *)buf + 56U;
#line 1751
  udata.outbuf = (void *)((unsigned long )cmd.response + 32UL);
#line 1751
  udata.inlen = (unsigned long )in_len - 56UL;
#line 1751
  udata.outlen = (unsigned long )out_len - 32UL;
#line 1755
  tmp___2 = kzalloc(264UL, 208U);
#line 1755
  obj = (struct ib_uqp_object *)tmp___2;
#line 1756
  if ((unsigned long )obj == (unsigned long )((struct ib_uqp_object *)0)) {
#line 1757
    return (-12L);
  } else {

  }
#line 1759
  init_uobj(& obj->uevent.uobject, cmd.user_handle, file->ucontext, & qp_lock_class);
#line 1760
  down_write(& obj->uevent.uobject.mutex);
#line 1762
  if ((unsigned int )cmd.qp_type == 10U) {
#line 1763
    xrcd = idr_read_xrcd((int )cmd.pd_handle, file->ucontext, & xrcd_uobj);
#line 1764
    if ((unsigned long )xrcd == (unsigned long )((struct ib_xrcd *)0)) {
#line 1765
      ret = -22;
#line 1766
      goto err_put;
    } else {

    }
#line 1768
    device = xrcd->device;
  } else {
#line 1770
    if ((unsigned int )cmd.qp_type == 9U) {
#line 1771
      cmd.max_recv_sge = 0U;
#line 1771
      cmd.max_recv_wr = cmd.max_recv_sge;
    } else {
#line 1773
      if ((unsigned int )cmd.is_srq != 0U) {
#line 1774
        srq = idr_read_srq((int )cmd.srq_handle, file->ucontext);
#line 1775
        if ((unsigned long )srq == (unsigned long )((struct ib_srq *)0) || (unsigned int )srq->srq_type != 0U) {
#line 1776
          ret = -22;
#line 1777
          goto err_put;
        } else {

        }
      } else {

      }
#line 1781
      if (cmd.recv_cq_handle != cmd.send_cq_handle) {
#line 1782
        rcq = idr_read_cq((int )cmd.recv_cq_handle, file->ucontext, 0);
#line 1783
        if ((unsigned long )rcq == (unsigned long )((struct ib_cq *)0)) {
#line 1784
          ret = -22;
#line 1785
          goto err_put;
        } else {

        }
      } else {

      }
    }
#line 1790
    scq = idr_read_cq((int )cmd.send_cq_handle, file->ucontext, (unsigned long )rcq != (unsigned long )((struct ib_cq *)0));
#line 1791
    rcq = (unsigned long )rcq != (unsigned long )((struct ib_cq *)0) ? (unsigned long )rcq != (unsigned long )((struct ib_cq *)0) : scq;
#line 1792
    pd = idr_read_pd((int )cmd.pd_handle, file->ucontext);
#line 1793
    if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0) || (unsigned long )scq == (unsigned long )((struct ib_cq *)0)) {
#line 1794
      ret = -22;
#line 1795
      goto err_put;
    } else {

    }
#line 1798
    device = pd->device;
  }
#line 1801
  attr.event_handler = & ib_uverbs_qp_event_handler;
#line 1802
  attr.qp_context = (void *)file;
#line 1803
  attr.send_cq = scq;
#line 1804
  attr.recv_cq = rcq;
#line 1805
  attr.srq = srq;
#line 1806
  attr.xrcd = xrcd;
#line 1807
  attr.sq_sig_type = (unsigned int )cmd.sq_sig_all == 0U;
#line 1808
  attr.qp_type = (enum ib_qp_type )cmd.qp_type;
#line 1809
  attr.create_flags = 0;
#line 1811
  attr.cap.max_send_wr = cmd.max_send_wr;
#line 1812
  attr.cap.max_recv_wr = cmd.max_recv_wr;
#line 1813
  attr.cap.max_send_sge = cmd.max_send_sge;
#line 1814
  attr.cap.max_recv_sge = cmd.max_recv_sge;
#line 1815
  attr.cap.max_inline_data = cmd.max_inline_data;
#line 1817
  obj->uevent.events_reported = 0U;
#line 1818
  INIT_LIST_HEAD(& obj->uevent.event_list);
#line 1819
  INIT_LIST_HEAD(& obj->mcast_list);
#line 1821
  if ((unsigned int )cmd.qp_type == 10U) {
#line 1822
    qp = ib_create_qp(pd, & attr);
  } else {
#line 1824
    qp = (*(device->create_qp))(pd, & attr, & udata);
  }
#line 1826
  tmp___4 = IS_ERR((void const   *)qp);
#line 1826
  if ((int )tmp___4) {
#line 1827
    tmp___3 = PTR_ERR((void const   *)qp);
#line 1827
    ret = (int )tmp___3;
#line 1828
    goto err_put;
  } else {

  }
#line 1831
  if ((unsigned int )cmd.qp_type != 10U) {
#line 1832
    qp->real_qp = qp;
#line 1833
    qp->device = device;
#line 1834
    qp->pd = pd;
#line 1835
    qp->send_cq = attr.send_cq;
#line 1836
    qp->recv_cq = attr.recv_cq;
#line 1837
    qp->srq = attr.srq;
#line 1838
    qp->event_handler = attr.event_handler;
#line 1839
    qp->qp_context = attr.qp_context;
#line 1840
    qp->qp_type = attr.qp_type;
#line 1841
    atomic_set(& qp->usecnt, 0);
#line 1842
    atomic_inc(& pd->usecnt);
#line 1843
    atomic_inc(& (attr.send_cq)->usecnt);
#line 1844
    if ((unsigned long )attr.recv_cq != (unsigned long )((struct ib_cq *)0)) {
#line 1845
      atomic_inc(& (attr.recv_cq)->usecnt);
    } else {

    }
#line 1846
    if ((unsigned long )attr.srq != (unsigned long )((struct ib_srq *)0)) {
#line 1847
      atomic_inc(& (attr.srq)->usecnt);
    } else {

    }
  } else {

  }
#line 1849
  qp->uobject = & obj->uevent.uobject;
#line 1851
  obj->uevent.uobject.object = (void *)qp;
#line 1852
  ret = idr_add_uobj(& ib_uverbs_qp_idr, & obj->uevent.uobject);
#line 1853
  if (ret != 0) {
#line 1854
    goto err_destroy;
  } else {

  }
#line 1856
  memset((void *)(& resp), 0, 32UL);
#line 1857
  resp.qpn = qp->qp_num;
#line 1858
  resp.qp_handle = (__u32 )obj->uevent.uobject.id;
#line 1859
  resp.max_recv_sge = attr.cap.max_recv_sge;
#line 1860
  resp.max_send_sge = attr.cap.max_send_sge;
#line 1861
  resp.max_recv_wr = attr.cap.max_recv_wr;
#line 1862
  resp.max_send_wr = attr.cap.max_send_wr;
#line 1863
  resp.max_inline_data = attr.cap.max_inline_data;
#line 1865
  tmp___5 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 32UL);
#line 1865
  if (tmp___5 != 0UL) {
#line 1867
    ret = -14;
#line 1868
    goto err_copy;
  } else {

  }
#line 1871
  if ((unsigned long )xrcd != (unsigned long )((struct ib_xrcd *)0)) {
#line 1872
    __mptr = (struct ib_uobject  const  *)xrcd_uobj;
#line 1872
    obj->uxrcd = (struct ib_uxrcd_object *)__mptr;
#line 1874
    atomic_inc(& (obj->uxrcd)->refcnt);
#line 1875
    put_xrcd_read(xrcd_uobj);
  } else {

  }
#line 1878
  if ((unsigned long )pd != (unsigned long )((struct ib_pd *)0)) {
#line 1879
    put_pd_read(pd);
  } else {

  }
#line 1880
  if ((unsigned long )scq != (unsigned long )((struct ib_cq *)0)) {
#line 1881
    put_cq_read(scq);
  } else {

  }
#line 1882
  if ((unsigned long )rcq != (unsigned long )((struct ib_cq *)0) && (unsigned long )rcq != (unsigned long )scq) {
#line 1883
    put_cq_read(rcq);
  } else {

  }
#line 1884
  if ((unsigned long )srq != (unsigned long )((struct ib_srq *)0)) {
#line 1885
    put_srq_read(srq);
  } else {

  }
#line 1887
  mutex_lock_nested(& file->mutex, 0U);
#line 1888
  list_add_tail(& obj->uevent.uobject.list, & (file->ucontext)->qp_list);
#line 1889
  mutex_unlock(& file->mutex);
#line 1891
  obj->uevent.uobject.live = 1;
#line 1893
  up_write(& obj->uevent.uobject.mutex);
#line 1895
  return ((ssize_t )in_len);
  err_copy: 
#line 1898
  idr_remove_uobj(& ib_uverbs_qp_idr, & obj->uevent.uobject);
  err_destroy: 
#line 1901
  ib_destroy_qp(qp);
  err_put: ;
#line 1904
  if ((unsigned long )xrcd != (unsigned long )((struct ib_xrcd *)0)) {
#line 1905
    put_xrcd_read(xrcd_uobj);
  } else {

  }
#line 1906
  if ((unsigned long )pd != (unsigned long )((struct ib_pd *)0)) {
#line 1907
    put_pd_read(pd);
  } else {

  }
#line 1908
  if ((unsigned long )scq != (unsigned long )((struct ib_cq *)0)) {
#line 1909
    put_cq_read(scq);
  } else {

  }
#line 1910
  if ((unsigned long )rcq != (unsigned long )((struct ib_cq *)0) && (unsigned long )rcq != (unsigned long )scq) {
#line 1911
    put_cq_read(rcq);
  } else {

  }
#line 1912
  if ((unsigned long )srq != (unsigned long )((struct ib_srq *)0)) {
#line 1913
    put_srq_read(srq);
  } else {

  }
#line 1915
  put_uobj_write(& obj->uevent.uobject);
#line 1916
  return ((ssize_t )ret);
}
}
#line 1919 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_open_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                          int out_len ) 
{ 
  struct ib_uverbs_open_qp cmd ;
  struct ib_uverbs_create_qp_resp resp ;
  struct ib_udata udata ;
  struct ib_uqp_object *obj ;
  struct ib_xrcd *xrcd ;
  struct ib_uobject *xrcd_uobj ;
  struct ib_qp *qp ;
  struct ib_qp_open_attr attr ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  long tmp___1 ;
  bool tmp___2 ;
  unsigned long tmp___3 ;
  struct ib_uobject  const  *__mptr ;

  {
#line 1927
  xrcd_uobj = xrcd_uobj;
#line 1932
  if ((unsigned int )out_len <= 31U) {
#line 1933
    return (-28L);
  } else {

  }
#line 1935
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 32UL);
#line 1935
  if (tmp != 0UL) {
#line 1936
    return (-14L);
  } else {

  }
#line 1938
  udata.inbuf = (void const   *)buf + 32U;
#line 1938
  udata.outbuf = (void *)((unsigned long )cmd.response + 32UL);
#line 1938
  udata.inlen = (unsigned long )in_len - 32UL;
#line 1938
  udata.outlen = (unsigned long )out_len - 32UL;
#line 1942
  tmp___0 = kmalloc(264UL, 208U);
#line 1942
  obj = (struct ib_uqp_object *)tmp___0;
#line 1943
  if ((unsigned long )obj == (unsigned long )((struct ib_uqp_object *)0)) {
#line 1944
    return (-12L);
  } else {

  }
#line 1946
  init_uobj(& obj->uevent.uobject, cmd.user_handle, file->ucontext, & qp_lock_class);
#line 1947
  down_write(& obj->uevent.uobject.mutex);
#line 1949
  xrcd = idr_read_xrcd((int )cmd.pd_handle, file->ucontext, & xrcd_uobj);
#line 1950
  if ((unsigned long )xrcd == (unsigned long )((struct ib_xrcd *)0)) {
#line 1951
    ret = -22;
#line 1952
    goto err_put;
  } else {

  }
#line 1955
  attr.event_handler = & ib_uverbs_qp_event_handler;
#line 1956
  attr.qp_context = (void *)file;
#line 1957
  attr.qp_num = cmd.qpn;
#line 1958
  attr.qp_type = (enum ib_qp_type )cmd.qp_type;
#line 1960
  obj->uevent.events_reported = 0U;
#line 1961
  INIT_LIST_HEAD(& obj->uevent.event_list);
#line 1962
  INIT_LIST_HEAD(& obj->mcast_list);
#line 1964
  qp = ib_open_qp(xrcd, & attr);
#line 1965
  tmp___2 = IS_ERR((void const   *)qp);
#line 1965
  if ((int )tmp___2) {
#line 1966
    tmp___1 = PTR_ERR((void const   *)qp);
#line 1966
    ret = (int )tmp___1;
#line 1967
    goto err_put;
  } else {

  }
#line 1970
  qp->uobject = & obj->uevent.uobject;
#line 1972
  obj->uevent.uobject.object = (void *)qp;
#line 1973
  ret = idr_add_uobj(& ib_uverbs_qp_idr, & obj->uevent.uobject);
#line 1974
  if (ret != 0) {
#line 1975
    goto err_destroy;
  } else {

  }
#line 1977
  memset((void *)(& resp), 0, 32UL);
#line 1978
  resp.qpn = qp->qp_num;
#line 1979
  resp.qp_handle = (__u32 )obj->uevent.uobject.id;
#line 1981
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 32UL);
#line 1981
  if (tmp___3 != 0UL) {
#line 1983
    ret = -14;
#line 1984
    goto err_remove;
  } else {

  }
#line 1987
  __mptr = (struct ib_uobject  const  *)xrcd_uobj;
#line 1987
  obj->uxrcd = (struct ib_uxrcd_object *)__mptr;
#line 1988
  atomic_inc(& (obj->uxrcd)->refcnt);
#line 1989
  put_xrcd_read(xrcd_uobj);
#line 1991
  mutex_lock_nested(& file->mutex, 0U);
#line 1992
  list_add_tail(& obj->uevent.uobject.list, & (file->ucontext)->qp_list);
#line 1993
  mutex_unlock(& file->mutex);
#line 1995
  obj->uevent.uobject.live = 1;
#line 1997
  up_write(& obj->uevent.uobject.mutex);
#line 1999
  return ((ssize_t )in_len);
  err_remove: 
#line 2002
  idr_remove_uobj(& ib_uverbs_qp_idr, & obj->uevent.uobject);
  err_destroy: 
#line 2005
  ib_destroy_qp(qp);
  err_put: 
#line 2008
  put_xrcd_read(xrcd_uobj);
#line 2009
  put_uobj_write(& obj->uevent.uobject);
#line 2010
  return ((ssize_t )ret);
}
}
#line 2013 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_query_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                           int out_len ) 
{ 
  struct ib_uverbs_query_qp cmd ;
  struct ib_uverbs_query_qp_resp resp ;
  struct ib_qp *qp ;
  struct ib_qp_attr *attr ;
  struct ib_qp_init_attr *init_attr ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  void *tmp___1 ;
  unsigned long tmp___2 ;

  {
#line 2024
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 2024
  if (tmp != 0UL) {
#line 2025
    return (-14L);
  } else {

  }
#line 2027
  tmp___0 = kmalloc(168UL, 208U);
#line 2027
  attr = (struct ib_qp_attr *)tmp___0;
#line 2028
  tmp___1 = kmalloc(88UL, 208U);
#line 2028
  init_attr = (struct ib_qp_init_attr *)tmp___1;
#line 2029
  if ((unsigned long )attr == (unsigned long )((struct ib_qp_attr *)0) || (unsigned long )init_attr == (unsigned long )((struct ib_qp_init_attr *)0)) {
#line 2030
    ret = -12;
#line 2031
    goto out;
  } else {

  }
#line 2034
  qp = idr_read_qp((int )cmd.qp_handle, file->ucontext);
#line 2035
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2036
    ret = -22;
#line 2037
    goto out;
  } else {

  }
#line 2040
  ret = ib_query_qp(qp, attr, (int )cmd.attr_mask, init_attr);
#line 2042
  put_qp_read(qp);
#line 2044
  if (ret != 0) {
#line 2045
    goto out;
  } else {

  }
#line 2047
  memset((void *)(& resp), 0, 128UL);
#line 2049
  resp.qp_state = (__u8 )attr->qp_state;
#line 2050
  resp.cur_qp_state = (__u8 )attr->cur_qp_state;
#line 2051
  resp.path_mtu = (__u8 )attr->path_mtu;
#line 2052
  resp.path_mig_state = (__u8 )attr->path_mig_state;
#line 2053
  resp.qkey = attr->qkey;
#line 2054
  resp.rq_psn = attr->rq_psn;
#line 2055
  resp.sq_psn = attr->sq_psn;
#line 2056
  resp.dest_qp_num = attr->dest_qp_num;
#line 2057
  resp.qp_access_flags = (__u32 )attr->qp_access_flags;
#line 2058
  resp.pkey_index = attr->pkey_index;
#line 2059
  resp.alt_pkey_index = attr->alt_pkey_index;
#line 2060
  resp.sq_draining = attr->sq_draining;
#line 2061
  resp.max_rd_atomic = attr->max_rd_atomic;
#line 2062
  resp.max_dest_rd_atomic = attr->max_dest_rd_atomic;
#line 2063
  resp.min_rnr_timer = attr->min_rnr_timer;
#line 2064
  resp.port_num = attr->port_num;
#line 2065
  resp.timeout = attr->timeout;
#line 2066
  resp.retry_cnt = attr->retry_cnt;
#line 2067
  resp.rnr_retry = attr->rnr_retry;
#line 2068
  resp.alt_port_num = attr->alt_port_num;
#line 2069
  resp.alt_timeout = attr->alt_timeout;
#line 2071
  memcpy((void *)(& resp.dest.dgid), (void const   *)(& attr->ah_attr.grh.dgid.raw),
           16UL);
#line 2072
  resp.dest.flow_label = attr->ah_attr.grh.flow_label;
#line 2073
  resp.dest.sgid_index = attr->ah_attr.grh.sgid_index;
#line 2074
  resp.dest.hop_limit = attr->ah_attr.grh.hop_limit;
#line 2075
  resp.dest.traffic_class = attr->ah_attr.grh.traffic_class;
#line 2076
  resp.dest.dlid = attr->ah_attr.dlid;
#line 2077
  resp.dest.sl = attr->ah_attr.sl;
#line 2078
  resp.dest.src_path_bits = attr->ah_attr.src_path_bits;
#line 2079
  resp.dest.static_rate = attr->ah_attr.static_rate;
#line 2080
  resp.dest.is_global = (unsigned int )attr->ah_attr.ah_flags & 1U;
#line 2081
  resp.dest.port_num = attr->ah_attr.port_num;
#line 2083
  memcpy((void *)(& resp.alt_dest.dgid), (void const   *)(& attr->alt_ah_attr.grh.dgid.raw),
           16UL);
#line 2084
  resp.alt_dest.flow_label = attr->alt_ah_attr.grh.flow_label;
#line 2085
  resp.alt_dest.sgid_index = attr->alt_ah_attr.grh.sgid_index;
#line 2086
  resp.alt_dest.hop_limit = attr->alt_ah_attr.grh.hop_limit;
#line 2087
  resp.alt_dest.traffic_class = attr->alt_ah_attr.grh.traffic_class;
#line 2088
  resp.alt_dest.dlid = attr->alt_ah_attr.dlid;
#line 2089
  resp.alt_dest.sl = attr->alt_ah_attr.sl;
#line 2090
  resp.alt_dest.src_path_bits = attr->alt_ah_attr.src_path_bits;
#line 2091
  resp.alt_dest.static_rate = attr->alt_ah_attr.static_rate;
#line 2092
  resp.alt_dest.is_global = (unsigned int )attr->alt_ah_attr.ah_flags & 1U;
#line 2093
  resp.alt_dest.port_num = attr->alt_ah_attr.port_num;
#line 2095
  resp.max_send_wr = init_attr->cap.max_send_wr;
#line 2096
  resp.max_recv_wr = init_attr->cap.max_recv_wr;
#line 2097
  resp.max_send_sge = init_attr->cap.max_send_sge;
#line 2098
  resp.max_recv_sge = init_attr->cap.max_recv_sge;
#line 2099
  resp.max_inline_data = init_attr->cap.max_inline_data;
#line 2100
  resp.sq_sig_all = (unsigned int )init_attr->sq_sig_type == 0U;
#line 2102
  tmp___2 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 128UL);
#line 2102
  if (tmp___2 != 0UL) {
#line 2104
    ret = -14;
  } else {

  }
  out: 
#line 2107
  kfree((void const   *)attr);
#line 2108
  kfree((void const   *)init_attr);
#line 2110
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 2114 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int modify_qp_mask(enum ib_qp_type qp_type , int mask ) 
{ 


  {
#line 2116
  switch ((unsigned int )qp_type) {
  case 9U: ;
#line 2118
  return (mask & -163841);
  case 10U: ;
#line 2120
  return (mask & -11265);
  default: ;
#line 2123
  return (mask);
  }
}
}
#line 2127 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_modify_qp cmd ;
  struct ib_udata udata ;
  struct ib_qp *qp ;
  struct ib_qp_attr *attr ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  int tmp___1 ;
  int tmp___2 ;

  {
#line 2137
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 112UL);
#line 2137
  if (tmp != 0UL) {
#line 2138
    return (-14L);
  } else {

  }
#line 2140
  udata.inbuf = (void const   *)buf + 112U;
#line 2140
  udata.outbuf = (void *)0;
#line 2140
  udata.inlen = (unsigned long )in_len - 112UL;
#line 2140
  udata.outlen = (size_t )out_len;
#line 2143
  tmp___0 = kmalloc(168UL, 208U);
#line 2143
  attr = (struct ib_qp_attr *)tmp___0;
#line 2144
  if ((unsigned long )attr == (unsigned long )((struct ib_qp_attr *)0)) {
#line 2145
    return (-12L);
  } else {

  }
#line 2147
  qp = idr_read_qp((int )cmd.qp_handle, file->ucontext);
#line 2148
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2149
    ret = -22;
#line 2150
    goto out;
  } else {

  }
#line 2153
  attr->qp_state = (enum ib_qp_state )cmd.qp_state;
#line 2154
  attr->cur_qp_state = (enum ib_qp_state )cmd.cur_qp_state;
#line 2155
  attr->path_mtu = (enum ib_mtu )cmd.path_mtu;
#line 2156
  attr->path_mig_state = (enum ib_mig_state )cmd.path_mig_state;
#line 2157
  attr->qkey = cmd.qkey;
#line 2158
  attr->rq_psn = cmd.rq_psn;
#line 2159
  attr->sq_psn = cmd.sq_psn;
#line 2160
  attr->dest_qp_num = cmd.dest_qp_num;
#line 2161
  attr->qp_access_flags = (int )cmd.qp_access_flags;
#line 2162
  attr->pkey_index = cmd.pkey_index;
#line 2163
  attr->alt_pkey_index = cmd.alt_pkey_index;
#line 2164
  attr->en_sqd_async_notify = cmd.en_sqd_async_notify;
#line 2165
  attr->max_rd_atomic = cmd.max_rd_atomic;
#line 2166
  attr->max_dest_rd_atomic = cmd.max_dest_rd_atomic;
#line 2167
  attr->min_rnr_timer = cmd.min_rnr_timer;
#line 2168
  attr->port_num = cmd.port_num;
#line 2169
  attr->timeout = cmd.timeout;
#line 2170
  attr->retry_cnt = cmd.retry_cnt;
#line 2171
  attr->rnr_retry = cmd.rnr_retry;
#line 2172
  attr->alt_port_num = cmd.alt_port_num;
#line 2173
  attr->alt_timeout = cmd.alt_timeout;
#line 2175
  memcpy((void *)(& attr->ah_attr.grh.dgid.raw), (void const   *)(& cmd.dest.dgid),
           16UL);
#line 2176
  attr->ah_attr.grh.flow_label = cmd.dest.flow_label;
#line 2177
  attr->ah_attr.grh.sgid_index = cmd.dest.sgid_index;
#line 2178
  attr->ah_attr.grh.hop_limit = cmd.dest.hop_limit;
#line 2179
  attr->ah_attr.grh.traffic_class = cmd.dest.traffic_class;
#line 2180
  attr->ah_attr.dlid = cmd.dest.dlid;
#line 2181
  attr->ah_attr.sl = cmd.dest.sl;
#line 2182
  attr->ah_attr.src_path_bits = cmd.dest.src_path_bits;
#line 2183
  attr->ah_attr.static_rate = cmd.dest.static_rate;
#line 2184
  attr->ah_attr.ah_flags = (unsigned int )cmd.dest.is_global != 0U;
#line 2185
  attr->ah_attr.port_num = cmd.dest.port_num;
#line 2187
  memcpy((void *)(& attr->alt_ah_attr.grh.dgid.raw), (void const   *)(& cmd.alt_dest.dgid),
           16UL);
#line 2188
  attr->alt_ah_attr.grh.flow_label = cmd.alt_dest.flow_label;
#line 2189
  attr->alt_ah_attr.grh.sgid_index = cmd.alt_dest.sgid_index;
#line 2190
  attr->alt_ah_attr.grh.hop_limit = cmd.alt_dest.hop_limit;
#line 2191
  attr->alt_ah_attr.grh.traffic_class = cmd.alt_dest.traffic_class;
#line 2192
  attr->alt_ah_attr.dlid = cmd.alt_dest.dlid;
#line 2193
  attr->alt_ah_attr.sl = cmd.alt_dest.sl;
#line 2194
  attr->alt_ah_attr.src_path_bits = cmd.alt_dest.src_path_bits;
#line 2195
  attr->alt_ah_attr.static_rate = cmd.alt_dest.static_rate;
#line 2196
  attr->alt_ah_attr.ah_flags = (unsigned int )cmd.alt_dest.is_global != 0U;
#line 2197
  attr->alt_ah_attr.port_num = cmd.alt_dest.port_num;
#line 2199
  if ((unsigned long )qp->real_qp == (unsigned long )qp) {
#line 2200
    ret = ib_resolve_eth_l2_attrs(qp, attr, (int *)(& cmd.attr_mask));
#line 2201
    if (ret != 0) {
#line 2202
      goto release_qp;
    } else {

    }
#line 2203
    tmp___1 = modify_qp_mask(qp->qp_type, (int )cmd.attr_mask);
#line 2203
    ret = (*((qp->device)->modify_qp))(qp, attr, tmp___1, & udata);
  } else {
#line 2206
    tmp___2 = modify_qp_mask(qp->qp_type, (int )cmd.attr_mask);
#line 2206
    ret = ib_modify_qp(qp, attr, tmp___2);
  }
#line 2209
  if (ret != 0) {
#line 2210
    goto release_qp;
  } else {

  }
#line 2212
  ret = in_len;
  release_qp: 
#line 2215
  put_qp_read(qp);
  out: 
#line 2218
  kfree((void const   *)attr);
#line 2220
  return ((ssize_t )ret);
}
}
#line 2223 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_destroy_qp cmd ;
  struct ib_uverbs_destroy_qp_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_qp *qp ;
  struct ib_uqp_object *obj ;
  int ret ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  int tmp___0 ;
  unsigned long tmp___1 ;

  {
#line 2232
  ret = -22;
#line 2234
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 2234
  if (tmp != 0UL) {
#line 2235
    return (-14L);
  } else {

  }
#line 2237
  memset((void *)(& resp), 0, 4UL);
#line 2239
  uobj = idr_write_uobj(& ib_uverbs_qp_idr, (int )cmd.qp_handle, file->ucontext);
#line 2240
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 2241
    return (-22L);
  } else {

  }
#line 2242
  qp = (struct ib_qp *)uobj->object;
#line 2243
  __mptr = (struct ib_uobject  const  *)uobj;
#line 2243
  obj = (struct ib_uqp_object *)__mptr;
#line 2245
  tmp___0 = list_empty((struct list_head  const  *)(& obj->mcast_list));
#line 2245
  if (tmp___0 == 0) {
#line 2246
    put_uobj_write(uobj);
#line 2247
    return (-16L);
  } else {

  }
#line 2250
  ret = ib_destroy_qp(qp);
#line 2251
  if (ret == 0) {
#line 2252
    uobj->live = 0;
  } else {

  }
#line 2254
  put_uobj_write(uobj);
#line 2256
  if (ret != 0) {
#line 2257
    return ((ssize_t )ret);
  } else {

  }
#line 2259
  if ((unsigned long )obj->uxrcd != (unsigned long )((struct ib_uxrcd_object *)0)) {
#line 2260
    atomic_dec(& (obj->uxrcd)->refcnt);
  } else {

  }
#line 2262
  idr_remove_uobj(& ib_uverbs_qp_idr, uobj);
#line 2264
  mutex_lock_nested(& file->mutex, 0U);
#line 2265
  list_del(& uobj->list);
#line 2266
  mutex_unlock(& file->mutex);
#line 2268
  ib_uverbs_release_uevent(file, & obj->uevent);
#line 2270
  resp.events_reported = obj->uevent.events_reported;
#line 2272
  put_uobj(uobj);
#line 2274
  tmp___1 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 2274
  if (tmp___1 != 0UL) {
#line 2276
    return (-14L);
  } else {

  }
#line 2278
  return ((ssize_t )in_len);
}
}
#line 2281 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_post_send(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_post_send cmd ;
  struct ib_uverbs_post_send_resp resp ;
  struct ib_uverbs_send_wr *user_wr ;
  struct ib_send_wr *wr ;
  struct ib_send_wr *last ;
  struct ib_send_wr *next ;
  struct ib_send_wr *bad_wr ;
  struct ib_qp *qp ;
  int i ;
  int sg_ind ;
  int is_ud ;
  ssize_t ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  unsigned long tmp___1 ;
  void *tmp___2 ;
  unsigned long tmp___3 ;
  int tmp___4 ;
  unsigned long tmp___5 ;

  {
#line 2288
  wr = (struct ib_send_wr *)0;
#line 2292
  ret = -22L;
#line 2294
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 24UL);
#line 2294
  if (tmp != 0UL) {
#line 2295
    return (-14L);
  } else {

  }
#line 2297
  if ((unsigned long )in_len < ((unsigned long )(cmd.wqe_size * cmd.wr_count) + (unsigned long )cmd.sge_count * 16UL) + 24UL) {
#line 2299
    return (-22L);
  } else {

  }
#line 2301
  if (cmd.wqe_size <= 55U) {
#line 2302
    return (-22L);
  } else {

  }
#line 2304
  tmp___0 = kmalloc((size_t )cmd.wqe_size, 208U);
#line 2304
  user_wr = (struct ib_uverbs_send_wr *)tmp___0;
#line 2305
  if ((unsigned long )user_wr == (unsigned long )((struct ib_uverbs_send_wr *)0)) {
#line 2306
    return (-12L);
  } else {

  }
#line 2308
  qp = idr_read_qp((int )cmd.qp_handle, file->ucontext);
#line 2309
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2310
    goto out;
  } else {

  }
#line 2312
  is_ud = (unsigned int )qp->qp_type == 4U;
#line 2313
  sg_ind = 0;
#line 2314
  last = (struct ib_send_wr *)0;
#line 2315
  i = 0;
#line 2315
  goto ldv_32596;
  ldv_32595: 
#line 2316
  tmp___1 = copy_from_user((void *)user_wr, (void const   *)(buf + ((unsigned long )(cmd.wqe_size * (__u32 )i) + 24UL)),
                           (unsigned long )cmd.wqe_size);
#line 2316
  if (tmp___1 != 0UL) {
#line 2319
    ret = -14L;
#line 2320
    goto out_put;
  } else {

  }
#line 2323
  if (user_wr->num_sge + (__u32 )sg_ind > cmd.sge_count) {
#line 2324
    ret = -22L;
#line 2325
    goto out_put;
  } else {

  }
#line 2328
  tmp___2 = kmalloc(((unsigned long )user_wr->num_sge + 6UL) * 16UL, 208U);
#line 2328
  next = (struct ib_send_wr *)tmp___2;
#line 2331
  if ((unsigned long )next == (unsigned long )((struct ib_send_wr *)0)) {
#line 2332
    ret = -12L;
#line 2333
    goto out_put;
  } else {

  }
#line 2336
  if ((unsigned long )last == (unsigned long )((struct ib_send_wr *)0)) {
#line 2337
    wr = next;
  } else {
#line 2339
    last->next = next;
  }
#line 2340
  last = next;
#line 2342
  next->next = (struct ib_send_wr *)0;
#line 2343
  next->wr_id = user_wr->wr_id;
#line 2344
  next->num_sge = (int )user_wr->num_sge;
#line 2345
  next->opcode = (enum ib_wr_opcode )user_wr->opcode;
#line 2346
  next->send_flags = (int )user_wr->send_flags;
#line 2348
  if (is_ud != 0) {
#line 2349
    next->wr.ud.ah = idr_read_ah((int )user_wr->wr.ud.ah, file->ucontext);
#line 2351
    if ((unsigned long )next->wr.ud.ah == (unsigned long )((struct ib_ah *)0)) {
#line 2352
      ret = -22L;
#line 2353
      goto out_put;
    } else {

    }
#line 2355
    next->wr.ud.remote_qpn = user_wr->wr.ud.remote_qpn;
#line 2356
    next->wr.ud.remote_qkey = user_wr->wr.ud.remote_qkey;
#line 2357
    if ((unsigned int )next->opcode == 3U) {
#line 2358
      next->ex.imm_data = user_wr->ex.imm_data;
    } else {

    }
  } else {
#line 2361
    switch ((unsigned int )next->opcode) {
    case 1U: 
#line 2363
    next->ex.imm_data = user_wr->ex.imm_data;
    case 0U: ;
    case 4U: 
#line 2367
    next->wr.rdma.remote_addr = user_wr->wr.rdma.remote_addr;
#line 2369
    next->wr.rdma.rkey = user_wr->wr.rdma.rkey;
#line 2371
    goto ldv_32589;
    case 3U: 
#line 2373
    next->ex.imm_data = user_wr->ex.imm_data;
#line 2375
    goto ldv_32589;
    case 8U: 
#line 2377
    next->ex.invalidate_rkey = user_wr->ex.invalidate_rkey;
#line 2379
    goto ldv_32589;
    case 5U: ;
    case 6U: 
#line 2382
    next->wr.atomic.remote_addr = user_wr->wr.atomic.remote_addr;
#line 2384
    next->wr.atomic.compare_add = user_wr->wr.atomic.compare_add;
#line 2386
    next->wr.atomic.swap = user_wr->wr.atomic.swap;
#line 2387
    next->wr.atomic.rkey = user_wr->wr.atomic.rkey;
#line 2388
    goto ldv_32589;
    default: ;
#line 2390
    goto ldv_32589;
    }
    ldv_32589: ;
  }
#line 2394
  if (next->num_sge != 0) {
#line 2395
    next->sg_list = (struct ib_sge *)next + 96U;
#line 2397
    tmp___3 = copy_from_user((void *)next->sg_list, (void const   *)(buf + (((unsigned long )(cmd.wr_count * cmd.wqe_size) + (unsigned long )sg_ind * 16UL) + 24UL)),
                             (unsigned long )next->num_sge * 16UL);
#line 2397
    if (tmp___3 != 0UL) {
#line 2402
      ret = -14L;
#line 2403
      goto out_put;
    } else {

    }
#line 2405
    sg_ind = next->num_sge + sg_ind;
  } else {
#line 2407
    next->sg_list = (struct ib_sge *)0;
  }
#line 2315
  i = i + 1;
  ldv_32596: ;
#line 2315
  if ((__u32 )i < cmd.wr_count) {
#line 2317
    goto ldv_32595;
  } else {

  }
#line 2410
  resp.bad_wr = 0U;
#line 2411
  tmp___4 = (*((qp->device)->post_send))(qp->real_qp, wr, & bad_wr);
#line 2411
  ret = (ssize_t )tmp___4;
#line 2412
  if (ret != 0L) {
#line 2413
    next = wr;
#line 2413
    goto ldv_32600;
    ldv_32599: 
#line 2414
    resp.bad_wr = resp.bad_wr + 1U;
#line 2415
    if ((unsigned long )next == (unsigned long )bad_wr) {
#line 2416
      goto ldv_32598;
    } else {

    }
#line 2413
    next = next->next;
    ldv_32600: ;
#line 2413
    if ((unsigned long )next != (unsigned long )((struct ib_send_wr *)0)) {
#line 2415
      goto ldv_32599;
    } else {

    }
    ldv_32598: ;
  } else {

  }
#line 2419
  tmp___5 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 2419
  if (tmp___5 != 0UL) {
#line 2421
    ret = -14L;
  } else {

  }
  out_put: 
#line 2424
  put_qp_read(qp);
#line 2426
  goto ldv_32602;
  ldv_32601: ;
#line 2427
  if (is_ud != 0 && (unsigned long )wr->wr.ud.ah != (unsigned long )((struct ib_ah *)0)) {
#line 2428
    put_ah_read(wr->wr.ud.ah);
  } else {

  }
#line 2429
  next = wr->next;
#line 2430
  kfree((void const   *)wr);
#line 2431
  wr = next;
  ldv_32602: ;
#line 2426
  if ((unsigned long )wr != (unsigned long )((struct ib_send_wr *)0)) {
#line 2428
    goto ldv_32601;
  } else {

  }

  out: 
#line 2435
  kfree((void const   *)user_wr);
#line 2437
  return (ret == 0L ? (ssize_t )in_len : ret);
}
}
#line 2440 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static struct ib_recv_wr *ib_uverbs_unmarshall_recv(char const   *buf , int in_len ,
                                                    u32 wr_count , u32 sge_count ,
                                                    u32 wqe_size ) 
{ 
  struct ib_uverbs_recv_wr *user_wr ;
  struct ib_recv_wr *wr ;
  struct ib_recv_wr *last ;
  struct ib_recv_wr *next ;
  int sg_ind ;
  int i ;
  int ret ;
  void *tmp ;
  void *tmp___0 ;
  void *tmp___1 ;
  void *tmp___2 ;
  unsigned long tmp___3 ;
  void *tmp___4 ;
  unsigned long tmp___5 ;
  void *tmp___6 ;

  {
#line 2447
  wr = (struct ib_recv_wr *)0;
#line 2452
  if ((unsigned long )in_len < (unsigned long )(wqe_size * wr_count) + (unsigned long )sge_count * 16UL) {
#line 2454
    tmp = ERR_PTR(-22L);
#line 2454
    return ((struct ib_recv_wr *)tmp);
  } else {

  }
#line 2456
  if (wqe_size <= 15U) {
#line 2457
    tmp___0 = ERR_PTR(-22L);
#line 2457
    return ((struct ib_recv_wr *)tmp___0);
  } else {

  }
#line 2459
  tmp___1 = kmalloc((size_t )wqe_size, 208U);
#line 2459
  user_wr = (struct ib_uverbs_recv_wr *)tmp___1;
#line 2460
  if ((unsigned long )user_wr == (unsigned long )((struct ib_uverbs_recv_wr *)0)) {
#line 2461
    tmp___2 = ERR_PTR(-12L);
#line 2461
    return ((struct ib_recv_wr *)tmp___2);
  } else {

  }
#line 2463
  sg_ind = 0;
#line 2464
  last = (struct ib_recv_wr *)0;
#line 2465
  i = 0;
#line 2465
  goto ldv_32620;
  ldv_32619: 
#line 2466
  tmp___3 = copy_from_user((void *)user_wr, (void const   *)buf + (unsigned long )((u32 )i * wqe_size),
                           (unsigned long )wqe_size);
#line 2466
  if (tmp___3 != 0UL) {
#line 2468
    ret = -14;
#line 2469
    goto err;
  } else {

  }
#line 2472
  if (user_wr->num_sge + (__u32 )sg_ind > sge_count) {
#line 2473
    ret = -22;
#line 2474
    goto err;
  } else {

  }
#line 2477
  tmp___4 = kmalloc(((unsigned long )user_wr->num_sge + 2UL) * 16UL, 208U);
#line 2477
  next = (struct ib_recv_wr *)tmp___4;
#line 2480
  if ((unsigned long )next == (unsigned long )((struct ib_recv_wr *)0)) {
#line 2481
    ret = -12;
#line 2482
    goto err;
  } else {

  }
#line 2485
  if ((unsigned long )last == (unsigned long )((struct ib_recv_wr *)0)) {
#line 2486
    wr = next;
  } else {
#line 2488
    last->next = next;
  }
#line 2489
  last = next;
#line 2491
  next->next = (struct ib_recv_wr *)0;
#line 2492
  next->wr_id = user_wr->wr_id;
#line 2493
  next->num_sge = (int )user_wr->num_sge;
#line 2495
  if (next->num_sge != 0) {
#line 2496
    next->sg_list = (struct ib_sge *)next + 32U;
#line 2498
    tmp___5 = copy_from_user((void *)next->sg_list, (void const   *)(buf + ((unsigned long )(wr_count * wqe_size) + (unsigned long )sg_ind * 16UL)),
                             (unsigned long )next->num_sge * 16UL);
#line 2498
    if (tmp___5 != 0UL) {
#line 2502
      ret = -14;
#line 2503
      goto err;
    } else {

    }
#line 2505
    sg_ind = next->num_sge + sg_ind;
  } else {
#line 2507
    next->sg_list = (struct ib_sge *)0;
  }
#line 2465
  i = i + 1;
  ldv_32620: ;
#line 2465
  if ((u32 )i < wr_count) {
#line 2467
    goto ldv_32619;
  } else {

  }
#line 2510
  kfree((void const   *)user_wr);
#line 2511
  return (wr);
  err: 
#line 2514
  kfree((void const   *)user_wr);
#line 2516
  goto ldv_32623;
  ldv_32622: 
#line 2517
  next = wr->next;
#line 2518
  kfree((void const   *)wr);
#line 2519
  wr = next;
  ldv_32623: ;
#line 2516
  if ((unsigned long )wr != (unsigned long )((struct ib_recv_wr *)0)) {
#line 2518
    goto ldv_32622;
  } else {

  }
#line 2522
  tmp___6 = ERR_PTR((long )ret);
#line 2522
  return ((struct ib_recv_wr *)tmp___6);
}
}
#line 2525 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_post_recv(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_post_recv cmd ;
  struct ib_uverbs_post_recv_resp resp ;
  struct ib_recv_wr *wr ;
  struct ib_recv_wr *next ;
  struct ib_recv_wr *bad_wr ;
  struct ib_qp *qp ;
  ssize_t ret ;
  unsigned long tmp ;
  long tmp___0 ;
  bool tmp___1 ;
  int tmp___2 ;
  unsigned long tmp___3 ;

  {
#line 2533
  ret = -22L;
#line 2535
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 24UL);
#line 2535
  if (tmp != 0UL) {
#line 2536
    return (-14L);
  } else {

  }
#line 2538
  wr = ib_uverbs_unmarshall_recv(buf + 24UL, (int )((unsigned int )in_len - 24U),
                                 cmd.wr_count, cmd.sge_count, cmd.wqe_size);
#line 2541
  tmp___1 = IS_ERR((void const   *)wr);
#line 2541
  if ((int )tmp___1) {
#line 2542
    tmp___0 = PTR_ERR((void const   *)wr);
#line 2542
    return (tmp___0);
  } else {

  }
#line 2544
  qp = idr_read_qp((int )cmd.qp_handle, file->ucontext);
#line 2545
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2546
    goto out;
  } else {

  }
#line 2548
  resp.bad_wr = 0U;
#line 2549
  tmp___2 = (*((qp->device)->post_recv))(qp->real_qp, wr, & bad_wr);
#line 2549
  ret = (ssize_t )tmp___2;
#line 2551
  put_qp_read(qp);
#line 2553
  if (ret != 0L) {
#line 2554
    next = wr;
#line 2554
    goto ldv_32641;
    ldv_32640: 
#line 2555
    resp.bad_wr = resp.bad_wr + 1U;
#line 2556
    if ((unsigned long )next == (unsigned long )bad_wr) {
#line 2557
      goto ldv_32639;
    } else {

    }
#line 2554
    next = next->next;
    ldv_32641: ;
#line 2554
    if ((unsigned long )next != (unsigned long )((struct ib_recv_wr *)0)) {
#line 2556
      goto ldv_32640;
    } else {

    }
    ldv_32639: ;
  } else {

  }
#line 2560
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 2560
  if (tmp___3 != 0UL) {
#line 2562
    ret = -14L;
  } else {

  }
  out: ;
#line 2565
  goto ldv_32643;
  ldv_32642: 
#line 2566
  next = wr->next;
#line 2567
  kfree((void const   *)wr);
#line 2568
  wr = next;
  ldv_32643: ;
#line 2565
  if ((unsigned long )wr != (unsigned long )((struct ib_recv_wr *)0)) {
#line 2567
    goto ldv_32642;
  } else {

  }

#line 2571
  return (ret == 0L ? (ssize_t )in_len : ret);
}
}
#line 2574 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_post_srq_recv(struct ib_uverbs_file *file , char const   *buf ,
                                int in_len , int out_len ) 
{ 
  struct ib_uverbs_post_srq_recv cmd ;
  struct ib_uverbs_post_srq_recv_resp resp ;
  struct ib_recv_wr *wr ;
  struct ib_recv_wr *next ;
  struct ib_recv_wr *bad_wr ;
  struct ib_srq *srq ;
  ssize_t ret ;
  unsigned long tmp ;
  long tmp___0 ;
  bool tmp___1 ;
  int tmp___2 ;
  unsigned long tmp___3 ;

  {
#line 2582
  ret = -22L;
#line 2584
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 24UL);
#line 2584
  if (tmp != 0UL) {
#line 2585
    return (-14L);
  } else {

  }
#line 2587
  wr = ib_uverbs_unmarshall_recv(buf + 24UL, (int )((unsigned int )in_len - 24U),
                                 cmd.wr_count, cmd.sge_count, cmd.wqe_size);
#line 2590
  tmp___1 = IS_ERR((void const   *)wr);
#line 2590
  if ((int )tmp___1) {
#line 2591
    tmp___0 = PTR_ERR((void const   *)wr);
#line 2591
    return (tmp___0);
  } else {

  }
#line 2593
  srq = idr_read_srq((int )cmd.srq_handle, file->ucontext);
#line 2594
  if ((unsigned long )srq == (unsigned long )((struct ib_srq *)0)) {
#line 2595
    goto out;
  } else {

  }
#line 2597
  resp.bad_wr = 0U;
#line 2598
  tmp___2 = (*((srq->device)->post_srq_recv))(srq, wr, & bad_wr);
#line 2598
  ret = (ssize_t )tmp___2;
#line 2600
  put_srq_read(srq);
#line 2602
  if (ret != 0L) {
#line 2603
    next = wr;
#line 2603
    goto ldv_32661;
    ldv_32660: 
#line 2604
    resp.bad_wr = resp.bad_wr + 1U;
#line 2605
    if ((unsigned long )next == (unsigned long )bad_wr) {
#line 2606
      goto ldv_32659;
    } else {

    }
#line 2603
    next = next->next;
    ldv_32661: ;
#line 2603
    if ((unsigned long )next != (unsigned long )((struct ib_recv_wr *)0)) {
#line 2605
      goto ldv_32660;
    } else {

    }
    ldv_32659: ;
  } else {

  }
#line 2609
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 2609
  if (tmp___3 != 0UL) {
#line 2611
    ret = -14L;
  } else {

  }
  out: ;
#line 2614
  goto ldv_32663;
  ldv_32662: 
#line 2615
  next = wr->next;
#line 2616
  kfree((void const   *)wr);
#line 2617
  wr = next;
  ldv_32663: ;
#line 2614
  if ((unsigned long )wr != (unsigned long )((struct ib_recv_wr *)0)) {
#line 2616
    goto ldv_32662;
  } else {

  }

#line 2620
  return (ret == 0L ? (ssize_t )in_len : ret);
}
}
#line 2623 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_ah(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_create_ah cmd ;
  struct ib_uverbs_create_ah_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_pd *pd ;
  struct ib_ah *ah ;
  struct ib_ah_attr attr ;
  int ret ;
  unsigned long tmp ;
  void *tmp___0 ;
  long tmp___1 ;
  bool tmp___2 ;
  unsigned long tmp___3 ;

  {
#line 2635
  if ((unsigned int )out_len <= 3U) {
#line 2636
    return (-28L);
  } else {

  }
#line 2638
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 56UL);
#line 2638
  if (tmp != 0UL) {
#line 2639
    return (-14L);
  } else {

  }
#line 2641
  tmp___0 = kmalloc(216UL, 208U);
#line 2641
  uobj = (struct ib_uobject *)tmp___0;
#line 2642
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 2643
    return (-12L);
  } else {

  }
#line 2645
  init_uobj(uobj, cmd.user_handle, file->ucontext, & ah_lock_class);
#line 2646
  down_write(& uobj->mutex);
#line 2648
  pd = idr_read_pd((int )cmd.pd_handle, file->ucontext);
#line 2649
  if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0)) {
#line 2650
    ret = -22;
#line 2651
    goto err;
  } else {

  }
#line 2654
  attr.dlid = cmd.attr.dlid;
#line 2655
  attr.sl = cmd.attr.sl;
#line 2656
  attr.src_path_bits = cmd.attr.src_path_bits;
#line 2657
  attr.static_rate = cmd.attr.static_rate;
#line 2658
  attr.ah_flags = (unsigned int )cmd.attr.is_global != 0U;
#line 2659
  attr.port_num = cmd.attr.port_num;
#line 2660
  attr.grh.flow_label = cmd.attr.grh.flow_label;
#line 2661
  attr.grh.sgid_index = cmd.attr.grh.sgid_index;
#line 2662
  attr.grh.hop_limit = cmd.attr.grh.hop_limit;
#line 2663
  attr.grh.traffic_class = cmd.attr.grh.traffic_class;
#line 2664
  attr.vlan_id = 0U;
#line 2665
  memset((void *)(& attr.dmac), 0, 6UL);
#line 2666
  memcpy((void *)(& attr.grh.dgid.raw), (void const   *)(& cmd.attr.grh.dgid), 16UL);
#line 2668
  ah = ib_create_ah(pd, & attr);
#line 2669
  tmp___2 = IS_ERR((void const   *)ah);
#line 2669
  if ((int )tmp___2) {
#line 2670
    tmp___1 = PTR_ERR((void const   *)ah);
#line 2670
    ret = (int )tmp___1;
#line 2671
    goto err_put;
  } else {

  }
#line 2674
  ah->uobject = uobj;
#line 2675
  uobj->object = (void *)ah;
#line 2677
  ret = idr_add_uobj(& ib_uverbs_ah_idr, uobj);
#line 2678
  if (ret != 0) {
#line 2679
    goto err_destroy;
  } else {

  }
#line 2681
  resp.ah_handle = (__u32 )uobj->id;
#line 2683
  tmp___3 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 2683
  if (tmp___3 != 0UL) {
#line 2685
    ret = -14;
#line 2686
    goto err_copy;
  } else {

  }
#line 2689
  put_pd_read(pd);
#line 2691
  mutex_lock_nested(& file->mutex, 0U);
#line 2692
  list_add_tail(& uobj->list, & (file->ucontext)->ah_list);
#line 2693
  mutex_unlock(& file->mutex);
#line 2695
  uobj->live = 1;
#line 2697
  up_write(& uobj->mutex);
#line 2699
  return ((ssize_t )in_len);
  err_copy: 
#line 2702
  idr_remove_uobj(& ib_uverbs_ah_idr, uobj);
  err_destroy: 
#line 2705
  ib_destroy_ah(ah);
  err_put: 
#line 2708
  put_pd_read(pd);
  err: 
#line 2711
  put_uobj_write(uobj);
#line 2712
  return ((ssize_t )ret);
}
}
#line 2715 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_destroy_ah(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_destroy_ah cmd ;
  struct ib_ah *ah ;
  struct ib_uobject *uobj ;
  int ret ;
  unsigned long tmp ;

  {
#line 2723
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 4UL);
#line 2723
  if (tmp != 0UL) {
#line 2724
    return (-14L);
  } else {

  }
#line 2726
  uobj = idr_write_uobj(& ib_uverbs_ah_idr, (int )cmd.ah_handle, file->ucontext);
#line 2727
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 2728
    return (-22L);
  } else {

  }
#line 2729
  ah = (struct ib_ah *)uobj->object;
#line 2731
  ret = ib_destroy_ah(ah);
#line 2732
  if (ret == 0) {
#line 2733
    uobj->live = 0;
  } else {

  }
#line 2735
  put_uobj_write(uobj);
#line 2737
  if (ret != 0) {
#line 2738
    return ((ssize_t )ret);
  } else {

  }
#line 2740
  idr_remove_uobj(& ib_uverbs_ah_idr, uobj);
#line 2742
  mutex_lock_nested(& file->mutex, 0U);
#line 2743
  list_del(& uobj->list);
#line 2744
  mutex_unlock(& file->mutex);
#line 2746
  put_uobj(uobj);
#line 2748
  return ((ssize_t )in_len);
}
}
#line 2751 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_attach_mcast(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) 
{ 
  struct ib_uverbs_attach_mcast cmd ;
  struct ib_qp *qp ;
  struct ib_uqp_object *obj ;
  struct ib_uverbs_mcast_entry *mcast ;
  int ret ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  int tmp___0 ;
  struct list_head  const  *__mptr___1 ;
  void *tmp___1 ;

  {
#line 2761
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 24UL);
#line 2761
  if (tmp != 0UL) {
#line 2762
    return (-14L);
  } else {

  }
#line 2764
  qp = idr_write_qp((int )cmd.qp_handle, file->ucontext);
#line 2765
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2766
    return (-22L);
  } else {

  }
#line 2768
  __mptr = (struct ib_uobject  const  *)qp->uobject;
#line 2768
  obj = (struct ib_uqp_object *)__mptr;
#line 2770
  __mptr___0 = (struct list_head  const  *)obj->mcast_list.next;
#line 2770
  mcast = (struct ib_uverbs_mcast_entry *)__mptr___0;
#line 2770
  goto ldv_32711;
  ldv_32710: ;
#line 2771
  if ((int )cmd.mlid == (int )mcast->lid) {
#line 2771
    tmp___0 = memcmp((void const   *)(& cmd.gid), (void const   *)(& mcast->gid.raw),
                     16UL);
#line 2771
    if (tmp___0 == 0) {
#line 2773
      ret = 0;
#line 2774
      goto out_put;
    } else {

    }
  } else {

  }
#line 2770
  __mptr___1 = (struct list_head  const  *)mcast->list.next;
#line 2770
  mcast = (struct ib_uverbs_mcast_entry *)__mptr___1;
  ldv_32711: ;
#line 2770
  if ((unsigned long )(& mcast->list) != (unsigned long )(& obj->mcast_list)) {
#line 2772
    goto ldv_32710;
  } else {

  }
#line 2777
  tmp___1 = kmalloc(40UL, 208U);
#line 2777
  mcast = (struct ib_uverbs_mcast_entry *)tmp___1;
#line 2778
  if ((unsigned long )mcast == (unsigned long )((struct ib_uverbs_mcast_entry *)0)) {
#line 2779
    ret = -12;
#line 2780
    goto out_put;
  } else {

  }
#line 2783
  mcast->lid = cmd.mlid;
#line 2784
  memcpy((void *)(& mcast->gid.raw), (void const   *)(& cmd.gid), 16UL);
#line 2786
  ret = ib_attach_mcast(qp, & mcast->gid, (int )cmd.mlid);
#line 2787
  if (ret == 0) {
#line 2788
    list_add_tail(& mcast->list, & obj->mcast_list);
  } else {
#line 2790
    kfree((void const   *)mcast);
  }
  out_put: 
#line 2793
  put_qp_write(qp);
#line 2795
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 2798 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_detach_mcast(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                               int out_len ) 
{ 
  struct ib_uverbs_detach_mcast cmd ;
  struct ib_uqp_object *obj ;
  struct ib_qp *qp ;
  struct ib_uverbs_mcast_entry *mcast ;
  int ret ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  struct list_head  const  *__mptr___0 ;
  int tmp___0 ;
  struct list_head  const  *__mptr___1 ;

  {
#line 2806
  ret = -22;
#line 2808
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 24UL);
#line 2808
  if (tmp != 0UL) {
#line 2809
    return (-14L);
  } else {

  }
#line 2811
  qp = idr_write_qp((int )cmd.qp_handle, file->ucontext);
#line 2812
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2813
    return (-22L);
  } else {

  }
#line 2815
  ret = ib_detach_mcast(qp, (union ib_gid *)(& cmd.gid), (int )cmd.mlid);
#line 2816
  if (ret != 0) {
#line 2817
    goto out_put;
  } else {

  }
#line 2819
  __mptr = (struct ib_uobject  const  *)qp->uobject;
#line 2819
  obj = (struct ib_uqp_object *)__mptr;
#line 2821
  __mptr___0 = (struct list_head  const  *)obj->mcast_list.next;
#line 2821
  mcast = (struct ib_uverbs_mcast_entry *)__mptr___0;
#line 2821
  goto ldv_32733;
  ldv_32732: ;
#line 2822
  if ((int )cmd.mlid == (int )mcast->lid) {
#line 2822
    tmp___0 = memcmp((void const   *)(& cmd.gid), (void const   *)(& mcast->gid.raw),
                     16UL);
#line 2822
    if (tmp___0 == 0) {
#line 2824
      list_del(& mcast->list);
#line 2825
      kfree((void const   *)mcast);
#line 2826
      goto ldv_32731;
    } else {

    }
  } else {

  }
#line 2821
  __mptr___1 = (struct list_head  const  *)mcast->list.next;
#line 2821
  mcast = (struct ib_uverbs_mcast_entry *)__mptr___1;
  ldv_32733: ;
#line 2821
  if ((unsigned long )(& mcast->list) != (unsigned long )(& obj->mcast_list)) {
#line 2823
    goto ldv_32732;
  } else {

  }
  ldv_32731: ;
  out_put: 
#line 2830
  put_qp_write(qp);
#line 2832
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 2835 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec , union ib_flow_spec *ib_spec ) 
{ 


  {
#line 2838
  if ((unsigned int )kern_spec->__annonCompField78.__annonCompField77.__annonCompField76.reserved != 0U) {
#line 2839
    return (-22);
  } else {

  }
#line 2841
  ib_spec->__annonCompField69.type = (enum ib_flow_spec_type )kern_spec->__annonCompField78.__annonCompField77.__annonCompField76.type;
#line 2843
  switch ((unsigned int )ib_spec->__annonCompField69.type) {
  case 32U: 
#line 2845
  ib_spec->eth.size = 40U;
#line 2846
  if ((int )ib_spec->eth.size != (int )kern_spec->__annonCompField78.eth.__annonCompField71.__annonCompField70.size) {
#line 2847
    return (-22);
  } else {

  }
#line 2848
  memcpy((void *)(& ib_spec->eth.val), (void const   *)(& kern_spec->__annonCompField78.eth.val),
           16UL);
#line 2850
  memcpy((void *)(& ib_spec->eth.mask), (void const   *)(& kern_spec->__annonCompField78.eth.mask),
           16UL);
#line 2852
  goto ldv_32739;
  case 48U: 
#line 2854
  ib_spec->ipv4.size = 24U;
#line 2855
  if ((int )ib_spec->ipv4.size != (int )kern_spec->__annonCompField78.ipv4.__annonCompField73.__annonCompField72.size) {
#line 2856
    return (-22);
  } else {

  }
#line 2857
  memcpy((void *)(& ib_spec->ipv4.val), (void const   *)(& kern_spec->__annonCompField78.ipv4.val),
           8UL);
#line 2859
  memcpy((void *)(& ib_spec->ipv4.mask), (void const   *)(& kern_spec->__annonCompField78.ipv4.mask),
           8UL);
#line 2861
  goto ldv_32739;
  case 64U: ;
  case 65U: 
#line 2864
  ib_spec->tcp_udp.size = 16U;
#line 2865
  if ((int )ib_spec->tcp_udp.size != (int )kern_spec->__annonCompField78.tcp_udp.__annonCompField75.__annonCompField74.size) {
#line 2866
    return (-22);
  } else {

  }
#line 2867
  memcpy((void *)(& ib_spec->tcp_udp.val), (void const   *)(& kern_spec->__annonCompField78.tcp_udp.val),
           4UL);
#line 2869
  memcpy((void *)(& ib_spec->tcp_udp.mask), (void const   *)(& kern_spec->__annonCompField78.tcp_udp.mask),
           4UL);
#line 2871
  goto ldv_32739;
  default: ;
#line 2873
  return (-22);
  }
  ldv_32739: ;
#line 2875
  return (0);
}
}
#line 2878 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                             struct ib_udata *uhw ) 
{ 
  struct ib_uverbs_create_flow cmd ;
  struct ib_uverbs_create_flow_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_flow *flow_id ;
  struct ib_uverbs_flow_attr *kern_flow_attr ;
  struct ib_flow_attr *flow_attr ;
  struct ib_qp *qp ;
  int err ;
  void *kern_spec ;
  void *ib_spec ;
  int i ;
  bool tmp ;
  int tmp___0 ;
  bool tmp___1 ;
  int tmp___2 ;
  void *tmp___3 ;
  void *tmp___4 ;
  void *tmp___5 ;
  long tmp___6 ;
  bool tmp___7 ;

  {
#line 2889
  err = 0;
#line 2894
  if (ucore->inlen <= 23UL) {
#line 2895
    return (-22);
  } else {

  }
#line 2897
  if (ucore->outlen <= 7UL) {
#line 2898
    return (-28);
  } else {

  }
#line 2900
  err = ib_copy_from_udata((void *)(& cmd), ucore, 24UL);
#line 2901
  if (err != 0) {
#line 2902
    return (err);
  } else {

  }
#line 2904
  ucore->inbuf = ucore->inbuf + 24UL;
#line 2905
  ucore->inlen = ucore->inlen - 24UL;
#line 2907
  if (cmd.comp_mask != 0U) {
#line 2908
    return (-22);
  } else {

  }
#line 2910
  if (cmd.flow_attr.type == 3U) {
#line 2910
    tmp = capable(12);
#line 2910
    if (tmp) {
#line 2910
      tmp___0 = 0;
    } else {
#line 2910
      tmp___0 = 1;
    }
#line 2910
    if (tmp___0) {
#line 2912
      return (-1);
    } else {
#line 2910
      goto _L;
    }
  } else {
    _L: /* CIL Label */ 
#line 2910
    tmp___1 = capable(13);
#line 2910
    if (tmp___1) {
#line 2910
      tmp___2 = 0;
    } else {
#line 2910
      tmp___2 = 1;
    }
#line 2910
    if (tmp___2) {
#line 2912
      return (-1);
    } else {

    }
  }
#line 2914
  if ((unsigned int )cmd.flow_attr.num_of_specs > 4U) {
#line 2915
    return (-22);
  } else {

  }
#line 2917
  if ((size_t )cmd.flow_attr.size > ucore->inlen || (unsigned long )cmd.flow_attr.size > (unsigned long )cmd.flow_attr.num_of_specs * 40UL) {
#line 2920
    return (-22);
  } else {

  }
#line 2922
  if ((unsigned int )cmd.flow_attr.reserved[0] != 0U || (unsigned int )cmd.flow_attr.reserved[1] != 0U) {
#line 2924
    return (-22);
  } else {

  }
#line 2926
  if ((unsigned int )cmd.flow_attr.num_of_specs != 0U) {
#line 2927
    tmp___3 = kmalloc((unsigned long )cmd.flow_attr.size + 16UL, 208U);
#line 2927
    kern_flow_attr = (struct ib_uverbs_flow_attr *)tmp___3;
#line 2929
    if ((unsigned long )kern_flow_attr == (unsigned long )((struct ib_uverbs_flow_attr *)0)) {
#line 2930
      return (-12);
    } else {

    }
#line 2932
    memcpy((void *)kern_flow_attr, (void const   *)(& cmd.flow_attr), 16UL);
#line 2933
    err = ib_copy_from_udata((void *)kern_flow_attr + 1U, ucore, (size_t )cmd.flow_attr.size);
#line 2935
    if (err != 0) {
#line 2936
      goto err_free_attr;
    } else {

    }
  } else {
#line 2938
    kern_flow_attr = & cmd.flow_attr;
  }
#line 2941
  tmp___4 = kmalloc(216UL, 208U);
#line 2941
  uobj = (struct ib_uobject *)tmp___4;
#line 2942
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 2943
    err = -12;
#line 2944
    goto err_free_attr;
  } else {

  }
#line 2946
  init_uobj(uobj, 0ULL, file->ucontext, & rule_lock_class);
#line 2947
  down_write(& uobj->mutex);
#line 2949
  qp = idr_read_qp((int )cmd.qp_handle, file->ucontext);
#line 2950
  if ((unsigned long )qp == (unsigned long )((struct ib_qp *)0)) {
#line 2951
    err = -22;
#line 2952
    goto err_uobj;
  } else {

  }
#line 2955
  tmp___5 = kmalloc((unsigned long )cmd.flow_attr.size + 16UL, 208U);
#line 2955
  flow_attr = (struct ib_flow_attr *)tmp___5;
#line 2956
  if ((unsigned long )flow_attr == (unsigned long )((struct ib_flow_attr *)0)) {
#line 2957
    err = -12;
#line 2958
    goto err_put;
  } else {

  }
#line 2961
  flow_attr->type = (enum ib_flow_attr_type )kern_flow_attr->type;
#line 2962
  flow_attr->priority = kern_flow_attr->priority;
#line 2963
  flow_attr->num_of_specs = kern_flow_attr->num_of_specs;
#line 2964
  flow_attr->port = kern_flow_attr->port;
#line 2965
  flow_attr->flags = kern_flow_attr->flags;
#line 2966
  flow_attr->size = 16U;
#line 2968
  kern_spec = (void *)kern_flow_attr + 1U;
#line 2969
  ib_spec = (void *)flow_attr + 1U;
#line 2970
  i = 0;
#line 2970
  goto ldv_32765;
  ldv_32764: 
#line 2974
  err = kern_spec_to_ib_spec((struct ib_uverbs_flow_spec *)kern_spec, (union ib_flow_spec *)ib_spec);
#line 2975
  if (err != 0) {
#line 2976
    goto err_free;
  } else {

  }
#line 2977
  flow_attr->size = (int )flow_attr->size + (int )((union ib_flow_spec *)ib_spec)->__annonCompField69.size;
#line 2979
  cmd.flow_attr.size = (int )cmd.flow_attr.size - (int )((struct ib_uverbs_flow_spec *)kern_spec)->__annonCompField78.__annonCompField77.__annonCompField76.size;
#line 2980
  kern_spec = kern_spec + (unsigned long )((struct ib_uverbs_flow_spec *)kern_spec)->__annonCompField78.__annonCompField77.__annonCompField76.size;
#line 2981
  ib_spec = ib_spec + (unsigned long )((union ib_flow_spec *)ib_spec)->__annonCompField69.size;
#line 2973
  i = i + 1;
  ldv_32765: ;
#line 2970
  if (((int )flow_attr->num_of_specs > i && (unsigned int )cmd.flow_attr.size > 6U) && (int )cmd.flow_attr.size >= (int )((struct ib_uverbs_flow_spec *)kern_spec)->__annonCompField78.__annonCompField77.__annonCompField76.size) {
#line 2975
    goto ldv_32764;
  } else {

  }

#line 2983
  if ((unsigned int )cmd.flow_attr.size != 0U || (int )flow_attr->num_of_specs != i) {
#line 2984
    printk("\fcreate flow failed, flow %d: %d bytes left from uverb cmd\n", i, (int )cmd.flow_attr.size);
#line 2986
    err = -22;
#line 2987
    goto err_free;
  } else {

  }
#line 2989
  flow_id = ib_create_flow(qp, flow_attr, 0);
#line 2990
  tmp___7 = IS_ERR((void const   *)flow_id);
#line 2990
  if ((int )tmp___7) {
#line 2991
    tmp___6 = PTR_ERR((void const   *)flow_id);
#line 2991
    err = (int )tmp___6;
#line 2992
    goto err_free;
  } else {

  }
#line 2994
  flow_id->qp = qp;
#line 2995
  flow_id->uobject = uobj;
#line 2996
  uobj->object = (void *)flow_id;
#line 2998
  err = idr_add_uobj(& ib_uverbs_rule_idr, uobj);
#line 2999
  if (err != 0) {
#line 3000
    goto destroy_flow;
  } else {

  }
#line 3002
  memset((void *)(& resp), 0, 8UL);
#line 3003
  resp.flow_handle = (__u32 )uobj->id;
#line 3005
  err = ib_copy_to_udata(ucore, (void *)(& resp), 8UL);
#line 3007
  if (err != 0) {
#line 3008
    goto err_copy;
  } else {

  }
#line 3010
  put_qp_read(qp);
#line 3011
  mutex_lock_nested(& file->mutex, 0U);
#line 3012
  list_add_tail(& uobj->list, & (file->ucontext)->rule_list);
#line 3013
  mutex_unlock(& file->mutex);
#line 3015
  uobj->live = 1;
#line 3017
  up_write(& uobj->mutex);
#line 3018
  kfree((void const   *)flow_attr);
#line 3019
  if ((unsigned int )cmd.flow_attr.num_of_specs != 0U) {
#line 3020
    kfree((void const   *)kern_flow_attr);
  } else {

  }
#line 3021
  return (0);
  err_copy: 
#line 3023
  idr_remove_uobj(& ib_uverbs_rule_idr, uobj);
  destroy_flow: 
#line 3025
  ib_destroy_flow(flow_id);
  err_free: 
#line 3027
  kfree((void const   *)flow_attr);
  err_put: 
#line 3029
  put_qp_read(qp);
  err_uobj: 
#line 3031
  put_uobj_write(uobj);
  err_free_attr: ;
#line 3033
  if ((unsigned int )cmd.flow_attr.num_of_specs != 0U) {
#line 3034
    kfree((void const   *)kern_flow_attr);
  } else {

  }
#line 3035
  return (err);
}
}
#line 3038 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
int ib_uverbs_ex_destroy_flow(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                              struct ib_udata *uhw ) 
{ 
  struct ib_uverbs_destroy_flow cmd ;
  struct ib_flow *flow_id ;
  struct ib_uobject *uobj ;
  int ret ;

  {
#line 3047
  if (ucore->inlen <= 7UL) {
#line 3048
    return (-22);
  } else {

  }
#line 3050
  ret = ib_copy_from_udata((void *)(& cmd), ucore, 8UL);
#line 3051
  if (ret != 0) {
#line 3052
    return (ret);
  } else {

  }
#line 3054
  if (cmd.comp_mask != 0U) {
#line 3055
    return (-22);
  } else {

  }
#line 3057
  uobj = idr_write_uobj(& ib_uverbs_rule_idr, (int )cmd.flow_handle, file->ucontext);
#line 3059
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 3060
    return (-22);
  } else {

  }
#line 3061
  flow_id = (struct ib_flow *)uobj->object;
#line 3063
  ret = ib_destroy_flow(flow_id);
#line 3064
  if (ret == 0) {
#line 3065
    uobj->live = 0;
  } else {

  }
#line 3067
  put_uobj_write(uobj);
#line 3069
  idr_remove_uobj(& ib_uverbs_rule_idr, uobj);
#line 3071
  mutex_lock_nested(& file->mutex, 0U);
#line 3072
  list_del(& uobj->list);
#line 3073
  mutex_unlock(& file->mutex);
#line 3075
  put_uobj(uobj);
#line 3077
  return (ret);
}
}
#line 3080 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
static int __uverbs_create_xsrq(struct ib_uverbs_file *file , struct ib_uverbs_create_xsrq *cmd ,
                                struct ib_udata *udata ) 
{ 
  struct ib_uverbs_create_srq_resp resp ;
  struct ib_usrq_object *obj ;
  struct ib_pd *pd ;
  struct ib_srq *srq ;
  struct ib_uobject *xrcd_uobj ;
  struct ib_srq_init_attr attr ;
  int ret ;
  void *tmp ;
  struct ib_uobject  const  *__mptr ;
  long tmp___0 ;
  bool tmp___1 ;
  unsigned long tmp___2 ;

  {
#line 3088
  xrcd_uobj = xrcd_uobj;
#line 3092
  tmp = kmalloc(248UL, 208U);
#line 3092
  obj = (struct ib_usrq_object *)tmp;
#line 3093
  if ((unsigned long )obj == (unsigned long )((struct ib_usrq_object *)0)) {
#line 3094
    return (-12);
  } else {

  }
#line 3096
  init_uobj(& obj->uevent.uobject, cmd->user_handle, file->ucontext, & srq_lock_class);
#line 3097
  down_write(& obj->uevent.uobject.mutex);
#line 3099
  if (cmd->srq_type == 1U) {
#line 3100
    attr.ext.xrc.xrcd = idr_read_xrcd((int )cmd->xrcd_handle, file->ucontext, & xrcd_uobj);
#line 3101
    if ((unsigned long )attr.ext.xrc.xrcd == (unsigned long )((struct ib_xrcd *)0)) {
#line 3102
      ret = -22;
#line 3103
      goto err;
    } else {

    }
#line 3106
    __mptr = (struct ib_uobject  const  *)xrcd_uobj;
#line 3106
    obj->uxrcd = (struct ib_uxrcd_object *)__mptr;
#line 3107
    atomic_inc(& (obj->uxrcd)->refcnt);
#line 3109
    attr.ext.xrc.cq = idr_read_cq((int )cmd->cq_handle, file->ucontext, 0);
#line 3110
    if ((unsigned long )attr.ext.xrc.cq == (unsigned long )((struct ib_cq *)0)) {
#line 3111
      ret = -22;
#line 3112
      goto err_put_xrcd;
    } else {

    }
  } else {

  }
#line 3116
  pd = idr_read_pd((int )cmd->pd_handle, file->ucontext);
#line 3117
  if ((unsigned long )pd == (unsigned long )((struct ib_pd *)0)) {
#line 3118
    ret = -22;
#line 3119
    goto err_put_cq;
  } else {

  }
#line 3122
  attr.event_handler = & ib_uverbs_srq_event_handler;
#line 3123
  attr.srq_context = (void *)file;
#line 3124
  attr.srq_type = (enum ib_srq_type )cmd->srq_type;
#line 3125
  attr.attr.max_wr = cmd->max_wr;
#line 3126
  attr.attr.max_sge = cmd->max_sge;
#line 3127
  attr.attr.srq_limit = cmd->srq_limit;
#line 3129
  obj->uevent.events_reported = 0U;
#line 3130
  INIT_LIST_HEAD(& obj->uevent.event_list);
#line 3132
  srq = (*((pd->device)->create_srq))(pd, & attr, udata);
#line 3133
  tmp___1 = IS_ERR((void const   *)srq);
#line 3133
  if ((int )tmp___1) {
#line 3134
    tmp___0 = PTR_ERR((void const   *)srq);
#line 3134
    ret = (int )tmp___0;
#line 3135
    goto err_put;
  } else {

  }
#line 3138
  srq->device = pd->device;
#line 3139
  srq->pd = pd;
#line 3140
  srq->srq_type = (enum ib_srq_type )cmd->srq_type;
#line 3141
  srq->uobject = & obj->uevent.uobject;
#line 3142
  srq->event_handler = attr.event_handler;
#line 3143
  srq->srq_context = attr.srq_context;
#line 3145
  if (cmd->srq_type == 1U) {
#line 3146
    srq->ext.xrc.cq = attr.ext.xrc.cq;
#line 3147
    srq->ext.xrc.xrcd = attr.ext.xrc.xrcd;
#line 3148
    atomic_inc(& (attr.ext.xrc.cq)->usecnt);
#line 3149
    atomic_inc(& (attr.ext.xrc.xrcd)->usecnt);
  } else {

  }
#line 3152
  atomic_inc(& pd->usecnt);
#line 3153
  atomic_set(& srq->usecnt, 0);
#line 3155
  obj->uevent.uobject.object = (void *)srq;
#line 3156
  ret = idr_add_uobj(& ib_uverbs_srq_idr, & obj->uevent.uobject);
#line 3157
  if (ret != 0) {
#line 3158
    goto err_destroy;
  } else {

  }
#line 3160
  memset((void *)(& resp), 0, 16UL);
#line 3161
  resp.srq_handle = (__u32 )obj->uevent.uobject.id;
#line 3162
  resp.max_wr = attr.attr.max_wr;
#line 3163
  resp.max_sge = attr.attr.max_sge;
#line 3164
  if (cmd->srq_type == 1U) {
#line 3165
    resp.srqn = srq->ext.xrc.srq_num;
  } else {

  }
#line 3167
  tmp___2 = copy_to_user((void *)cmd->response, (void const   *)(& resp), 16UL);
#line 3167
  if (tmp___2 != 0UL) {
#line 3169
    ret = -14;
#line 3170
    goto err_copy;
  } else {

  }
#line 3173
  if (cmd->srq_type == 1U) {
#line 3174
    put_uobj_read(xrcd_uobj);
#line 3175
    put_cq_read(attr.ext.xrc.cq);
  } else {

  }
#line 3177
  put_pd_read(pd);
#line 3179
  mutex_lock_nested(& file->mutex, 0U);
#line 3180
  list_add_tail(& obj->uevent.uobject.list, & (file->ucontext)->srq_list);
#line 3181
  mutex_unlock(& file->mutex);
#line 3183
  obj->uevent.uobject.live = 1;
#line 3185
  up_write(& obj->uevent.uobject.mutex);
#line 3187
  return (0);
  err_copy: 
#line 3190
  idr_remove_uobj(& ib_uverbs_srq_idr, & obj->uevent.uobject);
  err_destroy: 
#line 3193
  ib_destroy_srq(srq);
  err_put: 
#line 3196
  put_pd_read(pd);
  err_put_cq: ;
#line 3199
  if (cmd->srq_type == 1U) {
#line 3200
    put_cq_read(attr.ext.xrc.cq);
  } else {

  }
  err_put_xrcd: ;
#line 3203
  if (cmd->srq_type == 1U) {
#line 3204
    atomic_dec(& (obj->uxrcd)->refcnt);
#line 3205
    put_uobj_read(xrcd_uobj);
  } else {

  }
  err: 
#line 3209
  put_uobj_write(& obj->uevent.uobject);
#line 3210
  return (ret);
}
}
#line 3213 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_create_srq cmd ;
  struct ib_uverbs_create_xsrq xcmd ;
  struct ib_udata udata ;
  int ret ;
  unsigned long tmp ;

  {
#line 3223
  if ((unsigned int )out_len <= 15U) {
#line 3224
    return (-28L);
  } else {

  }
#line 3226
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 32UL);
#line 3226
  if (tmp != 0UL) {
#line 3227
    return (-14L);
  } else {

  }
#line 3229
  xcmd.response = cmd.response;
#line 3230
  xcmd.user_handle = cmd.user_handle;
#line 3231
  xcmd.srq_type = 0U;
#line 3232
  xcmd.pd_handle = cmd.pd_handle;
#line 3233
  xcmd.max_wr = cmd.max_wr;
#line 3234
  xcmd.max_sge = cmd.max_sge;
#line 3235
  xcmd.srq_limit = cmd.srq_limit;
#line 3237
  udata.inbuf = (void const   *)buf + 32U;
#line 3237
  udata.outbuf = (void *)((unsigned long )cmd.response + 16UL);
#line 3237
  udata.inlen = (unsigned long )in_len - 32UL;
#line 3237
  udata.outlen = (unsigned long )out_len - 16UL;
#line 3241
  ret = __uverbs_create_xsrq(file, & xcmd, & udata);
#line 3242
  if (ret != 0) {
#line 3243
    return ((ssize_t )ret);
  } else {

  }
#line 3245
  return ((ssize_t )in_len);
}
}
#line 3248 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_create_xsrq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) 
{ 
  struct ib_uverbs_create_xsrq cmd ;
  struct ib_udata udata ;
  int ret ;
  unsigned long tmp ;

  {
#line 3256
  if ((unsigned int )out_len <= 15U) {
#line 3257
    return (-28L);
  } else {

  }
#line 3259
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 48UL);
#line 3259
  if (tmp != 0UL) {
#line 3260
    return (-14L);
  } else {

  }
#line 3262
  udata.inbuf = (void const   *)buf + 48U;
#line 3262
  udata.outbuf = (void *)((unsigned long )cmd.response + 16UL);
#line 3262
  udata.inlen = (unsigned long )in_len - 48UL;
#line 3262
  udata.outlen = (unsigned long )out_len - 16UL;
#line 3266
  ret = __uverbs_create_xsrq(file, & cmd, & udata);
#line 3267
  if (ret != 0) {
#line 3268
    return ((ssize_t )ret);
  } else {

  }
#line 3270
  return ((ssize_t )in_len);
}
}
#line 3273 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_modify_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                             int out_len ) 
{ 
  struct ib_uverbs_modify_srq cmd ;
  struct ib_udata udata ;
  struct ib_srq *srq ;
  struct ib_srq_attr attr ;
  int ret ;
  unsigned long tmp ;

  {
#line 3283
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 3283
  if (tmp != 0UL) {
#line 3284
    return (-14L);
  } else {

  }
#line 3286
  udata.inbuf = (void const   *)buf + 16U;
#line 3286
  udata.outbuf = (void *)0;
#line 3286
  udata.inlen = (unsigned long )in_len - 16UL;
#line 3286
  udata.outlen = (size_t )out_len;
#line 3289
  srq = idr_read_srq((int )cmd.srq_handle, file->ucontext);
#line 3290
  if ((unsigned long )srq == (unsigned long )((struct ib_srq *)0)) {
#line 3291
    return (-22L);
  } else {

  }
#line 3293
  attr.max_wr = cmd.max_wr;
#line 3294
  attr.srq_limit = cmd.srq_limit;
#line 3296
  ret = (*((srq->device)->modify_srq))(srq, & attr, (enum ib_srq_attr_mask )cmd.attr_mask,
                                       & udata);
#line 3298
  put_srq_read(srq);
#line 3300
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 3303 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_query_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                            int out_len ) 
{ 
  struct ib_uverbs_query_srq cmd ;
  struct ib_uverbs_query_srq_resp resp ;
  struct ib_srq_attr attr ;
  struct ib_srq *srq ;
  int ret ;
  unsigned long tmp ;
  unsigned long tmp___0 ;

  {
#line 3313
  if ((unsigned int )out_len <= 15U) {
#line 3314
    return (-28L);
  } else {

  }
#line 3316
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 3316
  if (tmp != 0UL) {
#line 3317
    return (-14L);
  } else {

  }
#line 3319
  srq = idr_read_srq((int )cmd.srq_handle, file->ucontext);
#line 3320
  if ((unsigned long )srq == (unsigned long )((struct ib_srq *)0)) {
#line 3321
    return (-22L);
  } else {

  }
#line 3323
  ret = ib_query_srq(srq, & attr);
#line 3325
  put_srq_read(srq);
#line 3327
  if (ret != 0) {
#line 3328
    return ((ssize_t )ret);
  } else {

  }
#line 3330
  memset((void *)(& resp), 0, 16UL);
#line 3332
  resp.max_wr = attr.max_wr;
#line 3333
  resp.max_sge = attr.max_sge;
#line 3334
  resp.srq_limit = attr.srq_limit;
#line 3336
  tmp___0 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 16UL);
#line 3336
  if (tmp___0 != 0UL) {
#line 3338
    return (-14L);
  } else {

  }
#line 3340
  return ((ssize_t )in_len);
}
}
#line 3343 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file , char const   *buf , int in_len ,
                              int out_len ) 
{ 
  struct ib_uverbs_destroy_srq cmd ;
  struct ib_uverbs_destroy_srq_resp resp ;
  struct ib_uobject *uobj ;
  struct ib_srq *srq ;
  struct ib_uevent_object *obj ;
  int ret ;
  struct ib_usrq_object *us ;
  enum ib_srq_type srq_type ;
  unsigned long tmp ;
  struct ib_uobject  const  *__mptr ;
  struct ib_uevent_object  const  *__mptr___0 ;
  unsigned long tmp___0 ;

  {
#line 3352
  ret = -22;
#line 3356
  tmp = copy_from_user((void *)(& cmd), (void const   *)buf, 16UL);
#line 3356
  if (tmp != 0UL) {
#line 3357
    return (-14L);
  } else {

  }
#line 3359
  uobj = idr_write_uobj(& ib_uverbs_srq_idr, (int )cmd.srq_handle, file->ucontext);
#line 3360
  if ((unsigned long )uobj == (unsigned long )((struct ib_uobject *)0)) {
#line 3361
    return (-22L);
  } else {

  }
#line 3362
  srq = (struct ib_srq *)uobj->object;
#line 3363
  __mptr = (struct ib_uobject  const  *)uobj;
#line 3363
  obj = (struct ib_uevent_object *)__mptr;
#line 3364
  srq_type = srq->srq_type;
#line 3366
  ret = ib_destroy_srq(srq);
#line 3367
  if (ret == 0) {
#line 3368
    uobj->live = 0;
  } else {

  }
#line 3370
  put_uobj_write(uobj);
#line 3372
  if (ret != 0) {
#line 3373
    return ((ssize_t )ret);
  } else {

  }
#line 3375
  if ((unsigned int )srq_type == 1U) {
#line 3376
    __mptr___0 = (struct ib_uevent_object  const  *)obj;
#line 3376
    us = (struct ib_usrq_object *)__mptr___0;
#line 3377
    atomic_dec(& (us->uxrcd)->refcnt);
  } else {

  }
#line 3380
  idr_remove_uobj(& ib_uverbs_srq_idr, uobj);
#line 3382
  mutex_lock_nested(& file->mutex, 0U);
#line 3383
  list_del(& uobj->list);
#line 3384
  mutex_unlock(& file->mutex);
#line 3386
  ib_uverbs_release_uevent(file, obj);
#line 3388
  memset((void *)(& resp), 0, 4UL);
#line 3389
  resp.events_reported = obj->events_reported;
#line 3391
  put_uobj(uobj);
#line 3393
  tmp___0 = copy_to_user((void *)cmd.response, (void const   *)(& resp), 4UL);
#line 3393
  if (tmp___0 != 0UL) {
#line 3395
    ret = -14;
  } else {

  }
#line 3397
  return ((ssize_t )(ret != 0 ? ret : in_len));
}
}
#line 3400 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_cmd.c"
int ib_uverbs_ex_query_device(struct ib_uverbs_file *file , struct ib_udata *ucore ,
                              struct ib_udata *uhw ) 
{ 
  struct ib_uverbs_ex_query_device_resp resp ;
  struct ib_uverbs_ex_query_device cmd ;
  struct ib_device_attr attr ;
  struct ib_device *device ;
  int err ;

  {
#line 3410
  device = (file->device)->ib_dev;
#line 3411
  if (ucore->inlen <= 7UL) {
#line 3412
    return (-22);
  } else {

  }
#line 3414
  err = ib_copy_from_udata((void *)(& cmd), ucore, 8UL);
#line 3415
  if (err != 0) {
#line 3416
    return (err);
  } else {

  }
#line 3418
  if (cmd.comp_mask != 0U) {
#line 3419
    return (-22);
  } else {

  }
#line 3421
  if (cmd.reserved != 0U) {
#line 3422
    return (-22);
  } else {

  }
#line 3424
  resp.response_length = 184U;
#line 3426
  if (ucore->outlen < (size_t )resp.response_length) {
#line 3427
    return (-28);
  } else {

  }
#line 3429
  memset((void *)(& attr), 0, 224UL);
#line 3431
  err = (*(device->query_device))(device, & attr, uhw);
#line 3432
  if (err != 0) {
#line 3433
    return (err);
  } else {

  }
#line 3435
  copy_query_dev_fields(file, & resp.base, & attr);
#line 3436
  resp.comp_mask = 0U;
#line 3438
  if (ucore->outlen < (unsigned long )resp.response_length + 24UL) {
#line 3439
    goto end;
  } else {

  }
#line 3442
  resp.odp_caps.general_caps = attr.odp_caps.general_caps;
#line 3443
  resp.odp_caps.per_transport_caps.rc_odp_caps = attr.odp_caps.per_transport_caps.rc_odp_caps;
#line 3445
  resp.odp_caps.per_transport_caps.uc_odp_caps = attr.odp_caps.per_transport_caps.uc_odp_caps;
#line 3447
  resp.odp_caps.per_transport_caps.ud_odp_caps = attr.odp_caps.per_transport_caps.ud_odp_caps;
#line 3449
  resp.odp_caps.reserved = 0U;
#line 3453
  resp.response_length = resp.response_length + 24U;
#line 3455
  if (ucore->outlen < (unsigned long )resp.response_length + 8UL) {
#line 3456
    goto end;
  } else {

  }
#line 3458
  resp.timestamp_mask = attr.timestamp_mask;
#line 3459
  resp.response_length = resp.response_length + 8U;
#line 3461
  if (ucore->outlen < (unsigned long )resp.response_length + 8UL) {
#line 3462
    goto end;
  } else {

  }
#line 3464
  resp.hca_core_clock = attr.hca_core_clock;
#line 3465
  resp.response_length = resp.response_length + 8U;
  end: 
#line 3468
  err = ib_copy_to_udata(ucore, (void *)(& resp), (size_t )resp.response_length);
#line 3469
  if (err != 0) {
#line 3470
    return (err);
  } else {

  }
#line 3472
  return (0);
}
}
#line 41 "include/rdma/ib_marshall.h"
void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst , struct ib_qp_attr *src ) ;
#line 44
void ib_copy_ah_attr_to_user(struct ib_uverbs_ah_attr *dst , struct ib_ah_attr *src ) ;
#line 47
void ib_copy_path_rec_to_user(struct ib_user_path_rec *dst , struct ib_sa_path_rec *src ) ;
#line 50
void ib_copy_path_rec_from_user(struct ib_sa_path_rec *dst , struct ib_user_path_rec *src ) ;
#line 36 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
void ib_copy_ah_attr_to_user(struct ib_uverbs_ah_attr *dst , struct ib_ah_attr *src ) 
{ 


  {
#line 39
  memcpy((void *)(& dst->grh.dgid), (void const   *)(& src->grh.dgid.raw), 16UL);
#line 40
  dst->grh.flow_label = src->grh.flow_label;
#line 41
  dst->grh.sgid_index = src->grh.sgid_index;
#line 42
  dst->grh.hop_limit = src->grh.hop_limit;
#line 43
  dst->grh.traffic_class = src->grh.traffic_class;
#line 44
  memset((void *)(& dst->grh.reserved), 0, 1UL);
#line 45
  dst->dlid = src->dlid;
#line 46
  dst->sl = src->sl;
#line 47
  dst->src_path_bits = src->src_path_bits;
#line 48
  dst->static_rate = src->static_rate;
#line 49
  dst->is_global = (unsigned int )src->ah_flags & 1U;
#line 50
  dst->port_num = src->port_num;
#line 51
  dst->reserved = 0U;
#line 52
  return;
}
}
#line 53 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
static char const   __kstrtab_ib_copy_ah_attr_to_user[24U]  = 
#line 53
  {      'i',      'b',      '_',      'c', 
        'o',      'p',      'y',      '_', 
        'a',      'h',      '_',      'a', 
        't',      't',      'r',      '_', 
        't',      'o',      '_',      'u', 
        's',      'e',      'r',      '\000'};
#line 53
struct kernel_symbol  const  __ksymtab_ib_copy_ah_attr_to_user ;
#line 53 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
struct kernel_symbol  const  __ksymtab_ib_copy_ah_attr_to_user  =    {(unsigned long )(& ib_copy_ah_attr_to_user), (char const   *)(& __kstrtab_ib_copy_ah_attr_to_user)};
#line 55 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst , struct ib_qp_attr *src ) 
{ 


  {
#line 58
  dst->qp_state = (__u32 )src->qp_state;
#line 59
  dst->cur_qp_state = (__u32 )src->cur_qp_state;
#line 60
  dst->path_mtu = (__u32 )src->path_mtu;
#line 61
  dst->path_mig_state = (__u32 )src->path_mig_state;
#line 62
  dst->qkey = src->qkey;
#line 63
  dst->rq_psn = src->rq_psn;
#line 64
  dst->sq_psn = src->sq_psn;
#line 65
  dst->dest_qp_num = src->dest_qp_num;
#line 66
  dst->qp_access_flags = (__u32 )src->qp_access_flags;
#line 68
  dst->max_send_wr = src->cap.max_send_wr;
#line 69
  dst->max_recv_wr = src->cap.max_recv_wr;
#line 70
  dst->max_send_sge = src->cap.max_send_sge;
#line 71
  dst->max_recv_sge = src->cap.max_recv_sge;
#line 72
  dst->max_inline_data = src->cap.max_inline_data;
#line 74
  ib_copy_ah_attr_to_user(& dst->ah_attr, & src->ah_attr);
#line 75
  ib_copy_ah_attr_to_user(& dst->alt_ah_attr, & src->alt_ah_attr);
#line 77
  dst->pkey_index = src->pkey_index;
#line 78
  dst->alt_pkey_index = src->alt_pkey_index;
#line 79
  dst->en_sqd_async_notify = src->en_sqd_async_notify;
#line 80
  dst->sq_draining = src->sq_draining;
#line 81
  dst->max_rd_atomic = src->max_rd_atomic;
#line 82
  dst->max_dest_rd_atomic = src->max_dest_rd_atomic;
#line 83
  dst->min_rnr_timer = src->min_rnr_timer;
#line 84
  dst->port_num = src->port_num;
#line 85
  dst->timeout = src->timeout;
#line 86
  dst->retry_cnt = src->retry_cnt;
#line 87
  dst->rnr_retry = src->rnr_retry;
#line 88
  dst->alt_port_num = src->alt_port_num;
#line 89
  dst->alt_timeout = src->alt_timeout;
#line 90
  memset((void *)(& dst->reserved), 0, 5UL);
#line 91
  return;
}
}
#line 92 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
static char const   __kstrtab_ib_copy_qp_attr_to_user[24U]  = 
#line 92
  {      'i',      'b',      '_',      'c', 
        'o',      'p',      'y',      '_', 
        'q',      'p',      '_',      'a', 
        't',      't',      'r',      '_', 
        't',      'o',      '_',      'u', 
        's',      'e',      'r',      '\000'};
#line 92
struct kernel_symbol  const  __ksymtab_ib_copy_qp_attr_to_user ;
#line 92 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
struct kernel_symbol  const  __ksymtab_ib_copy_qp_attr_to_user  =    {(unsigned long )(& ib_copy_qp_attr_to_user), (char const   *)(& __kstrtab_ib_copy_qp_attr_to_user)};
#line 94 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
void ib_copy_path_rec_to_user(struct ib_user_path_rec *dst , struct ib_sa_path_rec *src ) 
{ 


  {
#line 97
  memcpy((void *)(& dst->dgid), (void const   *)(& src->dgid.raw), 16UL);
#line 98
  memcpy((void *)(& dst->sgid), (void const   *)(& src->sgid.raw), 16UL);
#line 100
  dst->dlid = src->dlid;
#line 101
  dst->slid = src->slid;
#line 102
  dst->raw_traffic = (__u32 )src->raw_traffic;
#line 103
  dst->flow_label = src->flow_label;
#line 104
  dst->hop_limit = src->hop_limit;
#line 105
  dst->traffic_class = src->traffic_class;
#line 106
  dst->reversible = (__u32 )src->reversible;
#line 107
  dst->numb_path = src->numb_path;
#line 108
  dst->pkey = src->pkey;
#line 109
  dst->sl = src->sl;
#line 110
  dst->mtu_selector = src->mtu_selector;
#line 111
  dst->mtu = (__u32 )src->mtu;
#line 112
  dst->rate_selector = src->rate_selector;
#line 113
  dst->rate = src->rate;
#line 114
  dst->packet_life_time = src->packet_life_time;
#line 115
  dst->preference = src->preference;
#line 116
  dst->packet_life_time_selector = src->packet_life_time_selector;
#line 117
  return;
}
}
#line 118 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
static char const   __kstrtab_ib_copy_path_rec_to_user[25U]  = 
#line 118
  {      'i',      'b',      '_',      'c', 
        'o',      'p',      'y',      '_', 
        'p',      'a',      't',      'h', 
        '_',      'r',      'e',      'c', 
        '_',      't',      'o',      '_', 
        'u',      's',      'e',      'r', 
        '\000'};
#line 118
struct kernel_symbol  const  __ksymtab_ib_copy_path_rec_to_user ;
#line 118 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
struct kernel_symbol  const  __ksymtab_ib_copy_path_rec_to_user  =    {(unsigned long )(& ib_copy_path_rec_to_user), (char const   *)(& __kstrtab_ib_copy_path_rec_to_user)};
#line 120 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
void ib_copy_path_rec_from_user(struct ib_sa_path_rec *dst , struct ib_user_path_rec *src ) 
{ 


  {
#line 123
  memcpy((void *)(& dst->dgid.raw), (void const   *)(& src->dgid), 16UL);
#line 124
  memcpy((void *)(& dst->sgid.raw), (void const   *)(& src->sgid), 16UL);
#line 126
  dst->dlid = src->dlid;
#line 127
  dst->slid = src->slid;
#line 128
  dst->raw_traffic = (int )src->raw_traffic;
#line 129
  dst->flow_label = src->flow_label;
#line 130
  dst->hop_limit = src->hop_limit;
#line 131
  dst->traffic_class = src->traffic_class;
#line 132
  dst->reversible = (int )src->reversible;
#line 133
  dst->numb_path = src->numb_path;
#line 134
  dst->pkey = src->pkey;
#line 135
  dst->sl = src->sl;
#line 136
  dst->mtu_selector = src->mtu_selector;
#line 137
  dst->mtu = (u8 )src->mtu;
#line 138
  dst->rate_selector = src->rate_selector;
#line 139
  dst->rate = src->rate;
#line 140
  dst->packet_life_time = src->packet_life_time;
#line 141
  dst->preference = src->preference;
#line 142
  dst->packet_life_time_selector = src->packet_life_time_selector;
#line 144
  memset((void *)(& dst->smac), 0, 6UL);
#line 145
  memset((void *)(& dst->dmac), 0, 6UL);
#line 146
  dst->vlan_id = 65535U;
#line 147
  return;
}
}
#line 148 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
static char const   __kstrtab_ib_copy_path_rec_from_user[27U]  = 
#line 148
  {      'i',      'b',      '_',      'c', 
        'o',      'p',      'y',      '_', 
        'p',      'a',      't',      'h', 
        '_',      'r',      'e',      'c', 
        '_',      'f',      'r',      'o', 
        'm',      '_',      'u',      's', 
        'e',      'r',      '\000'};
#line 148
struct kernel_symbol  const  __ksymtab_ib_copy_path_rec_from_user ;
#line 148 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/dscv/ri/08_1a/drivers/infiniband/core/uverbs_marshall.c"
struct kernel_symbol  const  __ksymtab_ib_copy_path_rec_from_user  =    {(unsigned long )(& ib_copy_path_rec_from_user), (char const   *)(& __kstrtab_ib_copy_path_rec_from_user)};
#line 8 "/home/ldvuser/ldv/inst/kernel-rules/verifier/sv-comp.h"
extern void *memset(void * , int  , size_t  ) ;
#line 12 "/home/ldvuser/ldv/inst/kernel-rules/verifier/rcv.h"
__inline static void ldv_error(void) 
{ 


  {
  ERROR: ;
#line 14
  __VERIFIER_error();
}
}
#line 7 "/home/ldvuser/ldv/inst/kernel-rules/kernel-model/ERR.inc"
bool ldv_is_err(void const   *ptr ) 
{ 


  {
#line 10
  return ((unsigned long )ptr > 2012UL);
}
}
#line 14 "/home/ldvuser/ldv/inst/kernel-rules/kernel-model/ERR.inc"
void *ldv_err_ptr(long error ) 
{ 


  {
#line 17
  return ((void *)(2012L - error));
}
}
#line 21 "/home/ldvuser/ldv/inst/kernel-rules/kernel-model/ERR.inc"
long ldv_ptr_err(void const   *ptr ) 
{ 


  {
#line 24
  return ((long )(2012UL - (unsigned long )ptr));
}
}
#line 28 "/home/ldvuser/ldv/inst/kernel-rules/kernel-model/ERR.inc"
bool ldv_is_err_or_null(void const   *ptr ) 
{ 
  bool tmp ;
  int tmp___0 ;

  {
#line 31
  if ((unsigned long )ptr == (unsigned long )((void const   *)0)) {
#line 31
    tmp___0 = 1;
  } else {
#line 31
    tmp = ldv_is_err(ptr);
#line 31
    if ((int )tmp) {
#line 31
      tmp___0 = 1;
    } else {
#line 31
      tmp___0 = 0;
    }
  }
#line 31
  return ((bool )tmp___0);
}
}
#line 7 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
int ldv_module_refcounter  =    1;
#line 10 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
void ldv_module_get(struct module *module ) 
{ 


  {
#line 13
  if ((unsigned long )module != (unsigned long )((struct module *)0)) {
#line 15
    ldv_module_refcounter = ldv_module_refcounter + 1;
  } else {

  }
#line 16
  return;
}
}
#line 20 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
int ldv_try_module_get(struct module *module ) 
{ 
  int module_get_succeeded ;

  {
#line 25
  if ((unsigned long )module != (unsigned long )((struct module *)0)) {
#line 28
    module_get_succeeded = ldv_undef_int();
#line 30
    if (module_get_succeeded == 1) {
#line 32
      ldv_module_refcounter = ldv_module_refcounter + 1;
#line 34
      return (1);
    } else {
#line 39
      return (0);
    }
  } else {

  }
#line 41
  return (0);
}
}
#line 45 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
void ldv_module_put(struct module *module ) 
{ 


  {
#line 48
  if ((unsigned long )module != (unsigned long )((struct module *)0)) {
#line 50
    if (ldv_module_refcounter <= 1) {
#line 50
      ldv_error();
    } else {

    }
#line 52
    ldv_module_refcounter = ldv_module_refcounter - 1;
  } else {

  }
#line 54
  return;
}
}
#line 57 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
void ldv_module_put_and_exit(void) 
{ 


  {
#line 59
  ldv_module_put((struct module *)1);
  LDV_STOP: ;
#line 61
  goto LDV_STOP;
}
}
#line 65 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
unsigned int ldv_module_refcount(void) 
{ 


  {
#line 68
  return ((unsigned int )(ldv_module_refcounter + -1));
}
}
#line 72 "/work/ldvuser/mutilin/launch/work/current--X--drivers/--X--defaultlinux-4.2-rc1.tar.xz--X--08_1a--X--cpachecker/linux-4.2-rc1.tar.xz/csd_deg_dscv/5041/dscv_tempdir/rule-instrumentor/08_1a/common-model/ldv_common_model.c"
void ldv_check_final_state(void) 
{ 


  {
#line 75
  if (ldv_module_refcounter != 1) {
#line 75
    ldv_error();
  } else {

  }
#line 79
  return;
}
}
