extern void __VERIFIER_error() __attribute__ ((__noreturn__)); /* Generated by CIL v. 1.5.1 */ /* print_CIL_Input is false */ typedef unsigned char __u8; typedef unsigned short __u16; typedef int __s32; typedef unsigned int __u32; typedef unsigned long long __u64; typedef signed char s8; typedef unsigned char u8; typedef unsigned short u16; typedef int s32; typedef unsigned int u32; typedef long long s64; typedef unsigned long long u64; typedef long __kernel_long_t; typedef unsigned long __kernel_ulong_t; typedef int __kernel_pid_t; typedef __kernel_long_t __kernel_suseconds_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef __kernel_ulong_t __kernel_size_t; typedef __kernel_long_t __kernel_ssize_t; typedef long long __kernel_loff_t; typedef __kernel_long_t __kernel_time_t; typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; struct kernel_symbol { unsigned long value ; char const *name ; }; struct module; typedef __u32 __kernel_dev_t; typedef __kernel_dev_t dev_t; typedef unsigned short umode_t; typedef __kernel_pid_t pid_t; typedef __kernel_clockid_t clockid_t; typedef _Bool bool; typedef __kernel_uid32_t uid_t; typedef __kernel_gid32_t gid_t; typedef __kernel_loff_t loff_t; typedef __kernel_size_t size_t; typedef __kernel_ssize_t ssize_t; typedef __kernel_time_t time_t; typedef __s32 int32_t; typedef __u8 uint8_t; typedef __u16 uint16_t; typedef __u32 uint32_t; typedef __u64 uint64_t; typedef unsigned long sector_t; typedef unsigned long blkcnt_t; typedef u64 dma_addr_t; typedef unsigned int gfp_t; typedef unsigned int fmode_t; typedef unsigned int oom_flags_t; typedef u64 phys_addr_t; typedef phys_addr_t resource_size_t; struct __anonstruct_atomic_t_6 { int counter ; }; typedef struct __anonstruct_atomic_t_6 atomic_t; struct __anonstruct_atomic64_t_7 { long counter ; }; typedef struct __anonstruct_atomic64_t_7 atomic64_t; struct list_head { struct list_head *next ; struct list_head *prev ; }; struct hlist_node; struct hlist_head { struct hlist_node *first ; }; struct hlist_node { struct hlist_node *next ; struct hlist_node **pprev ; }; struct callback_head { struct callback_head *next ; void (*func)(struct callback_head * ) ; }; 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 ; }; struct __anonstruct____missing_field_name_9 { unsigned int a ; unsigned int b ; }; 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 ; }; union __anonunion____missing_field_name_8 { struct __anonstruct____missing_field_name_9 __annonCompField4 ; struct __anonstruct____missing_field_name_10 __annonCompField5 ; }; struct desc_struct { union __anonunion____missing_field_name_8 __annonCompField6 ; }; typedef unsigned long pteval_t; typedef unsigned long pgdval_t; typedef unsigned long pgprotval_t; struct __anonstruct_pte_t_11 { pteval_t pte ; }; typedef struct __anonstruct_pte_t_11 pte_t; struct pgprot { pgprotval_t pgprot ; }; typedef struct pgprot pgprot_t; struct __anonstruct_pgd_t_12 { pgdval_t pgd ; }; typedef struct __anonstruct_pgd_t_12 pgd_t; struct page; typedef struct page *pgtable_t; struct file; struct seq_file; struct thread_struct; struct mm_struct; struct task_struct; struct cpumask; struct qspinlock { atomic_t val ; }; typedef struct qspinlock arch_spinlock_t; struct qrwlock { atomic_t cnts ; arch_spinlock_t lock ; }; typedef struct qrwlock arch_rwlock_t; typedef void (*ctor_fn_t)(void); struct device; struct file_operations; struct completion; struct bug_entry { int bug_addr_disp ; int file_disp ; unsigned short line ; unsigned short flags ; }; struct timespec; struct compat_timespec; struct __anonstruct_futex_16 { u32 *uaddr ; u32 val ; u32 flags ; u32 bitset ; u64 time ; u32 *uaddr2 ; }; struct __anonstruct_nanosleep_17 { clockid_t clockid ; struct timespec *rmtp ; struct compat_timespec *compat_rmtp ; u64 expires ; }; struct pollfd; struct __anonstruct_poll_18 { struct pollfd *ufds ; int nfds ; int has_timeout ; unsigned long tv_sec ; unsigned long tv_nsec ; }; union __anonunion____missing_field_name_15 { struct __anonstruct_futex_16 futex ; struct __anonstruct_nanosleep_17 nanosleep ; struct __anonstruct_poll_18 poll ; }; struct restart_block { long (*fn)(struct restart_block * ) ; union __anonunion____missing_field_name_15 __annonCompField7 ; }; 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 ; }; union __anonunion____missing_field_name_19 { struct pt_regs *regs ; struct kernel_vm86_regs *vm86 ; }; struct math_emu_info { long ___orig_eip ; union __anonunion____missing_field_name_19 __annonCompField8 ; }; struct cpumask { unsigned long bits[128U] ; }; typedef struct cpumask cpumask_t; typedef struct cpumask *cpumask_var_t; struct fregs_state { u32 cwd ; u32 swd ; u32 twd ; u32 fip ; u32 fcs ; u32 foo ; u32 fos ; u32 st_space[20U] ; u32 status ; }; struct __anonstruct____missing_field_name_29 { u64 rip ; u64 rdp ; }; struct __anonstruct____missing_field_name_30 { u32 fip ; u32 fcs ; u32 foo ; u32 fos ; }; union __anonunion____missing_field_name_28 { struct __anonstruct____missing_field_name_29 __annonCompField12 ; struct __anonstruct____missing_field_name_30 __annonCompField13 ; }; union __anonunion____missing_field_name_31 { u32 padding1[12U] ; u32 sw_reserved[12U] ; }; 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 ; }; 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 ; }; struct xstate_header { u64 xfeatures ; u64 xcomp_bv ; u64 reserved[6U] ; }; struct xregs_state { struct fxregs_state i387 ; struct xstate_header header ; u8 __reserved[464U] ; }; union fpregs_state { struct fregs_state fsave ; struct fxregs_state fxsave ; struct swregs_state soft ; struct xregs_state xsave ; }; struct fpu { union fpregs_state state ; unsigned int last_cpu ; unsigned char fpstate_active ; unsigned char fpregs_active ; unsigned char counter ; }; struct seq_operations; struct perf_event; 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 ; }; typedef atomic64_t atomic_long_t; struct lockdep_map; struct stack_trace { unsigned int nr_entries ; unsigned int max_entries ; unsigned long *entries ; int skip ; }; struct lockdep_subclass_key { char __one_byte ; }; struct lock_class_key { struct lockdep_subclass_key subkeys[8U] ; }; 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] ; }; struct lockdep_map { struct lock_class_key *key ; struct lock_class *class_cache[2U] ; char const *name ; int cpu ; unsigned long ip ; }; 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 ; }; struct raw_spinlock { arch_spinlock_t raw_lock ; unsigned int magic ; unsigned int owner_cpu ; void *owner ; struct lockdep_map dep_map ; }; typedef struct raw_spinlock raw_spinlock_t; struct __anonstruct____missing_field_name_35 { u8 __padding[24U] ; struct lockdep_map dep_map ; }; union __anonunion____missing_field_name_34 { struct raw_spinlock rlock ; struct __anonstruct____missing_field_name_35 __annonCompField17 ; }; struct spinlock { union __anonunion____missing_field_name_34 __annonCompField18 ; }; typedef struct spinlock spinlock_t; struct __anonstruct_rwlock_t_36 { arch_rwlock_t raw_lock ; unsigned int magic ; unsigned int owner_cpu ; void *owner ; struct lockdep_map dep_map ; }; typedef struct __anonstruct_rwlock_t_36 rwlock_t; struct seqcount { unsigned int sequence ; struct lockdep_map dep_map ; }; typedef struct seqcount seqcount_t; struct __anonstruct_seqlock_t_45 { struct seqcount seqcount ; spinlock_t lock ; }; typedef struct __anonstruct_seqlock_t_45 seqlock_t; struct timespec { __kernel_time_t tv_sec ; long tv_nsec ; }; struct timeval { __kernel_time_t tv_sec ; __kernel_suseconds_t tv_usec ; }; struct user_namespace; struct __anonstruct_kuid_t_46 { uid_t val ; }; typedef struct __anonstruct_kuid_t_46 kuid_t; struct __anonstruct_kgid_t_47 { gid_t val ; }; typedef struct __anonstruct_kgid_t_47 kgid_t; 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 ; }; struct vm_area_struct; struct __wait_queue_head { spinlock_t lock ; struct list_head task_list ; }; typedef struct __wait_queue_head wait_queue_head_t; struct __anonstruct_nodemask_t_48 { unsigned long bits[16U] ; }; typedef struct __anonstruct_nodemask_t_48 nodemask_t; struct optimistic_spin_queue { atomic_t tail ; }; 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 ; }; struct mutex_waiter { struct list_head list ; struct task_struct *task ; void *magic ; }; struct rw_semaphore; 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 ; }; struct completion { unsigned int done ; wait_queue_head_t wait ; }; union ktime { s64 tv64 ; }; typedef union ktime ktime_t; 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 ; }; struct hrtimer; enum hrtimer_restart; struct rb_node { unsigned long __rb_parent_color ; struct rb_node *rb_right ; struct rb_node *rb_left ; }; struct rb_root { struct rb_node *rb_node ; }; struct nsproxy; struct workqueue_struct; struct work_struct; struct work_struct { atomic_long_t data ; struct list_head entry ; void (*func)(struct work_struct * ) ; struct lockdep_map lockdep_map ; }; struct delayed_work { struct work_struct work ; struct timer_list timer ; struct workqueue_struct *wq ; int cpu ; }; struct resource { resource_size_t start ; resource_size_t end ; char const *name ; unsigned long flags ; struct resource *parent ; struct resource *sibling ; struct resource *child ; }; struct pci_dev; struct pm_message { int event ; }; typedef struct pm_message pm_message_t; 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 * ) ; }; enum rpm_status { RPM_ACTIVE = 0, RPM_RESUMING = 1, RPM_SUSPENDED = 2, RPM_SUSPENDING = 3 } ; enum rpm_request { RPM_REQ_NONE = 0, RPM_REQ_IDLE = 1, RPM_REQ_SUSPEND = 2, RPM_REQ_AUTOSUSPEND = 3, RPM_REQ_RESUME = 4 } ; struct wakeup_source; struct wake_irq; struct pm_subsys_data { spinlock_t lock ; unsigned int refcount ; struct list_head clock_list ; }; struct dev_pm_qos; 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 ; }; 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 * ) ; }; struct pci_bus; struct __anonstruct_mm_context_t_115 { void *ldt ; int size ; unsigned short ia32_compat ; struct mutex lock ; void *vdso ; atomic_t perf_rdpmc_allowed ; }; typedef struct __anonstruct_mm_context_t_115 mm_context_t; struct llist_node; struct llist_node { struct llist_node *next ; }; struct cred; struct inode; struct arch_uprobe_task { unsigned long saved_scratch_register ; unsigned int saved_trap_nr ; unsigned int saved_tf ; }; enum uprobe_task_state { UTASK_RUNNING = 0, UTASK_SSTEP = 1, UTASK_SSTEP_ACK = 2, UTASK_SSTEP_TRAPPED = 3 } ; struct __anonstruct____missing_field_name_148 { struct arch_uprobe_task autask ; unsigned long vaddr ; }; struct __anonstruct____missing_field_name_149 { struct callback_head dup_xol_work ; unsigned long dup_xol_addr ; }; union __anonunion____missing_field_name_147 { struct __anonstruct____missing_field_name_148 __annonCompField33 ; struct __anonstruct____missing_field_name_149 __annonCompField34 ; }; struct uprobe; struct return_instance; 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 ; }; struct xol_area; struct uprobes_state { struct xol_area *xol_area ; }; struct address_space; struct mem_cgroup; typedef void compound_page_dtor(struct page * ); union __anonunion____missing_field_name_150 { struct address_space *mapping ; void *s_mem ; }; union __anonunion____missing_field_name_152 { unsigned long index ; void *freelist ; bool pfmemalloc ; }; struct __anonstruct____missing_field_name_156 { unsigned short inuse ; unsigned short objects : 15 ; unsigned char frozen : 1 ; }; union __anonunion____missing_field_name_155 { atomic_t _mapcount ; struct __anonstruct____missing_field_name_156 __annonCompField38 ; int units ; }; struct __anonstruct____missing_field_name_154 { union __anonunion____missing_field_name_155 __annonCompField39 ; atomic_t _count ; }; union __anonunion____missing_field_name_153 { unsigned long counters ; struct __anonstruct____missing_field_name_154 __annonCompField40 ; unsigned int active ; }; struct __anonstruct____missing_field_name_151 { union __anonunion____missing_field_name_152 __annonCompField37 ; union __anonunion____missing_field_name_153 __annonCompField41 ; }; struct __anonstruct____missing_field_name_158 { struct page *next ; int pages ; int pobjects ; }; struct slab; struct __anonstruct____missing_field_name_159 { compound_page_dtor *compound_dtor ; unsigned long compound_order ; }; 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 ; }; struct kmem_cache; union __anonunion____missing_field_name_160 { unsigned long private ; spinlock_t *ptl ; struct kmem_cache *slab_cache ; struct page *first_page ; }; 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 ; }; struct page_frag { struct page *page ; __u32 offset ; __u32 size ; }; struct __anonstruct_shared_161 { struct rb_node rb ; unsigned long rb_subtree_last ; }; struct anon_vma; struct vm_operations_struct; struct mempolicy; 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 ; }; struct core_thread { struct task_struct *task ; struct core_thread *next ; }; struct core_state { atomic_t nr_threads ; struct core_thread dumper ; struct completion startup ; }; struct task_rss_stat { int events ; int count[3U] ; }; struct mm_rss_stat { atomic_long_t count[3U] ; }; struct kioctx_table; struct linux_binfmt; struct mmu_notifier_mm; 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 ; }; typedef __u64 Elf64_Addr; typedef __u16 Elf64_Half; typedef __u32 Elf64_Word; typedef __u64 Elf64_Xword; 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 ; }; typedef struct elf64_sym Elf64_Sym; union __anonunion____missing_field_name_166 { unsigned long bitmap[4U] ; struct callback_head callback_head ; }; struct idr_layer { int prefix ; int layer ; struct idr_layer *ary[256U] ; int count ; union __anonunion____missing_field_name_166 __annonCompField47 ; }; 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 ; }; union __anonunion___u_168 { struct idr_layer *__val ; char __c[1U] ; }; union __anonunion___u_170 { struct idr_layer *__val ; char __c[1U] ; }; struct ida_bitmap { long nr_busy ; unsigned long bitmap[15U] ; }; struct ida { struct idr idr ; struct ida_bitmap *free_bitmap ; }; struct dentry; struct iattr; struct super_block; struct file_system_type; struct kernfs_open_node; struct kernfs_iattrs; struct kernfs_root; struct kernfs_elem_dir { unsigned long subdirs ; struct rb_root children ; struct kernfs_root *root ; }; struct kernfs_node; struct kernfs_elem_symlink { struct kernfs_node *target_kn ; }; struct kernfs_ops; struct kernfs_elem_attr { struct kernfs_ops const *ops ; struct kernfs_open_node *open ; loff_t size ; struct kernfs_node *notify_next ; }; union __anonunion____missing_field_name_171 { struct kernfs_elem_dir dir ; struct kernfs_elem_symlink symlink ; struct kernfs_elem_attr attr ; }; 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 ; }; 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 * ) ; }; 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 ; }; 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 ; }; 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 ; }; struct sock; struct kobject; enum kobj_ns_type { KOBJ_NS_TYPE_NONE = 0, KOBJ_NS_TYPE_NET = 1, KOBJ_NS_TYPES = 2 } ; 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 * ) ; }; struct bin_attribute; struct attribute { char const *name ; umode_t mode ; bool ignore_lockdep ; struct lock_class_key *key ; struct lock_class_key skey ; }; struct attribute_group { char const *name ; umode_t (*is_visible)(struct kobject * , struct attribute * , int ) ; struct attribute **attrs ; struct bin_attribute **bin_attrs ; }; 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 * ) ; }; struct sysfs_ops { ssize_t (*show)(struct kobject * , struct attribute * , char * ) ; ssize_t (*store)(struct kobject * , struct attribute * , char const * , size_t ) ; }; struct kref { atomic_t refcount ; }; struct kset; struct kobj_type; 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 ; }; 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 * ) ; }; struct kobj_uevent_env { char *argv[3U] ; char *envp[32U] ; int envp_idx ; char buf[2048U] ; int buflen ; }; 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 * ) ; }; struct kset { struct list_head list ; spinlock_t list_lock ; struct kobject kobj ; struct kset_uevent_ops const *uevent_ops ; }; struct kernel_param; 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 * ) ; }; struct kparam_string; struct kparam_array; union __anonunion____missing_field_name_172 { void *arg ; struct kparam_string const *str ; struct kparam_array const *arr ; }; 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 ; }; struct kparam_string { unsigned int maxlen ; char *string ; }; struct kparam_array { unsigned int max ; unsigned int elemsize ; unsigned int *num ; struct kernel_param_ops const *ops ; void *elem ; }; struct latch_tree_node { struct rb_node node[2U] ; }; struct mod_arch_specific { }; struct module_param_attrs; struct module_kobject { struct kobject kobj ; struct module *mod ; struct kobject *drivers_dir ; struct module_param_attrs *mp ; struct completion *kobj_completion ; }; 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 * ) ; }; struct exception_table_entry; enum module_state { MODULE_STATE_LIVE = 0, MODULE_STATE_COMING = 1, MODULE_STATE_GOING = 2, MODULE_STATE_UNFORMED = 3 } ; struct mod_tree_node { struct module *mod ; struct latch_tree_node node ; }; struct module_sect_attrs; struct module_notes_attrs; struct tracepoint; struct trace_event_call; struct trace_enum_map; 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 ; }; struct kernel_cap_struct { __u32 cap[2U] ; }; typedef struct kernel_cap_struct kernel_cap_t; struct plist_node { int prio ; struct list_head prio_list ; struct list_head node_list ; }; typedef unsigned long cputime_t; struct sem_undo_list; struct sysv_sem { struct sem_undo_list *undo_list ; }; struct user_struct; struct sysv_shm { struct list_head shm_clist ; }; struct __anonstruct_sigset_t_180 { unsigned long sig[1U] ; }; typedef struct __anonstruct_sigset_t_180 sigset_t; struct siginfo; typedef void __signalfn_t(int ); typedef __signalfn_t *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t *__sigrestore_t; union sigval { int sival_int ; void *sival_ptr ; }; typedef union sigval sigval_t; struct __anonstruct__kill_182 { __kernel_pid_t _pid ; __kernel_uid32_t _uid ; }; struct __anonstruct__timer_183 { __kernel_timer_t _tid ; int _overrun ; char _pad[0U] ; sigval_t _sigval ; int _sys_private ; }; struct __anonstruct__rt_184 { __kernel_pid_t _pid ; __kernel_uid32_t _uid ; sigval_t _sigval ; }; struct __anonstruct__sigchld_185 { __kernel_pid_t _pid ; __kernel_uid32_t _uid ; int _status ; __kernel_clock_t _utime ; __kernel_clock_t _stime ; }; struct __anonstruct__addr_bnd_187 { void *_lower ; void *_upper ; }; struct __anonstruct__sigfault_186 { void *_addr ; short _addr_lsb ; struct __anonstruct__addr_bnd_187 _addr_bnd ; }; struct __anonstruct__sigpoll_188 { long _band ; int _fd ; }; struct __anonstruct__sigsys_189 { void *_call_addr ; int _syscall ; unsigned int _arch ; }; 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 ; }; struct siginfo { int si_signo ; int si_errno ; int si_code ; union __anonunion__sifields_181 _sifields ; }; typedef struct siginfo siginfo_t; struct sigpending { struct list_head list ; sigset_t signal ; }; struct sigaction { __sighandler_t sa_handler ; unsigned long sa_flags ; __sigrestore_t sa_restorer ; sigset_t sa_mask ; }; struct k_sigaction { struct sigaction sa ; }; enum pid_type { PIDTYPE_PID = 0, PIDTYPE_PGID = 1, PIDTYPE_SID = 2, PIDTYPE_MAX = 3 } ; struct pid_namespace; struct upid { int nr ; struct pid_namespace *ns ; struct hlist_node pid_chain ; }; struct pid { atomic_t count ; unsigned int level ; struct hlist_head tasks[3U] ; struct callback_head rcu ; struct upid numbers[1U] ; }; struct pid_link { struct hlist_node node ; struct pid *pid ; }; struct percpu_counter { raw_spinlock_t lock ; s64 count ; struct list_head list ; s32 *counters ; }; struct seccomp_filter; struct seccomp { int mode ; struct seccomp_filter *filter ; }; struct rt_mutex_waiter; struct rlimit { __kernel_ulong_t rlim_cur ; __kernel_ulong_t rlim_max ; }; struct timerqueue_node { struct rb_node node ; ktime_t expires ; }; struct timerqueue_head { struct rb_root head ; struct timerqueue_node *next ; }; struct hrtimer_clock_base; struct hrtimer_cpu_base; enum hrtimer_restart { HRTIMER_NORESTART = 0, HRTIMER_RESTART = 1 } ; 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] ; }; 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 ; }; 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] ; }; struct task_io_accounting { u64 rchar ; u64 wchar ; u64 syscr ; u64 syscw ; u64 read_bytes ; u64 write_bytes ; u64 cancelled_write_bytes ; }; struct latency_record { unsigned long backtrace[12U] ; unsigned int count ; unsigned long time ; unsigned long max ; }; struct assoc_array_ptr; struct assoc_array { struct assoc_array_ptr *root ; unsigned long nr_leaves_on_tree ; }; typedef int32_t key_serial_t; typedef uint32_t key_perm_t; struct key; struct signal_struct; struct key_type; struct keyring_index_key { struct key_type *type ; char const *description ; size_t desc_len ; }; union __anonunion____missing_field_name_196 { struct list_head graveyard_link ; struct rb_node serial_node ; }; struct key_user; union __anonunion____missing_field_name_197 { time_t expiry ; time_t revoked_at ; }; struct __anonstruct____missing_field_name_199 { struct key_type *type ; char *description ; }; union __anonunion____missing_field_name_198 { struct keyring_index_key index_key ; struct __anonstruct____missing_field_name_199 __annonCompField52 ; }; union __anonunion_type_data_200 { struct list_head link ; unsigned long x[2U] ; void *p[2U] ; int reject_error ; }; union __anonunion_payload_202 { unsigned long value ; void *rcudata ; void *data ; void *data2[2U] ; }; union __anonunion____missing_field_name_201 { union __anonunion_payload_202 payload ; struct assoc_array keys ; }; 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 ; }; struct audit_context; struct group_info { atomic_t usage ; int ngroups ; int nblocks ; kgid_t small_block[32U] ; kgid_t *blocks[0U] ; }; 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 ; }; struct percpu_ref; typedef void percpu_ref_func_t(struct percpu_ref * ); 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 ; }; struct cgroup; struct cgroup_root; struct cgroup_subsys; struct cgroup_taskset; 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 ; }; 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 ; }; 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 ; }; 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] ; }; 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 ; }; 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 ; }; struct futex_pi_state; struct robust_list_head; struct bio_list; struct fs_struct; struct perf_event_context; struct blk_plug; struct nameidata; struct cfs_rq; struct task_group; struct sighand_struct { atomic_t count ; struct k_sigaction action[64U] ; spinlock_t siglock ; wait_queue_head_t signalfd_wqh ; }; 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 ; }; struct cpu_itimer { cputime_t expires ; cputime_t incr ; u32 error ; u32 incr_error ; }; struct cputime { cputime_t utime ; cputime_t stime ; }; struct task_cputime { cputime_t utime ; cputime_t stime ; unsigned long long sum_exec_runtime ; }; struct task_cputime_atomic { atomic64_t utime ; atomic64_t stime ; atomic64_t sum_exec_runtime ; }; struct thread_group_cputimer { struct task_cputime_atomic cputime_atomic ; int running ; }; struct autogroup; struct tty_struct; struct taskstats; struct tty_audit_buf; 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 ; }; 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 ; }; struct backing_dev_info; struct reclaim_state; struct sched_info { unsigned long pcount ; unsigned long long run_delay ; unsigned long long last_arrival ; unsigned long long last_queued ; }; 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 ; }; struct wake_q_node { struct wake_q_node *next ; }; struct io_context; struct pipe_inode_info; struct load_weight { unsigned long weight ; u32 inv_weight ; }; 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 ; }; 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 ; }; 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 ; }; struct rt_rq; 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 ; }; 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 ; }; struct memcg_oom_info { struct mem_cgroup *memcg ; gfp_t gfp_mask ; int order ; unsigned char may_oom : 1 ; }; struct sched_class; struct files_struct; struct compat_robust_list_head; struct numa_group; struct ftrace_ret_stack; 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 ; }; struct dma_buf_attachment; struct dma_buf; struct device_attribute; enum chipset_type { NOT_SUPPORTED = 0, SUPPORTED = 1 } ; struct agp_version { u16 major ; u16 minor ; }; struct agp_kern_info { struct agp_version version ; struct pci_dev *device ; enum chipset_type chipset ; unsigned long mode ; unsigned long aper_base ; size_t aper_size ; int max_memory ; int current_memory ; bool cant_use_aperture ; unsigned long page_mask ; struct vm_operations_struct const *vm_ops ; }; struct agp_bridge_data; struct scatterlist; struct cdev { struct kobject kobj ; struct module *owner ; struct file_operations const *ops ; struct list_head list ; dev_t dev ; unsigned int count ; }; struct klist_node; struct klist_node { void *n_klist ; struct list_head n_node ; struct kref n_ref ; }; struct path; 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 ; }; 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 * ) ; }; struct pinctrl; struct pinctrl_state; struct dev_pin_info { struct pinctrl *p ; struct pinctrl_state *default_state ; struct pinctrl_state *sleep_state ; struct pinctrl_state *idle_state ; }; struct dma_map_ops; struct dev_archdata { struct dma_map_ops *dma_ops ; void *iommu ; }; struct pdev_archdata { }; struct device_private; struct device_driver; struct driver_private; struct class; struct subsys_private; struct bus_type; struct device_node; struct fwnode_handle; struct iommu_ops; struct iommu_group; 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 ; }; struct device_type; enum probe_type { PROBE_DEFAULT_STRATEGY = 0, PROBE_PREFER_ASYNCHRONOUS = 1, PROBE_FORCE_SYNCHRONOUS = 2 } ; struct of_device_id; struct acpi_device_id; 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 ; }; struct class_attribute; 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 ; }; 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 ) ; }; 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 ; }; 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 ) ; }; struct device_dma_parameters { unsigned int max_segment_size ; unsigned long segment_boundary_mask ; }; struct dma_coherent_mem; struct cma; 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 ; }; 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 ; }; struct dma_attrs { unsigned long flags[1U] ; }; enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3 } ; struct shrink_control { gfp_t gfp_mask ; unsigned long nr_to_scan ; int nid ; struct mem_cgroup *memcg ; }; 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 ; }; struct file_ra_state; struct writeback_control; struct bdi_writeback; 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 ; }; 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 ) ; }; 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 ; }; struct sg_table { struct scatterlist *sgl ; unsigned int nents ; unsigned int orig_nents ; }; 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 ; }; struct vfsmount; struct hlist_bl_node; struct hlist_bl_head { struct hlist_bl_node *first ; }; struct hlist_bl_node { struct hlist_bl_node *next ; struct hlist_bl_node **pprev ; }; struct __anonstruct____missing_field_name_220 { spinlock_t lock ; int count ; }; union __anonunion____missing_field_name_219 { struct __anonstruct____missing_field_name_220 __annonCompField58 ; }; struct lockref { union __anonunion____missing_field_name_219 __annonCompField59 ; }; struct __anonstruct____missing_field_name_222 { u32 hash ; u32 len ; }; union __anonunion____missing_field_name_221 { struct __anonstruct____missing_field_name_222 __annonCompField60 ; u64 hash_len ; }; struct qstr { union __anonunion____missing_field_name_221 __annonCompField61 ; unsigned char const *name ; }; struct dentry_operations; union __anonunion_d_u_223 { struct hlist_node d_alias ; struct callback_head d_rcu ; }; 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 ; }; 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 ) ; }; struct path { struct vfsmount *mnt ; struct dentry *dentry ; }; struct list_lru_one { struct list_head list ; long nr_items ; }; struct list_lru_memcg { struct list_lru_one *lru[0U] ; }; struct list_lru_node { spinlock_t lock ; struct list_lru_one lru ; struct list_lru_memcg *memcg_lrus ; }; struct list_lru { struct list_lru_node *node ; struct list_head list ; }; struct __anonstruct____missing_field_name_227 { struct radix_tree_node *parent ; void *private_data ; }; union __anonunion____missing_field_name_226 { struct __anonstruct____missing_field_name_227 __annonCompField62 ; struct callback_head callback_head ; }; 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] ; }; struct radix_tree_root { unsigned int height ; gfp_t gfp_mask ; struct radix_tree_node *rnode ; }; struct fiemap_extent { __u64 fe_logical ; __u64 fe_physical ; __u64 fe_length ; __u64 fe_reserved64[2U] ; __u32 fe_flags ; __u32 fe_reserved[3U] ; }; enum migrate_mode { MIGRATE_ASYNC = 0, MIGRATE_SYNC_LIGHT = 1, MIGRATE_SYNC = 2 } ; struct block_device; struct export_operations; struct kiocb; struct poll_table_struct; struct kstatfs; struct swap_info_struct; struct iov_iter; 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 ; }; struct dquot; typedef __kernel_uid32_t projid_t; struct __anonstruct_kprojid_t_231 { projid_t val ; }; typedef struct __anonstruct_kprojid_t_231 kprojid_t; enum quota_type { USRQUOTA = 0, GRPQUOTA = 1, PRJQUOTA = 2 } ; typedef long long qsize_t; union __anonunion____missing_field_name_232 { kuid_t uid ; kgid_t gid ; kprojid_t projid ; }; struct kqid { union __anonunion____missing_field_name_232 __annonCompField65 ; enum quota_type type ; }; 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 ; }; struct quota_format_type; 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 ; }; 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 ; }; 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 * ) ; }; 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 * ) ; }; 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 ; }; 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 ; }; struct qc_state { unsigned int s_incoredqs ; struct qc_type_state s_state[3U] ; }; 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 ; }; 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 ) ; }; 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 ; }; 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] ; }; struct kiocb { struct file *ki_filp ; loff_t ki_pos ; void (*ki_complete)(struct kiocb * , long , long ) ; void *private ; int ki_flags ; }; 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 * ) ; }; 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 ; }; struct request_queue; struct hd_struct; struct gendisk; 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 ; }; struct posix_acl; struct inode_operations; union __anonunion____missing_field_name_235 { unsigned int const i_nlink ; unsigned int __i_nlink ; }; union __anonunion____missing_field_name_236 { struct hlist_head i_dentry ; struct callback_head i_rcu ; }; struct file_lock_context; union __anonunion____missing_field_name_237 { struct pipe_inode_info *i_pipe ; struct block_device *i_bdev ; struct cdev *i_cdev ; char *i_link ; }; 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 ; }; struct fown_struct { rwlock_t lock ; struct pid *pid ; enum pid_type pid_type ; kuid_t uid ; kuid_t euid ; int signum ; }; 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 ; }; union __anonunion_f_u_238 { struct llist_node fu_llist ; struct callback_head fu_rcuhead ; }; 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 ; }; typedef void *fl_owner_t; struct file_lock; struct file_lock_operations { void (*fl_copy_lock)(struct file_lock * , struct file_lock * ) ; void (*fl_release_private)(struct file_lock * ) ; }; 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 ** ) ; }; struct nlm_lockowner; struct nfs_lock_info { u32 state ; struct nlm_lockowner *owner ; struct list_head list ; }; struct nfs4_lock_state; struct nfs4_lock_info { struct nfs4_lock_state *owner ; }; struct fasync_struct; struct __anonstruct_afs_240 { struct list_head link ; int state ; }; union __anonunion_fl_u_239 { struct nfs_lock_info nfs_fl ; struct nfs4_lock_info nfs4_fl ; struct __anonstruct_afs_240 afs ; }; 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 ; }; struct file_lock_context { spinlock_t flc_lock ; struct list_head flc_flock ; struct list_head flc_posix ; struct list_head flc_lease ; }; 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 ; }; 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] ; }; struct super_operations; struct xattr_handler; struct mtd_info; 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 ; }; struct fiemap_extent_info { unsigned int fi_flags ; unsigned int fi_extents_mapped ; unsigned int fi_extents_max ; struct fiemap_extent *fi_extents_start ; }; struct dir_context; struct dir_context { int (*actor)(struct dir_context * , char const * , int , loff_t , u64 , unsigned int ) ; loff_t pos ; }; 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 * ) ; }; 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 ) ; }; 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 * ) ; }; 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 ; }; struct exception_table_entry { int insn ; int fixup ; }; enum irqreturn { IRQ_NONE = 0, IRQ_HANDLED = 1, IRQ_WAKE_THREAD = 2 } ; typedef enum irqreturn irqreturn_t; struct proc_dir_entry; typedef unsigned long kernel_ulong_t; struct pci_device_id { __u32 vendor ; __u32 device ; __u32 subvendor ; __u32 subdevice ; __u32 class ; __u32 class_mask ; kernel_ulong_t driver_data ; }; struct acpi_device_id { __u8 id[9U] ; kernel_ulong_t driver_data ; }; struct of_device_id { char name[32U] ; char type[32U] ; char compatible[128U] ; void const *data ; }; struct platform_device_id { char name[20U] ; kernel_ulong_t driver_data ; }; struct hotplug_slot; struct pci_slot { struct pci_bus *bus ; struct list_head list ; struct hotplug_slot *hotplug ; unsigned char number ; struct kobject kobj ; }; typedef int pci_power_t; typedef unsigned int pci_channel_state_t; enum pci_channel_state { pci_channel_io_normal = 1, pci_channel_io_frozen = 2, pci_channel_io_perm_failure = 3 } ; typedef unsigned short pci_dev_flags_t; typedef unsigned short pci_bus_flags_t; struct pcie_link_state; struct pci_vpd; struct pci_sriov; struct pci_ats; struct pci_driver; union __anonunion____missing_field_name_252 { struct pci_sriov *sriov ; struct pci_dev *physfn ; }; struct pci_dev { struct list_head bus_list ; struct pci_bus *bus ; struct pci_bus *subordinate ; void *sysdata ; struct proc_dir_entry *procent ; struct pci_slot *slot ; unsigned int devfn ; unsigned short vendor ; unsigned short device ; unsigned short subsystem_vendor ; unsigned short subsystem_device ; unsigned int class ; u8 revision ; u8 hdr_type ; u8 pcie_cap ; u8 msi_cap ; u8 msix_cap ; unsigned char pcie_mpss : 3 ; u8 rom_base_reg ; u8 pin ; u16 pcie_flags_reg ; u8 dma_alias_devfn ; struct pci_driver *driver ; u64 dma_mask ; struct device_dma_parameters dma_parms ; pci_power_t current_state ; u8 pm_cap ; unsigned char pme_support : 5 ; unsigned char pme_interrupt : 1 ; unsigned char pme_poll : 1 ; unsigned char d1_support : 1 ; unsigned char d2_support : 1 ; unsigned char no_d1d2 : 1 ; unsigned char no_d3cold : 1 ; unsigned char d3cold_allowed : 1 ; unsigned char mmio_always_on : 1 ; unsigned char wakeup_prepared : 1 ; unsigned char runtime_d3cold : 1 ; unsigned char ignore_hotplug : 1 ; unsigned int d3_delay ; unsigned int d3cold_delay ; struct pcie_link_state *link_state ; pci_channel_state_t error_state ; struct device dev ; int cfg_size ; unsigned int irq ; struct resource resource[17U] ; bool match_driver ; unsigned char transparent : 1 ; unsigned char multifunction : 1 ; unsigned char is_added : 1 ; unsigned char is_busmaster : 1 ; unsigned char no_msi : 1 ; unsigned char no_64bit_msi : 1 ; unsigned char block_cfg_access : 1 ; unsigned char broken_parity_status : 1 ; unsigned char irq_reroute_variant : 2 ; unsigned char msi_enabled : 1 ; unsigned char msix_enabled : 1 ; unsigned char ari_enabled : 1 ; unsigned char is_managed : 1 ; unsigned char needs_freset : 1 ; unsigned char state_saved : 1 ; unsigned char is_physfn : 1 ; unsigned char is_virtfn : 1 ; unsigned char reset_fn : 1 ; unsigned char is_hotplug_bridge : 1 ; unsigned char __aer_firmware_first_valid : 1 ; unsigned char __aer_firmware_first : 1 ; unsigned char broken_intx_masking : 1 ; unsigned char io_window_1k : 1 ; unsigned char irq_managed : 1 ; unsigned char has_secondary_link : 1 ; pci_dev_flags_t dev_flags ; atomic_t enable_cnt ; u32 saved_config_space[16U] ; struct hlist_head saved_cap_space ; struct bin_attribute *rom_attr ; int rom_attr_enabled ; struct bin_attribute *res_attr[17U] ; struct bin_attribute *res_attr_wc[17U] ; struct list_head msi_list ; struct attribute_group const **msi_irq_groups ; struct pci_vpd *vpd ; union __anonunion____missing_field_name_252 __annonCompField76 ; struct pci_ats *ats ; phys_addr_t rom ; size_t romlen ; char *driver_override ; }; struct pci_ops; struct msi_controller; struct pci_bus { struct list_head node ; struct pci_bus *parent ; struct list_head children ; struct list_head devices ; struct pci_dev *self ; struct list_head slots ; struct resource *resource[4U] ; struct list_head resources ; struct resource busn_res ; struct pci_ops *ops ; struct msi_controller *msi ; void *sysdata ; struct proc_dir_entry *procdir ; unsigned char number ; unsigned char primary ; unsigned char max_bus_speed ; unsigned char cur_bus_speed ; char name[48U] ; unsigned short bridge_ctl ; pci_bus_flags_t bus_flags ; struct device *bridge ; struct device dev ; struct bin_attribute *legacy_io ; struct bin_attribute *legacy_mem ; unsigned char is_added : 1 ; }; struct pci_ops { void *(*map_bus)(struct pci_bus * , unsigned int , int ) ; int (*read)(struct pci_bus * , unsigned int , int , int , u32 * ) ; int (*write)(struct pci_bus * , unsigned int , int , int , u32 ) ; }; struct pci_dynids { spinlock_t lock ; struct list_head list ; }; typedef unsigned int pci_ers_result_t; struct pci_error_handlers { pci_ers_result_t (*error_detected)(struct pci_dev * , enum pci_channel_state ) ; pci_ers_result_t (*mmio_enabled)(struct pci_dev * ) ; pci_ers_result_t (*link_reset)(struct pci_dev * ) ; pci_ers_result_t (*slot_reset)(struct pci_dev * ) ; void (*reset_notify)(struct pci_dev * , bool ) ; void (*resume)(struct pci_dev * ) ; }; struct pci_driver { struct list_head node ; char const *name ; struct pci_device_id const *id_table ; int (*probe)(struct pci_dev * , struct pci_device_id const * ) ; void (*remove)(struct pci_dev * ) ; int (*suspend)(struct pci_dev * , pm_message_t ) ; int (*suspend_late)(struct pci_dev * , pm_message_t ) ; int (*resume_early)(struct pci_dev * ) ; int (*resume)(struct pci_dev * ) ; void (*shutdown)(struct pci_dev * ) ; int (*sriov_configure)(struct pci_dev * , int ) ; struct pci_error_handlers const *err_handler ; struct device_driver driver ; struct pci_dynids dynids ; }; struct mfd_cell; struct platform_device { char const *name ; int id ; bool id_auto ; struct device dev ; u32 num_resources ; struct resource *resource ; struct platform_device_id const *id_entry ; char *driver_override ; struct mfd_cell *mfd_cell ; struct pdev_archdata archdata ; }; struct pollfd { int fd ; short events ; short revents ; }; struct poll_table_struct { void (*_qproc)(struct file * , wait_queue_head_t * , struct poll_table_struct * ) ; unsigned long _key ; }; typedef unsigned int drm_magic_t; struct drm_clip_rect { unsigned short x1 ; unsigned short y1 ; unsigned short x2 ; unsigned short y2 ; }; struct drm_hw_lock { unsigned int volatile lock ; char padding[60U] ; }; struct drm_auth { drm_magic_t magic ; }; struct drm_mode_fb_cmd2 { __u32 fb_id ; __u32 width ; __u32 height ; __u32 pixel_format ; __u32 flags ; __u32 handles[4U] ; __u32 pitches[4U] ; __u32 offsets[4U] ; __u64 modifier[4U] ; }; struct drm_mode_create_dumb { uint32_t height ; uint32_t width ; uint32_t bpp ; uint32_t flags ; uint32_t handle ; uint32_t pitch ; uint64_t size ; }; struct drm_event { __u32 type ; __u32 length ; }; struct drm_event_vblank { struct drm_event base ; __u64 user_data ; __u32 tv_sec ; __u32 tv_usec ; __u32 sequence ; __u32 reserved ; }; struct drm_device; struct drm_file; struct drm_agp_head { struct agp_kern_info agp_info ; struct list_head memory ; unsigned long mode ; struct agp_bridge_data *bridge ; int enabled ; int acquired ; unsigned long base ; int agp_mtrr ; int cant_use_aperture ; unsigned long page_mask ; }; enum fwnode_type { FWNODE_INVALID = 0, FWNODE_OF = 1, FWNODE_ACPI = 2, FWNODE_PDATA = 3 } ; struct fwnode_handle { enum fwnode_type type ; struct fwnode_handle *secondary ; }; typedef u32 phandle; struct property { char *name ; int length ; void *value ; struct property *next ; unsigned long _flags ; unsigned int unique_id ; struct bin_attribute attr ; }; struct device_node { char const *name ; char const *type ; phandle phandle ; char const *full_name ; struct fwnode_handle fwnode ; struct property *properties ; struct property *deadprops ; struct device_node *parent ; struct device_node *child ; struct device_node *sibling ; struct kobject kobj ; unsigned long _flags ; void *data ; }; enum hdmi_picture_aspect { HDMI_PICTURE_ASPECT_NONE = 0, HDMI_PICTURE_ASPECT_4_3 = 1, HDMI_PICTURE_ASPECT_16_9 = 2, HDMI_PICTURE_ASPECT_RESERVED = 3 } ; struct ww_class { atomic_long_t stamp ; struct lock_class_key acquire_key ; struct lock_class_key mutex_key ; char const *acquire_name ; char const *mutex_name ; }; struct ww_mutex; struct ww_acquire_ctx { struct task_struct *task ; unsigned long stamp ; unsigned int acquired ; unsigned int done_acquire ; struct ww_class *ww_class ; struct ww_mutex *contending_lock ; struct lockdep_map dep_map ; unsigned int deadlock_inject_interval ; unsigned int deadlock_inject_countdown ; }; struct ww_mutex { struct mutex base ; struct ww_acquire_ctx *ctx ; struct ww_class *ww_class ; }; struct drm_modeset_lock; struct drm_modeset_acquire_ctx { struct ww_acquire_ctx ww_ctx ; struct drm_modeset_lock *contended ; struct list_head locked ; bool trylock_only ; }; struct drm_modeset_lock { struct ww_mutex mutex ; struct list_head head ; }; struct drm_crtc; struct drm_plane; struct drm_mode_set; struct drm_framebuffer; struct drm_object_properties; struct fence; struct drm_mode_object { uint32_t id ; uint32_t type ; struct drm_object_properties *properties ; }; struct drm_property; struct drm_object_properties { int count ; int atomic_count ; struct drm_property *properties[24U] ; uint64_t values[24U] ; }; enum drm_connector_force { DRM_FORCE_UNSPECIFIED = 0, DRM_FORCE_OFF = 1, DRM_FORCE_ON = 2, DRM_FORCE_ON_DIGITAL = 3 } ; enum drm_mode_status { MODE_OK = 0, MODE_HSYNC = 1, MODE_VSYNC = 2, MODE_H_ILLEGAL = 3, MODE_V_ILLEGAL = 4, MODE_BAD_WIDTH = 5, MODE_NOMODE = 6, MODE_NO_INTERLACE = 7, MODE_NO_DBLESCAN = 8, MODE_NO_VSCAN = 9, MODE_MEM = 10, MODE_VIRTUAL_X = 11, MODE_VIRTUAL_Y = 12, MODE_MEM_VIRT = 13, MODE_NOCLOCK = 14, MODE_CLOCK_HIGH = 15, MODE_CLOCK_LOW = 16, MODE_CLOCK_RANGE = 17, MODE_BAD_HVALUE = 18, MODE_BAD_VVALUE = 19, MODE_BAD_VSCAN = 20, MODE_HSYNC_NARROW = 21, MODE_HSYNC_WIDE = 22, MODE_HBLANK_NARROW = 23, MODE_HBLANK_WIDE = 24, MODE_VSYNC_NARROW = 25, MODE_VSYNC_WIDE = 26, MODE_VBLANK_NARROW = 27, MODE_VBLANK_WIDE = 28, MODE_PANEL = 29, MODE_INTERLACE_WIDTH = 30, MODE_ONE_WIDTH = 31, MODE_ONE_HEIGHT = 32, MODE_ONE_SIZE = 33, MODE_NO_REDUCED = 34, MODE_NO_STEREO = 35, MODE_UNVERIFIED = -3, MODE_BAD = -2, MODE_ERROR = -1 } ; struct drm_display_mode { struct list_head head ; struct drm_mode_object base ; char name[32U] ; enum drm_mode_status status ; unsigned int type ; int clock ; int hdisplay ; int hsync_start ; int hsync_end ; int htotal ; int hskew ; int vdisplay ; int vsync_start ; int vsync_end ; int vtotal ; int vscan ; unsigned int flags ; int width_mm ; int height_mm ; int crtc_clock ; int crtc_hdisplay ; int crtc_hblank_start ; int crtc_hblank_end ; int crtc_hsync_start ; int crtc_hsync_end ; int crtc_htotal ; int crtc_hskew ; int crtc_vdisplay ; int crtc_vblank_start ; int crtc_vblank_end ; int crtc_vsync_start ; int crtc_vsync_end ; int crtc_vtotal ; int *private ; int private_flags ; int vrefresh ; int hsync ; enum hdmi_picture_aspect picture_aspect_ratio ; }; struct drm_cmdline_mode { bool specified ; bool refresh_specified ; bool bpp_specified ; int xres ; int yres ; int bpp ; int refresh ; bool rb ; bool interlace ; bool cvt ; bool margins ; enum drm_connector_force force ; }; struct drm_connector; enum drm_connector_status { connector_status_connected = 1, connector_status_disconnected = 2, connector_status_unknown = 3 } ; enum subpixel_order { SubPixelUnknown = 0, SubPixelHorizontalRGB = 1, SubPixelHorizontalBGR = 2, SubPixelVerticalRGB = 3, SubPixelVerticalBGR = 4, SubPixelNone = 5 } ; struct drm_display_info { char name[32U] ; unsigned int width_mm ; unsigned int height_mm ; unsigned int min_vfreq ; unsigned int max_vfreq ; unsigned int min_hfreq ; unsigned int max_hfreq ; unsigned int pixel_clock ; unsigned int bpc ; enum subpixel_order subpixel_order ; u32 color_formats ; u32 const *bus_formats ; unsigned int num_bus_formats ; u8 edid_hdmi_dc_modes ; u8 cea_rev ; }; struct drm_tile_group { struct kref refcount ; struct drm_device *dev ; int id ; u8 group_data[8U] ; }; struct drm_framebuffer_funcs { void (*destroy)(struct drm_framebuffer * ) ; int (*create_handle)(struct drm_framebuffer * , struct drm_file * , unsigned int * ) ; int (*dirty)(struct drm_framebuffer * , struct drm_file * , unsigned int , unsigned int , struct drm_clip_rect * , unsigned int ) ; }; struct drm_framebuffer { struct drm_device *dev ; struct kref refcount ; struct list_head head ; struct drm_mode_object base ; struct drm_framebuffer_funcs const *funcs ; unsigned int pitches[4U] ; unsigned int offsets[4U] ; uint64_t modifier[4U] ; unsigned int width ; unsigned int height ; unsigned int depth ; int bits_per_pixel ; int flags ; uint32_t pixel_format ; struct list_head filp_head ; void *helper_private ; }; struct drm_property_blob { struct drm_mode_object base ; struct drm_device *dev ; struct kref refcount ; struct list_head head_global ; struct list_head head_file ; size_t length ; unsigned char data[] ; }; struct drm_property { struct list_head head ; struct drm_mode_object base ; uint32_t flags ; char name[32U] ; uint32_t num_values ; uint64_t *values ; struct drm_device *dev ; struct list_head enum_list ; }; struct drm_encoder; struct drm_pending_vblank_event; struct drm_bridge; struct drm_atomic_state; struct drm_crtc_state { struct drm_crtc *crtc ; bool enable ; bool active ; bool planes_changed ; bool mode_changed ; bool active_changed ; u32 plane_mask ; u32 last_vblank_count ; struct drm_display_mode adjusted_mode ; struct drm_display_mode mode ; struct drm_property_blob *mode_blob ; struct drm_pending_vblank_event *event ; struct drm_atomic_state *state ; }; struct drm_crtc_funcs { void (*save)(struct drm_crtc * ) ; void (*restore)(struct drm_crtc * ) ; void (*reset)(struct drm_crtc * ) ; int (*cursor_set)(struct drm_crtc * , struct drm_file * , uint32_t , uint32_t , uint32_t ) ; int (*cursor_set2)(struct drm_crtc * , struct drm_file * , uint32_t , uint32_t , uint32_t , int32_t , int32_t ) ; int (*cursor_move)(struct drm_crtc * , int , int ) ; void (*gamma_set)(struct drm_crtc * , u16 * , u16 * , u16 * , uint32_t , uint32_t ) ; void (*destroy)(struct drm_crtc * ) ; int (*set_config)(struct drm_mode_set * ) ; int (*page_flip)(struct drm_crtc * , struct drm_framebuffer * , struct drm_pending_vblank_event * , uint32_t ) ; int (*set_property)(struct drm_crtc * , struct drm_property * , uint64_t ) ; struct drm_crtc_state *(*atomic_duplicate_state)(struct drm_crtc * ) ; void (*atomic_destroy_state)(struct drm_crtc * , struct drm_crtc_state * ) ; int (*atomic_set_property)(struct drm_crtc * , struct drm_crtc_state * , struct drm_property * , uint64_t ) ; int (*atomic_get_property)(struct drm_crtc * , struct drm_crtc_state const * , struct drm_property * , uint64_t * ) ; }; struct drm_crtc { struct drm_device *dev ; struct device_node *port ; struct list_head head ; struct drm_modeset_lock mutex ; struct drm_mode_object base ; struct drm_plane *primary ; struct drm_plane *cursor ; int cursor_x ; int cursor_y ; bool enabled ; struct drm_display_mode mode ; struct drm_display_mode hwmode ; bool invert_dimensions ; int x ; int y ; struct drm_crtc_funcs const *funcs ; uint32_t gamma_size ; uint16_t *gamma_store ; int framedur_ns ; int linedur_ns ; int pixeldur_ns ; void const *helper_private ; struct drm_object_properties properties ; struct drm_crtc_state *state ; struct drm_modeset_acquire_ctx *acquire_ctx ; }; struct drm_connector_state { struct drm_connector *connector ; struct drm_crtc *crtc ; struct drm_encoder *best_encoder ; struct drm_atomic_state *state ; }; struct drm_connector_funcs { void (*dpms)(struct drm_connector * , int ) ; void (*save)(struct drm_connector * ) ; void (*restore)(struct drm_connector * ) ; void (*reset)(struct drm_connector * ) ; enum drm_connector_status (*detect)(struct drm_connector * , bool ) ; int (*fill_modes)(struct drm_connector * , uint32_t , uint32_t ) ; int (*set_property)(struct drm_connector * , struct drm_property * , uint64_t ) ; void (*destroy)(struct drm_connector * ) ; void (*force)(struct drm_connector * ) ; struct drm_connector_state *(*atomic_duplicate_state)(struct drm_connector * ) ; void (*atomic_destroy_state)(struct drm_connector * , struct drm_connector_state * ) ; int (*atomic_set_property)(struct drm_connector * , struct drm_connector_state * , struct drm_property * , uint64_t ) ; int (*atomic_get_property)(struct drm_connector * , struct drm_connector_state const * , struct drm_property * , uint64_t * ) ; }; struct drm_encoder_funcs { void (*reset)(struct drm_encoder * ) ; void (*destroy)(struct drm_encoder * ) ; }; struct drm_encoder { struct drm_device *dev ; struct list_head head ; struct drm_mode_object base ; char *name ; int encoder_type ; uint32_t possible_crtcs ; uint32_t possible_clones ; struct drm_crtc *crtc ; struct drm_bridge *bridge ; struct drm_encoder_funcs const *funcs ; void const *helper_private ; }; struct drm_connector { struct drm_device *dev ; struct device *kdev ; struct device_attribute *attr ; struct list_head head ; struct drm_mode_object base ; char *name ; int connector_type ; int connector_type_id ; bool interlace_allowed ; bool doublescan_allowed ; bool stereo_allowed ; struct list_head modes ; enum drm_connector_status status ; struct list_head probed_modes ; struct drm_display_info display_info ; struct drm_connector_funcs const *funcs ; struct drm_property_blob *edid_blob_ptr ; struct drm_object_properties properties ; struct drm_property_blob *path_blob_ptr ; struct drm_property_blob *tile_blob_ptr ; uint8_t polled ; int dpms ; void const *helper_private ; struct drm_cmdline_mode cmdline_mode ; enum drm_connector_force force ; bool override_edid ; uint32_t encoder_ids[3U] ; struct drm_encoder *encoder ; uint8_t eld[128U] ; bool dvi_dual ; int max_tmds_clock ; bool latency_present[2U] ; int video_latency[2U] ; int audio_latency[2U] ; int null_edid_counter ; unsigned int bad_edid_counter ; bool edid_corrupt ; struct dentry *debugfs_entry ; struct drm_connector_state *state ; bool has_tile ; struct drm_tile_group *tile_group ; bool tile_is_single_monitor ; uint8_t num_h_tile ; uint8_t num_v_tile ; uint8_t tile_h_loc ; uint8_t tile_v_loc ; uint16_t tile_h_size ; uint16_t tile_v_size ; struct list_head destroy_list ; }; struct drm_plane_state { struct drm_plane *plane ; struct drm_crtc *crtc ; struct drm_framebuffer *fb ; struct fence *fence ; int32_t crtc_x ; int32_t crtc_y ; uint32_t crtc_w ; uint32_t crtc_h ; uint32_t src_x ; uint32_t src_y ; uint32_t src_h ; uint32_t src_w ; unsigned int rotation ; struct drm_atomic_state *state ; }; struct drm_plane_funcs { int (*update_plane)(struct drm_plane * , struct drm_crtc * , struct drm_framebuffer * , int , int , unsigned int , unsigned int , uint32_t , uint32_t , uint32_t , uint32_t ) ; int (*disable_plane)(struct drm_plane * ) ; void (*destroy)(struct drm_plane * ) ; void (*reset)(struct drm_plane * ) ; int (*set_property)(struct drm_plane * , struct drm_property * , uint64_t ) ; struct drm_plane_state *(*atomic_duplicate_state)(struct drm_plane * ) ; void (*atomic_destroy_state)(struct drm_plane * , struct drm_plane_state * ) ; int (*atomic_set_property)(struct drm_plane * , struct drm_plane_state * , struct drm_property * , uint64_t ) ; int (*atomic_get_property)(struct drm_plane * , struct drm_plane_state const * , struct drm_property * , uint64_t * ) ; }; enum drm_plane_type { DRM_PLANE_TYPE_OVERLAY = 0, DRM_PLANE_TYPE_PRIMARY = 1, DRM_PLANE_TYPE_CURSOR = 2 } ; struct drm_plane { struct drm_device *dev ; struct list_head head ; struct drm_modeset_lock mutex ; struct drm_mode_object base ; uint32_t possible_crtcs ; uint32_t *format_types ; uint32_t format_count ; bool format_default ; struct drm_crtc *crtc ; struct drm_framebuffer *fb ; struct drm_framebuffer *old_fb ; struct drm_plane_funcs const *funcs ; struct drm_object_properties properties ; enum drm_plane_type type ; void const *helper_private ; struct drm_plane_state *state ; }; struct drm_bridge_funcs { int (*attach)(struct drm_bridge * ) ; bool (*mode_fixup)(struct drm_bridge * , struct drm_display_mode const * , struct drm_display_mode * ) ; void (*disable)(struct drm_bridge * ) ; void (*post_disable)(struct drm_bridge * ) ; void (*mode_set)(struct drm_bridge * , struct drm_display_mode * , struct drm_display_mode * ) ; void (*pre_enable)(struct drm_bridge * ) ; void (*enable)(struct drm_bridge * ) ; }; struct drm_bridge { struct drm_device *dev ; struct drm_encoder *encoder ; struct drm_bridge *next ; struct device_node *of_node ; struct list_head list ; struct drm_bridge_funcs const *funcs ; void *driver_private ; }; struct drm_atomic_state { struct drm_device *dev ; bool allow_modeset ; bool legacy_cursor_update ; struct drm_plane **planes ; struct drm_plane_state **plane_states ; struct drm_crtc **crtcs ; struct drm_crtc_state **crtc_states ; int num_connector ; struct drm_connector **connectors ; struct drm_connector_state **connector_states ; struct drm_modeset_acquire_ctx *acquire_ctx ; }; struct drm_mode_set { struct drm_framebuffer *fb ; struct drm_crtc *crtc ; struct drm_display_mode *mode ; uint32_t x ; uint32_t y ; struct drm_connector **connectors ; size_t num_connectors ; }; struct drm_mode_config_funcs { struct drm_framebuffer *(*fb_create)(struct drm_device * , struct drm_file * , struct drm_mode_fb_cmd2 * ) ; void (*output_poll_changed)(struct drm_device * ) ; int (*atomic_check)(struct drm_device * , struct drm_atomic_state * ) ; int (*atomic_commit)(struct drm_device * , struct drm_atomic_state * , bool ) ; struct drm_atomic_state *(*atomic_state_alloc)(struct drm_device * ) ; void (*atomic_state_clear)(struct drm_atomic_state * ) ; void (*atomic_state_free)(struct drm_atomic_state * ) ; }; struct drm_mode_group { uint32_t num_crtcs ; uint32_t num_encoders ; uint32_t num_connectors ; uint32_t *id_list ; }; struct drm_mode_config { struct mutex mutex ; struct drm_modeset_lock connection_mutex ; struct drm_modeset_acquire_ctx *acquire_ctx ; struct mutex idr_mutex ; struct idr crtc_idr ; struct idr tile_idr ; struct mutex fb_lock ; int num_fb ; struct list_head fb_list ; int num_connector ; struct list_head connector_list ; int num_encoder ; struct list_head encoder_list ; int num_overlay_plane ; int num_total_plane ; struct list_head plane_list ; int num_crtc ; struct list_head crtc_list ; struct list_head property_list ; int min_width ; int min_height ; int max_width ; int max_height ; struct drm_mode_config_funcs const *funcs ; resource_size_t fb_base ; bool poll_enabled ; bool poll_running ; bool delayed_event ; struct delayed_work output_poll_work ; struct mutex blob_lock ; struct list_head property_blob_list ; struct drm_property *edid_property ; struct drm_property *dpms_property ; struct drm_property *path_property ; struct drm_property *tile_property ; struct drm_property *plane_type_property ; struct drm_property *rotation_property ; struct drm_property *prop_src_x ; struct drm_property *prop_src_y ; struct drm_property *prop_src_w ; struct drm_property *prop_src_h ; struct drm_property *prop_crtc_x ; struct drm_property *prop_crtc_y ; struct drm_property *prop_crtc_w ; struct drm_property *prop_crtc_h ; struct drm_property *prop_fb_id ; struct drm_property *prop_crtc_id ; struct drm_property *prop_active ; struct drm_property *prop_mode_id ; struct drm_property *dvi_i_subconnector_property ; struct drm_property *dvi_i_select_subconnector_property ; struct drm_property *tv_subconnector_property ; struct drm_property *tv_select_subconnector_property ; struct drm_property *tv_mode_property ; struct drm_property *tv_left_margin_property ; struct drm_property *tv_right_margin_property ; struct drm_property *tv_top_margin_property ; struct drm_property *tv_bottom_margin_property ; struct drm_property *tv_brightness_property ; struct drm_property *tv_contrast_property ; struct drm_property *tv_flicker_reduction_property ; struct drm_property *tv_overscan_property ; struct drm_property *tv_saturation_property ; struct drm_property *tv_hue_property ; struct drm_property *scaling_mode_property ; struct drm_property *aspect_ratio_property ; struct drm_property *dirty_info_property ; struct drm_property *suggested_x_property ; struct drm_property *suggested_y_property ; uint32_t preferred_depth ; uint32_t prefer_shadow ; bool async_page_flip ; bool allow_fb_modifiers ; uint32_t cursor_width ; uint32_t cursor_height ; }; struct drm_open_hash { struct hlist_head *table ; u8 order ; }; struct drm_mm; struct drm_mm_node { struct list_head node_list ; struct list_head hole_stack ; unsigned char hole_follows : 1 ; unsigned char scanned_block : 1 ; unsigned char scanned_prev_free : 1 ; unsigned char scanned_next_free : 1 ; unsigned char scanned_preceeds_hole : 1 ; unsigned char allocated : 1 ; unsigned long color ; u64 start ; u64 size ; struct drm_mm *mm ; }; struct drm_mm { struct list_head hole_stack ; struct drm_mm_node head_node ; unsigned char scan_check_range : 1 ; unsigned int scan_alignment ; unsigned long scan_color ; u64 scan_size ; u64 scan_hit_start ; u64 scan_hit_end ; unsigned int scanned_blocks ; u64 scan_start ; u64 scan_end ; struct drm_mm_node *prev_scanned_node ; void (*color_adjust)(struct drm_mm_node * , unsigned long , u64 * , u64 * ) ; }; struct drm_vma_offset_manager { rwlock_t vm_lock ; struct rb_root vm_addr_space_rb ; struct drm_mm vm_addr_space_mm ; }; struct drm_local_map; struct drm_device_dma; struct drm_gem_object; struct reservation_object; typedef int drm_ioctl_t(struct drm_device * , void * , struct drm_file * ); struct drm_ioctl_desc { unsigned int cmd ; int flags ; drm_ioctl_t *func ; char const *name ; }; struct drm_pending_event { struct drm_event *event ; struct list_head link ; struct drm_file *file_priv ; pid_t pid ; void (*destroy)(struct drm_pending_event * ) ; }; struct drm_prime_file_private { struct list_head head ; struct mutex lock ; }; struct drm_minor; struct drm_master; struct drm_file { unsigned char authenticated : 1 ; unsigned char is_master : 1 ; unsigned char stereo_allowed : 1 ; unsigned char universal_planes : 1 ; unsigned char atomic : 1 ; struct pid *pid ; kuid_t uid ; drm_magic_t magic ; struct list_head lhead ; struct drm_minor *minor ; unsigned long lock_count ; struct idr object_idr ; spinlock_t table_lock ; struct file *filp ; void *driver_priv ; struct drm_master *master ; struct list_head fbs ; struct mutex fbs_lock ; struct list_head blobs ; wait_queue_head_t event_wait ; struct list_head event_list ; int event_space ; struct drm_prime_file_private prime ; }; struct drm_lock_data { struct drm_hw_lock *hw_lock ; struct drm_file *file_priv ; wait_queue_head_t lock_queue ; unsigned long lock_time ; spinlock_t spinlock ; uint32_t kernel_waiters ; uint32_t user_waiters ; int idle_has_lock ; }; struct drm_master { struct kref refcount ; struct drm_minor *minor ; char *unique ; int unique_len ; struct idr magic_map ; struct drm_lock_data lock ; void *driver_priv ; }; struct drm_driver { int (*load)(struct drm_device * , unsigned long ) ; int (*firstopen)(struct drm_device * ) ; int (*open)(struct drm_device * , struct drm_file * ) ; void (*preclose)(struct drm_device * , struct drm_file * ) ; void (*postclose)(struct drm_device * , struct drm_file * ) ; void (*lastclose)(struct drm_device * ) ; int (*unload)(struct drm_device * ) ; int (*suspend)(struct drm_device * , pm_message_t ) ; int (*resume)(struct drm_device * ) ; int (*dma_ioctl)(struct drm_device * , void * , struct drm_file * ) ; int (*dma_quiescent)(struct drm_device * ) ; int (*context_dtor)(struct drm_device * , int ) ; int (*set_busid)(struct drm_device * , struct drm_master * ) ; u32 (*get_vblank_counter)(struct drm_device * , int ) ; int (*enable_vblank)(struct drm_device * , int ) ; void (*disable_vblank)(struct drm_device * , int ) ; int (*device_is_agp)(struct drm_device * ) ; int (*get_scanout_position)(struct drm_device * , int , unsigned int , int * , int * , ktime_t * , ktime_t * ) ; int (*get_vblank_timestamp)(struct drm_device * , int , int * , struct timeval * , unsigned int ) ; irqreturn_t (*irq_handler)(int , void * ) ; void (*irq_preinstall)(struct drm_device * ) ; int (*irq_postinstall)(struct drm_device * ) ; void (*irq_uninstall)(struct drm_device * ) ; int (*master_create)(struct drm_device * , struct drm_master * ) ; void (*master_destroy)(struct drm_device * , struct drm_master * ) ; int (*master_set)(struct drm_device * , struct drm_file * , bool ) ; void (*master_drop)(struct drm_device * , struct drm_file * , bool ) ; int (*debugfs_init)(struct drm_minor * ) ; void (*debugfs_cleanup)(struct drm_minor * ) ; void (*gem_free_object)(struct drm_gem_object * ) ; int (*gem_open_object)(struct drm_gem_object * , struct drm_file * ) ; void (*gem_close_object)(struct drm_gem_object * , struct drm_file * ) ; int (*prime_handle_to_fd)(struct drm_device * , struct drm_file * , uint32_t , uint32_t , int * ) ; int (*prime_fd_to_handle)(struct drm_device * , struct drm_file * , int , uint32_t * ) ; struct dma_buf *(*gem_prime_export)(struct drm_device * , struct drm_gem_object * , int ) ; struct drm_gem_object *(*gem_prime_import)(struct drm_device * , struct dma_buf * ) ; int (*gem_prime_pin)(struct drm_gem_object * ) ; void (*gem_prime_unpin)(struct drm_gem_object * ) ; struct reservation_object *(*gem_prime_res_obj)(struct drm_gem_object * ) ; struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object * ) ; struct drm_gem_object *(*gem_prime_import_sg_table)(struct drm_device * , struct dma_buf_attachment * , struct sg_table * ) ; void *(*gem_prime_vmap)(struct drm_gem_object * ) ; void (*gem_prime_vunmap)(struct drm_gem_object * , void * ) ; int (*gem_prime_mmap)(struct drm_gem_object * , struct vm_area_struct * ) ; void (*vgaarb_irq)(struct drm_device * , bool ) ; int (*dumb_create)(struct drm_file * , struct drm_device * , struct drm_mode_create_dumb * ) ; int (*dumb_map_offset)(struct drm_file * , struct drm_device * , uint32_t , uint64_t * ) ; int (*dumb_destroy)(struct drm_file * , struct drm_device * , uint32_t ) ; struct vm_operations_struct const *gem_vm_ops ; int major ; int minor ; int patchlevel ; char *name ; char *desc ; char *date ; u32 driver_features ; int dev_priv_size ; struct drm_ioctl_desc const *ioctls ; int num_ioctls ; struct file_operations const *fops ; struct list_head legacy_dev_list ; }; struct drm_minor { int index ; int type ; struct device *kdev ; struct drm_device *dev ; struct dentry *debugfs_root ; struct list_head debugfs_list ; struct mutex debugfs_lock ; struct drm_master *master ; struct drm_mode_group mode_group ; }; struct drm_pending_vblank_event { struct drm_pending_event base ; int pipe ; struct drm_event_vblank event ; }; struct drm_vblank_crtc { struct drm_device *dev ; wait_queue_head_t queue ; struct timer_list disable_timer ; unsigned long count ; struct timeval time[2U] ; atomic_t refcount ; u32 last ; u32 last_wait ; unsigned int inmodeset ; int crtc ; bool enabled ; }; struct virtio_device; struct drm_sg_mem; struct __anonstruct_sigdata_257 { int context ; struct drm_hw_lock *lock ; }; struct drm_device { struct list_head legacy_dev_list ; int if_version ; struct kref ref ; struct device *dev ; struct drm_driver *driver ; void *dev_private ; struct drm_minor *control ; struct drm_minor *primary ; struct drm_minor *render ; atomic_t unplugged ; struct inode *anon_inode ; char *unique ; struct mutex struct_mutex ; struct mutex master_mutex ; int open_count ; spinlock_t buf_lock ; int buf_use ; atomic_t buf_alloc ; struct list_head filelist ; struct list_head maplist ; struct drm_open_hash map_hash ; struct list_head ctxlist ; struct mutex ctxlist_mutex ; struct idr ctx_idr ; struct list_head vmalist ; struct drm_device_dma *dma ; long volatile context_flag ; int last_context ; bool irq_enabled ; int irq ; bool vblank_disable_allowed ; bool vblank_disable_immediate ; struct drm_vblank_crtc *vblank ; spinlock_t vblank_time_lock ; spinlock_t vbl_lock ; u32 max_vblank_count ; struct list_head vblank_event_list ; spinlock_t event_lock ; struct drm_agp_head *agp ; struct pci_dev *pdev ; struct platform_device *platformdev ; struct virtio_device *virtdev ; struct drm_sg_mem *sg ; unsigned int num_crtcs ; sigset_t sigmask ; struct __anonstruct_sigdata_257 sigdata ; struct drm_local_map *agp_buffer_map ; unsigned int agp_buffer_token ; struct drm_mode_config mode_config ; struct mutex object_name_lock ; struct idr object_name_idr ; struct drm_vma_offset_manager *vma_offset_manager ; int switch_power_state ; }; typedef bool ldv_func_ret_type; typedef bool ldv_func_ret_type___0; typedef bool ldv_func_ret_type___1; typedef bool ldv_func_ret_type___2; typedef __kernel_long_t __kernel_off_t; typedef __kernel_off_t off_t; enum hrtimer_restart; struct agp_memory { struct agp_memory *next ; struct agp_memory *prev ; struct agp_bridge_data *bridge ; struct page **pages ; size_t page_count ; int key ; int num_scratch_pages ; off_t pg_start ; u32 type ; u32 physical ; bool is_bound ; bool is_flushed ; struct list_head mapped_list ; struct scatterlist *sg_list ; int num_sg ; }; enum drm_map_type { _DRM_FRAME_BUFFER = 0, _DRM_REGISTERS = 1, _DRM_SHM = 2, _DRM_AGP = 3, _DRM_SCATTER_GATHER = 4, _DRM_CONSISTENT = 5 } ; enum drm_map_flags { _DRM_RESTRICTED = 1, _DRM_READ_ONLY = 2, _DRM_LOCKED = 4, _DRM_KERNEL = 8, _DRM_WRITE_COMBINING = 16, _DRM_CONTAINS_LOCK = 32, _DRM_REMOVABLE = 64, _DRM_DRIVER = 128 } ; struct drm_map { unsigned long offset ; unsigned long size ; enum drm_map_type type ; enum drm_map_flags flags ; void *handle ; int mtrr ; }; enum ldv_26020 { _DRM_PAGE_ALIGN = 1, _DRM_AGP_BUFFER = 2, _DRM_SG_BUFFER = 4, _DRM_FB_BUFFER = 8, _DRM_PCI_BUFFER_RO = 16 } ; struct drm_buf_desc { int count ; int size ; int low_mark ; int high_mark ; enum ldv_26020 flags ; unsigned long agp_start ; }; struct drm_buf_info { int count ; struct drm_buf_desc *list ; }; struct drm_buf_free { int count ; int *list ; }; struct drm_buf_pub { int idx ; int total ; int used ; void *address ; }; struct drm_buf_map { int count ; void *virtual ; struct drm_buf_pub *list ; }; struct drm_hash_item { struct hlist_node head ; unsigned long key ; }; struct drm_dma_handle; enum ldv_28379 { DRM_LIST_NONE = 0, DRM_LIST_FREE = 1, DRM_LIST_WAIT = 2, DRM_LIST_PEND = 3, DRM_LIST_PRIO = 4, DRM_LIST_RECLAIM = 5 } ; struct drm_buf { int idx ; int total ; int order ; int used ; unsigned long offset ; void *address ; unsigned long bus_address ; struct drm_buf *next ; int volatile waiting ; int volatile pending ; struct drm_file *file_priv ; int context ; int while_locked ; enum ldv_28379 list ; int dev_priv_size ; void *dev_private ; }; struct drm_dma_handle { dma_addr_t busaddr ; void *vaddr ; size_t size ; }; typedef struct drm_dma_handle drm_dma_handle_t; struct drm_buf_entry { int buf_size ; int buf_count ; struct drm_buf *buflist ; int seg_count ; int page_order ; struct drm_dma_handle **seglist ; int low_mark ; int high_mark ; }; enum ldv_28387 { _DRM_DMA_USE_AGP = 1, _DRM_DMA_USE_SG = 2, _DRM_DMA_USE_FB = 4, _DRM_DMA_USE_PCI_RO = 8 } ; struct drm_device_dma { struct drm_buf_entry bufs[23U] ; int buf_count ; struct drm_buf **buflist ; int seg_count ; int page_count ; unsigned long *pagelist ; unsigned long byte_count ; enum ldv_28387 flags ; }; struct drm_sg_mem { unsigned long handle ; void *virtual ; int pages ; struct page **pagelist ; dma_addr_t *busaddr ; }; struct drm_local_map { resource_size_t offset ; unsigned long size ; enum drm_map_type type ; enum drm_map_flags flags ; void *handle ; int mtrr ; }; struct drm_map_list { struct list_head head ; struct drm_hash_item hash ; struct drm_local_map *map ; uint64_t user_token ; struct drm_master *master ; }; struct drm_agp_mem { unsigned long handle ; struct agp_memory *memory ; unsigned long bound ; int pages ; struct list_head head ; }; struct cpuinfo_x86; struct cpuinfo_x86 { __u8 x86 ; __u8 x86_vendor ; __u8 x86_model ; __u8 x86_mask ; int x86_tlbsize ; __u8 x86_virt_bits ; __u8 x86_phys_bits ; __u8 x86_coreid_bits ; __u32 extended_cpuid_level ; int cpuid_level ; __u32 x86_capability[14U] ; char x86_vendor_id[16U] ; char x86_model_id[64U] ; int x86_cache_size ; int x86_cache_alignment ; int x86_cache_max_rmid ; int x86_cache_occ_scale ; int x86_power ; unsigned long loops_per_jiffy ; u16 x86_max_cores ; u16 apicid ; u16 initial_apicid ; u16 x86_clflush_size ; u16 booted_cores ; u16 phys_proc_id ; u16 cpu_core_id ; u8 compute_unit_id ; u16 cpu_index ; u32 microcode ; }; typedef int pao_T__; typedef int pao_T_____0; enum hrtimer_restart; struct sg_page_iter { struct scatterlist *sg ; unsigned int sg_pgoffset ; unsigned int __nents ; int __pg_advance ; }; enum hrtimer_restart; union __anonunion___u_168___0 { struct idr_layer *__val ; char __c[1U] ; }; union __anonunion___u_170___0 { struct idr_layer *__val ; char __c[1U] ; }; typedef unsigned int drm_context_t; struct drm_ctx_priv_map { unsigned int ctx_id ; void *handle ; }; enum drm_ctx_flags { _DRM_CONTEXT_PRESERVED = 1, _DRM_CONTEXT_2DONLY = 2 } ; struct drm_ctx { drm_context_t handle ; enum drm_ctx_flags flags ; }; struct drm_ctx_res { int count ; struct drm_ctx *contexts ; }; struct drm_ctx_list { struct list_head head ; drm_context_t handle ; struct drm_file *tag ; }; enum hrtimer_restart; struct tss_struct; 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 ; }; struct tss_struct { struct x86_hw_tss x86_tss ; unsigned long io_bitmap[1025U] ; unsigned long SYSENTER_stack[64U] ; }; struct __anonstruct_mm_segment_t_33 { unsigned long seg ; }; typedef struct __anonstruct_mm_segment_t_33 mm_segment_t; 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 ; }; struct __wait_queue; typedef struct __wait_queue wait_queue_t; struct __wait_queue { unsigned int flags ; void *private ; int (*func)(wait_queue_t * , unsigned int , int , void * ) ; struct list_head task_list ; }; enum hrtimer_restart; struct __large_struct { unsigned long buf[100U] ; }; typedef struct poll_table_struct poll_table; enum hrtimer_restart; union __anonunion___u_168___1 { struct idr_layer *__val ; char __c[1U] ; }; union __anonunion___u_170___1 { struct idr_layer *__val ; char __c[1U] ; }; struct taskstats { __u16 version ; __u32 ac_exitcode ; __u8 ac_flag ; __u8 ac_nice ; __u64 cpu_count ; __u64 cpu_delay_total ; __u64 blkio_count ; __u64 blkio_delay_total ; __u64 swapin_count ; __u64 swapin_delay_total ; __u64 cpu_run_real_total ; __u64 cpu_run_virtual_total ; char ac_comm[32U] ; __u8 ac_sched ; __u8 ac_pad[3U] ; __u32 ac_uid ; __u32 ac_gid ; __u32 ac_pid ; __u32 ac_ppid ; __u32 ac_btime ; __u64 ac_etime ; __u64 ac_utime ; __u64 ac_stime ; __u64 ac_minflt ; __u64 ac_majflt ; __u64 coremem ; __u64 virtmem ; __u64 hiwater_rss ; __u64 hiwater_vm ; __u64 read_char ; __u64 write_char ; __u64 read_syscalls ; __u64 write_syscalls ; __u64 read_bytes ; __u64 write_bytes ; __u64 cancelled_write_bytes ; __u64 nvcsw ; __u64 nivcsw ; __u64 ac_utimescaled ; __u64 ac_stimescaled ; __u64 cpu_scaled_run_real_total ; __u64 freepages_count ; __u64 freepages_delay_total ; }; struct reclaim_state { unsigned long reclaimed_slab ; }; struct swap_extent { struct list_head list ; unsigned long start_page ; unsigned long nr_pages ; sector_t start_block ; }; struct swap_cluster_info { unsigned int data : 24 ; unsigned char flags ; }; struct percpu_cluster { struct swap_cluster_info index ; unsigned int next ; }; struct swap_info_struct { unsigned long flags ; short prio ; struct plist_node list ; struct plist_node avail_list ; signed char type ; unsigned int max ; unsigned char *swap_map ; struct swap_cluster_info *cluster_info ; struct swap_cluster_info free_cluster_head ; struct swap_cluster_info free_cluster_tail ; unsigned int lowest_bit ; unsigned int highest_bit ; unsigned int pages ; unsigned int inuse_pages ; unsigned int cluster_next ; unsigned int cluster_nr ; struct percpu_cluster *percpu_cluster ; struct swap_extent *curr_swap_extent ; struct swap_extent first_swap_extent ; struct block_device *bdev ; struct file *swap_file ; unsigned int old_block_size ; unsigned long *frontswap_map ; atomic_t frontswap_pages ; spinlock_t lock ; struct work_struct discard_work ; struct swap_cluster_info discard_cluster_head ; struct swap_cluster_info discard_cluster_tail ; }; union __anonunion_v_259 { short preferred_node ; nodemask_t nodes ; }; union __anonunion_w_260 { nodemask_t cpuset_mems_allowed ; nodemask_t user_nodemask ; }; struct mempolicy { atomic_t refcnt ; unsigned short mode ; unsigned short flags ; union __anonunion_v_259 v ; union __anonunion_w_260 w ; }; struct xattr_handler { char const *prefix ; int flags ; size_t (*list)(struct dentry * , char * , size_t , char const * , size_t , int ) ; int (*get)(struct dentry * , char const * , void * , size_t , int ) ; int (*set)(struct dentry * , char const * , void const * , size_t , int , int ) ; }; struct fence_ops; struct fence_cb; struct fence { struct kref refcount ; struct fence_ops const *ops ; struct callback_head rcu ; struct list_head cb_list ; spinlock_t *lock ; unsigned int context ; unsigned int seqno ; unsigned long flags ; ktime_t timestamp ; int status ; }; struct fence_cb { struct list_head node ; void (*func)(struct fence * , struct fence_cb * ) ; }; struct fence_ops { char const *(*get_driver_name)(struct fence * ) ; char const *(*get_timeline_name)(struct fence * ) ; bool (*enable_signaling)(struct fence * ) ; bool (*signaled)(struct fence * ) ; long (*wait)(struct fence * , bool , long ) ; void (*release)(struct fence * ) ; int (*fill_driver_data)(struct fence * , void * , int ) ; void (*fence_value_str)(struct fence * , char * , int ) ; void (*timeline_value_str)(struct fence * , char * , int ) ; }; struct dma_buf_ops { int (*attach)(struct dma_buf * , struct device * , struct dma_buf_attachment * ) ; void (*detach)(struct dma_buf * , struct dma_buf_attachment * ) ; struct sg_table *(*map_dma_buf)(struct dma_buf_attachment * , enum dma_data_direction ) ; void (*unmap_dma_buf)(struct dma_buf_attachment * , struct sg_table * , enum dma_data_direction ) ; void (*release)(struct dma_buf * ) ; int (*begin_cpu_access)(struct dma_buf * , size_t , size_t , enum dma_data_direction ) ; void (*end_cpu_access)(struct dma_buf * , size_t , size_t , enum dma_data_direction ) ; void *(*kmap_atomic)(struct dma_buf * , unsigned long ) ; void (*kunmap_atomic)(struct dma_buf * , unsigned long , void * ) ; void *(*kmap)(struct dma_buf * , unsigned long ) ; void (*kunmap)(struct dma_buf * , unsigned long , void * ) ; int (*mmap)(struct dma_buf * , struct vm_area_struct * ) ; void *(*vmap)(struct dma_buf * ) ; void (*vunmap)(struct dma_buf * , void * ) ; }; struct dma_buf_poll_cb_t { struct fence_cb cb ; wait_queue_head_t *poll ; unsigned long active ; }; struct dma_buf { size_t size ; struct file *file ; struct list_head attachments ; struct dma_buf_ops const *ops ; struct mutex lock ; unsigned int vmapping_counter ; void *vmap_ptr ; char const *exp_name ; struct module *owner ; struct list_head list_node ; void *priv ; struct reservation_object *resv ; wait_queue_head_t poll ; struct dma_buf_poll_cb_t cb_excl ; struct dma_buf_poll_cb_t cb_shared ; }; struct dma_buf_attachment { struct dma_buf *dmabuf ; struct device *dev ; struct list_head node ; void *priv ; }; struct drm_gem_close { __u32 handle ; __u32 pad ; }; struct drm_gem_flink { __u32 handle ; __u32 name ; }; struct drm_gem_open { __u32 name ; __u32 handle ; __u64 size ; }; struct drm_vma_offset_node { rwlock_t vm_lock ; struct drm_mm_node vm_node ; struct rb_node vm_rb ; struct rb_root vm_files ; }; struct drm_gem_object { struct kref refcount ; unsigned int handle_count ; struct drm_device *dev ; struct file *filp ; struct drm_vma_offset_node vma_node ; size_t size ; int name ; uint32_t read_domains ; uint32_t write_domain ; uint32_t pending_read_domains ; uint32_t pending_write_domain ; struct dma_buf *dma_buf ; struct dma_buf_attachment *import_attach ; }; enum hrtimer_restart; struct drm_version { int version_major ; int version_minor ; int version_patchlevel ; size_t name_len ; char *name ; size_t date_len ; char *date ; size_t desc_len ; char *desc ; }; struct drm_unique { size_t unique_len ; char *unique ; }; struct drm_client { int idx ; int auth ; unsigned long pid ; unsigned long uid ; unsigned long magic ; unsigned long iocs ; }; enum drm_stat_type { _DRM_STAT_LOCK = 0, _DRM_STAT_OPENS = 1, _DRM_STAT_CLOSES = 2, _DRM_STAT_IOCTLS = 3, _DRM_STAT_LOCKS = 4, _DRM_STAT_UNLOCKS = 5, _DRM_STAT_VALUE = 6, _DRM_STAT_BYTE = 7, _DRM_STAT_COUNT = 8, _DRM_STAT_IRQ = 9, _DRM_STAT_PRIMARY = 10, _DRM_STAT_SECONDARY = 11, _DRM_STAT_DMA = 12, _DRM_STAT_SPECIAL = 13, _DRM_STAT_MISSED = 14 } ; struct __anonstruct_data_254 { unsigned long value ; enum drm_stat_type type ; }; struct drm_stats { unsigned long count ; struct __anonstruct_data_254 data[15U] ; }; struct drm_set_version { int drm_di_major ; int drm_di_minor ; int drm_dd_major ; int drm_dd_minor ; }; struct drm_get_cap { __u64 capability ; __u64 value ; }; struct drm_set_client_cap { __u64 capability ; __u64 value ; }; struct paravirt_callee_save { void *func ; }; struct pv_irq_ops { struct paravirt_callee_save save_fl ; struct paravirt_callee_save restore_fl ; struct paravirt_callee_save irq_disable ; struct paravirt_callee_save irq_enable ; void (*safe_halt)(void) ; void (*halt)(void) ; void (*adjust_exception_frame)(void) ; }; struct static_key; struct static_key { atomic_t enabled ; }; enum tk_offsets { TK_OFFS_REAL = 0, TK_OFFS_BOOT = 1, TK_OFFS_TAI = 2, TK_OFFS_MAX = 3 } ; enum hrtimer_restart; enum ldv_26008 { DRM_ADD_COMMAND = 0, DRM_RM_COMMAND = 1, DRM_INST_HANDLER = 2, DRM_UNINST_HANDLER = 3 } ; struct drm_control { enum ldv_26008 func ; int irq ; }; enum drm_vblank_seq_type { _DRM_VBLANK_ABSOLUTE = 0, _DRM_VBLANK_RELATIVE = 1, _DRM_VBLANK_HIGH_CRTC_MASK = 62, _DRM_VBLANK_EVENT = 67108864, _DRM_VBLANK_FLIP = 134217728, _DRM_VBLANK_NEXTONMISS = 268435456, _DRM_VBLANK_SECONDARY = 536870912, _DRM_VBLANK_SIGNAL = 1073741824 } ; struct drm_wait_vblank_request { enum drm_vblank_seq_type type ; unsigned int sequence ; unsigned long signal ; }; struct drm_wait_vblank_reply { enum drm_vblank_seq_type type ; unsigned int sequence ; long tval_sec ; long tval_usec ; }; union drm_wait_vblank { struct drm_wait_vblank_request request ; struct drm_wait_vblank_reply reply ; }; struct drm_modeset_ctl { __u32 crtc ; __u32 cmd ; }; struct tracepoint_func { void *func ; void *data ; }; struct tracepoint { char const *name ; struct static_key key ; void (*regfunc)(void) ; void (*unregfunc)(void) ; struct tracepoint_func *funcs ; }; struct trace_enum_map { char const *system ; char const *enum_string ; unsigned long enum_value ; }; union __anonunion___u_259 { struct tracepoint_func *__val ; char __c[1U] ; }; union __anonunion___u_261 { struct tracepoint_func *__val ; char __c[1U] ; }; union __anonunion___u_263 { struct tracepoint_func *__val ; char __c[1U] ; }; union __anonunion___u_265 { struct tracepoint_func *__val ; char __c[1U] ; }; union __anonunion___u_267 { struct tracepoint_func *__val ; char __c[1U] ; }; union __anonunion___u_269 { struct tracepoint_func *__val ; char __c[1U] ; }; typedef int ldv_func_ret_type___3; typedef int ldv_func_ret_type___4; enum hrtimer_restart; enum drm_lock_flags { _DRM_LOCK_READY = 1, _DRM_LOCK_QUIESCENT = 2, _DRM_LOCK_FLUSH = 4, _DRM_LOCK_FLUSH_ALL = 8, _DRM_HALT_ALL_QUEUES = 16, _DRM_HALT_CUR_QUEUES = 32 } ; struct drm_lock { int context ; enum drm_lock_flags flags ; }; enum page_cache_mode { _PAGE_CACHE_MODE_WB = 0, _PAGE_CACHE_MODE_WC = 1, _PAGE_CACHE_MODE_UC_MINUS = 2, _PAGE_CACHE_MODE_UC = 3, _PAGE_CACHE_MODE_WT = 4, _PAGE_CACHE_MODE_WP = 5, _PAGE_CACHE_MODE_NUM = 8 } ; enum hrtimer_restart; struct va_list; typedef __builtin_va_list __gnuc_va_list; typedef __gnuc_va_list va_list; struct va_format { char const *fmt ; va_list *va ; }; enum hrtimer_restart; union __anonunion___u_168___2 { struct idr_layer *__val ; char __c[1U] ; }; union __anonunion___u_170___2 { struct idr_layer *__val ; char __c[1U] ; }; struct vfsmount { struct dentry *mnt_root ; struct super_block *mnt_sb ; int mnt_flags ; }; enum hrtimer_restart; struct drm_info_list { char const *name ; int (*show)(struct seq_file * , void * ) ; u32 driver_features ; void *data ; }; struct drm_info_node { struct list_head list ; struct drm_minor *minor ; struct drm_info_list const *info_ent ; struct dentry *dent ; }; struct drm_vma_entry { struct list_head head ; struct vm_area_struct *vma ; pid_t pid ; }; enum hrtimer_restart; struct drm_agp_mode { unsigned long mode ; }; struct drm_agp_buffer { unsigned long size ; unsigned long handle ; unsigned long type ; unsigned long physical ; }; struct drm_agp_binding { unsigned long handle ; unsigned long offset ; }; struct drm_agp_info { int agp_version_major ; int agp_version_minor ; unsigned long mode ; unsigned long aperture_base ; unsigned long aperture_size ; unsigned long memory_allowed ; unsigned long memory_used ; unsigned short id_vendor ; unsigned short id_device ; }; enum hrtimer_restart; struct drm_scatter_gather { unsigned long size ; unsigned long handle ; }; enum hrtimer_restart; struct acpi_device; struct pci_sysdata { int domain ; int node ; struct acpi_device *companion ; void *iommu ; }; struct drm_irq_busid { int irq ; int busnum ; int devnum ; int funcnum ; }; enum hrtimer_restart; enum hrtimer_restart; enum kobject_action { KOBJ_ADD = 0, KOBJ_REMOVE = 1, KOBJ_CHANGE = 2, KOBJ_MOVE = 3, KOBJ_ONLINE = 4, KOBJ_OFFLINE = 5, KOBJ_MAX = 6 } ; struct class_attribute_string { struct class_attribute attr ; char *str ; }; union __anonunion___u_259___0 { struct hlist_node *__val ; char __c[1U] ; }; union __anonunion___u_261___0 { struct hlist_node *__val ; char __c[1U] ; }; struct _ddebug { char const *modname ; char const *function ; char const *filename ; char const *format ; unsigned int lineno : 18 ; unsigned char flags ; }; enum hrtimer_restart; enum drm_mm_search_flags { DRM_MM_SEARCH_DEFAULT = 0, DRM_MM_SEARCH_BEST = 1, DRM_MM_SEARCH_BELOW = 2 } ; enum drm_mm_allocator_flags { DRM_MM_CREATE_DEFAULT = 0, DRM_MM_CREATE_TOP = 1 } ; typedef long long __s64; typedef __u16 __le16; typedef __s64 int64_t; enum hrtimer_restart; union __anonunion___u_168___3 { struct idr_layer *__val ; char __c[1U] ; }; union __anonunion___u_170___3 { struct idr_layer *__val ; char __c[1U] ; }; struct drm_mode_modeinfo { __u32 clock ; __u16 hdisplay ; __u16 hsync_start ; __u16 hsync_end ; __u16 htotal ; __u16 hskew ; __u16 vdisplay ; __u16 vsync_start ; __u16 vsync_end ; __u16 vtotal ; __u16 vscan ; __u32 vrefresh ; __u32 flags ; __u32 type ; char name[32U] ; }; struct drm_mode_card_res { __u64 fb_id_ptr ; __u64 crtc_id_ptr ; __u64 connector_id_ptr ; __u64 encoder_id_ptr ; __u32 count_fbs ; __u32 count_crtcs ; __u32 count_connectors ; __u32 count_encoders ; __u32 min_width ; __u32 max_width ; __u32 min_height ; __u32 max_height ; }; struct drm_mode_crtc { __u64 set_connectors_ptr ; __u32 count_connectors ; __u32 crtc_id ; __u32 fb_id ; __u32 x ; __u32 y ; __u32 gamma_size ; __u32 mode_valid ; struct drm_mode_modeinfo mode ; }; struct drm_mode_set_plane { __u32 plane_id ; __u32 crtc_id ; __u32 fb_id ; __u32 flags ; __s32 crtc_x ; __s32 crtc_y ; __u32 crtc_w ; __u32 crtc_h ; __u32 src_x ; __u32 src_y ; __u32 src_h ; __u32 src_w ; }; struct drm_mode_get_plane { __u32 plane_id ; __u32 crtc_id ; __u32 fb_id ; __u32 possible_crtcs ; __u32 gamma_size ; __u32 count_format_types ; __u64 format_type_ptr ; }; struct drm_mode_get_plane_res { __u64 plane_id_ptr ; __u32 count_planes ; }; struct drm_mode_get_encoder { __u32 encoder_id ; __u32 encoder_type ; __u32 crtc_id ; __u32 possible_crtcs ; __u32 possible_clones ; }; struct drm_mode_get_connector { __u64 encoders_ptr ; __u64 modes_ptr ; __u64 props_ptr ; __u64 prop_values_ptr ; __u32 count_modes ; __u32 count_props ; __u32 count_encoders ; __u32 encoder_id ; __u32 connector_id ; __u32 connector_type ; __u32 connector_type_id ; __u32 connection ; __u32 mm_width ; __u32 mm_height ; __u32 subpixel ; __u32 pad ; }; struct drm_mode_property_enum { __u64 value ; char name[32U] ; }; struct drm_mode_get_property { __u64 values_ptr ; __u64 enum_blob_ptr ; __u32 prop_id ; __u32 flags ; char name[32U] ; __u32 count_values ; __u32 count_enum_blobs ; }; struct drm_mode_connector_set_property { __u64 value ; __u32 prop_id ; __u32 connector_id ; }; struct drm_mode_obj_get_properties { __u64 props_ptr ; __u64 prop_values_ptr ; __u32 count_props ; __u32 obj_id ; __u32 obj_type ; }; struct drm_mode_obj_set_property { __u64 value ; __u32 prop_id ; __u32 obj_id ; __u32 obj_type ; }; struct drm_mode_get_blob { __u32 blob_id ; __u32 length ; __u64 data ; }; struct drm_mode_fb_cmd { __u32 fb_id ; __u32 width ; __u32 height ; __u32 pitch ; __u32 bpp ; __u32 depth ; __u32 handle ; }; struct drm_mode_fb_dirty_cmd { __u32 fb_id ; __u32 flags ; __u32 color ; __u32 num_clips ; __u64 clips_ptr ; }; struct drm_mode_cursor { __u32 flags ; __u32 crtc_id ; __s32 x ; __s32 y ; __u32 width ; __u32 height ; __u32 handle ; }; struct drm_mode_cursor2 { __u32 flags ; __u32 crtc_id ; __s32 x ; __s32 y ; __u32 width ; __u32 height ; __u32 handle ; __s32 hot_x ; __s32 hot_y ; }; struct drm_mode_crtc_lut { __u32 crtc_id ; __u32 gamma_size ; __u64 red ; __u64 green ; __u64 blue ; }; struct drm_mode_crtc_page_flip { __u32 crtc_id ; __u32 fb_id ; __u32 flags ; __u32 reserved ; __u64 user_data ; }; struct drm_mode_map_dumb { __u32 handle ; __u32 pad ; __u64 offset ; }; struct drm_mode_destroy_dumb { uint32_t handle ; }; struct drm_mode_create_blob { __u64 data ; __u32 length ; __u32 blob_id ; }; struct drm_mode_destroy_blob { __u32 blob_id ; }; struct drm_property_enum { uint64_t value ; struct list_head head ; char name[32U] ; }; struct drm_prop_enum_list { int type ; char *name ; }; struct edid; struct est_timings { u8 t1 ; u8 t2 ; u8 mfg_rsvd ; }; struct std_timing { u8 hsize ; u8 vfreq_aspect ; }; struct detailed_pixel_timing { u8 hactive_lo ; u8 hblank_lo ; u8 hactive_hblank_hi ; u8 vactive_lo ; u8 vblank_lo ; u8 vactive_vblank_hi ; u8 hsync_offset_lo ; u8 hsync_pulse_width_lo ; u8 vsync_offset_pulse_width_lo ; u8 hsync_vsync_offset_pulse_width_hi ; u8 width_mm_lo ; u8 height_mm_lo ; u8 width_height_mm_hi ; u8 hborder ; u8 vborder ; u8 misc ; }; struct detailed_data_string { u8 str[13U] ; }; struct __anonstruct_gtf2_259 { u8 reserved ; u8 hfreq_start_khz ; u8 c ; __le16 m ; u8 k ; u8 j ; }; struct __anonstruct_cvt_260 { u8 version ; u8 data1 ; u8 data2 ; u8 supported_aspects ; u8 flags ; u8 supported_scalings ; u8 preferred_refresh ; }; union __anonunion_formula_258 { struct __anonstruct_gtf2_259 gtf2 ; struct __anonstruct_cvt_260 cvt ; }; struct detailed_data_monitor_range { u8 min_vfreq ; u8 max_vfreq ; u8 min_hfreq_khz ; u8 max_hfreq_khz ; u8 pixel_clock_mhz ; u8 flags ; union __anonunion_formula_258 formula ; }; struct detailed_data_wpindex { u8 white_yx_lo ; u8 white_x_hi ; u8 white_y_hi ; u8 gamma ; }; struct cvt_timing { u8 code[3U] ; }; union __anonunion_data_261 { struct detailed_data_string str ; struct detailed_data_monitor_range range ; struct detailed_data_wpindex color ; struct std_timing timings[6U] ; struct cvt_timing cvt[4U] ; }; struct detailed_non_pixel { u8 pad1 ; u8 type ; u8 pad2 ; union __anonunion_data_261 data ; }; union __anonunion_data_262 { struct detailed_pixel_timing pixel_data ; struct detailed_non_pixel other_data ; }; struct detailed_timing { __le16 pixel_clock ; union __anonunion_data_262 data ; }; struct edid { u8 header[8U] ; u8 mfg_id[2U] ; u8 prod_code[2U] ; u32 serial ; u8 mfg_week ; u8 mfg_year ; u8 version ; u8 revision ; u8 input ; u8 width_cm ; u8 height_cm ; u8 gamma ; u8 features ; u8 red_green_lo ; u8 black_white_lo ; u8 red_x ; u8 red_y ; u8 green_x ; u8 green_y ; u8 blue_x ; u8 blue_y ; u8 white_x ; u8 white_y ; struct est_timings established_timings ; struct std_timing standard_timings[8U] ; struct detailed_timing detailed_timings[4U] ; u8 extensions ; u8 checksum ; }; struct drm_conn_prop_enum_list { int type ; char const *name ; struct ida ida ; }; enum hrtimer_restart; struct videomode; enum display_flags { DISPLAY_FLAGS_HSYNC_LOW = 1, DISPLAY_FLAGS_HSYNC_HIGH = 2, DISPLAY_FLAGS_VSYNC_LOW = 4, DISPLAY_FLAGS_VSYNC_HIGH = 8, DISPLAY_FLAGS_DE_LOW = 16, DISPLAY_FLAGS_DE_HIGH = 32, DISPLAY_FLAGS_PIXDATA_POSEDGE = 64, DISPLAY_FLAGS_PIXDATA_NEGEDGE = 128, DISPLAY_FLAGS_INTERLACED = 256, DISPLAY_FLAGS_DOUBLESCAN = 512, DISPLAY_FLAGS_DOUBLECLK = 1024 } ; struct videomode { unsigned long pixelclock ; u32 hactive ; u32 hfront_porch ; u32 hback_porch ; u32 hsync_len ; u32 vactive ; u32 vfront_porch ; u32 vback_porch ; u32 vsync_len ; enum display_flags flags ; }; enum hrtimer_restart; struct rt_mutex { raw_spinlock_t wait_lock ; struct rb_root waiters ; struct rb_node *waiters_leftmost ; struct task_struct *owner ; int save_state ; char const *name ; char const *file ; int line ; void *magic ; }; enum hdmi_infoframe_type { HDMI_INFOFRAME_TYPE_VENDOR = 129, HDMI_INFOFRAME_TYPE_AVI = 130, HDMI_INFOFRAME_TYPE_SPD = 131, HDMI_INFOFRAME_TYPE_AUDIO = 132 } ; enum hdmi_colorspace { HDMI_COLORSPACE_RGB = 0, HDMI_COLORSPACE_YUV422 = 1, HDMI_COLORSPACE_YUV444 = 2, HDMI_COLORSPACE_YUV420 = 3, HDMI_COLORSPACE_RESERVED4 = 4, HDMI_COLORSPACE_RESERVED5 = 5, HDMI_COLORSPACE_RESERVED6 = 6, HDMI_COLORSPACE_IDO_DEFINED = 7 } ; enum hdmi_scan_mode { HDMI_SCAN_MODE_NONE = 0, HDMI_SCAN_MODE_OVERSCAN = 1, HDMI_SCAN_MODE_UNDERSCAN = 2, HDMI_SCAN_MODE_RESERVED = 3 } ; enum hdmi_colorimetry { HDMI_COLORIMETRY_NONE = 0, HDMI_COLORIMETRY_ITU_601 = 1, HDMI_COLORIMETRY_ITU_709 = 2, HDMI_COLORIMETRY_EXTENDED = 3 } ; enum hdmi_active_aspect { HDMI_ACTIVE_ASPECT_16_9_TOP = 2, HDMI_ACTIVE_ASPECT_14_9_TOP = 3, HDMI_ACTIVE_ASPECT_16_9_CENTER = 4, HDMI_ACTIVE_ASPECT_PICTURE = 8, HDMI_ACTIVE_ASPECT_4_3 = 9, HDMI_ACTIVE_ASPECT_16_9 = 10, HDMI_ACTIVE_ASPECT_14_9 = 11, HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13, HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14, HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15 } ; enum hdmi_extended_colorimetry { HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0, HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1, HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2, HDMI_EXTENDED_COLORIMETRY_ADOBE_YCC_601 = 3, HDMI_EXTENDED_COLORIMETRY_ADOBE_RGB = 4, HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5, HDMI_EXTENDED_COLORIMETRY_BT2020 = 6, HDMI_EXTENDED_COLORIMETRY_RESERVED = 7 } ; enum hdmi_quantization_range { HDMI_QUANTIZATION_RANGE_DEFAULT = 0, HDMI_QUANTIZATION_RANGE_LIMITED = 1, HDMI_QUANTIZATION_RANGE_FULL = 2, HDMI_QUANTIZATION_RANGE_RESERVED = 3 } ; enum hdmi_nups { HDMI_NUPS_UNKNOWN = 0, HDMI_NUPS_HORIZONTAL = 1, HDMI_NUPS_VERTICAL = 2, HDMI_NUPS_BOTH = 3 } ; enum hdmi_ycc_quantization_range { HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0, HDMI_YCC_QUANTIZATION_RANGE_FULL = 1 } ; enum hdmi_content_type { HDMI_CONTENT_TYPE_GRAPHICS = 0, HDMI_CONTENT_TYPE_PHOTO = 1, HDMI_CONTENT_TYPE_CINEMA = 2, HDMI_CONTENT_TYPE_GAME = 3 } ; struct hdmi_avi_infoframe { enum hdmi_infoframe_type type ; unsigned char version ; unsigned char length ; enum hdmi_colorspace colorspace ; enum hdmi_scan_mode scan_mode ; enum hdmi_colorimetry colorimetry ; enum hdmi_picture_aspect picture_aspect ; enum hdmi_active_aspect active_aspect ; bool itc ; enum hdmi_extended_colorimetry extended_colorimetry ; enum hdmi_quantization_range quantization_range ; enum hdmi_nups nups ; unsigned char video_code ; enum hdmi_ycc_quantization_range ycc_quantization_range ; enum hdmi_content_type content_type ; unsigned char pixel_repeat ; unsigned short top_bar ; unsigned short bottom_bar ; unsigned short left_bar ; unsigned short right_bar ; }; enum hdmi_3d_structure { HDMI_3D_STRUCTURE_INVALID = -1, HDMI_3D_STRUCTURE_FRAME_PACKING = 0, HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1, HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2, HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3, HDMI_3D_STRUCTURE_L_DEPTH = 4, HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5, HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6, HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8 } ; struct hdmi_vendor_infoframe { enum hdmi_infoframe_type type ; unsigned char version ; unsigned char length ; unsigned int oui ; u8 vic ; enum hdmi_3d_structure s3d_struct ; unsigned int s3d_ext_data ; }; struct i2c_msg { __u16 addr ; __u16 flags ; __u16 len ; __u8 *buf ; }; union i2c_smbus_data { __u8 byte ; __u16 word ; __u8 block[34U] ; }; struct i2c_algorithm; struct i2c_adapter; struct i2c_client; enum i2c_slave_event; enum i2c_slave_event; struct i2c_client { unsigned short flags ; unsigned short addr ; char name[20U] ; struct i2c_adapter *adapter ; struct device dev ; int irq ; struct list_head detected ; int (*slave_cb)(struct i2c_client * , enum i2c_slave_event , u8 * ) ; }; enum i2c_slave_event { I2C_SLAVE_READ_REQUESTED = 0, I2C_SLAVE_WRITE_REQUESTED = 1, I2C_SLAVE_READ_PROCESSED = 2, I2C_SLAVE_WRITE_RECEIVED = 3, I2C_SLAVE_STOP = 4 } ; struct i2c_algorithm { int (*master_xfer)(struct i2c_adapter * , struct i2c_msg * , int ) ; int (*smbus_xfer)(struct i2c_adapter * , u16 , unsigned short , char , u8 , int , union i2c_smbus_data * ) ; u32 (*functionality)(struct i2c_adapter * ) ; int (*reg_slave)(struct i2c_client * ) ; int (*unreg_slave)(struct i2c_client * ) ; }; struct i2c_bus_recovery_info { int (*recover_bus)(struct i2c_adapter * ) ; int (*get_scl)(struct i2c_adapter * ) ; void (*set_scl)(struct i2c_adapter * , int ) ; int (*get_sda)(struct i2c_adapter * ) ; void (*prepare_recovery)(struct i2c_adapter * ) ; void (*unprepare_recovery)(struct i2c_adapter * ) ; int scl_gpio ; int sda_gpio ; }; struct i2c_adapter_quirks { u64 flags ; int max_num_msgs ; u16 max_write_len ; u16 max_read_len ; u16 max_comb_1st_msg_len ; u16 max_comb_2nd_msg_len ; }; struct i2c_adapter { struct module *owner ; unsigned int class ; struct i2c_algorithm const *algo ; void *algo_data ; struct rt_mutex bus_lock ; int timeout ; int retries ; struct device dev ; int nr ; char name[48U] ; struct completion dev_released ; struct mutex userspace_clients_lock ; struct list_head userspace_clients ; struct i2c_bus_recovery_info *bus_recovery_info ; struct i2c_adapter_quirks const *quirks ; }; struct cea_sad { u8 format ; u8 channels ; u8 freq ; u8 byte2 ; }; struct displayid_hdr { u8 rev ; u8 bytes ; u8 prod_id ; u8 ext_count ; }; struct displayid_block { u8 tag ; u8 rev ; u8 num_bytes ; }; struct displayid_tiled_block { struct displayid_block base ; u8 tile_cap ; u8 topo[3U] ; u8 tile_size[4U] ; u8 tile_pixel_bezel[5U] ; u8 topology_id[8U] ; }; struct detailed_mode_closure { struct drm_connector *connector ; struct edid *edid ; bool preferred ; u32 quirks ; int modes ; }; struct edid_quirk { char vendor[4U] ; int product_id ; u32 quirks ; }; struct minimode { short w ; short h ; short r ; short rb ; }; typedef void detailed_cb(struct detailed_timing * , void * ); struct __anonstruct_cea_interlaced_266 { int w ; int h ; }; struct stereo_mandatory_mode { int width ; int height ; int vrefresh ; unsigned int flags ; }; enum hrtimer_restart; enum hrtimer_restart; enum hrtimer_restart; struct i2c_device_id { char name[20U] ; kernel_ulong_t driver_data ; }; struct i2c_driver; struct i2c_board_info; enum i2c_slave_event; enum i2c_slave_event; struct i2c_driver { unsigned int class ; int (*attach_adapter)(struct i2c_adapter * ) ; int (*probe)(struct i2c_client * , struct i2c_device_id const * ) ; int (*remove)(struct i2c_client * ) ; void (*shutdown)(struct i2c_client * ) ; void (*alert)(struct i2c_client * , unsigned int ) ; int (*command)(struct i2c_client * , unsigned int , void * ) ; struct device_driver driver ; struct i2c_device_id const *id_table ; int (*detect)(struct i2c_client * , struct i2c_board_info * ) ; unsigned short const *address_list ; struct list_head clients ; }; struct i2c_board_info { char type[20U] ; unsigned short flags ; unsigned short addr ; void *platform_data ; struct dev_archdata *archdata ; struct device_node *of_node ; struct fwnode_handle *fwnode ; int irq ; }; struct drm_encoder_slave_funcs { void (*set_config)(struct drm_encoder * , void * ) ; void (*destroy)(struct drm_encoder * ) ; void (*dpms)(struct drm_encoder * , int ) ; void (*save)(struct drm_encoder * ) ; void (*restore)(struct drm_encoder * ) ; bool (*mode_fixup)(struct drm_encoder * , struct drm_display_mode const * , struct drm_display_mode * ) ; int (*mode_valid)(struct drm_encoder * , struct drm_display_mode * ) ; void (*mode_set)(struct drm_encoder * , struct drm_display_mode * , struct drm_display_mode * ) ; enum drm_connector_status (*detect)(struct drm_encoder * , struct drm_connector * ) ; int (*get_modes)(struct drm_encoder * , struct drm_connector * ) ; int (*create_resources)(struct drm_encoder * , struct drm_connector * ) ; int (*set_property)(struct drm_encoder * , struct drm_connector * , struct drm_property * , uint64_t ) ; }; struct drm_encoder_slave { struct drm_encoder base ; struct drm_encoder_slave_funcs *slave_funcs ; void *slave_priv ; void *bus_priv ; }; struct drm_i2c_encoder_driver { struct i2c_driver i2c_driver ; int (*encoder_init)(struct i2c_client * , struct drm_device * , struct drm_encoder_slave * ) ; }; enum hrtimer_restart; struct uts_namespace; struct net; struct ring_buffer; struct ring_buffer_iter; struct trace_seq; struct seq_buf { char *buffer ; size_t size ; size_t len ; loff_t readpos ; }; struct trace_seq { unsigned char buffer[4096U] ; struct seq_buf seq ; int full ; }; union __anonunion____missing_field_name_270 { __u64 sample_period ; __u64 sample_freq ; }; union __anonunion____missing_field_name_271 { __u32 wakeup_events ; __u32 wakeup_watermark ; }; union __anonunion____missing_field_name_272 { __u64 bp_addr ; __u64 config1 ; }; union __anonunion____missing_field_name_273 { __u64 bp_len ; __u64 config2 ; }; struct perf_event_attr { __u32 type ; __u32 size ; __u64 config ; union __anonunion____missing_field_name_270 __annonCompField77 ; __u64 sample_type ; __u64 read_format ; unsigned char disabled : 1 ; unsigned char inherit : 1 ; unsigned char pinned : 1 ; unsigned char exclusive : 1 ; unsigned char exclude_user : 1 ; unsigned char exclude_kernel : 1 ; unsigned char exclude_hv : 1 ; unsigned char exclude_idle : 1 ; unsigned char mmap : 1 ; unsigned char comm : 1 ; unsigned char freq : 1 ; unsigned char inherit_stat : 1 ; unsigned char enable_on_exec : 1 ; unsigned char task : 1 ; unsigned char watermark : 1 ; unsigned char precise_ip : 2 ; unsigned char mmap_data : 1 ; unsigned char sample_id_all : 1 ; unsigned char exclude_host : 1 ; unsigned char exclude_guest : 1 ; unsigned char exclude_callchain_kernel : 1 ; unsigned char exclude_callchain_user : 1 ; unsigned char mmap2 : 1 ; unsigned char comm_exec : 1 ; unsigned char use_clockid : 1 ; unsigned long __reserved_1 : 38 ; union __anonunion____missing_field_name_271 __annonCompField78 ; __u32 bp_type ; union __anonunion____missing_field_name_272 __annonCompField79 ; union __anonunion____missing_field_name_273 __annonCompField80 ; __u64 branch_sample_type ; __u64 sample_regs_user ; __u32 sample_stack_user ; __s32 clockid ; __u64 sample_regs_intr ; __u32 aux_watermark ; __u32 __reserved_2 ; }; struct __anonstruct____missing_field_name_276 { unsigned char mem_op : 5 ; unsigned short mem_lvl : 14 ; unsigned char mem_snoop : 5 ; unsigned char mem_lock : 2 ; unsigned char mem_dtlb : 7 ; unsigned int mem_rsvd : 31 ; }; union perf_mem_data_src { __u64 val ; struct __anonstruct____missing_field_name_276 __annonCompField83 ; }; struct perf_branch_entry { __u64 from ; __u64 to ; unsigned char mispred : 1 ; unsigned char predicted : 1 ; unsigned char in_tx : 1 ; unsigned char abort : 1 ; unsigned long reserved : 60 ; }; struct mnt_namespace; struct ipc_namespace; struct nsproxy { atomic_t count ; struct uts_namespace *uts_ns ; struct ipc_namespace *ipc_ns ; struct mnt_namespace *mnt_ns ; struct pid_namespace *pid_ns_for_children ; struct net *net_ns ; }; struct proc_ns_operations; struct ns_common { atomic_long_t stashed ; struct proc_ns_operations const *ops ; unsigned int inum ; }; struct pidmap { atomic_t nr_free ; void *page ; }; struct fs_pin; struct pid_namespace { struct kref kref ; struct pidmap pidmap[128U] ; struct callback_head rcu ; int last_pid ; unsigned int nr_hashed ; struct task_struct *child_reaper ; struct kmem_cache *pid_cachep ; unsigned int level ; struct pid_namespace *parent ; struct vfsmount *proc_mnt ; struct dentry *proc_self ; struct dentry *proc_thread_self ; struct fs_pin *bacct ; struct user_namespace *user_ns ; struct work_struct proc_work ; kgid_t pid_gid ; int hide_pid ; int reboot ; struct ns_common ns ; }; struct __anonstruct_local_t_284 { atomic_long_t a ; }; typedef struct __anonstruct_local_t_284 local_t; struct __anonstruct_local64_t_285 { local_t a ; }; typedef struct __anonstruct_local64_t_285 local64_t; struct arch_hw_breakpoint { unsigned long address ; unsigned long mask ; u8 len ; u8 type ; }; struct pmu; typedef s32 compat_time_t; struct compat_timespec { compat_time_t tv_sec ; s32 tv_nsec ; }; struct ftrace_hash; struct ftrace_ops; struct ftrace_ops_hash { struct ftrace_hash *notrace_hash ; struct ftrace_hash *filter_hash ; struct mutex regex_lock ; }; struct ftrace_ops { void (*func)(unsigned long , unsigned long , struct ftrace_ops * , struct pt_regs * ) ; struct ftrace_ops *next ; unsigned long flags ; void *private ; int *disabled ; int nr_trampolines ; struct ftrace_ops_hash local_hash ; struct ftrace_ops_hash *func_hash ; struct ftrace_ops_hash old_hash ; unsigned long trampoline ; unsigned long trampoline_size ; }; struct ftrace_ret_stack { unsigned long ret ; unsigned long func ; unsigned long long calltime ; unsigned long long subtime ; unsigned long fp ; }; struct irq_work { unsigned long flags ; struct llist_node llnode ; void (*func)(struct irq_work * ) ; }; struct perf_regs { __u64 abi ; struct pt_regs *regs ; }; struct perf_callchain_entry { __u64 nr ; __u64 ip[127U] ; }; struct perf_raw_record { u32 size ; void *data ; }; struct perf_branch_stack { __u64 nr ; struct perf_branch_entry entries[0U] ; }; struct hw_perf_event_extra { u64 config ; unsigned int reg ; int alloc ; int idx ; }; struct __anonstruct____missing_field_name_302 { u64 config ; u64 last_tag ; unsigned long config_base ; unsigned long event_base ; int event_base_rdpmc ; int idx ; int last_cpu ; int flags ; struct hw_perf_event_extra extra_reg ; struct hw_perf_event_extra branch_reg ; }; struct __anonstruct____missing_field_name_303 { struct hrtimer hrtimer ; }; struct __anonstruct____missing_field_name_304 { struct list_head tp_list ; }; struct __anonstruct____missing_field_name_305 { int cqm_state ; u32 cqm_rmid ; struct list_head cqm_events_entry ; struct list_head cqm_groups_entry ; struct list_head cqm_group_entry ; }; struct __anonstruct____missing_field_name_306 { int itrace_started ; }; struct __anonstruct____missing_field_name_307 { struct arch_hw_breakpoint info ; struct list_head bp_list ; }; union __anonunion____missing_field_name_301 { struct __anonstruct____missing_field_name_302 __annonCompField84 ; struct __anonstruct____missing_field_name_303 __annonCompField85 ; struct __anonstruct____missing_field_name_304 __annonCompField86 ; struct __anonstruct____missing_field_name_305 __annonCompField87 ; struct __anonstruct____missing_field_name_306 __annonCompField88 ; struct __anonstruct____missing_field_name_307 __annonCompField89 ; }; struct hw_perf_event { union __anonunion____missing_field_name_301 __annonCompField90 ; struct task_struct *target ; int state ; local64_t prev_count ; u64 sample_period ; u64 last_period ; local64_t period_left ; u64 interrupts_seq ; u64 interrupts ; u64 freq_time_stamp ; u64 freq_count_stamp ; }; struct perf_cpu_context; struct pmu { struct list_head entry ; struct module *module ; struct device *dev ; struct attribute_group const **attr_groups ; char const *name ; int type ; int capabilities ; int *pmu_disable_count ; struct perf_cpu_context *pmu_cpu_context ; atomic_t exclusive_cnt ; int task_ctx_nr ; int hrtimer_interval_ms ; void (*pmu_enable)(struct pmu * ) ; void (*pmu_disable)(struct pmu * ) ; int (*event_init)(struct perf_event * ) ; void (*event_mapped)(struct perf_event * ) ; void (*event_unmapped)(struct perf_event * ) ; int (*add)(struct perf_event * , int ) ; void (*del)(struct perf_event * , int ) ; void (*start)(struct perf_event * , int ) ; void (*stop)(struct perf_event * , int ) ; void (*read)(struct perf_event * ) ; void (*start_txn)(struct pmu * ) ; int (*commit_txn)(struct pmu * ) ; void (*cancel_txn)(struct pmu * ) ; int (*event_idx)(struct perf_event * ) ; void (*sched_task)(struct perf_event_context * , bool ) ; size_t task_ctx_size ; u64 (*count)(struct perf_event * ) ; void *(*setup_aux)(int , void ** , int , bool ) ; void (*free_aux)(void * ) ; int (*filter_match)(struct perf_event * ) ; }; enum perf_event_active_state { PERF_EVENT_STATE_EXIT = -3, PERF_EVENT_STATE_ERROR = -2, PERF_EVENT_STATE_OFF = -1, PERF_EVENT_STATE_INACTIVE = 0, PERF_EVENT_STATE_ACTIVE = 1 } ; struct perf_sample_data; struct perf_cgroup; struct event_filter; struct perf_event { struct list_head event_entry ; struct list_head group_entry ; struct list_head sibling_list ; struct list_head migrate_entry ; struct hlist_node hlist_entry ; struct list_head active_entry ; int nr_siblings ; int group_flags ; struct perf_event *group_leader ; struct pmu *pmu ; enum perf_event_active_state state ; unsigned int attach_state ; local64_t count ; atomic64_t child_count ; u64 total_time_enabled ; u64 total_time_running ; u64 tstamp_enabled ; u64 tstamp_running ; u64 tstamp_stopped ; u64 shadow_ctx_time ; struct perf_event_attr attr ; u16 header_size ; u16 id_header_size ; u16 read_size ; struct hw_perf_event hw ; struct perf_event_context *ctx ; atomic_long_t refcount ; atomic64_t child_total_time_enabled ; atomic64_t child_total_time_running ; struct mutex child_mutex ; struct list_head child_list ; struct perf_event *parent ; int oncpu ; int cpu ; struct list_head owner_entry ; struct task_struct *owner ; struct mutex mmap_mutex ; atomic_t mmap_count ; struct ring_buffer *rb ; struct list_head rb_entry ; unsigned long rcu_batches ; int rcu_pending ; wait_queue_head_t waitq ; struct fasync_struct *fasync ; int pending_wakeup ; int pending_kill ; int pending_disable ; struct irq_work pending ; atomic_t event_limit ; void (*destroy)(struct perf_event * ) ; struct callback_head callback_head ; struct pid_namespace *ns ; u64 id ; u64 (*clock)(void) ; void (*overflow_handler)(struct perf_event * , struct perf_sample_data * , struct pt_regs * ) ; void *overflow_handler_context ; struct trace_event_call *tp_event ; struct event_filter *filter ; struct ftrace_ops ftrace_ops ; struct perf_cgroup *cgrp ; int cgrp_defer_enabled ; }; struct perf_event_context { struct pmu *pmu ; raw_spinlock_t lock ; struct mutex mutex ; struct list_head active_ctx_list ; struct list_head pinned_groups ; struct list_head flexible_groups ; struct list_head event_list ; int nr_events ; int nr_active ; int is_active ; int nr_stat ; int nr_freq ; int rotate_disable ; atomic_t refcount ; struct task_struct *task ; u64 time ; u64 timestamp ; struct perf_event_context *parent_ctx ; u64 parent_gen ; u64 generation ; int pin_count ; int nr_cgroups ; void *task_ctx_data ; struct callback_head callback_head ; struct delayed_work orphans_remove ; bool orphans_remove_sched ; }; struct perf_cpu_context { struct perf_event_context ctx ; struct perf_event_context *task_ctx ; int active_oncpu ; int exclusive ; raw_spinlock_t hrtimer_lock ; struct hrtimer hrtimer ; ktime_t hrtimer_interval ; unsigned int hrtimer_active ; struct pmu *unique_pmu ; struct perf_cgroup *cgrp ; }; struct perf_cgroup_info { u64 time ; u64 timestamp ; }; struct perf_cgroup { struct cgroup_subsys_state css ; struct perf_cgroup_info *info ; }; struct __anonstruct_tid_entry_309 { u32 pid ; u32 tid ; }; struct __anonstruct_cpu_entry_310 { u32 cpu ; u32 reserved ; }; struct perf_sample_data { u64 addr ; struct perf_raw_record *raw ; struct perf_branch_stack *br_stack ; u64 period ; u64 weight ; u64 txn ; union perf_mem_data_src data_src ; u64 type ; u64 ip ; struct __anonstruct_tid_entry_309 tid_entry ; u64 time ; u64 id ; u64 stream_id ; struct __anonstruct_cpu_entry_310 cpu_entry ; struct perf_callchain_entry *callchain ; struct perf_regs regs_user ; struct pt_regs regs_user_copy ; struct perf_regs regs_intr ; u64 stack_user_size ; }; struct trace_array; struct trace_buffer; struct tracer; struct bpf_prog; struct trace_iterator; struct trace_event; struct trace_entry { unsigned short type ; unsigned char flags ; unsigned char preempt_count ; int pid ; }; struct trace_iterator { struct trace_array *tr ; struct tracer *trace ; struct trace_buffer *trace_buffer ; void *private ; int cpu_file ; struct mutex mutex ; struct ring_buffer_iter **buffer_iter ; unsigned long iter_flags ; struct trace_seq tmp_seq ; cpumask_var_t started ; bool snapshot ; struct trace_seq seq ; struct trace_entry *ent ; unsigned long lost_events ; int leftover ; int ent_size ; int cpu ; u64 ts ; loff_t pos ; long idx ; }; enum print_line_t; struct trace_event_functions { enum print_line_t (*trace)(struct trace_iterator * , int , struct trace_event * ) ; enum print_line_t (*raw)(struct trace_iterator * , int , struct trace_event * ) ; enum print_line_t (*hex)(struct trace_iterator * , int , struct trace_event * ) ; enum print_line_t (*binary)(struct trace_iterator * , int , struct trace_event * ) ; }; struct trace_event { struct hlist_node node ; struct list_head list ; int type ; struct trace_event_functions *funcs ; }; enum print_line_t { TRACE_TYPE_PARTIAL_LINE = 0, TRACE_TYPE_HANDLED = 1, TRACE_TYPE_UNHANDLED = 2, TRACE_TYPE_NO_CONSUME = 3 } ; enum trace_reg { TRACE_REG_REGISTER = 0, TRACE_REG_UNREGISTER = 1, TRACE_REG_PERF_REGISTER = 2, TRACE_REG_PERF_UNREGISTER = 3, TRACE_REG_PERF_OPEN = 4, TRACE_REG_PERF_CLOSE = 5, TRACE_REG_PERF_ADD = 6, TRACE_REG_PERF_DEL = 7 } ; struct trace_event_class { char const *system ; void *probe ; void *perf_probe ; int (*reg)(struct trace_event_call * , enum trace_reg , void * ) ; int (*define_fields)(struct trace_event_call * ) ; struct list_head *(*get_fields)(struct trace_event_call * ) ; struct list_head fields ; int (*raw_init)(struct trace_event_call * ) ; }; union __anonunion____missing_field_name_311 { char *name ; struct tracepoint *tp ; }; struct trace_event_call { struct list_head list ; struct trace_event_class *class ; union __anonunion____missing_field_name_311 __annonCompField92 ; struct trace_event event ; char *print_fmt ; struct event_filter *filter ; void *mod ; void *data ; int flags ; int perf_refcount ; struct hlist_head *perf_events ; struct bpf_prog *prog ; int (*perf_perm)(struct trace_event_call * , struct perf_event * ) ; }; struct trace_event_raw_drm_vblank_event { struct trace_entry ent ; int crtc ; unsigned int seq ; char __data[0U] ; }; struct trace_event_raw_drm_vblank_event_queued { struct trace_entry ent ; pid_t pid ; int crtc ; unsigned int seq ; char __data[0U] ; }; struct trace_event_raw_drm_vblank_event_delivered { struct trace_entry ent ; pid_t pid ; int crtc ; unsigned int seq ; char __data[0U] ; }; enum hrtimer_restart; enum drm_global_types { DRM_GLOBAL_TTM_MEM = 0, DRM_GLOBAL_TTM_BO = 1, DRM_GLOBAL_TTM_OBJECT = 2, DRM_GLOBAL_NUM = 3 } ; struct drm_global_reference { enum drm_global_types global_type ; size_t size ; void *object ; int (*init)(struct drm_global_reference * ) ; void (*release)(struct drm_global_reference * ) ; }; struct drm_global_item { struct mutex mutex ; void *object ; int refcount ; }; enum hrtimer_restart; struct dma_buf_export_info { char const *exp_name ; struct module *owner ; struct dma_buf_ops const *ops ; size_t size ; int flags ; struct reservation_object *resv ; void *priv ; }; struct drm_prime_handle { __u32 handle ; __u32 flags ; __s32 fd ; }; struct drm_prime_member { struct list_head entry ; struct dma_buf *dma_buf ; uint32_t handle ; }; struct drm_prime_attachment { struct sg_table *sgt ; enum dma_data_direction dir ; }; struct drm_rect { int x1 ; int y1 ; int x2 ; int y2 ; }; enum hrtimer_restart; struct drm_vma_offset_file { struct rb_node vm_rb ; struct file *vm_filp ; unsigned long vm_count ; }; struct drm_flip_work; struct drm_flip_task { struct list_head node ; void *data ; }; struct drm_flip_work { char const *name ; void (*func)(struct drm_flip_work * , void * ) ; struct work_struct worker ; struct list_head queued ; struct list_head commited ; spinlock_t lock ; }; enum hrtimer_restart; enum hrtimer_restart; struct drm_mode_atomic { __u32 flags ; __u32 count_objs ; __u64 objs_ptr ; __u64 count_props_ptr ; __u64 props_ptr ; __u64 prop_values_ptr ; __u64 reserved ; __u64 user_data ; }; enum hrtimer_restart; enum hrtimer_restart; struct bio_vec; struct iovec { void *iov_base ; __kernel_size_t iov_len ; }; struct kvec { void *iov_base ; size_t iov_len ; }; union __anonunion____missing_field_name_217 { struct iovec const *iov ; struct kvec const *kvec ; struct bio_vec const *bvec ; }; struct iov_iter { int type ; size_t iov_offset ; size_t count ; union __anonunion____missing_field_name_217 __annonCompField58 ; unsigned long nr_segs ; }; struct bio_vec { struct page *bv_page ; unsigned int bv_len ; unsigned int bv_offset ; }; typedef s32 compat_long_t; typedef u32 compat_uptr_t; struct compat_robust_list { compat_uptr_t next ; }; struct compat_robust_list_head { struct compat_robust_list list ; compat_long_t futex_offset ; compat_uptr_t list_op_pending ; }; struct ratelimit_state { raw_spinlock_t lock ; int interval ; int burst ; int printed ; int missed ; unsigned long begin ; }; typedef unsigned int drm_drawable_t; enum drm_dma_flags { _DRM_DMA_BLOCK = 1, _DRM_DMA_WHILE_LOCKED = 2, _DRM_DMA_PRIORITY = 4, _DRM_DMA_WAIT = 16, _DRM_DMA_SMALLER_OK = 32, _DRM_DMA_LARGER_OK = 64 } ; struct drm_dma { int context ; int send_count ; int *send_indices ; int *send_sizes ; enum drm_dma_flags flags ; int request_count ; int request_size ; int *request_indices ; int *request_sizes ; int granted_count ; }; struct drm_update_draw { drm_drawable_t handle ; unsigned int type ; unsigned int num ; unsigned long long data ; }; typedef int drm_ioctl_compat_t(struct file * , unsigned int , unsigned long ); struct drm_version_32 { int version_major ; int version_minor ; int version_patchlevel ; u32 name_len ; u32 name ; u32 date_len ; u32 date ; u32 desc_len ; u32 desc ; }; typedef struct drm_version_32 drm_version32_t; struct drm_unique32 { u32 unique_len ; u32 unique ; }; typedef struct drm_unique32 drm_unique32_t; struct drm_map32 { u32 offset ; u32 size ; enum drm_map_type type ; enum drm_map_flags flags ; u32 handle ; int mtrr ; }; typedef struct drm_map32 drm_map32_t; struct drm_client32 { int idx ; int auth ; u32 pid ; u32 uid ; u32 magic ; u32 iocs ; }; typedef struct drm_client32 drm_client32_t; struct __anonstruct_data_284 { u32 value ; enum drm_stat_type type ; }; struct drm_stats32 { u32 count ; struct __anonstruct_data_284 data[15U] ; }; typedef struct drm_stats32 drm_stats32_t; struct drm_buf_desc32 { int count ; int size ; int low_mark ; int high_mark ; int flags ; u32 agp_start ; }; typedef struct drm_buf_desc32 drm_buf_desc32_t; struct drm_buf_info32 { int count ; u32 list ; }; typedef struct drm_buf_info32 drm_buf_info32_t; struct drm_buf_pub32 { int idx ; int total ; int used ; u32 address ; }; typedef struct drm_buf_pub32 drm_buf_pub32_t; struct drm_buf_map32 { int count ; u32 virtual ; u32 list ; }; typedef struct drm_buf_map32 drm_buf_map32_t; struct drm_buf_free32 { int count ; u32 list ; }; typedef struct drm_buf_free32 drm_buf_free32_t; struct drm_ctx_priv_map32 { unsigned int ctx_id ; u32 handle ; }; typedef struct drm_ctx_priv_map32 drm_ctx_priv_map32_t; struct drm_ctx_res32 { int count ; u32 contexts ; }; typedef struct drm_ctx_res32 drm_ctx_res32_t; struct drm_dma32 { int context ; int send_count ; u32 send_indices ; u32 send_sizes ; enum drm_dma_flags flags ; int request_count ; int request_size ; u32 request_indices ; u32 request_sizes ; int granted_count ; }; typedef struct drm_dma32 drm_dma32_t; struct drm_agp_mode32 { u32 mode ; }; typedef struct drm_agp_mode32 drm_agp_mode32_t; struct drm_agp_info32 { int agp_version_major ; int agp_version_minor ; u32 mode ; u32 aperture_base ; u32 aperture_size ; u32 memory_allowed ; u32 memory_used ; unsigned short id_vendor ; unsigned short id_device ; }; typedef struct drm_agp_info32 drm_agp_info32_t; struct drm_agp_buffer32 { u32 size ; u32 handle ; u32 type ; u32 physical ; }; typedef struct drm_agp_buffer32 drm_agp_buffer32_t; struct drm_agp_binding32 { u32 handle ; u32 offset ; }; typedef struct drm_agp_binding32 drm_agp_binding32_t; struct drm_scatter_gather32 { u32 size ; u32 handle ; }; typedef struct drm_scatter_gather32 drm_scatter_gather32_t; struct drm_update_draw32 { drm_drawable_t handle ; unsigned int type ; unsigned int num ; u64 data ; }; typedef struct drm_update_draw32 drm_update_draw32_t; struct drm_wait_vblank_request32 { enum drm_vblank_seq_type type ; unsigned int sequence ; u32 signal ; }; struct drm_wait_vblank_reply32 { enum drm_vblank_seq_type type ; unsigned int sequence ; s32 tval_sec ; s32 tval_usec ; }; union drm_wait_vblank32 { struct drm_wait_vblank_request32 request ; struct drm_wait_vblank_reply32 reply ; }; typedef union drm_wait_vblank32 drm_wait_vblank32_t; struct gate_struct64 { u16 offset_low ; u16 segment ; unsigned char ist : 3 ; unsigned char zero0 : 5 ; unsigned char type : 5 ; unsigned char dpl : 2 ; unsigned char p : 1 ; u16 offset_middle ; u32 offset_high ; u32 zero1 ; }; typedef struct gate_struct64 gate_desc; struct desc_ptr { unsigned short size ; unsigned long address ; }; struct pv_cpu_ops { unsigned long (*get_debugreg)(int ) ; void (*set_debugreg)(int , unsigned long ) ; void (*clts)(void) ; unsigned long (*read_cr0)(void) ; void (*write_cr0)(unsigned long ) ; unsigned long (*read_cr4_safe)(void) ; unsigned long (*read_cr4)(void) ; void (*write_cr4)(unsigned long ) ; unsigned long (*read_cr8)(void) ; void (*write_cr8)(unsigned long ) ; void (*load_tr_desc)(void) ; void (*load_gdt)(struct desc_ptr const * ) ; void (*load_idt)(struct desc_ptr const * ) ; void (*store_idt)(struct desc_ptr * ) ; void (*set_ldt)(void const * , unsigned int ) ; unsigned long (*store_tr)(void) ; void (*load_tls)(struct thread_struct * , unsigned int ) ; void (*load_gs_index)(unsigned int ) ; void (*write_ldt_entry)(struct desc_struct * , int , void const * ) ; void (*write_gdt_entry)(struct desc_struct * , int , void const * , int ) ; void (*write_idt_entry)(gate_desc * , int , gate_desc const * ) ; void (*alloc_ldt)(struct desc_struct * , unsigned int ) ; void (*free_ldt)(struct desc_struct * , unsigned int ) ; void (*load_sp0)(struct tss_struct * , struct thread_struct * ) ; void (*set_iopl_mask)(unsigned int ) ; void (*wbinvd)(void) ; void (*io_delay)(void) ; void (*cpuid)(unsigned int * , unsigned int * , unsigned int * , unsigned int * ) ; u64 (*read_msr)(unsigned int , int * ) ; int (*write_msr)(unsigned int , unsigned int , unsigned int ) ; u64 (*read_tsc)(void) ; u64 (*read_pmc)(int ) ; unsigned long long (*read_tscp)(unsigned int * ) ; void (*usergs_sysret64)(void) ; void (*usergs_sysret32)(void) ; void (*iret)(void) ; void (*swapgs)(void) ; void (*start_context_switch)(struct task_struct * ) ; void (*end_context_switch)(struct task_struct * ) ; }; enum hrtimer_restart; struct drm_ati_pcigart_info { int gart_table_location ; int gart_reg_if ; void *addr ; dma_addr_t bus_addr ; dma_addr_t table_mask ; struct drm_dma_handle *table_handle ; struct drm_local_map mapping ; int table_size ; }; enum hrtimer_restart; struct drm_panel; struct display_timing; struct drm_panel_funcs { int (*disable)(struct drm_panel * ) ; int (*unprepare)(struct drm_panel * ) ; int (*prepare)(struct drm_panel * ) ; int (*enable)(struct drm_panel * ) ; int (*get_modes)(struct drm_panel * ) ; int (*get_timings)(struct drm_panel * , unsigned int , struct display_timing * ) ; }; struct drm_panel { struct drm_device *drm ; struct drm_connector *connector ; struct device *dev ; struct drm_panel_funcs const *funcs ; struct list_head list ; }; enum hrtimer_restart; __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void __read_once_size(void const volatile *p , void *res , int size ) { { switch (size) { case 1: *((__u8 *)res) = *((__u8 volatile *)p); goto ldv_880; case 2: *((__u16 *)res) = *((__u16 volatile *)p); goto ldv_880; case 4: *((__u32 *)res) = *((__u32 volatile *)p); goto ldv_880; case 8: *((__u64 *)res) = *((__u64 volatile *)p); goto ldv_880; default: __asm__ volatile ("": : : "memory"); __builtin_memcpy(res, (void const *)p, (unsigned long )size); __asm__ volatile ("": : : "memory"); } ldv_880: ; return; } } extern void *memset(void * , int , size_t ) ; extern void mutex_lock_nested(struct mutex * , unsigned int ) ; extern void mutex_unlock(struct mutex * ) ; extern int debug_lockdep_rcu_enabled(void) ; extern bool queue_work_on(int , struct workqueue_struct * , struct work_struct * ) ; bool ldv_queue_work_on_5(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_7(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; extern bool queue_delayed_work_on(int , struct workqueue_struct * , struct delayed_work * , unsigned long ) ; bool ldv_queue_delayed_work_on_6(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_9(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; extern void flush_workqueue(struct workqueue_struct * ) ; void ldv_flush_workqueue_8(struct workqueue_struct *ldv_func_arg1 ) ; extern void *idr_find_slowpath(struct idr * , int ) ; extern int idr_alloc(struct idr * , void * , int , int , gfp_t ) ; extern void *idr_replace(struct idr * , void * , int ) ; __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 ; { __read_once_size((void const volatile *)(& idr->hint), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); hint = ________p1; if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) { __read_once_size((void const volatile *)(& hint->ary) + ((unsigned long )id & 255UL), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___0 = debug_lockdep_rcu_enabled(); return ((void *)________p1___0); } else { } tmp___1 = idr_find_slowpath(idr, id); return (tmp___1); } } extern void *malloc(size_t ) ; extern void *calloc(size_t , size_t ) ; extern int __VERIFIER_nondet_int(void) ; extern unsigned long __VERIFIER_nondet_ulong(void) ; extern void *__VERIFIER_nondet_pointer(void) ; extern void __VERIFIER_assume(int ) ; void *ldv_malloc(size_t size ) { void *p ; void *tmp ; int tmp___0 ; { tmp___0 = __VERIFIER_nondet_int(); if (tmp___0 != 0) { return ((void *)0); } else { tmp = malloc(size); p = tmp; __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0)); return (p); } } } void *ldv_zalloc(size_t size ) { void *p ; void *tmp ; int tmp___0 ; { tmp___0 = __VERIFIER_nondet_int(); if (tmp___0 != 0) { return ((void *)0); } else { tmp = calloc(1UL, size); p = tmp; __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0)); return (p); } } } void *ldv_init_zalloc(size_t size ) { void *p ; void *tmp ; { tmp = calloc(1UL, size); p = tmp; __VERIFIER_assume((unsigned long )p != (unsigned long )((void *)0)); return (p); } } void *ldv_memset(void *s , int c , size_t n ) { void *tmp ; { tmp = memset(s, c, n); return (tmp); } } int ldv_undef_int(void) { int tmp ; { tmp = __VERIFIER_nondet_int(); return (tmp); } } void *ldv_undef_ptr(void) { void *tmp ; { tmp = __VERIFIER_nondet_pointer(); return (tmp); } } unsigned long ldv_undef_ulong(void) { unsigned long tmp ; { tmp = __VERIFIER_nondet_ulong(); return (tmp); } } __inline static long ldv__builtin_expect(long exp , long c ) { { return (exp); } } int LDV_IN_INTERRUPT = 1; void call_and_disable_all_1(int state ) ; void activate_work_1(struct work_struct *work , int state ) ; void drm_ut_debug_printk(char const *function_name , char const *format , ...) ; unsigned int drm_debug ; int drm_getmagic(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_authmagic(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_getmagic(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_auth *auth ; int ret ; long tmp ; { auth = (struct drm_auth *)data; ret = 0; mutex_lock_nested(& dev->struct_mutex, 0U); if (file_priv->magic == 0U) { ret = idr_alloc(& (file_priv->master)->magic_map, (void *)file_priv, 1, 0, 208U); if (ret >= 0) { file_priv->magic = (drm_magic_t )ret; } else { } } else { } auth->magic = file_priv->magic; mutex_unlock(& dev->struct_mutex); tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_getmagic", "%u\n", auth->magic); } else { } return (0 < ret ? 0 : ret); } } int drm_authmagic(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_auth *auth ; struct drm_file *file ; long tmp ; void *tmp___0 ; { auth = (struct drm_auth *)data; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_authmagic", "%u\n", auth->magic); } else { } mutex_lock_nested(& dev->struct_mutex, 0U); tmp___0 = idr_find(& (file_priv->master)->magic_map, (int )auth->magic); file = (struct drm_file *)tmp___0; if ((unsigned long )file != (unsigned long )((struct drm_file *)0)) { file->authenticated = 1U; idr_replace(& (file_priv->master)->magic_map, (void *)0, (int )auth->magic); } else { } mutex_unlock(& dev->struct_mutex); return ((unsigned long )file != (unsigned long )((struct drm_file *)0) ? 0 : -22); } } bool ldv_queue_work_on_5(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_6(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_7(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_8(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_9(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static int fls64(__u64 x ) { int bitpos ; { bitpos = -1; __asm__ ("bsrq %1,%q0": "+r" (bitpos): "rm" (x)); return (bitpos + 1); } } __inline static unsigned int fls_long(unsigned long l ) { int tmp___0 ; { tmp___0 = fls64((__u64 )l); return ((unsigned int )tmp___0); } } __inline static int __ilog2_u64(u64 n ) { int tmp ; { tmp = fls64(n); return (tmp + -1); } } __inline static unsigned long __roundup_pow_of_two(unsigned long n ) { unsigned int tmp ; { tmp = fls_long(n - 1UL); return (1UL << (int )tmp); } } extern void __might_fault(char const * , int ) ; extern void __list_add(struct list_head * , struct list_head * , struct list_head * ) ; __inline static void list_add(struct list_head *new , struct list_head *head ) { { __list_add(new, head, head->next); return; } } extern void list_del(struct list_head * ) ; __inline static int list_empty(struct list_head const *head ) { { return ((unsigned long )((struct list_head const *)head->next) == (unsigned long )head); } } extern void __bad_percpu_size(void) ; extern struct task_struct *current_task ; __inline static struct task_struct *get_current(void) { struct task_struct *pfo_ret__ ; { switch (8UL) { case 1UL: __asm__ ("movb %%gs:%P1,%0": "=q" (pfo_ret__): "p" (& current_task)); goto ldv_3129; case 2UL: __asm__ ("movw %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task)); goto ldv_3129; case 4UL: __asm__ ("movl %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task)); goto ldv_3129; case 8UL: __asm__ ("movq %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& current_task)); goto ldv_3129; default: __bad_percpu_size(); } ldv_3129: ; return (pfo_ret__); } } extern void *memcpy(void * , void const * , size_t ) ; __inline static int atomic_read(atomic_t const *v ) { int __var ; { __var = 0; return ((int )*((int const volatile *)(& v->counter))); } } __inline static void atomic_inc(atomic_t *v ) { { __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; incl %0": "+m" (v->counter)); return; } } __inline static void atomic_dec(atomic_t *v ) { { __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; decl %0": "+m" (v->counter)); return; } } extern void _raw_spin_lock(raw_spinlock_t * ) ; extern void _raw_spin_unlock(raw_spinlock_t * ) ; __inline static void spin_lock(spinlock_t *lock ) { { _raw_spin_lock(& lock->__annonCompField18.rlock); return; } } __inline static void spin_unlock(spinlock_t *lock ) { { _raw_spin_unlock(& lock->__annonCompField18.rlock); return; } } extern void __wake_up(wait_queue_head_t * , unsigned int , int , void * ) ; bool ldv_queue_work_on_19(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_21(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_20(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_23(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_22(struct workqueue_struct *ldv_func_arg1 ) ; extern void *ioremap_nocache(resource_size_t , unsigned long ) ; __inline static void *ioremap(resource_size_t offset , unsigned long size ) { void *tmp ; { tmp = ioremap_nocache(offset, size); return (tmp); } } extern void iounmap(void volatile * ) ; extern void *ioremap_wc(resource_size_t , unsigned long ) ; extern int arch_phys_wc_add(unsigned long , unsigned long ) ; extern void arch_phys_wc_del(int ) ; extern bool capable(int ) ; __inline static pid_t task_pid_nr(struct task_struct *tsk ) { { return (tsk->pid); } } extern void *krealloc(void const * , size_t , gfp_t ) ; extern void kfree(void const * ) ; extern void *__kmalloc(size_t , gfp_t ) ; __inline static void *kmalloc(size_t size , gfp_t flags ) { void *tmp___2 ; { tmp___2 = __kmalloc(size, flags); return (tmp___2); } } __inline static void *kzalloc(size_t size , gfp_t flags ) { void *tmp ; { tmp = kmalloc(size, flags | 32768U); return (tmp); } } extern void *vmalloc_user(unsigned long ) ; extern void vfree(void const * ) ; extern unsigned long vm_mmap(struct file * , unsigned long , unsigned long , unsigned long , unsigned long , unsigned long ) ; extern unsigned long _copy_from_user(void * , void const * , unsigned int ) ; extern unsigned long _copy_to_user(void * , void const * , unsigned int ) ; extern void __copy_from_user_overflow(void) ; extern void __copy_to_user_overflow(void) ; __inline static unsigned long copy_from_user(void *to , void const *from , unsigned long n ) { int sz ; unsigned long tmp ; long tmp___0 ; { tmp = __builtin_object_size((void const *)to, 0); sz = (int )tmp; __might_fault("./arch/x86/include/asm/uaccess.h", 697); tmp___0 = ldv__builtin_expect((long )(sz < 0 || (unsigned long )sz >= n), 1L); if (tmp___0 != 0L) { n = _copy_from_user(to, from, (unsigned int )n); } else { __copy_from_user_overflow(); } return (n); } } __inline static unsigned long copy_to_user(void *to , void const *from , unsigned long n ) { int sz ; unsigned long tmp ; long tmp___0 ; { tmp = __builtin_object_size(from, 0); sz = (int )tmp; __might_fault("./arch/x86/include/asm/uaccess.h", 732); tmp___0 = ldv__builtin_expect((long )(sz < 0 || (unsigned long )sz >= n), 1L); if (tmp___0 != 0L) { n = _copy_to_user(to, from, (unsigned int )n); } else { __copy_to_user_overflow(); } return (n); } } int drm_ht_insert_item(struct drm_open_hash *ht , struct drm_hash_item *item ) ; int drm_ht_just_insert_please(struct drm_open_hash *ht , struct drm_hash_item *item , unsigned long seed , int bits , int shift , unsigned long add ) ; int drm_ht_remove_key(struct drm_open_hash *ht , unsigned long key ) ; void drm_err(char const *format , ...) ; __inline static int drm_core_check_feature(struct drm_device *dev , int feature ) { { return (((dev->driver)->driver_features & (u32 )feature) != 0U); } } struct drm_dma_handle *drm_pci_alloc(struct drm_device *dev , size_t size , size_t align ) ; void drm_pci_free(struct drm_device *dev , struct drm_dma_handle *dmah ) ; int drm_legacy_addmap(struct drm_device *dev , resource_size_t offset , unsigned int size , enum drm_map_type type , enum drm_map_flags flags , struct drm_local_map **map_ptr ) ; int drm_legacy_rmmap(struct drm_device *dev , struct drm_local_map *map ) ; int drm_legacy_rmmap_locked(struct drm_device *dev , struct drm_local_map *map ) ; struct drm_local_map *drm_legacy_getsarea(struct drm_device *dev ) ; int drm_legacy_addbufs_agp(struct drm_device *dev , struct drm_buf_desc *request ) ; int drm_legacy_addbufs_pci(struct drm_device *dev , struct drm_buf_desc *request ) ; void __drm_legacy_pci_free(struct drm_device *dev , drm_dma_handle_t *dmah ) ; int drm_legacy_addmap_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_rmmap_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_addbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_infobufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_markbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_freebufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_mapbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_dma_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; void drm_legacy_free_buffer(struct drm_device *dev , struct drm_buf *buf ) ; static struct drm_map_list *drm_find_matching_map(struct drm_device *dev , struct drm_local_map *map ) { struct drm_map_list *entry ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)dev->maplist.next; entry = (struct drm_map_list *)__mptr; goto ldv_38962; ldv_38961: ; if (((unsigned long )entry->map == (unsigned long )((struct drm_local_map *)0) || (unsigned int )map->type != (unsigned int )(entry->map)->type) || (unsigned long )entry->master != (unsigned long )(dev->primary)->master) { goto ldv_38955; } else { } switch ((unsigned int )map->type) { case 2U: ; if ((unsigned int )map->flags != 32U) { goto ldv_38957; } else { } return (entry); case 1U: ; case 0U: ; if ((((entry->map)->offset ^ map->offset) & 4294967295ULL) == 0ULL) { return (entry); } else { } default: ; } ldv_38957: ; if ((entry->map)->offset == map->offset) { return (entry); } else { } ldv_38955: __mptr___0 = (struct list_head const *)entry->head.next; entry = (struct drm_map_list *)__mptr___0; ldv_38962: ; if ((unsigned long )(& entry->head) != (unsigned long )(& dev->maplist)) { goto ldv_38961; } else { } return ((struct drm_map_list *)0); } } static int drm_map_handle(struct drm_device *dev , struct drm_hash_item *hash , unsigned long user_token , int hashed_handle , int shm ) { int use_hashed_handle ; int shift ; unsigned long add ; int ret ; int tmp ; { use_hashed_handle = (user_token & 0xffffffff00000000UL) != 0UL || hashed_handle != 0; if (use_hashed_handle == 0) { hash->key = user_token >> 12; ret = drm_ht_insert_item(& dev->map_hash, hash); if (ret != -22) { return (ret); } else { } } else { } shift = 0; add = 65536UL; tmp = drm_ht_just_insert_please(& dev->map_hash, hash, user_token, 17, shift, add); return (tmp); } } static int drm_addmap_core(struct drm_device *dev , resource_size_t offset , unsigned int size , enum drm_map_type type , enum drm_map_flags flags , struct drm_map_list **maplist ) { struct drm_local_map *map ; struct drm_map_list *list ; drm_dma_handle_t *dmah ; unsigned long user_token ; int ret ; void *tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; unsigned long tmp___3 ; int tmp___4 ; long tmp___5 ; struct drm_hw_lock *tmp___6 ; struct drm_agp_mem *entry ; int valid ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; int tmp___7 ; long tmp___8 ; struct drm_dma_handle *tmp___9 ; void *tmp___10 ; { tmp = kmalloc(40UL, 208U); map = (struct drm_local_map *)tmp; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { return (-12); } else { } map->offset = offset; map->size = (unsigned long )size; map->flags = flags; map->type = type; if (((unsigned int )map->flags & 64U) != 0U && (unsigned int )map->type != 2U) { kfree((void const *)map); return (-22); } else { } tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_addmap_core", "offset = 0x%08llx, size = 0x%08lx, type = %d\n", map->offset, map->size, (unsigned int )map->type); } else { } if ((unsigned int )map->type == 2U) { map->size = (map->size + 4095UL) & 0xfffffffffffff000UL; } else { } if ((map->offset & 4095ULL) != 0ULL || (map->size & 4095UL) != 0UL) { kfree((void const *)map); return (-22); } else { } map->mtrr = -1; map->handle = (void *)0; switch ((unsigned int )map->type) { case 1U: ; case 0U: list = drm_find_matching_map(dev, map); if ((unsigned long )list != (unsigned long )((struct drm_map_list *)0)) { if ((list->map)->size != map->size) { tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_addmap_core", "Matching maps of type %d with mismatched sizes, (%ld vs %ld)\n", (unsigned int )map->type, map->size, (list->map)->size); } else { } (list->map)->size = map->size; } else { } kfree((void const *)map); *maplist = list; return (0); } else { } if ((unsigned int )map->type == 0U || ((unsigned int )map->flags & 16U) != 0U) { map->mtrr = arch_phys_wc_add((unsigned long )map->offset, map->size); } else { } if ((unsigned int )map->type == 1U) { if (((unsigned int )map->flags & 16U) != 0U) { map->handle = ioremap_wc(map->offset, map->size); } else { map->handle = ioremap(map->offset, map->size); } if ((unsigned long )map->handle == (unsigned long )((void *)0)) { kfree((void const *)map); return (-12); } else { } } else { } goto ldv_38992; case 2U: list = drm_find_matching_map(dev, map); if ((unsigned long )list != (unsigned long )((struct drm_map_list *)0)) { if ((list->map)->size != map->size) { tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_addmap_core", "Matching maps of type %d with mismatched sizes, (%ld vs %ld)\n", (unsigned int )map->type, map->size, (list->map)->size); } else { } (list->map)->size = map->size; } else { } kfree((void const *)map); *maplist = list; return (0); } else { } map->handle = vmalloc_user(map->size); tmp___5 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___5 != 0L) { tmp___3 = __roundup_pow_of_two(map->size); tmp___4 = __ilog2_u64((u64 )tmp___3); drm_ut_debug_printk("drm_addmap_core", "%lu %d %p\n", map->size, tmp___4, map->handle); } else { } if ((unsigned long )map->handle == (unsigned long )((void *)0)) { kfree((void const *)map); return (-12); } else { } map->offset = (resource_size_t )map->handle; if (((unsigned int )map->flags & 32U) != 0U) { if ((unsigned long )((dev->primary)->master)->lock.hw_lock != (unsigned long )((struct drm_hw_lock *)0)) { vfree((void const *)map->handle); kfree((void const *)map); return (-16); } else { } tmp___6 = (struct drm_hw_lock *)map->handle; ((dev->primary)->master)->lock.hw_lock = tmp___6; dev->sigdata.lock = tmp___6; } else { } goto ldv_38992; case 3U: valid = 0; if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0)) { kfree((void const *)map); return (-22); } else { } if (map->offset < (unsigned long long )(dev->agp)->base || map->offset > (unsigned long long )(((dev->agp)->base + (dev->agp)->agp_info.aper_size * 1048576UL) - 1UL)) { map->offset = map->offset + (unsigned long long )(dev->agp)->base; } else { } map->mtrr = (dev->agp)->agp_mtrr; __mptr = (struct list_head const *)(dev->agp)->memory.next; entry = (struct drm_agp_mem *)__mptr + 0xffffffffffffffe0UL; goto ldv_39003; ldv_39002: ; if (map->offset >= (unsigned long long )entry->bound && map->offset + (unsigned long long )map->size <= (unsigned long long )(entry->bound + (unsigned long )entry->pages * 4096UL)) { valid = 1; goto ldv_39001; } else { } __mptr___0 = (struct list_head const *)entry->head.next; entry = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; ldv_39003: ; if ((unsigned long )(& entry->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_39002; } else { } ldv_39001: tmp___7 = list_empty((struct list_head const *)(& (dev->agp)->memory)); if (tmp___7 == 0 && valid == 0) { kfree((void const *)map); return (-1); } else { } tmp___8 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("drm_addmap_core", "AGP offset = 0x%08llx, size = 0x%08lx\n", map->offset, map->size); } else { } goto ldv_38992; case 4U: ; if ((unsigned long )dev->sg == (unsigned long )((struct drm_sg_mem *)0)) { kfree((void const *)map); return (-22); } else { } map->offset = map->offset + (unsigned long long )(dev->sg)->virtual; goto ldv_38992; case 5U: tmp___9 = drm_pci_alloc(dev, map->size, map->size); dmah = tmp___9; if ((unsigned long )dmah == (unsigned long )((drm_dma_handle_t *)0)) { kfree((void const *)map); return (-12); } else { } map->handle = dmah->vaddr; map->offset = dmah->busaddr; kfree((void const *)dmah); goto ldv_38992; default: kfree((void const *)map); return (-22); } ldv_38992: tmp___10 = kzalloc(64UL, 208U); list = (struct drm_map_list *)tmp___10; if ((unsigned long )list == (unsigned long )((struct drm_map_list *)0)) { if ((unsigned int )map->type == 1U) { iounmap((void volatile *)map->handle); } else { } kfree((void const *)map); return (-22); } else { } list->map = map; mutex_lock_nested(& dev->struct_mutex, 0U); list_add(& list->head, & dev->maplist); user_token = (unsigned int )map->type == 2U ? (unsigned long )map->handle : (unsigned long )map->offset; ret = drm_map_handle(dev, & list->hash, user_token, 0, (unsigned int )map->type == 2U); if (ret != 0) { if ((unsigned int )map->type == 1U) { iounmap((void volatile *)map->handle); } else { } kfree((void const *)map); kfree((void const *)list); mutex_unlock(& dev->struct_mutex); return (ret); } else { } list->user_token = (uint64_t )(list->hash.key << 12); mutex_unlock(& dev->struct_mutex); if (((unsigned int )map->flags & 128U) == 0U) { list->master = (dev->primary)->master; } else { } *maplist = list; return (0); } } int drm_legacy_addmap(struct drm_device *dev , resource_size_t offset , unsigned int size , enum drm_map_type type , enum drm_map_flags flags , struct drm_local_map **map_ptr ) { struct drm_map_list *list ; int rc ; { rc = drm_addmap_core(dev, offset, size, type, flags, & list); if (rc == 0) { *map_ptr = list->map; } else { } return (rc); } } static char const __kstrtab_drm_legacy_addmap[18U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'a', 'd', 'd', 'm', 'a', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_addmap ; struct kernel_symbol const __ksymtab_drm_legacy_addmap = {(unsigned long )(& drm_legacy_addmap), (char const *)(& __kstrtab_drm_legacy_addmap)}; int drm_legacy_addmap_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_map *map ; struct drm_map_list *maplist ; int err ; bool tmp ; int tmp___0 ; { map = (struct drm_map *)data; tmp = capable(21); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if ((tmp___0 && (unsigned int )map->type != 3U) && (unsigned int )map->type != 2U) { return (-1); } else { } err = drm_addmap_core(dev, (resource_size_t )map->offset, (unsigned int )map->size, map->type, map->flags, & maplist); if (err != 0) { return (err); } else { } map->handle = (void *)maplist->user_token; map->mtrr = -1; return (0); } } int drm_legacy_rmmap_locked(struct drm_device *dev , struct drm_local_map *map ) { struct drm_map_list *r_list ; struct drm_map_list *list_t ; drm_dma_handle_t dmah ; int found ; struct drm_master *master ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { r_list = (struct drm_map_list *)0; found = 0; __mptr = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr; __mptr___0 = (struct list_head const *)r_list->head.next; list_t = (struct drm_map_list *)__mptr___0; goto ldv_39054; ldv_39053: ; if ((unsigned long )r_list->map == (unsigned long )map) { master = r_list->master; list_del(& r_list->head); drm_ht_remove_key(& dev->map_hash, (unsigned long )(r_list->user_token >> 12)); kfree((void const *)r_list); found = 1; goto ldv_39052; } else { } r_list = list_t; __mptr___1 = (struct list_head const *)list_t->head.next; list_t = (struct drm_map_list *)__mptr___1; ldv_39054: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39053; } else { } ldv_39052: ; if (found == 0) { return (-22); } else { } switch ((unsigned int )map->type) { case 1U: iounmap((void volatile *)map->handle); case 0U: arch_phys_wc_del(map->mtrr); goto ldv_39057; case 2U: vfree((void const *)map->handle); if ((unsigned long )master != (unsigned long )((struct drm_master *)0)) { if ((unsigned long )dev->sigdata.lock == (unsigned long )master->lock.hw_lock) { dev->sigdata.lock = (struct drm_hw_lock *)0; } else { } master->lock.hw_lock = (struct drm_hw_lock *)0; master->lock.file_priv = (struct drm_file *)0; __wake_up(& master->lock.lock_queue, 1U, 0, (void *)0); } else { } goto ldv_39057; case 3U: ; case 4U: ; goto ldv_39057; case 5U: dmah.vaddr = map->handle; dmah.busaddr = map->offset; dmah.size = map->size; __drm_legacy_pci_free(dev, & dmah); goto ldv_39057; } ldv_39057: kfree((void const *)map); return (0); } } static char const __kstrtab_drm_legacy_rmmap_locked[24U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'r', 'm', 'm', 'a', 'p', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_rmmap_locked ; struct kernel_symbol const __ksymtab_drm_legacy_rmmap_locked = {(unsigned long )(& drm_legacy_rmmap_locked), (char const *)(& __kstrtab_drm_legacy_rmmap_locked)}; int drm_legacy_rmmap(struct drm_device *dev , struct drm_local_map *map ) { int ret ; { mutex_lock_nested(& dev->struct_mutex, 0U); ret = drm_legacy_rmmap_locked(dev, map); mutex_unlock(& dev->struct_mutex); return (ret); } } static char const __kstrtab_drm_legacy_rmmap[17U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'r', 'm', 'm', 'a', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_rmmap ; struct kernel_symbol const __ksymtab_drm_legacy_rmmap = {(unsigned long )(& drm_legacy_rmmap), (char const *)(& __kstrtab_drm_legacy_rmmap)}; int drm_legacy_rmmap_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_map *request ; struct drm_local_map *map ; struct drm_map_list *r_list ; int ret ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; int tmp ; { request = (struct drm_map *)data; map = (struct drm_local_map *)0; mutex_lock_nested(& dev->struct_mutex, 0U); __mptr = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr; goto ldv_39098; ldv_39097: ; if (((unsigned long )r_list->map != (unsigned long )((struct drm_local_map *)0) && r_list->user_token == (unsigned long long )request->handle) && ((unsigned int )(r_list->map)->flags & 64U) != 0U) { map = r_list->map; goto ldv_39096; } else { } __mptr___0 = (struct list_head const *)r_list->head.next; r_list = (struct drm_map_list *)__mptr___0; ldv_39098: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39097; } else { } ldv_39096: tmp = list_empty((struct list_head const *)(& dev->maplist)); if (tmp != 0 || (unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { mutex_unlock(& dev->struct_mutex); return (-22); } else { } if ((unsigned int )map->type == 1U || (unsigned int )map->type == 0U) { mutex_unlock(& dev->struct_mutex); return (0); } else { } ret = drm_legacy_rmmap_locked(dev, map); mutex_unlock(& dev->struct_mutex); return (ret); } } static void drm_cleanup_buf_error(struct drm_device *dev , struct drm_buf_entry *entry ) { int i ; { if (entry->seg_count != 0) { i = 0; goto ldv_39105; ldv_39104: ; if ((unsigned long )*(entry->seglist + (unsigned long )i) != (unsigned long )((struct drm_dma_handle *)0)) { drm_pci_free(dev, *(entry->seglist + (unsigned long )i)); } else { } i = i + 1; ldv_39105: ; if (entry->seg_count > i) { goto ldv_39104; } else { } kfree((void const *)entry->seglist); entry->seg_count = 0; } else { } if (entry->buf_count != 0) { i = 0; goto ldv_39108; ldv_39107: kfree((void const *)(entry->buflist + (unsigned long )i)->dev_private); i = i + 1; ldv_39108: ; if (entry->buf_count > i) { goto ldv_39107; } else { } kfree((void const *)entry->buflist); entry->buf_count = 0; } else { } return; } } int drm_legacy_addbufs_agp(struct drm_device *dev , struct drm_buf_desc *request ) { struct drm_device_dma *dma ; struct drm_buf_entry *entry ; struct drm_agp_mem *agp_entry ; struct drm_buf *buf ; unsigned long offset ; unsigned long agp_offset ; int count ; int order ; int size ; int alignment ; int page_order ; int total ; int byte_count ; int i ; int valid ; struct drm_buf **temp_buflist ; unsigned long tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; long tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; long tmp___7 ; int tmp___8 ; void *tmp___9 ; long tmp___10 ; long tmp___11 ; void *tmp___12 ; long tmp___13 ; long tmp___14 ; { dma = dev->dma; if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } count = request->count; tmp = __roundup_pow_of_two((unsigned long )request->size); order = __ilog2_u64((u64 )tmp); size = 1 << order; alignment = (int )request->flags & 1 ? (size + 4095) & -4096 : size; page_order = 0 > order + -12 ? 0 : order + -12; total = (int )(4096UL << page_order); byte_count = 0; agp_offset = (dev->agp)->base + request->agp_start; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "count: %d\n", count); } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "order: %d\n", order); } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "size: %d\n", size); } else { } tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "agp_offset: %lx\n", agp_offset); } else { } tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "alignment: %d\n", alignment); } else { } tmp___5 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "page_order: %d\n", page_order); } else { } tmp___6 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___6 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "total: %d\n", total); } else { } if (order <= 4 || order > 22) { return (-22); } else { } valid = 0; __mptr = (struct list_head const *)(dev->agp)->memory.next; agp_entry = (struct drm_agp_mem *)__mptr + 0xffffffffffffffe0UL; goto ldv_39137; ldv_39136: ; if (agp_entry->bound <= agp_offset && (unsigned long )(total * count) + agp_offset <= agp_entry->bound + (unsigned long )agp_entry->pages * 4096UL) { valid = 1; goto ldv_39135; } else { } __mptr___0 = (struct list_head const *)agp_entry->head.next; agp_entry = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; ldv_39137: ; if ((unsigned long )(& agp_entry->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_39136; } else { } ldv_39135: tmp___8 = list_empty((struct list_head const *)(& (dev->agp)->memory)); if (tmp___8 == 0 && valid == 0) { tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "zone invalid\n"); } else { } return (-22); } else { } spin_lock(& dev->buf_lock); if (dev->buf_use != 0) { spin_unlock(& dev->buf_lock); return (-16); } else { } atomic_inc(& dev->buf_alloc); spin_unlock(& dev->buf_lock); mutex_lock_nested(& dev->struct_mutex, 0U); entry = (struct drm_buf_entry *)(& dma->bufs) + (unsigned long )order; if (entry->buf_count != 0) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } if (count < 0 || count > 4096) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-22); } else { } tmp___9 = kzalloc((unsigned long )count * 88UL, 208U); entry->buflist = (struct drm_buf *)tmp___9; if ((unsigned long )entry->buflist == (unsigned long )((struct drm_buf *)0)) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } entry->buf_size = size; entry->page_order = page_order; offset = 0UL; goto ldv_39139; ldv_39138: buf = entry->buflist + (unsigned long )entry->buf_count; buf->idx = dma->buf_count + entry->buf_count; buf->total = alignment; buf->order = order; buf->used = 0; buf->offset = dma->byte_count + offset; buf->bus_address = agp_offset + offset; buf->address = (void *)(agp_offset + offset); buf->next = (struct drm_buf *)0; buf->waiting = 0; buf->pending = 0; buf->file_priv = (struct drm_file *)0; buf->dev_priv_size = (dev->driver)->dev_priv_size; buf->dev_private = kzalloc((size_t )buf->dev_priv_size, 208U); if ((unsigned long )buf->dev_private == (unsigned long )((void *)0)) { entry->buf_count = count; drm_cleanup_buf_error(dev, entry); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___10 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "buffer %d @ %p\n", entry->buf_count, buf->address); } else { } offset = (unsigned long )alignment + offset; entry->buf_count = entry->buf_count + 1; byte_count = (int )((unsigned int )(4096UL << page_order) + (unsigned int )byte_count); ldv_39139: ; if (entry->buf_count < count) { goto ldv_39138; } else { } tmp___11 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___11 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "byte_count: %d\n", byte_count); } else { } tmp___12 = krealloc((void const *)dma->buflist, (unsigned long )(dma->buf_count + entry->buf_count) * 8UL, 208U); temp_buflist = (struct drm_buf **)tmp___12; if ((unsigned long )temp_buflist == (unsigned long )((struct drm_buf **)0)) { drm_cleanup_buf_error(dev, entry); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } dma->buflist = temp_buflist; i = 0; goto ldv_39142; ldv_39141: *(dma->buflist + (unsigned long )(dma->buf_count + i)) = entry->buflist + (unsigned long )i; i = i + 1; ldv_39142: ; if (entry->buf_count > i) { goto ldv_39141; } else { } dma->buf_count = dma->buf_count + entry->buf_count; dma->seg_count = dma->seg_count + entry->seg_count; dma->page_count = dma->page_count + (byte_count >> 12); dma->byte_count = dma->byte_count + (unsigned long )byte_count; tmp___13 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___13 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "dma->buf_count : %d\n", dma->buf_count); } else { } tmp___14 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___14 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_agp", "entry->buf_count : %d\n", entry->buf_count); } else { } mutex_unlock(& dev->struct_mutex); request->count = entry->buf_count; request->size = size; dma->flags = 1; atomic_dec(& dev->buf_alloc); return (0); } } static char const __kstrtab_drm_legacy_addbufs_agp[23U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'a', 'd', 'd', 'b', 'u', 'f', 's', '_', 'a', 'g', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_addbufs_agp ; struct kernel_symbol const __ksymtab_drm_legacy_addbufs_agp = {(unsigned long )(& drm_legacy_addbufs_agp), (char const *)(& __kstrtab_drm_legacy_addbufs_agp)}; int drm_legacy_addbufs_pci(struct drm_device *dev , struct drm_buf_desc *request ) { struct drm_device_dma *dma ; int count ; int order ; int size ; int total ; int page_order ; struct drm_buf_entry *entry ; drm_dma_handle_t *dmah ; struct drm_buf *buf ; int alignment ; unsigned long offset ; int i ; int byte_count ; int page_count___0 ; unsigned long *temp_pagelist ; struct drm_buf **temp_buflist ; int tmp ; bool tmp___0 ; int tmp___1 ; unsigned long tmp___2 ; long tmp___3 ; void *tmp___4 ; void *tmp___5 ; void *tmp___6 ; long tmp___7 ; struct drm_dma_handle *tmp___8 ; int tmp___9 ; long tmp___10 ; int tmp___11 ; long tmp___12 ; void *tmp___13 ; { dma = dev->dma; tmp = drm_core_check_feature(dev, 8); if (tmp == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } tmp___0 = capable(21); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { return (-1); } else { } count = request->count; tmp___2 = __roundup_pow_of_two((unsigned long )request->size); order = __ilog2_u64((u64 )tmp___2); size = 1 << order; tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_pci", "count=%d, size=%d (%d), order=%d\n", request->count, request->size, size, order); } else { } if (order <= 4 || order > 22) { return (-22); } else { } alignment = (int )request->flags & 1 ? (size + 4095) & -4096 : size; page_order = 0 > order + -12 ? 0 : order + -12; total = (int )(4096UL << page_order); spin_lock(& dev->buf_lock); if (dev->buf_use != 0) { spin_unlock(& dev->buf_lock); return (-16); } else { } atomic_inc(& dev->buf_alloc); spin_unlock(& dev->buf_lock); mutex_lock_nested(& dev->struct_mutex, 0U); entry = (struct drm_buf_entry *)(& dma->bufs) + (unsigned long )order; if (entry->buf_count != 0) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } if (count < 0 || count > 4096) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-22); } else { } tmp___4 = kzalloc((unsigned long )count * 88UL, 208U); entry->buflist = (struct drm_buf *)tmp___4; if ((unsigned long )entry->buflist == (unsigned long )((struct drm_buf *)0)) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___5 = kzalloc((unsigned long )count * 8UL, 208U); entry->seglist = (struct drm_dma_handle **)tmp___5; if ((unsigned long )entry->seglist == (unsigned long )((struct drm_dma_handle **)0)) { kfree((void const *)entry->buflist); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___6 = kmalloc((unsigned long )(dma->page_count + (count << page_order)) * 8UL, 208U); temp_pagelist = (unsigned long *)tmp___6; if ((unsigned long )temp_pagelist == (unsigned long )((unsigned long *)0UL)) { kfree((void const *)entry->buflist); kfree((void const *)entry->seglist); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } memcpy((void *)temp_pagelist, (void const *)dma->pagelist, (unsigned long )dma->page_count * 8UL); tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_pci", "pagelist: %d entries\n", dma->page_count + (count << page_order)); } else { } entry->buf_size = size; entry->page_order = page_order; byte_count = 0; page_count___0 = 0; goto ldv_39180; ldv_39179: tmp___8 = drm_pci_alloc(dev, 4096UL << page_order, 4096UL); dmah = tmp___8; if ((unsigned long )dmah == (unsigned long )((drm_dma_handle_t *)0)) { entry->buf_count = count; entry->seg_count = count; drm_cleanup_buf_error(dev, entry); kfree((void const *)temp_pagelist); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___9 = entry->seg_count; entry->seg_count = entry->seg_count + 1; *(entry->seglist + (unsigned long )tmp___9) = dmah; i = 0; goto ldv_39174; ldv_39173: tmp___10 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_pci", "page %d @ 0x%08lx\n", dma->page_count + page_count___0, (unsigned long )dmah->vaddr + (unsigned long )i * 4096UL); } else { } tmp___11 = page_count___0; page_count___0 = page_count___0 + 1; *(temp_pagelist + (unsigned long )(dma->page_count + tmp___11)) = (unsigned long )dmah->vaddr + (unsigned long )i * 4096UL; i = i + 1; ldv_39174: ; if (1 << page_order > i) { goto ldv_39173; } else { } offset = 0UL; goto ldv_39177; ldv_39176: buf = entry->buflist + (unsigned long )entry->buf_count; buf->idx = dma->buf_count + entry->buf_count; buf->total = alignment; buf->order = order; buf->used = 0; buf->offset = (dma->byte_count + (unsigned long )byte_count) + offset; buf->address = dmah->vaddr + offset; buf->bus_address = (unsigned long )(dmah->busaddr + (unsigned long long )offset); buf->next = (struct drm_buf *)0; buf->waiting = 0; buf->pending = 0; buf->file_priv = (struct drm_file *)0; buf->dev_priv_size = (dev->driver)->dev_priv_size; buf->dev_private = kzalloc((size_t )buf->dev_priv_size, 208U); if ((unsigned long )buf->dev_private == (unsigned long )((void *)0)) { entry->buf_count = count; entry->seg_count = count; drm_cleanup_buf_error(dev, entry); kfree((void const *)temp_pagelist); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___12 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___12 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_pci", "buffer %d @ %p\n", entry->buf_count, buf->address); } else { } offset = (unsigned long )alignment + offset; entry->buf_count = entry->buf_count + 1; ldv_39177: ; if ((unsigned long )size + offset <= (unsigned long )total && entry->buf_count < count) { goto ldv_39176; } else { } byte_count = (int )((unsigned int )(4096UL << page_order) + (unsigned int )byte_count); ldv_39180: ; if (entry->buf_count < count) { goto ldv_39179; } else { } tmp___13 = krealloc((void const *)dma->buflist, (unsigned long )(dma->buf_count + entry->buf_count) * 8UL, 208U); temp_buflist = (struct drm_buf **)tmp___13; if ((unsigned long )temp_buflist == (unsigned long )((struct drm_buf **)0)) { drm_cleanup_buf_error(dev, entry); kfree((void const *)temp_pagelist); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } dma->buflist = temp_buflist; i = 0; goto ldv_39183; ldv_39182: *(dma->buflist + (unsigned long )(dma->buf_count + i)) = entry->buflist + (unsigned long )i; i = i + 1; ldv_39183: ; if (entry->buf_count > i) { goto ldv_39182; } else { } if (dma->page_count != 0) { kfree((void const *)dma->pagelist); } else { } dma->pagelist = temp_pagelist; dma->buf_count = dma->buf_count + entry->buf_count; dma->seg_count = dma->seg_count + entry->seg_count; dma->page_count = dma->page_count + (entry->seg_count << page_order); dma->byte_count = dma->byte_count + (unsigned long )(entry->seg_count << page_order) * 4096UL; mutex_unlock(& dev->struct_mutex); request->count = entry->buf_count; request->size = size; if (((unsigned int )request->flags & 16U) != 0U) { dma->flags = 8; } else { } atomic_dec(& dev->buf_alloc); return (0); } } static char const __kstrtab_drm_legacy_addbufs_pci[23U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'a', 'd', 'd', 'b', 'u', 'f', 's', '_', 'p', 'c', 'i', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_addbufs_pci ; struct kernel_symbol const __ksymtab_drm_legacy_addbufs_pci = {(unsigned long )(& drm_legacy_addbufs_pci), (char const *)(& __kstrtab_drm_legacy_addbufs_pci)}; static int drm_legacy_addbufs_sg(struct drm_device *dev , struct drm_buf_desc *request ) { struct drm_device_dma *dma ; struct drm_buf_entry *entry ; struct drm_buf *buf ; unsigned long offset ; unsigned long agp_offset ; int count ; int order ; int size ; int alignment ; int page_order ; int total ; int byte_count ; int i ; struct drm_buf **temp_buflist ; int tmp ; bool tmp___0 ; int tmp___1 ; unsigned long tmp___2 ; long tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; long tmp___7 ; long tmp___8 ; long tmp___9 ; void *tmp___10 ; long tmp___11 ; long tmp___12 ; void *tmp___13 ; long tmp___14 ; long tmp___15 ; { dma = dev->dma; tmp = drm_core_check_feature(dev, 16); if (tmp == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } tmp___0 = capable(21); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { return (-1); } else { } count = request->count; tmp___2 = __roundup_pow_of_two((unsigned long )request->size); order = __ilog2_u64((u64 )tmp___2); size = 1 << order; alignment = (int )request->flags & 1 ? (size + 4095) & -4096 : size; page_order = 0 > order + -12 ? 0 : order + -12; total = (int )(4096UL << page_order); byte_count = 0; agp_offset = request->agp_start; tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "count: %d\n", count); } else { } tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "order: %d\n", order); } else { } tmp___5 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "size: %d\n", size); } else { } tmp___6 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___6 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "agp_offset: %lu\n", agp_offset); } else { } tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "alignment: %d\n", alignment); } else { } tmp___8 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "page_order: %d\n", page_order); } else { } tmp___9 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___9 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "total: %d\n", total); } else { } if (order <= 4 || order > 22) { return (-22); } else { } spin_lock(& dev->buf_lock); if (dev->buf_use != 0) { spin_unlock(& dev->buf_lock); return (-16); } else { } atomic_inc(& dev->buf_alloc); spin_unlock(& dev->buf_lock); mutex_lock_nested(& dev->struct_mutex, 0U); entry = (struct drm_buf_entry *)(& dma->bufs) + (unsigned long )order; if (entry->buf_count != 0) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } if (count < 0 || count > 4096) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-22); } else { } tmp___10 = kzalloc((unsigned long )count * 88UL, 208U); entry->buflist = (struct drm_buf *)tmp___10; if ((unsigned long )entry->buflist == (unsigned long )((struct drm_buf *)0)) { mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } entry->buf_size = size; entry->page_order = page_order; offset = 0UL; goto ldv_39213; ldv_39212: buf = entry->buflist + (unsigned long )entry->buf_count; buf->idx = dma->buf_count + entry->buf_count; buf->total = alignment; buf->order = order; buf->used = 0; buf->offset = dma->byte_count + offset; buf->bus_address = agp_offset + offset; buf->address = (void *)((agp_offset + offset) + (unsigned long )(dev->sg)->virtual); buf->next = (struct drm_buf *)0; buf->waiting = 0; buf->pending = 0; buf->file_priv = (struct drm_file *)0; buf->dev_priv_size = (dev->driver)->dev_priv_size; buf->dev_private = kzalloc((size_t )buf->dev_priv_size, 208U); if ((unsigned long )buf->dev_private == (unsigned long )((void *)0)) { entry->buf_count = count; drm_cleanup_buf_error(dev, entry); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } tmp___11 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___11 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "buffer %d @ %p\n", entry->buf_count, buf->address); } else { } offset = (unsigned long )alignment + offset; entry->buf_count = entry->buf_count + 1; byte_count = (int )((unsigned int )(4096UL << page_order) + (unsigned int )byte_count); ldv_39213: ; if (entry->buf_count < count) { goto ldv_39212; } else { } tmp___12 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___12 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "byte_count: %d\n", byte_count); } else { } tmp___13 = krealloc((void const *)dma->buflist, (unsigned long )(dma->buf_count + entry->buf_count) * 8UL, 208U); temp_buflist = (struct drm_buf **)tmp___13; if ((unsigned long )temp_buflist == (unsigned long )((struct drm_buf **)0)) { drm_cleanup_buf_error(dev, entry); mutex_unlock(& dev->struct_mutex); atomic_dec(& dev->buf_alloc); return (-12); } else { } dma->buflist = temp_buflist; i = 0; goto ldv_39216; ldv_39215: *(dma->buflist + (unsigned long )(dma->buf_count + i)) = entry->buflist + (unsigned long )i; i = i + 1; ldv_39216: ; if (entry->buf_count > i) { goto ldv_39215; } else { } dma->buf_count = dma->buf_count + entry->buf_count; dma->seg_count = dma->seg_count + entry->seg_count; dma->page_count = dma->page_count + (byte_count >> 12); dma->byte_count = dma->byte_count + (unsigned long )byte_count; tmp___14 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___14 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "dma->buf_count : %d\n", dma->buf_count); } else { } tmp___15 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___15 != 0L) { drm_ut_debug_printk("drm_legacy_addbufs_sg", "entry->buf_count : %d\n", entry->buf_count); } else { } mutex_unlock(& dev->struct_mutex); request->count = entry->buf_count; request->size = size; dma->flags = 2; atomic_dec(& dev->buf_alloc); return (0); } } int drm_legacy_addbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_buf_desc *request ; int ret ; int tmp ; int tmp___0 ; { request = (struct drm_buf_desc *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 32); if (tmp___0 == 0) { return (-22); } else { } if (((unsigned int )request->flags & 2U) != 0U) { ret = drm_legacy_addbufs_agp(dev, request); } else if (((unsigned int )request->flags & 4U) != 0U) { ret = drm_legacy_addbufs_sg(dev, request); } else if (((unsigned int )request->flags & 8U) != 0U) { ret = -22; } else { ret = drm_legacy_addbufs_pci(dev, request); } return (ret); } } int drm_legacy_infobufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_device_dma *dma ; struct drm_buf_info *request ; int i ; int count ; int tmp ; int tmp___0 ; int tmp___1 ; long tmp___2 ; struct drm_buf_desc *to ; struct drm_buf_entry *from ; unsigned long tmp___3 ; unsigned long tmp___4 ; unsigned long tmp___5 ; unsigned long tmp___6 ; long tmp___7 ; { dma = dev->dma; request = (struct drm_buf_info *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 32); if (tmp___0 == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } spin_lock(& dev->buf_lock); tmp___1 = atomic_read((atomic_t const *)(& dev->buf_alloc)); if (tmp___1 != 0) { spin_unlock(& dev->buf_lock); return (-16); } else { } dev->buf_use = dev->buf_use + 1; spin_unlock(& dev->buf_lock); i = 0; count = 0; goto ldv_39235; ldv_39234: ; if (dma->bufs[i].buf_count != 0) { count = count + 1; } else { } i = i + 1; ldv_39235: ; if (i <= 22) { goto ldv_39234; } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_legacy_infobufs", "count = %d\n", count); } else { } if (request->count >= count) { i = 0; count = 0; goto ldv_39241; ldv_39240: ; if (dma->bufs[i].buf_count != 0) { to = request->list + (unsigned long )count; from = (struct drm_buf_entry *)(& dma->bufs) + (unsigned long )i; tmp___3 = copy_to_user((void *)(& to->count), (void const *)(& from->buf_count), 4UL); if (tmp___3 != 0UL) { return (-14); } else { tmp___4 = copy_to_user((void *)(& to->size), (void const *)(& from->buf_size), 4UL); if (tmp___4 != 0UL) { return (-14); } else { tmp___5 = copy_to_user((void *)(& to->low_mark), (void const *)(& from->low_mark), 4UL); if (tmp___5 != 0UL) { return (-14); } else { tmp___6 = copy_to_user((void *)(& to->high_mark), (void const *)(& from->high_mark), 4UL); if (tmp___6 != 0UL) { return (-14); } else { } } } } tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_infobufs", "%d %d %d %d %d\n", i, dma->bufs[i].buf_count, dma->bufs[i].buf_size, dma->bufs[i].low_mark, dma->bufs[i].high_mark); } else { } count = count + 1; } else { } i = i + 1; ldv_39241: ; if (i <= 22) { goto ldv_39240; } else { } } else { } request->count = count; return (0); } } int drm_legacy_markbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_device_dma *dma ; struct drm_buf_desc *request ; int order ; struct drm_buf_entry *entry ; int tmp ; int tmp___0 ; long tmp___1 ; unsigned long tmp___2 ; { dma = dev->dma; request = (struct drm_buf_desc *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 32); if (tmp___0 == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_markbufs", "%d, %d, %d\n", request->size, request->low_mark, request->high_mark); } else { } tmp___2 = __roundup_pow_of_two((unsigned long )request->size); order = __ilog2_u64((u64 )tmp___2); if (order <= 4 || order > 22) { return (-22); } else { } entry = (struct drm_buf_entry *)(& dma->bufs) + (unsigned long )order; if (request->low_mark < 0 || request->low_mark > entry->buf_count) { return (-22); } else { } if (request->high_mark < 0 || request->high_mark > entry->buf_count) { return (-22); } else { } entry->low_mark = request->low_mark; entry->high_mark = request->high_mark; return (0); } } int drm_legacy_freebufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_device_dma *dma ; struct drm_buf_free *request ; int i ; int idx ; struct drm_buf *buf ; int tmp ; int tmp___0 ; long tmp___1 ; unsigned long tmp___2 ; struct task_struct *tmp___3 ; pid_t tmp___4 ; { dma = dev->dma; request = (struct drm_buf_free *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 32); if (tmp___0 == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_freebufs", "%d\n", request->count); } else { } i = 0; goto ldv_39265; ldv_39264: tmp___2 = copy_from_user((void *)(& idx), (void const *)request->list + (unsigned long )i, 4UL); if (tmp___2 != 0UL) { return (-14); } else { } if (idx < 0 || dma->buf_count <= idx) { drm_err("Index %d (of %d max)\n", idx, dma->buf_count + -1); return (-22); } else { } buf = *(dma->buflist + (unsigned long )idx); if ((unsigned long )buf->file_priv != (unsigned long )file_priv) { tmp___3 = get_current(); tmp___4 = task_pid_nr(tmp___3); drm_err("Process %d freeing buffer not owned\n", tmp___4); return (-22); } else { } drm_legacy_free_buffer(dev, buf); i = i + 1; ldv_39265: ; if (request->count > i) { goto ldv_39264; } else { } return (0); } } int drm_legacy_mapbufs(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_device_dma *dma ; int retcode ; int zero ; unsigned long virtual ; unsigned long address ; struct drm_buf_map *request ; int i ; int tmp ; int tmp___0 ; int tmp___1 ; struct drm_local_map *map ; unsigned long token ; int tmp___2 ; unsigned long tmp___3 ; unsigned long tmp___4 ; unsigned long tmp___5 ; unsigned long tmp___6 ; long tmp___7 ; { dma = dev->dma; retcode = 0; zero = 0; request = (struct drm_buf_map *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 32); if (tmp___0 == 0) { return (-22); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (-22); } else { } spin_lock(& dev->buf_lock); tmp___1 = atomic_read((atomic_t const *)(& dev->buf_alloc)); if (tmp___1 != 0) { spin_unlock(& dev->buf_lock); return (-16); } else { } dev->buf_use = dev->buf_use + 1; spin_unlock(& dev->buf_lock); if (request->count >= dma->buf_count) { if ((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0) && (int )dma->flags & 1) { goto _L; } else { tmp___2 = drm_core_check_feature(dev, 16); if (tmp___2 != 0 && ((unsigned int )dma->flags & 2U) != 0U) { _L: /* CIL Label */ map = dev->agp_buffer_map; token = (unsigned long )dev->agp_buffer_token; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { retcode = -22; goto done; } else { } virtual = vm_mmap(file_priv->filp, 0UL, map->size, 3UL, 1UL, token); } else { virtual = vm_mmap(file_priv->filp, 0UL, dma->byte_count, 3UL, 1UL, 0UL); } } if (virtual > 0xfffffffffffffc00UL) { retcode = (int )virtual; goto done; } else { } request->virtual = (void *)virtual; i = 0; goto ldv_39283; ldv_39282: tmp___3 = copy_to_user((void *)(& (request->list + (unsigned long )i)->idx), (void const *)(& (*(dma->buflist + (unsigned long )i))->idx), 4UL); if (tmp___3 != 0UL) { retcode = -14; goto done; } else { } tmp___4 = copy_to_user((void *)(& (request->list + (unsigned long )i)->total), (void const *)(& (*(dma->buflist + (unsigned long )i))->total), 4UL); if (tmp___4 != 0UL) { retcode = -14; goto done; } else { } tmp___5 = copy_to_user((void *)(& (request->list + (unsigned long )i)->used), (void const *)(& zero), 4UL); if (tmp___5 != 0UL) { retcode = -14; goto done; } else { } address = (*(dma->buflist + (unsigned long )i))->offset + virtual; tmp___6 = copy_to_user((void *)(& (request->list + (unsigned long )i)->address), (void const *)(& address), 8UL); if (tmp___6 != 0UL) { retcode = -14; goto done; } else { } i = i + 1; ldv_39283: ; if (dma->buf_count > i) { goto ldv_39282; } else { } } else { } done: request->count = dma->buf_count; tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_mapbufs", "%d buffers, retcode = %d\n", request->count, retcode); } else { } return (retcode); } } int drm_legacy_dma_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { int tmp ; int tmp___0 ; { tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } if ((unsigned long )(dev->driver)->dma_ioctl != (unsigned long )((int (*)(struct drm_device * , void * , struct drm_file * ))0)) { tmp___0 = (*((dev->driver)->dma_ioctl))(dev, data, file_priv); return (tmp___0); } else { return (-22); } } } struct drm_local_map *drm_legacy_getsarea(struct drm_device *dev ) { struct drm_map_list *entry ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)dev->maplist.next; entry = (struct drm_map_list *)__mptr; goto ldv_39300; ldv_39299: ; if (((unsigned long )entry->map != (unsigned long )((struct drm_local_map *)0) && (unsigned int )(entry->map)->type == 2U) && ((unsigned int )(entry->map)->flags & 32U) != 0U) { return (entry->map); } else { } __mptr___0 = (struct list_head const *)entry->head.next; entry = (struct drm_map_list *)__mptr___0; ldv_39300: ; if ((unsigned long )(& entry->head) != (unsigned long )(& dev->maplist)) { goto ldv_39299; } else { } return ((struct drm_local_map *)0); } } static char const __kstrtab_drm_legacy_getsarea[20U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'g', 'e', 't', 's', 'a', 'r', 'e', 'a', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_getsarea ; struct kernel_symbol const __ksymtab_drm_legacy_getsarea = {(unsigned long )(& drm_legacy_getsarea), (char const *)(& __kstrtab_drm_legacy_getsarea)}; bool ldv_queue_work_on_19(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_20(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_21(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_22(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_23(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static int constant_test_bit(long nr , unsigned long const volatile *addr ) { { return ((int )((unsigned long )*(addr + (unsigned long )(nr >> 6)) >> ((int )nr & 63)) & 1); } } extern int printk(char const * , ...) ; extern void warn_slowpath_null(char const * , int const ) ; __inline static void clflushopt(void volatile *__p ) { { __asm__ volatile ("661:\n\t.byte 0x3e; clflush %P0\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+23)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x66; clflush %P0\n6651:\n\t.popsection": "+m" (*((char volatile *)__p)): "i" (0)); return; } } extern struct cpuinfo_x86 boot_cpu_data ; extern int __preempt_count ; __inline static void __preempt_count_add(int val ) { int pao_ID__ ; { pao_ID__ = 0; switch (4UL) { case 1UL: ; if (pao_ID__ == 1) { __asm__ ("incb %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decb %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addb %1, %%gs:%0": "+m" (__preempt_count): "qi" (val)); } goto ldv_6059; case 2UL: ; if (pao_ID__ == 1) { __asm__ ("incw %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decw %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addw %1, %%gs:%0": "+m" (__preempt_count): "ri" (val)); } goto ldv_6059; case 4UL: ; if (pao_ID__ == 1) { __asm__ ("incl %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decl %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addl %1, %%gs:%0": "+m" (__preempt_count): "ri" (val)); } goto ldv_6059; case 8UL: ; if (pao_ID__ == 1) { __asm__ ("incq %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decq %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addq %1, %%gs:%0": "+m" (__preempt_count): "re" (val)); } goto ldv_6059; default: __bad_percpu_size(); } ldv_6059: ; return; } } __inline static void __preempt_count_sub(int val ) { int pao_ID__ ; { pao_ID__ = 0; switch (4UL) { case 1UL: ; if (pao_ID__ == 1) { __asm__ ("incb %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decb %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addb %1, %%gs:%0": "+m" (__preempt_count): "qi" (- val)); } goto ldv_6071; case 2UL: ; if (pao_ID__ == 1) { __asm__ ("incw %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decw %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addw %1, %%gs:%0": "+m" (__preempt_count): "ri" (- val)); } goto ldv_6071; case 4UL: ; if (pao_ID__ == 1) { __asm__ ("incl %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decl %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addl %1, %%gs:%0": "+m" (__preempt_count): "ri" (- val)); } goto ldv_6071; case 8UL: ; if (pao_ID__ == 1) { __asm__ ("incq %%gs:%0": "+m" (__preempt_count)); } else if (pao_ID__ == -1) { __asm__ ("decq %%gs:%0": "+m" (__preempt_count)); } else { __asm__ ("addq %1, %%gs:%0": "+m" (__preempt_count): "re" (- val)); } goto ldv_6071; default: __bad_percpu_size(); } ldv_6071: ; return; } } bool ldv_queue_work_on_33(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_35(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_34(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_37(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_36(struct workqueue_struct *ldv_func_arg1 ) ; extern int wbinvd_on_all_cpus(void) ; __inline static void *lowmem_page_address(struct page const *page ) { { return ((void *)((unsigned long )((unsigned long long )(((long )page + 24189255811072L) / 64L) << 12) + 0xffff880000000000UL)); } } __inline static struct page *sg_page(struct scatterlist *sg ) { long tmp ; long tmp___0 ; { tmp = ldv__builtin_expect(sg->sg_magic != 2271560481UL, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/linux/scatterlist.h"), "i" (123), "i" (12UL)); ldv_24359: ; goto ldv_24359; } else { } tmp___0 = ldv__builtin_expect((long )((int )sg->page_link) & 1L, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/linux/scatterlist.h"), "i" (124), "i" (12UL)); ldv_24360: ; goto ldv_24360; } else { } return ((struct page *)(sg->page_link & 0xfffffffffffffffcUL)); } } extern bool __sg_page_iter_next(struct sg_page_iter * ) ; extern void __sg_page_iter_start(struct sg_page_iter * , struct scatterlist * , unsigned int , unsigned long ) ; __inline static struct page *sg_page_iter_page(struct sg_page_iter *piter ) { struct page *tmp ; { tmp = sg_page(piter->sg); return ((struct page *)-24189255811072L + ((unsigned long )(((long )tmp + 24189255811072L) / 64L) + (unsigned long )piter->sg_pgoffset)); } } __inline static void pagefault_disabled_inc(void) { struct task_struct *tmp ; { tmp = get_current(); tmp->pagefault_disabled = tmp->pagefault_disabled + 1; return; } } __inline static void pagefault_disabled_dec(void) { struct task_struct *tmp ; int __ret_warn_on ; struct task_struct *tmp___0 ; long tmp___1 ; { tmp = get_current(); tmp->pagefault_disabled = tmp->pagefault_disabled - 1; tmp___0 = get_current(); __ret_warn_on = tmp___0->pagefault_disabled < 0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("include/linux/uaccess.h", 15); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } __inline static void pagefault_disable(void) { { pagefault_disabled_inc(); __asm__ volatile ("": : : "memory"); return; } } __inline static void pagefault_enable(void) { { __asm__ volatile ("": : : "memory"); pagefault_disabled_dec(); return; } } __inline static void *kmap_atomic(struct page *page ) { void *tmp ; { __preempt_count_add(1); __asm__ volatile ("": : : "memory"); pagefault_disable(); tmp = lowmem_page_address((struct page const *)page); return (tmp); } } __inline static void __kunmap_atomic(void *addr ) { { pagefault_enable(); __asm__ volatile ("": : : "memory"); __preempt_count_sub(1); return; } } void drm_clflush_pages(struct page **pages , unsigned long num_pages ) ; void drm_clflush_sg(struct sg_table *st ) ; void drm_clflush_virt_range(void *addr , unsigned long length ) ; static void drm_clflush_page(struct page *page ) { uint8_t *page_virtual ; unsigned int i ; int size ; long tmp ; void *tmp___0 ; { size = (int const )boot_cpu_data.x86_clflush_size; tmp = ldv__builtin_expect((unsigned long )page == (unsigned long )((struct page *)0), 0L); if (tmp != 0L) { return; } else { } tmp___0 = kmap_atomic(page); page_virtual = (uint8_t *)tmp___0; i = 0U; goto ldv_38717; ldv_38716: clflushopt((void volatile *)page_virtual + (unsigned long )i); i = i + (unsigned int )size; ldv_38717: ; if (i <= 4095U) { goto ldv_38716; } else { } __kunmap_atomic((void *)page_virtual); return; } } static void drm_cache_flush_clflush(struct page **pages , unsigned long num_pages ) { unsigned long i ; struct page **tmp ; { __asm__ volatile ("mfence": : : "memory"); i = 0UL; goto ldv_38725; ldv_38724: tmp = pages; pages = pages + 1; drm_clflush_page(*tmp); i = i + 1UL; ldv_38725: ; if (i < num_pages) { goto ldv_38724; } else { } __asm__ volatile ("mfence": : : "memory"); return; } } void drm_clflush_pages(struct page **pages , unsigned long num_pages ) { int tmp ; int tmp___0 ; { tmp = constant_test_bit(19L, (unsigned long const volatile *)(& boot_cpu_data.x86_capability)); if (tmp != 0) { drm_cache_flush_clflush(pages, num_pages); return; } else { } tmp___0 = wbinvd_on_all_cpus(); if (tmp___0 != 0) { printk("\vTimed out waiting for cache flush.\n"); } else { } return; } } static char const __kstrtab_drm_clflush_pages[18U] = { 'd', 'r', 'm', '_', 'c', 'l', 'f', 'l', 'u', 's', 'h', '_', 'p', 'a', 'g', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_clflush_pages ; struct kernel_symbol const __ksymtab_drm_clflush_pages = {(unsigned long )(& drm_clflush_pages), (char const *)(& __kstrtab_drm_clflush_pages)}; void drm_clflush_sg(struct sg_table *st ) { struct sg_page_iter sg_iter ; struct page *tmp ; bool tmp___0 ; int tmp___1 ; int tmp___2 ; { tmp___1 = constant_test_bit(19L, (unsigned long const volatile *)(& boot_cpu_data.x86_capability)); if (tmp___1 != 0) { __asm__ volatile ("mfence": : : "memory"); __sg_page_iter_start(& sg_iter, st->sgl, st->nents, 0UL); goto ldv_38744; ldv_38743: tmp = sg_page_iter_page(& sg_iter); drm_clflush_page(tmp); ldv_38744: tmp___0 = __sg_page_iter_next(& sg_iter); if ((int )tmp___0) { goto ldv_38743; } else { } __asm__ volatile ("mfence": : : "memory"); return; } else { } tmp___2 = wbinvd_on_all_cpus(); if (tmp___2 != 0) { printk("\vTimed out waiting for cache flush.\n"); } else { } return; } } static char const __kstrtab_drm_clflush_sg[15U] = { 'd', 'r', 'm', '_', 'c', 'l', 'f', 'l', 'u', 's', 'h', '_', 's', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_clflush_sg ; struct kernel_symbol const __ksymtab_drm_clflush_sg = {(unsigned long )(& drm_clflush_sg), (char const *)(& __kstrtab_drm_clflush_sg)}; void drm_clflush_virt_range(void *addr , unsigned long length ) { int size ; void *end ; int tmp ; int tmp___0 ; { tmp = constant_test_bit(19L, (unsigned long const volatile *)(& boot_cpu_data.x86_capability)); if (tmp != 0) { size = (int const )boot_cpu_data.x86_clflush_size; end = addr + length; addr = (void *)((unsigned long )(- size) & (unsigned long )addr); __asm__ volatile ("mfence": : : "memory"); goto ldv_38760; ldv_38759: clflushopt((void volatile *)addr); addr = addr + (unsigned long )size; ldv_38760: ; if ((unsigned long )addr < (unsigned long )end) { goto ldv_38759; } else { } __asm__ volatile ("mfence": : : "memory"); return; } else { } tmp___0 = wbinvd_on_all_cpus(); if (tmp___0 != 0) { printk("\vTimed out waiting for cache flush.\n"); } else { } return; } } static char const __kstrtab_drm_clflush_virt_range[23U] = { 'd', 'r', 'm', '_', 'c', 'l', 'f', 'l', 'u', 's', 'h', '_', 'v', 'i', 'r', 't', '_', 'r', 'a', 'n', 'g', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_clflush_virt_range ; struct kernel_symbol const __ksymtab_drm_clflush_virt_range = {(unsigned long )(& drm_clflush_virt_range), (char const *)(& __kstrtab_drm_clflush_virt_range)}; bool ldv_queue_work_on_33(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_34(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_35(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_36(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_37(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void clear_bit(long nr , unsigned long volatile *addr ) { { __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)); return; } } __inline static int test_and_set_bit(long nr , unsigned long volatile *addr ) { char c ; { __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; bts %2, %0; setc %1": "+m" (*addr), "=qm" (c): "Ir" (nr): "memory"); return ((int )((signed char )c) != 0); } } bool ldv_is_err(void const *ptr ) ; __inline static void INIT_LIST_HEAD(struct list_head *list ) { { list->next = list; list->prev = list; return; } } __inline static bool IS_ERR(void const *ptr ) ; bool ldv_queue_work_on_47(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_49(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_48(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_51(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_50(struct workqueue_struct *ldv_func_arg1 ) ; extern void idr_remove(struct idr * , int ) ; extern void idr_destroy(struct idr * ) ; extern void idr_init(struct idr * ) ; __inline static void *idr_find___0(struct idr *idr , int id ) { struct idr_layer *hint ; struct idr_layer *________p1 ; struct idr_layer *_________p1 ; union __anonunion___u_168___0 __u ; int tmp ; struct idr_layer *________p1___0 ; struct idr_layer *_________p1___0 ; union __anonunion___u_170___0 __u___0 ; int tmp___0 ; void *tmp___1 ; { __read_once_size((void const volatile *)(& idr->hint), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); hint = ________p1; if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) { __read_once_size((void const volatile *)(& hint->ary) + ((unsigned long )id & 255UL), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___0 = debug_lockdep_rcu_enabled(); return ((void *)________p1___0); } else { } tmp___1 = idr_find_slowpath(idr, id); return (tmp___1); } } int drm_legacy_ctxbitmap_init(struct drm_device *dev ) ; void drm_legacy_ctxbitmap_cleanup(struct drm_device *dev ) ; void drm_legacy_ctxbitmap_free(struct drm_device *dev , int ctx_handle ) ; void drm_legacy_ctxbitmap_flush(struct drm_device *dev , struct drm_file *file ) ; int drm_legacy_resctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_addctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_getctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_switchctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_newctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_rmctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_setsareactx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_getsareactx(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; void drm_legacy_ctxbitmap_free(struct drm_device *dev , int ctx_handle ) { { mutex_lock_nested(& dev->struct_mutex, 0U); idr_remove(& dev->ctx_idr, ctx_handle); mutex_unlock(& dev->struct_mutex); return; } } static int drm_legacy_ctxbitmap_next(struct drm_device *dev ) { int ret ; { mutex_lock_nested(& dev->struct_mutex, 0U); ret = idr_alloc(& dev->ctx_idr, (void *)0, 1, 0, 208U); mutex_unlock(& dev->struct_mutex); return (ret); } } int drm_legacy_ctxbitmap_init(struct drm_device *dev ) { { idr_init(& dev->ctx_idr); return (0); } } void drm_legacy_ctxbitmap_cleanup(struct drm_device *dev ) { { mutex_lock_nested(& dev->struct_mutex, 0U); idr_destroy(& dev->ctx_idr); mutex_unlock(& dev->struct_mutex); return; } } void drm_legacy_ctxbitmap_flush(struct drm_device *dev , struct drm_file *file ) { struct drm_ctx_list *pos ; struct drm_ctx_list *tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { mutex_lock_nested(& dev->ctxlist_mutex, 0U); __mptr = (struct list_head const *)dev->ctxlist.next; pos = (struct drm_ctx_list *)__mptr; __mptr___0 = (struct list_head const *)pos->head.next; tmp = (struct drm_ctx_list *)__mptr___0; goto ldv_38977; ldv_38976: ; if ((unsigned long )pos->tag == (unsigned long )file && pos->handle != 0U) { if ((unsigned long )(dev->driver)->context_dtor != (unsigned long )((int (*)(struct drm_device * , int ))0)) { (*((dev->driver)->context_dtor))(dev, (int )pos->handle); } else { } drm_legacy_ctxbitmap_free(dev, (int )pos->handle); list_del(& pos->head); kfree((void const *)pos); } else { } pos = tmp; __mptr___1 = (struct list_head const *)tmp->head.next; tmp = (struct drm_ctx_list *)__mptr___1; ldv_38977: ; if ((unsigned long )(& pos->head) != (unsigned long )(& dev->ctxlist)) { goto ldv_38976; } else { } mutex_unlock(& dev->ctxlist_mutex); return; } } int drm_legacy_getsareactx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx_priv_map *request ; struct drm_local_map *map ; struct drm_map_list *_entry ; void *tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { request = (struct drm_ctx_priv_map *)data; mutex_lock_nested(& dev->struct_mutex, 0U); tmp = idr_find___0(& dev->ctx_idr, (int )request->ctx_id); map = (struct drm_local_map *)tmp; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { mutex_unlock(& dev->struct_mutex); return (-22); } else { } request->handle = (void *)0; __mptr = (struct list_head const *)dev->maplist.next; _entry = (struct drm_map_list *)__mptr; goto ldv_38993; ldv_38992: ; if ((unsigned long )_entry->map == (unsigned long )map) { request->handle = (void *)_entry->user_token; goto ldv_38991; } else { } __mptr___0 = (struct list_head const *)_entry->head.next; _entry = (struct drm_map_list *)__mptr___0; ldv_38993: ; if ((unsigned long )(& _entry->head) != (unsigned long )(& dev->maplist)) { goto ldv_38992; } else { } ldv_38991: mutex_unlock(& dev->struct_mutex); if ((unsigned long )request->handle == (unsigned long )((void *)0)) { return (-22); } else { } return (0); } } int drm_legacy_setsareactx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx_priv_map *request ; struct drm_local_map *map ; struct drm_map_list *r_list ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; void *tmp ; bool tmp___0 ; { request = (struct drm_ctx_priv_map *)data; map = (struct drm_local_map *)0; r_list = (struct drm_map_list *)0; mutex_lock_nested(& dev->struct_mutex, 0U); __mptr = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr; goto ldv_39008; ldv_39007: ; if ((unsigned long )r_list->map != (unsigned long )((struct drm_local_map *)0) && r_list->user_token == (unsigned long long )request->handle) { goto found; } else { } __mptr___0 = (struct list_head const *)r_list->head.next; r_list = (struct drm_map_list *)__mptr___0; ldv_39008: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39007; } else { } bad: mutex_unlock(& dev->struct_mutex); return (-22); found: map = r_list->map; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { goto bad; } else { } tmp = idr_replace(& dev->ctx_idr, (void *)map, (int )request->ctx_id); tmp___0 = IS_ERR((void const *)tmp); if ((int )tmp___0) { goto bad; } else { } mutex_unlock(& dev->struct_mutex); return (0); } } static int drm_context_switch(struct drm_device *dev , int old , int new ) { int tmp ; long tmp___0 ; { tmp = test_and_set_bit(0L, (unsigned long volatile *)(& dev->context_flag)); if (tmp != 0) { drm_err("Reentering -- FIXME\n"); return (-16); } else { } tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_context_switch", "Context switch from %d to %d\n", old, new); } else { } if (dev->last_context == new) { clear_bit(0L, (unsigned long volatile *)(& dev->context_flag)); return (0); } else { } return (0); } } static int drm_context_switch_complete(struct drm_device *dev , struct drm_file *file_priv , int new ) { { dev->last_context = new; if ((int )((file_priv->master)->lock.hw_lock)->lock >= 0) { drm_err("Lock isn\'t held after context switch\n"); } else { } clear_bit(0L, (unsigned long volatile *)(& dev->context_flag)); return (0); } } int drm_legacy_resctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx_res *res ; struct drm_ctx ctx ; int i ; unsigned long tmp ; { res = (struct drm_ctx_res *)data; if (res->count > 0) { memset((void *)(& ctx), 0, 8UL); i = 0; goto ldv_39031; ldv_39030: ctx.handle = (drm_context_t )i; tmp = copy_to_user((void *)res->contexts + (unsigned long )i, (void const *)(& ctx), 8UL); if (tmp != 0UL) { return (-14); } else { } i = i + 1; ldv_39031: ; if (i <= 0) { goto ldv_39030; } else { } } else { } res->count = 1; return (0); } } int drm_legacy_addctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx_list *ctx_entry ; struct drm_ctx *ctx ; int tmp ; int tmp___0 ; long tmp___1 ; long tmp___2 ; void *tmp___3 ; long tmp___4 ; { ctx = (struct drm_ctx *)data; tmp = drm_legacy_ctxbitmap_next(dev); ctx->handle = (drm_context_t )tmp; if (ctx->handle == 0U) { tmp___0 = drm_legacy_ctxbitmap_next(dev); ctx->handle = (drm_context_t )tmp___0; } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_addctx", "%d\n", ctx->handle); } else { } if (ctx->handle == 4294967295U) { tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_legacy_addctx", "Not enough free contexts.\n"); } else { } return (-12); } else { } tmp___3 = kmalloc(32UL, 208U); ctx_entry = (struct drm_ctx_list *)tmp___3; if ((unsigned long )ctx_entry == (unsigned long )((struct drm_ctx_list *)0)) { tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_legacy_addctx", "out of memory\n"); } else { } return (-12); } else { } INIT_LIST_HEAD(& ctx_entry->head); ctx_entry->handle = ctx->handle; ctx_entry->tag = file_priv; mutex_lock_nested(& dev->ctxlist_mutex, 0U); list_add(& ctx_entry->head, & dev->ctxlist); mutex_unlock(& dev->ctxlist_mutex); return (0); } } int drm_legacy_getctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx *ctx ; { ctx = (struct drm_ctx *)data; ctx->flags = 0; return (0); } } int drm_legacy_switchctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx *ctx ; long tmp ; int tmp___0 ; { ctx = (struct drm_ctx *)data; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_legacy_switchctx", "%d\n", ctx->handle); } else { } tmp___0 = drm_context_switch(dev, dev->last_context, (int )ctx->handle); return (tmp___0); } } int drm_legacy_newctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx *ctx ; long tmp ; { ctx = (struct drm_ctx *)data; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_legacy_newctx", "%d\n", ctx->handle); } else { } drm_context_switch_complete(dev, file_priv, (int )ctx->handle); return (0); } } int drm_legacy_rmctx(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_ctx *ctx ; long tmp ; struct drm_ctx_list *pos ; struct drm_ctx_list *n ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; int tmp___0 ; { ctx = (struct drm_ctx *)data; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_legacy_rmctx", "%d\n", ctx->handle); } else { } if (ctx->handle != 0U) { if ((unsigned long )(dev->driver)->context_dtor != (unsigned long )((int (*)(struct drm_device * , int ))0)) { (*((dev->driver)->context_dtor))(dev, (int )ctx->handle); } else { } drm_legacy_ctxbitmap_free(dev, (int )ctx->handle); } else { } mutex_lock_nested(& dev->ctxlist_mutex, 0U); tmp___0 = list_empty((struct list_head const *)(& dev->ctxlist)); if (tmp___0 == 0) { __mptr = (struct list_head const *)dev->ctxlist.next; pos = (struct drm_ctx_list *)__mptr; __mptr___0 = (struct list_head const *)pos->head.next; n = (struct drm_ctx_list *)__mptr___0; goto ldv_39077; ldv_39076: ; if (pos->handle == ctx->handle) { list_del(& pos->head); kfree((void const *)pos); } else { } pos = n; __mptr___1 = (struct list_head const *)n->head.next; n = (struct drm_ctx_list *)__mptr___1; ldv_39077: ; if ((unsigned long )(& pos->head) != (unsigned long )(& dev->ctxlist)) { goto ldv_39076; } else { } } else { } mutex_unlock(& dev->ctxlist_mutex); return (0); } } __inline static bool IS_ERR(void const *ptr ) { bool tmp ; { tmp = ldv_is_err(ptr); return (tmp); } } bool ldv_queue_work_on_47(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_48(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_49(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_50(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_51(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void atomic_set(atomic_t *v , int i ) { { v->counter = i; return; } } bool ldv_queue_work_on_61(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_63(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_62(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_65(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_64(struct workqueue_struct *ldv_func_arg1 ) ; int drm_legacy_dma_setup(struct drm_device *dev ) ; void drm_legacy_dma_takedown(struct drm_device *dev ) ; void drm_legacy_reclaim_buffers(struct drm_device *dev , struct drm_file *file_priv ) ; int drm_legacy_dma_setup(struct drm_device *dev ) { int i ; int tmp ; int tmp___0 ; void *tmp___1 ; { tmp = drm_core_check_feature(dev, 32); if (tmp == 0) { return (0); } else { tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 != 0) { return (0); } else { } } dev->buf_use = 0; atomic_set(& dev->buf_alloc, 0); tmp___1 = kzalloc(968UL, 208U); dev->dma = (struct drm_device_dma *)tmp___1; if ((unsigned long )dev->dma == (unsigned long )((struct drm_device_dma *)0)) { return (-12); } else { } i = 0; goto ldv_38951; ldv_38950: memset((void *)(& (dev->dma)->bufs) + (unsigned long )i, 0, 40UL); i = i + 1; ldv_38951: ; if (i <= 22) { goto ldv_38950; } else { } return (0); } } void drm_legacy_dma_takedown(struct drm_device *dev ) { struct drm_device_dma *dma ; int i ; int j ; int tmp ; int tmp___0 ; long tmp___1 ; { dma = dev->dma; tmp = drm_core_check_feature(dev, 32); if (tmp == 0) { return; } else { tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 != 0) { return; } else { } } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return; } else { } i = 0; goto ldv_38967; ldv_38966: ; if (dma->bufs[i].seg_count != 0) { tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_dma_takedown", "order %d: buf_count = %d, seg_count = %d\n", i, dma->bufs[i].buf_count, dma->bufs[i].seg_count); } else { } j = 0; goto ldv_38961; ldv_38960: ; if ((unsigned long )*(dma->bufs[i].seglist + (unsigned long )j) != (unsigned long )((struct drm_dma_handle *)0)) { drm_pci_free(dev, *(dma->bufs[i].seglist + (unsigned long )j)); } else { } j = j + 1; ldv_38961: ; if (dma->bufs[i].seg_count > j) { goto ldv_38960; } else { } kfree((void const *)dma->bufs[i].seglist); } else { } if (dma->bufs[i].buf_count != 0) { j = 0; goto ldv_38964; ldv_38963: kfree((void const *)(dma->bufs[i].buflist + (unsigned long )j)->dev_private); j = j + 1; ldv_38964: ; if (dma->bufs[i].buf_count > j) { goto ldv_38963; } else { } kfree((void const *)dma->bufs[i].buflist); } else { } i = i + 1; ldv_38967: ; if (i <= 22) { goto ldv_38966; } else { } kfree((void const *)dma->buflist); kfree((void const *)dma->pagelist); kfree((void const *)dev->dma); dev->dma = (struct drm_device_dma *)0; return; } } void drm_legacy_free_buffer(struct drm_device *dev , struct drm_buf *buf ) { { if ((unsigned long )buf == (unsigned long )((struct drm_buf *)0)) { return; } else { } buf->waiting = 0; buf->pending = 0; buf->file_priv = (struct drm_file *)0; buf->used = 0; return; } } void drm_legacy_reclaim_buffers(struct drm_device *dev , struct drm_file *file_priv ) { struct drm_device_dma *dma ; int i ; { dma = dev->dma; if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return; } else { } i = 0; goto ldv_38984; ldv_38983: ; if ((unsigned long )(*(dma->buflist + (unsigned long )i))->file_priv == (unsigned long )file_priv) { switch ((unsigned int )(*(dma->buflist + (unsigned long )i))->list) { case 0U: drm_legacy_free_buffer(dev, *(dma->buflist + (unsigned long )i)); goto ldv_38980; case 2U: (*(dma->buflist + (unsigned long )i))->list = 5; goto ldv_38980; default: ; goto ldv_38980; } ldv_38980: ; } else { } i = i + 1; ldv_38984: ; if (dma->buf_count > i) { goto ldv_38983; } else { } return; } } bool ldv_queue_work_on_61(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_62(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_63(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_64(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_65(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void __might_sleep(char const * , int , int ) ; long ldv_ptr_err(void const *ptr ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; extern struct tss_struct cpu_tss ; __inline static unsigned long current_top_of_stack(void) { u64 pfo_ret__ ; { switch (8UL) { case 1UL: __asm__ ("movb %%gs:%P1,%0": "=q" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0)); goto ldv_5437; case 2UL: __asm__ ("movw %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0)); goto ldv_5437; case 4UL: __asm__ ("movl %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0)); goto ldv_5437; case 8UL: __asm__ ("movq %%gs:%P1,%0": "=r" (pfo_ret__): "p" (& cpu_tss.x86_tss.sp0)); goto ldv_5437; default: __bad_percpu_size(); } ldv_5437: ; return ((unsigned long )pfo_ret__); } } __inline static struct thread_info *current_thread_info(void) { unsigned long tmp ; { tmp = current_top_of_stack(); return ((struct thread_info *)(tmp - 32768UL)); } } extern void _raw_spin_lock_irq(raw_spinlock_t * ) ; extern unsigned long _raw_spin_lock_irqsave(raw_spinlock_t * ) ; extern void _raw_spin_unlock_irq(raw_spinlock_t * ) ; extern void _raw_spin_unlock_irqrestore(raw_spinlock_t * , unsigned long ) ; __inline static raw_spinlock_t *spinlock_check(spinlock_t *lock ) { { return (& lock->__annonCompField18.rlock); } } __inline static void spin_lock_irq(spinlock_t *lock ) { { _raw_spin_lock_irq(& lock->__annonCompField18.rlock); return; } } __inline static void spin_unlock_irq(spinlock_t *lock ) { { _raw_spin_unlock_irq(& lock->__annonCompField18.rlock); return; } } __inline static void spin_unlock_irqrestore(spinlock_t *lock , unsigned long flags ) { { _raw_spin_unlock_irqrestore(& lock->__annonCompField18.rlock, flags); return; } } extern void __init_waitqueue_head(wait_queue_head_t * , char const * , struct lock_class_key * ) ; extern long prepare_to_wait_event(wait_queue_head_t * , wait_queue_t * , int ) ; extern void finish_wait(wait_queue_head_t * , wait_queue_t * ) ; extern void __mutex_init(struct mutex * , char const * , struct lock_class_key * ) ; bool ldv_queue_work_on_75(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_77(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_76(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_79(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_78(struct workqueue_struct *ldv_func_arg1 ) ; __inline static struct pid *get_pid(struct pid *pid ) { { if ((unsigned long )pid != (unsigned long )((struct pid *)0)) { atomic_inc(& pid->count); } else { } return (pid); } } extern void put_pid(struct pid * ) ; extern void schedule(void) ; __inline static struct pid *task_pid(struct task_struct *task ) { { return (task->pids[0].pid); } } __inline static u16 old_encode_dev(dev_t dev ) { { return (((int )((u16 )(dev >> 20)) << 8U) | (int )((u16 )dev)); } } __inline static unsigned int iminor(struct inode const *inode ) { { return ((unsigned int )inode->i_rdev & 1048575U); } } __inline static bool __chk_range_not_ok(unsigned long addr , unsigned long size , unsigned long limit ) { { addr = addr + size; if (addr < size) { return (1); } else { } return (addr > limit); } } extern unsigned long copy_user_enhanced_fast_string(void * , void const * , unsigned int ) ; extern unsigned long copy_user_generic_string(void * , void const * , unsigned int ) ; extern unsigned long copy_user_generic_unrolled(void * , void const * , unsigned int ) ; __inline static unsigned long copy_user_generic(void *to , void const *from , unsigned int len ) { unsigned int ret ; { __asm__ volatile ("661:\n\tcall %P4\n662:\n.skip -((((6651f-6641f) ^ (((6651f-6641f) ^ (6652f-6642f)) & -(-((6651f-6641f) - (6652f-6642f))))) - (662b-661b)) > 0) * (((6651f-6641f) ^ (((6651f-6641f) ^ (6652f-6642f)) & -(-((6651f-6641f) - (6652f-6642f))))) - (662b-661b)), 0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 3*32+16)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n .long 661b - .\n .long 6642f - .\n .word ( 9*32+ 9)\n .byte 663b-661b\n .byte 6652f-6642f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\tcall %P5\n6651:\n\t6642:\n\tcall %P6\n6652:\n\t.popsection": "=a" (ret), "=D" (to), "=S" (from), "=d" (len): [old] "i" (& copy_user_generic_unrolled), [new1] "i" (& copy_user_generic_string), [new2] "i" (& copy_user_enhanced_fast_string), "1" (to), "2" (from), "3" (len): "memory", "rcx", "r8", "r9", "r10", "r11"); return ((unsigned long )ret); } } __inline static int __copy_to_user_nocheck(void *dst , void const *src , unsigned int size ) { int ret ; unsigned long tmp ; long tmp___0 ; long tmp___1 ; unsigned long tmp___2 ; { ret = 0; tmp = copy_user_generic(dst, src, size); return ((int )tmp); switch (size) { case 1U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "iq" (*((u8 *)src)), "m" (*((struct __large_struct *)dst)), "i" (1), "0" (ret)); return (ret); case 2U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "ir" (*((u16 *)src)), "m" (*((struct __large_struct *)dst)), "i" (2), "0" (ret)); return (ret); case 4U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "ir" (*((u32 *)src)), "m" (*((struct __large_struct *)dst)), "i" (4), "0" (ret)); return (ret); case 8U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "er" (*((u64 *)src)), "m" (*((struct __large_struct *)dst)), "i" (8), "0" (ret)); return (ret); case 10U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "er" (*((u64 *)src)), "m" (*((struct __large_struct *)dst)), "i" (10), "0" (ret)); tmp___0 = ldv__builtin_expect(ret != 0, 0L); if (tmp___0 != 0L) { return (ret); } else { } __asm__ volatile ("": : : "memory"); __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "ir" (*((u16 *)src + 4UL)), "m" (*((struct __large_struct *)dst + 4U)), "i" (2), "0" (ret)); return (ret); case 16U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "er" (*((u64 *)src)), "m" (*((struct __large_struct *)dst)), "i" (16), "0" (ret)); tmp___1 = ldv__builtin_expect(ret != 0, 0L); if (tmp___1 != 0L) { return (ret); } else { } __asm__ volatile ("": : : "memory"); __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "er" (*((u64 *)src + 1UL)), "m" (*((struct __large_struct *)dst + 1U)), "i" (8), "0" (ret)); return (ret); default: tmp___2 = copy_user_generic(dst, src, size); return ((int )tmp___2); } } } __inline static int __copy_to_user_inatomic(void *dst , void const *src , unsigned int size ) { int tmp ; { tmp = __copy_to_user_nocheck(dst, src, size); return (tmp); } } __inline static void poll_wait(struct file *filp , wait_queue_head_t *wait_address , poll_table *p ) { { 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)) { (*(p->_qproc))(filp, wait_address, p); } else { } return; } } void drm_agp_clear(struct drm_device *dev ) ; void drm_fb_release(struct drm_file *priv ) ; void drm_property_destroy_user_blobs(struct drm_device *dev , struct drm_file *file_priv ) ; __inline static int drm_device_is_unplugged(struct drm_device *dev ) { int ret ; int tmp ; { tmp = atomic_read((atomic_t const *)(& dev->unplugged)); ret = tmp; __asm__ volatile ("": : : "memory"); return (ret); } } __inline static bool drm_is_primary_client(struct drm_file const *file_priv ) { { return ((file_priv->minor)->type == 0); } } int drm_open(struct inode *inode , struct file *filp ) ; ssize_t drm_read(struct file *filp , char *buffer , size_t count , loff_t *offset ) ; int drm_release(struct inode *inode , struct file *filp ) ; unsigned int drm_poll(struct file *filp , struct poll_table_struct *wait ) ; int drm_irq_uninstall(struct drm_device *dev ) ; void drm_vblank_put(struct drm_device *dev , int crtc ) ; struct drm_master *drm_master_get(struct drm_master *master ) ; void drm_master_put(struct drm_master **master ) ; void drm_put_dev(struct drm_device *dev ) ; struct drm_minor *drm_minor_acquire(unsigned int minor_id ) ; void drm_minor_release(struct drm_minor *minor ) ; void drm_legacy_vma_flush(struct drm_device *dev ) ; int drm_legacy_i_have_hw_lock(struct drm_device *dev , struct drm_file *file_priv ) ; int drm_legacy_lock_free(struct drm_lock_data *lock_data , unsigned int context ) ; void drm_legacy_sg_cleanup(struct drm_device *dev ) ; struct mutex drm_global_mutex ; int drm_lastclose(struct drm_device *dev ) ; void drm_prime_init_file_private(struct drm_prime_file_private *prime_fpriv ) ; void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv ) ; void drm_gem_open(struct drm_device *dev , struct drm_file *file_private ) ; void drm_gem_release(struct drm_device *dev , struct drm_file *file_private ) ; struct drm_master *drm_master_create(struct drm_minor *minor ) ; struct mutex drm_global_mutex = {{1}, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "drm_global_mutex.wait_lock", 0, 0UL}}}}, {& drm_global_mutex.wait_list, & drm_global_mutex.wait_list}, 0, (void *)(& drm_global_mutex), {0, {0, 0}, "drm_global_mutex", 0, 0UL}}; static int drm_open_helper(struct file *filp , struct drm_minor *minor ) ; static int drm_setup(struct drm_device *dev ) { int ret ; int tmp ; long tmp___0 ; { if ((unsigned long )(dev->driver)->firstopen != (unsigned long )((int (*)(struct drm_device * ))0)) { tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { ret = (*((dev->driver)->firstopen))(dev); if (ret != 0) { return (ret); } else { } } else { } } else { } ret = drm_legacy_dma_setup(dev); if (ret < 0) { return (ret); } else { } tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_setup", "\n"); } else { } return (0); } } int drm_open(struct inode *inode , struct file *filp ) { struct drm_device *dev ; struct drm_minor *minor ; int retcode ; int need_setup ; unsigned int tmp ; long tmp___0 ; bool tmp___1 ; int tmp___2 ; { need_setup = 0; tmp = iminor((struct inode const *)inode); minor = drm_minor_acquire(tmp); tmp___1 = IS_ERR((void const *)minor); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)minor); return ((int )tmp___0); } else { } dev = minor->dev; tmp___2 = dev->open_count; dev->open_count = dev->open_count + 1; if (tmp___2 == 0) { need_setup = 1; } else { } filp->f_mapping = (dev->anon_inode)->i_mapping; retcode = drm_open_helper(filp, minor); if (retcode != 0) { goto err_undo; } else { } if (need_setup != 0) { retcode = drm_setup(dev); if (retcode != 0) { goto err_undo; } else { } } else { } return (0); err_undo: dev->open_count = dev->open_count - 1; drm_minor_release(minor); return (retcode); } } static char const __kstrtab_drm_open[9U] = { 'd', 'r', 'm', '_', 'o', 'p', 'e', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_open ; struct kernel_symbol const __ksymtab_drm_open = {(unsigned long )(& drm_open), (char const *)(& __kstrtab_drm_open)}; static int drm_cpu_valid(void) { { return (1); } } static int drm_open_helper(struct file *filp , struct drm_minor *minor ) { struct drm_device *dev ; struct drm_file *priv ; int ret ; int tmp ; struct task_struct *tmp___0 ; pid_t tmp___1 ; long tmp___2 ; void *tmp___3 ; int tmp___4 ; struct task_struct *tmp___5 ; struct task_struct *tmp___6 ; struct pid *tmp___7 ; bool tmp___8 ; struct lock_class_key __key ; struct lock_class_key __key___0 ; int tmp___9 ; int tmp___10 ; bool tmp___11 ; bool tmp___12 ; int tmp___13 ; int tmp___14 ; { dev = minor->dev; if ((filp->f_flags & 128U) != 0U) { return (-16); } else { } tmp = drm_cpu_valid(); if (tmp == 0) { return (-22); } else { } if (dev->switch_power_state != 0 && dev->switch_power_state != 3) { return (-22); } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { tmp___0 = get_current(); tmp___1 = task_pid_nr(tmp___0); drm_ut_debug_printk("drm_open_helper", "pid = %d, minor = %d\n", tmp___1, minor->index); } else { } tmp___3 = kzalloc(744UL, 208U); priv = (struct drm_file *)tmp___3; if ((unsigned long )priv == (unsigned long )((struct drm_file *)0)) { return (-12); } else { } filp->private_data = (void *)priv; priv->filp = filp; tmp___4 = debug_lockdep_rcu_enabled(); tmp___5 = get_current(); priv->uid = (tmp___5->cred)->euid; tmp___6 = get_current(); tmp___7 = task_pid(tmp___6); priv->pid = get_pid(tmp___7); priv->minor = minor; tmp___8 = capable(21); priv->authenticated = (unsigned char )tmp___8; priv->lock_count = 0UL; INIT_LIST_HEAD(& priv->lhead); INIT_LIST_HEAD(& priv->fbs); __mutex_init(& priv->fbs_lock, "&priv->fbs_lock", & __key); INIT_LIST_HEAD(& priv->blobs); INIT_LIST_HEAD(& priv->event_list); __init_waitqueue_head(& priv->event_wait, "&priv->event_wait", & __key___0); priv->event_space = 4096; tmp___9 = drm_core_check_feature(dev, 4096); if (tmp___9 != 0) { drm_gem_open(dev, priv); } else { } tmp___10 = drm_core_check_feature(dev, 16384); if (tmp___10 != 0) { drm_prime_init_file_private(& priv->prime); } else { } if ((unsigned long )(dev->driver)->open != (unsigned long )((int (*)(struct drm_device * , struct drm_file * ))0)) { ret = (*((dev->driver)->open))(dev, priv); if (ret < 0) { goto out_prime_destroy; } else { } } else { } mutex_lock_nested(& dev->master_mutex, 0U); tmp___12 = drm_is_primary_client((struct drm_file const *)priv); if ((int )tmp___12 && (unsigned long )(priv->minor)->master == (unsigned long )((struct drm_master *)0)) { (priv->minor)->master = drm_master_create(priv->minor); if ((unsigned long )(priv->minor)->master == (unsigned long )((struct drm_master *)0)) { ret = -12; goto out_close; } else { } priv->is_master = 1U; priv->master = drm_master_get((priv->minor)->master); priv->authenticated = 1U; if ((unsigned long )(dev->driver)->master_create != (unsigned long )((int (*)(struct drm_device * , struct drm_master * ))0)) { ret = (*((dev->driver)->master_create))(dev, priv->master); if (ret != 0) { drm_master_put(& (priv->minor)->master); drm_master_put(& priv->master); goto out_close; } else { } } else { } if ((unsigned long )(dev->driver)->master_set != (unsigned long )((int (*)(struct drm_device * , struct drm_file * , bool ))0)) { ret = (*((dev->driver)->master_set))(dev, priv, 1); if (ret != 0) { drm_master_put(& (priv->minor)->master); drm_master_put(& priv->master); goto out_close; } else { } } else { } } else { tmp___11 = drm_is_primary_client((struct drm_file const *)priv); if ((int )tmp___11) { priv->master = drm_master_get((priv->minor)->master); } else { } } mutex_unlock(& dev->master_mutex); mutex_lock_nested(& dev->struct_mutex, 0U); list_add(& priv->lhead, & dev->filelist); mutex_unlock(& dev->struct_mutex); return (0); out_close: mutex_unlock(& dev->master_mutex); if ((unsigned long )(dev->driver)->postclose != (unsigned long )((void (*)(struct drm_device * , struct drm_file * ))0)) { (*((dev->driver)->postclose))(dev, priv); } else { } out_prime_destroy: tmp___13 = drm_core_check_feature(dev, 16384); if (tmp___13 != 0) { drm_prime_destroy_file_private(& priv->prime); } else { } tmp___14 = drm_core_check_feature(dev, 4096); if (tmp___14 != 0) { drm_gem_release(dev, priv); } else { } put_pid(priv->pid); kfree((void const *)priv); filp->private_data = (void *)0; return (ret); } } static void drm_master_release(struct drm_device *dev , struct file *filp ) { struct drm_file *file_priv ; long tmp ; int tmp___0 ; { file_priv = (struct drm_file *)filp->private_data; tmp___0 = drm_legacy_i_have_hw_lock(dev, file_priv); if (tmp___0 != 0) { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_master_release", "File %p released, freeing lock for context %d\n", filp, (unsigned int )((file_priv->master)->lock.hw_lock)->lock & 1073741823U); } else { } drm_legacy_lock_free(& (file_priv->master)->lock, (unsigned int )((file_priv->master)->lock.hw_lock)->lock & 1073741823U); } else { } return; } } static void drm_events_release(struct drm_file *file_priv ) { struct drm_device *dev ; struct drm_pending_event *e ; struct drm_pending_event *et ; struct drm_pending_vblank_event *v ; struct drm_pending_vblank_event *vt ; unsigned long flags ; raw_spinlock_t *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 ; { dev = (file_priv->minor)->dev; tmp = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp); __mptr = (struct list_head const *)dev->vblank_event_list.next; v = (struct drm_pending_vblank_event *)__mptr + 0xfffffffffffffff8UL; __mptr___0 = (struct list_head const *)v->base.link.next; vt = (struct drm_pending_vblank_event *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_39140; ldv_39139: ; if ((unsigned long )v->base.file_priv == (unsigned long )file_priv) { list_del(& v->base.link); drm_vblank_put(dev, v->pipe); (*(v->base.destroy))(& v->base); } else { } v = vt; __mptr___1 = (struct list_head const *)vt->base.link.next; vt = (struct drm_pending_vblank_event *)__mptr___1 + 0xfffffffffffffff8UL; ldv_39140: ; if ((unsigned long )(& v->base.link) != (unsigned long )(& dev->vblank_event_list)) { goto ldv_39139; } else { } __mptr___2 = (struct list_head const *)file_priv->event_list.next; e = (struct drm_pending_event *)__mptr___2 + 0xfffffffffffffff8UL; __mptr___3 = (struct list_head const *)e->link.next; et = (struct drm_pending_event *)__mptr___3 + 0xfffffffffffffff8UL; goto ldv_39149; ldv_39148: list_del(& e->link); (*(e->destroy))(e); e = et; __mptr___4 = (struct list_head const *)et->link.next; et = (struct drm_pending_event *)__mptr___4 + 0xfffffffffffffff8UL; ldv_39149: ; if ((unsigned long )(& e->link) != (unsigned long )(& file_priv->event_list)) { goto ldv_39148; } else { } spin_unlock_irqrestore(& dev->event_lock, flags); return; } } static void drm_legacy_dev_reinit(struct drm_device *dev ) { int tmp ; { tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return; } else { } dev->sigdata.lock = (struct drm_hw_lock *)0; dev->context_flag = 0L; dev->last_context = 0; dev->if_version = 0; return; } } int drm_lastclose(struct drm_device *dev ) { long tmp ; long tmp___0 ; int tmp___1 ; long tmp___2 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_lastclose", "\n"); } else { } if ((unsigned long )(dev->driver)->lastclose != (unsigned long )((void (*)(struct drm_device * ))0)) { (*((dev->driver)->lastclose))(dev); } else { } tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_lastclose", "driver lastclose completed\n"); } else { } if ((int )dev->irq_enabled) { tmp___1 = drm_core_check_feature(dev, 8192); if (tmp___1 == 0) { drm_irq_uninstall(dev); } else { } } else { } mutex_lock_nested(& dev->struct_mutex, 0U); drm_agp_clear(dev); drm_legacy_sg_cleanup(dev); drm_legacy_vma_flush(dev); drm_legacy_dma_takedown(dev); mutex_unlock(& dev->struct_mutex); drm_legacy_dev_reinit(dev); tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_lastclose", "lastclose completed\n"); } else { } return (0); } } int drm_release(struct inode *inode , struct file *filp ) { struct drm_file *file_priv ; struct drm_minor *minor ; struct drm_device *dev ; int retcode ; long tmp ; u16 tmp___0 ; struct task_struct *tmp___1 ; pid_t tmp___2 ; long tmp___3 ; int tmp___4 ; int tmp___5 ; int tmp___6 ; struct drm_master *master ; int tmp___7 ; int __ret_warn_on ; int tmp___8 ; long tmp___9 ; int tmp___10 ; { file_priv = (struct drm_file *)filp->private_data; minor = file_priv->minor; dev = minor->dev; retcode = 0; mutex_lock_nested(& drm_global_mutex, 0U); tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_release", "open_count = %d\n", dev->open_count); } else { } mutex_lock_nested(& dev->struct_mutex, 0U); list_del(& file_priv->lhead); if (file_priv->magic != 0U) { idr_remove(& (file_priv->master)->magic_map, (int )file_priv->magic); } else { } mutex_unlock(& dev->struct_mutex); if ((unsigned long )(dev->driver)->preclose != (unsigned long )((void (*)(struct drm_device * , struct drm_file * ))0)) { (*((dev->driver)->preclose))(dev, file_priv); } else { } tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { tmp___0 = old_encode_dev(((file_priv->minor)->kdev)->devt); tmp___1 = get_current(); tmp___2 = task_pid_nr(tmp___1); drm_ut_debug_printk("drm_release", "pid = %d, device = 0x%lx, open_count = %d\n", tmp___2, (long )tmp___0, dev->open_count); } else { } if ((unsigned long )(file_priv->minor)->master != (unsigned long )((struct drm_master *)0)) { drm_master_release(dev, filp); } else { } tmp___4 = drm_core_check_feature(dev, 32); if (tmp___4 != 0) { drm_legacy_reclaim_buffers(dev, file_priv); } else { } drm_events_release(file_priv); tmp___5 = drm_core_check_feature(dev, 8192); if (tmp___5 != 0) { drm_fb_release(file_priv); drm_property_destroy_user_blobs(dev, file_priv); } else { } tmp___6 = drm_core_check_feature(dev, 4096); if (tmp___6 != 0) { drm_gem_release(dev, file_priv); } else { } drm_legacy_ctxbitmap_flush(dev, file_priv); mutex_lock_nested(& dev->master_mutex, 0U); if ((unsigned int )*((unsigned char *)file_priv + 0UL) != 0U) { master = file_priv->master; mutex_lock_nested(& dev->struct_mutex, 0U); if ((unsigned long )master->lock.hw_lock != (unsigned long )((struct drm_hw_lock *)0)) { if ((unsigned long )dev->sigdata.lock == (unsigned long )master->lock.hw_lock) { dev->sigdata.lock = (struct drm_hw_lock *)0; } else { } master->lock.hw_lock = (struct drm_hw_lock *)0; master->lock.file_priv = (struct drm_file *)0; __wake_up(& master->lock.lock_queue, 1U, 0, (void *)0); } else { } mutex_unlock(& dev->struct_mutex); if ((unsigned long )(file_priv->minor)->master == (unsigned long )file_priv->master) { if ((unsigned long )(dev->driver)->master_drop != (unsigned long )((void (*)(struct drm_device * , struct drm_file * , bool ))0)) { (*((dev->driver)->master_drop))(dev, file_priv, 1); } else { } drm_master_put(& (file_priv->minor)->master); } else { } } else { } if ((unsigned long )file_priv->master != (unsigned long )((struct drm_master *)0)) { drm_master_put(& file_priv->master); } else { } file_priv->is_master = 0U; mutex_unlock(& dev->master_mutex); if ((unsigned long )(dev->driver)->postclose != (unsigned long )((void (*)(struct drm_device * , struct drm_file * ))0)) { (*((dev->driver)->postclose))(dev, file_priv); } else { } tmp___7 = drm_core_check_feature(dev, 16384); if (tmp___7 != 0) { drm_prime_destroy_file_private(& file_priv->prime); } else { } tmp___8 = list_empty((struct list_head const *)(& file_priv->event_list)); __ret_warn_on = tmp___8 == 0; tmp___9 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___9 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_fops.c", 459); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); put_pid(file_priv->pid); kfree((void const *)file_priv); dev->open_count = dev->open_count - 1; if (dev->open_count == 0) { retcode = drm_lastclose(dev); tmp___10 = drm_device_is_unplugged(dev); if (tmp___10 != 0) { drm_put_dev(dev); } else { } } else { } mutex_unlock(& drm_global_mutex); drm_minor_release(minor); return (retcode); } } static char const __kstrtab_drm_release[12U] = { 'd', 'r', 'm', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_release ; struct kernel_symbol const __ksymtab_drm_release = {(unsigned long )(& drm_release), (char const *)(& __kstrtab_drm_release)}; ssize_t drm_read(struct file *filp , char *buffer , size_t count , loff_t *offset ) { struct drm_file *file_priv ; struct drm_device *dev ; ssize_t ret ; struct thread_info *tmp ; bool tmp___0 ; int tmp___1 ; long tmp___2 ; int __ret ; wait_queue_t __wait ; long __ret___0 ; long __int ; long tmp___3 ; int tmp___4 ; int tmp___5 ; struct drm_pending_event *e ; struct list_head const *__mptr ; int tmp___6 ; int tmp___7 ; { file_priv = (struct drm_file *)filp->private_data; dev = (file_priv->minor)->dev; ret = 0L; tmp = current_thread_info(); tmp___0 = __chk_range_not_ok((unsigned long )buffer, count, tmp->addr_limit.seg); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } tmp___2 = ldv__builtin_expect((long )tmp___1, 1L); if (tmp___2 == 0L) { return (-14L); } else { } spin_lock_irq(& dev->event_lock); ldv_39201: tmp___7 = list_empty((struct list_head const *)(& file_priv->event_list)); if (tmp___7 != 0) { if (ret != 0L) { goto ldv_39188; } else { } if ((filp->f_flags & 2048U) != 0U) { ret = -11L; goto ldv_39188; } else { } spin_unlock_irq(& dev->event_lock); __ret = 0; __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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_fops.c", 504, 0); tmp___5 = list_empty((struct list_head const *)(& file_priv->event_list)); if (tmp___5 != 0) { __ret___0 = 0L; INIT_LIST_HEAD(& __wait.task_list); __wait.flags = 0U; ldv_39195: tmp___3 = prepare_to_wait_event(& file_priv->event_wait, & __wait, 1); __int = tmp___3; tmp___4 = list_empty((struct list_head const *)(& file_priv->event_list)); if (tmp___4 == 0) { goto ldv_39194; } else { } if (__int != 0L) { __ret___0 = __int; goto ldv_39194; } else { } schedule(); goto ldv_39195; ldv_39194: finish_wait(& file_priv->event_wait, & __wait); __ret = (int )__ret___0; } else { } ret = (ssize_t )__ret; spin_lock_irq(& dev->event_lock); if (ret < 0L) { goto ldv_39188; } else { } ret = 0L; } else { __mptr = (struct list_head const *)file_priv->event_list.next; e = (struct drm_pending_event *)__mptr + 0xfffffffffffffff8UL; if ((unsigned long )((ssize_t )(e->event)->length + ret) > count) { goto ldv_39188; } else { } tmp___6 = __copy_to_user_inatomic((void *)buffer + (unsigned long )ret, (void const *)e->event, (e->event)->length); if (tmp___6 != 0) { if (ret == 0L) { ret = -14L; } else { } goto ldv_39188; } else { } file_priv->event_space = (int )((__u32 )file_priv->event_space + (e->event)->length); ret = (ssize_t )(e->event)->length + ret; list_del(& e->link); (*(e->destroy))(e); } goto ldv_39201; ldv_39188: spin_unlock_irq(& dev->event_lock); return (ret); } } static char const __kstrtab_drm_read[9U] = { 'd', 'r', 'm', '_', 'r', 'e', 'a', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_read ; struct kernel_symbol const __ksymtab_drm_read = {(unsigned long )(& drm_read), (char const *)(& __kstrtab_drm_read)}; unsigned int drm_poll(struct file *filp , struct poll_table_struct *wait ) { struct drm_file *file_priv ; unsigned int mask ; int tmp ; { file_priv = (struct drm_file *)filp->private_data; mask = 0U; poll_wait(filp, & file_priv->event_wait, wait); tmp = list_empty((struct list_head const *)(& file_priv->event_list)); if (tmp == 0) { mask = mask | 65U; } else { } return (mask); } } static char const __kstrtab_drm_poll[9U] = { 'd', 'r', 'm', '_', 'p', 'o', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_poll ; struct kernel_symbol const __ksymtab_drm_poll = {(unsigned long )(& drm_poll), (char const *)(& __kstrtab_drm_poll)}; __inline static long PTR_ERR(void const *ptr ) { long tmp ; { tmp = ldv_ptr_err(ptr); return (tmp); } } bool ldv_queue_work_on_75(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_76(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_77(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_78(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_79(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern pgprot_t pgprot_writecombine(pgprot_t ) ; void *ldv_err_ptr(long error ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; __inline static void *ERR_CAST(void const *ptr ) { { return ((void *)ptr); } } extern void __cmpxchg_wrong_size(void) ; extern void __xadd_wrong_size(void) ; __inline static int atomic_sub_and_test(int i , atomic_t *v ) { char c ; { __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"); return ((int )((signed char )c) != 0); } } __inline static int atomic_dec_and_test(atomic_t *v ) { char c ; { __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"); return ((int )((signed char )c) != 0); } } __inline static int atomic_add_return(int i , atomic_t *v ) { int __ret ; { __ret = i; switch (4UL) { case 1UL: __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"); goto ldv_5659; case 2UL: __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"); goto ldv_5659; case 4UL: __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"); goto ldv_5659; case 8UL: __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"); goto ldv_5659; default: __xadd_wrong_size(); } ldv_5659: ; return (__ret + i); } } __inline static int atomic_cmpxchg(atomic_t *v , int old , int new ) { int __ret ; int __old ; int __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { __old = old; __new = new; switch (4UL) { case 1UL: __ptr = (u8 volatile *)(& v->counter); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_5679; case 2UL: __ptr___0 = (u16 volatile *)(& v->counter); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_5679; case 4UL: __ptr___1 = (u32 volatile *)(& v->counter); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_5679; case 8UL: __ptr___2 = (u64 volatile *)(& v->counter); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_5679; default: __cmpxchg_wrong_size(); } ldv_5679: ; return (__ret); } } __inline static int __atomic_add_unless(atomic_t *v , int a , int u ) { int c ; int old ; long tmp ; long tmp___0 ; { c = atomic_read((atomic_t const *)v); ldv_5708: tmp = ldv__builtin_expect(c == u, 0L); if (tmp != 0L) { goto ldv_5707; } else { } old = atomic_cmpxchg(v, c, c + a); tmp___0 = ldv__builtin_expect(old == c, 1L); if (tmp___0 != 0L) { goto ldv_5707; } else { } c = old; goto ldv_5708; ldv_5707: ; return (c); } } __inline static int atomic_add_unless(atomic_t *v , int a , int u ) { int tmp ; { tmp = __atomic_add_unless(v, a, u); return (tmp != u); } } extern int debug_locks ; extern void lock_acquire(struct lockdep_map * , unsigned int , int , int , int , struct lockdep_map * , unsigned long ) ; extern void lock_release(struct lockdep_map * , int , unsigned long ) ; extern int lock_is_held(struct lockdep_map * ) ; extern void __raw_spin_lock_init(raw_spinlock_t * , char const * , struct lock_class_key * ) ; extern void __rwlock_init(rwlock_t * , char const * , struct lock_class_key * ) ; __inline static int mutex_is_locked(struct mutex *lock ) { int tmp ; { tmp = atomic_read((atomic_t const *)(& lock->count)); return (tmp != 1); } } bool ldv_queue_work_on_89(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_91(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_90(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_93(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_92(struct workqueue_struct *ldv_func_arg1 ) ; extern void idr_preload(gfp_t ) ; extern int idr_for_each(struct idr * , int (*)(int , void * , void * ) , void * ) ; __inline static void idr_preload_end(void) { { __asm__ volatile ("": : : "memory"); __preempt_count_sub(1); return; } } __inline static void *idr_find___1(struct idr *idr , int id ) { struct idr_layer *hint ; struct idr_layer *________p1 ; struct idr_layer *_________p1 ; union __anonunion___u_168___1 __u ; int tmp ; struct idr_layer *________p1___0 ; struct idr_layer *_________p1___0 ; union __anonunion___u_170___1 __u___0 ; int tmp___0 ; void *tmp___1 ; { __read_once_size((void const volatile *)(& idr->hint), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); hint = ________p1; if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) { __read_once_size((void const volatile *)(& hint->ary) + ((unsigned long )id & 255UL), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___0 = debug_lockdep_rcu_enabled(); return ((void *)________p1___0); } else { } tmp___1 = idr_find_slowpath(idr, id); return (tmp___1); } } __inline static void kref_init(struct kref *kref ) { { atomic_set(& kref->refcount, 1); return; } } __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 ; { tmp = atomic_add_return(1, & kref->refcount); __ret_warn_once = tmp <= 1; tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___2 != 0L) { __ret_warn_on = ! __warned; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("include/linux/kref.h", 47); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { __warned = 1; } else { } } else { } ldv__builtin_expect(__ret_warn_once != 0, 0L); return; } } __inline static int kref_sub(struct kref *kref , unsigned int count , void (*release)(struct kref * ) ) { int __ret_warn_on ; long tmp ; int tmp___0 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 71); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___0 = atomic_sub_and_test((int )count, & kref->refcount); if (tmp___0 != 0) { (*release)(kref); return (1); } else { } return (0); } } __inline static int kref_put(struct kref *kref , void (*release)(struct kref * ) ) { int tmp ; { tmp = kref_sub(kref, 1U, release); return (tmp); } } __inline static int kref_put_mutex(struct kref *kref , void (*release)(struct kref * ) , struct mutex *lock ) { int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; long tmp___3 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 138); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___2 = atomic_add_unless(& kref->refcount, -1, 1); tmp___3 = ldv__builtin_expect(tmp___2 == 0, 0L); if (tmp___3 != 0L) { mutex_lock_nested(lock, 0U); tmp___0 = atomic_dec_and_test(& kref->refcount); tmp___1 = ldv__builtin_expect(tmp___0 == 0, 0L); if (tmp___1 != 0L) { mutex_unlock(lock); return (0); } else { } (*release)(kref); return (1); } else { } return (0); } } extern void kvfree(void const * ) ; extern void put_page(struct page * ) ; extern int set_page_dirty(struct page * ) ; __inline static unsigned long vma_pages(struct vm_area_struct *vma ) { { return ((vma->vm_end - vma->vm_start) >> 12); } } extern pgprot_t vm_get_page_prot(unsigned long ) ; __inline static struct inode *file_inode(struct file const *f ) { { return ((struct inode *)f->f_inode); } } extern void fput(struct file * ) ; __inline static gfp_t mapping_gfp_mask(struct address_space *mapping ) { { return ((gfp_t )mapping->flags & 33554431U); } } extern void mark_page_accessed(struct page * ) ; extern struct file *shmem_file_setup(char const * , loff_t , unsigned long ) ; extern struct page *shmem_read_mapping_page_gfp(struct address_space * , unsigned long , gfp_t ) ; __inline static struct page *shmem_read_mapping_page(struct address_space *mapping , unsigned long index ) { gfp_t tmp ; struct page *tmp___0 ; { tmp = mapping_gfp_mask(mapping); tmp___0 = shmem_read_mapping_page_gfp(mapping, index, tmp); return (tmp___0); } } extern void dma_buf_put(struct dma_buf * ) ; extern void *__vmalloc(unsigned long , gfp_t , pgprot_t ) ; __inline static void *drm_malloc_ab(size_t nmemb , size_t size ) { void *tmp ; pgprot_t __constr_expr_0 ; void *tmp___0 ; { if (size != 0UL && 0xffffffffffffffffUL / size < nmemb) { return ((void *)0); } else { } if (size * nmemb <= 4096UL) { tmp = kmalloc(nmemb * size, 208U); return (tmp); } else { } __constr_expr_0.pgprot = 0x8000000000000163UL; tmp___0 = __vmalloc(size * nmemb, 210U, __constr_expr_0); return (tmp___0); } } __inline static void drm_free_large(void *ptr ) { { kvfree((void const *)ptr); return; } } void drm_vma_offset_manager_init(struct drm_vma_offset_manager *mgr , unsigned long page_offset___0 , unsigned long size ) ; void drm_vma_offset_manager_destroy(struct drm_vma_offset_manager *mgr ) ; struct drm_vma_offset_node *drm_vma_offset_lookup(struct drm_vma_offset_manager *mgr , unsigned long start , unsigned long pages ) ; int drm_vma_offset_add(struct drm_vma_offset_manager *mgr , struct drm_vma_offset_node *node , unsigned long pages ) ; void drm_vma_offset_remove(struct drm_vma_offset_manager *mgr , struct drm_vma_offset_node *node ) ; int drm_vma_node_allow(struct drm_vma_offset_node *node , struct file *filp ) ; void drm_vma_node_revoke(struct drm_vma_offset_node *node , struct file *filp ) ; bool drm_vma_node_is_allowed(struct drm_vma_offset_node *node , struct file *filp ) ; __inline static struct drm_vma_offset_node *drm_vma_offset_exact_lookup(struct drm_vma_offset_manager *mgr , unsigned long start , unsigned long pages ) { struct drm_vma_offset_node *node ; { node = drm_vma_offset_lookup(mgr, start, pages); return ((unsigned long )node != (unsigned long )((struct drm_vma_offset_node *)0) && node->vm_node.start == (unsigned long long )start ? node : (struct drm_vma_offset_node *)0); } } __inline static void drm_vma_node_reset(struct drm_vma_offset_node *node ) { struct rb_root __constr_expr_0 ; struct lock_class_key __key ; { memset((void *)node, 0, 176UL); __constr_expr_0.rb_node = (struct rb_node *)0; node->vm_files = __constr_expr_0; __rwlock_init(& node->vm_lock, "&node->vm_lock", & __key); return; } } __inline static unsigned long drm_vma_node_size(struct drm_vma_offset_node *node ) { { return ((unsigned long )node->vm_node.size); } } void drm_gem_object_release(struct drm_gem_object *obj ) ; void drm_gem_object_free(struct kref *kref ) ; int drm_gem_object_init(struct drm_device *dev , struct drm_gem_object *obj , size_t size ) ; void drm_gem_private_object_init(struct drm_device *dev , struct drm_gem_object *obj , size_t size ) ; void drm_gem_vm_open(struct vm_area_struct *vma ) ; void drm_gem_vm_close(struct vm_area_struct *vma ) ; int drm_gem_mmap_obj(struct drm_gem_object *obj , unsigned long obj_size , struct vm_area_struct *vma ) ; int drm_gem_mmap(struct file *filp , struct vm_area_struct *vma ) ; __inline static void drm_gem_object_reference(struct drm_gem_object *obj ) { { kref_get(& obj->refcount); return; } } __inline static void drm_gem_object_unreference(struct drm_gem_object *obj ) { { if ((unsigned long )obj != (unsigned long )((struct drm_gem_object *)0)) { kref_put(& obj->refcount, & drm_gem_object_free); } else { } return; } } __inline static void drm_gem_object_unreference_unlocked(struct drm_gem_object *obj ) { struct drm_device *dev ; int tmp ; { if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { return; } else { } dev = obj->dev; tmp = kref_put_mutex(& obj->refcount, & drm_gem_object_free, & dev->struct_mutex); if (tmp != 0) { mutex_unlock(& dev->struct_mutex); } else { lock_acquire(& dev->struct_mutex.dep_map, 0U, 0, 0, 1, (struct lockdep_map *)0, 0UL); lock_release(& dev->struct_mutex.dep_map, 0, 0UL); } return; } } int drm_gem_handle_create(struct drm_file *file_priv , struct drm_gem_object *obj , u32 *handlep ) ; int drm_gem_handle_delete(struct drm_file *filp , u32 handle ) ; void drm_gem_free_mmap_offset(struct drm_gem_object *obj ) ; int drm_gem_create_mmap_offset(struct drm_gem_object *obj ) ; int drm_gem_create_mmap_offset_size(struct drm_gem_object *obj , size_t size ) ; struct page **drm_gem_get_pages(struct drm_gem_object *obj ) ; void drm_gem_put_pages(struct drm_gem_object *obj , struct page **pages , bool dirty , bool accessed ) ; struct drm_gem_object *drm_gem_object_lookup(struct drm_device *dev , struct drm_file *filp , u32 handle ) ; int drm_gem_dumb_destroy(struct drm_file *file , struct drm_device *dev , uint32_t handle ) ; void drm_vm_open_locked(struct drm_device *dev , struct vm_area_struct *vma ) ; void drm_vm_close_locked(struct drm_device *dev , struct vm_area_struct *vma ) ; void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpriv , struct dma_buf *dma_buf ) ; int drm_gem_init(struct drm_device *dev ) ; void drm_gem_destroy(struct drm_device *dev ) ; int drm_gem_handle_create_tail(struct drm_file *file_priv , struct drm_gem_object *obj , u32 *handlep ) ; int drm_gem_close_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_gem_flink_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_gem_open_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_gem_init(struct drm_device *dev ) { struct drm_vma_offset_manager *vma_offset_manager ; struct lock_class_key __key ; void *tmp ; { __mutex_init(& dev->object_name_lock, "&dev->object_name_lock", & __key); idr_init(& dev->object_name_idr); tmp = kzalloc(248UL, 208U); vma_offset_manager = (struct drm_vma_offset_manager *)tmp; if ((unsigned long )vma_offset_manager == (unsigned long )((struct drm_vma_offset_manager *)0)) { drm_err("out of memory\n"); return (-12); } else { } dev->vma_offset_manager = vma_offset_manager; drm_vma_offset_manager_init(vma_offset_manager, 1048576UL, 16777200UL); return (0); } } void drm_gem_destroy(struct drm_device *dev ) { { drm_vma_offset_manager_destroy(dev->vma_offset_manager); kfree((void const *)dev->vma_offset_manager); dev->vma_offset_manager = (struct drm_vma_offset_manager *)0; return; } } int drm_gem_object_init(struct drm_device *dev , struct drm_gem_object *obj , size_t size ) { struct file *filp ; long tmp ; bool tmp___0 ; { drm_gem_private_object_init(dev, obj, size); filp = shmem_file_setup("drm mm object", (loff_t )size, 2097152UL); tmp___0 = IS_ERR((void const *)filp); if ((int )tmp___0) { tmp = PTR_ERR((void const *)filp); return ((int )tmp); } else { } obj->filp = filp; return (0); } } static char const __kstrtab_drm_gem_object_init[20U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_object_init ; struct kernel_symbol const __ksymtab_drm_gem_object_init = {(unsigned long )(& drm_gem_object_init), (char const *)(& __kstrtab_drm_gem_object_init)}; void drm_gem_private_object_init(struct drm_device *dev , struct drm_gem_object *obj , size_t size ) { long tmp ; { tmp = ldv__builtin_expect((size & 4095UL) != 0UL, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c"), "i" (163), "i" (12UL)); ldv_40401: ; goto ldv_40401; } else { } obj->dev = dev; obj->filp = (struct file *)0; kref_init(& obj->refcount); obj->handle_count = 0U; obj->size = size; drm_vma_node_reset(& obj->vma_node); return; } } static char const __kstrtab_drm_gem_private_object_init[28U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'r', 'i', 'v', 'a', 't', 'e', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_private_object_init ; struct kernel_symbol const __ksymtab_drm_gem_private_object_init = {(unsigned long )(& drm_gem_private_object_init), (char const *)(& __kstrtab_drm_gem_private_object_init)}; static void drm_gem_remove_prime_handles(struct drm_gem_object *obj , struct drm_file *filp ) { { mutex_lock_nested(& filp->prime.lock, 0U); if ((unsigned long )obj->dma_buf != (unsigned long )((struct dma_buf *)0)) { drm_prime_remove_buf_handle_locked(& filp->prime, obj->dma_buf); } else { } mutex_unlock(& filp->prime.lock); return; } } static void drm_gem_object_handle_free(struct drm_gem_object *obj ) { struct drm_device *dev ; { dev = obj->dev; if (obj->name != 0) { idr_remove(& dev->object_name_idr, obj->name); obj->name = 0; } else { } return; } } static void drm_gem_object_exported_dma_buf_free(struct drm_gem_object *obj ) { { if ((unsigned long )obj->dma_buf != (unsigned long )((struct dma_buf *)0)) { dma_buf_put(obj->dma_buf); obj->dma_buf = (struct dma_buf *)0; } else { } return; } } static void drm_gem_object_handle_unreference_unlocked(struct drm_gem_object *obj ) { int __ret_warn_on ; long tmp ; long tmp___0 ; { __ret_warn_on = obj->handle_count == 0U; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 223); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } mutex_lock_nested(& (obj->dev)->object_name_lock, 0U); obj->handle_count = obj->handle_count - 1U; if (obj->handle_count == 0U) { drm_gem_object_handle_free(obj); drm_gem_object_exported_dma_buf_free(obj); } else { } mutex_unlock(& (obj->dev)->object_name_lock); drm_gem_object_unreference_unlocked(obj); return; } } int drm_gem_handle_delete(struct drm_file *filp , u32 handle ) { struct drm_device *dev ; struct drm_gem_object *obj ; void *tmp ; int tmp___0 ; { spin_lock(& filp->table_lock); tmp = idr_find___1(& filp->object_idr, (int )handle); obj = (struct drm_gem_object *)tmp; if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { spin_unlock(& filp->table_lock); return (-22); } else { } dev = obj->dev; idr_remove(& filp->object_idr, (int )handle); spin_unlock(& filp->table_lock); tmp___0 = drm_core_check_feature(dev, 16384); if (tmp___0 != 0) { drm_gem_remove_prime_handles(obj, filp); } else { } drm_vma_node_revoke(& obj->vma_node, filp->filp); if ((unsigned long )(dev->driver)->gem_close_object != (unsigned long )((void (*)(struct drm_gem_object * , struct drm_file * ))0)) { (*((dev->driver)->gem_close_object))(obj, filp); } else { } drm_gem_object_handle_unreference_unlocked(obj); return (0); } } static char const __kstrtab_drm_gem_handle_delete[22U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'h', 'a', 'n', 'd', 'l', 'e', '_', 'd', 'e', 'l', 'e', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_handle_delete ; struct kernel_symbol const __ksymtab_drm_gem_handle_delete = {(unsigned long )(& drm_gem_handle_delete), (char const *)(& __kstrtab_drm_gem_handle_delete)}; int drm_gem_dumb_destroy(struct drm_file *file , struct drm_device *dev , uint32_t handle ) { int tmp ; { tmp = drm_gem_handle_delete(file, handle); return (tmp); } } static char const __kstrtab_drm_gem_dumb_destroy[21U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'd', 'u', 'm', 'b', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_dumb_destroy ; struct kernel_symbol const __ksymtab_drm_gem_dumb_destroy = {(unsigned long )(& drm_gem_dumb_destroy), (char const *)(& __kstrtab_drm_gem_dumb_destroy)}; int drm_gem_handle_create_tail(struct drm_file *file_priv , struct drm_gem_object *obj , u32 *handlep ) { struct drm_device *dev ; int ret ; int __ret_warn_on ; int tmp ; long tmp___0 ; { dev = obj->dev; tmp = mutex_is_locked(& dev->object_name_lock); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 326); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); idr_preload(208U); spin_lock(& file_priv->table_lock); ret = idr_alloc(& file_priv->object_idr, (void *)obj, 1, 0, 0U); drm_gem_object_reference(obj); obj->handle_count = obj->handle_count + 1U; spin_unlock(& file_priv->table_lock); idr_preload_end(); mutex_unlock(& dev->object_name_lock); if (ret < 0) { drm_gem_object_handle_unreference_unlocked(obj); return (ret); } else { } *handlep = (u32 )ret; ret = drm_vma_node_allow(& obj->vma_node, file_priv->filp); if (ret != 0) { drm_gem_handle_delete(file_priv, *handlep); return (ret); } else { } if ((unsigned long )(dev->driver)->gem_open_object != (unsigned long )((int (*)(struct drm_gem_object * , struct drm_file * ))0)) { ret = (*((dev->driver)->gem_open_object))(obj, file_priv); if (ret != 0) { drm_gem_handle_delete(file_priv, *handlep); return (ret); } else { } } else { } return (0); } } int drm_gem_handle_create(struct drm_file *file_priv , struct drm_gem_object *obj , u32 *handlep ) { int tmp ; { mutex_lock_nested(& (obj->dev)->object_name_lock, 0U); tmp = drm_gem_handle_create_tail(file_priv, obj, handlep); return (tmp); } } static char const __kstrtab_drm_gem_handle_create[22U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'h', 'a', 'n', 'd', 'l', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_handle_create ; struct kernel_symbol const __ksymtab_drm_gem_handle_create = {(unsigned long )(& drm_gem_handle_create), (char const *)(& __kstrtab_drm_gem_handle_create)}; void drm_gem_free_mmap_offset(struct drm_gem_object *obj ) { struct drm_device *dev ; { dev = obj->dev; drm_vma_offset_remove(dev->vma_offset_manager, & obj->vma_node); return; } } static char const __kstrtab_drm_gem_free_mmap_offset[25U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'f', 'r', 'e', 'e', '_', 'm', 'm', 'a', 'p', '_', 'o', 'f', 'f', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_free_mmap_offset ; struct kernel_symbol const __ksymtab_drm_gem_free_mmap_offset = {(unsigned long )(& drm_gem_free_mmap_offset), (char const *)(& __kstrtab_drm_gem_free_mmap_offset)}; int drm_gem_create_mmap_offset_size(struct drm_gem_object *obj , size_t size ) { struct drm_device *dev ; int tmp ; { dev = obj->dev; tmp = drm_vma_offset_add(dev->vma_offset_manager, & obj->vma_node, size / 4096UL); return (tmp); } } static char const __kstrtab_drm_gem_create_mmap_offset_size[32U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'm', 'm', 'a', 'p', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 's', 'i', 'z', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_create_mmap_offset_size ; struct kernel_symbol const __ksymtab_drm_gem_create_mmap_offset_size = {(unsigned long )(& drm_gem_create_mmap_offset_size), (char const *)(& __kstrtab_drm_gem_create_mmap_offset_size)}; int drm_gem_create_mmap_offset(struct drm_gem_object *obj ) { int tmp ; { tmp = drm_gem_create_mmap_offset_size(obj, obj->size); return (tmp); } } static char const __kstrtab_drm_gem_create_mmap_offset[27U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'm', 'm', 'a', 'p', '_', 'o', 'f', 'f', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_create_mmap_offset ; struct kernel_symbol const __ksymtab_drm_gem_create_mmap_offset = {(unsigned long )(& drm_gem_create_mmap_offset), (char const *)(& __kstrtab_drm_gem_create_mmap_offset)}; struct page **drm_gem_get_pages(struct drm_gem_object *obj ) { struct address_space *mapping ; struct page *p ; struct page **pages ; int i ; int npages ; struct inode *tmp ; int __ret_warn_on ; long tmp___0 ; void *tmp___1 ; void *tmp___2 ; bool tmp___3 ; gfp_t tmp___4 ; long tmp___5 ; int tmp___6 ; void *tmp___7 ; { tmp = file_inode((struct file const *)obj->filp); mapping = tmp->i_mapping; __ret_warn_on = (obj->size & 4095UL) != 0UL; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 475); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); npages = (int )(obj->size >> 12); tmp___1 = drm_malloc_ab((size_t )npages, 8UL); pages = (struct page **)tmp___1; if ((unsigned long )pages == (unsigned long )((struct page **)0)) { tmp___2 = ERR_PTR(-12L); return ((struct page **)tmp___2); } else { } i = 0; goto ldv_40525; ldv_40524: p = shmem_read_mapping_page(mapping, (unsigned long )i); tmp___3 = IS_ERR((void const *)p); if ((int )tmp___3) { goto fail; } else { } *(pages + (unsigned long )i) = p; tmp___4 = mapping_gfp_mask(mapping); tmp___5 = ldv__builtin_expect((long )((tmp___4 & 4U) != 0U && (unsigned long )(((long )p + 24189255811072L) / 64L) > 1048575UL), 0L); if (tmp___5 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c"), "i" (495), "i" (12UL)); ldv_40523: ; goto ldv_40523; } else { } i = i + 1; ldv_40525: ; if (i < npages) { goto ldv_40524; } else { } return (pages); fail: ; goto ldv_40528; ldv_40527: put_page(*(pages + (unsigned long )i)); ldv_40528: tmp___6 = i; i = i - 1; if (tmp___6 != 0) { goto ldv_40527; } else { } drm_free_large((void *)pages); tmp___7 = ERR_CAST((void const *)p); return ((struct page **)tmp___7); } } static char const __kstrtab_drm_gem_get_pages[18U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'g', 'e', 't', '_', 'p', 'a', 'g', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_get_pages ; struct kernel_symbol const __ksymtab_drm_gem_get_pages = {(unsigned long )(& drm_gem_get_pages), (char const *)(& __kstrtab_drm_gem_get_pages)}; void drm_gem_put_pages(struct drm_gem_object *obj , struct page **pages , bool dirty , bool accessed ) { int i ; int npages ; int __ret_warn_on ; long tmp ; { __ret_warn_on = (obj->size & 4095UL) != 0UL; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 525); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); npages = (int )(obj->size >> 12); i = 0; goto ldv_40548; ldv_40547: ; if ((int )dirty) { set_page_dirty(*(pages + (unsigned long )i)); } else { } if ((int )accessed) { mark_page_accessed(*(pages + (unsigned long )i)); } else { } put_page(*(pages + (unsigned long )i)); i = i + 1; ldv_40548: ; if (i < npages) { goto ldv_40547; } else { } drm_free_large((void *)pages); return; } } static char const __kstrtab_drm_gem_put_pages[18U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'u', 't', '_', 'p', 'a', 'g', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_put_pages ; struct kernel_symbol const __ksymtab_drm_gem_put_pages = {(unsigned long )(& drm_gem_put_pages), (char const *)(& __kstrtab_drm_gem_put_pages)}; struct drm_gem_object *drm_gem_object_lookup(struct drm_device *dev , struct drm_file *filp , u32 handle ) { struct drm_gem_object *obj ; void *tmp ; { spin_lock(& filp->table_lock); tmp = idr_find___1(& filp->object_idr, (int )handle); obj = (struct drm_gem_object *)tmp; if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { spin_unlock(& filp->table_lock); return ((struct drm_gem_object *)0); } else { } drm_gem_object_reference(obj); spin_unlock(& filp->table_lock); return (obj); } } static char const __kstrtab_drm_gem_object_lookup[22U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'l', 'o', 'o', 'k', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_object_lookup ; struct kernel_symbol const __ksymtab_drm_gem_object_lookup = {(unsigned long )(& drm_gem_object_lookup), (char const *)(& __kstrtab_drm_gem_object_lookup)}; int drm_gem_close_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_gem_close *args ; int ret ; int tmp ; { args = (struct drm_gem_close *)data; tmp = drm_core_check_feature(dev, 4096); if (tmp == 0) { return (-19); } else { } ret = drm_gem_handle_delete(file_priv, args->handle); return (ret); } } int drm_gem_flink_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_gem_flink *args ; struct drm_gem_object *obj ; int ret ; int tmp ; { args = (struct drm_gem_flink *)data; tmp = drm_core_check_feature(dev, 4096); if (tmp == 0) { return (-19); } else { } obj = drm_gem_object_lookup(dev, file_priv, args->handle); if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { return (-2); } else { } mutex_lock_nested(& dev->object_name_lock, 0U); idr_preload(208U); if (obj->handle_count == 0U) { ret = -2; goto err; } else { } if (obj->name == 0) { ret = idr_alloc(& dev->object_name_idr, (void *)obj, 1, 0, 0U); if (ret < 0) { goto err; } else { } obj->name = ret; } else { } args->name = (__u32 )obj->name; ret = 0; err: idr_preload_end(); mutex_unlock(& dev->object_name_lock); drm_gem_object_unreference_unlocked(obj); return (ret); } } int drm_gem_open_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_gem_open *args ; struct drm_gem_object *obj ; int ret ; u32 handle ; int tmp ; void *tmp___0 ; { args = (struct drm_gem_open *)data; tmp = drm_core_check_feature(dev, 4096); if (tmp == 0) { return (-19); } else { } mutex_lock_nested(& dev->object_name_lock, 0U); tmp___0 = idr_find___1(& dev->object_name_idr, (int )args->name); obj = (struct drm_gem_object *)tmp___0; if ((unsigned long )obj != (unsigned long )((struct drm_gem_object *)0)) { drm_gem_object_reference(obj); } else { mutex_unlock(& dev->object_name_lock); return (-2); } ret = drm_gem_handle_create_tail(file_priv, obj, & handle); drm_gem_object_unreference_unlocked(obj); if (ret != 0) { return (ret); } else { } args->handle = handle; args->size = (__u64 )obj->size; return (0); } } void drm_gem_open(struct drm_device *dev , struct drm_file *file_private ) { struct lock_class_key __key ; { idr_init(& file_private->object_idr); spinlock_check(& file_private->table_lock); __raw_spin_lock_init(& file_private->table_lock.__annonCompField18.rlock, "&(&file_private->table_lock)->rlock", & __key); return; } } static int drm_gem_object_release_handle(int id , void *ptr , void *data ) { struct drm_file *file_priv ; struct drm_gem_object *obj ; struct drm_device *dev ; int tmp ; { file_priv = (struct drm_file *)data; obj = (struct drm_gem_object *)ptr; dev = obj->dev; tmp = drm_core_check_feature(dev, 16384); if (tmp != 0) { drm_gem_remove_prime_handles(obj, file_priv); } else { } drm_vma_node_revoke(& obj->vma_node, file_priv->filp); if ((unsigned long )(dev->driver)->gem_close_object != (unsigned long )((void (*)(struct drm_gem_object * , struct drm_file * ))0)) { (*((dev->driver)->gem_close_object))(obj, file_priv); } else { } drm_gem_object_handle_unreference_unlocked(obj); return (0); } } void drm_gem_release(struct drm_device *dev , struct drm_file *file_private ) { { idr_for_each(& file_private->object_idr, & drm_gem_object_release_handle, (void *)file_private); idr_destroy(& file_private->object_idr); return; } } void drm_gem_object_release(struct drm_gem_object *obj ) { int __ret_warn_on ; long tmp ; { __ret_warn_on = (unsigned long )obj->dma_buf != (unsigned long )((struct dma_buf *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 745); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((unsigned long )obj->filp != (unsigned long )((struct file *)0)) { fput(obj->filp); } else { } drm_gem_free_mmap_offset(obj); return; } } static char const __kstrtab_drm_gem_object_release[23U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_object_release ; struct kernel_symbol const __ksymtab_drm_gem_object_release = {(unsigned long )(& drm_gem_object_release), (char const *)(& __kstrtab_drm_gem_object_release)}; void drm_gem_object_free(struct kref *kref ) { struct drm_gem_object *obj ; struct drm_device *dev ; int tmp ; long tmp___0 ; { obj = (struct drm_gem_object *)kref; dev = obj->dev; tmp = mutex_is_locked(& dev->struct_mutex); tmp___0 = ldv__builtin_expect(tmp == 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c"), "i" (769), "i" (12UL)); ldv_40634: ; goto ldv_40634; } else { } if ((unsigned long )(dev->driver)->gem_free_object != (unsigned long )((void (*)(struct drm_gem_object * ))0)) { (*((dev->driver)->gem_free_object))(obj); } else { } return; } } static char const __kstrtab_drm_gem_object_free[20U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'f', 'r', 'e', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_object_free ; struct kernel_symbol const __ksymtab_drm_gem_object_free = {(unsigned long )(& drm_gem_object_free), (char const *)(& __kstrtab_drm_gem_object_free)}; void drm_gem_vm_open(struct vm_area_struct *vma ) { struct drm_gem_object *obj ; { obj = (struct drm_gem_object *)vma->vm_private_data; drm_gem_object_reference(obj); mutex_lock_nested(& (obj->dev)->struct_mutex, 0U); drm_vm_open_locked(obj->dev, vma); mutex_unlock(& (obj->dev)->struct_mutex); return; } } static char const __kstrtab_drm_gem_vm_open[16U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'v', 'm', '_', 'o', 'p', 'e', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_vm_open ; struct kernel_symbol const __ksymtab_drm_gem_vm_open = {(unsigned long )(& drm_gem_vm_open), (char const *)(& __kstrtab_drm_gem_vm_open)}; void drm_gem_vm_close(struct vm_area_struct *vma ) { struct drm_gem_object *obj ; struct drm_device *dev ; { obj = (struct drm_gem_object *)vma->vm_private_data; dev = obj->dev; mutex_lock_nested(& dev->struct_mutex, 0U); drm_vm_close_locked(obj->dev, vma); drm_gem_object_unreference(obj); mutex_unlock(& dev->struct_mutex); return; } } static char const __kstrtab_drm_gem_vm_close[17U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'v', 'm', '_', 'c', 'l', 'o', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_vm_close ; struct kernel_symbol const __ksymtab_drm_gem_vm_close = {(unsigned long )(& drm_gem_vm_close), (char const *)(& __kstrtab_drm_gem_vm_close)}; int drm_gem_mmap_obj(struct drm_gem_object *obj , unsigned long obj_size , struct vm_area_struct *vma ) { struct drm_device *dev ; int __ret_warn_on ; int tmp ; int tmp___0 ; long tmp___1 ; pgprot_t tmp___2 ; { dev = obj->dev; if (debug_locks != 0) { tmp = lock_is_held(& dev->struct_mutex.dep_map); if (tmp == 0) { tmp___0 = 1; } else { tmp___0 = 0; } } else { tmp___0 = 0; } __ret_warn_on = tmp___0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_gem.c", 831); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if (vma->vm_end - vma->vm_start > obj_size) { return (-22); } else { } if ((unsigned long )(dev->driver)->gem_vm_ops == (unsigned long )((struct vm_operations_struct const *)0)) { return (-22); } else { } vma->vm_flags = vma->vm_flags | 67388416UL; vma->vm_ops = (dev->driver)->gem_vm_ops; vma->vm_private_data = (void *)obj; tmp___2 = vm_get_page_prot(vma->vm_flags); vma->vm_page_prot = pgprot_writecombine(tmp___2); drm_gem_object_reference(obj); drm_vm_open_locked(dev, vma); return (0); } } static char const __kstrtab_drm_gem_mmap_obj[17U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'm', 'm', 'a', 'p', '_', 'o', 'b', 'j', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_mmap_obj ; struct kernel_symbol const __ksymtab_drm_gem_mmap_obj = {(unsigned long )(& drm_gem_mmap_obj), (char const *)(& __kstrtab_drm_gem_mmap_obj)}; int drm_gem_mmap(struct file *filp , struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_gem_object *obj ; struct drm_vma_offset_node *node ; int ret ; int tmp ; unsigned long tmp___0 ; bool tmp___1 ; int tmp___2 ; struct drm_vma_offset_node const *__mptr ; unsigned long tmp___3 ; { priv = (struct drm_file *)filp->private_data; dev = (priv->minor)->dev; tmp = drm_device_is_unplugged(dev); if (tmp != 0) { return (-19); } else { } mutex_lock_nested(& dev->struct_mutex, 0U); tmp___0 = vma_pages(vma); node = drm_vma_offset_exact_lookup(dev->vma_offset_manager, vma->vm_pgoff, tmp___0); if ((unsigned long )node == (unsigned long )((struct drm_vma_offset_node *)0)) { mutex_unlock(& dev->struct_mutex); return (-22); } else { tmp___1 = drm_vma_node_is_allowed(node, filp); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } if (tmp___2) { mutex_unlock(& dev->struct_mutex); return (-13); } else { } } __mptr = (struct drm_vma_offset_node const *)node; obj = (struct drm_gem_object *)__mptr + 0xffffffffffffffe8UL; tmp___3 = drm_vma_node_size(node); ret = drm_gem_mmap_obj(obj, tmp___3 << 12, vma); mutex_unlock(& dev->struct_mutex); return (ret); } } static char const __kstrtab_drm_gem_mmap[13U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'm', 'm', 'a', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_mmap ; struct kernel_symbol const __ksymtab_drm_gem_mmap = {(unsigned long )(& drm_gem_mmap), (char const *)(& __kstrtab_drm_gem_mmap)}; __inline static void *ERR_PTR(long error ) { void *tmp ; { tmp = ldv_err_ptr(error); return (tmp); } } bool ldv_queue_work_on_89(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_90(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_91(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_92(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_93(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void warn_slowpath_fmt(char const * , int const , char const * , ...) ; extern size_t strlen(char const * ) ; extern char *kstrdup(char const * , gfp_t ) ; extern uid_t from_kuid_munged(struct user_namespace * , kuid_t ) ; bool ldv_queue_work_on_103(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_105(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_104(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_107(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_106(struct workqueue_struct *ldv_func_arg1 ) ; extern int arch_phys_wc_index(int ) ; extern pid_t pid_vnr(struct pid * ) ; int drm_agp_acquire_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_release_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_enable_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_info_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_alloc_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_free_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_unbind_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_agp_bind_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getresources(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getplane_res(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getcrtc(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getconnector(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_setcrtc(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getplane(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_setplane(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_cursor_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_cursor2_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_addfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_addfb2(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_rmfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_dirtyfb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getproperty_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_createblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_destroyblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_connector_property_set_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_getencoder(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_gamma_get_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_gamma_set_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_page_flip_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_create_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_mmap_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_destroy_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_obj_get_properties_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_obj_set_property_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_mode_atomic_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; __inline static bool drm_is_render_client(struct drm_file const *file_priv ) { { return ((file_priv->minor)->type == 2); } } __inline static bool drm_is_control_client(struct drm_file const *file_priv ) { { return ((file_priv->minor)->type == 1); } } long drm_ioctl(struct file *filp , unsigned int cmd , unsigned long arg ) ; bool drm_ioctl_flags(unsigned int nr , unsigned int *flags ) ; int drm_noop(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_wait_vblank(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_lock(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_unlock(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_sg_alloc(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_legacy_sg_free(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; unsigned int drm_timestamp_monotonic ; int drm_pci_set_unique(struct drm_device *dev , struct drm_master *master , struct drm_unique *u ) ; int drm_irq_by_busid(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_prime_handle_to_fd_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_prime_fd_to_handle_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_control(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_modeset_ctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_setmaster_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; int drm_dropmaster_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; static int drm_version(struct drm_device *dev , void *data , struct drm_file *file_priv ) ; static int drm_getunique(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_unique *u ; struct drm_master *master ; unsigned long tmp ; { u = (struct drm_unique *)data; master = file_priv->master; if (u->unique_len >= (size_t )master->unique_len) { tmp = copy_to_user((void *)u->unique, (void const *)master->unique, (unsigned long )master->unique_len); if (tmp != 0UL) { return (-14); } else { } } else { } u->unique_len = (size_t )master->unique_len; return (0); } } static void drm_unset_busid(struct drm_device *dev , struct drm_master *master ) { { kfree((void const *)master->unique); master->unique = (char *)0; master->unique_len = 0; return; } } static int drm_setunique(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_unique *u ; struct drm_master *master ; int ret ; int tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; { u = (struct drm_unique *)data; master = file_priv->master; if (master->unique_len != 0 || (unsigned long )master->unique != (unsigned long )((char *)0)) { return (-16); } else { } if (u->unique_len == 0UL || u->unique_len > 1024UL) { return (-22); } else { } tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (0); } else { } __ret_warn_on = (unsigned long )dev->pdev == (unsigned long )((struct pci_dev *)0); tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioctl.c", 109); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { return (-22); } else { } ret = drm_pci_set_unique(dev, master, u); if (ret != 0) { goto err; } else { } return (0); err: drm_unset_busid(dev, master); return (ret); } } static int drm_set_busid(struct drm_device *dev , struct drm_file *file_priv ) { struct drm_master *master ; int ret ; int __ret_warn_on ; long tmp ; long tmp___0 ; size_t tmp___1 ; { master = file_priv->master; if ((unsigned long )master->unique != (unsigned long )((char *)0)) { drm_unset_busid(dev, master); } else { } if ((unsigned long )(dev->driver)->set_busid != (unsigned long )((int (*)(struct drm_device * , struct drm_master * ))0)) { ret = (*((dev->driver)->set_busid))(dev, master); if (ret != 0) { drm_unset_busid(dev, master); return (ret); } else { } } else { __ret_warn_on = (unsigned long )dev->unique == (unsigned long )((char *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioctl.c", 141, "No drm_driver.set_busid() implementation provided by %ps. Use drm_dev_set_unique() to set the unique name explicitly.", dev->driver); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (-22); } else { } master->unique = kstrdup((char const *)dev->unique, 208U); if ((unsigned long )master->unique != (unsigned long )((char *)0)) { tmp___1 = strlen((char const *)dev->unique); master->unique_len = (int )tmp___1; } else { } } return (0); } } static int drm_getmap(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_map *map ; struct drm_map_list *r_list ; struct list_head *list ; int idx ; int i ; struct list_head const *__mptr ; { map = (struct drm_map *)data; r_list = (struct drm_map_list *)0; idx = (int )map->offset; if (idx < 0) { return (-22); } else { } i = 0; mutex_lock_nested(& dev->struct_mutex, 0U); list = dev->maplist.next; goto ldv_39134; ldv_39133: ; if (i == idx) { __mptr = (struct list_head const *)list; r_list = (struct drm_map_list *)__mptr; goto ldv_39132; } else { } i = i + 1; list = list->next; ldv_39134: ; if ((unsigned long )(& dev->maplist) != (unsigned long )list) { goto ldv_39133; } else { } ldv_39132: ; if ((unsigned long )r_list == (unsigned long )((struct drm_map_list *)0) || (unsigned long )r_list->map == (unsigned long )((struct drm_local_map *)0)) { mutex_unlock(& dev->struct_mutex); return (-22); } else { } map->offset = (unsigned long )(r_list->map)->offset; map->size = (r_list->map)->size; map->type = (r_list->map)->type; map->flags = (r_list->map)->flags; map->handle = (void *)r_list->user_token; map->mtrr = arch_phys_wc_index((r_list->map)->mtrr); mutex_unlock(& dev->struct_mutex); return (0); } } static int drm_getclient(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_client *client ; pid_t tmp ; int tmp___0 ; struct task_struct *tmp___1 ; uid_t tmp___2 ; { client = (struct drm_client *)data; if (client->idx == 0) { client->auth = (int )file_priv->authenticated; tmp = pid_vnr(file_priv->pid); client->pid = (unsigned long )tmp; tmp___0 = debug_lockdep_rcu_enabled(); tmp___1 = get_current(); tmp___2 = from_kuid_munged((tmp___1->cred)->user_ns, file_priv->uid); client->uid = (unsigned long )tmp___2; client->magic = 0UL; client->iocs = 0UL; return (0); } else { return (-22); } } } static int drm_getstats(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_stats *stats ; { stats = (struct drm_stats *)data; memset((void *)stats, 0, 248UL); return (0); } } static int drm_getcap(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_get_cap *req ; { req = (struct drm_get_cap *)data; req->value = 0ULL; switch (req->capability) { case 1ULL: ; if ((unsigned long )(dev->driver)->dumb_create != (unsigned long )((int (*)(struct drm_file * , struct drm_device * , struct drm_mode_create_dumb * ))0)) { req->value = 1ULL; } else { } goto ldv_39156; case 2ULL: req->value = 1ULL; goto ldv_39156; case 3ULL: req->value = (__u64 )dev->mode_config.preferred_depth; goto ldv_39156; case 4ULL: req->value = (__u64 )dev->mode_config.prefer_shadow; goto ldv_39156; case 5ULL: req->value = req->value | ((unsigned long )(dev->driver)->prime_fd_to_handle != (unsigned long )((int (*)(struct drm_device * , struct drm_file * , int , uint32_t * ))0) ? 1ULL : 0ULL); req->value = req->value | ((unsigned long )(dev->driver)->prime_handle_to_fd != (unsigned long )((int (*)(struct drm_device * , struct drm_file * , uint32_t , uint32_t , int * ))0) ? 2ULL : 0ULL); goto ldv_39156; case 6ULL: req->value = (__u64 )drm_timestamp_monotonic; goto ldv_39156; case 7ULL: req->value = (__u64 )dev->mode_config.async_page_flip; goto ldv_39156; case 8ULL: ; if (dev->mode_config.cursor_width != 0U) { req->value = (__u64 )dev->mode_config.cursor_width; } else { req->value = 64ULL; } goto ldv_39156; case 9ULL: ; if (dev->mode_config.cursor_height != 0U) { req->value = (__u64 )dev->mode_config.cursor_height; } else { req->value = 64ULL; } goto ldv_39156; case 16ULL: req->value = (__u64 )dev->mode_config.allow_fb_modifiers; goto ldv_39156; default: ; return (-22); } ldv_39156: ; return (0); } } static int drm_setclientcap(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_set_client_cap *req ; int tmp ; { req = (struct drm_set_client_cap *)data; switch (req->capability) { case 1ULL: ; if (req->value > 1ULL) { return (-22); } else { } file_priv->stereo_allowed = (unsigned char )req->value; goto ldv_39174; case 2ULL: ; if (req->value > 1ULL) { return (-22); } else { } file_priv->universal_planes = (unsigned char )req->value; goto ldv_39174; case 3ULL: tmp = drm_core_check_feature(dev, 65536); if (tmp == 0) { return (-22); } else { } if (req->value > 1ULL) { return (-22); } else { } file_priv->atomic = (unsigned char )req->value; file_priv->universal_planes = (unsigned char )req->value; goto ldv_39174; default: ; return (-22); } ldv_39174: ; return (0); } } static int drm_setversion(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_set_version *sv ; int if_version ; int retcode ; int _max1 ; int _max2 ; { sv = (struct drm_set_version *)data; retcode = 0; if (sv->drm_di_major != -1) { if ((sv->drm_di_major != 1 || sv->drm_di_minor < 0) || sv->drm_di_minor > 4) { retcode = -22; goto done; } else { } if_version = (sv->drm_di_major << 16) | sv->drm_di_minor; _max1 = if_version; _max2 = dev->if_version; dev->if_version = _max1 > _max2 ? _max1 : _max2; if (sv->drm_di_minor > 0) { retcode = drm_set_busid(dev, file_priv); if (retcode != 0) { goto done; } else { } } else { } } else { } if (sv->drm_dd_major != -1) { if ((sv->drm_dd_major != (dev->driver)->major || sv->drm_dd_minor < 0) || sv->drm_dd_minor > (dev->driver)->minor) { retcode = -22; goto done; } else { } } else { } done: sv->drm_di_major = 1; sv->drm_di_minor = 4; sv->drm_dd_major = (dev->driver)->major; sv->drm_dd_minor = (dev->driver)->minor; return (retcode); } } int drm_noop(struct drm_device *dev , void *data , struct drm_file *file_priv ) { long tmp ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_noop", "\n"); } else { } return (0); } } static char const __kstrtab_drm_noop[9U] = { 'd', 'r', 'm', '_', 'n', 'o', 'o', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_noop ; struct kernel_symbol const __ksymtab_drm_noop = {(unsigned long )(& drm_noop), (char const *)(& __kstrtab_drm_noop)}; static int drm_copy_field(char *buf , size_t *buf_len , char const *value ) { int len ; size_t tmp ; unsigned long tmp___0 ; { tmp = strlen(value); len = (int )tmp; if ((size_t )len > *buf_len) { len = (int )*buf_len; } else { } *buf_len = strlen(value); if (len != 0 && (unsigned long )buf != (unsigned long )((char *)0)) { tmp___0 = copy_to_user((void *)buf, (void const *)value, (unsigned long )len); if (tmp___0 != 0UL) { return (-14); } else { } } else { } return (0); } } static int drm_version(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_version *version ; int err ; { version = (struct drm_version *)data; version->version_major = (dev->driver)->major; version->version_minor = (dev->driver)->minor; version->version_patchlevel = (dev->driver)->patchlevel; err = drm_copy_field(version->name, & version->name_len, (char const *)(dev->driver)->name); if (err == 0) { err = drm_copy_field(version->date, & version->date_len, (char const *)(dev->driver)->date); } else { } if (err == 0) { err = drm_copy_field(version->desc, & version->desc_len, (char const *)(dev->driver)->desc); } else { } return (err); } } static int drm_ioctl_permit(u32 flags , struct drm_file *file_priv ) { bool tmp ; int tmp___0 ; int tmp___1 ; long tmp___2 ; bool tmp___3 ; int tmp___4 ; int tmp___5 ; long tmp___6 ; bool tmp___7 ; int tmp___8 ; int tmp___9 ; long tmp___10 ; bool tmp___11 ; int tmp___12 ; long tmp___13 ; bool tmp___14 ; int tmp___15 ; long tmp___16 ; { if ((flags & 4U) != 0U) { tmp = capable(21); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { tmp___1 = 1; } else { tmp___1 = 0; } } else { tmp___1 = 0; } tmp___2 = ldv__builtin_expect((long )tmp___1, 0L); if (tmp___2 != 0L) { return (-13); } else { } if ((int )flags & 1) { tmp___3 = drm_is_render_client((struct drm_file const *)file_priv); if (tmp___3) { tmp___4 = 0; } else { tmp___4 = 1; } if (tmp___4) { if ((unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { tmp___5 = 1; } else { tmp___5 = 0; } } else { tmp___5 = 0; } } else { tmp___5 = 0; } tmp___6 = ldv__builtin_expect((long )tmp___5, 0L); if (tmp___6 != 0L) { return (-13); } else { } if ((flags & 2U) != 0U && (unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { tmp___7 = drm_is_control_client((struct drm_file const *)file_priv); if (tmp___7) { tmp___8 = 0; } else { tmp___8 = 1; } if (tmp___8) { tmp___9 = 1; } else { tmp___9 = 0; } } else { tmp___9 = 0; } tmp___10 = ldv__builtin_expect((long )tmp___9, 0L); if (tmp___10 != 0L) { return (-13); } else { } if ((flags & 8U) == 0U) { tmp___11 = drm_is_control_client((struct drm_file const *)file_priv); if ((int )tmp___11) { tmp___12 = 1; } else { tmp___12 = 0; } } else { tmp___12 = 0; } tmp___13 = ldv__builtin_expect((long )tmp___12, 0L); if (tmp___13 != 0L) { return (-13); } else { } if ((flags & 32U) == 0U) { tmp___14 = drm_is_render_client((struct drm_file const *)file_priv); if ((int )tmp___14) { tmp___15 = 1; } else { tmp___15 = 0; } } else { tmp___15 = 0; } tmp___16 = ldv__builtin_expect((long )tmp___15, 0L); if (tmp___16 != 0L) { return (-13); } else { } return (0); } } static struct drm_ioctl_desc const drm_ioctls[191U] = { {3225445376U, 48, & drm_version, "DRM_IOCTL_VERSION"}, {3222299649U, 0, & drm_getunique, "DRM_IOCTL_GET_UNIQUE"}, {2147771394U, 0, & drm_getmagic, "DRM_IOCTL_GET_MAGIC"}, {3222299651U, 6, & drm_irq_by_busid, "DRM_IOCTL_IRQ_BUSID"}, {3223872516U, 16, & drm_getmap, "DRM_IOCTL_GET_MAP"}, {3223872517U, 16, & drm_getclient, "DRM_IOCTL_GET_CLIENT"}, {2163762182U, 16, & drm_getstats, "DRM_IOCTL_GET_STATS"}, {3222299655U, 2, & drm_setversion, "DRM_IOCTL_SET_VERSION"}, {1074291720U, 0, & drm_modeset_ctl, "DRM_IOCTL_MODESET_CTL"}, {1074291721U, 48, & drm_gem_close_ioctl, "DRM_IOCTL_GEM_CLOSE"}, {3221775370U, 17, & drm_gem_flink_ioctl, "DRM_IOCTL_GEM_FLINK"}, {3222299659U, 17, & drm_gem_open_ioctl, "DRM_IOCTL_GEM_OPEN"}, {3222299660U, 48, & drm_getcap, "DRM_IOCTL_GET_CAP"}, {1074816013U, 0, & drm_setclientcap, "DRM_IOCTL_SET_CLIENT_CAP"}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {1074816016U, 7, & drm_setunique, "DRM_IOCTL_SET_UNIQUE"}, {1074029585U, 3, & drm_authmagic, "DRM_IOCTL_AUTH_MAGIC"}, {3221513234U, 7, & drm_noop, "DRM_IOCTL_BLOCK"}, {3221513235U, 7, & drm_noop, "DRM_IOCTL_UNBLOCK"}, {1074291732U, 7, & drm_control, "DRM_IOCTL_CONTROL"}, {3223872533U, 7, & drm_legacy_addmap_ioctl, "DRM_IOCTL_ADD_MAP"}, {3223348246U, 7, & drm_legacy_addbufs, "DRM_IOCTL_ADD_BUFS"}, {1075864599U, 7, & drm_legacy_markbufs, "DRM_IOCTL_MARK_BUFS"}, {3222299672U, 1, & drm_legacy_infobufs, "DRM_IOCTL_INFO_BUFS"}, {3222823961U, 1, & drm_legacy_mapbufs, "DRM_IOCTL_MAP_BUFS"}, {1074816026U, 1, & drm_legacy_freebufs, "DRM_IOCTL_FREE_BUFS"}, {1076388891U, 1, & drm_legacy_rmmap_ioctl, "DRM_IOCTL_RM_MAP"}, {1074816028U, 7, & drm_legacy_setsareactx, "DRM_IOCTL_SET_SAREA_CTX"}, {3222299677U, 1, & drm_legacy_getsareactx, "DRM_IOCTL_GET_SAREA_CTX"}, {25630U, 4, & drm_setmaster_ioctl, "DRM_IOCTL_SET_MASTER"}, {25631U, 4, & drm_dropmaster_ioctl, "DRM_IOCTL_DROP_MASTER"}, {3221775392U, 5, & drm_legacy_addctx, "DRM_IOCTL_ADD_CTX"}, {3221775393U, 7, & drm_legacy_rmctx, "DRM_IOCTL_RM_CTX"}, {1074291746U, 7, & drm_noop, "DRM_IOCTL_MOD_CTX"}, {3221775395U, 1, & drm_legacy_getctx, "DRM_IOCTL_GET_CTX"}, {1074291748U, 7, & drm_legacy_switchctx, "DRM_IOCTL_SWITCH_CTX"}, {1074291749U, 7, & drm_legacy_newctx, "DRM_IOCTL_NEW_CTX"}, {3222299686U, 1, & drm_legacy_resctx, "DRM_IOCTL_RES_CTX"}, {3221513255U, 7, & drm_noop, "DRM_IOCTL_ADD_DRAW"}, {3221513256U, 7, & drm_noop, "DRM_IOCTL_RM_DRAW"}, {3225445417U, 1, & drm_legacy_dma_ioctl, "DRM_IOCTL_DMA"}, {1074291754U, 1, & drm_legacy_lock, "DRM_IOCTL_LOCK"}, {1074291755U, 1, & drm_legacy_unlock, "DRM_IOCTL_UNLOCK"}, {1074291756U, 1, & drm_noop, "DRM_IOCTL_FINISH"}, {3222037549U, 49, & drm_prime_handle_to_fd_ioctl, "DRM_IOCTL_PRIME_HANDLE_TO_FD"}, {3222037550U, 49, & drm_prime_fd_to_handle_ioctl, "DRM_IOCTL_PRIME_FD_TO_HANDLE"}, {0U, 0, 0, 0}, {25648U, 7, & drm_agp_acquire_ioctl, "DRM_IOCTL_AGP_ACQUIRE"}, {25649U, 7, & drm_agp_release_ioctl, "DRM_IOCTL_AGP_RELEASE"}, {1074291762U, 7, & drm_agp_enable_ioctl, "DRM_IOCTL_AGP_ENABLE"}, {2151179315U, 1, & drm_agp_info_ioctl, "DRM_IOCTL_AGP_INFO"}, {3223348276U, 7, & drm_agp_alloc_ioctl, "DRM_IOCTL_AGP_ALLOC"}, {1075864629U, 7, & drm_agp_free_ioctl, "DRM_IOCTL_AGP_FREE"}, {1074816054U, 7, & drm_agp_bind_ioctl, "DRM_IOCTL_AGP_BIND"}, {1074816055U, 7, & drm_agp_unbind_ioctl, "DRM_IOCTL_AGP_UNBIND"}, {3222299704U, 7, & drm_legacy_sg_alloc, "DRM_IOCTL_SG_ALLOC"}, {1074816057U, 7, & drm_legacy_sg_free, "DRM_IOCTL_SG_FREE"}, {3222823994U, 16, & drm_wait_vblank, "DRM_IOCTL_WAIT_VBLANK"}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {1075340351U, 7, & drm_noop, "DRM_IOCTL_UPDATE_DRAW"}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {0U, 0, 0, 0}, {3225445536U, 24, & drm_mode_getresources, "DRM_IOCTL_MODE_GETRESOURCES"}, {3228066977U, 24, & drm_mode_getcrtc, "DRM_IOCTL_MODE_GETCRTC"}, {3228066978U, 26, & drm_mode_setcrtc, "DRM_IOCTL_MODE_SETCRTC"}, {3223086243U, 26, & drm_mode_cursor_ioctl, "DRM_IOCTL_MODE_CURSOR"}, {3223348388U, 16, & drm_mode_gamma_get_ioctl, "DRM_IOCTL_MODE_GETGAMMA"}, {3223348389U, 18, & drm_mode_gamma_set_ioctl, "DRM_IOCTL_MODE_SETGAMMA"}, {3222561958U, 24, & drm_mode_getencoder, "DRM_IOCTL_MODE_GETENCODER"}, {3226494119U, 24, & drm_mode_getconnector, "DRM_IOCTL_MODE_GETCONNECTOR"}, {3225969832U, 26, & drm_noop, "DRM_IOCTL_MODE_ATTACHMODE"}, {3225969833U, 26, & drm_noop, "DRM_IOCTL_MODE_DETACHMODE"}, {3225445546U, 24, & drm_mode_getproperty_ioctl, "DRM_IOCTL_MODE_GETPROPERTY"}, {3222299819U, 26, & drm_mode_connector_property_set_ioctl, "DRM_IOCTL_MODE_SETPROPERTY"}, {3222299820U, 24, & drm_mode_getblob_ioctl, "DRM_IOCTL_MODE_GETPROPBLOB"}, {3223086253U, 24, & drm_mode_getfb, "DRM_IOCTL_MODE_GETFB"}, {3223086254U, 24, & drm_mode_addfb, "DRM_IOCTL_MODE_ADDFB"}, {3221513391U, 24, & drm_mode_rmfb, "DRM_IOCTL_MODE_RMFB"}, {3222824112U, 26, & drm_mode_page_flip_ioctl, "DRM_IOCTL_MODE_PAGE_FLIP"}, {3222824113U, 26, & drm_mode_dirtyfb_ioctl, "DRM_IOCTL_MODE_DIRTYFB"}, {3223348402U, 24, & drm_mode_create_dumb_ioctl, "DRM_IOCTL_MODE_CREATE_DUMB"}, {3222299827U, 24, & drm_mode_mmap_dumb_ioctl, "DRM_IOCTL_MODE_MAP_DUMB"}, {3221513396U, 24, & drm_mode_destroy_dumb_ioctl, "DRM_IOCTL_MODE_DESTROY_DUMB"}, {3222299829U, 24, & drm_mode_getplane_res, "DRM_IOCTL_MODE_GETPLANERESOURCES"}, {3223348406U, 24, & drm_mode_getplane, "DRM_IOCTL_MODE_GETPLANE"}, {3224396983U, 26, & drm_mode_setplane, "DRM_IOCTL_MODE_SETPLANE"}, {3228067000U, 24, & drm_mode_addfb2, "DRM_IOCTL_MODE_ADDFB2"}, {3223348409U, 24, & drm_mode_obj_get_properties_ioctl, "DRM_IOCTL_MODE_OBJ_GETPROPERTIES"}, {3222824122U, 26, & drm_mode_obj_set_property_ioctl, "DRM_IOCTL_MODE_OBJ_SETPROPERTY"}, {3223610555U, 26, & drm_mode_cursor2_ioctl, "DRM_IOCTL_MODE_CURSOR2"}, {3224921276U, 26, & drm_mode_atomic_ioctl, "DRM_IOCTL_MODE_ATOMIC"}, {3222299837U, 24, & drm_mode_createblob_ioctl, "DRM_IOCTL_MODE_CREATEPROPBLOB"}, {3221513406U, 24, & drm_mode_destroyblob_ioctl, "DRM_IOCTL_MODE_DESTROYPROPBLOB"}}; long drm_ioctl(struct file *filp , unsigned int cmd , unsigned long arg ) { struct drm_file *file_priv ; struct drm_device *dev ; struct drm_ioctl_desc const *ioctl ; drm_ioctl_t *func ; unsigned int nr ; int retcode ; char stack_kdata[128U] ; char *kdata ; unsigned int usize ; unsigned int asize ; unsigned int drv_size ; int tmp ; unsigned int _max1 ; unsigned int _max2 ; u16 tmp___0 ; struct task_struct *tmp___1 ; pid_t tmp___2 ; long tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; void *tmp___7 ; unsigned long tmp___8 ; unsigned long tmp___9 ; u16 tmp___10 ; struct task_struct *tmp___11 ; pid_t tmp___12 ; long tmp___13 ; long tmp___14 ; { file_priv = (struct drm_file *)filp->private_data; ioctl = (struct drm_ioctl_desc const *)0; nr = cmd & 255U; retcode = -22; kdata = (char *)0; dev = (file_priv->minor)->dev; tmp = drm_device_is_unplugged(dev); if (tmp != 0) { return (-19L); } else { } if (nr > 63U && nr <= 159U) { if (nr - 64U >= (unsigned int )(dev->driver)->num_ioctls) { goto err_i1; } else { } ioctl = (dev->driver)->ioctls + (unsigned long )(nr - 64U); } else { if (nr > 190U) { goto err_i1; } else { } ioctl = (struct drm_ioctl_desc const *)(& drm_ioctls) + (unsigned long )nr; } drv_size = (unsigned int )(ioctl->cmd >> 16) & 16383U; usize = (cmd >> 16) & 16383U; _max1 = usize; _max2 = drv_size; asize = _max1 > _max2 ? _max1 : _max2; cmd = ioctl->cmd; tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { tmp___0 = old_encode_dev(((file_priv->minor)->kdev)->devt); tmp___1 = get_current(); tmp___2 = task_pid_nr(tmp___1); drm_ut_debug_printk("drm_ioctl", "pid=%d, dev=0x%lx, auth=%d, %s\n", tmp___2, (long )tmp___0, (int )file_priv->authenticated, ioctl->name); } else { } func = ioctl->func; tmp___5 = ldv__builtin_expect((unsigned long )func == (unsigned long )((drm_ioctl_t *)0), 0L); if (tmp___5 != 0L) { tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_ioctl", "no function\n"); } else { } retcode = -22; goto err_i1; } else { } retcode = drm_ioctl_permit((u32 )ioctl->flags, file_priv); tmp___6 = ldv__builtin_expect(retcode != 0, 0L); if (tmp___6 != 0L) { goto err_i1; } else { } if ((cmd & 3221225472U) != 0U) { if (asize <= 128U) { kdata = (char *)(& stack_kdata); } else { tmp___7 = kmalloc((size_t )asize, 208U); kdata = (char *)tmp___7; if ((unsigned long )kdata == (unsigned long )((char *)0)) { retcode = -12; goto err_i1; } else { } } if (asize > usize) { memset((void *)kdata + (unsigned long )usize, 0, (size_t )(asize - usize)); } else { } } else { } if ((cmd & 1073741824U) != 0U) { tmp___8 = copy_from_user((void *)kdata, (void const *)arg, (unsigned long )usize); if (tmp___8 != 0UL) { retcode = -14; goto err_i1; } else { } } else if ((int )cmd < 0) { memset((void *)kdata, 0, (size_t )usize); } else { } if (((int )ioctl->flags & 16) != 0) { retcode = (*func)(dev, (void *)kdata, file_priv); } else { mutex_lock_nested(& drm_global_mutex, 0U); retcode = (*func)(dev, (void *)kdata, file_priv); mutex_unlock(& drm_global_mutex); } if ((int )cmd < 0) { tmp___9 = copy_to_user((void *)arg, (void const *)kdata, (unsigned long )usize); if (tmp___9 != 0UL) { retcode = -14; } else { } } else { } err_i1: ; if ((unsigned long )ioctl == (unsigned long )((struct drm_ioctl_desc const *)0)) { tmp___13 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___13 != 0L) { tmp___10 = old_encode_dev(((file_priv->minor)->kdev)->devt); tmp___11 = get_current(); tmp___12 = task_pid_nr(tmp___11); drm_ut_debug_printk("drm_ioctl", "invalid ioctl: pid=%d, dev=0x%lx, auth=%d, cmd=0x%02x, nr=0x%02x\n", tmp___12, (long )tmp___10, (int )file_priv->authenticated, cmd, nr); } else { } } else { } if ((unsigned long )((char *)(& stack_kdata)) != (unsigned long )kdata) { kfree((void const *)kdata); } else { } if (retcode != 0) { tmp___14 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___14 != 0L) { drm_ut_debug_printk("drm_ioctl", "ret = %d\n", retcode); } else { } } else { } return ((long )retcode); } } static char const __kstrtab_drm_ioctl[10U] = { 'd', 'r', 'm', '_', 'i', 'o', 'c', 't', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_ioctl ; struct kernel_symbol const __ksymtab_drm_ioctl = {(unsigned long )(& drm_ioctl), (char const *)(& __kstrtab_drm_ioctl)}; bool drm_ioctl_flags(unsigned int nr , unsigned int *flags ) { { if (nr > 63U && nr <= 159U) { return (0); } else { } if (nr > 190U) { return (0); } else { } *flags = (unsigned int )drm_ioctls[nr].flags; return (1); } } static char const __kstrtab_drm_ioctl_flags[16U] = { 'd', 'r', 'm', '_', 'i', 'o', 'c', 't', 'l', '_', 'f', 'l', 'a', 'g', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_ioctl_flags ; struct kernel_symbol const __ksymtab_drm_ioctl_flags = {(unsigned long )(& drm_ioctl_flags), (char const *)(& __kstrtab_drm_ioctl_flags)}; bool ldv_queue_work_on_103(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_104(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_105(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_106(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_107(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern struct pv_irq_ops pv_irq_ops ; __inline static int variable_test_bit(long nr , unsigned long const volatile *addr ) { int oldbit ; { __asm__ volatile ("bt %2,%1\n\tsbb %0,%0": "=r" (oldbit): "m" (*((unsigned long *)addr)), "Ir" (nr)); return (oldbit); } } __inline static void list_add_tail(struct list_head *new , struct list_head *head ) { { __list_add(new, head->prev, head); return; } } __inline static unsigned long arch_local_save_flags(void) { unsigned long __ret ; unsigned long __edi ; unsigned long __esi ; unsigned long __edx ; unsigned long __ecx ; unsigned long __eax ; long tmp ; { __edi = __edi; __esi = __esi; __edx = __edx; __ecx = __ecx; __eax = __eax; tmp = ldv__builtin_expect((unsigned long )pv_irq_ops.save_fl.func == (unsigned long )((void *)0), 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"./arch/x86/include/asm/paravirt.h"), "i" (831), "i" (12UL)); ldv_4860: ; goto ldv_4860; } else { } __asm__ volatile ("771:\n\tcall *%c2;\n772:\n.pushsection .parainstructions,\"a\"\n .balign 8 \n .quad 771b\n .byte %c1\n .byte 772b-771b\n .short %c3\n.popsection\n": "=a" (__eax): [paravirt_typenum] "i" (43UL), [paravirt_opptr] "i" (& pv_irq_ops.save_fl.func), [paravirt_clobber] "i" (1): "memory", "cc"); __ret = __eax; return (__ret); } } __inline static u64 div_u64_rem(u64 dividend , u32 divisor , u32 *remainder ) { { *remainder = (u32 )(dividend % (u64 )divisor); return (dividend / (u64 )divisor); } } __inline static u64 div_u64(u64 dividend , u32 divisor ) { u32 remainder ; u64 tmp ; { tmp = div_u64_rem(dividend, divisor, & remainder); return (tmp); } } __inline static int arch_irqs_disabled_flags(unsigned long flags ) { { return ((flags & 512UL) == 0UL); } } __inline static int test_ti_thread_flag(struct thread_info *ti , int flag ) { int tmp ; { tmp = variable_test_bit((long )flag, (unsigned long const volatile *)(& ti->flags)); return (tmp); } } __inline static int preempt_count(void) { int pfo_ret__ ; { switch (4UL) { case 1UL: __asm__ ("movb %%gs:%1,%0": "=q" (pfo_ret__): "m" (__preempt_count)); goto ldv_6002; case 2UL: __asm__ ("movw %%gs:%1,%0": "=r" (pfo_ret__): "m" (__preempt_count)); goto ldv_6002; case 4UL: __asm__ ("movl %%gs:%1,%0": "=r" (pfo_ret__): "m" (__preempt_count)); goto ldv_6002; case 8UL: __asm__ ("movq %%gs:%1,%0": "=r" (pfo_ret__): "m" (__preempt_count)); goto ldv_6002; default: __bad_percpu_size(); } ldv_6002: ; return (pfo_ret__ & 2147483647); } } extern void lockdep_rcu_suspicious(char const * , int const , char const * ) ; __inline static int static_key_count(struct static_key *key ) { int tmp ; { tmp = atomic_read((atomic_t const *)(& key->enabled)); return (tmp); } } __inline static bool static_key_false(struct static_key *key ) { int tmp ; long tmp___0 ; { tmp = static_key_count(key); tmp___0 = ldv__builtin_expect(tmp > 0, 0L); if (tmp___0 != 0L) { return (1); } else { } return (0); } } __inline static int queued_spin_is_locked(struct qspinlock *lock ) { int tmp ; { tmp = atomic_read((atomic_t const *)(& lock->val)); return (tmp); } } __inline static int spin_is_locked(spinlock_t *lock ) { int tmp ; { tmp = queued_spin_is_locked(& lock->__annonCompField18.rlock.raw_lock); return (tmp); } } __inline static s64 timeval_to_ns(struct timeval const *tv ) { { return ((long long )tv->tv_sec * 1000000000LL + (long long )((long )tv->tv_usec * 1000L)); } } extern struct timeval ns_to_timeval(s64 const ) ; extern int default_wake_function(wait_queue_t * , unsigned int , int , void * ) ; extern void add_wait_queue(wait_queue_head_t * , wait_queue_t * ) ; extern void remove_wait_queue(wait_queue_head_t * , wait_queue_t * ) ; extern unsigned long volatile jiffies ; extern unsigned long __msecs_to_jiffies(unsigned int const ) ; __inline static unsigned long msecs_to_jiffies(unsigned int const m ) { unsigned long tmp___0 ; { tmp___0 = __msecs_to_jiffies(m); return (tmp___0); } } extern ktime_t ktime_get(void) ; extern ktime_t ktime_get_with_offset(enum tk_offsets ) ; extern ktime_t ktime_mono_to_any(ktime_t , enum tk_offsets ) ; __inline static ktime_t ktime_get_real(void) { ktime_t tmp ; { tmp = ktime_get_with_offset(0); return (tmp); } } __inline static ktime_t ktime_mono_to_real(ktime_t mono ) { ktime_t tmp ; { tmp = ktime_mono_to_any(mono, 0); return (tmp); } } extern bool rcu_is_watching(void) ; extern bool rcu_lockdep_current_cpu_online(void) ; extern struct lockdep_map rcu_sched_lock_map ; __inline static int rcu_read_lock_sched_held(void) { int lockdep_opinion ; int tmp ; bool tmp___0 ; int tmp___1 ; bool tmp___2 ; int tmp___3 ; int tmp___4 ; unsigned long _flags ; int tmp___5 ; int tmp___6 ; { lockdep_opinion = 0; tmp = debug_lockdep_rcu_enabled(); if (tmp == 0) { return (1); } else { } tmp___0 = rcu_is_watching(); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { return (0); } else { } tmp___2 = rcu_lockdep_current_cpu_online(); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } if (tmp___3) { return (0); } else { } if (debug_locks != 0) { lockdep_opinion = lock_is_held(& rcu_sched_lock_map); } else { } if (lockdep_opinion != 0) { tmp___6 = 1; } else { tmp___4 = preempt_count(); if (tmp___4 != 0) { tmp___6 = 1; } else { _flags = arch_local_save_flags(); tmp___5 = arch_irqs_disabled_flags(_flags); if (tmp___5 != 0) { tmp___6 = 1; } else { tmp___6 = 0; } } } return (tmp___6); } } __inline static void rcu_read_lock_sched_notrace(void) { { __preempt_count_add(1); __asm__ volatile ("": : : "memory"); return; } } extern int mod_timer(struct timer_list * , unsigned long ) ; int ldv_mod_timer_123(struct timer_list *ldv_func_arg1 , unsigned long ldv_func_arg2 ) ; extern int del_timer_sync(struct timer_list * ) ; int ldv_del_timer_sync_122(struct timer_list *ldv_func_arg1 ) ; bool ldv_queue_work_on_117(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_119(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_118(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_121(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_120(struct workqueue_struct *ldv_func_arg1 ) ; extern long schedule_timeout(long ) ; __inline static int test_tsk_thread_flag(struct task_struct *tsk , int flag ) { int tmp ; { tmp = test_ti_thread_flag((struct thread_info *)tsk->stack, flag); return (tmp); } } __inline static int signal_pending(struct task_struct *p ) { int tmp ; long tmp___0 ; { tmp = test_tsk_thread_flag(p, 2); tmp___0 = ldv__builtin_expect(tmp != 0, 0L); return ((int )tmp___0); } } __inline static void *kmalloc_array(size_t n , size_t size , gfp_t flags ) { void *tmp ; { if (size != 0UL && 0xffffffffffffffffUL / size < n) { return ((void *)0); } else { } tmp = __kmalloc(n * size, flags); return (tmp); } } __inline static void *kcalloc(size_t n , size_t size , gfp_t flags ) { void *tmp ; { tmp = kmalloc_array(n, size, flags | 32768U); return (tmp); } } __inline static void ldv_stop(void) { { LDV_STOP: ; goto LDV_STOP; } } struct timer_list *ldv_timer_list_2_0 ; int ldv_timer_2_1 ; int ldv_timer_2_2 ; int ldv_timer_2_3 ; struct timer_list *ldv_timer_list_2_1 ; int ldv_timer_2_0 ; struct timer_list *ldv_timer_list_2_3 ; struct timer_list *ldv_timer_list_2_2 ; void choose_timer_2(void) ; int reg_timer_2(struct timer_list *timer , void (*function)(unsigned long ) , unsigned long data ) ; void activate_pending_timer_2(struct timer_list *timer , unsigned long data , int pending_flag ) ; void timer_init_2(void) ; void disable_suitable_timer_2(struct timer_list *timer ) ; void activate_suitable_timer_2(struct timer_list *timer , unsigned long data ) ; void ldv_timer_2(int state , struct timer_list *timer ) ; unsigned int drm_crtc_index(struct drm_crtc *crtc ) ; extern int request_threaded_irq(unsigned int , irqreturn_t (*)(int , void * ) , irqreturn_t (*)(int , void * ) , unsigned long , char const * , void * ) ; __inline static int request_irq(unsigned int irq , irqreturn_t (*handler)(int , void * ) , unsigned long flags , char const *name , void *dev ) { int tmp ; { tmp = request_threaded_irq(irq, handler, (irqreturn_t (*)(int , void * ))0, flags, name, dev); return (tmp); } } extern void free_irq(unsigned int , void * ) ; int drm_irq_install(struct drm_device *dev , int irq ) ; int drm_vblank_init(struct drm_device *dev , int num_crtcs ) ; u32 drm_vblank_count(struct drm_device *dev , int crtc ) ; u32 drm_crtc_vblank_count(struct drm_crtc *crtc ) ; u32 drm_vblank_count_and_time(struct drm_device *dev , int crtc , struct timeval *vblanktime ) ; void drm_send_vblank_event(struct drm_device *dev , int crtc , struct drm_pending_vblank_event *e ) ; void drm_crtc_send_vblank_event(struct drm_crtc *crtc , struct drm_pending_vblank_event *e ) ; bool drm_handle_vblank(struct drm_device *dev , int crtc ) ; bool drm_crtc_handle_vblank(struct drm_crtc *crtc ) ; int drm_vblank_get(struct drm_device *dev , int crtc ) ; int drm_crtc_vblank_get(struct drm_crtc *crtc ) ; void drm_crtc_vblank_put(struct drm_crtc *crtc ) ; void drm_wait_one_vblank(struct drm_device *dev , int crtc ) ; void drm_crtc_wait_one_vblank(struct drm_crtc *crtc ) ; void drm_vblank_off(struct drm_device *dev , int crtc ) ; void drm_vblank_on(struct drm_device *dev , int crtc ) ; void drm_crtc_vblank_off(struct drm_crtc *crtc ) ; void drm_crtc_vblank_reset(struct drm_crtc *drm_crtc ) ; void drm_crtc_vblank_on(struct drm_crtc *crtc ) ; void drm_vblank_cleanup(struct drm_device *dev ) ; int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev , int crtc , int *max_error , struct timeval *vblank_time , unsigned int flags , struct drm_crtc const *refcrtc , struct drm_display_mode const *mode ) ; void drm_calc_timestamping_constants(struct drm_crtc *crtc , struct drm_display_mode const *mode ) ; void drm_vblank_pre_modeset(struct drm_device *dev , int crtc ) ; void drm_vblank_post_modeset(struct drm_device *dev , int crtc ) ; struct tracepoint __tracepoint_drm_vblank_event ; __inline static void trace_drm_vblank_event(int crtc , unsigned int seq ) { struct tracepoint_func *it_func_ptr ; void *it_func ; void *__data ; struct tracepoint_func *________p1 ; struct tracepoint_func *_________p1 ; union __anonunion___u_259 __u ; bool __warned ; int tmp ; int tmp___0 ; bool tmp___1 ; struct tracepoint_func *________p1___0 ; struct tracepoint_func *_________p1___0 ; union __anonunion___u_261 __u___0 ; bool __warned___0 ; int tmp___2 ; int tmp___3 ; { tmp___1 = static_key_false(& __tracepoint_drm_vblank_event.key); if ((int )tmp___1) { rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event.funcs), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); if (tmp != 0 && ! __warned) { tmp___0 = rcu_read_lock_sched_held(); if (tmp___0 == 0) { __warned = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 24, "suspicious rcu_dereference_check() usage"); } else { } } else { } it_func_ptr = ________p1; if ((unsigned long )it_func_ptr != (unsigned long )((struct tracepoint_func *)0)) { ldv_38783: it_func = it_func_ptr->func; __data = it_func_ptr->data; (*((void (*)(void * , int , unsigned int ))it_func))(__data, crtc, seq); it_func_ptr = it_func_ptr + 1; if ((unsigned long )it_func_ptr->func != (unsigned long )((void *)0)) { goto ldv_38783; } else { } } else { } idr_preload_end(); } else { } rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event.funcs), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___2 = debug_lockdep_rcu_enabled(); if (tmp___2 != 0 && ! __warned___0) { tmp___3 = rcu_read_lock_sched_held(); if (tmp___3 == 0) { __warned___0 = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 24, "suspicious rcu_dereference_check() usage"); } else { } } else { } idr_preload_end(); return; } } struct tracepoint __tracepoint_drm_vblank_event_queued ; __inline static void trace_drm_vblank_event_queued(pid_t pid , int crtc , unsigned int seq ) { struct tracepoint_func *it_func_ptr ; void *it_func ; void *__data ; struct tracepoint_func *________p1 ; struct tracepoint_func *_________p1 ; union __anonunion___u_263 __u ; bool __warned ; int tmp ; int tmp___0 ; bool tmp___1 ; struct tracepoint_func *________p1___0 ; struct tracepoint_func *_________p1___0 ; union __anonunion___u_265 __u___0 ; bool __warned___0 ; int tmp___2 ; int tmp___3 ; { tmp___1 = static_key_false(& __tracepoint_drm_vblank_event_queued.key); if ((int )tmp___1) { rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event_queued.funcs), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); if (tmp != 0 && ! __warned) { tmp___0 = rcu_read_lock_sched_held(); if (tmp___0 == 0) { __warned = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 41, "suspicious rcu_dereference_check() usage"); } else { } } else { } it_func_ptr = ________p1; if ((unsigned long )it_func_ptr != (unsigned long )((struct tracepoint_func *)0)) { ldv_38841: it_func = it_func_ptr->func; __data = it_func_ptr->data; (*((void (*)(void * , pid_t , int , unsigned int ))it_func))(__data, pid, crtc, seq); it_func_ptr = it_func_ptr + 1; if ((unsigned long )it_func_ptr->func != (unsigned long )((void *)0)) { goto ldv_38841; } else { } } else { } idr_preload_end(); } else { } rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event_queued.funcs), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___2 = debug_lockdep_rcu_enabled(); if (tmp___2 != 0 && ! __warned___0) { tmp___3 = rcu_read_lock_sched_held(); if (tmp___3 == 0) { __warned___0 = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 41, "suspicious rcu_dereference_check() usage"); } else { } } else { } idr_preload_end(); return; } } struct tracepoint __tracepoint_drm_vblank_event_delivered ; __inline static void trace_drm_vblank_event_delivered(pid_t pid , int crtc , unsigned int seq ) { struct tracepoint_func *it_func_ptr ; void *it_func ; void *__data ; struct tracepoint_func *________p1 ; struct tracepoint_func *_________p1 ; union __anonunion___u_267 __u ; bool __warned ; int tmp ; int tmp___0 ; bool tmp___1 ; struct tracepoint_func *________p1___0 ; struct tracepoint_func *_________p1___0 ; union __anonunion___u_269 __u___0 ; bool __warned___0 ; int tmp___2 ; int tmp___3 ; { tmp___1 = static_key_false(& __tracepoint_drm_vblank_event_delivered.key); if ((int )tmp___1) { rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event_delivered.funcs), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); if (tmp != 0 && ! __warned) { tmp___0 = rcu_read_lock_sched_held(); if (tmp___0 == 0) { __warned = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 58, "suspicious rcu_dereference_check() usage"); } else { } } else { } it_func_ptr = ________p1; if ((unsigned long )it_func_ptr != (unsigned long )((struct tracepoint_func *)0)) { ldv_38902: it_func = it_func_ptr->func; __data = it_func_ptr->data; (*((void (*)(void * , pid_t , int , unsigned int ))it_func))(__data, pid, crtc, seq); it_func_ptr = it_func_ptr + 1; if ((unsigned long )it_func_ptr->func != (unsigned long )((void *)0)) { goto ldv_38902; } else { } } else { } idr_preload_end(); } else { } rcu_read_lock_sched_notrace(); __read_once_size((void const volatile *)(& __tracepoint_drm_vblank_event_delivered.funcs), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___2 = debug_lockdep_rcu_enabled(); if (tmp___2 != 0 && ! __warned___0) { tmp___3 = rcu_read_lock_sched_held(); if (tmp___3 == 0) { __warned___0 = 1; lockdep_rcu_suspicious("/work/ldvuser/mutilin/launch/inst/current/envs/linux-4.2-rc1.tar.xz/linux-4.2-rc1/drivers/gpu/drm/drm_trace.h", 58, "suspicious rcu_dereference_check() usage"); } else { } } else { } idr_preload_end(); return; } } extern int vga_client_register(struct pci_dev * , void * , void (*)(void * , bool ) , unsigned int (*)(void * , bool ) ) ; static bool drm_get_last_vbltimestamp(struct drm_device *dev , int crtc , struct timeval *tvblank , unsigned int flags ) ; static unsigned int drm_timestamp_precision = 20U; unsigned int drm_timestamp_monotonic = 1U; static int drm_vblank_offdelay = 5000; static void store_vblank(struct drm_device *dev , int crtc , unsigned int vblank_count_inc , struct timeval *t_vblank ) { struct drm_vblank_crtc *vblank ; u32 tslot ; int tmp ; long tmp___0 ; { vblank = dev->vblank + (unsigned long )crtc; tmp = queued_spin_is_locked(& dev->vblank_time_lock.__annonCompField18.rlock.raw_lock); tmp___0 = ldv__builtin_expect(tmp == 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c"), "i" (84), "i" (12UL)); ldv_39330: ; goto ldv_39330; } else { } if ((unsigned long )t_vblank != (unsigned long )((struct timeval *)0)) { tslot = (u32 )vblank->count + vblank_count_inc; (dev->vblank + (unsigned long )crtc)->time[tslot & 1U] = *t_vblank; } else { } __asm__ volatile ("": : : "memory"); vblank->count = vblank->count + (unsigned long )vblank_count_inc; __asm__ volatile ("": : : "memory"); return; } } static void drm_update_vblank_count(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; u32 cur_vblank ; u32 diff ; bool rc ; struct timeval t_vblank ; u32 tmp ; long tmp___0 ; long tmp___1 ; struct timeval __constr_expr_0 ; { vblank = dev->vblank + (unsigned long )crtc; ldv_39340: cur_vblank = (*((dev->driver)->get_vblank_counter))(dev, crtc); rc = drm_get_last_vbltimestamp(dev, crtc, & t_vblank, 0U); tmp = (*((dev->driver)->get_vblank_counter))(dev, crtc); if (tmp != cur_vblank) { goto ldv_39340; } else { } diff = cur_vblank - vblank->last; if (vblank->last > cur_vblank) { diff = (dev->max_vblank_count + diff) + 1U; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_update_vblank_count", "last_vblank[%d]=0x%x, cur_vblank=0x%x => diff=0x%x\n", crtc, vblank->last, cur_vblank, diff); } else { } } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_update_vblank_count", "updating vblank count on crtc %d, missed %d\n", crtc, diff); } else { } if (diff == 0U) { return; } else { } if (! rc) { __constr_expr_0.tv_sec = 0L; __constr_expr_0.tv_usec = 0L; t_vblank = __constr_expr_0; } else { } store_vblank(dev, crtc, diff, & t_vblank); return; } } static void vblank_disable_and_save(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; unsigned long irqflags ; u32 vblcount ; s64 diff_ns ; bool vblrc ; struct timeval tvblank ; int count ; raw_spinlock_t *tmp ; bool tmp___0 ; u32 tmp___1 ; s64 tmp___2 ; s64 tmp___3 ; s64 __x ; { vblank = dev->vblank + (unsigned long )crtc; count = 3; tmp = spinlock_check(& dev->vblank_time_lock); irqflags = _raw_spin_lock_irqsave(tmp); if (! vblank->enabled) { tmp___0 = drm_get_last_vbltimestamp(dev, crtc, & tvblank, 0U); if ((int )tmp___0) { drm_update_vblank_count(dev, crtc); spin_unlock_irqrestore(& dev->vblank_time_lock, irqflags); return; } else { } } else { } if ((int )vblank->enabled) { (*((dev->driver)->disable_vblank))(dev, crtc); vblank->enabled = 0; } else { } ldv_39358: vblank->last = (*((dev->driver)->get_vblank_counter))(dev, crtc); vblrc = drm_get_last_vbltimestamp(dev, crtc, & tvblank, 0U); tmp___1 = (*((dev->driver)->get_vblank_counter))(dev, crtc); if (vblank->last != tmp___1) { count = count - 1; if (count != 0) { if ((int )vblrc) { goto ldv_39358; } else { goto ldv_39359; } } else { goto ldv_39359; } } else { } ldv_39359: ; if (count == 0) { vblrc = 0; } else { } vblcount = (u32 )vblank->count; tmp___2 = timeval_to_ns((struct timeval const *)(& tvblank)); tmp___3 = timeval_to_ns((struct timeval const *)(& (dev->vblank + (unsigned long )crtc)->time) + ((unsigned long )vblcount & 1UL)); diff_ns = tmp___2 - tmp___3; if ((int )vblrc) { __x = diff_ns; if ((__x < 0LL ? - __x : __x) > 1000000LL) { store_vblank(dev, crtc, 1U, & tvblank); } else { } } else { } spin_unlock_irqrestore(& dev->vblank_time_lock, irqflags); return; } } static void vblank_disable_fn(unsigned long arg ) { struct drm_vblank_crtc *vblank ; struct drm_device *dev ; unsigned long irqflags ; int crtc ; raw_spinlock_t *tmp ; long tmp___0 ; int tmp___1 ; { vblank = (struct drm_vblank_crtc *)arg; dev = vblank->dev; crtc = vblank->crtc; if (! dev->vblank_disable_allowed) { return; } else { } tmp = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp); tmp___1 = atomic_read((atomic_t const *)(& vblank->refcount)); if (tmp___1 == 0 && (int )vblank->enabled) { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("vblank_disable_fn", "disabling vblank on crtc %d\n", crtc); } else { } vblank_disable_and_save(dev, crtc); } else { } spin_unlock_irqrestore(& dev->vbl_lock, irqflags); return; } } void drm_vblank_cleanup(struct drm_device *dev ) { int crtc ; struct drm_vblank_crtc *vblank ; int __ret_warn_on ; int tmp ; int tmp___0 ; long tmp___1 ; { if (dev->num_crtcs == 0U) { return; } else { } crtc = 0; goto ldv_39381; ldv_39380: vblank = dev->vblank + (unsigned long )crtc; if ((int )vblank->enabled) { tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { tmp___0 = 1; } else { tmp___0 = 0; } } else { tmp___0 = 0; } __ret_warn_on = tmp___0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 306); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); ldv_del_timer_sync_122(& vblank->disable_timer); crtc = crtc + 1; ldv_39381: ; if ((unsigned int )crtc < dev->num_crtcs) { goto ldv_39380; } else { } kfree((void const *)dev->vblank); dev->num_crtcs = 0U; return; } } static char const __kstrtab_drm_vblank_cleanup[19U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_cleanup ; struct kernel_symbol const __ksymtab_drm_vblank_cleanup = {(unsigned long )(& drm_vblank_cleanup), (char const *)(& __kstrtab_drm_vblank_cleanup)}; int drm_vblank_init(struct drm_device *dev , int num_crtcs ) { int i ; int ret ; struct lock_class_key __key ; struct lock_class_key __key___0 ; void *tmp ; struct drm_vblank_crtc *vblank ; struct lock_class_key __key___1 ; { ret = -12; spinlock_check(& dev->vbl_lock); __raw_spin_lock_init(& dev->vbl_lock.__annonCompField18.rlock, "&(&dev->vbl_lock)->rlock", & __key); spinlock_check(& dev->vblank_time_lock); __raw_spin_lock_init(& dev->vblank_time_lock.__annonCompField18.rlock, "&(&dev->vblank_time_lock)->rlock", & __key___0); dev->num_crtcs = (unsigned int )num_crtcs; tmp = kcalloc((size_t )num_crtcs, 288UL, 208U); dev->vblank = (struct drm_vblank_crtc *)tmp; if ((unsigned long )dev->vblank == (unsigned long )((struct drm_vblank_crtc *)0)) { goto err; } else { } i = 0; goto ldv_39402; ldv_39401: vblank = dev->vblank + (unsigned long )i; vblank->dev = dev; vblank->crtc = i; __init_waitqueue_head(& vblank->queue, "&vblank->queue", & __key___1); reg_timer_2(& vblank->disable_timer, & vblank_disable_fn, (unsigned long )vblank); i = i + 1; ldv_39402: ; if (i < num_crtcs) { goto ldv_39401; } else { } printk("\016[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).\n"); if ((unsigned long )(dev->driver)->get_vblank_timestamp != (unsigned long )((int (*)(struct drm_device * , int , int * , struct timeval * , unsigned int ))0)) { printk("\016[drm] Driver supports precise vblank timestamp query.\n"); } else { printk("\016[drm] No driver support for vblank timestamp query.\n"); } if ((int )dev->vblank_disable_immediate && (unsigned long )(dev->driver)->get_vblank_timestamp == (unsigned long )((int (*)(struct drm_device * , int , int * , struct timeval * , unsigned int ))0)) { dev->vblank_disable_immediate = 0; printk("\016[drm] Setting vblank_disable_immediate to false because get_vblank_timestamp == NULL\n"); } else { } dev->vblank_disable_allowed = 0; return (0); err: dev->num_crtcs = 0U; return (ret); } } static char const __kstrtab_drm_vblank_init[16U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_init ; struct kernel_symbol const __ksymtab_drm_vblank_init = {(unsigned long )(& drm_vblank_init), (char const *)(& __kstrtab_drm_vblank_init)}; static void drm_irq_vgaarb_nokms(void *cookie , bool state ) { struct drm_device *dev ; { dev = (struct drm_device *)cookie; if ((unsigned long )(dev->driver)->vgaarb_irq != (unsigned long )((void (*)(struct drm_device * , bool ))0)) { (*((dev->driver)->vgaarb_irq))(dev, (int )state); return; } else { } if (! dev->irq_enabled) { return; } else { } if ((int )state) { if ((unsigned long )(dev->driver)->irq_uninstall != (unsigned long )((void (*)(struct drm_device * ))0)) { (*((dev->driver)->irq_uninstall))(dev); } else { } } else { if ((unsigned long )(dev->driver)->irq_preinstall != (unsigned long )((void (*)(struct drm_device * ))0)) { (*((dev->driver)->irq_preinstall))(dev); } else { } if ((unsigned long )(dev->driver)->irq_postinstall != (unsigned long )((int (*)(struct drm_device * ))0)) { (*((dev->driver)->irq_postinstall))(dev); } else { } } return; } } int drm_irq_install(struct drm_device *dev , int irq ) { int ret ; unsigned long sh_flags ; int tmp ; long tmp___0 ; int tmp___1 ; int tmp___2 ; int tmp___3 ; { sh_flags = 0UL; tmp = drm_core_check_feature(dev, 64); if (tmp == 0) { return (-22); } else { } if (irq == 0) { return (-22); } else { } if ((unsigned long )dev->dev_private == (unsigned long )((void *)0)) { return (-22); } else { } if ((int )dev->irq_enabled) { return (-16); } else { } dev->irq_enabled = 1; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_irq_install", "irq=%d\n", irq); } else { } if ((unsigned long )(dev->driver)->irq_preinstall != (unsigned long )((void (*)(struct drm_device * ))0)) { (*((dev->driver)->irq_preinstall))(dev); } else { } tmp___1 = drm_core_check_feature(dev, 128); if (tmp___1 != 0) { sh_flags = 128UL; } else { } ret = request_irq((unsigned int )irq, (dev->driver)->irq_handler, sh_flags, (char const *)(dev->driver)->name, (void *)dev); if (ret < 0) { dev->irq_enabled = 0; return (ret); } else { } tmp___2 = drm_core_check_feature(dev, 8192); if (tmp___2 == 0) { vga_client_register(dev->pdev, (void *)dev, & drm_irq_vgaarb_nokms, (unsigned int (*)(void * , bool ))0); } else { } if ((unsigned long )(dev->driver)->irq_postinstall != (unsigned long )((int (*)(struct drm_device * ))0)) { ret = (*((dev->driver)->irq_postinstall))(dev); } else { } if (ret < 0) { dev->irq_enabled = 0; tmp___3 = drm_core_check_feature(dev, 8192); if (tmp___3 == 0) { vga_client_register(dev->pdev, (void *)0, (void (*)(void * , bool ))0, (unsigned int (*)(void * , bool ))0); } else { } free_irq((unsigned int )irq, (void *)dev); } else { dev->irq = irq; } return (ret); } } static char const __kstrtab_drm_irq_install[16U] = { 'd', 'r', 'm', '_', 'i', 'r', 'q', '_', 'i', 'n', 's', 't', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_irq_install ; struct kernel_symbol const __ksymtab_drm_irq_install = {(unsigned long )(& drm_irq_install), (char const *)(& __kstrtab_drm_irq_install)}; int drm_irq_uninstall(struct drm_device *dev ) { unsigned long irqflags ; bool irq_enabled ; int i ; int tmp ; raw_spinlock_t *tmp___0 ; struct drm_vblank_crtc *vblank ; int __ret_warn_on ; int tmp___1 ; long tmp___2 ; long tmp___3 ; int tmp___4 ; { tmp = drm_core_check_feature(dev, 64); if (tmp == 0) { return (-22); } else { } irq_enabled = dev->irq_enabled; dev->irq_enabled = 0; if (dev->num_crtcs != 0U) { tmp___0 = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp___0); i = 0; goto ldv_39446; ldv_39445: vblank = dev->vblank + (unsigned long )i; if (! vblank->enabled) { goto ldv_39442; } else { } tmp___1 = drm_core_check_feature(dev, 8192); __ret_warn_on = tmp___1 != 0; tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 514); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); vblank_disable_and_save(dev, i); __wake_up(& vblank->queue, 3U, 1, (void *)0); ldv_39442: i = i + 1; ldv_39446: ; if ((unsigned int )i < dev->num_crtcs) { goto ldv_39445; } else { } spin_unlock_irqrestore(& dev->vbl_lock, irqflags); } else { } if (! irq_enabled) { return (-22); } else { } tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_irq_uninstall", "irq=%d\n", dev->irq); } else { } tmp___4 = drm_core_check_feature(dev, 8192); if (tmp___4 == 0) { vga_client_register(dev->pdev, (void *)0, (void (*)(void * , bool ))0, (unsigned int (*)(void * , bool ))0); } else { } if ((unsigned long )(dev->driver)->irq_uninstall != (unsigned long )((void (*)(struct drm_device * ))0)) { (*((dev->driver)->irq_uninstall))(dev); } else { } free_irq((unsigned int )dev->irq, (void *)dev); return (0); } } static char const __kstrtab_drm_irq_uninstall[18U] = { 'd', 'r', 'm', '_', 'i', 'r', 'q', '_', 'u', 'n', 'i', 'n', 's', 't', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_irq_uninstall ; struct kernel_symbol const __ksymtab_drm_irq_uninstall = {(unsigned long )(& drm_irq_uninstall), (char const *)(& __kstrtab_drm_irq_uninstall)}; int drm_control(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_control *ctl ; int ret ; int irq ; int tmp ; int tmp___0 ; int __ret_warn_on ; long tmp___1 ; long tmp___2 ; { ctl = (struct drm_control *)data; ret = 0; tmp = drm_core_check_feature(dev, 64); if (tmp == 0) { return (0); } else { } tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 != 0) { return (0); } else { } __ret_warn_on = (unsigned long )dev->pdev == (unsigned long )((struct pci_dev *)0); tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 565); } else { } tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { return (-22); } else { } switch ((unsigned int )ctl->func) { case 2U: irq = (int )(dev->pdev)->irq; if (dev->if_version <= 65537 && ctl->irq != irq) { return (-22); } else { } mutex_lock_nested(& dev->struct_mutex, 0U); ret = drm_irq_install(dev, irq); mutex_unlock(& dev->struct_mutex); return (ret); case 3U: mutex_lock_nested(& dev->struct_mutex, 0U); ret = drm_irq_uninstall(dev); mutex_unlock(& dev->struct_mutex); return (ret); default: ; return (-22); } } } void drm_calc_timestamping_constants(struct drm_crtc *crtc , struct drm_display_mode const *mode ) { int linedur_ns ; int pixeldur_ns ; int framedur_ns ; int dotclock ; int frame_size ; u64 tmp ; u64 tmp___0 ; long tmp___1 ; long tmp___2 ; { linedur_ns = 0; pixeldur_ns = 0; framedur_ns = 0; dotclock = mode->crtc_clock; if (dotclock > 0) { frame_size = (int )mode->crtc_htotal * (int )mode->crtc_vtotal; pixeldur_ns = 1000000 / dotclock; tmp = div_u64((unsigned long long )mode->crtc_htotal * 1000000ULL, (u32 )dotclock); linedur_ns = (int )tmp; tmp___0 = div_u64((unsigned long long )frame_size * 1000000ULL, (u32 )dotclock); framedur_ns = (int )tmp___0; if (((unsigned int )mode->flags & 16U) != 0U) { framedur_ns = framedur_ns / 2; } else { } } else { drm_err("crtc %d: Can\'t calculate constants, dotclock = 0!\n", crtc->base.id); } crtc->pixeldur_ns = pixeldur_ns; crtc->linedur_ns = linedur_ns; crtc->framedur_ns = framedur_ns; tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_calc_timestamping_constants", "crtc %d: hwmode: htotal %d, vtotal %d, vdisplay %d\n", crtc->base.id, mode->crtc_htotal, mode->crtc_vtotal, mode->crtc_vdisplay); } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_calc_timestamping_constants", "crtc %d: clock %d kHz framedur %d linedur %d, pixeldur %d\n", crtc->base.id, dotclock, framedur_ns, linedur_ns, pixeldur_ns); } else { } return; } } static char const __kstrtab_drm_calc_timestamping_constants[32U] = { 'd', 'r', 'm', '_', 'c', 'a', 'l', 'c', '_', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'i', 'n', 'g', '_', 'c', 'o', 'n', 's', 't', 'a', 'n', 't', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_calc_timestamping_constants ; struct kernel_symbol const __ksymtab_drm_calc_timestamping_constants = {(unsigned long )(& drm_calc_timestamping_constants), (char const *)(& __kstrtab_drm_calc_timestamping_constants)}; int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev , int crtc , int *max_error , struct timeval *vblank_time , unsigned int flags , struct drm_crtc const *refcrtc , struct drm_display_mode const *mode ) { struct timeval tv_etime ; ktime_t stime ; ktime_t etime ; int vbl_status ; int vpos ; int hpos ; int i ; int framedur_ns ; int linedur_ns ; int pixeldur_ns ; int delta_ns ; int duration_ns ; bool invbl ; long tmp ; long tmp___0 ; long tmp___1 ; ktime_t __constr_expr_0 ; ktime_t __constr_expr_1 ; long tmp___2 ; { if (crtc < 0 || (unsigned int )crtc >= dev->num_crtcs) { drm_err("Invalid crtc %d\n", crtc); return (-22); } else { } if ((unsigned long )(dev->driver)->get_scanout_position == (unsigned long )((int (*)(struct drm_device * , int , unsigned int , int * , int * , ktime_t * , ktime_t * ))0)) { drm_err("Called from driver w/o get_scanout_position()!?\n"); return (-5); } else { } framedur_ns = refcrtc->framedur_ns; linedur_ns = refcrtc->linedur_ns; pixeldur_ns = refcrtc->pixeldur_ns; if (framedur_ns == 0) { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_calc_vbltimestamp_from_scanoutpos", "crtc %d: Noop due to uninitialized mode.\n", crtc); } else { } return (-11); } else { } i = 0; goto ldv_39512; ldv_39511: vbl_status = (*((dev->driver)->get_scanout_position))(dev, crtc, flags, & vpos, & hpos, & stime, & etime); if ((vbl_status & 1) == 0) { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_calc_vbltimestamp_from_scanoutpos", "crtc %d : scanoutpos query failed [%d].\n", crtc, vbl_status); } else { } return (-5); } else { } duration_ns = (int )((unsigned int )etime.tv64 - (unsigned int )stime.tv64); if (*max_error >= duration_ns) { goto ldv_39510; } else { } i = i + 1; ldv_39512: ; if (i <= 2) { goto ldv_39511; } else { } ldv_39510: ; if (i == 3) { tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_calc_vbltimestamp_from_scanoutpos", "crtc %d: Noisy timestamp %d us > %d us [%d reps].\n", crtc, duration_ns / 1000, *max_error / 1000, i); } else { } } else { } *max_error = duration_ns; invbl = (vbl_status & 2) != 0; delta_ns = vpos * linedur_ns + hpos * pixeldur_ns; if (drm_timestamp_monotonic == 0U) { etime = ktime_mono_to_real(etime); } else { } tv_etime = ns_to_timeval(etime.tv64); if (delta_ns < 0) { __constr_expr_0.tv64 = etime.tv64 + (s64 )(- delta_ns); etime = __constr_expr_0; } else { __constr_expr_1.tv64 = etime.tv64 - (s64 )delta_ns; etime = __constr_expr_1; } *vblank_time = ns_to_timeval(etime.tv64); tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_calc_vbltimestamp_from_scanoutpos", "crtc %d : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n", crtc, vbl_status, hpos, vpos, tv_etime.tv_sec, tv_etime.tv_usec, vblank_time->tv_sec, vblank_time->tv_usec, duration_ns / 1000, i); } else { } vbl_status = 1; if ((int )invbl) { vbl_status = vbl_status | 2; } else { } return (vbl_status); } } static char const __kstrtab_drm_calc_vbltimestamp_from_scanoutpos[38U] = { 'd', 'r', 'm', '_', 'c', 'a', 'l', 'c', '_', 'v', 'b', 'l', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '_', 'f', 'r', 'o', 'm', '_', 's', 'c', 'a', 'n', 'o', 'u', 't', 'p', 'o', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_calc_vbltimestamp_from_scanoutpos ; struct kernel_symbol const __ksymtab_drm_calc_vbltimestamp_from_scanoutpos = {(unsigned long )(& drm_calc_vbltimestamp_from_scanoutpos), (char const *)(& __kstrtab_drm_calc_vbltimestamp_from_scanoutpos)}; static struct timeval get_drm_timestamp(void) { ktime_t now ; ktime_t tmp ; ktime_t tmp___0 ; struct timeval tmp___1 ; { if (drm_timestamp_monotonic != 0U) { tmp = ktime_get(); now = tmp; } else { tmp___0 = ktime_get_real(); now = tmp___0; } tmp___1 = ns_to_timeval(now.tv64); return (tmp___1); } } static bool drm_get_last_vbltimestamp(struct drm_device *dev , int crtc , struct timeval *tvblank , unsigned int flags ) { int ret ; int max_error ; { max_error = (int )drm_timestamp_precision * 1000; if ((unsigned long )(dev->driver)->get_vblank_timestamp != (unsigned long )((int (*)(struct drm_device * , int , int * , struct timeval * , unsigned int ))0) && max_error > 0) { ret = (*((dev->driver)->get_vblank_timestamp))(dev, crtc, & max_error, tvblank, flags); if (ret > 0) { return (1); } else { } } else { } *tvblank = get_drm_timestamp(); return (0); } } u32 drm_vblank_count(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; int __ret_warn_on ; long tmp ; long tmp___0 ; { vblank = dev->vblank + (unsigned long )crtc; __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 878); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (0U); } else { } return ((u32 )vblank->count); } } static char const __kstrtab_drm_vblank_count[17U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'c', 'o', 'u', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_count ; struct kernel_symbol const __ksymtab_drm_vblank_count = {(unsigned long )(& drm_vblank_count), (char const *)(& __kstrtab_drm_vblank_count)}; u32 drm_crtc_vblank_count(struct drm_crtc *crtc ) { unsigned int tmp ; u32 tmp___0 ; { tmp = drm_crtc_index(crtc); tmp___0 = drm_vblank_count(crtc->dev, (int )tmp); return (tmp___0); } } static char const __kstrtab_drm_crtc_vblank_count[22U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'c', 'o', 'u', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_count ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_count = {(unsigned long )(& drm_crtc_vblank_count), (char const *)(& __kstrtab_drm_crtc_vblank_count)}; u32 drm_vblank_count_and_time(struct drm_device *dev , int crtc , struct timeval *vblanktime ) { struct drm_vblank_crtc *vblank ; u32 cur_vblank ; int __ret_warn_on ; long tmp ; long tmp___0 ; { vblank = dev->vblank + (unsigned long )crtc; __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 922); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (0U); } else { } ldv_39574: cur_vblank = (u32 )vblank->count; __asm__ volatile ("": : : "memory"); *vblanktime = (dev->vblank + (unsigned long )crtc)->time[cur_vblank & 1U]; __asm__ volatile ("": : : "memory"); if ((unsigned long )cur_vblank != vblank->count) { goto ldv_39574; } else { } return (cur_vblank); } } static char const __kstrtab_drm_vblank_count_and_time[26U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'c', 'o', 'u', 'n', 't', '_', 'a', 'n', 'd', '_', 't', 'i', 'm', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_count_and_time ; struct kernel_symbol const __ksymtab_drm_vblank_count_and_time = {(unsigned long )(& drm_vblank_count_and_time), (char const *)(& __kstrtab_drm_vblank_count_and_time)}; static void send_vblank_event(struct drm_device *dev , struct drm_pending_vblank_event *e , unsigned long seq , struct timeval *now ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = spin_is_locked(& dev->event_lock); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 945); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); e->event.sequence = (__u32 )seq; e->event.tv_sec = (__u32 )now->tv_sec; e->event.tv_usec = (__u32 )now->tv_usec; list_add_tail(& e->base.link, & (e->base.file_priv)->event_list); __wake_up(& (e->base.file_priv)->event_wait, 1U, 1, (void *)0); trace_drm_vblank_event_delivered(e->base.pid, e->pipe, e->event.sequence); return; } } void drm_send_vblank_event(struct drm_device *dev , int crtc , struct drm_pending_vblank_event *e ) { struct timeval now ; unsigned int seq ; { if (crtc >= 0) { seq = drm_vblank_count_and_time(dev, crtc, & now); } else { seq = 0U; now = get_drm_timestamp(); } e->pipe = crtc; send_vblank_event(dev, e, (unsigned long )seq, & now); return; } } static char const __kstrtab_drm_send_vblank_event[22U] = { 'd', 'r', 'm', '_', 's', 'e', 'n', 'd', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'e', 'v', 'e', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_send_vblank_event ; struct kernel_symbol const __ksymtab_drm_send_vblank_event = {(unsigned long )(& drm_send_vblank_event), (char const *)(& __kstrtab_drm_send_vblank_event)}; void drm_crtc_send_vblank_event(struct drm_crtc *crtc , struct drm_pending_vblank_event *e ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); drm_send_vblank_event(crtc->dev, (int )tmp, e); return; } } static char const __kstrtab_drm_crtc_send_vblank_event[27U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 's', 'e', 'n', 'd', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'e', 'v', 'e', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_send_vblank_event ; struct kernel_symbol const __ksymtab_drm_crtc_send_vblank_event = {(unsigned long )(& drm_crtc_send_vblank_event), (char const *)(& __kstrtab_drm_crtc_send_vblank_event)}; static int drm_vblank_enable(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; int ret ; int tmp ; long tmp___0 ; long tmp___1 ; { vblank = dev->vblank + (unsigned long )crtc; ret = 0; tmp = queued_spin_is_locked(& dev->vbl_lock.__annonCompField18.rlock.raw_lock); tmp___0 = ldv__builtin_expect(tmp == 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c"), "i" (1013), "i" (12UL)); ldv_39627: ; goto ldv_39627; } else { } spin_lock(& dev->vblank_time_lock); if (! vblank->enabled) { ret = (*((dev->driver)->enable_vblank))(dev, crtc); tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_vblank_enable", "enabling vblank on crtc %d, ret: %d\n", crtc, ret); } else { } if (ret != 0) { atomic_dec(& vblank->refcount); } else { vblank->enabled = 1; drm_update_vblank_count(dev, crtc); } } else { } spin_unlock(& dev->vblank_time_lock); return (ret); } } int drm_vblank_get(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; unsigned long irqflags ; int ret ; int __ret_warn_on ; long tmp ; long tmp___0 ; raw_spinlock_t *tmp___1 ; int tmp___2 ; { vblank = dev->vblank + (unsigned long )crtc; ret = 0; if (dev->num_crtcs == 0U) { return (-22); } else { } __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1062); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (-22); } else { } tmp___1 = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp___1); tmp___2 = atomic_add_return(1, & vblank->refcount); if (tmp___2 == 1) { ret = drm_vblank_enable(dev, crtc); } else if (! vblank->enabled) { atomic_dec(& vblank->refcount); ret = -22; } else { } spin_unlock_irqrestore(& dev->vbl_lock, irqflags); return (ret); } } static char const __kstrtab_drm_vblank_get[15U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'g', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_get ; struct kernel_symbol const __ksymtab_drm_vblank_get = {(unsigned long )(& drm_vblank_get), (char const *)(& __kstrtab_drm_vblank_get)}; int drm_crtc_vblank_get(struct drm_crtc *crtc ) { unsigned int tmp ; int tmp___0 ; { tmp = drm_crtc_index(crtc); tmp___0 = drm_vblank_get(crtc->dev, (int )tmp); return (tmp___0); } } static char const __kstrtab_drm_crtc_vblank_get[20U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'g', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_get ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_get = {(unsigned long )(& drm_crtc_vblank_get), (char const *)(& __kstrtab_drm_crtc_vblank_get)}; void drm_vblank_put(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; int __ret_warn_on ; int tmp ; long tmp___0 ; long tmp___1 ; int __ret_warn_on___0 ; long tmp___2 ; long tmp___3 ; int tmp___4 ; { vblank = dev->vblank + (unsigned long )crtc; tmp = atomic_read((atomic_t const *)(& vblank->refcount)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1113); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { return; } else { } __ret_warn_on___0 = (unsigned int )crtc >= dev->num_crtcs; tmp___2 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1116); } else { } tmp___3 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___3 != 0L) { return; } else { } tmp___4 = atomic_dec_and_test(& vblank->refcount); if (tmp___4 != 0) { if (drm_vblank_offdelay == 0) { return; } else if ((int )dev->vblank_disable_immediate || drm_vblank_offdelay < 0) { vblank_disable_fn((unsigned long )vblank); } else { ldv_mod_timer_123(& vblank->disable_timer, (unsigned long )((drm_vblank_offdelay * 250) / 1000) + (unsigned long )jiffies); } } else { } return; } } static char const __kstrtab_drm_vblank_put[15U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'p', 'u', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_put ; struct kernel_symbol const __ksymtab_drm_vblank_put = {(unsigned long )(& drm_vblank_put), (char const *)(& __kstrtab_drm_vblank_put)}; void drm_crtc_vblank_put(struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); drm_vblank_put(crtc->dev, (int )tmp); return; } } static char const __kstrtab_drm_crtc_vblank_put[20U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'p', 'u', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_put ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_put = {(unsigned long )(& drm_crtc_vblank_put), (char const *)(& __kstrtab_drm_crtc_vblank_put)}; void drm_wait_one_vblank(struct drm_device *dev , int crtc ) { int ret ; u32 last ; int __ret_warn_on ; long tmp ; long tmp___0 ; long __ret ; unsigned long tmp___1 ; wait_queue_t __wait ; long __ret___0 ; unsigned long tmp___2 ; long __int ; long tmp___3 ; bool __cond ; u32 tmp___4 ; bool __cond___0 ; u32 tmp___5 ; int __ret_warn_on___0 ; long tmp___6 ; { ret = drm_vblank_get(dev, crtc); __ret_warn_on = ret != 0; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1162, "vblank not available on crtc %i, ret=%i\n", crtc, ret); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } last = drm_vblank_count(dev, crtc); tmp___1 = msecs_to_jiffies(100U); __ret = (long )tmp___1; __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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1169, 0); tmp___5 = drm_vblank_count(dev, crtc); __cond___0 = tmp___5 != last; if ((int )__cond___0 && __ret == 0L) { __ret = 1L; } else { } if (((int )__cond___0 || __ret == 0L) == 0) { tmp___2 = msecs_to_jiffies(100U); __ret___0 = (long )tmp___2; INIT_LIST_HEAD(& __wait.task_list); __wait.flags = 0U; ldv_39704: tmp___3 = prepare_to_wait_event(& (dev->vblank + (unsigned long )crtc)->queue, & __wait, 2); __int = tmp___3; tmp___4 = drm_vblank_count(dev, crtc); __cond = tmp___4 != last; if ((int )__cond && __ret___0 == 0L) { __ret___0 = 1L; } else { } if (((int )__cond || __ret___0 == 0L) != 0) { goto ldv_39703; } else { } __ret___0 = schedule_timeout(__ret___0); goto ldv_39704; ldv_39703: finish_wait(& (dev->vblank + (unsigned long )crtc)->queue, & __wait); __ret = __ret___0; } else { } ret = (int )__ret; __ret_warn_on___0 = ret == 0; tmp___6 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___6 != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1171, "vblank wait timed out on crtc %i\n", crtc); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); drm_vblank_put(dev, crtc); return; } } static char const __kstrtab_drm_wait_one_vblank[20U] = { 'd', 'r', 'm', '_', 'w', 'a', 'i', 't', '_', 'o', 'n', 'e', '_', 'v', 'b', 'l', 'a', 'n', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_wait_one_vblank ; struct kernel_symbol const __ksymtab_drm_wait_one_vblank = {(unsigned long )(& drm_wait_one_vblank), (char const *)(& __kstrtab_drm_wait_one_vblank)}; void drm_crtc_wait_one_vblank(struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); drm_wait_one_vblank(crtc->dev, (int )tmp); return; } } static char const __kstrtab_drm_crtc_wait_one_vblank[25U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'w', 'a', 'i', 't', '_', 'o', 'n', 'e', '_', 'v', 'b', 'l', 'a', 'n', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_wait_one_vblank ; struct kernel_symbol const __ksymtab_drm_crtc_wait_one_vblank = {(unsigned long )(& drm_crtc_wait_one_vblank), (char const *)(& __kstrtab_drm_crtc_wait_one_vblank)}; void drm_vblank_off(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; struct drm_pending_vblank_event *e ; struct drm_pending_vblank_event *t ; struct timeval now ; unsigned long irqflags ; unsigned int seq ; int __ret_warn_on ; long tmp ; long tmp___0 ; raw_spinlock_t *tmp___1 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; long tmp___2 ; struct list_head const *__mptr___1 ; { vblank = dev->vblank + (unsigned long )crtc; __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1213); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } tmp___1 = spinlock_check(& dev->event_lock); irqflags = _raw_spin_lock_irqsave(tmp___1); spin_lock(& dev->vbl_lock); vblank_disable_and_save(dev, crtc); __wake_up(& vblank->queue, 3U, 1, (void *)0); if (vblank->inmodeset == 0U) { atomic_inc(& vblank->refcount); vblank->inmodeset = 1U; } else { } spin_unlock(& dev->vbl_lock); seq = drm_vblank_count_and_time(dev, crtc, & now); __mptr = (struct list_head const *)dev->vblank_event_list.next; e = (struct drm_pending_vblank_event *)__mptr + 0xfffffffffffffff8UL; __mptr___0 = (struct list_head const *)e->base.link.next; t = (struct drm_pending_vblank_event *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_39751; ldv_39750: ; if (e->pipe != crtc) { goto ldv_39748; } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_vblank_off", "Sending premature vblank event on disable: \t\t\t wanted %d, current %d\n", e->event.sequence, seq); } else { } list_del(& e->base.link); drm_vblank_put(dev, e->pipe); send_vblank_event(dev, e, (unsigned long )seq, & now); ldv_39748: e = t; __mptr___1 = (struct list_head const *)t->base.link.next; t = (struct drm_pending_vblank_event *)__mptr___1 + 0xfffffffffffffff8UL; ldv_39751: ; if ((unsigned long )(& e->base.link) != (unsigned long )(& dev->vblank_event_list)) { goto ldv_39750; } else { } spin_unlock_irqrestore(& dev->event_lock, irqflags); return; } } static char const __kstrtab_drm_vblank_off[15U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'o', 'f', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_off ; struct kernel_symbol const __ksymtab_drm_vblank_off = {(unsigned long )(& drm_vblank_off), (char const *)(& __kstrtab_drm_vblank_off)}; void drm_crtc_vblank_off(struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); drm_vblank_off(crtc->dev, (int )tmp); return; } } static char const __kstrtab_drm_crtc_vblank_off[20U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'o', 'f', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_off ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_off = {(unsigned long )(& drm_crtc_vblank_off), (char const *)(& __kstrtab_drm_crtc_vblank_off)}; void drm_crtc_vblank_reset(struct drm_crtc *drm_crtc ) { struct drm_device *dev ; unsigned long irqflags ; int crtc ; unsigned int tmp ; struct drm_vblank_crtc *vblank ; raw_spinlock_t *tmp___0 ; int __ret_warn_on ; int tmp___1 ; long tmp___2 ; { dev = drm_crtc->dev; tmp = drm_crtc_index(drm_crtc); crtc = (int )tmp; vblank = dev->vblank + (unsigned long )crtc; tmp___0 = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp___0); if (vblank->inmodeset == 0U) { atomic_inc(& vblank->refcount); vblank->inmodeset = 1U; } else { } spin_unlock_irqrestore(& dev->vbl_lock, irqflags); tmp___1 = list_empty((struct list_head const *)(& dev->vblank_event_list)); __ret_warn_on = tmp___1 == 0; tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1296); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } static char const __kstrtab_drm_crtc_vblank_reset[22U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'r', 'e', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_reset ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_reset = {(unsigned long )(& drm_crtc_vblank_reset), (char const *)(& __kstrtab_drm_crtc_vblank_reset)}; void drm_vblank_on(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; unsigned long irqflags ; int __ret_warn_on ; long tmp ; long tmp___0 ; raw_spinlock_t *tmp___1 ; u32 tmp___2 ; int __ret_warn_on___0 ; int tmp___3 ; long tmp___4 ; int tmp___5 ; { vblank = dev->vblank + (unsigned long )crtc; __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1317); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } tmp___1 = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp___1); if (vblank->inmodeset != 0U) { atomic_dec(& vblank->refcount); vblank->inmodeset = 0U; } else { } tmp___2 = (*((dev->driver)->get_vblank_counter))(dev, crtc); vblank->last = (tmp___2 - 1U) & dev->max_vblank_count; tmp___5 = atomic_read((atomic_t const *)(& vblank->refcount)); if (tmp___5 != 0 || (! dev->vblank_disable_immediate && drm_vblank_offdelay == 0)) { tmp___3 = drm_vblank_enable(dev, crtc); __ret_warn_on___0 = tmp___3 != 0; tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1343); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); } else { } spin_unlock_irqrestore(& dev->vbl_lock, irqflags); return; } } static char const __kstrtab_drm_vblank_on[14U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'o', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_on ; struct kernel_symbol const __ksymtab_drm_vblank_on = {(unsigned long )(& drm_vblank_on), (char const *)(& __kstrtab_drm_vblank_on)}; void drm_crtc_vblank_on(struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); drm_vblank_on(crtc->dev, (int )tmp); return; } } static char const __kstrtab_drm_crtc_vblank_on[19U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'o', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_vblank_on ; struct kernel_symbol const __ksymtab_drm_crtc_vblank_on = {(unsigned long )(& drm_crtc_vblank_on), (char const *)(& __kstrtab_drm_crtc_vblank_on)}; void drm_vblank_pre_modeset(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; int __ret_warn_on ; long tmp ; long tmp___0 ; int tmp___1 ; { vblank = dev->vblank + (unsigned long )crtc; if (dev->num_crtcs == 0U) { return; } else { } __ret_warn_on = (unsigned int )crtc >= dev->num_crtcs; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1396); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } if (vblank->inmodeset == 0U) { vblank->inmodeset = 1U; tmp___1 = drm_vblank_get(dev, crtc); if (tmp___1 == 0) { vblank->inmodeset = vblank->inmodeset | 2U; } else { } } else { } return; } } static char const __kstrtab_drm_vblank_pre_modeset[23U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'p', 'r', 'e', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_pre_modeset ; struct kernel_symbol const __ksymtab_drm_vblank_pre_modeset = {(unsigned long )(& drm_vblank_pre_modeset), (char const *)(& __kstrtab_drm_vblank_pre_modeset)}; void drm_vblank_post_modeset(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; unsigned long irqflags ; raw_spinlock_t *tmp ; { vblank = dev->vblank + (unsigned long )crtc; if (dev->num_crtcs == 0U) { return; } else { } if (vblank->inmodeset != 0U) { tmp = spinlock_check(& dev->vbl_lock); irqflags = _raw_spin_lock_irqsave(tmp); dev->vblank_disable_allowed = 1; spin_unlock_irqrestore(& dev->vbl_lock, irqflags); if ((vblank->inmodeset & 2U) != 0U) { drm_vblank_put(dev, crtc); } else { } vblank->inmodeset = 0U; } else { } return; } } static char const __kstrtab_drm_vblank_post_modeset[24U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'p', 'o', 's', 't', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vblank_post_modeset ; struct kernel_symbol const __ksymtab_drm_vblank_post_modeset = {(unsigned long )(& drm_vblank_post_modeset), (char const *)(& __kstrtab_drm_vblank_post_modeset)}; int drm_modeset_ctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_modeset_ctl *modeset ; unsigned int crtc ; int tmp ; { modeset = (struct drm_modeset_ctl *)data; if (dev->num_crtcs == 0U) { return (0); } else { } tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (0); } else { } crtc = modeset->crtc; if (dev->num_crtcs <= crtc) { return (-22); } else { } switch (modeset->cmd) { case 1U: drm_vblank_pre_modeset(dev, (int )crtc); goto ldv_39861; case 2U: drm_vblank_post_modeset(dev, (int )crtc); goto ldv_39861; default: ; return (-22); } ldv_39861: ; return (0); } } static int drm_queue_vblank_event(struct drm_device *dev , int pipe , union drm_wait_vblank *vblwait , struct drm_file *file_priv ) { struct drm_vblank_crtc *vblank ; struct drm_pending_vblank_event *e ; struct timeval now ; unsigned long flags ; unsigned int seq ; int ret ; void *tmp ; struct task_struct *tmp___0 ; raw_spinlock_t *tmp___1 ; long tmp___2 ; struct task_struct *tmp___3 ; { vblank = dev->vblank + (unsigned long )pipe; tmp = kzalloc(88UL, 208U); e = (struct drm_pending_vblank_event *)tmp; if ((unsigned long )e == (unsigned long )((struct drm_pending_vblank_event *)0)) { ret = -12; goto err_put; } else { } e->pipe = pipe; tmp___0 = get_current(); e->base.pid = tmp___0->pid; e->event.base.type = 1U; e->event.base.length = 32U; e->event.user_data = (__u64 )vblwait->request.signal; e->base.event = & e->event.base; e->base.file_priv = file_priv; e->base.destroy = (void (*)(struct drm_pending_event * ))(& kfree); tmp___1 = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp___1); if (! vblank->enabled) { ret = -22; goto err_unlock; } else { } if ((unsigned int )file_priv->event_space <= 31U) { ret = -16; goto err_unlock; } else { } file_priv->event_space = (int )((unsigned int )file_priv->event_space - 32U); seq = drm_vblank_count_and_time(dev, pipe, & now); if (((unsigned int )vblwait->request.type & 268435456U) != 0U && seq - vblwait->request.sequence <= 8388608U) { vblwait->request.sequence = seq + 1U; vblwait->reply.sequence = vblwait->request.sequence; } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_queue_vblank_event", "event on vblank count %d, current %d, crtc %d\n", vblwait->request.sequence, seq, pipe); } else { } tmp___3 = get_current(); trace_drm_vblank_event_queued(tmp___3->pid, pipe, vblwait->request.sequence); e->event.sequence = vblwait->request.sequence; if (seq - vblwait->request.sequence <= 8388608U) { drm_vblank_put(dev, pipe); send_vblank_event(dev, e, (unsigned long )seq, & now); vblwait->reply.sequence = seq; } else { list_add_tail(& e->base.link, & dev->vblank_event_list); vblwait->reply.sequence = vblwait->request.sequence; } spin_unlock_irqrestore(& dev->event_lock, flags); return (0); err_unlock: spin_unlock_irqrestore(& dev->event_lock, flags); kfree((void const *)e); err_put: drm_vblank_put(dev, pipe); return (ret); } } int drm_wait_vblank(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_vblank_crtc *vblank ; union drm_wait_vblank *vblwait ; int ret ; unsigned int flags ; unsigned int seq ; unsigned int crtc ; unsigned int high_crtc ; long tmp ; int tmp___0 ; long tmp___1 ; wait_queue_t entry ; struct task_struct *tmp___2 ; unsigned long end ; struct task_struct *tmp___3 ; struct task_struct *tmp___4 ; u32 tmp___5 ; struct task_struct *tmp___6 ; int tmp___7 ; struct task_struct *tmp___8 ; struct task_struct *tmp___9 ; struct timeval now ; long tmp___10 ; long tmp___11 ; { vblwait = (union drm_wait_vblank *)data; if (! dev->irq_enabled) { return (-22); } else { } if (((unsigned int )vblwait->request.type & 1073741824U) != 0U) { return (-22); } else { } if (((unsigned int )vblwait->request.type & 2348810176U) != 0U) { drm_err("Unsupported type value 0x%x, supported mask 0x%x\n", (unsigned int )vblwait->request.type, 1946157119); return (-22); } else { } flags = (unsigned int )vblwait->request.type & 1946157056U; high_crtc = (unsigned int )vblwait->request.type & 62U; if (high_crtc != 0U) { crtc = high_crtc >> 1; } else { crtc = (flags & 536870912U) != 0U; } if (dev->num_crtcs <= crtc) { return (-22); } else { } vblank = dev->vblank + (unsigned long )crtc; ret = drm_vblank_get(dev, (int )crtc); if (ret != 0) { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_wait_vblank", "failed to acquire vblank counter, %d\n", ret); } else { } return (ret); } else { } seq = drm_vblank_count(dev, (int )crtc); switch ((unsigned int )vblwait->request.type & 1U) { case 1U: vblwait->request.sequence = vblwait->request.sequence + seq; vblwait->request.type = (enum drm_vblank_seq_type )((unsigned int )vblwait->request.type & 4294967294U); case 0U: ; goto ldv_39898; default: ret = -22; goto done; } ldv_39898: ; if ((flags & 67108864U) != 0U) { tmp___0 = drm_queue_vblank_event(dev, (int )crtc, vblwait, file_priv); return (tmp___0); } else { } if ((flags & 268435456U) != 0U && seq - vblwait->request.sequence <= 8388608U) { vblwait->request.sequence = seq + 1U; } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_wait_vblank", "waiting on vblank count %d, crtc %d\n", vblwait->request.sequence, crtc); } else { } vblank->last_wait = vblwait->request.sequence; tmp___2 = get_current(); entry.flags = 0U; entry.private = (void *)tmp___2; entry.func = & default_wake_function; entry.task_list.next = (struct list_head *)0; entry.task_list.prev = (struct list_head *)0; end = (unsigned long )jiffies + 750UL; add_wait_queue(& vblank->queue, & entry); ldv_39910: tmp___3 = get_current(); tmp___3->task_state_change = 0UL; tmp___4 = get_current(); tmp___4->state = 1L; tmp___5 = drm_vblank_count(dev, (int )crtc); if ((tmp___5 - vblwait->request.sequence <= 8388608U || ! vblank->enabled) || ! dev->irq_enabled) { goto ldv_39903; } else { } if ((long )((unsigned long )jiffies - end) >= 0L) { ret = -16; goto ldv_39903; } else { } schedule_timeout(2L); tmp___6 = get_current(); tmp___7 = signal_pending(tmp___6); if (tmp___7 != 0) { ret = -4; goto ldv_39903; } else { } goto ldv_39910; ldv_39903: tmp___8 = get_current(); tmp___8->task_state_change = 0UL; tmp___9 = get_current(); tmp___9->state = 0L; remove_wait_queue(& vblank->queue, & entry); if (ret != -4) { vblwait->reply.sequence = drm_vblank_count_and_time(dev, (int )crtc, & now); vblwait->reply.tval_sec = now.tv_sec; vblwait->reply.tval_usec = now.tv_usec; tmp___10 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("drm_wait_vblank", "returning %d to client\n", vblwait->reply.sequence); } else { } } else { tmp___11 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___11 != 0L) { drm_ut_debug_printk("drm_wait_vblank", "vblank wait interrupted by signal\n"); } else { } } done: drm_vblank_put(dev, (int )crtc); return (ret); } } static void drm_handle_vblank_events(struct drm_device *dev , int crtc ) { struct drm_pending_vblank_event *e ; struct drm_pending_vblank_event *t ; struct timeval now ; unsigned int seq ; int tmp ; long tmp___0 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; long tmp___1 ; struct list_head const *__mptr___1 ; { tmp = queued_spin_is_locked(& dev->event_lock.__annonCompField18.rlock.raw_lock); tmp___0 = ldv__builtin_expect(tmp == 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c"), "i" (1682), "i" (12UL)); ldv_39920: ; goto ldv_39920; } else { } seq = drm_vblank_count_and_time(dev, crtc, & now); __mptr = (struct list_head const *)dev->vblank_event_list.next; e = (struct drm_pending_vblank_event *)__mptr + 0xfffffffffffffff8UL; __mptr___0 = (struct list_head const *)e->base.link.next; t = (struct drm_pending_vblank_event *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_39930; ldv_39929: ; if (e->pipe != crtc) { goto ldv_39927; } else { } if (seq - e->event.sequence > 8388608U) { goto ldv_39927; } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_handle_vblank_events", "vblank event on %d, current %d\n", e->event.sequence, seq); } else { } list_del(& e->base.link); drm_vblank_put(dev, e->pipe); send_vblank_event(dev, e, (unsigned long )seq, & now); ldv_39927: e = t; __mptr___1 = (struct list_head const *)t->base.link.next; t = (struct drm_pending_vblank_event *)__mptr___1 + 0xfffffffffffffff8UL; ldv_39930: ; if ((unsigned long )(& e->base.link) != (unsigned long )(& dev->vblank_event_list)) { goto ldv_39929; } else { } trace_drm_vblank_event(crtc, seq); return; } } bool drm_handle_vblank(struct drm_device *dev , int crtc ) { struct drm_vblank_crtc *vblank ; u32 vblcount ; s64 diff_ns ; struct timeval tvblank ; unsigned long irqflags ; bool __warned ; int __ret_warn_once ; int __ret_warn_on ; long tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; int __ret_warn_on___0 ; long tmp___3 ; long tmp___4 ; raw_spinlock_t *tmp___5 ; s64 tmp___6 ; s64 tmp___7 ; long tmp___8 ; s64 __x ; { vblank = dev->vblank + (unsigned long )crtc; __ret_warn_once = dev->num_crtcs == 0U; tmp___1 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___1 != 0L) { __ret_warn_on = ! __warned; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1721); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { __warned = 1; } else { } } else { } tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___2 != 0L) { return (0); } else { } __ret_warn_on___0 = (unsigned int )crtc >= dev->num_crtcs; tmp___3 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_irq.c", 1724); } else { } tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { return (0); } else { } tmp___5 = spinlock_check(& dev->event_lock); irqflags = _raw_spin_lock_irqsave(tmp___5); spin_lock(& dev->vblank_time_lock); if (! vblank->enabled) { spin_unlock(& dev->vblank_time_lock); spin_unlock_irqrestore(& dev->event_lock, irqflags); return (0); } else { } vblcount = (u32 )vblank->count; drm_get_last_vbltimestamp(dev, crtc, & tvblank, 1U); tmp___6 = timeval_to_ns((struct timeval const *)(& tvblank)); tmp___7 = timeval_to_ns((struct timeval const *)(& (dev->vblank + (unsigned long )crtc)->time) + ((unsigned long )vblcount & 1UL)); diff_ns = tmp___6 - tmp___7; __x = diff_ns; if ((__x < 0LL ? - __x : __x) > 1000000LL) { store_vblank(dev, crtc, 1U, & tvblank); } else { tmp___8 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("drm_handle_vblank", "crtc %d: Redundant vblirq ignored. diff_ns = %d\n", crtc, (int )diff_ns); } else { } } spin_unlock(& dev->vblank_time_lock); __wake_up(& vblank->queue, 3U, 1, (void *)0); drm_handle_vblank_events(dev, crtc); spin_unlock_irqrestore(& dev->event_lock, irqflags); return (1); } } static char const __kstrtab_drm_handle_vblank[18U] = { 'd', 'r', 'm', '_', 'h', 'a', 'n', 'd', 'l', 'e', '_', 'v', 'b', 'l', 'a', 'n', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_handle_vblank ; struct kernel_symbol const __ksymtab_drm_handle_vblank = {(unsigned long )(& drm_handle_vblank), (char const *)(& __kstrtab_drm_handle_vblank)}; bool drm_crtc_handle_vblank(struct drm_crtc *crtc ) { unsigned int tmp ; bool tmp___0 ; { tmp = drm_crtc_index(crtc); tmp___0 = drm_handle_vblank(crtc->dev, (int )tmp); return (tmp___0); } } static char const __kstrtab_drm_crtc_handle_vblank[23U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'h', 'a', 'n', 'd', 'l', 'e', '_', 'v', 'b', 'l', 'a', 'n', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_handle_vblank ; struct kernel_symbol const __ksymtab_drm_crtc_handle_vblank = {(unsigned long )(& drm_crtc_handle_vblank), (char const *)(& __kstrtab_drm_crtc_handle_vblank)}; void choose_timer_2(void) { int tmp ; { tmp = __VERIFIER_nondet_int(); switch (tmp) { case 0: ; if (ldv_timer_2_0 == 1) { ldv_timer_2_0 = 2; ldv_timer_2(ldv_timer_2_0, ldv_timer_list_2_0); } else { } goto ldv_39976; case 1: ; if (ldv_timer_2_1 == 1) { ldv_timer_2_1 = 2; ldv_timer_2(ldv_timer_2_1, ldv_timer_list_2_1); } else { } goto ldv_39976; case 2: ; if (ldv_timer_2_2 == 1) { ldv_timer_2_2 = 2; ldv_timer_2(ldv_timer_2_2, ldv_timer_list_2_2); } else { } goto ldv_39976; case 3: ; if (ldv_timer_2_3 == 1) { ldv_timer_2_3 = 2; ldv_timer_2(ldv_timer_2_3, ldv_timer_list_2_3); } else { } goto ldv_39976; default: ldv_stop(); } ldv_39976: ; return; } } int reg_timer_2(struct timer_list *timer , void (*function)(unsigned long ) , unsigned long data ) { { if ((unsigned long )function == (unsigned long )(& vblank_disable_fn)) { activate_suitable_timer_2(timer, data); } else { } return (0); } } void activate_pending_timer_2(struct timer_list *timer , unsigned long data , int pending_flag ) { { if ((unsigned long )ldv_timer_list_2_0 == (unsigned long )timer) { if (ldv_timer_2_0 == 2 || pending_flag != 0) { ldv_timer_list_2_0 = timer; ldv_timer_list_2_0->data = data; ldv_timer_2_0 = 1; } else { } return; } else { } if ((unsigned long )ldv_timer_list_2_1 == (unsigned long )timer) { if (ldv_timer_2_1 == 2 || pending_flag != 0) { ldv_timer_list_2_1 = timer; ldv_timer_list_2_1->data = data; ldv_timer_2_1 = 1; } else { } return; } else { } if ((unsigned long )ldv_timer_list_2_2 == (unsigned long )timer) { if (ldv_timer_2_2 == 2 || pending_flag != 0) { ldv_timer_list_2_2 = timer; ldv_timer_list_2_2->data = data; ldv_timer_2_2 = 1; } else { } return; } else { } if ((unsigned long )ldv_timer_list_2_3 == (unsigned long )timer) { if (ldv_timer_2_3 == 2 || pending_flag != 0) { ldv_timer_list_2_3 = timer; ldv_timer_list_2_3->data = data; ldv_timer_2_3 = 1; } else { } return; } else { } activate_suitable_timer_2(timer, data); return; } } void timer_init_2(void) { { ldv_timer_2_0 = 0; ldv_timer_2_1 = 0; ldv_timer_2_2 = 0; ldv_timer_2_3 = 0; return; } } void disable_suitable_timer_2(struct timer_list *timer ) { { if (ldv_timer_2_0 != 0 && (unsigned long )timer == (unsigned long )ldv_timer_list_2_0) { ldv_timer_2_0 = 0; return; } else { } if (ldv_timer_2_1 != 0 && (unsigned long )timer == (unsigned long )ldv_timer_list_2_1) { ldv_timer_2_1 = 0; return; } else { } if (ldv_timer_2_2 != 0 && (unsigned long )timer == (unsigned long )ldv_timer_list_2_2) { ldv_timer_2_2 = 0; return; } else { } if (ldv_timer_2_3 != 0 && (unsigned long )timer == (unsigned long )ldv_timer_list_2_3) { ldv_timer_2_3 = 0; return; } else { } return; } } void activate_suitable_timer_2(struct timer_list *timer , unsigned long data ) { { if (ldv_timer_2_0 == 0 || ldv_timer_2_0 == 2) { ldv_timer_list_2_0 = timer; ldv_timer_list_2_0->data = data; ldv_timer_2_0 = 1; return; } else { } if (ldv_timer_2_1 == 0 || ldv_timer_2_1 == 2) { ldv_timer_list_2_1 = timer; ldv_timer_list_2_1->data = data; ldv_timer_2_1 = 1; return; } else { } if (ldv_timer_2_2 == 0 || ldv_timer_2_2 == 2) { ldv_timer_list_2_2 = timer; ldv_timer_list_2_2->data = data; ldv_timer_2_2 = 1; return; } else { } if (ldv_timer_2_3 == 0 || ldv_timer_2_3 == 2) { ldv_timer_list_2_3 = timer; ldv_timer_list_2_3->data = data; ldv_timer_2_3 = 1; return; } else { } return; } } void ldv_timer_2(int state , struct timer_list *timer ) { { LDV_IN_INTERRUPT = 2; vblank_disable_fn(timer->data); LDV_IN_INTERRUPT = 1; return; } } bool ldv_queue_work_on_117(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_118(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_119(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_120(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_121(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } int ldv_del_timer_sync_122(struct timer_list *ldv_func_arg1 ) { ldv_func_ret_type___3 ldv_func_res ; int tmp ; { tmp = del_timer_sync(ldv_func_arg1); ldv_func_res = tmp; disable_suitable_timer_2(ldv_func_arg1); return (ldv_func_res); } } int ldv_mod_timer_123(struct timer_list *ldv_func_arg1 , unsigned long ldv_func_arg2 ) { ldv_func_ret_type___4 ldv_func_res ; int tmp ; { tmp = mod_timer(ldv_func_arg1, ldv_func_arg2); ldv_func_res = tmp; activate_pending_timer_2(ldv_func_arg1, ldv_func_arg2, 1); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void _raw_spin_lock_bh(raw_spinlock_t * ) ; extern void _raw_spin_unlock_bh(raw_spinlock_t * ) ; __inline static void spin_lock_bh(spinlock_t *lock ) { { _raw_spin_lock_bh(& lock->__annonCompField18.rlock); return; } } __inline static void spin_unlock_bh(spinlock_t *lock ) { { _raw_spin_unlock_bh(& lock->__annonCompField18.rlock); return; } } bool ldv_queue_work_on_135(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_137(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_136(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_139(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_138(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void sigaddset(sigset_t *set , int _sig ) { unsigned long sig ; { sig = (unsigned long )(_sig + -1); set->sig[0] = set->sig[0] | (1UL << (int )sig); return; } } __inline static void sigemptyset(sigset_t *set ) { { switch (1) { default: memset((void *)set, 0, 8UL); goto ldv_16474; case 2: set->sig[1] = 0UL; case 1: set->sig[0] = 0UL; goto ldv_16474; } ldv_16474: ; return; } } extern void block_all_signals(int (*)(void * ) , void * , sigset_t * ) ; extern void unblock_all_signals(void) ; extern int send_sig(int , struct task_struct * , int ) ; __inline static int signal_pending___0(struct task_struct *p ) { int tmp ; long tmp___0 ; { tmp = test_tsk_thread_flag(p, 2); tmp___0 = ldv__builtin_expect(tmp != 0, 0L); return ((int )tmp___0); } } void drm_legacy_idlelock_take(struct drm_lock_data *lock_data ) ; void drm_legacy_idlelock_release(struct drm_lock_data *lock_data ) ; static int drm_notifier(void *priv ) ; static int drm_lock_take(struct drm_lock_data *lock_data , unsigned int context ) ; int drm_legacy_lock(struct drm_device *dev , void *data , struct drm_file *file_priv ) { wait_queue_t entry ; struct task_struct *tmp ; struct drm_lock *lock ; struct drm_master *master ; int ret ; struct task_struct *tmp___0 ; pid_t tmp___1 ; struct task_struct *tmp___2 ; pid_t tmp___3 ; long tmp___4 ; struct task_struct *tmp___5 ; struct task_struct *tmp___6 ; struct task_struct *tmp___7 ; int tmp___8 ; struct task_struct *tmp___9 ; int tmp___10 ; struct task_struct *tmp___11 ; struct task_struct *tmp___12 ; long tmp___13 ; long tmp___14 ; int tmp___15 ; { tmp = get_current(); entry.flags = 0U; entry.private = (void *)tmp; entry.func = & default_wake_function; entry.task_list.next = (struct list_head *)0; entry.task_list.prev = (struct list_head *)0; lock = (struct drm_lock *)data; master = file_priv->master; ret = 0; file_priv->lock_count = file_priv->lock_count + 1UL; if (lock->context == 0) { tmp___0 = get_current(); tmp___1 = task_pid_nr(tmp___0); drm_err("Process %d using kernel context %d\n", tmp___1, lock->context); return (-22); } else { } tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { tmp___2 = get_current(); tmp___3 = task_pid_nr(tmp___2); drm_ut_debug_printk("drm_legacy_lock", "%d (pid %d) requests lock (0x%08x), flags = 0x%08x\n", lock->context, tmp___3, (master->lock.hw_lock)->lock, (unsigned int )lock->flags); } else { } add_wait_queue(& master->lock.lock_queue, & entry); spin_lock_bh(& master->lock.spinlock); master->lock.user_waiters = master->lock.user_waiters + 1U; spin_unlock_bh(& master->lock.spinlock); ldv_39087: tmp___5 = get_current(); tmp___5->task_state_change = 0UL; tmp___6 = get_current(); tmp___6->state = 1L; if ((unsigned long )master->lock.hw_lock == (unsigned long )((struct drm_hw_lock *)0)) { tmp___7 = get_current(); send_sig(15, tmp___7, 0); ret = -4; goto ldv_39086; } else { } tmp___8 = drm_lock_take(& master->lock, (unsigned int )lock->context); if (tmp___8 != 0) { master->lock.file_priv = file_priv; master->lock.lock_time = jiffies; goto ldv_39086; } else { } mutex_unlock(& drm_global_mutex); schedule(); mutex_lock_nested(& drm_global_mutex, 0U); tmp___9 = get_current(); tmp___10 = signal_pending___0(tmp___9); if (tmp___10 != 0) { ret = -4; goto ldv_39086; } else { } goto ldv_39087; ldv_39086: spin_lock_bh(& master->lock.spinlock); master->lock.user_waiters = master->lock.user_waiters - 1U; spin_unlock_bh(& master->lock.spinlock); tmp___11 = get_current(); tmp___11->task_state_change = 0UL; tmp___12 = get_current(); tmp___12->state = 0L; remove_wait_queue(& master->lock.lock_queue, & entry); tmp___13 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___13 != 0L) { drm_ut_debug_printk("drm_legacy_lock", "%d %s\n", lock->context, ret != 0 ? (char *)"interrupted" : (char *)"has lock"); } else { } if (ret != 0) { return (ret); } else { } if ((unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { sigemptyset(& dev->sigmask); sigaddset(& dev->sigmask, 19); sigaddset(& dev->sigmask, 20); sigaddset(& dev->sigmask, 21); sigaddset(& dev->sigmask, 22); dev->sigdata.context = lock->context; dev->sigdata.lock = master->lock.hw_lock; block_all_signals(& drm_notifier, (void *)dev, & dev->sigmask); } else { } if ((unsigned long )(dev->driver)->dma_quiescent != (unsigned long )((int (*)(struct drm_device * ))0) && ((unsigned int )lock->flags & 2U) != 0U) { tmp___15 = (*((dev->driver)->dma_quiescent))(dev); if (tmp___15 != 0) { tmp___14 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___14 != 0L) { drm_ut_debug_printk("drm_legacy_lock", "%d waiting for DMA quiescent\n", lock->context); } else { } return (-16); } else { } } else { } return (0); } } int drm_legacy_unlock(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_lock *lock ; struct drm_master *master ; struct task_struct *tmp ; pid_t tmp___0 ; int tmp___1 ; { lock = (struct drm_lock *)data; master = file_priv->master; if (lock->context == 0) { tmp = get_current(); tmp___0 = task_pid_nr(tmp); drm_err("Process %d using kernel context %d\n", tmp___0, lock->context); return (-22); } else { } tmp___1 = drm_legacy_lock_free(& master->lock, (unsigned int )lock->context); unblock_all_signals(); return (0); } } static int drm_lock_take(struct drm_lock_data *lock_data , unsigned int context ) { unsigned int old ; unsigned int new ; unsigned int prev ; unsigned int volatile *lock ; unsigned int volatile __ret ; unsigned int volatile __old ; unsigned int volatile __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { lock = & (lock_data->hw_lock)->lock; spin_lock_bh(& lock_data->spinlock); ldv_39117: old = *lock; if ((int )old < 0) { new = old | 1073741824U; } else { new = ((lock_data->user_waiters + lock_data->kernel_waiters > 1U ? 1073741824U : 0U) | context) | 2147483648U; } __old = old; __new = new; switch (4UL) { case 1UL: __ptr = (u8 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_39108; case 2UL: __ptr___0 = (u16 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_39108; case 4UL: __ptr___1 = lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_39108; case 8UL: __ptr___2 = (u64 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_39108; default: __cmpxchg_wrong_size(); } ldv_39108: prev = __ret; if (prev != old) { goto ldv_39117; } else { } spin_unlock_bh(& lock_data->spinlock); if ((old & 1073741823U) == context) { if ((int )old < 0) { if (context != 0U) { drm_err("%d holds heavyweight lock\n", context); } else { } return (0); } else { } } else { } if ((new & 1073741823U) == context && (int )new < 0) { return (1); } else { } return (0); } } static int drm_lock_transfer(struct drm_lock_data *lock_data , unsigned int context ) { unsigned int old ; unsigned int new ; unsigned int prev ; unsigned int volatile *lock ; unsigned int volatile __ret ; unsigned int volatile __old ; unsigned int volatile __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { lock = & (lock_data->hw_lock)->lock; lock_data->file_priv = (struct drm_file *)0; ldv_39141: old = *lock; new = context | 2147483648U; __old = old; __new = new; switch (4UL) { case 1UL: __ptr = (u8 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_39132; case 2UL: __ptr___0 = (u16 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_39132; case 4UL: __ptr___1 = lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_39132; case 8UL: __ptr___2 = (u64 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_39132; default: __cmpxchg_wrong_size(); } ldv_39132: prev = __ret; if (prev != old) { goto ldv_39141; } else { } return (1); } } int drm_legacy_lock_free(struct drm_lock_data *lock_data , unsigned int context ) { unsigned int old ; unsigned int new ; unsigned int prev ; unsigned int volatile *lock ; unsigned int volatile __ret ; unsigned int volatile __old ; unsigned int volatile __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { lock = & (lock_data->hw_lock)->lock; spin_lock_bh(& lock_data->spinlock); if (lock_data->kernel_waiters != 0U) { drm_lock_transfer(lock_data, 0U); lock_data->idle_has_lock = 1; spin_unlock_bh(& lock_data->spinlock); return (1); } else { } spin_unlock_bh(& lock_data->spinlock); ldv_39165: old = *lock; new = old & 1073741823U; __old = old; __new = new; switch (4UL) { case 1UL: __ptr = (u8 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_39156; case 2UL: __ptr___0 = (u16 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_39156; case 4UL: __ptr___1 = lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_39156; case 8UL: __ptr___2 = (u64 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_39156; default: __cmpxchg_wrong_size(); } ldv_39156: prev = __ret; if (prev != old) { goto ldv_39165; } else { } if ((int )old < 0 && (old & 1073741823U) != context) { drm_err("%d freed heavyweight lock held by %d\n", context, old & 1073741823U); return (1); } else { } __wake_up(& lock_data->lock_queue, 1U, 1, (void *)0); return (0); } } static int drm_notifier(void *priv ) { struct drm_device *dev ; struct drm_hw_lock *lock ; unsigned int old ; unsigned int new ; unsigned int prev ; unsigned int volatile __ret ; unsigned int volatile __old ; unsigned int volatile __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { dev = (struct drm_device *)priv; lock = dev->sigdata.lock; if (((unsigned long )lock == (unsigned long )((struct drm_hw_lock *)0) || (int )lock->lock >= 0) || ((unsigned int )lock->lock & 1073741823U) != (unsigned int )dev->sigdata.context) { return (1); } else { } ldv_39189: old = lock->lock; new = old | 1073741824U; __old = old; __new = new; switch (4UL) { case 1UL: __ptr = (u8 volatile *)(& lock->lock); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_39180; case 2UL: __ptr___0 = (u16 volatile *)(& lock->lock); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_39180; case 4UL: __ptr___1 = & lock->lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_39180; case 8UL: __ptr___2 = (u64 volatile *)(& lock->lock); __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_39180; default: __cmpxchg_wrong_size(); } ldv_39180: prev = __ret; if (prev != old) { goto ldv_39189; } else { } return (0); } } void drm_legacy_idlelock_take(struct drm_lock_data *lock_data ) { int ret ; { spin_lock_bh(& lock_data->spinlock); lock_data->kernel_waiters = lock_data->kernel_waiters + 1U; if (lock_data->idle_has_lock == 0) { spin_unlock_bh(& lock_data->spinlock); ret = drm_lock_take(lock_data, 0U); spin_lock_bh(& lock_data->spinlock); if (ret == 1) { lock_data->idle_has_lock = 1; } else { } } else { } spin_unlock_bh(& lock_data->spinlock); return; } } static char const __kstrtab_drm_legacy_idlelock_take[25U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'i', 'd', 'l', 'e', 'l', 'o', 'c', 'k', '_', 't', 'a', 'k', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_idlelock_take ; struct kernel_symbol const __ksymtab_drm_legacy_idlelock_take = {(unsigned long )(& drm_legacy_idlelock_take), (char const *)(& __kstrtab_drm_legacy_idlelock_take)}; void drm_legacy_idlelock_release(struct drm_lock_data *lock_data ) { unsigned int old ; unsigned int prev ; unsigned int volatile *lock ; unsigned int volatile __ret ; unsigned int volatile __old ; unsigned int volatile __new ; u8 volatile *__ptr ; u16 volatile *__ptr___0 ; u32 volatile *__ptr___1 ; u64 volatile *__ptr___2 ; { lock = & (lock_data->hw_lock)->lock; spin_lock_bh(& lock_data->spinlock); lock_data->kernel_waiters = lock_data->kernel_waiters - 1U; if (lock_data->kernel_waiters == 0U) { if (lock_data->idle_has_lock != 0) { ldv_39222: old = *lock; __old = old; __new = 0U; switch (4UL) { case 1UL: __ptr = (u8 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgb %2,%1": "=a" (__ret), "+m" (*__ptr): "q" (__new), "0" (__old): "memory"); goto ldv_39213; case 2UL: __ptr___0 = (u16 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgw %2,%1": "=a" (__ret), "+m" (*__ptr___0): "r" (__new), "0" (__old): "memory"); goto ldv_39213; case 4UL: __ptr___1 = lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgl %2,%1": "=a" (__ret), "+m" (*__ptr___1): "r" (__new), "0" (__old): "memory"); goto ldv_39213; case 8UL: __ptr___2 = (u64 volatile *)lock; __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; cmpxchgq %2,%1": "=a" (__ret), "+m" (*__ptr___2): "r" (__new), "0" (__old): "memory"); goto ldv_39213; default: __cmpxchg_wrong_size(); } ldv_39213: prev = __ret; if (prev != old) { goto ldv_39222; } else { } __wake_up(& lock_data->lock_queue, 1U, 1, (void *)0); lock_data->idle_has_lock = 0; } else { } } else { } spin_unlock_bh(& lock_data->spinlock); return; } } static char const __kstrtab_drm_legacy_idlelock_release[28U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'i', 'd', 'l', 'e', 'l', 'o', 'c', 'k', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_idlelock_release ; struct kernel_symbol const __ksymtab_drm_legacy_idlelock_release = {(unsigned long )(& drm_legacy_idlelock_release), (char const *)(& __kstrtab_drm_legacy_idlelock_release)}; int drm_legacy_i_have_hw_lock(struct drm_device *dev , struct drm_file *file_priv ) { struct drm_master *master ; { master = file_priv->master; return (((file_priv->lock_count != 0UL && (unsigned long )master->lock.hw_lock != (unsigned long )((struct drm_hw_lock *)0)) && (int )(master->lock.hw_lock)->lock < 0) && (unsigned long )master->lock.file_priv == (unsigned long )file_priv); } } bool ldv_queue_work_on_135(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_136(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_137(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_138(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_139(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern uint16_t __cachemode2pte_tbl[8U] ; __inline static unsigned long cachemode2protval(enum page_cache_mode pcm ) { long tmp ; { tmp = ldv__builtin_expect((unsigned int )pcm == 0U, 1L); if (tmp != 0L) { return (0UL); } else { } return ((unsigned long )__cachemode2pte_tbl[(unsigned int )pcm]); } } bool ldv_queue_work_on_149(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_151(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_150(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_153(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_152(struct workqueue_struct *ldv_func_arg1 ) ; extern void agp_free_memory(struct agp_memory * ) ; extern int agp_bind_memory(struct agp_memory * , off_t ) ; extern int agp_unbind_memory(struct agp_memory * ) ; extern void *vmalloc(unsigned long ) ; extern void *vmap(struct page ** , unsigned int , unsigned long , pgprot_t ) ; extern void vunmap(void const * ) ; void drm_free_agp(struct agp_memory *handle , int pages ) ; int drm_bind_agp(struct agp_memory *handle , unsigned int start ) ; int drm_unbind_agp(struct agp_memory *handle ) ; void drm_legacy_ioremap(struct drm_local_map *map , struct drm_device *dev ) ; void drm_legacy_ioremap_wc(struct drm_local_map *map , struct drm_device *dev ) ; void drm_legacy_ioremapfree(struct drm_local_map *map , struct drm_device *dev ) ; static void *agp_remap(unsigned long offset , unsigned long size , struct drm_device *dev ) { unsigned long i ; unsigned long num_pages ; struct drm_agp_mem *agpmem ; struct page **page_map ; struct page **phys_page_map ; void *addr ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; void *tmp ; pgprot_t __constr_expr_0 ; unsigned long tmp___0 ; { num_pages = ((size + 4095UL) & 0xfffffffffffff000UL) / 4096UL; size = (size + 4095UL) & 0xfffffffffffff000UL; __mptr = (struct list_head const *)(dev->agp)->memory.next; agpmem = (struct drm_agp_mem *)__mptr + 0xffffffffffffffe0UL; goto ldv_38963; ldv_38962: ; if (agpmem->bound <= offset && agpmem->bound + (unsigned long )(agpmem->pages << 12) >= offset + size) { goto ldv_38961; } else { } __mptr___0 = (struct list_head const *)agpmem->head.next; agpmem = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; ldv_38963: ; if ((unsigned long )(& agpmem->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_38962; } else { } ldv_38961: ; if ((unsigned long )(& agpmem->head) == (unsigned long )(& (dev->agp)->memory)) { return ((void *)0); } else { } tmp = vmalloc(num_pages * 8UL); page_map = (struct page **)tmp; if ((unsigned long )page_map == (unsigned long )((struct page **)0)) { return ((void *)0); } else { } phys_page_map = (agpmem->memory)->pages + (offset - agpmem->bound) / 4096UL; i = 0UL; goto ldv_38965; ldv_38964: *(page_map + i) = *(phys_page_map + i); i = i + 1UL; ldv_38965: ; if (i < num_pages) { goto ldv_38964; } else { } tmp___0 = cachemode2protval(3); __constr_expr_0.pgprot = tmp___0 | 0x8000000000000163UL; addr = vmap(page_map, (unsigned int )num_pages, 1UL, __constr_expr_0); vfree((void const *)page_map); return (addr); } } void drm_free_agp(struct agp_memory *handle , int pages ) { { agp_free_memory(handle); return; } } int drm_bind_agp(struct agp_memory *handle , unsigned int start ) { int tmp ; { tmp = agp_bind_memory(handle, (off_t )start); return (tmp); } } int drm_unbind_agp(struct agp_memory *handle ) { int tmp ; { tmp = agp_unbind_memory(handle); return (tmp); } } void drm_legacy_ioremap(struct drm_local_map *map , struct drm_device *dev ) { { if (((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0) && (dev->agp)->cant_use_aperture != 0) && (unsigned int )map->type == 3U) { map->handle = agp_remap((unsigned long )map->offset, map->size, dev); } else { map->handle = ioremap(map->offset, map->size); } return; } } static char const __kstrtab_drm_legacy_ioremap[19U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'i', 'o', 'r', 'e', 'm', 'a', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_ioremap ; struct kernel_symbol const __ksymtab_drm_legacy_ioremap = {(unsigned long )(& drm_legacy_ioremap), (char const *)(& __kstrtab_drm_legacy_ioremap)}; void drm_legacy_ioremap_wc(struct drm_local_map *map , struct drm_device *dev ) { { if (((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0) && (dev->agp)->cant_use_aperture != 0) && (unsigned int )map->type == 3U) { map->handle = agp_remap((unsigned long )map->offset, map->size, dev); } else { map->handle = ioremap_wc(map->offset, map->size); } return; } } static char const __kstrtab_drm_legacy_ioremap_wc[22U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'i', 'o', 'r', 'e', 'm', 'a', 'p', '_', 'w', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_ioremap_wc ; struct kernel_symbol const __ksymtab_drm_legacy_ioremap_wc = {(unsigned long )(& drm_legacy_ioremap_wc), (char const *)(& __kstrtab_drm_legacy_ioremap_wc)}; void drm_legacy_ioremapfree(struct drm_local_map *map , struct drm_device *dev ) { { if ((unsigned long )map->handle == (unsigned long )((void *)0) || map->size == 0UL) { return; } else { } if (((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0) && (dev->agp)->cant_use_aperture != 0) && (unsigned int )map->type == 3U) { vunmap((void const *)map->handle); } else { iounmap((void volatile *)map->handle); } return; } } static char const __kstrtab_drm_legacy_ioremapfree[23U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'i', 'o', 'r', 'e', 'm', 'a', 'p', 'f', 'r', 'e', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_ioremapfree ; struct kernel_symbol const __ksymtab_drm_legacy_ioremapfree = {(unsigned long )(& drm_legacy_ioremapfree), (char const *)(& __kstrtab_drm_legacy_ioremapfree)}; bool ldv_queue_work_on_149(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_150(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_151(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_152(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_153(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } void ldv__builtin_va_end(__builtin_va_list * ) ; void *__builtin_return_address(unsigned int ) ; __inline static long ldv__builtin_expect(long exp , long c ) ; void ldv__builtin_va_start(__builtin_va_list * ) ; extern struct module __this_module ; extern char *kvasprintf(gfp_t , char const * , va_list * ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; extern void mutex_destroy(struct mutex * ) ; bool ldv_queue_work_on_163(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_165(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_164(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_167(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_166(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void *idr_find___2(struct idr *idr , int id ) { struct idr_layer *hint ; struct idr_layer *________p1 ; struct idr_layer *_________p1 ; union __anonunion___u_168___2 __u ; int tmp ; struct idr_layer *________p1___0 ; struct idr_layer *_________p1___0 ; union __anonunion___u_170___2 __u___0 ; int tmp___0 ; void *tmp___1 ; { __read_once_size((void const volatile *)(& idr->hint), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); hint = ________p1; if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) { __read_once_size((void const volatile *)(& hint->ary) + ((unsigned long )id & 255UL), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___0 = debug_lockdep_rcu_enabled(); return ((void *)________p1___0); } else { } tmp___1 = idr_find_slowpath(idr, id); return (tmp___1); } } __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 ; { tmp = atomic_add_return(1, & kref->refcount); __ret_warn_once = tmp <= 1; tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___2 != 0L) { __ret_warn_on = ! __warned; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("include/linux/kref.h", 47); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { __warned = 1; } else { } } else { } ldv__builtin_expect(__ret_warn_once != 0, 0L); return; } } __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 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 71); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___0 = atomic_sub_and_test((int )count, & kref->refcount); if (tmp___0 != 0) { (*release)(kref); return (1); } else { } return (0); } } __inline static int kref_put___0(struct kref *kref , void (*release)(struct kref * ) ) { int tmp ; { tmp = kref_sub___0(kref, 1U, release); return (tmp); } } bool ldv_try_module_get_168(struct module *ldv_func_arg1 ) ; void ldv_module_put_169(struct module *ldv_func_arg1 ) ; int ldv_try_module_get(struct module *module ) ; void ldv_module_put(struct module *module ) ; int ldv_state_variable_8 ; int ldv_state_variable_15 ; int ldv_state_variable_20 ; struct file *drm_debugfs_fops_group2 ; struct timer_list *ldv_timer_list_2_0 ; struct work_struct *ldv_work_struct_1_3 ; int ldv_state_variable_30 ; int ldv_timer_2_1 ; int ldv_state_variable_0 ; int ldv_state_variable_21 ; int ldv_state_variable_5 ; int ldv_state_variable_33 ; int ldv_state_variable_13 ; int ldv_work_1_1 ; struct inode *drm_debugfs_fops_group1 ; int ldv_state_variable_12 ; struct dma_buf_attachment *drm_gem_prime_dmabuf_ops_group1 ; struct file *drm_stub_fops_group2 ; int ldv_state_variable_22 ; struct trace_event_call *event_class_drm_vblank_event_queued_group0 ; int ldv_state_variable_14 ; int ldv_timer_2_2 ; int ldv_timer_2_3 ; int ldv_state_variable_29 ; int ldv_state_variable_17 ; struct vm_area_struct *drm_vm_ops_group0 ; struct dma_buf *drm_gem_prime_dmabuf_ops_group0 ; int ldv_state_variable_19 ; int ldv_state_variable_27 ; int ldv_state_variable_9 ; int ldv_state_variable_24 ; struct vm_area_struct *drm_vm_dma_ops_group0 ; struct trace_event_call *event_class_drm_vblank_event_group0 ; int ref_cnt ; struct inode *drm_edid_fops_group1 ; int ldv_state_variable_1 ; int ldv_state_variable_7 ; struct device *drm_class_dev_pm_ops_group1 ; int ldv_state_variable_23 ; struct vm_area_struct *drm_vm_sg_ops_group0 ; struct work_struct *ldv_work_struct_1_0 ; struct work_struct *ldv_work_struct_1_1 ; int ldv_state_variable_10 ; struct file *drm_connector_fops_group2 ; int ldv_work_1_3 ; struct timer_list *ldv_timer_list_2_1 ; int ldv_state_variable_6 ; int ldv_state_variable_16 ; int ldv_timer_2_0 ; int ldv_state_variable_2 ; int ldv_state_variable_25 ; struct device *dev_attr_status_group1 ; int ldv_state_variable_26 ; int ldv_state_variable_28 ; struct inode *drm_stub_fops_group1 ; int ldv_state_variable_11 ; int ldv_work_1_2 ; struct device_attribute *dev_attr_status_group0 ; struct trace_event_call *event_class_drm_vblank_event_delivered_group0 ; int ldv_state_variable_18 ; struct work_struct *ldv_work_struct_1_2 ; int ldv_state_variable_3 ; struct file *drm_edid_fops_group2 ; int ldv_state_variable_32 ; int ldv_state_variable_31 ; struct timer_list *ldv_timer_list_2_3 ; int ldv_work_1_0 ; struct timer_list *ldv_timer_list_2_2 ; struct inode *drm_connector_fops_group1 ; struct vm_area_struct *drm_vm_shm_ops_group0 ; int ldv_state_variable_4 ; void ldv_initialize_vm_operations_struct_29(void) ; void ldv_initialize_trace_event_class_6(void) ; void ldv_initialize_vm_operations_struct_26(void) ; void ldv_initialize_dma_buf_ops_3(void) ; void ldv_initialize_device_attribute_23(void) ; void ldv_initialize_vm_operations_struct_27(void) ; void work_init_1(void) ; void ldv_initialize_trace_event_class_5(void) ; void ldv_initialize_trace_event_class_4(void) ; void ldv_dev_pm_ops_25(void) ; void ldv_file_operations_30(void) ; void ldv_initialize_vm_operations_struct_28(void) ; extern char *simple_dname(struct dentry * , char * , int ) ; extern void kill_anon_super(struct super_block * ) ; extern struct dentry *mount_pseudo(struct file_system_type * , char * , struct super_operations const * , struct dentry_operations const * , unsigned long ) ; extern void iput(struct inode * ) ; extern int __register_chrdev(unsigned int , unsigned int , unsigned int , char const * , struct file_operations const * ) ; extern void __unregister_chrdev(unsigned int , unsigned int , unsigned int , char const * ) ; __inline static int register_chrdev(unsigned int major , char const *name , struct file_operations const *fops ) { int tmp ; { tmp = __register_chrdev(major, 0U, 256U, name, fops); return (tmp); } } __inline static int ldv_register_chrdev_170(unsigned int major , char const *name , struct file_operations const *fops ) ; __inline static void unregister_chrdev(unsigned int major , char const *name ) { { __unregister_chrdev(major, 0U, 256U, name); return; } } __inline static void ldv_unregister_chrdev_171(unsigned int major , char const *name ) ; __inline static void ldv_unregister_chrdev_171(unsigned int major , char const *name ) ; extern loff_t noop_llseek(struct file * , loff_t , int ) ; extern int simple_statfs(struct dentry * , struct kstatfs * ) ; extern struct inode *alloc_anon_inode(struct super_block * ) ; extern int simple_pin_fs(struct file_system_type * , struct vfsmount ** , int * ) ; extern void simple_release_fs(struct vfsmount ** , int * ) ; extern struct dentry *debugfs_create_dir(char const * , struct dentry * ) ; extern void debugfs_remove(struct dentry * ) ; __inline static void dev_set_drvdata(struct device *dev , void *data ) { { dev->driver_data = data; return; } } __inline static int device_is_registered(struct device *dev ) { { return ((int )dev->kobj.state_in_sysfs); } } extern int device_add(struct device * ) ; extern void device_del(struct device * ) ; extern void put_device(struct device * ) ; void drm_connector_ida_init(void) ; void drm_connector_ida_destroy(void) ; int drm_mode_group_init_legacy_group(struct drm_device *dev , struct drm_mode_group *group ) ; void drm_mode_group_destroy(struct drm_mode_group *group ) ; void drm_global_init(void) ; int drm_ht_create(struct drm_open_hash *ht , unsigned int order ) ; void drm_ht_remove(struct drm_open_hash *ht ) ; __inline static void drm_device_set_unplugged(struct drm_device *dev ) { { __asm__ volatile ("": : : "memory"); atomic_set(& dev->unplugged, 1); return; } } void drm_unplug_dev(struct drm_device *dev ) ; bool drm_atomic ; struct drm_device *drm_dev_alloc(struct drm_driver *driver , struct device *parent ) ; void drm_dev_ref(struct drm_device *dev ) ; void drm_dev_unref(struct drm_device *dev ) ; int drm_dev_register(struct drm_device *dev , unsigned long flags ) ; void drm_dev_unregister(struct drm_device *dev ) ; int drm_dev_set_unique(struct drm_device *dev , char const *fmt , ...) ; void drm_pci_agp_destroy(struct drm_device *dev ) ; struct class *drm_class ; struct class *drm_sysfs_create(struct module *owner , char *name ) ; void drm_sysfs_destroy(void) ; struct device *drm_sysfs_minor_alloc(struct drm_minor *minor ) ; int drm_debugfs_init(struct drm_minor *minor , int minor_id , struct dentry *root ) ; int drm_debugfs_cleanup(struct drm_minor *minor ) ; unsigned int drm_debug = 0U; static char const __kstrtab_drm_debug[10U] = { 'd', 'r', 'm', '_', 'd', 'e', 'b', 'u', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_debug ; struct kernel_symbol const __ksymtab_drm_debug = {(unsigned long )(& drm_debug), (char const *)(& __kstrtab_drm_debug)}; bool drm_atomic = 0; static spinlock_t drm_minor_lock = {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "drm_minor_lock", 0, 0UL}}}}; static struct idr drm_minors_idr ; static struct dentry *drm_debugfs_root ; void drm_err(char const *format , ...) { struct va_format vaf ; va_list args ; void *tmp ; { ldv__builtin_va_start((va_list *)(& args)); vaf.fmt = format; vaf.va = & args; tmp = __builtin_return_address(0U); printk("\v[drm:%ps] *OLD_ERROR* %pV", tmp, & vaf); ldv__builtin_va_end((va_list *)(& args)); return; } } static char const __kstrtab_drm_err[8U] = { 'd', 'r', 'm', '_', 'e', 'r', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_err ; struct kernel_symbol const __ksymtab_drm_err = {(unsigned long )(& drm_err), (char const *)(& __kstrtab_drm_err)}; void drm_ut_debug_printk(char const *function_name , char const *format , ...) { struct va_format vaf ; va_list args ; { ldv__builtin_va_start((va_list *)(& args)); vaf.fmt = format; vaf.va = & args; printk("\017[drm:%s] %pV", function_name, & vaf); ldv__builtin_va_end((va_list *)(& args)); return; } } static char const __kstrtab_drm_ut_debug_printk[20U] = { 'd', 'r', 'm', '_', 'u', 't', '_', 'd', 'e', 'b', 'u', 'g', '_', 'p', 'r', 'i', 'n', 't', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_ut_debug_printk ; struct kernel_symbol const __ksymtab_drm_ut_debug_printk = {(unsigned long )(& drm_ut_debug_printk), (char const *)(& __kstrtab_drm_ut_debug_printk)}; struct drm_master *drm_master_create(struct drm_minor *minor ) { struct drm_master *master ; void *tmp ; struct lock_class_key __key ; struct lock_class_key __key___0 ; { tmp = kzalloc(352UL, 208U); master = (struct drm_master *)tmp; if ((unsigned long )master == (unsigned long )((struct drm_master *)0)) { return ((struct drm_master *)0); } else { } kref_init(& master->refcount); spinlock_check(& master->lock.spinlock); __raw_spin_lock_init(& master->lock.spinlock.__annonCompField18.rlock, "&(&master->lock.spinlock)->rlock", & __key); __init_waitqueue_head(& master->lock.lock_queue, "&master->lock.lock_queue", & __key___0); idr_init(& master->magic_map); master->minor = minor; return (master); } } struct drm_master *drm_master_get(struct drm_master *master ) { { kref_get___0(& master->refcount); return (master); } } static char const __kstrtab_drm_master_get[15U] = { 'd', 'r', 'm', '_', 'm', 'a', 's', 't', 'e', 'r', '_', 'g', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_master_get ; struct kernel_symbol const __ksymtab_drm_master_get = {(unsigned long )(& drm_master_get), (char const *)(& __kstrtab_drm_master_get)}; static void drm_master_destroy(struct kref *kref ) { struct drm_master *master ; struct kref const *__mptr ; struct drm_device *dev ; struct drm_map_list *r_list ; struct drm_map_list *list_temp ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; { __mptr = (struct kref const *)kref; master = (struct drm_master *)__mptr; dev = (master->minor)->dev; mutex_lock_nested(& dev->struct_mutex, 0U); if ((unsigned long )(dev->driver)->master_destroy != (unsigned long )((void (*)(struct drm_device * , struct drm_master * ))0)) { (*((dev->driver)->master_destroy))(dev, master); } else { } __mptr___0 = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr___0; __mptr___1 = (struct list_head const *)r_list->head.next; list_temp = (struct drm_map_list *)__mptr___1; goto ldv_39373; ldv_39372: ; if ((unsigned long )r_list->master == (unsigned long )master) { drm_legacy_rmmap_locked(dev, r_list->map); r_list = (struct drm_map_list *)0; } else { } r_list = list_temp; __mptr___2 = (struct list_head const *)list_temp->head.next; list_temp = (struct drm_map_list *)__mptr___2; ldv_39373: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39372; } else { } mutex_unlock(& dev->struct_mutex); idr_destroy(& master->magic_map); kfree((void const *)master->unique); kfree((void const *)master); return; } } void drm_master_put(struct drm_master **master ) { { kref_put___0(& (*master)->refcount, & drm_master_destroy); *master = (struct drm_master *)0; return; } } static char const __kstrtab_drm_master_put[15U] = { 'd', 'r', 'm', '_', 'm', 'a', 's', 't', 'e', 'r', '_', 'p', 'u', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_master_put ; struct kernel_symbol const __ksymtab_drm_master_put = {(unsigned long )(& drm_master_put), (char const *)(& __kstrtab_drm_master_put)}; int drm_setmaster_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { int ret ; long tmp ; { ret = 0; mutex_lock_nested(& dev->master_mutex, 0U); if ((unsigned int )*((unsigned char *)file_priv + 0UL) != 0U) { goto out_unlock; } else { } if ((unsigned long )(file_priv->minor)->master != (unsigned long )((struct drm_master *)0)) { ret = -22; goto out_unlock; } else { } if ((unsigned long )file_priv->master == (unsigned long )((struct drm_master *)0)) { ret = -22; goto out_unlock; } else { } (file_priv->minor)->master = drm_master_get(file_priv->master); file_priv->is_master = 1U; if ((unsigned long )(dev->driver)->master_set != (unsigned long )((int (*)(struct drm_device * , struct drm_file * , bool ))0)) { ret = (*((dev->driver)->master_set))(dev, file_priv, 0); tmp = ldv__builtin_expect(ret != 0, 0L); if (tmp != 0L) { file_priv->is_master = 0U; drm_master_put(& (file_priv->minor)->master); } else { } } else { } out_unlock: mutex_unlock(& dev->master_mutex); return (ret); } } int drm_dropmaster_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { int ret ; { ret = -22; mutex_lock_nested(& dev->master_mutex, 0U); if ((unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { goto out_unlock; } else { } if ((unsigned long )(file_priv->minor)->master == (unsigned long )((struct drm_master *)0)) { goto out_unlock; } else { } ret = 0; if ((unsigned long )(dev->driver)->master_drop != (unsigned long )((void (*)(struct drm_device * , struct drm_file * , bool ))0)) { (*((dev->driver)->master_drop))(dev, file_priv, 0); } else { } drm_master_put(& (file_priv->minor)->master); file_priv->is_master = 0U; out_unlock: mutex_unlock(& dev->master_mutex); return (ret); } } static struct drm_minor **drm_minor_get_slot(struct drm_device *dev , unsigned int type ) { { switch (type) { case 0U: ; return (& dev->primary); case 2U: ; return (& dev->render); case 1U: ; return (& dev->control); default: ; return ((struct drm_minor **)0); } } } static int drm_minor_alloc(struct drm_device *dev , unsigned int type ) { struct drm_minor *minor ; unsigned long flags ; int r ; void *tmp ; raw_spinlock_t *tmp___0 ; long tmp___1 ; bool tmp___2 ; struct drm_minor **tmp___3 ; raw_spinlock_t *tmp___4 ; { tmp = kzalloc(240UL, 208U); minor = (struct drm_minor *)tmp; if ((unsigned long )minor == (unsigned long )((struct drm_minor *)0)) { return (-12); } else { } minor->type = (int )type; minor->dev = dev; idr_preload(208U); tmp___0 = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp___0); r = idr_alloc(& drm_minors_idr, (void *)0, (int )(type * 64U), (int )((type + 1U) * 64U), 0U); spin_unlock_irqrestore(& drm_minor_lock, flags); idr_preload_end(); if (r < 0) { goto err_free; } else { } minor->index = r; minor->kdev = drm_sysfs_minor_alloc(minor); tmp___2 = IS_ERR((void const *)minor->kdev); if ((int )tmp___2) { tmp___1 = PTR_ERR((void const *)minor->kdev); r = (int )tmp___1; goto err_index; } else { } tmp___3 = drm_minor_get_slot(dev, type); *tmp___3 = minor; return (0); err_index: tmp___4 = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp___4); idr_remove(& drm_minors_idr, minor->index); spin_unlock_irqrestore(& drm_minor_lock, flags); err_free: kfree((void const *)minor); return (r); } } static void drm_minor_free(struct drm_device *dev , unsigned int type ) { struct drm_minor **slot ; struct drm_minor *minor ; unsigned long flags ; raw_spinlock_t *tmp ; { slot = drm_minor_get_slot(dev, type); minor = *slot; if ((unsigned long )minor == (unsigned long )((struct drm_minor *)0)) { return; } else { } drm_mode_group_destroy(& minor->mode_group); put_device(minor->kdev); tmp = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp); idr_remove(& drm_minors_idr, minor->index); spin_unlock_irqrestore(& drm_minor_lock, flags); kfree((void const *)minor); *slot = (struct drm_minor *)0; return; } } static int drm_minor_register(struct drm_device *dev , unsigned int type ) { struct drm_minor *minor ; unsigned long flags ; int ret ; long tmp ; struct drm_minor **tmp___0 ; raw_spinlock_t *tmp___1 ; long tmp___2 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_minor_register", "\n"); } else { } tmp___0 = drm_minor_get_slot(dev, type); minor = *tmp___0; if ((unsigned long )minor == (unsigned long )((struct drm_minor *)0)) { return (0); } else { } ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root); if (ret != 0) { drm_err("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); return (ret); } else { } ret = device_add(minor->kdev); if (ret != 0) { goto err_debugfs; } else { } tmp___1 = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp___1); idr_replace(& drm_minors_idr, (void *)minor, minor->index); spin_unlock_irqrestore(& drm_minor_lock, flags); tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_minor_register", "new minor registered %d\n", minor->index); } else { } return (0); err_debugfs: drm_debugfs_cleanup(minor); return (ret); } } static void drm_minor_unregister(struct drm_device *dev , unsigned int type ) { struct drm_minor *minor ; unsigned long flags ; struct drm_minor **tmp ; int tmp___0 ; raw_spinlock_t *tmp___1 ; { tmp = drm_minor_get_slot(dev, type); minor = *tmp; if ((unsigned long )minor == (unsigned long )((struct drm_minor *)0)) { return; } else { tmp___0 = device_is_registered(minor->kdev); if (tmp___0 == 0) { return; } else { } } tmp___1 = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp___1); idr_replace(& drm_minors_idr, (void *)0, minor->index); spin_unlock_irqrestore(& drm_minor_lock, flags); device_del(minor->kdev); dev_set_drvdata(minor->kdev, (void *)0); drm_debugfs_cleanup(minor); return; } } struct drm_minor *drm_minor_acquire(unsigned int minor_id ) { struct drm_minor *minor ; unsigned long flags ; raw_spinlock_t *tmp ; void *tmp___0 ; void *tmp___1 ; void *tmp___2 ; int tmp___3 ; { tmp = spinlock_check(& drm_minor_lock); flags = _raw_spin_lock_irqsave(tmp); tmp___0 = idr_find___2(& drm_minors_idr, (int )minor_id); minor = (struct drm_minor *)tmp___0; if ((unsigned long )minor != (unsigned long )((struct drm_minor *)0)) { drm_dev_ref(minor->dev); } else { } spin_unlock_irqrestore(& drm_minor_lock, flags); if ((unsigned long )minor == (unsigned long )((struct drm_minor *)0)) { tmp___1 = ERR_PTR(-19L); return ((struct drm_minor *)tmp___1); } else { tmp___3 = drm_device_is_unplugged(minor->dev); if (tmp___3 != 0) { drm_dev_unref(minor->dev); tmp___2 = ERR_PTR(-19L); return ((struct drm_minor *)tmp___2); } else { } } return (minor); } } void drm_minor_release(struct drm_minor *minor ) { { drm_dev_unref(minor->dev); return; } } void drm_put_dev(struct drm_device *dev ) { long tmp ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_put_dev", "\n"); } else { } if ((unsigned long )dev == (unsigned long )((struct drm_device *)0)) { drm_err("cleanup called no dev\n"); return; } else { } drm_dev_unregister(dev); drm_dev_unref(dev); return; } } static char const __kstrtab_drm_put_dev[12U] = { 'd', 'r', 'm', '_', 'p', 'u', 't', '_', 'd', 'e', 'v', '\000'}; struct kernel_symbol const __ksymtab_drm_put_dev ; struct kernel_symbol const __ksymtab_drm_put_dev = {(unsigned long )(& drm_put_dev), (char const *)(& __kstrtab_drm_put_dev)}; void drm_unplug_dev(struct drm_device *dev ) { { drm_minor_unregister(dev, 0U); drm_minor_unregister(dev, 2U); drm_minor_unregister(dev, 1U); mutex_lock_nested(& drm_global_mutex, 0U); drm_device_set_unplugged(dev); if (dev->open_count == 0) { drm_put_dev(dev); } else { } mutex_unlock(& drm_global_mutex); return; } } static char const __kstrtab_drm_unplug_dev[15U] = { 'd', 'r', 'm', '_', 'u', 'n', 'p', 'l', 'u', 'g', '_', 'd', 'e', 'v', '\000'}; struct kernel_symbol const __ksymtab_drm_unplug_dev ; struct kernel_symbol const __ksymtab_drm_unplug_dev = {(unsigned long )(& drm_unplug_dev), (char const *)(& __kstrtab_drm_unplug_dev)}; static int drm_fs_cnt ; static struct vfsmount *drm_fs_mnt ; static struct dentry_operations const drm_fs_dops = {0, 0, 0, 0, 0, 0, 0, 0, & simple_dname, 0, 0, 0}; static struct super_operations const drm_fs_sops = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, & simple_statfs, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static struct dentry *drm_fs_mount(struct file_system_type *fs_type , int flags , char const *dev_name___0 , void *data ) { struct dentry *tmp ; { tmp = mount_pseudo(fs_type, (char *)"drm:", & drm_fs_sops, & drm_fs_dops, 16909311UL); return (tmp); } } static struct file_system_type drm_fs_type = {"drm", 0, & drm_fs_mount, & kill_anon_super, & __this_module, 0, {0}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}; static struct inode *drm_fs_inode_new(void) { struct inode *inode ; int r ; void *tmp ; bool tmp___0 ; { r = simple_pin_fs(& drm_fs_type, & drm_fs_mnt, & drm_fs_cnt); if (r < 0) { drm_err("Cannot mount pseudo fs: %d\n", r); tmp = ERR_PTR((long )r); return ((struct inode *)tmp); } else { } inode = alloc_anon_inode(drm_fs_mnt->mnt_sb); tmp___0 = IS_ERR((void const *)inode); if ((int )tmp___0) { simple_release_fs(& drm_fs_mnt, & drm_fs_cnt); } else { } return (inode); } } static void drm_fs_inode_free(struct inode *inode ) { { if ((unsigned long )inode != (unsigned long )((struct inode *)0)) { iput(inode); simple_release_fs(& drm_fs_mnt, & drm_fs_cnt); } else { } return; } } struct drm_device *drm_dev_alloc(struct drm_driver *driver , struct device *parent ) { struct drm_device *dev ; int ret ; void *tmp ; struct lock_class_key __key ; struct lock_class_key __key___0 ; struct lock_class_key __key___1 ; struct lock_class_key __key___2 ; struct lock_class_key __key___3 ; long tmp___0 ; bool tmp___1 ; int tmp___2 ; int tmp___3 ; int tmp___4 ; int tmp___5 ; { tmp = kzalloc(3320UL, 208U); dev = (struct drm_device *)tmp; if ((unsigned long )dev == (unsigned long )((struct drm_device *)0)) { return ((struct drm_device *)0); } else { } kref_init(& dev->ref); dev->dev = parent; dev->driver = driver; INIT_LIST_HEAD(& dev->filelist); INIT_LIST_HEAD(& dev->ctxlist); INIT_LIST_HEAD(& dev->vmalist); INIT_LIST_HEAD(& dev->maplist); INIT_LIST_HEAD(& dev->vblank_event_list); spinlock_check(& dev->buf_lock); __raw_spin_lock_init(& dev->buf_lock.__annonCompField18.rlock, "&(&dev->buf_lock)->rlock", & __key); spinlock_check(& dev->event_lock); __raw_spin_lock_init(& dev->event_lock.__annonCompField18.rlock, "&(&dev->event_lock)->rlock", & __key___0); __mutex_init(& dev->struct_mutex, "&dev->struct_mutex", & __key___1); __mutex_init(& dev->ctxlist_mutex, "&dev->ctxlist_mutex", & __key___2); __mutex_init(& dev->master_mutex, "&dev->master_mutex", & __key___3); dev->anon_inode = drm_fs_inode_new(); tmp___1 = IS_ERR((void const *)dev->anon_inode); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)dev->anon_inode); ret = (int )tmp___0; drm_err("Cannot allocate anonymous inode: %d\n", ret); goto err_free; } else { } tmp___2 = drm_core_check_feature(dev, 8192); if (tmp___2 != 0) { ret = drm_minor_alloc(dev, 1U); if (ret != 0) { goto err_minors; } else { } } else { } tmp___3 = drm_core_check_feature(dev, 32768); if (tmp___3 != 0) { ret = drm_minor_alloc(dev, 2U); if (ret != 0) { goto err_minors; } else { } } else { } ret = drm_minor_alloc(dev, 0U); if (ret != 0) { goto err_minors; } else { } tmp___4 = drm_ht_create(& dev->map_hash, 12U); if (tmp___4 != 0) { goto err_minors; } else { } ret = drm_legacy_ctxbitmap_init(dev); if (ret != 0) { drm_err("Cannot allocate memory for context bitmap.\n"); goto err_ht; } else { } tmp___5 = drm_core_check_feature(dev, 4096); if (tmp___5 != 0) { ret = drm_gem_init(dev); if (ret != 0) { drm_err("Cannot initialize graphics execution manager (GEM)\n"); goto err_ctxbitmap; } else { } } else { } return (dev); err_ctxbitmap: drm_legacy_ctxbitmap_cleanup(dev); err_ht: drm_ht_remove(& dev->map_hash); err_minors: drm_minor_free(dev, 0U); drm_minor_free(dev, 2U); drm_minor_free(dev, 1U); drm_fs_inode_free(dev->anon_inode); err_free: mutex_destroy(& dev->master_mutex); kfree((void const *)dev); return ((struct drm_device *)0); } } static char const __kstrtab_drm_dev_alloc[14U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 'a', 'l', 'l', 'o', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_alloc ; struct kernel_symbol const __ksymtab_drm_dev_alloc = {(unsigned long )(& drm_dev_alloc), (char const *)(& __kstrtab_drm_dev_alloc)}; static void drm_dev_release(struct kref *ref ) { struct drm_device *dev ; struct kref const *__mptr ; int tmp ; { __mptr = (struct kref const *)ref; dev = (struct drm_device *)__mptr + 0xffffffffffffffecUL; tmp = drm_core_check_feature(dev, 4096); if (tmp != 0) { drm_gem_destroy(dev); } else { } drm_legacy_ctxbitmap_cleanup(dev); drm_ht_remove(& dev->map_hash); drm_fs_inode_free(dev->anon_inode); drm_minor_free(dev, 0U); drm_minor_free(dev, 2U); drm_minor_free(dev, 1U); mutex_destroy(& dev->master_mutex); kfree((void const *)dev->unique); kfree((void const *)dev); return; } } void drm_dev_ref(struct drm_device *dev ) { { if ((unsigned long )dev != (unsigned long )((struct drm_device *)0)) { kref_get___0(& dev->ref); } else { } return; } } static char const __kstrtab_drm_dev_ref[12U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 'r', 'e', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_ref ; struct kernel_symbol const __ksymtab_drm_dev_ref = {(unsigned long )(& drm_dev_ref), (char const *)(& __kstrtab_drm_dev_ref)}; void drm_dev_unref(struct drm_device *dev ) { { if ((unsigned long )dev != (unsigned long )((struct drm_device *)0)) { kref_put___0(& dev->ref, & drm_dev_release); } else { } return; } } static char const __kstrtab_drm_dev_unref[14U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 'u', 'n', 'r', 'e', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_unref ; struct kernel_symbol const __ksymtab_drm_dev_unref = {(unsigned long )(& drm_dev_unref), (char const *)(& __kstrtab_drm_dev_unref)}; int drm_dev_register(struct drm_device *dev , unsigned long flags ) { int ret ; int tmp ; { mutex_lock_nested(& drm_global_mutex, 0U); ret = drm_minor_register(dev, 1U); if (ret != 0) { goto err_minors; } else { } ret = drm_minor_register(dev, 2U); if (ret != 0) { goto err_minors; } else { } ret = drm_minor_register(dev, 0U); if (ret != 0) { goto err_minors; } else { } if ((unsigned long )(dev->driver)->load != (unsigned long )((int (*)(struct drm_device * , unsigned long ))0)) { ret = (*((dev->driver)->load))(dev, flags); if (ret != 0) { goto err_minors; } else { } } else { } tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { ret = drm_mode_group_init_legacy_group(dev, & (dev->primary)->mode_group); if (ret != 0) { goto err_unload; } else { } } else { } ret = 0; goto out_unlock; err_unload: ; if ((unsigned long )(dev->driver)->unload != (unsigned long )((int (*)(struct drm_device * ))0)) { (*((dev->driver)->unload))(dev); } else { } err_minors: drm_minor_unregister(dev, 0U); drm_minor_unregister(dev, 2U); drm_minor_unregister(dev, 1U); out_unlock: mutex_unlock(& drm_global_mutex); return (ret); } } static char const __kstrtab_drm_dev_register[17U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_register ; struct kernel_symbol const __ksymtab_drm_dev_register = {(unsigned long )(& drm_dev_register), (char const *)(& __kstrtab_drm_dev_register)}; void drm_dev_unregister(struct drm_device *dev ) { struct drm_map_list *r_list ; struct drm_map_list *list_temp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { drm_lastclose(dev); if ((unsigned long )(dev->driver)->unload != (unsigned long )((int (*)(struct drm_device * ))0)) { (*((dev->driver)->unload))(dev); } else { } if ((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0)) { drm_pci_agp_destroy(dev); } else { } drm_vblank_cleanup(dev); __mptr = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr; __mptr___0 = (struct list_head const *)r_list->head.next; list_temp = (struct drm_map_list *)__mptr___0; goto ldv_39581; ldv_39580: drm_legacy_rmmap(dev, r_list->map); r_list = list_temp; __mptr___1 = (struct list_head const *)list_temp->head.next; list_temp = (struct drm_map_list *)__mptr___1; ldv_39581: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39580; } else { } drm_minor_unregister(dev, 0U); drm_minor_unregister(dev, 2U); drm_minor_unregister(dev, 1U); return; } } static char const __kstrtab_drm_dev_unregister[19U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 'u', 'n', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_unregister ; struct kernel_symbol const __ksymtab_drm_dev_unregister = {(unsigned long )(& drm_dev_unregister), (char const *)(& __kstrtab_drm_dev_unregister)}; int drm_dev_set_unique(struct drm_device *dev , char const *fmt , ...) { va_list ap ; { kfree((void const *)dev->unique); ldv__builtin_va_start((va_list *)(& ap)); dev->unique = kvasprintf(208U, fmt, (va_list *)(& ap)); ldv__builtin_va_end((va_list *)(& ap)); return ((unsigned long )dev->unique != (unsigned long )((char *)0) ? 0 : -12); } } static char const __kstrtab_drm_dev_set_unique[19U] = { 'd', 'r', 'm', '_', 'd', 'e', 'v', '_', 's', 'e', 't', '_', 'u', 'n', 'i', 'q', 'u', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_dev_set_unique ; struct kernel_symbol const __ksymtab_drm_dev_set_unique = {(unsigned long )(& drm_dev_set_unique), (char const *)(& __kstrtab_drm_dev_set_unique)}; static int drm_stub_open(struct inode *inode , struct file *filp ) { struct file_operations const *new_fops ; struct drm_minor *minor ; int err ; long tmp ; unsigned int tmp___0 ; long tmp___1 ; bool tmp___2 ; bool tmp___4 ; struct file *__file ; struct file_operations const *tmp___5 ; long tmp___6 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_stub_open", "\n"); } else { } mutex_lock_nested(& drm_global_mutex, 0U); tmp___0 = iminor((struct inode const *)inode); minor = drm_minor_acquire(tmp___0); tmp___2 = IS_ERR((void const *)minor); if ((int )tmp___2) { tmp___1 = PTR_ERR((void const *)minor); err = (int )tmp___1; goto out_unlock; } else { } if ((unsigned long )((minor->dev)->driver)->fops != (unsigned long )((struct file_operations const *)0)) { tmp___4 = ldv_try_module_get_168((((minor->dev)->driver)->fops)->owner); if ((int )tmp___4) { new_fops = ((minor->dev)->driver)->fops; } else { new_fops = (struct file_operations const *)0; } } else { new_fops = (struct file_operations const *)0; } if ((unsigned long )new_fops == (unsigned long )((struct file_operations const *)0)) { err = -19; goto out_release; } else { } __file = filp; if ((unsigned long )__file->f_op != (unsigned long )((struct file_operations const *)0)) { ldv_module_put_169((__file->f_op)->owner); } else { } tmp___5 = new_fops; __file->f_op = tmp___5; tmp___6 = ldv__builtin_expect((unsigned long )tmp___5 == (unsigned long )((struct file_operations const *)0), 0L); if (tmp___6 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_drv.c"), "i" (829), "i" (12UL)); ldv_39614: ; goto ldv_39614; } else { } if ((unsigned long )(filp->f_op)->open != (unsigned long )((int (*/* const */)(struct inode * , struct file * ))0)) { err = (*((filp->f_op)->open))(inode, filp); } else { err = 0; } out_release: drm_minor_release(minor); out_unlock: mutex_unlock(& drm_global_mutex); return (err); } } static struct file_operations const drm_stub_fops = {& __this_module, & noop_llseek, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, & drm_stub_open, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static int drm_core_init(void) { int ret ; int tmp ; long tmp___0 ; bool tmp___1 ; { ret = -12; drm_global_init(); drm_connector_ida_init(); idr_init(& drm_minors_idr); tmp = ldv_register_chrdev_170(226U, "drm", & drm_stub_fops); if (tmp != 0) { goto err_p1; } else { } drm_class = drm_sysfs_create(& __this_module, (char *)"drm"); tmp___1 = IS_ERR((void const *)drm_class); if ((int )tmp___1) { printk("\vDRM: Error creating drm class.\n"); tmp___0 = PTR_ERR((void const *)drm_class); ret = (int )tmp___0; goto err_p2; } else { } drm_debugfs_root = debugfs_create_dir("dri", (struct dentry *)0); if ((unsigned long )drm_debugfs_root == (unsigned long )((struct dentry *)0)) { drm_err("Cannot create /sys/kernel/debug/dri\n"); ret = -1; goto err_p3; } else { } printk("\016[drm] Initialized %s %d.%d.%d %s\n", (char *)"drm", 1, 1, 0, (char *)"20060810"); return (0); err_p3: drm_sysfs_destroy(); err_p2: ldv_unregister_chrdev_171(226U, "drm"); idr_destroy(& drm_minors_idr); err_p1: ; return (ret); } } static void drm_core_exit(void) { { debugfs_remove(drm_debugfs_root); drm_sysfs_destroy(); ldv_unregister_chrdev_171(226U, "drm"); drm_connector_ida_destroy(); idr_destroy(& drm_minors_idr); return; } } int ldv_retval_0 ; int ldv_retval_16 ; extern void ldv_initialize(void) ; extern int ldv_release_30(void) ; void ldv_check_final_state(void) ; void ldv_file_operations_30(void) { void *tmp ; void *tmp___0 ; { tmp = ldv_init_zalloc(1000UL); drm_stub_fops_group1 = (struct inode *)tmp; tmp___0 = ldv_init_zalloc(504UL); drm_stub_fops_group2 = (struct file *)tmp___0; return; } } void ldv_main_exported_27(void) ; void ldv_main_exported_28(void) ; void ldv_main_exported_26(void) ; void ldv_main_exported_29(void) ; void ldv_main_exported_25(void) ; void ldv_main_exported_21(void) ; void ldv_main_exported_17(void) ; void ldv_main_exported_20(void) ; void ldv_main_exported_15(void) ; void ldv_main_exported_14(void) ; void ldv_main_exported_22(void) ; void ldv_main_exported_18(void) ; void ldv_main_exported_24(void) ; void ldv_main_exported_23(void) ; void ldv_main_exported_13(void) ; void ldv_main_exported_16(void) ; void ldv_main_exported_19(void) ; void ldv_main_exported_8(void) ; void ldv_main_exported_6(void) ; void ldv_main_exported_4(void) ; void ldv_main_exported_7(void) ; void ldv_main_exported_9(void) ; void ldv_main_exported_5(void) ; void ldv_main_exported_11(void) ; void ldv_main_exported_10(void) ; void ldv_main_exported_12(void) ; void ldv_main_exported_3(void) ; int main(void) { int ldvarg1 ; struct dentry *ldvarg0 ; void *tmp ; char *ldvarg2 ; void *tmp___0 ; struct kstatfs *ldvarg4 ; void *tmp___1 ; struct dentry *ldvarg3 ; void *tmp___2 ; int ldvarg18 ; loff_t ldvarg19 ; int ldvarg45 ; struct file_system_type *ldvarg43 ; void *tmp___3 ; void *ldvarg42 ; void *tmp___4 ; char *ldvarg44 ; void *tmp___5 ; struct super_block *ldvarg46 ; void *tmp___6 ; int tmp___7 ; int tmp___8 ; int tmp___9 ; int tmp___10 ; int tmp___11 ; int tmp___12 ; { tmp = ldv_init_zalloc(320UL); ldvarg0 = (struct dentry *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg2 = (char *)tmp___0; tmp___1 = __VERIFIER_nondet_pointer(); ldvarg4 = (struct kstatfs *)tmp___1; tmp___2 = ldv_init_zalloc(320UL); ldvarg3 = (struct dentry *)tmp___2; tmp___3 = ldv_init_zalloc(128UL); ldvarg43 = (struct file_system_type *)tmp___3; tmp___4 = ldv_init_zalloc(1UL); ldvarg42 = tmp___4; tmp___5 = ldv_init_zalloc(1UL); ldvarg44 = (char *)tmp___5; tmp___6 = ldv_init_zalloc(2112UL); ldvarg46 = (struct super_block *)tmp___6; ldv_initialize(); ldv_memset((void *)(& ldvarg1), 0, 4UL); ldv_memset((void *)(& ldvarg18), 0, 4UL); ldv_memset((void *)(& ldvarg19), 0, 8UL); ldv_memset((void *)(& ldvarg45), 0, 4UL); ldv_state_variable_33 = 0; ldv_state_variable_32 = 0; ldv_state_variable_21 = 0; ldv_state_variable_7 = 0; ldv_state_variable_26 = 0; ldv_state_variable_17 = 0; timer_init_2(); ldv_state_variable_2 = 1; work_init_1(); ldv_state_variable_1 = 1; ldv_state_variable_18 = 0; ldv_state_variable_30 = 0; ldv_state_variable_16 = 0; ldv_state_variable_27 = 0; ldv_state_variable_25 = 0; ldv_state_variable_28 = 0; ldv_state_variable_20 = 0; ldv_state_variable_14 = 0; ldv_state_variable_24 = 0; ldv_state_variable_10 = 0; ldv_state_variable_31 = 0; ldv_state_variable_11 = 0; ldv_state_variable_22 = 0; ref_cnt = 0; ldv_state_variable_0 = 1; ldv_state_variable_13 = 0; ldv_state_variable_23 = 0; ldv_state_variable_29 = 0; ldv_state_variable_6 = 0; ldv_state_variable_3 = 0; ldv_state_variable_9 = 0; ldv_state_variable_12 = 0; ldv_state_variable_15 = 0; ldv_state_variable_8 = 0; ldv_state_variable_4 = 0; ldv_state_variable_19 = 0; ldv_state_variable_5 = 0; ldv_39784: tmp___7 = __VERIFIER_nondet_int(); switch (tmp___7) { case 0: ; if (ldv_state_variable_33 != 0) { tmp___8 = __VERIFIER_nondet_int(); switch (tmp___8) { case 0: ; if (ldv_state_variable_33 == 1) { simple_dname(ldvarg0, ldvarg2, ldvarg1); ldv_state_variable_33 = 1; } else { } goto ldv_39730; default: ldv_stop(); } ldv_39730: ; } else { } goto ldv_39732; case 1: ; if (ldv_state_variable_32 != 0) { tmp___9 = __VERIFIER_nondet_int(); switch (tmp___9) { case 0: ; if (ldv_state_variable_32 == 1) { simple_statfs(ldvarg3, ldvarg4); ldv_state_variable_32 = 1; } else { } goto ldv_39735; default: ldv_stop(); } ldv_39735: ; } else { } goto ldv_39732; case 2: ; if (ldv_state_variable_21 != 0) { ldv_main_exported_21(); } else { } goto ldv_39732; case 3: ; if (ldv_state_variable_7 != 0) { ldv_main_exported_7(); } else { } goto ldv_39732; case 4: ; if (ldv_state_variable_26 != 0) { ldv_main_exported_26(); } else { } goto ldv_39732; case 5: ; if (ldv_state_variable_17 != 0) { ldv_main_exported_17(); } else { } goto ldv_39732; case 6: ; goto ldv_39732; case 7: ; goto ldv_39732; case 8: ; if (ldv_state_variable_18 != 0) { ldv_main_exported_18(); } else { } goto ldv_39732; case 9: ; if (ldv_state_variable_30 != 0) { tmp___10 = __VERIFIER_nondet_int(); switch (tmp___10) { case 0: ; if (ldv_state_variable_30 == 2) { noop_llseek(drm_stub_fops_group2, ldvarg19, ldvarg18); ldv_state_variable_30 = 2; } else { } goto ldv_39746; case 1: ; if (ldv_state_variable_30 == 1) { ldv_retval_0 = drm_stub_open(drm_stub_fops_group1, drm_stub_fops_group2); if (ldv_retval_0 == 0) { ldv_state_variable_30 = 2; ref_cnt = ref_cnt + 1; } else { } } else { } goto ldv_39746; case 2: ; if (ldv_state_variable_30 == 2) { ldv_release_30(); ldv_state_variable_30 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39746; default: ldv_stop(); } ldv_39746: ; } else { } goto ldv_39732; case 10: ; if (ldv_state_variable_16 != 0) { ldv_main_exported_16(); } else { } goto ldv_39732; case 11: ; if (ldv_state_variable_27 != 0) { ldv_main_exported_27(); } else { } goto ldv_39732; case 12: ; if (ldv_state_variable_25 != 0) { ldv_main_exported_25(); } else { } goto ldv_39732; case 13: ; if (ldv_state_variable_28 != 0) { ldv_main_exported_28(); } else { } goto ldv_39732; case 14: ; if (ldv_state_variable_20 != 0) { ldv_main_exported_20(); } else { } goto ldv_39732; case 15: ; if (ldv_state_variable_14 != 0) { ldv_main_exported_14(); } else { } goto ldv_39732; case 16: ; if (ldv_state_variable_24 != 0) { ldv_main_exported_24(); } else { } goto ldv_39732; case 17: ; if (ldv_state_variable_10 != 0) { ldv_main_exported_10(); } else { } goto ldv_39732; case 18: ; if (ldv_state_variable_31 != 0) { tmp___11 = __VERIFIER_nondet_int(); switch (tmp___11) { case 0: ; if (ldv_state_variable_31 == 1) { kill_anon_super(ldvarg46); ldv_state_variable_31 = 1; } else { } goto ldv_39760; case 1: ; if (ldv_state_variable_31 == 1) { drm_fs_mount(ldvarg43, ldvarg45, (char const *)ldvarg44, ldvarg42); ldv_state_variable_31 = 1; } else { } goto ldv_39760; default: ldv_stop(); } ldv_39760: ; } else { } goto ldv_39732; case 19: ; if (ldv_state_variable_11 != 0) { ldv_main_exported_11(); } else { } goto ldv_39732; case 20: ; if (ldv_state_variable_22 != 0) { ldv_main_exported_22(); } else { } goto ldv_39732; case 21: ; if (ldv_state_variable_0 != 0) { tmp___12 = __VERIFIER_nondet_int(); switch (tmp___12) { case 0: ; if (ldv_state_variable_0 == 2 && ref_cnt == 0) { drm_core_exit(); ldv_state_variable_0 = 3; goto ldv_final; } else { } goto ldv_39768; case 1: ; if (ldv_state_variable_0 == 1) { ldv_retval_16 = drm_core_init(); if (ldv_retval_16 != 0) { ldv_state_variable_0 = 3; goto ldv_final; } else { } if (ldv_retval_16 == 0) { ldv_state_variable_0 = 2; ldv_state_variable_5 = 1; ldv_initialize_trace_event_class_5(); ldv_state_variable_31 = 1; ldv_state_variable_19 = 1; ldv_state_variable_24 = 1; ldv_state_variable_4 = 1; ldv_initialize_trace_event_class_4(); ldv_state_variable_8 = 1; ldv_state_variable_20 = 1; ldv_state_variable_15 = 1; ldv_state_variable_14 = 1; ldv_state_variable_9 = 1; ldv_state_variable_3 = 1; ldv_initialize_dma_buf_ops_3(); ldv_state_variable_28 = 1; ldv_initialize_vm_operations_struct_28(); ldv_state_variable_6 = 1; ldv_initialize_trace_event_class_6(); ldv_state_variable_25 = 1; ldv_dev_pm_ops_25(); ldv_state_variable_27 = 1; ldv_initialize_vm_operations_struct_27(); ldv_state_variable_29 = 1; ldv_initialize_vm_operations_struct_29(); ldv_state_variable_13 = 1; ldv_state_variable_16 = 1; ldv_state_variable_23 = 1; ldv_initialize_device_attribute_23(); ldv_state_variable_18 = 1; ldv_state_variable_22 = 1; ldv_state_variable_17 = 1; ldv_state_variable_26 = 1; ldv_initialize_vm_operations_struct_26(); ldv_state_variable_7 = 1; ldv_state_variable_21 = 1; ldv_state_variable_32 = 1; ldv_state_variable_33 = 1; } else { } } else { } goto ldv_39768; default: ldv_stop(); } ldv_39768: ; } else { } goto ldv_39732; case 22: ; if (ldv_state_variable_13 != 0) { ldv_main_exported_13(); } else { } goto ldv_39732; case 23: ; if (ldv_state_variable_23 != 0) { ldv_main_exported_23(); } else { } goto ldv_39732; case 24: ; if (ldv_state_variable_29 != 0) { ldv_main_exported_29(); } else { } goto ldv_39732; case 25: ; if (ldv_state_variable_6 != 0) { ldv_main_exported_6(); } else { } goto ldv_39732; case 26: ; if (ldv_state_variable_3 != 0) { ldv_main_exported_3(); } else { } goto ldv_39732; case 27: ; if (ldv_state_variable_9 != 0) { ldv_main_exported_9(); } else { } goto ldv_39732; case 28: ; if (ldv_state_variable_12 != 0) { ldv_main_exported_12(); } else { } goto ldv_39732; case 29: ; if (ldv_state_variable_15 != 0) { ldv_main_exported_15(); } else { } goto ldv_39732; case 30: ; if (ldv_state_variable_8 != 0) { ldv_main_exported_8(); } else { } goto ldv_39732; case 31: ; if (ldv_state_variable_4 != 0) { ldv_main_exported_4(); } else { } goto ldv_39732; case 32: ; if (ldv_state_variable_19 != 0) { ldv_main_exported_19(); } else { } goto ldv_39732; case 33: ; if (ldv_state_variable_5 != 0) { ldv_main_exported_5(); } else { } goto ldv_39732; default: ldv_stop(); } ldv_39732: ; goto ldv_39784; ldv_final: ldv_check_final_state(); return 0; } } bool ldv_queue_work_on_163(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_164(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_165(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_166(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_167(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_try_module_get_168(struct module *ldv_func_arg1 ) { int tmp ; { tmp = ldv_try_module_get(ldv_func_arg1); return (tmp != 0); } } void ldv_module_put_169(struct module *ldv_func_arg1 ) { { ldv_module_put(ldv_func_arg1); return; } } __inline static int ldv_register_chrdev_170(unsigned int major , char const *name , struct file_operations const *fops ) { ldv_func_ret_type___3 ldv_func_res ; int tmp ; { tmp = register_chrdev(major, name, fops); ldv_func_res = tmp; ldv_state_variable_30 = 1; ldv_file_operations_30(); return (ldv_func_res); } } __inline static void ldv_unregister_chrdev_171(unsigned int major , char const *name ) { { unregister_chrdev(major, name); ldv_state_variable_30 = 0; return; } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static unsigned long cachemode2protval___0(enum page_cache_mode pcm ) { long tmp ; { tmp = ldv__builtin_expect((unsigned int )pcm == 0U, 1L); if (tmp != 0L) { return (0UL); } else { } return ((unsigned long )__cachemode2pte_tbl[(unsigned int )pcm]); } } extern unsigned long __phys_addr(unsigned long ) ; extern void dump_page(struct page * , char const * ) ; bool ldv_queue_work_on_185(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_187(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_186(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_189(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_188(struct workqueue_struct *ldv_func_arg1 ) ; __inline static phys_addr_t virt_to_phys(void volatile *address ) { unsigned long tmp ; { tmp = __phys_addr((unsigned long )address); return ((phys_addr_t )tmp); } } extern int seq_printf(struct seq_file * , char const * , ...) ; extern void *high_memory ; __inline static int PageTail(struct page const *page ) { int tmp ; { tmp = constant_test_bit(15L, (unsigned long const volatile *)(& page->flags)); return (tmp); } } extern struct page *vmalloc_to_page(void const * ) ; __inline static struct page *compound_head_by_tail(struct page *tail ) { struct page *head ; int tmp ; long tmp___0 ; { head = tail->__annonCompField46.first_page; __asm__ volatile ("": : : "memory"); tmp = PageTail((struct page const *)tail); tmp___0 = ldv__builtin_expect(tmp != 0, 1L); if (tmp___0 != 0L) { return (head); } else { } return (tail); } } __inline static struct page *compound_head(struct page *page ) { struct page *tmp ; int tmp___0 ; long tmp___1 ; { tmp___0 = PageTail((struct page const *)page); tmp___1 = ldv__builtin_expect(tmp___0 != 0, 0L); if (tmp___1 != 0L) { tmp = compound_head_by_tail(page); return (tmp); } else { } return (page); } } __inline static int page_count(struct page *page ) { struct page *tmp ; int tmp___0 ; { tmp = compound_head(page); tmp___0 = atomic_read((atomic_t const *)(& tmp->__annonCompField42.__annonCompField41.__annonCompField40._count)); return (tmp___0); } } extern bool __get_page_tail(struct page * ) ; __inline static void get_page(struct page *page ) { bool tmp ; long tmp___0 ; int tmp___1 ; long tmp___2 ; int tmp___3 ; long tmp___4 ; { tmp___1 = PageTail((struct page const *)page); tmp___2 = ldv__builtin_expect(tmp___1 != 0, 0L); if (tmp___2 != 0L) { tmp = __get_page_tail(page); tmp___0 = ldv__builtin_expect((long )tmp, 1L); if (tmp___0 != 0L) { return; } else { } } else { } tmp___3 = atomic_read((atomic_t const *)(& page->__annonCompField42.__annonCompField41.__annonCompField40._count)); tmp___4 = ldv__builtin_expect(tmp___3 <= 0, 0L); if (tmp___4 != 0L) { dump_page(page, "VM_BUG_ON_PAGE(atomic_read(&page->_count) <= 0)"); __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/linux/mm.h"), "i" (543), "i" (12UL)); ldv_22804: ; goto ldv_22804; } else { } atomic_inc(& page->__annonCompField42.__annonCompField41.__annonCompField40._count); return; } } extern int remap_pfn_range(struct vm_area_struct * , unsigned long , unsigned long , unsigned long , pgprot_t ) ; int drm_ht_find_item(struct drm_open_hash *ht , unsigned long key , struct drm_hash_item **item ) ; int drm_vma_info(struct seq_file *m , void *data ) ; int drm_legacy_mmap(struct file *filp , struct vm_area_struct *vma ) ; static void drm_vm_open(struct vm_area_struct *vma ) ; static void drm_vm_close(struct vm_area_struct *vma ) ; static pgprot_t drm_io_prot(struct drm_local_map *map , struct vm_area_struct *vma ) { pgprot_t tmp ; pgprot_t tmp___0 ; pgprot_t __constr_expr_0 ; unsigned long tmp___1 ; { tmp___0 = vm_get_page_prot(vma->vm_flags); tmp = tmp___0; if ((unsigned int )map->type == 1U && ((unsigned int )map->flags & 16U) == 0U) { if ((unsigned int )boot_cpu_data.x86 > 3U) { tmp___1 = cachemode2protval___0(2); __constr_expr_0.pgprot = tmp.pgprot | tmp___1; tmp = __constr_expr_0; } else { tmp = tmp; } } else { tmp = pgprot_writecombine(tmp); } return (tmp); } } static pgprot_t drm_dma_prot(uint32_t map_type , struct vm_area_struct *vma ) { pgprot_t tmp ; pgprot_t tmp___0 ; { tmp___0 = vm_get_page_prot(vma->vm_flags); tmp = tmp___0; return (tmp); } } static int drm_do_vm_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_local_map *map ; struct drm_map_list *r_list ; struct drm_hash_item *hash ; int tmp ; struct drm_hash_item const *__mptr ; resource_size_t offset ; resource_size_t baddr ; struct drm_agp_mem *agpmem ; struct page *page ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; int tmp___0 ; long tmp___1 ; { priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; map = (struct drm_local_map *)0; if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0)) { goto vm_fault_error; } else { } if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->cant_use_aperture == 0) { goto vm_fault_error; } else { } tmp = drm_ht_find_item(& dev->map_hash, vma->vm_pgoff, & hash); if (tmp != 0) { goto vm_fault_error; } else { } __mptr = (struct drm_hash_item const *)hash; r_list = (struct drm_map_list *)__mptr + 0xfffffffffffffff0UL; map = r_list->map; if ((unsigned long )map != (unsigned long )((struct drm_local_map *)0) && (unsigned int )map->type == 3U) { offset = (resource_size_t )((unsigned long )vmf->virtual_address - vma->vm_start); baddr = map->offset + offset; __mptr___0 = (struct list_head const *)(dev->agp)->memory.next; agpmem = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; goto ldv_39112; ldv_39111: ; if ((unsigned long long )agpmem->bound <= baddr && (unsigned long long )(agpmem->bound + (unsigned long )agpmem->pages * 4096UL) > baddr) { goto ldv_39110; } else { } __mptr___1 = (struct list_head const *)agpmem->head.next; agpmem = (struct drm_agp_mem *)__mptr___1 + 0xffffffffffffffe0UL; ldv_39112: ; if ((unsigned long )(& agpmem->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_39111; } else { } ldv_39110: ; if ((unsigned long )(& agpmem->head) == (unsigned long )(& (dev->agp)->memory)) { goto vm_fault_error; } else { } offset = (baddr - (unsigned long long )agpmem->bound) >> 12; page = *((agpmem->memory)->pages + offset); get_page(page); vmf->page = page; tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { tmp___0 = page_count(page); drm_ut_debug_printk("drm_do_vm_fault", "baddr = 0x%llx page = 0x%p, offset = 0x%llx, count=%d\n", baddr, *((agpmem->memory)->pages + offset), offset, tmp___0); } else { } return (0); } else { } vm_fault_error: ; return (2); } } static int drm_do_vm_shm_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { struct drm_local_map *map ; unsigned long offset ; unsigned long i ; struct page *page ; long tmp ; { map = (struct drm_local_map *)vma->vm_private_data; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { return (2); } else { } offset = (unsigned long )vmf->virtual_address - vma->vm_start; i = (unsigned long )map->handle + offset; page = vmalloc_to_page((void const *)i); if ((unsigned long )page == (unsigned long )((struct page *)0)) { return (2); } else { } get_page(page); vmf->page = page; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_do_vm_shm_fault", "shm_fault 0x%lx\n", offset); } else { } return (0); } } static void drm_vm_shm_close(struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_vma_entry *pt ; struct drm_vma_entry *temp ; struct drm_local_map *map ; struct drm_map_list *r_list ; int found_maps ; long 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 ; drm_dma_handle_t dmah ; { priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; found_maps = 0; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_vm_shm_close", "0x%08lx,0x%08lx\n", vma->vm_start, vma->vm_end - vma->vm_start); } else { } map = (struct drm_local_map *)vma->vm_private_data; mutex_lock_nested(& dev->struct_mutex, 0U); __mptr = (struct list_head const *)dev->vmalist.next; pt = (struct drm_vma_entry *)__mptr; __mptr___0 = (struct list_head const *)pt->head.next; temp = (struct drm_vma_entry *)__mptr___0; goto ldv_39141; ldv_39140: ; if ((unsigned long )(pt->vma)->vm_private_data == (unsigned long )((void *)map)) { found_maps = found_maps + 1; } else { } if ((unsigned long )pt->vma == (unsigned long )vma) { list_del(& pt->head); kfree((void const *)pt); } else { } pt = temp; __mptr___1 = (struct list_head const *)temp->head.next; temp = (struct drm_vma_entry *)__mptr___1; ldv_39141: ; if ((unsigned long )(& pt->head) != (unsigned long )(& dev->vmalist)) { goto ldv_39140; } else { } if (found_maps == 1 && ((unsigned int )map->flags & 64U) != 0U) { found_maps = 0; __mptr___2 = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr___2; goto ldv_39148; ldv_39147: ; if ((unsigned long )r_list->map == (unsigned long )map) { found_maps = found_maps + 1; } else { } __mptr___3 = (struct list_head const *)r_list->head.next; r_list = (struct drm_map_list *)__mptr___3; ldv_39148: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39147; } else { } if (found_maps == 0) { switch ((unsigned int )map->type) { case 1U: ; case 0U: arch_phys_wc_del(map->mtrr); iounmap((void volatile *)map->handle); goto ldv_39153; case 2U: vfree((void const *)map->handle); goto ldv_39153; case 3U: ; case 4U: ; goto ldv_39153; case 5U: dmah.vaddr = map->handle; dmah.busaddr = map->offset; dmah.size = map->size; __drm_legacy_pci_free(dev, & dmah); goto ldv_39153; } ldv_39153: kfree((void const *)map); } else { } } else { } mutex_unlock(& dev->struct_mutex); return; } } static int drm_do_vm_dma_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_device_dma *dma ; unsigned long offset ; unsigned long page_nr ; struct page *page ; unsigned long tmp ; long tmp___0 ; { priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; dma = dev->dma; if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { return (2); } else { } if ((unsigned long )dma->pagelist == (unsigned long )((unsigned long *)0UL)) { return (2); } else { } offset = (unsigned long )vmf->virtual_address - vma->vm_start; page_nr = offset >> 12; tmp = __phys_addr(*(dma->pagelist + page_nr)); page = (struct page *)-24189255811072L + (tmp >> 12); get_page(page); vmf->page = page; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_do_vm_dma_fault", "dma_fault 0x%lx (page %lu)\n", offset, page_nr); } else { } return (0); } } static int drm_do_vm_sg_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { struct drm_local_map *map ; struct drm_file *priv ; struct drm_device *dev ; struct drm_sg_mem *entry ; unsigned long offset ; unsigned long map_offset ; unsigned long page_offset___0 ; struct page *page ; { map = (struct drm_local_map *)vma->vm_private_data; priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; entry = dev->sg; if ((unsigned long )entry == (unsigned long )((struct drm_sg_mem *)0)) { return (2); } else { } if ((unsigned long )entry->pagelist == (unsigned long )((struct page **)0)) { return (2); } else { } offset = (unsigned long )vmf->virtual_address - vma->vm_start; map_offset = (unsigned long )(map->offset - (unsigned long long )(dev->sg)->virtual); page_offset___0 = (offset >> 12) + (map_offset >> 12); page = *(entry->pagelist + page_offset___0); get_page(page); vmf->page = page; return (0); } } static int drm_vm_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { int tmp ; { tmp = drm_do_vm_fault(vma, vmf); return (tmp); } } static int drm_vm_shm_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { int tmp ; { tmp = drm_do_vm_shm_fault(vma, vmf); return (tmp); } } static int drm_vm_dma_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { int tmp ; { tmp = drm_do_vm_dma_fault(vma, vmf); return (tmp); } } static int drm_vm_sg_fault(struct vm_area_struct *vma , struct vm_fault *vmf ) { int tmp ; { tmp = drm_do_vm_sg_fault(vma, vmf); return (tmp); } } static struct vm_operations_struct const drm_vm_ops = {& drm_vm_open, & drm_vm_close, & drm_vm_fault, 0, 0, 0, 0, 0, 0, 0, 0}; static struct vm_operations_struct const drm_vm_shm_ops = {& drm_vm_open, & drm_vm_shm_close, & drm_vm_shm_fault, 0, 0, 0, 0, 0, 0, 0, 0}; static struct vm_operations_struct const drm_vm_dma_ops = {& drm_vm_open, & drm_vm_close, & drm_vm_dma_fault, 0, 0, 0, 0, 0, 0, 0, 0}; static struct vm_operations_struct const drm_vm_sg_ops = {& drm_vm_open, & drm_vm_close, & drm_vm_sg_fault, 0, 0, 0, 0, 0, 0, 0, 0}; void drm_vm_open_locked(struct drm_device *dev , struct vm_area_struct *vma ) { struct drm_vma_entry *vma_entry ; long tmp ; void *tmp___0 ; struct task_struct *tmp___1 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_vm_open_locked", "0x%08lx,0x%08lx\n", vma->vm_start, vma->vm_end - vma->vm_start); } else { } tmp___0 = kmalloc(32UL, 208U); vma_entry = (struct drm_vma_entry *)tmp___0; if ((unsigned long )vma_entry != (unsigned long )((struct drm_vma_entry *)0)) { vma_entry->vma = vma; tmp___1 = get_current(); vma_entry->pid = tmp___1->pid; list_add(& vma_entry->head, & dev->vmalist); } else { } return; } } static void drm_vm_open(struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; { priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; mutex_lock_nested(& dev->struct_mutex, 0U); drm_vm_open_locked(dev, vma); mutex_unlock(& dev->struct_mutex); return; } } void drm_vm_close_locked(struct drm_device *dev , struct vm_area_struct *vma ) { struct drm_vma_entry *pt ; struct drm_vma_entry *temp ; long tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_vm_close_locked", "0x%08lx,0x%08lx\n", vma->vm_start, vma->vm_end - vma->vm_start); } else { } __mptr = (struct list_head const *)dev->vmalist.next; pt = (struct drm_vma_entry *)__mptr; __mptr___0 = (struct list_head const *)pt->head.next; temp = (struct drm_vma_entry *)__mptr___0; goto ldv_39227; ldv_39226: ; if ((unsigned long )pt->vma == (unsigned long )vma) { list_del(& pt->head); kfree((void const *)pt); goto ldv_39225; } else { } pt = temp; __mptr___1 = (struct list_head const *)temp->head.next; temp = (struct drm_vma_entry *)__mptr___1; ldv_39227: ; if ((unsigned long )(& pt->head) != (unsigned long )(& dev->vmalist)) { goto ldv_39226; } else { } ldv_39225: ; return; } } static void drm_vm_close(struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; { priv = (struct drm_file *)(vma->vm_file)->private_data; dev = (priv->minor)->dev; mutex_lock_nested(& dev->struct_mutex, 0U); drm_vm_close_locked(dev, vma); mutex_unlock(& dev->struct_mutex); return; } } static int drm_mmap_dma(struct file *filp , struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_device_dma *dma ; unsigned long length ; long tmp ; bool tmp___0 ; int tmp___1 ; { priv = (struct drm_file *)filp->private_data; length = vma->vm_end - vma->vm_start; dev = (priv->minor)->dev; dma = dev->dma; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_mmap_dma", "start = 0x%lx, end = 0x%lx, page offset = 0x%lx\n", vma->vm_start, vma->vm_end, vma->vm_pgoff); } else { } if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0) || length >> 12 != (unsigned long )dma->page_count) { return (-22); } else { } tmp___0 = capable(21); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1 && ((unsigned int )dma->flags & 8U) != 0U) { vma->vm_flags = vma->vm_flags & 0xffffffffffffffddUL; vma->vm_page_prot.pgprot = vma->vm_page_prot.pgprot & 0xfffffffffffffffdUL; } else { } vma->vm_ops = & drm_vm_dma_ops; vma->vm_flags = vma->vm_flags | 67371008UL; drm_vm_open_locked(dev, vma); return (0); } } static resource_size_t drm_core_get_reg_ofs(struct drm_device *dev ) { { return (0ULL); } } static int drm_mmap_locked(struct file *filp , struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; struct drm_local_map *map ; resource_size_t offset ; struct drm_hash_item *hash ; long tmp ; int tmp___0 ; int tmp___1 ; struct drm_hash_item const *__mptr ; bool tmp___2 ; int tmp___3 ; bool tmp___4 ; int tmp___5 ; int tmp___6 ; long tmp___7 ; unsigned long tmp___8 ; int tmp___9 ; { priv = (struct drm_file *)filp->private_data; dev = (priv->minor)->dev; map = (struct drm_local_map *)0; offset = 0ULL; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_mmap_locked", "start = 0x%lx, end = 0x%lx, page offset = 0x%lx\n", vma->vm_start, vma->vm_end, vma->vm_pgoff); } else { } if ((unsigned int )*((unsigned char *)priv + 0UL) == 0U) { return (-13); } else { } if (vma->vm_pgoff == 0UL && ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (unsigned int )((dev->agp)->agp_info.device)->vendor != 4203U)) { tmp___0 = drm_mmap_dma(filp, vma); return (tmp___0); } else { } tmp___1 = drm_ht_find_item(& dev->map_hash, vma->vm_pgoff, & hash); if (tmp___1 != 0) { drm_err("Could not find map\n"); return (-22); } else { } __mptr = (struct drm_hash_item const *)hash; map = ((struct drm_map_list *)__mptr + 0xfffffffffffffff0UL)->map; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { return (-1); } else if ((int )map->flags & 1) { tmp___2 = capable(21); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } if (tmp___3) { return (-1); } else { } } else { } if (map->size < vma->vm_end - vma->vm_start) { return (-22); } else { } tmp___4 = capable(21); if (tmp___4) { tmp___5 = 0; } else { tmp___5 = 1; } if (tmp___5 && ((unsigned int )map->flags & 2U) != 0U) { vma->vm_flags = vma->vm_flags & 0xffffffffffffffddUL; vma->vm_page_prot.pgprot = vma->vm_page_prot.pgprot & 0xfffffffffffffffdUL; } else { } switch ((unsigned int )map->type) { case 3U: ; if ((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0) && (dev->agp)->cant_use_aperture != 0) { vma->vm_ops = & drm_vm_ops; goto ldv_39258; } else { } case 0U: ; case 1U: offset = drm_core_get_reg_ofs(dev); vma->vm_page_prot = drm_io_prot(map, vma); tmp___6 = remap_pfn_range(vma, vma->vm_start, (unsigned long )((map->offset + offset) >> 12), vma->vm_end - vma->vm_start, vma->vm_page_prot); if (tmp___6 != 0) { return (-11); } else { } tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_mmap_locked", " Type = %d; start = 0x%lx, end = 0x%lx, offset = 0x%llx\n", (unsigned int )map->type, vma->vm_start, vma->vm_end, map->offset + offset); } else { } vma->vm_ops = & drm_vm_ops; goto ldv_39258; case 5U: tmp___8 = __phys_addr((unsigned long )map->handle); tmp___9 = remap_pfn_range(vma, vma->vm_start, (unsigned long )(((long )((struct page *)-24189255811072L + (tmp___8 >> 12)) + 24189255811072L) / 64L), vma->vm_end - vma->vm_start, vma->vm_page_prot); if (tmp___9 != 0) { return (-11); } else { } vma->vm_page_prot = drm_dma_prot((uint32_t )map->type, vma); case 2U: vma->vm_ops = & drm_vm_shm_ops; vma->vm_private_data = (void *)map; goto ldv_39258; case 4U: vma->vm_ops = & drm_vm_sg_ops; vma->vm_private_data = (void *)map; vma->vm_page_prot = drm_dma_prot((uint32_t )map->type, vma); goto ldv_39258; default: ; return (-22); } ldv_39258: vma->vm_flags = vma->vm_flags | 67371008UL; drm_vm_open_locked(dev, vma); return (0); } } int drm_legacy_mmap(struct file *filp , struct vm_area_struct *vma ) { struct drm_file *priv ; struct drm_device *dev ; int ret ; int tmp ; { priv = (struct drm_file *)filp->private_data; dev = (priv->minor)->dev; tmp = drm_device_is_unplugged(dev); if (tmp != 0) { return (-19); } else { } mutex_lock_nested(& dev->struct_mutex, 0U); ret = drm_mmap_locked(filp, vma); mutex_unlock(& dev->struct_mutex); return (ret); } } static char const __kstrtab_drm_legacy_mmap[16U] = { 'd', 'r', 'm', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'm', 'm', 'a', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_legacy_mmap ; struct kernel_symbol const __ksymtab_drm_legacy_mmap = {(unsigned long )(& drm_legacy_mmap), (char const *)(& __kstrtab_drm_legacy_mmap)}; void drm_legacy_vma_flush(struct drm_device *dev ) { struct drm_vma_entry *vma ; struct drm_vma_entry *vma_temp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { __mptr = (struct list_head const *)dev->vmalist.next; vma = (struct drm_vma_entry *)__mptr; __mptr___0 = (struct list_head const *)vma->head.next; vma_temp = (struct drm_vma_entry *)__mptr___0; goto ldv_39292; ldv_39291: list_del(& vma->head); kfree((void const *)vma); vma = vma_temp; __mptr___1 = (struct list_head const *)vma_temp->head.next; vma_temp = (struct drm_vma_entry *)__mptr___1; ldv_39292: ; if ((unsigned long )(& vma->head) != (unsigned long )(& dev->vmalist)) { goto ldv_39291; } else { } return; } } int drm_vma_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_device *dev ; struct drm_vma_entry *pt ; struct vm_area_struct *vma ; unsigned long vma_count ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; phys_addr_t tmp ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; { node = (struct drm_info_node *)m->private; dev = (node->minor)->dev; vma_count = 0UL; mutex_lock_nested(& dev->struct_mutex, 0U); __mptr = (struct list_head const *)dev->vmalist.next; pt = (struct drm_vma_entry *)__mptr; goto ldv_39308; ldv_39307: vma_count = vma_count + 1UL; __mptr___0 = (struct list_head const *)pt->head.next; pt = (struct drm_vma_entry *)__mptr___0; ldv_39308: ; if ((unsigned long )(& pt->head) != (unsigned long )(& dev->vmalist)) { goto ldv_39307; } else { } tmp = virt_to_phys((void volatile *)high_memory); seq_printf(m, "vma use count: %lu, high_memory = %pK, 0x%pK\n", vma_count, high_memory, (void *)tmp); __mptr___1 = (struct list_head const *)dev->vmalist.next; pt = (struct drm_vma_entry *)__mptr___1; goto ldv_39316; ldv_39315: vma = pt->vma; if ((unsigned long )vma == (unsigned long )((struct vm_area_struct *)0)) { goto ldv_39314; } else { } seq_printf(m, "\n%5d 0x%pK-0x%pK %c%c%c%c%c%c 0x%08lx000", pt->pid, (void *)vma->vm_start, (void *)vma->vm_end, (int )vma->vm_flags & 1 ? 114 : 45, (vma->vm_flags & 2UL) != 0UL ? 119 : 45, (vma->vm_flags & 4UL) != 0UL ? 120 : 45, (vma->vm_flags & 128UL) != 0UL ? 115 : 112, (vma->vm_flags & 8192UL) != 0UL ? 108 : 45, (vma->vm_flags & 16384UL) != 0UL ? 105 : 45, vma->vm_pgoff); seq_printf(m, "\n"); ldv_39314: __mptr___2 = (struct list_head const *)pt->head.next; pt = (struct drm_vma_entry *)__mptr___2; ldv_39316: ; if ((unsigned long )(& pt->head) != (unsigned long )(& dev->vmalist)) { goto ldv_39315; } else { } mutex_unlock(& dev->struct_mutex); return (0); } } void ldv_initialize_vm_operations_struct_29(void) { void *tmp ; { tmp = ldv_init_zalloc(184UL); drm_vm_ops_group0 = (struct vm_area_struct *)tmp; return; } } void ldv_initialize_vm_operations_struct_26(void) { void *tmp ; { tmp = ldv_init_zalloc(184UL); drm_vm_sg_ops_group0 = (struct vm_area_struct *)tmp; return; } } void ldv_initialize_vm_operations_struct_27(void) { void *tmp ; { tmp = ldv_init_zalloc(184UL); drm_vm_dma_ops_group0 = (struct vm_area_struct *)tmp; return; } } void ldv_initialize_vm_operations_struct_28(void) { void *tmp ; { tmp = ldv_init_zalloc(184UL); drm_vm_shm_ops_group0 = (struct vm_area_struct *)tmp; return; } } void ldv_main_exported_27(void) { struct vm_fault *ldvarg23 ; void *tmp ; int tmp___0 ; { tmp = ldv_init_zalloc(56UL); ldvarg23 = (struct vm_fault *)tmp; tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_27 == 1) { drm_vm_dma_fault(drm_vm_dma_ops_group0, ldvarg23); ldv_state_variable_27 = 1; } else { } if (ldv_state_variable_27 == 2) { drm_vm_dma_fault(drm_vm_dma_ops_group0, ldvarg23); ldv_state_variable_27 = 2; } else { } goto ldv_39335; case 1: ; if (ldv_state_variable_27 == 2) { drm_vm_close(drm_vm_dma_ops_group0); ldv_state_variable_27 = 1; } else { } goto ldv_39335; case 2: ; if (ldv_state_variable_27 == 1) { drm_vm_open(drm_vm_dma_ops_group0); ldv_state_variable_27 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39335; default: ldv_stop(); } ldv_39335: ; return; } } void ldv_main_exported_28(void) { struct vm_fault *ldvarg24 ; void *tmp ; int tmp___0 ; { tmp = ldv_init_zalloc(56UL); ldvarg24 = (struct vm_fault *)tmp; tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_28 == 2) { drm_vm_shm_fault(drm_vm_shm_ops_group0, ldvarg24); ldv_state_variable_28 = 2; } else { } if (ldv_state_variable_28 == 1) { drm_vm_shm_fault(drm_vm_shm_ops_group0, ldvarg24); ldv_state_variable_28 = 1; } else { } goto ldv_39344; case 1: ; if (ldv_state_variable_28 == 2) { drm_vm_shm_close(drm_vm_shm_ops_group0); ldv_state_variable_28 = 1; } else { } goto ldv_39344; case 2: ; if (ldv_state_variable_28 == 1) { drm_vm_open(drm_vm_shm_ops_group0); ldv_state_variable_28 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39344; default: ldv_stop(); } ldv_39344: ; return; } } void ldv_main_exported_26(void) { struct vm_fault *ldvarg11 ; void *tmp ; int tmp___0 ; { tmp = ldv_init_zalloc(56UL); ldvarg11 = (struct vm_fault *)tmp; tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_26 == 1) { drm_vm_sg_fault(drm_vm_sg_ops_group0, ldvarg11); ldv_state_variable_26 = 1; } else { } if (ldv_state_variable_26 == 2) { drm_vm_sg_fault(drm_vm_sg_ops_group0, ldvarg11); ldv_state_variable_26 = 2; } else { } goto ldv_39353; case 1: ; if (ldv_state_variable_26 == 2) { drm_vm_close(drm_vm_sg_ops_group0); ldv_state_variable_26 = 1; } else { } goto ldv_39353; case 2: ; if (ldv_state_variable_26 == 1) { drm_vm_open(drm_vm_sg_ops_group0); ldv_state_variable_26 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39353; default: ldv_stop(); } ldv_39353: ; return; } } void ldv_main_exported_29(void) { struct vm_fault *ldvarg64 ; void *tmp ; int tmp___0 ; { tmp = ldv_init_zalloc(56UL); ldvarg64 = (struct vm_fault *)tmp; tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_29 == 2) { drm_vm_fault(drm_vm_ops_group0, ldvarg64); ldv_state_variable_29 = 2; } else { } if (ldv_state_variable_29 == 1) { drm_vm_fault(drm_vm_ops_group0, ldvarg64); ldv_state_variable_29 = 1; } else { } goto ldv_39362; case 1: ; if (ldv_state_variable_29 == 2) { drm_vm_close(drm_vm_ops_group0); ldv_state_variable_29 = 1; } else { } goto ldv_39362; case 2: ; if (ldv_state_variable_29 == 1) { drm_vm_open(drm_vm_ops_group0); ldv_state_variable_29 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39362; default: ldv_stop(); } ldv_39362: ; return; } } bool ldv_queue_work_on_185(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_186(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_187(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_188(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_189(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; bool ldv_queue_work_on_199(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_201(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_200(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_203(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_202(struct workqueue_struct *ldv_func_arg1 ) ; extern struct agp_bridge_data *(*agp_find_bridge)(struct pci_dev * ) ; extern struct agp_memory *agp_allocate_memory(struct agp_bridge_data * , size_t , u32 ) ; extern int agp_copy_info(struct agp_bridge_data * , struct agp_kern_info * ) ; extern void agp_enable(struct agp_bridge_data * , u32 ) ; extern struct agp_bridge_data *agp_backend_acquire(struct pci_dev * ) ; extern void agp_backend_release(struct agp_bridge_data * ) ; struct agp_memory *drm_agp_bind_pages(struct drm_device *dev , struct page **pages , unsigned long num_pages , uint32_t gtt_offset , unsigned int type ) ; struct drm_agp_head *drm_agp_init(struct drm_device *dev ) ; int drm_agp_acquire(struct drm_device *dev ) ; int drm_agp_release(struct drm_device *dev ) ; int drm_agp_enable(struct drm_device *dev , struct drm_agp_mode mode ) ; int drm_agp_info(struct drm_device *dev , struct drm_agp_info *info ) ; int drm_agp_alloc(struct drm_device *dev , struct drm_agp_buffer *request ) ; int drm_agp_free(struct drm_device *dev , struct drm_agp_buffer *request ) ; int drm_agp_unbind(struct drm_device *dev , struct drm_agp_binding *request ) ; int drm_agp_bind(struct drm_device *dev , struct drm_agp_binding *request ) ; int drm_agp_info(struct drm_device *dev , struct drm_agp_info *info ) { struct agp_kern_info *kern ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } kern = & (dev->agp)->agp_info; info->agp_version_major = (int )kern->version.major; info->agp_version_minor = (int )kern->version.minor; info->mode = kern->mode; info->aperture_base = kern->aper_base; info->aperture_size = kern->aper_size * 1048576UL; info->memory_allowed = (unsigned long )(kern->max_memory << 12); info->memory_used = (unsigned long )(kern->current_memory << 12); info->id_vendor = (kern->device)->vendor; info->id_device = (kern->device)->device; return (0); } } static char const __kstrtab_drm_agp_info[13U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'i', 'n', 'f', 'o', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_info ; struct kernel_symbol const __ksymtab_drm_agp_info = {(unsigned long )(& drm_agp_info), (char const *)(& __kstrtab_drm_agp_info)}; int drm_agp_info_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_info *info ; int err ; { info = (struct drm_agp_info *)data; err = drm_agp_info(dev, info); if (err != 0) { return (err); } else { } return (0); } } int drm_agp_acquire(struct drm_device *dev ) { struct agp_bridge_data *tmp ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0)) { return (-19); } else { } if ((dev->agp)->acquired != 0) { return (-16); } else { } tmp = agp_backend_acquire(dev->pdev); (dev->agp)->bridge = tmp; if ((unsigned long )tmp == (unsigned long )((struct agp_bridge_data *)0)) { return (-19); } else { } (dev->agp)->acquired = 1; return (0); } } static char const __kstrtab_drm_agp_acquire[16U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'a', 'c', 'q', 'u', 'i', 'r', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_acquire ; struct kernel_symbol const __ksymtab_drm_agp_acquire = {(unsigned long )(& drm_agp_acquire), (char const *)(& __kstrtab_drm_agp_acquire)}; int drm_agp_acquire_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { int tmp ; { tmp = drm_agp_acquire((file_priv->minor)->dev); return (tmp); } } int drm_agp_release(struct drm_device *dev ) { { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } agp_backend_release((dev->agp)->bridge); (dev->agp)->acquired = 0; return (0); } } static char const __kstrtab_drm_agp_release[16U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_release ; struct kernel_symbol const __ksymtab_drm_agp_release = {(unsigned long )(& drm_agp_release), (char const *)(& __kstrtab_drm_agp_release)}; int drm_agp_release_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { int tmp ; { tmp = drm_agp_release(dev); return (tmp); } } int drm_agp_enable(struct drm_device *dev , struct drm_agp_mode mode ) { { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } (dev->agp)->mode = mode.mode; agp_enable((dev->agp)->bridge, (u32 )mode.mode); (dev->agp)->enabled = 1; return (0); } } static char const __kstrtab_drm_agp_enable[15U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'e', 'n', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_enable ; struct kernel_symbol const __ksymtab_drm_agp_enable = {(unsigned long )(& drm_agp_enable), (char const *)(& __kstrtab_drm_agp_enable)}; int drm_agp_enable_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_mode *mode ; int tmp ; { mode = (struct drm_agp_mode *)data; tmp = drm_agp_enable(dev, *mode); return (tmp); } } int drm_agp_alloc(struct drm_device *dev , struct drm_agp_buffer *request ) { struct drm_agp_mem *entry ; struct agp_memory *memory ; unsigned long pages ; u32 type ; void *tmp ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } tmp = kzalloc(48UL, 208U); entry = (struct drm_agp_mem *)tmp; if ((unsigned long )entry == (unsigned long )((struct drm_agp_mem *)0)) { return (-12); } else { } pages = (request->size + 4095UL) / 4096UL; type = (unsigned int )request->type; memory = agp_allocate_memory((dev->agp)->bridge, pages, type); if ((unsigned long )memory == (unsigned long )((struct agp_memory *)0)) { kfree((void const *)entry); return (-12); } else { } entry->handle = (unsigned long )memory->key + 1UL; entry->memory = memory; entry->bound = 0UL; entry->pages = (int )pages; list_add(& entry->head, & (dev->agp)->memory); request->handle = entry->handle; request->physical = (unsigned long )memory->physical; return (0); } } static char const __kstrtab_drm_agp_alloc[14U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'a', 'l', 'l', 'o', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_alloc ; struct kernel_symbol const __ksymtab_drm_agp_alloc = {(unsigned long )(& drm_agp_alloc), (char const *)(& __kstrtab_drm_agp_alloc)}; int drm_agp_alloc_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_buffer *request ; int tmp ; { request = (struct drm_agp_buffer *)data; tmp = drm_agp_alloc(dev, request); return (tmp); } } static struct drm_agp_mem *drm_agp_lookup_entry(struct drm_device *dev , unsigned long handle ) { struct drm_agp_mem *entry ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)(dev->agp)->memory.next; entry = (struct drm_agp_mem *)__mptr + 0xffffffffffffffe0UL; goto ldv_39046; ldv_39045: ; if (entry->handle == handle) { return (entry); } else { } __mptr___0 = (struct list_head const *)entry->head.next; entry = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; ldv_39046: ; if ((unsigned long )(& entry->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_39045; } else { } return ((struct drm_agp_mem *)0); } } int drm_agp_unbind(struct drm_device *dev , struct drm_agp_binding *request ) { struct drm_agp_mem *entry ; int ret ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } entry = drm_agp_lookup_entry(dev, request->handle); if ((unsigned long )entry == (unsigned long )((struct drm_agp_mem *)0)) { return (-22); } else { } if (entry->bound == 0UL) { return (-22); } else { } ret = drm_unbind_agp(entry->memory); if (ret == 0) { entry->bound = 0UL; } else { } return (ret); } } static char const __kstrtab_drm_agp_unbind[15U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'u', 'n', 'b', 'i', 'n', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_unbind ; struct kernel_symbol const __ksymtab_drm_agp_unbind = {(unsigned long )(& drm_agp_unbind), (char const *)(& __kstrtab_drm_agp_unbind)}; int drm_agp_unbind_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_binding *request ; int tmp ; { request = (struct drm_agp_binding *)data; tmp = drm_agp_unbind(dev, request); return (tmp); } } int drm_agp_bind(struct drm_device *dev , struct drm_agp_binding *request ) { struct drm_agp_mem *entry ; int retcode ; int page ; long tmp ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } entry = drm_agp_lookup_entry(dev, request->handle); if ((unsigned long )entry == (unsigned long )((struct drm_agp_mem *)0)) { return (-22); } else { } if (entry->bound != 0UL) { return (-22); } else { } page = (int )((request->offset + 4095UL) / 4096UL); retcode = drm_bind_agp(entry->memory, (unsigned int )page); if (retcode != 0) { return (retcode); } else { } entry->bound = (dev->agp)->base + (unsigned long )(page << 12); tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_agp_bind", "base = 0x%lx entry->bound = 0x%lx\n", (dev->agp)->base, entry->bound); } else { } return (0); } } static char const __kstrtab_drm_agp_bind[13U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'b', 'i', 'n', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_bind ; struct kernel_symbol const __ksymtab_drm_agp_bind = {(unsigned long )(& drm_agp_bind), (char const *)(& __kstrtab_drm_agp_bind)}; int drm_agp_bind_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_binding *request ; int tmp ; { request = (struct drm_agp_binding *)data; tmp = drm_agp_bind(dev, request); return (tmp); } } int drm_agp_free(struct drm_device *dev , struct drm_agp_buffer *request ) { struct drm_agp_mem *entry ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0) || (dev->agp)->acquired == 0) { return (-22); } else { } entry = drm_agp_lookup_entry(dev, request->handle); if ((unsigned long )entry == (unsigned long )((struct drm_agp_mem *)0)) { return (-22); } else { } if (entry->bound != 0UL) { drm_unbind_agp(entry->memory); } else { } list_del(& entry->head); drm_free_agp(entry->memory, entry->pages); kfree((void const *)entry); return (0); } } static char const __kstrtab_drm_agp_free[13U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'f', 'r', 'e', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_free ; struct kernel_symbol const __ksymtab_drm_agp_free = {(unsigned long )(& drm_agp_free), (char const *)(& __kstrtab_drm_agp_free)}; int drm_agp_free_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_agp_buffer *request ; int tmp ; { request = (struct drm_agp_buffer *)data; tmp = drm_agp_free(dev, request); return (tmp); } } struct drm_agp_head *drm_agp_init(struct drm_device *dev ) { struct drm_agp_head *head ; void *tmp ; struct agp_bridge_data *tmp___0 ; { head = (struct drm_agp_head *)0; tmp = kzalloc(144UL, 208U); head = (struct drm_agp_head *)tmp; if ((unsigned long )head == (unsigned long )((struct drm_agp_head *)0)) { return ((struct drm_agp_head *)0); } else { } head->bridge = (*agp_find_bridge)(dev->pdev); if ((unsigned long )head->bridge == (unsigned long )((struct agp_bridge_data *)0)) { tmp___0 = agp_backend_acquire(dev->pdev); head->bridge = tmp___0; if ((unsigned long )tmp___0 == (unsigned long )((struct agp_bridge_data *)0)) { kfree((void const *)head); return ((struct drm_agp_head *)0); } else { } agp_copy_info(head->bridge, & head->agp_info); agp_backend_release(head->bridge); } else { agp_copy_info(head->bridge, & head->agp_info); } if ((unsigned int )head->agp_info.chipset == 0U) { kfree((void const *)head); return ((struct drm_agp_head *)0); } else { } INIT_LIST_HEAD(& head->memory); head->cant_use_aperture = (int )head->agp_info.cant_use_aperture; head->page_mask = head->agp_info.page_mask; head->base = head->agp_info.aper_base; return (head); } } void drm_agp_clear(struct drm_device *dev ) { struct drm_agp_mem *entry ; struct drm_agp_mem *tempe ; int tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { if ((unsigned long )dev->agp == (unsigned long )((struct drm_agp_head *)0)) { return; } else { } tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return; } else { } __mptr = (struct list_head const *)(dev->agp)->memory.next; entry = (struct drm_agp_mem *)__mptr + 0xffffffffffffffe0UL; __mptr___0 = (struct list_head const *)entry->head.next; tempe = (struct drm_agp_mem *)__mptr___0 + 0xffffffffffffffe0UL; goto ldv_39125; ldv_39124: ; if (entry->bound != 0UL) { drm_unbind_agp(entry->memory); } else { } drm_free_agp(entry->memory, entry->pages); kfree((void const *)entry); entry = tempe; __mptr___1 = (struct list_head const *)tempe->head.next; tempe = (struct drm_agp_mem *)__mptr___1 + 0xffffffffffffffe0UL; ldv_39125: ; if ((unsigned long )(& entry->head) != (unsigned long )(& (dev->agp)->memory)) { goto ldv_39124; } else { } INIT_LIST_HEAD(& (dev->agp)->memory); if ((dev->agp)->acquired != 0) { drm_agp_release(dev); } else { } (dev->agp)->acquired = 0; (dev->agp)->enabled = 0; return; } } struct agp_memory *drm_agp_bind_pages(struct drm_device *dev , struct page **pages , unsigned long num_pages , uint32_t gtt_offset , unsigned int type ) { struct agp_memory *mem ; int ret ; int i ; long tmp ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_agp_bind_pages", "\n"); } else { } mem = agp_allocate_memory((dev->agp)->bridge, num_pages, type); if ((unsigned long )mem == (unsigned long )((struct agp_memory *)0)) { drm_err("Failed to allocate memory for %ld pages\n", num_pages); return ((struct agp_memory *)0); } else { } i = 0; goto ldv_39139; ldv_39138: *(mem->pages + (unsigned long )i) = *(pages + (unsigned long )i); i = i + 1; ldv_39139: ; if ((unsigned long )i < num_pages) { goto ldv_39138; } else { } mem->page_count = num_pages; mem->is_flushed = 1; ret = agp_bind_memory(mem, (off_t )(gtt_offset / 4096U)); if (ret != 0) { drm_err("Failed to bind AGP memory: %d\n", ret); agp_free_memory(mem); return ((struct agp_memory *)0); } else { } return (mem); } } static char const __kstrtab_drm_agp_bind_pages[19U] = { 'd', 'r', 'm', '_', 'a', 'g', 'p', '_', 'b', 'i', 'n', 'd', '_', 'p', 'a', 'g', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_agp_bind_pages ; struct kernel_symbol const __ksymtab_drm_agp_bind_pages = {(unsigned long )(& drm_agp_bind_pages), (char const *)(& __kstrtab_drm_agp_bind_pages)}; bool ldv_queue_work_on_199(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_200(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_201(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_202(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_203(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void set_bit(long nr , unsigned long volatile *addr ) { { __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"); return; } } bool ldv_queue_work_on_213(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_215(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_214(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_217(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_216(struct workqueue_struct *ldv_func_arg1 ) ; extern void *vmalloc_32(unsigned long ) ; __inline static void SetPageReserved(struct page *page ) { { set_bit(10L, (unsigned long volatile *)(& page->flags)); return; } } __inline static void ClearPageReserved(struct page *page ) { { clear_bit(10L, (unsigned long volatile *)(& page->flags)); return; } } __inline static void *drm_vmalloc_dma(unsigned long size ) { void *tmp ; { tmp = vmalloc_32(size); return (tmp); } } static void drm_sg_cleanup(struct drm_sg_mem *entry ) { struct page *page ; int i ; { i = 0; goto ldv_38955; ldv_38954: page = *(entry->pagelist + (unsigned long )i); if ((unsigned long )page != (unsigned long )((struct page *)0)) { ClearPageReserved(page); } else { } i = i + 1; ldv_38955: ; if (entry->pages > i) { goto ldv_38954; } else { } vfree((void const *)entry->virtual); kfree((void const *)entry->busaddr); kfree((void const *)entry->pagelist); kfree((void const *)entry); return; } } void drm_legacy_sg_cleanup(struct drm_device *dev ) { int tmp ; int tmp___0 ; { tmp = drm_core_check_feature(dev, 16); if (tmp != 0 && (unsigned long )dev->sg != (unsigned long )((struct drm_sg_mem *)0)) { tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 == 0) { drm_sg_cleanup(dev->sg); dev->sg = (struct drm_sg_mem *)0; } else { } } else { } return; } } int drm_legacy_sg_alloc(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_scatter_gather *request ; struct drm_sg_mem *entry ; unsigned long pages ; unsigned long i ; unsigned long j ; long tmp ; int tmp___0 ; int tmp___1 ; void *tmp___2 ; long tmp___3 ; void *tmp___4 ; void *tmp___5 ; long tmp___6 ; long tmp___7 ; { request = (struct drm_scatter_gather *)data; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_legacy_sg_alloc", "\n"); } else { } tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 != 0) { return (-22); } else { } tmp___1 = drm_core_check_feature(dev, 16); if (tmp___1 == 0) { return (-22); } else { } if ((unsigned long )dev->sg != (unsigned long )((struct drm_sg_mem *)0)) { return (-22); } else { } tmp___2 = kzalloc(40UL, 208U); entry = (struct drm_sg_mem *)tmp___2; if ((unsigned long )entry == (unsigned long )((struct drm_sg_mem *)0)) { return (-12); } else { } pages = (request->size + 4095UL) / 4096UL; tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_legacy_sg_alloc", "size=%ld pages=%ld\n", request->size, pages); } else { } entry->pages = (int )pages; tmp___4 = kcalloc(pages, 8UL, 208U); entry->pagelist = (struct page **)tmp___4; if ((unsigned long )entry->pagelist == (unsigned long )((struct page **)0)) { kfree((void const *)entry); return (-12); } else { } tmp___5 = kcalloc(pages, 8UL, 208U); entry->busaddr = (dma_addr_t *)tmp___5; if ((unsigned long )entry->busaddr == (unsigned long )((dma_addr_t *)0ULL)) { kfree((void const *)entry->pagelist); kfree((void const *)entry); return (-12); } else { } entry->virtual = drm_vmalloc_dma(pages << 12); if ((unsigned long )entry->virtual == (unsigned long )((void *)0)) { kfree((void const *)entry->busaddr); kfree((void const *)entry->pagelist); kfree((void const *)entry); return (-12); } else { } memset(entry->virtual, 0, pages << 12); entry->handle = (unsigned long )((unsigned int )((unsigned long )entry->virtual >> 32) + (unsigned int )((long )entry->virtual)); tmp___6 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___6 != 0L) { drm_ut_debug_printk("drm_legacy_sg_alloc", "handle = %08lx\n", entry->handle); } else { } tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_legacy_sg_alloc", "virtual = %p\n", entry->virtual); } else { } i = (unsigned long )entry->virtual; j = 0UL; goto ldv_38973; ldv_38972: *(entry->pagelist + j) = vmalloc_to_page((void const *)i); if ((unsigned long )*(entry->pagelist + j) == (unsigned long )((struct page *)0)) { goto failed; } else { } SetPageReserved(*(entry->pagelist + j)); i = i + 4096UL; j = j + 1UL; ldv_38973: ; if (j < pages) { goto ldv_38972; } else { } request->handle = entry->handle; dev->sg = entry; return (0); failed: drm_sg_cleanup(entry); return (-12); } } int drm_legacy_sg_free(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_scatter_gather *request ; struct drm_sg_mem *entry ; int tmp ; int tmp___0 ; long tmp___1 ; { request = (struct drm_scatter_gather *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } tmp___0 = drm_core_check_feature(dev, 16); if (tmp___0 == 0) { return (-22); } else { } entry = dev->sg; dev->sg = (struct drm_sg_mem *)0; if ((unsigned long )entry == (unsigned long )((struct drm_sg_mem *)0) || entry->handle != request->handle) { return (-22); } else { } tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_legacy_sg_free", "virtual = %p\n", entry->virtual); } else { } drm_sg_cleanup(entry); return (0); } } bool ldv_queue_work_on_213(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_214(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_215(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_216(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_217(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern char *kasprintf(gfp_t , char const * , ...) ; extern int sscanf(char const * , char const * , ...) ; bool ldv_queue_work_on_227(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_229(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_228(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_231(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_230(struct workqueue_struct *ldv_func_arg1 ) ; __inline static char const *kobject_name(struct kobject const *kobj ) { { return ((char const *)kobj->name); } } __inline static char const *dev_name(struct device const *dev ) { char const *tmp ; { if ((unsigned long )dev->init_name != (unsigned long )((char const */* const */)0)) { return ((char const *)dev->init_name); } else { } tmp = kobject_name(& dev->kobj); return (tmp); } } extern struct pci_dev *pci_dev_get(struct pci_dev * ) ; extern int pci_find_capability(struct pci_dev * , int ) ; extern struct pci_dev *pci_get_subsys(unsigned int , unsigned int , unsigned int , unsigned int , struct pci_dev * ) ; extern int pcie_capability_read_dword(struct pci_dev * , int , u32 * ) ; extern int pci_enable_device(struct pci_dev * ) ; extern void pci_disable_device(struct pci_dev * ) ; extern int __pci_register_driver(struct pci_driver * , struct module * , char const * ) ; extern void pci_unregister_driver(struct pci_driver * ) ; __inline static int pci_domain_nr(struct pci_bus *bus ) { struct pci_sysdata *sd ; { sd = (struct pci_sysdata *)bus->sysdata; return (sd->domain); } } extern void *dma_alloc_attrs(struct device * , size_t , dma_addr_t * , gfp_t , struct dma_attrs * ) ; extern void dma_free_attrs(struct device * , size_t , void * , dma_addr_t , struct dma_attrs * ) ; __inline static void pci_set_drvdata(struct pci_dev *pdev , void *data ) { { dev_set_drvdata(& pdev->dev, data); return; } } __inline static char const *pci_name(struct pci_dev const *pdev ) { char const *tmp ; { tmp = dev_name(& pdev->dev); return (tmp); } } __inline static int drm_pci_device_is_agp(struct drm_device *dev ) { int err ; int tmp ; int tmp___0 ; { if ((unsigned long )(dev->driver)->device_is_agp != (unsigned long )((int (*)(struct drm_device * ))0)) { tmp = (*((dev->driver)->device_is_agp))(dev); err = tmp; if (err != 2) { return (err); } else { } } else { } tmp___0 = pci_find_capability(dev->pdev, 2); return (tmp___0); } } int drm_pci_init(struct drm_driver *driver , struct pci_driver *pdriver ) ; void drm_pci_exit(struct drm_driver *driver , struct pci_driver *pdriver ) ; int drm_get_pci_dev(struct pci_dev *pdev , struct pci_device_id const *ent , struct drm_driver *driver ) ; int drm_pci_set_busid(struct drm_device *dev , struct drm_master *master ) ; int drm_pcie_get_speed_cap_mask(struct drm_device *dev , u32 *mask ) ; struct drm_dma_handle *drm_pci_alloc(struct drm_device *dev , size_t size , size_t align ) { drm_dma_handle_t *dmah ; unsigned long addr ; size_t sz ; void *tmp ; unsigned long tmp___0 ; { if (align > size) { return ((struct drm_dma_handle *)0); } else { } tmp = kmalloc(24UL, 208U); dmah = (drm_dma_handle_t *)tmp; if ((unsigned long )dmah == (unsigned long )((drm_dma_handle_t *)0)) { return ((struct drm_dma_handle *)0); } else { } dmah->size = size; dmah->vaddr = dma_alloc_attrs(& (dev->pdev)->dev, size, & dmah->busaddr, 16592U, (struct dma_attrs *)0); if ((unsigned long )dmah->vaddr == (unsigned long )((void *)0)) { kfree((void const *)dmah); return ((struct drm_dma_handle *)0); } else { } memset(dmah->vaddr, 0, size); addr = (unsigned long )dmah->vaddr; sz = size; goto ldv_39080; ldv_39079: tmp___0 = __phys_addr(addr); SetPageReserved((struct page *)-24189255811072L + (tmp___0 >> 12)); addr = addr + 4096UL; sz = sz - 4096UL; ldv_39080: ; if (sz != 0UL) { goto ldv_39079; } else { } return (dmah); } } static char const __kstrtab_drm_pci_alloc[14U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', '_', 'a', 'l', 'l', 'o', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_pci_alloc ; struct kernel_symbol const __ksymtab_drm_pci_alloc = {(unsigned long )(& drm_pci_alloc), (char const *)(& __kstrtab_drm_pci_alloc)}; void __drm_legacy_pci_free(struct drm_device *dev , drm_dma_handle_t *dmah ) { unsigned long addr ; size_t sz ; unsigned long tmp ; { if ((unsigned long )dmah->vaddr != (unsigned long )((void *)0)) { addr = (unsigned long )dmah->vaddr; sz = dmah->size; goto ldv_39098; ldv_39097: tmp = __phys_addr(addr); ClearPageReserved((struct page *)-24189255811072L + (tmp >> 12)); addr = addr + 4096UL; sz = sz - 4096UL; ldv_39098: ; if (sz != 0UL) { goto ldv_39097; } else { } dma_free_attrs(& (dev->pdev)->dev, dmah->size, dmah->vaddr, dmah->busaddr, (struct dma_attrs *)0); } else { } return; } } void drm_pci_free(struct drm_device *dev , struct drm_dma_handle *dmah ) { { __drm_legacy_pci_free(dev, dmah); kfree((void const *)dmah); return; } } static char const __kstrtab_drm_pci_free[13U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', '_', 'f', 'r', 'e', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_pci_free ; struct kernel_symbol const __ksymtab_drm_pci_free = {(unsigned long )(& drm_pci_free), (char const *)(& __kstrtab_drm_pci_free)}; static int drm_get_pci_domain(struct drm_device *dev ) { int tmp ; { if (dev->if_version <= 65539) { return (0); } else { } tmp = pci_domain_nr((dev->pdev)->bus); return (tmp); } } int drm_pci_set_busid(struct drm_device *dev , struct drm_master *master ) { int tmp ; size_t tmp___0 ; { tmp = drm_get_pci_domain(dev); master->unique = kasprintf(208U, "pci:%04x:%02x:%02x.%d", tmp, (int )((dev->pdev)->bus)->number, ((dev->pdev)->devfn >> 3) & 31U, (dev->pdev)->devfn & 7U); if ((unsigned long )master->unique == (unsigned long )((char *)0)) { return (-12); } else { } tmp___0 = strlen((char const *)master->unique); master->unique_len = (int )tmp___0; return (0); } } static char const __kstrtab_drm_pci_set_busid[18U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', '_', 's', 'e', 't', '_', 'b', 'u', 's', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_pci_set_busid ; struct kernel_symbol const __ksymtab_drm_pci_set_busid = {(unsigned long )(& drm_pci_set_busid), (char const *)(& __kstrtab_drm_pci_set_busid)}; int drm_pci_set_unique(struct drm_device *dev , struct drm_master *master , struct drm_unique *u ) { int domain ; int bus ; int slot ; int func ; int ret ; void *tmp ; unsigned long tmp___0 ; int tmp___1 ; { master->unique_len = (int )u->unique_len; tmp = kmalloc((size_t )(master->unique_len + 1), 208U); master->unique = (char *)tmp; if ((unsigned long )master->unique == (unsigned long )((char *)0)) { ret = -12; goto err; } else { } tmp___0 = copy_from_user((void *)master->unique, (void const *)u->unique, (unsigned long )master->unique_len); if (tmp___0 != 0UL) { ret = -14; goto err; } else { } *(master->unique + (unsigned long )master->unique_len) = 0; ret = sscanf((char const *)master->unique, "PCI:%d:%d:%d", & bus, & slot, & func); if (ret != 3) { ret = -22; goto err; } else { } domain = bus >> 8; bus = bus & 255; tmp___1 = drm_get_pci_domain(dev); if (((tmp___1 != domain || (int )((dev->pdev)->bus)->number != bus) || (unsigned int )slot != (((dev->pdev)->devfn >> 3) & 31U)) || (unsigned int )func != ((dev->pdev)->devfn & 7U)) { ret = -22; goto err; } else { } return (0); err: ; return (ret); } } static int drm_pci_irq_by_busid(struct drm_device *dev , struct drm_irq_busid *p ) { int tmp ; long tmp___0 ; { tmp = drm_get_pci_domain(dev); if (((p->busnum >> 8 != tmp || (p->busnum & 255) != (int )((dev->pdev)->bus)->number) || (unsigned int )p->devnum != (((dev->pdev)->devfn >> 3) & 31U)) || (unsigned int )p->funcnum != ((dev->pdev)->devfn & 7U)) { return (-22); } else { } p->irq = (int )(dev->pdev)->irq; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_pci_irq_by_busid", "%d:%d:%d => IRQ %d\n", p->busnum, p->devnum, p->funcnum, p->irq); } else { } return (0); } } int drm_irq_by_busid(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_irq_busid *p ; int tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; int tmp___2 ; int tmp___3 ; { p = (struct drm_irq_busid *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp != 0) { return (-22); } else { } __ret_warn_on = (unsigned long )dev->pdev == (unsigned long )((struct pci_dev *)0); tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_pci.c", 226); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { return (-22); } else { } tmp___2 = drm_core_check_feature(dev, 64); if (tmp___2 == 0) { return (-22); } else { } tmp___3 = drm_pci_irq_by_busid(dev, p); return (tmp___3); } } static void drm_pci_agp_init(struct drm_device *dev ) { int tmp ; int tmp___0 ; { tmp___0 = drm_core_check_feature(dev, 1); if (tmp___0 != 0) { tmp = drm_pci_device_is_agp(dev); if (tmp != 0) { dev->agp = drm_agp_init(dev); } else { } if ((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0)) { (dev->agp)->agp_mtrr = arch_phys_wc_add((dev->agp)->agp_info.aper_base, (dev->agp)->agp_info.aper_size * 1048576UL); } else { } } else { } return; } } void drm_pci_agp_destroy(struct drm_device *dev ) { { if ((unsigned long )dev->agp != (unsigned long )((struct drm_agp_head *)0)) { arch_phys_wc_del((dev->agp)->agp_mtrr); drm_agp_clear(dev); kfree((void const *)dev->agp); dev->agp = (struct drm_agp_head *)0; } else { } return; } } int drm_get_pci_dev(struct pci_dev *pdev , struct pci_device_id const *ent , struct drm_driver *driver ) { struct drm_device *dev ; int ret ; long tmp ; int tmp___0 ; char const *tmp___1 ; int tmp___2 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_get_pci_dev", "\n"); } else { } dev = drm_dev_alloc(driver, & pdev->dev); if ((unsigned long )dev == (unsigned long )((struct drm_device *)0)) { return (-12); } else { } ret = pci_enable_device(pdev); if (ret != 0) { goto err_free; } else { } dev->pdev = pdev; tmp___0 = drm_core_check_feature(dev, 8192); if (tmp___0 != 0) { pci_set_drvdata(pdev, (void *)dev); } else { } drm_pci_agp_init(dev); ret = drm_dev_register(dev, ent->driver_data); if (ret != 0) { goto err_agp; } else { } tmp___1 = pci_name((struct pci_dev const *)pdev); printk("\016[drm] Initialized %s %d.%d.%d %s for %s on minor %d\n", driver->name, driver->major, driver->minor, driver->patchlevel, driver->date, tmp___1, (dev->primary)->index); tmp___2 = drm_core_check_feature(dev, 8192); if (tmp___2 == 0) { list_add_tail(& dev->legacy_dev_list, & driver->legacy_dev_list); } else { } return (0); err_agp: drm_pci_agp_destroy(dev); pci_disable_device(pdev); err_free: drm_dev_unref(dev); return (ret); } } static char const __kstrtab_drm_get_pci_dev[16U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 'p', 'c', 'i', '_', 'd', 'e', 'v', '\000'}; struct kernel_symbol const __ksymtab_drm_get_pci_dev ; struct kernel_symbol const __ksymtab_drm_get_pci_dev = {(unsigned long )(& drm_get_pci_dev), (char const *)(& __kstrtab_drm_get_pci_dev)}; int drm_pci_init(struct drm_driver *driver , struct pci_driver *pdriver ) { struct pci_dev *pdev ; struct pci_device_id const *pid ; int i ; long tmp ; int tmp___0 ; { pdev = (struct pci_dev *)0; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_pci_init", "\n"); } else { } if ((driver->driver_features & 8192U) != 0U) { tmp___0 = __pci_register_driver(pdriver, & __this_module, "drm"); return (tmp___0); } else { } INIT_LIST_HEAD(& driver->legacy_dev_list); i = 0; goto ldv_39188; ldv_39187: pid = pdriver->id_table + (unsigned long )i; pdev = (struct pci_dev *)0; goto ldv_39184; ldv_39185: ; if ((pdev->class & (unsigned int )pid->class_mask) != (unsigned int )pid->class) { goto ldv_39184; } else { } pci_dev_get(pdev); drm_get_pci_dev(pdev, pid, driver); ldv_39184: pdev = pci_get_subsys(pid->vendor, pid->device, pid->subvendor, pid->subdevice, pdev); if ((unsigned long )pdev != (unsigned long )((struct pci_dev *)0)) { goto ldv_39185; } else { } i = i + 1; ldv_39188: ; if ((unsigned int )(pdriver->id_table + (unsigned long )i)->vendor != 0U) { goto ldv_39187; } else { } return (0); } } int drm_pcie_get_speed_cap_mask(struct drm_device *dev , u32 *mask ) { struct pci_dev *root ; u32 lnkcap ; u32 lnkcap2 ; { *mask = 0U; if ((unsigned long )dev->pdev == (unsigned long )((struct pci_dev *)0)) { return (-22); } else { } root = ((dev->pdev)->bus)->self; if ((unsigned int )root->vendor == 4358U || (unsigned int )root->vendor == 4454U) { return (-22); } else { } pcie_capability_read_dword(root, 12, & lnkcap); pcie_capability_read_dword(root, 44, & lnkcap2); if (lnkcap2 != 0U) { if ((lnkcap2 & 2U) != 0U) { *mask = *mask | 1U; } else { } if ((lnkcap2 & 4U) != 0U) { *mask = *mask | 2U; } else { } if ((lnkcap2 & 8U) != 0U) { *mask = *mask | 4U; } else { } } else { if ((int )lnkcap & 1) { *mask = *mask | 1U; } else { } if ((lnkcap & 2U) != 0U) { *mask = *mask | 3U; } else { } } printk("\016[drm] probing gen 2 caps for device %x:%x = %x/%x\n", (int )root->vendor, (int )root->device, lnkcap, lnkcap2); return (0); } } static char const __kstrtab_drm_pcie_get_speed_cap_mask[28U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', 'e', '_', 'g', 'e', 't', '_', 's', 'p', 'e', 'e', 'd', '_', 'c', 'a', 'p', '_', 'm', 'a', 's', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_pcie_get_speed_cap_mask ; struct kernel_symbol const __ksymtab_drm_pcie_get_speed_cap_mask = {(unsigned long )(& drm_pcie_get_speed_cap_mask), (char const *)(& __kstrtab_drm_pcie_get_speed_cap_mask)}; static char const __kstrtab_drm_pci_init[13U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_pci_init ; struct kernel_symbol const __ksymtab_drm_pci_init = {(unsigned long )(& drm_pci_init), (char const *)(& __kstrtab_drm_pci_init)}; void drm_pci_exit(struct drm_driver *driver , struct pci_driver *pdriver ) { struct drm_device *dev ; struct drm_device *tmp ; long tmp___0 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_pci_exit", "\n"); } else { } if ((driver->driver_features & 8192U) != 0U) { pci_unregister_driver(pdriver); } else { __mptr = (struct list_head const *)driver->legacy_dev_list.next; dev = (struct drm_device *)__mptr; __mptr___0 = (struct list_head const *)dev->legacy_dev_list.next; tmp = (struct drm_device *)__mptr___0; goto ldv_39227; ldv_39226: list_del(& dev->legacy_dev_list); drm_put_dev(dev); dev = tmp; __mptr___1 = (struct list_head const *)tmp->legacy_dev_list.next; tmp = (struct drm_device *)__mptr___1; ldv_39227: ; if ((unsigned long )(& dev->legacy_dev_list) != (unsigned long )(& driver->legacy_dev_list)) { goto ldv_39226; } else { } } printk("\016[drm] Module unloaded\n"); return; } } static char const __kstrtab_drm_pci_exit[13U] = { 'd', 'r', 'm', '_', 'p', 'c', 'i', '_', 'e', 'x', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_pci_exit ; struct kernel_symbol const __ksymtab_drm_pci_exit = {(unsigned long )(& drm_pci_exit), (char const *)(& __kstrtab_drm_pci_exit)}; bool ldv_queue_work_on_227(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_228(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_229(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_230(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_231(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; bool ldv_queue_work_on_241(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_243(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_242(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_245(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_244(struct workqueue_struct *ldv_func_arg1 ) ; int drm_platform_init(struct drm_driver *driver , struct platform_device *platform_device ) ; int drm_platform_set_busid(struct drm_device *dev , struct drm_master *master ) ; static int drm_get_platform_dev(struct platform_device *platdev , struct drm_driver *driver ) { struct drm_device *dev ; int ret ; long tmp ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_get_platform_dev", "\n"); } else { } dev = drm_dev_alloc(driver, & platdev->dev); if ((unsigned long )dev == (unsigned long )((struct drm_device *)0)) { return (-12); } else { } dev->platformdev = platdev; ret = drm_dev_register(dev, 0UL); if (ret != 0) { goto err_free; } else { } printk("\016[drm] Initialized %s %d.%d.%d %s on minor %d\n", driver->name, driver->major, driver->minor, driver->patchlevel, driver->date, (dev->primary)->index); return (0); err_free: drm_dev_unref(dev); return (ret); } } int drm_platform_set_busid(struct drm_device *dev , struct drm_master *master ) { int id ; size_t tmp ; { id = (dev->platformdev)->id; if (id < 0) { id = 0; } else { } master->unique = kasprintf(208U, "platform:%s:%02d", (dev->platformdev)->name, id); if ((unsigned long )master->unique == (unsigned long )((char *)0)) { return (-12); } else { } tmp = strlen((char const *)master->unique); master->unique_len = (int )tmp; return (0); } } static char const __kstrtab_drm_platform_set_busid[23U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 't', 'f', 'o', 'r', 'm', '_', 's', 'e', 't', '_', 'b', 'u', 's', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_platform_set_busid ; struct kernel_symbol const __ksymtab_drm_platform_set_busid = {(unsigned long )(& drm_platform_set_busid), (char const *)(& __kstrtab_drm_platform_set_busid)}; int drm_platform_init(struct drm_driver *driver , struct platform_device *platform_device ) { long tmp ; int tmp___0 ; { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_platform_init", "\n"); } else { } tmp___0 = drm_get_platform_dev(platform_device, driver); return (tmp___0); } } static char const __kstrtab_drm_platform_init[18U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 't', 'f', 'o', 'r', 'm', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_platform_init ; struct kernel_symbol const __ksymtab_drm_platform_init = {(unsigned long )(& drm_platform_init), (char const *)(& __kstrtab_drm_platform_init)}; bool ldv_queue_work_on_241(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_242(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_243(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_244(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_245(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern int snprintf(char * , size_t , char const * , ...) ; extern bool sysfs_streq(char const * , char const * ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; extern int mutex_lock_interruptible_nested(struct mutex * , unsigned int ) ; extern struct workqueue_struct *system_wq ; bool ldv_queue_work_on_255(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_257(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_256(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_259(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_258(struct workqueue_struct *ldv_func_arg1 ) ; __inline static bool queue_delayed_work(struct workqueue_struct *wq , struct delayed_work *dwork , unsigned long delay ) { bool tmp ; { tmp = ldv_queue_delayed_work_on_256(8192, wq, dwork, delay); return (tmp); } } __inline static bool schedule_delayed_work(struct delayed_work *dwork , unsigned long delay ) { bool tmp ; { tmp = queue_delayed_work(system_wq, dwork, delay); return (tmp); } } extern int kobject_uevent_env(struct kobject * , enum kobject_action , char ** ) ; extern int class_create_file_ns(struct class * , struct class_attribute const * , void const * ) ; __inline static int class_create_file(struct class *class , struct class_attribute const *attr ) { int tmp ; { tmp = class_create_file_ns(class, attr, (void const *)0); return (tmp); } } __inline static void class_remove_file(struct class *class , struct class_attribute const *attr ) { { return; } } extern ssize_t show_class_attr_string(struct class * , struct class_attribute * , char * ) ; extern struct class *__class_create(struct module * , char const * , struct lock_class_key * ) ; extern void class_destroy(struct class * ) ; __inline static struct device *kobj_to_dev(struct kobject *kobj ) { struct kobject const *__mptr ; { __mptr = (struct kobject const *)kobj; return ((struct device *)__mptr + 0xfffffffffffffff0UL); } } extern int dev_set_name(struct device * , char const * , ...) ; __inline static void *dev_get_drvdata(struct device const *dev ) { { return ((void *)dev->driver_data); } } extern int device_register(struct device * ) ; extern void device_unregister(struct device * ) ; extern void device_initialize(struct device * ) ; extern struct device *device_create_with_groups(struct class * , struct device * , dev_t , void * , struct attribute_group const ** , char const * , ...) ; int drm_class_device_register(struct device *dev ) ; void drm_class_device_unregister(struct device *dev ) ; char const *drm_get_connector_status_name(enum drm_connector_status status ) ; char const *drm_get_dpms_name(int val ) ; char const *drm_get_dvi_i_subconnector_name(int val ) ; char const *drm_get_dvi_i_select_name(int val ) ; char const *drm_get_tv_subconnector_name(int val ) ; char const *drm_get_tv_select_name(int val ) ; int drm_object_property_get_value(struct drm_mode_object *obj , struct drm_property *property , uint64_t *val ) ; void drm_sysfs_hotplug_event(struct drm_device *dev ) ; int drm_sysfs_connector_add(struct drm_connector *connector ) ; void drm_sysfs_connector_remove(struct drm_connector *connector ) ; static struct device_type drm_sysfs_device_minor = {"drm_minor", 0, 0, 0, 0, 0}; static int __drm_class_suspend(struct device *dev , pm_message_t state ) { struct drm_minor *drm_minor ; void *tmp ; struct drm_device *drm_dev ; int tmp___0 ; int tmp___1 ; { if ((unsigned long )dev->type == (unsigned long )((struct device_type const *)(& drm_sysfs_device_minor))) { tmp = dev_get_drvdata((struct device const *)dev); drm_minor = (struct drm_minor *)tmp; drm_dev = drm_minor->dev; if (drm_minor->type == 0) { tmp___1 = drm_core_check_feature(drm_dev, 8192); if (tmp___1 == 0) { if ((unsigned long )(drm_dev->driver)->suspend != (unsigned long )((int (*)(struct drm_device * , pm_message_t ))0)) { tmp___0 = (*((drm_dev->driver)->suspend))(drm_dev, state); return (tmp___0); } else { } } else { } } else { } } else { } return (0); } } static int drm_class_suspend(struct device *dev ) { struct pm_message __constr_expr_0 ; int tmp ; { __constr_expr_0.event = 2; tmp = __drm_class_suspend(dev, __constr_expr_0); return (tmp); } } static int drm_class_freeze(struct device *dev ) { struct pm_message __constr_expr_0 ; int tmp ; { __constr_expr_0.event = 1; tmp = __drm_class_suspend(dev, __constr_expr_0); return (tmp); } } static int drm_class_resume(struct device *dev ) { struct drm_minor *drm_minor ; void *tmp ; struct drm_device *drm_dev ; int tmp___0 ; int tmp___1 ; { if ((unsigned long )dev->type == (unsigned long )((struct device_type const *)(& drm_sysfs_device_minor))) { tmp = dev_get_drvdata((struct device const *)dev); drm_minor = (struct drm_minor *)tmp; drm_dev = drm_minor->dev; if (drm_minor->type == 0) { tmp___1 = drm_core_check_feature(drm_dev, 8192); if (tmp___1 == 0) { if ((unsigned long )(drm_dev->driver)->resume != (unsigned long )((int (*)(struct drm_device * ))0)) { tmp___0 = (*((drm_dev->driver)->resume))(drm_dev); return (tmp___0); } else { } } else { } } else { } } else { } return (0); } } static struct dev_pm_ops const drm_class_dev_pm_ops = {0, 0, & drm_class_suspend, & drm_class_resume, & drm_class_freeze, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static char *drm_devnode(struct device *dev , umode_t *mode ) { char const *tmp ; char *tmp___0 ; { tmp = dev_name((struct device const *)dev); tmp___0 = kasprintf(208U, "dri/%s", tmp); return (tmp___0); } } static struct class_attribute_string class_attr_version = {{{"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 *)"drm 1.1.0 20060810"}; struct class *drm_sysfs_create(struct module *owner , char *name ) { struct class *class ; int err ; struct lock_class_key __key ; struct class *tmp ; long tmp___0 ; bool tmp___1 ; void *tmp___2 ; { tmp = __class_create(owner, (char const *)name, & __key); class = tmp; tmp___1 = IS_ERR((void const *)class); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)class); err = (int )tmp___0; goto err_out; } else { } class->pm = & drm_class_dev_pm_ops; err = class_create_file(class, (struct class_attribute const *)(& class_attr_version.attr)); if (err != 0) { goto err_out_class; } else { } class->devnode = & drm_devnode; return (class); err_out_class: class_destroy(class); err_out: tmp___2 = ERR_PTR((long )err); return ((struct class *)tmp___2); } } void drm_sysfs_destroy(void) { bool tmp ; { if ((unsigned long )drm_class == (unsigned long )((struct class *)0)) { return; } else { tmp = IS_ERR((void const *)drm_class); if ((int )tmp) { return; } else { } } class_remove_file(drm_class, (struct class_attribute const *)(& class_attr_version.attr)); class_destroy(drm_class); drm_class = (struct class *)0; return; } } static ssize_t status_store(struct device *device , struct device_attribute *attr , char const *buf , size_t count ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; enum drm_connector_status old_status ; int ret ; bool tmp___0 ; bool tmp___1 ; bool tmp___2 ; bool tmp___3 ; long tmp___4 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; ret = mutex_lock_interruptible_nested(& dev->mode_config.mutex, 0U); if (ret != 0) { return ((ssize_t )ret); } else { } old_status = connector->status; tmp___3 = sysfs_streq(buf, "detect"); if ((int )tmp___3) { connector->force = 0; connector->status = (*((connector->funcs)->detect))(connector, 1); } else { tmp___2 = sysfs_streq(buf, "on"); if ((int )tmp___2) { connector->force = 2; } else { tmp___1 = sysfs_streq(buf, "on-digital"); if ((int )tmp___1) { connector->force = 3; } else { tmp___0 = sysfs_streq(buf, "off"); if ((int )tmp___0) { connector->force = 1; } else { ret = -22; } } } } if (ret == 0 && (unsigned int )connector->force != 0U) { if ((unsigned int )connector->force == 2U || (unsigned int )connector->force == 3U) { connector->status = 1; } else { connector->status = 2; } if ((unsigned long )(connector->funcs)->force != (unsigned long )((void (*/* const */)(struct drm_connector * ))0)) { (*((connector->funcs)->force))(connector); } else { } } else { } if ((unsigned int )connector->status != (unsigned int )old_status) { tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("status_store", "[CONNECTOR:%d:%s] status updated from %d to %d\n", connector->base.id, connector->name, (unsigned int )old_status, (unsigned int )connector->status); } else { } dev->mode_config.delayed_event = 1; if ((int )dev->mode_config.poll_enabled) { schedule_delayed_work(& dev->mode_config.output_poll_work, 0UL); } else { } } else { } mutex_unlock(& dev->mode_config.mutex); return ((ssize_t )(ret != 0 ? (size_t )ret : count)); } } static ssize_t status_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; tmp___0 = drm_get_connector_status_name(connector->status); tmp___1 = snprintf(buf, 4096UL, "%s\n", tmp___0); return ((ssize_t )tmp___1); } } static ssize_t dpms_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; uint64_t dpms_status ; int ret ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; ret = drm_object_property_get_value(& connector->base, dev->mode_config.dpms_property, & dpms_status); if (ret != 0) { return (0L); } else { } tmp___0 = drm_get_dpms_name((int )dpms_status); tmp___1 = snprintf(buf, 4096UL, "%s\n", tmp___0); return ((ssize_t )tmp___1); } } static ssize_t enabled_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; int tmp___0 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; tmp___0 = snprintf(buf, 4096UL, "%s\n", (unsigned long )connector->encoder != (unsigned long )((struct drm_encoder *)0) ? (char *)"enabled" : (char *)"disabled"); return ((ssize_t )tmp___0); } } static ssize_t edid_show(struct file *filp , struct kobject *kobj , struct bin_attribute *attr , char *buf , loff_t off , size_t count ) { struct device *connector_dev ; struct kobject const *__mptr ; struct drm_connector *connector ; void *tmp ; unsigned char *edid ; size_t size ; { __mptr = (struct kobject const *)kobj; connector_dev = (struct device *)__mptr + 0xfffffffffffffff0UL; tmp = dev_get_drvdata((struct device const *)connector_dev); connector = (struct drm_connector *)tmp; if ((unsigned long )connector->edid_blob_ptr == (unsigned long )((struct drm_property_blob *)0)) { return (0L); } else { } edid = (unsigned char *)(& (connector->edid_blob_ptr)->data); size = (connector->edid_blob_ptr)->length; if ((unsigned long )edid == (unsigned long )((unsigned char *)0U)) { return (0L); } else { } if ((unsigned long long )off >= (unsigned long long )size) { return (0L); } else { } if ((unsigned long long )off + (unsigned long long )count > (unsigned long long )size) { count = (size_t )((unsigned long long )size - (unsigned long long )off); } else { } memcpy((void *)buf, (void const *)edid + (unsigned long )off, count); return ((ssize_t )count); } } static ssize_t modes_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_display_mode *mode ; int written ; struct list_head const *__mptr ; int tmp___0 ; struct list_head const *__mptr___0 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; written = 0; __mptr = (struct list_head const *)connector->modes.next; mode = (struct drm_display_mode *)__mptr; goto ldv_38949; ldv_38948: tmp___0 = snprintf(buf + (unsigned long )written, 4096UL - (unsigned long )written, "%s\n", (char *)(& mode->name)); written = tmp___0 + written; __mptr___0 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___0; ldv_38949: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->modes)) { goto ldv_38948; } else { } return ((ssize_t )written); } } static ssize_t tv_subconnector_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; struct drm_property *prop ; uint64_t subconnector ; int ret ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; prop = dev->mode_config.tv_subconnector_property; if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { drm_err("Unable to find subconnector property\n"); return (0L); } else { } ret = drm_object_property_get_value(& connector->base, prop, & subconnector); if (ret != 0) { return (0L); } else { } tmp___0 = drm_get_tv_subconnector_name((int )subconnector); tmp___1 = snprintf(buf, 4096UL, "%s", tmp___0); return ((ssize_t )tmp___1); } } static ssize_t tv_select_subconnector_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; struct drm_property *prop ; uint64_t subconnector ; int ret ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; prop = dev->mode_config.tv_select_subconnector_property; if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { drm_err("Unable to find select subconnector property\n"); return (0L); } else { } ret = drm_object_property_get_value(& connector->base, prop, & subconnector); if (ret != 0) { return (0L); } else { } tmp___0 = drm_get_tv_select_name((int )subconnector); tmp___1 = snprintf(buf, 4096UL, "%s", tmp___0); return ((ssize_t )tmp___1); } } static ssize_t dvii_subconnector_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; struct drm_property *prop ; uint64_t subconnector ; int ret ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; prop = dev->mode_config.dvi_i_subconnector_property; if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { drm_err("Unable to find subconnector property\n"); return (0L); } else { } ret = drm_object_property_get_value(& connector->base, prop, & subconnector); if (ret != 0) { return (0L); } else { } tmp___0 = drm_get_dvi_i_subconnector_name((int )subconnector); tmp___1 = snprintf(buf, 4096UL, "%s", tmp___0); return ((ssize_t )tmp___1); } } static ssize_t dvii_select_subconnector_show(struct device *device , struct device_attribute *attr , char *buf ) { struct drm_connector *connector ; void *tmp ; struct drm_device *dev ; struct drm_property *prop ; uint64_t subconnector ; int ret ; char const *tmp___0 ; int tmp___1 ; { tmp = dev_get_drvdata((struct device const *)device); connector = (struct drm_connector *)tmp; dev = connector->dev; prop = dev->mode_config.dvi_i_select_subconnector_property; if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { drm_err("Unable to find select subconnector property\n"); return (0L); } else { } ret = drm_object_property_get_value(& connector->base, prop, & subconnector); if (ret != 0) { return (0L); } else { } tmp___0 = drm_get_dvi_i_select_name((int )subconnector); tmp___1 = snprintf(buf, 4096UL, "%s", tmp___0); return ((ssize_t )tmp___1); } } static struct device_attribute dev_attr_status = {{"status", 420U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & status_show, & status_store}; static struct device_attribute dev_attr_enabled = {{"enabled", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & enabled_show, 0}; static struct device_attribute dev_attr_dpms = {{"dpms", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & dpms_show, 0}; static struct device_attribute dev_attr_modes = {{"modes", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & modes_show, 0}; static struct attribute *connector_dev_attrs[5U] = { & dev_attr_status.attr, & dev_attr_enabled.attr, & dev_attr_dpms.attr, & dev_attr_modes.attr, (struct attribute *)0}; static struct device_attribute dev_attr_tv_subconnector = {{"tv_subconnector", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & tv_subconnector_show, 0}; static struct device_attribute dev_attr_tv_select_subconnector = {{"tv_select_subconnector", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & tv_select_subconnector_show, 0}; static struct attribute *connector_tv_dev_attrs[3U] = { & dev_attr_tv_subconnector.attr, & dev_attr_tv_select_subconnector.attr, (struct attribute *)0}; static struct device_attribute dev_attr_dvii_subconnector = {{"dvii_subconnector", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & dvii_subconnector_show, 0}; static struct device_attribute dev_attr_dvii_select_subconnector = {{"dvii_select_subconnector", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, & dvii_select_subconnector_show, 0}; static struct attribute *connector_dvii_dev_attrs[3U] = { & dev_attr_dvii_subconnector.attr, & dev_attr_dvii_select_subconnector.attr, (struct attribute *)0}; static int kobj_connector_type(struct kobject *kobj ) { struct device *dev ; struct device *tmp ; struct drm_connector *connector ; void *tmp___0 ; { tmp = kobj_to_dev(kobj); dev = tmp; tmp___0 = dev_get_drvdata((struct device const *)dev); connector = (struct drm_connector *)tmp___0; return (connector->connector_type); } } static umode_t connector_is_dvii(struct kobject *kobj , struct attribute *attr , int idx ) { int tmp ; { tmp = kobj_connector_type(kobj); return (tmp == 2 ? attr->mode : 0U); } } static umode_t connector_is_tv(struct kobject *kobj , struct attribute *attr , int idx ) { int tmp ; { tmp = kobj_connector_type(kobj); switch (tmp) { case 5: ; case 6: ; case 8: ; case 13: ; return (attr->mode); } return (0U); } } static struct bin_attribute edid_attr = {{"edid", 292U, (_Bool)0, 0, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}}, 0UL, 0, & edid_show, 0, 0}; static struct bin_attribute *connector_bin_attrs[2U] = { & edid_attr, (struct bin_attribute *)0}; static struct attribute_group const connector_dev_group = {0, 0, (struct attribute **)(& connector_dev_attrs), (struct bin_attribute **)(& connector_bin_attrs)}; static struct attribute_group const connector_tv_dev_group = {0, & connector_is_tv, (struct attribute **)(& connector_tv_dev_attrs), 0}; static struct attribute_group const connector_dvii_dev_group = {0, & connector_is_dvii, (struct attribute **)(& connector_dvii_dev_attrs), 0}; static struct attribute_group const *connector_dev_groups[4U] = { & connector_dev_group, & connector_tv_dev_group, & connector_dvii_dev_group, (struct attribute_group const *)0}; int drm_sysfs_connector_add(struct drm_connector *connector ) { struct drm_device *dev ; long tmp ; long tmp___0 ; long tmp___1 ; bool tmp___2 ; { dev = connector->dev; if ((unsigned long )connector->kdev != (unsigned long )((struct device *)0)) { return (0); } else { } connector->kdev = device_create_with_groups(drm_class, (dev->primary)->kdev, 0U, (void *)connector, (struct attribute_group const **)(& connector_dev_groups), "card%d-%s", (dev->primary)->index, connector->name); tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_sysfs_connector_add", "adding \"%s\" to sysfs\n", connector->name); } else { } tmp___2 = IS_ERR((void const *)connector->kdev); if ((int )tmp___2) { tmp___0 = PTR_ERR((void const *)connector->kdev); drm_err("failed to register connector device: %ld\n", tmp___0); tmp___1 = PTR_ERR((void const *)connector->kdev); return ((int )tmp___1); } else { } drm_sysfs_hotplug_event(dev); return (0); } } void drm_sysfs_connector_remove(struct drm_connector *connector ) { long tmp ; { if ((unsigned long )connector->kdev == (unsigned long )((struct device *)0)) { return; } else { } tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_sysfs_connector_remove", "removing \"%s\" from sysfs\n", connector->name); } else { } device_unregister(connector->kdev); connector->kdev = (struct device *)0; return; } } void drm_sysfs_hotplug_event(struct drm_device *dev ) { char *event_string ; char *envp[2U] ; long tmp ; { event_string = (char *)"HOTPLUG=1"; envp[0] = event_string; envp[1] = (char *)0; tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_sysfs_hotplug_event", "generating hotplug event\n"); } else { } kobject_uevent_env(& ((dev->primary)->kdev)->kobj, 2, (char **)(& envp)); return; } } static char const __kstrtab_drm_sysfs_hotplug_event[24U] = { 'd', 'r', 'm', '_', 's', 'y', 's', 'f', 's', '_', 'h', 'o', 't', 'p', 'l', 'u', 'g', '_', 'e', 'v', 'e', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_sysfs_hotplug_event ; struct kernel_symbol const __ksymtab_drm_sysfs_hotplug_event = {(unsigned long )(& drm_sysfs_hotplug_event), (char const *)(& __kstrtab_drm_sysfs_hotplug_event)}; static void drm_sysfs_release(struct device *dev ) { { kfree((void const *)dev); return; } } struct device *drm_sysfs_minor_alloc(struct drm_minor *minor ) { char const *minor_str ; struct device *kdev ; int r ; void *tmp ; void *tmp___0 ; void *tmp___1 ; { if (minor->type == 1) { minor_str = "controlD%d"; } else if (minor->type == 2) { minor_str = "renderD%d"; } else { minor_str = "card%d"; } tmp = kzalloc(1416UL, 208U); kdev = (struct device *)tmp; if ((unsigned long )kdev == (unsigned long )((struct device *)0)) { tmp___0 = ERR_PTR(-12L); return ((struct device *)tmp___0); } else { } device_initialize(kdev); kdev->devt = (dev_t )(minor->index | 236978176); kdev->class = drm_class; kdev->type = (struct device_type const *)(& drm_sysfs_device_minor); kdev->parent = (minor->dev)->dev; kdev->release = & drm_sysfs_release; dev_set_drvdata(kdev, (void *)minor); r = dev_set_name(kdev, minor_str, minor->index); if (r < 0) { goto err_free; } else { } return (kdev); err_free: put_device(kdev); tmp___1 = ERR_PTR((long )r); return ((struct device *)tmp___1); } } int drm_class_device_register(struct device *dev ) { bool tmp ; int tmp___0 ; { if ((unsigned long )drm_class == (unsigned long )((struct class *)0)) { return (-2); } else { tmp = IS_ERR((void const *)drm_class); if ((int )tmp) { return (-2); } else { } } dev->class = drm_class; tmp___0 = device_register(dev); return (tmp___0); } } static char const __kstrtab_drm_class_device_register[26U] = { 'd', 'r', 'm', '_', 'c', 'l', 'a', 's', 's', '_', 'd', 'e', 'v', 'i', 'c', 'e', '_', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_class_device_register ; struct kernel_symbol const __ksymtab_drm_class_device_register = {(unsigned long )(& drm_class_device_register), (char const *)(& __kstrtab_drm_class_device_register)}; void drm_class_device_unregister(struct device *dev ) { { return; } } static char const __kstrtab_drm_class_device_unregister[28U] = { 'd', 'r', 'm', '_', 'c', 'l', 'a', 's', 's', '_', 'd', 'e', 'v', 'i', 'c', 'e', '_', 'u', 'n', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_class_device_unregister ; struct kernel_symbol const __ksymtab_drm_class_device_unregister = {(unsigned long )(& drm_class_device_unregister), (char const *)(& __kstrtab_drm_class_device_unregister)}; extern int ldv_freeze_late_25(void) ; extern int ldv_freeze_noirq_25(void) ; int ldv_retval_2 ; extern int ldv_thaw_25(void) ; int ldv_retval_12 ; int ldv_retval_5 ; extern int ldv_complete_25(void) ; int ldv_retval_11 ; int ldv_retval_6 ; int ldv_retval_1 ; extern int ldv_thaw_noirq_25(void) ; extern int ldv_prepare_25(void) ; extern int ldv_suspend_noirq_25(void) ; extern int ldv_suspend_late_25(void) ; int ldv_retval_13 ; extern int ldv_probe_15(void) ; extern int ldv_thaw_early_25(void) ; int ldv_retval_10 ; int ldv_retval_9 ; extern int ldv_resume_early_25(void) ; int ldv_retval_4 ; extern int ldv_resume_noirq_25(void) ; int ldv_retval_8 ; extern int ldv_release_15(void) ; int ldv_retval_3 ; int ldv_retval_7 ; void ldv_initialize_device_attribute_23(void) { void *tmp ; void *tmp___0 ; { tmp = ldv_init_zalloc(48UL); dev_attr_status_group0 = (struct device_attribute *)tmp; tmp___0 = ldv_init_zalloc(1416UL); dev_attr_status_group1 = (struct device *)tmp___0; return; } } void ldv_dev_pm_ops_25(void) { void *tmp ; { tmp = ldv_init_zalloc(1416UL); drm_class_dev_pm_ops_group1 = (struct device *)tmp; return; } } void ldv_main_exported_25(void) { int tmp ; { tmp = __VERIFIER_nondet_int(); switch (tmp) { case 0: ; if (ldv_state_variable_25 == 2) { ldv_retval_13 = drm_class_freeze(drm_class_dev_pm_ops_group1); if (ldv_retval_13 == 0) { ldv_state_variable_25 = 3; } else { } } else { } goto ldv_39140; case 1: ; if (ldv_state_variable_25 == 2) { ldv_retval_12 = drm_class_suspend(drm_class_dev_pm_ops_group1); if (ldv_retval_12 == 0) { ldv_state_variable_25 = 4; } else { } } else { } goto ldv_39140; case 2: ; if (ldv_state_variable_25 == 10) { ldv_retval_11 = drm_class_resume(drm_class_dev_pm_ops_group1); if (ldv_retval_11 == 0) { ldv_state_variable_25 = 11; } else { } } else { } goto ldv_39140; case 3: ; if (ldv_state_variable_25 == 4) { ldv_retval_10 = ldv_suspend_late_25(); if (ldv_retval_10 == 0) { ldv_state_variable_25 = 7; } else { } } else { } goto ldv_39140; case 4: ; if (ldv_state_variable_25 == 7) { ldv_retval_9 = ldv_resume_early_25(); if (ldv_retval_9 == 0) { ldv_state_variable_25 = 10; } else { } } else { } goto ldv_39140; case 5: ; if (ldv_state_variable_25 == 6) { ldv_retval_8 = ldv_thaw_early_25(); if (ldv_retval_8 == 0) { ldv_state_variable_25 = 9; } else { } } else { } goto ldv_39140; case 6: ; if (ldv_state_variable_25 == 8) { ldv_retval_7 = ldv_resume_noirq_25(); if (ldv_retval_7 == 0) { ldv_state_variable_25 = 10; } else { } } else { } goto ldv_39140; case 7: ; if (ldv_state_variable_25 == 3) { ldv_retval_6 = ldv_freeze_noirq_25(); if (ldv_retval_6 == 0) { ldv_state_variable_25 = 5; } else { } } else { } goto ldv_39140; case 8: ; if (ldv_state_variable_25 == 1) { ldv_retval_5 = ldv_prepare_25(); if (ldv_retval_5 == 0) { ldv_state_variable_25 = 2; ref_cnt = ref_cnt + 1; } else { } } else { } goto ldv_39140; case 9: ; if (ldv_state_variable_25 == 3) { ldv_retval_4 = ldv_freeze_late_25(); if (ldv_retval_4 == 0) { ldv_state_variable_25 = 6; } else { } } else { } goto ldv_39140; case 10: ; if (ldv_state_variable_25 == 5) { ldv_retval_3 = ldv_thaw_noirq_25(); if (ldv_retval_3 == 0) { ldv_state_variable_25 = 9; } else { } } else { } goto ldv_39140; case 11: ; if (ldv_state_variable_25 == 9) { ldv_retval_2 = ldv_thaw_25(); if (ldv_retval_2 == 0) { ldv_state_variable_25 = 11; } else { } } else { } goto ldv_39140; case 12: ; if (ldv_state_variable_25 == 4) { ldv_retval_1 = ldv_suspend_noirq_25(); if (ldv_retval_1 == 0) { ldv_state_variable_25 = 8; } else { } } else { } goto ldv_39140; case 13: ; if (ldv_state_variable_25 == 11) { ldv_complete_25(); ldv_state_variable_25 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39140; default: ldv_stop(); } ldv_39140: ; return; } } void ldv_main_exported_21(void) { char *ldvarg6 ; void *tmp ; struct device *ldvarg5 ; void *tmp___0 ; struct device_attribute *ldvarg7 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1UL); ldvarg6 = (char *)tmp; tmp___0 = ldv_init_zalloc(1416UL); ldvarg5 = (struct device *)tmp___0; tmp___1 = ldv_init_zalloc(48UL); ldvarg7 = (struct device_attribute *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_21 == 1) { dpms_show(ldvarg5, ldvarg7, ldvarg6); ldv_state_variable_21 = 1; } else { } goto ldv_39162; default: ldv_stop(); } ldv_39162: ; return; } } void ldv_main_exported_17(void) { struct device *ldvarg12 ; void *tmp ; char *ldvarg13 ; void *tmp___0 ; struct device_attribute *ldvarg14 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1416UL); ldvarg12 = (struct device *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg13 = (char *)tmp___0; tmp___1 = ldv_init_zalloc(48UL); ldvarg14 = (struct device_attribute *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_17 == 1) { dvii_subconnector_show(ldvarg12, ldvarg14, ldvarg13); ldv_state_variable_17 = 1; } else { } goto ldv_39171; default: ldv_stop(); } ldv_39171: ; return; } } void ldv_main_exported_20(void) { struct device *ldvarg25 ; void *tmp ; char *ldvarg26 ; void *tmp___0 ; struct device_attribute *ldvarg27 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1416UL); ldvarg25 = (struct device *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg26 = (char *)tmp___0; tmp___1 = ldv_init_zalloc(48UL); ldvarg27 = (struct device_attribute *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_20 == 1) { modes_show(ldvarg25, ldvarg27, ldvarg26); ldv_state_variable_20 = 1; } else { } goto ldv_39180; default: ldv_stop(); } ldv_39180: ; return; } } void ldv_main_exported_15(void) { size_t ldvarg87 ; struct bin_attribute *ldvarg90 ; void *tmp ; struct file *ldvarg89 ; void *tmp___0 ; loff_t ldvarg92 ; char *ldvarg88 ; void *tmp___1 ; struct kobject *ldvarg91 ; void *tmp___2 ; int tmp___3 ; { tmp = ldv_init_zalloc(72UL); ldvarg90 = (struct bin_attribute *)tmp; tmp___0 = __VERIFIER_nondet_pointer(); ldvarg89 = (struct file *)tmp___0; tmp___1 = ldv_init_zalloc(1UL); ldvarg88 = (char *)tmp___1; tmp___2 = ldv_init_zalloc(296UL); ldvarg91 = (struct kobject *)tmp___2; ldv_memset((void *)(& ldvarg87), 0, 8UL); ldv_memset((void *)(& ldvarg92), 0, 8UL); tmp___3 = __VERIFIER_nondet_int(); switch (tmp___3) { case 0: ; if (ldv_state_variable_15 == 2) { edid_show(ldvarg89, ldvarg91, ldvarg90, ldvarg88, ldvarg92, ldvarg87); ldv_state_variable_15 = 2; } else { } goto ldv_39192; case 1: ; if (ldv_state_variable_15 == 2) { ldv_release_15(); ldv_state_variable_15 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39192; case 2: ; if (ldv_state_variable_15 == 1) { ldv_probe_15(); ldv_state_variable_15 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39192; default: ldv_stop(); } ldv_39192: ; return; } } void ldv_main_exported_14(void) { struct attribute *ldvarg30 ; void *tmp ; struct kobject *ldvarg28 ; void *tmp___0 ; int ldvarg29 ; int tmp___1 ; { tmp = ldv_init_zalloc(32UL); ldvarg30 = (struct attribute *)tmp; tmp___0 = ldv_init_zalloc(296UL); ldvarg28 = (struct kobject *)tmp___0; ldv_memset((void *)(& ldvarg29), 0, 4UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_14 == 1) { connector_is_tv(ldvarg28, ldvarg30, ldvarg29); ldv_state_variable_14 = 1; } else { } goto ldv_39203; default: ldv_stop(); } ldv_39203: ; return; } } void ldv_main_exported_22(void) { char *ldvarg56 ; void *tmp ; struct device *ldvarg55 ; void *tmp___0 ; struct device_attribute *ldvarg57 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1UL); ldvarg56 = (char *)tmp; tmp___0 = ldv_init_zalloc(1416UL); ldvarg55 = (struct device *)tmp___0; tmp___1 = ldv_init_zalloc(48UL); ldvarg57 = (struct device_attribute *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_22 == 1) { enabled_show(ldvarg55, ldvarg57, ldvarg56); ldv_state_variable_22 = 1; } else { } goto ldv_39212; default: ldv_stop(); } ldv_39212: ; return; } } void ldv_main_exported_18(void) { struct device *ldvarg15 ; void *tmp ; char *ldvarg16 ; void *tmp___0 ; struct device_attribute *ldvarg17 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1416UL); ldvarg15 = (struct device *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg16 = (char *)tmp___0; tmp___1 = ldv_init_zalloc(48UL); ldvarg17 = (struct device_attribute *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_18 == 1) { tv_select_subconnector_show(ldvarg15, ldvarg17, ldvarg16); ldv_state_variable_18 = 1; } else { } goto ldv_39221; default: ldv_stop(); } ldv_39221: ; return; } } void ldv_main_exported_24(void) { struct class_attribute *ldvarg33 ; void *tmp ; struct class *ldvarg31 ; void *tmp___0 ; char *ldvarg32 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(48UL); ldvarg33 = (struct class_attribute *)tmp; tmp___0 = ldv_init_zalloc(120UL); ldvarg31 = (struct class *)tmp___0; tmp___1 = ldv_init_zalloc(1UL); ldvarg32 = (char *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_24 == 1) { show_class_attr_string(ldvarg31, ldvarg33, ldvarg32); ldv_state_variable_24 = 1; } else { } goto ldv_39230; default: ldv_stop(); } ldv_39230: ; return; } } void ldv_main_exported_23(void) { size_t ldvarg62 ; char *ldvarg61 ; void *tmp ; char *ldvarg63 ; void *tmp___0 ; int tmp___1 ; { tmp = ldv_init_zalloc(1UL); ldvarg61 = (char *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg63 = (char *)tmp___0; ldv_memset((void *)(& ldvarg62), 0, 8UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_23 == 1) { status_store(dev_attr_status_group1, dev_attr_status_group0, (char const *)ldvarg63, ldvarg62); ldv_state_variable_23 = 1; } else { } goto ldv_39239; case 1: ; if (ldv_state_variable_23 == 1) { status_show(dev_attr_status_group1, dev_attr_status_group0, ldvarg61); ldv_state_variable_23 = 1; } else { } goto ldv_39239; default: ldv_stop(); } ldv_39239: ; return; } } void ldv_main_exported_13(void) { int ldvarg59 ; struct attribute *ldvarg60 ; void *tmp ; struct kobject *ldvarg58 ; void *tmp___0 ; int tmp___1 ; { tmp = ldv_init_zalloc(32UL); ldvarg60 = (struct attribute *)tmp; tmp___0 = ldv_init_zalloc(296UL); ldvarg58 = (struct kobject *)tmp___0; ldv_memset((void *)(& ldvarg59), 0, 4UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_13 == 1) { connector_is_dvii(ldvarg58, ldvarg60, ldvarg59); ldv_state_variable_13 = 1; } else { } goto ldv_39249; default: ldv_stop(); } ldv_39249: ; return; } } void ldv_main_exported_16(void) { struct device_attribute *ldvarg22 ; void *tmp ; struct device *ldvarg20 ; void *tmp___0 ; char *ldvarg21 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(48UL); ldvarg22 = (struct device_attribute *)tmp; tmp___0 = ldv_init_zalloc(1416UL); ldvarg20 = (struct device *)tmp___0; tmp___1 = ldv_init_zalloc(1UL); ldvarg21 = (char *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_16 == 1) { dvii_select_subconnector_show(ldvarg20, ldvarg22, ldvarg21); ldv_state_variable_16 = 1; } else { } goto ldv_39258; default: ldv_stop(); } ldv_39258: ; return; } } void ldv_main_exported_19(void) { char *ldvarg99 ; void *tmp ; struct device_attribute *ldvarg100 ; void *tmp___0 ; struct device *ldvarg98 ; void *tmp___1 ; int tmp___2 ; { tmp = ldv_init_zalloc(1UL); ldvarg99 = (char *)tmp; tmp___0 = ldv_init_zalloc(48UL); ldvarg100 = (struct device_attribute *)tmp___0; tmp___1 = ldv_init_zalloc(1416UL); ldvarg98 = (struct device *)tmp___1; tmp___2 = __VERIFIER_nondet_int(); switch (tmp___2) { case 0: ; if (ldv_state_variable_19 == 1) { tv_subconnector_show(ldvarg98, ldvarg100, ldvarg99); ldv_state_variable_19 = 1; } else { } goto ldv_39267; default: ldv_stop(); } ldv_39267: ; return; } } bool ldv_queue_work_on_255(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_256(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_257(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_258(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_259(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static int hlist_unhashed(struct hlist_node const *h ) { { return ((unsigned long )h->pprev == (unsigned long )((struct hlist_node **/* const */)0)); } } __inline static void __hlist_del(struct hlist_node *n ) { struct hlist_node *next ; struct hlist_node **pprev ; { next = n->next; pprev = n->pprev; *pprev = next; if ((unsigned long )next != (unsigned long )((struct hlist_node *)0)) { next->pprev = pprev; } else { } return; } } bool ldv_queue_work_on_269(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_271(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_270(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_273(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_272(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void hlist_del_init_rcu(struct hlist_node *n ) { int tmp ; { tmp = hlist_unhashed((struct hlist_node const *)n); if (tmp == 0) { __hlist_del(n); n->pprev = (struct hlist_node **)0; } else { } return; } } extern void __compiletime_assert_402(void) ; __inline static void hlist_add_head_rcu(struct hlist_node *n , struct hlist_head *h ) { struct hlist_node *first ; bool __cond ; struct hlist_node *__var ; { first = h->first; n->next = first; n->pprev = & h->first; __cond = 0; if ((int )__cond) { __compiletime_assert_402(); } else { } __asm__ volatile ("": : : "memory"); __var = (struct hlist_node *)0; *((struct hlist_node * volatile *)(& h->first)) = n; if ((unsigned long )first != (unsigned long )((struct hlist_node *)0)) { first->pprev = & n->next; } else { } return; } } extern void __compiletime_assert_457(void) ; __inline static void hlist_add_behind_rcu(struct hlist_node *n , struct hlist_node *prev ) { bool __cond ; struct hlist_node *__var ; { n->next = prev->next; n->pprev = & prev->next; __cond = 0; if ((int )__cond) { __compiletime_assert_457(); } else { } __asm__ volatile ("": : : "memory"); __var = (struct hlist_node *)0; *((struct hlist_node * volatile *)(& prev->next)) = n; if ((unsigned long )n->next != (unsigned long )((struct hlist_node *)0)) { (n->next)->pprev = & n->next; } else { } return; } } extern void *vzalloc(unsigned long ) ; void drm_ht_verbose_list(struct drm_open_hash *ht , unsigned long key ) ; int drm_ht_remove_item(struct drm_open_hash *ht , struct drm_hash_item *item ) ; __inline static u64 hash_64(u64 val , unsigned int bits ) { u64 hash ; { hash = val; hash = hash * 0x9e37fffffffc0001ULL; return (hash >> (int )(64U - bits)); } } int drm_ht_create(struct drm_open_hash *ht , unsigned int order ) { unsigned int size ; void *tmp ; void *tmp___0 ; { size = (unsigned int )(1 << (int )order); ht->order = (u8 )order; ht->table = (struct hlist_head *)0; if (size <= 512U) { tmp = kcalloc((size_t )size, 8UL, 208U); ht->table = (struct hlist_head *)tmp; } else { tmp___0 = vzalloc((unsigned long )size * 8UL); ht->table = (struct hlist_head *)tmp___0; } if ((unsigned long )ht->table == (unsigned long )((struct hlist_head *)0)) { drm_err("Out of memory for hash table\n"); return (-12); } else { } return (0); } } static char const __kstrtab_drm_ht_create[14U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'c', 'r', 'e', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_create ; struct kernel_symbol const __ksymtab_drm_ht_create = {(unsigned long )(& drm_ht_create), (char const *)(& __kstrtab_drm_ht_create)}; void drm_ht_verbose_list(struct drm_open_hash *ht , unsigned long key ) { struct drm_hash_item *entry ; struct hlist_head *h_list ; unsigned int hashed_key ; int count ; u64 tmp ; long tmp___0 ; struct hlist_node *____ptr ; struct hlist_node const *__mptr ; struct drm_hash_item *tmp___1 ; int tmp___2 ; long tmp___3 ; struct hlist_node *____ptr___0 ; struct hlist_node const *__mptr___0 ; struct drm_hash_item *tmp___4 ; { count = 0; tmp = hash_64((u64 )key, (unsigned int )ht->order); hashed_key = (unsigned int )tmp; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_ht_verbose_list", "Key is 0x%08lx, Hashed key is 0x%08x\n", key, hashed_key); } else { } h_list = ht->table + (unsigned long )hashed_key; ____ptr = h_list->first; if ((unsigned long )____ptr != (unsigned long )((struct hlist_node *)0)) { __mptr = (struct hlist_node const *)____ptr; tmp___1 = (struct drm_hash_item *)__mptr; } else { tmp___1 = (struct drm_hash_item *)0; } entry = tmp___1; goto ldv_38759; ldv_38758: tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { tmp___2 = count; count = count + 1; drm_ut_debug_printk("drm_ht_verbose_list", "count %d, key: 0x%08lx\n", tmp___2, entry->key); } else { } ____ptr___0 = entry->head.next; if ((unsigned long )____ptr___0 != (unsigned long )((struct hlist_node *)0)) { __mptr___0 = (struct hlist_node const *)____ptr___0; tmp___4 = (struct drm_hash_item *)__mptr___0; } else { tmp___4 = (struct drm_hash_item *)0; } entry = tmp___4; ldv_38759: ; if ((unsigned long )entry != (unsigned long )((struct drm_hash_item *)0)) { goto ldv_38758; } else { } return; } } static struct hlist_node *drm_ht_find_key(struct drm_open_hash *ht , unsigned long key ) { struct drm_hash_item *entry ; struct hlist_head *h_list ; unsigned int hashed_key ; u64 tmp ; struct hlist_node *____ptr ; struct hlist_node const *__mptr ; struct drm_hash_item *tmp___0 ; struct hlist_node *____ptr___0 ; struct hlist_node const *__mptr___0 ; struct drm_hash_item *tmp___1 ; { tmp = hash_64((u64 )key, (unsigned int )ht->order); hashed_key = (unsigned int )tmp; h_list = ht->table + (unsigned long )hashed_key; ____ptr = h_list->first; if ((unsigned long )____ptr != (unsigned long )((struct hlist_node *)0)) { __mptr = (struct hlist_node const *)____ptr; tmp___0 = (struct drm_hash_item *)__mptr; } else { tmp___0 = (struct drm_hash_item *)0; } entry = tmp___0; goto ldv_38778; ldv_38777: ; if (entry->key == key) { return (& entry->head); } else { } if (entry->key > key) { goto ldv_38776; } else { } ____ptr___0 = entry->head.next; if ((unsigned long )____ptr___0 != (unsigned long )((struct hlist_node *)0)) { __mptr___0 = (struct hlist_node const *)____ptr___0; tmp___1 = (struct drm_hash_item *)__mptr___0; } else { tmp___1 = (struct drm_hash_item *)0; } entry = tmp___1; ldv_38778: ; if ((unsigned long )entry != (unsigned long )((struct drm_hash_item *)0)) { goto ldv_38777; } else { } ldv_38776: ; return ((struct hlist_node *)0); } } static struct hlist_node *drm_ht_find_key_rcu(struct drm_open_hash *ht , unsigned long key ) { struct drm_hash_item *entry ; struct hlist_head *h_list ; unsigned int hashed_key ; u64 tmp ; struct hlist_node *____ptr ; struct hlist_node *________p1 ; struct hlist_node *_________p1 ; union __anonunion___u_259___0 __u ; int tmp___0 ; struct hlist_node const *__mptr ; struct drm_hash_item *tmp___1 ; struct hlist_node *____ptr___0 ; struct hlist_node *________p1___0 ; struct hlist_node *_________p1___0 ; union __anonunion___u_261___0 __u___0 ; int tmp___2 ; struct hlist_node const *__mptr___0 ; struct drm_hash_item *tmp___3 ; { tmp = hash_64((u64 )key, (unsigned int )ht->order); hashed_key = (unsigned int )tmp; h_list = ht->table + (unsigned long )hashed_key; __read_once_size((void const volatile *)(& h_list->first), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp___0 = debug_lockdep_rcu_enabled(); ____ptr = ________p1; if ((unsigned long )____ptr != (unsigned long )((struct hlist_node *)0)) { __mptr = (struct hlist_node const *)____ptr; tmp___1 = (struct drm_hash_item *)__mptr; } else { tmp___1 = (struct drm_hash_item *)0; } entry = tmp___1; goto ldv_38836; ldv_38835: ; if (entry->key == key) { return (& entry->head); } else { } if (entry->key > key) { goto ldv_38834; } else { } __read_once_size((void const volatile *)(& entry->head.next), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___2 = debug_lockdep_rcu_enabled(); ____ptr___0 = ________p1___0; if ((unsigned long )____ptr___0 != (unsigned long )((struct hlist_node *)0)) { __mptr___0 = (struct hlist_node const *)____ptr___0; tmp___3 = (struct drm_hash_item *)__mptr___0; } else { tmp___3 = (struct drm_hash_item *)0; } entry = tmp___3; ldv_38836: ; if ((unsigned long )entry != (unsigned long )((struct drm_hash_item *)0)) { goto ldv_38835; } else { } ldv_38834: ; return ((struct hlist_node *)0); } } int drm_ht_insert_item(struct drm_open_hash *ht , struct drm_hash_item *item ) { struct drm_hash_item *entry ; struct hlist_head *h_list ; struct hlist_node *parent ; unsigned int hashed_key ; unsigned long key ; u64 tmp ; struct hlist_node *____ptr ; struct hlist_node const *__mptr ; struct drm_hash_item *tmp___0 ; struct hlist_node *____ptr___0 ; struct hlist_node const *__mptr___0 ; struct drm_hash_item *tmp___1 ; { key = item->key; tmp = hash_64((u64 )key, (unsigned int )ht->order); hashed_key = (unsigned int )tmp; h_list = ht->table + (unsigned long )hashed_key; parent = (struct hlist_node *)0; ____ptr = h_list->first; if ((unsigned long )____ptr != (unsigned long )((struct hlist_node *)0)) { __mptr = (struct hlist_node const *)____ptr; tmp___0 = (struct drm_hash_item *)__mptr; } else { tmp___0 = (struct drm_hash_item *)0; } entry = tmp___0; goto ldv_38856; ldv_38855: ; if (entry->key == key) { return (-22); } else { } if (entry->key > key) { goto ldv_38854; } else { } parent = & entry->head; ____ptr___0 = entry->head.next; if ((unsigned long )____ptr___0 != (unsigned long )((struct hlist_node *)0)) { __mptr___0 = (struct hlist_node const *)____ptr___0; tmp___1 = (struct drm_hash_item *)__mptr___0; } else { tmp___1 = (struct drm_hash_item *)0; } entry = tmp___1; ldv_38856: ; if ((unsigned long )entry != (unsigned long )((struct drm_hash_item *)0)) { goto ldv_38855; } else { } ldv_38854: ; if ((unsigned long )parent != (unsigned long )((struct hlist_node *)0)) { hlist_add_behind_rcu(& item->head, parent); } else { hlist_add_head_rcu(& item->head, h_list); } return (0); } } static char const __kstrtab_drm_ht_insert_item[19U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'i', 't', 'e', 'm', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_insert_item ; struct kernel_symbol const __ksymtab_drm_ht_insert_item = {(unsigned long )(& drm_ht_insert_item), (char const *)(& __kstrtab_drm_ht_insert_item)}; int drm_ht_just_insert_please(struct drm_open_hash *ht , struct drm_hash_item *item , unsigned long seed , int bits , int shift , unsigned long add ) { int ret ; unsigned long mask ; unsigned long first ; unsigned long unshifted_key ; u64 tmp ; { mask = (unsigned long )((1 << bits) + -1); tmp = hash_64((u64 )seed, (unsigned int )bits); unshifted_key = (unsigned long )tmp; first = unshifted_key; ldv_38877: item->key = (unshifted_key << shift) + add; ret = drm_ht_insert_item(ht, item); if (ret != 0) { unshifted_key = (unshifted_key + 1UL) & mask; } else { } if (ret != 0 && unshifted_key != first) { goto ldv_38877; } else { } if (ret != 0) { drm_err("Available key bit space exhausted\n"); return (-22); } else { } return (0); } } static char const __kstrtab_drm_ht_just_insert_please[26U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'j', 'u', 's', 't', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'p', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_just_insert_please ; struct kernel_symbol const __ksymtab_drm_ht_just_insert_please = {(unsigned long )(& drm_ht_just_insert_please), (char const *)(& __kstrtab_drm_ht_just_insert_please)}; int drm_ht_find_item(struct drm_open_hash *ht , unsigned long key , struct drm_hash_item **item ) { struct hlist_node *list ; struct hlist_node const *__mptr ; { list = drm_ht_find_key_rcu(ht, key); if ((unsigned long )list == (unsigned long )((struct hlist_node *)0)) { return (-22); } else { } __mptr = (struct hlist_node const *)list; *item = (struct drm_hash_item *)__mptr; return (0); } } static char const __kstrtab_drm_ht_find_item[17U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'f', 'i', 'n', 'd', '_', 'i', 't', 'e', 'm', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_find_item ; struct kernel_symbol const __ksymtab_drm_ht_find_item = {(unsigned long )(& drm_ht_find_item), (char const *)(& __kstrtab_drm_ht_find_item)}; int drm_ht_remove_key(struct drm_open_hash *ht , unsigned long key ) { struct hlist_node *list ; { list = drm_ht_find_key(ht, key); if ((unsigned long )list != (unsigned long )((struct hlist_node *)0)) { hlist_del_init_rcu(list); return (0); } else { } return (-22); } } int drm_ht_remove_item(struct drm_open_hash *ht , struct drm_hash_item *item ) { { hlist_del_init_rcu(& item->head); return (0); } } static char const __kstrtab_drm_ht_remove_item[19U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'i', 't', 'e', 'm', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_remove_item ; struct kernel_symbol const __ksymtab_drm_ht_remove_item = {(unsigned long )(& drm_ht_remove_item), (char const *)(& __kstrtab_drm_ht_remove_item)}; void drm_ht_remove(struct drm_open_hash *ht ) { { if ((unsigned long )ht->table != (unsigned long )((struct hlist_head *)0)) { if (512UL >> (int )ht->order != 0UL) { kfree((void const *)ht->table); } else { vfree((void const *)ht->table); } ht->table = (struct hlist_head *)0; } else { } return; } } static char const __kstrtab_drm_ht_remove[14U] = { 'd', 'r', 'm', '_', 'h', 't', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_ht_remove ; struct kernel_symbol const __ksymtab_drm_ht_remove = {(unsigned long )(& drm_ht_remove), (char const *)(& __kstrtab_drm_ht_remove)}; bool ldv_queue_work_on_269(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_270(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_271(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_272(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_273(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void __dynamic_pr_debug(struct _ddebug * , char const * , ...) ; extern void __list_del_entry(struct list_head * ) ; __inline static void list_replace(struct list_head *old , struct list_head *new ) { { new->next = old->next; (new->next)->prev = new; new->prev = old->prev; (new->prev)->next = new; return; } } __inline static void list_del_init(struct list_head *entry ) { { __list_del_entry(entry); INIT_LIST_HEAD(entry); return; } } __inline static void list_move(struct list_head *list , struct list_head *head ) { { __list_del_entry(list); list_add(list, head); return; } } bool ldv_queue_work_on_283(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_285(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_284(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_287(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_286(struct workqueue_struct *ldv_func_arg1 ) ; __inline static u64 __drm_mm_hole_node_start(struct drm_mm_node *hole_node ) { { return (hole_node->start + hole_node->size); } } __inline static u64 drm_mm_hole_node_start(struct drm_mm_node *hole_node ) { long tmp ; u64 tmp___0 ; { tmp = ldv__builtin_expect((unsigned int )*((unsigned char *)hole_node + 32UL) == 0U, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/drm/drm_mm.h"), "i" (145), "i" (12UL)); ldv_37516: ; goto ldv_37516; } else { } tmp___0 = __drm_mm_hole_node_start(hole_node); return (tmp___0); } } __inline static u64 __drm_mm_hole_node_end(struct drm_mm_node *hole_node ) { struct list_head const *__mptr ; { __mptr = (struct list_head const *)hole_node->node_list.next; return (((struct drm_mm_node *)__mptr)->start); } } __inline static u64 drm_mm_hole_node_end(struct drm_mm_node *hole_node ) { u64 tmp ; { tmp = __drm_mm_hole_node_end(hole_node); return (tmp); } } int drm_mm_reserve_node(struct drm_mm *mm , struct drm_mm_node *node ) ; int drm_mm_insert_node_generic(struct drm_mm *mm , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , enum drm_mm_search_flags sflags , enum drm_mm_allocator_flags aflags ) ; int drm_mm_insert_node_in_range_generic(struct drm_mm *mm , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end , enum drm_mm_search_flags sflags , enum drm_mm_allocator_flags aflags ) ; void drm_mm_remove_node(struct drm_mm_node *node ) ; void drm_mm_replace_node(struct drm_mm_node *old , struct drm_mm_node *new ) ; void drm_mm_init(struct drm_mm *mm , u64 start , u64 size ) ; void drm_mm_takedown(struct drm_mm *mm ) ; bool drm_mm_clean(struct drm_mm *mm ) ; void drm_mm_init_scan(struct drm_mm *mm , u64 size , unsigned int alignment , unsigned long color ) ; void drm_mm_init_scan_with_range(struct drm_mm *mm , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end ) ; bool drm_mm_scan_add_block(struct drm_mm_node *node ) ; bool drm_mm_scan_remove_block(struct drm_mm_node *node ) ; void drm_mm_debug_table(struct drm_mm *mm , char const *prefix ) ; int drm_mm_dump_table(struct seq_file *m , struct drm_mm *mm ) ; static struct drm_mm_node *drm_mm_search_free_generic(struct drm_mm const *mm , u64 size , unsigned int alignment , unsigned long color , enum drm_mm_search_flags flags ) ; static struct drm_mm_node *drm_mm_search_free_in_range_generic(struct drm_mm const *mm , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end , enum drm_mm_search_flags flags ) ; static void drm_mm_insert_helper(struct drm_mm_node *hole_node , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , enum drm_mm_allocator_flags flags ) { struct drm_mm *mm ; u64 hole_start ; u64 tmp ; u64 hole_end ; u64 tmp___0 ; u64 adj_start ; u64 adj_end ; long tmp___1 ; u64 tmp___2 ; unsigned int rem ; uint32_t __base ; uint32_t __rem ; long tmp___3 ; long tmp___4 ; long tmp___5 ; u64 tmp___6 ; { mm = hole_node->mm; tmp = drm_mm_hole_node_start(hole_node); hole_start = tmp; tmp___0 = drm_mm_hole_node_end(hole_node); hole_end = tmp___0; adj_start = hole_start; adj_end = hole_end; tmp___1 = ldv__builtin_expect((unsigned int )*((unsigned char *)node + 32UL) != 0U, 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (118), "i" (12UL)); ldv_38737: ; goto ldv_38737; } else { } if ((unsigned long )mm->color_adjust != (unsigned long )((void (*)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0)) { (*(mm->color_adjust))(hole_node, color, & adj_start, & adj_end); } else { } if ((int )flags & 1) { adj_start = adj_end - size; } else { } if (alignment != 0U) { tmp___2 = adj_start; __base = alignment; __rem = (uint32_t )(tmp___2 % (u64 )__base); tmp___2 = tmp___2 / (u64 )__base; rem = __rem; if (rem != 0U) { if ((int )flags & 1) { adj_start = adj_start - (u64 )rem; } else { adj_start = (u64 )(alignment - rem) + adj_start; } } else { } } else { } tmp___3 = ldv__builtin_expect(adj_start < hole_start, 0L); if (tmp___3 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (139), "i" (12UL)); ldv_38743: ; goto ldv_38743; } else { } tmp___4 = ldv__builtin_expect(adj_end > hole_end, 0L); if (tmp___4 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (140), "i" (12UL)); ldv_38744: ; goto ldv_38744; } else { } if (adj_start == hole_start) { hole_node->hole_follows = 0U; list_del(& hole_node->hole_stack); } else { } node->start = adj_start; node->size = size; node->mm = mm; node->color = color; node->allocated = 1U; INIT_LIST_HEAD(& node->hole_stack); list_add(& node->node_list, & hole_node->node_list); tmp___5 = ldv__builtin_expect(node->start + node->size > adj_end, 0L); if (tmp___5 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (156), "i" (12UL)); ldv_38745: ; goto ldv_38745; } else { } node->hole_follows = 0U; tmp___6 = __drm_mm_hole_node_start(node); if (tmp___6 < hole_end) { list_add(& node->hole_stack, & mm->hole_stack); node->hole_follows = 1U; } else { } return; } } int drm_mm_reserve_node(struct drm_mm *mm , struct drm_mm_node *node ) { struct drm_mm_node *hole ; u64 end ; u64 hole_start ; u64 hole_end ; long tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; int tmp___0 ; { end = node->start + node->size; tmp = ldv__builtin_expect((unsigned long )node == (unsigned long )((struct drm_mm_node *)0), 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (186), "i" (12UL)); ldv_38754: ; goto ldv_38754; } else { } __mptr = (struct list_head const *)mm->hole_stack.next; hole = (struct drm_mm_node *)__mptr + 0xfffffffffffffff0UL; goto ldv_38761; ldv_38760: ; if (node->start < hole_start || hole_end < end) { goto ldv_38759; } else { } node->mm = mm; node->allocated = 1U; INIT_LIST_HEAD(& node->hole_stack); list_add(& node->node_list, & hole->node_list); if (node->start == hole_start) { hole->hole_follows = 0U; list_del_init(& hole->hole_stack); } else { } node->hole_follows = 0U; if (end != hole_end) { list_add(& node->hole_stack, & mm->hole_stack); node->hole_follows = 1U; } else { } return (0); ldv_38759: __mptr___0 = (struct list_head const *)hole->hole_stack.next; hole = (struct drm_mm_node *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38761: ; if ((unsigned long )(& hole->hole_stack) != (unsigned long )(& mm->hole_stack)) { hole_start = drm_mm_hole_node_start(hole); hole_end = drm_mm_hole_node_end(hole); tmp___0 = 1; } else { tmp___0 = 0; } if (tmp___0) { goto ldv_38760; } else { } return (-28); } } static char const __kstrtab_drm_mm_reserve_node[20U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'r', 'e', 's', 'e', 'r', 'v', 'e', '_', 'n', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_reserve_node ; struct kernel_symbol const __ksymtab_drm_mm_reserve_node = {(unsigned long )(& drm_mm_reserve_node), (char const *)(& __kstrtab_drm_mm_reserve_node)}; int drm_mm_insert_node_generic(struct drm_mm *mm , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , enum drm_mm_search_flags sflags , enum drm_mm_allocator_flags aflags ) { struct drm_mm_node *hole_node ; { hole_node = drm_mm_search_free_generic((struct drm_mm const *)mm, size, alignment, color, sflags); if ((unsigned long )hole_node == (unsigned long )((struct drm_mm_node *)0)) { return (-28); } else { } drm_mm_insert_helper(hole_node, node, size, alignment, color, aflags); return (0); } } static char const __kstrtab_drm_mm_insert_node_generic[27U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'n', 'o', 'd', 'e', '_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_insert_node_generic ; struct kernel_symbol const __ksymtab_drm_mm_insert_node_generic = {(unsigned long )(& drm_mm_insert_node_generic), (char const *)(& __kstrtab_drm_mm_insert_node_generic)}; static void drm_mm_insert_helper_range(struct drm_mm_node *hole_node , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end , enum drm_mm_allocator_flags flags ) { struct drm_mm *mm ; u64 hole_start ; u64 tmp ; u64 hole_end ; u64 tmp___0 ; u64 adj_start ; u64 adj_end ; long tmp___1 ; u64 tmp___2 ; unsigned int rem ; uint32_t __base ; uint32_t __rem ; long tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; u64 tmp___7 ; { mm = hole_node->mm; tmp = drm_mm_hole_node_start(hole_node); hole_start = tmp; tmp___0 = drm_mm_hole_node_end(hole_node); hole_end = tmp___0; adj_start = hole_start; adj_end = hole_end; tmp___1 = ldv__builtin_expect((long )((unsigned int )*((unsigned char *)hole_node + 32UL) == 0U || (unsigned int )*((unsigned char *)node + 32UL) != 0U), 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (263), "i" (12UL)); ldv_38809: ; goto ldv_38809; } else { } if (adj_start < start) { adj_start = start; } else { } if (adj_end > end) { adj_end = end; } else { } if ((int )flags & 1) { adj_start = adj_end - size; } else { } if ((unsigned long )mm->color_adjust != (unsigned long )((void (*)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0)) { (*(mm->color_adjust))(hole_node, color, & adj_start, & adj_end); } else { } if (alignment != 0U) { tmp___2 = adj_start; __base = alignment; __rem = (uint32_t )(tmp___2 % (u64 )__base); tmp___2 = tmp___2 / (u64 )__base; rem = __rem; if (rem != 0U) { if ((int )flags & 1) { adj_start = adj_start - (u64 )rem; } else { adj_start = (u64 )(alignment - rem) + adj_start; } } else { } } else { } if (adj_start == hole_start) { hole_node->hole_follows = 0U; list_del(& hole_node->hole_stack); } else { } node->start = adj_start; node->size = size; node->mm = mm; node->color = color; node->allocated = 1U; INIT_LIST_HEAD(& node->hole_stack); list_add(& node->node_list, & hole_node->node_list); tmp___3 = ldv__builtin_expect(node->start < start, 0L); if (tmp___3 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (303), "i" (12UL)); ldv_38815: ; goto ldv_38815; } else { } tmp___4 = ldv__builtin_expect(node->start < adj_start, 0L); if (tmp___4 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (304), "i" (12UL)); ldv_38816: ; goto ldv_38816; } else { } tmp___5 = ldv__builtin_expect(node->start + node->size > adj_end, 0L); if (tmp___5 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (305), "i" (12UL)); ldv_38817: ; goto ldv_38817; } else { } tmp___6 = ldv__builtin_expect(node->start + node->size > end, 0L); if (tmp___6 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (306), "i" (12UL)); ldv_38818: ; goto ldv_38818; } else { } node->hole_follows = 0U; tmp___7 = __drm_mm_hole_node_start(node); if (tmp___7 < hole_end) { list_add(& node->hole_stack, & mm->hole_stack); node->hole_follows = 1U; } else { } return; } } int drm_mm_insert_node_in_range_generic(struct drm_mm *mm , struct drm_mm_node *node , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end , enum drm_mm_search_flags sflags , enum drm_mm_allocator_flags aflags ) { struct drm_mm_node *hole_node ; { hole_node = drm_mm_search_free_in_range_generic((struct drm_mm const *)mm, size, alignment, color, start, end, sflags); if ((unsigned long )hole_node == (unsigned long )((struct drm_mm_node *)0)) { return (-28); } else { } drm_mm_insert_helper_range(hole_node, node, size, alignment, color, start, end, aflags); return (0); } } static char const __kstrtab_drm_mm_insert_node_in_range_generic[36U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'i', 'n', 's', 'e', 'r', 't', '_', 'n', 'o', 'd', 'e', '_', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_insert_node_in_range_generic ; struct kernel_symbol const __ksymtab_drm_mm_insert_node_in_range_generic = {(unsigned long )(& drm_mm_insert_node_in_range_generic), (char const *)(& __kstrtab_drm_mm_insert_node_in_range_generic)}; void drm_mm_remove_node(struct drm_mm_node *node ) { struct drm_mm *mm ; struct drm_mm_node *prev_node ; int __ret_warn_on ; long tmp ; long tmp___0 ; long tmp___1 ; struct list_head const *__mptr ; u64 tmp___2 ; u64 tmp___3 ; long tmp___4 ; u64 tmp___5 ; u64 tmp___6 ; long tmp___7 ; { mm = node->mm; __ret_warn_on = (unsigned int )*((unsigned char *)node + 32UL) == 0U; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c", 367); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } tmp___1 = ldv__builtin_expect((long )(((unsigned int )*((unsigned char *)node + 32UL) != 0U || (unsigned int )*((unsigned char *)node + 32UL) != 0U) || (unsigned int )*((unsigned char *)node + 32UL) != 0U), 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (371), "i" (12UL)); ldv_38853: ; goto ldv_38853; } else { } __mptr = (struct list_head const *)node->node_list.prev; prev_node = (struct drm_mm_node *)__mptr; if ((unsigned int )*((unsigned char *)node + 32UL) != 0U) { tmp___2 = __drm_mm_hole_node_start(node); tmp___3 = __drm_mm_hole_node_end(node); tmp___4 = ldv__builtin_expect(tmp___2 == tmp___3, 0L); if (tmp___4 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (378), "i" (12UL)); ldv_38856: ; goto ldv_38856; } else { } list_del(& node->hole_stack); } else { tmp___5 = __drm_mm_hole_node_start(node); tmp___6 = __drm_mm_hole_node_end(node); tmp___7 = ldv__builtin_expect(tmp___5 != tmp___6, 0L); if (tmp___7 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (382), "i" (12UL)); ldv_38857: ; goto ldv_38857; } else { } } if ((unsigned int )*((unsigned char *)prev_node + 32UL) == 0U) { prev_node->hole_follows = 1U; list_add(& prev_node->hole_stack, & mm->hole_stack); } else { list_move(& prev_node->hole_stack, & mm->hole_stack); } list_del(& node->node_list); node->allocated = 0U; return; } } static char const __kstrtab_drm_mm_remove_node[19U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'n', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_remove_node ; struct kernel_symbol const __ksymtab_drm_mm_remove_node = {(unsigned long )(& drm_mm_remove_node), (char const *)(& __kstrtab_drm_mm_remove_node)}; static int check_free_hole(u64 start , u64 end , u64 size , unsigned int alignment ) { u64 tmp ; unsigned int rem ; uint32_t __base ; uint32_t __rem ; { if (end - start < size) { return (0); } else { } if (alignment != 0U) { tmp = start; __base = alignment; __rem = (uint32_t )(tmp % (u64 )__base); tmp = tmp / (u64 )__base; rem = __rem; if (rem != 0U) { start = (u64 )(alignment - rem) + start; } else { } } else { } return (start + size <= end); } } static struct drm_mm_node *drm_mm_search_free_generic(struct drm_mm const *mm , u64 size , unsigned int alignment , unsigned long color , enum drm_mm_search_flags flags ) { struct drm_mm_node *entry ; struct drm_mm_node *best ; u64 adj_start ; u64 adj_end ; u64 best_size ; long tmp ; struct list_head const *__mptr ; u64 hole_size ; int tmp___0 ; struct list_head const *__mptr___0 ; int tmp___1 ; { tmp = ldv__builtin_expect((unsigned int )mm->scanned_blocks != 0U, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (425), "i" (12UL)); ldv_38888: ; goto ldv_38888; } else { } best = (struct drm_mm_node *)0; best_size = 0xffffffffffffffffULL; __mptr = (struct list_head const *)(((unsigned int )flags & 2U) != 0U ? mm->hole_stack.prev : mm->hole_stack.next); entry = (struct drm_mm_node *)__mptr + 0xfffffffffffffff0UL; goto ldv_38896; ldv_38895: hole_size = adj_end - adj_start; if ((unsigned long )mm->color_adjust != (unsigned long )((void (*/* const */)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0)) { (*(mm->color_adjust))(entry, color, & adj_start, & adj_end); if (adj_end <= adj_start) { goto ldv_38894; } else { } } else { } tmp___0 = check_free_hole(adj_start, adj_end, size, alignment); if (tmp___0 == 0) { goto ldv_38894; } else { } if (((unsigned int )flags & 1U) == 0U) { return (entry); } else { } if (hole_size < best_size) { best = entry; best_size = hole_size; } else { } ldv_38894: __mptr___0 = (struct list_head const *)(((unsigned int )flags & 2U) != 0U ? entry->hole_stack.prev : entry->hole_stack.next); entry = (struct drm_mm_node *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38896: ; if ((unsigned long )((struct list_head const *)(& entry->hole_stack)) != (unsigned long )(& mm->hole_stack)) { adj_start = drm_mm_hole_node_start(entry); adj_end = drm_mm_hole_node_end(entry); tmp___1 = 1; } else { tmp___1 = 0; } if (tmp___1) { goto ldv_38895; } else { } return (best); } } static struct drm_mm_node *drm_mm_search_free_in_range_generic(struct drm_mm const *mm , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end , enum drm_mm_search_flags flags ) { struct drm_mm_node *entry ; struct drm_mm_node *best ; u64 adj_start ; u64 adj_end ; u64 best_size ; long tmp ; struct list_head const *__mptr ; u64 hole_size ; int tmp___0 ; struct list_head const *__mptr___0 ; int tmp___1 ; { tmp = ldv__builtin_expect((unsigned int )mm->scanned_blocks != 0U, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (469), "i" (12UL)); ldv_38912: ; goto ldv_38912; } else { } best = (struct drm_mm_node *)0; best_size = 0xffffffffffffffffULL; __mptr = (struct list_head const *)(((unsigned int )flags & 2U) != 0U ? mm->hole_stack.prev : mm->hole_stack.next); entry = (struct drm_mm_node *)__mptr + 0xfffffffffffffff0UL; goto ldv_38920; ldv_38919: hole_size = adj_end - adj_start; if (adj_start < start) { adj_start = start; } else { } if (adj_end > end) { adj_end = end; } else { } if ((unsigned long )mm->color_adjust != (unsigned long )((void (*/* const */)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0)) { (*(mm->color_adjust))(entry, color, & adj_start, & adj_end); if (adj_end <= adj_start) { goto ldv_38918; } else { } } else { } tmp___0 = check_free_hole(adj_start, adj_end, size, alignment); if (tmp___0 == 0) { goto ldv_38918; } else { } if (((unsigned int )flags & 1U) == 0U) { return (entry); } else { } if (hole_size < best_size) { best = entry; best_size = hole_size; } else { } ldv_38918: __mptr___0 = (struct list_head const *)(((unsigned int )flags & 2U) != 0U ? entry->hole_stack.prev : entry->hole_stack.next); entry = (struct drm_mm_node *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38920: ; if ((unsigned long )((struct list_head const *)(& entry->hole_stack)) != (unsigned long )(& mm->hole_stack)) { adj_start = drm_mm_hole_node_start(entry); adj_end = drm_mm_hole_node_end(entry); tmp___1 = 1; } else { tmp___1 = 0; } if (tmp___1) { goto ldv_38919; } else { } return (best); } } void drm_mm_replace_node(struct drm_mm_node *old , struct drm_mm_node *new ) { { list_replace(& old->node_list, & new->node_list); list_replace(& old->hole_stack, & new->hole_stack); new->hole_follows = old->hole_follows; new->mm = old->mm; new->start = old->start; new->size = old->size; new->color = old->color; old->allocated = 0U; new->allocated = 1U; return; } } static char const __kstrtab_drm_mm_replace_node[20U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '_', 'n', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_replace_node ; struct kernel_symbol const __ksymtab_drm_mm_replace_node = {(unsigned long )(& drm_mm_replace_node), (char const *)(& __kstrtab_drm_mm_replace_node)}; void drm_mm_init_scan(struct drm_mm *mm , u64 size , unsigned int alignment , unsigned long color ) { { mm->scan_color = color; mm->scan_alignment = alignment; mm->scan_size = size; mm->scanned_blocks = 0U; mm->scan_hit_start = 0ULL; mm->scan_hit_end = 0ULL; mm->scan_check_range = 0U; mm->prev_scanned_node = (struct drm_mm_node *)0; return; } } static char const __kstrtab_drm_mm_init_scan[17U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'i', 'n', 'i', 't', '_', 's', 'c', 'a', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_init_scan ; struct kernel_symbol const __ksymtab_drm_mm_init_scan = {(unsigned long )(& drm_mm_init_scan), (char const *)(& __kstrtab_drm_mm_init_scan)}; void drm_mm_init_scan_with_range(struct drm_mm *mm , u64 size , unsigned int alignment , unsigned long color , u64 start , u64 end ) { { mm->scan_color = color; mm->scan_alignment = alignment; mm->scan_size = size; mm->scanned_blocks = 0U; mm->scan_hit_start = 0ULL; mm->scan_hit_end = 0ULL; mm->scan_start = start; mm->scan_end = end; mm->scan_check_range = 1U; mm->prev_scanned_node = (struct drm_mm_node *)0; return; } } static char const __kstrtab_drm_mm_init_scan_with_range[28U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'i', 'n', 'i', 't', '_', 's', 'c', 'a', 'n', '_', 'w', 'i', 't', 'h', '_', 'r', 'a', 'n', 'g', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_init_scan_with_range ; struct kernel_symbol const __ksymtab_drm_mm_init_scan_with_range = {(unsigned long )(& drm_mm_init_scan_with_range), (char const *)(& __kstrtab_drm_mm_init_scan_with_range)}; bool drm_mm_scan_add_block(struct drm_mm_node *node ) { struct drm_mm *mm ; struct drm_mm_node *prev_node ; u64 hole_start ; u64 hole_end ; u64 adj_start ; u64 adj_end ; long tmp ; struct list_head const *__mptr ; int tmp___0 ; { mm = node->mm; mm->scanned_blocks = mm->scanned_blocks + 1U; tmp = ldv__builtin_expect((unsigned int )*((unsigned char *)node + 32UL) != 0U, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (643), "i" (12UL)); ldv_38979: ; goto ldv_38979; } else { } node->scanned_block = 1U; __mptr = (struct list_head const *)node->node_list.prev; prev_node = (struct drm_mm_node *)__mptr; node->scanned_preceeds_hole = prev_node->hole_follows; prev_node->hole_follows = 1U; list_del(& node->node_list); node->node_list.prev = & prev_node->node_list; node->node_list.next = & (mm->prev_scanned_node)->node_list; mm->prev_scanned_node = node; hole_start = drm_mm_hole_node_start(prev_node); adj_start = hole_start; hole_end = drm_mm_hole_node_end(prev_node); adj_end = hole_end; if ((unsigned int )*((unsigned char *)mm + 88UL) != 0U) { if (mm->scan_start > adj_start) { adj_start = mm->scan_start; } else { } if (mm->scan_end < adj_end) { adj_end = mm->scan_end; } else { } } else { } if ((unsigned long )mm->color_adjust != (unsigned long )((void (*)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0)) { (*(mm->color_adjust))(prev_node, mm->scan_color, & adj_start, & adj_end); } else { } tmp___0 = check_free_hole(adj_start, adj_end, mm->scan_size, mm->scan_alignment); if (tmp___0 != 0) { mm->scan_hit_start = hole_start; mm->scan_hit_end = hole_end; return (1); } else { } return (0); } } static char const __kstrtab_drm_mm_scan_add_block[22U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 's', 'c', 'a', 'n', '_', 'a', 'd', 'd', '_', 'b', 'l', 'o', 'c', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_scan_add_block ; struct kernel_symbol const __ksymtab_drm_mm_scan_add_block = {(unsigned long )(& drm_mm_scan_add_block), (char const *)(& __kstrtab_drm_mm_scan_add_block)}; bool drm_mm_scan_remove_block(struct drm_mm_node *node ) { struct drm_mm *mm ; struct drm_mm_node *prev_node ; long tmp ; struct list_head const *__mptr ; u64 tmp___0 ; { mm = node->mm; mm->scanned_blocks = mm->scanned_blocks - 1U; tmp = ldv__builtin_expect((unsigned int )*((unsigned char *)node + 32UL) == 0U, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"), "i" (704), "i" (12UL)); ldv_38994: ; goto ldv_38994; } else { } node->scanned_block = 0U; __mptr = (struct list_head const *)node->node_list.prev; prev_node = (struct drm_mm_node *)__mptr; prev_node->hole_follows = node->scanned_preceeds_hole; list_add(& node->node_list, & prev_node->node_list); tmp___0 = drm_mm_hole_node_end(node); return ((bool )(tmp___0 > mm->scan_hit_start && node->start < mm->scan_hit_end)); } } static char const __kstrtab_drm_mm_scan_remove_block[25U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 's', 'c', 'a', 'n', '_', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'b', 'l', 'o', 'c', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_scan_remove_block ; struct kernel_symbol const __ksymtab_drm_mm_scan_remove_block = {(unsigned long )(& drm_mm_scan_remove_block), (char const *)(& __kstrtab_drm_mm_scan_remove_block)}; bool drm_mm_clean(struct drm_mm *mm ) { struct list_head *head ; { head = & mm->head_node.node_list; return ((unsigned long )(head->next)->next == (unsigned long )head); } } static char const __kstrtab_drm_mm_clean[13U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'c', 'l', 'e', 'a', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_clean ; struct kernel_symbol const __ksymtab_drm_mm_clean = {(unsigned long )(& drm_mm_clean), (char const *)(& __kstrtab_drm_mm_clean)}; void drm_mm_init(struct drm_mm *mm , u64 start , u64 size ) { { INIT_LIST_HEAD(& mm->hole_stack); mm->scanned_blocks = 0U; INIT_LIST_HEAD(& mm->head_node.node_list); INIT_LIST_HEAD(& mm->head_node.hole_stack); mm->head_node.hole_follows = 1U; mm->head_node.scanned_block = 0U; mm->head_node.scanned_prev_free = 0U; mm->head_node.scanned_next_free = 0U; mm->head_node.mm = mm; mm->head_node.start = start + size; mm->head_node.size = start - mm->head_node.start; list_add_tail(& mm->head_node.hole_stack, & mm->hole_stack); mm->color_adjust = (void (*)(struct drm_mm_node * , unsigned long , u64 * , u64 * ))0; return; } } static char const __kstrtab_drm_mm_init[12U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_init ; struct kernel_symbol const __ksymtab_drm_mm_init = {(unsigned long )(& drm_mm_init), (char const *)(& __kstrtab_drm_mm_init)}; void drm_mm_takedown(struct drm_mm *mm ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = list_empty((struct list_head const *)(& mm->head_node.node_list)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c", 773, "Memory manager not clean during takedown.\n"); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } static char const __kstrtab_drm_mm_takedown[16U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 't', 'a', 'k', 'e', 'd', 'o', 'w', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_takedown ; struct kernel_symbol const __ksymtab_drm_mm_takedown = {(unsigned long )(& drm_mm_takedown), (char const *)(& __kstrtab_drm_mm_takedown)}; static u64 drm_mm_debug_hole(struct drm_mm_node *entry , char const *prefix ) { u64 hole_start ; u64 hole_end ; u64 hole_size ; struct _ddebug descriptor ; long tmp ; { if ((unsigned int )*((unsigned char *)entry + 32UL) != 0U) { hole_start = drm_mm_hole_node_start(entry); hole_end = drm_mm_hole_node_end(entry); hole_size = hole_end - hole_start; descriptor.modname = "drm"; descriptor.function = "drm_mm_debug_hole"; 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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"; descriptor.format = "%s %#llx-%#llx: %llu: free\n"; descriptor.lineno = 787U; descriptor.flags = 0U; tmp = ldv__builtin_expect((long )descriptor.flags & 1L, 0L); if (tmp != 0L) { __dynamic_pr_debug(& descriptor, "%s %#llx-%#llx: %llu: free\n", prefix, hole_start, hole_end, hole_size); } else { } return (hole_size); } else { } return (0ULL); } } void drm_mm_debug_table(struct drm_mm *mm , char const *prefix ) { struct drm_mm_node *entry ; u64 total_used ; u64 total_free ; u64 total ; u64 tmp ; struct list_head const *__mptr ; struct _ddebug descriptor ; long tmp___0 ; u64 tmp___1 ; struct list_head const *__mptr___0 ; struct _ddebug descriptor___0 ; long tmp___2 ; { total_used = 0ULL; total_free = 0ULL; total = 0ULL; tmp = drm_mm_debug_hole(& mm->head_node, prefix); total_free = tmp + total_free; __mptr = (struct list_head const *)mm->head_node.node_list.next; entry = (struct drm_mm_node *)__mptr; goto ldv_39065; ldv_39064: descriptor.modname = "drm"; descriptor.function = "drm_mm_debug_table"; 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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"; descriptor.format = "%s %#llx-%#llx: %llu: used\n"; descriptor.lineno = 808U; descriptor.flags = 0U; tmp___0 = ldv__builtin_expect((long )descriptor.flags & 1L, 0L); if (tmp___0 != 0L) { __dynamic_pr_debug(& descriptor, "%s %#llx-%#llx: %llu: used\n", prefix, entry->start, entry->start + entry->size, entry->size); } else { } total_used = entry->size + total_used; tmp___1 = drm_mm_debug_hole(entry, prefix); total_free = tmp___1 + total_free; __mptr___0 = (struct list_head const *)entry->node_list.next; entry = (struct drm_mm_node *)__mptr___0; ldv_39065: ; if ((unsigned long )(& entry->node_list) != (unsigned long )(& mm->head_node.node_list)) { goto ldv_39064; } else { } total = total_free + total_used; descriptor___0.modname = "drm"; descriptor___0.function = "drm_mm_debug_table"; descriptor___0.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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_mm.c"; descriptor___0.format = "%s total: %llu, used %llu free %llu\n"; descriptor___0.lineno = 815U; descriptor___0.flags = 0U; tmp___2 = ldv__builtin_expect((long )descriptor___0.flags & 1L, 0L); if (tmp___2 != 0L) { __dynamic_pr_debug(& descriptor___0, "%s total: %llu, used %llu free %llu\n", prefix, total, total_used, total_free); } else { } return; } } static char const __kstrtab_drm_mm_debug_table[19U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'd', 'e', 'b', 'u', 'g', '_', 't', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_debug_table ; struct kernel_symbol const __ksymtab_drm_mm_debug_table = {(unsigned long )(& drm_mm_debug_table), (char const *)(& __kstrtab_drm_mm_debug_table)}; static u64 drm_mm_dump_hole(struct seq_file *m , struct drm_mm_node *entry ) { u64 hole_start ; u64 hole_end ; u64 hole_size ; { if ((unsigned int )*((unsigned char *)entry + 32UL) != 0U) { hole_start = drm_mm_hole_node_start(entry); hole_end = drm_mm_hole_node_end(entry); hole_size = hole_end - hole_start; seq_printf(m, "%#018llx-%#018llx: %llu: free\n", hole_start, hole_end, hole_size); return (hole_size); } else { } return (0ULL); } } int drm_mm_dump_table(struct seq_file *m , struct drm_mm *mm ) { struct drm_mm_node *entry ; u64 total_used ; u64 total_free ; u64 total ; u64 tmp ; struct list_head const *__mptr ; u64 tmp___0 ; struct list_head const *__mptr___0 ; { total_used = 0ULL; total_free = 0ULL; total = 0ULL; tmp = drm_mm_dump_hole(m, & mm->head_node); total_free = tmp + total_free; __mptr = (struct list_head const *)mm->head_node.node_list.next; entry = (struct drm_mm_node *)__mptr; goto ldv_39096; ldv_39095: seq_printf(m, "%#018llx-%#018llx: %llu: used\n", entry->start, entry->start + entry->size, entry->size); total_used = entry->size + total_used; tmp___0 = drm_mm_dump_hole(m, entry); total_free = tmp___0 + total_free; __mptr___0 = (struct list_head const *)entry->node_list.next; entry = (struct drm_mm_node *)__mptr___0; ldv_39096: ; if ((unsigned long )(& entry->node_list) != (unsigned long )(& mm->head_node.node_list)) { goto ldv_39095; } else { } total = total_free + total_used; seq_printf(m, "total: %llu, used %llu free %llu\n", total, total_used, total_free); return (0); } } static char const __kstrtab_drm_mm_dump_table[18U] = { 'd', 'r', 'm', '_', 'm', 'm', '_', 'd', 'u', 'm', 'p', '_', 't', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mm_dump_table ; struct kernel_symbol const __ksymtab_drm_mm_dump_table = {(unsigned long )(& drm_mm_dump_table), (char const *)(& __kstrtab_drm_mm_dump_table)}; bool ldv_queue_work_on_283(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_284(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_285(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_286(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_287(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static int ffs(int x ) { int r ; { __asm__ ("bsfl %1,%0": "=r" (r): "rm" (x), "0" (-1)); return (r + 1); } } __inline static unsigned long __arch_hweight64(__u64 w ) { unsigned long res ; { res = 0UL; __asm__ ("661:\n\tcall __sw_hweight64\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 4*32+23)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0xf3,0x48,0x0f,0xb8,0xc7\n6651:\n\t.popsection": "=a" (res): "D" (w)); return (res); } } extern int memcmp(void const * , void const * , size_t ) ; extern char *strncpy(char * , char const * , __kernel_size_t ) ; extern void *kmemdup(void const * , size_t , gfp_t ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; __inline static int __atomic_add_unless___0(atomic_t *v , int a , int u ) { int c ; int old ; long tmp ; long tmp___0 ; { c = atomic_read((atomic_t const *)v); ldv_5708: tmp = ldv__builtin_expect(c == u, 0L); if (tmp != 0L) { goto ldv_5707; } else { } old = atomic_cmpxchg(v, c, c + a); tmp___0 = ldv__builtin_expect(old == c, 1L); if (tmp___0 != 0L) { goto ldv_5707; } else { } c = old; goto ldv_5708; ldv_5707: ; return (c); } } __inline static int atomic_add_unless___0(atomic_t *v , int a , int u ) { int tmp ; { tmp = __atomic_add_unless___0(v, a, u); return (tmp != u); } } bool ldv_queue_work_on_297(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_299(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_298(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_301(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_300(struct workqueue_struct *ldv_func_arg1 ) ; extern void *idr_get_next(struct idr * , int * ) ; __inline static void *idr_find___3(struct idr *idr , int id ) { struct idr_layer *hint ; struct idr_layer *________p1 ; struct idr_layer *_________p1 ; union __anonunion___u_168___3 __u ; int tmp ; struct idr_layer *________p1___0 ; struct idr_layer *_________p1___0 ; union __anonunion___u_170___3 __u___0 ; int tmp___0 ; void *tmp___1 ; { __read_once_size((void const volatile *)(& idr->hint), (void *)(& __u.__c), 8); _________p1 = __u.__val; ________p1 = _________p1; tmp = debug_lockdep_rcu_enabled(); hint = ________p1; if ((unsigned long )hint != (unsigned long )((struct idr_layer *)0) && (id & -256) == hint->prefix) { __read_once_size((void const volatile *)(& hint->ary) + ((unsigned long )id & 255UL), (void *)(& __u___0.__c), 8); _________p1___0 = __u___0.__val; ________p1___0 = _________p1___0; tmp___0 = debug_lockdep_rcu_enabled(); return ((void *)________p1___0); } else { } tmp___1 = idr_find_slowpath(idr, id); return (tmp___1); } } extern void ida_remove(struct ida * , int ) ; extern void ida_destroy(struct ida * ) ; extern void ida_init(struct ida * ) ; extern int ida_simple_get(struct ida * , unsigned int , unsigned int , gfp_t ) ; __inline static void kref_get___1(struct kref *kref ) { bool __warned ; int __ret_warn_once ; int tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; long tmp___2 ; { tmp = atomic_add_return(1, & kref->refcount); __ret_warn_once = tmp <= 1; tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___2 != 0L) { __ret_warn_on = ! __warned; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("include/linux/kref.h", 47); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { __warned = 1; } else { } } else { } ldv__builtin_expect(__ret_warn_once != 0, 0L); return; } } __inline static int kref_sub___1(struct kref *kref , unsigned int count , void (*release)(struct kref * ) ) { int __ret_warn_on ; long tmp ; int tmp___0 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 71); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___0 = atomic_sub_and_test((int )count, & kref->refcount); if (tmp___0 != 0) { (*release)(kref); return (1); } else { } return (0); } } __inline static int kref_put___1(struct kref *kref , void (*release)(struct kref * ) ) { int tmp ; { tmp = kref_sub___1(kref, 1U, release); return (tmp); } } __inline static int kref_put_mutex___0(struct kref *kref , void (*release)(struct kref * ) , struct mutex *lock ) { int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; long tmp___3 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 138); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___2 = atomic_add_unless___0(& kref->refcount, -1, 1); tmp___3 = ldv__builtin_expect(tmp___2 == 0, 0L); if (tmp___3 != 0L) { mutex_lock_nested(lock, 0U); tmp___0 = atomic_dec_and_test(& kref->refcount); tmp___1 = ldv__builtin_expect(tmp___0 == 0, 0L); if (tmp___1 != 0L) { mutex_unlock(lock); return (0); } else { } (*release)(kref); return (1); } else { } return (0); } } __inline static int kref_get_unless_zero(struct kref *kref ) { int tmp ; { tmp = atomic_add_unless___0(& kref->refcount, 1, 0); return (tmp); } } extern unsigned char const _ctype[] ; extern int fb_get_options(char const * , char ** ) ; __inline static void ww_mutex_init(struct ww_mutex *lock , struct ww_class *ww_class ) { { __mutex_init(& lock->base, ww_class->mutex_name, & ww_class->mutex_key); lock->ctx = (struct ww_acquire_ctx *)0; lock->ww_class = ww_class; return; } } __inline static bool ww_mutex_is_locked(struct ww_mutex *lock ) { int tmp ; { tmp = mutex_is_locked(& lock->base); return (tmp != 0); } } struct ww_class crtc_ww_class ; __inline static void drm_modeset_lock_init(struct drm_modeset_lock *lock ) { { ww_mutex_init(& lock->mutex, & crtc_ww_class); INIT_LIST_HEAD(& lock->head); return; } } __inline static void drm_modeset_lock_fini(struct drm_modeset_lock *lock ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = list_empty((struct list_head const *)(& lock->head)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("include/drm/drm_modeset_lock.h", 110); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } __inline static bool drm_modeset_is_locked(struct drm_modeset_lock *lock ) { bool tmp ; { tmp = ww_mutex_is_locked(& lock->mutex); return (tmp); } } int drm_modeset_lock(struct drm_modeset_lock *lock , struct drm_modeset_acquire_ctx *ctx ) ; void drm_modeset_unlock(struct drm_modeset_lock *lock ) ; void drm_modeset_lock_all(struct drm_device *dev ) ; void drm_modeset_unlock_all(struct drm_device *dev ) ; void drm_modeset_lock_crtc(struct drm_crtc *crtc , struct drm_plane *plane ) ; void drm_modeset_unlock_crtc(struct drm_crtc *crtc ) ; __inline static int64_t U642I64(uint64_t val ) { { return (*((int64_t *)(& val))); } } __inline static uint64_t I642U64(int64_t val ) { { return (*((uint64_t *)(& val))); } } __inline static bool drm_mode_is_stereo(struct drm_display_mode const *mode ) { { return (((unsigned int )mode->flags & 507904U) != 0U); } } struct drm_display_mode *drm_mode_create(struct drm_device *dev ) ; void drm_mode_destroy(struct drm_device *dev , struct drm_display_mode *mode ) ; void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out , struct drm_display_mode const *in ) ; int drm_mode_convert_umode(struct drm_display_mode *out , struct drm_mode_modeinfo const *in ) ; void drm_mode_set_crtcinfo(struct drm_display_mode *p , int adjust_flags ) ; void drm_mode_copy(struct drm_display_mode *dst , struct drm_display_mode const *src ) ; bool drm_mode_parse_command_line_for_connector(char const *mode_option , struct drm_connector *connector , struct drm_cmdline_mode *mode ) ; int drm_crtc_init_with_planes(struct drm_device *dev , struct drm_crtc *crtc , struct drm_plane *primary , struct drm_plane *cursor , struct drm_crtc_funcs const *funcs ) ; void drm_crtc_cleanup(struct drm_crtc *crtc ) ; __inline static uint32_t drm_crtc_mask(struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); return ((uint32_t )(1 << (int )tmp)); } } int drm_connector_init(struct drm_device *dev , struct drm_connector *connector , struct drm_connector_funcs const *funcs , int connector_type ) ; int drm_connector_register(struct drm_connector *connector ) ; void drm_connector_unregister(struct drm_connector *connector ) ; void drm_connector_cleanup(struct drm_connector *connector ) ; unsigned int drm_connector_index(struct drm_connector *connector ) ; void drm_connector_unplug_all(struct drm_device *dev ) ; int drm_encoder_init(struct drm_device *dev , struct drm_encoder *encoder , struct drm_encoder_funcs const *funcs , int encoder_type ) ; int drm_universal_plane_init(struct drm_device *dev , struct drm_plane *plane , unsigned long possible_crtcs , struct drm_plane_funcs const *funcs , uint32_t const *formats , uint32_t format_count , enum drm_plane_type type ) ; int drm_plane_init(struct drm_device *dev , struct drm_plane *plane , unsigned long possible_crtcs , struct drm_plane_funcs const *funcs , uint32_t const *formats , uint32_t format_count , bool is_primary ) ; void drm_plane_cleanup(struct drm_plane *plane ) ; unsigned int drm_plane_index(struct drm_plane *plane ) ; struct drm_plane *drm_plane_from_index(struct drm_device *dev , int idx ) ; void drm_plane_force_disable(struct drm_plane *plane ) ; int drm_plane_check_pixel_format(struct drm_plane const *plane , u32 format ) ; void drm_crtc_get_hv_timing(struct drm_display_mode const *mode , int *hdisplay , int *vdisplay ) ; int drm_crtc_check_viewport(struct drm_crtc const *crtc , int x , int y , struct drm_display_mode const *mode , struct drm_framebuffer const *fb ) ; void drm_encoder_cleanup(struct drm_encoder *encoder ) ; char const *drm_get_subpixel_order_name(enum subpixel_order order ) ; void drm_reinit_primary_mode_group(struct drm_device *dev ) ; void drm_mode_config_init(struct drm_device *dev ) ; void drm_mode_config_reset(struct drm_device *dev ) ; void drm_mode_config_cleanup(struct drm_device *dev ) ; int drm_mode_connector_set_path_property(struct drm_connector *connector , char const *path ) ; int drm_mode_connector_set_tile_property(struct drm_connector *connector ) ; int drm_mode_connector_update_edid_property(struct drm_connector *connector , struct edid const *edid ) ; int drm_display_info_set_bus_formats(struct drm_display_info *info , u32 const *formats , unsigned int num_formats ) ; __inline static bool drm_property_type_is(struct drm_property *property , uint32_t type ) { { if ((property->flags & 65472U) != 0U) { return ((property->flags & 65472U) == type); } else { } return ((property->flags & type) != 0U); } } __inline static bool drm_property_type_valid(struct drm_property *property ) { { if ((property->flags & 65472U) != 0U) { return ((property->flags & 58U) == 0U); } else { } return ((property->flags & 58U) != 0U); } } int drm_object_property_set_value(struct drm_mode_object *obj , struct drm_property *property , uint64_t val ) ; int drm_framebuffer_init(struct drm_device *dev , struct drm_framebuffer *fb , struct drm_framebuffer_funcs const *funcs ) ; struct drm_framebuffer *drm_framebuffer_lookup(struct drm_device *dev , uint32_t id ) ; void drm_framebuffer_unreference(struct drm_framebuffer *fb ) ; void drm_framebuffer_reference(struct drm_framebuffer *fb ) ; void drm_framebuffer_remove(struct drm_framebuffer *fb ) ; void drm_framebuffer_cleanup(struct drm_framebuffer *fb ) ; void drm_framebuffer_unregister_private(struct drm_framebuffer *fb ) ; void drm_object_attach_property(struct drm_mode_object *obj , struct drm_property *property , uint64_t init_val ) ; struct drm_property *drm_property_create(struct drm_device *dev , int flags , char const *name , int num_values ) ; struct drm_property *drm_property_create_enum(struct drm_device *dev , int flags , char const *name , struct drm_prop_enum_list const *props , int num_values ) ; struct drm_property *drm_property_create_bitmask(struct drm_device *dev , int flags , char const *name , struct drm_prop_enum_list const *props , int num_props , uint64_t supported_bits ) ; struct drm_property *drm_property_create_range(struct drm_device *dev , int flags , char const *name , uint64_t min , uint64_t max ) ; struct drm_property *drm_property_create_signed_range(struct drm_device *dev , int flags , char const *name , int64_t min , int64_t max ) ; struct drm_property *drm_property_create_object(struct drm_device *dev , int flags , char const *name , uint32_t type ) ; struct drm_property *drm_property_create_bool(struct drm_device *dev , int flags , char const *name ) ; struct drm_property_blob *drm_property_create_blob(struct drm_device *dev , size_t length , void const *data ) ; struct drm_property_blob *drm_property_lookup_blob(struct drm_device *dev , uint32_t id ) ; struct drm_property_blob *drm_property_reference_blob(struct drm_property_blob *blob ) ; void drm_property_unreference_blob(struct drm_property_blob *blob ) ; void drm_property_destroy(struct drm_device *dev , struct drm_property *property ) ; int drm_property_add_enum(struct drm_property *property , int index , uint64_t value , char const *name ) ; int drm_mode_create_dvi_i_properties(struct drm_device *dev ) ; int drm_mode_create_tv_properties(struct drm_device *dev , unsigned int num_modes , char **modes ) ; int drm_mode_create_scaling_mode_property(struct drm_device *dev ) ; int drm_mode_create_aspect_ratio_property(struct drm_device *dev ) ; int drm_mode_create_dirty_info_property(struct drm_device *dev ) ; int drm_mode_create_suggested_offset_properties(struct drm_device *dev ) ; bool drm_property_change_valid_get(struct drm_property *property , uint64_t value , struct drm_mode_object **ref ) ; void drm_property_change_valid_put(struct drm_property *property , struct drm_mode_object *ref ) ; int drm_mode_connector_attach_encoder(struct drm_connector *connector , struct drm_encoder *encoder ) ; int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc , int gamma_size ) ; struct drm_mode_object *drm_mode_object_find(struct drm_device *dev , uint32_t id , uint32_t type ) ; int drm_mode_set_config_internal(struct drm_mode_set *set ) ; uint32_t drm_mode_legacy_fb_format(uint32_t bpp , uint32_t depth ) ; struct drm_tile_group *drm_mode_create_tile_group(struct drm_device *dev , char *topology ) ; struct drm_tile_group *drm_mode_get_tile_group(struct drm_device *dev , char *topology ) ; void drm_mode_put_tile_group(struct drm_device *dev , struct drm_tile_group *tg ) ; int drm_mode_plane_set_obj_prop(struct drm_plane *plane , struct drm_property *property , uint64_t value ) ; void drm_fb_get_bpp_depth(uint32_t format , unsigned int *depth , int *bpp ) ; int drm_format_num_planes(uint32_t format ) ; int drm_format_plane_cpp(uint32_t format , int plane ) ; int drm_format_horz_chroma_subsampling(uint32_t format ) ; int drm_format_vert_chroma_subsampling(uint32_t format ) ; char const *drm_get_format_name(uint32_t format ) ; struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev , unsigned int supported_rotations ) ; unsigned int drm_rotation_simplify(unsigned int rotation , unsigned int supported_rotations ) ; __inline static struct drm_plane *drm_plane_find(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *mo ; struct drm_mode_object const *__mptr ; struct drm_plane *tmp ; { mo = drm_mode_object_find(dev, id, 4008636142U); if ((unsigned long )mo != (unsigned long )((struct drm_mode_object *)0)) { __mptr = (struct drm_mode_object const *)mo; tmp = (struct drm_plane *)__mptr + 0xffffffffffffff28UL; } else { tmp = (struct drm_plane *)0; } return (tmp); } } __inline static struct drm_crtc *drm_crtc_find(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *mo ; struct drm_mode_object const *__mptr ; struct drm_crtc *tmp ; { mo = drm_mode_object_find(dev, id, 3435973836U); if ((unsigned long )mo != (unsigned long )((struct drm_mode_object *)0)) { __mptr = (struct drm_mode_object const *)mo; tmp = (struct drm_crtc *)__mptr + 0xffffffffffffff20UL; } else { tmp = (struct drm_crtc *)0; } return (tmp); } } __inline static struct drm_encoder *drm_encoder_find(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *mo ; struct drm_mode_object const *__mptr ; struct drm_encoder *tmp ; { mo = drm_mode_object_find(dev, id, 3772834016U); if ((unsigned long )mo != (unsigned long )((struct drm_mode_object *)0)) { __mptr = (struct drm_mode_object const *)mo; tmp = (struct drm_encoder *)__mptr + 0xffffffffffffffe8UL; } else { tmp = (struct drm_encoder *)0; } return (tmp); } } __inline static struct drm_connector *drm_connector_find(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *mo ; struct drm_mode_object const *__mptr ; struct drm_connector *tmp ; { mo = drm_mode_object_find(dev, id, 3233857728U); if ((unsigned long )mo != (unsigned long )((struct drm_mode_object *)0)) { __mptr = (struct drm_mode_object const *)mo; tmp = (struct drm_connector *)__mptr + 0xffffffffffffffd8UL; } else { tmp = (struct drm_connector *)0; } return (tmp); } } __inline static struct drm_property *drm_property_find(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *mo ; struct drm_mode_object const *__mptr ; struct drm_property *tmp ; { mo = drm_mode_object_find(dev, id, 2964369584U); if ((unsigned long )mo != (unsigned long )((struct drm_mode_object *)0)) { __mptr = (struct drm_mode_object const *)mo; tmp = (struct drm_property *)__mptr + 0xfffffffffffffff0UL; } else { tmp = (struct drm_property *)0; } return (tmp); } } int drm_mode_object_get(struct drm_device *dev , struct drm_mode_object *obj , uint32_t obj_type ) ; void drm_mode_object_put(struct drm_device *dev , struct drm_mode_object *object ) ; int drm_atomic_get_property(struct drm_mode_object *obj , struct drm_property *property , uint64_t *val ) ; int drm_debugfs_connector_add(struct drm_connector *connector ) ; void drm_debugfs_connector_remove(struct drm_connector *connector ) ; static struct drm_framebuffer *internal_framebuffer_create(struct drm_device *dev , struct drm_mode_fb_cmd2 *r , struct drm_file *file_priv ) ; static struct drm_prop_enum_list const drm_dpms_enum_list[4U] = { {0, (char *)"On"}, {1, (char *)"Standby"}, {2, (char *)"Suspend"}, {3, (char *)"Off"}}; char const *drm_get_dpms_name(int val ) { int i ; { i = 0; goto ldv_39117; ldv_39116: ; if ((int )drm_dpms_enum_list[i].type == val) { return ((char const *)drm_dpms_enum_list[i].name); } else { } i = i + 1; ldv_39117: ; if ((unsigned int )i <= 3U) { goto ldv_39116; } else { } return ("(unknown)"); } } static struct drm_prop_enum_list const drm_plane_type_enum_list[3U] = { {0, (char *)"Overlay"}, {1, (char *)"Primary"}, {2, (char *)"Cursor"}}; static struct drm_prop_enum_list const drm_scaling_mode_enum_list[4U] = { {0, (char *)"None"}, {1, (char *)"Full"}, {2, (char *)"Center"}, {3, (char *)"Full aspect"}}; static struct drm_prop_enum_list const drm_aspect_ratio_enum_list[3U] = { {0, (char *)"Automatic"}, {1, (char *)"4:3"}, {2, (char *)"16:9"}}; static struct drm_prop_enum_list const drm_dvi_i_select_enum_list[3U] = { {0, (char *)"Automatic"}, {3, (char *)"DVI-D"}, {4, (char *)"DVI-A"}}; char const *drm_get_dvi_i_select_name(int val ) { int i ; { i = 0; goto ldv_39130; ldv_39129: ; if ((int )drm_dvi_i_select_enum_list[i].type == val) { return ((char const *)drm_dvi_i_select_enum_list[i].name); } else { } i = i + 1; ldv_39130: ; if ((unsigned int )i <= 2U) { goto ldv_39129; } else { } return ("(unknown)"); } } static struct drm_prop_enum_list const drm_dvi_i_subconnector_enum_list[3U] = { {0, (char *)"Unknown"}, {3, (char *)"DVI-D"}, {4, (char *)"DVI-A"}}; char const *drm_get_dvi_i_subconnector_name(int val ) { int i ; { i = 0; goto ldv_39140; ldv_39139: ; if ((int )drm_dvi_i_subconnector_enum_list[i].type == val) { return ((char const *)drm_dvi_i_subconnector_enum_list[i].name); } else { } i = i + 1; ldv_39140: ; if ((unsigned int )i <= 2U) { goto ldv_39139; } else { } return ("(unknown)"); } } static struct drm_prop_enum_list const drm_tv_select_enum_list[5U] = { {0, (char *)"Automatic"}, {5, (char *)"Composite"}, {6, (char *)"SVIDEO"}, {8, (char *)"Component"}, {9, (char *)"SCART"}}; char const *drm_get_tv_select_name(int val ) { int i ; { i = 0; goto ldv_39150; ldv_39149: ; if ((int )drm_tv_select_enum_list[i].type == val) { return ((char const *)drm_tv_select_enum_list[i].name); } else { } i = i + 1; ldv_39150: ; if ((unsigned int )i <= 4U) { goto ldv_39149; } else { } return ("(unknown)"); } } static struct drm_prop_enum_list const drm_tv_subconnector_enum_list[5U] = { {0, (char *)"Unknown"}, {5, (char *)"Composite"}, {6, (char *)"SVIDEO"}, {8, (char *)"Component"}, {9, (char *)"SCART"}}; char const *drm_get_tv_subconnector_name(int val ) { int i ; { i = 0; goto ldv_39160; ldv_39159: ; if ((int )drm_tv_subconnector_enum_list[i].type == val) { return ((char const *)drm_tv_subconnector_enum_list[i].name); } else { } i = i + 1; ldv_39160: ; if ((unsigned int )i <= 4U) { goto ldv_39159; } else { } return ("(unknown)"); } } static struct drm_prop_enum_list const drm_dirty_info_enum_list[3U] = { {0, (char *)"Off"}, {1, (char *)"On"}, {2, (char *)"Annotate"}}; static struct drm_conn_prop_enum_list drm_connector_enum_list[17U] = { {0, "Unknown", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {1, "VGA", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {2, "DVI-I", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {3, "DVI-D", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {4, "DVI-A", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {5, "Composite", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {6, "SVIDEO", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {7, "LVDS", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {8, "Component", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {9, "DIN", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {10, "DP", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {11, "HDMI-A", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {12, "HDMI-B", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {13, "TV", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {14, "eDP", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {15, "Virtual", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}, {16, "DSI", {{0, 0, 0, 0, {{{{{0}}, 0U, 0U, 0, {0, {0, 0}, 0, 0, 0UL}}}}, 0, 0}, 0}}}; static struct drm_prop_enum_list const drm_encoder_enum_list[8U] = { {0, (char *)"None"}, {1, (char *)"DAC"}, {2, (char *)"TMDS"}, {3, (char *)"LVDS"}, {4, (char *)"TV"}, {5, (char *)"Virtual"}, {6, (char *)"DSI"}, {7, (char *)"DP MST"}}; static struct drm_prop_enum_list const drm_subpixel_enum_list[6U] = { {0, (char *)"Unknown"}, {1, (char *)"Horizontal RGB"}, {2, (char *)"Horizontal BGR"}, {3, (char *)"Vertical RGB"}, {4, (char *)"Vertical BGR"}, {5, (char *)"None"}}; void drm_connector_ida_init(void) { int i ; { i = 0; goto ldv_39177; ldv_39176: ida_init(& drm_connector_enum_list[i].ida); i = i + 1; ldv_39177: ; if ((unsigned int )i <= 16U) { goto ldv_39176; } else { } return; } } void drm_connector_ida_destroy(void) { int i ; { i = 0; goto ldv_39186; ldv_39185: ida_destroy(& drm_connector_enum_list[i].ida); i = i + 1; ldv_39186: ; if ((unsigned int )i <= 16U) { goto ldv_39185; } else { } return; } } char const *drm_get_connector_status_name(enum drm_connector_status status ) { { if ((unsigned int )status == 1U) { return ("connected"); } else if ((unsigned int )status == 2U) { return ("disconnected"); } else { return ("unknown"); } } } static char const __kstrtab_drm_get_connector_status_name[30U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 's', 't', 'a', 't', 'u', 's', '_', 'n', 'a', 'm', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_get_connector_status_name ; struct kernel_symbol const __ksymtab_drm_get_connector_status_name = {(unsigned long )(& drm_get_connector_status_name), (char const *)(& __kstrtab_drm_get_connector_status_name)}; char const *drm_get_subpixel_order_name(enum subpixel_order order ) { { return ((char const *)drm_subpixel_enum_list[(unsigned int )order].name); } } static char const __kstrtab_drm_get_subpixel_order_name[28U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 's', 'u', 'b', 'p', 'i', 'x', 'e', 'l', '_', 'o', 'r', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_get_subpixel_order_name ; struct kernel_symbol const __ksymtab_drm_get_subpixel_order_name = {(unsigned long )(& drm_get_subpixel_order_name), (char const *)(& __kstrtab_drm_get_subpixel_order_name)}; static char printable_char(int c ) { { return ((int )((signed char )c) >= 0 && ((int )_ctype[(int )((unsigned char )c)] & 151) != 0 ? (char )c : 63); } } char const *drm_get_format_name(uint32_t format ) { char buf[32U] ; char tmp ; char tmp___0 ; char tmp___1 ; char tmp___2 ; { tmp = printable_char((int )(format >> 24) & 127); tmp___0 = printable_char((int )(format >> 16) & 255); tmp___1 = printable_char((int )(format >> 8) & 255); tmp___2 = printable_char((int )format & 255); snprintf((char *)(& buf), 32UL, "%c%c%c%c %s-endian (0x%08x)", (int )tmp___2, (int )tmp___1, (int )tmp___0, (int )tmp, (int )format < 0 ? (char *)"big" : (char *)"little", format); return ((char const *)(& buf)); } } static char const __kstrtab_drm_get_format_name[20U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 'n', 'a', 'm', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_get_format_name ; struct kernel_symbol const __ksymtab_drm_get_format_name = {(unsigned long )(& drm_get_format_name), (char const *)(& __kstrtab_drm_get_format_name)}; static int drm_mode_object_get_reg(struct drm_device *dev , struct drm_mode_object *obj , uint32_t obj_type , bool register_obj ) { int ret ; { mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); ret = idr_alloc(& dev->mode_config.crtc_idr, (int )register_obj ? (void *)obj : (void *)0, 1, 0, 208U); if (ret >= 0) { obj->id = (uint32_t )ret; obj->type = obj_type; } else { } mutex_unlock(& dev->mode_config.idr_mutex); return (0 < ret ? 0 : ret); } } int drm_mode_object_get(struct drm_device *dev , struct drm_mode_object *obj , uint32_t obj_type ) { int tmp ; { tmp = drm_mode_object_get_reg(dev, obj, obj_type, 1); return (tmp); } } static void drm_mode_object_register(struct drm_device *dev , struct drm_mode_object *obj ) { { mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); idr_replace(& dev->mode_config.crtc_idr, (void *)obj, (int )obj->id); mutex_unlock(& dev->mode_config.idr_mutex); return; } } void drm_mode_object_put(struct drm_device *dev , struct drm_mode_object *object ) { { mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); idr_remove(& dev->mode_config.crtc_idr, (int )object->id); mutex_unlock(& dev->mode_config.idr_mutex); return; } } static struct drm_mode_object *_object_find(struct drm_device *dev , uint32_t id , uint32_t type ) { struct drm_mode_object *obj ; void *tmp ; { obj = (struct drm_mode_object *)0; mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); tmp = idr_find___3(& dev->mode_config.crtc_idr, (int )id); obj = (struct drm_mode_object *)tmp; if (((unsigned long )obj != (unsigned long )((struct drm_mode_object *)0) && type != 0U) && obj->type != type) { obj = (struct drm_mode_object *)0; } else { } if ((unsigned long )obj != (unsigned long )((struct drm_mode_object *)0) && obj->id != id) { obj = (struct drm_mode_object *)0; } else { } if ((unsigned long )obj != (unsigned long )((struct drm_mode_object *)0) && (obj->type == 4227595259U || obj->type == 3149642683U)) { obj = (struct drm_mode_object *)0; } else { } mutex_unlock(& dev->mode_config.idr_mutex); return (obj); } } struct drm_mode_object *drm_mode_object_find(struct drm_device *dev , uint32_t id , uint32_t type ) { struct drm_mode_object *obj ; int __ret_warn_on ; long tmp ; { obj = (struct drm_mode_object *)0; __ret_warn_on = type == 4227595259U || type == 3149642683U; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 382); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); obj = _object_find(dev, id, type); return (obj); } } static char const __kstrtab_drm_mode_object_find[21U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'f', 'i', 'n', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_object_find ; struct kernel_symbol const __ksymtab_drm_mode_object_find = {(unsigned long )(& drm_mode_object_find), (char const *)(& __kstrtab_drm_mode_object_find)}; int drm_framebuffer_init(struct drm_device *dev , struct drm_framebuffer *fb , struct drm_framebuffer_funcs const *funcs ) { int ret ; { mutex_lock_nested(& dev->mode_config.fb_lock, 0U); kref_init(& fb->refcount); INIT_LIST_HEAD(& fb->filp_head); fb->dev = dev; fb->funcs = funcs; ret = drm_mode_object_get(dev, & fb->base, 4227595259U); if (ret != 0) { goto out; } else { } dev->mode_config.num_fb = dev->mode_config.num_fb + 1; list_add(& fb->head, & dev->mode_config.fb_list); out: mutex_unlock(& dev->mode_config.fb_lock); return (0); } } static char const __kstrtab_drm_framebuffer_init[21U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_init ; struct kernel_symbol const __ksymtab_drm_framebuffer_init = {(unsigned long )(& drm_framebuffer_init), (char const *)(& __kstrtab_drm_framebuffer_init)}; static void __drm_framebuffer_unregister(struct drm_device *dev , struct drm_framebuffer *fb ) { { mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); idr_remove(& dev->mode_config.crtc_idr, (int )fb->base.id); mutex_unlock(& dev->mode_config.idr_mutex); fb->base.id = 0U; return; } } static void drm_framebuffer_free(struct kref *kref ) { struct drm_framebuffer *fb ; struct kref const *__mptr ; struct drm_device *dev ; { __mptr = (struct kref const *)kref; fb = (struct drm_framebuffer *)__mptr + 0xfffffffffffffff8UL; dev = fb->dev; mutex_lock_nested(& dev->mode_config.fb_lock, 0U); if (fb->base.id != 0U) { __drm_framebuffer_unregister(dev, fb); } else { } mutex_unlock(& dev->mode_config.fb_lock); (*((fb->funcs)->destroy))(fb); return; } } static struct drm_framebuffer *__drm_framebuffer_lookup(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *obj ; struct drm_framebuffer *fb ; void *tmp ; struct drm_mode_object const *__mptr ; { obj = (struct drm_mode_object *)0; mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); tmp = idr_find___3(& dev->mode_config.crtc_idr, (int )id); obj = (struct drm_mode_object *)tmp; if (((unsigned long )obj == (unsigned long )((struct drm_mode_object *)0) || obj->type != 4227595259U) || obj->id != id) { fb = (struct drm_framebuffer *)0; } else { __mptr = (struct drm_mode_object const *)obj; fb = (struct drm_framebuffer *)__mptr + 0xffffffffffffffe0UL; } mutex_unlock(& dev->mode_config.idr_mutex); return (fb); } } struct drm_framebuffer *drm_framebuffer_lookup(struct drm_device *dev , uint32_t id ) { struct drm_framebuffer *fb ; int tmp ; { mutex_lock_nested(& dev->mode_config.fb_lock, 0U); fb = __drm_framebuffer_lookup(dev, id); if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { tmp = kref_get_unless_zero(& fb->refcount); if (tmp == 0) { fb = (struct drm_framebuffer *)0; } else { } } else { } mutex_unlock(& dev->mode_config.fb_lock); return (fb); } } static char const __kstrtab_drm_framebuffer_lookup[23U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'o', 'o', 'k', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_lookup ; struct kernel_symbol const __ksymtab_drm_framebuffer_lookup = {(unsigned long )(& drm_framebuffer_lookup), (char const *)(& __kstrtab_drm_framebuffer_lookup)}; void drm_framebuffer_unreference(struct drm_framebuffer *fb ) { int tmp ; long tmp___0 ; { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { tmp = atomic_read((atomic_t const *)(& fb->refcount.refcount)); drm_ut_debug_printk("drm_framebuffer_unreference", "%p: FB ID: %d (%d)\n", fb, fb->base.id, tmp); } else { } kref_put___1(& fb->refcount, & drm_framebuffer_free); return; } } static char const __kstrtab_drm_framebuffer_unreference[28U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'u', 'n', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_unreference ; struct kernel_symbol const __ksymtab_drm_framebuffer_unreference = {(unsigned long )(& drm_framebuffer_unreference), (char const *)(& __kstrtab_drm_framebuffer_unreference)}; void drm_framebuffer_reference(struct drm_framebuffer *fb ) { int tmp ; long tmp___0 ; { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { tmp = atomic_read((atomic_t const *)(& fb->refcount.refcount)); drm_ut_debug_printk("drm_framebuffer_reference", "%p: FB ID: %d (%d)\n", fb, fb->base.id, tmp); } else { } kref_get___1(& fb->refcount); return; } } static char const __kstrtab_drm_framebuffer_reference[26U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_reference ; struct kernel_symbol const __ksymtab_drm_framebuffer_reference = {(unsigned long )(& drm_framebuffer_reference), (char const *)(& __kstrtab_drm_framebuffer_reference)}; void drm_framebuffer_unregister_private(struct drm_framebuffer *fb ) { struct drm_device *dev ; { dev = fb->dev; mutex_lock_nested(& dev->mode_config.fb_lock, 0U); __drm_framebuffer_unregister(dev, fb); mutex_unlock(& dev->mode_config.fb_lock); return; } } static char const __kstrtab_drm_framebuffer_unregister_private[35U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'u', 'n', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '_', 'p', 'r', 'i', 'v', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_unregister_private ; struct kernel_symbol const __ksymtab_drm_framebuffer_unregister_private = {(unsigned long )(& drm_framebuffer_unregister_private), (char const *)(& __kstrtab_drm_framebuffer_unregister_private)}; void drm_framebuffer_cleanup(struct drm_framebuffer *fb ) { struct drm_device *dev ; { dev = fb->dev; mutex_lock_nested(& dev->mode_config.fb_lock, 0U); list_del(& fb->head); dev->mode_config.num_fb = dev->mode_config.num_fb - 1; mutex_unlock(& dev->mode_config.fb_lock); return; } } static char const __kstrtab_drm_framebuffer_cleanup[24U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_cleanup ; struct kernel_symbol const __ksymtab_drm_framebuffer_cleanup = {(unsigned long )(& drm_framebuffer_cleanup), (char const *)(& __kstrtab_drm_framebuffer_cleanup)}; void drm_framebuffer_remove(struct drm_framebuffer *fb ) { struct drm_device *dev ; struct drm_crtc *crtc ; struct drm_plane *plane ; struct drm_mode_set set ; int ret ; int __ret_warn_on ; int tmp ; long tmp___0 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; int tmp___1 ; { dev = fb->dev; tmp = list_empty((struct list_head const *)(& fb->filp_head)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 598); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___1 = atomic_read((atomic_t const *)(& fb->refcount.refcount)); if (tmp___1 > 1) { drm_modeset_lock_all(dev); __mptr = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_39372; ldv_39371: ; if ((unsigned long )(crtc->primary)->fb == (unsigned long )fb) { memset((void *)(& set), 0, 48UL); set.crtc = crtc; set.fb = (struct drm_framebuffer *)0; ret = drm_mode_set_config_internal(& set); if (ret != 0) { drm_err("failed to reset crtc %p when fb was deleted\n", crtc); } else { } } else { } __mptr___0 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_39372: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_39371; } else { } __mptr___1 = (struct list_head const *)dev->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr___1 + 0xfffffffffffffff8UL; goto ldv_39379; ldv_39378: ; if ((unsigned long )plane->fb == (unsigned long )fb) { drm_plane_force_disable(plane); } else { } __mptr___2 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___2 + 0xfffffffffffffff8UL; ldv_39379: ; if ((unsigned long )(& plane->head) != (unsigned long )(& dev->mode_config.plane_list)) { goto ldv_39378; } else { } drm_modeset_unlock_all(dev); } else { } drm_framebuffer_unreference(fb); return; } } static char const __kstrtab_drm_framebuffer_remove[23U] = { 'd', 'r', 'm', '_', 'f', 'r', 'a', 'm', 'e', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_framebuffer_remove ; struct kernel_symbol const __ksymtab_drm_framebuffer_remove = {(unsigned long )(& drm_framebuffer_remove), (char const *)(& __kstrtab_drm_framebuffer_remove)}; struct ww_class crtc_ww_class = {{0L}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, {{{(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}, {(char)0}}}, "crtc_ww_class_acquire", "crtc_ww_class_mutex"}; int drm_crtc_init_with_planes(struct drm_device *dev , struct drm_crtc *crtc , struct drm_plane *primary , struct drm_plane *cursor , struct drm_crtc_funcs const *funcs ) { struct drm_mode_config *config ; int ret ; int __ret_warn_on ; long tmp ; int __ret_warn_on___0 ; long tmp___0 ; unsigned int tmp___1 ; unsigned int tmp___2 ; int tmp___3 ; { config = & dev->mode_config; __ret_warn_on = (unsigned long )primary != (unsigned long )((struct drm_plane *)0) && (unsigned int )primary->type != 1U; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 665); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __ret_warn_on___0 = (unsigned long )cursor != (unsigned long )((struct drm_plane *)0) && (unsigned int )cursor->type != 2U; tmp___0 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 666); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); crtc->dev = dev; crtc->funcs = funcs; crtc->invert_dimensions = 0; drm_modeset_lock_init(& crtc->mutex); ret = drm_mode_object_get(dev, & crtc->base, 3435973836U); if (ret != 0) { return (ret); } else { } crtc->base.properties = & crtc->properties; list_add_tail(& crtc->head, & config->crtc_list); config->num_crtc = config->num_crtc + 1; crtc->primary = primary; crtc->cursor = cursor; if ((unsigned long )primary != (unsigned long )((struct drm_plane *)0)) { tmp___1 = drm_crtc_index(crtc); primary->possible_crtcs = (uint32_t )(1 << (int )tmp___1); } else { } if ((unsigned long )cursor != (unsigned long )((struct drm_plane *)0)) { tmp___2 = drm_crtc_index(crtc); cursor->possible_crtcs = (uint32_t )(1 << (int )tmp___2); } else { } tmp___3 = drm_core_check_feature(dev, 65536); if (tmp___3 != 0) { drm_object_attach_property(& crtc->base, config->prop_active, 0ULL); drm_object_attach_property(& crtc->base, config->prop_mode_id, 0ULL); } else { } return (0); } } static char const __kstrtab_drm_crtc_init_with_planes[26U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'i', 'n', 'i', 't', '_', 'w', 'i', 't', 'h', '_', 'p', 'l', 'a', 'n', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_init_with_planes ; struct kernel_symbol const __ksymtab_drm_crtc_init_with_planes = {(unsigned long )(& drm_crtc_init_with_planes), (char const *)(& __kstrtab_drm_crtc_init_with_planes)}; void drm_crtc_cleanup(struct drm_crtc *crtc ) { struct drm_device *dev ; int __ret_warn_on ; long tmp ; { dev = crtc->dev; kfree((void const *)crtc->gamma_store); crtc->gamma_store = (uint16_t *)0U; drm_modeset_lock_fini(& crtc->mutex); drm_mode_object_put(dev, & crtc->base); list_del(& crtc->head); dev->mode_config.num_crtc = dev->mode_config.num_crtc - 1; __ret_warn_on = (unsigned long )crtc->state != (unsigned long )((struct drm_crtc_state *)0) && (unsigned long )(crtc->funcs)->atomic_destroy_state == (unsigned long )((void (*/* const */)(struct drm_crtc * , struct drm_crtc_state * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 719); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((unsigned long )crtc->state != (unsigned long )((struct drm_crtc_state *)0) && (unsigned long )(crtc->funcs)->atomic_destroy_state != (unsigned long )((void (*/* const */)(struct drm_crtc * , struct drm_crtc_state * ))0)) { (*((crtc->funcs)->atomic_destroy_state))(crtc, crtc->state); } else { } memset((void *)crtc, 0, 1160UL); return; } } static char const __kstrtab_drm_crtc_cleanup[17U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_cleanup ; struct kernel_symbol const __ksymtab_drm_crtc_cleanup = {(unsigned long )(& drm_crtc_cleanup), (char const *)(& __kstrtab_drm_crtc_cleanup)}; unsigned int drm_crtc_index(struct drm_crtc *crtc ) { unsigned int index ; struct drm_crtc *tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { index = 0U; __mptr = (struct list_head const *)(crtc->dev)->mode_config.crtc_list.next; tmp = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_39436; ldv_39435: ; if ((unsigned long )tmp == (unsigned long )crtc) { return (index); } else { } index = index + 1U; __mptr___0 = (struct list_head const *)tmp->head.next; tmp = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_39436: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& (crtc->dev)->mode_config.crtc_list)) { goto ldv_39435; } else { } __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c"), "i" (746), "i" (12UL)); ldv_39438: ; goto ldv_39438; } } static char const __kstrtab_drm_crtc_index[15U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'i', 'n', 'd', 'e', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_index ; struct kernel_symbol const __ksymtab_drm_crtc_index = {(unsigned long )(& drm_crtc_index), (char const *)(& __kstrtab_drm_crtc_index)}; static void drm_mode_remove(struct drm_connector *connector , struct drm_display_mode *mode ) { { list_del(& mode->head); drm_mode_destroy(connector->dev, mode); return; } } int drm_display_info_set_bus_formats(struct drm_display_info *info , u32 const *formats , unsigned int num_formats ) { u32 *fmts ; void *tmp ; { fmts = (u32 *)0U; if ((unsigned long )formats == (unsigned long )((u32 const *)0U) && num_formats != 0U) { return (-22); } else { } if ((unsigned long )formats != (unsigned long )((u32 const *)0U) && num_formats != 0U) { tmp = kmemdup((void const *)formats, (unsigned long )num_formats * 4UL, 208U); fmts = (u32 *)tmp; if ((unsigned long )fmts == (unsigned long )((u32 *)0U)) { return (-12); } else { } } else { } kfree((void const *)info->bus_formats); info->bus_formats = (u32 const *)fmts; info->num_bus_formats = num_formats; return (0); } } static char const __kstrtab_drm_display_info_set_bus_formats[33U] = { 'd', 'r', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'i', 'n', 'f', 'o', '_', 's', 'e', 't', '_', 'b', 'u', 's', '_', 'f', 'o', 'r', 'm', 'a', 't', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_display_info_set_bus_formats ; struct kernel_symbol const __ksymtab_drm_display_info_set_bus_formats = {(unsigned long )(& drm_display_info_set_bus_formats), (char const *)(& __kstrtab_drm_display_info_set_bus_formats)}; static void drm_connector_get_cmdline_mode(struct drm_connector *connector ) { struct drm_cmdline_mode *mode ; char *option ; int tmp ; bool tmp___0 ; int tmp___1 ; char const *s ; long tmp___2 ; { mode = & connector->cmdline_mode; option = (char *)0; tmp = fb_get_options((char const *)connector->name, & option); if (tmp != 0) { return; } else { } tmp___0 = drm_mode_parse_command_line_for_connector((char const *)option, connector, mode); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { return; } else { } if ((unsigned int )mode->force != 0U) { switch ((unsigned int )mode->force) { case 1U: s = "OFF"; goto ldv_39472; case 3U: s = "ON - dig"; goto ldv_39472; default: ; case 2U: s = "ON"; goto ldv_39472; } ldv_39472: printk("\016[drm] forcing %s connector %s\n", connector->name, s); connector->force = mode->force; } else { } tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_connector_get_cmdline_mode", "cmdline mode for connector %s %dx%d@%dHz%s%s%s\n", connector->name, mode->xres, mode->yres, (int )mode->refresh_specified ? mode->refresh : 60, (int )mode->rb ? (char *)" reduced blanking" : (char *)"", (int )mode->margins ? (char *)" with margins" : (char *)"", (int )mode->interlace ? (char *)" interlaced" : (char *)""); } else { } return; } } int drm_connector_init(struct drm_device *dev , struct drm_connector *connector , struct drm_connector_funcs const *funcs , int connector_type ) { struct drm_mode_config *config ; int ret ; struct ida *connector_ida ; int tmp ; { config = & dev->mode_config; connector_ida = & drm_connector_enum_list[connector_type].ida; drm_modeset_lock_all(dev); ret = drm_mode_object_get_reg(dev, & connector->base, 3233857728U, 0); if (ret != 0) { goto out_unlock; } else { } connector->base.properties = & connector->properties; connector->dev = dev; connector->funcs = funcs; connector->connector_type = connector_type; connector->connector_type_id = ida_simple_get(connector_ida, 1U, 0U, 208U); if (connector->connector_type_id < 0) { ret = connector->connector_type_id; goto out_put; } else { } connector->name = kasprintf(208U, "%s-%d", drm_connector_enum_list[connector_type].name, connector->connector_type_id); if ((unsigned long )connector->name == (unsigned long )((char *)0)) { ret = -12; goto out_put; } else { } INIT_LIST_HEAD(& connector->probed_modes); INIT_LIST_HEAD(& connector->modes); connector->edid_blob_ptr = (struct drm_property_blob *)0; connector->status = 3; drm_connector_get_cmdline_mode(connector); list_add_tail(& connector->head, & config->connector_list); config->num_connector = config->num_connector + 1; if (connector_type != 15) { drm_object_attach_property(& connector->base, config->edid_property, 0ULL); } else { } drm_object_attach_property(& connector->base, config->dpms_property, 0ULL); tmp = drm_core_check_feature(dev, 65536); if (tmp != 0) { drm_object_attach_property(& connector->base, config->prop_crtc_id, 0ULL); } else { } connector->debugfs_entry = (struct dentry *)0; out_put: ; if (ret != 0) { drm_mode_object_put(dev, & connector->base); } else { } out_unlock: drm_modeset_unlock_all(dev); return (ret); } } static char const __kstrtab_drm_connector_init[19U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_init ; struct kernel_symbol const __ksymtab_drm_connector_init = {(unsigned long )(& drm_connector_init), (char const *)(& __kstrtab_drm_connector_init)}; void drm_connector_cleanup(struct drm_connector *connector ) { struct drm_device *dev ; struct drm_display_mode *mode ; struct drm_display_mode *t ; 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 ; int __ret_warn_on ; long tmp ; { dev = connector->dev; if ((unsigned long )connector->tile_group != (unsigned long )((struct drm_tile_group *)0)) { drm_mode_put_tile_group(dev, connector->tile_group); connector->tile_group = (struct drm_tile_group *)0; } else { } __mptr = (struct list_head const *)connector->probed_modes.next; mode = (struct drm_display_mode *)__mptr; __mptr___0 = (struct list_head const *)mode->head.next; t = (struct drm_display_mode *)__mptr___0; goto ldv_39511; ldv_39510: drm_mode_remove(connector, mode); mode = t; __mptr___1 = (struct list_head const *)t->head.next; t = (struct drm_display_mode *)__mptr___1; ldv_39511: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_39510; } else { } __mptr___2 = (struct list_head const *)connector->modes.next; mode = (struct drm_display_mode *)__mptr___2; __mptr___3 = (struct list_head const *)mode->head.next; t = (struct drm_display_mode *)__mptr___3; goto ldv_39520; ldv_39519: drm_mode_remove(connector, mode); mode = t; __mptr___4 = (struct list_head const *)t->head.next; t = (struct drm_display_mode *)__mptr___4; ldv_39520: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->modes)) { goto ldv_39519; } else { } ida_remove(& drm_connector_enum_list[connector->connector_type].ida, connector->connector_type_id); kfree((void const *)connector->display_info.bus_formats); drm_mode_object_put(dev, & connector->base); kfree((void const *)connector->name); connector->name = (char *)0; list_del(& connector->head); dev->mode_config.num_connector = dev->mode_config.num_connector - 1; __ret_warn_on = (unsigned long )connector->state != (unsigned long )((struct drm_connector_state *)0) && (unsigned long )(connector->funcs)->atomic_destroy_state == (unsigned long )((void (*/* const */)(struct drm_connector * , struct drm_connector_state * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 967); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((unsigned long )connector->state != (unsigned long )((struct drm_connector_state *)0) && (unsigned long )(connector->funcs)->atomic_destroy_state != (unsigned long )((void (*/* const */)(struct drm_connector * , struct drm_connector_state * ))0)) { (*((connector->funcs)->atomic_destroy_state))(connector, connector->state); } else { } memset((void *)connector, 0, 936UL); return; } } static char const __kstrtab_drm_connector_cleanup[22U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_cleanup ; struct kernel_symbol const __ksymtab_drm_connector_cleanup = {(unsigned long )(& drm_connector_cleanup), (char const *)(& __kstrtab_drm_connector_cleanup)}; unsigned int drm_connector_index(struct drm_connector *connector ) { unsigned int index ; struct drm_connector *tmp ; struct drm_mode_config *config ; int __ret_warn_on ; bool tmp___0 ; int tmp___1 ; long tmp___2 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { index = 0U; config = & (connector->dev)->mode_config; tmp___0 = drm_modeset_is_locked(& config->connection_mutex); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } __ret_warn_on = tmp___1; tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 989); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __mptr = (struct list_head const *)(connector->dev)->mode_config.connector_list.next; tmp = (struct drm_connector *)__mptr + 0xffffffffffffffe8UL; goto ldv_39544; ldv_39543: ; if ((unsigned long )tmp == (unsigned long )connector) { return (index); } else { } index = index + 1U; __mptr___0 = (struct list_head const *)tmp->head.next; tmp = (struct drm_connector *)__mptr___0 + 0xffffffffffffffe8UL; ldv_39544: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& (connector->dev)->mode_config.connector_list)) { goto ldv_39543; } else { } __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c"), "i" (998), "i" (12UL)); ldv_39546: ; goto ldv_39546; } } static char const __kstrtab_drm_connector_index[20U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'i', 'n', 'd', 'e', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_index ; struct kernel_symbol const __ksymtab_drm_connector_index = {(unsigned long )(& drm_connector_index), (char const *)(& __kstrtab_drm_connector_index)}; int drm_connector_register(struct drm_connector *connector ) { int ret ; { drm_mode_object_register(connector->dev, & connector->base); ret = drm_sysfs_connector_add(connector); if (ret != 0) { return (ret); } else { } ret = drm_debugfs_connector_add(connector); if (ret != 0) { drm_sysfs_connector_remove(connector); return (ret); } else { } return (0); } } static char const __kstrtab_drm_connector_register[23U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_register ; struct kernel_symbol const __ksymtab_drm_connector_register = {(unsigned long )(& drm_connector_register), (char const *)(& __kstrtab_drm_connector_register)}; void drm_connector_unregister(struct drm_connector *connector ) { { drm_sysfs_connector_remove(connector); drm_debugfs_connector_remove(connector); return; } } static char const __kstrtab_drm_connector_unregister[25U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'u', 'n', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_unregister ; struct kernel_symbol const __ksymtab_drm_connector_unregister = {(unsigned long )(& drm_connector_unregister), (char const *)(& __kstrtab_drm_connector_unregister)}; void drm_connector_unplug_all(struct drm_device *dev ) { struct drm_connector *connector ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr + 0xffffffffffffffe8UL; goto ldv_39584; ldv_39583: drm_connector_unregister(connector); __mptr___0 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___0 + 0xffffffffffffffe8UL; ldv_39584: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_39583; } else { } return; } } static char const __kstrtab_drm_connector_unplug_all[25U] = { 'd', 'r', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'u', 'n', 'p', 'l', 'u', 'g', '_', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_connector_unplug_all ; struct kernel_symbol const __ksymtab_drm_connector_unplug_all = {(unsigned long )(& drm_connector_unplug_all), (char const *)(& __kstrtab_drm_connector_unplug_all)}; int drm_encoder_init(struct drm_device *dev , struct drm_encoder *encoder , struct drm_encoder_funcs const *funcs , int encoder_type ) { int ret ; { drm_modeset_lock_all(dev); ret = drm_mode_object_get(dev, & encoder->base, 3772834016U); if (ret != 0) { goto out_unlock; } else { } encoder->dev = dev; encoder->encoder_type = encoder_type; encoder->funcs = funcs; encoder->name = kasprintf(208U, "%s-%d", drm_encoder_enum_list[encoder_type].name, encoder->base.id); if ((unsigned long )encoder->name == (unsigned long )((char *)0)) { ret = -12; goto out_put; } else { } list_add_tail(& encoder->head, & dev->mode_config.encoder_list); dev->mode_config.num_encoder = dev->mode_config.num_encoder + 1; out_put: ; if (ret != 0) { drm_mode_object_put(dev, & encoder->base); } else { } out_unlock: drm_modeset_unlock_all(dev); return (ret); } } static char const __kstrtab_drm_encoder_init[17U] = { 'd', 'r', 'm', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_encoder_init ; struct kernel_symbol const __ksymtab_drm_encoder_init = {(unsigned long )(& drm_encoder_init), (char const *)(& __kstrtab_drm_encoder_init)}; void drm_encoder_cleanup(struct drm_encoder *encoder ) { struct drm_device *dev ; { dev = encoder->dev; drm_modeset_lock_all(dev); drm_mode_object_put(dev, & encoder->base); kfree((void const *)encoder->name); list_del(& encoder->head); dev->mode_config.num_encoder = dev->mode_config.num_encoder - 1; drm_modeset_unlock_all(dev); memset((void *)encoder, 0, 96UL); return; } } static char const __kstrtab_drm_encoder_cleanup[20U] = { 'd', 'r', 'm', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_encoder_cleanup ; struct kernel_symbol const __ksymtab_drm_encoder_cleanup = {(unsigned long )(& drm_encoder_cleanup), (char const *)(& __kstrtab_drm_encoder_cleanup)}; int drm_universal_plane_init(struct drm_device *dev , struct drm_plane *plane , unsigned long possible_crtcs , struct drm_plane_funcs const *funcs , uint32_t const *formats , uint32_t format_count , enum drm_plane_type type ) { struct drm_mode_config *config ; int ret ; void *tmp ; long tmp___0 ; int tmp___1 ; { config = & dev->mode_config; ret = drm_mode_object_get(dev, & plane->base, 4008636142U); if (ret != 0) { return (ret); } else { } drm_modeset_lock_init(& plane->mutex); plane->base.properties = & plane->properties; plane->dev = dev; plane->funcs = funcs; tmp = kmalloc_array((size_t )format_count, 4UL, 208U); plane->format_types = (uint32_t *)tmp; if ((unsigned long )plane->format_types == (unsigned long )((uint32_t *)0U)) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_universal_plane_init", "out of memory when allocating plane\n"); } else { } drm_mode_object_put(dev, & plane->base); return (-12); } else { } memcpy((void *)plane->format_types, (void const *)formats, (unsigned long )format_count * 4UL); plane->format_count = format_count; plane->possible_crtcs = (uint32_t )possible_crtcs; plane->type = type; list_add_tail(& plane->head, & config->plane_list); config->num_total_plane = config->num_total_plane + 1; if ((unsigned int )plane->type == 0U) { config->num_overlay_plane = config->num_overlay_plane + 1; } else { } drm_object_attach_property(& plane->base, config->plane_type_property, (uint64_t )plane->type); tmp___1 = drm_core_check_feature(dev, 65536); if (tmp___1 != 0) { drm_object_attach_property(& plane->base, config->prop_fb_id, 0ULL); drm_object_attach_property(& plane->base, config->prop_crtc_id, 0ULL); drm_object_attach_property(& plane->base, config->prop_crtc_x, 0ULL); drm_object_attach_property(& plane->base, config->prop_crtc_y, 0ULL); drm_object_attach_property(& plane->base, config->prop_crtc_w, 0ULL); drm_object_attach_property(& plane->base, config->prop_crtc_h, 0ULL); drm_object_attach_property(& plane->base, config->prop_src_x, 0ULL); drm_object_attach_property(& plane->base, config->prop_src_y, 0ULL); drm_object_attach_property(& plane->base, config->prop_src_w, 0ULL); drm_object_attach_property(& plane->base, config->prop_src_h, 0ULL); } else { } return (0); } } static char const __kstrtab_drm_universal_plane_init[25U] = { 'd', 'r', 'm', '_', 'u', 'n', 'i', 'v', 'e', 'r', 's', 'a', 'l', '_', 'p', 'l', 'a', 'n', 'e', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_universal_plane_init ; struct kernel_symbol const __ksymtab_drm_universal_plane_init = {(unsigned long )(& drm_universal_plane_init), (char const *)(& __kstrtab_drm_universal_plane_init)}; int drm_plane_init(struct drm_device *dev , struct drm_plane *plane , unsigned long possible_crtcs , struct drm_plane_funcs const *funcs , uint32_t const *formats , uint32_t format_count , bool is_primary ) { enum drm_plane_type type ; int tmp ; { type = (enum drm_plane_type )is_primary; tmp = drm_universal_plane_init(dev, plane, possible_crtcs, funcs, formats, format_count, type); return (tmp); } } static char const __kstrtab_drm_plane_init[15U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 'n', 'e', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_plane_init ; struct kernel_symbol const __ksymtab_drm_plane_init = {(unsigned long )(& drm_plane_init), (char const *)(& __kstrtab_drm_plane_init)}; void drm_plane_cleanup(struct drm_plane *plane ) { struct drm_device *dev ; int tmp ; long tmp___0 ; int __ret_warn_on ; long tmp___1 ; { dev = plane->dev; drm_modeset_lock_all(dev); kfree((void const *)plane->format_types); drm_mode_object_put(dev, & plane->base); tmp = list_empty((struct list_head const *)(& plane->head)); tmp___0 = ldv__builtin_expect(tmp != 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c"), "i" (1255), "i" (12UL)); ldv_39675: ; goto ldv_39675; } else { } list_del(& plane->head); dev->mode_config.num_total_plane = dev->mode_config.num_total_plane - 1; if ((unsigned int )plane->type == 0U) { dev->mode_config.num_overlay_plane = dev->mode_config.num_overlay_plane - 1; } else { } drm_modeset_unlock_all(dev); __ret_warn_on = (unsigned long )plane->state != (unsigned long )((struct drm_plane_state *)0) && (unsigned long )(plane->funcs)->atomic_destroy_state == (unsigned long )((void (*/* const */)(struct drm_plane * , struct drm_plane_state * ))0); tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1263); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((unsigned long )plane->state != (unsigned long )((struct drm_plane_state *)0) && (unsigned long )(plane->funcs)->atomic_destroy_state != (unsigned long )((void (*/* const */)(struct drm_plane * , struct drm_plane_state * ))0)) { (*((plane->funcs)->atomic_destroy_state))(plane, plane->state); } else { } memset((void *)plane, 0, 704UL); return; } } static char const __kstrtab_drm_plane_cleanup[18U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 'n', 'e', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_plane_cleanup ; struct kernel_symbol const __ksymtab_drm_plane_cleanup = {(unsigned long )(& drm_plane_cleanup), (char const *)(& __kstrtab_drm_plane_cleanup)}; unsigned int drm_plane_index(struct drm_plane *plane ) { unsigned int index ; struct drm_plane *tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { index = 0U; __mptr = (struct list_head const *)(plane->dev)->mode_config.plane_list.next; tmp = (struct drm_plane *)__mptr + 0xfffffffffffffff8UL; goto ldv_39695; ldv_39694: ; if ((unsigned long )tmp == (unsigned long )plane) { return (index); } else { } index = index + 1U; __mptr___0 = (struct list_head const *)tmp->head.next; tmp = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; ldv_39695: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& (plane->dev)->mode_config.plane_list)) { goto ldv_39694; } else { } __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c"), "i" (1290), "i" (12UL)); ldv_39697: ; goto ldv_39697; } } static char const __kstrtab_drm_plane_index[16U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 'n', 'e', '_', 'i', 'n', 'd', 'e', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_plane_index ; struct kernel_symbol const __ksymtab_drm_plane_index = {(unsigned long )(& drm_plane_index), (char const *)(& __kstrtab_drm_plane_index)}; struct drm_plane *drm_plane_from_index(struct drm_device *dev , int idx ) { struct drm_plane *plane ; unsigned int i ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { i = 0U; __mptr = (struct list_head const *)dev->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr + 0xfffffffffffffff8UL; goto ldv_39716; ldv_39715: ; if ((unsigned int )idx == i) { return (plane); } else { } i = i + 1U; __mptr___0 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; ldv_39716: ; if ((unsigned long )(& plane->head) != (unsigned long )(& dev->mode_config.plane_list)) { goto ldv_39715; } else { } return ((struct drm_plane *)0); } } static char const __kstrtab_drm_plane_from_index[21U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 'n', 'e', '_', 'f', 'r', 'o', 'm', '_', 'i', 'n', 'd', 'e', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_plane_from_index ; struct kernel_symbol const __ksymtab_drm_plane_from_index = {(unsigned long )(& drm_plane_from_index), (char const *)(& __kstrtab_drm_plane_from_index)}; void drm_plane_force_disable(struct drm_plane *plane ) { int ret ; { if ((unsigned long )plane->fb == (unsigned long )((struct drm_framebuffer *)0)) { return; } else { } plane->old_fb = plane->fb; ret = (*((plane->funcs)->disable_plane))(plane); if (ret != 0) { drm_err("failed to disable plane with busy fb\n"); plane->old_fb = (struct drm_framebuffer *)0; return; } else { } drm_framebuffer_unreference(plane->old_fb); plane->old_fb = (struct drm_framebuffer *)0; plane->fb = (struct drm_framebuffer *)0; plane->crtc = (struct drm_crtc *)0; return; } } static char const __kstrtab_drm_plane_force_disable[24U] = { 'd', 'r', 'm', '_', 'p', 'l', 'a', 'n', 'e', '_', 'f', 'o', 'r', 'c', 'e', '_', 'd', 'i', 's', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_plane_force_disable ; struct kernel_symbol const __ksymtab_drm_plane_force_disable = {(unsigned long )(& drm_plane_force_disable), (char const *)(& __kstrtab_drm_plane_force_disable)}; static int drm_mode_create_standard_properties(struct drm_device *dev ) { struct drm_property *prop ; { prop = drm_property_create(dev, 20, "EDID", 0); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.edid_property = prop; prop = drm_property_create_enum(dev, 0, "DPMS", (struct drm_prop_enum_list const *)(& drm_dpms_enum_list), 4); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.dpms_property = prop; prop = drm_property_create(dev, 20, "PATH", 0); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.path_property = prop; prop = drm_property_create(dev, 20, "TILE", 0); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.tile_property = prop; prop = drm_property_create_enum(dev, 4, "type", (struct drm_prop_enum_list const *)(& drm_plane_type_enum_list), 3); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.plane_type_property = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "SRC_X", 0ULL, 4294967295ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_src_x = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "SRC_Y", 0ULL, 4294967295ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_src_y = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "SRC_W", 0ULL, 4294967295ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_src_w = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "SRC_H", 0ULL, 4294967295ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_src_h = prop; prop = drm_property_create_signed_range(dev, (-0x7FFFFFFF-1), "CRTC_X", (-0x7FFFFFFF-1), 2147483647LL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_crtc_x = prop; prop = drm_property_create_signed_range(dev, (-0x7FFFFFFF-1), "CRTC_Y", (-0x7FFFFFFF-1), 2147483647LL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_crtc_y = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "CRTC_W", 0ULL, 2147483647ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_crtc_w = prop; prop = drm_property_create_range(dev, (-0x7FFFFFFF-1), "CRTC_H", 0ULL, 2147483647ULL); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_crtc_h = prop; prop = drm_property_create_object(dev, (-0x7FFFFFFF-1), "FB_ID", 4227595259U); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_fb_id = prop; prop = drm_property_create_object(dev, (-0x7FFFFFFF-1), "CRTC_ID", 3435973836U); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_crtc_id = prop; prop = drm_property_create_bool(dev, (-0x7FFFFFFF-1), "ACTIVE"); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_active = prop; prop = drm_property_create(dev, -2147483632, "MODE_ID", 0); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } dev->mode_config.prop_mode_id = prop; return (0); } } int drm_mode_create_dvi_i_properties(struct drm_device *dev ) { struct drm_property *dvi_i_selector ; struct drm_property *dvi_i_subconnector ; { if ((unsigned long )dev->mode_config.dvi_i_select_subconnector_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } dvi_i_selector = drm_property_create_enum(dev, 0, "select subconnector", (struct drm_prop_enum_list const *)(& drm_dvi_i_select_enum_list), 3); dev->mode_config.dvi_i_select_subconnector_property = dvi_i_selector; dvi_i_subconnector = drm_property_create_enum(dev, 4, "subconnector", (struct drm_prop_enum_list const *)(& drm_dvi_i_subconnector_enum_list), 3); dev->mode_config.dvi_i_subconnector_property = dvi_i_subconnector; return (0); } } static char const __kstrtab_drm_mode_create_dvi_i_properties[33U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'd', 'v', 'i', '_', 'i', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_dvi_i_properties ; struct kernel_symbol const __ksymtab_drm_mode_create_dvi_i_properties = {(unsigned long )(& drm_mode_create_dvi_i_properties), (char const *)(& __kstrtab_drm_mode_create_dvi_i_properties)}; int drm_mode_create_tv_properties(struct drm_device *dev , unsigned int num_modes , char **modes ) { struct drm_property *tv_selector ; struct drm_property *tv_subconnector ; unsigned int i ; { if ((unsigned long )dev->mode_config.tv_select_subconnector_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } tv_selector = drm_property_create_enum(dev, 0, "select subconnector", (struct drm_prop_enum_list const *)(& drm_tv_select_enum_list), 5); dev->mode_config.tv_select_subconnector_property = tv_selector; tv_subconnector = drm_property_create_enum(dev, 4, "subconnector", (struct drm_prop_enum_list const *)(& drm_tv_subconnector_enum_list), 5); dev->mode_config.tv_subconnector_property = tv_subconnector; dev->mode_config.tv_left_margin_property = drm_property_create_range(dev, 0, "left margin", 0ULL, 100ULL); dev->mode_config.tv_right_margin_property = drm_property_create_range(dev, 0, "right margin", 0ULL, 100ULL); dev->mode_config.tv_top_margin_property = drm_property_create_range(dev, 0, "top margin", 0ULL, 100ULL); dev->mode_config.tv_bottom_margin_property = drm_property_create_range(dev, 0, "bottom margin", 0ULL, 100ULL); dev->mode_config.tv_mode_property = drm_property_create(dev, 8, "mode", (int )num_modes); i = 0U; goto ldv_39774; ldv_39773: drm_property_add_enum(dev->mode_config.tv_mode_property, (int )i, (uint64_t )i, (char const *)*(modes + (unsigned long )i)); i = i + 1U; ldv_39774: ; if (i < num_modes) { goto ldv_39773; } else { } dev->mode_config.tv_brightness_property = drm_property_create_range(dev, 0, "brightness", 0ULL, 100ULL); dev->mode_config.tv_contrast_property = drm_property_create_range(dev, 0, "contrast", 0ULL, 100ULL); dev->mode_config.tv_flicker_reduction_property = drm_property_create_range(dev, 0, "flicker reduction", 0ULL, 100ULL); dev->mode_config.tv_overscan_property = drm_property_create_range(dev, 0, "overscan", 0ULL, 100ULL); dev->mode_config.tv_saturation_property = drm_property_create_range(dev, 0, "saturation", 0ULL, 100ULL); dev->mode_config.tv_hue_property = drm_property_create_range(dev, 0, "hue", 0ULL, 100ULL); return (0); } } static char const __kstrtab_drm_mode_create_tv_properties[30U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'v', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_tv_properties ; struct kernel_symbol const __ksymtab_drm_mode_create_tv_properties = {(unsigned long )(& drm_mode_create_tv_properties), (char const *)(& __kstrtab_drm_mode_create_tv_properties)}; int drm_mode_create_scaling_mode_property(struct drm_device *dev ) { struct drm_property *scaling_mode ; { if ((unsigned long )dev->mode_config.scaling_mode_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } scaling_mode = drm_property_create_enum(dev, 0, "scaling mode", (struct drm_prop_enum_list const *)(& drm_scaling_mode_enum_list), 4); dev->mode_config.scaling_mode_property = scaling_mode; return (0); } } static char const __kstrtab_drm_mode_create_scaling_mode_property[38U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'c', 'a', 'l', 'i', 'n', 'g', '_', 'm', 'o', 'd', 'e', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_scaling_mode_property ; struct kernel_symbol const __ksymtab_drm_mode_create_scaling_mode_property = {(unsigned long )(& drm_mode_create_scaling_mode_property), (char const *)(& __kstrtab_drm_mode_create_scaling_mode_property)}; int drm_mode_create_aspect_ratio_property(struct drm_device *dev ) { { if ((unsigned long )dev->mode_config.aspect_ratio_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } dev->mode_config.aspect_ratio_property = drm_property_create_enum(dev, 0, "aspect ratio", (struct drm_prop_enum_list const *)(& drm_aspect_ratio_enum_list), 3); if ((unsigned long )dev->mode_config.aspect_ratio_property == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } return (0); } } static char const __kstrtab_drm_mode_create_aspect_ratio_property[38U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'a', 's', 'p', 'e', 'c', 't', '_', 'r', 'a', 't', 'i', 'o', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_aspect_ratio_property ; struct kernel_symbol const __ksymtab_drm_mode_create_aspect_ratio_property = {(unsigned long )(& drm_mode_create_aspect_ratio_property), (char const *)(& __kstrtab_drm_mode_create_aspect_ratio_property)}; int drm_mode_create_dirty_info_property(struct drm_device *dev ) { struct drm_property *dirty_info ; { if ((unsigned long )dev->mode_config.dirty_info_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } dirty_info = drm_property_create_enum(dev, 4, "dirty", (struct drm_prop_enum_list const *)(& drm_dirty_info_enum_list), 3); dev->mode_config.dirty_info_property = dirty_info; return (0); } } static char const __kstrtab_drm_mode_create_dirty_info_property[36U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'd', 'i', 'r', 't', 'y', '_', 'i', 'n', 'f', 'o', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_dirty_info_property ; struct kernel_symbol const __ksymtab_drm_mode_create_dirty_info_property = {(unsigned long )(& drm_mode_create_dirty_info_property), (char const *)(& __kstrtab_drm_mode_create_dirty_info_property)}; int drm_mode_create_suggested_offset_properties(struct drm_device *dev ) { { if ((unsigned long )dev->mode_config.suggested_x_property != (unsigned long )((struct drm_property *)0) && (unsigned long )dev->mode_config.suggested_y_property != (unsigned long )((struct drm_property *)0)) { return (0); } else { } dev->mode_config.suggested_x_property = drm_property_create_range(dev, 4, "suggested X", 0ULL, 4294967295ULL); dev->mode_config.suggested_y_property = drm_property_create_range(dev, 4, "suggested Y", 0ULL, 4294967295ULL); if ((unsigned long )dev->mode_config.suggested_x_property == (unsigned long )((struct drm_property *)0) || (unsigned long )dev->mode_config.suggested_y_property == (unsigned long )((struct drm_property *)0)) { return (-12); } else { } return (0); } } static char const __kstrtab_drm_mode_create_suggested_offset_properties[44U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'u', 'g', 'g', 'e', 's', 't', 'e', 'd', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_suggested_offset_properties ; struct kernel_symbol const __ksymtab_drm_mode_create_suggested_offset_properties = {(unsigned long )(& drm_mode_create_suggested_offset_properties), (char const *)(& __kstrtab_drm_mode_create_suggested_offset_properties)}; static int drm_mode_group_init(struct drm_device *dev , struct drm_mode_group *group ) { uint32_t total_objects ; void *tmp ; { total_objects = 0U; total_objects = (uint32_t )dev->mode_config.num_crtc + total_objects; total_objects = (uint32_t )dev->mode_config.num_connector + total_objects; total_objects = (uint32_t )dev->mode_config.num_encoder + total_objects; tmp = kcalloc((size_t )total_objects, 4UL, 208U); group->id_list = (uint32_t *)tmp; if ((unsigned long )group->id_list == (unsigned long )((uint32_t *)0U)) { return (-12); } else { } group->num_crtcs = 0U; group->num_connectors = 0U; group->num_encoders = 0U; return (0); } } void drm_mode_group_destroy(struct drm_mode_group *group ) { { kfree((void const *)group->id_list); group->id_list = (uint32_t *)0U; return; } } int drm_mode_group_init_legacy_group(struct drm_device *dev , struct drm_mode_group *group ) { struct drm_crtc *crtc ; struct drm_encoder *encoder ; struct drm_connector *connector ; int ret ; struct list_head const *__mptr ; uint32_t tmp ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; uint32_t tmp___0 ; struct list_head const *__mptr___2 ; struct list_head const *__mptr___3 ; uint32_t tmp___1 ; struct list_head const *__mptr___4 ; { ret = drm_mode_group_init(dev, group); if (ret != 0) { return (ret); } else { } __mptr = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_39854; ldv_39853: tmp = group->num_crtcs; group->num_crtcs = group->num_crtcs + 1U; *(group->id_list + (unsigned long )tmp) = crtc->base.id; __mptr___0 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_39854: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_39853; } else { } __mptr___1 = (struct list_head const *)dev->mode_config.encoder_list.next; encoder = (struct drm_encoder *)__mptr___1 + 0xfffffffffffffff8UL; goto ldv_39861; ldv_39860: tmp___0 = group->num_encoders; group->num_encoders = group->num_encoders + 1U; *(group->id_list + (unsigned long )(group->num_crtcs + tmp___0)) = encoder->base.id; __mptr___2 = (struct list_head const *)encoder->head.next; encoder = (struct drm_encoder *)__mptr___2 + 0xfffffffffffffff8UL; ldv_39861: ; if ((unsigned long )(& encoder->head) != (unsigned long )(& dev->mode_config.encoder_list)) { goto ldv_39860; } else { } __mptr___3 = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr___3 + 0xffffffffffffffe8UL; goto ldv_39868; ldv_39867: tmp___1 = group->num_connectors; group->num_connectors = group->num_connectors + 1U; *(group->id_list + (unsigned long )((group->num_crtcs + group->num_encoders) + tmp___1)) = connector->base.id; __mptr___4 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___4 + 0xffffffffffffffe8UL; ldv_39868: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_39867; } else { } return (0); } } static char const __kstrtab_drm_mode_group_init_legacy_group[33U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'g', 'r', 'o', 'u', 'p', '_', 'i', 'n', 'i', 't', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'g', 'r', 'o', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_group_init_legacy_group ; struct kernel_symbol const __ksymtab_drm_mode_group_init_legacy_group = {(unsigned long )(& drm_mode_group_init_legacy_group), (char const *)(& __kstrtab_drm_mode_group_init_legacy_group)}; void drm_reinit_primary_mode_group(struct drm_device *dev ) { { drm_modeset_lock_all(dev); drm_mode_group_destroy(& (dev->primary)->mode_group); drm_mode_group_init_legacy_group(dev, & (dev->primary)->mode_group); drm_modeset_unlock_all(dev); return; } } static char const __kstrtab_drm_reinit_primary_mode_group[30U] = { 'd', 'r', 'm', '_', 'r', 'e', 'i', 'n', 'i', 't', '_', 'p', 'r', 'i', 'm', 'a', 'r', 'y', '_', 'm', 'o', 'd', 'e', '_', 'g', 'r', 'o', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_reinit_primary_mode_group ; struct kernel_symbol const __ksymtab_drm_reinit_primary_mode_group = {(unsigned long )(& drm_reinit_primary_mode_group), (char const *)(& __kstrtab_drm_reinit_primary_mode_group)}; int drm_mode_getresources(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_card_res *card_res ; struct list_head *lh ; struct drm_framebuffer *fb ; struct drm_connector *connector ; struct drm_crtc *crtc ; struct drm_encoder *encoder ; int ret ; int connector_count ; int crtc_count ; int fb_count ; int encoder_count ; int copied ; int i ; uint32_t *fb_id ; uint32_t *crtc_id ; uint32_t *connector_id ; uint32_t *encoder_id ; struct drm_mode_group *mode_group ; int tmp ; struct list_head const *__mptr ; int __ret_pu ; uint32_t __pu_val ; struct list_head const *__mptr___0 ; bool tmp___0 ; int tmp___1 ; struct list_head const *__mptr___1 ; long tmp___2 ; int __ret_pu___0 ; uint32_t __pu_val___0 ; struct list_head const *__mptr___2 ; int __ret_pu___1 ; uint32_t __pu_val___1 ; struct list_head const *__mptr___3 ; long tmp___3 ; int __ret_pu___2 ; uint32_t __pu_val___2 ; struct list_head const *__mptr___4 ; int __ret_pu___3 ; uint32_t __pu_val___3 ; struct list_head const *__mptr___5 ; long tmp___4 ; int __ret_pu___4 ; uint32_t __pu_val___4 ; struct list_head const *__mptr___6 ; int start ; int __ret_pu___5 ; uint32_t __pu_val___5 ; long tmp___5 ; { card_res = (struct drm_mode_card_res *)data; ret = 0; connector_count = 0; crtc_count = 0; fb_count = 0; encoder_count = 0; copied = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } mutex_lock_nested(& file_priv->fbs_lock, 0U); lh = file_priv->fbs.next; goto ldv_39912; ldv_39911: fb_count = fb_count + 1; lh = lh->next; ldv_39912: ; if ((unsigned long )(& file_priv->fbs) != (unsigned long )lh) { goto ldv_39911; } else { } if (card_res->count_fbs >= (__u32 )fb_count) { copied = 0; fb_id = (uint32_t *)card_res->fb_id_ptr; __mptr = (struct list_head const *)file_priv->fbs.next; fb = (struct drm_framebuffer *)__mptr + 0xffffffffffffff70UL; goto ldv_39928; ldv_39927: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1799); __pu_val = fb->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu): "0" (__pu_val), "c" (fb_id + (unsigned long )copied): "ebx"); goto ldv_39921; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu): "0" (__pu_val), "c" (fb_id + (unsigned long )copied): "ebx"); goto ldv_39921; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu): "0" (__pu_val), "c" (fb_id + (unsigned long )copied): "ebx"); goto ldv_39921; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu): "0" (__pu_val), "c" (fb_id + (unsigned long )copied): "ebx"); goto ldv_39921; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu): "0" (__pu_val), "c" (fb_id + (unsigned long )copied): "ebx"); goto ldv_39921; } ldv_39921: ; if (__ret_pu != 0) { mutex_unlock(& file_priv->fbs_lock); return (-14); } else { } copied = copied + 1; __mptr___0 = (struct list_head const *)fb->filp_head.next; fb = (struct drm_framebuffer *)__mptr___0 + 0xffffffffffffff70UL; ldv_39928: ; if ((unsigned long )(& fb->filp_head) != (unsigned long )(& file_priv->fbs)) { goto ldv_39927; } else { } } else { } card_res->count_fbs = (__u32 )fb_count; mutex_unlock(& file_priv->fbs_lock); mutex_lock_nested(& dev->mode_config.mutex, 0U); tmp___0 = drm_is_primary_client((struct drm_file const *)file_priv); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { mode_group = (struct drm_mode_group *)0; lh = dev->mode_config.crtc_list.next; goto ldv_39931; ldv_39930: crtc_count = crtc_count + 1; lh = lh->next; ldv_39931: ; if ((unsigned long )(& dev->mode_config.crtc_list) != (unsigned long )lh) { goto ldv_39930; } else { } lh = dev->mode_config.connector_list.next; goto ldv_39934; ldv_39933: connector_count = connector_count + 1; lh = lh->next; ldv_39934: ; if ((unsigned long )(& dev->mode_config.connector_list) != (unsigned long )lh) { goto ldv_39933; } else { } lh = dev->mode_config.encoder_list.next; goto ldv_39937; ldv_39936: encoder_count = encoder_count + 1; lh = lh->next; ldv_39937: ; if ((unsigned long )(& dev->mode_config.encoder_list) != (unsigned long )lh) { goto ldv_39936; } else { } } else { mode_group = & ((file_priv->master)->minor)->mode_group; crtc_count = (int )mode_group->num_crtcs; connector_count = (int )mode_group->num_connectors; encoder_count = (int )mode_group->num_encoders; } card_res->max_height = (__u32 )dev->mode_config.max_height; card_res->min_height = (__u32 )dev->mode_config.min_height; card_res->max_width = (__u32 )dev->mode_config.max_width; card_res->min_width = (__u32 )dev->mode_config.min_width; if (card_res->count_crtcs >= (__u32 )crtc_count) { copied = 0; crtc_id = (uint32_t *)card_res->crtc_id_ptr; if ((unsigned long )mode_group == (unsigned long )((struct drm_mode_group *)0)) { __mptr___1 = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr___1 + 0xfffffffffffffff0UL; goto ldv_39955; ldv_39954: tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_mode_getresources", "[CRTC:%d]\n", crtc->base.id); } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1844); __pu_val___0 = crtc->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39947; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39947; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39947; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39947; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39947; } ldv_39947: ; if (__ret_pu___0 != 0) { ret = -14; goto out; } else { } copied = copied + 1; __mptr___2 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___2 + 0xfffffffffffffff0UL; ldv_39955: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_39954; } else { } } else { i = 0; goto ldv_39967; ldv_39966: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1853); __pu_val___1 = *(mode_group->id_list + (unsigned long )i); switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___1): "0" (__pu_val___1), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39960; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___1): "0" (__pu_val___1), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39960; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___1): "0" (__pu_val___1), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39960; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___1): "0" (__pu_val___1), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39960; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___1): "0" (__pu_val___1), "c" (crtc_id + (unsigned long )copied): "ebx"); goto ldv_39960; } ldv_39960: ; if (__ret_pu___1 != 0) { ret = -14; goto out; } else { } copied = copied + 1; i = i + 1; ldv_39967: ; if ((uint32_t )i < mode_group->num_crtcs) { goto ldv_39966; } else { } } } else { } card_res->count_crtcs = (__u32 )crtc_count; if (card_res->count_encoders >= (__u32 )encoder_count) { copied = 0; encoder_id = (uint32_t *)card_res->encoder_id_ptr; if ((unsigned long )mode_group == (unsigned long )((struct drm_mode_group *)0)) { __mptr___3 = (struct list_head const *)dev->mode_config.encoder_list.next; encoder = (struct drm_encoder *)__mptr___3 + 0xfffffffffffffff8UL; goto ldv_39983; ldv_39982: tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_mode_getresources", "[ENCODER:%d:%s]\n", encoder->base.id, encoder->name); } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1874); __pu_val___2 = encoder->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___2): "0" (__pu_val___2), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39976; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___2): "0" (__pu_val___2), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39976; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___2): "0" (__pu_val___2), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39976; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___2): "0" (__pu_val___2), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39976; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___2): "0" (__pu_val___2), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39976; } ldv_39976: ; if (__ret_pu___2 != 0) { ret = -14; goto out; } else { } copied = copied + 1; __mptr___4 = (struct list_head const *)encoder->head.next; encoder = (struct drm_encoder *)__mptr___4 + 0xfffffffffffffff8UL; ldv_39983: ; if ((unsigned long )(& encoder->head) != (unsigned long )(& dev->mode_config.encoder_list)) { goto ldv_39982; } else { } } else { i = (int )mode_group->num_crtcs; goto ldv_39995; ldv_39994: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1883); __pu_val___3 = *(mode_group->id_list + (unsigned long )i); switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___3): "0" (__pu_val___3), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39988; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___3): "0" (__pu_val___3), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39988; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___3): "0" (__pu_val___3), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39988; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___3): "0" (__pu_val___3), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39988; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___3): "0" (__pu_val___3), "c" (encoder_id + (unsigned long )copied): "ebx"); goto ldv_39988; } ldv_39988: ; if (__ret_pu___3 != 0) { ret = -14; goto out; } else { } copied = copied + 1; i = i + 1; ldv_39995: ; if ((uint32_t )i < mode_group->num_crtcs + mode_group->num_encoders) { goto ldv_39994; } else { } } } else { } card_res->count_encoders = (__u32 )encoder_count; if (card_res->count_connectors >= (__u32 )connector_count) { copied = 0; connector_id = (uint32_t *)card_res->connector_id_ptr; if ((unsigned long )mode_group == (unsigned long )((struct drm_mode_group *)0)) { __mptr___5 = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr___5 + 0xffffffffffffffe8UL; goto ldv_40011; ldv_40010: tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_mode_getresources", "[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1906); __pu_val___4 = connector->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___4): "0" (__pu_val___4), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40004; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___4): "0" (__pu_val___4), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40004; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___4): "0" (__pu_val___4), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40004; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___4): "0" (__pu_val___4), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40004; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___4): "0" (__pu_val___4), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40004; } ldv_40004: ; if (__ret_pu___4 != 0) { ret = -14; goto out; } else { } copied = copied + 1; __mptr___6 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___6 + 0xffffffffffffffe8UL; ldv_40011: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_40010; } else { } } else { start = (int )(mode_group->num_crtcs + mode_group->num_encoders); i = start; goto ldv_40024; ldv_40023: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 1917); __pu_val___5 = *(mode_group->id_list + (unsigned long )i); switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___5): "0" (__pu_val___5), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40017; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___5): "0" (__pu_val___5), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40017; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___5): "0" (__pu_val___5), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40017; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___5): "0" (__pu_val___5), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40017; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___5): "0" (__pu_val___5), "c" (connector_id + (unsigned long )copied): "ebx"); goto ldv_40017; } ldv_40017: ; if (__ret_pu___5 != 0) { ret = -14; goto out; } else { } copied = copied + 1; i = i + 1; ldv_40024: ; if ((uint32_t )i < mode_group->num_connectors + (uint32_t )start) { goto ldv_40023; } else { } } } else { } card_res->count_connectors = (__u32 )connector_count; tmp___5 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_mode_getresources", "CRTC[%d] CONNECTORS[%d] ENCODERS[%d]\n", card_res->count_crtcs, card_res->count_connectors, card_res->count_encoders); } else { } out: mutex_unlock(& dev->mode_config.mutex); return (ret); } } int drm_mode_getcrtc(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_crtc *crtc_resp ; struct drm_crtc *crtc ; int tmp ; { crtc_resp = (struct drm_mode_crtc *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } crtc = drm_crtc_find(dev, crtc_resp->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { return (-2); } else { } drm_modeset_lock_crtc(crtc, crtc->primary); crtc_resp->gamma_size = crtc->gamma_size; if ((unsigned long )(crtc->primary)->fb != (unsigned long )((struct drm_framebuffer *)0)) { crtc_resp->fb_id = ((crtc->primary)->fb)->base.id; } else { crtc_resp->fb_id = 0U; } if ((unsigned long )crtc->state != (unsigned long )((struct drm_crtc_state *)0)) { crtc_resp->x = ((crtc->primary)->state)->src_x >> 16; crtc_resp->y = ((crtc->primary)->state)->src_y >> 16; if ((int )(crtc->state)->enable) { drm_mode_convert_to_umode(& crtc_resp->mode, (struct drm_display_mode const *)(& (crtc->state)->mode)); crtc_resp->mode_valid = 1U; } else { crtc_resp->mode_valid = 0U; } } else { crtc_resp->x = (__u32 )crtc->x; crtc_resp->y = (__u32 )crtc->y; if ((int )crtc->enabled) { drm_mode_convert_to_umode(& crtc_resp->mode, (struct drm_display_mode const *)(& crtc->mode)); crtc_resp->mode_valid = 1U; } else { crtc_resp->mode_valid = 0U; } } drm_modeset_unlock_crtc(crtc); return (0); } } static bool drm_mode_expose_to_userspace(struct drm_display_mode const *mode , struct drm_file const *file_priv ) { bool tmp ; { if ((unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { tmp = drm_mode_is_stereo(mode); if ((int )tmp) { return (0); } else { } } else { } return (1); } } static struct drm_encoder *drm_connector_get_encoder(struct drm_connector *connector ) { { if ((unsigned long )connector->state != (unsigned long )((struct drm_connector_state *)0)) { return ((connector->state)->best_encoder); } else { } return (connector->encoder); } } static int get_properties(struct drm_mode_object *obj , bool atomic , uint32_t *prop_ptr , uint64_t *prop_values , uint32_t *arg_count_props ) { int props_count ; int i ; int ret ; int copied ; struct drm_property *prop ; uint64_t val ; int __ret_pu ; uint32_t __pu_val ; int __ret_pu___0 ; uint64_t __pu_val___0 ; { props_count = (obj->properties)->count; if (! atomic) { props_count = props_count - (obj->properties)->atomic_count; } else { } if (*arg_count_props >= (uint32_t )props_count && props_count != 0) { i = 0; copied = 0; goto ldv_40073; ldv_40072: prop = (obj->properties)->properties[i]; if ((int )prop->flags < 0 && ! atomic) { goto ldv_40053; } else { } ret = drm_object_property_get_value(obj, prop, & val); if (ret != 0) { return (ret); } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2040); __pu_val = prop->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu): "0" (__pu_val), "c" (prop_ptr + (unsigned long )copied): "ebx"); goto ldv_40057; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu): "0" (__pu_val), "c" (prop_ptr + (unsigned long )copied): "ebx"); goto ldv_40057; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu): "0" (__pu_val), "c" (prop_ptr + (unsigned long )copied): "ebx"); goto ldv_40057; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu): "0" (__pu_val), "c" (prop_ptr + (unsigned long )copied): "ebx"); goto ldv_40057; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu): "0" (__pu_val), "c" (prop_ptr + (unsigned long )copied): "ebx"); goto ldv_40057; } ldv_40057: ; if (__ret_pu != 0) { return (-14); } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2043); __pu_val___0 = val; switch (8UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (prop_values + (unsigned long )copied): "ebx"); goto ldv_40066; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (prop_values + (unsigned long )copied): "ebx"); goto ldv_40066; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (prop_values + (unsigned long )copied): "ebx"); goto ldv_40066; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (prop_values + (unsigned long )copied): "ebx"); goto ldv_40066; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu___0): "0" (__pu_val___0), "c" (prop_values + (unsigned long )copied): "ebx"); goto ldv_40066; } ldv_40066: ; if (__ret_pu___0 != 0) { return (-14); } else { } copied = copied + 1; ldv_40053: i = i + 1; ldv_40073: ; if (copied < props_count) { goto ldv_40072; } else { } } else { } *arg_count_props = (uint32_t )props_count; return (0); } } int drm_mode_getconnector(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_connector *out_resp ; struct drm_connector *connector ; struct drm_encoder *encoder ; struct drm_display_mode *mode ; int mode_count ; int encoders_count ; int ret ; int copied ; int i ; struct drm_mode_modeinfo u_mode ; struct drm_mode_modeinfo *mode_ptr ; uint32_t *encoder_ptr ; int tmp ; long tmp___0 ; struct list_head const *__mptr ; bool tmp___1 ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; bool tmp___2 ; int tmp___3 ; unsigned long tmp___4 ; struct list_head const *__mptr___2 ; int __ret_pu ; uint32_t __pu_val ; { out_resp = (struct drm_mode_get_connector *)data; mode_count = 0; encoders_count = 0; ret = 0; copied = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } memset((void *)(& u_mode), 0, 68UL); tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_mode_getconnector", "[CONNECTOR:%d:?]\n", out_resp->connector_id); } else { } mutex_lock_nested(& dev->mode_config.mutex, 0U); connector = drm_connector_find(dev, out_resp->connector_id); if ((unsigned long )connector == (unsigned long )((struct drm_connector *)0)) { ret = -2; goto out_unlock; } else { } i = 0; goto ldv_40095; ldv_40094: ; if (connector->encoder_ids[i] != 0U) { encoders_count = encoders_count + 1; } else { } i = i + 1; ldv_40095: ; if (i <= 2) { goto ldv_40094; } else { } if (out_resp->count_modes == 0U) { (*((connector->funcs)->fill_modes))(connector, (uint32_t )dev->mode_config.max_width, (uint32_t )dev->mode_config.max_height); } else { } __mptr = (struct list_head const *)connector->modes.next; mode = (struct drm_display_mode *)__mptr; goto ldv_40102; ldv_40101: tmp___1 = drm_mode_expose_to_userspace((struct drm_display_mode const *)mode, (struct drm_file const *)file_priv); if ((int )tmp___1) { mode_count = mode_count + 1; } else { } __mptr___0 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___0; ldv_40102: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->modes)) { goto ldv_40101; } else { } out_resp->connector_id = connector->base.id; out_resp->connector_type = (__u32 )connector->connector_type; out_resp->connector_type_id = (__u32 )connector->connector_type_id; out_resp->mm_width = connector->display_info.width_mm; out_resp->mm_height = connector->display_info.height_mm; out_resp->subpixel = (__u32 )connector->display_info.subpixel_order; out_resp->connection = (__u32 )connector->status; drm_modeset_lock(& dev->mode_config.connection_mutex, (struct drm_modeset_acquire_ctx *)0); encoder = drm_connector_get_encoder(connector); if ((unsigned long )encoder != (unsigned long )((struct drm_encoder *)0)) { out_resp->encoder_id = encoder->base.id; } else { out_resp->encoder_id = 0U; } if (out_resp->count_modes >= (__u32 )mode_count && mode_count != 0) { copied = 0; mode_ptr = (struct drm_mode_modeinfo *)out_resp->modes_ptr; __mptr___1 = (struct list_head const *)connector->modes.next; mode = (struct drm_display_mode *)__mptr___1; goto ldv_40111; ldv_40110: tmp___2 = drm_mode_expose_to_userspace((struct drm_display_mode const *)mode, (struct drm_file const *)file_priv); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } if (tmp___3) { goto ldv_40108; } else { } drm_mode_convert_to_umode(& u_mode, (struct drm_display_mode const *)mode); tmp___4 = copy_to_user((void *)mode_ptr + (unsigned long )copied, (void const *)(& u_mode), 68UL); if (tmp___4 != 0UL) { ret = -14; goto out; } else { } copied = copied + 1; ldv_40108: __mptr___2 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___2; ldv_40111: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->modes)) { goto ldv_40110; } else { } } else { } out_resp->count_modes = (__u32 )mode_count; ret = get_properties(& connector->base, (unsigned int )*((unsigned char *)file_priv + 0UL) != 0U, (uint32_t *)out_resp->props_ptr, (uint64_t *)out_resp->prop_values_ptr, & out_resp->count_props); if (ret != 0) { goto out; } else { } if (out_resp->count_encoders >= (__u32 )encoders_count && encoders_count != 0) { copied = 0; encoder_ptr = (uint32_t *)out_resp->encoders_ptr; i = 0; goto ldv_40123; ldv_40122: ; if (connector->encoder_ids[i] != 0U) { __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2163); __pu_val = connector->encoder_ids[i]; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu): "0" (__pu_val), "c" (encoder_ptr + (unsigned long )copied): "ebx"); goto ldv_40116; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu): "0" (__pu_val), "c" (encoder_ptr + (unsigned long )copied): "ebx"); goto ldv_40116; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu): "0" (__pu_val), "c" (encoder_ptr + (unsigned long )copied): "ebx"); goto ldv_40116; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu): "0" (__pu_val), "c" (encoder_ptr + (unsigned long )copied): "ebx"); goto ldv_40116; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu): "0" (__pu_val), "c" (encoder_ptr + (unsigned long )copied): "ebx"); goto ldv_40116; } ldv_40116: ; if (__ret_pu != 0) { ret = -14; goto out; } else { } copied = copied + 1; } else { } i = i + 1; ldv_40123: ; if (i <= 2) { goto ldv_40122; } else { } } else { } out_resp->count_encoders = (__u32 )encoders_count; out: drm_modeset_unlock(& dev->mode_config.connection_mutex); out_unlock: mutex_unlock(& dev->mode_config.mutex); return (ret); } } static struct drm_crtc *drm_encoder_get_crtc(struct drm_encoder *encoder ) { struct drm_connector *connector ; struct drm_device *dev ; bool uses_atomic ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { dev = encoder->dev; uses_atomic = 0; __mptr = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr + 0xffffffffffffffe8UL; goto ldv_40137; ldv_40136: ; if ((unsigned long )connector->state == (unsigned long )((struct drm_connector_state *)0)) { goto ldv_40135; } else { } uses_atomic = 1; if ((unsigned long )(connector->state)->best_encoder != (unsigned long )encoder) { goto ldv_40135; } else { } return ((connector->state)->crtc); ldv_40135: __mptr___0 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___0 + 0xffffffffffffffe8UL; ldv_40137: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_40136; } else { } if ((int )uses_atomic) { return ((struct drm_crtc *)0); } else { } return (encoder->crtc); } } int drm_mode_getencoder(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_encoder *enc_resp ; struct drm_encoder *encoder ; struct drm_crtc *crtc ; int tmp ; { enc_resp = (struct drm_mode_get_encoder *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } encoder = drm_encoder_find(dev, enc_resp->encoder_id); if ((unsigned long )encoder == (unsigned long )((struct drm_encoder *)0)) { return (-2); } else { } drm_modeset_lock(& dev->mode_config.connection_mutex, (struct drm_modeset_acquire_ctx *)0); crtc = drm_encoder_get_crtc(encoder); if ((unsigned long )crtc != (unsigned long )((struct drm_crtc *)0)) { enc_resp->crtc_id = crtc->base.id; } else { enc_resp->crtc_id = 0U; } drm_modeset_unlock(& dev->mode_config.connection_mutex); enc_resp->encoder_type = (__u32 )encoder->encoder_type; enc_resp->encoder_id = encoder->base.id; enc_resp->possible_crtcs = encoder->possible_crtcs; enc_resp->possible_clones = encoder->possible_clones; return (0); } } int drm_mode_getplane_res(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_plane_res *plane_resp ; struct drm_mode_config *config ; struct drm_plane *plane ; uint32_t *plane_ptr ; int copied ; unsigned int num_planes ; int tmp ; struct list_head const *__mptr ; int __ret_pu ; uint32_t __pu_val ; struct list_head const *__mptr___0 ; { plane_resp = (struct drm_mode_get_plane_res *)data; copied = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } config = & dev->mode_config; if ((unsigned int )*((unsigned char *)file_priv + 0UL) != 0U) { num_planes = (unsigned int )config->num_total_plane; } else { num_planes = (unsigned int )config->num_overlay_plane; } if (num_planes != 0U && plane_resp->count_planes >= num_planes) { plane_ptr = (uint32_t *)plane_resp->plane_id_ptr; __mptr = (struct list_head const *)config->plane_list.next; plane = (struct drm_plane *)__mptr + 0xfffffffffffffff8UL; goto ldv_40173; ldv_40172: ; if ((unsigned int )plane->type != 0U && (unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { goto ldv_40162; } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2303); __pu_val = plane->base.id; switch (4UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu): "0" (__pu_val), "c" (plane_ptr + (unsigned long )copied): "ebx"); goto ldv_40166; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu): "0" (__pu_val), "c" (plane_ptr + (unsigned long )copied): "ebx"); goto ldv_40166; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu): "0" (__pu_val), "c" (plane_ptr + (unsigned long )copied): "ebx"); goto ldv_40166; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu): "0" (__pu_val), "c" (plane_ptr + (unsigned long )copied): "ebx"); goto ldv_40166; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu): "0" (__pu_val), "c" (plane_ptr + (unsigned long )copied): "ebx"); goto ldv_40166; } ldv_40166: ; if (__ret_pu != 0) { return (-14); } else { } copied = copied + 1; ldv_40162: __mptr___0 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; ldv_40173: ; if ((unsigned long )(& plane->head) != (unsigned long )(& config->plane_list)) { goto ldv_40172; } else { } } else { } plane_resp->count_planes = num_planes; return (0); } } int drm_mode_getplane(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_plane *plane_resp ; struct drm_plane *plane ; uint32_t *format_ptr ; int tmp ; unsigned long tmp___0 ; { plane_resp = (struct drm_mode_get_plane *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } plane = drm_plane_find(dev, plane_resp->plane_id); if ((unsigned long )plane == (unsigned long )((struct drm_plane *)0)) { return (-2); } else { } drm_modeset_lock(& plane->mutex, (struct drm_modeset_acquire_ctx *)0); if ((unsigned long )plane->crtc != (unsigned long )((struct drm_crtc *)0)) { plane_resp->crtc_id = (plane->crtc)->base.id; } else { plane_resp->crtc_id = 0U; } if ((unsigned long )plane->fb != (unsigned long )((struct drm_framebuffer *)0)) { plane_resp->fb_id = (plane->fb)->base.id; } else { plane_resp->fb_id = 0U; } drm_modeset_unlock(& plane->mutex); plane_resp->plane_id = plane->base.id; plane_resp->possible_crtcs = plane->possible_crtcs; plane_resp->gamma_size = 0U; if (plane->format_count != 0U && plane_resp->count_format_types >= plane->format_count) { format_ptr = (uint32_t *)plane_resp->format_type_ptr; tmp___0 = copy_to_user((void *)format_ptr, (void const *)plane->format_types, (unsigned long )plane->format_count * 4UL); if (tmp___0 != 0UL) { return (-14); } else { } } else { } plane_resp->count_format_types = plane->format_count; return (0); } } int drm_plane_check_pixel_format(struct drm_plane const *plane , u32 format ) { unsigned int i ; { i = 0U; goto ldv_40189; ldv_40188: ; if (*(plane->format_types + (unsigned long )i) == format) { return (0); } else { } i = i + 1U; ldv_40189: ; if ((unsigned int )plane->format_count > i) { goto ldv_40188; } else { } return (-22); } } static int __setplane_internal(struct drm_plane *plane , struct drm_crtc *crtc , struct drm_framebuffer *fb , int32_t crtc_x , int32_t crtc_y , uint32_t crtc_w , uint32_t crtc_h , uint32_t src_x , uint32_t src_y , uint32_t src_w , uint32_t src_h ) { int ret ; unsigned int fb_width ; unsigned int fb_height ; long tmp ; uint32_t tmp___0 ; char const *tmp___1 ; long tmp___2 ; long tmp___3 ; long tmp___4 ; { ret = 0; if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { plane->old_fb = plane->fb; ret = (*((plane->funcs)->disable_plane))(plane); if (ret == 0) { plane->crtc = (struct drm_crtc *)0; plane->fb = (struct drm_framebuffer *)0; } else { plane->old_fb = (struct drm_framebuffer *)0; } goto out; } else { } tmp___0 = drm_crtc_mask(crtc); if ((plane->possible_crtcs & tmp___0) == 0U) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("__setplane_internal", "Invalid crtc for plane\n"); } else { } ret = -22; goto out; } else { } ret = drm_plane_check_pixel_format((struct drm_plane const *)plane, fb->pixel_format); if (ret != 0) { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { tmp___1 = drm_get_format_name(fb->pixel_format); drm_ut_debug_printk("__setplane_internal", "Invalid pixel format %s\n", tmp___1); } else { } goto out; } else { } if ((((int )crtc_w < 0 || 2147483647 - (int )crtc_w < crtc_x) || (int )crtc_h < 0) || 2147483647 - (int )crtc_h < crtc_y) { tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("__setplane_internal", "Invalid CRTC coordinates %ux%u+%d+%d\n", crtc_w, crtc_h, crtc_x, crtc_y); } else { } return (-34); } else { } fb_width = fb->width << 16; fb_height = fb->height << 16; if (((src_w > fb_width || fb_width - src_w < src_x) || src_h > fb_height) || fb_height - src_h < src_y) { tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("__setplane_internal", "Invalid source coordinates %u.%06ux%u.%06u+%u.%06u+%u.%06u\n", src_w >> 16, (src_w & 65535U) * 15625U >> 10, src_h >> 16, (src_h & 65535U) * 15625U >> 10, src_x >> 16, (src_x & 65535U) * 15625U >> 10, src_y >> 16, (src_y & 65535U) * 15625U >> 10); } else { } ret = -28; goto out; } else { } plane->old_fb = plane->fb; ret = (*((plane->funcs)->update_plane))(plane, crtc, fb, crtc_x, crtc_y, crtc_w, crtc_h, src_x, src_y, src_w, src_h); if (ret == 0) { plane->crtc = crtc; plane->fb = fb; fb = (struct drm_framebuffer *)0; } else { plane->old_fb = (struct drm_framebuffer *)0; } out: ; if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(fb); } else { } if ((unsigned long )plane->old_fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(plane->old_fb); } else { } plane->old_fb = (struct drm_framebuffer *)0; return (ret); } } static int setplane_internal(struct drm_plane *plane , struct drm_crtc *crtc , struct drm_framebuffer *fb , int32_t crtc_x , int32_t crtc_y , uint32_t crtc_w , uint32_t crtc_h , uint32_t src_x , uint32_t src_y , uint32_t src_w , uint32_t src_h ) { int ret ; { drm_modeset_lock_all(plane->dev); ret = __setplane_internal(plane, crtc, fb, crtc_x, crtc_y, crtc_w, crtc_h, src_x, src_y, src_w, src_h); drm_modeset_unlock_all(plane->dev); return (ret); } } int drm_mode_setplane(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_set_plane *plane_req ; struct drm_plane *plane ; struct drm_crtc *crtc ; struct drm_framebuffer *fb ; int tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; int tmp___3 ; { plane_req = (struct drm_mode_set_plane *)data; crtc = (struct drm_crtc *)0; fb = (struct drm_framebuffer *)0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } plane = drm_plane_find(dev, plane_req->plane_id); if ((unsigned long )plane == (unsigned long )((struct drm_plane *)0)) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_mode_setplane", "Unknown plane ID %d\n", plane_req->plane_id); } else { } return (-2); } else { } if (plane_req->fb_id != 0U) { fb = drm_framebuffer_lookup(dev, plane_req->fb_id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_mode_setplane", "Unknown framebuffer ID %d\n", plane_req->fb_id); } else { } return (-2); } else { } crtc = drm_crtc_find(dev, plane_req->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_mode_setplane", "Unknown crtc ID %d\n", plane_req->crtc_id); } else { } return (-2); } else { } } else { } tmp___3 = setplane_internal(plane, crtc, fb, plane_req->crtc_x, plane_req->crtc_y, plane_req->crtc_w, plane_req->crtc_h, plane_req->src_x, plane_req->src_y, plane_req->src_w, plane_req->src_h); return (tmp___3); } } int drm_mode_set_config_internal(struct drm_mode_set *set ) { struct drm_crtc *crtc ; struct drm_framebuffer *fb ; struct drm_crtc *tmp ; int ret ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; { crtc = set->crtc; __mptr = (struct list_head const *)(crtc->dev)->mode_config.crtc_list.next; tmp = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_40245; ldv_40244: (tmp->primary)->old_fb = (tmp->primary)->fb; __mptr___0 = (struct list_head const *)tmp->head.next; tmp = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_40245: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& (crtc->dev)->mode_config.crtc_list)) { goto ldv_40244; } else { } fb = set->fb; ret = (*((crtc->funcs)->set_config))(set); if (ret == 0) { (crtc->primary)->crtc = crtc; (crtc->primary)->fb = fb; } else { } __mptr___1 = (struct list_head const *)(crtc->dev)->mode_config.crtc_list.next; tmp = (struct drm_crtc *)__mptr___1 + 0xfffffffffffffff0UL; goto ldv_40252; ldv_40251: ; if ((unsigned long )(tmp->primary)->fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_reference((tmp->primary)->fb); } else { } if ((unsigned long )(tmp->primary)->old_fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference((tmp->primary)->old_fb); } else { } (tmp->primary)->old_fb = (struct drm_framebuffer *)0; __mptr___2 = (struct list_head const *)tmp->head.next; tmp = (struct drm_crtc *)__mptr___2 + 0xfffffffffffffff0UL; ldv_40252: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& (crtc->dev)->mode_config.crtc_list)) { goto ldv_40251; } else { } return (ret); } } static char const __kstrtab_drm_mode_set_config_internal[29U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 's', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_set_config_internal ; struct kernel_symbol const __ksymtab_drm_mode_set_config_internal = {(unsigned long )(& drm_mode_set_config_internal), (char const *)(& __kstrtab_drm_mode_set_config_internal)}; void drm_crtc_get_hv_timing(struct drm_display_mode const *mode , int *hdisplay , int *vdisplay ) { struct drm_display_mode adjusted ; { drm_mode_copy(& adjusted, mode); drm_mode_set_crtcinfo(& adjusted, 14); *hdisplay = adjusted.crtc_hdisplay; *vdisplay = adjusted.crtc_vdisplay; return; } } static char const __kstrtab_drm_crtc_get_hv_timing[23U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'g', 'e', 't', '_', 'h', 'v', '_', 't', 'i', 'm', 'i', 'n', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_get_hv_timing ; struct kernel_symbol const __ksymtab_drm_crtc_get_hv_timing = {(unsigned long )(& drm_crtc_get_hv_timing), (char const *)(& __kstrtab_drm_crtc_get_hv_timing)}; int drm_crtc_check_viewport(struct drm_crtc const *crtc , int x , int y , struct drm_display_mode const *mode , struct drm_framebuffer const *fb ) { int hdisplay ; int vdisplay ; int __tmp ; long tmp ; { drm_crtc_get_hv_timing(mode, & hdisplay, & vdisplay); if ((int )crtc->invert_dimensions) { __tmp = hdisplay; hdisplay = vdisplay; vdisplay = __tmp; } else { } if ((((unsigned int )hdisplay > (unsigned int )fb->width || (unsigned int )vdisplay > (unsigned int )fb->height) || (unsigned int )x > (unsigned int )fb->width - (unsigned int )hdisplay) || (unsigned int )y > (unsigned int )fb->height - (unsigned int )vdisplay) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_crtc_check_viewport", "Invalid fb size %ux%u for CRTC viewport %ux%u+%d+%d%s.\n", fb->width, fb->height, hdisplay, vdisplay, x, y, (int )crtc->invert_dimensions ? (char *)" (inverted)" : (char *)""); } else { } return (-28); } else { } return (0); } } static char const __kstrtab_drm_crtc_check_viewport[24U] = { 'd', 'r', 'm', '_', 'c', 'r', 't', 'c', '_', 'c', 'h', 'e', 'c', 'k', '_', 'v', 'i', 'e', 'w', 'p', 'o', 'r', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_crtc_check_viewport ; struct kernel_symbol const __ksymtab_drm_crtc_check_viewport = {(unsigned long )(& drm_crtc_check_viewport), (char const *)(& __kstrtab_drm_crtc_check_viewport)}; int drm_mode_setcrtc(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_config *config ; struct drm_mode_crtc *crtc_req ; struct drm_crtc *crtc ; struct drm_connector **connector_set ; struct drm_connector *connector ; struct drm_framebuffer *fb ; struct drm_display_mode *mode ; struct drm_mode_set set ; uint32_t *set_connectors_ptr ; int ret ; int i ; int tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; long tmp___3 ; long tmp___4 ; char const *tmp___5 ; long tmp___6 ; long tmp___7 ; long tmp___8 ; u32 out_id ; void *tmp___9 ; int __ret_gu ; register unsigned long __val_gu ; long tmp___10 ; long tmp___11 ; { config = & dev->mode_config; crtc_req = (struct drm_mode_crtc *)data; connector_set = (struct drm_connector **)0; fb = (struct drm_framebuffer *)0; mode = (struct drm_display_mode *)0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } if ((int )crtc_req->x < 0 || (int )crtc_req->y < 0) { return (-34); } else { } drm_modeset_lock_all(dev); crtc = drm_crtc_find(dev, crtc_req->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Unknown CRTC ID %d\n", crtc_req->crtc_id); } else { } ret = -2; goto out; } else { } tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "[CRTC:%d]\n", crtc->base.id); } else { } if (crtc_req->mode_valid != 0U) { if (crtc_req->fb_id == 4294967295U) { if ((unsigned long )(crtc->primary)->fb == (unsigned long )((struct drm_framebuffer *)0)) { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "CRTC doesn\'t have current FB\n"); } else { } ret = -22; goto out; } else { } fb = (crtc->primary)->fb; drm_framebuffer_reference(fb); } else { fb = drm_framebuffer_lookup(dev, crtc_req->fb_id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Unknown FB ID%d\n", crtc_req->fb_id); } else { } ret = -2; goto out; } else { } } mode = drm_mode_create(dev); if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { ret = -12; goto out; } else { } ret = drm_mode_convert_umode(mode, (struct drm_mode_modeinfo const *)(& crtc_req->mode)); if (ret != 0) { tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Invalid mode\n"); } else { } goto out; } else { } drm_mode_set_crtcinfo(mode, 1); if (! (crtc->primary)->format_default) { ret = drm_plane_check_pixel_format((struct drm_plane const *)crtc->primary, fb->pixel_format); if (ret != 0) { tmp___6 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___6 != 0L) { tmp___5 = drm_get_format_name(fb->pixel_format); drm_ut_debug_printk("drm_mode_setcrtc", "Invalid pixel format %s\n", tmp___5); } else { } goto out; } else { } } else { } ret = drm_crtc_check_viewport((struct drm_crtc const *)crtc, (int )crtc_req->x, (int )crtc_req->y, (struct drm_display_mode const *)mode, (struct drm_framebuffer const *)fb); if (ret != 0) { goto out; } else { } } else { } if (crtc_req->count_connectors == 0U && (unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { tmp___7 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Count connectors is 0 but mode set\n"); } else { } ret = -22; goto out; } else { } if (crtc_req->count_connectors != 0U && ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0) || (unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0))) { tmp___8 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Count connectors is %d but no mode or fb set\n", crtc_req->count_connectors); } else { } ret = -22; goto out; } else { } if (crtc_req->count_connectors != 0U) { if (crtc_req->count_connectors > (__u32 )config->num_connector) { ret = -22; goto out; } else { } tmp___9 = kmalloc_array((size_t )crtc_req->count_connectors, 8UL, 208U); connector_set = (struct drm_connector **)tmp___9; if ((unsigned long )connector_set == (unsigned long )((struct drm_connector **)0)) { ret = -12; goto out; } else { } i = 0; goto ldv_40321; ldv_40320: set_connectors_ptr = (uint32_t *)crtc_req->set_connectors_ptr; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2814); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (set_connectors_ptr + (unsigned long )i), "i" (4UL)); out_id = (unsigned int )__val_gu; if (__ret_gu != 0) { ret = -14; goto out; } else { } connector = drm_connector_find(dev, out_id); if ((unsigned long )connector == (unsigned long )((struct drm_connector *)0)) { tmp___10 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "Connector id %d unknown\n", out_id); } else { } ret = -2; goto out; } else { } tmp___11 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___11 != 0L) { drm_ut_debug_printk("drm_mode_setcrtc", "[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); } else { } *(connector_set + (unsigned long )i) = connector; i = i + 1; ldv_40321: ; if ((__u32 )i < crtc_req->count_connectors) { goto ldv_40320; } else { } } else { } set.crtc = crtc; set.x = crtc_req->x; set.y = crtc_req->y; set.mode = mode; set.connectors = connector_set; set.num_connectors = (size_t )crtc_req->count_connectors; set.fb = fb; ret = drm_mode_set_config_internal(& set); out: ; if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(fb); } else { } kfree((void const *)connector_set); drm_mode_destroy(dev, mode); drm_modeset_unlock_all(dev); return (ret); } } static int drm_mode_cursor_universal(struct drm_crtc *crtc , struct drm_mode_cursor2 *req , struct drm_file *file_priv ) { struct drm_device *dev ; struct drm_framebuffer *fb ; struct drm_mode_fb_cmd2 fbreq ; unsigned int tmp ; unsigned int tmp___0 ; int32_t crtc_x ; int32_t crtc_y ; uint32_t crtc_w ; uint32_t crtc_h ; uint32_t src_w ; uint32_t src_h ; int ret ; long tmp___1 ; int __ret_warn_on ; long tmp___2 ; long tmp___3 ; long tmp___4 ; bool tmp___5 ; { dev = crtc->dev; fb = (struct drm_framebuffer *)0; fbreq.fb_id = 0U; fbreq.width = req->width; fbreq.height = req->height; fbreq.pixel_format = 875713089U; fbreq.flags = 0U; fbreq.handles[0] = req->handle; tmp = 1U; while (1) { if (tmp >= 4U) { break; } else { } fbreq.handles[tmp] = 0U; tmp = tmp + 1U; } fbreq.pitches[0] = req->width * 4U; tmp___0 = 1U; while (1) { if (tmp___0 >= 4U) { break; } else { } fbreq.pitches[tmp___0] = 0U; tmp___0 = tmp___0 + 1U; } fbreq.offsets[0] = 0U; fbreq.offsets[1] = 0U; fbreq.offsets[2] = 0U; fbreq.offsets[3] = 0U; fbreq.modifier[0] = 0ULL; fbreq.modifier[1] = 0ULL; fbreq.modifier[2] = 0ULL; fbreq.modifier[3] = 0ULL; crtc_w = 0U; crtc_h = 0U; src_w = 0U; src_h = 0U; ret = 0; tmp___1 = ldv__builtin_expect((unsigned long )crtc->cursor == (unsigned long )((struct drm_plane *)0), 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c"), "i" (2890), "i" (12UL)); ldv_40338: ; goto ldv_40338; } else { } __ret_warn_on = (unsigned long )(crtc->cursor)->crtc != (unsigned long )crtc && (unsigned long )(crtc->cursor)->crtc != (unsigned long )((struct drm_crtc *)0); tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 2891); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((int )req->flags & 1) { if (req->handle != 0U) { fb = internal_framebuffer_create(dev, & fbreq, file_priv); tmp___5 = IS_ERR((void const *)fb); if ((int )tmp___5) { tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_mode_cursor_universal", "failed to wrap cursor buffer in drm framebuffer\n"); } else { } tmp___4 = PTR_ERR((void const *)fb); return ((int )tmp___4); } else { } } else { fb = (struct drm_framebuffer *)0; } } else { fb = (crtc->cursor)->fb; if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_reference(fb); } else { } } if ((req->flags & 2U) != 0U) { crtc_x = req->x; crtc_y = req->y; } else { crtc_x = crtc->cursor_x; crtc_y = crtc->cursor_y; } if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { crtc_w = fb->width; crtc_h = fb->height; src_w = fb->width << 16; src_h = fb->height << 16; } else { } ret = __setplane_internal(crtc->cursor, crtc, fb, crtc_x, crtc_y, crtc_w, crtc_h, 0U, 0U, src_w, src_h); if (ret == 0 && (req->flags & 2U) != 0U) { crtc->cursor_x = req->x; crtc->cursor_y = req->y; } else { } return (ret); } } static int drm_mode_cursor_common(struct drm_device *dev , struct drm_mode_cursor2 *req , struct drm_file *file_priv ) { struct drm_crtc *crtc ; int ret ; int tmp ; long tmp___0 ; { ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } if (req->flags == 0U || (req->flags & 4294967292U) != 0U) { return (-22); } else { } crtc = drm_crtc_find(dev, req->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_mode_cursor_common", "Unknown CRTC ID %d\n", req->crtc_id); } else { } return (-2); } else { } drm_modeset_lock_crtc(crtc, crtc->cursor); if ((unsigned long )crtc->cursor != (unsigned long )((struct drm_plane *)0)) { ret = drm_mode_cursor_universal(crtc, req, file_priv); goto out; } else { } if ((int )req->flags & 1) { if ((unsigned long )(crtc->funcs)->cursor_set == (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_file * , uint32_t , uint32_t , uint32_t ))0) && (unsigned long )(crtc->funcs)->cursor_set2 == (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_file * , uint32_t , uint32_t , uint32_t , int32_t , int32_t ))0)) { ret = -6; goto out; } else { } if ((unsigned long )(crtc->funcs)->cursor_set2 != (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_file * , uint32_t , uint32_t , uint32_t , int32_t , int32_t ))0)) { ret = (*((crtc->funcs)->cursor_set2))(crtc, file_priv, req->handle, req->width, req->height, req->hot_x, req->hot_y); } else { ret = (*((crtc->funcs)->cursor_set))(crtc, file_priv, req->handle, req->width, req->height); } } else { } if ((req->flags & 2U) != 0U) { if ((unsigned long )(crtc->funcs)->cursor_move != (unsigned long )((int (*/* const */)(struct drm_crtc * , int , int ))0)) { ret = (*((crtc->funcs)->cursor_move))(crtc, req->x, req->y); } else { ret = -14; goto out; } } else { } out: drm_modeset_unlock_crtc(crtc); return (ret); } } int drm_mode_cursor_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_cursor *req ; struct drm_mode_cursor2 new_req ; int tmp ; { req = (struct drm_mode_cursor *)data; memcpy((void *)(& new_req), (void const *)req, 28UL); new_req.hot_y = 0; new_req.hot_x = new_req.hot_y; tmp = drm_mode_cursor_common(dev, & new_req, file_priv); return (tmp); } } int drm_mode_cursor2_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_cursor2 *req ; int tmp ; { req = (struct drm_mode_cursor2 *)data; tmp = drm_mode_cursor_common(dev, req, file_priv); return (tmp); } } uint32_t drm_mode_legacy_fb_format(uint32_t bpp , uint32_t depth ) { uint32_t fmt ; { switch (bpp) { case 8U: fmt = 538982467U; goto ldv_40370; case 16U: ; if (depth == 15U) { fmt = 892424792U; } else { fmt = 909199186U; } goto ldv_40370; case 24U: fmt = 875710290U; goto ldv_40370; case 32U: ; if (depth == 24U) { fmt = 875713112U; } else if (depth == 30U) { fmt = 808669784U; } else { fmt = 875713089U; } goto ldv_40370; default: drm_err("bad bpp, assuming x8r8g8b8 pixel format\n"); fmt = 875713112U; goto ldv_40370; } ldv_40370: ; return (fmt); } } static char const __kstrtab_drm_mode_legacy_fb_format[26U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'f', 'b', '_', 'f', 'o', 'r', 'm', 'a', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_legacy_fb_format ; struct kernel_symbol const __ksymtab_drm_mode_legacy_fb_format = {(unsigned long )(& drm_mode_legacy_fb_format), (char const *)(& __kstrtab_drm_mode_legacy_fb_format)}; int drm_mode_addfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_fb_cmd *or ; struct drm_mode_fb_cmd2 r ; int ret ; { or = (struct drm_mode_fb_cmd *)data; r.fb_id = 0U; r.width = 0U; r.height = 0U; r.pixel_format = 0U; r.flags = 0U; r.handles[0] = 0U; r.handles[1] = 0U; r.handles[2] = 0U; r.handles[3] = 0U; r.pitches[0] = 0U; r.pitches[1] = 0U; r.pitches[2] = 0U; r.pitches[3] = 0U; r.offsets[0] = 0U; r.offsets[1] = 0U; r.offsets[2] = 0U; r.offsets[3] = 0U; r.modifier[0] = 0ULL; r.modifier[1] = 0ULL; r.modifier[2] = 0ULL; r.modifier[3] = 0ULL; r.fb_id = or->fb_id; r.width = or->width; r.height = or->height; r.pitches[0] = or->pitch; r.pixel_format = drm_mode_legacy_fb_format(or->bpp, or->depth); r.handles[0] = or->handle; ret = drm_mode_addfb2(dev, (void *)(& r), file_priv); if (ret != 0) { return (ret); } else { } or->fb_id = r.fb_id; return (0); } } static int format_check(struct drm_mode_fb_cmd2 const *r ) { uint32_t format ; char const *tmp ; long tmp___0 ; { format = (unsigned int )r->pixel_format & 2147483647U; switch (format) { case 538982467U: ; case 943867730U: ; case 944916290U: ; case 842093144U: ; case 842089048U: ; case 842094674U: ; case 842094658U: ; case 842093121U: ; case 842089025U: ; case 842088786U: ; case 842088770U: ; case 892424792U: ; case 892420696U: ; case 892426322U: ; case 892426306U: ; case 892424769U: ; case 892420673U: ; case 892420434U: ; case 892420418U: ; case 909199186U: ; case 909199170U: ; case 875710290U: ; case 875710274U: ; case 875713112U: ; case 875709016U: ; case 875714642U: ; case 875714626U: ; case 875713089U: ; case 875708993U: ; case 875708754U: ; case 875708738U: ; case 808669784U: ; case 808665688U: ; case 808671314U: ; case 808671298U: ; case 808669761U: ; case 808665665U: ; case 808665426U: ; case 808665410U: ; case 1448695129U: ; case 1431918169U: ; case 1498831189U: ; case 1498765654U: ; case 1448433985U: ; case 842094158U: ; case 825382478U: ; case 909203022U: ; case 825644622U: ; case 875714126U: ; case 842290766U: ; case 961959257U: ; case 961893977U: ; case 825316697U: ; case 825316953U: ; case 842093913U: ; case 842094169U: ; case 909202777U: ; case 909203033U: ; case 875713881U: ; case 875714137U: ; return (0); default: tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { tmp = drm_get_format_name(r->pixel_format); drm_ut_debug_printk("format_check", "invalid pixel format %s\n", tmp); } else { } return (-22); } } } static int framebuffer_check(struct drm_mode_fb_cmd2 const *r ) { int ret ; int hsub ; int vsub ; int num_planes ; int i ; char const *tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; unsigned int width ; unsigned int height ; unsigned int cpp ; int tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; long tmp___7 ; long tmp___8 ; long tmp___9 ; long tmp___10 ; long tmp___11 ; { ret = format_check(r); if (ret != 0) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { tmp = drm_get_format_name(r->pixel_format); drm_ut_debug_printk("framebuffer_check", "bad framebuffer format %s\n", tmp); } else { } return (ret); } else { } hsub = drm_format_horz_chroma_subsampling(r->pixel_format); vsub = drm_format_vert_chroma_subsampling(r->pixel_format); num_planes = drm_format_num_planes(r->pixel_format); if ((unsigned int )r->width == 0U || (unsigned int )r->width % (unsigned int )hsub != 0U) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("framebuffer_check", "bad framebuffer width %u\n", r->width); } else { } return (-22); } else { } if ((unsigned int )r->height == 0U || (unsigned int )r->height % (unsigned int )vsub != 0U) { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("framebuffer_check", "bad framebuffer height %u\n", r->height); } else { } return (-22); } else { } i = 0; goto ldv_40473; ldv_40472: width = (unsigned int )r->width / (i != 0 ? (unsigned int )hsub : 1U); height = (unsigned int )r->height / (i != 0 ? (unsigned int )vsub : 1U); tmp___3 = drm_format_plane_cpp(r->pixel_format, i); cpp = (unsigned int )tmp___3; if (r->handles[i] == 0U) { tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("framebuffer_check", "no buffer object handle for plane %d\n", i); } else { } return (-22); } else { } if ((unsigned long long )width * (unsigned long long )cpp > 4294967295ULL) { return (-34); } else { } if ((unsigned long long )height * (unsigned long long )r->pitches[i] + (unsigned long long )r->offsets[i] > 4294967295ULL) { return (-34); } else { } if (r->pitches[i] < width * cpp) { tmp___5 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("framebuffer_check", "bad pitch %u for plane %d\n", r->pitches[i], i); } else { } return (-22); } else { } if (r->modifier[i] != 0ULL && ((unsigned int )r->flags & 2U) == 0U) { tmp___6 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___6 != 0L) { drm_ut_debug_printk("framebuffer_check", "bad fb modifier %llu for plane %d\n", r->modifier[i], i); } else { } return (-22); } else { } switch (r->modifier[i]) { case 1ULL: ; if ((((unsigned int )r->pixel_format != 842094158U || (width & 127U) != 0U) || (height & 31U) != 0U) || (r->pitches[i] & 127U) != 0U) { tmp___7 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("framebuffer_check", "bad modifier data for plane %d\n", i); } else { } return (-22); } else { } goto ldv_40470; default: ; goto ldv_40470; } ldv_40470: i = i + 1; ldv_40473: ; if (i < num_planes) { goto ldv_40472; } else { } i = num_planes; goto ldv_40477; ldv_40476: ; if (r->modifier[i] != 0ULL) { tmp___8 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("framebuffer_check", "non-zero modifier for unused plane %d\n", i); } else { } return (-22); } else { } if (((unsigned int )r->flags & 2U) == 0U) { goto ldv_40475; } else { } if (r->handles[i] != 0U) { tmp___9 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___9 != 0L) { drm_ut_debug_printk("framebuffer_check", "buffer object handle for unused plane %d\n", i); } else { } return (-22); } else { } if (r->pitches[i] != 0U) { tmp___10 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("framebuffer_check", "non-zero pitch for unused plane %d\n", i); } else { } return (-22); } else { } if (r->offsets[i] != 0U) { tmp___11 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___11 != 0L) { drm_ut_debug_printk("framebuffer_check", "non-zero offset for unused plane %d\n", i); } else { } return (-22); } else { } ldv_40475: i = i + 1; ldv_40477: ; if (i <= 3) { goto ldv_40476; } else { } return (0); } } static struct drm_framebuffer *internal_framebuffer_create(struct drm_device *dev , struct drm_mode_fb_cmd2 *r , struct drm_file *file_priv ) { struct drm_mode_config *config ; struct drm_framebuffer *fb ; int ret ; long tmp ; void *tmp___0 ; long tmp___1 ; void *tmp___2 ; long tmp___3 ; void *tmp___4 ; long tmp___5 ; void *tmp___6 ; void *tmp___7 ; long tmp___8 ; bool tmp___9 ; { config = & dev->mode_config; if ((r->flags & 4294967292U) != 0U) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("internal_framebuffer_create", "bad framebuffer flags 0x%08x\n", r->flags); } else { } tmp___0 = ERR_PTR(-22L); return ((struct drm_framebuffer *)tmp___0); } else { } if ((__u32 )config->min_width > r->width || r->width > (__u32 )config->max_width) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("internal_framebuffer_create", "bad framebuffer width %d, should be >= %d && <= %d\n", r->width, config->min_width, config->max_width); } else { } tmp___2 = ERR_PTR(-22L); return ((struct drm_framebuffer *)tmp___2); } else { } if ((__u32 )config->min_height > r->height || r->height > (__u32 )config->max_height) { tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("internal_framebuffer_create", "bad framebuffer height %d, should be >= %d && <= %d\n", r->height, config->min_height, config->max_height); } else { } tmp___4 = ERR_PTR(-22L); return ((struct drm_framebuffer *)tmp___4); } else { } if ((r->flags & 2U) != 0U && ! dev->mode_config.allow_fb_modifiers) { tmp___5 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("internal_framebuffer_create", "driver does not support fb modifiers\n"); } else { } tmp___6 = ERR_PTR(-22L); return ((struct drm_framebuffer *)tmp___6); } else { } ret = framebuffer_check((struct drm_mode_fb_cmd2 const *)r); if (ret != 0) { tmp___7 = ERR_PTR((long )ret); return ((struct drm_framebuffer *)tmp___7); } else { } fb = (*((dev->mode_config.funcs)->fb_create))(dev, file_priv, r); tmp___9 = IS_ERR((void const *)fb); if ((int )tmp___9) { tmp___8 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("internal_framebuffer_create", "could not create framebuffer\n"); } else { } return (fb); } else { } return (fb); } } int drm_mode_addfb2(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_fb_cmd2 *r ; struct drm_framebuffer *fb ; int tmp ; long tmp___0 ; bool tmp___1 ; long tmp___2 ; { r = (struct drm_mode_fb_cmd2 *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } fb = internal_framebuffer_create(dev, r, file_priv); tmp___1 = IS_ERR((void const *)fb); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)fb); return ((int )tmp___0); } else { } tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_mode_addfb2", "[FB:%d]\n", fb->base.id); } else { } mutex_lock_nested(& file_priv->fbs_lock, 0U); r->fb_id = fb->base.id; list_add(& fb->filp_head, & file_priv->fbs); mutex_unlock(& file_priv->fbs_lock); return (0); } } int drm_mode_rmfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_framebuffer *fb ; struct drm_framebuffer *fbl ; uint32_t *id ; int found ; int tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { fb = (struct drm_framebuffer *)0; fbl = (struct drm_framebuffer *)0; id = (uint32_t *)data; found = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } mutex_lock_nested(& file_priv->fbs_lock, 0U); mutex_lock_nested(& dev->mode_config.fb_lock, 0U); fb = __drm_framebuffer_lookup(dev, *id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { goto fail_lookup; } else { } __mptr = (struct list_head const *)file_priv->fbs.next; fbl = (struct drm_framebuffer *)__mptr + 0xffffffffffffff70UL; goto ldv_40511; ldv_40510: ; if ((unsigned long )fb == (unsigned long )fbl) { found = 1; } else { } __mptr___0 = (struct list_head const *)fbl->filp_head.next; fbl = (struct drm_framebuffer *)__mptr___0 + 0xffffffffffffff70UL; ldv_40511: ; if ((unsigned long )(& fbl->filp_head) != (unsigned long )(& file_priv->fbs)) { goto ldv_40510; } else { } if (found == 0) { goto fail_lookup; } else { } __drm_framebuffer_unregister(dev, fb); list_del_init(& fb->filp_head); mutex_unlock(& dev->mode_config.fb_lock); mutex_unlock(& file_priv->fbs_lock); drm_framebuffer_remove(fb); return (0); fail_lookup: mutex_unlock(& dev->mode_config.fb_lock); mutex_unlock(& file_priv->fbs_lock); return (-2); } } int drm_mode_getfb(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_fb_cmd *r ; struct drm_framebuffer *fb ; int ret ; int tmp ; bool tmp___0 ; bool tmp___1 ; { r = (struct drm_mode_fb_cmd *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } fb = drm_framebuffer_lookup(dev, r->fb_id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { return (-2); } else { } r->height = fb->height; r->width = fb->width; r->depth = fb->depth; r->bpp = (__u32 )fb->bits_per_pixel; r->pitch = fb->pitches[0]; if ((unsigned long )(fb->funcs)->create_handle != (unsigned long )((int (*/* const */)(struct drm_framebuffer * , struct drm_file * , unsigned int * ))0)) { if ((unsigned int )*((unsigned char *)file_priv + 0UL) != 0U) { ret = (*((fb->funcs)->create_handle))(fb, file_priv, & r->handle); } else { tmp___0 = capable(21); if ((int )tmp___0) { ret = (*((fb->funcs)->create_handle))(fb, file_priv, & r->handle); } else { tmp___1 = drm_is_control_client((struct drm_file const *)file_priv); if ((int )tmp___1) { ret = (*((fb->funcs)->create_handle))(fb, file_priv, & r->handle); } else { r->handle = 0U; ret = 0; } } } } else { ret = -19; } drm_framebuffer_unreference(fb); return (ret); } } int drm_mode_dirtyfb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_clip_rect *clips_ptr ; struct drm_clip_rect *clips ; struct drm_mode_fb_dirty_cmd *r ; struct drm_framebuffer *fb ; unsigned int flags ; int num_clips ; int ret ; int tmp ; void *tmp___0 ; unsigned long tmp___1 ; { clips = (struct drm_clip_rect *)0; r = (struct drm_mode_fb_dirty_cmd *)data; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } fb = drm_framebuffer_lookup(dev, r->fb_id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { return (-2); } else { } num_clips = (int )r->num_clips; clips_ptr = (struct drm_clip_rect *)r->clips_ptr; if ((num_clips == 0) ^ ((unsigned long )clips_ptr == (unsigned long )((struct drm_clip_rect *)0))) { ret = -22; goto out_err1; } else { } flags = r->flags & 3U; if ((int )flags & 1 && num_clips & 1) { ret = -22; goto out_err1; } else { } if (num_clips != 0 && (unsigned long )clips_ptr != (unsigned long )((struct drm_clip_rect *)0)) { if (num_clips < 0 || num_clips > 256) { ret = -22; goto out_err1; } else { } tmp___0 = kcalloc((size_t )num_clips, 8UL, 208U); clips = (struct drm_clip_rect *)tmp___0; if ((unsigned long )clips == (unsigned long )((struct drm_clip_rect *)0)) { ret = -12; goto out_err1; } else { } tmp___1 = copy_from_user((void *)clips, (void const *)clips_ptr, (unsigned long )num_clips * 8UL); ret = (int )tmp___1; if (ret != 0) { ret = -14; goto out_err2; } else { } } else { } if ((unsigned long )(fb->funcs)->dirty != (unsigned long )((int (*/* const */)(struct drm_framebuffer * , struct drm_file * , unsigned int , unsigned int , struct drm_clip_rect * , unsigned int ))0)) { ret = (*((fb->funcs)->dirty))(fb, file_priv, flags, r->color, clips, (unsigned int )num_clips); } else { ret = -38; } out_err2: kfree((void const *)clips); out_err1: drm_framebuffer_unreference(fb); return (ret); } } void drm_fb_release(struct drm_file *priv ) { struct drm_device *dev ; struct drm_framebuffer *fb ; struct drm_framebuffer *tfb ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { dev = (priv->minor)->dev; __mptr = (struct list_head const *)priv->fbs.next; fb = (struct drm_framebuffer *)__mptr + 0xffffffffffffff70UL; __mptr___0 = (struct list_head const *)fb->filp_head.next; tfb = (struct drm_framebuffer *)__mptr___0 + 0xffffffffffffff70UL; goto ldv_40548; ldv_40547: mutex_lock_nested(& dev->mode_config.fb_lock, 0U); __drm_framebuffer_unregister(dev, fb); mutex_unlock(& dev->mode_config.fb_lock); list_del_init(& fb->filp_head); drm_framebuffer_remove(fb); fb = tfb; __mptr___1 = (struct list_head const *)tfb->filp_head.next; tfb = (struct drm_framebuffer *)__mptr___1 + 0xffffffffffffff70UL; ldv_40548: ; if ((unsigned long )(& fb->filp_head) != (unsigned long )(& priv->fbs)) { goto ldv_40547; } else { } return; } } struct drm_property *drm_property_create(struct drm_device *dev , int flags , char const *name , int num_values ) { struct drm_property *property ; int ret ; void *tmp ; void *tmp___0 ; int __ret_warn_on ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; { property = (struct drm_property *)0; tmp = kzalloc(104UL, 208U); property = (struct drm_property *)tmp; if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { return ((struct drm_property *)0); } else { } property->dev = dev; if (num_values != 0) { tmp___0 = kcalloc((size_t )num_values, 8UL, 208U); property->values = (uint64_t *)tmp___0; if ((unsigned long )property->values == (unsigned long )((uint64_t *)0ULL)) { goto fail; } else { } } else { } ret = drm_mode_object_get(dev, & property->base, 2964369584U); if (ret != 0) { goto fail; } else { } property->flags = (uint32_t )flags; property->num_values = (uint32_t )num_values; INIT_LIST_HEAD(& property->enum_list); if ((unsigned long )name != (unsigned long )((char const *)0)) { strncpy((char *)(& property->name), name, 32UL); property->name[31] = 0; } else { } list_add_tail(& property->head, & dev->mode_config.property_list); tmp___1 = drm_property_type_valid(property); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } __ret_warn_on = tmp___2; tmp___3 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 3679); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return (property); fail: kfree((void const *)property->values); kfree((void const *)property); return ((struct drm_property *)0); } } static char const __kstrtab_drm_property_create[20U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create ; struct kernel_symbol const __ksymtab_drm_property_create = {(unsigned long )(& drm_property_create), (char const *)(& __kstrtab_drm_property_create)}; struct drm_property *drm_property_create_enum(struct drm_device *dev , int flags , char const *name , struct drm_prop_enum_list const *props , int num_values ) { struct drm_property *property ; int i ; int ret ; { flags = flags | 8; property = drm_property_create(dev, flags, name, num_values); if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { return ((struct drm_property *)0); } else { } i = 0; goto ldv_40582; ldv_40581: ret = drm_property_add_enum(property, i, (uint64_t )(props + (unsigned long )i)->type, (char const *)(props + (unsigned long )i)->name); if (ret != 0) { drm_property_destroy(dev, property); return ((struct drm_property *)0); } else { } i = i + 1; ldv_40582: ; if (i < num_values) { goto ldv_40581; } else { } return (property); } } static char const __kstrtab_drm_property_create_enum[25U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'n', 'u', 'm', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_enum ; struct kernel_symbol const __ksymtab_drm_property_create_enum = {(unsigned long )(& drm_property_create_enum), (char const *)(& __kstrtab_drm_property_create_enum)}; struct drm_property *drm_property_create_bitmask(struct drm_device *dev , int flags , char const *name , struct drm_prop_enum_list const *props , int num_props , uint64_t supported_bits ) { struct drm_property *property ; int i ; int ret ; int index ; int num_values ; unsigned long tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; int tmp___2 ; { index = 0; tmp = __arch_hweight64(supported_bits); num_values = (int )tmp; flags = flags | 32; property = drm_property_create(dev, flags, name, num_values); if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { return ((struct drm_property *)0); } else { } i = 0; goto ldv_40612; ldv_40611: ; if (((supported_bits >> (props + (unsigned long )i)->type) & 1ULL) == 0ULL) { goto ldv_40608; } else { } __ret_warn_on = index >= num_values; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 3773); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { drm_property_destroy(dev, property); return ((struct drm_property *)0); } else { } tmp___2 = index; index = index + 1; ret = drm_property_add_enum(property, tmp___2, (uint64_t )(props + (unsigned long )i)->type, (char const *)(props + (unsigned long )i)->name); if (ret != 0) { drm_property_destroy(dev, property); return ((struct drm_property *)0); } else { } ldv_40608: i = i + 1; ldv_40612: ; if (i < num_props) { goto ldv_40611; } else { } return (property); } } static char const __kstrtab_drm_property_create_bitmask[28U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'b', 'i', 't', 'm', 'a', 's', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_bitmask ; struct kernel_symbol const __ksymtab_drm_property_create_bitmask = {(unsigned long )(& drm_property_create_bitmask), (char const *)(& __kstrtab_drm_property_create_bitmask)}; static struct drm_property *property_create_range(struct drm_device *dev , int flags , char const *name , uint64_t min , uint64_t max ) { struct drm_property *property ; { property = drm_property_create(dev, flags, name, 2); if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { return ((struct drm_property *)0); } else { } *(property->values) = min; *(property->values + 1UL) = max; return (property); } } struct drm_property *drm_property_create_range(struct drm_device *dev , int flags , char const *name , uint64_t min , uint64_t max ) { struct drm_property *tmp ; { tmp = property_create_range(dev, flags | 2, name, min, max); return (tmp); } } static char const __kstrtab_drm_property_create_range[26U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'r', 'a', 'n', 'g', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_range ; struct kernel_symbol const __ksymtab_drm_property_create_range = {(unsigned long )(& drm_property_create_range), (char const *)(& __kstrtab_drm_property_create_range)}; struct drm_property *drm_property_create_signed_range(struct drm_device *dev , int flags , char const *name , int64_t min , int64_t max ) { uint64_t tmp ; uint64_t tmp___0 ; struct drm_property *tmp___1 ; { tmp = I642U64(max); tmp___0 = I642U64(min); tmp___1 = property_create_range(dev, flags | 128, name, tmp___0, tmp); return (tmp___1); } } static char const __kstrtab_drm_property_create_signed_range[33U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'i', 'g', 'n', 'e', 'd', '_', 'r', 'a', 'n', 'g', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_signed_range ; struct kernel_symbol const __ksymtab_drm_property_create_signed_range = {(unsigned long )(& drm_property_create_signed_range), (char const *)(& __kstrtab_drm_property_create_signed_range)}; struct drm_property *drm_property_create_object(struct drm_device *dev , int flags , char const *name , uint32_t type ) { struct drm_property *property ; int __ret_warn_on ; long tmp ; long tmp___0 ; { flags = flags | 64; __ret_warn_on = flags >= 0; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 3885); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return ((struct drm_property *)0); } else { } property = drm_property_create(dev, flags, name, 1); if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { return ((struct drm_property *)0); } else { } *(property->values) = (uint64_t )type; return (property); } } static char const __kstrtab_drm_property_create_object[27U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'b', 'j', 'e', 'c', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_object ; struct kernel_symbol const __ksymtab_drm_property_create_object = {(unsigned long )(& drm_property_create_object), (char const *)(& __kstrtab_drm_property_create_object)}; struct drm_property *drm_property_create_bool(struct drm_device *dev , int flags , char const *name ) { struct drm_property *tmp ; { tmp = drm_property_create_range(dev, flags, name, 0ULL, 1ULL); return (tmp); } } static char const __kstrtab_drm_property_create_bool[25U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'b', 'o', 'o', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_bool ; struct kernel_symbol const __ksymtab_drm_property_create_bool = {(unsigned long )(& drm_property_create_bool), (char const *)(& __kstrtab_drm_property_create_bool)}; int drm_property_add_enum(struct drm_property *property , int index , uint64_t value , char const *name ) { struct drm_property_enum *prop_enum ; bool tmp ; int tmp___0 ; bool tmp___1 ; int tmp___2 ; bool tmp___3 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; int tmp___4 ; void *tmp___5 ; { tmp = drm_property_type_is(property, 8U); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { tmp___1 = drm_property_type_is(property, 32U); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } if (tmp___2) { return (-22); } else { } } else { } tmp___3 = drm_property_type_is(property, 32U); if ((int )tmp___3 && value > 63ULL) { return (-22); } else { } tmp___4 = list_empty((struct list_head const *)(& property->enum_list)); if (tmp___4 == 0) { __mptr = (struct list_head const *)property->enum_list.next; prop_enum = (struct drm_property_enum *)__mptr + 0xfffffffffffffff8UL; goto ldv_40715; ldv_40714: ; if (prop_enum->value == value) { strncpy((char *)(& prop_enum->name), name, 32UL); prop_enum->name[31] = 0; return (0); } else { } __mptr___0 = (struct list_head const *)prop_enum->head.next; prop_enum = (struct drm_property_enum *)__mptr___0 + 0xfffffffffffffff8UL; ldv_40715: ; if ((unsigned long )(& prop_enum->head) != (unsigned long )(& property->enum_list)) { goto ldv_40714; } else { } } else { } tmp___5 = kzalloc(56UL, 208U); prop_enum = (struct drm_property_enum *)tmp___5; if ((unsigned long )prop_enum == (unsigned long )((struct drm_property_enum *)0)) { return (-12); } else { } strncpy((char *)(& prop_enum->name), name, 32UL); prop_enum->name[31] = 0; prop_enum->value = value; *(property->values + (unsigned long )index) = value; list_add_tail(& prop_enum->head, & property->enum_list); return (0); } } static char const __kstrtab_drm_property_add_enum[22U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'a', 'd', 'd', '_', 'e', 'n', 'u', 'm', '\000'}; struct kernel_symbol const __ksymtab_drm_property_add_enum ; struct kernel_symbol const __ksymtab_drm_property_add_enum = {(unsigned long )(& drm_property_add_enum), (char const *)(& __kstrtab_drm_property_add_enum)}; void drm_property_destroy(struct drm_device *dev , struct drm_property *property ) { struct drm_property_enum *prop_enum ; struct drm_property_enum *pt ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { __mptr = (struct list_head const *)property->enum_list.next; prop_enum = (struct drm_property_enum *)__mptr + 0xfffffffffffffff8UL; __mptr___0 = (struct list_head const *)prop_enum->head.next; pt = (struct drm_property_enum *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_40740; ldv_40739: list_del(& prop_enum->head); kfree((void const *)prop_enum); prop_enum = pt; __mptr___1 = (struct list_head const *)pt->head.next; pt = (struct drm_property_enum *)__mptr___1 + 0xfffffffffffffff8UL; ldv_40740: ; if ((unsigned long )(& prop_enum->head) != (unsigned long )(& property->enum_list)) { goto ldv_40739; } else { } if (property->num_values != 0U) { kfree((void const *)property->values); } else { } drm_mode_object_put(dev, & property->base); list_del(& property->head); kfree((void const *)property); return; } } static char const __kstrtab_drm_property_destroy[21U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_property_destroy ; struct kernel_symbol const __ksymtab_drm_property_destroy = {(unsigned long )(& drm_property_destroy), (char const *)(& __kstrtab_drm_property_destroy)}; void drm_object_attach_property(struct drm_mode_object *obj , struct drm_property *property , uint64_t init_val ) { int count ; int __ret_warn_on ; long tmp ; { count = (obj->properties)->count; if (count == 24) { __ret_warn_on = 1; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 4021, "Failed to attach object property (type: 0x%x). Please increase DRM_OBJECT_MAX_PROPERTY by 1 for each time you see this message on the same object type.\n", obj->type); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } else { } (obj->properties)->properties[count] = property; (obj->properties)->values[count] = init_val; (obj->properties)->count = (obj->properties)->count + 1; if ((int )property->flags < 0) { (obj->properties)->atomic_count = (obj->properties)->atomic_count + 1; } else { } return; } } static char const __kstrtab_drm_object_attach_property[27U] = { 'd', 'r', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'a', 't', 't', 'a', 'c', 'h', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_object_attach_property ; struct kernel_symbol const __ksymtab_drm_object_attach_property = {(unsigned long )(& drm_object_attach_property), (char const *)(& __kstrtab_drm_object_attach_property)}; int drm_object_property_set_value(struct drm_mode_object *obj , struct drm_property *property , uint64_t val ) { int i ; { i = 0; goto ldv_40774; ldv_40773: ; if ((unsigned long )(obj->properties)->properties[i] == (unsigned long )property) { (obj->properties)->values[i] = val; return (0); } else { } i = i + 1; ldv_40774: ; if ((obj->properties)->count > i) { goto ldv_40773; } else { } return (-22); } } static char const __kstrtab_drm_object_property_set_value[30U] = { 'd', 'r', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 's', 'e', 't', '_', 'v', 'a', 'l', 'u', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_object_property_set_value ; struct kernel_symbol const __ksymtab_drm_object_property_set_value = {(unsigned long )(& drm_object_property_set_value), (char const *)(& __kstrtab_drm_object_property_set_value)}; int drm_object_property_get_value(struct drm_mode_object *obj , struct drm_property *property , uint64_t *val ) { int i ; int tmp ; int tmp___0 ; { tmp___0 = drm_core_check_feature(property->dev, 65536); if (tmp___0 != 0 && (property->flags & 4U) == 0U) { tmp = drm_atomic_get_property(obj, property, val); return (tmp); } else { } i = 0; goto ldv_40792; ldv_40791: ; if ((unsigned long )(obj->properties)->properties[i] == (unsigned long )property) { *val = (obj->properties)->values[i]; return (0); } else { } i = i + 1; ldv_40792: ; if ((obj->properties)->count > i) { goto ldv_40791; } else { } return (-22); } } static char const __kstrtab_drm_object_property_get_value[30U] = { 'd', 'r', 'm', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'g', 'e', 't', '_', 'v', 'a', 'l', 'u', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_object_property_get_value ; struct kernel_symbol const __ksymtab_drm_object_property_get_value = {(unsigned long )(& drm_object_property_get_value), (char const *)(& __kstrtab_drm_object_property_get_value)}; int drm_mode_getproperty_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_property *out_resp ; struct drm_property *property ; int enum_count ; int value_count ; int ret ; int i ; int copied ; struct drm_property_enum *prop_enum ; struct drm_mode_property_enum *enum_ptr ; uint64_t *values_ptr ; int tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; bool tmp___0 ; bool tmp___1 ; unsigned long tmp___2 ; struct list_head const *__mptr___1 ; unsigned long tmp___3 ; unsigned long tmp___4 ; struct list_head const *__mptr___2 ; bool tmp___5 ; bool tmp___6 ; bool tmp___7 ; { out_resp = (struct drm_mode_get_property *)data; enum_count = 0; value_count = 0; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); property = drm_property_find(dev, out_resp->prop_id); if ((unsigned long )property == (unsigned long )((struct drm_property *)0)) { ret = -2; goto done; } else { } tmp___0 = drm_property_type_is(property, 8U); if ((int )tmp___0) { goto _L; } else { tmp___1 = drm_property_type_is(property, 32U); if ((int )tmp___1) { _L: /* CIL Label */ __mptr = (struct list_head const *)property->enum_list.next; prop_enum = (struct drm_property_enum *)__mptr + 0xfffffffffffffff8UL; goto ldv_40824; ldv_40823: enum_count = enum_count + 1; __mptr___0 = (struct list_head const *)prop_enum->head.next; prop_enum = (struct drm_property_enum *)__mptr___0 + 0xfffffffffffffff8UL; ldv_40824: ; if ((unsigned long )(& prop_enum->head) != (unsigned long )(& property->enum_list)) { goto ldv_40823; } else { } } else { } } value_count = (int )property->num_values; strncpy((char *)(& out_resp->name), (char const *)(& property->name), 32UL); out_resp->name[31] = 0; out_resp->flags = property->flags; if (out_resp->count_values >= (__u32 )value_count && value_count != 0) { values_ptr = (uint64_t *)out_resp->values_ptr; i = 0; goto ldv_40827; ldv_40826: tmp___2 = copy_to_user((void *)values_ptr + (unsigned long )i, (void const *)property->values + (unsigned long )i, 8UL); if (tmp___2 != 0UL) { ret = -14; goto done; } else { } i = i + 1; ldv_40827: ; if (i < value_count) { goto ldv_40826; } else { } } else { } out_resp->count_values = (__u32 )value_count; tmp___5 = drm_property_type_is(property, 8U); if ((int )tmp___5) { goto _L___0; } else { tmp___6 = drm_property_type_is(property, 32U); if ((int )tmp___6) { _L___0: /* CIL Label */ if (out_resp->count_enum_blobs >= (__u32 )enum_count && enum_count != 0) { copied = 0; enum_ptr = (struct drm_mode_property_enum *)out_resp->enum_blob_ptr; __mptr___1 = (struct list_head const *)property->enum_list.next; prop_enum = (struct drm_property_enum *)__mptr___1 + 0xfffffffffffffff8UL; goto ldv_40834; ldv_40833: tmp___3 = copy_to_user((void *)(& (enum_ptr + (unsigned long )copied)->value), (void const *)(& prop_enum->value), 8UL); if (tmp___3 != 0UL) { ret = -14; goto done; } else { } tmp___4 = copy_to_user((void *)(& (enum_ptr + (unsigned long )copied)->name), (void const *)(& prop_enum->name), 32UL); if (tmp___4 != 0UL) { ret = -14; goto done; } else { } copied = copied + 1; __mptr___2 = (struct list_head const *)prop_enum->head.next; prop_enum = (struct drm_property_enum *)__mptr___2 + 0xfffffffffffffff8UL; ldv_40834: ; if ((unsigned long )(& prop_enum->head) != (unsigned long )(& property->enum_list)) { goto ldv_40833; } else { } } else { } out_resp->count_enum_blobs = (__u32 )enum_count; } else { } } tmp___7 = drm_property_type_is(property, 16U); if ((int )tmp___7) { out_resp->count_enum_blobs = 0U; } else { } done: drm_modeset_unlock_all(dev); return (ret); } } struct drm_property_blob *drm_property_create_blob(struct drm_device *dev , size_t length , void const *data ) { struct drm_property_blob *blob ; int ret ; void *tmp ; void *tmp___0 ; void *tmp___1 ; void *tmp___2 ; { if (length == 0UL) { tmp = ERR_PTR(-22L); return ((struct drm_property_blob *)tmp); } else { } tmp___0 = kzalloc(length + 72UL, 208U); blob = (struct drm_property_blob *)tmp___0; if ((unsigned long )blob == (unsigned long )((struct drm_property_blob *)0)) { tmp___1 = ERR_PTR(-12L); return ((struct drm_property_blob *)tmp___1); } else { } INIT_LIST_HEAD(& blob->head_file); blob->length = length; blob->dev = dev; if ((unsigned long )data != (unsigned long )((void const *)0)) { memcpy((void *)(& blob->data), data, length); } else { } mutex_lock_nested(& dev->mode_config.blob_lock, 0U); ret = drm_mode_object_get(dev, & blob->base, 3149642683U); if (ret != 0) { kfree((void const *)blob); mutex_unlock(& dev->mode_config.blob_lock); tmp___2 = ERR_PTR(-22L); return ((struct drm_property_blob *)tmp___2); } else { } kref_init(& blob->refcount); list_add_tail(& blob->head_global, & dev->mode_config.property_blob_list); mutex_unlock(& dev->mode_config.blob_lock); return (blob); } } static char const __kstrtab_drm_property_create_blob[25U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'b', 'l', 'o', 'b', '\000'}; struct kernel_symbol const __ksymtab_drm_property_create_blob ; struct kernel_symbol const __ksymtab_drm_property_create_blob = {(unsigned long )(& drm_property_create_blob), (char const *)(& __kstrtab_drm_property_create_blob)}; static void drm_property_free_blob(struct kref *kref ) { struct drm_property_blob *blob ; struct kref const *__mptr ; int __ret_warn_on ; int tmp ; long tmp___0 ; { __mptr = (struct kref const *)kref; blob = (struct drm_property_blob *)__mptr + 0xffffffffffffffe8UL; tmp = mutex_is_locked(& (blob->dev)->mode_config.blob_lock); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 4269); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); list_del(& blob->head_global); list_del(& blob->head_file); drm_mode_object_put(blob->dev, & blob->base); kfree((void const *)blob); return; } } void drm_property_unreference_blob(struct drm_property_blob *blob ) { struct drm_device *dev ; int tmp ; long tmp___0 ; int tmp___1 ; { if ((unsigned long )blob == (unsigned long )((struct drm_property_blob *)0)) { return; } else { } dev = blob->dev; tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { tmp = atomic_read((atomic_t const *)(& blob->refcount.refcount)); drm_ut_debug_printk("drm_property_unreference_blob", "%p: blob ID: %d (%d)\n", blob, blob->base.id, tmp); } else { } tmp___1 = kref_put_mutex___0(& blob->refcount, & drm_property_free_blob, & dev->mode_config.blob_lock); if (tmp___1 != 0) { mutex_unlock(& dev->mode_config.blob_lock); } else { lock_acquire(& dev->mode_config.blob_lock.dep_map, 0U, 0, 0, 1, (struct lockdep_map *)0, 0UL); lock_release(& dev->mode_config.blob_lock.dep_map, 0, 0UL); } return; } } static char const __kstrtab_drm_property_unreference_blob[30U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'u', 'n', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '_', 'b', 'l', 'o', 'b', '\000'}; struct kernel_symbol const __ksymtab_drm_property_unreference_blob ; struct kernel_symbol const __ksymtab_drm_property_unreference_blob = {(unsigned long )(& drm_property_unreference_blob), (char const *)(& __kstrtab_drm_property_unreference_blob)}; static void drm_property_unreference_blob_locked(struct drm_property_blob *blob ) { int tmp ; long tmp___0 ; { if ((unsigned long )blob == (unsigned long )((struct drm_property_blob *)0)) { return; } else { } tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { tmp = atomic_read((atomic_t const *)(& blob->refcount.refcount)); drm_ut_debug_printk("drm_property_unreference_blob_locked", "%p: blob ID: %d (%d)\n", blob, blob->base.id, tmp); } else { } kref_put___1(& blob->refcount, & drm_property_free_blob); return; } } void drm_property_destroy_user_blobs(struct drm_device *dev , struct drm_file *file_priv ) { struct drm_property_blob *blob ; struct drm_property_blob *bt ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { mutex_lock_nested(& dev->mode_config.blob_lock, 0U); __mptr = (struct list_head const *)file_priv->blobs.next; blob = (struct drm_property_blob *)__mptr + 0xffffffffffffffd0UL; __mptr___0 = (struct list_head const *)blob->head_file.next; bt = (struct drm_property_blob *)__mptr___0 + 0xffffffffffffffd0UL; goto ldv_40892; ldv_40891: list_del_init(& blob->head_file); drm_property_unreference_blob_locked(blob); blob = bt; __mptr___1 = (struct list_head const *)bt->head_file.next; bt = (struct drm_property_blob *)__mptr___1 + 0xffffffffffffffd0UL; ldv_40892: ; if ((unsigned long )(& blob->head_file) != (unsigned long )(& file_priv->blobs)) { goto ldv_40891; } else { } mutex_unlock(& dev->mode_config.blob_lock); return; } } struct drm_property_blob *drm_property_reference_blob(struct drm_property_blob *blob ) { int tmp ; long tmp___0 ; { tmp___0 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___0 != 0L) { tmp = atomic_read((atomic_t const *)(& blob->refcount.refcount)); drm_ut_debug_printk("drm_property_reference_blob", "%p: blob ID: %d (%d)\n", blob, blob->base.id, tmp); } else { } kref_get___1(& blob->refcount); return (blob); } } static char const __kstrtab_drm_property_reference_blob[28U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '_', 'b', 'l', 'o', 'b', '\000'}; struct kernel_symbol const __ksymtab_drm_property_reference_blob ; struct kernel_symbol const __ksymtab_drm_property_reference_blob = {(unsigned long )(& drm_property_reference_blob), (char const *)(& __kstrtab_drm_property_reference_blob)}; static struct drm_property_blob *__drm_property_lookup_blob(struct drm_device *dev , uint32_t id ) { struct drm_mode_object *obj ; struct drm_property_blob *blob ; int __ret_warn_on ; int tmp ; long tmp___0 ; void *tmp___1 ; struct drm_mode_object const *__mptr ; { obj = (struct drm_mode_object *)0; tmp = mutex_is_locked(& dev->mode_config.blob_lock); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 4368); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); tmp___1 = idr_find___3(& dev->mode_config.crtc_idr, (int )id); obj = (struct drm_mode_object *)tmp___1; if (((unsigned long )obj == (unsigned long )((struct drm_mode_object *)0) || obj->type != 3149642683U) || obj->id != id) { blob = (struct drm_property_blob *)0; } else { __mptr = (struct drm_mode_object const *)obj; blob = (struct drm_property_blob *)__mptr; } mutex_unlock(& dev->mode_config.idr_mutex); return (blob); } } struct drm_property_blob *drm_property_lookup_blob(struct drm_device *dev , uint32_t id ) { struct drm_property_blob *blob ; int tmp ; { mutex_lock_nested(& dev->mode_config.blob_lock, 0U); blob = __drm_property_lookup_blob(dev, id); if ((unsigned long )blob != (unsigned long )((struct drm_property_blob *)0)) { tmp = kref_get_unless_zero(& blob->refcount); if (tmp == 0) { blob = (struct drm_property_blob *)0; } else { } } else { } mutex_unlock(& dev->mode_config.blob_lock); return (blob); } } static char const __kstrtab_drm_property_lookup_blob[25U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '_', 'l', 'o', 'o', 'k', 'u', 'p', '_', 'b', 'l', 'o', 'b', '\000'}; struct kernel_symbol const __ksymtab_drm_property_lookup_blob ; struct kernel_symbol const __ksymtab_drm_property_lookup_blob = {(unsigned long )(& drm_property_lookup_blob), (char const *)(& __kstrtab_drm_property_lookup_blob)}; static int drm_property_replace_global_blob(struct drm_device *dev , struct drm_property_blob **replace , size_t length , void const *data , struct drm_mode_object *obj_holds_id , struct drm_property *prop_holds_id ) { struct drm_property_blob *new_blob ; struct drm_property_blob *old_blob ; int ret ; int __ret_warn_on ; long tmp ; long tmp___0 ; bool tmp___1 ; { new_blob = (struct drm_property_blob *)0; old_blob = (struct drm_property_blob *)0; __ret_warn_on = (unsigned long )replace == (unsigned long )((struct drm_property_blob **)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 4448); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); old_blob = *replace; if (length != 0UL && (unsigned long )data != (unsigned long )((void const *)0)) { new_blob = drm_property_create_blob(dev, length, data); tmp___1 = IS_ERR((void const *)new_blob); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)new_blob); return ((int )tmp___0); } else { } } else { } if ((unsigned long )obj_holds_id != (unsigned long )((struct drm_mode_object *)0)) { ret = drm_object_property_set_value(obj_holds_id, prop_holds_id, (unsigned long )new_blob != (unsigned long )((struct drm_property_blob *)0) ? (uint64_t )new_blob->base.id : 0ULL); if (ret != 0) { goto err_created; } else { } } else { } if ((unsigned long )old_blob != (unsigned long )((struct drm_property_blob *)0)) { drm_property_unreference_blob(old_blob); } else { } *replace = new_blob; return (0); err_created: drm_property_unreference_blob(new_blob); return (ret); } } int drm_mode_getblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_get_blob *out_resp ; struct drm_property_blob *blob ; int ret ; void *blob_ptr ; int tmp ; unsigned long tmp___0 ; { out_resp = (struct drm_mode_get_blob *)data; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); mutex_lock_nested(& dev->mode_config.blob_lock, 0U); blob = __drm_property_lookup_blob(dev, out_resp->blob_id); if ((unsigned long )blob == (unsigned long )((struct drm_property_blob *)0)) { ret = -2; goto done; } else { } if ((size_t )out_resp->length == blob->length) { blob_ptr = (void *)out_resp->data; tmp___0 = copy_to_user(blob_ptr, (void const *)(& blob->data), blob->length); if (tmp___0 != 0UL) { ret = -14; goto done; } else { } } else { } out_resp->length = (__u32 )blob->length; done: mutex_unlock(& dev->mode_config.blob_lock); drm_modeset_unlock_all(dev); return (ret); } } int drm_mode_createblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_create_blob *out_resp ; struct drm_property_blob *blob ; void *blob_ptr ; int ret ; int tmp ; long tmp___0 ; bool tmp___1 ; unsigned long tmp___2 ; { out_resp = (struct drm_mode_create_blob *)data; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } blob = drm_property_create_blob(dev, (size_t )out_resp->length, (void const *)0); tmp___1 = IS_ERR((void const *)blob); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)blob); return ((int )tmp___0); } else { } blob_ptr = (void *)out_resp->data; tmp___2 = copy_from_user((void *)(& blob->data), (void const *)blob_ptr, (unsigned long )out_resp->length); if (tmp___2 != 0UL) { ret = -14; goto out_blob; } else { } mutex_lock_nested(& dev->mode_config.blob_lock, 0U); out_resp->blob_id = blob->base.id; list_add_tail(& file_priv->blobs, & blob->head_file); mutex_unlock(& dev->mode_config.blob_lock); return (0); out_blob: drm_property_unreference_blob(blob); return (ret); } } int drm_mode_destroyblob_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_destroy_blob *out_resp ; struct drm_property_blob *blob ; struct drm_property_blob *bt ; bool found ; int ret ; int tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { out_resp = (struct drm_mode_destroy_blob *)data; blob = (struct drm_property_blob *)0; found = 0; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } mutex_lock_nested(& dev->mode_config.blob_lock, 0U); blob = __drm_property_lookup_blob(dev, out_resp->blob_id); if ((unsigned long )blob == (unsigned long )((struct drm_property_blob *)0)) { ret = -2; goto err; } else { } __mptr = (struct list_head const *)file_priv->blobs.next; bt = (struct drm_property_blob *)__mptr + 0xffffffffffffffd0UL; goto ldv_40979; ldv_40978: ; if ((unsigned long )bt == (unsigned long )blob) { found = 1; goto ldv_40977; } else { } __mptr___0 = (struct list_head const *)bt->head_file.next; bt = (struct drm_property_blob *)__mptr___0 + 0xffffffffffffffd0UL; ldv_40979: ; if ((unsigned long )(& bt->head_file) != (unsigned long )(& file_priv->blobs)) { goto ldv_40978; } else { } ldv_40977: ; if (! found) { ret = -1; goto err; } else { } list_del_init(& blob->head_file); drm_property_unreference_blob_locked(blob); mutex_unlock(& dev->mode_config.blob_lock); return (0); err: mutex_unlock(& dev->mode_config.blob_lock); return (ret); } } int drm_mode_connector_set_path_property(struct drm_connector *connector , char const *path ) { struct drm_device *dev ; int ret ; size_t tmp ; { dev = connector->dev; tmp = strlen(path); ret = drm_property_replace_global_blob(dev, & connector->path_blob_ptr, tmp + 1UL, (void const *)path, & connector->base, dev->mode_config.path_property); return (ret); } } static char const __kstrtab_drm_mode_connector_set_path_property[37U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 's', 'e', 't', '_', 'p', 'a', 't', 'h', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_connector_set_path_property ; struct kernel_symbol const __ksymtab_drm_mode_connector_set_path_property = {(unsigned long )(& drm_mode_connector_set_path_property), (char const *)(& __kstrtab_drm_mode_connector_set_path_property)}; int drm_mode_connector_set_tile_property(struct drm_connector *connector ) { struct drm_device *dev ; char tile[256U] ; int ret ; size_t tmp ; { dev = connector->dev; if (! connector->has_tile) { ret = drm_property_replace_global_blob(dev, & connector->tile_blob_ptr, 0UL, (void const *)0, & connector->base, dev->mode_config.tile_property); return (ret); } else { } snprintf((char *)(& tile), 256UL, "%d:%d:%d:%d:%d:%d:%d:%d", (connector->tile_group)->id, (int )connector->tile_is_single_monitor, (int )connector->num_h_tile, (int )connector->num_v_tile, (int )connector->tile_h_loc, (int )connector->tile_v_loc, (int )connector->tile_h_size, (int )connector->tile_v_size); tmp = strlen((char const *)(& tile)); ret = drm_property_replace_global_blob(dev, & connector->tile_blob_ptr, tmp + 1UL, (void const *)(& tile), & connector->base, dev->mode_config.tile_property); return (ret); } } static char const __kstrtab_drm_mode_connector_set_tile_property[37U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 's', 'e', 't', '_', 't', 'i', 'l', 'e', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_connector_set_tile_property ; struct kernel_symbol const __ksymtab_drm_mode_connector_set_tile_property = {(unsigned long )(& drm_mode_connector_set_tile_property), (char const *)(& __kstrtab_drm_mode_connector_set_tile_property)}; int drm_mode_connector_update_edid_property(struct drm_connector *connector , struct edid const *edid ) { struct drm_device *dev ; size_t size ; int ret ; { dev = connector->dev; size = 0UL; if ((int )connector->override_edid) { return (0); } else { } if ((unsigned long )edid != (unsigned long )((struct edid const *)0)) { size = (size_t )(((int )edid->extensions + 1) * 128); } else { } ret = drm_property_replace_global_blob(dev, & connector->edid_blob_ptr, size, (void const *)edid, & connector->base, dev->mode_config.edid_property); return (ret); } } static char const __kstrtab_drm_mode_connector_update_edid_property[40U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'u', 'p', 'd', 'a', 't', 'e', '_', 'e', 'd', 'i', 'd', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_connector_update_edid_property ; struct kernel_symbol const __ksymtab_drm_mode_connector_update_edid_property = {(unsigned long )(& drm_mode_connector_update_edid_property), (char const *)(& __kstrtab_drm_mode_connector_update_edid_property)}; bool drm_property_change_valid_get(struct drm_property *property , uint64_t value , struct drm_mode_object **ref ) { int i ; int64_t svalue ; int64_t tmp ; int64_t tmp___0 ; int64_t tmp___1 ; uint64_t valid_mask ; struct drm_property_blob *blob ; struct drm_framebuffer *fb ; struct drm_mode_object *tmp___2 ; bool tmp___3 ; bool tmp___4 ; bool tmp___5 ; bool tmp___6 ; bool tmp___7 ; { if ((property->flags & 4U) != 0U) { return (0); } else { } *ref = (struct drm_mode_object *)0; tmp___7 = drm_property_type_is(property, 2U); if ((int )tmp___7) { if (*(property->values) > value || *(property->values + 1UL) < value) { return (0); } else { } return (1); } else { tmp___6 = drm_property_type_is(property, 128U); if ((int )tmp___6) { tmp = U642I64(value); svalue = tmp; tmp___0 = U642I64(*(property->values)); if (tmp___0 > svalue) { return (0); } else { tmp___1 = U642I64(*(property->values + 1UL)); if (tmp___1 < svalue) { return (0); } else { } } return (1); } else { tmp___5 = drm_property_type_is(property, 32U); if ((int )tmp___5) { valid_mask = 0ULL; i = 0; goto ldv_41031; ldv_41030: valid_mask = (1ULL << (int )*(property->values + (unsigned long )i)) | valid_mask; i = i + 1; ldv_41031: ; if ((uint32_t )i < property->num_values) { goto ldv_41030; } else { } return ((~ valid_mask & value) == 0ULL); } else { tmp___4 = drm_property_type_is(property, 16U); if ((int )tmp___4) { if (value == 0ULL) { return (1); } else { } blob = drm_property_lookup_blob(property->dev, (uint32_t )value); if ((unsigned long )blob != (unsigned long )((struct drm_property_blob *)0)) { *ref = & blob->base; return (1); } else { return (0); } } else { tmp___3 = drm_property_type_is(property, 64U); if ((int )tmp___3) { if (value == 0ULL) { return (1); } else { } if (*(property->values) == 4227595259ULL) { fb = drm_framebuffer_lookup(property->dev, (uint32_t )value); if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { *ref = & fb->base; return (1); } else { return (0); } } else { tmp___2 = _object_find(property->dev, (uint32_t )value, (uint32_t )*(property->values)); return ((unsigned long )tmp___2 != (unsigned long )((struct drm_mode_object *)0)); } } else { } } } } } i = 0; goto ldv_41036; ldv_41035: ; if (*(property->values + (unsigned long )i) == value) { return (1); } else { } i = i + 1; ldv_41036: ; if ((uint32_t )i < property->num_values) { goto ldv_41035; } else { } return (0); } } void drm_property_change_valid_put(struct drm_property *property , struct drm_mode_object *ref ) { struct drm_mode_object const *__mptr ; struct drm_mode_object const *__mptr___0 ; bool tmp ; bool tmp___0 ; { if ((unsigned long )ref == (unsigned long )((struct drm_mode_object *)0)) { return; } else { } tmp___0 = drm_property_type_is(property, 64U); if ((int )tmp___0) { if (*(property->values) == 4227595259ULL) { __mptr = (struct drm_mode_object const *)ref; drm_framebuffer_unreference((struct drm_framebuffer *)__mptr + 0xffffffffffffffe0UL); } else { } } else { tmp = drm_property_type_is(property, 16U); if ((int )tmp) { __mptr___0 = (struct drm_mode_object const *)ref; drm_property_unreference_blob((struct drm_property_blob *)__mptr___0); } else { } } return; } } int drm_mode_connector_property_set_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_connector_set_property *conn_set_prop ; struct drm_mode_obj_set_property obj_set_prop ; int tmp ; { conn_set_prop = (struct drm_mode_connector_set_property *)data; obj_set_prop.value = conn_set_prop->value; obj_set_prop.prop_id = conn_set_prop->prop_id; obj_set_prop.obj_id = conn_set_prop->connector_id; obj_set_prop.obj_type = 3233857728U; tmp = drm_mode_obj_set_property_ioctl(dev, (void *)(& obj_set_prop), file_priv); return (tmp); } } static int drm_mode_connector_set_obj_prop(struct drm_mode_object *obj , struct drm_property *property , uint64_t value ) { int ret ; struct drm_connector *connector ; struct drm_mode_object const *__mptr ; { ret = -22; __mptr = (struct drm_mode_object const *)obj; connector = (struct drm_connector *)__mptr + 0xffffffffffffffd8UL; if ((unsigned long )(connector->dev)->mode_config.dpms_property == (unsigned long )property) { if ((unsigned long )(connector->funcs)->dpms != (unsigned long )((void (*/* const */)(struct drm_connector * , int ))0)) { (*((connector->funcs)->dpms))(connector, (int )value); } else { } ret = 0; } else if ((unsigned long )(connector->funcs)->set_property != (unsigned long )((int (*/* const */)(struct drm_connector * , struct drm_property * , uint64_t ))0)) { ret = (*((connector->funcs)->set_property))(connector, property, value); } else { } if (ret == 0) { drm_object_property_set_value(& connector->base, property, value); } else { } return (ret); } } static int drm_mode_crtc_set_obj_prop(struct drm_mode_object *obj , struct drm_property *property , uint64_t value ) { int ret ; struct drm_crtc *crtc ; struct drm_mode_object const *__mptr ; { ret = -22; __mptr = (struct drm_mode_object const *)obj; crtc = (struct drm_crtc *)__mptr + 0xffffffffffffff20UL; if ((unsigned long )(crtc->funcs)->set_property != (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_property * , uint64_t ))0)) { ret = (*((crtc->funcs)->set_property))(crtc, property, value); } else { } if (ret == 0) { drm_object_property_set_value(obj, property, value); } else { } return (ret); } } int drm_mode_plane_set_obj_prop(struct drm_plane *plane , struct drm_property *property , uint64_t value ) { int ret ; struct drm_mode_object *obj ; { ret = -22; obj = & plane->base; if ((unsigned long )(plane->funcs)->set_property != (unsigned long )((int (*/* const */)(struct drm_plane * , struct drm_property * , uint64_t ))0)) { ret = (*((plane->funcs)->set_property))(plane, property, value); } else { } if (ret == 0) { drm_object_property_set_value(obj, property, value); } else { } return (ret); } } static char const __kstrtab_drm_mode_plane_set_obj_prop[28U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'p', 'l', 'a', 'n', 'e', '_', 's', 'e', 't', '_', 'o', 'b', 'j', '_', 'p', 'r', 'o', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_plane_set_obj_prop ; struct kernel_symbol const __ksymtab_drm_mode_plane_set_obj_prop = {(unsigned long )(& drm_mode_plane_set_obj_prop), (char const *)(& __kstrtab_drm_mode_plane_set_obj_prop)}; int drm_mode_obj_get_properties_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_obj_get_properties *arg ; struct drm_mode_object *obj ; int ret ; int tmp ; { arg = (struct drm_mode_obj_get_properties *)data; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); obj = drm_mode_object_find(dev, arg->obj_id, arg->obj_type); if ((unsigned long )obj == (unsigned long )((struct drm_mode_object *)0)) { ret = -2; goto out; } else { } if ((unsigned long )obj->properties == (unsigned long )((struct drm_object_properties *)0)) { ret = -22; goto out; } else { } ret = get_properties(obj, (unsigned int )*((unsigned char *)file_priv + 0UL) != 0U, (uint32_t *)arg->props_ptr, (uint64_t *)arg->prop_values_ptr, & arg->count_props); out: drm_modeset_unlock_all(dev); return (ret); } } int drm_mode_obj_set_property_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_obj_set_property *arg ; struct drm_mode_object *arg_obj ; struct drm_mode_object *prop_obj ; struct drm_property *property ; int i ; int ret ; struct drm_mode_object *ref ; int tmp ; struct drm_mode_object const *__mptr ; bool tmp___0 ; int tmp___1 ; struct drm_mode_object const *__mptr___0 ; { arg = (struct drm_mode_obj_set_property *)data; ret = -22; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); arg_obj = drm_mode_object_find(dev, arg->obj_id, arg->obj_type); if ((unsigned long )arg_obj == (unsigned long )((struct drm_mode_object *)0)) { ret = -2; goto out; } else { } if ((unsigned long )arg_obj->properties == (unsigned long )((struct drm_object_properties *)0)) { goto out; } else { } i = 0; goto ldv_41111; ldv_41110: ; if (((arg_obj->properties)->properties[i])->base.id == arg->prop_id) { goto ldv_41109; } else { } i = i + 1; ldv_41111: ; if ((arg_obj->properties)->count > i) { goto ldv_41110; } else { } ldv_41109: ; if ((arg_obj->properties)->count == i) { goto out; } else { } prop_obj = drm_mode_object_find(dev, arg->prop_id, 2964369584U); if ((unsigned long )prop_obj == (unsigned long )((struct drm_mode_object *)0)) { ret = -2; goto out; } else { } __mptr = (struct drm_mode_object const *)prop_obj; property = (struct drm_property *)__mptr + 0xfffffffffffffff0UL; tmp___0 = drm_property_change_valid_get(property, arg->value, & ref); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { goto out; } else { } switch (arg_obj->type) { case 3233857728U: ret = drm_mode_connector_set_obj_prop(arg_obj, property, arg->value); goto ldv_41115; case 3435973836U: ret = drm_mode_crtc_set_obj_prop(arg_obj, property, arg->value); goto ldv_41115; case 4008636142U: __mptr___0 = (struct drm_mode_object const *)arg_obj; ret = drm_mode_plane_set_obj_prop((struct drm_plane *)__mptr___0 + 0xffffffffffffff28UL, property, arg->value); goto ldv_41115; } ldv_41115: drm_property_change_valid_put(property, ref); out: drm_modeset_unlock_all(dev); return (ret); } } int drm_mode_connector_attach_encoder(struct drm_connector *connector , struct drm_encoder *encoder ) { int i ; { i = 0; goto ldv_41126; ldv_41125: ; if (connector->encoder_ids[i] == 0U) { connector->encoder_ids[i] = encoder->base.id; return (0); } else { } i = i + 1; ldv_41126: ; if (i <= 2) { goto ldv_41125; } else { } return (-12); } } static char const __kstrtab_drm_mode_connector_attach_encoder[34U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'a', 't', 't', 'a', 'c', 'h', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_connector_attach_encoder ; struct kernel_symbol const __ksymtab_drm_mode_connector_attach_encoder = {(unsigned long )(& drm_mode_connector_attach_encoder), (char const *)(& __kstrtab_drm_mode_connector_attach_encoder)}; int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc , int gamma_size ) { void *tmp ; { crtc->gamma_size = (uint32_t )gamma_size; tmp = kcalloc((size_t )gamma_size, 6UL, 208U); crtc->gamma_store = (uint16_t *)tmp; if ((unsigned long )crtc->gamma_store == (unsigned long )((uint16_t *)0U)) { crtc->gamma_size = 0U; return (-12); } else { } return (0); } } static char const __kstrtab_drm_mode_crtc_set_gamma_size[29U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 't', 'c', '_', 's', 'e', 't', '_', 'g', 'a', 'm', 'm', 'a', '_', 's', 'i', 'z', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_crtc_set_gamma_size ; struct kernel_symbol const __ksymtab_drm_mode_crtc_set_gamma_size = {(unsigned long )(& drm_mode_crtc_set_gamma_size), (char const *)(& __kstrtab_drm_mode_crtc_set_gamma_size)}; int drm_mode_gamma_set_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_crtc_lut *crtc_lut ; struct drm_crtc *crtc ; void *r_base ; void *g_base ; void *b_base ; int size ; int ret ; int tmp ; unsigned long tmp___0 ; unsigned long tmp___1 ; unsigned long tmp___2 ; { crtc_lut = (struct drm_mode_crtc_lut *)data; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); crtc = drm_crtc_find(dev, crtc_lut->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { ret = -2; goto out; } else { } if ((unsigned long )(crtc->funcs)->gamma_set == (unsigned long )((void (*/* const */)(struct drm_crtc * , u16 * , u16 * , u16 * , uint32_t , uint32_t ))0)) { ret = -38; goto out; } else { } if (crtc_lut->gamma_size != crtc->gamma_size) { ret = -22; goto out; } else { } size = (int )(crtc_lut->gamma_size * 2U); r_base = (void *)crtc->gamma_store; tmp___0 = copy_from_user(r_base, (void const *)crtc_lut->red, (unsigned long )size); if (tmp___0 != 0UL) { ret = -14; goto out; } else { } g_base = r_base + (unsigned long )size; tmp___1 = copy_from_user(g_base, (void const *)crtc_lut->green, (unsigned long )size); if (tmp___1 != 0UL) { ret = -14; goto out; } else { } b_base = g_base + (unsigned long )size; tmp___2 = copy_from_user(b_base, (void const *)crtc_lut->blue, (unsigned long )size); if (tmp___2 != 0UL) { ret = -14; goto out; } else { } (*((crtc->funcs)->gamma_set))(crtc, (u16 *)r_base, (u16 *)g_base, (u16 *)b_base, 0U, crtc->gamma_size); out: drm_modeset_unlock_all(dev); return (ret); } } int drm_mode_gamma_get_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_crtc_lut *crtc_lut ; struct drm_crtc *crtc ; void *r_base ; void *g_base ; void *b_base ; int size ; int ret ; int tmp ; unsigned long tmp___0 ; unsigned long tmp___1 ; unsigned long tmp___2 ; { crtc_lut = (struct drm_mode_crtc_lut *)data; ret = 0; tmp = drm_core_check_feature(dev, 8192); if (tmp == 0) { return (-22); } else { } drm_modeset_lock_all(dev); crtc = drm_crtc_find(dev, crtc_lut->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { ret = -2; goto out; } else { } if (crtc_lut->gamma_size != crtc->gamma_size) { ret = -22; goto out; } else { } size = (int )(crtc_lut->gamma_size * 2U); r_base = (void *)crtc->gamma_store; tmp___0 = copy_to_user((void *)crtc_lut->red, (void const *)r_base, (unsigned long )size); if (tmp___0 != 0UL) { ret = -14; goto out; } else { } g_base = r_base + (unsigned long )size; tmp___1 = copy_to_user((void *)crtc_lut->green, (void const *)g_base, (unsigned long )size); if (tmp___1 != 0UL) { ret = -14; goto out; } else { } b_base = g_base + (unsigned long )size; tmp___2 = copy_to_user((void *)crtc_lut->blue, (void const *)b_base, (unsigned long )size); if (tmp___2 != 0UL) { ret = -14; goto out; } else { } out: drm_modeset_unlock_all(dev); return (ret); } } int drm_mode_page_flip_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_crtc_page_flip *page_flip ; struct drm_crtc *crtc ; struct drm_framebuffer *fb ; struct drm_pending_vblank_event *e ; unsigned long flags ; int ret ; long tmp ; raw_spinlock_t *tmp___0 ; void *tmp___1 ; raw_spinlock_t *tmp___2 ; raw_spinlock_t *tmp___3 ; int __ret_warn_on ; long tmp___4 ; { page_flip = (struct drm_mode_crtc_page_flip *)data; fb = (struct drm_framebuffer *)0; e = (struct drm_pending_vblank_event *)0; ret = -22; if ((page_flip->flags & 4294967292U) != 0U || page_flip->reserved != 0U) { return (-22); } else { } if ((page_flip->flags & 2U) != 0U && ! dev->mode_config.async_page_flip) { return (-22); } else { } crtc = drm_crtc_find(dev, page_flip->crtc_id); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { return (-2); } else { } drm_modeset_lock_crtc(crtc, crtc->primary); if ((unsigned long )(crtc->primary)->fb == (unsigned long )((struct drm_framebuffer *)0)) { ret = -16; goto out; } else { } if ((unsigned long )(crtc->funcs)->page_flip == (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_framebuffer * , struct drm_pending_vblank_event * , uint32_t ))0)) { goto out; } else { } fb = drm_framebuffer_lookup(dev, page_flip->fb_id); if ((unsigned long )fb == (unsigned long )((struct drm_framebuffer *)0)) { ret = -2; goto out; } else { } ret = drm_crtc_check_viewport((struct drm_crtc const *)crtc, crtc->x, crtc->y, (struct drm_display_mode const *)(& crtc->mode), (struct drm_framebuffer const *)fb); if (ret != 0) { goto out; } else { } if (((crtc->primary)->fb)->pixel_format != fb->pixel_format) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_mode_page_flip_ioctl", "Page flip is not allowed to change frame buffer format.\n"); } else { } ret = -22; goto out; } else { } if ((int )page_flip->flags & 1) { ret = -12; tmp___0 = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp___0); if ((unsigned int )file_priv->event_space <= 31U) { spin_unlock_irqrestore(& dev->event_lock, flags); goto out; } else { } file_priv->event_space = (int )((unsigned int )file_priv->event_space - 32U); spin_unlock_irqrestore(& dev->event_lock, flags); tmp___1 = kzalloc(88UL, 208U); e = (struct drm_pending_vblank_event *)tmp___1; if ((unsigned long )e == (unsigned long )((struct drm_pending_vblank_event *)0)) { tmp___2 = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp___2); file_priv->event_space = (int )((unsigned int )file_priv->event_space + 32U); spin_unlock_irqrestore(& dev->event_lock, flags); goto out; } else { } e->event.base.type = 2U; e->event.base.length = 32U; e->event.user_data = page_flip->user_data; e->base.event = & e->event.base; e->base.file_priv = file_priv; e->base.destroy = (void (*)(struct drm_pending_event * ))(& kfree); } else { } (crtc->primary)->old_fb = (crtc->primary)->fb; ret = (*((crtc->funcs)->page_flip))(crtc, fb, e, page_flip->flags); if (ret != 0) { if ((int )page_flip->flags & 1) { tmp___3 = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp___3); file_priv->event_space = (int )((unsigned int )file_priv->event_space + 32U); spin_unlock_irqrestore(& dev->event_lock, flags); kfree((void const *)e); } else { } (crtc->primary)->old_fb = (struct drm_framebuffer *)0; } else { __ret_warn_on = (unsigned long )(crtc->primary)->fb != (unsigned long )fb; tmp___4 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___4 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 5355); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); fb = (struct drm_framebuffer *)0; } out: ; if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(fb); } else { } if ((unsigned long )(crtc->primary)->old_fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference((crtc->primary)->old_fb); } else { } (crtc->primary)->old_fb = (struct drm_framebuffer *)0; drm_modeset_unlock_crtc(crtc); return (ret); } } void drm_mode_config_reset(struct drm_device *dev ) { struct drm_crtc *crtc ; struct drm_plane *plane ; struct drm_encoder *encoder ; struct drm_connector *connector ; 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 ; struct list_head const *__mptr___5 ; struct list_head const *__mptr___6 ; { __mptr = (struct list_head const *)dev->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr + 0xfffffffffffffff8UL; goto ldv_41211; ldv_41210: ; if ((unsigned long )(plane->funcs)->reset != (unsigned long )((void (*/* const */)(struct drm_plane * ))0)) { (*((plane->funcs)->reset))(plane); } else { } __mptr___0 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; ldv_41211: ; if ((unsigned long )(& plane->head) != (unsigned long )(& dev->mode_config.plane_list)) { goto ldv_41210; } else { } __mptr___1 = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr___1 + 0xfffffffffffffff0UL; goto ldv_41218; ldv_41217: ; if ((unsigned long )(crtc->funcs)->reset != (unsigned long )((void (*/* const */)(struct drm_crtc * ))0)) { (*((crtc->funcs)->reset))(crtc); } else { } __mptr___2 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___2 + 0xfffffffffffffff0UL; ldv_41218: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_41217; } else { } __mptr___3 = (struct list_head const *)dev->mode_config.encoder_list.next; encoder = (struct drm_encoder *)__mptr___3 + 0xfffffffffffffff8UL; goto ldv_41225; ldv_41224: ; if ((unsigned long )(encoder->funcs)->reset != (unsigned long )((void (*/* const */)(struct drm_encoder * ))0)) { (*((encoder->funcs)->reset))(encoder); } else { } __mptr___4 = (struct list_head const *)encoder->head.next; encoder = (struct drm_encoder *)__mptr___4 + 0xfffffffffffffff8UL; ldv_41225: ; if ((unsigned long )(& encoder->head) != (unsigned long )(& dev->mode_config.encoder_list)) { goto ldv_41224; } else { } __mptr___5 = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr___5 + 0xffffffffffffffe8UL; goto ldv_41232; ldv_41231: connector->status = 3; if ((unsigned long )(connector->funcs)->reset != (unsigned long )((void (*/* const */)(struct drm_connector * ))0)) { (*((connector->funcs)->reset))(connector); } else { } __mptr___6 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___6 + 0xffffffffffffffe8UL; ldv_41232: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_41231; } else { } return; } } static char const __kstrtab_drm_mode_config_reset[22U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'r', 'e', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_config_reset ; struct kernel_symbol const __ksymtab_drm_mode_config_reset = {(unsigned long )(& drm_mode_config_reset), (char const *)(& __kstrtab_drm_mode_config_reset)}; int drm_mode_create_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_create_dumb *args ; u32 cpp ; u32 stride ; u32 size ; int tmp ; { args = (struct drm_mode_create_dumb *)data; if ((unsigned long )(dev->driver)->dumb_create == (unsigned long )((int (*)(struct drm_file * , struct drm_device * , struct drm_mode_create_dumb * ))0)) { return (-38); } else { } if ((args->width == 0U || args->height == 0U) || args->bpp == 0U) { return (-22); } else { } cpp = (args->bpp + 7U) / 8U; if (cpp == 0U || 4294967295U / args->width < cpp) { return (-22); } else { } stride = args->width * cpp; if (args->height > 4294967295U / stride) { return (-22); } else { } size = args->height * stride; if (((size + 4095U) & 4294963200U) == 0U) { return (-22); } else { } args->handle = 0U; args->pitch = 0U; args->size = 0ULL; tmp = (*((dev->driver)->dumb_create))(file_priv, dev, args); return (tmp); } } int drm_mode_mmap_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_map_dumb *args ; int tmp ; { args = (struct drm_mode_map_dumb *)data; if ((unsigned long )(dev->driver)->dumb_map_offset == (unsigned long )((int (*)(struct drm_file * , struct drm_device * , uint32_t , uint64_t * ))0)) { return (-38); } else { } tmp = (*((dev->driver)->dumb_map_offset))(file_priv, dev, args->handle, & args->offset); return (tmp); } } int drm_mode_destroy_dumb_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_destroy_dumb *args ; int tmp ; { args = (struct drm_mode_destroy_dumb *)data; if ((unsigned long )(dev->driver)->dumb_destroy == (unsigned long )((int (*)(struct drm_file * , struct drm_device * , uint32_t ))0)) { return (-38); } else { } tmp = (*((dev->driver)->dumb_destroy))(file_priv, dev, args->handle); return (tmp); } } void drm_fb_get_bpp_depth(uint32_t format , unsigned int *depth , int *bpp ) { char const *tmp ; long tmp___0 ; { switch (format) { case 538982467U: ; case 943867730U: ; case 944916290U: *depth = 8U; *bpp = 8; goto ldv_41270; case 892424792U: ; case 892420696U: ; case 892426322U: ; case 892426306U: ; case 892424769U: ; case 892420673U: ; case 892420434U: ; case 892420418U: *depth = 15U; *bpp = 16; goto ldv_41270; case 909199186U: ; case 909199170U: *depth = 16U; *bpp = 16; goto ldv_41270; case 875710290U: ; case 875710274U: *depth = 24U; *bpp = 24; goto ldv_41270; case 875713112U: ; case 875709016U: ; case 875714642U: ; case 875714626U: *depth = 24U; *bpp = 32; goto ldv_41270; case 808669784U: ; case 808665688U: ; case 808671314U: ; case 808671298U: ; case 808669761U: ; case 808665665U: ; case 808665426U: ; case 808665410U: *depth = 30U; *bpp = 32; goto ldv_41270; case 875713089U: ; case 875708993U: ; case 875708754U: ; case 875708738U: *depth = 32U; *bpp = 32; goto ldv_41270; default: tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { tmp = drm_get_format_name(format); drm_ut_debug_printk("drm_fb_get_bpp_depth", "unsupported pixel format %s\n", tmp); } else { } *depth = 0U; *bpp = 0; goto ldv_41270; } ldv_41270: ; return; } } static char const __kstrtab_drm_fb_get_bpp_depth[21U] = { 'd', 'r', 'm', '_', 'f', 'b', '_', 'g', 'e', 't', '_', 'b', 'p', 'p', '_', 'd', 'e', 'p', 't', 'h', '\000'}; struct kernel_symbol const __ksymtab_drm_fb_get_bpp_depth ; struct kernel_symbol const __ksymtab_drm_fb_get_bpp_depth = {(unsigned long )(& drm_fb_get_bpp_depth), (char const *)(& __kstrtab_drm_fb_get_bpp_depth)}; int drm_format_num_planes(uint32_t format ) { { switch (format) { case 961959257U: ; case 961893977U: ; case 825316697U: ; case 825316953U: ; case 842093913U: ; case 842094169U: ; case 909202777U: ; case 909203033U: ; case 875713881U: ; case 875714137U: ; return (3); case 842094158U: ; case 825382478U: ; case 909203022U: ; case 825644622U: ; case 875714126U: ; case 842290766U: ; return (2); default: ; return (1); } } } static char const __kstrtab_drm_format_num_planes[22U] = { 'd', 'r', 'm', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 'n', 'u', 'm', '_', 'p', 'l', 'a', 'n', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_format_num_planes ; struct kernel_symbol const __ksymtab_drm_format_num_planes = {(unsigned long )(& drm_format_num_planes), (char const *)(& __kstrtab_drm_format_num_planes)}; int drm_format_plane_cpp(uint32_t format , int plane ) { unsigned int depth ; int bpp ; int tmp ; { tmp = drm_format_num_planes(format); if (tmp <= plane) { return (0); } else { } switch (format) { case 1448695129U: ; case 1431918169U: ; case 1498831189U: ; case 1498765654U: ; return (2); case 842094158U: ; case 825382478U: ; case 909203022U: ; case 825644622U: ; case 875714126U: ; case 842290766U: ; return (plane != 0 ? 2 : 1); case 961959257U: ; case 961893977U: ; case 825316697U: ; case 825316953U: ; case 842093913U: ; case 842094169U: ; case 909202777U: ; case 909203033U: ; case 875713881U: ; case 875714137U: ; return (1); default: drm_fb_get_bpp_depth(format, & depth, & bpp); return (bpp >> 3); } } } static char const __kstrtab_drm_format_plane_cpp[21U] = { 'd', 'r', 'm', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 'p', 'l', 'a', 'n', 'e', '_', 'c', 'p', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_format_plane_cpp ; struct kernel_symbol const __ksymtab_drm_format_plane_cpp = {(unsigned long )(& drm_format_plane_cpp), (char const *)(& __kstrtab_drm_format_plane_cpp)}; int drm_format_horz_chroma_subsampling(uint32_t format ) { { switch (format) { case 825316697U: ; case 825316953U: ; case 961959257U: ; case 961893977U: ; return (4); case 1448695129U: ; case 1431918169U: ; case 1498831189U: ; case 1498765654U: ; case 842094158U: ; case 825382478U: ; case 909203022U: ; case 825644622U: ; case 909202777U: ; case 909203033U: ; case 842093913U: ; case 842094169U: ; return (2); default: ; return (1); } } } static char const __kstrtab_drm_format_horz_chroma_subsampling[35U] = { 'd', 'r', 'm', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 'h', 'o', 'r', 'z', '_', 'c', 'h', 'r', 'o', 'm', 'a', '_', 's', 'u', 'b', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_format_horz_chroma_subsampling ; struct kernel_symbol const __ksymtab_drm_format_horz_chroma_subsampling = {(unsigned long )(& drm_format_horz_chroma_subsampling), (char const *)(& __kstrtab_drm_format_horz_chroma_subsampling)}; int drm_format_vert_chroma_subsampling(uint32_t format ) { { switch (format) { case 961959257U: ; case 961893977U: ; return (4); case 842093913U: ; case 842094169U: ; case 842094158U: ; case 825382478U: ; return (2); default: ; return (1); } } } static char const __kstrtab_drm_format_vert_chroma_subsampling[35U] = { 'd', 'r', 'm', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 'v', 'e', 'r', 't', '_', 'c', 'h', 'r', 'o', 'm', 'a', '_', 's', 'u', 'b', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_format_vert_chroma_subsampling ; struct kernel_symbol const __ksymtab_drm_format_vert_chroma_subsampling = {(unsigned long )(& drm_format_vert_chroma_subsampling), (char const *)(& __kstrtab_drm_format_vert_chroma_subsampling)}; unsigned int drm_rotation_simplify(unsigned int rotation , unsigned int supported_rotations ) { int tmp ; { if ((~ supported_rotations & rotation) != 0U) { rotation = rotation ^ 48U; tmp = ffs((int )rotation & 15); rotation = (rotation & 4294967280U) | (unsigned int )(1UL << (tmp + 1) % 4); } else { } return (rotation); } } static char const __kstrtab_drm_rotation_simplify[22U] = { 'd', 'r', 'm', '_', 'r', 'o', 't', 'a', 't', 'i', 'o', 'n', '_', 's', 'i', 'm', 'p', 'l', 'i', 'f', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_rotation_simplify ; struct kernel_symbol const __ksymtab_drm_rotation_simplify = {(unsigned long )(& drm_rotation_simplify), (char const *)(& __kstrtab_drm_rotation_simplify)}; void drm_mode_config_init(struct drm_device *dev ) { struct lock_class_key __key ; struct lock_class_key __key___0 ; struct lock_class_key __key___1 ; struct lock_class_key __key___2 ; { __mutex_init(& dev->mode_config.mutex, "&dev->mode_config.mutex", & __key); drm_modeset_lock_init(& dev->mode_config.connection_mutex); __mutex_init(& dev->mode_config.idr_mutex, "&dev->mode_config.idr_mutex", & __key___0); __mutex_init(& dev->mode_config.fb_lock, "&dev->mode_config.fb_lock", & __key___1); __mutex_init(& dev->mode_config.blob_lock, "&dev->mode_config.blob_lock", & __key___2); INIT_LIST_HEAD(& dev->mode_config.fb_list); INIT_LIST_HEAD(& dev->mode_config.crtc_list); INIT_LIST_HEAD(& dev->mode_config.connector_list); INIT_LIST_HEAD(& dev->mode_config.encoder_list); INIT_LIST_HEAD(& dev->mode_config.property_list); INIT_LIST_HEAD(& dev->mode_config.property_blob_list); INIT_LIST_HEAD(& dev->mode_config.plane_list); idr_init(& dev->mode_config.crtc_idr); idr_init(& dev->mode_config.tile_idr); drm_modeset_lock_all(dev); drm_mode_create_standard_properties(dev); drm_modeset_unlock_all(dev); dev->mode_config.num_fb = 0; dev->mode_config.num_connector = 0; dev->mode_config.num_crtc = 0; dev->mode_config.num_encoder = 0; dev->mode_config.num_overlay_plane = 0; dev->mode_config.num_total_plane = 0; return; } } static char const __kstrtab_drm_mode_config_init[21U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_config_init ; struct kernel_symbol const __ksymtab_drm_mode_config_init = {(unsigned long )(& drm_mode_config_init), (char const *)(& __kstrtab_drm_mode_config_init)}; void drm_mode_config_cleanup(struct drm_device *dev ) { struct drm_connector *connector ; struct drm_connector *ot ; struct drm_crtc *crtc ; struct drm_crtc *ct ; struct drm_encoder *encoder ; struct drm_encoder *enct ; struct drm_framebuffer *fb ; struct drm_framebuffer *fbt ; struct drm_property *property ; struct drm_property *pt ; struct drm_property_blob *blob ; struct drm_property_blob *bt ; struct drm_plane *plane ; struct drm_plane *plt ; 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 ; struct list_head const *__mptr___5 ; struct list_head const *__mptr___6 ; struct list_head const *__mptr___7 ; struct list_head const *__mptr___8 ; struct list_head const *__mptr___9 ; struct list_head const *__mptr___10 ; int __ret_warn_on ; int tmp ; long tmp___0 ; struct list_head const *__mptr___11 ; struct list_head const *__mptr___12 ; struct list_head const *__mptr___13 ; struct list_head const *__mptr___14 ; struct list_head const *__mptr___15 ; struct list_head const *__mptr___16 ; struct list_head const *__mptr___17 ; struct list_head const *__mptr___18 ; struct list_head const *__mptr___19 ; { __mptr = (struct list_head const *)dev->mode_config.encoder_list.next; encoder = (struct drm_encoder *)__mptr + 0xfffffffffffffff8UL; __mptr___0 = (struct list_head const *)encoder->head.next; enct = (struct drm_encoder *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_41466; ldv_41465: (*((encoder->funcs)->destroy))(encoder); encoder = enct; __mptr___1 = (struct list_head const *)enct->head.next; enct = (struct drm_encoder *)__mptr___1 + 0xfffffffffffffff8UL; ldv_41466: ; if ((unsigned long )(& encoder->head) != (unsigned long )(& dev->mode_config.encoder_list)) { goto ldv_41465; } else { } __mptr___2 = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr___2 + 0xffffffffffffffe8UL; __mptr___3 = (struct list_head const *)connector->head.next; ot = (struct drm_connector *)__mptr___3 + 0xffffffffffffffe8UL; goto ldv_41475; ldv_41474: (*((connector->funcs)->destroy))(connector); connector = ot; __mptr___4 = (struct list_head const *)ot->head.next; ot = (struct drm_connector *)__mptr___4 + 0xffffffffffffffe8UL; ldv_41475: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_41474; } else { } __mptr___5 = (struct list_head const *)dev->mode_config.property_list.next; property = (struct drm_property *)__mptr___5; __mptr___6 = (struct list_head const *)property->head.next; pt = (struct drm_property *)__mptr___6; goto ldv_41484; ldv_41483: drm_property_destroy(dev, property); property = pt; __mptr___7 = (struct list_head const *)pt->head.next; pt = (struct drm_property *)__mptr___7; ldv_41484: ; if ((unsigned long )(& property->head) != (unsigned long )(& dev->mode_config.property_list)) { goto ldv_41483; } else { } __mptr___8 = (struct list_head const *)dev->mode_config.property_blob_list.next; blob = (struct drm_property_blob *)__mptr___8 + 0xffffffffffffffe0UL; __mptr___9 = (struct list_head const *)blob->head_global.next; bt = (struct drm_property_blob *)__mptr___9 + 0xffffffffffffffe0UL; goto ldv_41493; ldv_41492: drm_property_unreference_blob(blob); blob = bt; __mptr___10 = (struct list_head const *)bt->head_global.next; bt = (struct drm_property_blob *)__mptr___10 + 0xffffffffffffffe0UL; ldv_41493: ; if ((unsigned long )(& blob->head_global) != (unsigned long )(& dev->mode_config.property_blob_list)) { goto ldv_41492; } else { } tmp = list_empty((struct list_head const *)(& dev->mode_config.fb_list)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_crtc.c", 5856); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __mptr___11 = (struct list_head const *)dev->mode_config.fb_list.next; fb = (struct drm_framebuffer *)__mptr___11 + 0xfffffffffffffff0UL; __mptr___12 = (struct list_head const *)fb->head.next; fbt = (struct drm_framebuffer *)__mptr___12 + 0xfffffffffffffff0UL; goto ldv_41504; ldv_41503: drm_framebuffer_remove(fb); fb = fbt; __mptr___13 = (struct list_head const *)fbt->head.next; fbt = (struct drm_framebuffer *)__mptr___13 + 0xfffffffffffffff0UL; ldv_41504: ; if ((unsigned long )(& fb->head) != (unsigned long )(& dev->mode_config.fb_list)) { goto ldv_41503; } else { } __mptr___14 = (struct list_head const *)dev->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr___14 + 0xfffffffffffffff8UL; __mptr___15 = (struct list_head const *)plane->head.next; plt = (struct drm_plane *)__mptr___15 + 0xfffffffffffffff8UL; goto ldv_41513; ldv_41512: (*((plane->funcs)->destroy))(plane); plane = plt; __mptr___16 = (struct list_head const *)plt->head.next; plt = (struct drm_plane *)__mptr___16 + 0xfffffffffffffff8UL; ldv_41513: ; if ((unsigned long )(& plane->head) != (unsigned long )(& dev->mode_config.plane_list)) { goto ldv_41512; } else { } __mptr___17 = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr___17 + 0xfffffffffffffff0UL; __mptr___18 = (struct list_head const *)crtc->head.next; ct = (struct drm_crtc *)__mptr___18 + 0xfffffffffffffff0UL; goto ldv_41522; ldv_41521: (*((crtc->funcs)->destroy))(crtc); crtc = ct; __mptr___19 = (struct list_head const *)ct->head.next; ct = (struct drm_crtc *)__mptr___19 + 0xfffffffffffffff0UL; ldv_41522: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_41521; } else { } idr_destroy(& dev->mode_config.tile_idr); idr_destroy(& dev->mode_config.crtc_idr); drm_modeset_lock_fini(& dev->mode_config.connection_mutex); return; } } static char const __kstrtab_drm_mode_config_cleanup[24U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_config_cleanup ; struct kernel_symbol const __ksymtab_drm_mode_config_cleanup = {(unsigned long )(& drm_mode_config_cleanup), (char const *)(& __kstrtab_drm_mode_config_cleanup)}; struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev , unsigned int supported_rotations ) { struct drm_prop_enum_list props[6U] ; struct drm_property *tmp ; { props[0].type = 0; props[0].name = (char *)"rotate-0"; props[1].type = 1; props[1].name = (char *)"rotate-90"; props[2].type = 2; props[2].name = (char *)"rotate-180"; props[3].type = 3; props[3].name = (char *)"rotate-270"; props[4].type = 4; props[4].name = (char *)"reflect-x"; props[5].type = 5; props[5].name = (char *)"reflect-y"; tmp = drm_property_create_bitmask(dev, 0, "rotation", (struct drm_prop_enum_list const *)(& props), 6, (uint64_t )supported_rotations); return (tmp); } } static char const __kstrtab_drm_mode_create_rotation_property[34U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'r', 'o', 't', 'a', 't', 'i', 'o', 'n', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_rotation_property ; struct kernel_symbol const __ksymtab_drm_mode_create_rotation_property = {(unsigned long )(& drm_mode_create_rotation_property), (char const *)(& __kstrtab_drm_mode_create_rotation_property)}; static void drm_tile_group_free(struct kref *kref ) { struct drm_tile_group *tg ; struct kref const *__mptr ; struct drm_device *dev ; { __mptr = (struct kref const *)kref; tg = (struct drm_tile_group *)__mptr; dev = tg->dev; mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); idr_remove(& dev->mode_config.tile_idr, tg->id); mutex_unlock(& dev->mode_config.idr_mutex); kfree((void const *)tg); return; } } void drm_mode_put_tile_group(struct drm_device *dev , struct drm_tile_group *tg ) { { kref_put___1(& tg->refcount, & drm_tile_group_free); return; } } struct drm_tile_group *drm_mode_get_tile_group(struct drm_device *dev , char *topology ) { struct drm_tile_group *tg ; int id ; int tmp ; int tmp___0 ; void *tmp___1 ; { mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); id = 0; goto ldv_41564; ldv_41563: tmp___0 = memcmp((void const *)(& tg->group_data), (void const *)topology, 8UL); if (tmp___0 == 0) { tmp = kref_get_unless_zero(& tg->refcount); if (tmp == 0) { tg = (struct drm_tile_group *)0; } else { } mutex_unlock(& dev->mode_config.idr_mutex); return (tg); } else { } id = id + 1; ldv_41564: tmp___1 = idr_get_next(& dev->mode_config.tile_idr, & id); tg = (struct drm_tile_group *)tmp___1; if ((unsigned long )tg != (unsigned long )((struct drm_tile_group *)0)) { goto ldv_41563; } else { } mutex_unlock(& dev->mode_config.idr_mutex); return ((struct drm_tile_group *)0); } } static char const __kstrtab_drm_mode_get_tile_group[24U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'g', 'e', 't', '_', 't', 'i', 'l', 'e', '_', 'g', 'r', 'o', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_get_tile_group ; struct kernel_symbol const __ksymtab_drm_mode_get_tile_group = {(unsigned long )(& drm_mode_get_tile_group), (char const *)(& __kstrtab_drm_mode_get_tile_group)}; struct drm_tile_group *drm_mode_create_tile_group(struct drm_device *dev , char *topology ) { struct drm_tile_group *tg ; int ret ; void *tmp ; void *tmp___0 ; void *tmp___1 ; { tmp = kzalloc(32UL, 208U); tg = (struct drm_tile_group *)tmp; if ((unsigned long )tg == (unsigned long )((struct drm_tile_group *)0)) { tmp___0 = ERR_PTR(-12L); return ((struct drm_tile_group *)tmp___0); } else { } kref_init(& tg->refcount); memcpy((void *)(& tg->group_data), (void const *)topology, 8UL); tg->dev = dev; mutex_lock_nested(& dev->mode_config.idr_mutex, 0U); ret = idr_alloc(& dev->mode_config.tile_idr, (void *)tg, 1, 0, 208U); if (ret >= 0) { tg->id = ret; } else { kfree((void const *)tg); tmp___1 = ERR_PTR((long )ret); tg = (struct drm_tile_group *)tmp___1; } mutex_unlock(& dev->mode_config.idr_mutex); return (tg); } } static char const __kstrtab_drm_mode_create_tile_group[27U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'i', 'l', 'e', '_', 'g', 'r', 'o', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_tile_group ; struct kernel_symbol const __ksymtab_drm_mode_create_tile_group = {(unsigned long )(& drm_mode_create_tile_group), (char const *)(& __kstrtab_drm_mode_create_tile_group)}; bool ldv_queue_work_on_297(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_298(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_299(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_300(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_301(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern long simple_strtol(char const * , char ** , unsigned int ) ; __inline static void list_move_tail(struct list_head *list , struct list_head *head ) { { __list_del_entry(list); list_add_tail(list, head); return; } } bool ldv_queue_work_on_311(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_313(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_312(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_315(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_314(struct workqueue_struct *ldv_func_arg1 ) ; extern void list_sort(void * , struct list_head * , int (*)(void * , struct list_head * , struct list_head * ) ) ; __inline static char const *of_node_full_name(struct device_node const *np ) { { return ((unsigned long )np != (unsigned long )((struct device_node const *)0) ? (char const *)np->full_name : ""); } } void drm_mode_probed_add(struct drm_connector *connector , struct drm_display_mode *mode ) ; void drm_mode_debug_printmodeline(struct drm_display_mode const *mode ) ; struct drm_display_mode *drm_cvt_mode(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool reduced , bool interlaced , bool margins ) ; struct drm_display_mode *drm_gtf_mode(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool interlaced , int margins ) ; struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool interlaced , int margins , int GTF_M , int GTF_2C , int GTF_K , int GTF_2J ) ; void drm_display_mode_from_videomode(struct videomode const *vm , struct drm_display_mode *dmode ) ; void drm_display_mode_to_videomode(struct drm_display_mode const *dmode , struct videomode *vm ) ; int of_get_drm_display_mode(struct device_node *np , struct drm_display_mode *dmode , int index ) ; void drm_mode_set_name(struct drm_display_mode *mode ) ; int drm_mode_hsync(struct drm_display_mode const *mode ) ; int drm_mode_vrefresh(struct drm_display_mode const *mode ) ; struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev , struct drm_display_mode const *mode ) ; bool drm_mode_equal(struct drm_display_mode const *mode1 , struct drm_display_mode const *mode2 ) ; bool drm_mode_equal_no_clocks_no_stereo(struct drm_display_mode const *mode1 , struct drm_display_mode const *mode2 ) ; enum drm_mode_status drm_mode_validate_basic(struct drm_display_mode const *mode ) ; enum drm_mode_status drm_mode_validate_size(struct drm_display_mode const *mode , int maxX , int maxY ) ; void drm_mode_prune_invalid(struct drm_device *dev , struct list_head *mode_list , bool verbose ) ; void drm_mode_sort(struct list_head *mode_list ) ; void drm_mode_connector_list_update(struct drm_connector *connector , bool merge_type_bits ) ; struct drm_display_mode *drm_mode_create_from_cmdline_mode(struct drm_device *dev , struct drm_cmdline_mode *cmd ) ; extern int of_get_videomode(struct device_node * , struct videomode * , int ) ; void drm_mode_debug_printmodeline(struct drm_display_mode const *mode ) { long tmp ; { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_mode_debug_printmodeline", "Modeline %d:\"%s\" %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x\n", mode->base.id, (char const *)(& mode->name), mode->vrefresh, mode->clock, mode->hdisplay, mode->hsync_start, mode->hsync_end, mode->htotal, mode->vdisplay, mode->vsync_start, mode->vsync_end, mode->vtotal, mode->type, mode->flags); } else { } return; } } static char const __kstrtab_drm_mode_debug_printmodeline[29U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'd', 'e', 'b', 'u', 'g', '_', 'p', 'r', 'i', 'n', 't', 'm', 'o', 'd', 'e', 'l', 'i', 'n', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_debug_printmodeline ; struct kernel_symbol const __ksymtab_drm_mode_debug_printmodeline = {(unsigned long )(& drm_mode_debug_printmodeline), (char const *)(& __kstrtab_drm_mode_debug_printmodeline)}; struct drm_display_mode *drm_mode_create(struct drm_device *dev ) { struct drm_display_mode *nmode ; void *tmp ; int tmp___0 ; { tmp = kzalloc(208UL, 208U); nmode = (struct drm_display_mode *)tmp; if ((unsigned long )nmode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } tmp___0 = drm_mode_object_get(dev, & nmode->base, 3739147998U); if (tmp___0 != 0) { kfree((void const *)nmode); return ((struct drm_display_mode *)0); } else { } return (nmode); } } static char const __kstrtab_drm_mode_create[16U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create ; struct kernel_symbol const __ksymtab_drm_mode_create = {(unsigned long )(& drm_mode_create), (char const *)(& __kstrtab_drm_mode_create)}; void drm_mode_destroy(struct drm_device *dev , struct drm_display_mode *mode ) { { if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { return; } else { } drm_mode_object_put(dev, & mode->base); kfree((void const *)mode); return; } } static char const __kstrtab_drm_mode_destroy[17U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_destroy ; struct kernel_symbol const __ksymtab_drm_mode_destroy = {(unsigned long )(& drm_mode_destroy), (char const *)(& __kstrtab_drm_mode_destroy)}; void drm_mode_probed_add(struct drm_connector *connector , struct drm_display_mode *mode ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = mutex_is_locked(& (connector->dev)->mode_config.mutex); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modes.c", 119); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); list_add_tail(& mode->head, & connector->probed_modes); return; } } static char const __kstrtab_drm_mode_probed_add[20U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'p', 'r', 'o', 'b', 'e', 'd', '_', 'a', 'd', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_probed_add ; struct kernel_symbol const __ksymtab_drm_mode_probed_add = {(unsigned long )(& drm_mode_probed_add), (char const *)(& __kstrtab_drm_mode_probed_add)}; struct drm_display_mode *drm_cvt_mode(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool reduced , bool interlaced , bool margins ) { struct drm_display_mode *drm_mode ; unsigned int vfieldrate ; unsigned int hperiod ; int hdisplay_rnd ; int hmargin ; int vdisplay_rnd ; int vmargin ; int vsync ; int interlace ; int tmp1 ; int tmp2 ; unsigned int hblank_percentage ; int vsyncandback_porch ; int vback_porch ; int hblank ; int vbilines ; int tmp1___0 ; int tmp2___0 ; { drm_mode = drm_mode_create(dev); if ((unsigned long )drm_mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } if (vrefresh == 0) { vrefresh = 60; } else { } if ((int )interlaced) { vfieldrate = (unsigned int )(vrefresh * 2); } else { vfieldrate = (unsigned int )vrefresh; } hdisplay_rnd = hdisplay - hdisplay % 8; hmargin = 0; if ((int )margins) { hmargin = (hdisplay_rnd * 18) / 1000; hmargin = hmargin - hmargin % 8; } else { } drm_mode->hdisplay = hmargin * 2 + hdisplay_rnd; if ((int )interlaced) { vdisplay_rnd = vdisplay / 2; } else { vdisplay_rnd = vdisplay; } vmargin = 0; if ((int )margins) { vmargin = (vdisplay_rnd * 18) / 1000; } else { } drm_mode->vdisplay = vmargin * 2 + vdisplay; if ((int )interlaced) { interlace = 1; } else { interlace = 0; } if (vdisplay % 3 == 0 && (vdisplay * 4) / 3 == hdisplay) { vsync = 4; } else if (vdisplay % 9 == 0 && (vdisplay * 16) / 9 == hdisplay) { vsync = 5; } else if (vdisplay % 10 == 0 && (vdisplay * 16) / 10 == hdisplay) { vsync = 6; } else if (((unsigned int )vdisplay & 3U) == 0U && (vdisplay * 5) / 4 == hdisplay) { vsync = 7; } else if (vdisplay % 9 == 0 && (vdisplay * 15) / 9 == hdisplay) { vsync = 7; } else { vsync = 10; } if (! reduced) { tmp1 = (int )(1000000000U - vfieldrate * 550000U); tmp2 = ((vmargin * 2 + vdisplay_rnd) + 3) * 2 + interlace; hperiod = (unsigned int )(tmp1 * 2) / ((unsigned int )tmp2 * vfieldrate); tmp1 = (int )(550000U / hperiod + 1U); if (vsync + 3 > tmp1) { vsyncandback_porch = vsync + 3; } else { vsyncandback_porch = tmp1; } vback_porch = vsyncandback_porch - vsync; drm_mode->vtotal = ((vmargin * 2 + vdisplay_rnd) + vsyncandback_porch) + 3; hblank_percentage = 30000U - (hperiod * 300U) / 1000U; if (hblank_percentage <= 19999U) { hblank_percentage = 20000U; } else { } hblank = (int )(((unsigned int )drm_mode->hdisplay * hblank_percentage) / (100000U - hblank_percentage)); hblank = hblank - hblank % 16; drm_mode->htotal = drm_mode->hdisplay + hblank; drm_mode->hsync_end = drm_mode->hdisplay + hblank / 2; drm_mode->hsync_start = drm_mode->hsync_end - (drm_mode->htotal * 8) / 100; drm_mode->hsync_start = drm_mode->hsync_start + (8 - drm_mode->hsync_start % 8); drm_mode->vsync_start = drm_mode->vdisplay + 3; drm_mode->vsync_end = drm_mode->vsync_start + vsync; } else { tmp1___0 = (int )(1000000000U - vfieldrate * 460000U); tmp2___0 = vmargin * 2 + vdisplay_rnd; hperiod = (unsigned int )tmp1___0 / ((unsigned int )tmp2___0 * vfieldrate); vbilines = (int )(460000U / hperiod + 1U); if (vsync + 9 > vbilines) { vbilines = vsync + 9; } else { } drm_mode->vtotal = (vmargin * 2 + vdisplay_rnd) + vbilines; drm_mode->htotal = drm_mode->hdisplay + 160; drm_mode->hsync_end = drm_mode->hdisplay + 80; drm_mode->hsync_start = drm_mode->hsync_end + -32; drm_mode->vsync_start = drm_mode->vdisplay + 3; drm_mode->vsync_end = drm_mode->vsync_start + vsync; } drm_mode->clock = (int )((unsigned int )(drm_mode->htotal * 1000000) / hperiod); drm_mode->clock = drm_mode->clock - drm_mode->clock % 250; if ((int )interlaced) { drm_mode->vtotal = drm_mode->vtotal * 2; drm_mode->flags = drm_mode->flags | 16U; } else { } drm_mode_set_name(drm_mode); if ((int )reduced) { drm_mode->flags = drm_mode->flags | 9U; } else { drm_mode->flags = drm_mode->flags | 6U; } return (drm_mode); } } static char const __kstrtab_drm_cvt_mode[13U] = { 'd', 'r', 'm', '_', 'c', 'v', 't', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_cvt_mode ; struct kernel_symbol const __ksymtab_drm_cvt_mode = {(unsigned long )(& drm_cvt_mode), (char const *)(& __kstrtab_drm_cvt_mode)}; struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool interlaced , int margins , int GTF_M , int GTF_2C , int GTF_K , int GTF_2J ) { struct drm_display_mode *drm_mode ; unsigned int hdisplay_rnd ; unsigned int vdisplay_rnd ; unsigned int vfieldrate_rqd ; int top_margin ; int bottom_margin ; int interlace ; unsigned int hfreq_est ; int vsync_plus_bp ; int vback_porch ; unsigned int vtotal_lines ; unsigned int vfieldrate_est ; unsigned int hperiod ; unsigned int vfield_rate ; unsigned int vframe_rate ; int left_margin ; int right_margin ; unsigned int total_active_pixels ; unsigned int ideal_duty_cycle ; unsigned int hblank ; unsigned int total_pixels ; unsigned int pixel_freq ; int hsync ; int hfront_porch ; int vodd_front_porch_lines ; unsigned int tmp1 ; unsigned int tmp2 ; { drm_mode = drm_mode_create(dev); if ((unsigned long )drm_mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } hdisplay_rnd = (unsigned int )((hdisplay + 4) / 8); hdisplay_rnd = hdisplay_rnd * 8U; if ((int )interlaced) { vdisplay_rnd = (unsigned int )(vdisplay / 2); } else { vdisplay_rnd = (unsigned int )vdisplay; } if ((int )interlaced) { vfieldrate_rqd = (unsigned int )(vrefresh * 2); } else { vfieldrate_rqd = (unsigned int )vrefresh; } top_margin = 0; if (margins != 0) { top_margin = (int )((vdisplay_rnd * 18U + 500U) / 1000U); } else { } bottom_margin = top_margin; if ((int )interlaced) { interlace = 1; } else { interlace = 0; } tmp1 = (1000000U - vfieldrate_rqd * 550U) / 500U; tmp2 = (((unsigned int )(top_margin * 2) + vdisplay_rnd) + 1U) * 2U + (unsigned int )interlace; hfreq_est = ((tmp2 * vfieldrate_rqd) * 1000U) / tmp1; vsync_plus_bp = (int )((hfreq_est * 550U) / 1000U); vsync_plus_bp = (vsync_plus_bp + 500) / 1000; vback_porch = vsync_plus_bp + -3; vtotal_lines = (((vdisplay_rnd + (unsigned int )top_margin) + (unsigned int )bottom_margin) + (unsigned int )vsync_plus_bp) + 1U; vfieldrate_est = hfreq_est / vtotal_lines; hperiod = 1000000U / (vfieldrate_rqd * vtotal_lines); vfield_rate = hfreq_est / vtotal_lines; if ((int )interlaced) { vframe_rate = vfield_rate / 2U; } else { vframe_rate = vfield_rate; } if (margins != 0) { left_margin = (int )((hdisplay_rnd * 18U + 500U) / 1000U); } else { left_margin = 0; } right_margin = left_margin; total_active_pixels = (hdisplay_rnd + (unsigned int )left_margin) + (unsigned int )right_margin; ideal_duty_cycle = (unsigned int )(((((GTF_2C - GTF_2J) * GTF_K) / 256 + GTF_2J) / 2) * 1000) - (unsigned int )(((GTF_K * GTF_M) / 256) * 1000000) / hfreq_est; hblank = (total_active_pixels * ideal_duty_cycle) / (100000U - ideal_duty_cycle); hblank = (hblank + 8U) / 16U; hblank = hblank * 16U; total_pixels = total_active_pixels + hblank; pixel_freq = (total_pixels * hfreq_est) / 1000U; hsync = (int )((total_pixels * 8U) / 100U); hsync = (hsync + 4) / 8; hsync = hsync * 8; hfront_porch = (int )(hblank / 2U - (unsigned int )hsync); vodd_front_porch_lines = 1; drm_mode->hdisplay = (int )hdisplay_rnd; drm_mode->hsync_start = (int )(hdisplay_rnd + (unsigned int )hfront_porch); drm_mode->hsync_end = drm_mode->hsync_start + hsync; drm_mode->htotal = (int )total_pixels; drm_mode->vdisplay = (int )vdisplay_rnd; drm_mode->vsync_start = (int )(vdisplay_rnd + (unsigned int )vodd_front_porch_lines); drm_mode->vsync_end = drm_mode->vsync_start + 3; drm_mode->vtotal = (int )vtotal_lines; drm_mode->clock = (int )pixel_freq; if ((int )interlaced) { drm_mode->vtotal = drm_mode->vtotal * 2; drm_mode->flags = drm_mode->flags | 16U; } else { } drm_mode_set_name(drm_mode); if (((GTF_M == 600 && GTF_2C == 80) && GTF_K == 128) && GTF_2J == 40) { drm_mode->flags = 6U; } else { drm_mode->flags = 9U; } return (drm_mode); } } static char const __kstrtab_drm_gtf_mode_complex[21U] = { 'd', 'r', 'm', '_', 'g', 't', 'f', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'm', 'p', 'l', 'e', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_gtf_mode_complex ; struct kernel_symbol const __ksymtab_drm_gtf_mode_complex = {(unsigned long )(& drm_gtf_mode_complex), (char const *)(& __kstrtab_drm_gtf_mode_complex)}; struct drm_display_mode *drm_gtf_mode(struct drm_device *dev , int hdisplay , int vdisplay , int vrefresh , bool interlaced , int margins ) { struct drm_display_mode *tmp ; { tmp = drm_gtf_mode_complex(dev, hdisplay, vdisplay, vrefresh, (int )interlaced, margins, 600, 80, 128, 40); return (tmp); } } static char const __kstrtab_drm_gtf_mode[13U] = { 'd', 'r', 'm', '_', 'g', 't', 'f', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gtf_mode ; struct kernel_symbol const __ksymtab_drm_gtf_mode = {(unsigned long )(& drm_gtf_mode), (char const *)(& __kstrtab_drm_gtf_mode)}; void drm_display_mode_from_videomode(struct videomode const *vm , struct drm_display_mode *dmode ) { { dmode->hdisplay = (int )vm->hactive; dmode->hsync_start = (int )((unsigned int )dmode->hdisplay + (unsigned int )vm->hfront_porch); dmode->hsync_end = (int )((unsigned int )dmode->hsync_start + (unsigned int )vm->hsync_len); dmode->htotal = (int )((unsigned int )dmode->hsync_end + (unsigned int )vm->hback_porch); dmode->vdisplay = (int )vm->vactive; dmode->vsync_start = (int )((unsigned int )dmode->vdisplay + (unsigned int )vm->vfront_porch); dmode->vsync_end = (int )((unsigned int )dmode->vsync_start + (unsigned int )vm->vsync_len); dmode->vtotal = (int )((unsigned int )dmode->vsync_end + (unsigned int )vm->vback_porch); dmode->clock = (int )((unsigned long )vm->pixelclock / 1000UL); dmode->flags = 0U; if (((unsigned int )vm->flags & 2U) != 0U) { dmode->flags = dmode->flags | 1U; } else if ((int )vm->flags & 1) { dmode->flags = dmode->flags | 2U; } else { } if (((unsigned int )vm->flags & 8U) != 0U) { dmode->flags = dmode->flags | 4U; } else if (((unsigned int )vm->flags & 4U) != 0U) { dmode->flags = dmode->flags | 8U; } else { } if (((unsigned int )vm->flags & 256U) != 0U) { dmode->flags = dmode->flags | 16U; } else { } if (((unsigned int )vm->flags & 512U) != 0U) { dmode->flags = dmode->flags | 32U; } else { } if (((unsigned int )vm->flags & 1024U) != 0U) { dmode->flags = dmode->flags | 4096U; } else { } drm_mode_set_name(dmode); return; } } static char const __kstrtab_drm_display_mode_from_videomode[32U] = { 'd', 'r', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'm', 'o', 'd', 'e', '_', 'f', 'r', 'o', 'm', '_', 'v', 'i', 'd', 'e', 'o', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_display_mode_from_videomode ; struct kernel_symbol const __ksymtab_drm_display_mode_from_videomode = {(unsigned long )(& drm_display_mode_from_videomode), (char const *)(& __kstrtab_drm_display_mode_from_videomode)}; void drm_display_mode_to_videomode(struct drm_display_mode const *dmode , struct videomode *vm ) { { vm->hactive = (u32 )dmode->hdisplay; vm->hfront_porch = (u32 )((int )dmode->hsync_start - (int )dmode->hdisplay); vm->hsync_len = (u32 )((int )dmode->hsync_end - (int )dmode->hsync_start); vm->hback_porch = (u32 )((int )dmode->htotal - (int )dmode->hsync_end); vm->vactive = (u32 )dmode->vdisplay; vm->vfront_porch = (u32 )((int )dmode->vsync_start - (int )dmode->vdisplay); vm->vsync_len = (u32 )((int )dmode->vsync_end - (int )dmode->vsync_start); vm->vback_porch = (u32 )((int )dmode->vtotal - (int )dmode->vsync_end); vm->pixelclock = (unsigned long )((int )dmode->clock * 1000); vm->flags = 0; if ((int )dmode->flags & 1) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 2U); } else if (((unsigned int )dmode->flags & 2U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 1U); } else { } if (((unsigned int )dmode->flags & 4U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 8U); } else if (((unsigned int )dmode->flags & 8U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 4U); } else { } if (((unsigned int )dmode->flags & 16U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 256U); } else { } if (((unsigned int )dmode->flags & 32U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 512U); } else { } if (((unsigned int )dmode->flags & 4096U) != 0U) { vm->flags = (enum display_flags )((unsigned int )vm->flags | 1024U); } else { } return; } } static char const __kstrtab_drm_display_mode_to_videomode[30U] = { 'd', 'r', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'm', 'o', 'd', 'e', '_', 't', 'o', '_', 'v', 'i', 'd', 'e', 'o', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_display_mode_to_videomode ; struct kernel_symbol const __ksymtab_drm_display_mode_to_videomode = {(unsigned long )(& drm_display_mode_to_videomode), (char const *)(& __kstrtab_drm_display_mode_to_videomode)}; int of_get_drm_display_mode(struct device_node *np , struct drm_display_mode *dmode , int index ) { struct videomode vm ; int ret ; struct _ddebug descriptor ; char const *tmp ; long tmp___0 ; { ret = of_get_videomode(np, & vm, index); if (ret != 0) { return (ret); } else { } drm_display_mode_from_videomode((struct videomode const *)(& vm), dmode); descriptor.modname = "drm"; descriptor.function = "of_get_drm_display_mode"; 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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modes.c"; descriptor.format = "%s: got %dx%d display mode from %s\n"; descriptor.lineno = 685U; descriptor.flags = 0U; tmp___0 = ldv__builtin_expect((long )descriptor.flags & 1L, 0L); if (tmp___0 != 0L) { tmp = of_node_full_name((struct device_node const *)np); __dynamic_pr_debug(& descriptor, "%s: got %dx%d display mode from %s\n", tmp, vm.hactive, vm.vactive, np->name); } else { } drm_mode_debug_printmodeline((struct drm_display_mode const *)dmode); return (0); } } static char const __kstrtab_of_get_drm_display_mode[24U] = { 'o', 'f', '_', 'g', 'e', 't', '_', 'd', 'r', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_of_get_drm_display_mode ; struct kernel_symbol const __ksymtab_of_get_drm_display_mode = {(unsigned long )(& of_get_drm_display_mode), (char const *)(& __kstrtab_of_get_drm_display_mode)}; void drm_mode_set_name(struct drm_display_mode *mode ) { bool interlaced ; { interlaced = (mode->flags & 16U) != 0U; snprintf((char *)(& mode->name), 32UL, "%dx%d%s", mode->hdisplay, mode->vdisplay, (int )interlaced ? (char *)"i" : (char *)""); return; } } static char const __kstrtab_drm_mode_set_name[18U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 's', 'e', 't', '_', 'n', 'a', 'm', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_set_name ; struct kernel_symbol const __ksymtab_drm_mode_set_name = {(unsigned long )(& drm_mode_set_name), (char const *)(& __kstrtab_drm_mode_set_name)}; int drm_mode_hsync(struct drm_display_mode const *mode ) { unsigned int calc_val ; { if ((int )mode->hsync != 0) { return ((int )mode->hsync); } else { } if ((int )mode->htotal < 0) { return (0); } else { } calc_val = (unsigned int )(((int )mode->clock * 1000) / (int )mode->htotal); calc_val = calc_val + 500U; calc_val = calc_val / 1000U; return ((int )calc_val); } } static char const __kstrtab_drm_mode_hsync[15U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'h', 's', 'y', 'n', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_hsync ; struct kernel_symbol const __ksymtab_drm_mode_hsync = {(unsigned long )(& drm_mode_hsync), (char const *)(& __kstrtab_drm_mode_hsync)}; int drm_mode_vrefresh(struct drm_display_mode const *mode ) { int refresh ; unsigned int calc_val ; int vtotal ; { refresh = 0; if ((int )mode->vrefresh > 0) { refresh = mode->vrefresh; } else if ((int )mode->htotal > 0 && (int )mode->vtotal > 0) { vtotal = mode->vtotal; calc_val = (unsigned int )((int )mode->clock * 1000); calc_val = calc_val / (unsigned int )mode->htotal; refresh = (int )(((unsigned int )(vtotal / 2) + calc_val) / (unsigned int )vtotal); if (((unsigned int )mode->flags & 16U) != 0U) { refresh = refresh * 2; } else { } if (((unsigned int )mode->flags & 32U) != 0U) { refresh = refresh / 2; } else { } if ((int )mode->vscan > 1) { refresh = refresh / (int )mode->vscan; } else { } } else { } return (refresh); } } static char const __kstrtab_drm_mode_vrefresh[18U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'v', 'r', 'e', 'f', 'r', 'e', 's', 'h', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_vrefresh ; struct kernel_symbol const __ksymtab_drm_mode_vrefresh = {(unsigned long )(& drm_mode_vrefresh), (char const *)(& __kstrtab_drm_mode_vrefresh)}; void drm_mode_set_crtcinfo(struct drm_display_mode *p , int adjust_flags ) { unsigned int layout ; int _min1 ; int _min2 ; int _max1 ; int _max2 ; int _min1___0 ; int _min2___0 ; int _max1___0 ; int _max2___0 ; { if ((unsigned long )p == (unsigned long )((struct drm_display_mode *)0) || (p->type & 5U) == 1U) { return; } else { } p->crtc_clock = p->clock; p->crtc_hdisplay = p->hdisplay; p->crtc_hsync_start = p->hsync_start; p->crtc_hsync_end = p->hsync_end; p->crtc_htotal = p->htotal; p->crtc_hskew = p->hskew; p->crtc_vdisplay = p->vdisplay; p->crtc_vsync_start = p->vsync_start; p->crtc_vsync_end = p->vsync_end; p->crtc_vtotal = p->vtotal; if ((p->flags & 16U) != 0U) { if (adjust_flags & 1) { p->crtc_vdisplay = p->crtc_vdisplay / 2; p->crtc_vsync_start = p->crtc_vsync_start / 2; p->crtc_vsync_end = p->crtc_vsync_end / 2; p->crtc_vtotal = p->crtc_vtotal / 2; } else { } } else { } if ((adjust_flags & 4) == 0) { if ((p->flags & 32U) != 0U) { p->crtc_vdisplay = p->crtc_vdisplay * 2; p->crtc_vsync_start = p->crtc_vsync_start * 2; p->crtc_vsync_end = p->crtc_vsync_end * 2; p->crtc_vtotal = p->crtc_vtotal * 2; } else { } } else { } if ((adjust_flags & 8) == 0) { if (p->vscan > 1) { p->crtc_vdisplay = p->crtc_vdisplay * p->vscan; p->crtc_vsync_start = p->crtc_vsync_start * p->vscan; p->crtc_vsync_end = p->crtc_vsync_end * p->vscan; p->crtc_vtotal = p->crtc_vtotal * p->vscan; } else { } } else { } if ((adjust_flags & 2) != 0) { layout = p->flags & 507904U; switch (layout) { case 16384U: p->crtc_clock = p->crtc_clock * 2; p->crtc_vdisplay = p->crtc_vdisplay + p->crtc_vtotal; p->crtc_vsync_start = p->crtc_vsync_start + p->crtc_vtotal; p->crtc_vsync_end = p->crtc_vsync_end + p->crtc_vtotal; p->crtc_vtotal = p->crtc_vtotal + p->crtc_vtotal; goto ldv_39036; } ldv_39036: ; } else { } _min1 = p->crtc_vsync_start; _min2 = p->crtc_vdisplay; p->crtc_vblank_start = _min1 < _min2 ? _min1 : _min2; _max1 = p->crtc_vsync_end; _max2 = p->crtc_vtotal; p->crtc_vblank_end = _max1 > _max2 ? _max1 : _max2; _min1___0 = p->crtc_hsync_start; _min2___0 = p->crtc_hdisplay; p->crtc_hblank_start = _min1___0 < _min2___0 ? _min1___0 : _min2___0; _max1___0 = p->crtc_hsync_end; _max2___0 = p->crtc_htotal; p->crtc_hblank_end = _max1___0 > _max2___0 ? _max1___0 : _max2___0; return; } } static char const __kstrtab_drm_mode_set_crtcinfo[22U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 's', 'e', 't', '_', 'c', 'r', 't', 'c', 'i', 'n', 'f', 'o', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_set_crtcinfo ; struct kernel_symbol const __ksymtab_drm_mode_set_crtcinfo = {(unsigned long )(& drm_mode_set_crtcinfo), (char const *)(& __kstrtab_drm_mode_set_crtcinfo)}; void drm_mode_copy(struct drm_display_mode *dst , struct drm_display_mode const *src ) { int id ; struct list_head head ; { id = (int )dst->base.id; head = dst->head; *dst = *src; dst->base.id = (uint32_t )id; dst->head = head; return; } } static char const __kstrtab_drm_mode_copy[14U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'p', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_copy ; struct kernel_symbol const __ksymtab_drm_mode_copy = {(unsigned long )(& drm_mode_copy), (char const *)(& __kstrtab_drm_mode_copy)}; struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev , struct drm_display_mode const *mode ) { struct drm_display_mode *nmode ; { nmode = drm_mode_create(dev); if ((unsigned long )nmode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } drm_mode_copy(nmode, mode); return (nmode); } } static char const __kstrtab_drm_mode_duplicate[19U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'd', 'u', 'p', 'l', 'i', 'c', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_duplicate ; struct kernel_symbol const __ksymtab_drm_mode_duplicate = {(unsigned long )(& drm_mode_duplicate), (char const *)(& __kstrtab_drm_mode_duplicate)}; bool drm_mode_equal(struct drm_display_mode const *mode1 , struct drm_display_mode const *mode2 ) { bool tmp ; { if ((unsigned long )mode1 == (unsigned long )((struct drm_display_mode const *)0) && (unsigned long )mode2 == (unsigned long )((struct drm_display_mode const *)0)) { return (1); } else { } if ((unsigned long )mode1 == (unsigned long )((struct drm_display_mode const *)0) || (unsigned long )mode2 == (unsigned long )((struct drm_display_mode const *)0)) { return (0); } else { } if ((int )mode1->clock != 0 && (int )mode2->clock != 0) { if (1000000000UL / (unsigned long )mode1->clock != 1000000000UL / (unsigned long )mode2->clock) { return (0); } else { } } else if ((int )mode1->clock != (int )mode2->clock) { return (0); } else { } if ((((unsigned int )mode1->flags ^ (unsigned int )mode2->flags) & 507904U) != 0U) { return (0); } else { } tmp = drm_mode_equal_no_clocks_no_stereo(mode1, mode2); return (tmp); } } static char const __kstrtab_drm_mode_equal[15U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'e', 'q', 'u', 'a', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_equal ; struct kernel_symbol const __ksymtab_drm_mode_equal = {(unsigned long )(& drm_mode_equal), (char const *)(& __kstrtab_drm_mode_equal)}; bool drm_mode_equal_no_clocks_no_stereo(struct drm_display_mode const *mode1 , struct drm_display_mode const *mode2 ) { { if (((((((((((int )mode1->hdisplay == (int )mode2->hdisplay && (int )mode1->hsync_start == (int )mode2->hsync_start) && (int )mode1->hsync_end == (int )mode2->hsync_end) && (int )mode1->htotal == (int )mode2->htotal) && (int )mode1->hskew == (int )mode2->hskew) && (int )mode1->vdisplay == (int )mode2->vdisplay) && (int )mode1->vsync_start == (int )mode2->vsync_start) && (int )mode1->vsync_end == (int )mode2->vsync_end) && (int )mode1->vtotal == (int )mode2->vtotal) && (int )mode1->vscan == (int )mode2->vscan) && (((unsigned int )mode1->flags ^ (unsigned int )mode2->flags) & 4294459391U) == 0U) { return (1); } else { } return (0); } } static char const __kstrtab_drm_mode_equal_no_clocks_no_stereo[35U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'e', 'q', 'u', 'a', 'l', '_', 'n', 'o', '_', 'c', 'l', 'o', 'c', 'k', 's', '_', 'n', 'o', '_', 's', 't', 'e', 'r', 'e', 'o', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_equal_no_clocks_no_stereo ; struct kernel_symbol const __ksymtab_drm_mode_equal_no_clocks_no_stereo = {(unsigned long )(& drm_mode_equal_no_clocks_no_stereo), (char const *)(& __kstrtab_drm_mode_equal_no_clocks_no_stereo)}; enum drm_mode_status drm_mode_validate_basic(struct drm_display_mode const *mode ) { { if ((int )mode->clock == 0) { return (16); } else { } if ((((int )mode->hdisplay == 0 || (int )mode->hsync_start < (int )mode->hdisplay) || (int )mode->hsync_end < (int )mode->hsync_start) || (int )mode->htotal < (int )mode->hsync_end) { return (3); } else { } if ((((int )mode->vdisplay == 0 || (int )mode->vsync_start < (int )mode->vdisplay) || (int )mode->vsync_end < (int )mode->vsync_start) || (int )mode->vtotal < (int )mode->vsync_end) { return (4); } else { } return (0); } } static char const __kstrtab_drm_mode_validate_basic[24U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 'b', 'a', 's', 'i', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_validate_basic ; struct kernel_symbol const __ksymtab_drm_mode_validate_basic = {(unsigned long )(& drm_mode_validate_basic), (char const *)(& __kstrtab_drm_mode_validate_basic)}; enum drm_mode_status drm_mode_validate_size(struct drm_display_mode const *mode , int maxX , int maxY ) { { if (maxX > 0 && (int )mode->hdisplay > maxX) { return (11); } else { } if (maxY > 0 && (int )mode->vdisplay > maxY) { return (12); } else { } return (0); } } static char const __kstrtab_drm_mode_validate_size[23U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 's', 'i', 'z', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_validate_size ; struct kernel_symbol const __ksymtab_drm_mode_validate_size = {(unsigned long )(& drm_mode_validate_size), (char const *)(& __kstrtab_drm_mode_validate_size)}; static char const * const drm_mode_status_names[39U] = { "UNVERIFIED", "BAD", "OLD_ERROR", "OK", "HSYNC", "VSYNC", "H_ILLEGAL", "V_ILLEGAL", "BAD_WIDTH", "NOMODE", "NO_INTERLACE", "NO_DBLESCAN", "NO_VSCAN", "MEM", "VIRTUAL_X", "VIRTUAL_Y", "MEM_VIRT", "NOCLOCK", "CLOCK_HIGH", "CLOCK_LOW", "CLOCK_RANGE", "BAD_HVALUE", "BAD_VVALUE", "BAD_VSCAN", "HSYNC_NARROW", "HSYNC_WIDE", "HBLANK_NARROW", "HBLANK_WIDE", "VSYNC_NARROW", "VSYNC_WIDE", "VBLANK_NARROW", "VBLANK_WIDE", "PANEL", "INTERLACE_WIDTH", "ONE_WIDTH", "ONE_HEIGHT", "ONE_SIZE", "NO_REDUCED", "NO_STEREO"}; static char const *drm_get_mode_status_name(enum drm_mode_status status ) { int index ; int __ret_warn_on ; long tmp ; long tmp___0 ; { index = (int )status + 3; __ret_warn_on = index < 0 || (unsigned int )index > 38U; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modes.c", 1070); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (""); } else { } return ((char const *)drm_mode_status_names[index]); } } void drm_mode_prune_invalid(struct drm_device *dev , struct list_head *mode_list , bool verbose ) { struct drm_display_mode *mode ; struct drm_display_mode *t ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; char const *tmp ; long tmp___0 ; struct list_head const *__mptr___1 ; { __mptr = (struct list_head const *)mode_list->next; mode = (struct drm_display_mode *)__mptr; __mptr___0 = (struct list_head const *)mode->head.next; t = (struct drm_display_mode *)__mptr___0; goto ldv_39156; ldv_39155: ; if ((int )mode->status != 0) { list_del(& mode->head); if ((int )verbose) { drm_mode_debug_printmodeline((struct drm_display_mode const *)mode); tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { tmp = drm_get_mode_status_name(mode->status); drm_ut_debug_printk("drm_mode_prune_invalid", "Not using %s mode: %s\n", (char *)(& mode->name), tmp); } else { } } else { } drm_mode_destroy(dev, mode); } else { } mode = t; __mptr___1 = (struct list_head const *)t->head.next; t = (struct drm_display_mode *)__mptr___1; ldv_39156: ; if ((unsigned long )(& mode->head) != (unsigned long )mode_list) { goto ldv_39155; } else { } return; } } static char const __kstrtab_drm_mode_prune_invalid[23U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'p', 'r', 'u', 'n', 'e', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_prune_invalid ; struct kernel_symbol const __ksymtab_drm_mode_prune_invalid = {(unsigned long )(& drm_mode_prune_invalid), (char const *)(& __kstrtab_drm_mode_prune_invalid)}; static int drm_mode_compare(void *priv , struct list_head *lh_a , struct list_head *lh_b ) { struct drm_display_mode *a ; struct list_head const *__mptr ; struct drm_display_mode *b ; struct list_head const *__mptr___0 ; int diff ; { __mptr = (struct list_head const *)lh_a; a = (struct drm_display_mode *)__mptr; __mptr___0 = (struct list_head const *)lh_b; b = (struct drm_display_mode *)__mptr___0; diff = ((b->type & 8U) != 0U) - ((a->type & 8U) != 0U); if (diff != 0) { return (diff); } else { } diff = b->hdisplay * b->vdisplay - a->hdisplay * a->vdisplay; if (diff != 0) { return (diff); } else { } diff = b->vrefresh - a->vrefresh; if (diff != 0) { return (diff); } else { } diff = b->clock - a->clock; return (diff); } } void drm_mode_sort(struct list_head *mode_list ) { { list_sort((void *)0, mode_list, & drm_mode_compare); return; } } static char const __kstrtab_drm_mode_sort[14U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 's', 'o', 'r', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_sort ; struct kernel_symbol const __ksymtab_drm_mode_sort = {(unsigned long )(& drm_mode_sort), (char const *)(& __kstrtab_drm_mode_sort)}; void drm_mode_connector_list_update(struct drm_connector *connector , bool merge_type_bits ) { struct drm_display_mode *mode ; struct drm_display_mode *pmode ; struct drm_display_mode *pt ; int found_it ; int __ret_warn_on ; int tmp ; long tmp___0 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; bool tmp___1 ; struct list_head const *__mptr___2 ; struct list_head const *__mptr___3 ; { tmp = mutex_is_locked(& (connector->dev)->mode_config.mutex); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modes.c", 1173); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __mptr = (struct list_head const *)connector->probed_modes.next; pmode = (struct drm_display_mode *)__mptr; __mptr___0 = (struct list_head const *)pmode->head.next; pt = (struct drm_display_mode *)__mptr___0; goto ldv_39213; ldv_39212: found_it = 0; __mptr___1 = (struct list_head const *)connector->modes.next; mode = (struct drm_display_mode *)__mptr___1; goto ldv_39211; ldv_39210: tmp___1 = drm_mode_equal((struct drm_display_mode const *)pmode, (struct drm_display_mode const *)mode); if ((int )tmp___1) { found_it = 1; mode->status = pmode->status; if ((int )merge_type_bits) { mode->type = mode->type | pmode->type; } else { mode->type = pmode->type; } list_del(& pmode->head); drm_mode_destroy(connector->dev, pmode); goto ldv_39209; } else { } __mptr___2 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___2; ldv_39211: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->modes)) { goto ldv_39210; } else { } ldv_39209: ; if (found_it == 0) { list_move_tail(& pmode->head, & connector->modes); } else { } pmode = pt; __mptr___3 = (struct list_head const *)pt->head.next; pt = (struct drm_display_mode *)__mptr___3; ldv_39213: ; if ((unsigned long )(& pmode->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_39212; } else { } return; } } static char const __kstrtab_drm_mode_connector_list_update[31U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 'l', 'i', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_connector_list_update ; struct kernel_symbol const __ksymtab_drm_mode_connector_list_update = {(unsigned long )(& drm_mode_connector_list_update), (char const *)(& __kstrtab_drm_mode_connector_list_update)}; bool drm_mode_parse_command_line_for_connector(char const *mode_option , struct drm_connector *connector , struct drm_cmdline_mode *mode ) { char const *name ; unsigned int namelen ; bool res_specified ; bool bpp_specified ; bool refresh_specified ; unsigned int xres ; unsigned int yres ; unsigned int bpp ; unsigned int refresh ; bool yres_specified ; bool cvt ; bool rb ; bool interlace ; bool margins ; bool was_digit ; int i ; enum drm_connector_force force ; size_t tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; char *ch ; long tmp___3 ; { res_specified = 0; bpp_specified = 0; refresh_specified = 0; xres = 0U; yres = 0U; bpp = 32U; refresh = 0U; yres_specified = 0; cvt = 0; rb = 0; interlace = 0; margins = 0; was_digit = 0; force = 0; if ((unsigned long )mode_option == (unsigned long )((char const *)0)) { mode->specified = 0; return (0); } else { } name = mode_option; tmp = strlen(name); namelen = (unsigned int )tmp; i = (int )(namelen - 1U); goto ldv_39260; ldv_39259: ; switch ((int )*(name + (unsigned long )i)) { case 64: ; if (((((! refresh_specified && ! bpp_specified) && ! yres_specified) && ! cvt) && ! rb) && (int )was_digit) { tmp___0 = simple_strtol(name + ((unsigned long )i + 1UL), (char **)0, 10U); refresh = (unsigned int )tmp___0; refresh_specified = 1; was_digit = 0; } else { goto done; } goto ldv_39247; case 45: ; if ((((! bpp_specified && ! yres_specified) && ! cvt) && ! rb) && (int )was_digit) { tmp___1 = simple_strtol(name + ((unsigned long )i + 1UL), (char **)0, 10U); bpp = (unsigned int )tmp___1; bpp_specified = 1; was_digit = 0; } else { goto done; } goto ldv_39247; case 120: ; if (! yres_specified && (int )was_digit) { tmp___2 = simple_strtol(name + ((unsigned long )i + 1UL), (char **)0, 10U); yres = (unsigned int )tmp___2; yres_specified = 1; was_digit = 0; } else { goto done; } goto ldv_39247; case 57: case 56: case 55: case 54: case 53: case 52: case 51: case 50: case 49: case 48: was_digit = 1; goto ldv_39247; case 77: ; if (((int )yres_specified || (int )cvt) || (int )was_digit) { goto done; } else { } cvt = 1; goto ldv_39247; case 82: ; if ((((int )yres_specified || (int )cvt) || (int )rb) || (int )was_digit) { goto done; } else { } rb = 1; goto ldv_39247; case 109: ; if (((int )cvt || (int )yres_specified) || (int )was_digit) { goto done; } else { } margins = 1; goto ldv_39247; case 105: ; if (((int )cvt || (int )yres_specified) || (int )was_digit) { goto done; } else { } interlace = 1; goto ldv_39247; case 101: ; if (((((int )yres_specified || (int )bpp_specified) || (int )refresh_specified) || (int )was_digit) || (unsigned int )force != 0U) { goto done; } else { } force = 2; goto ldv_39247; case 68: ; if (((((int )yres_specified || (int )bpp_specified) || (int )refresh_specified) || (int )was_digit) || (unsigned int )force != 0U) { goto done; } else { } if (connector->connector_type != 2 && connector->connector_type != 12) { force = 2; } else { force = 3; } goto ldv_39247; case 100: ; if (((((int )yres_specified || (int )bpp_specified) || (int )refresh_specified) || (int )was_digit) || (unsigned int )force != 0U) { goto done; } else { } force = 1; goto ldv_39247; default: ; goto done; } ldv_39247: i = i - 1; ldv_39260: ; if (i >= 0) { goto ldv_39259; } else { } if (i < 0 && (int )yres_specified) { tmp___3 = simple_strtol(name, & ch, 10U); xres = (unsigned int )tmp___3; if ((unsigned long )ch != (unsigned long )((char *)0) && (int )((signed char )*ch) == 120) { res_specified = 1; } else { i = (int )((unsigned int )((long )ch) - (unsigned int )((long )name)); } } else if (! yres_specified && (int )was_digit) { i = 0; } else { } done: ; if (i >= 0) { printk("\fparse error at position %i in video mode \'%s\'\n", i, name); mode->specified = 0; return (0); } else { } if ((int )res_specified) { mode->specified = 1; mode->xres = (int )xres; mode->yres = (int )yres; } else { } if ((int )refresh_specified) { mode->refresh_specified = 1; mode->refresh = (int )refresh; } else { } if ((int )bpp_specified) { mode->bpp_specified = 1; mode->bpp = (int )bpp; } else { } mode->rb = rb; mode->cvt = cvt; mode->interlace = interlace; mode->margins = margins; mode->force = force; return (1); } } static char const __kstrtab_drm_mode_parse_command_line_for_connector[42U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'p', 'a', 'r', 's', 'e', '_', 'c', 'o', 'm', 'm', 'a', 'n', 'd', '_', 'l', 'i', 'n', 'e', '_', 'f', 'o', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_parse_command_line_for_connector ; struct kernel_symbol const __ksymtab_drm_mode_parse_command_line_for_connector = {(unsigned long )(& drm_mode_parse_command_line_for_connector), (char const *)(& __kstrtab_drm_mode_parse_command_line_for_connector)}; struct drm_display_mode *drm_mode_create_from_cmdline_mode(struct drm_device *dev , struct drm_cmdline_mode *cmd ) { struct drm_display_mode *mode ; { if ((int )cmd->cvt) { mode = drm_cvt_mode(dev, cmd->xres, cmd->yres, (int )cmd->refresh_specified ? cmd->refresh : 60, (int )cmd->rb, (int )cmd->interlace, (int )cmd->margins); } else { mode = drm_gtf_mode(dev, cmd->xres, cmd->yres, (int )cmd->refresh_specified ? cmd->refresh : 60, (int )cmd->interlace, (int )cmd->margins); } if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } mode->type = mode->type | 32U; drm_mode_set_crtcinfo(mode, 1); return (mode); } } static char const __kstrtab_drm_mode_create_from_cmdline_mode[34U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'r', 'o', 'm', '_', 'c', 'm', 'd', 'l', 'i', 'n', 'e', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_create_from_cmdline_mode ; struct kernel_symbol const __ksymtab_drm_mode_create_from_cmdline_mode = {(unsigned long )(& drm_mode_create_from_cmdline_mode), (char const *)(& __kstrtab_drm_mode_create_from_cmdline_mode)}; void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out , struct drm_display_mode const *in ) { int __ret_warn_on ; long tmp ; { __ret_warn_on = (((((((((int )in->hdisplay > 65535 || (int )in->hsync_start > 65535) || (int )in->hsync_end > 65535) || (int )in->htotal > 65535) || (int )in->hskew > 65535) || (int )in->vdisplay > 65535) || (int )in->vsync_start > 65535) || (int )in->vsync_end > 65535) || (int )in->vtotal > 65535) || (int )in->vscan > 65535; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modes.c", 1425, "timing values too large for mode info\n"); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); out->clock = (__u32 )in->clock; out->hdisplay = (__u16 )in->hdisplay; out->hsync_start = (__u16 )in->hsync_start; out->hsync_end = (__u16 )in->hsync_end; out->htotal = (__u16 )in->htotal; out->hskew = (__u16 )in->hskew; out->vdisplay = (__u16 )in->vdisplay; out->vsync_start = (__u16 )in->vsync_start; out->vsync_end = (__u16 )in->vsync_end; out->vtotal = (__u16 )in->vtotal; out->vscan = (__u16 )in->vscan; out->vrefresh = (__u32 )in->vrefresh; out->flags = in->flags; out->type = in->type; strncpy((char *)(& out->name), (char const *)(& in->name), 32UL); out->name[31] = 0; return; } } int drm_mode_convert_umode(struct drm_display_mode *out , struct drm_mode_modeinfo const *in ) { int ret ; { ret = -22; if ((int )in->clock < 0 || (int )in->vrefresh < 0) { ret = -34; goto out; } else { } if (((unsigned int )in->flags & 507904U) > 131072U) { goto out; } else { } out->clock = (int )in->clock; out->hdisplay = (int )in->hdisplay; out->hsync_start = (int )in->hsync_start; out->hsync_end = (int )in->hsync_end; out->htotal = (int )in->htotal; out->hskew = (int )in->hskew; out->vdisplay = (int )in->vdisplay; out->vsync_start = (int )in->vsync_start; out->vsync_end = (int )in->vsync_end; out->vtotal = (int )in->vtotal; out->vscan = (int )in->vscan; out->vrefresh = (int )in->vrefresh; out->flags = in->flags; out->type = in->type; strncpy((char *)(& out->name), (char const *)(& in->name), 32UL); out->name[31] = 0; out->status = drm_mode_validate_basic((struct drm_display_mode const *)out); if ((int )out->status != 0) { goto out; } else { } ret = 0; out: ; return (ret); } } bool ldv_queue_work_on_311(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_312(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_313(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_314(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_315(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void print_hex_dump(char const * , char const * , int , int , int , void const * , size_t , bool ) ; __inline static void __list_splice(struct list_head const *list , struct list_head *prev , struct list_head *next ) { struct list_head *first ; struct list_head *last ; { first = list->next; last = list->prev; first->prev = prev; prev->next = first; last->next = next; next->prev = last; return; } } __inline static void list_splice_tail(struct list_head *list , struct list_head *head ) { int tmp ; { tmp = list_empty((struct list_head const *)list); if (tmp == 0) { __list_splice((struct list_head const *)list, head->prev, head); } else { } return; } } extern int strncmp(char const * , char const * , __kernel_size_t ) ; extern void *memchr_inv(void const * , int , size_t ) ; bool ldv_queue_work_on_325(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_327(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_326(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_329(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_328(struct workqueue_struct *ldv_func_arg1 ) ; extern void dev_warn(struct device const * , char const * , ...) ; extern int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe * ) ; extern int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe * ) ; extern int i2c_transfer(struct i2c_adapter * , struct i2c_msg * , int ) ; bool drm_probe_ddc(struct i2c_adapter *adapter ) ; struct edid *drm_get_edid(struct drm_connector *connector , struct i2c_adapter *adapter ) ; struct edid *drm_edid_duplicate(struct edid const *edid ) ; int drm_add_edid_modes(struct drm_connector *connector , struct edid *edid ) ; u8 drm_match_cea_mode(struct drm_display_mode const *to_match ) ; enum hdmi_picture_aspect drm_get_cea_aspect_ratio(u8 const video_code ) ; bool drm_detect_hdmi_monitor(struct edid *edid ) ; bool drm_detect_monitor_audio(struct edid *edid ) ; bool drm_rgb_quant_range_selectable(struct edid *edid ) ; int drm_add_modes_noedid(struct drm_connector *connector , int hdisplay , int vdisplay ) ; void drm_set_preferred_mode(struct drm_connector *connector , int hpref , int vpref ) ; int drm_edid_header_is_valid(u8 const *raw_edid ) ; bool drm_edid_block_valid(u8 *raw_edid , int block , bool print_bad_edid , bool *edid_corrupt ) ; bool drm_edid_is_valid(struct edid *edid ) ; struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev , int hsize , int vsize , int fresh , bool rb ) ; void drm_edid_to_eld(struct drm_connector *connector , struct edid *edid ) ; int drm_edid_to_sad(struct edid *edid , struct cea_sad **sads ) ; int drm_edid_to_speaker_allocation(struct edid *edid , u8 **sadb ) ; int drm_av_sync_delay(struct drm_connector *connector , struct drm_display_mode *mode ) ; struct drm_connector *drm_select_eld(struct drm_encoder *encoder , struct drm_display_mode *mode ) ; int drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame , struct drm_display_mode const *mode ) ; int drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame , struct drm_display_mode const *mode ) ; __inline static int drm_eld_mnl(uint8_t const *eld ) { { return ((int )*(eld + 4UL) & 31); } } __inline static int drm_eld_sad_count(uint8_t const *eld ) { { return ((int )((int const )*(eld + 5UL) >> 4)); } } __inline static int drm_eld_calc_baseline_block_size(uint8_t const *eld ) { int tmp ; int tmp___0 ; { tmp = drm_eld_mnl(eld); tmp___0 = drm_eld_sad_count(eld); return ((tmp + 16) + tmp___0 * 3); } } __inline static int drm_eld_size(uint8_t const *eld ) { { return (((int )*(eld + 2UL) + 1) * 4); } } struct edid *drm_do_get_edid(struct drm_connector *connector , int (*get_edid_block)(void * , u8 * , unsigned int , size_t ) , void *data ) ; static struct edid_quirk edid_quirk_list[19U] = { {{'A', 'C', 'R', '\000'}, 44358, 1U}, {{'A', 'P', 'I', '\000'}, 30210, 1U}, {{'A', 'C', 'R', '\000'}, 2423, 32U}, {{'M', 'A', 'X', '\000'}, 1516, 1U}, {{'M', 'A', 'X', '\000'}, 1918, 1U}, {{'E', 'P', 'I', '\000'}, 59264, 2U}, {{'E', 'P', 'I', '\000'}, 8232, 1U}, {{'F', 'C', 'M', '\000'}, 13600, 12U}, {{'L', 'P', 'L', '\000'}, 0, 16U}, {{'L', 'P', 'L', '\000'}, 10752, 16U}, {{'P', 'H', 'L', '\000'}, 57364, 32U}, {{'P', 'T', 'S', '\000'}, 765, 32U}, {{'S', 'A', 'M', '\000'}, 541, 64U}, {{'S', 'A', 'M', '\000'}, 596, 1U}, {{'S', 'A', 'M', '\000'}, 638, 1U}, {{'S', 'N', 'Y', '\000'}, 9537, 512U}, {{'V', 'S', 'C', '\000'}, 5020, 128U}, {{'M', 'E', 'D', '\000'}, 1976, 4U}, {{'S', 'E', 'C', '\000'}, 53299, 256U}}; static struct drm_display_mode const drm_dmt_modes[88U] = { {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '3', '5', '0', '\000'}, 0, 64U, 31500, 640, 672, 736, 832, 0, 350, 382, 385, 445, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '0', '0', '\000'}, 0, 64U, 31500, 640, 672, 736, 832, 0, 400, 401, 404, 445, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '0', '0', '\000'}, 0, 64U, 35500, 720, 756, 828, 936, 0, 400, 401, 404, 446, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 25175, 640, 656, 752, 800, 0, 480, 490, 492, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 31500, 640, 664, 704, 832, 0, 480, 489, 492, 520, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 31500, 640, 656, 720, 840, 0, 480, 481, 484, 500, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 36000, 640, 696, 752, 832, 0, 480, 481, 484, 509, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 36000, 800, 824, 896, 1024, 0, 600, 601, 603, 625, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 40000, 800, 840, 968, 1056, 0, 600, 601, 605, 628, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 50000, 800, 856, 976, 1040, 0, 600, 637, 643, 666, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 49500, 800, 816, 896, 1056, 0, 600, 601, 604, 625, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 56250, 800, 832, 896, 1048, 0, 600, 601, 604, 631, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 73250, 800, 848, 880, 960, 0, 600, 603, 607, 636, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '4', '8', 'x', '4', '8', '0', '\000'}, 0, 64U, 33750, 848, 864, 976, 1088, 0, 480, 486, 494, 517, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', 'i', '\000'}, 0, 64U, 44900, 1024, 1032, 1208, 1264, 0, 768, 768, 772, 817, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 65000, 1024, 1048, 1184, 1344, 0, 768, 771, 777, 806, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 75000, 1024, 1048, 1184, 1328, 0, 768, 771, 777, 806, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 78750, 1024, 1040, 1136, 1312, 0, 768, 769, 772, 800, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 94500, 1024, 1072, 1168, 1376, 0, 768, 769, 772, 808, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 115500, 1024, 1072, 1104, 1184, 0, 768, 771, 775, 813, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '1', '5', '2', 'x', '8', '6', '4', '\000'}, 0, 64U, 108000, 1152, 1216, 1344, 1600, 0, 864, 865, 868, 900, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 74250, 1280, 1390, 1430, 1650, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 68250, 1280, 1328, 1360, 1440, 0, 768, 771, 778, 790, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 79500, 1280, 1344, 1472, 1664, 0, 768, 771, 778, 798, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 102250, 1280, 1360, 1488, 1696, 0, 768, 771, 778, 805, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 117500, 1280, 1360, 1496, 1712, 0, 768, 771, 778, 809, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 140250, 1280, 1328, 1360, 1440, 0, 768, 771, 778, 813, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '8', '0', '0', '\000'}, 0, 64U, 71000, 1280, 1328, 1360, 1440, 0, 800, 803, 809, 823, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '8', '0', '0', '\000'}, 0, 64U, 83500, 1280, 1352, 1480, 1680, 0, 800, 803, 809, 831, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '8', '0', '0', '\000'}, 0, 64U, 106500, 1280, 1360, 1488, 1696, 0, 800, 803, 809, 838, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '8', '0', '0', '\000'}, 0, 64U, 122500, 1280, 1360, 1496, 1712, 0, 800, 803, 809, 843, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '8', '0', '0', '\000'}, 0, 64U, 146250, 1280, 1328, 1360, 1440, 0, 800, 803, 809, 847, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '9', '6', '0', '\000'}, 0, 64U, 108000, 1280, 1376, 1488, 1800, 0, 960, 961, 964, 1000, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '9', '6', '0', '\000'}, 0, 64U, 148500, 1280, 1344, 1504, 1728, 0, 960, 961, 964, 1011, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '9', '6', '0', '\000'}, 0, 64U, 175500, 1280, 1328, 1360, 1440, 0, 960, 963, 967, 1017, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '1', '0', '2', '4', '\000'}, 0, 64U, 108000, 1280, 1328, 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '1', '0', '2', '4', '\000'}, 0, 64U, 135000, 1280, 1296, 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '1', '0', '2', '4', '\000'}, 0, 64U, 157500, 1280, 1344, 1504, 1728, 0, 1024, 1025, 1028, 1072, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '1', '0', '2', '4', '\000'}, 0, 64U, 187250, 1280, 1328, 1360, 1440, 0, 1024, 1027, 1034, 1084, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '3', '6', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 85500, 1360, 1424, 1536, 1792, 0, 768, 771, 777, 795, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '3', '6', '0', 'x', '7', '6', '8', '\000'}, 0, 64U, 148250, 1360, 1408, 1440, 1520, 0, 768, 771, 776, 813, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '3', '6', '6', 'x', '7', '6', '8', '\000'}, 0, 64U, 85500, 1366, 1436, 1579, 1792, 0, 768, 771, 774, 798, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '3', '6', '6', 'x', '7', '6', '8', '\000'}, 0, 64U, 72000, 1366, 1380, 1436, 1500, 0, 768, 769, 772, 800, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '0', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 101000, 1400, 1448, 1480, 1560, 0, 1050, 1053, 1057, 1080, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '0', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 121750, 1400, 1488, 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '0', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 156000, 1400, 1504, 1648, 1896, 0, 1050, 1053, 1057, 1099, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '0', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 179500, 1400, 1504, 1656, 1912, 0, 1050, 1053, 1057, 1105, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '0', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 208000, 1400, 1448, 1480, 1560, 0, 1050, 1053, 1057, 1112, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 88750, 1440, 1488, 1520, 1600, 0, 900, 903, 909, 926, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 106500, 1440, 1520, 1672, 1904, 0, 900, 903, 909, 934, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 136750, 1440, 1536, 1688, 1936, 0, 900, 903, 909, 942, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 157000, 1440, 1544, 1696, 1952, 0, 900, 903, 909, 948, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 182750, 1440, 1488, 1520, 1600, 0, 900, 903, 909, 953, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '9', '0', '0', '\000'}, 0, 64U, 108000, 1600, 1624, 1704, 1800, 0, 900, 901, 904, 1000, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 162000, 1600, 1664, 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 175500, 1600, 1664, 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 189000, 1600, 1664, 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 202500, 1600, 1664, 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 229500, 1600, 1664, 1856, 2160, 0, 1200, 1201, 1204, 1250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '0', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 268250, 1600, 1648, 1680, 1760, 0, 1200, 1203, 1207, 1271, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '8', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 119000, 1680, 1728, 1760, 1840, 0, 1050, 1053, 1059, 1080, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '8', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 146250, 1680, 1784, 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '8', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 187000, 1680, 1800, 1976, 2272, 0, 1050, 1053, 1059, 1099, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '8', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 214750, 1680, 1808, 1984, 2288, 0, 1050, 1053, 1059, 1105, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '6', '8', '0', 'x', '1', '0', '5', '0', '\000'}, 0, 64U, 245500, 1680, 1728, 1760, 1840, 0, 1050, 1053, 1059, 1112, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '7', '9', '2', 'x', '1', '3', '4', '4', '\000'}, 0, 64U, 204750, 1792, 1920, 2120, 2448, 0, 1344, 1345, 1348, 1394, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '7', '9', '2', 'x', '1', '3', '4', '4', '\000'}, 0, 64U, 261000, 1792, 1888, 2104, 2456, 0, 1344, 1345, 1348, 1417, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '7', '9', '2', 'x', '1', '3', '4', '4', '\000'}, 0, 64U, 333250, 1792, 1840, 1872, 1952, 0, 1344, 1347, 1351, 1423, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '8', '5', '6', 'x', '1', '3', '9', '2', '\000'}, 0, 64U, 218250, 1856, 1952, 2176, 2528, 0, 1392, 1393, 1396, 1439, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '8', '5', '6', 'x', '1', '3', '9', '2', '\000'}, 0, 64U, 288000, 1856, 1984, 2208, 2560, 0, 1392, 1393, 1396, 1500, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '8', '5', '6', 'x', '1', '3', '9', '2', '\000'}, 0, 64U, 356500, 1856, 1904, 1936, 2016, 0, 1392, 1395, 1399, 1474, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 148500, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 154000, 1920, 1968, 2000, 2080, 0, 1200, 1203, 1209, 1235, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 193250, 1920, 2056, 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 245250, 1920, 2056, 2264, 2608, 0, 1200, 1203, 1209, 1255, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 281250, 1920, 2064, 2272, 2624, 0, 1200, 1203, 1209, 1262, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '2', '0', '0', '\000'}, 0, 64U, 317000, 1920, 1968, 2000, 2080, 0, 1200, 1203, 1209, 1271, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '4', '4', '0', '\000'}, 0, 64U, 234000, 1920, 2048, 2256, 2600, 0, 1440, 1441, 1444, 1500, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '4', '4', '0', '\000'}, 0, 64U, 297000, 1920, 2064, 2288, 2640, 0, 1440, 1441, 1444, 1500, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '4', '4', '0', '\000'}, 0, 64U, 380500, 1920, 1968, 2000, 2080, 0, 1440, 1443, 1447, 1525, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '0', '4', '8', 'x', '1', '1', '5', '2', '\000'}, 0, 64U, 162000, 2048, 2074, 2154, 2250, 0, 1152, 1153, 1156, 1200, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '5', '6', '0', 'x', '1', '6', '0', '0', '\000'}, 0, 64U, 268500, 2560, 2608, 2640, 2720, 0, 1600, 1603, 1609, 1646, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '5', '6', '0', 'x', '1', '6', '0', '0', '\000'}, 0, 64U, 348500, 2560, 2752, 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '5', '6', '0', 'x', '1', '6', '0', '0', '\000'}, 0, 64U, 443250, 2560, 2768, 3048, 3536, 0, 1600, 1603, 1609, 1672, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '5', '6', '0', 'x', '1', '6', '0', '0', '\000'}, 0, 64U, 505250, 2560, 2768, 3048, 3536, 0, 1600, 1603, 1609, 1682, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '5', '6', '0', 'x', '1', '6', '0', '0', '\000'}, 0, 64U, 552750, 2560, 2608, 2640, 2720, 0, 1600, 1603, 1609, 1694, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'4', '0', '9', '6', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 556744, 4096, 4104, 4136, 4176, 0, 2160, 2208, 2216, 2222, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'4', '0', '9', '6', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 556188, 4096, 4104, 4136, 4176, 0, 2160, 2208, 2216, 2222, 0, 9U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; static struct drm_display_mode const edid_est_modes[17U] = { {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 40000, 800, 840, 968, 1056, 0, 600, 601, 605, 628, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 36000, 800, 824, 896, 1024, 0, 600, 601, 603, 625, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 31500, 640, 656, 720, 840, 0, 480, 481, 484, 500, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 31500, 640, 664, 704, 832, 0, 480, 489, 491, 520, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 30240, 640, 704, 768, 864, 0, 480, 483, 486, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 25200, 640, 656, 752, 800, 0, 480, 490, 492, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '0', '0', '\000'}, 0, 64U, 35500, 720, 738, 846, 900, 0, 400, 421, 423, 449, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '0', '0', '\000'}, 0, 64U, 28320, 720, 738, 846, 900, 0, 400, 412, 414, 449, 0, 6U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '1', '0', '2', '4', '\000'}, 0, 64U, 135000, 1280, 1296, 1440, 1688, 0, 1024, 1025, 1028, 1066, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 78800, 1024, 1040, 1136, 1312, 0, 768, 769, 772, 800, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 75000, 1024, 1048, 1184, 1328, 0, 768, 771, 777, 806, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', '\000'}, 0, 64U, 65000, 1024, 1048, 1184, 1344, 0, 768, 771, 777, 806, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '0', '2', '4', 'x', '7', '6', '8', 'i', '\000'}, 0, 64U, 44900, 1024, 1032, 1208, 1264, 0, 768, 768, 776, 817, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '3', '2', 'x', '6', '2', '4', '\000'}, 0, 64U, 57284, 832, 864, 928, 1152, 0, 624, 625, 628, 667, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 49500, 800, 816, 896, 1056, 0, 600, 601, 604, 625, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'8', '0', '0', 'x', '6', '0', '0', '\000'}, 0, 64U, 50000, 800, 856, 976, 1040, 0, 600, 637, 643, 666, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '1', '5', '2', 'x', '8', '6', '4', '\000'}, 0, 64U, 108000, 1152, 1216, 1344, 1600, 0, 864, 865, 868, 900, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; static struct minimode const est3_modes[44U] = { {640, 350, 85, 0}, {640, 400, 85, 0}, {720, 400, 85, 0}, {640, 480, 85, 0}, {848, 480, 60, 0}, {800, 600, 85, 0}, {1024, 768, 85, 0}, {1152, 864, 75, 0}, {1280, 768, 60, 1}, {1280, 768, 60, 0}, {1280, 768, 75, 0}, {1280, 768, 85, 0}, {1280, 960, 60, 0}, {1280, 960, 85, 0}, {1280, 1024, 60, 0}, {1280, 1024, 85, 0}, {1360, 768, 60, 0}, {1440, 900, 60, 1}, {1440, 900, 60, 0}, {1440, 900, 75, 0}, {1440, 900, 85, 0}, {1400, 1050, 60, 1}, {1400, 1050, 60, 0}, {1400, 1050, 75, 0}, {1400, 1050, 85, 0}, {1680, 1050, 60, 1}, {1680, 1050, 60, 0}, {1680, 1050, 75, 0}, {1680, 1050, 85, 0}, {1600, 1200, 60, 0}, {1600, 1200, 65, 0}, {1600, 1200, 70, 0}, {1600, 1200, 75, 0}, {1600, 1200, 85, 0}, {1792, 1344, 60, 0}, {1792, 1344, 75, 0}, {1856, 1392, 60, 0}, {1856, 1392, 75, 0}, {1920, 1200, 60, 1}, {1920, 1200, 60, 0}, {1920, 1200, 75, 0}, {1920, 1200, 85, 0}, {1920, 1440, 60, 0}, {1920, 1440, 75, 0}}; static struct minimode const extra_modes[7U] = { {1024, 576, 60, 0}, {1366, 768, 60, 0}, {1600, 900, 60, 0}, {1680, 945, 60, 0}, {1920, 1080, 60, 0}, {2048, 1152, 60, 0}, {2048, 1536, 60, 0}}; static struct drm_display_mode const edid_cea_modes[64U] = { {{0, 0}, {0U, 3739147998U, 0}, {'6', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 25175, 640, 656, 752, 800, 0, 480, 490, 492, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 27000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 27000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 74250, 1280, 1390, 1430, 1650, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', 'i', '\000'}, 0, 64U, 74250, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 13500, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 13500, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '2', '4', '0', '\000'}, 0, 64U, 13500, 720, 739, 801, 858, 0, 240, 244, 247, 262, 0, 4106U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '2', '4', '0', '\000'}, 0, 64U, 13500, 720, 739, 801, 858, 0, 240, 244, 247, 262, 0, 4106U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 54000, 2880, 2956, 3204, 3432, 0, 480, 488, 494, 525, 0, 26U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 54000, 2880, 2956, 3204, 3432, 0, 480, 488, 494, 525, 0, 26U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '2', '4', '0', '\000'}, 0, 64U, 54000, 2880, 2956, 3204, 3432, 0, 240, 244, 247, 262, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '2', '4', '0', '\000'}, 0, 64U, 54000, 2880, 2956, 3204, 3432, 0, 240, 244, 247, 262, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 54000, 1440, 1472, 1596, 1716, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 54000, 1440, 1472, 1596, 1716, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 148500, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 27000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 27000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 74250, 1280, 1720, 1760, 1980, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', 'i', '\000'}, 0, 64U, 74250, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 13500, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 13500, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '2', '8', '8', '\000'}, 0, 64U, 13500, 720, 732, 795, 864, 0, 288, 290, 293, 312, 0, 4106U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '2', '8', '8', '\000'}, 0, 64U, 13500, 720, 732, 795, 864, 0, 288, 290, 293, 312, 0, 4106U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 54000, 2880, 2928, 3180, 3456, 0, 576, 580, 586, 625, 0, 26U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 54000, 2880, 2928, 3180, 3456, 0, 576, 580, 586, 625, 0, 26U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '2', '8', '8', '\000'}, 0, 64U, 54000, 2880, 2928, 3180, 3456, 0, 288, 290, 293, 312, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '2', '8', '8', '\000'}, 0, 64U, 54000, 2880, 2928, 3180, 3456, 0, 288, 290, 293, 312, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 54000, 1440, 1464, 1592, 1728, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '4', '4', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 54000, 1440, 1464, 1592, 1728, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 148500, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 74250, 1920, 2558, 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 74250, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 74250, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 108000, 2880, 2944, 3192, 3432, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 108000, 2880, 2944, 3192, 3432, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 108000, 2880, 2928, 3184, 3456, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'2', '8', '8', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 108000, 2880, 2928, 3184, 3456, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', 'i', '\000'}, 0, 64U, 72000, 1920, 1952, 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, 25U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', 'i', '\000'}, 0, 64U, 148500, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 148500, 1280, 1720, 1760, 1980, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 54000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 54000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 27000, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 27000, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', 'i', '\000'}, 0, 64U, 148500, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, 21U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 148500, 1280, 1390, 1430, 1650, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 54000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 54000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 27000, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 27000, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 108000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', '\000'}, 0, 64U, 108000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 54000, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '5', '7', '6', 'i', '\000'}, 0, 64U, 54000, 720, 732, 795, 864, 0, 576, 580, 586, 625, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 108000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', '\000'}, 0, 64U, 108000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, 10U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 54000, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 1}, {{0, 0}, {0U, 3739147998U, 0}, {'7', '2', '0', 'x', '4', '8', '0', 'i', '\000'}, 0, 64U, 54000, 720, 739, 801, 858, 0, 480, 488, 494, 525, 0, 4122U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 59400, 1280, 3040, 3080, 3300, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 74250, 1280, 3700, 3740, 3960, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '2', '8', '0', 'x', '7', '2', '0', '\000'}, 0, 64U, 74250, 1280, 3040, 3080, 3300, 0, 720, 725, 730, 750, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 297000, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 2}, {{0, 0}, {0U, 3739147998U, 0}, {'1', '9', '2', '0', 'x', '1', '0', '8', '0', '\000'}, 0, 64U, 297000, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 2}}; static struct drm_display_mode const edid_4k_modes[4U] = { {{0, 0}, {0U, 3739147998U, 0}, {'3', '8', '4', '0', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 297000, 3840, 4016, 4104, 4400, 0, 2160, 2168, 2178, 2250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'3', '8', '4', '0', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 297000, 3840, 4896, 4984, 5280, 0, 2160, 2168, 2178, 2250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'3', '8', '4', '0', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 297000, 3840, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0}, {{0, 0}, {0U, 3739147998U, 0}, {'4', '0', '9', '6', 'x', '2', '1', '6', '0', '\000'}, 0, 64U, 297000, 4096, 5116, 5204, 5500, 0, 2160, 2168, 2178, 2250, 0, 5U, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0}}; static u8 const edid_header[8U] = { 0U, 255U, 255U, 255U, 255U, 255U, 255U, 0U}; int drm_edid_header_is_valid(u8 const *raw_edid ) { int i ; int score ; { score = 0; i = 0; goto ldv_38912; ldv_38911: ; if ((int )((unsigned char )*(raw_edid + (unsigned long )i)) == (int )((unsigned char )edid_header[i])) { score = score + 1; } else { } i = i + 1; ldv_38912: ; if ((unsigned int )i <= 7U) { goto ldv_38911; } else { } return (score); } } static char const __kstrtab_drm_edid_header_is_valid[25U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'i', 's', '_', 'v', 'a', 'l', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_header_is_valid ; struct kernel_symbol const __ksymtab_drm_edid_header_is_valid = {(unsigned long )(& drm_edid_header_is_valid), (char const *)(& __kstrtab_drm_edid_header_is_valid)}; static int edid_fixup = 6; static void drm_get_displayid(struct drm_connector *connector , struct edid *edid ) ; static int drm_edid_block_checksum(u8 const *raw_edid ) { int i ; u8 csum ; { csum = 0U; i = 0; goto ldv_38950; ldv_38949: csum = (int )((u8 )*(raw_edid + (unsigned long )i)) + (int )csum; i = i + 1; ldv_38950: ; if (i <= 127) { goto ldv_38949; } else { } return ((int )csum); } } static bool drm_edid_is_zero(u8 const *in_edid , int length ) { void *tmp ; { tmp = memchr_inv((void const *)in_edid, 0, (size_t )length); if ((unsigned long )tmp != (unsigned long )((void *)0)) { return (0); } else { } return (1); } } bool drm_edid_block_valid(u8 *raw_edid , int block , bool print_bad_edid , bool *edid_corrupt ) { u8 csum ; struct edid *edid ; int __ret_warn_on ; long tmp ; long tmp___0 ; int score ; int tmp___1 ; long tmp___2 ; int tmp___3 ; long tmp___4 ; bool tmp___5 ; { edid = (struct edid *)raw_edid; __ret_warn_on = (unsigned long )raw_edid == (unsigned long )((u8 *)0U); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_edid.c", 1089); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (0); } else { } if (edid_fixup > 8 || edid_fixup < 0) { edid_fixup = 6; } else { } if (block == 0) { tmp___1 = drm_edid_header_is_valid((u8 const *)raw_edid); score = tmp___1; if (score == 8) { if ((unsigned long )edid_corrupt != (unsigned long )((bool *)0)) { *edid_corrupt = 0; } else { } } else if (score >= edid_fixup) { if ((unsigned long )edid_corrupt != (unsigned long )((bool *)0)) { *edid_corrupt = 1; } else { } tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_edid_block_valid", "Fixing EDID header, your hardware may be failing\n"); } else { } memcpy((void *)raw_edid, (void const *)(& edid_header), 8UL); } else { if ((unsigned long )edid_corrupt != (unsigned long )((bool *)0)) { *edid_corrupt = 1; } else { } goto bad; } } else { } tmp___3 = drm_edid_block_checksum((u8 const *)raw_edid); csum = (u8 )tmp___3; if ((unsigned int )csum != 0U) { if ((int )print_bad_edid) { drm_err("EDID checksum is invalid, remainder is %d\n", (int )csum); } else { } if ((unsigned long )edid_corrupt != (unsigned long )((bool *)0)) { *edid_corrupt = 1; } else { } if ((unsigned int )*raw_edid != 2U) { goto bad; } else { } } else { } switch ((int )*raw_edid) { case 0: ; if ((unsigned int )edid->version != 1U) { drm_err("EDID has major version %d, instead of 1\n", (int )edid->version); goto bad; } else { } if ((unsigned int )edid->revision > 4U) { tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_edid_block_valid", "EDID minor > 4, assuming backward compatibility\n"); } else { } } else { } goto ldv_38970; default: ; goto ldv_38970; } ldv_38970: ; return (1); bad: ; if ((int )print_bad_edid) { tmp___5 = drm_edid_is_zero((u8 const *)raw_edid, 128); if ((int )tmp___5) { printk("\vEDID block is all zeroes\n"); } else { printk("\vRaw EDID:\n"); print_hex_dump("\v", " \t", 0, 16, 1, (void const *)raw_edid, 128UL, 0); } } else { } return (0); } } static char const __kstrtab_drm_edid_block_valid[21U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 'b', 'l', 'o', 'c', 'k', '_', 'v', 'a', 'l', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_block_valid ; struct kernel_symbol const __ksymtab_drm_edid_block_valid = {(unsigned long )(& drm_edid_block_valid), (char const *)(& __kstrtab_drm_edid_block_valid)}; bool drm_edid_is_valid(struct edid *edid ) { int i ; u8 *raw ; bool tmp ; int tmp___0 ; { raw = (u8 *)edid; if ((unsigned long )edid == (unsigned long )((struct edid *)0)) { return (0); } else { } i = 0; goto ldv_38988; ldv_38987: tmp = drm_edid_block_valid(raw + (unsigned long )(i * 128), i, 1, (bool *)0); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { return (0); } else { } i = i + 1; ldv_38988: ; if ((int )edid->extensions >= i) { goto ldv_38987; } else { } return (1); } } static char const __kstrtab_drm_edid_is_valid[18U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 'i', 's', '_', 'v', 'a', 'l', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_is_valid ; struct kernel_symbol const __ksymtab_drm_edid_is_valid = {(unsigned long )(& drm_edid_is_valid), (char const *)(& __kstrtab_drm_edid_is_valid)}; static int drm_do_probe_ddc_edid(void *data , u8 *buf , unsigned int block , size_t len ) { struct i2c_adapter *adapter ; unsigned char start ; unsigned char segment ; unsigned char xfers ; int ret ; int retries ; struct i2c_msg msgs[3U] ; long tmp ; { adapter = (struct i2c_adapter *)data; start = (unsigned int )((unsigned char )block) * 128U; segment = (unsigned char )(block >> 1); xfers = (unsigned int )segment != 0U ? 3U : 2U; retries = 5; ldv_39012: msgs[0].addr = 48U; msgs[0].flags = 0U; msgs[0].len = 1U; msgs[0].buf = & segment; msgs[1].addr = 80U; msgs[1].flags = 0U; msgs[1].len = 1U; msgs[1].buf = & start; msgs[2].addr = 80U; msgs[2].flags = 1U; msgs[2].len = (unsigned short )len; msgs[2].buf = buf; ret = i2c_transfer(adapter, (struct i2c_msg *)(& msgs) + (unsigned long )(3 - (int )xfers), (int )xfers); if (ret == -6) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_do_probe_ddc_edid", "drm: skipping non-existent adapter %s\n", (char *)(& adapter->name)); } else { } goto ldv_39011; } else { } if ((int )xfers != ret) { retries = retries - 1; if (retries != 0) { goto ldv_39012; } else { goto ldv_39011; } } else { } ldv_39011: ; return ((int )xfers == ret ? 0 : -1); } } struct edid *drm_do_get_edid(struct drm_connector *connector , int (*get_edid_block)(void * , u8 * , unsigned int , size_t ) , void *data ) { int i ; int j ; int valid_extensions ; u8 *block ; u8 *new ; bool print_bad_edid ; void *tmp ; int tmp___0 ; bool tmp___1 ; bool tmp___2 ; void *tmp___3 ; int tmp___4 ; bool tmp___5 ; void *tmp___6 ; { j = 0; valid_extensions = 0; print_bad_edid = (bool )(connector->bad_edid_counter == 0U || (drm_debug & 4U) != 0U); tmp = kmalloc(128UL, 208U); block = (u8 *)tmp; if ((unsigned long )block == (unsigned long )((u8 *)0U)) { return ((struct edid *)0); } else { } i = 0; goto ldv_39032; ldv_39031: tmp___0 = (*get_edid_block)(data, block, 0U, 128UL); if (tmp___0 != 0) { goto out; } else { } tmp___1 = drm_edid_block_valid(block, 0, (int )print_bad_edid, & connector->edid_corrupt); if ((int )tmp___1) { goto ldv_39029; } else { } if (i == 0) { tmp___2 = drm_edid_is_zero((u8 const *)block, 128); if ((int )tmp___2) { connector->null_edid_counter = connector->null_edid_counter + 1; goto carp; } else { } } else { } i = i + 1; ldv_39032: ; if (i <= 3) { goto ldv_39031; } else { } ldv_39029: ; if (i == 4) { goto carp; } else { } if ((unsigned int )*(block + 126UL) == 0U) { return ((struct edid *)block); } else { } tmp___3 = krealloc((void const *)block, (size_t )(((int )*(block + 126UL) + 1) * 128), 208U); new = (u8 *)tmp___3; if ((unsigned long )new == (unsigned long )((u8 *)0U)) { goto out; } else { } block = new; j = 1; goto ldv_39037; ldv_39036: i = 0; goto ldv_39035; ldv_39034: tmp___4 = (*get_edid_block)(data, block + (unsigned long )((valid_extensions + 1) * 128), (unsigned int )j, 128UL); if (tmp___4 != 0) { goto out; } else { } tmp___5 = drm_edid_block_valid(block + (unsigned long )((valid_extensions + 1) * 128), j, (int )print_bad_edid, (bool *)0); if ((int )tmp___5) { valid_extensions = valid_extensions + 1; goto ldv_39033; } else { } i = i + 1; ldv_39035: ; if (i <= 3) { goto ldv_39034; } else { } ldv_39033: ; if (i == 4 && (int )print_bad_edid) { dev_warn((struct device const *)(connector->dev)->dev, "%s: Ignoring invalid EDID block %d.\n", connector->name, j); connector->bad_edid_counter = connector->bad_edid_counter + 1U; } else { } j = j + 1; ldv_39037: ; if ((int )*(block + 126UL) >= j) { goto ldv_39036; } else { } if ((int )*(block + 126UL) != valid_extensions) { *(block + 127UL) = (int )*(block + 127UL) + ((int )*(block + 126UL) - (int )((u8 )valid_extensions)); *(block + 126UL) = (u8 )valid_extensions; tmp___6 = krealloc((void const *)block, (size_t )((valid_extensions + 1) * 128), 208U); new = (u8 *)tmp___6; if ((unsigned long )new == (unsigned long )((u8 *)0U)) { goto out; } else { } block = new; } else { } return ((struct edid *)block); carp: ; if ((int )print_bad_edid) { dev_warn((struct device const *)(connector->dev)->dev, "%s: EDID block %d invalid.\n", connector->name, j); } else { } connector->bad_edid_counter = connector->bad_edid_counter + 1U; out: kfree((void const *)block); return ((struct edid *)0); } } static char const __kstrtab_drm_do_get_edid[16U] = { 'd', 'r', 'm', '_', 'd', 'o', '_', 'g', 'e', 't', '_', 'e', 'd', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_do_get_edid ; struct kernel_symbol const __ksymtab_drm_do_get_edid = {(unsigned long )(& drm_do_get_edid), (char const *)(& __kstrtab_drm_do_get_edid)}; bool drm_probe_ddc(struct i2c_adapter *adapter ) { unsigned char out ; int tmp ; { tmp = drm_do_probe_ddc_edid((void *)adapter, & out, 0U, 1UL); return (tmp == 0); } } static char const __kstrtab_drm_probe_ddc[14U] = { 'd', 'r', 'm', '_', 'p', 'r', 'o', 'b', 'e', '_', 'd', 'd', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_probe_ddc ; struct kernel_symbol const __ksymtab_drm_probe_ddc = {(unsigned long )(& drm_probe_ddc), (char const *)(& __kstrtab_drm_probe_ddc)}; struct edid *drm_get_edid(struct drm_connector *connector , struct i2c_adapter *adapter ) { struct edid *edid ; bool tmp ; int tmp___0 ; { tmp = drm_probe_ddc(adapter); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { return ((struct edid *)0); } else { } edid = drm_do_get_edid(connector, & drm_do_probe_ddc_edid, (void *)adapter); if ((unsigned long )edid != (unsigned long )((struct edid *)0)) { drm_get_displayid(connector, edid); } else { } return (edid); } } static char const __kstrtab_drm_get_edid[13U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 'e', 'd', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_get_edid ; struct kernel_symbol const __ksymtab_drm_get_edid = {(unsigned long )(& drm_get_edid), (char const *)(& __kstrtab_drm_get_edid)}; struct edid *drm_edid_duplicate(struct edid const *edid ) { void *tmp ; { tmp = kmemdup((void const *)edid, (size_t )(((int )edid->extensions + 1) * 128), 208U); return ((struct edid *)tmp); } } static char const __kstrtab_drm_edid_duplicate[19U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 'd', 'u', 'p', 'l', 'i', 'c', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_duplicate ; struct kernel_symbol const __ksymtab_drm_edid_duplicate = {(unsigned long )(& drm_edid_duplicate), (char const *)(& __kstrtab_drm_edid_duplicate)}; static bool edid_vendor(struct edid *edid , char *vendor ) { char edid_vendor___0[3U] ; int tmp ; { edid_vendor___0[0] = (char )((unsigned int )((unsigned char )(((int )edid->mfg_id[0] & 124) >> 2)) + 64U); edid_vendor___0[1] = (char )((unsigned int )((unsigned char )((int )((signed char )(((int )edid->mfg_id[0] & 3) << 3)) | (int )((signed char )((int )edid->mfg_id[1] >> 5)))) + 64U); edid_vendor___0[2] = (char )(((unsigned int )edid->mfg_id[1] & 31U) + 64U); tmp = strncmp((char const *)(& edid_vendor___0), (char const *)vendor, 3UL); return (tmp == 0); } } static u32 edid_get_quirks(struct edid *edid ) { struct edid_quirk *quirk ; int i ; bool tmp ; { i = 0; goto ldv_39095; ldv_39094: quirk = (struct edid_quirk *)(& edid_quirk_list) + (unsigned long )i; tmp = edid_vendor(edid, (char *)(& quirk->vendor)); if ((int )tmp && ((int )edid->prod_code[0] | ((int )edid->prod_code[1] << 8)) == quirk->product_id) { return (quirk->quirks); } else { } i = i + 1; ldv_39095: ; if ((unsigned int )i <= 18U) { goto ldv_39094; } else { } return (0U); } } static void edid_fixup_preferred(struct drm_connector *connector , u32 quirks ) { struct drm_display_mode *t ; struct drm_display_mode *cur_mode ; struct drm_display_mode *preferred_mode ; int target_refresh ; int cur_vrefresh ; int preferred_vrefresh ; int tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; int tmp___0 ; int tmp___1 ; long ret ; int __x___0 ; long ret___0 ; int __x___2 ; struct list_head const *__mptr___2 ; { target_refresh = 0; tmp = list_empty((struct list_head const *)(& connector->probed_modes)); if (tmp != 0) { return; } else { } if ((int )quirks & 1) { target_refresh = 60; } else { } if ((quirks & 4U) != 0U) { target_refresh = 75; } else { } __mptr = (struct list_head const *)connector->probed_modes.next; preferred_mode = (struct drm_display_mode *)__mptr; __mptr___0 = (struct list_head const *)connector->probed_modes.next; cur_mode = (struct drm_display_mode *)__mptr___0; __mptr___1 = (struct list_head const *)cur_mode->head.next; t = (struct drm_display_mode *)__mptr___1; goto ldv_39125; ldv_39124: cur_mode->type = cur_mode->type & 4294967287U; if ((unsigned long )cur_mode == (unsigned long )preferred_mode) { goto ldv_39115; } else { } if (cur_mode->hdisplay * cur_mode->vdisplay > preferred_mode->hdisplay * preferred_mode->vdisplay) { preferred_mode = cur_mode; } else { } if (cur_mode->vrefresh != 0) { cur_vrefresh = cur_mode->vrefresh; } else { tmp___0 = drm_mode_vrefresh((struct drm_display_mode const *)cur_mode); cur_vrefresh = tmp___0; } if (preferred_mode->vrefresh != 0) { preferred_vrefresh = preferred_mode->vrefresh; } else { tmp___1 = drm_mode_vrefresh((struct drm_display_mode const *)preferred_mode); preferred_vrefresh = tmp___1; } if (cur_mode->hdisplay * cur_mode->vdisplay == preferred_mode->hdisplay * preferred_mode->vdisplay) { __x___0 = cur_vrefresh - target_refresh; ret = (long )(__x___0 < 0 ? - __x___0 : __x___0); __x___2 = preferred_vrefresh - target_refresh; ret___0 = (long )(__x___2 < 0 ? - __x___2 : __x___2); if (ret < ret___0) { preferred_mode = cur_mode; } else { } } else { } ldv_39115: cur_mode = t; __mptr___2 = (struct list_head const *)t->head.next; t = (struct drm_display_mode *)__mptr___2; ldv_39125: ; if ((unsigned long )(& cur_mode->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_39124; } else { } preferred_mode->type = preferred_mode->type | 8U; return; } } static bool mode_is_rb(struct drm_display_mode const *mode ) { { return ((bool )((((int )mode->htotal - (int )mode->hdisplay == 160 && (int )mode->hsync_end - (int )mode->hdisplay == 80) && (int )mode->hsync_end - (int )mode->hsync_start == 32) && (int )mode->vsync_start - (int )mode->vdisplay == 3)); } } struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev , int hsize , int vsize , int fresh , bool rb ) { int i ; struct drm_display_mode const *ptr ; int tmp ; bool tmp___0 ; struct drm_display_mode *tmp___1 ; { i = 0; goto ldv_39143; ldv_39142: ptr = (struct drm_display_mode const *)(& drm_dmt_modes) + (unsigned long )i; if ((int )ptr->hdisplay != hsize) { goto ldv_39141; } else { } if ((int )ptr->vdisplay != vsize) { goto ldv_39141; } else { } tmp = drm_mode_vrefresh(ptr); if (tmp != fresh) { goto ldv_39141; } else { } tmp___0 = mode_is_rb(ptr); if ((int )tmp___0 != (int )rb) { goto ldv_39141; } else { } tmp___1 = drm_mode_duplicate(dev, ptr); return (tmp___1); ldv_39141: i = i + 1; ldv_39143: ; if ((unsigned int )i <= 87U) { goto ldv_39142; } else { } return ((struct drm_display_mode *)0); } } static char const __kstrtab_drm_mode_find_dmt[18U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', '_', 'f', 'i', 'n', 'd', '_', 'd', 'm', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_mode_find_dmt ; struct kernel_symbol const __ksymtab_drm_mode_find_dmt = {(unsigned long )(& drm_mode_find_dmt), (char const *)(& __kstrtab_drm_mode_find_dmt)}; static void cea_for_each_detailed_block(u8 *ext , detailed_cb *cb , void *closure ) { int i ; int n ; u8 d ; u8 *det_base ; { n = 0; d = *(ext + 2UL); det_base = ext + (unsigned long )d; n = (127 - (int )d) / 18; i = 0; goto ldv_39169; ldv_39168: (*cb)((struct detailed_timing *)det_base + (unsigned long )(i * 18), closure); i = i + 1; ldv_39169: ; if (i < n) { goto ldv_39168; } else { } return; } } static void vtb_for_each_detailed_block(u8 *ext , detailed_cb *cb , void *closure ) { unsigned int i ; unsigned int n ; int _min1 ; int _min2 ; u8 *det_base ; { _min1 = (int )*(ext + 2UL); _min2 = 6; n = (unsigned int )(_min1 < _min2 ? _min1 : _min2); det_base = ext + 5UL; if ((unsigned int )*(ext + 1UL) != 1U) { return; } else { } i = 0U; goto ldv_39183; ldv_39182: (*cb)((struct detailed_timing *)det_base + (unsigned long )(i * 18U), closure); i = i + 1U; ldv_39183: ; if (i < n) { goto ldv_39182; } else { } return; } } static void drm_for_each_detailed_block(u8 *raw_edid , detailed_cb *cb , void *closure ) { int i ; struct edid *edid ; u8 *ext ; { edid = (struct edid *)raw_edid; if ((unsigned long )edid == (unsigned long )((struct edid *)0)) { return; } else { } i = 0; goto ldv_39193; ldv_39192: (*cb)((struct detailed_timing *)(& edid->detailed_timings) + (unsigned long )i, closure); i = i + 1; ldv_39193: ; if (i <= 3) { goto ldv_39192; } else { } i = 1; goto ldv_39201; ldv_39200: ext = raw_edid + (unsigned long )(i * 128); switch ((int )*ext) { case 2: cea_for_each_detailed_block(ext, cb, closure); goto ldv_39197; case 16: vtb_for_each_detailed_block(ext, cb, closure); goto ldv_39197; default: ; goto ldv_39197; } ldv_39197: i = i + 1; ldv_39201: ; if ((int )*(raw_edid + 126UL) >= i) { goto ldv_39200; } else { } return; } } static void is_rb(struct detailed_timing *t , void *data ) { u8 *r ; { r = (u8 *)t; if ((unsigned int )*(r + 3UL) == 253U) { if (((int )*(r + 15UL) & 16) != 0) { *((bool *)data) = 1; } else { } } else { } return; } } static bool drm_monitor_supports_rb(struct edid *edid ) { bool ret ; { if ((unsigned int )edid->revision > 3U) { ret = 0; drm_for_each_detailed_block((u8 *)edid, & is_rb, (void *)(& ret)); return (ret); } else { } return ((int )((signed char )edid->input) < 0); } } static void find_gtf2(struct detailed_timing *t , void *data ) { u8 *r ; { r = (u8 *)t; if ((unsigned int )*(r + 3UL) == 253U && (unsigned int )*(r + 10UL) == 2U) { *((u8 **)data) = r; } else { } return; } } static int drm_gtf2_hbreak(struct edid *edid ) { u8 *r ; { r = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & find_gtf2, (void *)(& r)); return ((unsigned long )r != (unsigned long )((u8 *)0U) ? (int )*(r + 12UL) * 2 : 0); } } static int drm_gtf2_2c(struct edid *edid ) { u8 *r ; { r = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & find_gtf2, (void *)(& r)); return ((unsigned long )r != (unsigned long )((u8 *)0U) ? (int )*(r + 13UL) : 0); } } static int drm_gtf2_m(struct edid *edid ) { u8 *r ; { r = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & find_gtf2, (void *)(& r)); return ((unsigned long )r != (unsigned long )((u8 *)0U) ? ((int )*(r + 15UL) << 8) + (int )*(r + 14UL) : 0); } } static int drm_gtf2_k(struct edid *edid ) { u8 *r ; { r = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & find_gtf2, (void *)(& r)); return ((unsigned long )r != (unsigned long )((u8 *)0U) ? (int )*(r + 16UL) : 0); } } static int drm_gtf2_2j(struct edid *edid ) { u8 *r ; { r = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & find_gtf2, (void *)(& r)); return ((unsigned long )r != (unsigned long )((u8 *)0U) ? (int )*(r + 17UL) : 0); } } static int standard_timing_level(struct edid *edid ) { int tmp ; { if ((unsigned int )edid->revision > 1U) { if ((unsigned int )edid->revision > 3U && (int )edid->features & 1) { return (3); } else { } tmp = drm_gtf2_hbreak(edid); if (tmp != 0) { return (2); } else { } return (1); } else { } return (0); } } static int bad_std_timing(u8 a , u8 b ) { { return ((((unsigned int )a == 0U && (unsigned int )b == 0U) || ((unsigned int )a == 1U && (unsigned int )b == 1U)) || ((unsigned int )a == 32U && (unsigned int )b == 32U)); } } static struct drm_display_mode *drm_mode_std(struct drm_connector *connector , struct edid *edid , struct std_timing *t ) { struct drm_device *dev ; struct drm_display_mode *m ; struct drm_display_mode *mode ; int hsize ; int vsize ; int vrefresh_rate ; unsigned int aspect_ratio ; unsigned int vfreq ; int timing_level ; int tmp ; int tmp___0 ; struct list_head const *__mptr ; int tmp___1 ; struct list_head const *__mptr___0 ; bool tmp___2 ; int tmp___3 ; int tmp___4 ; int tmp___5 ; int tmp___6 ; int tmp___7 ; int tmp___8 ; { dev = connector->dev; mode = (struct drm_display_mode *)0; aspect_ratio = (unsigned int )((int )t->vfreq_aspect >> 6); vfreq = (unsigned int )t->vfreq_aspect & 63U; tmp = standard_timing_level(edid); timing_level = tmp; tmp___0 = bad_std_timing((int )t->hsize, (int )t->vfreq_aspect); if (tmp___0 != 0) { return ((struct drm_display_mode *)0); } else { } hsize = ((int )t->hsize + 31) * 8; vrefresh_rate = (int )(vfreq + 60U); if (aspect_ratio == 0U) { if ((unsigned int )edid->revision <= 2U) { vsize = hsize; } else { vsize = (hsize * 10) / 16; } } else if (aspect_ratio == 1U) { vsize = (hsize * 3) / 4; } else if (aspect_ratio == 2U) { vsize = (hsize * 4) / 5; } else { vsize = (hsize * 9) / 16; } if (vrefresh_rate == 60 && ((hsize == 1360 && vsize == 765) || (hsize == 1368 && vsize == 769))) { hsize = 1366; vsize = 768; } else { } __mptr = (struct list_head const *)connector->probed_modes.next; m = (struct drm_display_mode *)__mptr; goto ldv_39263; ldv_39262: ; if (m->hdisplay == hsize && m->vdisplay == vsize) { tmp___1 = drm_mode_vrefresh((struct drm_display_mode const *)m); if (tmp___1 == vrefresh_rate) { return ((struct drm_display_mode *)0); } else { } } else { } __mptr___0 = (struct list_head const *)m->head.next; m = (struct drm_display_mode *)__mptr___0; ldv_39263: ; if ((unsigned long )(& m->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_39262; } else { } if ((hsize == 1366 && vsize == 768) && vrefresh_rate == 60) { mode = drm_cvt_mode(dev, 1366, 768, vrefresh_rate, 0, 0, 0); mode->hdisplay = 1366; mode->hsync_start = mode->hsync_start + -1; mode->hsync_end = mode->hsync_end + -1; return (mode); } else { } tmp___2 = drm_monitor_supports_rb(edid); if ((int )tmp___2) { mode = drm_mode_find_dmt(dev, hsize, vsize, vrefresh_rate, 1); if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { return (mode); } else { } } else { } mode = drm_mode_find_dmt(dev, hsize, vsize, vrefresh_rate, 0); if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { return (mode); } else { } switch (timing_level) { case 0: ; goto ldv_39266; case 1: mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); goto ldv_39266; case 2: mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0); if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } tmp___7 = drm_mode_hsync((struct drm_display_mode const *)mode); tmp___8 = drm_gtf2_hbreak(edid); if (tmp___7 > tmp___8) { drm_mode_destroy(dev, mode); tmp___3 = drm_gtf2_2j(edid); tmp___4 = drm_gtf2_k(edid); tmp___5 = drm_gtf2_2c(edid); tmp___6 = drm_gtf2_m(edid); mode = drm_gtf_mode_complex(dev, hsize, vsize, vrefresh_rate, 0, 0, tmp___6, tmp___5, tmp___4, tmp___3); } else { } goto ldv_39266; case 3: mode = drm_cvt_mode(dev, hsize, vsize, vrefresh_rate, 0, 0, 0); goto ldv_39266; } ldv_39266: ; return (mode); } } static void drm_mode_do_interlace_quirk(struct drm_display_mode *mode , struct detailed_pixel_timing *pt ) { int i ; struct __anonstruct_cea_interlaced_266 cea_interlaced[7U] ; { cea_interlaced[0].w = 1920; cea_interlaced[0].h = 1080; cea_interlaced[1].w = 720; cea_interlaced[1].h = 480; cea_interlaced[2].w = 1440; cea_interlaced[2].h = 480; cea_interlaced[3].w = 2880; cea_interlaced[3].h = 480; cea_interlaced[4].w = 720; cea_interlaced[4].h = 576; cea_interlaced[5].w = 1440; cea_interlaced[5].h = 576; cea_interlaced[6].w = 2880; cea_interlaced[6].h = 576; if ((int )((signed char )pt->misc) >= 0) { return; } else { } i = 0; goto ldv_39282; ldv_39281: ; if (mode->hdisplay == cea_interlaced[i].w && mode->vdisplay == cea_interlaced[i].h / 2) { mode->vdisplay = mode->vdisplay * 2; mode->vsync_start = mode->vsync_start * 2; mode->vsync_end = mode->vsync_end * 2; mode->vtotal = mode->vtotal * 2; mode->vtotal = mode->vtotal | 1; } else { } i = i + 1; ldv_39282: ; if ((unsigned int )i <= 6U) { goto ldv_39281; } else { } mode->flags = mode->flags | 16U; return; } } static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev , struct edid *edid , struct detailed_timing *timing , u32 quirks ) { struct drm_display_mode *mode ; struct detailed_pixel_timing *pt ; unsigned int hactive ; unsigned int vactive ; unsigned int hblank ; unsigned int vblank ; unsigned int hsync_offset ; unsigned int hsync_pulse_width ; unsigned int vsync_offset ; unsigned int vsync_pulse_width ; long tmp ; long tmp___0 ; long tmp___1 ; { pt = & timing->data.pixel_data; hactive = (unsigned int )((((int )pt->hactive_hblank_hi & 240) << 4) | (int )pt->hactive_lo); vactive = (unsigned int )((((int )pt->vactive_vblank_hi & 240) << 4) | (int )pt->vactive_lo); hblank = (unsigned int )((((int )pt->hactive_hblank_hi & 15) << 8) | (int )pt->hblank_lo); vblank = (unsigned int )((((int )pt->vactive_vblank_hi & 15) << 8) | (int )pt->vblank_lo); hsync_offset = (unsigned int )((((int )pt->hsync_vsync_offset_pulse_width_hi & 192) << 2) | (int )pt->hsync_offset_lo); hsync_pulse_width = (unsigned int )((((int )pt->hsync_vsync_offset_pulse_width_hi & 48) << 4) | (int )pt->hsync_pulse_width_lo); vsync_offset = (unsigned int )((((int )pt->hsync_vsync_offset_pulse_width_hi & 12) << 2) | ((int )pt->vsync_offset_pulse_width_lo >> 4)); vsync_pulse_width = (unsigned int )((((int )pt->hsync_vsync_offset_pulse_width_hi & 3) << 4) | ((int )pt->vsync_offset_pulse_width_lo & 15)); if (hactive <= 63U || vactive <= 63U) { return ((struct drm_display_mode *)0); } else { } if (((int )pt->misc & 32) != 0) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_mode_detailed", "stereo mode not supported\n"); } else { } return ((struct drm_display_mode *)0); } else { } if (((int )pt->misc & 24) == 0) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_mode_detailed", "composite sync not supported\n"); } else { } } else { } if (hsync_pulse_width == 0U || vsync_pulse_width == 0U) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_mode_detailed", "Incorrect Detailed timing. Wrong Hsync/Vsync pulse width\n"); } else { } return ((struct drm_display_mode *)0); } else { } if ((quirks & 128U) != 0U) { mode = drm_cvt_mode(dev, (int )hactive, (int )vactive, 60, 1, 0, 0); if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } goto set_size; } else { } mode = drm_mode_create(dev); if ((unsigned long )mode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } if ((quirks & 2U) != 0U) { timing->pixel_clock = 1088U; } else { } mode->clock = (int )timing->pixel_clock * 10; mode->hdisplay = (int )hactive; mode->hsync_start = (int )((unsigned int )mode->hdisplay + hsync_offset); mode->hsync_end = (int )((unsigned int )mode->hsync_start + hsync_pulse_width); mode->htotal = (int )((unsigned int )mode->hdisplay + hblank); mode->vdisplay = (int )vactive; mode->vsync_start = (int )((unsigned int )mode->vdisplay + vsync_offset); mode->vsync_end = (int )((unsigned int )mode->vsync_start + vsync_pulse_width); mode->vtotal = (int )((unsigned int )mode->vdisplay + vblank); if (mode->hsync_end > mode->htotal) { mode->htotal = mode->hsync_end + 1; } else { } if (mode->vsync_end > mode->vtotal) { mode->vtotal = mode->vsync_end + 1; } else { } drm_mode_do_interlace_quirk(mode, pt); if ((quirks & 64U) != 0U) { pt->misc = (u8 )((unsigned int )pt->misc | 6U); } else { } mode->flags = mode->flags | (((int )pt->misc & 2) != 0 ? 1U : 2U); mode->flags = mode->flags | (((int )pt->misc & 4) != 0 ? 4U : 8U); set_size: mode->width_mm = (int )pt->width_mm_lo | (((int )pt->width_height_mm_hi & 240) << 4); mode->height_mm = (int )pt->height_mm_lo | (((int )pt->width_height_mm_hi & 15) << 8); if ((quirks & 8U) != 0U) { mode->width_mm = mode->width_mm * 10; mode->height_mm = mode->height_mm * 10; } else { } if ((quirks & 16U) != 0U) { mode->width_mm = (int )edid->width_cm * 10; mode->height_mm = (int )edid->height_cm * 10; } else { } mode->type = 64U; mode->vrefresh = drm_mode_vrefresh((struct drm_display_mode const *)mode); drm_mode_set_name(mode); return (mode); } } static bool mode_in_hsync_range(struct drm_display_mode const *mode , struct edid *edid , u8 *t ) { int hsync ; int hmin ; int hmax ; { hmin = (int )*(t + 7UL); if ((unsigned int )edid->revision > 3U) { hmin = (((int )*(t + 4UL) & 4) != 0 ? 255 : 0) + hmin; } else { } hmax = (int )*(t + 8UL); if ((unsigned int )edid->revision > 3U) { hmax = (((int )*(t + 4UL) & 8) != 0 ? 255 : 0) + hmax; } else { } hsync = drm_mode_hsync(mode); return ((bool )(hsync <= hmax && hsync >= hmin)); } } static bool mode_in_vsync_range(struct drm_display_mode const *mode , struct edid *edid , u8 *t ) { int vsync ; int vmin ; int vmax ; { vmin = (int )*(t + 5UL); if ((unsigned int )edid->revision > 3U) { vmin = ((int )*(t + 4UL) & 1 ? 255 : 0) + vmin; } else { } vmax = (int )*(t + 6UL); if ((unsigned int )edid->revision > 3U) { vmax = (((int )*(t + 4UL) & 2) != 0 ? 255 : 0) + vmax; } else { } vsync = drm_mode_vrefresh(mode); return ((bool )(vsync <= vmax && vsync >= vmin)); } } static u32 range_pixel_clock(struct edid *edid , u8 *t ) { { if ((unsigned int )*(t + 9UL) == 0U || (unsigned int )*(t + 9UL) == 255U) { return (0U); } else { } if ((unsigned int )edid->revision > 3U && (unsigned int )*(t + 10UL) == 4U) { return ((u32 )((int )*(t + 9UL) * 10000 + ((int )*(t + 12UL) >> 2) * -250)); } else { } return ((u32 )((int )*(t + 9UL) * 10000 + 5001)); } } static bool mode_in_range(struct drm_display_mode const *mode , struct edid *edid , struct detailed_timing *timing ) { u32 max_clock ; u8 *t ; bool tmp ; int tmp___0 ; bool tmp___1 ; int tmp___2 ; bool tmp___3 ; bool tmp___4 ; int tmp___5 ; { t = (u8 *)timing; tmp = mode_in_hsync_range(mode, edid, t); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { return (0); } else { } tmp___1 = mode_in_vsync_range(mode, edid, t); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } if (tmp___2) { return (0); } else { } max_clock = range_pixel_clock(edid, t); if (max_clock != 0U) { if ((u32 )mode->clock > max_clock) { return (0); } else { } } else { } if ((unsigned int )edid->revision > 3U && (unsigned int )*(t + 10UL) == 4U) { if ((unsigned int )*(t + 13UL) != 0U && (int )mode->hdisplay > ((int )*(t + 13UL) + ((int )*(t + 12UL) & 3) * 256) * 8) { return (0); } else { } } else { } tmp___3 = mode_is_rb(mode); if ((int )tmp___3) { tmp___4 = drm_monitor_supports_rb(edid); if (tmp___4) { tmp___5 = 0; } else { tmp___5 = 1; } if (tmp___5) { return (0); } else { } } else { } return (1); } } static bool valid_inferred_mode(struct drm_connector const *connector , struct drm_display_mode const *mode ) { struct drm_display_mode *m ; bool ok ; struct list_head const *__mptr ; int tmp ; int tmp___0 ; struct list_head const *__mptr___0 ; { ok = 0; __mptr = (struct list_head const *)connector->probed_modes.next; m = (struct drm_display_mode *)__mptr; goto ldv_39340; ldv_39339: ; if ((int )mode->hdisplay == m->hdisplay && (int )mode->vdisplay == m->vdisplay) { tmp = drm_mode_vrefresh(mode); tmp___0 = drm_mode_vrefresh((struct drm_display_mode const *)m); if (tmp == tmp___0) { return (0); } else { } } else { } if ((int )mode->hdisplay <= m->hdisplay && (int )mode->vdisplay <= m->vdisplay) { ok = 1; } else { } __mptr___0 = (struct list_head const *)m->head.next; m = (struct drm_display_mode *)__mptr___0; ldv_39340: ; if ((unsigned long )((struct list_head const *)(& m->head)) != (unsigned long )(& connector->probed_modes)) { goto ldv_39339; } else { } return (ok); } } static int drm_dmt_modes_for_range(struct drm_connector *connector , struct edid *edid , struct detailed_timing *timing ) { int i ; int modes ; struct drm_display_mode *newmode ; struct drm_device *dev ; bool tmp ; bool tmp___0 ; { modes = 0; dev = connector->dev; i = 0; goto ldv_39354; ldv_39353: tmp = mode_in_range((struct drm_display_mode const *)(& drm_dmt_modes) + (unsigned long )i, edid, timing); if ((int )tmp) { tmp___0 = valid_inferred_mode((struct drm_connector const *)connector, (struct drm_display_mode const *)(& drm_dmt_modes) + (unsigned long )i); if ((int )tmp___0) { newmode = drm_mode_duplicate(dev, (struct drm_display_mode const *)(& drm_dmt_modes) + (unsigned long )i); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } } else { } i = i + 1; ldv_39354: ; if ((unsigned int )i <= 87U) { goto ldv_39353; } else { } return (modes); } } static void fixup_mode_1366x768(struct drm_display_mode *mode ) { { if (mode->hdisplay == 1368 && mode->vdisplay == 768) { mode->hdisplay = 1366; mode->hsync_start = mode->hsync_start - 1; mode->hsync_end = mode->hsync_end - 1; drm_mode_set_name(mode); } else { } return; } } static int drm_gtf_modes_for_range(struct drm_connector *connector , struct edid *edid , struct detailed_timing *timing ) { int i ; int modes ; struct drm_display_mode *newmode ; struct drm_device *dev ; struct minimode const *m ; bool tmp ; int tmp___0 ; bool tmp___1 ; int tmp___2 ; { modes = 0; dev = connector->dev; i = 0; goto ldv_39373; ldv_39372: m = (struct minimode const *)(& extra_modes) + (unsigned long )i; newmode = drm_gtf_mode(dev, (int )m->w, (int )m->h, (int )m->r, 0, 0); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { return (modes); } else { } fixup_mode_1366x768(newmode); tmp = mode_in_range((struct drm_display_mode const *)newmode, edid, timing); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { drm_mode_destroy(dev, newmode); goto ldv_39371; } else { tmp___1 = valid_inferred_mode((struct drm_connector const *)connector, (struct drm_display_mode const *)newmode); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } if (tmp___2) { drm_mode_destroy(dev, newmode); goto ldv_39371; } else { } } drm_mode_probed_add(connector, newmode); modes = modes + 1; ldv_39371: i = i + 1; ldv_39373: ; if ((unsigned int )i <= 6U) { goto ldv_39372; } else { } return (modes); } } static int drm_cvt_modes_for_range(struct drm_connector *connector , struct edid *edid , struct detailed_timing *timing ) { int i ; int modes ; struct drm_display_mode *newmode ; struct drm_device *dev ; bool rb ; bool tmp ; struct minimode const *m ; bool tmp___0 ; int tmp___1 ; bool tmp___2 ; int tmp___3 ; { modes = 0; dev = connector->dev; tmp = drm_monitor_supports_rb(edid); rb = tmp; i = 0; goto ldv_39390; ldv_39389: m = (struct minimode const *)(& extra_modes) + (unsigned long )i; newmode = drm_cvt_mode(dev, (int )m->w, (int )m->h, (int )m->r, (int )rb, 0, 0); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { return (modes); } else { } fixup_mode_1366x768(newmode); tmp___0 = mode_in_range((struct drm_display_mode const *)newmode, edid, timing); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { drm_mode_destroy(dev, newmode); goto ldv_39388; } else { tmp___2 = valid_inferred_mode((struct drm_connector const *)connector, (struct drm_display_mode const *)newmode); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } if (tmp___3) { drm_mode_destroy(dev, newmode); goto ldv_39388; } else { } } drm_mode_probed_add(connector, newmode); modes = modes + 1; ldv_39388: i = i + 1; ldv_39390: ; if ((unsigned int )i <= 6U) { goto ldv_39389; } else { } return (modes); } } static void do_inferred_modes(struct detailed_timing *timing , void *c ) { struct detailed_mode_closure *closure ; struct detailed_non_pixel *data ; struct detailed_data_monitor_range *range ; int tmp ; int tmp___0 ; int tmp___1 ; { closure = (struct detailed_mode_closure *)c; data = & timing->data.other_data; range = & data->data.range; if ((unsigned int )data->type != 253U) { return; } else { } tmp = drm_dmt_modes_for_range(closure->connector, closure->edid, timing); closure->modes = closure->modes + tmp; if ((unsigned int )(closure->edid)->version <= 1U && ((unsigned int )(closure->edid)->version != 1U || (unsigned int )(closure->edid)->revision <= 1U)) { return; } else { } switch ((int )range->flags) { case 2: ; case 0: tmp___0 = drm_gtf_modes_for_range(closure->connector, closure->edid, timing); closure->modes = closure->modes + tmp___0; goto ldv_39401; case 4: ; if ((unsigned int )(closure->edid)->version <= 1U && ((unsigned int )(closure->edid)->version != 1U || (unsigned int )(closure->edid)->revision <= 3U)) { goto ldv_39401; } else { } tmp___1 = drm_cvt_modes_for_range(closure->connector, closure->edid, timing); closure->modes = closure->modes + tmp___1; goto ldv_39401; case 1: ; default: ; goto ldv_39401; } ldv_39401: ; return; } } static int add_inferred_modes(struct drm_connector *connector , struct edid *edid ) { struct detailed_mode_closure closure ; { closure.connector = connector; closure.edid = edid; closure.preferred = (_Bool)0; closure.quirks = 0U; closure.modes = 0; if ((unsigned int )edid->version > 1U || ((unsigned int )edid->version == 1U && (unsigned int )edid->revision != 0U)) { drm_for_each_detailed_block((u8 *)edid, & do_inferred_modes, (void *)(& closure)); } else { } return (closure.modes); } } static int drm_est3_modes(struct drm_connector *connector , struct detailed_timing *timing ) { int i ; int j ; int m ; int modes ; struct drm_display_mode *mode ; u8 *est ; { modes = 0; est = (u8 *)timing + 5UL; i = 0; goto ldv_39426; ldv_39425: j = 7; goto ldv_39424; ldv_39423: m = i * 8 + (7 - j); if ((unsigned int )m > 43U) { goto ldv_39422; } else { } if (((int )*(est + (unsigned long )i) >> j) & 1) { mode = drm_mode_find_dmt(connector->dev, (int )est3_modes[m].w, (int )est3_modes[m].h, (int )est3_modes[m].r, (int )((short )est3_modes[m].rb) != 0); if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, mode); modes = modes + 1; } else { } } else { } j = j - 1; ldv_39424: ; if (j >= 0) { goto ldv_39423; } else { } ldv_39422: i = i + 1; ldv_39426: ; if (i <= 5) { goto ldv_39425; } else { } return (modes); } } static void do_established_modes(struct detailed_timing *timing , void *c ) { struct detailed_mode_closure *closure ; struct detailed_non_pixel *data ; int tmp ; { closure = (struct detailed_mode_closure *)c; data = & timing->data.other_data; if ((unsigned int )data->type == 247U) { tmp = drm_est3_modes(closure->connector, timing); closure->modes = closure->modes + tmp; } else { } return; } } static int add_established_modes(struct drm_connector *connector , struct edid *edid ) { struct drm_device *dev ; unsigned long est_bits ; int i ; int modes ; struct detailed_mode_closure closure ; struct drm_display_mode *newmode ; { dev = connector->dev; est_bits = (unsigned long )(((int )edid->established_timings.t1 | ((int )edid->established_timings.t2 << 8)) | (((int )edid->established_timings.mfg_rsvd & 128) << 9)); modes = 0; closure.connector = connector; closure.edid = edid; closure.preferred = (_Bool)0; closure.quirks = 0U; closure.modes = 0; i = 0; goto ldv_39445; ldv_39444: ; if (((unsigned long )(1 << i) & est_bits) != 0UL) { newmode = drm_mode_duplicate(dev, (struct drm_display_mode const *)(& edid_est_modes) + (unsigned long )i); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } i = i + 1; ldv_39445: ; if (i <= 16) { goto ldv_39444; } else { } if ((unsigned int )edid->version > 1U || ((unsigned int )edid->version == 1U && (unsigned int )edid->revision != 0U)) { drm_for_each_detailed_block((u8 *)edid, & do_established_modes, (void *)(& closure)); } else { } return (closure.modes + modes); } } static void do_standard_modes(struct detailed_timing *timing , void *c ) { struct detailed_mode_closure *closure ; struct detailed_non_pixel *data ; struct drm_connector *connector ; struct edid *edid ; int i ; struct std_timing *std ; struct drm_display_mode *newmode ; { closure = (struct detailed_mode_closure *)c; data = & timing->data.other_data; connector = closure->connector; edid = closure->edid; if ((unsigned int )data->type == 250U) { i = 0; goto ldv_39459; ldv_39458: std = (struct std_timing *)(& data->data.timings) + (unsigned long )i; newmode = drm_mode_std(connector, edid, std); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, newmode); closure->modes = closure->modes + 1; } else { } i = i + 1; ldv_39459: ; if (i <= 5) { goto ldv_39458; } else { } } else { } return; } } static int add_standard_modes(struct drm_connector *connector , struct edid *edid ) { int i ; int modes ; struct detailed_mode_closure closure ; struct drm_display_mode *newmode ; { modes = 0; closure.connector = connector; closure.edid = edid; closure.preferred = (_Bool)0; closure.quirks = 0U; closure.modes = 0; i = 0; goto ldv_39470; ldv_39469: newmode = drm_mode_std(connector, edid, (struct std_timing *)(& edid->standard_timings) + (unsigned long )i); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } i = i + 1; ldv_39470: ; if (i <= 7) { goto ldv_39469; } else { } if ((unsigned int )edid->version > 1U || ((unsigned int )edid->version == 1U && (unsigned int )edid->revision != 0U)) { drm_for_each_detailed_block((u8 *)edid, & do_standard_modes, (void *)(& closure)); } else { } return (closure.modes + modes); } } static int drm_cvt_modes(struct drm_connector *connector , struct detailed_timing *timing ) { int i ; int j ; int modes ; struct drm_display_mode *newmode ; struct drm_device *dev ; struct cvt_timing *cvt ; int rates[5U] ; u8 empty[3U] ; int width ; int height ; int tmp ; { modes = 0; dev = connector->dev; rates[0] = 60; rates[1] = 85; rates[2] = 75; rates[3] = 60; rates[4] = 50; empty[0] = 0U; empty[1] = 0U; empty[2] = 0U; i = 0; goto ldv_39496; ldv_39495: width = width; cvt = (struct cvt_timing *)(& timing->data.other_data.data.cvt) + (unsigned long )i; tmp = memcmp((void const *)(& cvt->code), (void const *)(& empty), 3UL); if (tmp == 0) { goto ldv_39486; } else { } height = (((int )cvt->code[0] + (((int )cvt->code[1] & 240) << 4)) + 1) * 2; switch ((int )cvt->code[1] & 12) { case 0: width = (height * 4) / 3; goto ldv_39488; case 4: width = (height * 16) / 9; goto ldv_39488; case 8: width = (height * 16) / 10; goto ldv_39488; case 12: width = (height * 15) / 9; goto ldv_39488; } ldv_39488: j = 1; goto ldv_39493; ldv_39492: ; if (((int )cvt->code[2] >> j) & 1) { newmode = drm_cvt_mode(dev, width, height, rates[j], j == 0, 0, 0); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } j = j + 1; ldv_39493: ; if (j <= 4) { goto ldv_39492; } else { } ldv_39486: i = i + 1; ldv_39496: ; if (i <= 3) { goto ldv_39495; } else { } return (modes); } } static void do_cvt_mode(struct detailed_timing *timing , void *c ) { struct detailed_mode_closure *closure ; struct detailed_non_pixel *data ; int tmp ; { closure = (struct detailed_mode_closure *)c; data = & timing->data.other_data; if ((unsigned int )data->type == 248U) { tmp = drm_cvt_modes(closure->connector, timing); closure->modes = closure->modes + tmp; } else { } return; } } static int add_cvt_modes(struct drm_connector *connector , struct edid *edid ) { struct detailed_mode_closure closure ; { closure.connector = connector; closure.edid = edid; closure.preferred = (_Bool)0; closure.quirks = 0U; closure.modes = 0; if ((unsigned int )edid->version > 1U || ((unsigned int )edid->version == 1U && (unsigned int )edid->revision > 2U)) { drm_for_each_detailed_block((u8 *)edid, & do_cvt_mode, (void *)(& closure)); } else { } return (closure.modes); } } static void do_detailed_mode(struct detailed_timing *timing , void *c ) { struct detailed_mode_closure *closure ; struct drm_display_mode *newmode ; { closure = (struct detailed_mode_closure *)c; if ((unsigned int )timing->pixel_clock != 0U) { newmode = drm_mode_detailed((closure->connector)->dev, closure->edid, timing, closure->quirks); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { return; } else { } if ((int )closure->preferred) { newmode->type = newmode->type | 8U; } else { } drm_mode_probed_add(closure->connector, newmode); closure->modes = closure->modes + 1; closure->preferred = 0; } else { } return; } } static int add_detailed_modes(struct drm_connector *connector , struct edid *edid , u32 quirks ) { struct detailed_mode_closure closure ; { closure.connector = connector; closure.edid = edid; closure.preferred = 1; closure.quirks = quirks; closure.modes = 0; if ((int )closure.preferred && ((unsigned int )edid->version <= 1U && ((unsigned int )edid->version != 1U || (unsigned int )edid->revision <= 3U))) { closure.preferred = ((int )edid->features & 2) != 0; } else { } drm_for_each_detailed_block((u8 *)edid, & do_detailed_mode, (void *)(& closure)); return (closure.modes); } } static u8 *drm_find_edid_extension(struct edid *edid , int ext_id ) { u8 *edid_ext ; int i ; { edid_ext = (u8 *)0U; if ((unsigned long )edid == (unsigned long )((struct edid *)0) || (unsigned int )edid->extensions == 0U) { return ((u8 *)0U); } else { } i = 0; goto ldv_39529; ldv_39528: edid_ext = (u8 *)edid + (unsigned long )((i + 1) * 128); if ((int )*edid_ext == ext_id) { goto ldv_39527; } else { } i = i + 1; ldv_39529: ; if ((int )edid->extensions > i) { goto ldv_39528; } else { } ldv_39527: ; if ((int )edid->extensions == i) { return ((u8 *)0U); } else { } return (edid_ext); } } static u8 *drm_find_cea_extension(struct edid *edid ) { u8 *tmp ; { tmp = drm_find_edid_extension(edid, 2); return (tmp); } } static u8 *drm_find_displayid_extension(struct edid *edid ) { u8 *tmp ; { tmp = drm_find_edid_extension(edid, 112); return (tmp); } } static unsigned int cea_mode_alternate_clock(struct drm_display_mode const *cea_mode ) { unsigned int clock ; { clock = (unsigned int )cea_mode->clock; if ((int )cea_mode->vrefresh % 6 != 0) { return (clock); } else { } if ((int )cea_mode->vdisplay == 240 || (int )cea_mode->vdisplay == 480) { clock = (clock * 1001U) / 1000U; } else { clock = ((clock + 1U) * 1000U) / 1001U; } return (clock); } } u8 drm_match_cea_mode(struct drm_display_mode const *to_match ) { u8 mode ; struct drm_display_mode const *cea_mode ; unsigned int clock1 ; unsigned int clock2 ; bool tmp ; { if ((int )to_match->clock == 0) { return (0U); } else { } mode = 0U; goto ldv_39550; ldv_39549: cea_mode = (struct drm_display_mode const *)(& edid_cea_modes) + (unsigned long )mode; clock1 = (unsigned int )cea_mode->clock; clock2 = cea_mode_alternate_clock(cea_mode); if (1000000000UL / (unsigned long )to_match->clock == (unsigned long )(1000000000U / clock1) || 1000000000UL / (unsigned long )to_match->clock == (unsigned long )(1000000000U / clock2)) { tmp = drm_mode_equal_no_clocks_no_stereo(to_match, cea_mode); if ((int )tmp) { return ((unsigned int )mode + 1U); } else { } } else { } mode = (u8 )((int )mode + 1); ldv_39550: ; if ((unsigned int )mode <= 63U) { goto ldv_39549; } else { } return (0U); } } static char const __kstrtab_drm_match_cea_mode[19U] = { 'd', 'r', 'm', '_', 'm', 'a', 't', 'c', 'h', '_', 'c', 'e', 'a', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_match_cea_mode ; struct kernel_symbol const __ksymtab_drm_match_cea_mode = {(unsigned long )(& drm_match_cea_mode), (char const *)(& __kstrtab_drm_match_cea_mode)}; enum hdmi_picture_aspect drm_get_cea_aspect_ratio(u8 const video_code ) { { return ((enum hdmi_picture_aspect )edid_cea_modes[(int )video_code + -1].picture_aspect_ratio); } } static char const __kstrtab_drm_get_cea_aspect_ratio[25U] = { 'd', 'r', 'm', '_', 'g', 'e', 't', '_', 'c', 'e', 'a', '_', 'a', 's', 'p', 'e', 'c', 't', '_', 'r', 'a', 't', 'i', 'o', '\000'}; struct kernel_symbol const __ksymtab_drm_get_cea_aspect_ratio ; struct kernel_symbol const __ksymtab_drm_get_cea_aspect_ratio = {(unsigned long )(& drm_get_cea_aspect_ratio), (char const *)(& __kstrtab_drm_get_cea_aspect_ratio)}; static unsigned int hdmi_mode_alternate_clock(struct drm_display_mode const *hdmi_mode ) { unsigned int tmp ; { if ((int )hdmi_mode->vdisplay == 4096 && (int )hdmi_mode->hdisplay == 2160) { return ((unsigned int )hdmi_mode->clock); } else { } tmp = cea_mode_alternate_clock(hdmi_mode); return (tmp); } } static u8 drm_match_hdmi_mode(struct drm_display_mode const *to_match ) { u8 mode ; struct drm_display_mode const *hdmi_mode ; unsigned int clock1 ; unsigned int clock2 ; bool tmp ; { if ((int )to_match->clock == 0) { return (0U); } else { } mode = 0U; goto ldv_39582; ldv_39581: hdmi_mode = (struct drm_display_mode const *)(& edid_4k_modes) + (unsigned long )mode; clock1 = (unsigned int )hdmi_mode->clock; clock2 = hdmi_mode_alternate_clock(hdmi_mode); if (1000000000UL / (unsigned long )to_match->clock == (unsigned long )(1000000000U / clock1) || 1000000000UL / (unsigned long )to_match->clock == (unsigned long )(1000000000U / clock2)) { tmp = drm_mode_equal_no_clocks_no_stereo(to_match, hdmi_mode); if ((int )tmp) { return ((unsigned int )mode + 1U); } else { } } else { } mode = (u8 )((int )mode + 1); ldv_39582: ; if ((unsigned int )mode <= 3U) { goto ldv_39581; } else { } return (0U); } } static int add_alternate_cea_modes(struct drm_connector *connector , struct edid *edid ) { struct drm_device *dev ; struct drm_display_mode *mode ; struct drm_display_mode *tmp ; struct list_head list ; int modes ; u8 *tmp___0 ; struct list_head const *__mptr ; struct drm_display_mode const *cea_mode ; struct drm_display_mode *newmode ; u8 mode_idx ; u8 tmp___1 ; unsigned int clock1 ; unsigned int clock2 ; u8 tmp___2 ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; struct list_head const *__mptr___3 ; { dev = connector->dev; list.next = & list; list.prev = & list; modes = 0; tmp___0 = drm_find_cea_extension(edid); if ((unsigned long )tmp___0 == (unsigned long )((u8 *)0U)) { return (0); } else { } __mptr = (struct list_head const *)connector->probed_modes.next; mode = (struct drm_display_mode *)__mptr; goto ldv_39608; ldv_39607: cea_mode = (struct drm_display_mode const *)0; tmp___1 = drm_match_cea_mode((struct drm_display_mode const *)mode); mode_idx = (unsigned int )tmp___1 + 255U; if ((unsigned int )mode_idx <= 63U) { cea_mode = (struct drm_display_mode const *)(& edid_cea_modes) + (unsigned long )mode_idx; clock2 = cea_mode_alternate_clock(cea_mode); } else { tmp___2 = drm_match_hdmi_mode((struct drm_display_mode const *)mode); mode_idx = (unsigned int )tmp___2 + 255U; if ((unsigned int )mode_idx <= 3U) { cea_mode = (struct drm_display_mode const *)(& edid_4k_modes) + (unsigned long )mode_idx; clock2 = hdmi_mode_alternate_clock(cea_mode); } else { } } if ((unsigned long )cea_mode == (unsigned long )((struct drm_display_mode const *)0)) { goto ldv_39606; } else { } clock1 = (unsigned int )cea_mode->clock; if (clock1 == clock2) { goto ldv_39606; } else { } if ((unsigned int )mode->clock != clock1 && (unsigned int )mode->clock != clock2) { goto ldv_39606; } else { } newmode = drm_mode_duplicate(dev, cea_mode); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { goto ldv_39606; } else { } newmode->flags = newmode->flags | (mode->flags & 507904U); if ((unsigned int )mode->clock != clock1) { newmode->clock = (int )clock1; } else { newmode->clock = (int )clock2; } list_add_tail(& newmode->head, & list); ldv_39606: __mptr___0 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___0; ldv_39608: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_39607; } else { } __mptr___1 = (struct list_head const *)list.next; mode = (struct drm_display_mode *)__mptr___1; __mptr___2 = (struct list_head const *)mode->head.next; tmp = (struct drm_display_mode *)__mptr___2; goto ldv_39617; ldv_39616: list_del(& mode->head); drm_mode_probed_add(connector, mode); modes = modes + 1; mode = tmp; __mptr___3 = (struct list_head const *)tmp->head.next; tmp = (struct drm_display_mode *)__mptr___3; ldv_39617: ; if ((unsigned long )(& mode->head) != (unsigned long )(& list)) { goto ldv_39616; } else { } return (modes); } } static struct drm_display_mode *drm_display_mode_from_vic_index(struct drm_connector *connector , u8 const *video_db , u8 video_len , u8 video_index ) { struct drm_device *dev ; struct drm_display_mode *newmode ; u8 cea_mode ; { dev = connector->dev; if ((unsigned long )video_db == (unsigned long )((u8 const *)0U) || (int )video_index >= (int )video_len) { return ((struct drm_display_mode *)0); } else { } cea_mode = ((unsigned int )((u8 )*(video_db + (unsigned long )video_index)) & 127U) + 255U; if ((unsigned int )cea_mode > 63U) { return ((struct drm_display_mode *)0); } else { } newmode = drm_mode_duplicate(dev, (struct drm_display_mode const *)(& edid_cea_modes) + (unsigned long )cea_mode); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { return ((struct drm_display_mode *)0); } else { } newmode->vrefresh = 0; return (newmode); } } static int do_cea_modes(struct drm_connector *connector , u8 const *db , u8 len ) { int i ; int modes ; struct drm_display_mode *mode ; { modes = 0; i = 0; goto ldv_39639; ldv_39638: mode = drm_display_mode_from_vic_index(connector, db, (int )len, (int )((u8 )i)); if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, mode); modes = modes + 1; } else { } i = i + 1; ldv_39639: ; if ((int )len > i) { goto ldv_39638; } else { } return (modes); } } static struct stereo_mandatory_mode const stereo_mandatory_modes[8U] = { {1920, 1080, 24, 114688U}, {1920, 1080, 24, 16384U}, {1920, 1080, 50, 131088U}, {1920, 1080, 60, 131088U}, {1280, 720, 50, 114688U}, {1280, 720, 50, 16384U}, {1280, 720, 60, 114688U}, {1280, 720, 60, 16384U}}; static bool stereo_match_mandatory(struct drm_display_mode const *mode , struct stereo_mandatory_mode const *stereo_mode ) { unsigned int interlaced ; int tmp ; int tmp___0 ; { interlaced = (unsigned int )mode->flags & 16U; if (((int )mode->hdisplay == (int )stereo_mode->width && (int )mode->vdisplay == (int )stereo_mode->height) && ((unsigned int )stereo_mode->flags & 16U) == interlaced) { tmp = drm_mode_vrefresh(mode); if (tmp == (int )stereo_mode->vrefresh) { tmp___0 = 1; } else { tmp___0 = 0; } } else { tmp___0 = 0; } return ((bool )tmp___0); } } static int add_hdmi_mandatory_stereo_modes(struct drm_connector *connector ) { struct drm_device *dev ; struct drm_display_mode const *mode ; struct list_head stereo_modes ; int modes ; int i ; struct list_head const *__mptr ; struct stereo_mandatory_mode const *mandatory ; struct drm_display_mode *new_mode ; bool tmp ; int tmp___0 ; struct list_head const *__mptr___0 ; { dev = connector->dev; modes = 0; INIT_LIST_HEAD(& stereo_modes); __mptr = (struct list_head const *)connector->probed_modes.next; mode = (struct drm_display_mode const *)__mptr; goto ldv_39673; ldv_39672: i = 0; goto ldv_39670; ldv_39669: tmp = stereo_match_mandatory(mode, (struct stereo_mandatory_mode const *)(& stereo_mandatory_modes) + (unsigned long )i); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { goto ldv_39668; } else { } mandatory = (struct stereo_mandatory_mode const *)(& stereo_mandatory_modes) + (unsigned long )i; new_mode = drm_mode_duplicate(dev, mode); if ((unsigned long )new_mode == (unsigned long )((struct drm_display_mode *)0)) { goto ldv_39668; } else { } new_mode->flags = new_mode->flags | (unsigned int )mandatory->flags; list_add_tail(& new_mode->head, & stereo_modes); modes = modes + 1; ldv_39668: i = i + 1; ldv_39670: ; if ((unsigned int )i <= 7U) { goto ldv_39669; } else { } __mptr___0 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode const *)__mptr___0; ldv_39673: ; if ((unsigned long )(& mode->head) != (unsigned long )((struct list_head const *)(& connector->probed_modes))) { goto ldv_39672; } else { } list_splice_tail(& stereo_modes, & connector->probed_modes); return (modes); } } static int add_hdmi_mode(struct drm_connector *connector , u8 vic ) { struct drm_device *dev ; struct drm_display_mode *newmode ; { dev = connector->dev; vic = (u8 )((int )vic - 1); if ((unsigned int )vic > 3U) { drm_err("Unknown HDMI VIC: %d\n", (int )vic); return (0); } else { } newmode = drm_mode_duplicate(dev, (struct drm_display_mode const *)(& edid_4k_modes) + (unsigned long )vic); if ((unsigned long )newmode == (unsigned long )((struct drm_display_mode *)0)) { return (0); } else { } drm_mode_probed_add(connector, newmode); return (1); } } static int add_3d_struct_modes(struct drm_connector *connector , u16 structure , u8 const *video_db , u8 video_len , u8 video_index ) { struct drm_display_mode *newmode ; int modes ; { modes = 0; if ((int )structure & 1) { newmode = drm_display_mode_from_vic_index(connector, video_db, (int )video_len, (int )video_index); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { newmode->flags = newmode->flags | 16384U; drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } if (((int )structure & 64) != 0) { newmode = drm_display_mode_from_vic_index(connector, video_db, (int )video_len, (int )video_index); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { newmode->flags = newmode->flags | 114688U; drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } if (((int )structure & 256) != 0) { newmode = drm_display_mode_from_vic_index(connector, video_db, (int )video_len, (int )video_index); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { newmode->flags = newmode->flags | 131072U; drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } return (modes); } } static int do_hdmi_vsdb_modes(struct drm_connector *connector , u8 const *db , u8 len , u8 const *video_db , u8 video_len ) { int modes ; int offset ; int i ; int multi_present ; int multi_len ; u8 vic_len ; u8 hdmi_3d_len ; u16 mask ; u16 structure_all ; int tmp ; u8 vic ; int tmp___0 ; int tmp___1 ; int vic_index ; struct drm_display_mode *newmode ; unsigned int newflag ; bool detail_present ; { modes = 0; offset = 0; multi_present = 0; hdmi_3d_len = 0U; if ((unsigned int )len <= 7U) { goto out; } else { } if (((int )*(db + 8UL) & 32) == 0) { goto out; } else { } if ((int )((signed char )*(db + 8UL)) < 0) { offset = offset + 2; } else { } if (((int )*(db + 8UL) & 64) != 0) { offset = offset + 2; } else { } if ((int )len < offset + 10) { goto out; } else { } offset = offset + 1; if ((int )((signed char )*(db + (unsigned long )(offset + 8))) < 0) { tmp = add_hdmi_mandatory_stereo_modes(connector); modes = tmp + modes; multi_present = ((int )*(db + (unsigned long )(offset + 8)) & 96) >> 5; } else { } offset = offset + 1; vic_len = (u8 )((int )((unsigned char )*(db + (unsigned long )(offset + 8))) >> 5); hdmi_3d_len = (unsigned int )((u8 )*(db + (unsigned long )(offset + 8))) & 31U; i = 0; goto ldv_39711; ldv_39710: vic = *(db + (unsigned long )((offset + 9) + i)); tmp___0 = add_hdmi_mode(connector, (int )vic); modes = tmp___0 + modes; i = i + 1; ldv_39711: ; if ((int )vic_len > i && (int )len >= (offset + 9) + i) { goto ldv_39710; } else { } offset = ((int )vic_len + 1) + offset; if (multi_present == 1) { multi_len = 2; } else if (multi_present == 2) { multi_len = 4; } else { multi_len = 0; } if ((int )len < ((offset + 8) + (int )hdmi_3d_len) + -1) { goto out; } else { } if ((int )hdmi_3d_len < multi_len) { goto out; } else { } if (multi_present == 1 || multi_present == 2) { structure_all = (u16 )((int )((short )((int )*(db + (unsigned long )(offset + 8)) << 8)) | (int )((short )*(db + (unsigned long )(offset + 9)))); if (multi_present == 2) { mask = (u16 )((int )((short )((int )*(db + (unsigned long )(offset + 10)) << 8)) | (int )((short )*(db + (unsigned long )(offset + 11)))); } else { mask = 65535U; } i = 0; goto ldv_39714; ldv_39713: ; if (((int )mask >> i) & 1) { tmp___1 = add_3d_struct_modes(connector, (int )structure_all, video_db, (int )video_len, (int )((u8 )i)); modes = tmp___1 + modes; } else { } i = i + 1; ldv_39714: ; if (i <= 15) { goto ldv_39713; } else { } } else { } offset = offset + multi_len; i = 0; goto ldv_39726; ldv_39725: newmode = (struct drm_display_mode *)0; newflag = 0U; detail_present = ((int )*(db + (unsigned long )((offset + 8) + i)) & 15) > 7; if ((int )detail_present && i + 1 == (int )hdmi_3d_len - multi_len) { goto ldv_39720; } else { } vic_index = (int )((unsigned char )*(db + (unsigned long )((offset + 8) + i))) >> 4; switch ((int )*(db + (unsigned long )((offset + 8) + i)) & 15) { case 0: newflag = 16384U; goto ldv_39722; case 6: newflag = 114688U; goto ldv_39722; case 8: ; if ((unsigned int )((int )((unsigned char )*(db + (unsigned long )((offset + 9) + i))) >> 4) == 1U) { newflag = 131072U; } else { } goto ldv_39722; } ldv_39722: ; if (newflag != 0U) { newmode = drm_display_mode_from_vic_index(connector, video_db, (int )video_len, (int )((u8 )vic_index)); if ((unsigned long )newmode != (unsigned long )((struct drm_display_mode *)0)) { newmode->flags = newmode->flags | newflag; drm_mode_probed_add(connector, newmode); modes = modes + 1; } else { } } else { } if ((int )detail_present) { i = i + 1; } else { } i = i + 1; ldv_39726: ; if ((int )hdmi_3d_len - multi_len > i) { goto ldv_39725; } else { } ldv_39720: ; out: ; return (modes); } } static int cea_db_payload_len(u8 const *db ) { { return ((int )*db & 31); } } static int cea_db_tag(u8 const *db ) { { return ((int )((unsigned char )*db) >> 5); } } static int cea_revision(u8 const *cea ) { { return ((int )*(cea + 1UL)); } } static int cea_db_offsets(u8 const *cea , int *start , int *end ) { { *start = 4; *end = (int )*(cea + 2UL); if (*end == 0) { *end = 127; } else { } if (*end <= 3 || *end > 127) { return (-34); } else { } return (0); } } static bool cea_db_is_hdmi_vsdb(u8 const *db ) { int hdmi_id ; int tmp ; int tmp___0 ; { tmp = cea_db_tag(db); if (tmp != 3) { return (0); } else { } tmp___0 = cea_db_payload_len(db); if (tmp___0 <= 4) { return (0); } else { } hdmi_id = ((int )*(db + 1UL) | ((int )*(db + 2UL) << 8)) | ((int )*(db + 3UL) << 16); return (hdmi_id == 3075); } } static int add_cea_modes(struct drm_connector *connector , struct edid *edid ) { u8 const *cea ; u8 *tmp ; u8 const *db ; u8 const *hdmi ; u8 const *video ; u8 dbl ; u8 hdmi_len ; u8 video_len ; int modes ; int i ; int start ; int end ; int tmp___0 ; int tmp___1 ; int tmp___2 ; bool tmp___3 ; int tmp___4 ; int tmp___5 ; int tmp___6 ; int tmp___7 ; int tmp___8 ; { tmp = drm_find_cea_extension(edid); cea = (u8 const *)tmp; hdmi = (u8 const *)0U; video = (u8 const *)0U; video_len = 0U; modes = 0; if ((unsigned long )cea != (unsigned long )((u8 const *)0U)) { tmp___7 = cea_revision(cea); if (tmp___7 > 2) { tmp___0 = cea_db_offsets(cea, & start, & end); if (tmp___0 != 0) { return (0); } else { } i = start; goto ldv_39761; ldv_39760: db = cea + (unsigned long )i; tmp___1 = cea_db_payload_len(db); dbl = (u8 )tmp___1; tmp___4 = cea_db_tag(db); if (tmp___4 == 2) { video = db + 1UL; video_len = dbl; tmp___2 = do_cea_modes(connector, video, (int )dbl); modes = tmp___2 + modes; } else { tmp___3 = cea_db_is_hdmi_vsdb(db); if ((int )tmp___3) { hdmi = db; hdmi_len = dbl; } else { } } tmp___5 = cea_db_payload_len(cea + (unsigned long )i); i = (tmp___5 + 1) + i; ldv_39761: ; if (i < end) { tmp___6 = cea_db_payload_len(cea + (unsigned long )i); if (tmp___6 + i < end) { goto ldv_39760; } else { goto ldv_39762; } } else { } ldv_39762: ; } else { } } else { } if ((unsigned long )hdmi != (unsigned long )((u8 const *)0U)) { tmp___8 = do_hdmi_vsdb_modes(connector, hdmi, (int )hdmi_len, video, (int )video_len); modes = tmp___8 + modes; } else { } return (modes); } } static void parse_hdmi_vsdb(struct drm_connector *connector , u8 const *db ) { u8 len ; int tmp ; long tmp___0 ; { tmp = cea_db_payload_len(db); len = (u8 )tmp; if ((unsigned int )len > 5U) { connector->eld[5] = (uint8_t )((int )((signed char )connector->eld[5]) | (int )((signed char )(((int )((unsigned char )*(db + 6UL)) >> 7) << 1))); connector->dvi_dual = ((int )*(db + 6UL) & 1) != 0; } else { } if ((unsigned int )len > 6U) { connector->max_tmds_clock = (int )*(db + 7UL) * 5; } else { } if ((unsigned int )len > 7U) { connector->latency_present[0] = (unsigned int )((int )((unsigned char )*(db + 8UL)) >> 7) != 0U; connector->latency_present[1] = (((int )((unsigned char )*(db + 8UL)) >> 6) & 1) != 0; } else { } if ((unsigned int )len > 8U) { connector->video_latency[0] = (int )*(db + 9UL); } else { } if ((unsigned int )len > 9U) { connector->audio_latency[0] = (int )*(db + 10UL); } else { } if ((unsigned int )len > 10U) { connector->video_latency[1] = (int )*(db + 11UL); } else { } if ((unsigned int )len > 11U) { connector->audio_latency[1] = (int )*(db + 12UL); } else { } tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("parse_hdmi_vsdb", "HDMI: DVI dual %d, max TMDS clock %d, latency present %d %d, video latency %d %d, audio latency %d %d\n", (int )connector->dvi_dual, connector->max_tmds_clock, (int )connector->latency_present[0], (int )connector->latency_present[1], connector->video_latency[0], connector->video_latency[1], connector->audio_latency[0], connector->audio_latency[1]); } else { } return; } } static void monitor_name(struct detailed_timing *t , void *data ) { { if ((unsigned int )t->data.other_data.type == 252U) { *((u8 **)data) = (u8 *)(& t->data.other_data.data.str.str); } else { } return; } } void drm_edid_to_eld(struct drm_connector *connector , struct edid *edid ) { uint8_t *eld ; u8 *cea ; u8 *name ; u8 *db ; int sad_count ; int mnl ; int dbl ; long tmp ; long tmp___0 ; int i ; int start ; int end ; int tmp___1 ; int tmp___2 ; bool tmp___3 ; int tmp___4 ; int tmp___5 ; int tmp___6 ; int tmp___7 ; int tmp___8 ; long tmp___9 ; { eld = (uint8_t *)(& connector->eld); sad_count = 0; memset((void *)eld, 0, 128UL); cea = drm_find_cea_extension(edid); if ((unsigned long )cea == (unsigned long )((u8 *)0U)) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_edid_to_eld", "ELD: no CEA Extension found\n"); } else { } return; } else { } name = (u8 *)0U; drm_for_each_detailed_block((u8 *)edid, & monitor_name, (void *)(& name)); mnl = 0; goto ldv_39787; ldv_39786: ; if ((unsigned int )*(name + (unsigned long )mnl) == 10U) { goto ldv_39785; } else { } *(eld + (unsigned long )(mnl + 20)) = *(name + (unsigned long )mnl); mnl = mnl + 1; ldv_39787: ; if ((unsigned long )name != (unsigned long )((u8 *)0U) && mnl <= 12) { goto ldv_39786; } else { } ldv_39785: *(eld + 4UL) = (uint8_t )((int )((signed char )((int )*(cea + 1UL) << 5)) | (int )((signed char )mnl)); tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_edid_to_eld", "ELD monitor %s\n", eld + 20UL); } else { } *eld = 16U; *(eld + 16UL) = edid->mfg_id[0]; *(eld + 17UL) = edid->mfg_id[1]; *(eld + 18UL) = edid->prod_code[0]; *(eld + 19UL) = edid->prod_code[1]; tmp___6 = cea_revision((u8 const *)cea); if (tmp___6 > 2) { tmp___1 = cea_db_offsets((u8 const *)cea, & start, & end); if (tmp___1 != 0) { start = 0; end = 0; } else { } i = start; goto ldv_39797; ldv_39796: db = cea + (unsigned long )i; dbl = cea_db_payload_len((u8 const *)db); tmp___2 = cea_db_tag((u8 const *)db); switch (tmp___2) { case 1: sad_count = dbl / 3; if (dbl > 0) { memcpy((void *)(eld + ((unsigned long )mnl + 20UL)), (void const *)db + 1U, (size_t )dbl); } else { } goto ldv_39792; case 4: ; if (dbl > 0) { *(eld + 7UL) = *(db + 1UL); } else { } goto ldv_39792; case 3: tmp___3 = cea_db_is_hdmi_vsdb((u8 const *)db); if ((int )tmp___3) { parse_hdmi_vsdb(connector, (u8 const *)db); } else { } goto ldv_39792; default: ; goto ldv_39792; } ldv_39792: tmp___4 = cea_db_payload_len((u8 const *)cea + (unsigned long )i); i = (tmp___4 + 1) + i; ldv_39797: ; if (i < end) { tmp___5 = cea_db_payload_len((u8 const *)cea + (unsigned long )i); if (tmp___5 + i < end) { goto ldv_39796; } else { goto ldv_39798; } } else { } ldv_39798: ; } else { } *(eld + 5UL) = (uint8_t )((int )((signed char )*(eld + 5UL)) | (int )((signed char )(sad_count << 4))); tmp___7 = drm_eld_calc_baseline_block_size((uint8_t const *)eld); *(eld + 2UL) = (uint8_t )((tmp___7 + 3) / 4); tmp___9 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___9 != 0L) { tmp___8 = drm_eld_size((uint8_t const *)eld); drm_ut_debug_printk("drm_edid_to_eld", "ELD size %d, SAD count %d\n", tmp___8, sad_count); } else { } return; } } static char const __kstrtab_drm_edid_to_eld[16U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 't', 'o', '_', 'e', 'l', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_to_eld ; struct kernel_symbol const __ksymtab_drm_edid_to_eld = {(unsigned long )(& drm_edid_to_eld), (char const *)(& __kstrtab_drm_edid_to_eld)}; int drm_edid_to_sad(struct edid *edid , struct cea_sad **sads ) { int count ; int i ; int start ; int end ; int dbl ; u8 *cea ; long tmp ; long tmp___0 ; int tmp___1 ; long tmp___2 ; int tmp___3 ; u8 *db ; int j ; void *tmp___4 ; u8 *sad ; int tmp___5 ; int tmp___6 ; int tmp___7 ; { count = 0; cea = drm_find_cea_extension(edid); if ((unsigned long )cea == (unsigned long )((u8 *)0U)) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_edid_to_sad", "SAD: no CEA Extension found\n"); } else { } return (-2); } else { } tmp___1 = cea_revision((u8 const *)cea); if (tmp___1 <= 2) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_edid_to_sad", "SAD: wrong CEA revision\n"); } else { } return (-524); } else { } tmp___3 = cea_db_offsets((u8 const *)cea, & start, & end); if (tmp___3 != 0) { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_edid_to_sad", "SAD: invalid data block offsets\n"); } else { } return (-71); } else { } i = start; goto ldv_39826; ldv_39825: db = cea + (unsigned long )i; tmp___5 = cea_db_tag((u8 const *)db); if (tmp___5 == 1) { dbl = cea_db_payload_len((u8 const *)db); count = dbl / 3; tmp___4 = kcalloc((size_t )count, 4UL, 208U); *sads = (struct cea_sad *)tmp___4; if ((unsigned long )*sads == (unsigned long )((struct cea_sad *)0)) { return (-12); } else { } j = 0; goto ldv_39822; ldv_39821: sad = db + (unsigned long )(j * 3 + 1); (*sads + (unsigned long )j)->format = (u8 )(((int )*sad & 120) >> 3); (*sads + (unsigned long )j)->channels = (unsigned int )*sad & 7U; (*sads + (unsigned long )j)->freq = (unsigned int )*(sad + 1UL) & 127U; (*sads + (unsigned long )j)->byte2 = *(sad + 2UL); j = j + 1; ldv_39822: ; if (j < count) { goto ldv_39821; } else { } goto ldv_39824; } else { } tmp___6 = cea_db_payload_len((u8 const *)cea + (unsigned long )i); i = (tmp___6 + 1) + i; ldv_39826: ; if (i < end) { tmp___7 = cea_db_payload_len((u8 const *)cea + (unsigned long )i); if (tmp___7 + i < end) { goto ldv_39825; } else { goto ldv_39824; } } else { } ldv_39824: ; return (count); } } static char const __kstrtab_drm_edid_to_sad[16U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 't', 'o', '_', 's', 'a', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_to_sad ; struct kernel_symbol const __ksymtab_drm_edid_to_sad = {(unsigned long )(& drm_edid_to_sad), (char const *)(& __kstrtab_drm_edid_to_sad)}; int drm_edid_to_speaker_allocation(struct edid *edid , u8 **sadb ) { int count ; int i ; int start ; int end ; int dbl ; u8 const *cea ; u8 *tmp ; long tmp___0 ; long tmp___1 ; int tmp___2 ; long tmp___3 ; int tmp___4 ; u8 const *db ; void *tmp___5 ; int tmp___6 ; int tmp___7 ; int tmp___8 ; { count = 0; tmp = drm_find_cea_extension(edid); cea = (u8 const *)tmp; if ((unsigned long )cea == (unsigned long )((u8 const *)0U)) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_edid_to_speaker_allocation", "SAD: no CEA Extension found\n"); } else { } return (-2); } else { } tmp___2 = cea_revision(cea); if (tmp___2 <= 2) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_edid_to_speaker_allocation", "SAD: wrong CEA revision\n"); } else { } return (-524); } else { } tmp___4 = cea_db_offsets(cea, & start, & end); if (tmp___4 != 0) { tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_edid_to_speaker_allocation", "SAD: invalid data block offsets\n"); } else { } return (-71); } else { } i = start; goto ldv_39849; ldv_39848: db = cea + (unsigned long )i; tmp___6 = cea_db_tag(db); if (tmp___6 == 4) { dbl = cea_db_payload_len(db); if (dbl == 3) { tmp___5 = kmemdup((void const *)db + 1U, (size_t )dbl, 208U); *sadb = (u8 *)tmp___5; if ((unsigned long )*sadb == (unsigned long )((u8 *)0U)) { return (-12); } else { } count = dbl; goto ldv_39847; } else { } } else { } tmp___7 = cea_db_payload_len(cea + (unsigned long )i); i = (tmp___7 + 1) + i; ldv_39849: ; if (i < end) { tmp___8 = cea_db_payload_len(cea + (unsigned long )i); if (tmp___8 + i < end) { goto ldv_39848; } else { goto ldv_39847; } } else { } ldv_39847: ; return (count); } } static char const __kstrtab_drm_edid_to_speaker_allocation[31U] = { 'd', 'r', 'm', '_', 'e', 'd', 'i', 'd', '_', 't', 'o', '_', 's', 'p', 'e', 'a', 'k', 'e', 'r', '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\000'}; struct kernel_symbol const __ksymtab_drm_edid_to_speaker_allocation ; struct kernel_symbol const __ksymtab_drm_edid_to_speaker_allocation = {(unsigned long )(& drm_edid_to_speaker_allocation), (char const *)(& __kstrtab_drm_edid_to_speaker_allocation)}; int drm_av_sync_delay(struct drm_connector *connector , struct drm_display_mode *mode ) { int i ; int a ; int v ; int _min1 ; int _min2 ; int _min1___0 ; int _min2___0 ; int _max1 ; int _max2 ; { i = (mode->flags & 16U) != 0U; if (! connector->latency_present[0]) { return (0); } else { } if (! connector->latency_present[1]) { i = 0; } else { } a = connector->audio_latency[i]; v = connector->video_latency[i]; if (a == 255 || v == 255) { return (0); } else { } if (a != 0) { _min1 = (a + -1) * 2; _min2 = 500; a = _min1 < _min2 ? _min1 : _min2; } else { } if (v != 0) { _min1___0 = (v + -1) * 2; _min2___0 = 500; v = _min1___0 < _min2___0 ? _min1___0 : _min2___0; } else { } _max1 = v - a; _max2 = 0; return (_max1 > _max2 ? _max1 : _max2); } } static char const __kstrtab_drm_av_sync_delay[18U] = { 'd', 'r', 'm', '_', 'a', 'v', '_', 's', 'y', 'n', 'c', '_', 'd', 'e', 'l', 'a', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_av_sync_delay ; struct kernel_symbol const __ksymtab_drm_av_sync_delay = {(unsigned long )(& drm_av_sync_delay), (char const *)(& __kstrtab_drm_av_sync_delay)}; struct drm_connector *drm_select_eld(struct drm_encoder *encoder , struct drm_display_mode *mode ) { struct drm_connector *connector ; struct drm_device *dev ; int __ret_warn_on ; int tmp ; long tmp___0 ; int __ret_warn_on___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { dev = encoder->dev; tmp = mutex_is_locked(& dev->mode_config.mutex); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_edid.c", 3413); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___1 = drm_modeset_is_locked(& dev->mode_config.connection_mutex); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } __ret_warn_on___0 = tmp___2; tmp___3 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_edid.c", 3414); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); __mptr = (struct list_head const *)dev->mode_config.connector_list.next; connector = (struct drm_connector *)__mptr + 0xffffffffffffffe8UL; goto ldv_39897; ldv_39896: ; if ((unsigned long )connector->encoder == (unsigned long )encoder && (unsigned int )connector->eld[0] != 0U) { return (connector); } else { } __mptr___0 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___0 + 0xffffffffffffffe8UL; ldv_39897: ; if ((unsigned long )(& connector->head) != (unsigned long )(& dev->mode_config.connector_list)) { goto ldv_39896; } else { } return ((struct drm_connector *)0); } } static char const __kstrtab_drm_select_eld[15U] = { 'd', 'r', 'm', '_', 's', 'e', 'l', 'e', 'c', 't', '_', 'e', 'l', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_select_eld ; struct kernel_symbol const __ksymtab_drm_select_eld = {(unsigned long )(& drm_select_eld), (char const *)(& __kstrtab_drm_select_eld)}; bool drm_detect_hdmi_monitor(struct edid *edid ) { u8 *edid_ext ; int i ; int start_offset ; int end_offset ; int tmp ; bool tmp___0 ; int tmp___1 ; int tmp___2 ; { edid_ext = drm_find_cea_extension(edid); if ((unsigned long )edid_ext == (unsigned long )((u8 *)0U)) { return (0); } else { } tmp = cea_db_offsets((u8 const *)edid_ext, & start_offset, & end_offset); if (tmp != 0) { return (0); } else { } i = start_offset; goto ldv_39915; ldv_39914: tmp___0 = cea_db_is_hdmi_vsdb((u8 const *)edid_ext + (unsigned long )i); if ((int )tmp___0) { return (1); } else { } tmp___1 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); i = (tmp___1 + 1) + i; ldv_39915: ; if (i < end_offset) { tmp___2 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___2 + i < end_offset) { goto ldv_39914; } else { goto ldv_39916; } } else { } ldv_39916: ; return (0); } } static char const __kstrtab_drm_detect_hdmi_monitor[24U] = { 'd', 'r', 'm', '_', 'd', 'e', 't', 'e', 'c', 't', '_', 'h', 'd', 'm', 'i', '_', 'm', 'o', 'n', 'i', 't', 'o', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_detect_hdmi_monitor ; struct kernel_symbol const __ksymtab_drm_detect_hdmi_monitor = {(unsigned long )(& drm_detect_hdmi_monitor), (char const *)(& __kstrtab_drm_detect_hdmi_monitor)}; bool drm_detect_monitor_audio(struct edid *edid ) { u8 *edid_ext ; int i ; int j ; bool has_audio ; int start_offset ; int end_offset ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; int tmp___3 ; int tmp___4 ; int tmp___5 ; { has_audio = 0; edid_ext = drm_find_cea_extension(edid); if ((unsigned long )edid_ext == (unsigned long )((u8 *)0U)) { goto end; } else { } has_audio = ((int )*(edid_ext + 3UL) & 64) != 0; if ((int )has_audio) { tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_detect_monitor_audio", "Monitor has basic audio support\n"); } else { } goto end; } else { } tmp___0 = cea_db_offsets((u8 const *)edid_ext, & start_offset, & end_offset); if (tmp___0 != 0) { goto end; } else { } i = start_offset; goto ldv_39939; ldv_39938: tmp___3 = cea_db_tag((u8 const *)edid_ext + (unsigned long )i); if (tmp___3 == 1) { has_audio = 1; j = 1; goto ldv_39936; ldv_39935: tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_detect_monitor_audio", "CEA audio format %d\n", ((int )*(edid_ext + (unsigned long )(i + j)) >> 3) & 15); } else { } j = j + 3; ldv_39936: tmp___2 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___2 + 1 > j) { goto ldv_39935; } else { } goto end; } else { } tmp___4 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); i = (tmp___4 + 1) + i; ldv_39939: ; if (i < end_offset) { tmp___5 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___5 + i < end_offset) { goto ldv_39938; } else { goto ldv_39940; } } else { } ldv_39940: ; end: ; return (has_audio); } } static char const __kstrtab_drm_detect_monitor_audio[25U] = { 'd', 'r', 'm', '_', 'd', 'e', 't', 'e', 'c', 't', '_', 'm', 'o', 'n', 'i', 't', 'o', 'r', '_', 'a', 'u', 'd', 'i', 'o', '\000'}; struct kernel_symbol const __ksymtab_drm_detect_monitor_audio ; struct kernel_symbol const __ksymtab_drm_detect_monitor_audio = {(unsigned long )(& drm_detect_monitor_audio), (char const *)(& __kstrtab_drm_detect_monitor_audio)}; bool drm_rgb_quant_range_selectable(struct edid *edid ) { u8 *edid_ext ; int i ; int start ; int end ; int tmp ; long tmp___0 ; int tmp___1 ; int tmp___2 ; int tmp___3 ; int tmp___4 ; { edid_ext = drm_find_cea_extension(edid); if ((unsigned long )edid_ext == (unsigned long )((u8 *)0U)) { return (0); } else { } tmp = cea_db_offsets((u8 const *)edid_ext, & start, & end); if (tmp != 0) { return (0); } else { } i = start; goto ldv_39957; ldv_39956: tmp___1 = cea_db_tag((u8 const *)edid_ext + (unsigned long )i); if (tmp___1 == 7) { tmp___2 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___2 == 2) { tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_rgb_quant_range_selectable", "CEA VCDB 0x%02x\n", (int )*(edid_ext + ((unsigned long )i + 2UL))); } else { } return (((int )*(edid_ext + ((unsigned long )i + 2UL)) & 64) != 0); } else { } } else { } tmp___3 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); i = (tmp___3 + 1) + i; ldv_39957: ; if (i < end) { tmp___4 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___4 + i < end) { goto ldv_39956; } else { goto ldv_39958; } } else { } ldv_39958: ; return (0); } } static char const __kstrtab_drm_rgb_quant_range_selectable[31U] = { 'd', 'r', 'm', '_', 'r', 'g', 'b', '_', 'q', 'u', 'a', 'n', 't', '_', 'r', 'a', 'n', 'g', 'e', '_', 's', 'e', 'l', 'e', 'c', 't', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_rgb_quant_range_selectable ; struct kernel_symbol const __ksymtab_drm_rgb_quant_range_selectable = {(unsigned long )(& drm_rgb_quant_range_selectable), (char const *)(& __kstrtab_drm_rgb_quant_range_selectable)}; static bool drm_assign_hdmi_deep_color_info(struct edid *edid , struct drm_display_info *info , struct drm_connector *connector ) { u8 *edid_ext ; u8 *hdmi ; int i ; int start_offset ; int end_offset ; unsigned int dc_bpc ; int tmp ; int tmp___0 ; long tmp___1 ; long tmp___2 ; long tmp___3 ; long tmp___4 ; long tmp___5 ; long tmp___6 ; long tmp___7 ; bool tmp___8 ; int tmp___9 ; int tmp___10 ; { dc_bpc = 0U; edid_ext = drm_find_cea_extension(edid); if ((unsigned long )edid_ext == (unsigned long )((u8 *)0U)) { return (0); } else { } tmp = cea_db_offsets((u8 const *)edid_ext, & start_offset, & end_offset); if (tmp != 0) { return (0); } else { } i = start_offset; goto ldv_39979; ldv_39978: tmp___8 = cea_db_is_hdmi_vsdb((u8 const *)edid_ext + (unsigned long )i); if ((int )tmp___8) { info->bpc = 8U; hdmi = edid_ext + (unsigned long )i; tmp___0 = cea_db_payload_len((u8 const *)hdmi); if (tmp___0 <= 5) { return (0); } else { } if (((int )*(hdmi + 6UL) & 16) != 0) { dc_bpc = 10U; info->edid_hdmi_dc_modes = (u8 )((unsigned int )info->edid_hdmi_dc_modes | 16U); tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: HDMI sink does deep color 30.\n", connector->name); } else { } } else { } if (((int )*(hdmi + 6UL) & 32) != 0) { dc_bpc = 12U; info->edid_hdmi_dc_modes = (u8 )((unsigned int )info->edid_hdmi_dc_modes | 32U); tmp___2 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: HDMI sink does deep color 36.\n", connector->name); } else { } } else { } if (((int )*(hdmi + 6UL) & 64) != 0) { dc_bpc = 16U; info->edid_hdmi_dc_modes = (u8 )((unsigned int )info->edid_hdmi_dc_modes | 64U); tmp___3 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: HDMI sink does deep color 48.\n", connector->name); } else { } } else { } if (dc_bpc != 0U) { tmp___4 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: Assigning HDMI sink color depth as %d bpc.\n", connector->name, dc_bpc); } else { } info->bpc = dc_bpc; info->color_formats = 1U; if (((int )*(hdmi + 6UL) & 8) != 0) { info->color_formats = info->color_formats | 2U; tmp___5 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: HDMI sink does YCRCB444 in deep color.\n", connector->name); } else { } } else { } if (((int )*(hdmi + 6UL) & 32) == 0) { tmp___6 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___6 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: HDMI sink should do DC_36, but does not!\n", connector->name); } else { } } else { } return (1); } else { tmp___7 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_assign_hdmi_deep_color_info", "%s: No deep color support on this HDMI sink.\n", connector->name); } else { } } } else { } tmp___9 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); i = (tmp___9 + 1) + i; ldv_39979: ; if (i < end_offset) { tmp___10 = cea_db_payload_len((u8 const *)edid_ext + (unsigned long )i); if (tmp___10 + i < end_offset) { goto ldv_39978; } else { goto ldv_39980; } } else { } ldv_39980: ; return (0); } } static void drm_add_display_info(struct edid *edid , struct drm_display_info *info , struct drm_connector *connector ) { u8 *edid_ext ; long tmp ; { info->width_mm = (unsigned int )((int )edid->width_cm * 10); info->height_mm = (unsigned int )((int )edid->height_cm * 10); info->bpc = 0U; info->color_formats = 0U; if ((unsigned int )edid->revision <= 2U) { return; } else { } if ((int )((signed char )edid->input) >= 0) { return; } else { } edid_ext = drm_find_cea_extension(edid); if ((unsigned long )edid_ext != (unsigned long )((u8 *)0U)) { info->cea_rev = *(edid_ext + 1UL); info->color_formats = 1U; if (((int )*(edid_ext + 3UL) & 32) != 0) { info->color_formats = info->color_formats | 2U; } else { } if (((int )*(edid_ext + 3UL) & 16) != 0) { info->color_formats = info->color_formats | 4U; } else { } } else { } drm_assign_hdmi_deep_color_info(edid, info, connector); if ((unsigned int )edid->revision <= 3U) { return; } else { } switch ((int )edid->input & 112) { case 16: info->bpc = 6U; goto ldv_39988; case 32: info->bpc = 8U; goto ldv_39988; case 48: info->bpc = 10U; goto ldv_39988; case 64: info->bpc = 12U; goto ldv_39988; case 80: info->bpc = 14U; goto ldv_39988; case 96: info->bpc = 16U; goto ldv_39988; case 0: ; default: info->bpc = 0U; goto ldv_39988; } ldv_39988: tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_add_display_info", "%s: Assigning EDID-1.4 digital sink color depth as %d bpc.\n", connector->name, info->bpc); } else { } info->color_formats = info->color_formats | 1U; if (((int )edid->features & 8) != 0) { info->color_formats = info->color_formats | 2U; } else { } if (((int )edid->features & 16) != 0) { info->color_formats = info->color_formats | 4U; } else { } return; } } int drm_add_edid_modes(struct drm_connector *connector , struct edid *edid ) { int num_modes ; u32 quirks ; bool tmp ; int tmp___0 ; int tmp___1 ; int tmp___2 ; int tmp___3 ; int tmp___4 ; int tmp___5 ; int tmp___6 ; int tmp___7 ; { num_modes = 0; if ((unsigned long )edid == (unsigned long )((struct edid *)0)) { return (0); } else { } tmp = drm_edid_is_valid(edid); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { dev_warn((struct device const *)(connector->dev)->dev, "%s: EDID invalid.\n", connector->name); return (0); } else { } quirks = edid_get_quirks(edid); tmp___1 = add_detailed_modes(connector, edid, quirks); num_modes = tmp___1 + num_modes; tmp___2 = add_cvt_modes(connector, edid); num_modes = tmp___2 + num_modes; tmp___3 = add_standard_modes(connector, edid); num_modes = tmp___3 + num_modes; tmp___4 = add_established_modes(connector, edid); num_modes = tmp___4 + num_modes; tmp___5 = add_cea_modes(connector, edid); num_modes = tmp___5 + num_modes; tmp___6 = add_alternate_cea_modes(connector, edid); num_modes = tmp___6 + num_modes; if ((int )edid->features & 1) { tmp___7 = add_inferred_modes(connector, edid); num_modes = tmp___7 + num_modes; } else { } if ((quirks & 5U) != 0U) { edid_fixup_preferred(connector, quirks); } else { } drm_add_display_info(edid, & connector->display_info, connector); if ((quirks & 256U) != 0U) { connector->display_info.bpc = 8U; } else { } if ((quirks & 512U) != 0U) { connector->display_info.bpc = 12U; } else { } return (num_modes); } } static char const __kstrtab_drm_add_edid_modes[19U] = { 'd', 'r', 'm', '_', 'a', 'd', 'd', '_', 'e', 'd', 'i', 'd', '_', 'm', 'o', 'd', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_add_edid_modes ; struct kernel_symbol const __ksymtab_drm_add_edid_modes = {(unsigned long )(& drm_add_edid_modes), (char const *)(& __kstrtab_drm_add_edid_modes)}; int drm_add_modes_noedid(struct drm_connector *connector , int hdisplay , int vdisplay ) { int i ; int count ; int num_modes ; struct drm_display_mode *mode ; struct drm_device *dev ; struct drm_display_mode const *ptr ; int tmp ; { num_modes = 0; dev = connector->dev; count = 88; if (hdisplay < 0) { hdisplay = 0; } else { } if (vdisplay < 0) { vdisplay = 0; } else { } i = 0; goto ldv_40024; ldv_40023: ptr = (struct drm_display_mode const *)(& drm_dmt_modes) + (unsigned long )i; if (hdisplay != 0 && vdisplay != 0) { if ((int )ptr->hdisplay > hdisplay || (int )ptr->vdisplay > vdisplay) { goto ldv_40022; } else { } } else { } tmp = drm_mode_vrefresh(ptr); if (tmp > 61) { goto ldv_40022; } else { } mode = drm_mode_duplicate(dev, ptr); if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_probed_add(connector, mode); num_modes = num_modes + 1; } else { } ldv_40022: i = i + 1; ldv_40024: ; if (i < count) { goto ldv_40023; } else { } return (num_modes); } } static char const __kstrtab_drm_add_modes_noedid[21U] = { 'd', 'r', 'm', '_', 'a', 'd', 'd', '_', 'm', 'o', 'd', 'e', 's', '_', 'n', 'o', 'e', 'd', 'i', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_add_modes_noedid ; struct kernel_symbol const __ksymtab_drm_add_modes_noedid = {(unsigned long )(& drm_add_modes_noedid), (char const *)(& __kstrtab_drm_add_modes_noedid)}; void drm_set_preferred_mode(struct drm_connector *connector , int hpref , int vpref ) { struct drm_display_mode *mode ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)connector->probed_modes.next; mode = (struct drm_display_mode *)__mptr; goto ldv_40046; ldv_40045: ; if (mode->hdisplay == hpref && mode->vdisplay == vpref) { mode->type = mode->type | 8U; } else { } __mptr___0 = (struct list_head const *)mode->head.next; mode = (struct drm_display_mode *)__mptr___0; ldv_40046: ; if ((unsigned long )(& mode->head) != (unsigned long )(& connector->probed_modes)) { goto ldv_40045; } else { } return; } } static char const __kstrtab_drm_set_preferred_mode[23U] = { 'd', 'r', 'm', '_', 's', 'e', 't', '_', 'p', 'r', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_set_preferred_mode ; struct kernel_symbol const __ksymtab_drm_set_preferred_mode = {(unsigned long )(& drm_set_preferred_mode), (char const *)(& __kstrtab_drm_set_preferred_mode)}; int drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame , struct drm_display_mode const *mode ) { int err ; { if ((unsigned long )frame == (unsigned long )((struct hdmi_avi_infoframe *)0) || (unsigned long )mode == (unsigned long )((struct drm_display_mode const *)0)) { return (-22); } else { } err = hdmi_avi_infoframe_init(frame); if (err < 0) { return (err); } else { } if (((unsigned int )mode->flags & 4096U) != 0U) { frame->pixel_repeat = 1U; } else { } frame->video_code = drm_match_cea_mode(mode); frame->picture_aspect = 0; if ((unsigned int )mode->picture_aspect_ratio == 1U || (unsigned int )mode->picture_aspect_ratio == 2U) { frame->picture_aspect = mode->picture_aspect_ratio; } else if ((unsigned int )frame->video_code != 0U) { frame->picture_aspect = drm_get_cea_aspect_ratio((int )frame->video_code); } else { } frame->active_aspect = 8; frame->scan_mode = 2; return (0); } } static char const __kstrtab_drm_hdmi_avi_infoframe_from_display_mode[41U] = { 'd', 'r', 'm', '_', 'h', 'd', 'm', 'i', '_', 'a', 'v', 'i', '_', 'i', 'n', 'f', 'o', 'f', 'r', 'a', 'm', 'e', '_', 'f', 'r', 'o', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_hdmi_avi_infoframe_from_display_mode ; struct kernel_symbol const __ksymtab_drm_hdmi_avi_infoframe_from_display_mode = {(unsigned long )(& drm_hdmi_avi_infoframe_from_display_mode), (char const *)(& __kstrtab_drm_hdmi_avi_infoframe_from_display_mode)}; static enum hdmi_3d_structure s3d_structure_from_display_mode(struct drm_display_mode const *mode ) { u32 layout ; { layout = (unsigned int )mode->flags & 507904U; switch (layout) { case 16384U: ; return (0); case 32768U: ; return (1); case 49152U: ; return (2); case 65536U: ; return (3); case 81920U: ; return (4); case 98304U: ; return (5); case 114688U: ; return (6); case 131072U: ; return (8); default: ; return (-1); } } } int drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame , struct drm_display_mode const *mode ) { int err ; u32 s3d_flags ; u8 vic ; { if ((unsigned long )frame == (unsigned long )((struct hdmi_vendor_infoframe *)0) || (unsigned long )mode == (unsigned long )((struct drm_display_mode const *)0)) { return (-22); } else { } vic = drm_match_hdmi_mode(mode); s3d_flags = (unsigned int )mode->flags & 507904U; if ((unsigned int )vic == 0U && s3d_flags == 0U) { return (-22); } else { } if ((unsigned int )vic != 0U && s3d_flags != 0U) { return (-22); } else { } err = hdmi_vendor_infoframe_init(frame); if (err < 0) { return (err); } else { } if ((unsigned int )vic != 0U) { frame->vic = vic; } else { frame->s3d_struct = s3d_structure_from_display_mode(mode); } return (0); } } static char const __kstrtab_drm_hdmi_vendor_infoframe_from_display_mode[44U] = { 'd', 'r', 'm', '_', 'h', 'd', 'm', 'i', '_', 'v', 'e', 'n', 'd', 'o', 'r', '_', 'i', 'n', 'f', 'o', 'f', 'r', 'a', 'm', 'e', '_', 'f', 'r', 'o', 'm', '_', 'd', 'i', 's', 'p', 'l', 'a', 'y', '_', 'm', 'o', 'd', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_hdmi_vendor_infoframe_from_display_mode ; struct kernel_symbol const __ksymtab_drm_hdmi_vendor_infoframe_from_display_mode = {(unsigned long )(& drm_hdmi_vendor_infoframe_from_display_mode), (char const *)(& __kstrtab_drm_hdmi_vendor_infoframe_from_display_mode)}; static int drm_parse_display_id(struct drm_connector *connector , u8 *displayid , int length , bool is_edid_extension ) { int idx ; struct displayid_hdr *base ; struct displayid_block *block ; u8 csum ; int i ; long tmp ; long tmp___0 ; struct displayid_tiled_block *tile ; u16 w ; u16 h ; u8 tile_v_loc ; u8 tile_h_loc ; u8 num_v_tile ; u8 num_h_tile ; struct drm_tile_group *tg ; long tmp___1 ; long tmp___2 ; long tmp___3 ; long tmp___4 ; { idx = 0; csum = 0U; if ((int )is_edid_extension) { idx = 1; } else { } base = (struct displayid_hdr *)displayid + (unsigned long )idx; tmp = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_parse_display_id", "base revision 0x%x, length %d, %d %d\n", (int )base->rev, (int )base->bytes, (int )base->prod_id, (int )base->ext_count); } else { } if ((int )base->bytes + 5 > length - idx) { return (-22); } else { } i = idx; goto ldv_40111; ldv_40110: csum = (int )*(displayid + (unsigned long )i) + (int )csum; i = i + 1; ldv_40111: ; if ((int )base->bytes + 5 >= i) { goto ldv_40110; } else { } if ((unsigned int )csum != 0U) { drm_err("DisplayID checksum invalid, remainder is %d\n", (int )csum); return (-22); } else { } block = (struct displayid_block *)(displayid + ((unsigned long )idx + 4UL)); tmp___0 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_parse_display_id", "block id %d, rev %d, len %d\n", (int )block->tag, (int )block->rev, (int )block->num_bytes); } else { } switch ((int )block->tag) { case 18: tile = (struct displayid_tiled_block *)block; w = (u16 )((int )((short )tile->tile_size[0]) | (int )((short )((int )tile->tile_size[1] << 8))); h = (u16 )((int )((short )tile->tile_size[2]) | (int )((short )((int )tile->tile_size[3] << 8))); num_v_tile = (u8 )(((int )((signed char )tile->topo[0]) & 15) | ((int )((signed char )tile->topo[2]) & 48)); num_h_tile = (u8 )((int )((signed char )((int )tile->topo[0] >> 4)) | ((int )((signed char )((int )tile->topo[2] >> 2)) & 48)); tile_v_loc = (u8 )(((int )((signed char )tile->topo[1]) & 15) | (int )((signed char )(((int )tile->topo[2] & 3) << 4))); tile_h_loc = (u8 )((int )((signed char )((int )tile->topo[1] >> 4)) | (int )((signed char )((((int )tile->topo[2] >> 2) & 3) << 4))); connector->has_tile = 1; if ((int )((signed char )tile->tile_cap) < 0) { connector->tile_is_single_monitor = 1; } else { } connector->num_h_tile = (unsigned int )num_h_tile + 1U; connector->num_v_tile = (unsigned int )num_v_tile + 1U; connector->tile_h_loc = tile_h_loc; connector->tile_v_loc = tile_v_loc; connector->tile_h_size = (unsigned int )w + 1U; connector->tile_v_size = (unsigned int )h + 1U; tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_parse_display_id", "tile cap 0x%x\n", (int )tile->tile_cap); } else { } tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_parse_display_id", "tile_size %d x %d\n", (int )w + 1, (int )h + 1); } else { } tmp___3 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_parse_display_id", "topo num tiles %dx%d, location %dx%d\n", (int )num_h_tile + 1, (int )num_v_tile + 1, (int )tile_h_loc, (int )tile_v_loc); } else { } tmp___4 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_parse_display_id", "vend %c%c%c\n", (int )tile->topology_id[0], (int )tile->topology_id[1], (int )tile->topology_id[2]); } else { } tg = drm_mode_get_tile_group(connector->dev, (char *)(& tile->topology_id)); if ((unsigned long )tg == (unsigned long )((struct drm_tile_group *)0)) { tg = drm_mode_create_tile_group(connector->dev, (char *)(& tile->topology_id)); } else { } if ((unsigned long )tg == (unsigned long )((struct drm_tile_group *)0)) { return (-12); } else { } if ((unsigned long )connector->tile_group != (unsigned long )tg) { if ((unsigned long )connector->tile_group != (unsigned long )((struct drm_tile_group *)0)) { drm_mode_put_tile_group(connector->dev, connector->tile_group); } else { } connector->tile_group = tg; } else { drm_mode_put_tile_group(connector->dev, tg); } goto ldv_40122; default: printk("unknown displayid tag %d\n", (int )block->tag); goto ldv_40122; } ldv_40122: ; return (0); } } static void drm_get_displayid(struct drm_connector *connector , struct edid *edid ) { void *displayid ; int ret ; u8 *tmp ; { displayid = (void *)0; connector->has_tile = 0; tmp = drm_find_displayid_extension(edid); displayid = (void *)tmp; if ((unsigned long )displayid == (unsigned long )((void *)0)) { goto out_drop_ref; } else { } ret = drm_parse_display_id(connector, (u8 *)displayid, 128, 1); if (ret < 0) { goto out_drop_ref; } else { } if (! connector->has_tile) { goto out_drop_ref; } else { } return; out_drop_ref: ; if ((unsigned long )connector->tile_group != (unsigned long )((struct drm_tile_group *)0)) { drm_mode_put_tile_group(connector->dev, connector->tile_group); connector->tile_group = (struct drm_tile_group *)0; } else { } return; } } bool ldv_queue_work_on_325(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_326(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_327(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_328(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_329(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static void rcu_lock_acquire(struct lockdep_map *map ) { { lock_acquire(map, 0U, 0, 2, 0, (struct lockdep_map *)0, 0UL); return; } } __inline static void rcu_lock_release(struct lockdep_map *map ) { { lock_release(map, 1, 0UL); return; } } extern struct lockdep_map rcu_lock_map ; __inline static void rcu_read_lock(void) { bool __warned ; int tmp ; bool tmp___0 ; int tmp___1 ; { rcu_read_lock_sched_notrace(); rcu_lock_acquire(& rcu_lock_map); tmp = debug_lockdep_rcu_enabled(); if (tmp != 0 && ! __warned) { tmp___0 = rcu_is_watching(); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { __warned = 1; lockdep_rcu_suspicious("include/linux/rcupdate.h", 849, "rcu_read_lock() used illegally while idle"); } else { } } else { } return; } } __inline static void rcu_read_unlock(void) { bool __warned ; int tmp ; bool tmp___0 ; int tmp___1 ; { tmp = debug_lockdep_rcu_enabled(); if (tmp != 0 && ! __warned) { tmp___0 = rcu_is_watching(); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } if (tmp___1) { __warned = 1; lockdep_rcu_suspicious("include/linux/rcupdate.h", 900, "rcu_read_unlock() used illegally while idle"); } else { } } else { } idr_preload_end(); rcu_lock_release(& rcu_lock_map); return; } } bool ldv_queue_work_on_339(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_341(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_340(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_343(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_342(struct workqueue_struct *ldv_func_arg1 ) ; extern struct task_struct *pid_task(struct pid * , enum pid_type ) ; __inline static struct user_namespace *seq_user_ns(struct seq_file *seq ) { { return (seq->user_ns); } } int drm_name_info(struct seq_file *m , void *data ) ; int drm_vm_info(struct seq_file *m , void *data ) ; int drm_bufs_info(struct seq_file *m , void *data ) ; int drm_clients_info(struct seq_file *m , void *data ) ; int drm_gem_name_info(struct seq_file *m , void *data ) ; int drm_name_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_minor *minor ; struct drm_device *dev ; struct drm_master *master ; char const *tmp ; char const *tmp___0 ; { node = (struct drm_info_node *)m->private; minor = node->minor; dev = minor->dev; master = minor->master; if ((unsigned long )master == (unsigned long )((struct drm_master *)0)) { return (0); } else { } if ((unsigned long )master->unique != (unsigned long )((char *)0)) { tmp = dev_name((struct device const *)dev->dev); seq_printf(m, "%s %s %s\n", (dev->driver)->name, tmp, master->unique); } else { tmp___0 = dev_name((struct device const *)dev->dev); seq_printf(m, "%s %s\n", (dev->driver)->name, tmp___0); } return (0); } } int drm_vm_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_device *dev ; struct drm_local_map *map ; struct drm_map_list *r_list ; char const *types[6U] ; char const *type ; int i ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { node = (struct drm_info_node *)m->private; dev = (node->minor)->dev; types[0] = "FB"; types[1] = "REG"; types[2] = "SHM"; types[3] = "AGP"; types[4] = "SG"; types[5] = "PCI"; mutex_lock_nested(& dev->struct_mutex, 0U); seq_printf(m, "slot\t offset\t size type flags\t address mtrr\n\n"); i = 0; __mptr = (struct list_head const *)dev->maplist.next; r_list = (struct drm_map_list *)__mptr; goto ldv_39174; ldv_39173: map = r_list->map; if ((unsigned long )map == (unsigned long )((struct drm_local_map *)0)) { goto ldv_39172; } else { } if ((unsigned int )map->type > 5U) { type = "??"; } else { type = types[(unsigned int )map->type]; } seq_printf(m, "%4d 0x%016llx 0x%08lx %4.4s 0x%02x 0x%08lx ", i, map->offset, map->size, type, (unsigned int )map->flags, (unsigned long )r_list->user_token); if (map->mtrr < 0) { seq_printf(m, "none\n"); } else { seq_printf(m, "%4d\n", map->mtrr); } i = i + 1; ldv_39172: __mptr___0 = (struct list_head const *)r_list->head.next; r_list = (struct drm_map_list *)__mptr___0; ldv_39174: ; if ((unsigned long )(& r_list->head) != (unsigned long )(& dev->maplist)) { goto ldv_39173; } else { } mutex_unlock(& dev->struct_mutex); return (0); } } int drm_bufs_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_device *dev ; struct drm_device_dma *dma ; int i ; int seg_pages ; { node = (struct drm_info_node *)m->private; dev = (node->minor)->dev; mutex_lock_nested(& dev->struct_mutex, 0U); dma = dev->dma; if ((unsigned long )dma == (unsigned long )((struct drm_device_dma *)0)) { mutex_unlock(& dev->struct_mutex); return (0); } else { } seq_printf(m, " o size count free\t segs pages kB\n\n"); i = 0; goto ldv_39186; ldv_39185: ; if (dma->bufs[i].buf_count != 0) { seg_pages = dma->bufs[i].seg_count << dma->bufs[i].page_order; seq_printf(m, "%2d %8d %5d %5d %5d %5d %5ld\n", i, dma->bufs[i].buf_size, dma->bufs[i].buf_count, 0, dma->bufs[i].seg_count, seg_pages, ((unsigned long )seg_pages * 4096UL) / 1024UL); } else { } i = i + 1; ldv_39186: ; if (i <= 22) { goto ldv_39185; } else { } seq_printf(m, "\n"); i = 0; goto ldv_39189; ldv_39188: ; if (i != 0 && ((unsigned int )i & 31U) == 0U) { seq_printf(m, "\n"); } else { } seq_printf(m, " %d", (unsigned int )(*(dma->buflist + (unsigned long )i))->list); i = i + 1; ldv_39189: ; if (dma->buf_count > i) { goto ldv_39188; } else { } seq_printf(m, "\n"); mutex_unlock(& dev->struct_mutex); return (0); } } int drm_clients_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_device *dev ; struct drm_file *priv ; struct list_head const *__mptr ; struct task_struct *task ; struct user_namespace *tmp ; uid_t tmp___0 ; pid_t tmp___1 ; struct list_head const *__mptr___0 ; { node = (struct drm_info_node *)m->private; dev = (node->minor)->dev; seq_printf(m, "%20s %5s %3s master a %5s %10s\n", (char *)"command", (char *)"pid", (char *)"dev", (char *)"uid", (char *)"magic"); mutex_lock_nested(& dev->struct_mutex, 0U); __mptr = (struct list_head const *)dev->filelist.prev; priv = (struct drm_file *)__mptr + 0xffffffffffffffe8UL; goto ldv_39204; ldv_39203: rcu_read_lock(); task = pid_task(priv->pid, 0); tmp = seq_user_ns(m); tmp___0 = from_kuid_munged(tmp, priv->uid); tmp___1 = pid_vnr(priv->pid); seq_printf(m, "%20s %5d %3d %c %c %5d %10u\n", (unsigned long )task != (unsigned long )((struct task_struct *)0) ? (char *)(& task->comm) : (char *)"", tmp___1, (priv->minor)->index, (unsigned int )*((unsigned char *)priv + 0UL) != 0U ? 121 : 110, (unsigned int )*((unsigned char *)priv + 0UL) != 0U ? 121 : 110, tmp___0, priv->magic); rcu_read_unlock(); __mptr___0 = (struct list_head const *)priv->lhead.prev; priv = (struct drm_file *)__mptr___0 + 0xffffffffffffffe8UL; ldv_39204: ; if ((unsigned long )(& priv->lhead) != (unsigned long )(& dev->filelist)) { goto ldv_39203; } else { } mutex_unlock(& dev->struct_mutex); return (0); } } static int drm_gem_one_name_info(int id , void *ptr , void *data ) { struct drm_gem_object *obj ; struct seq_file *m ; int tmp ; { obj = (struct drm_gem_object *)ptr; m = (struct seq_file *)data; tmp = atomic_read((atomic_t const *)(& obj->refcount.refcount)); seq_printf(m, "%6d %8zd %7d %8d\n", obj->name, obj->size, obj->handle_count, tmp); return (0); } } int drm_gem_name_info(struct seq_file *m , void *data ) { struct drm_info_node *node ; struct drm_device *dev ; { node = (struct drm_info_node *)m->private; dev = (node->minor)->dev; seq_printf(m, " name size handles refcount\n"); mutex_lock_nested(& dev->object_name_lock, 0U); idr_for_each(& dev->object_name_idr, & drm_gem_one_name_info, (void *)m); mutex_unlock(& dev->object_name_lock); return (0); } } bool ldv_queue_work_on_339(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_340(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_341(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_342(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_343(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern int sprintf(char * , char const * , ...) ; extern void *memdup_user(void const * , size_t ) ; extern int strcmp(char const * , char const * ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; bool ldv_queue_work_on_353(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_355(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_354(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_357(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_356(struct workqueue_struct *ldv_func_arg1 ) ; void ldv_file_operations_10(void) ; void ldv_file_operations_11(void) ; void ldv_file_operations_12(void) ; extern ssize_t seq_read(struct file * , char * , size_t , loff_t * ) ; extern loff_t seq_lseek(struct file * , loff_t , int ) ; extern int seq_puts(struct seq_file * , char const * ) ; extern int seq_write(struct seq_file * , void const * , size_t ) ; extern int single_open(struct file * , int (*)(struct seq_file * , void * ) , void * ) ; extern int single_release(struct inode * , struct file * ) ; extern struct dentry *debugfs_create_file(char const * , umode_t , struct dentry * , void * , struct file_operations const * ) ; extern void debugfs_remove_recursive(struct dentry * ) ; int drm_debugfs_create_files(struct drm_info_list const *files , int count , struct dentry *root , struct drm_minor *minor ) ; int drm_debugfs_remove_files(struct drm_info_list const *files , int count , struct drm_minor *minor ) ; static struct drm_info_list const drm_debugfs_list[6U] = { {"name", & drm_name_info, 0U, 0}, {"vm", & drm_vm_info, 0U, 0}, {"clients", & drm_clients_info, 0U, 0}, {"bufs", & drm_bufs_info, 0U, 0}, {"gem_names", & drm_gem_name_info, 4096U, 0}, {"vma", & drm_vma_info, 0U, 0}}; static int drm_debugfs_open(struct inode *inode , struct file *file ) { struct drm_info_node *node ; int tmp ; { node = (struct drm_info_node *)inode->i_private; tmp = single_open(file, (node->info_ent)->show, (void *)node); return (tmp); } } static struct file_operations const drm_debugfs_fops = {& __this_module, & seq_lseek, & seq_read, 0, 0, 0, 0, 0, 0, 0, 0, 0, & drm_debugfs_open, 0, & single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int drm_debugfs_create_files(struct drm_info_list const *files , int count , struct dentry *root , struct drm_minor *minor ) { struct drm_device *dev ; struct dentry *ent ; struct drm_info_node *tmp ; int i ; int ret ; u32 features ; void *tmp___0 ; { dev = minor->dev; i = 0; goto ldv_39147; ldv_39146: features = (files + (unsigned long )i)->driver_features; if (features != 0U && ((dev->driver)->driver_features & features) != features) { goto ldv_39144; } else { } tmp___0 = kmalloc(40UL, 208U); tmp = (struct drm_info_node *)tmp___0; if ((unsigned long )tmp == (unsigned long )((struct drm_info_node *)0)) { ret = -1; goto fail; } else { } ent = debugfs_create_file((files + (unsigned long )i)->name, 33060, root, (void *)tmp, & drm_debugfs_fops); if ((unsigned long )ent == (unsigned long )((struct dentry *)0)) { drm_err("Cannot create /sys/kernel/debug/dri/%s/%s\n", root->d_name.name, (files + (unsigned long )i)->name); kfree((void const *)tmp); ret = -1; goto fail; } else { } tmp->minor = minor; tmp->dent = ent; tmp->info_ent = files + (unsigned long )i; mutex_lock_nested(& minor->debugfs_lock, 0U); list_add(& tmp->list, & minor->debugfs_list); mutex_unlock(& minor->debugfs_lock); ldv_39144: i = i + 1; ldv_39147: ; if (i < count) { goto ldv_39146; } else { } return (0); fail: drm_debugfs_remove_files(files, count, minor); return (ret); } } static char const __kstrtab_drm_debugfs_create_files[25U] = { 'd', 'r', 'm', '_', 'd', 'e', 'b', 'u', 'g', 'f', 's', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'i', 'l', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_debugfs_create_files ; struct kernel_symbol const __ksymtab_drm_debugfs_create_files = {(unsigned long )(& drm_debugfs_create_files), (char const *)(& __kstrtab_drm_debugfs_create_files)}; int drm_debugfs_init(struct drm_minor *minor , int minor_id , struct dentry *root ) { struct drm_device *dev ; char name[64U] ; int ret ; struct lock_class_key __key ; { dev = minor->dev; INIT_LIST_HEAD(& minor->debugfs_list); __mutex_init(& minor->debugfs_lock, "&minor->debugfs_lock", & __key); sprintf((char *)(& name), "%d", minor_id); minor->debugfs_root = debugfs_create_dir((char const *)(& name), root); if ((unsigned long )minor->debugfs_root == (unsigned long )((struct dentry *)0)) { drm_err("Cannot create /sys/kernel/debug/dri/%s\n", (char *)(& name)); return (-1); } else { } ret = drm_debugfs_create_files((struct drm_info_list const *)(& drm_debugfs_list), 6, minor->debugfs_root, minor); if (ret != 0) { debugfs_remove(minor->debugfs_root); minor->debugfs_root = (struct dentry *)0; drm_err("Failed to create core drm debugfs files\n"); return (ret); } else { } if ((unsigned long )(dev->driver)->debugfs_init != (unsigned long )((int (*)(struct drm_minor * ))0)) { ret = (*((dev->driver)->debugfs_init))(minor); if (ret != 0) { drm_err("DRM: Driver failed to initialize /sys/kernel/debug/dri.\n"); return (ret); } else { } } else { } return (0); } } int drm_debugfs_remove_files(struct drm_info_list const *files , int count , struct drm_minor *minor ) { struct list_head *pos ; struct list_head *q ; struct drm_info_node *tmp ; int i ; struct list_head const *__mptr ; { mutex_lock_nested(& minor->debugfs_lock, 0U); i = 0; goto ldv_39185; ldv_39184: pos = minor->debugfs_list.next; q = pos->next; goto ldv_39182; ldv_39181: __mptr = (struct list_head const *)pos; tmp = (struct drm_info_node *)__mptr; if ((unsigned long )tmp->info_ent == (unsigned long )(files + (unsigned long )i)) { debugfs_remove(tmp->dent); list_del(pos); kfree((void const *)tmp); } else { } pos = q; q = pos->next; ldv_39182: ; if ((unsigned long )(& minor->debugfs_list) != (unsigned long )pos) { goto ldv_39181; } else { } i = i + 1; ldv_39185: ; if (i < count) { goto ldv_39184; } else { } mutex_unlock(& minor->debugfs_lock); return (0); } } static char const __kstrtab_drm_debugfs_remove_files[25U] = { 'd', 'r', 'm', '_', 'd', 'e', 'b', 'u', 'g', 'f', 's', '_', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'f', 'i', 'l', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_debugfs_remove_files ; struct kernel_symbol const __ksymtab_drm_debugfs_remove_files = {(unsigned long )(& drm_debugfs_remove_files), (char const *)(& __kstrtab_drm_debugfs_remove_files)}; int drm_debugfs_cleanup(struct drm_minor *minor ) { struct drm_device *dev ; { dev = minor->dev; if ((unsigned long )minor->debugfs_root == (unsigned long )((struct dentry *)0)) { return (0); } else { } if ((unsigned long )(dev->driver)->debugfs_cleanup != (unsigned long )((void (*)(struct drm_minor * ))0)) { (*((dev->driver)->debugfs_cleanup))(minor); } else { } drm_debugfs_remove_files((struct drm_info_list const *)(& drm_debugfs_list), 6, minor); debugfs_remove(minor->debugfs_root); minor->debugfs_root = (struct dentry *)0; return (0); } } static int connector_show(struct seq_file *m , void *data ) { struct drm_connector *connector ; char const *status ; { connector = (struct drm_connector *)m->private; switch ((unsigned int )connector->force) { case 2U: status = "on\n"; goto ldv_39209; case 3U: status = "digital\n"; goto ldv_39209; case 1U: status = "off\n"; goto ldv_39209; case 0U: status = "unspecified\n"; goto ldv_39209; default: ; return (0); } ldv_39209: seq_puts(m, status); return (0); } } static int connector_open(struct inode *inode , struct file *file ) { struct drm_connector *dev ; int tmp ; { dev = (struct drm_connector *)inode->i_private; tmp = single_open(file, & connector_show, (void *)dev); return (tmp); } } static ssize_t connector_write(struct file *file , char const *ubuf , size_t len , loff_t *offp ) { struct seq_file *m ; struct drm_connector *connector ; char buf[12U] ; unsigned long tmp ; int tmp___0 ; int tmp___1 ; int tmp___2 ; int tmp___3 ; { m = (struct seq_file *)file->private_data; connector = (struct drm_connector *)m->private; if (len > 11UL) { return (-22L); } else { } tmp = copy_from_user((void *)(& buf), (void const *)ubuf, len); if (tmp != 0UL) { return (-14L); } else { } buf[len] = 0; tmp___3 = strcmp((char const *)(& buf), "on"); if (tmp___3 == 0) { connector->force = 2; } else { tmp___2 = strcmp((char const *)(& buf), "digital"); if (tmp___2 == 0) { connector->force = 3; } else { tmp___1 = strcmp((char const *)(& buf), "off"); if (tmp___1 == 0) { connector->force = 1; } else { tmp___0 = strcmp((char const *)(& buf), "unspecified"); if (tmp___0 == 0) { connector->force = 0; } else { return (-22L); } } } } return ((ssize_t )len); } } static int edid_show___0(struct seq_file *m , void *data ) { struct drm_connector *connector ; struct drm_property_blob *edid ; { connector = (struct drm_connector *)m->private; edid = connector->edid_blob_ptr; if ((int )connector->override_edid && (unsigned long )edid != (unsigned long )((struct drm_property_blob *)0)) { seq_write(m, (void const *)(& edid->data), edid->length); } else { } return (0); } } static int edid_open(struct inode *inode , struct file *file ) { struct drm_connector *dev ; int tmp ; { dev = (struct drm_connector *)inode->i_private; tmp = single_open(file, & edid_show___0, (void *)dev); return (tmp); } } static ssize_t edid_write(struct file *file , char const *ubuf , size_t len , loff_t *offp ) { struct seq_file *m ; struct drm_connector *connector ; char *buf ; struct edid *edid ; int ret ; void *tmp ; long tmp___0 ; bool tmp___1 ; int tmp___2 ; { m = (struct seq_file *)file->private_data; connector = (struct drm_connector *)m->private; tmp = memdup_user((void const *)ubuf, len); buf = (char *)tmp; tmp___1 = IS_ERR((void const *)buf); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)buf); return (tmp___0); } else { } edid = (struct edid *)buf; if (len == 5UL) { tmp___2 = strncmp((char const *)buf, "reset", 5UL); if (tmp___2 == 0) { connector->override_edid = 0; ret = drm_mode_connector_update_edid_property(connector, (struct edid const *)0); } else { goto _L; } } else _L: /* CIL Label */ if (len <= 127UL || (size_t )(((int )edid->extensions + 1) * 128) > len) { ret = -22; } else { connector->override_edid = 0; ret = drm_mode_connector_update_edid_property(connector, (struct edid const *)edid); if (ret == 0) { connector->override_edid = 1; } else { } } kfree((void const *)buf); return ((ssize_t )(ret != 0 ? (size_t )ret : len)); } } static struct file_operations const drm_edid_fops = {& __this_module, & seq_lseek, & seq_read, & edid_write, 0, 0, 0, 0, 0, 0, 0, 0, & edid_open, 0, & single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static struct file_operations const drm_connector_fops = {& __this_module, & seq_lseek, & seq_read, & connector_write, 0, 0, 0, 0, 0, 0, 0, 0, & connector_open, 0, & single_release, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int drm_debugfs_connector_add(struct drm_connector *connector ) { struct drm_minor *minor ; struct dentry *root ; struct dentry *ent ; { minor = (connector->dev)->primary; if ((unsigned long )minor->debugfs_root == (unsigned long )((struct dentry *)0)) { return (-1); } else { } root = debugfs_create_dir((char const *)connector->name, minor->debugfs_root); if ((unsigned long )root == (unsigned long )((struct dentry *)0)) { return (-12); } else { } connector->debugfs_entry = root; ent = debugfs_create_file("force", 420, root, (void *)connector, & drm_connector_fops); if ((unsigned long )ent == (unsigned long )((struct dentry *)0)) { goto error; } else { } ent = debugfs_create_file("edid_override", 420, root, (void *)connector, & drm_edid_fops); if ((unsigned long )ent == (unsigned long )((struct dentry *)0)) { goto error; } else { } return (0); error: debugfs_remove_recursive(connector->debugfs_entry); connector->debugfs_entry = (struct dentry *)0; return (-12); } } void drm_debugfs_connector_remove(struct drm_connector *connector ) { { if ((unsigned long )connector->debugfs_entry == (unsigned long )((struct dentry *)0)) { return; } else { } debugfs_remove_recursive(connector->debugfs_entry); connector->debugfs_entry = (struct dentry *)0; return; } } int ldv_retval_15 ; int ldv_retval_14 ; int ldv_retval_18 ; void ldv_file_operations_10(void) { void *tmp ; void *tmp___0 ; { tmp = ldv_init_zalloc(1000UL); drm_connector_fops_group1 = (struct inode *)tmp; tmp___0 = ldv_init_zalloc(504UL); drm_connector_fops_group2 = (struct file *)tmp___0; return; } } void ldv_file_operations_11(void) { void *tmp ; void *tmp___0 ; { tmp = ldv_init_zalloc(1000UL); drm_edid_fops_group1 = (struct inode *)tmp; tmp___0 = ldv_init_zalloc(504UL); drm_edid_fops_group2 = (struct file *)tmp___0; return; } } void ldv_file_operations_12(void) { void *tmp ; void *tmp___0 ; { tmp = ldv_init_zalloc(1000UL); drm_debugfs_fops_group1 = (struct inode *)tmp; tmp___0 = ldv_init_zalloc(504UL); drm_debugfs_fops_group2 = (struct file *)tmp___0; return; } } void ldv_main_exported_11(void) { int ldvarg47 ; loff_t *ldvarg52 ; void *tmp ; size_t ldvarg53 ; char *ldvarg54 ; void *tmp___0 ; loff_t ldvarg48 ; size_t ldvarg50 ; loff_t *ldvarg49 ; void *tmp___1 ; char *ldvarg51 ; void *tmp___2 ; int tmp___3 ; { tmp = ldv_init_zalloc(8UL); ldvarg52 = (loff_t *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg54 = (char *)tmp___0; tmp___1 = ldv_init_zalloc(8UL); ldvarg49 = (loff_t *)tmp___1; tmp___2 = ldv_init_zalloc(1UL); ldvarg51 = (char *)tmp___2; ldv_memset((void *)(& ldvarg47), 0, 4UL); ldv_memset((void *)(& ldvarg53), 0, 8UL); ldv_memset((void *)(& ldvarg48), 0, 8UL); ldv_memset((void *)(& ldvarg50), 0, 8UL); tmp___3 = __VERIFIER_nondet_int(); switch (tmp___3) { case 0: ; if (ldv_state_variable_11 == 2) { edid_write(drm_edid_fops_group2, (char const *)ldvarg54, ldvarg53, ldvarg52); ldv_state_variable_11 = 2; } else { } if (ldv_state_variable_11 == 1) { edid_write(drm_edid_fops_group2, (char const *)ldvarg54, ldvarg53, ldvarg52); ldv_state_variable_11 = 1; } else { } goto ldv_39286; case 1: ; if (ldv_state_variable_11 == 2) { single_release(drm_edid_fops_group1, drm_edid_fops_group2); ldv_state_variable_11 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39286; case 2: ; if (ldv_state_variable_11 == 2) { seq_read(drm_edid_fops_group2, ldvarg51, ldvarg50, ldvarg49); ldv_state_variable_11 = 2; } else { } goto ldv_39286; case 3: ; if (ldv_state_variable_11 == 2) { seq_lseek(drm_edid_fops_group2, ldvarg48, ldvarg47); ldv_state_variable_11 = 2; } else { } goto ldv_39286; case 4: ; if (ldv_state_variable_11 == 1) { ldv_retval_15 = edid_open(drm_edid_fops_group1, drm_edid_fops_group2); if (ldv_retval_15 == 0) { ldv_state_variable_11 = 2; ref_cnt = ref_cnt + 1; } else { } } else { } goto ldv_39286; default: ldv_stop(); } ldv_39286: ; return; } } void ldv_main_exported_10(void) { int ldvarg34 ; size_t ldvarg40 ; loff_t *ldvarg36 ; void *tmp ; size_t ldvarg37 ; char *ldvarg38 ; void *tmp___0 ; char *ldvarg41 ; void *tmp___1 ; loff_t ldvarg35 ; loff_t *ldvarg39 ; void *tmp___2 ; int tmp___3 ; { tmp = ldv_init_zalloc(8UL); ldvarg36 = (loff_t *)tmp; tmp___0 = ldv_init_zalloc(1UL); ldvarg38 = (char *)tmp___0; tmp___1 = ldv_init_zalloc(1UL); ldvarg41 = (char *)tmp___1; tmp___2 = ldv_init_zalloc(8UL); ldvarg39 = (loff_t *)tmp___2; ldv_memset((void *)(& ldvarg34), 0, 4UL); ldv_memset((void *)(& ldvarg40), 0, 8UL); ldv_memset((void *)(& ldvarg37), 0, 8UL); ldv_memset((void *)(& ldvarg35), 0, 8UL); tmp___3 = __VERIFIER_nondet_int(); switch (tmp___3) { case 0: ; if (ldv_state_variable_10 == 2) { connector_write(drm_connector_fops_group2, (char const *)ldvarg41, ldvarg40, ldvarg39); ldv_state_variable_10 = 2; } else { } if (ldv_state_variable_10 == 1) { connector_write(drm_connector_fops_group2, (char const *)ldvarg41, ldvarg40, ldvarg39); ldv_state_variable_10 = 1; } else { } goto ldv_39304; case 1: ; if (ldv_state_variable_10 == 2) { single_release(drm_connector_fops_group1, drm_connector_fops_group2); ldv_state_variable_10 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39304; case 2: ; if (ldv_state_variable_10 == 2) { seq_read(drm_connector_fops_group2, ldvarg38, ldvarg37, ldvarg36); ldv_state_variable_10 = 2; } else { } goto ldv_39304; case 3: ; if (ldv_state_variable_10 == 2) { seq_lseek(drm_connector_fops_group2, ldvarg35, ldvarg34); ldv_state_variable_10 = 2; } else { } goto ldv_39304; case 4: ; if (ldv_state_variable_10 == 1) { ldv_retval_14 = connector_open(drm_connector_fops_group1, drm_connector_fops_group2); if (ldv_retval_14 == 0) { ldv_state_variable_10 = 2; ref_cnt = ref_cnt + 1; } else { } } else { } goto ldv_39304; default: ldv_stop(); } ldv_39304: ; return; } } void ldv_main_exported_12(void) { loff_t ldvarg83 ; char *ldvarg86 ; void *tmp ; int ldvarg82 ; loff_t *ldvarg84 ; void *tmp___0 ; size_t ldvarg85 ; int tmp___1 ; { tmp = ldv_init_zalloc(1UL); ldvarg86 = (char *)tmp; tmp___0 = ldv_init_zalloc(8UL); ldvarg84 = (loff_t *)tmp___0; ldv_memset((void *)(& ldvarg83), 0, 8UL); ldv_memset((void *)(& ldvarg82), 0, 4UL); ldv_memset((void *)(& ldvarg85), 0, 8UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_12 == 2) { single_release(drm_debugfs_fops_group1, drm_debugfs_fops_group2); ldv_state_variable_12 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39319; case 1: ; if (ldv_state_variable_12 == 2) { seq_read(drm_debugfs_fops_group2, ldvarg86, ldvarg85, ldvarg84); ldv_state_variable_12 = 2; } else { } goto ldv_39319; case 2: ; if (ldv_state_variable_12 == 2) { seq_lseek(drm_debugfs_fops_group2, ldvarg83, ldvarg82); ldv_state_variable_12 = 2; } else { } goto ldv_39319; case 3: ; if (ldv_state_variable_12 == 1) { ldv_retval_18 = drm_debugfs_open(drm_debugfs_fops_group1, drm_debugfs_fops_group2); if (ldv_retval_18 == 0) { ldv_state_variable_12 = 2; ref_cnt = ref_cnt + 1; } else { } } else { } goto ldv_39319; default: ldv_stop(); } ldv_39319: ; return; } } bool ldv_queue_work_on_353(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_354(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_355(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_356(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_357(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_367(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_369(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_368(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_371(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_370(struct workqueue_struct *ldv_func_arg1 ) ; extern int __request_module(bool , char const * , ...) ; bool ldv_try_module_get_372(struct module *ldv_func_arg1 ) ; void ldv_module_put_373(struct module *ldv_func_arg1 ) ; void ldv_module_put_374(struct module *ldv_func_arg1 ) ; extern struct i2c_client *i2c_new_device(struct i2c_adapter * , struct i2c_board_info const * ) ; extern void i2c_unregister_device(struct i2c_client * ) ; int drm_i2c_encoder_init(struct drm_device *dev , struct drm_encoder_slave *encoder , struct i2c_adapter *adap , struct i2c_board_info const *info ) ; __inline static struct i2c_client *drm_i2c_encoder_get_client(struct drm_encoder *encoder ) { struct drm_encoder const *__mptr ; { __mptr = (struct drm_encoder const *)encoder; return ((struct i2c_client *)((struct drm_encoder_slave *)__mptr)->bus_priv); } } void drm_i2c_encoder_destroy(struct drm_encoder *drm_encoder ) ; void drm_i2c_encoder_dpms(struct drm_encoder *encoder , int mode ) ; bool drm_i2c_encoder_mode_fixup(struct drm_encoder *encoder , struct drm_display_mode const *mode , struct drm_display_mode *adjusted_mode ) ; void drm_i2c_encoder_prepare(struct drm_encoder *encoder ) ; void drm_i2c_encoder_commit(struct drm_encoder *encoder ) ; void drm_i2c_encoder_mode_set(struct drm_encoder *encoder , struct drm_display_mode *mode , struct drm_display_mode *adjusted_mode ) ; enum drm_connector_status drm_i2c_encoder_detect(struct drm_encoder *encoder , struct drm_connector *connector ) ; void drm_i2c_encoder_save(struct drm_encoder *encoder ) ; void drm_i2c_encoder_restore(struct drm_encoder *encoder ) ; int drm_i2c_encoder_init(struct drm_device *dev , struct drm_encoder_slave *encoder , struct i2c_adapter *adap , struct i2c_board_info const *info ) { struct module *module ; struct i2c_client *client ; struct drm_i2c_encoder_driver *encoder_drv ; int err ; bool tmp ; int tmp___0 ; struct i2c_driver const *__mptr ; struct device_driver const *__mptr___0 ; { module = (struct module *)0; err = 0; __request_module(1, "%s%s", (char *)"i2c:", (char const *)(& info->type)); client = i2c_new_device(adap, info); if ((unsigned long )client == (unsigned long )((struct i2c_client *)0)) { err = -12; goto fail; } else { } if ((unsigned long )client->dev.driver == (unsigned long )((struct device_driver *)0)) { err = -19; goto fail_unregister; } else { } module = (client->dev.driver)->owner; tmp = ldv_try_module_get_372(module); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { err = -19; goto fail_unregister; } else { } encoder->bus_priv = (void *)client; __mptr___0 = (struct device_driver const *)client->dev.driver; __mptr = (struct i2c_driver const *)((struct i2c_driver *)__mptr___0 + 0xffffffffffffffc8UL); encoder_drv = (struct drm_i2c_encoder_driver *)__mptr; err = (*(encoder_drv->encoder_init))(client, dev, encoder); if (err != 0) { goto fail_unregister; } else { } if ((unsigned long )info->platform_data != (unsigned long )((void */* const */)0)) { (*((encoder->slave_funcs)->set_config))(& encoder->base, info->platform_data); } else { } return (0); fail_unregister: i2c_unregister_device(client); ldv_module_put_373(module); fail: ; return (err); } } static char const __kstrtab_drm_i2c_encoder_init[21U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_init ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_init = {(unsigned long )(& drm_i2c_encoder_init), (char const *)(& __kstrtab_drm_i2c_encoder_init)}; void drm_i2c_encoder_destroy(struct drm_encoder *drm_encoder ) { struct drm_encoder_slave *encoder ; struct drm_encoder const *__mptr ; struct i2c_client *client ; struct i2c_client *tmp ; struct module *module ; { __mptr = (struct drm_encoder const *)drm_encoder; encoder = (struct drm_encoder_slave *)__mptr; tmp = drm_i2c_encoder_get_client(drm_encoder); client = tmp; module = (client->dev.driver)->owner; i2c_unregister_device(client); encoder->bus_priv = (void *)0; ldv_module_put_374(module); return; } } static char const __kstrtab_drm_i2c_encoder_destroy[24U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_destroy ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_destroy = {(unsigned long )(& drm_i2c_encoder_destroy), (char const *)(& __kstrtab_drm_i2c_encoder_destroy)}; __inline static struct drm_encoder_slave_funcs *get_slave_funcs(struct drm_encoder *enc ) { struct drm_encoder const *__mptr ; { __mptr = (struct drm_encoder const *)enc; return (((struct drm_encoder_slave *)__mptr)->slave_funcs); } } void drm_i2c_encoder_dpms(struct drm_encoder *encoder , int mode ) { struct drm_encoder_slave_funcs *tmp ; { tmp = get_slave_funcs(encoder); (*(tmp->dpms))(encoder, mode); return; } } static char const __kstrtab_drm_i2c_encoder_dpms[21U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'd', 'p', 'm', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_dpms ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_dpms = {(unsigned long )(& drm_i2c_encoder_dpms), (char const *)(& __kstrtab_drm_i2c_encoder_dpms)}; bool drm_i2c_encoder_mode_fixup(struct drm_encoder *encoder , struct drm_display_mode const *mode , struct drm_display_mode *adjusted_mode ) { struct drm_encoder_slave_funcs *tmp ; bool tmp___0 ; { tmp = get_slave_funcs(encoder); tmp___0 = (*(tmp->mode_fixup))(encoder, mode, adjusted_mode); return (tmp___0); } } static char const __kstrtab_drm_i2c_encoder_mode_fixup[27U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'm', 'o', 'd', 'e', '_', 'f', 'i', 'x', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_mode_fixup ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_mode_fixup = {(unsigned long )(& drm_i2c_encoder_mode_fixup), (char const *)(& __kstrtab_drm_i2c_encoder_mode_fixup)}; void drm_i2c_encoder_prepare(struct drm_encoder *encoder ) { { drm_i2c_encoder_dpms(encoder, 3); return; } } static char const __kstrtab_drm_i2c_encoder_prepare[24U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'p', 'r', 'e', 'p', 'a', 'r', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_prepare ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_prepare = {(unsigned long )(& drm_i2c_encoder_prepare), (char const *)(& __kstrtab_drm_i2c_encoder_prepare)}; void drm_i2c_encoder_commit(struct drm_encoder *encoder ) { { drm_i2c_encoder_dpms(encoder, 0); return; } } static char const __kstrtab_drm_i2c_encoder_commit[23U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'c', 'o', 'm', 'm', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_commit ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_commit = {(unsigned long )(& drm_i2c_encoder_commit), (char const *)(& __kstrtab_drm_i2c_encoder_commit)}; void drm_i2c_encoder_mode_set(struct drm_encoder *encoder , struct drm_display_mode *mode , struct drm_display_mode *adjusted_mode ) { struct drm_encoder_slave_funcs *tmp ; { tmp = get_slave_funcs(encoder); (*(tmp->mode_set))(encoder, mode, adjusted_mode); return; } } static char const __kstrtab_drm_i2c_encoder_mode_set[25U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'm', 'o', 'd', 'e', '_', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_mode_set ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_mode_set = {(unsigned long )(& drm_i2c_encoder_mode_set), (char const *)(& __kstrtab_drm_i2c_encoder_mode_set)}; enum drm_connector_status drm_i2c_encoder_detect(struct drm_encoder *encoder , struct drm_connector *connector ) { struct drm_encoder_slave_funcs *tmp ; enum drm_connector_status tmp___0 ; { tmp = get_slave_funcs(encoder); tmp___0 = (*(tmp->detect))(encoder, connector); return (tmp___0); } } static char const __kstrtab_drm_i2c_encoder_detect[23U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_detect ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_detect = {(unsigned long )(& drm_i2c_encoder_detect), (char const *)(& __kstrtab_drm_i2c_encoder_detect)}; void drm_i2c_encoder_save(struct drm_encoder *encoder ) { struct drm_encoder_slave_funcs *tmp ; { tmp = get_slave_funcs(encoder); (*(tmp->save))(encoder); return; } } static char const __kstrtab_drm_i2c_encoder_save[21U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 's', 'a', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_save ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_save = {(unsigned long )(& drm_i2c_encoder_save), (char const *)(& __kstrtab_drm_i2c_encoder_save)}; void drm_i2c_encoder_restore(struct drm_encoder *encoder ) { struct drm_encoder_slave_funcs *tmp ; { tmp = get_slave_funcs(encoder); (*(tmp->restore))(encoder); return; } } static char const __kstrtab_drm_i2c_encoder_restore[24U] = { 'd', 'r', 'm', '_', 'i', '2', 'c', '_', 'e', 'n', 'c', 'o', 'd', 'e', 'r', '_', 'r', 'e', 's', 't', 'o', 'r', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_i2c_encoder_restore ; struct kernel_symbol const __ksymtab_drm_i2c_encoder_restore = {(unsigned long )(& drm_i2c_encoder_restore), (char const *)(& __kstrtab_drm_i2c_encoder_restore)}; bool ldv_queue_work_on_367(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_368(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_369(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_370(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_371(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_try_module_get_372(struct module *ldv_func_arg1 ) { int tmp ; { tmp = ldv_try_module_get(ldv_func_arg1); return (tmp != 0); } } void ldv_module_put_373(struct module *ldv_func_arg1 ) { { ldv_module_put(ldv_func_arg1); return; } } void ldv_module_put_374(struct module *ldv_func_arg1 ) { { ldv_module_put(ldv_func_arg1); return; } } bool ldv_queue_work_on_384(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_386(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_385(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_388(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_387(struct workqueue_struct *ldv_func_arg1 ) ; static char const __tpstrtab_drm_vblank_event[17U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'e', 'v', 'e', 'n', 't', '\000'}; struct tracepoint __tracepoint_drm_vblank_event = {(char const *)(& __tpstrtab_drm_vblank_event), {{0}}, (void (*)(void))0, (void (*)(void))0, (struct tracepoint_func *)0}; static char const __tpstrtab_drm_vblank_event_queued[24U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'e', 'v', 'e', 'n', 't', '_', 'q', 'u', 'e', 'u', 'e', 'd', '\000'}; struct tracepoint __tracepoint_drm_vblank_event_queued = {(char const *)(& __tpstrtab_drm_vblank_event_queued), {{0}}, (void (*)(void))0, (void (*)(void))0, (struct tracepoint_func *)0}; static char const __tpstrtab_drm_vblank_event_delivered[27U] = { 'd', 'r', 'm', '_', 'v', 'b', 'l', 'a', 'n', 'k', '_', 'e', 'v', 'e', 'n', 't', '_', 'd', 'e', 'l', 'i', 'v', 'e', 'r', 'e', 'd', '\000'}; struct tracepoint __tracepoint_drm_vblank_event_delivered = {(char const *)(& __tpstrtab_drm_vblank_event_delivered), {{0}}, (void (*)(void))0, (void (*)(void))0, (struct tracepoint_func *)0}; __inline static bool seq_buf_has_overflowed(struct seq_buf *s ) { { return (s->len > s->size); } } __inline static bool trace_seq_has_overflowed(struct trace_seq *s ) { bool tmp ; int tmp___0 ; { if (s->full != 0) { tmp___0 = 1; } else { tmp = seq_buf_has_overflowed(& s->seq); if ((int )tmp) { tmp___0 = 1; } else { tmp___0 = 0; } } return ((bool )tmp___0); } } extern void trace_seq_printf(struct trace_seq * , char const * , ...) ; extern int trace_raw_output_prep(struct trace_iterator * , struct trace_event * ) ; __inline static enum print_line_t trace_handle_return(struct trace_seq *s ) { bool tmp ; { tmp = trace_seq_has_overflowed(s); return ((int )tmp ? 0 : 1); } } extern int trace_event_reg(struct trace_event_call * , enum trace_reg , void * ) ; extern int trace_event_raw_init(struct trace_event_call * ) ; extern int trace_define_field(struct trace_event_call * , char const * , char const * , int , int , int , int ) ; static enum print_line_t trace_raw_output_drm_vblank_event(struct trace_iterator *iter , int flags , struct trace_event *trace_event ) { struct trace_seq *s ; struct trace_seq *p ; struct trace_event_raw_drm_vblank_event *field ; int ret ; enum print_line_t tmp ; { s = & iter->seq; p = & iter->tmp_seq; field = (struct trace_event_raw_drm_vblank_event *)iter->ent; ret = trace_raw_output_prep(iter, trace_event); if (ret != 1) { return ((enum print_line_t )ret); } else { } trace_seq_printf(s, "crtc=%d, seq=%u\n", field->crtc, field->seq); tmp = trace_handle_return(s); return (tmp); } } static enum print_line_t trace_raw_output_drm_vblank_event_queued(struct trace_iterator *iter , int flags , struct trace_event *trace_event ) { struct trace_seq *s ; struct trace_seq *p ; struct trace_event_raw_drm_vblank_event_queued *field ; int ret ; enum print_line_t tmp ; { s = & iter->seq; p = & iter->tmp_seq; field = (struct trace_event_raw_drm_vblank_event_queued *)iter->ent; ret = trace_raw_output_prep(iter, trace_event); if (ret != 1) { return ((enum print_line_t )ret); } else { } trace_seq_printf(s, "pid=%d, crtc=%d, seq=%u\n", field->pid, field->crtc, field->seq); tmp = trace_handle_return(s); return (tmp); } } static enum print_line_t trace_raw_output_drm_vblank_event_delivered(struct trace_iterator *iter , int flags , struct trace_event *trace_event ) { struct trace_seq *s ; struct trace_seq *p ; struct trace_event_raw_drm_vblank_event_delivered *field ; int ret ; enum print_line_t tmp ; { s = & iter->seq; p = & iter->tmp_seq; field = (struct trace_event_raw_drm_vblank_event_delivered *)iter->ent; ret = trace_raw_output_prep(iter, trace_event); if (ret != 1) { return ((enum print_line_t )ret); } else { } trace_seq_printf(s, "pid=%d, crtc=%d, seq=%u\n", field->pid, field->crtc, field->seq); tmp = trace_handle_return(s); return (tmp); } } static int trace_event_define_fields_drm_vblank_event(struct trace_event_call *event_call ) { int ret ; { ret = trace_define_field(event_call, "int", "crtc", 8, 4, 1, 0); if (ret != 0) { return (ret); } else { } ret = trace_define_field(event_call, "unsigned int", "seq", 12, 4, 0, 0); if (ret != 0) { return (ret); } else { } return (ret); } } static int trace_event_define_fields_drm_vblank_event_queued(struct trace_event_call *event_call ) { int ret ; { ret = trace_define_field(event_call, "pid_t", "pid", 8, 4, 1, 0); if (ret != 0) { return (ret); } else { } ret = trace_define_field(event_call, "int", "crtc", 12, 4, 1, 0); if (ret != 0) { return (ret); } else { } ret = trace_define_field(event_call, "unsigned int", "seq", 16, 4, 0, 0); if (ret != 0) { return (ret); } else { } return (ret); } } static int trace_event_define_fields_drm_vblank_event_delivered(struct trace_event_call *event_call ) { int ret ; { ret = trace_define_field(event_call, "pid_t", "pid", 8, 4, 1, 0); if (ret != 0) { return (ret); } else { } ret = trace_define_field(event_call, "int", "crtc", 12, 4, 1, 0); if (ret != 0) { return (ret); } else { } ret = trace_define_field(event_call, "unsigned int", "seq", 16, 4, 0, 0); if (ret != 0) { return (ret); } else { } return (ret); } } void ldv_initialize_trace_event_class_6(void) { void *tmp ; { tmp = ldv_init_zalloc(144UL); event_class_drm_vblank_event_group0 = (struct trace_event_call *)tmp; return; } } void ldv_initialize_trace_event_class_5(void) { void *tmp ; { tmp = ldv_init_zalloc(144UL); event_class_drm_vblank_event_queued_group0 = (struct trace_event_call *)tmp; return; } } void ldv_initialize_trace_event_class_4(void) { void *tmp ; { tmp = ldv_init_zalloc(144UL); event_class_drm_vblank_event_delivered_group0 = (struct trace_event_call *)tmp; return; } } void ldv_main_exported_8(void) { struct trace_event *ldvarg94 ; void *tmp ; int ldvarg95 ; struct trace_iterator *ldvarg93 ; void *tmp___0 ; int tmp___1 ; { tmp = ldv_init_zalloc(48UL); ldvarg94 = (struct trace_event *)tmp; tmp___0 = ldv_init_zalloc(8560UL); ldvarg93 = (struct trace_iterator *)tmp___0; ldv_memset((void *)(& ldvarg95), 0, 4UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_8 == 1) { trace_raw_output_drm_vblank_event_queued(ldvarg93, ldvarg95, ldvarg94); ldv_state_variable_8 = 1; } else { } goto ldv_42422; default: ldv_stop(); } ldv_42422: ; return; } } void ldv_main_exported_6(void) { enum trace_reg ldvarg66 ; void *ldvarg65 ; void *tmp ; int tmp___0 ; { tmp = ldv_init_zalloc(1UL); ldvarg65 = tmp; ldv_memset((void *)(& ldvarg66), 0, 4UL); tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_6 == 1) { trace_event_define_fields_drm_vblank_event(event_class_drm_vblank_event_group0); ldv_state_variable_6 = 1; } else { } goto ldv_42430; case 1: ; if (ldv_state_variable_6 == 1) { trace_event_raw_init(event_class_drm_vblank_event_group0); ldv_state_variable_6 = 1; } else { } goto ldv_42430; case 2: ; if (ldv_state_variable_6 == 1) { trace_event_reg(event_class_drm_vblank_event_group0, ldvarg66, ldvarg65); ldv_state_variable_6 = 1; } else { } goto ldv_42430; default: ldv_stop(); } ldv_42430: ; return; } } void ldv_main_exported_4(void) { void *ldvarg96 ; void *tmp ; enum trace_reg ldvarg97 ; int tmp___0 ; { tmp = ldv_init_zalloc(1UL); ldvarg96 = tmp; ldv_memset((void *)(& ldvarg97), 0, 4UL); tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_4 == 1) { trace_event_define_fields_drm_vblank_event_delivered(event_class_drm_vblank_event_delivered_group0); ldv_state_variable_4 = 1; } else { } goto ldv_42440; case 1: ; if (ldv_state_variable_4 == 1) { trace_event_raw_init(event_class_drm_vblank_event_delivered_group0); ldv_state_variable_4 = 1; } else { } goto ldv_42440; case 2: ; if (ldv_state_variable_4 == 1) { trace_event_reg(event_class_drm_vblank_event_delivered_group0, ldvarg97, ldvarg96); ldv_state_variable_4 = 1; } else { } goto ldv_42440; default: ldv_stop(); } ldv_42440: ; return; } } void ldv_main_exported_7(void) { struct trace_event *ldvarg9 ; void *tmp ; int ldvarg10 ; struct trace_iterator *ldvarg8 ; void *tmp___0 ; int tmp___1 ; { tmp = ldv_init_zalloc(48UL); ldvarg9 = (struct trace_event *)tmp; tmp___0 = ldv_init_zalloc(8560UL); ldvarg8 = (struct trace_iterator *)tmp___0; ldv_memset((void *)(& ldvarg10), 0, 4UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_7 == 1) { trace_raw_output_drm_vblank_event_delivered(ldvarg8, ldvarg10, ldvarg9); ldv_state_variable_7 = 1; } else { } goto ldv_42451; default: ldv_stop(); } ldv_42451: ; return; } } void ldv_main_exported_9(void) { struct trace_event *ldvarg80 ; void *tmp ; struct trace_iterator *ldvarg79 ; void *tmp___0 ; int ldvarg81 ; int tmp___1 ; { tmp = ldv_init_zalloc(48UL); ldvarg80 = (struct trace_event *)tmp; tmp___0 = ldv_init_zalloc(8560UL); ldvarg79 = (struct trace_iterator *)tmp___0; ldv_memset((void *)(& ldvarg81), 0, 4UL); tmp___1 = __VERIFIER_nondet_int(); switch (tmp___1) { case 0: ; if (ldv_state_variable_9 == 1) { trace_raw_output_drm_vblank_event(ldvarg79, ldvarg81, ldvarg80); ldv_state_variable_9 = 1; } else { } goto ldv_42460; default: ldv_stop(); } ldv_42460: ; return; } } void ldv_main_exported_5(void) { void *ldvarg101 ; void *tmp ; enum trace_reg ldvarg102 ; int tmp___0 ; { tmp = ldv_init_zalloc(1UL); ldvarg101 = tmp; ldv_memset((void *)(& ldvarg102), 0, 4UL); tmp___0 = __VERIFIER_nondet_int(); switch (tmp___0) { case 0: ; if (ldv_state_variable_5 == 1) { trace_event_define_fields_drm_vblank_event_queued(event_class_drm_vblank_event_queued_group0); ldv_state_variable_5 = 1; } else { } goto ldv_42468; case 1: ; if (ldv_state_variable_5 == 1) { trace_event_raw_init(event_class_drm_vblank_event_queued_group0); ldv_state_variable_5 = 1; } else { } goto ldv_42468; case 2: ; if (ldv_state_variable_5 == 1) { trace_event_reg(event_class_drm_vblank_event_queued_group0, ldvarg102, ldvarg101); ldv_state_variable_5 = 1; } else { } goto ldv_42468; default: ldv_stop(); } ldv_42468: ; return; } } bool ldv_queue_work_on_384(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_385(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_386(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_387(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_388(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; bool ldv_queue_work_on_398(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_400(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_399(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_402(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_401(struct workqueue_struct *ldv_func_arg1 ) ; void drm_global_release(void) ; int drm_global_item_ref(struct drm_global_reference *ref ) ; void drm_global_item_unref(struct drm_global_reference *ref ) ; static struct drm_global_item glob[3U] ; void drm_global_init(void) { int i ; struct drm_global_item *item ; struct lock_class_key __key ; { i = 0; goto ldv_20059; ldv_20058: item = (struct drm_global_item *)(& glob) + (unsigned long )i; __mutex_init(& item->mutex, "&item->mutex", & __key); item->object = (void *)0; item->refcount = 0; i = i + 1; ldv_20059: ; if (i <= 2) { goto ldv_20058; } else { } return; } } void drm_global_release(void) { int i ; struct drm_global_item *item ; long tmp ; long tmp___0 ; { i = 0; goto ldv_20069; ldv_20068: item = (struct drm_global_item *)(& glob) + (unsigned long )i; tmp = ldv__builtin_expect((unsigned long )item->object != (unsigned long )((void *)0), 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_global.c"), "i" (61), "i" (12UL)); ldv_20066: ; goto ldv_20066; } else { } tmp___0 = ldv__builtin_expect(item->refcount != 0, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_global.c"), "i" (62), "i" (12UL)); ldv_20067: ; goto ldv_20067; } else { } i = i + 1; ldv_20069: ; if (i <= 2) { goto ldv_20068; } else { } return; } } int drm_global_item_ref(struct drm_global_reference *ref ) { int ret ; struct drm_global_item *item ; long tmp ; long tmp___0 ; { item = (struct drm_global_item *)(& glob) + (unsigned long )ref->global_type; mutex_lock_nested(& item->mutex, 0U); if (item->refcount == 0) { item->object = kzalloc(ref->size, 208U); tmp = ldv__builtin_expect((unsigned long )item->object == (unsigned long )((void *)0), 0L); if (tmp != 0L) { ret = -12; goto out_err; } else { } ref->object = item->object; ret = (*(ref->init))(ref); tmp___0 = ldv__builtin_expect(ret != 0, 0L); if (tmp___0 != 0L) { goto out_err; } else { } } else { } item->refcount = item->refcount + 1; ref->object = item->object; mutex_unlock(& item->mutex); return (0); out_err: mutex_unlock(& item->mutex); item->object = (void *)0; return (ret); } } static char const __kstrtab_drm_global_item_ref[20U] = { 'd', 'r', 'm', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'i', 't', 'e', 'm', '_', 'r', 'e', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_global_item_ref ; struct kernel_symbol const __ksymtab_drm_global_item_ref = {(unsigned long )(& drm_global_item_ref), (char const *)(& __kstrtab_drm_global_item_ref)}; void drm_global_item_unref(struct drm_global_reference *ref ) { struct drm_global_item *item ; long tmp ; long tmp___0 ; { item = (struct drm_global_item *)(& glob) + (unsigned long )ref->global_type; mutex_lock_nested(& item->mutex, 0U); tmp = ldv__builtin_expect(item->refcount == 0, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_global.c"), "i" (101), "i" (12UL)); ldv_20088: ; goto ldv_20088; } else { } tmp___0 = ldv__builtin_expect((unsigned long )ref->object != (unsigned long )item->object, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_global.c"), "i" (102), "i" (12UL)); ldv_20089: ; goto ldv_20089; } else { } item->refcount = item->refcount - 1; if (item->refcount == 0) { (*(ref->release))(ref); item->object = (void *)0; } else { } mutex_unlock(& item->mutex); return; } } static char const __kstrtab_drm_global_item_unref[22U] = { 'd', 'r', 'm', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'i', 't', 'e', 'm', '_', 'u', 'n', 'r', 'e', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_global_item_unref ; struct kernel_symbol const __ksymtab_drm_global_item_unref = {(unsigned long )(& drm_global_item_unref), (char const *)(& __kstrtab_drm_global_item_unref)}; bool ldv_queue_work_on_398(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_399(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_400(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_401(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_402(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; __inline static int __atomic_add_unless___1(atomic_t *v , int a , int u ) { int c ; int old ; long tmp ; long tmp___0 ; { c = atomic_read((atomic_t const *)v); ldv_5708: tmp = ldv__builtin_expect(c == u, 0L); if (tmp != 0L) { goto ldv_5707; } else { } old = atomic_cmpxchg(v, c, c + a); tmp___0 = ldv__builtin_expect(old == c, 1L); if (tmp___0 != 0L) { goto ldv_5707; } else { } c = old; goto ldv_5708; ldv_5707: ; return (c); } } __inline static void atomic64_inc(atomic64_t *v ) { { __asm__ volatile (".pushsection .smp_locks,\"a\"\n.balign 4\n.long 671f - .\n.popsection\n671:\n\tlock; incq %0": "=m" (v->counter): "m" (v->counter)); return; } } __inline static int atomic_add_unless___1(atomic_t *v , int a , int u ) { int tmp ; { tmp = __atomic_add_unless___1(v, a, u); return (tmp != u); } } __inline static void atomic_long_inc(atomic_long_t *l ) { atomic64_t *v ; { v = l; atomic64_inc(v); return; } } bool ldv_queue_work_on_412(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_414(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_413(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_416(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_415(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void kref_get___2(struct kref *kref ) { bool __warned ; int __ret_warn_once ; int tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; long tmp___2 ; { tmp = atomic_add_return(1, & kref->refcount); __ret_warn_once = tmp <= 1; tmp___2 = ldv__builtin_expect(__ret_warn_once != 0, 0L); if (tmp___2 != 0L) { __ret_warn_on = ! __warned; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("include/linux/kref.h", 47); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { __warned = 1; } else { } } else { } ldv__builtin_expect(__ret_warn_once != 0, 0L); return; } } __inline static int kref_put_mutex___1(struct kref *kref , void (*release)(struct kref * ) , struct mutex *lock ) { int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; long tmp___3 ; { __ret_warn_on = (unsigned long )release == (unsigned long )((void (*)(struct kref * ))0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("include/linux/kref.h", 138); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); tmp___2 = atomic_add_unless___1(& kref->refcount, -1, 1); tmp___3 = ldv__builtin_expect(tmp___2 == 0, 0L); if (tmp___3 != 0L) { mutex_lock_nested(lock, 0U); tmp___0 = atomic_dec_and_test(& kref->refcount); tmp___1 = ldv__builtin_expect(tmp___0 == 0, 0L); if (tmp___1 != 0L) { mutex_unlock(lock); return (0); } else { } (*release)(kref); return (1); } else { } return (0); } } __inline static struct page *sg_page___0(struct scatterlist *sg ) { long tmp ; long tmp___0 ; { tmp = ldv__builtin_expect(sg->sg_magic != 2271560481UL, 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/linux/scatterlist.h"), "i" (123), "i" (12UL)); ldv_23093: ; goto ldv_23093; } else { } tmp___0 = ldv__builtin_expect((long )((int )sg->page_link) & 1L, 0L); if (tmp___0 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/linux/scatterlist.h"), "i" (124), "i" (12UL)); ldv_23094: ; goto ldv_23094; } else { } return ((struct page *)(sg->page_link & 0xfffffffffffffffcUL)); } } __inline static void *sg_virt(struct scatterlist *sg ) { struct page *tmp ; void *tmp___0 ; { tmp = sg_page___0(sg); tmp___0 = lowmem_page_address((struct page const *)tmp); return (tmp___0 + (unsigned long )sg->offset); } } extern struct scatterlist *sg_next(struct scatterlist * ) ; extern void sg_free_table(struct sg_table * ) ; extern int sg_alloc_table_from_pages(struct sg_table * , struct page ** , unsigned int , unsigned long , unsigned long , gfp_t ) ; __inline static int valid_dma_direction(int dma_direction ) { { return ((dma_direction == 0 || dma_direction == 1) || dma_direction == 2); } } __inline static void kmemcheck_mark_initialized(void *address , unsigned int n ) { { return; } } extern void debug_dma_map_sg(struct device * , struct scatterlist * , int , int , int ) ; extern void debug_dma_unmap_sg(struct device * , struct scatterlist * , int , int ) ; extern struct dma_map_ops *dma_ops ; __inline static struct dma_map_ops *get_dma_ops(struct device *dev ) { long tmp ; { tmp = ldv__builtin_expect((unsigned long )dev == (unsigned long )((struct device *)0), 0L); if (tmp != 0L || (unsigned long )dev->archdata.dma_ops == (unsigned long )((struct dma_map_ops *)0)) { return (dma_ops); } else { return (dev->archdata.dma_ops); } } } __inline static int dma_map_sg_attrs(struct device *dev , struct scatterlist *sg , int nents , enum dma_data_direction dir , struct dma_attrs *attrs ) { struct dma_map_ops *ops ; struct dma_map_ops *tmp ; int i ; int ents ; struct scatterlist *s ; void *tmp___0 ; int tmp___1 ; long tmp___2 ; long tmp___3 ; { tmp = get_dma_ops(dev); ops = tmp; i = 0; s = sg; goto ldv_24877; ldv_24876: tmp___0 = sg_virt(s); kmemcheck_mark_initialized(tmp___0, s->length); i = i + 1; s = sg_next(s); ldv_24877: ; if (i < nents) { goto ldv_24876; } else { } tmp___1 = valid_dma_direction((int )dir); tmp___2 = ldv__builtin_expect(tmp___1 == 0, 0L); if (tmp___2 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/asm-generic/dma-mapping-common.h"), "i" (56), "i" (12UL)); ldv_24879: ; goto ldv_24879; } else { } ents = (*(ops->map_sg))(dev, sg, nents, dir, attrs); tmp___3 = ldv__builtin_expect(ents < 0, 0L); if (tmp___3 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/asm-generic/dma-mapping-common.h"), "i" (58), "i" (12UL)); ldv_24880: ; goto ldv_24880; } else { } debug_dma_map_sg(dev, sg, nents, ents, (int )dir); return (ents); } } __inline static void dma_unmap_sg_attrs(struct device *dev , struct scatterlist *sg , int nents , enum dma_data_direction dir , struct dma_attrs *attrs ) { struct dma_map_ops *ops ; struct dma_map_ops *tmp ; int tmp___0 ; long tmp___1 ; { tmp = get_dma_ops(dev); ops = tmp; tmp___0 = valid_dma_direction((int )dir); tmp___1 = ldv__builtin_expect(tmp___0 == 0, 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/asm-generic/dma-mapping-common.h"), "i" (70), "i" (12UL)); ldv_24889: ; goto ldv_24889; } else { } debug_dma_unmap_sg(dev, sg, nents, (int )dir); if ((unsigned long )ops->unmap_sg != (unsigned long )((void (*)(struct device * , struct scatterlist * , int , enum dma_data_direction , struct dma_attrs * ))0)) { (*(ops->unmap_sg))(dev, sg, nents, dir, attrs); } else { } return; } } __inline static struct file *get_file(struct file *f ) { { atomic_long_inc(& f->f_count); return (f); } } __inline static void get_dma_buf(struct dma_buf *dmabuf ) { { get_file(dmabuf->file); return; } } extern struct dma_buf_attachment *dma_buf_attach(struct dma_buf * , struct device * ) ; extern void dma_buf_detach(struct dma_buf * , struct dma_buf_attachment * ) ; extern struct dma_buf *dma_buf_export(struct dma_buf_export_info const * ) ; extern int dma_buf_fd(struct dma_buf * , int ) ; extern struct dma_buf *dma_buf_get(int ) ; extern struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment * , enum dma_data_direction ) ; extern void dma_buf_unmap_attachment(struct dma_buf_attachment * , struct sg_table * , enum dma_data_direction ) ; struct dma_buf *drm_gem_prime_export(struct drm_device *dev , struct drm_gem_object *obj , int flags ) ; int drm_gem_prime_handle_to_fd(struct drm_device *dev , struct drm_file *file_priv , uint32_t handle , uint32_t flags , int *prime_fd ) ; struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev , struct dma_buf *dma_buf ) ; int drm_gem_prime_fd_to_handle(struct drm_device *dev , struct drm_file *file_priv , int prime_fd , uint32_t *handle ) ; void drm_gem_dmabuf_release(struct dma_buf *dma_buf ) ; int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt , struct page **pages , dma_addr_t *addrs , int max_pages ) ; struct sg_table *drm_prime_pages_to_sg(struct page **pages , unsigned int nr_pages ) ; void drm_prime_gem_destroy(struct drm_gem_object *obj , struct sg_table *sg ) ; __inline static void drm_gem_object_reference___0(struct drm_gem_object *obj ) { { kref_get___2(& obj->refcount); return; } } __inline static void drm_gem_object_unreference_unlocked___0(struct drm_gem_object *obj ) { struct drm_device *dev ; int tmp ; { if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { return; } else { } dev = obj->dev; tmp = kref_put_mutex___1(& obj->refcount, & drm_gem_object_free, & dev->struct_mutex); if (tmp != 0) { mutex_unlock(& dev->struct_mutex); } else { lock_acquire(& dev->struct_mutex.dep_map, 0U, 0, 0, 1, (struct lockdep_map *)0, 0UL); lock_release(& dev->struct_mutex.dep_map, 0, 0UL); } return; } } static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv , struct dma_buf *dma_buf , uint32_t handle ) { struct drm_prime_member *member ; void *tmp ; { tmp = kmalloc(32UL, 208U); member = (struct drm_prime_member *)tmp; if ((unsigned long )member == (unsigned long )((struct drm_prime_member *)0)) { return (-12); } else { } get_dma_buf(dma_buf); member->dma_buf = dma_buf; member->handle = handle; list_add(& member->entry, & prime_fpriv->head); return (0); } } static struct dma_buf *drm_prime_lookup_buf_by_handle(struct drm_prime_file_private *prime_fpriv , uint32_t handle ) { struct drm_prime_member *member ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)prime_fpriv->head.next; member = (struct drm_prime_member *)__mptr; goto ldv_39184; ldv_39183: ; if (member->handle == handle) { return (member->dma_buf); } else { } __mptr___0 = (struct list_head const *)member->entry.next; member = (struct drm_prime_member *)__mptr___0; ldv_39184: ; if ((unsigned long )member != (unsigned long )prime_fpriv) { goto ldv_39183; } else { } return ((struct dma_buf *)0); } } static int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fpriv , struct dma_buf *dma_buf , uint32_t *handle ) { struct drm_prime_member *member ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { __mptr = (struct list_head const *)prime_fpriv->head.next; member = (struct drm_prime_member *)__mptr; goto ldv_39197; ldv_39196: ; if ((unsigned long )member->dma_buf == (unsigned long )dma_buf) { *handle = member->handle; return (0); } else { } __mptr___0 = (struct list_head const *)member->entry.next; member = (struct drm_prime_member *)__mptr___0; ldv_39197: ; if ((unsigned long )member != (unsigned long )prime_fpriv) { goto ldv_39196; } else { } return (-2); } } static int drm_gem_map_attach(struct dma_buf *dma_buf , struct device *target_dev , struct dma_buf_attachment *attach ) { struct drm_prime_attachment *prime_attach ; struct drm_gem_object *obj ; struct drm_device *dev ; void *tmp ; int tmp___0 ; { obj = (struct drm_gem_object *)dma_buf->priv; dev = obj->dev; tmp = kzalloc(16UL, 208U); prime_attach = (struct drm_prime_attachment *)tmp; if ((unsigned long )prime_attach == (unsigned long )((struct drm_prime_attachment *)0)) { return (-12); } else { } prime_attach->dir = 3; attach->priv = (void *)prime_attach; if ((unsigned long )(dev->driver)->gem_prime_pin == (unsigned long )((int (*)(struct drm_gem_object * ))0)) { return (0); } else { } tmp___0 = (*((dev->driver)->gem_prime_pin))(obj); return (tmp___0); } } static void drm_gem_map_detach(struct dma_buf *dma_buf , struct dma_buf_attachment *attach ) { struct drm_prime_attachment *prime_attach ; struct drm_gem_object *obj ; struct drm_device *dev ; struct sg_table *sgt ; { prime_attach = (struct drm_prime_attachment *)attach->priv; obj = (struct drm_gem_object *)dma_buf->priv; dev = obj->dev; if ((unsigned long )(dev->driver)->gem_prime_unpin != (unsigned long )((void (*)(struct drm_gem_object * ))0)) { (*((dev->driver)->gem_prime_unpin))(obj); } else { } if ((unsigned long )prime_attach == (unsigned long )((struct drm_prime_attachment *)0)) { return; } else { } sgt = prime_attach->sgt; if ((unsigned long )sgt != (unsigned long )((struct sg_table *)0)) { if ((unsigned int )prime_attach->dir != 3U) { dma_unmap_sg_attrs(attach->dev, sgt->sgl, (int )sgt->nents, prime_attach->dir, (struct dma_attrs *)0); } else { } sg_free_table(sgt); } else { } kfree((void const *)sgt); kfree((void const *)prime_attach); attach->priv = (void *)0; return; } } void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpriv , struct dma_buf *dma_buf ) { struct drm_prime_member *member ; struct drm_prime_member *safe ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; { __mptr = (struct list_head const *)prime_fpriv->head.next; member = (struct drm_prime_member *)__mptr; __mptr___0 = (struct list_head const *)member->entry.next; safe = (struct drm_prime_member *)__mptr___0; goto ldv_39228; ldv_39227: ; if ((unsigned long )member->dma_buf == (unsigned long )dma_buf) { dma_buf_put(dma_buf); list_del(& member->entry); kfree((void const *)member); } else { } member = safe; __mptr___1 = (struct list_head const *)safe->entry.next; safe = (struct drm_prime_member *)__mptr___1; ldv_39228: ; if ((unsigned long )member != (unsigned long )prime_fpriv) { goto ldv_39227; } else { } return; } } static struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach , enum dma_data_direction dir ) { struct drm_prime_attachment *prime_attach ; struct drm_gem_object *obj ; struct sg_table *sgt ; void *tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; void *tmp___2 ; int __ret_warn_on___0 ; long tmp___3 ; long tmp___4 ; void *tmp___5 ; int tmp___6 ; bool tmp___7 ; int tmp___8 ; { prime_attach = (struct drm_prime_attachment *)attach->priv; obj = (struct drm_gem_object *)(attach->dmabuf)->priv; __ret_warn_on = (unsigned int )dir == 3U || (unsigned long )prime_attach == (unsigned long )((struct drm_prime_attachment *)0); tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_prime.c", 187); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { tmp = ERR_PTR(-22L); return ((struct sg_table *)tmp); } else { } if ((unsigned int )prime_attach->dir == (unsigned int )dir) { return (prime_attach->sgt); } else { } __ret_warn_on___0 = (unsigned int )prime_attach->dir != 3U; tmp___3 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_prime.c", 198); } else { } tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { tmp___2 = ERR_PTR(-16L); return ((struct sg_table *)tmp___2); } else { } sgt = (*(((obj->dev)->driver)->gem_prime_get_sg_table))(obj); tmp___7 = IS_ERR((void const *)sgt); if (tmp___7) { tmp___8 = 0; } else { tmp___8 = 1; } if (tmp___8) { tmp___6 = dma_map_sg_attrs(attach->dev, sgt->sgl, (int )sgt->nents, dir, (struct dma_attrs *)0); if (tmp___6 == 0) { sg_free_table(sgt); kfree((void const *)sgt); tmp___5 = ERR_PTR(-12L); sgt = (struct sg_table *)tmp___5; } else { prime_attach->sgt = sgt; prime_attach->dir = dir; } } else { } return (sgt); } } static void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach , struct sg_table *sgt , enum dma_data_direction dir ) { { return; } } void drm_gem_dmabuf_release(struct dma_buf *dma_buf ) { struct drm_gem_object *obj ; { obj = (struct drm_gem_object *)dma_buf->priv; drm_gem_object_unreference_unlocked___0(obj); return; } } static char const __kstrtab_drm_gem_dmabuf_release[23U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'd', 'm', 'a', 'b', 'u', 'f', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_dmabuf_release ; struct kernel_symbol const __ksymtab_drm_gem_dmabuf_release = {(unsigned long )(& drm_gem_dmabuf_release), (char const *)(& __kstrtab_drm_gem_dmabuf_release)}; static void *drm_gem_dmabuf_vmap(struct dma_buf *dma_buf ) { struct drm_gem_object *obj ; struct drm_device *dev ; void *tmp ; { obj = (struct drm_gem_object *)dma_buf->priv; dev = obj->dev; tmp = (*((dev->driver)->gem_prime_vmap))(obj); return (tmp); } } static void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf , void *vaddr ) { struct drm_gem_object *obj ; struct drm_device *dev ; { obj = (struct drm_gem_object *)dma_buf->priv; dev = obj->dev; (*((dev->driver)->gem_prime_vunmap))(obj, vaddr); return; } } static void *drm_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf , unsigned long page_num ) { { return ((void *)0); } } static void drm_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf , unsigned long page_num , void *addr ) { { return; } } static void *drm_gem_dmabuf_kmap(struct dma_buf *dma_buf , unsigned long page_num ) { { return ((void *)0); } } static void drm_gem_dmabuf_kunmap(struct dma_buf *dma_buf , unsigned long page_num , void *addr ) { { return; } } static int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf , struct vm_area_struct *vma ) { struct drm_gem_object *obj ; struct drm_device *dev ; int tmp ; { obj = (struct drm_gem_object *)dma_buf->priv; dev = obj->dev; if ((unsigned long )(dev->driver)->gem_prime_mmap == (unsigned long )((int (*)(struct drm_gem_object * , struct vm_area_struct * ))0)) { return (-38); } else { } tmp = (*((dev->driver)->gem_prime_mmap))(obj, vma); return (tmp); } } static struct dma_buf_ops const drm_gem_prime_dmabuf_ops = {& drm_gem_map_attach, & drm_gem_map_detach, & drm_gem_map_dma_buf, & drm_gem_unmap_dma_buf, & drm_gem_dmabuf_release, 0, 0, & drm_gem_dmabuf_kmap_atomic, & drm_gem_dmabuf_kunmap_atomic, & drm_gem_dmabuf_kmap, & drm_gem_dmabuf_kunmap, & drm_gem_dmabuf_mmap, & drm_gem_dmabuf_vmap, & drm_gem_dmabuf_vunmap}; struct dma_buf *drm_gem_prime_export(struct drm_device *dev , struct drm_gem_object *obj , int flags ) { struct dma_buf_export_info exp_info ; struct dma_buf *tmp ; { exp_info.exp_name = "drm"; exp_info.owner = & __this_module; exp_info.ops = 0; exp_info.size = 0UL; exp_info.flags = 0; exp_info.resv = 0; exp_info.priv = 0; exp_info.ops = & drm_gem_prime_dmabuf_ops; exp_info.size = obj->size; exp_info.flags = flags; exp_info.priv = (void *)obj; if ((unsigned long )(dev->driver)->gem_prime_res_obj != (unsigned long )((struct reservation_object *(*)(struct drm_gem_object * ))0)) { exp_info.resv = (*((dev->driver)->gem_prime_res_obj))(obj); } else { } tmp = dma_buf_export((struct dma_buf_export_info const *)(& exp_info)); return (tmp); } } static char const __kstrtab_drm_gem_prime_export[21U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'e', 'x', 'p', 'o', 'r', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_prime_export ; struct kernel_symbol const __ksymtab_drm_gem_prime_export = {(unsigned long )(& drm_gem_prime_export), (char const *)(& __kstrtab_drm_gem_prime_export)}; static struct dma_buf *export_and_register_object(struct drm_device *dev , struct drm_gem_object *obj , uint32_t flags ) { struct dma_buf *dmabuf ; void *tmp ; bool tmp___0 ; { if (obj->handle_count == 0U) { tmp = ERR_PTR(-2L); dmabuf = (struct dma_buf *)tmp; return (dmabuf); } else { } dmabuf = (*((dev->driver)->gem_prime_export))(dev, obj, (int )flags); tmp___0 = IS_ERR((void const *)dmabuf); if ((int )tmp___0) { return (dmabuf); } else { } obj->dma_buf = dmabuf; get_dma_buf(obj->dma_buf); drm_gem_object_reference___0(obj); return (dmabuf); } } int drm_gem_prime_handle_to_fd(struct drm_device *dev , struct drm_file *file_priv , uint32_t handle , uint32_t flags , int *prime_fd ) { struct drm_gem_object *obj ; int ret ; struct dma_buf *dmabuf ; long tmp ; bool tmp___0 ; { ret = 0; mutex_lock_nested(& file_priv->prime.lock, 0U); obj = drm_gem_object_lookup(dev, file_priv, handle); if ((unsigned long )obj == (unsigned long )((struct drm_gem_object *)0)) { ret = -2; goto out_unlock; } else { } dmabuf = drm_prime_lookup_buf_by_handle(& file_priv->prime, handle); if ((unsigned long )dmabuf != (unsigned long )((struct dma_buf *)0)) { get_dma_buf(dmabuf); goto out_have_handle; } else { } mutex_lock_nested(& dev->object_name_lock, 0U); if ((unsigned long )obj->import_attach != (unsigned long )((struct dma_buf_attachment *)0)) { dmabuf = (obj->import_attach)->dmabuf; get_dma_buf(dmabuf); goto out_have_obj; } else { } if ((unsigned long )obj->dma_buf != (unsigned long )((struct dma_buf *)0)) { get_dma_buf(obj->dma_buf); dmabuf = obj->dma_buf; goto out_have_obj; } else { } dmabuf = export_and_register_object(dev, obj, flags); tmp___0 = IS_ERR((void const *)dmabuf); if ((int )tmp___0) { tmp = PTR_ERR((void const *)dmabuf); ret = (int )tmp; mutex_unlock(& dev->object_name_lock); goto out; } else { } out_have_obj: ret = drm_prime_add_buf_handle(& file_priv->prime, dmabuf, handle); mutex_unlock(& dev->object_name_lock); if (ret != 0) { goto fail_put_dmabuf; } else { } out_have_handle: ret = dma_buf_fd(dmabuf, (int )flags); if (ret < 0) { goto fail_put_dmabuf; } else { *prime_fd = ret; ret = 0; } goto out; fail_put_dmabuf: dma_buf_put(dmabuf); out: drm_gem_object_unreference_unlocked___0(obj); out_unlock: mutex_unlock(& file_priv->prime.lock); return (ret); } } static char const __kstrtab_drm_gem_prime_handle_to_fd[27U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'h', 'a', 'n', 'd', 'l', 'e', '_', 't', 'o', '_', 'f', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_prime_handle_to_fd ; struct kernel_symbol const __ksymtab_drm_gem_prime_handle_to_fd = {(unsigned long )(& drm_gem_prime_handle_to_fd), (char const *)(& __kstrtab_drm_gem_prime_handle_to_fd)}; struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev , struct dma_buf *dma_buf ) { struct dma_buf_attachment *attach ; struct sg_table *sgt ; struct drm_gem_object *obj ; int ret ; void *tmp ; void *tmp___0 ; bool tmp___1 ; long tmp___2 ; bool tmp___3 ; long tmp___4 ; bool tmp___5 ; void *tmp___6 ; { if ((unsigned long )dma_buf->ops == (unsigned long )(& drm_gem_prime_dmabuf_ops)) { obj = (struct drm_gem_object *)dma_buf->priv; if ((unsigned long )obj->dev == (unsigned long )dev) { drm_gem_object_reference___0(obj); return (obj); } else { } } else { } if ((unsigned long )(dev->driver)->gem_prime_import_sg_table == (unsigned long )((struct drm_gem_object *(*)(struct drm_device * , struct dma_buf_attachment * , struct sg_table * ))0)) { tmp = ERR_PTR(-22L); return ((struct drm_gem_object *)tmp); } else { } attach = dma_buf_attach(dma_buf, dev->dev); tmp___1 = IS_ERR((void const *)attach); if ((int )tmp___1) { tmp___0 = ERR_CAST((void const *)attach); return ((struct drm_gem_object *)tmp___0); } else { } get_dma_buf(dma_buf); sgt = dma_buf_map_attachment(attach, 0); tmp___3 = IS_ERR((void const *)sgt); if ((int )tmp___3) { tmp___2 = PTR_ERR((void const *)sgt); ret = (int )tmp___2; goto fail_detach; } else { } obj = (*((dev->driver)->gem_prime_import_sg_table))(dev, attach, sgt); tmp___5 = IS_ERR((void const *)obj); if ((int )tmp___5) { tmp___4 = PTR_ERR((void const *)obj); ret = (int )tmp___4; goto fail_unmap; } else { } obj->import_attach = attach; return (obj); fail_unmap: dma_buf_unmap_attachment(attach, sgt, 0); fail_detach: dma_buf_detach(dma_buf, attach); dma_buf_put(dma_buf); tmp___6 = ERR_PTR((long )ret); return ((struct drm_gem_object *)tmp___6); } } static char const __kstrtab_drm_gem_prime_import[21U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'i', 'm', 'p', 'o', 'r', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_prime_import ; struct kernel_symbol const __ksymtab_drm_gem_prime_import = {(unsigned long )(& drm_gem_prime_import), (char const *)(& __kstrtab_drm_gem_prime_import)}; int drm_gem_prime_fd_to_handle(struct drm_device *dev , struct drm_file *file_priv , int prime_fd , uint32_t *handle ) { struct dma_buf *dma_buf ; struct drm_gem_object *obj ; int ret ; long tmp ; bool tmp___0 ; long tmp___1 ; bool tmp___2 ; int __ret_warn_on ; long tmp___3 ; { dma_buf = dma_buf_get(prime_fd); tmp___0 = IS_ERR((void const *)dma_buf); if ((int )tmp___0) { tmp = PTR_ERR((void const *)dma_buf); return ((int )tmp); } else { } mutex_lock_nested(& file_priv->prime.lock, 0U); ret = drm_prime_lookup_buf_handle(& file_priv->prime, dma_buf, handle); if (ret == 0) { goto out_put; } else { } mutex_lock_nested(& dev->object_name_lock, 0U); obj = (*((dev->driver)->gem_prime_import))(dev, dma_buf); tmp___2 = IS_ERR((void const *)obj); if ((int )tmp___2) { tmp___1 = PTR_ERR((void const *)obj); ret = (int )tmp___1; goto out_unlock; } else { } if ((unsigned long )obj->dma_buf != (unsigned long )((struct dma_buf *)0)) { __ret_warn_on = (unsigned long )obj->dma_buf != (unsigned long )dma_buf; tmp___3 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_prime.c", 594); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); } else { obj->dma_buf = dma_buf; get_dma_buf(dma_buf); } ret = drm_gem_handle_create_tail(file_priv, obj, handle); drm_gem_object_unreference_unlocked___0(obj); if (ret != 0) { goto out_put; } else { } ret = drm_prime_add_buf_handle(& file_priv->prime, dma_buf, *handle); if (ret != 0) { goto fail; } else { } mutex_unlock(& file_priv->prime.lock); dma_buf_put(dma_buf); return (0); fail: drm_gem_handle_delete(file_priv, *handle); out_unlock: mutex_unlock(& dev->object_name_lock); out_put: dma_buf_put(dma_buf); mutex_unlock(& file_priv->prime.lock); return (ret); } } static char const __kstrtab_drm_gem_prime_fd_to_handle[27U] = { 'd', 'r', 'm', '_', 'g', 'e', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'f', 'd', '_', 't', 'o', '_', 'h', 'a', 'n', 'd', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_gem_prime_fd_to_handle ; struct kernel_symbol const __ksymtab_drm_gem_prime_fd_to_handle = {(unsigned long )(& drm_gem_prime_fd_to_handle), (char const *)(& __kstrtab_drm_gem_prime_fd_to_handle)}; int drm_prime_handle_to_fd_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_prime_handle *args ; uint32_t flags ; int tmp ; int tmp___0 ; { args = (struct drm_prime_handle *)data; tmp = drm_core_check_feature(dev, 16384); if (tmp == 0) { return (-22); } else { } if ((unsigned long )(dev->driver)->prime_handle_to_fd == (unsigned long )((int (*)(struct drm_device * , struct drm_file * , uint32_t , uint32_t , int * ))0)) { return (-38); } else { } if ((args->flags & 4294443007U) != 0U) { return (-22); } else { } flags = args->flags & 524288U; tmp___0 = (*((dev->driver)->prime_handle_to_fd))(dev, file_priv, args->handle, flags, & args->fd); return (tmp___0); } } int drm_prime_fd_to_handle_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_prime_handle *args ; int tmp ; int tmp___0 ; { args = (struct drm_prime_handle *)data; tmp = drm_core_check_feature(dev, 16384); if (tmp == 0) { return (-22); } else { } if ((unsigned long )(dev->driver)->prime_fd_to_handle == (unsigned long )((int (*)(struct drm_device * , struct drm_file * , int , uint32_t * ))0)) { return (-38); } else { } tmp___0 = (*((dev->driver)->prime_fd_to_handle))(dev, file_priv, args->fd, & args->handle); return (tmp___0); } } struct sg_table *drm_prime_pages_to_sg(struct page **pages , unsigned int nr_pages ) { struct sg_table *sg ; int ret ; void *tmp ; void *tmp___0 ; { sg = (struct sg_table *)0; tmp = kmalloc(16UL, 208U); sg = (struct sg_table *)tmp; if ((unsigned long )sg == (unsigned long )((struct sg_table *)0)) { ret = -12; goto out; } else { } ret = sg_alloc_table_from_pages(sg, pages, nr_pages, 0UL, (unsigned long )(nr_pages << 12), 208U); if (ret != 0) { goto out; } else { } return (sg); out: kfree((void const *)sg); tmp___0 = ERR_PTR((long )ret); return ((struct sg_table *)tmp___0); } } static char const __kstrtab_drm_prime_pages_to_sg[22U] = { 'd', 'r', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'p', 'a', 'g', 'e', 's', '_', 't', 'o', '_', 's', 'g', '\000'}; struct kernel_symbol const __ksymtab_drm_prime_pages_to_sg ; struct kernel_symbol const __ksymtab_drm_prime_pages_to_sg = {(unsigned long )(& drm_prime_pages_to_sg), (char const *)(& __kstrtab_drm_prime_pages_to_sg)}; int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt , struct page **pages , dma_addr_t *addrs , int max_pages ) { unsigned int count ; struct scatterlist *sg ; struct page *page ; u32 len ; int pg_index ; dma_addr_t addr ; int __ret_warn_on ; long tmp ; long tmp___0 ; { pg_index = 0; count = 0U; sg = sgt->sgl; goto ldv_39428; ldv_39427: len = sg->length; page = sg_page___0(sg); addr = sg->dma_address; goto ldv_39425; ldv_39424: __ret_warn_on = pg_index >= max_pages; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_prime.c", 728); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (-1); } else { } *(pages + (unsigned long )pg_index) = page; if ((unsigned long )addrs != (unsigned long )((dma_addr_t *)0ULL)) { *(addrs + (unsigned long )pg_index) = addr; } else { } page = page + 1; addr = addr + 4096ULL; len = len - 4096U; pg_index = pg_index + 1; ldv_39425: ; if (len != 0U) { goto ldv_39424; } else { } count = count + 1U; sg = sg_next(sg); ldv_39428: ; if (sgt->nents > count) { goto ldv_39427; } else { } return (0); } } static char const __kstrtab_drm_prime_sg_to_page_addr_arrays[33U] = { 'd', 'r', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 's', 'g', '_', 't', 'o', '_', 'p', 'a', 'g', 'e', '_', 'a', 'd', 'd', 'r', '_', 'a', 'r', 'r', 'a', 'y', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_prime_sg_to_page_addr_arrays ; struct kernel_symbol const __ksymtab_drm_prime_sg_to_page_addr_arrays = {(unsigned long )(& drm_prime_sg_to_page_addr_arrays), (char const *)(& __kstrtab_drm_prime_sg_to_page_addr_arrays)}; void drm_prime_gem_destroy(struct drm_gem_object *obj , struct sg_table *sg ) { struct dma_buf_attachment *attach ; struct dma_buf *dma_buf ; { attach = obj->import_attach; if ((unsigned long )sg != (unsigned long )((struct sg_table *)0)) { dma_buf_unmap_attachment(attach, sg, 0); } else { } dma_buf = attach->dmabuf; dma_buf_detach(attach->dmabuf, attach); dma_buf_put(dma_buf); return; } } static char const __kstrtab_drm_prime_gem_destroy[22U] = { 'd', 'r', 'm', '_', 'p', 'r', 'i', 'm', 'e', '_', 'g', 'e', 'm', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_prime_gem_destroy ; struct kernel_symbol const __ksymtab_drm_prime_gem_destroy = {(unsigned long )(& drm_prime_gem_destroy), (char const *)(& __kstrtab_drm_prime_gem_destroy)}; void drm_prime_init_file_private(struct drm_prime_file_private *prime_fpriv ) { struct lock_class_key __key ; { INIT_LIST_HEAD(& prime_fpriv->head); __mutex_init(& prime_fpriv->lock, "&prime_fpriv->lock", & __key); return; } } void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = list_empty((struct list_head const *)(& prime_fpriv->head)); __ret_warn_on = tmp == 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_prime.c", 775); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } extern int ldv_close_3(void) ; int ldv_retval_17 ; extern int ldv_open_3(void) ; extern int ldv_probe_3(void) ; void ldv_initialize_dma_buf_ops_3(void) { void *tmp ; void *tmp___0 ; { tmp = __VERIFIER_nondet_pointer(); drm_gem_prime_dmabuf_ops_group0 = (struct dma_buf *)tmp; tmp___0 = __VERIFIER_nondet_pointer(); drm_gem_prime_dmabuf_ops_group1 = (struct dma_buf_attachment *)tmp___0; return; } } void ldv_main_exported_3(void) { struct device *ldvarg75 ; void *tmp ; unsigned long ldvarg74 ; unsigned long ldvarg76 ; struct sg_table *ldvarg69 ; void *tmp___0 ; struct vm_area_struct *ldvarg72 ; void *tmp___1 ; enum dma_data_direction ldvarg68 ; void *ldvarg71 ; void *tmp___2 ; unsigned long ldvarg78 ; unsigned long ldvarg67 ; enum dma_data_direction ldvarg70 ; void *ldvarg73 ; void *tmp___3 ; void *ldvarg77 ; void *tmp___4 ; int tmp___5 ; { tmp = ldv_init_zalloc(1416UL); ldvarg75 = (struct device *)tmp; tmp___0 = ldv_init_zalloc(16UL); ldvarg69 = (struct sg_table *)tmp___0; tmp___1 = ldv_init_zalloc(184UL); ldvarg72 = (struct vm_area_struct *)tmp___1; tmp___2 = ldv_init_zalloc(1UL); ldvarg71 = tmp___2; tmp___3 = ldv_init_zalloc(1UL); ldvarg73 = tmp___3; tmp___4 = ldv_init_zalloc(1UL); ldvarg77 = tmp___4; ldv_memset((void *)(& ldvarg74), 0, 8UL); ldv_memset((void *)(& ldvarg76), 0, 8UL); ldv_memset((void *)(& ldvarg68), 0, 4UL); ldv_memset((void *)(& ldvarg78), 0, 8UL); ldv_memset((void *)(& ldvarg67), 0, 8UL); ldv_memset((void *)(& ldvarg70), 0, 4UL); tmp___5 = __VERIFIER_nondet_int(); switch (tmp___5) { case 0: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_kunmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg78, ldvarg77); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_kunmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg78, ldvarg77); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_kunmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg78, ldvarg77); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_kunmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg78, ldvarg77); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 1: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_kmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg76); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_kmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg76); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_kmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg76); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_kmap_atomic(drm_gem_prime_dmabuf_ops_group0, ldvarg76); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 2: ; if (ldv_state_variable_3 == 2) { ldv_retval_17 = drm_gem_map_attach(drm_gem_prime_dmabuf_ops_group0, ldvarg75, drm_gem_prime_dmabuf_ops_group1); if (ldv_retval_17 == 0) { ldv_state_variable_3 = 3; } else { } } else { } goto ldv_39489; case 3: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_kunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg74, ldvarg73); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_kunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg74, ldvarg73); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_kunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg74, ldvarg73); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_kunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg74, ldvarg73); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 4: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_mmap(drm_gem_prime_dmabuf_ops_group0, ldvarg72); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_mmap(drm_gem_prime_dmabuf_ops_group0, ldvarg72); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_mmap(drm_gem_prime_dmabuf_ops_group0, ldvarg72); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_mmap(drm_gem_prime_dmabuf_ops_group0, ldvarg72); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 5: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_vunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg71); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_vunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg71); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_vunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg71); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_vunmap(drm_gem_prime_dmabuf_ops_group0, ldvarg71); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 6: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_vmap(drm_gem_prime_dmabuf_ops_group0); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_vmap(drm_gem_prime_dmabuf_ops_group0); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_vmap(drm_gem_prime_dmabuf_ops_group0); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_vmap(drm_gem_prime_dmabuf_ops_group0); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 7: ; if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_release(drm_gem_prime_dmabuf_ops_group0); ldv_state_variable_3 = 1; ref_cnt = ref_cnt - 1; } else { } goto ldv_39489; case 8: ; if (ldv_state_variable_3 == 3) { drm_gem_map_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg70); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_map_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg70); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_map_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg70); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_map_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg70); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 9: ; if (ldv_state_variable_3 == 3) { drm_gem_map_detach(drm_gem_prime_dmabuf_ops_group0, drm_gem_prime_dmabuf_ops_group1); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_map_detach(drm_gem_prime_dmabuf_ops_group0, drm_gem_prime_dmabuf_ops_group1); ldv_state_variable_3 = 2; } else { } goto ldv_39489; case 10: ; if (ldv_state_variable_3 == 3) { drm_gem_unmap_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg69, ldvarg68); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_unmap_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg69, ldvarg68); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_unmap_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg69, ldvarg68); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_unmap_dma_buf(drm_gem_prime_dmabuf_ops_group1, ldvarg69, ldvarg68); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 11: ; if (ldv_state_variable_3 == 3) { drm_gem_dmabuf_kmap(drm_gem_prime_dmabuf_ops_group0, ldvarg67); ldv_state_variable_3 = 3; } else { } if (ldv_state_variable_3 == 2) { drm_gem_dmabuf_kmap(drm_gem_prime_dmabuf_ops_group0, ldvarg67); ldv_state_variable_3 = 2; } else { } if (ldv_state_variable_3 == 4) { drm_gem_dmabuf_kmap(drm_gem_prime_dmabuf_ops_group0, ldvarg67); ldv_state_variable_3 = 4; } else { } if (ldv_state_variable_3 == 1) { drm_gem_dmabuf_kmap(drm_gem_prime_dmabuf_ops_group0, ldvarg67); ldv_state_variable_3 = 1; } else { } goto ldv_39489; case 12: ; if (ldv_state_variable_3 == 3) { ldv_open_3(); ldv_state_variable_3 = 4; } else { } goto ldv_39489; case 13: ; if (ldv_state_variable_3 == 4) { ldv_close_3(); ldv_state_variable_3 = 3; } else { } goto ldv_39489; case 14: ; if (ldv_state_variable_3 == 1) { ldv_probe_3(); ldv_state_variable_3 = 2; ref_cnt = ref_cnt + 1; } else { } goto ldv_39489; default: ldv_stop(); } ldv_39489: ; return; } } bool ldv_queue_work_on_412(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_413(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_414(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_415(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_416(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; bool ldv_queue_work_on_426(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_428(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_427(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_430(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_429(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void drm_rect_adjust_size(struct drm_rect *r , int dw , int dh ) { { r->x1 = r->x1 - (dw >> 1); r->y1 = r->y1 - (dh >> 1); r->x2 = r->x2 + ((dw + 1) >> 1); r->y2 = r->y2 + ((dh + 1) >> 1); return; } } __inline static int drm_rect_width(struct drm_rect const *r ) { { return ((int )r->x2 - (int )r->x1); } } __inline static int drm_rect_height(struct drm_rect const *r ) { { return ((int )r->y2 - (int )r->y1); } } __inline static bool drm_rect_visible(struct drm_rect const *r ) { int tmp ; int tmp___0 ; int tmp___1 ; { tmp = drm_rect_width(r); if (tmp > 0) { tmp___0 = drm_rect_height(r); if (tmp___0 > 0) { tmp___1 = 1; } else { tmp___1 = 0; } } else { tmp___1 = 0; } return ((bool )tmp___1); } } bool drm_rect_intersect(struct drm_rect *r1 , struct drm_rect const *r2 ) ; bool drm_rect_clip_scaled(struct drm_rect *src , struct drm_rect *dst , struct drm_rect const *clip , int hscale , int vscale ) ; int drm_rect_calc_hscale(struct drm_rect const *src , struct drm_rect const *dst , int min_hscale , int max_hscale ) ; int drm_rect_calc_vscale(struct drm_rect const *src , struct drm_rect const *dst , int min_vscale , int max_vscale ) ; int drm_rect_calc_hscale_relaxed(struct drm_rect *src , struct drm_rect *dst , int min_hscale , int max_hscale ) ; int drm_rect_calc_vscale_relaxed(struct drm_rect *src , struct drm_rect *dst , int min_vscale , int max_vscale ) ; void drm_rect_debug_print(struct drm_rect const *r , bool fixed_point ) ; void drm_rect_rotate(struct drm_rect *r , int width , int height , unsigned int rotation ) ; void drm_rect_rotate_inv(struct drm_rect *r , int width , int height , unsigned int rotation ) ; bool drm_rect_intersect(struct drm_rect *r1 , struct drm_rect const *r2 ) { int _max1 ; int _max2 ; int _max1___0 ; int _max2___0 ; int _min1 ; int _min2 ; int _min1___0 ; int _min2___0 ; bool tmp ; { _max1 = r1->x1; _max2 = r2->x1; r1->x1 = (int const )_max1 > (int const )_max2 ? (int const )_max1 : _max2; _max1___0 = r1->y1; _max2___0 = r2->y1; r1->y1 = (int const )_max1___0 > (int const )_max2___0 ? (int const )_max1___0 : _max2___0; _min1 = r1->x2; _min2 = r2->x2; r1->x2 = (int const )_min1 < (int const )_min2 ? (int const )_min1 : _min2; _min1___0 = r1->y2; _min2___0 = r2->y2; r1->y2 = (int const )_min1___0 < (int const )_min2___0 ? (int const )_min1___0 : _min2___0; tmp = drm_rect_visible((struct drm_rect const *)r1); return (tmp); } } static char const __kstrtab_drm_rect_intersect[19U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'i', 'n', 't', 'e', 'r', 's', 'e', 'c', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_intersect ; struct kernel_symbol const __ksymtab_drm_rect_intersect = {(unsigned long )(& drm_rect_intersect), (char const *)(& __kstrtab_drm_rect_intersect)}; bool drm_rect_clip_scaled(struct drm_rect *src , struct drm_rect *dst , struct drm_rect const *clip , int hscale , int vscale ) { int diff ; int64_t tmp ; int64_t __min1 ; int64_t __max1 ; int64_t __max2 ; int64_t __min2 ; int64_t tmp___0 ; int64_t __min1___0 ; int64_t __max1___0 ; int64_t __max2___0 ; int64_t __min2___0 ; int64_t tmp___1 ; int64_t __min1___1 ; int64_t __max1___1 ; int64_t __max2___1 ; int64_t __min2___1 ; int64_t tmp___2 ; int64_t __min1___2 ; int64_t __max1___2 ; int64_t __max2___2 ; int64_t __min2___2 ; bool tmp___3 ; { diff = (int )clip->x1 - dst->x1; if (diff > 0) { tmp = (long long )src->x1 + (long long )diff * (long long )hscale; __max1 = tmp; __max2 = (-0x7FFFFFFF-1); __min1 = __max1 > __max2 ? __max1 : __max2; __min2 = 2147483647LL; src->x1 = (int )(__min1 < __min2 ? __min1 : __min2); } else { } diff = (int )clip->y1 - dst->y1; if (diff > 0) { tmp___0 = (long long )src->y1 + (long long )diff * (long long )vscale; __max1___0 = tmp___0; __max2___0 = (-0x7FFFFFFF-1); __min1___0 = __max1___0 > __max2___0 ? __max1___0 : __max2___0; __min2___0 = 2147483647LL; src->y1 = (int )(__min1___0 < __min2___0 ? __min1___0 : __min2___0); } else { } diff = dst->x2 - (int )clip->x2; if (diff > 0) { tmp___1 = (long long )src->x2 - (long long )diff * (long long )hscale; __max1___1 = tmp___1; __max2___1 = (-0x7FFFFFFF-1); __min1___1 = __max1___1 > __max2___1 ? __max1___1 : __max2___1; __min2___1 = 2147483647LL; src->x2 = (int )(__min1___1 < __min2___1 ? __min1___1 : __min2___1); } else { } diff = dst->y2 - (int )clip->y2; if (diff > 0) { tmp___2 = (long long )src->y2 - (long long )diff * (long long )vscale; __max1___2 = tmp___2; __max2___2 = (-0x7FFFFFFF-1); __min1___2 = __max1___2 > __max2___2 ? __max1___2 : __max2___2; __min2___2 = 2147483647LL; src->y2 = (int )(__min1___2 < __min2___2 ? __min1___2 : __min2___2); } else { } tmp___3 = drm_rect_intersect(dst, clip); return (tmp___3); } } static char const __kstrtab_drm_rect_clip_scaled[21U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'c', 'l', 'i', 'p', '_', 's', 'c', 'a', 'l', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_clip_scaled ; struct kernel_symbol const __ksymtab_drm_rect_clip_scaled = {(unsigned long )(& drm_rect_clip_scaled), (char const *)(& __kstrtab_drm_rect_clip_scaled)}; static int drm_calc_scale(int src , int dst ) { int scale ; { scale = 0; if (src < 0 || dst < 0) { return (-22); } else { } if (dst == 0) { return (0); } else { } scale = src / dst; return (scale); } } int drm_rect_calc_hscale(struct drm_rect const *src , struct drm_rect const *dst , int min_hscale , int max_hscale ) { int src_w ; int tmp ; int dst_w ; int tmp___0 ; int hscale ; int tmp___1 ; { tmp = drm_rect_width(src); src_w = tmp; tmp___0 = drm_rect_width(dst); dst_w = tmp___0; tmp___1 = drm_calc_scale(src_w, dst_w); hscale = tmp___1; if (hscale < 0 || dst_w == 0) { return (hscale); } else { } if (hscale < min_hscale || hscale > max_hscale) { return (-34); } else { } return (hscale); } } static char const __kstrtab_drm_rect_calc_hscale[21U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'c', 'a', 'l', 'c', '_', 'h', 's', 'c', 'a', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_calc_hscale ; struct kernel_symbol const __ksymtab_drm_rect_calc_hscale = {(unsigned long )(& drm_rect_calc_hscale), (char const *)(& __kstrtab_drm_rect_calc_hscale)}; int drm_rect_calc_vscale(struct drm_rect const *src , struct drm_rect const *dst , int min_vscale , int max_vscale ) { int src_h ; int tmp ; int dst_h ; int tmp___0 ; int vscale ; int tmp___1 ; { tmp = drm_rect_height(src); src_h = tmp; tmp___0 = drm_rect_height(dst); dst_h = tmp___0; tmp___1 = drm_calc_scale(src_h, dst_h); vscale = tmp___1; if (vscale < 0 || dst_h == 0) { return (vscale); } else { } if (vscale < min_vscale || vscale > max_vscale) { return (-34); } else { } return (vscale); } } static char const __kstrtab_drm_rect_calc_vscale[21U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'c', 'a', 'l', 'c', '_', 'v', 's', 'c', 'a', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_calc_vscale ; struct kernel_symbol const __ksymtab_drm_rect_calc_vscale = {(unsigned long )(& drm_rect_calc_vscale), (char const *)(& __kstrtab_drm_rect_calc_vscale)}; int drm_rect_calc_hscale_relaxed(struct drm_rect *src , struct drm_rect *dst , int min_hscale , int max_hscale ) { int src_w ; int tmp ; int dst_w ; int tmp___0 ; int hscale ; int tmp___1 ; int max_dst_w ; int max_src_w ; { tmp = drm_rect_width((struct drm_rect const *)src); src_w = tmp; tmp___0 = drm_rect_width((struct drm_rect const *)dst); dst_w = tmp___0; tmp___1 = drm_calc_scale(src_w, dst_w); hscale = tmp___1; if (hscale < 0 || dst_w == 0) { return (hscale); } else { } if (hscale < min_hscale) { max_dst_w = src_w / min_hscale; drm_rect_adjust_size(dst, max_dst_w - dst_w, 0); return (min_hscale); } else { } if (hscale > max_hscale) { max_src_w = dst_w * max_hscale; drm_rect_adjust_size(src, max_src_w - src_w, 0); return (max_hscale); } else { } return (hscale); } } static char const __kstrtab_drm_rect_calc_hscale_relaxed[29U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'c', 'a', 'l', 'c', '_', 'h', 's', 'c', 'a', 'l', 'e', '_', 'r', 'e', 'l', 'a', 'x', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_calc_hscale_relaxed ; struct kernel_symbol const __ksymtab_drm_rect_calc_hscale_relaxed = {(unsigned long )(& drm_rect_calc_hscale_relaxed), (char const *)(& __kstrtab_drm_rect_calc_hscale_relaxed)}; int drm_rect_calc_vscale_relaxed(struct drm_rect *src , struct drm_rect *dst , int min_vscale , int max_vscale ) { int src_h ; int tmp ; int dst_h ; int tmp___0 ; int vscale ; int tmp___1 ; int max_dst_h ; int max_src_h ; { tmp = drm_rect_height((struct drm_rect const *)src); src_h = tmp; tmp___0 = drm_rect_height((struct drm_rect const *)dst); dst_h = tmp___0; tmp___1 = drm_calc_scale(src_h, dst_h); vscale = tmp___1; if (vscale < 0 || dst_h == 0) { return (vscale); } else { } if (vscale < min_vscale) { max_dst_h = src_h / min_vscale; drm_rect_adjust_size(dst, 0, max_dst_h - dst_h); return (min_vscale); } else { } if (vscale > max_vscale) { max_src_h = dst_h * max_vscale; drm_rect_adjust_size(src, 0, max_src_h - src_h); return (max_vscale); } else { } return (vscale); } } static char const __kstrtab_drm_rect_calc_vscale_relaxed[29U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'c', 'a', 'l', 'c', '_', 'v', 's', 'c', 'a', 'l', 'e', '_', 'r', 'e', 'l', 'a', 'x', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_calc_vscale_relaxed ; struct kernel_symbol const __ksymtab_drm_rect_calc_vscale_relaxed = {(unsigned long )(& drm_rect_calc_vscale_relaxed), (char const *)(& __kstrtab_drm_rect_calc_vscale_relaxed)}; void drm_rect_debug_print(struct drm_rect const *r , bool fixed_point ) { int w ; int tmp ; int h ; int tmp___0 ; long tmp___1 ; long tmp___2 ; { tmp = drm_rect_width(r); w = tmp; tmp___0 = drm_rect_height(r); h = tmp___0; if ((int )fixed_point) { tmp___1 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_rect_debug_print", "%d.%06ux%d.%06u%+d.%06u%+d.%06u\n", w >> 16, (w & 65535) * 15625 >> 10, h >> 16, (h & 65535) * 15625 >> 10, r->x1 >> 16, ((int )r->x1 & 65535) * 15625 >> 10, r->y1 >> 16, ((int )r->y1 & 65535) * 15625 >> 10); } else { } } else { tmp___2 = ldv__builtin_expect((drm_debug & 4U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_rect_debug_print", "%dx%d%+d%+d\n", w, h, r->x1, r->y1); } else { } } return; } } static char const __kstrtab_drm_rect_debug_print[21U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'd', 'e', 'b', 'u', 'g', '_', 'p', 'r', 'i', 'n', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_debug_print ; struct kernel_symbol const __ksymtab_drm_rect_debug_print = {(unsigned long )(& drm_rect_debug_print), (char const *)(& __kstrtab_drm_rect_debug_print)}; void drm_rect_rotate(struct drm_rect *r , int width , int height , unsigned int rotation ) { struct drm_rect tmp ; { if (((unsigned long )rotation & 48UL) != 0UL) { tmp = *r; if (((unsigned long )rotation & 16UL) != 0UL) { r->x1 = width - tmp.x2; r->x2 = width - tmp.x1; } else { } if (((unsigned long )rotation & 32UL) != 0UL) { r->y1 = height - tmp.y2; r->y2 = height - tmp.y1; } else { } } else { } switch (rotation & 15U) { case 1U: ; goto ldv_38964; case 2U: tmp = *r; r->x1 = tmp.y1; r->x2 = tmp.y2; r->y1 = width - tmp.x2; r->y2 = width - tmp.x1; goto ldv_38964; case 4U: tmp = *r; r->x1 = width - tmp.x2; r->x2 = width - tmp.x1; r->y1 = height - tmp.y2; r->y2 = height - tmp.y1; goto ldv_38964; case 8U: tmp = *r; r->x1 = height - tmp.y2; r->x2 = height - tmp.y1; r->y1 = tmp.x1; r->y2 = tmp.x2; goto ldv_38964; default: ; goto ldv_38964; } ldv_38964: ; return; } } static char const __kstrtab_drm_rect_rotate[16U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'r', 'o', 't', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_rotate ; struct kernel_symbol const __ksymtab_drm_rect_rotate = {(unsigned long )(& drm_rect_rotate), (char const *)(& __kstrtab_drm_rect_rotate)}; void drm_rect_rotate_inv(struct drm_rect *r , int width , int height , unsigned int rotation ) { struct drm_rect tmp ; { switch (rotation & 15U) { case 1U: ; goto ldv_38987; case 2U: tmp = *r; r->x1 = width - tmp.y2; r->x2 = width - tmp.y1; r->y1 = tmp.x1; r->y2 = tmp.x2; goto ldv_38987; case 4U: tmp = *r; r->x1 = width - tmp.x2; r->x2 = width - tmp.x1; r->y1 = height - tmp.y2; r->y2 = height - tmp.y1; goto ldv_38987; case 8U: tmp = *r; r->x1 = tmp.y1; r->x2 = tmp.y2; r->y1 = height - tmp.x2; r->y2 = height - tmp.x1; goto ldv_38987; default: ; goto ldv_38987; } ldv_38987: ; if (((unsigned long )rotation & 48UL) != 0UL) { tmp = *r; if (((unsigned long )rotation & 16UL) != 0UL) { r->x1 = width - tmp.x2; r->x2 = width - tmp.x1; } else { } if (((unsigned long )rotation & 32UL) != 0UL) { r->y1 = height - tmp.y2; r->y2 = height - tmp.y1; } else { } } else { } return; } } static char const __kstrtab_drm_rect_rotate_inv[20U] = { 'd', 'r', 'm', '_', 'r', 'e', 'c', 't', '_', 'r', 'o', 't', 'a', 't', 'e', '_', 'i', 'n', 'v', '\000'}; struct kernel_symbol const __ksymtab_drm_rect_rotate_inv ; struct kernel_symbol const __ksymtab_drm_rect_rotate_inv = {(unsigned long )(& drm_rect_rotate_inv), (char const *)(& __kstrtab_drm_rect_rotate_inv)}; bool ldv_queue_work_on_426(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_427(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_428(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_429(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_430(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void _raw_read_lock(rwlock_t * ) ; extern void _raw_write_lock(rwlock_t * ) ; extern void _raw_read_unlock(rwlock_t * ) ; extern void _raw_write_unlock(rwlock_t * ) ; extern void rb_insert_color(struct rb_node * , struct rb_root * ) ; extern void rb_erase(struct rb_node * , struct rb_root * ) ; __inline static void rb_link_node(struct rb_node *node , struct rb_node *parent , struct rb_node **rb_link ) { struct rb_node *tmp ; { node->__rb_parent_color = (unsigned long )parent; tmp = (struct rb_node *)0; node->rb_right = tmp; node->rb_left = tmp; *rb_link = node; return; } } bool ldv_queue_work_on_440(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_442(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_441(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_444(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_443(struct workqueue_struct *ldv_func_arg1 ) ; __inline static bool drm_mm_node_allocated(struct drm_mm_node *node ) { { return ((int )node->allocated != 0); } } __inline static int drm_mm_insert_node(struct drm_mm *mm , struct drm_mm_node *node , u64 size , unsigned int alignment , enum drm_mm_search_flags flags ) { int tmp ; { tmp = drm_mm_insert_node_generic(mm, node, size, alignment, 0UL, flags, 0); return (tmp); } } struct drm_vma_offset_node *drm_vma_offset_lookup_locked(struct drm_vma_offset_manager *mgr , unsigned long start , unsigned long pages ) ; void drm_vma_offset_manager_init(struct drm_vma_offset_manager *mgr , unsigned long page_offset___0 , unsigned long size ) { struct lock_class_key __key ; struct rb_root __constr_expr_0 ; { __rwlock_init(& mgr->vm_lock, "&mgr->vm_lock", & __key); __constr_expr_0.rb_node = (struct rb_node *)0; mgr->vm_addr_space_rb = __constr_expr_0; drm_mm_init(& mgr->vm_addr_space_mm, (u64 )page_offset___0, (u64 )size); return; } } static char const __kstrtab_drm_vma_offset_manager_init[28U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_manager_init ; struct kernel_symbol const __ksymtab_drm_vma_offset_manager_init = {(unsigned long )(& drm_vma_offset_manager_init), (char const *)(& __kstrtab_drm_vma_offset_manager_init)}; void drm_vma_offset_manager_destroy(struct drm_vma_offset_manager *mgr ) { { _raw_write_lock(& mgr->vm_lock); drm_mm_takedown(& mgr->vm_addr_space_mm); _raw_write_unlock(& mgr->vm_lock); return; } } static char const __kstrtab_drm_vma_offset_manager_destroy[31U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '_', 'd', 'e', 's', 't', 'r', 'o', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_manager_destroy ; struct kernel_symbol const __ksymtab_drm_vma_offset_manager_destroy = {(unsigned long )(& drm_vma_offset_manager_destroy), (char const *)(& __kstrtab_drm_vma_offset_manager_destroy)}; struct drm_vma_offset_node *drm_vma_offset_lookup(struct drm_vma_offset_manager *mgr , unsigned long start , unsigned long pages ) { struct drm_vma_offset_node *node ; { _raw_read_lock(& mgr->vm_lock); node = drm_vma_offset_lookup_locked(mgr, start, pages); _raw_read_unlock(& mgr->vm_lock); return (node); } } static char const __kstrtab_drm_vma_offset_lookup[22U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'l', 'o', 'o', 'k', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_lookup ; struct kernel_symbol const __ksymtab_drm_vma_offset_lookup = {(unsigned long )(& drm_vma_offset_lookup), (char const *)(& __kstrtab_drm_vma_offset_lookup)}; struct drm_vma_offset_node *drm_vma_offset_lookup_locked(struct drm_vma_offset_manager *mgr , unsigned long start , unsigned long pages ) { struct drm_vma_offset_node *node ; struct drm_vma_offset_node *best ; struct rb_node *iter ; unsigned long offset ; struct rb_node const *__mptr ; long tmp ; { iter = mgr->vm_addr_space_rb.rb_node; best = (struct drm_vma_offset_node *)0; goto ldv_38764; ldv_38763: __mptr = (struct rb_node const *)iter; node = (struct drm_vma_offset_node *)__mptr + 0xffffffffffffff70UL; offset = (unsigned long )node->vm_node.start; if (start >= offset) { iter = iter->rb_right; best = node; if (start == offset) { goto ldv_38762; } else { } } else { iter = iter->rb_left; } ldv_38764: tmp = ldv__builtin_expect((unsigned long )iter != (unsigned long )((struct rb_node *)0), 1L); if (tmp != 0L) { goto ldv_38763; } else { } ldv_38762: ; if ((unsigned long )best != (unsigned long )((struct drm_vma_offset_node *)0)) { offset = (unsigned long )(best->vm_node.start + best->vm_node.size); if (start + pages > offset) { best = (struct drm_vma_offset_node *)0; } else { } } else { } return (best); } } static char const __kstrtab_drm_vma_offset_lookup_locked[29U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'l', 'o', 'o', 'k', 'u', 'p', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_lookup_locked ; struct kernel_symbol const __ksymtab_drm_vma_offset_lookup_locked = {(unsigned long )(& drm_vma_offset_lookup_locked), (char const *)(& __kstrtab_drm_vma_offset_lookup_locked)}; static void _drm_vma_offset_add_rb(struct drm_vma_offset_manager *mgr , struct drm_vma_offset_node *node ) { struct rb_node **iter ; struct rb_node *parent ; struct drm_vma_offset_node *iter_node ; struct rb_node const *__mptr ; long tmp ; { iter = & mgr->vm_addr_space_rb.rb_node; parent = (struct rb_node *)0; goto ldv_38785; ldv_38784: parent = *iter; __mptr = (struct rb_node const *)*iter; iter_node = (struct drm_vma_offset_node *)__mptr + 0xffffffffffffff70UL; if (node->vm_node.start < iter_node->vm_node.start) { iter = & (*iter)->rb_left; } else if (node->vm_node.start > iter_node->vm_node.start) { iter = & (*iter)->rb_right; } else { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_vma_manager.c"), "i" (209), "i" (12UL)); ldv_38783: ; goto ldv_38783; } ldv_38785: tmp = ldv__builtin_expect((unsigned long )*iter != (unsigned long )((struct rb_node *)0), 1L); if (tmp != 0L) { goto ldv_38784; } else { } rb_link_node(& node->vm_rb, parent, iter); rb_insert_color(& node->vm_rb, & mgr->vm_addr_space_rb); return; } } int drm_vma_offset_add(struct drm_vma_offset_manager *mgr , struct drm_vma_offset_node *node , unsigned long pages ) { int ret ; bool tmp ; { _raw_write_lock(& mgr->vm_lock); tmp = drm_mm_node_allocated(& node->vm_node); if ((int )tmp) { ret = 0; goto out_unlock; } else { } ret = drm_mm_insert_node(& mgr->vm_addr_space_mm, & node->vm_node, (u64 )pages, 0U, 0); if (ret != 0) { goto out_unlock; } else { } _drm_vma_offset_add_rb(mgr, node); out_unlock: _raw_write_unlock(& mgr->vm_lock); return (ret); } } static char const __kstrtab_drm_vma_offset_add[19U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'a', 'd', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_add ; struct kernel_symbol const __ksymtab_drm_vma_offset_add = {(unsigned long )(& drm_vma_offset_add), (char const *)(& __kstrtab_drm_vma_offset_add)}; void drm_vma_offset_remove(struct drm_vma_offset_manager *mgr , struct drm_vma_offset_node *node ) { bool tmp ; { _raw_write_lock(& mgr->vm_lock); tmp = drm_mm_node_allocated(& node->vm_node); if ((int )tmp) { rb_erase(& node->vm_rb, & mgr->vm_addr_space_rb); drm_mm_remove_node(& node->vm_node); memset((void *)(& node->vm_node), 0, 72UL); } else { } _raw_write_unlock(& mgr->vm_lock); return; } } static char const __kstrtab_drm_vma_offset_remove[22U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'o', 'f', 'f', 's', 'e', 't', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_offset_remove ; struct kernel_symbol const __ksymtab_drm_vma_offset_remove = {(unsigned long )(& drm_vma_offset_remove), (char const *)(& __kstrtab_drm_vma_offset_remove)}; int drm_vma_node_allow(struct drm_vma_offset_node *node , struct file *filp ) { struct rb_node **iter ; struct rb_node *parent ; struct drm_vma_offset_file *new ; struct drm_vma_offset_file *entry ; int ret ; void *tmp ; struct rb_node const *__mptr ; long tmp___0 ; { parent = (struct rb_node *)0; ret = 0; tmp = kmalloc(40UL, 208U); new = (struct drm_vma_offset_file *)tmp; _raw_write_lock(& node->vm_lock); iter = & node->vm_files.rb_node; goto ldv_38828; ldv_38827: parent = *iter; __mptr = (struct rb_node const *)*iter; entry = (struct drm_vma_offset_file *)__mptr; if ((unsigned long )entry->vm_filp == (unsigned long )filp) { entry->vm_count = entry->vm_count + 1UL; goto unlock; } else if ((unsigned long )entry->vm_filp < (unsigned long )filp) { iter = & (*iter)->rb_right; } else { iter = & (*iter)->rb_left; } ldv_38828: tmp___0 = ldv__builtin_expect((unsigned long )*iter != (unsigned long )((struct rb_node *)0), 1L); if (tmp___0 != 0L) { goto ldv_38827; } else { } if ((unsigned long )new == (unsigned long )((struct drm_vma_offset_file *)0)) { ret = -12; goto unlock; } else { } new->vm_filp = filp; new->vm_count = 1UL; rb_link_node(& new->vm_rb, parent, iter); rb_insert_color(& new->vm_rb, & node->vm_files); new = (struct drm_vma_offset_file *)0; unlock: _raw_write_unlock(& node->vm_lock); kfree((void const *)new); return (ret); } } static char const __kstrtab_drm_vma_node_allow[19U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'n', 'o', 'd', 'e', '_', 'a', 'l', 'l', 'o', 'w', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_node_allow ; struct kernel_symbol const __ksymtab_drm_vma_node_allow = {(unsigned long )(& drm_vma_node_allow), (char const *)(& __kstrtab_drm_vma_node_allow)}; void drm_vma_node_revoke(struct drm_vma_offset_node *node , struct file *filp ) { struct drm_vma_offset_file *entry ; struct rb_node *iter ; struct rb_node const *__mptr ; long tmp ; { _raw_write_lock(& node->vm_lock); iter = node->vm_files.rb_node; goto ldv_38848; ldv_38847: __mptr = (struct rb_node const *)iter; entry = (struct drm_vma_offset_file *)__mptr; if ((unsigned long )entry->vm_filp == (unsigned long )filp) { entry->vm_count = entry->vm_count - 1UL; if (entry->vm_count == 0UL) { rb_erase(& entry->vm_rb, & node->vm_files); kfree((void const *)entry); } else { } goto ldv_38846; } else if ((unsigned long )entry->vm_filp < (unsigned long )filp) { iter = iter->rb_right; } else { iter = iter->rb_left; } ldv_38848: tmp = ldv__builtin_expect((unsigned long )iter != (unsigned long )((struct rb_node *)0), 1L); if (tmp != 0L) { goto ldv_38847; } else { } ldv_38846: _raw_write_unlock(& node->vm_lock); return; } } static char const __kstrtab_drm_vma_node_revoke[20U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'n', 'o', 'd', 'e', '_', 'r', 'e', 'v', 'o', 'k', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_node_revoke ; struct kernel_symbol const __ksymtab_drm_vma_node_revoke = {(unsigned long )(& drm_vma_node_revoke), (char const *)(& __kstrtab_drm_vma_node_revoke)}; bool drm_vma_node_is_allowed(struct drm_vma_offset_node *node , struct file *filp ) { struct drm_vma_offset_file *entry ; struct rb_node *iter ; struct rb_node const *__mptr ; long tmp ; { _raw_read_lock(& node->vm_lock); iter = node->vm_files.rb_node; goto ldv_38867; ldv_38866: __mptr = (struct rb_node const *)iter; entry = (struct drm_vma_offset_file *)__mptr; if ((unsigned long )entry->vm_filp == (unsigned long )filp) { goto ldv_38865; } else if ((unsigned long )entry->vm_filp < (unsigned long )filp) { iter = iter->rb_right; } else { iter = iter->rb_left; } ldv_38867: tmp = ldv__builtin_expect((unsigned long )iter != (unsigned long )((struct rb_node *)0), 1L); if (tmp != 0L) { goto ldv_38866; } else { } ldv_38865: _raw_read_unlock(& node->vm_lock); return ((unsigned long )iter != (unsigned long )((struct rb_node *)0)); } } static char const __kstrtab_drm_vma_node_is_allowed[24U] = { 'd', 'r', 'm', '_', 'v', 'm', 'a', '_', 'n', 'o', 'd', 'e', '_', 'i', 's', '_', 'a', 'l', 'l', 'o', 'w', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_vma_node_is_allowed ; struct kernel_symbol const __ksymtab_drm_vma_node_is_allowed = {(unsigned long )(& drm_vma_node_is_allowed), (char const *)(& __kstrtab_drm_vma_node_is_allowed)}; bool ldv_queue_work_on_440(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_441(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_442(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_443(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_444(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern void __bad_size_call_parameter(void) ; __inline static unsigned long arch_local_save_flags___0(void) { unsigned long __ret ; unsigned long __edi ; unsigned long __esi ; unsigned long __edx ; unsigned long __ecx ; unsigned long __eax ; long tmp ; { __edi = __edi; __esi = __esi; __edx = __edx; __ecx = __ecx; __eax = __eax; tmp = ldv__builtin_expect((unsigned long )pv_irq_ops.save_fl.func == (unsigned long )((void *)0), 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"./arch/x86/include/asm/paravirt.h"), "i" (831), "i" (12UL)); ldv_4860: ; goto ldv_4860; } else { } __asm__ volatile ("771:\n\tcall *%c2;\n772:\n.pushsection .parainstructions,\"a\"\n .balign 8 \n .quad 771b\n .byte %c1\n .byte 772b-771b\n .short %c3\n.popsection\n": "=a" (__eax): [paravirt_typenum] "i" (43UL), [paravirt_opptr] "i" (& pv_irq_ops.save_fl.func), [paravirt_clobber] "i" (1): "memory", "cc"); __ret = __eax; return (__ret); } } extern void lockdep_init_map(struct lockdep_map * , char const * , struct lock_class_key * , int ) ; extern void __init_work(struct work_struct * , int ) ; bool ldv_queue_work_on_454(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_456(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_455(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_458(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_457(struct workqueue_struct *ldv_func_arg1 ) ; __inline static bool queue_work(struct workqueue_struct *wq , struct work_struct *work ) { bool tmp ; { tmp = ldv_queue_work_on_454(8192, wq, work); return (tmp); } } extern int cpu_number ; void call_and_disable_work_1(struct work_struct *work ) ; void disable_work_1(struct work_struct *work ) ; void invoke_work_1(void) ; extern atomic_t kgdb_active ; __inline static bool drm_can_sleep(void) { int tmp ; int pscr_ret__ ; void const *__vpp_verify ; int pfo_ret__ ; int pfo_ret_____0 ; int pfo_ret_____1 ; int pfo_ret_____2 ; int tmp___0 ; unsigned long _flags ; int tmp___1 ; { tmp = preempt_count(); if (tmp != 0) { return (0); } else { __vpp_verify = (void const *)0; switch (4UL) { case 1UL: ; switch (4UL) { case 1UL: __asm__ ("movb %%gs:%1,%0": "=q" (pfo_ret__): "m" (cpu_number)); goto ldv_38665; case 2UL: __asm__ ("movw %%gs:%1,%0": "=r" (pfo_ret__): "m" (cpu_number)); goto ldv_38665; case 4UL: __asm__ ("movl %%gs:%1,%0": "=r" (pfo_ret__): "m" (cpu_number)); goto ldv_38665; case 8UL: __asm__ ("movq %%gs:%1,%0": "=r" (pfo_ret__): "m" (cpu_number)); goto ldv_38665; default: __bad_percpu_size(); } ldv_38665: pscr_ret__ = pfo_ret__; goto ldv_38671; case 2UL: ; switch (4UL) { case 1UL: __asm__ ("movb %%gs:%1,%0": "=q" (pfo_ret_____0): "m" (cpu_number)); goto ldv_38675; case 2UL: __asm__ ("movw %%gs:%1,%0": "=r" (pfo_ret_____0): "m" (cpu_number)); goto ldv_38675; case 4UL: __asm__ ("movl %%gs:%1,%0": "=r" (pfo_ret_____0): "m" (cpu_number)); goto ldv_38675; case 8UL: __asm__ ("movq %%gs:%1,%0": "=r" (pfo_ret_____0): "m" (cpu_number)); goto ldv_38675; default: __bad_percpu_size(); } ldv_38675: pscr_ret__ = pfo_ret_____0; goto ldv_38671; case 4UL: ; switch (4UL) { case 1UL: __asm__ ("movb %%gs:%1,%0": "=q" (pfo_ret_____1): "m" (cpu_number)); goto ldv_38684; case 2UL: __asm__ ("movw %%gs:%1,%0": "=r" (pfo_ret_____1): "m" (cpu_number)); goto ldv_38684; case 4UL: __asm__ ("movl %%gs:%1,%0": "=r" (pfo_ret_____1): "m" (cpu_number)); goto ldv_38684; case 8UL: __asm__ ("movq %%gs:%1,%0": "=r" (pfo_ret_____1): "m" (cpu_number)); goto ldv_38684; default: __bad_percpu_size(); } ldv_38684: pscr_ret__ = pfo_ret_____1; goto ldv_38671; case 8UL: ; switch (4UL) { case 1UL: __asm__ ("movb %%gs:%1,%0": "=q" (pfo_ret_____2): "m" (cpu_number)); goto ldv_38693; case 2UL: __asm__ ("movw %%gs:%1,%0": "=r" (pfo_ret_____2): "m" (cpu_number)); goto ldv_38693; case 4UL: __asm__ ("movl %%gs:%1,%0": "=r" (pfo_ret_____2): "m" (cpu_number)); goto ldv_38693; case 8UL: __asm__ ("movq %%gs:%1,%0": "=r" (pfo_ret_____2): "m" (cpu_number)); goto ldv_38693; default: __bad_percpu_size(); } ldv_38693: pscr_ret__ = pfo_ret_____2; goto ldv_38671; default: __bad_size_call_parameter(); goto ldv_38671; } ldv_38671: tmp___0 = atomic_read((atomic_t const *)(& kgdb_active)); if (pscr_ret__ == tmp___0) { return (0); } else { _flags = arch_local_save_flags___0(); tmp___1 = arch_irqs_disabled_flags(_flags); if (tmp___1 != 0) { return (0); } else { } } } return (1); } } struct drm_flip_task *drm_flip_work_allocate_task(void *data , gfp_t flags ) ; void drm_flip_work_queue_task(struct drm_flip_work *work , struct drm_flip_task *task ) ; void drm_flip_work_queue(struct drm_flip_work *work , void *val ) ; void drm_flip_work_commit(struct drm_flip_work *work , struct workqueue_struct *wq ) ; void drm_flip_work_init(struct drm_flip_work *work , char const *name , void (*func)(struct drm_flip_work * , void * ) ) ; void drm_flip_work_cleanup(struct drm_flip_work *work ) ; struct drm_flip_task *drm_flip_work_allocate_task(void *data , gfp_t flags ) { struct drm_flip_task *task ; void *tmp ; { tmp = kzalloc(24UL, flags); task = (struct drm_flip_task *)tmp; if ((unsigned long )task != (unsigned long )((struct drm_flip_task *)0)) { task->data = data; } else { } return (task); } } static char const __kstrtab_drm_flip_work_allocate_task[28U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', '_', 't', 'a', 's', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_allocate_task ; struct kernel_symbol const __ksymtab_drm_flip_work_allocate_task = {(unsigned long )(& drm_flip_work_allocate_task), (char const *)(& __kstrtab_drm_flip_work_allocate_task)}; void drm_flip_work_queue_task(struct drm_flip_work *work , struct drm_flip_task *task ) { unsigned long flags ; raw_spinlock_t *tmp ; { tmp = spinlock_check(& work->lock); flags = _raw_spin_lock_irqsave(tmp); list_add_tail(& task->node, & work->queued); spin_unlock_irqrestore(& work->lock, flags); return; } } static char const __kstrtab_drm_flip_work_queue_task[25U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'q', 'u', 'e', 'u', 'e', '_', 't', 'a', 's', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_queue_task ; struct kernel_symbol const __ksymtab_drm_flip_work_queue_task = {(unsigned long )(& drm_flip_work_queue_task), (char const *)(& __kstrtab_drm_flip_work_queue_task)}; void drm_flip_work_queue(struct drm_flip_work *work , void *val ) { struct drm_flip_task *task ; bool tmp ; { tmp = drm_can_sleep(); task = drm_flip_work_allocate_task(val, (int )tmp ? 208U : 32U); if ((unsigned long )task != (unsigned long )((struct drm_flip_task *)0)) { drm_flip_work_queue_task(work, task); } else { drm_err("%s could not allocate task!\n", work->name); (*(work->func))(work, val); } return; } } static char const __kstrtab_drm_flip_work_queue[20U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'q', 'u', 'e', 'u', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_queue ; struct kernel_symbol const __ksymtab_drm_flip_work_queue = {(unsigned long )(& drm_flip_work_queue), (char const *)(& __kstrtab_drm_flip_work_queue)}; void drm_flip_work_commit(struct drm_flip_work *work , struct workqueue_struct *wq ) { unsigned long flags ; raw_spinlock_t *tmp ; { tmp = spinlock_check(& work->lock); flags = _raw_spin_lock_irqsave(tmp); list_splice_tail(& work->queued, & work->commited); INIT_LIST_HEAD(& work->queued); spin_unlock_irqrestore(& work->lock, flags); queue_work(wq, & work->worker); return; } } static char const __kstrtab_drm_flip_work_commit[21U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'c', 'o', 'm', 'm', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_commit ; struct kernel_symbol const __ksymtab_drm_flip_work_commit = {(unsigned long )(& drm_flip_work_commit), (char const *)(& __kstrtab_drm_flip_work_commit)}; static void flip_worker(struct work_struct *w ) { struct drm_flip_work *work ; struct work_struct const *__mptr ; struct list_head tasks ; unsigned long flags ; struct drm_flip_task *task ; struct drm_flip_task *tmp ; raw_spinlock_t *tmp___0 ; int tmp___1 ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; { __mptr = (struct work_struct const *)w; work = (struct drm_flip_work *)__mptr + 0xfffffffffffffff0UL; ldv_38963: INIT_LIST_HEAD(& tasks); tmp___0 = spinlock_check(& work->lock); flags = _raw_spin_lock_irqsave(tmp___0); list_splice_tail(& work->commited, & tasks); INIT_LIST_HEAD(& work->commited); spin_unlock_irqrestore(& work->lock, flags); tmp___1 = list_empty((struct list_head const *)(& tasks)); if (tmp___1 != 0) { goto ldv_38953; } else { } __mptr___0 = (struct list_head const *)tasks.next; task = (struct drm_flip_task *)__mptr___0; __mptr___1 = (struct list_head const *)task->node.next; tmp = (struct drm_flip_task *)__mptr___1; goto ldv_38961; ldv_38960: (*(work->func))(work, task->data); kfree((void const *)task); task = tmp; __mptr___2 = (struct list_head const *)tmp->node.next; tmp = (struct drm_flip_task *)__mptr___2; ldv_38961: ; if ((unsigned long )(& task->node) != (unsigned long )(& tasks)) { goto ldv_38960; } else { } goto ldv_38963; ldv_38953: ; return; } } void drm_flip_work_init(struct drm_flip_work *work , char const *name , void (*func)(struct drm_flip_work * , void * ) ) { struct lock_class_key __key ; struct lock_class_key __key___0 ; atomic_long_t __constr_expr_0 ; { work->name = name; INIT_LIST_HEAD(& work->queued); INIT_LIST_HEAD(& work->commited); spinlock_check(& work->lock); __raw_spin_lock_init(& work->lock.__annonCompField18.rlock, "&(&work->lock)->rlock", & __key); work->func = func; __init_work(& work->worker, 0); __constr_expr_0.counter = 137438953408L; work->worker.data = __constr_expr_0; lockdep_init_map(& work->worker.lockdep_map, "(&work->worker)", & __key___0, 0); INIT_LIST_HEAD(& work->worker.entry); work->worker.func = & flip_worker; return; } } static char const __kstrtab_drm_flip_work_init[19U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_init ; struct kernel_symbol const __ksymtab_drm_flip_work_init = {(unsigned long )(& drm_flip_work_init), (char const *)(& __kstrtab_drm_flip_work_init)}; void drm_flip_work_cleanup(struct drm_flip_work *work ) { int __ret_warn_on ; int tmp ; int tmp___0 ; int tmp___1 ; long tmp___2 ; { tmp = list_empty((struct list_head const *)(& work->queued)); if (tmp == 0) { tmp___1 = 1; } else { tmp___0 = list_empty((struct list_head const *)(& work->commited)); if (tmp___0 == 0) { tmp___1 = 1; } else { tmp___1 = 0; } } __ret_warn_on = tmp___1; tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_flip_work.c", 165); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } static char const __kstrtab_drm_flip_work_cleanup[22U] = { 'd', 'r', 'm', '_', 'f', 'l', 'i', 'p', '_', 'w', 'o', 'r', 'k', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_flip_work_cleanup ; struct kernel_symbol const __ksymtab_drm_flip_work_cleanup = {(unsigned long )(& drm_flip_work_cleanup), (char const *)(& __kstrtab_drm_flip_work_cleanup)}; void call_and_disable_work_1(struct work_struct *work ) { { if ((ldv_work_1_0 == 2 || ldv_work_1_0 == 3) && (unsigned long )work == (unsigned long )ldv_work_struct_1_0) { flip_worker(work); ldv_work_1_0 = 1; return; } else { } if ((ldv_work_1_1 == 2 || ldv_work_1_1 == 3) && (unsigned long )work == (unsigned long )ldv_work_struct_1_1) { flip_worker(work); ldv_work_1_1 = 1; return; } else { } if ((ldv_work_1_2 == 2 || ldv_work_1_2 == 3) && (unsigned long )work == (unsigned long )ldv_work_struct_1_2) { flip_worker(work); ldv_work_1_2 = 1; return; } else { } if ((ldv_work_1_3 == 2 || ldv_work_1_3 == 3) && (unsigned long )work == (unsigned long )ldv_work_struct_1_3) { flip_worker(work); ldv_work_1_3 = 1; return; } else { } return; } } void call_and_disable_all_1(int state ) { { if (ldv_work_1_0 == state) { call_and_disable_work_1(ldv_work_struct_1_0); } else { } if (ldv_work_1_1 == state) { call_and_disable_work_1(ldv_work_struct_1_1); } else { } if (ldv_work_1_2 == state) { call_and_disable_work_1(ldv_work_struct_1_2); } else { } if (ldv_work_1_3 == state) { call_and_disable_work_1(ldv_work_struct_1_3); } else { } return; } } void activate_work_1(struct work_struct *work , int state ) { { if (ldv_work_1_0 == 0) { ldv_work_struct_1_0 = work; ldv_work_1_0 = state; return; } else { } if (ldv_work_1_1 == 0) { ldv_work_struct_1_1 = work; ldv_work_1_1 = state; return; } else { } if (ldv_work_1_2 == 0) { ldv_work_struct_1_2 = work; ldv_work_1_2 = state; return; } else { } if (ldv_work_1_3 == 0) { ldv_work_struct_1_3 = work; ldv_work_1_3 = state; return; } else { } return; } } void disable_work_1(struct work_struct *work ) { { if ((ldv_work_1_0 == 3 || ldv_work_1_0 == 2) && (unsigned long )ldv_work_struct_1_0 == (unsigned long )work) { ldv_work_1_0 = 1; } else { } if ((ldv_work_1_1 == 3 || ldv_work_1_1 == 2) && (unsigned long )ldv_work_struct_1_1 == (unsigned long )work) { ldv_work_1_1 = 1; } else { } if ((ldv_work_1_2 == 3 || ldv_work_1_2 == 2) && (unsigned long )ldv_work_struct_1_2 == (unsigned long )work) { ldv_work_1_2 = 1; } else { } if ((ldv_work_1_3 == 3 || ldv_work_1_3 == 2) && (unsigned long )ldv_work_struct_1_3 == (unsigned long )work) { ldv_work_1_3 = 1; } else { } return; } } void work_init_1(void) { { ldv_work_1_0 = 0; ldv_work_1_1 = 0; ldv_work_1_2 = 0; ldv_work_1_3 = 0; return; } } void invoke_work_1(void) { int tmp ; { tmp = __VERIFIER_nondet_int(); switch (tmp) { case 0: ; if (ldv_work_1_0 == 2 || ldv_work_1_0 == 3) { ldv_work_1_0 = 4; flip_worker(ldv_work_struct_1_0); ldv_work_1_0 = 1; } else { } goto ldv_39017; case 1: ; if (ldv_work_1_1 == 2 || ldv_work_1_1 == 3) { ldv_work_1_1 = 4; flip_worker(ldv_work_struct_1_0); ldv_work_1_1 = 1; } else { } goto ldv_39017; case 2: ; if (ldv_work_1_2 == 2 || ldv_work_1_2 == 3) { ldv_work_1_2 = 4; flip_worker(ldv_work_struct_1_0); ldv_work_1_2 = 1; } else { } goto ldv_39017; case 3: ; if (ldv_work_1_3 == 2 || ldv_work_1_3 == 3) { ldv_work_1_3 = 4; flip_worker(ldv_work_struct_1_0); ldv_work_1_3 = 1; } else { } goto ldv_39017; default: ldv_stop(); } ldv_39017: ; return; } } bool ldv_queue_work_on_454(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_455(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_456(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_457(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_458(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern int oops_in_progress ; __inline static long atomic64_add_return(long i , atomic64_t *v ) { long __ret ; { __ret = i; switch (8UL) { case 1UL: __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"); goto ldv_5759; case 2UL: __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"); goto ldv_5759; case 4UL: __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"); goto ldv_5759; case 8UL: __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"); goto ldv_5759; default: __xadd_wrong_size(); } ldv_5759: ; return (__ret + i); } } __inline static long atomic_long_inc_return(atomic_long_t *l ) { atomic64_t *v ; long tmp ; { v = l; tmp = atomic64_add_return(1L, v); return (tmp); } } extern int debug_locks_silent ; extern int debug_locks_off(void) ; extern void debug_check_no_locks_freed(void const * , unsigned long ) ; extern int mutex_trylock(struct mutex * ) ; bool ldv_queue_work_on_468(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_470(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_469(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_472(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_471(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void ww_acquire_init(struct ww_acquire_ctx *ctx , struct ww_class *ww_class ) { long tmp ; void *tmp___0 ; { ctx->task = get_current(); tmp = atomic_long_inc_return(& ww_class->stamp); ctx->stamp = (unsigned long )tmp; ctx->acquired = 0U; ctx->ww_class = ww_class; ctx->done_acquire = 0U; ctx->contending_lock = (struct ww_mutex *)0; debug_check_no_locks_freed((void const *)ctx, 96UL); lockdep_init_map(& ctx->dep_map, ww_class->acquire_name, & ww_class->acquire_key, 0); tmp___0 = __builtin_return_address(0U); lock_acquire(& ctx->dep_map, 0U, 0, 0, 1, (struct lockdep_map *)0, (unsigned long )tmp___0); ctx->deadlock_inject_interval = 1U; ctx->deadlock_inject_countdown = (unsigned int )ctx->stamp & 15U; return; } } __inline static void ww_acquire_fini(struct ww_acquire_ctx *ctx ) { int __ret ; int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; { lock_release(& ctx->dep_map, 0, 0UL); __ret = 0; if (oops_in_progress == 0) { tmp___1 = ldv__builtin_expect(ctx->acquired != 0U, 0L); if (tmp___1 != 0L) { tmp___0 = debug_locks_off(); if (tmp___0 != 0 && debug_locks_silent == 0) { __ret_warn_on = 1; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("include/linux/ww_mutex.h", 175, "DEBUG_LOCKS_WARN_ON(%s)", (char *)"ctx->acquired"); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); } else { } __ret = 1; } else { } } else { } return; } } extern int __ww_mutex_lock(struct ww_mutex * , struct ww_acquire_ctx * ) ; extern int __ww_mutex_lock_interruptible(struct ww_mutex * , struct ww_acquire_ctx * ) ; __inline static int ww_mutex_lock(struct ww_mutex *lock , struct ww_acquire_ctx *ctx ) { int tmp ; { if ((unsigned long )ctx != (unsigned long )((struct ww_acquire_ctx *)0)) { tmp = __ww_mutex_lock(lock, ctx); return (tmp); } else { } mutex_lock_nested(& lock->base, 0U); return (0); } } __inline static int ww_mutex_lock_interruptible(struct ww_mutex *lock , struct ww_acquire_ctx *ctx ) { int tmp ; int tmp___0 ; { if ((unsigned long )ctx != (unsigned long )((struct ww_acquire_ctx *)0)) { tmp = __ww_mutex_lock_interruptible(lock, ctx); return (tmp); } else { tmp___0 = mutex_lock_interruptible_nested(& lock->base, 0U); return (tmp___0); } } } __inline static void ww_mutex_lock_slow(struct ww_mutex *lock , struct ww_acquire_ctx *ctx ) { int ret ; int __ret ; int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; { __ret = 0; if (oops_in_progress == 0) { tmp___1 = ldv__builtin_expect((unsigned long )ctx->contending_lock == (unsigned long )((struct ww_mutex *)0), 0L); if (tmp___1 != 0L) { tmp___0 = debug_locks_off(); if (tmp___0 != 0 && debug_locks_silent == 0) { __ret_warn_on = 1; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("include/linux/ww_mutex.h", 299, "DEBUG_LOCKS_WARN_ON(%s)", (char *)"!ctx->contending_lock"); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); } else { } __ret = 1; } else { } } else { } ret = ww_mutex_lock(lock, ctx); return; } } __inline static int ww_mutex_lock_slow_interruptible(struct ww_mutex *lock , struct ww_acquire_ctx *ctx ) { int __ret ; int __ret_warn_on ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; { __ret = 0; if (oops_in_progress == 0) { tmp___1 = ldv__builtin_expect((unsigned long )ctx->contending_lock == (unsigned long )((struct ww_mutex *)0), 0L); if (tmp___1 != 0L) { tmp___0 = debug_locks_off(); if (tmp___0 != 0 && debug_locks_silent == 0) { __ret_warn_on = 1; tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_fmt("include/linux/ww_mutex.h", 335, "DEBUG_LOCKS_WARN_ON(%s)", (char *)"!ctx->contending_lock"); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); } else { } __ret = 1; } else { } } else { } tmp___2 = ww_mutex_lock_interruptible(lock, ctx); return (tmp___2); } } extern void ww_mutex_unlock(struct ww_mutex * ) ; __inline static int ww_mutex_trylock(struct ww_mutex *lock ) { int tmp ; { tmp = mutex_trylock(& lock->base); return (tmp); } } void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx , uint32_t flags ) ; void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx ) ; void drm_modeset_drop_locks(struct drm_modeset_acquire_ctx *ctx ) ; void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx ) ; int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx ) ; int drm_modeset_lock_interruptible(struct drm_modeset_lock *lock , struct drm_modeset_acquire_ctx *ctx ) ; int __drm_modeset_lock_all(struct drm_device *dev , bool trylock ) ; void drm_warn_on_modeset_not_all_locked(struct drm_device *dev ) ; struct drm_modeset_acquire_ctx *drm_modeset_legacy_acquire_ctx(struct drm_crtc *crtc ) ; int drm_modeset_lock_all_crtcs(struct drm_device *dev , struct drm_modeset_acquire_ctx *ctx ) ; int __drm_modeset_lock_all(struct drm_device *dev , bool trylock ) { struct drm_mode_config *config ; struct drm_modeset_acquire_ctx *ctx ; int ret ; void *tmp ; int tmp___0 ; int __ret_warn_on ; long tmp___1 ; { config = & dev->mode_config; tmp = kzalloc(128UL, (int )trylock ? 32U : 208U); ctx = (struct drm_modeset_acquire_ctx *)tmp; if ((unsigned long )ctx == (unsigned long )((struct drm_modeset_acquire_ctx *)0)) { return (-12); } else { } if ((int )trylock) { tmp___0 = mutex_trylock(& config->mutex); if (tmp___0 == 0) { ret = -16; goto out; } else { } } else { mutex_lock_nested(& config->mutex, 0U); } drm_modeset_acquire_init(ctx, 0U); ctx->trylock_only = trylock; retry: ret = drm_modeset_lock(& config->connection_mutex, ctx); if (ret != 0) { goto fail; } else { } ret = drm_modeset_lock_all_crtcs(dev, ctx); if (ret != 0) { goto fail; } else { } __ret_warn_on = (unsigned long )config->acquire_ctx != (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 102); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); config->acquire_ctx = ctx; drm_warn_on_modeset_not_all_locked(dev); return (0); fail: ; if (ret == -35) { drm_modeset_backoff(ctx); goto retry; } else { } out: kfree((void const *)ctx); return (ret); } } static char const __kstrtab___drm_modeset_lock_all[23U] = { '_', '_', 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '_', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab___drm_modeset_lock_all ; struct kernel_symbol const __ksymtab___drm_modeset_lock_all = {(unsigned long )(& __drm_modeset_lock_all), (char const *)(& __kstrtab___drm_modeset_lock_all)}; void drm_modeset_lock_all(struct drm_device *dev ) { int __ret_warn_on ; int tmp ; long tmp___0 ; { tmp = __drm_modeset_lock_all(dev, 0); __ret_warn_on = tmp != 0; tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 135); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return; } } static char const __kstrtab_drm_modeset_lock_all[21U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '_', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_lock_all ; struct kernel_symbol const __ksymtab_drm_modeset_lock_all = {(unsigned long )(& drm_modeset_lock_all), (char const *)(& __kstrtab_drm_modeset_lock_all)}; void drm_modeset_unlock_all(struct drm_device *dev ) { struct drm_mode_config *config ; struct drm_modeset_acquire_ctx *ctx ; int __ret_warn_on ; long tmp ; long tmp___0 ; { config = & dev->mode_config; ctx = config->acquire_ctx; __ret_warn_on = (unsigned long )ctx == (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 150); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } config->acquire_ctx = (struct drm_modeset_acquire_ctx *)0; drm_modeset_drop_locks(ctx); drm_modeset_acquire_fini(ctx); kfree((void const *)ctx); mutex_unlock(& dev->mode_config.mutex); return; } } static char const __kstrtab_drm_modeset_unlock_all[23U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'u', 'n', 'l', 'o', 'c', 'k', '_', 'a', 'l', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_unlock_all ; struct kernel_symbol const __ksymtab_drm_modeset_unlock_all = {(unsigned long )(& drm_modeset_unlock_all), (char const *)(& __kstrtab_drm_modeset_unlock_all)}; void drm_modeset_lock_crtc(struct drm_crtc *crtc , struct drm_plane *plane ) { struct drm_modeset_acquire_ctx *ctx ; int ret ; void *tmp ; int __ret_warn_on ; long tmp___0 ; long tmp___1 ; int __ret_warn_on___0 ; long tmp___2 ; { tmp = kzalloc(128UL, 208U); ctx = (struct drm_modeset_acquire_ctx *)tmp; __ret_warn_on = (unsigned long )ctx == (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 183); } else { } tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { return; } else { } drm_modeset_acquire_init(ctx, 0U); retry: ret = drm_modeset_lock(& crtc->mutex, ctx); if (ret != 0) { goto fail; } else { } if ((unsigned long )plane != (unsigned long )((struct drm_plane *)0)) { ret = drm_modeset_lock(& plane->mutex, ctx); if (ret != 0) { goto fail; } else { } if ((unsigned long )plane->crtc != (unsigned long )((struct drm_crtc *)0)) { ret = drm_modeset_lock(& (plane->crtc)->mutex, ctx); if (ret != 0) { goto fail; } else { } } else { } } else { } __ret_warn_on___0 = (unsigned long )crtc->acquire_ctx != (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp___2 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 205); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); crtc->acquire_ctx = ctx; return; fail: ; if (ret == -35) { drm_modeset_backoff(ctx); goto retry; } else { } return; } } static char const __kstrtab_drm_modeset_lock_crtc[22U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '_', 'c', 'r', 't', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_lock_crtc ; struct kernel_symbol const __ksymtab_drm_modeset_lock_crtc = {(unsigned long )(& drm_modeset_lock_crtc), (char const *)(& __kstrtab_drm_modeset_lock_crtc)}; struct drm_modeset_acquire_ctx *drm_modeset_legacy_acquire_ctx(struct drm_crtc *crtc ) { int __ret_warn_on ; long tmp ; { if ((unsigned long )crtc->acquire_ctx != (unsigned long )((struct drm_modeset_acquire_ctx *)0)) { return (crtc->acquire_ctx); } else { } __ret_warn_on = (unsigned long )(crtc->dev)->mode_config.acquire_ctx == (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 237); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); return ((crtc->dev)->mode_config.acquire_ctx); } } static char const __kstrtab_drm_modeset_legacy_acquire_ctx[31U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'a', 'c', 'q', 'u', 'i', 'r', 'e', '_', 'c', 't', 'x', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_legacy_acquire_ctx ; struct kernel_symbol const __ksymtab_drm_modeset_legacy_acquire_ctx = {(unsigned long )(& drm_modeset_legacy_acquire_ctx), (char const *)(& __kstrtab_drm_modeset_legacy_acquire_ctx)}; void drm_modeset_unlock_crtc(struct drm_crtc *crtc ) { struct drm_modeset_acquire_ctx *ctx ; int __ret_warn_on ; long tmp ; long tmp___0 ; { ctx = crtc->acquire_ctx; __ret_warn_on = (unsigned long )ctx == (unsigned long )((struct drm_modeset_acquire_ctx *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 254); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return; } else { } crtc->acquire_ctx = (struct drm_modeset_acquire_ctx *)0; drm_modeset_drop_locks(ctx); drm_modeset_acquire_fini(ctx); kfree((void const *)ctx); return; } } static char const __kstrtab_drm_modeset_unlock_crtc[24U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'u', 'n', 'l', 'o', 'c', 'k', '_', 'c', 'r', 't', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_unlock_crtc ; struct kernel_symbol const __ksymtab_drm_modeset_unlock_crtc = {(unsigned long )(& drm_modeset_unlock_crtc), (char const *)(& __kstrtab_drm_modeset_unlock_crtc)}; void drm_warn_on_modeset_not_all_locked(struct drm_device *dev ) { struct drm_crtc *crtc ; struct list_head const *__mptr ; int __ret_warn_on ; bool tmp ; int tmp___0 ; long tmp___1 ; struct list_head const *__mptr___0 ; int __ret_warn_on___0 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __ret_warn_on___1 ; int tmp___5 ; long tmp___6 ; { if (oops_in_progress != 0) { return; } else { } __mptr = (struct list_head const *)dev->mode_config.crtc_list.next; crtc = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_38812; ldv_38811: tmp = drm_modeset_is_locked(& crtc->mutex); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } __ret_warn_on = tmp___0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 280); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __mptr___0 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38812: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_38811; } else { } tmp___2 = drm_modeset_is_locked(& dev->mode_config.connection_mutex); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } __ret_warn_on___0 = tmp___3; tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 282); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); tmp___5 = mutex_is_locked(& dev->mode_config.mutex); __ret_warn_on___1 = tmp___5 == 0; tmp___6 = ldv__builtin_expect(__ret_warn_on___1 != 0, 0L); if (tmp___6 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 283); } else { } ldv__builtin_expect(__ret_warn_on___1 != 0, 0L); return; } } static char const __kstrtab_drm_warn_on_modeset_not_all_locked[35U] = { 'd', 'r', 'm', '_', 'w', 'a', 'r', 'n', '_', 'o', 'n', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'n', 'o', 't', '_', 'a', 'l', 'l', '_', 'l', 'o', 'c', 'k', 'e', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_warn_on_modeset_not_all_locked ; struct kernel_symbol const __ksymtab_drm_warn_on_modeset_not_all_locked = {(unsigned long )(& drm_warn_on_modeset_not_all_locked), (char const *)(& __kstrtab_drm_warn_on_modeset_not_all_locked)}; void drm_modeset_acquire_init(struct drm_modeset_acquire_ctx *ctx , uint32_t flags ) { { memset((void *)ctx, 0, 128UL); ww_acquire_init(& ctx->ww_ctx, & crtc_ww_class); INIT_LIST_HEAD(& ctx->locked); return; } } static char const __kstrtab_drm_modeset_acquire_init[25U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'a', 'c', 'q', 'u', 'i', 'r', 'e', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_acquire_init ; struct kernel_symbol const __ksymtab_drm_modeset_acquire_init = {(unsigned long )(& drm_modeset_acquire_init), (char const *)(& __kstrtab_drm_modeset_acquire_init)}; void drm_modeset_acquire_fini(struct drm_modeset_acquire_ctx *ctx ) { { ww_acquire_fini(& ctx->ww_ctx); return; } } static char const __kstrtab_drm_modeset_acquire_fini[25U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'a', 'c', 'q', 'u', 'i', 'r', 'e', '_', 'f', 'i', 'n', 'i', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_acquire_fini ; struct kernel_symbol const __ksymtab_drm_modeset_acquire_fini = {(unsigned long )(& drm_modeset_acquire_fini), (char const *)(& __kstrtab_drm_modeset_acquire_fini)}; void drm_modeset_drop_locks(struct drm_modeset_acquire_ctx *ctx ) { int __ret_warn_on ; long tmp ; struct drm_modeset_lock *lock ; struct list_head const *__mptr ; int tmp___0 ; { __ret_warn_on = (unsigned long )ctx->contended != (unsigned long )((struct drm_modeset_lock *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 319); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); goto ldv_38856; ldv_38855: __mptr = (struct list_head const *)ctx->locked.next; lock = (struct drm_modeset_lock *)__mptr + 0xffffffffffffff50UL; drm_modeset_unlock(lock); ldv_38856: tmp___0 = list_empty((struct list_head const *)(& ctx->locked)); if (tmp___0 == 0) { goto ldv_38855; } else { } return; } } static char const __kstrtab_drm_modeset_drop_locks[23U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'd', 'r', 'o', 'p', '_', 'l', 'o', 'c', 'k', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_drop_locks ; struct kernel_symbol const __ksymtab_drm_modeset_drop_locks = {(unsigned long )(& drm_modeset_drop_locks), (char const *)(& __kstrtab_drm_modeset_drop_locks)}; __inline static int modeset_lock(struct drm_modeset_lock *lock , struct drm_modeset_acquire_ctx *ctx , bool interruptible , bool slow ) { int ret ; int __ret_warn_on ; long tmp ; int tmp___0 ; int __ret_warn_on___0 ; int tmp___1 ; long tmp___2 ; { __ret_warn_on = (unsigned long )ctx->contended != (unsigned long )((struct drm_modeset_lock *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 337); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); if ((int )ctx->trylock_only) { tmp___0 = ww_mutex_trylock(& lock->mutex); if (tmp___0 == 0) { return (-16); } else { return (0); } } else if ((int )interruptible && (int )slow) { ret = ww_mutex_lock_slow_interruptible(& lock->mutex, & ctx->ww_ctx); } else if ((int )interruptible) { ret = ww_mutex_lock_interruptible(& lock->mutex, & ctx->ww_ctx); } else if ((int )slow) { ww_mutex_lock_slow(& lock->mutex, & ctx->ww_ctx); ret = 0; } else { ret = ww_mutex_lock(& lock->mutex, & ctx->ww_ctx); } if (ret == 0) { tmp___1 = list_empty((struct list_head const *)(& lock->head)); __ret_warn_on___0 = tmp___1 == 0; tmp___2 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 355); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); list_add(& lock->head, & ctx->locked); } else if (ret == -114) { ret = 0; } else if (ret == -35) { ctx->contended = lock; } else { } return (ret); } } static int modeset_backoff(struct drm_modeset_acquire_ctx *ctx , bool interruptible ) { struct drm_modeset_lock *contended ; int __ret_warn_on ; long tmp ; long tmp___0 ; int tmp___1 ; { contended = ctx->contended; ctx->contended = (struct drm_modeset_lock *)0; __ret_warn_on = (unsigned long )contended == (unsigned long )((struct drm_modeset_lock *)0); tmp = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_modeset_lock.c", 378); } else { } tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { return (0); } else { } drm_modeset_drop_locks(ctx); tmp___1 = modeset_lock(contended, ctx, (int )interruptible, 1); return (tmp___1); } } void drm_modeset_backoff(struct drm_modeset_acquire_ctx *ctx ) { { modeset_backoff(ctx, 0); return; } } static char const __kstrtab_drm_modeset_backoff[20U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'b', 'a', 'c', 'k', 'o', 'f', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_backoff ; struct kernel_symbol const __ksymtab_drm_modeset_backoff = {(unsigned long )(& drm_modeset_backoff), (char const *)(& __kstrtab_drm_modeset_backoff)}; int drm_modeset_backoff_interruptible(struct drm_modeset_acquire_ctx *ctx ) { int tmp ; { tmp = modeset_backoff(ctx, 1); return (tmp); } } static char const __kstrtab_drm_modeset_backoff_interruptible[34U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'b', 'a', 'c', 'k', 'o', 'f', 'f', '_', 'i', 'n', 't', 'e', 'r', 'r', 'u', 'p', 't', 'i', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_backoff_interruptible ; struct kernel_symbol const __ksymtab_drm_modeset_backoff_interruptible = {(unsigned long )(& drm_modeset_backoff_interruptible), (char const *)(& __kstrtab_drm_modeset_backoff_interruptible)}; int drm_modeset_lock(struct drm_modeset_lock *lock , struct drm_modeset_acquire_ctx *ctx ) { int tmp ; { if ((unsigned long )ctx != (unsigned long )((struct drm_modeset_acquire_ctx *)0)) { tmp = modeset_lock(lock, ctx, 0, 0); return (tmp); } else { } ww_mutex_lock(& lock->mutex, (struct ww_acquire_ctx *)0); return (0); } } static char const __kstrtab_drm_modeset_lock[17U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_lock ; struct kernel_symbol const __ksymtab_drm_modeset_lock = {(unsigned long )(& drm_modeset_lock), (char const *)(& __kstrtab_drm_modeset_lock)}; int drm_modeset_lock_interruptible(struct drm_modeset_lock *lock , struct drm_modeset_acquire_ctx *ctx ) { int tmp ; int tmp___0 ; { if ((unsigned long )ctx != (unsigned long )((struct drm_modeset_acquire_ctx *)0)) { tmp = modeset_lock(lock, ctx, 1, 0); return (tmp); } else { } tmp___0 = ww_mutex_lock_interruptible(& lock->mutex, (struct ww_acquire_ctx *)0); return (tmp___0); } } static char const __kstrtab_drm_modeset_lock_interruptible[31U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '_', 'i', 'n', 't', 'e', 'r', 'r', 'u', 'p', 't', 'i', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_lock_interruptible ; struct kernel_symbol const __ksymtab_drm_modeset_lock_interruptible = {(unsigned long )(& drm_modeset_lock_interruptible), (char const *)(& __kstrtab_drm_modeset_lock_interruptible)}; void drm_modeset_unlock(struct drm_modeset_lock *lock ) { { list_del_init(& lock->head); ww_mutex_unlock(& lock->mutex); return; } } static char const __kstrtab_drm_modeset_unlock[19U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'u', 'n', 'l', 'o', 'c', 'k', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_unlock ; struct kernel_symbol const __ksymtab_drm_modeset_unlock = {(unsigned long )(& drm_modeset_unlock), (char const *)(& __kstrtab_drm_modeset_unlock)}; int drm_modeset_lock_all_crtcs(struct drm_device *dev , struct drm_modeset_acquire_ctx *ctx ) { struct drm_mode_config *config ; struct drm_crtc *crtc ; struct drm_plane *plane ; int ret ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; struct list_head const *__mptr___1 ; struct list_head const *__mptr___2 ; { config = & dev->mode_config; ret = 0; __mptr = (struct list_head const *)config->crtc_list.next; crtc = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_38950; ldv_38949: ret = drm_modeset_lock(& crtc->mutex, ctx); if (ret != 0) { return (ret); } else { } __mptr___0 = (struct list_head const *)crtc->head.next; crtc = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38950: ; if ((unsigned long )(& crtc->head) != (unsigned long )(& config->crtc_list)) { goto ldv_38949; } else { } __mptr___1 = (struct list_head const *)config->plane_list.next; plane = (struct drm_plane *)__mptr___1 + 0xfffffffffffffff8UL; goto ldv_38957; ldv_38956: ret = drm_modeset_lock(& plane->mutex, ctx); if (ret != 0) { return (ret); } else { } __mptr___2 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___2 + 0xfffffffffffffff8UL; ldv_38957: ; if ((unsigned long )(& plane->head) != (unsigned long )(& config->plane_list)) { goto ldv_38956; } else { } return (0); } } static char const __kstrtab_drm_modeset_lock_all_crtcs[27U] = { 'd', 'r', 'm', '_', 'm', 'o', 'd', 'e', 's', 'e', 't', '_', 'l', 'o', 'c', 'k', '_', 'a', 'l', 'l', '_', 'c', 'r', 't', 'c', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_modeset_lock_all_crtcs ; struct kernel_symbol const __ksymtab_drm_modeset_lock_all_crtcs = {(unsigned long )(& drm_modeset_lock_all_crtcs), (char const *)(& __kstrtab_drm_modeset_lock_all_crtcs)}; bool ldv_queue_work_on_468(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_469(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_470(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_471(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_472(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; __inline static void *ERR_PTR(long error ) ; __inline static long PTR_ERR(void const *ptr ) ; __inline static bool IS_ERR(void const *ptr ) ; bool ldv_queue_work_on_482(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_484(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_483(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_486(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_485(struct workqueue_struct *ldv_func_arg1 ) ; struct drm_atomic_state *drm_atomic_state_alloc(struct drm_device *dev ) ; void drm_atomic_state_clear(struct drm_atomic_state *state ) ; void drm_atomic_state_free(struct drm_atomic_state *state ) ; int drm_atomic_state_init(struct drm_device *dev , struct drm_atomic_state *state ) ; void drm_atomic_state_default_clear(struct drm_atomic_state *state ) ; void drm_atomic_state_default_release(struct drm_atomic_state *state ) ; struct drm_crtc_state *drm_atomic_get_crtc_state(struct drm_atomic_state *state , struct drm_crtc *crtc ) ; int drm_atomic_crtc_set_property(struct drm_crtc *crtc , struct drm_crtc_state *state , struct drm_property *property , uint64_t val ) ; struct drm_plane_state *drm_atomic_get_plane_state(struct drm_atomic_state *state , struct drm_plane *plane ) ; int drm_atomic_plane_set_property(struct drm_plane *plane , struct drm_plane_state *state , struct drm_property *property , uint64_t val ) ; struct drm_connector_state *drm_atomic_get_connector_state(struct drm_atomic_state *state , struct drm_connector *connector ) ; int drm_atomic_connector_set_property(struct drm_connector *connector , struct drm_connector_state *state , struct drm_property *property , uint64_t val ) ; __inline static struct drm_crtc_state *drm_atomic_get_existing_crtc_state(struct drm_atomic_state *state , struct drm_crtc *crtc ) { unsigned int tmp ; { tmp = drm_crtc_index(crtc); return (*(state->crtc_states + (unsigned long )tmp)); } } __inline static struct drm_plane_state *drm_atomic_get_existing_plane_state(struct drm_atomic_state *state , struct drm_plane *plane ) { unsigned int tmp ; { tmp = drm_plane_index(plane); return (*(state->plane_states + (unsigned long )tmp)); } } int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state , struct drm_display_mode *mode ) ; int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state , struct drm_property_blob *blob ) ; int drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state , struct drm_crtc *crtc ) ; void drm_atomic_set_fb_for_plane(struct drm_plane_state *plane_state , struct drm_framebuffer *fb ) ; int drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state , struct drm_crtc *crtc ) ; int drm_atomic_add_affected_connectors(struct drm_atomic_state *state , struct drm_crtc *crtc ) ; int drm_atomic_add_affected_planes(struct drm_atomic_state *state , struct drm_crtc *crtc ) ; int drm_atomic_connectors_for_crtc(struct drm_atomic_state *state , struct drm_crtc *crtc ) ; void drm_atomic_legacy_backoff(struct drm_atomic_state *state ) ; int drm_atomic_check_only(struct drm_atomic_state *state ) ; int drm_atomic_commit(struct drm_atomic_state *state ) ; int drm_atomic_async_commit(struct drm_atomic_state *state ) ; __inline static bool drm_atomic_crtc_needs_modeset(struct drm_crtc_state *state ) { { return ((bool )((int )state->mode_changed || (int )state->active_changed)); } } void drm_atomic_state_default_release(struct drm_atomic_state *state ) { { kfree((void const *)state->connectors); kfree((void const *)state->connector_states); kfree((void const *)state->crtcs); kfree((void const *)state->crtc_states); kfree((void const *)state->planes); kfree((void const *)state->plane_states); return; } } static char const __kstrtab_drm_atomic_state_default_release[33U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'r', 'e', 'l', 'e', 'a', 's', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_default_release ; struct kernel_symbol const __ksymtab_drm_atomic_state_default_release = {(unsigned long )(& drm_atomic_state_default_release), (char const *)(& __kstrtab_drm_atomic_state_default_release)}; int drm_atomic_state_init(struct drm_device *dev , struct drm_atomic_state *state ) { int __var ; void *tmp ; void *tmp___0 ; void *tmp___1 ; void *tmp___2 ; void *tmp___3 ; void *tmp___4 ; long tmp___5 ; { state->allow_modeset = 1; __var = 0; state->num_connector = *((int volatile *)(& dev->mode_config.num_connector)); tmp = kcalloc((size_t )dev->mode_config.num_crtc, 8UL, 208U); state->crtcs = (struct drm_crtc **)tmp; if ((unsigned long )state->crtcs == (unsigned long )((struct drm_crtc **)0)) { goto fail; } else { } tmp___0 = kcalloc((size_t )dev->mode_config.num_crtc, 8UL, 208U); state->crtc_states = (struct drm_crtc_state **)tmp___0; if ((unsigned long )state->crtc_states == (unsigned long )((struct drm_crtc_state **)0)) { goto fail; } else { } tmp___1 = kcalloc((size_t )dev->mode_config.num_total_plane, 8UL, 208U); state->planes = (struct drm_plane **)tmp___1; if ((unsigned long )state->planes == (unsigned long )((struct drm_plane **)0)) { goto fail; } else { } tmp___2 = kcalloc((size_t )dev->mode_config.num_total_plane, 8UL, 208U); state->plane_states = (struct drm_plane_state **)tmp___2; if ((unsigned long )state->plane_states == (unsigned long )((struct drm_plane_state **)0)) { goto fail; } else { } tmp___3 = kcalloc((size_t )state->num_connector, 8UL, 208U); state->connectors = (struct drm_connector **)tmp___3; if ((unsigned long )state->connectors == (unsigned long )((struct drm_connector **)0)) { goto fail; } else { } tmp___4 = kcalloc((size_t )state->num_connector, 8UL, 208U); state->connector_states = (struct drm_connector_state **)tmp___4; if ((unsigned long )state->connector_states == (unsigned long )((struct drm_connector_state **)0)) { goto fail; } else { } state->dev = dev; tmp___5 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_atomic_state_init", "Allocated atomic state %p\n", state); } else { } return (0); fail: drm_atomic_state_default_release(state); return (-12); } } static char const __kstrtab_drm_atomic_state_init[22U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_init ; struct kernel_symbol const __ksymtab_drm_atomic_state_init = {(unsigned long )(& drm_atomic_state_init), (char const *)(& __kstrtab_drm_atomic_state_init)}; struct drm_atomic_state *drm_atomic_state_alloc(struct drm_device *dev ) { struct drm_mode_config *config ; struct drm_atomic_state *state ; void *tmp ; int tmp___0 ; struct drm_atomic_state *tmp___1 ; { config = & dev->mode_config; if ((unsigned long )(config->funcs)->atomic_state_alloc == (unsigned long )((struct drm_atomic_state *(*/* const */)(struct drm_device * ))0)) { tmp = kzalloc(80UL, 208U); state = (struct drm_atomic_state *)tmp; if ((unsigned long )state == (unsigned long )((struct drm_atomic_state *)0)) { return ((struct drm_atomic_state *)0); } else { } tmp___0 = drm_atomic_state_init(dev, state); if (tmp___0 < 0) { kfree((void const *)state); return ((struct drm_atomic_state *)0); } else { } return (state); } else { } tmp___1 = (*((config->funcs)->atomic_state_alloc))(dev); return (tmp___1); } } static char const __kstrtab_drm_atomic_state_alloc[23U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'a', 'l', 'l', 'o', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_alloc ; struct kernel_symbol const __ksymtab_drm_atomic_state_alloc = {(unsigned long )(& drm_atomic_state_alloc), (char const *)(& __kstrtab_drm_atomic_state_alloc)}; void drm_atomic_state_default_clear(struct drm_atomic_state *state ) { struct drm_device *dev ; struct drm_mode_config *config ; int i ; long tmp ; struct drm_connector *connector ; int __ret_warn_on ; bool tmp___0 ; int tmp___1 ; long tmp___2 ; struct drm_crtc *crtc ; struct drm_plane *plane ; { dev = state->dev; config = & dev->mode_config; tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_state_default_clear", "Clearing atomic state %p\n", state); } else { } i = 0; goto ldv_38993; ldv_38992: connector = *(state->connectors + (unsigned long )i); if ((unsigned long )connector == (unsigned long )((struct drm_connector *)0)) { goto ldv_38989; } else { } tmp___0 = drm_modeset_is_locked(& config->connection_mutex); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } __ret_warn_on = tmp___1; tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 156); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); (*((connector->funcs)->atomic_destroy_state))(connector, *(state->connector_states + (unsigned long )i)); *(state->connectors + (unsigned long )i) = (struct drm_connector *)0; *(state->connector_states + (unsigned long )i) = (struct drm_connector_state *)0; ldv_38989: i = i + 1; ldv_38993: ; if (state->num_connector > i) { goto ldv_38992; } else { } i = 0; goto ldv_38998; ldv_38997: crtc = *(state->crtcs + (unsigned long )i); if ((unsigned long )crtc == (unsigned long )((struct drm_crtc *)0)) { goto ldv_38996; } else { } (*((crtc->funcs)->atomic_destroy_state))(crtc, *(state->crtc_states + (unsigned long )i)); *(state->crtcs + (unsigned long )i) = (struct drm_crtc *)0; *(state->crtc_states + (unsigned long )i) = (struct drm_crtc_state *)0; ldv_38996: i = i + 1; ldv_38998: ; if (config->num_crtc > i) { goto ldv_38997; } else { } i = 0; goto ldv_39003; ldv_39002: plane = *(state->planes + (unsigned long )i); if ((unsigned long )plane == (unsigned long )((struct drm_plane *)0)) { goto ldv_39001; } else { } (*((plane->funcs)->atomic_destroy_state))(plane, *(state->plane_states + (unsigned long )i)); *(state->planes + (unsigned long )i) = (struct drm_plane *)0; *(state->plane_states + (unsigned long )i) = (struct drm_plane_state *)0; ldv_39001: i = i + 1; ldv_39003: ; if (config->num_total_plane > i) { goto ldv_39002; } else { } return; } } static char const __kstrtab_drm_atomic_state_default_clear[31U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'c', 'l', 'e', 'a', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_default_clear ; struct kernel_symbol const __ksymtab_drm_atomic_state_default_clear = {(unsigned long )(& drm_atomic_state_default_clear), (char const *)(& __kstrtab_drm_atomic_state_default_clear)}; void drm_atomic_state_clear(struct drm_atomic_state *state ) { struct drm_device *dev ; struct drm_mode_config *config ; { dev = state->dev; config = & dev->mode_config; if ((unsigned long )(config->funcs)->atomic_state_clear != (unsigned long )((void (*/* const */)(struct drm_atomic_state * ))0)) { (*((config->funcs)->atomic_state_clear))(state); } else { drm_atomic_state_default_clear(state); } return; } } static char const __kstrtab_drm_atomic_state_clear[23U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'c', 'l', 'e', 'a', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_clear ; struct kernel_symbol const __ksymtab_drm_atomic_state_clear = {(unsigned long )(& drm_atomic_state_clear), (char const *)(& __kstrtab_drm_atomic_state_clear)}; void drm_atomic_state_free(struct drm_atomic_state *state ) { struct drm_device *dev ; struct drm_mode_config *config ; long tmp ; { if ((unsigned long )state == (unsigned long )((struct drm_atomic_state *)0)) { return; } else { } dev = state->dev; config = & dev->mode_config; drm_atomic_state_clear(state); tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_state_free", "Freeing atomic state %p\n", state); } else { } if ((unsigned long )(config->funcs)->atomic_state_free != (unsigned long )((void (*/* const */)(struct drm_atomic_state * ))0)) { (*((config->funcs)->atomic_state_free))(state); } else { drm_atomic_state_default_release(state); kfree((void const *)state); } return; } } static char const __kstrtab_drm_atomic_state_free[22U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 't', 'a', 't', 'e', '_', 'f', 'r', 'e', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_state_free ; struct kernel_symbol const __ksymtab_drm_atomic_state_free = {(unsigned long )(& drm_atomic_state_free), (char const *)(& __kstrtab_drm_atomic_state_free)}; struct drm_crtc_state *drm_atomic_get_crtc_state(struct drm_atomic_state *state , struct drm_crtc *crtc ) { int ret ; int index ; unsigned int tmp ; struct drm_crtc_state *crtc_state ; void *tmp___0 ; void *tmp___1 ; long tmp___2 ; { tmp = drm_crtc_index(crtc); index = (int )tmp; crtc_state = drm_atomic_get_existing_crtc_state(state, crtc); if ((unsigned long )crtc_state != (unsigned long )((struct drm_crtc_state *)0)) { return (crtc_state); } else { } ret = drm_modeset_lock(& crtc->mutex, state->acquire_ctx); if (ret != 0) { tmp___0 = ERR_PTR((long )ret); return ((struct drm_crtc_state *)tmp___0); } else { } crtc_state = (*((crtc->funcs)->atomic_duplicate_state))(crtc); if ((unsigned long )crtc_state == (unsigned long )((struct drm_crtc_state *)0)) { tmp___1 = ERR_PTR(-12L); return ((struct drm_crtc_state *)tmp___1); } else { } *(state->crtc_states + (unsigned long )index) = crtc_state; *(state->crtcs + (unsigned long )index) = crtc; crtc_state->state = state; tmp___2 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_atomic_get_crtc_state", "Added [CRTC:%d] %p state to %p\n", crtc->base.id, crtc_state, state); } else { } return (crtc_state); } } static char const __kstrtab_drm_atomic_get_crtc_state[26U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'g', 'e', 't', '_', 'c', 'r', 't', 'c', '_', 's', 't', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_get_crtc_state ; struct kernel_symbol const __ksymtab_drm_atomic_get_crtc_state = {(unsigned long )(& drm_atomic_get_crtc_state), (char const *)(& __kstrtab_drm_atomic_get_crtc_state)}; int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state , struct drm_display_mode *mode ) { struct drm_mode_modeinfo umode ; int tmp ; long tmp___0 ; bool tmp___1 ; long tmp___2 ; long tmp___3 ; { if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { tmp = memcmp((void const *)(& state->mode), (void const *)mode, 208UL); if (tmp == 0) { return (0); } else { } } else { } if ((unsigned long )state->mode_blob != (unsigned long )((struct drm_property_blob *)0)) { drm_property_unreference_blob(state->mode_blob); } else { } state->mode_blob = (struct drm_property_blob *)0; if ((unsigned long )mode != (unsigned long )((struct drm_display_mode *)0)) { drm_mode_convert_to_umode(& umode, (struct drm_display_mode const *)mode); state->mode_blob = drm_property_create_blob((state->crtc)->dev, 68UL, (void const *)(& umode)); tmp___1 = IS_ERR((void const *)state->mode_blob); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)state->mode_blob); return ((int )tmp___0); } else { } drm_mode_copy(& state->mode, (struct drm_display_mode const *)mode); state->enable = 1; tmp___2 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_atomic_set_mode_for_crtc", "Set [MODE:%s] for CRTC state %p\n", (char *)(& mode->name), state); } else { } } else { memset((void *)(& state->mode), 0, 208UL); state->enable = 0; tmp___3 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___3 != 0L) { drm_ut_debug_printk("drm_atomic_set_mode_for_crtc", "Set [NOMODE] for CRTC state %p\n", state); } else { } } return (0); } } static char const __kstrtab_drm_atomic_set_mode_for_crtc[29U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 'e', 't', '_', 'm', 'o', 'd', 'e', '_', 'f', 'o', 'r', '_', 'c', 'r', 't', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_set_mode_for_crtc ; struct kernel_symbol const __ksymtab_drm_atomic_set_mode_for_crtc = {(unsigned long )(& drm_atomic_set_mode_for_crtc), (char const *)(& __kstrtab_drm_atomic_set_mode_for_crtc)}; int drm_atomic_set_mode_prop_for_crtc(struct drm_crtc_state *state , struct drm_property_blob *blob ) { int tmp ; long tmp___0 ; long tmp___1 ; { if ((unsigned long )state->mode_blob == (unsigned long )blob) { return (0); } else { } if ((unsigned long )state->mode_blob != (unsigned long )((struct drm_property_blob *)0)) { drm_property_unreference_blob(state->mode_blob); } else { } state->mode_blob = (struct drm_property_blob *)0; if ((unsigned long )blob != (unsigned long )((struct drm_property_blob *)0)) { if (blob->length != 68UL) { return (-22); } else { tmp = drm_mode_convert_umode(& state->mode, (struct drm_mode_modeinfo const *)(& blob->data)); if (tmp != 0) { return (-22); } else { } } state->mode_blob = drm_property_reference_blob(blob); state->enable = 1; tmp___0 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_atomic_set_mode_prop_for_crtc", "Set [MODE:%s] for CRTC state %p\n", (char *)(& state->mode.name), state); } else { } } else { memset((void *)(& state->mode), 0, 208UL); state->enable = 0; tmp___1 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_atomic_set_mode_prop_for_crtc", "Set [NOMODE] for CRTC state %p\n", state); } else { } } return (0); } } static char const __kstrtab_drm_atomic_set_mode_prop_for_crtc[34U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 'e', 't', '_', 'm', 'o', 'd', 'e', '_', 'p', 'r', 'o', 'p', '_', 'f', 'o', 'r', '_', 'c', 'r', 't', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_set_mode_prop_for_crtc ; struct kernel_symbol const __ksymtab_drm_atomic_set_mode_prop_for_crtc = {(unsigned long )(& drm_atomic_set_mode_prop_for_crtc), (char const *)(& __kstrtab_drm_atomic_set_mode_prop_for_crtc)}; int drm_atomic_crtc_set_property(struct drm_crtc *crtc , struct drm_crtc_state *state , struct drm_property *property , uint64_t val ) { struct drm_device *dev ; struct drm_mode_config *config ; int ret ; struct drm_property_blob *mode ; struct drm_property_blob *tmp ; int tmp___0 ; { dev = crtc->dev; config = & dev->mode_config; if ((unsigned long )config->prop_active == (unsigned long )property) { state->active = val != 0ULL; } else if ((unsigned long )config->prop_mode_id == (unsigned long )property) { tmp = drm_property_lookup_blob(dev, (uint32_t )val); mode = tmp; ret = drm_atomic_set_mode_prop_for_crtc(state, mode); if ((unsigned long )mode != (unsigned long )((struct drm_property_blob *)0)) { drm_property_unreference_blob(mode); } else { } return (ret); } else if ((unsigned long )(crtc->funcs)->atomic_set_property != (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_crtc_state * , struct drm_property * , uint64_t ))0)) { tmp___0 = (*((crtc->funcs)->atomic_set_property))(crtc, state, property, val); return (tmp___0); } else { return (-22); } return (0); } } static char const __kstrtab_drm_atomic_crtc_set_property[29U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'c', 'r', 't', 'c', '_', 's', 'e', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_crtc_set_property ; struct kernel_symbol const __ksymtab_drm_atomic_crtc_set_property = {(unsigned long )(& drm_atomic_crtc_set_property), (char const *)(& __kstrtab_drm_atomic_crtc_set_property)}; int drm_atomic_crtc_get_property(struct drm_crtc *crtc , struct drm_crtc_state const *state , struct drm_property *property , uint64_t *val ) { struct drm_device *dev ; struct drm_mode_config *config ; int tmp ; { dev = crtc->dev; config = & dev->mode_config; if ((unsigned long )config->prop_active == (unsigned long )property) { *val = (uint64_t )state->active; } else if ((unsigned long )config->prop_mode_id == (unsigned long )property) { *val = (unsigned long )state->mode_blob != (unsigned long )((struct drm_property_blob */* const */)0) ? (uint64_t )(state->mode_blob)->base.id : 0ULL; } else if ((unsigned long )(crtc->funcs)->atomic_get_property != (unsigned long )((int (*/* const */)(struct drm_crtc * , struct drm_crtc_state const * , struct drm_property * , uint64_t * ))0)) { tmp = (*((crtc->funcs)->atomic_get_property))(crtc, state, property, val); return (tmp); } else { return (-22); } return (0); } } static int drm_atomic_crtc_check(struct drm_crtc *crtc , struct drm_crtc_state *state ) { long tmp ; long tmp___0 ; int tmp___1 ; int __ret_warn_on ; long tmp___2 ; long tmp___3 ; long tmp___4 ; int tmp___5 ; int __ret_warn_on___0 ; long tmp___6 ; long tmp___7 ; { if ((int )state->active && ! state->enable) { tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_crtc_check", "[CRTC:%d] active without enabled\n", crtc->base.id); } else { } return (-22); } else { } tmp___1 = drm_core_check_feature(crtc->dev, 65536); if (tmp___1 != 0) { __ret_warn_on = (int )state->enable && (unsigned long )state->mode_blob == (unsigned long )((struct drm_property_blob *)0); tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 485); } else { } tmp___3 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___3 != 0L) { tmp___0 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_atomic_crtc_check", "[CRTC:%d] enabled without mode blob\n", crtc->base.id); } else { } return (-22); } else { } } else { } tmp___5 = drm_core_check_feature(crtc->dev, 65536); if (tmp___5 != 0) { __ret_warn_on___0 = ! state->enable && (unsigned long )state->mode_blob != (unsigned long )((struct drm_property_blob *)0); tmp___6 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___6 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 492); } else { } tmp___7 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___7 != 0L) { tmp___4 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_atomic_crtc_check", "[CRTC:%d] disabled with mode blob\n", crtc->base.id); } else { } return (-22); } else { } } else { } return (0); } } struct drm_plane_state *drm_atomic_get_plane_state(struct drm_atomic_state *state , struct drm_plane *plane ) { int ret ; int index ; unsigned int tmp ; struct drm_plane_state *plane_state ; void *tmp___0 ; void *tmp___1 ; long tmp___2 ; struct drm_crtc_state *crtc_state ; void *tmp___3 ; bool tmp___4 ; { tmp = drm_plane_index(plane); index = (int )tmp; plane_state = drm_atomic_get_existing_plane_state(state, plane); if ((unsigned long )plane_state != (unsigned long )((struct drm_plane_state *)0)) { return (plane_state); } else { } ret = drm_modeset_lock(& plane->mutex, state->acquire_ctx); if (ret != 0) { tmp___0 = ERR_PTR((long )ret); return ((struct drm_plane_state *)tmp___0); } else { } plane_state = (*((plane->funcs)->atomic_duplicate_state))(plane); if ((unsigned long )plane_state == (unsigned long )((struct drm_plane_state *)0)) { tmp___1 = ERR_PTR(-12L); return ((struct drm_plane_state *)tmp___1); } else { } *(state->plane_states + (unsigned long )index) = plane_state; *(state->planes + (unsigned long )index) = plane; plane_state->state = state; tmp___2 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_atomic_get_plane_state", "Added [PLANE:%d] %p state to %p\n", plane->base.id, plane_state, state); } else { } if ((unsigned long )plane_state->crtc != (unsigned long )((struct drm_crtc *)0)) { crtc_state = drm_atomic_get_crtc_state(state, plane_state->crtc); tmp___4 = IS_ERR((void const *)crtc_state); if ((int )tmp___4) { tmp___3 = ERR_CAST((void const *)crtc_state); return ((struct drm_plane_state *)tmp___3); } else { } } else { } return (plane_state); } } static char const __kstrtab_drm_atomic_get_plane_state[27U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'g', 'e', 't', '_', 'p', 'l', 'a', 'n', 'e', '_', 's', 't', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_get_plane_state ; struct kernel_symbol const __ksymtab_drm_atomic_get_plane_state = {(unsigned long )(& drm_atomic_get_plane_state), (char const *)(& __kstrtab_drm_atomic_get_plane_state)}; int drm_atomic_plane_set_property(struct drm_plane *plane , struct drm_plane_state *state , struct drm_property *property , uint64_t val ) { struct drm_device *dev ; struct drm_mode_config *config ; struct drm_framebuffer *fb ; struct drm_framebuffer *tmp ; struct drm_crtc *crtc ; struct drm_crtc *tmp___0 ; int tmp___1 ; int64_t tmp___2 ; int64_t tmp___3 ; int tmp___4 ; { dev = plane->dev; config = & dev->mode_config; if ((unsigned long )config->prop_fb_id == (unsigned long )property) { tmp = drm_framebuffer_lookup(dev, (uint32_t )val); fb = tmp; drm_atomic_set_fb_for_plane(state, fb); if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(fb); } else { } } else if ((unsigned long )config->prop_crtc_id == (unsigned long )property) { tmp___0 = drm_crtc_find(dev, (uint32_t )val); crtc = tmp___0; tmp___1 = drm_atomic_set_crtc_for_plane(state, crtc); return (tmp___1); } else if ((unsigned long )config->prop_crtc_x == (unsigned long )property) { tmp___2 = U642I64(val); state->crtc_x = (int32_t )tmp___2; } else if ((unsigned long )config->prop_crtc_y == (unsigned long )property) { tmp___3 = U642I64(val); state->crtc_y = (int32_t )tmp___3; } else if ((unsigned long )config->prop_crtc_w == (unsigned long )property) { state->crtc_w = (uint32_t )val; } else if ((unsigned long )config->prop_crtc_h == (unsigned long )property) { state->crtc_h = (uint32_t )val; } else if ((unsigned long )config->prop_src_x == (unsigned long )property) { state->src_x = (uint32_t )val; } else if ((unsigned long )config->prop_src_y == (unsigned long )property) { state->src_y = (uint32_t )val; } else if ((unsigned long )config->prop_src_w == (unsigned long )property) { state->src_w = (uint32_t )val; } else if ((unsigned long )config->prop_src_h == (unsigned long )property) { state->src_h = (uint32_t )val; } else if ((unsigned long )config->rotation_property == (unsigned long )property) { state->rotation = (unsigned int )val; } else if ((unsigned long )(plane->funcs)->atomic_set_property != (unsigned long )((int (*/* const */)(struct drm_plane * , struct drm_plane_state * , struct drm_property * , uint64_t ))0)) { tmp___4 = (*((plane->funcs)->atomic_set_property))(plane, state, property, val); return (tmp___4); } else { return (-22); } return (0); } } static char const __kstrtab_drm_atomic_plane_set_property[30U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'p', 'l', 'a', 'n', 'e', '_', 's', 'e', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_plane_set_property ; struct kernel_symbol const __ksymtab_drm_atomic_plane_set_property = {(unsigned long )(& drm_atomic_plane_set_property), (char const *)(& __kstrtab_drm_atomic_plane_set_property)}; static int drm_atomic_plane_get_property(struct drm_plane *plane , struct drm_plane_state const *state , struct drm_property *property , uint64_t *val ) { struct drm_device *dev ; struct drm_mode_config *config ; int tmp ; { dev = plane->dev; config = & dev->mode_config; if ((unsigned long )config->prop_fb_id == (unsigned long )property) { *val = (unsigned long )state->fb != (unsigned long )((struct drm_framebuffer */* const */)0) ? (uint64_t )(state->fb)->base.id : 0ULL; } else if ((unsigned long )config->prop_crtc_id == (unsigned long )property) { *val = (unsigned long )state->crtc != (unsigned long )((struct drm_crtc */* const */)0) ? (uint64_t )(state->crtc)->base.id : 0ULL; } else if ((unsigned long )config->prop_crtc_x == (unsigned long )property) { *val = I642U64((int64_t )state->crtc_x); } else if ((unsigned long )config->prop_crtc_y == (unsigned long )property) { *val = I642U64((int64_t )state->crtc_y); } else if ((unsigned long )config->prop_crtc_w == (unsigned long )property) { *val = (uint64_t )state->crtc_w; } else if ((unsigned long )config->prop_crtc_h == (unsigned long )property) { *val = (uint64_t )state->crtc_h; } else if ((unsigned long )config->prop_src_x == (unsigned long )property) { *val = (uint64_t )state->src_x; } else if ((unsigned long )config->prop_src_y == (unsigned long )property) { *val = (uint64_t )state->src_y; } else if ((unsigned long )config->prop_src_w == (unsigned long )property) { *val = (uint64_t )state->src_w; } else if ((unsigned long )config->prop_src_h == (unsigned long )property) { *val = (uint64_t )state->src_h; } else if ((unsigned long )config->rotation_property == (unsigned long )property) { *val = (uint64_t )state->rotation; } else if ((unsigned long )(plane->funcs)->atomic_get_property != (unsigned long )((int (*/* const */)(struct drm_plane * , struct drm_plane_state const * , struct drm_property * , uint64_t * ))0)) { tmp = (*((plane->funcs)->atomic_get_property))(plane, state, property, val); return (tmp); } else { return (-22); } return (0); } } static int drm_atomic_plane_check(struct drm_plane *plane , struct drm_plane_state *state ) { unsigned int fb_width ; unsigned int fb_height ; int ret ; long tmp ; long tmp___0 ; int __ret_warn_on ; long tmp___1 ; long tmp___2 ; int __ret_warn_on___0 ; long tmp___3 ; long tmp___4 ; long tmp___5 ; uint32_t tmp___6 ; char const *tmp___7 ; long tmp___8 ; long tmp___9 ; long tmp___10 ; { __ret_warn_on___0 = (unsigned long )state->crtc != (unsigned long )((struct drm_crtc *)0) && (unsigned long )state->fb == (unsigned long )((struct drm_framebuffer *)0); tmp___3 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___3 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 677); } else { } tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_plane_check", "CRTC set but no FB\n"); } else { } return (-22); } else { __ret_warn_on = (unsigned long )state->fb != (unsigned long )((struct drm_framebuffer *)0) && (unsigned long )state->crtc == (unsigned long )((struct drm_crtc *)0); tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 680); } else { } tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { tmp___0 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_atomic_plane_check", "FB set but no CRTC\n"); } else { } return (-22); } else { } } if ((unsigned long )state->crtc == (unsigned long )((struct drm_crtc *)0)) { return (0); } else { } tmp___6 = drm_crtc_mask(state->crtc); if ((plane->possible_crtcs & tmp___6) == 0U) { tmp___5 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___5 != 0L) { drm_ut_debug_printk("drm_atomic_plane_check", "Invalid crtc for plane\n"); } else { } return (-22); } else { } ret = drm_plane_check_pixel_format((struct drm_plane const *)plane, (state->fb)->pixel_format); if (ret != 0) { tmp___8 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___8 != 0L) { tmp___7 = drm_get_format_name((state->fb)->pixel_format); drm_ut_debug_printk("drm_atomic_plane_check", "Invalid pixel format %s\n", tmp___7); } else { } return (ret); } else { } if ((((int )state->crtc_w < 0 || state->crtc_x > 2147483647 - (int )state->crtc_w) || (int )state->crtc_h < 0) || state->crtc_y > 2147483647 - (int )state->crtc_h) { tmp___9 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___9 != 0L) { drm_ut_debug_printk("drm_atomic_plane_check", "Invalid CRTC coordinates %ux%u+%d+%d\n", state->crtc_w, state->crtc_h, state->crtc_x, state->crtc_y); } else { } return (-34); } else { } fb_width = (state->fb)->width << 16; fb_height = (state->fb)->height << 16; if (((state->src_w > fb_width || state->src_x > fb_width - state->src_w) || state->src_h > fb_height) || state->src_y > fb_height - state->src_h) { tmp___10 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___10 != 0L) { drm_ut_debug_printk("drm_atomic_plane_check", "Invalid source coordinates %u.%06ux%u.%06u+%u.%06u+%u.%06u\n", state->src_w >> 16, (state->src_w & 65535U) * 15625U >> 10, state->src_h >> 16, (state->src_h & 65535U) * 15625U >> 10, state->src_x >> 16, (state->src_x & 65535U) * 15625U >> 10, state->src_y >> 16, (state->src_y & 65535U) * 15625U >> 10); } else { } return (-28); } else { } return (0); } } struct drm_connector_state *drm_atomic_get_connector_state(struct drm_atomic_state *state , struct drm_connector *connector ) { int ret ; int index ; struct drm_mode_config *config ; struct drm_connector_state *connector_state ; void *tmp ; unsigned int tmp___0 ; long tmp___1 ; void *tmp___2 ; void *tmp___3 ; long tmp___4 ; struct drm_crtc_state *crtc_state ; void *tmp___5 ; bool tmp___6 ; { config = & (connector->dev)->mode_config; ret = drm_modeset_lock(& config->connection_mutex, state->acquire_ctx); if (ret != 0) { tmp = ERR_PTR((long )ret); return ((struct drm_connector_state *)tmp); } else { } tmp___0 = drm_connector_index(connector); index = (int )tmp___0; if (state->num_connector <= index) { tmp___1 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_atomic_get_connector_state", "Hot-added connector would overflow state array, restarting\n"); } else { } tmp___2 = ERR_PTR(-11L); return ((struct drm_connector_state *)tmp___2); } else { } if ((unsigned long )*(state->connector_states + (unsigned long )index) != (unsigned long )((struct drm_connector_state *)0)) { return (*(state->connector_states + (unsigned long )index)); } else { } connector_state = (*((connector->funcs)->atomic_duplicate_state))(connector); if ((unsigned long )connector_state == (unsigned long )((struct drm_connector_state *)0)) { tmp___3 = ERR_PTR(-12L); return ((struct drm_connector_state *)tmp___3); } else { } *(state->connector_states + (unsigned long )index) = connector_state; *(state->connectors + (unsigned long )index) = connector; connector_state->state = state; tmp___4 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___4 != 0L) { drm_ut_debug_printk("drm_atomic_get_connector_state", "Added [CONNECTOR:%d] %p state to %p\n", connector->base.id, connector_state, state); } else { } if ((unsigned long )connector_state->crtc != (unsigned long )((struct drm_crtc *)0)) { crtc_state = drm_atomic_get_crtc_state(state, connector_state->crtc); tmp___6 = IS_ERR((void const *)crtc_state); if ((int )tmp___6) { tmp___5 = ERR_CAST((void const *)crtc_state); return ((struct drm_connector_state *)tmp___5); } else { } } else { } return (connector_state); } } static char const __kstrtab_drm_atomic_get_connector_state[31U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'g', 'e', 't', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_get_connector_state ; struct kernel_symbol const __ksymtab_drm_atomic_get_connector_state = {(unsigned long )(& drm_atomic_get_connector_state), (char const *)(& __kstrtab_drm_atomic_get_connector_state)}; int drm_atomic_connector_set_property(struct drm_connector *connector , struct drm_connector_state *state , struct drm_property *property , uint64_t val ) { struct drm_device *dev ; struct drm_mode_config *config ; struct drm_crtc *crtc ; struct drm_crtc *tmp ; int tmp___0 ; int tmp___1 ; { dev = connector->dev; config = & dev->mode_config; if ((unsigned long )config->prop_crtc_id == (unsigned long )property) { tmp = drm_crtc_find(dev, (uint32_t )val); crtc = tmp; tmp___0 = drm_atomic_set_crtc_for_connector(state, crtc); return (tmp___0); } else if ((unsigned long )config->dpms_property == (unsigned long )property) { return (-22); } else if ((unsigned long )(connector->funcs)->atomic_set_property != (unsigned long )((int (*/* const */)(struct drm_connector * , struct drm_connector_state * , struct drm_property * , uint64_t ))0)) { tmp___1 = (*((connector->funcs)->atomic_set_property))(connector, state, property, val); return (tmp___1); } else { return (-22); } } } static char const __kstrtab_drm_atomic_connector_set_property[34U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '_', 's', 'e', 't', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_connector_set_property ; struct kernel_symbol const __ksymtab_drm_atomic_connector_set_property = {(unsigned long )(& drm_atomic_connector_set_property), (char const *)(& __kstrtab_drm_atomic_connector_set_property)}; static int drm_atomic_connector_get_property(struct drm_connector *connector , struct drm_connector_state const *state , struct drm_property *property , uint64_t *val ) { struct drm_device *dev ; struct drm_mode_config *config ; int tmp ; { dev = connector->dev; config = & dev->mode_config; if ((unsigned long )config->prop_crtc_id == (unsigned long )property) { *val = (unsigned long )state->crtc != (unsigned long )((struct drm_crtc */* const */)0) ? (uint64_t )(state->crtc)->base.id : 0ULL; } else if ((unsigned long )config->dpms_property == (unsigned long )property) { *val = (uint64_t )connector->dpms; } else if ((unsigned long )(connector->funcs)->atomic_get_property != (unsigned long )((int (*/* const */)(struct drm_connector * , struct drm_connector_state const * , struct drm_property * , uint64_t * ))0)) { tmp = (*((connector->funcs)->atomic_get_property))(connector, state, property, val); return (tmp); } else { return (-22); } return (0); } } int drm_atomic_get_property(struct drm_mode_object *obj , struct drm_property *property , uint64_t *val ) { struct drm_device *dev ; int ret ; struct drm_connector *connector ; struct drm_mode_object const *__mptr ; int __ret_warn_on ; bool tmp ; int tmp___0 ; long tmp___1 ; struct drm_crtc *crtc ; struct drm_mode_object const *__mptr___0 ; int __ret_warn_on___0 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; struct drm_plane *plane ; struct drm_mode_object const *__mptr___1 ; int __ret_warn_on___1 ; bool tmp___5 ; int tmp___6 ; long tmp___7 ; { dev = property->dev; switch (obj->type) { case 3233857728U: __mptr = (struct drm_mode_object const *)obj; connector = (struct drm_connector *)__mptr + 0xffffffffffffffd8UL; tmp = drm_modeset_is_locked(& dev->mode_config.connection_mutex); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } __ret_warn_on = tmp___0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 883); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); ret = drm_atomic_connector_get_property(connector, (struct drm_connector_state const *)connector->state, property, val); goto ldv_39232; case 3435973836U: __mptr___0 = (struct drm_mode_object const *)obj; crtc = (struct drm_crtc *)__mptr___0 + 0xffffffffffffff20UL; tmp___2 = drm_modeset_is_locked(& crtc->mutex); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } __ret_warn_on___0 = tmp___3; tmp___4 = ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); if (tmp___4 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 890); } else { } ldv__builtin_expect(__ret_warn_on___0 != 0, 0L); ret = drm_atomic_crtc_get_property(crtc, (struct drm_crtc_state const *)crtc->state, property, val); goto ldv_39232; case 4008636142U: __mptr___1 = (struct drm_mode_object const *)obj; plane = (struct drm_plane *)__mptr___1 + 0xffffffffffffff28UL; tmp___5 = drm_modeset_is_locked(& plane->mutex); if (tmp___5) { tmp___6 = 0; } else { tmp___6 = 1; } __ret_warn_on___1 = tmp___6; tmp___7 = ldv__builtin_expect(__ret_warn_on___1 != 0, 0L); if (tmp___7 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 897); } else { } ldv__builtin_expect(__ret_warn_on___1 != 0, 0L); ret = drm_atomic_plane_get_property(plane, (struct drm_plane_state const *)plane->state, property, val); goto ldv_39232; default: ret = -22; goto ldv_39232; } ldv_39232: ; return (ret); } } int drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state , struct drm_crtc *crtc ) { struct drm_plane *plane ; struct drm_crtc_state *crtc_state ; long tmp ; int __ret_warn_on ; bool tmp___0 ; long tmp___1 ; long tmp___2 ; unsigned int tmp___3 ; long tmp___4 ; bool tmp___5 ; unsigned int tmp___6 ; long tmp___7 ; long tmp___8 ; { plane = plane_state->plane; if ((unsigned long )plane_state->crtc != (unsigned long )((struct drm_crtc *)0)) { crtc_state = drm_atomic_get_crtc_state(plane_state->state, plane_state->crtc); tmp___0 = IS_ERR((void const *)crtc_state); __ret_warn_on = (int )tmp___0; tmp___1 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___1 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 934); } else { } tmp___2 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___2 != 0L) { tmp = PTR_ERR((void const *)crtc_state); return ((int )tmp); } else { } tmp___3 = drm_plane_index(plane); crtc_state->plane_mask = crtc_state->plane_mask & (u32 )(~ (1 << (int )tmp___3)); } else { } plane_state->crtc = crtc; if ((unsigned long )crtc != (unsigned long )((struct drm_crtc *)0)) { crtc_state = drm_atomic_get_crtc_state(plane_state->state, crtc); tmp___5 = IS_ERR((void const *)crtc_state); if ((int )tmp___5) { tmp___4 = PTR_ERR((void const *)crtc_state); return ((int )tmp___4); } else { } tmp___6 = drm_plane_index(plane); crtc_state->plane_mask = crtc_state->plane_mask | (u32 )(1 << (int )tmp___6); } else { } if ((unsigned long )crtc != (unsigned long )((struct drm_crtc *)0)) { tmp___7 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___7 != 0L) { drm_ut_debug_printk("drm_atomic_set_crtc_for_plane", "Link plane state %p to [CRTC:%d]\n", plane_state, crtc->base.id); } else { } } else { tmp___8 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___8 != 0L) { drm_ut_debug_printk("drm_atomic_set_crtc_for_plane", "Link plane state %p to [NOCRTC]\n", plane_state); } else { } } return (0); } } static char const __kstrtab_drm_atomic_set_crtc_for_plane[30U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 'e', 't', '_', 'c', 'r', 't', 'c', '_', 'f', 'o', 'r', '_', 'p', 'l', 'a', 'n', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_set_crtc_for_plane ; struct kernel_symbol const __ksymtab_drm_atomic_set_crtc_for_plane = {(unsigned long )(& drm_atomic_set_crtc_for_plane), (char const *)(& __kstrtab_drm_atomic_set_crtc_for_plane)}; void drm_atomic_set_fb_for_plane(struct drm_plane_state *plane_state , struct drm_framebuffer *fb ) { long tmp ; long tmp___0 ; { if ((unsigned long )plane_state->fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(plane_state->fb); } else { } if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_reference(fb); } else { } plane_state->fb = fb; if ((unsigned long )fb != (unsigned long )((struct drm_framebuffer *)0)) { tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_set_fb_for_plane", "Set [FB:%d] for plane state %p\n", fb->base.id, plane_state); } else { } } else { tmp___0 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_atomic_set_fb_for_plane", "Set [NOFB] for plane state %p\n", plane_state); } else { } } return; } } static char const __kstrtab_drm_atomic_set_fb_for_plane[28U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 'e', 't', '_', 'f', 'b', '_', 'f', 'o', 'r', '_', 'p', 'l', 'a', 'n', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_set_fb_for_plane ; struct kernel_symbol const __ksymtab_drm_atomic_set_fb_for_plane = {(unsigned long )(& drm_atomic_set_fb_for_plane), (char const *)(& __kstrtab_drm_atomic_set_fb_for_plane)}; int drm_atomic_set_crtc_for_connector(struct drm_connector_state *conn_state , struct drm_crtc *crtc ) { struct drm_crtc_state *crtc_state ; long tmp ; bool tmp___0 ; long tmp___1 ; long tmp___2 ; { if ((unsigned long )crtc != (unsigned long )((struct drm_crtc *)0)) { crtc_state = drm_atomic_get_crtc_state(conn_state->state, crtc); tmp___0 = IS_ERR((void const *)crtc_state); if ((int )tmp___0) { tmp = PTR_ERR((void const *)crtc_state); return ((int )tmp); } else { } } else { } conn_state->crtc = crtc; if ((unsigned long )crtc != (unsigned long )((struct drm_crtc *)0)) { tmp___1 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_atomic_set_crtc_for_connector", "Link connector state %p to [CRTC:%d]\n", conn_state, crtc->base.id); } else { } } else { tmp___2 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_atomic_set_crtc_for_connector", "Link connector state %p to [NOCRTC]\n", conn_state); } else { } } return (0); } } static char const __kstrtab_drm_atomic_set_crtc_for_connector[34U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 's', 'e', 't', '_', 'c', 'r', 't', 'c', '_', 'f', 'o', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_set_crtc_for_connector ; struct kernel_symbol const __ksymtab_drm_atomic_set_crtc_for_connector = {(unsigned long )(& drm_atomic_set_crtc_for_connector), (char const *)(& __kstrtab_drm_atomic_set_crtc_for_connector)}; int drm_atomic_add_affected_connectors(struct drm_atomic_state *state , struct drm_crtc *crtc ) { struct drm_mode_config *config ; struct drm_connector *connector ; struct drm_connector_state *conn_state ; int ret ; long tmp ; struct list_head const *__mptr ; long tmp___0 ; bool tmp___1 ; struct list_head const *__mptr___0 ; { config = & (state->dev)->mode_config; ret = drm_modeset_lock(& config->connection_mutex, state->acquire_ctx); if (ret != 0) { return (ret); } else { } tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_add_affected_connectors", "Adding all current connectors for [CRTC:%d] to %p\n", crtc->base.id, state); } else { } __mptr = (struct list_head const *)config->connector_list.next; connector = (struct drm_connector *)__mptr + 0xffffffffffffffe8UL; goto ldv_39305; ldv_39304: ; if ((unsigned long )(connector->state)->crtc != (unsigned long )crtc) { goto ldv_39303; } else { } conn_state = drm_atomic_get_connector_state(state, connector); tmp___1 = IS_ERR((void const *)conn_state); if ((int )tmp___1) { tmp___0 = PTR_ERR((void const *)conn_state); return ((int )tmp___0); } else { } ldv_39303: __mptr___0 = (struct list_head const *)connector->head.next; connector = (struct drm_connector *)__mptr___0 + 0xffffffffffffffe8UL; ldv_39305: ; if ((unsigned long )(& connector->head) != (unsigned long )(& config->connector_list)) { goto ldv_39304; } else { } return (0); } } static char const __kstrtab_drm_atomic_add_affected_connectors[35U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'a', 'd', 'd', '_', 'a', 'f', 'f', 'e', 'c', 't', 'e', 'd', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_add_affected_connectors ; struct kernel_symbol const __ksymtab_drm_atomic_add_affected_connectors = {(unsigned long )(& drm_atomic_add_affected_connectors), (char const *)(& __kstrtab_drm_atomic_add_affected_connectors)}; int drm_atomic_add_affected_planes(struct drm_atomic_state *state , struct drm_crtc *crtc ) { struct drm_plane *plane ; int __ret_warn_on ; struct drm_crtc_state *tmp ; long tmp___0 ; struct list_head const *__mptr ; struct drm_plane_state *plane_state ; struct drm_plane_state *tmp___1 ; long tmp___2 ; bool tmp___3 ; unsigned int tmp___4 ; struct list_head const *__mptr___0 ; { tmp = drm_atomic_get_existing_crtc_state(state, crtc); __ret_warn_on = (unsigned long )tmp == (unsigned long )((struct drm_crtc_state *)0); tmp___0 = ldv__builtin_expect(__ret_warn_on != 0, 0L); if (tmp___0 != 0L) { warn_slowpath_null("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 1105); } else { } ldv__builtin_expect(__ret_warn_on != 0, 0L); __mptr = (struct list_head const *)(state->dev)->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr + 0xfffffffffffffff8UL; goto ldv_39328; ldv_39327: tmp___4 = drm_plane_index(plane); if (((crtc->state)->plane_mask & (u32 )(1 << (int )tmp___4)) != 0U) { tmp___1 = drm_atomic_get_plane_state(state, plane); plane_state = tmp___1; tmp___3 = IS_ERR((void const *)plane_state); if ((int )tmp___3) { tmp___2 = PTR_ERR((void const *)plane_state); return ((int )tmp___2); } else { } } else { } __mptr___0 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; ldv_39328: ; if ((unsigned long )(& plane->head) != (unsigned long )(& (state->dev)->mode_config.plane_list)) { goto ldv_39327; } else { } return (0); } } static char const __kstrtab_drm_atomic_add_affected_planes[31U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'a', 'd', 'd', '_', 'a', 'f', 'f', 'e', 'c', 't', 'e', 'd', '_', 'p', 'l', 'a', 'n', 'e', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_add_affected_planes ; struct kernel_symbol const __ksymtab_drm_atomic_add_affected_planes = {(unsigned long )(& drm_atomic_add_affected_planes), (char const *)(& __kstrtab_drm_atomic_add_affected_planes)}; int drm_atomic_connectors_for_crtc(struct drm_atomic_state *state , struct drm_crtc *crtc ) { struct drm_connector *connector ; struct drm_connector_state *conn_state ; int i ; int num_connected_connectors ; long tmp ; { num_connected_connectors = 0; i = 0; goto ldv_39347; ldv_39346: ; if ((unsigned long )connector != (unsigned long )((struct drm_connector *)0)) { if ((unsigned long )conn_state->crtc == (unsigned long )crtc) { num_connected_connectors = num_connected_connectors + 1; } else { } } else { } i = i + 1; ldv_39347: ; if (state->num_connector > i) { connector = *(state->connectors + (unsigned long )i); conn_state = *(state->connector_states + (unsigned long )i); goto ldv_39346; } else { } tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_connectors_for_crtc", "State %p has %i connectors for [CRTC:%d]\n", state, num_connected_connectors, crtc->base.id); } else { } return (num_connected_connectors); } } static char const __kstrtab_drm_atomic_connectors_for_crtc[31U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 's', '_', 'f', 'o', 'r', '_', 'c', 'r', 't', 'c', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_connectors_for_crtc ; struct kernel_symbol const __ksymtab_drm_atomic_connectors_for_crtc = {(unsigned long )(& drm_atomic_connectors_for_crtc), (char const *)(& __kstrtab_drm_atomic_connectors_for_crtc)}; void drm_atomic_legacy_backoff(struct drm_atomic_state *state ) { int ret ; { retry: drm_modeset_backoff(state->acquire_ctx); ret = drm_modeset_lock(& (state->dev)->mode_config.connection_mutex, state->acquire_ctx); if (ret != 0) { goto retry; } else { } ret = drm_modeset_lock_all_crtcs(state->dev, state->acquire_ctx); if (ret != 0) { goto retry; } else { } return; } } static char const __kstrtab_drm_atomic_legacy_backoff[26U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'l', 'e', 'g', 'a', 'c', 'y', '_', 'b', 'a', 'c', 'k', 'o', 'f', 'f', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_legacy_backoff ; struct kernel_symbol const __ksymtab_drm_atomic_legacy_backoff = {(unsigned long )(& drm_atomic_legacy_backoff), (char const *)(& __kstrtab_drm_atomic_legacy_backoff)}; int drm_atomic_check_only(struct drm_atomic_state *state ) { struct drm_device *dev ; struct drm_mode_config *config ; struct drm_plane *plane ; struct drm_plane_state *plane_state ; struct drm_crtc *crtc ; struct drm_crtc_state *crtc_state ; int i ; int ret ; long tmp ; long tmp___0 ; long tmp___1 ; long tmp___2 ; bool tmp___3 ; { dev = state->dev; config = & dev->mode_config; ret = 0; tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_check_only", "checking %p\n", state); } else { } i = 0; goto ldv_39383; ldv_39382: ; if ((unsigned long )plane_state != (unsigned long )((struct drm_plane_state *)0)) { ret = drm_atomic_plane_check(plane, plane_state); if (ret != 0) { tmp___0 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___0 != 0L) { drm_ut_debug_printk("drm_atomic_check_only", "[PLANE:%d] atomic core check failed\n", plane->base.id); } else { } return (ret); } else { } } else { } i = i + 1; ldv_39383: ; if ((state->dev)->mode_config.num_total_plane > i) { plane = *(state->planes + (unsigned long )i); plane_state = *(state->plane_states + (unsigned long )i); goto ldv_39382; } else { } i = 0; goto ldv_39386; ldv_39385: ; if ((unsigned long )crtc_state != (unsigned long )((struct drm_crtc_state *)0)) { ret = drm_atomic_crtc_check(crtc, crtc_state); if (ret != 0) { tmp___1 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_atomic_check_only", "[CRTC:%d] atomic core check failed\n", crtc->base.id); } else { } return (ret); } else { } } else { } i = i + 1; ldv_39386: ; if ((state->dev)->mode_config.num_crtc > i) { crtc = *(state->crtcs + (unsigned long )i); crtc_state = *(state->crtc_states + (unsigned long )i); goto ldv_39385; } else { } if ((unsigned long )(config->funcs)->atomic_check != (unsigned long )((int (*/* const */)(struct drm_device * , struct drm_atomic_state * ))0)) { ret = (*((config->funcs)->atomic_check))(state->dev, state); } else { } if (! state->allow_modeset) { i = 0; goto ldv_39389; ldv_39388: ; if ((unsigned long )crtc_state != (unsigned long )((struct drm_crtc_state *)0)) { tmp___3 = drm_atomic_crtc_needs_modeset(crtc_state); if ((int )tmp___3) { tmp___2 = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp___2 != 0L) { drm_ut_debug_printk("drm_atomic_check_only", "[CRTC:%d] requires full modeset\n", crtc->base.id); } else { } return (-22); } else { } } else { } i = i + 1; ldv_39389: ; if ((state->dev)->mode_config.num_crtc > i) { crtc = *(state->crtcs + (unsigned long )i); crtc_state = *(state->crtc_states + (unsigned long )i); goto ldv_39388; } else { } } else { } return (ret); } } static char const __kstrtab_drm_atomic_check_only[22U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'c', 'h', 'e', 'c', 'k', '_', 'o', 'n', 'l', 'y', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_check_only ; struct kernel_symbol const __ksymtab_drm_atomic_check_only = {(unsigned long )(& drm_atomic_check_only), (char const *)(& __kstrtab_drm_atomic_check_only)}; int drm_atomic_commit(struct drm_atomic_state *state ) { struct drm_mode_config *config ; int ret ; long tmp ; int tmp___0 ; { config = & (state->dev)->mode_config; ret = drm_atomic_check_only(state); if (ret != 0) { return (ret); } else { } tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_commit", "commiting %p\n", state); } else { } tmp___0 = (*((config->funcs)->atomic_commit))(state->dev, state, 0); return (tmp___0); } } static char const __kstrtab_drm_atomic_commit[18U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'c', 'o', 'm', 'm', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_commit ; struct kernel_symbol const __ksymtab_drm_atomic_commit = {(unsigned long )(& drm_atomic_commit), (char const *)(& __kstrtab_drm_atomic_commit)}; int drm_atomic_async_commit(struct drm_atomic_state *state ) { struct drm_mode_config *config ; int ret ; long tmp ; int tmp___0 ; { config = & (state->dev)->mode_config; ret = drm_atomic_check_only(state); if (ret != 0) { return (ret); } else { } tmp = ldv__builtin_expect((drm_debug & 16U) != 0U, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_atomic_async_commit", "commiting %p asynchronously\n", state); } else { } tmp___0 = (*((config->funcs)->atomic_commit))(state->dev, state, 1); return (tmp___0); } } static char const __kstrtab_drm_atomic_async_commit[24U] = { 'd', 'r', 'm', '_', 'a', 't', 'o', 'm', 'i', 'c', '_', 'a', 's', 'y', 'n', 'c', '_', 'c', 'o', 'm', 'm', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_atomic_async_commit ; struct kernel_symbol const __ksymtab_drm_atomic_async_commit = {(unsigned long )(& drm_atomic_async_commit), (char const *)(& __kstrtab_drm_atomic_async_commit)}; static struct drm_pending_vblank_event *create_vblank_event(struct drm_device *dev , struct drm_file *file_priv , uint64_t user_data ) { struct drm_pending_vblank_event *e ; unsigned long flags ; raw_spinlock_t *tmp ; void *tmp___0 ; raw_spinlock_t *tmp___1 ; { e = (struct drm_pending_vblank_event *)0; tmp = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp); if ((unsigned int )file_priv->event_space <= 31U) { spin_unlock_irqrestore(& dev->event_lock, flags); goto out; } else { } file_priv->event_space = (int )((unsigned int )file_priv->event_space - 32U); spin_unlock_irqrestore(& dev->event_lock, flags); tmp___0 = kzalloc(88UL, 208U); e = (struct drm_pending_vblank_event *)tmp___0; if ((unsigned long )e == (unsigned long )((struct drm_pending_vblank_event *)0)) { tmp___1 = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp___1); file_priv->event_space = (int )((unsigned int )file_priv->event_space + 32U); spin_unlock_irqrestore(& dev->event_lock, flags); goto out; } else { } e->event.base.type = 2U; e->event.base.length = 32U; e->event.user_data = user_data; e->base.event = & e->event.base; e->base.file_priv = file_priv; e->base.destroy = (void (*)(struct drm_pending_event * ))(& kfree); out: ; return (e); } } static void destroy_vblank_event(struct drm_device *dev , struct drm_file *file_priv , struct drm_pending_vblank_event *e ) { unsigned long flags ; raw_spinlock_t *tmp ; { tmp = spinlock_check(& dev->event_lock); flags = _raw_spin_lock_irqsave(tmp); file_priv->event_space = (int )((unsigned int )file_priv->event_space + 32U); spin_unlock_irqrestore(& dev->event_lock, flags); kfree((void const *)e); return; } } static int atomic_set_prop(struct drm_atomic_state *state , struct drm_mode_object *obj , struct drm_property *prop , uint64_t prop_value ) { struct drm_mode_object *ref ; int ret ; bool tmp ; int tmp___0 ; struct drm_connector *connector ; struct drm_mode_object const *__mptr ; struct drm_connector_state *connector_state ; long tmp___1 ; bool tmp___2 ; struct drm_crtc *crtc ; struct drm_mode_object const *__mptr___0 ; struct drm_crtc_state *crtc_state ; long tmp___3 ; bool tmp___4 ; struct drm_plane *plane ; struct drm_mode_object const *__mptr___1 ; struct drm_plane_state *plane_state ; long tmp___5 ; bool tmp___6 ; { tmp = drm_property_change_valid_get(prop, prop_value, & ref); if (tmp) { tmp___0 = 0; } else { tmp___0 = 1; } if (tmp___0) { return (-22); } else { } switch (obj->type) { case 3233857728U: __mptr = (struct drm_mode_object const *)obj; connector = (struct drm_connector *)__mptr + 0xffffffffffffffd8UL; connector_state = drm_atomic_get_connector_state(state, connector); tmp___2 = IS_ERR((void const *)connector_state); if ((int )tmp___2) { tmp___1 = PTR_ERR((void const *)connector_state); ret = (int )tmp___1; goto ldv_39461; } else { } ret = drm_atomic_connector_set_property(connector, connector_state, prop, prop_value); goto ldv_39461; case 3435973836U: __mptr___0 = (struct drm_mode_object const *)obj; crtc = (struct drm_crtc *)__mptr___0 + 0xffffffffffffff20UL; crtc_state = drm_atomic_get_crtc_state(state, crtc); tmp___4 = IS_ERR((void const *)crtc_state); if ((int )tmp___4) { tmp___3 = PTR_ERR((void const *)crtc_state); ret = (int )tmp___3; goto ldv_39461; } else { } ret = drm_atomic_crtc_set_property(crtc, crtc_state, prop, prop_value); goto ldv_39461; case 4008636142U: __mptr___1 = (struct drm_mode_object const *)obj; plane = (struct drm_plane *)__mptr___1 + 0xffffffffffffff28UL; plane_state = drm_atomic_get_plane_state(state, plane); tmp___6 = IS_ERR((void const *)plane_state); if ((int )tmp___6) { tmp___5 = PTR_ERR((void const *)plane_state); ret = (int )tmp___5; goto ldv_39461; } else { } ret = drm_atomic_plane_set_property(plane, plane_state, prop, prop_value); goto ldv_39461; default: ret = -22; goto ldv_39461; } ldv_39461: drm_property_change_valid_put(prop, ref); return (ret); } } int drm_mode_atomic_ioctl(struct drm_device *dev , void *data , struct drm_file *file_priv ) { struct drm_mode_atomic *arg ; uint32_t *objs_ptr ; uint32_t *count_props_ptr ; uint32_t *props_ptr ; uint64_t *prop_values_ptr ; unsigned int copied_objs ; unsigned int copied_props ; struct drm_atomic_state *state ; struct drm_modeset_acquire_ctx ctx ; struct drm_plane *plane ; struct drm_crtc *crtc ; struct drm_crtc_state *crtc_state ; unsigned int plane_mask ; int ret ; unsigned int i ; unsigned int j ; int tmp ; uint32_t obj_id ; uint32_t count_props ; struct drm_mode_object *obj ; int __ret_gu ; register unsigned long __val_gu ; struct drm_mode_object const *__mptr ; unsigned int tmp___0 ; int __ret_gu___0 ; register unsigned long __val_gu___0 ; uint32_t prop_id ; uint64_t prop_value ; struct drm_property *prop ; int __ret_gu___1 ; register unsigned long __val_gu___1 ; unsigned long tmp___1 ; struct drm_pending_vblank_event *e ; struct list_head const *__mptr___0 ; struct drm_framebuffer *new_fb ; unsigned int tmp___2 ; struct list_head const *__mptr___1 ; { arg = (struct drm_mode_atomic *)data; objs_ptr = (uint32_t *)arg->objs_ptr; count_props_ptr = (uint32_t *)arg->count_props_ptr; props_ptr = (uint32_t *)arg->props_ptr; prop_values_ptr = (uint64_t *)arg->prop_values_ptr; plane_mask = 0U; ret = 0; tmp = drm_core_check_feature(dev, 65536); if (tmp == 0) { return (-22); } else { } if ((unsigned int )*((unsigned char *)file_priv + 0UL) == 0U) { return (-22); } else { } if ((arg->flags & 4294965500U) != 0U) { return (-22); } else { } if (arg->reserved != 0ULL) { return (-22); } else { } if ((arg->flags & 2U) != 0U && ! dev->mode_config.async_page_flip) { return (-22); } else { } if ((arg->flags & 256U) != 0U && (int )arg->flags & 1) { return (-22); } else { } drm_modeset_acquire_init(& ctx, 0U); state = drm_atomic_state_alloc(dev); if ((unsigned long )state == (unsigned long )((struct drm_atomic_state *)0)) { return (-12); } else { } state->acquire_ctx = & ctx; state->allow_modeset = (arg->flags & 1024U) != 0U; retry: copied_objs = 0U; copied_props = 0U; i = 0U; goto ldv_39517; ldv_39516: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 1464); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (objs_ptr + (unsigned long )copied_objs), "i" (4UL)); obj_id = (unsigned int )__val_gu; if (__ret_gu != 0) { ret = -14; goto fail; } else { } obj = drm_mode_object_find(dev, obj_id, 0U); if ((unsigned long )obj == (unsigned long )((struct drm_mode_object *)0) || (unsigned long )obj->properties == (unsigned long )((struct drm_object_properties *)0)) { ret = -2; goto fail; } else { } if (obj->type == 4008636142U) { __mptr = (struct drm_mode_object const *)obj; plane = (struct drm_plane *)__mptr + 0xffffffffffffff28UL; tmp___0 = drm_plane_index(plane); plane_mask = (unsigned int )(1 << (int )tmp___0) | plane_mask; plane->old_fb = plane->fb; } else { } __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 1481); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu___0), "=r" (__val_gu___0): "0" (count_props_ptr + (unsigned long )copied_objs), "i" (4UL)); count_props = (unsigned int )__val_gu___0; if (__ret_gu___0 != 0) { ret = -14; goto fail; } else { } copied_objs = copied_objs + 1U; j = 0U; goto ldv_39514; ldv_39513: __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_atomic.c", 1493); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu___1), "=r" (__val_gu___1): "0" (props_ptr + (unsigned long )copied_props), "i" (4UL)); prop_id = (unsigned int )__val_gu___1; if (__ret_gu___1 != 0) { ret = -14; goto fail; } else { } prop = drm_property_find(dev, prop_id); if ((unsigned long )prop == (unsigned long )((struct drm_property *)0)) { ret = -2; goto fail; } else { } tmp___1 = copy_from_user((void *)(& prop_value), (void const *)prop_values_ptr + (unsigned long )copied_props, 8UL); if (tmp___1 != 0UL) { ret = -14; goto fail; } else { } ret = atomic_set_prop(state, obj, prop, prop_value); if (ret != 0) { goto fail; } else { } copied_props = copied_props + 1U; j = j + 1U; ldv_39514: ; if (j < count_props) { goto ldv_39513; } else { } i = i + 1U; ldv_39517: ; if (arg->count_objs > i) { goto ldv_39516; } else { } if ((int )arg->flags & 1) { i = 0U; goto ldv_39521; ldv_39520: ; if ((unsigned long )crtc_state != (unsigned long )((struct drm_crtc_state *)0)) { e = create_vblank_event(dev, file_priv, arg->user_data); if ((unsigned long )e == (unsigned long )((struct drm_pending_vblank_event *)0)) { ret = -12; goto fail; } else { } crtc_state->event = e; } else { } i = i + 1U; ldv_39521: ; if ((unsigned int )(state->dev)->mode_config.num_crtc > i) { crtc = *(state->crtcs + (unsigned long )i); crtc_state = *(state->crtc_states + (unsigned long )i); goto ldv_39520; } else { } } else { } if ((arg->flags & 256U) != 0U) { ret = drm_atomic_check_only(state); drm_atomic_state_free(state); } else if ((arg->flags & 512U) != 0U) { ret = drm_atomic_async_commit(state); } else { ret = drm_atomic_commit(state); } __mptr___0 = (struct list_head const *)dev->mode_config.plane_list.next; plane = (struct drm_plane *)__mptr___0 + 0xfffffffffffffff8UL; goto ldv_39529; ldv_39528: tmp___2 = drm_plane_index(plane); if (((unsigned int )(1 << (int )tmp___2) & plane_mask) != 0U) { if (ret == 0) { new_fb = (plane->state)->fb; if ((unsigned long )new_fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_reference(new_fb); } else { } plane->fb = new_fb; plane->crtc = (plane->state)->crtc; } else { plane->old_fb = (struct drm_framebuffer *)0; } if ((unsigned long )plane->old_fb != (unsigned long )((struct drm_framebuffer *)0)) { drm_framebuffer_unreference(plane->old_fb); plane->old_fb = (struct drm_framebuffer *)0; } else { } } else { } __mptr___1 = (struct list_head const *)plane->head.next; plane = (struct drm_plane *)__mptr___1 + 0xfffffffffffffff8UL; ldv_39529: ; if ((unsigned long )(& plane->head) != (unsigned long )(& dev->mode_config.plane_list)) { goto ldv_39528; } else { } drm_modeset_drop_locks(& ctx); drm_modeset_acquire_fini(& ctx); return (ret); fail: ; if (ret == -35) { goto backoff; } else { } if ((int )arg->flags & 1) { i = 0U; goto ldv_39533; ldv_39532: ; if ((unsigned long )crtc_state != (unsigned long )((struct drm_crtc_state *)0)) { destroy_vblank_event(dev, file_priv, crtc_state->event); crtc_state->event = (struct drm_pending_vblank_event *)0; } else { } i = i + 1U; ldv_39533: ; if ((unsigned int )(state->dev)->mode_config.num_crtc > i) { crtc = *(state->crtcs + (unsigned long )i); crtc_state = *(state->crtc_states + (unsigned long )i); goto ldv_39532; } else { } } else { } drm_atomic_state_free(state); drm_modeset_drop_locks(& ctx); drm_modeset_acquire_fini(& ctx); return (ret); backoff: drm_atomic_state_clear(state); drm_modeset_backoff(& ctx); goto retry; } } bool ldv_queue_work_on_482(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_483(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_484(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_485(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_486(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_496(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_498(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_497(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_500(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_499(struct workqueue_struct *ldv_func_arg1 ) ; int drm_bridge_add(struct drm_bridge *bridge ) ; void drm_bridge_remove(struct drm_bridge *bridge ) ; struct drm_bridge *of_drm_find_bridge(struct device_node *np ) ; int drm_bridge_attach(struct drm_device *dev , struct drm_bridge *bridge ) ; bool drm_bridge_mode_fixup(struct drm_bridge *bridge , struct drm_display_mode const *mode , struct drm_display_mode *adjusted_mode ) ; void drm_bridge_disable(struct drm_bridge *bridge ) ; void drm_bridge_post_disable(struct drm_bridge *bridge ) ; void drm_bridge_mode_set(struct drm_bridge *bridge , struct drm_display_mode *mode , struct drm_display_mode *adjusted_mode ) ; void drm_bridge_pre_enable(struct drm_bridge *bridge ) ; void drm_bridge_enable(struct drm_bridge *bridge ) ; static struct mutex bridge_lock = {{1}, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "bridge_lock.wait_lock", 0, 0UL}}}}, {& bridge_lock.wait_list, & bridge_lock.wait_list}, 0, (void *)(& bridge_lock), {0, {0, 0}, "bridge_lock", 0, 0UL}}; static struct list_head bridge_list = {& bridge_list, & bridge_list}; int drm_bridge_add(struct drm_bridge *bridge ) { { mutex_lock_nested(& bridge_lock, 0U); list_add_tail(& bridge->list, & bridge_list); mutex_unlock(& bridge_lock); return (0); } } static char const __kstrtab_drm_bridge_add[15U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'a', 'd', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_add ; struct kernel_symbol const __ksymtab_drm_bridge_add = {(unsigned long )(& drm_bridge_add), (char const *)(& __kstrtab_drm_bridge_add)}; void drm_bridge_remove(struct drm_bridge *bridge ) { { mutex_lock_nested(& bridge_lock, 0U); list_del_init(& bridge->list); mutex_unlock(& bridge_lock); return; } } static char const __kstrtab_drm_bridge_remove[18U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_remove ; struct kernel_symbol const __ksymtab_drm_bridge_remove = {(unsigned long )(& drm_bridge_remove), (char const *)(& __kstrtab_drm_bridge_remove)}; int drm_bridge_attach(struct drm_device *dev , struct drm_bridge *bridge ) { int tmp ; { if ((unsigned long )dev == (unsigned long )((struct drm_device *)0) || (unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return (-22); } else { } if ((unsigned long )bridge->dev != (unsigned long )((struct drm_device *)0)) { return (-16); } else { } bridge->dev = dev; if ((unsigned long )(bridge->funcs)->attach != (unsigned long )((int (*/* const */)(struct drm_bridge * ))0)) { tmp = (*((bridge->funcs)->attach))(bridge); return (tmp); } else { } return (0); } } static char const __kstrtab_drm_bridge_attach[18U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'a', 't', 't', 'a', 'c', 'h', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_attach ; struct kernel_symbol const __ksymtab_drm_bridge_attach = {(unsigned long )(& drm_bridge_attach), (char const *)(& __kstrtab_drm_bridge_attach)}; bool drm_bridge_mode_fixup(struct drm_bridge *bridge , struct drm_display_mode const *mode , struct drm_display_mode *adjusted_mode ) { bool ret ; bool tmp ; int tmp___0 ; { ret = 1; if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return (1); } else { } if ((unsigned long )(bridge->funcs)->mode_fixup != (unsigned long )((bool (*/* const */)(struct drm_bridge * , struct drm_display_mode const * , struct drm_display_mode * ))0)) { ret = (*((bridge->funcs)->mode_fixup))(bridge, mode, adjusted_mode); } else { } if ((int )ret) { tmp = drm_bridge_mode_fixup(bridge->next, mode, adjusted_mode); if ((int )tmp) { tmp___0 = 1; } else { tmp___0 = 0; } } else { tmp___0 = 0; } ret = (bool )tmp___0; return (ret); } } static char const __kstrtab_drm_bridge_mode_fixup[22U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'm', 'o', 'd', 'e', '_', 'f', 'i', 'x', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_mode_fixup ; struct kernel_symbol const __ksymtab_drm_bridge_mode_fixup = {(unsigned long )(& drm_bridge_mode_fixup), (char const *)(& __kstrtab_drm_bridge_mode_fixup)}; void drm_bridge_disable(struct drm_bridge *bridge ) { { if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return; } else { } drm_bridge_disable(bridge->next); (*((bridge->funcs)->disable))(bridge); return; } } static char const __kstrtab_drm_bridge_disable[19U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'd', 'i', 's', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_disable ; struct kernel_symbol const __ksymtab_drm_bridge_disable = {(unsigned long )(& drm_bridge_disable), (char const *)(& __kstrtab_drm_bridge_disable)}; void drm_bridge_post_disable(struct drm_bridge *bridge ) { { if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return; } else { } (*((bridge->funcs)->post_disable))(bridge); drm_bridge_post_disable(bridge->next); return; } } static char const __kstrtab_drm_bridge_post_disable[24U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'p', 'o', 's', 't', '_', 'd', 'i', 's', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_post_disable ; struct kernel_symbol const __ksymtab_drm_bridge_post_disable = {(unsigned long )(& drm_bridge_post_disable), (char const *)(& __kstrtab_drm_bridge_post_disable)}; void drm_bridge_mode_set(struct drm_bridge *bridge , struct drm_display_mode *mode , struct drm_display_mode *adjusted_mode ) { { if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return; } else { } if ((unsigned long )(bridge->funcs)->mode_set != (unsigned long )((void (*/* const */)(struct drm_bridge * , struct drm_display_mode * , struct drm_display_mode * ))0)) { (*((bridge->funcs)->mode_set))(bridge, mode, adjusted_mode); } else { } drm_bridge_mode_set(bridge->next, mode, adjusted_mode); return; } } static char const __kstrtab_drm_bridge_mode_set[20U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'm', 'o', 'd', 'e', '_', 's', 'e', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_mode_set ; struct kernel_symbol const __ksymtab_drm_bridge_mode_set = {(unsigned long )(& drm_bridge_mode_set), (char const *)(& __kstrtab_drm_bridge_mode_set)}; void drm_bridge_pre_enable(struct drm_bridge *bridge ) { { if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return; } else { } drm_bridge_pre_enable(bridge->next); (*((bridge->funcs)->pre_enable))(bridge); return; } } static char const __kstrtab_drm_bridge_pre_enable[22U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'p', 'r', 'e', '_', 'e', 'n', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_pre_enable ; struct kernel_symbol const __ksymtab_drm_bridge_pre_enable = {(unsigned long )(& drm_bridge_pre_enable), (char const *)(& __kstrtab_drm_bridge_pre_enable)}; void drm_bridge_enable(struct drm_bridge *bridge ) { { if ((unsigned long )bridge == (unsigned long )((struct drm_bridge *)0)) { return; } else { } (*((bridge->funcs)->enable))(bridge); drm_bridge_enable(bridge->next); return; } } static char const __kstrtab_drm_bridge_enable[18U] = { 'd', 'r', 'm', '_', 'b', 'r', 'i', 'd', 'g', 'e', '_', 'e', 'n', 'a', 'b', 'l', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_bridge_enable ; struct kernel_symbol const __ksymtab_drm_bridge_enable = {(unsigned long )(& drm_bridge_enable), (char const *)(& __kstrtab_drm_bridge_enable)}; struct drm_bridge *of_drm_find_bridge(struct device_node *np ) { struct drm_bridge *bridge ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { mutex_lock_nested(& bridge_lock, 0U); __mptr = (struct list_head const *)bridge_list.next; bridge = (struct drm_bridge *)__mptr + 0xffffffffffffffe0UL; goto ldv_38823; ldv_38822: ; if ((unsigned long )bridge->of_node == (unsigned long )np) { mutex_unlock(& bridge_lock); return (bridge); } else { } __mptr___0 = (struct list_head const *)bridge->list.next; bridge = (struct drm_bridge *)__mptr___0 + 0xffffffffffffffe0UL; ldv_38823: ; if ((unsigned long )(& bridge->list) != (unsigned long )(& bridge_list)) { goto ldv_38822; } else { } mutex_unlock(& bridge_lock); return ((struct drm_bridge *)0); } } static char const __kstrtab_of_drm_find_bridge[19U] = { 'o', 'f', '_', 'd', 'r', 'm', '_', 'f', 'i', 'n', 'd', '_', 'b', 'r', 'i', 'd', 'g', 'e', '\000'}; struct kernel_symbol const __ksymtab_of_drm_find_bridge ; struct kernel_symbol const __ksymtab_of_drm_find_bridge = {(unsigned long )(& of_drm_find_bridge), (char const *)(& __kstrtab_of_drm_find_bridge)}; bool ldv_queue_work_on_496(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_497(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_498(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_499(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_500(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; bool ldv_queue_work_on_510(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_512(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_511(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_514(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_513(struct workqueue_struct *ldv_func_arg1 ) ; extern void *compat_alloc_user_space(unsigned long ) ; extern int ___ratelimit(struct ratelimit_state * , char const * ) ; extern int __get_user_bad(void) ; extern void __put_user_bad(void) ; __inline static int __copy_in_user(void *dst , void const *src , unsigned int size ) { int ret ; unsigned long tmp ; u8 tmp___0 ; long tmp___1 ; u16 tmp___2 ; long tmp___3 ; u32 tmp___4 ; long tmp___5 ; u64 tmp___6 ; long tmp___7 ; unsigned long tmp___8 ; { ret = 0; __might_fault("./arch/x86/include/asm/uaccess_64.h", 156); tmp = copy_user_generic(dst, src, size); return ((int )tmp); switch (size) { case 1U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret), "=q" (tmp___0): "m" (*((struct __large_struct *)src)), "i" (1), "0" (ret)); tmp___1 = ldv__builtin_expect(ret == 0, 1L); if (tmp___1 != 0L) { __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "iq" (tmp___0), "m" (*((struct __large_struct *)dst)), "i" (1), "0" (ret)); } else { } return (ret); case 2U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret), "=r" (tmp___2): "m" (*((struct __large_struct *)src)), "i" (2), "0" (ret)); tmp___3 = ldv__builtin_expect(ret == 0, 1L); if (tmp___3 != 0L) { __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "ir" (tmp___2), "m" (*((struct __large_struct *)dst)), "i" (2), "0" (ret)); } else { } return (ret); case 4U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret), "=r" (tmp___4): "m" (*((struct __large_struct *)src)), "i" (4), "0" (ret)); tmp___5 = ldv__builtin_expect(ret == 0, 1L); if (tmp___5 != 0L) { __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "ir" (tmp___4), "m" (*((struct __large_struct *)dst)), "i" (4), "0" (ret)); } else { } return (ret); case 8U: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret), "=r" (tmp___6): "m" (*((struct __large_struct *)src)), "i" (8), "0" (ret)); tmp___7 = ldv__builtin_expect(ret == 0, 1L); if (tmp___7 != 0L) { __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (ret): "er" (tmp___6), "m" (*((struct __large_struct *)dst)), "i" (8), "0" (ret)); } else { } return (ret); default: tmp___8 = copy_user_generic(dst, src, size); return ((int )tmp___8); } } } long drm_compat_ioctl(struct file *filp , unsigned int cmd , unsigned long arg ) ; static int compat_drm_version(struct file *file , unsigned int cmd , unsigned long arg ) { drm_version32_t v32 ; struct drm_version *version ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; int __pu_err___2 ; int __pu_err___3 ; int __pu_err___4 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___7 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___8 ; int __gu_err___2 ; unsigned long __gu_val___2 ; int tmp___9 ; int __gu_err___3 ; unsigned long __gu_val___3 ; int tmp___10 ; int __gu_err___4 ; unsigned long __gu_val___4 ; int tmp___11 ; unsigned long tmp___12 ; { tmp = copy_from_user((void *)(& v32), (void const *)arg, 36UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(64UL); version = (struct drm_version *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )version, 64UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )v32.name_len), "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__pu_err)); goto ldv_40161; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )v32.name_len), "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__pu_err)); goto ldv_40161; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )v32.name_len), "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__pu_err)); goto ldv_40161; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )v32.name_len), "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__pu_err)); goto ldv_40161; default: __put_user_bad(); } ldv_40161: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((char *)((unsigned long )v32.name)), "m" (*((struct __large_struct *)(& version->name))), "i" (-14), "0" (__pu_err___0)); goto ldv_40169; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )v32.name)), "m" (*((struct __large_struct *)(& version->name))), "i" (-14), "0" (__pu_err___0)); goto ldv_40169; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )v32.name)), "m" (*((struct __large_struct *)(& version->name))), "i" (-14), "0" (__pu_err___0)); goto ldv_40169; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((char *)((unsigned long )v32.name)), "m" (*((struct __large_struct *)(& version->name))), "i" (-14), "0" (__pu_err___0)); goto ldv_40169; default: __put_user_bad(); } ldv_40169: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" ((unsigned long )v32.date_len), "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__pu_err___1)); goto ldv_40177; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned long )v32.date_len), "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__pu_err___1)); goto ldv_40177; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned long )v32.date_len), "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__pu_err___1)); goto ldv_40177; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" ((unsigned long )v32.date_len), "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__pu_err___1)); goto ldv_40177; default: __put_user_bad(); } ldv_40177: ; if (__pu_err___1 != 0) { return (-14); } else { __pu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "iq" ((char *)((unsigned long )v32.date)), "m" (*((struct __large_struct *)(& version->date))), "i" (-14), "0" (__pu_err___2)); goto ldv_40185; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" ((char *)((unsigned long )v32.date)), "m" (*((struct __large_struct *)(& version->date))), "i" (-14), "0" (__pu_err___2)); goto ldv_40185; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" ((char *)((unsigned long )v32.date)), "m" (*((struct __large_struct *)(& version->date))), "i" (-14), "0" (__pu_err___2)); goto ldv_40185; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "er" ((char *)((unsigned long )v32.date)), "m" (*((struct __large_struct *)(& version->date))), "i" (-14), "0" (__pu_err___2)); goto ldv_40185; default: __put_user_bad(); } ldv_40185: ; if (__pu_err___2 != 0) { return (-14); } else { __pu_err___3 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "iq" ((unsigned long )v32.desc_len), "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__pu_err___3)); goto ldv_40193; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" ((unsigned long )v32.desc_len), "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__pu_err___3)); goto ldv_40193; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" ((unsigned long )v32.desc_len), "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__pu_err___3)); goto ldv_40193; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "er" ((unsigned long )v32.desc_len), "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__pu_err___3)); goto ldv_40193; default: __put_user_bad(); } ldv_40193: ; if (__pu_err___3 != 0) { return (-14); } else { __pu_err___4 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "iq" ((char *)((unsigned long )v32.desc)), "m" (*((struct __large_struct *)(& version->desc))), "i" (-14), "0" (__pu_err___4)); goto ldv_40201; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "ir" ((char *)((unsigned long )v32.desc)), "m" (*((struct __large_struct *)(& version->desc))), "i" (-14), "0" (__pu_err___4)); goto ldv_40201; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "ir" ((char *)((unsigned long )v32.desc)), "m" (*((struct __large_struct *)(& version->desc))), "i" (-14), "0" (__pu_err___4)); goto ldv_40201; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "er" ((char *)((unsigned long )v32.desc)), "m" (*((struct __large_struct *)(& version->desc))), "i" (-14), "0" (__pu_err___4)); goto ldv_40201; default: __put_user_bad(); } ldv_40201: ; if (__pu_err___4 != 0) { return (-14); } else { } } } } } } tmp___5 = drm_ioctl(file, 3225445376U, (unsigned long )version); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& version->version_major))), "i" (-14), "0" (__gu_err)); goto ldv_40210; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& version->version_major))), "i" (-14), "0" (__gu_err)); goto ldv_40210; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& version->version_major))), "i" (-14), "0" (__gu_err)); goto ldv_40210; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& version->version_major))), "i" (-14), "0" (__gu_err)); goto ldv_40210; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_40210: v32.version_major = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& version->version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_40219; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& version->version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_40219; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& version->version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_40219; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& version->version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_40219; default: tmp___7 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___7; } ldv_40219: v32.version_minor = (int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& version->version_patchlevel))), "i" (-14), "0" (__gu_err___1)); goto ldv_40228; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& version->version_patchlevel))), "i" (-14), "0" (__gu_err___1)); goto ldv_40228; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& version->version_patchlevel))), "i" (-14), "0" (__gu_err___1)); goto ldv_40228; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& version->version_patchlevel))), "i" (-14), "0" (__gu_err___1)); goto ldv_40228; default: tmp___8 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___8; } ldv_40228: v32.version_patchlevel = (int )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __gu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=q" (__gu_val___2): "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__gu_err___2)); goto ldv_40237; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__gu_err___2)); goto ldv_40237; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__gu_err___2)); goto ldv_40237; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& version->name_len))), "i" (-14), "0" (__gu_err___2)); goto ldv_40237; default: tmp___9 = __get_user_bad(); __gu_val___2 = (unsigned long )tmp___9; } ldv_40237: v32.name_len = (u32 )__gu_val___2; if (__gu_err___2 != 0) { return (-14); } else { __gu_err___3 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=q" (__gu_val___3): "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__gu_err___3)); goto ldv_40246; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__gu_err___3)); goto ldv_40246; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__gu_err___3)); goto ldv_40246; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& version->date_len))), "i" (-14), "0" (__gu_err___3)); goto ldv_40246; default: tmp___10 = __get_user_bad(); __gu_val___3 = (unsigned long )tmp___10; } ldv_40246: v32.date_len = (u32 )__gu_val___3; if (__gu_err___3 != 0) { return (-14); } else { __gu_err___4 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=q" (__gu_val___4): "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__gu_err___4)); goto ldv_40255; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__gu_err___4)); goto ldv_40255; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__gu_err___4)); goto ldv_40255; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& version->desc_len))), "i" (-14), "0" (__gu_err___4)); goto ldv_40255; default: tmp___11 = __get_user_bad(); __gu_val___4 = (unsigned long )tmp___11; } ldv_40255: v32.desc_len = (u32 )__gu_val___4; if (__gu_err___4 != 0) { return (-14); } else { } } } } } } tmp___12 = copy_to_user((void *)arg, (void const *)(& v32), 36UL); if (tmp___12 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_getunique(struct file *file , unsigned int cmd , unsigned long arg ) { drm_unique32_t uq32 ; struct drm_unique *u ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; unsigned long tmp___7 ; { tmp = copy_from_user((void *)(& uq32), (void const *)arg, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); u = (struct drm_unique *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )u, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40276; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40276; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40276; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40276; default: __put_user_bad(); } ldv_40276: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40284; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40284; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40284; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40284; default: __put_user_bad(); } ldv_40284: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 3222299649U, (unsigned long )u); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__gu_err)); goto ldv_40293; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__gu_err)); goto ldv_40293; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__gu_err)); goto ldv_40293; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__gu_err)); goto ldv_40293; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_40293: uq32.unique_len = (u32 )__gu_val; if (__gu_err != 0) { return (-14); } else { } tmp___7 = copy_to_user((void *)arg, (void const *)(& uq32), 8UL); if (tmp___7 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_setunique(struct file *file , unsigned int cmd , unsigned long arg ) { drm_unique32_t uq32 ; struct drm_unique *u ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; { tmp = copy_from_user((void *)(& uq32), (void const *)arg, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); u = (struct drm_unique *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )u, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40309; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40309; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40309; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )uq32.unique_len), "m" (*((struct __large_struct *)(& u->unique_len))), "i" (-14), "0" (__pu_err)); goto ldv_40309; default: __put_user_bad(); } ldv_40309: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40317; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40317; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40317; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((char *)((unsigned long )uq32.unique)), "m" (*((struct __large_struct *)(& u->unique))), "i" (-14), "0" (__pu_err___0)); goto ldv_40317; default: __put_user_bad(); } ldv_40317: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 1074816016U, (unsigned long )u); return ((int )tmp___5); } } static int compat_drm_getmap(struct file *file , unsigned int cmd , unsigned long arg ) { drm_map32_t *argp ; drm_map32_t m32 ; struct drm_map *map ; int idx ; int err ; void *handle ; int __ret_gu ; register unsigned long __val_gu ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; int __pu_err ; long tmp___4 ; int __gu_err ; unsigned long __gu_val ; int tmp___5 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___6 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___7 ; int __gu_err___2 ; unsigned long __gu_val___2 ; int tmp___8 ; int __gu_err___3 ; unsigned long __gu_val___3 ; int tmp___9 ; int __gu_err___4 ; unsigned long __gu_val___4 ; int tmp___10 ; unsigned long tmp___11 ; { argp = (drm_map32_t *)arg; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 199); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->offset), "i" (4UL)); idx = (int )__val_gu; if (__ret_gu != 0) { return (-14); } else { } tmp = compat_alloc_user_space(40UL); map = (struct drm_map *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )map, 40UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )idx), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40348; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )idx), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40348; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )idx), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40348; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )idx), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40348; default: __put_user_bad(); } ldv_40348: ; if (__pu_err != 0) { return (-14); } else { } tmp___4 = drm_ioctl(file, 3223872516U, (unsigned long )map); err = (int )tmp___4; if (err != 0) { return (err); } else { } __gu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40357; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40357; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40357; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40357; default: tmp___5 = __get_user_bad(); __gu_val = (unsigned long )tmp___5; } ldv_40357: m32.offset = (u32 )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__gu_err___0)); goto ldv_40366; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__gu_err___0)); goto ldv_40366; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__gu_err___0)); goto ldv_40366; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__gu_err___0)); goto ldv_40366; default: tmp___6 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___6; } ldv_40366: m32.size = (u32 )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40375; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40375; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40375; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40375; default: tmp___7 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___7; } ldv_40375: m32.type = (enum drm_map_type )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __gu_err___2 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=q" (__gu_val___2): "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__gu_err___2)); goto ldv_40384; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__gu_err___2)); goto ldv_40384; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__gu_err___2)); goto ldv_40384; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__gu_err___2)); goto ldv_40384; default: tmp___8 = __get_user_bad(); __gu_val___2 = (unsigned long )tmp___8; } ldv_40384: m32.flags = (enum drm_map_flags )__gu_val___2; if (__gu_err___2 != 0) { return (-14); } else { __gu_err___3 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=q" (__gu_val___3): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___3)); goto ldv_40393; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___3)); goto ldv_40393; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___3)); goto ldv_40393; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___3)); goto ldv_40393; default: tmp___9 = __get_user_bad(); __gu_val___3 = (unsigned long )tmp___9; } ldv_40393: handle = (void *)__gu_val___3; if (__gu_err___3 != 0) { return (-14); } else { __gu_err___4 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=q" (__gu_val___4): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___4)); goto ldv_40402; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___4)); goto ldv_40402; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___4)); goto ldv_40402; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___4)); goto ldv_40402; default: tmp___10 = __get_user_bad(); __gu_val___4 = (unsigned long )tmp___10; } ldv_40402: m32.mtrr = (int )__gu_val___4; if (__gu_err___4 != 0) { return (-14); } else { } } } } } } m32.handle = (u32 )((long )handle); tmp___11 = copy_to_user((void *)argp, (void const *)(& m32), 24UL); if (tmp___11 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_addmap(struct file *file , unsigned int cmd , unsigned long arg ) { drm_map32_t *argp ; drm_map32_t m32 ; struct drm_map *map ; int err ; void *handle ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; int __pu_err___2 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___7 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___8 ; struct ratelimit_state _rs ; int tmp___9 ; unsigned long tmp___10 ; { argp = (drm_map32_t *)arg; tmp = copy_from_user((void *)(& m32), (void const *)argp, 24UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(40UL); map = (struct drm_map *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )map, 40UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )m32.offset), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40421; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )m32.offset), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40421; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )m32.offset), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40421; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )m32.offset), "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__pu_err)); goto ldv_40421; default: __put_user_bad(); } ldv_40421: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned long )m32.size), "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__pu_err___0)); goto ldv_40429; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )m32.size), "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__pu_err___0)); goto ldv_40429; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )m32.size), "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__pu_err___0)); goto ldv_40429; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned long )m32.size), "m" (*((struct __large_struct *)(& map->size))), "i" (-14), "0" (__pu_err___0)); goto ldv_40429; default: __put_user_bad(); } ldv_40429: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" (m32.type), "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__pu_err___1)); goto ldv_40437; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (m32.type), "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__pu_err___1)); goto ldv_40437; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (m32.type), "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__pu_err___1)); goto ldv_40437; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" (m32.type), "m" (*((struct __large_struct *)(& map->type))), "i" (-14), "0" (__pu_err___1)); goto ldv_40437; default: __put_user_bad(); } ldv_40437: ; if (__pu_err___1 != 0) { return (-14); } else { __pu_err___2 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "iq" (m32.flags), "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__pu_err___2)); goto ldv_40445; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (m32.flags), "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__pu_err___2)); goto ldv_40445; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (m32.flags), "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__pu_err___2)); goto ldv_40445; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "er" (m32.flags), "m" (*((struct __large_struct *)(& map->flags))), "i" (-14), "0" (__pu_err___2)); goto ldv_40445; default: __put_user_bad(); } ldv_40445: ; if (__pu_err___2 != 0) { return (-14); } else { } } } } tmp___5 = drm_ioctl(file, 3223872533U, (unsigned long )map); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40454; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40454; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40454; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& map->offset))), "i" (-14), "0" (__gu_err)); goto ldv_40454; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_40454: m32.offset = (u32 )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___0)); goto ldv_40463; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___0)); goto ldv_40463; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___0)); goto ldv_40463; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& map->mtrr))), "i" (-14), "0" (__gu_err___0)); goto ldv_40463; default: tmp___7 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___7; } ldv_40463: m32.mtrr = (int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___1)); goto ldv_40472; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___1)); goto ldv_40472; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___1)); goto ldv_40472; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__gu_err___1)); goto ldv_40472; default: tmp___8 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___8; } ldv_40472: handle = (void *)__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { } } } m32.handle = (u32 )((long )handle); if ((unsigned long )m32.handle != (unsigned long )handle) { _rs.lock.raw_lock.val.counter = 0; _rs.lock.magic = 3735899821U; _rs.lock.owner_cpu = 4294967295U; _rs.lock.owner = (void *)-1; _rs.lock.dep_map.key = 0; _rs.lock.dep_map.class_cache[0] = 0; _rs.lock.dep_map.class_cache[1] = 0; _rs.lock.dep_map.name = "_rs.lock"; _rs.lock.dep_map.cpu = 0; _rs.lock.dep_map.ip = 0UL; _rs.interval = 1250; _rs.burst = 10; _rs.printed = 0; _rs.missed = 0; _rs.begin = 0UL; tmp___9 = ___ratelimit(& _rs, "compat_drm_addmap"); if (tmp___9 != 0) { printk("\vcompat_drm_addmap truncated handle %p for type %d offset %x\n", handle, (unsigned int )m32.type, m32.offset); } else { } } else { } tmp___10 = copy_to_user((void *)argp, (void const *)(& m32), 24UL); if (tmp___10 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_rmmap(struct file *file , unsigned int cmd , unsigned long arg ) { drm_map32_t *argp ; struct drm_map *map ; u32 handle ; int __ret_gu ; register unsigned long __val_gu ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; int __pu_err ; long tmp___4 ; { argp = (drm_map32_t *)arg; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 276); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->handle), "i" (4UL)); handle = (unsigned int )__val_gu; if (__ret_gu != 0) { return (-14); } else { } tmp = compat_alloc_user_space(40UL); map = (struct drm_map *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )map, 40UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((void *)((unsigned long )handle)), "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__pu_err)); goto ldv_40495; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((void *)((unsigned long )handle)), "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__pu_err)); goto ldv_40495; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((void *)((unsigned long )handle)), "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__pu_err)); goto ldv_40495; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((void *)((unsigned long )handle)), "m" (*((struct __large_struct *)(& map->handle))), "i" (-14), "0" (__pu_err)); goto ldv_40495; default: __put_user_bad(); } ldv_40495: ; if (__pu_err != 0) { return (-14); } else { } tmp___4 = drm_ioctl(file, 1076388891U, (unsigned long )map); return ((int )tmp___4); } } static int compat_drm_getclient(struct file *file , unsigned int cmd , unsigned long arg ) { drm_client32_t c32 ; drm_client32_t *argp ; struct drm_client *client ; int idx ; int err ; int __ret_gu ; register unsigned long __val_gu ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; int __pu_err ; long tmp___4 ; int __gu_err ; unsigned long __gu_val ; int tmp___5 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___6 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___7 ; int __gu_err___2 ; unsigned long __gu_val___2 ; int tmp___8 ; int __gu_err___3 ; unsigned long __gu_val___3 ; int tmp___9 ; int __gu_err___4 ; unsigned long __gu_val___4 ; int tmp___10 ; unsigned long tmp___11 ; { argp = (drm_client32_t *)arg; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 305); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->idx), "i" (4UL)); idx = (int )__val_gu; if (__ret_gu != 0) { return (-14); } else { } tmp = compat_alloc_user_space(40UL); client = (struct drm_client *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )client, 40UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (idx), "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__pu_err)); goto ldv_40525; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (idx), "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__pu_err)); goto ldv_40525; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (idx), "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__pu_err)); goto ldv_40525; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (idx), "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__pu_err)); goto ldv_40525; default: __put_user_bad(); } ldv_40525: ; if (__pu_err != 0) { return (-14); } else { } tmp___4 = drm_ioctl(file, 3223872517U, (unsigned long )client); err = (int )tmp___4; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__gu_err)); goto ldv_40534; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__gu_err)); goto ldv_40534; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__gu_err)); goto ldv_40534; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& client->idx))), "i" (-14), "0" (__gu_err)); goto ldv_40534; default: tmp___5 = __get_user_bad(); __gu_val = (unsigned long )tmp___5; } ldv_40534: c32.idx = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& client->auth))), "i" (-14), "0" (__gu_err___0)); goto ldv_40543; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& client->auth))), "i" (-14), "0" (__gu_err___0)); goto ldv_40543; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& client->auth))), "i" (-14), "0" (__gu_err___0)); goto ldv_40543; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& client->auth))), "i" (-14), "0" (__gu_err___0)); goto ldv_40543; default: tmp___6 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___6; } ldv_40543: c32.auth = (int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& client->pid))), "i" (-14), "0" (__gu_err___1)); goto ldv_40552; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& client->pid))), "i" (-14), "0" (__gu_err___1)); goto ldv_40552; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& client->pid))), "i" (-14), "0" (__gu_err___1)); goto ldv_40552; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& client->pid))), "i" (-14), "0" (__gu_err___1)); goto ldv_40552; default: tmp___7 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___7; } ldv_40552: c32.pid = (u32 )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __gu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=q" (__gu_val___2): "m" (*((struct __large_struct *)(& client->uid))), "i" (-14), "0" (__gu_err___2)); goto ldv_40561; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& client->uid))), "i" (-14), "0" (__gu_err___2)); goto ldv_40561; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& client->uid))), "i" (-14), "0" (__gu_err___2)); goto ldv_40561; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& client->uid))), "i" (-14), "0" (__gu_err___2)); goto ldv_40561; default: tmp___8 = __get_user_bad(); __gu_val___2 = (unsigned long )tmp___8; } ldv_40561: c32.uid = (u32 )__gu_val___2; if (__gu_err___2 != 0) { return (-14); } else { __gu_err___3 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=q" (__gu_val___3): "m" (*((struct __large_struct *)(& client->magic))), "i" (-14), "0" (__gu_err___3)); goto ldv_40570; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& client->magic))), "i" (-14), "0" (__gu_err___3)); goto ldv_40570; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& client->magic))), "i" (-14), "0" (__gu_err___3)); goto ldv_40570; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& client->magic))), "i" (-14), "0" (__gu_err___3)); goto ldv_40570; default: tmp___9 = __get_user_bad(); __gu_val___3 = (unsigned long )tmp___9; } ldv_40570: c32.magic = (u32 )__gu_val___3; if (__gu_err___3 != 0) { return (-14); } else { __gu_err___4 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=q" (__gu_val___4): "m" (*((struct __large_struct *)(& client->iocs))), "i" (-14), "0" (__gu_err___4)); goto ldv_40579; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& client->iocs))), "i" (-14), "0" (__gu_err___4)); goto ldv_40579; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& client->iocs))), "i" (-14), "0" (__gu_err___4)); goto ldv_40579; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& client->iocs))), "i" (-14), "0" (__gu_err___4)); goto ldv_40579; default: tmp___10 = __get_user_bad(); __gu_val___4 = (unsigned long )tmp___10; } ldv_40579: c32.iocs = (u32 )__gu_val___4; if (__gu_err___4 != 0) { return (-14); } else { } } } } } } tmp___11 = copy_to_user((void *)argp, (void const *)(& c32), 24UL); if (tmp___11 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_getstats(struct file *file , unsigned int cmd , unsigned long arg ) { drm_stats32_t s32___0 ; drm_stats32_t *argp ; struct drm_stats *stats ; int i ; int err ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; long tmp___4 ; int __gu_err ; unsigned long __gu_val ; int tmp___5 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___6 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___7 ; unsigned long tmp___8 ; { argp = (drm_stats32_t *)arg; tmp = compat_alloc_user_space(248UL); stats = (struct drm_stats *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )stats, 248UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } tmp___4 = drm_ioctl(file, 2163762182U, (unsigned long )stats); err = (int )tmp___4; if (err != 0) { return (err); } else { } __gu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& stats->count))), "i" (-14), "0" (__gu_err)); goto ldv_40606; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& stats->count))), "i" (-14), "0" (__gu_err)); goto ldv_40606; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& stats->count))), "i" (-14), "0" (__gu_err)); goto ldv_40606; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& stats->count))), "i" (-14), "0" (__gu_err)); goto ldv_40606; default: tmp___5 = __get_user_bad(); __gu_val = (unsigned long )tmp___5; } ldv_40606: s32___0.count = (u32 )__gu_val; if (__gu_err != 0) { return (-14); } else { } i = 0; goto ldv_40631; ldv_40630: __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& stats->data[i].value))), "i" (-14), "0" (__gu_err___0)); goto ldv_40615; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& stats->data[i].value))), "i" (-14), "0" (__gu_err___0)); goto ldv_40615; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& stats->data[i].value))), "i" (-14), "0" (__gu_err___0)); goto ldv_40615; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& stats->data[i].value))), "i" (-14), "0" (__gu_err___0)); goto ldv_40615; default: tmp___6 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___6; } ldv_40615: s32___0.data[i].value = (u32 )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& stats->data[i].type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40624; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& stats->data[i].type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40624; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& stats->data[i].type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40624; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& stats->data[i].type))), "i" (-14), "0" (__gu_err___1)); goto ldv_40624; default: tmp___7 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___7; } ldv_40624: s32___0.data[i].type = (enum drm_stat_type )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { } } i = i + 1; ldv_40631: ; if (i <= 14) { goto ldv_40630; } else { } tmp___8 = copy_to_user((void *)argp, (void const *)(& s32___0), 124UL); if (tmp___8 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_addbufs(struct file *file , unsigned int cmd , unsigned long arg ) { drm_buf_desc32_t *argp ; struct drm_buf_desc *buf ; int err ; unsigned long agp_start ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; struct thread_info *tmp___4 ; bool tmp___5 ; int tmp___6 ; long tmp___7 ; int tmp___8 ; int __gu_err ; unsigned long __gu_val ; int tmp___9 ; int __pu_err ; long tmp___10 ; int tmp___11 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___12 ; int __pu_err___0 ; { argp = (drm_buf_desc32_t *)arg; tmp = compat_alloc_user_space(32UL); buf = (struct drm_buf_desc *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )buf, 32UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { tmp___4 = current_thread_info(); tmp___5 = __chk_range_not_ok((unsigned long )argp, 24UL, tmp___4->addr_limit.seg); if (tmp___5) { tmp___6 = 0; } else { tmp___6 = 1; } tmp___7 = ldv__builtin_expect((long )tmp___6, 1L); if (tmp___7 == 0L) { return (-14); } else { } } tmp___8 = __copy_in_user((void *)buf, (void const *)argp, 20U); if (tmp___8 != 0) { return (-14); } else { __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__gu_err)); goto ldv_40655; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__gu_err)); goto ldv_40655; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__gu_err)); goto ldv_40655; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__gu_err)); goto ldv_40655; default: tmp___9 = __get_user_bad(); __gu_val = (unsigned long )tmp___9; } ldv_40655: agp_start = (unsigned long )((unsigned int )__gu_val); if (__gu_err != 0) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (agp_start), "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__pu_err)); goto ldv_40663; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (agp_start), "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__pu_err)); goto ldv_40663; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (agp_start), "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__pu_err)); goto ldv_40663; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (agp_start), "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__pu_err)); goto ldv_40663; default: __put_user_bad(); } ldv_40663: ; if (__pu_err != 0) { return (-14); } else { } } } tmp___10 = drm_ioctl(file, 3223348246U, (unsigned long )buf); err = (int )tmp___10; if (err != 0) { return (err); } else { } tmp___11 = __copy_in_user((void *)argp, (void const *)buf, 20U); if (tmp___11 != 0) { return (-14); } else { __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__gu_err___0)); goto ldv_40672; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__gu_err___0)); goto ldv_40672; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__gu_err___0)); goto ldv_40672; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& buf->agp_start))), "i" (-14), "0" (__gu_err___0)); goto ldv_40672; default: tmp___12 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___12; } ldv_40672: agp_start = __gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned int )agp_start), "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__pu_err___0)); goto ldv_40680; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )agp_start), "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__pu_err___0)); goto ldv_40680; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )agp_start), "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__pu_err___0)); goto ldv_40680; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned int )agp_start), "m" (*((struct __large_struct *)(& argp->agp_start))), "i" (-14), "0" (__pu_err___0)); goto ldv_40680; default: __put_user_bad(); } ldv_40680: ; if (__pu_err___0 != 0) { return (-14); } else { } } } return (0); } } static int compat_drm_markbufs(struct file *file , unsigned int cmd , unsigned long arg ) { drm_buf_desc32_t b32 ; drm_buf_desc32_t *argp ; struct drm_buf_desc *buf ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; long tmp___5 ; { argp = (drm_buf_desc32_t *)arg; tmp = copy_from_user((void *)(& b32), (void const *)argp, 24UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(32UL); buf = (struct drm_buf_desc *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )buf, 32UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (b32.size), "m" (*((struct __large_struct *)(& buf->size))), "i" (-14), "0" (__pu_err)); goto ldv_40697; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (b32.size), "m" (*((struct __large_struct *)(& buf->size))), "i" (-14), "0" (__pu_err)); goto ldv_40697; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (b32.size), "m" (*((struct __large_struct *)(& buf->size))), "i" (-14), "0" (__pu_err)); goto ldv_40697; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (b32.size), "m" (*((struct __large_struct *)(& buf->size))), "i" (-14), "0" (__pu_err)); goto ldv_40697; default: __put_user_bad(); } ldv_40697: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (b32.low_mark), "m" (*((struct __large_struct *)(& buf->low_mark))), "i" (-14), "0" (__pu_err___0)); goto ldv_40705; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (b32.low_mark), "m" (*((struct __large_struct *)(& buf->low_mark))), "i" (-14), "0" (__pu_err___0)); goto ldv_40705; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (b32.low_mark), "m" (*((struct __large_struct *)(& buf->low_mark))), "i" (-14), "0" (__pu_err___0)); goto ldv_40705; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (b32.low_mark), "m" (*((struct __large_struct *)(& buf->low_mark))), "i" (-14), "0" (__pu_err___0)); goto ldv_40705; default: __put_user_bad(); } ldv_40705: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" (b32.high_mark), "m" (*((struct __large_struct *)(& buf->high_mark))), "i" (-14), "0" (__pu_err___1)); goto ldv_40713; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (b32.high_mark), "m" (*((struct __large_struct *)(& buf->high_mark))), "i" (-14), "0" (__pu_err___1)); goto ldv_40713; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (b32.high_mark), "m" (*((struct __large_struct *)(& buf->high_mark))), "i" (-14), "0" (__pu_err___1)); goto ldv_40713; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" (b32.high_mark), "m" (*((struct __large_struct *)(& buf->high_mark))), "i" (-14), "0" (__pu_err___1)); goto ldv_40713; default: __put_user_bad(); } ldv_40713: ; if (__pu_err___1 != 0) { return (-14); } else { } } } tmp___5 = drm_ioctl(file, 1075864599U, (unsigned long )buf); return ((int )tmp___5); } } static int compat_drm_infobufs(struct file *file , unsigned int cmd , unsigned long arg ) { drm_buf_info32_t req32 ; drm_buf_info32_t *argp ; drm_buf_desc32_t *to ; struct drm_buf_info *request ; struct drm_buf_desc *list ; size_t nbytes ; int i ; int err ; int count ; int actual ; unsigned long tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; void *tmp___4 ; struct thread_info *tmp___5 ; bool tmp___6 ; int tmp___7 ; long tmp___8 ; int __pu_err ; int __pu_err___0 ; long tmp___9 ; int __gu_err ; unsigned long __gu_val ; int tmp___10 ; int tmp___11 ; int __pu_err___1 ; { argp = (drm_buf_info32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 8UL); if (tmp != 0UL) { return (-14); } else { } count = req32.count; to = (drm_buf_desc32_t *)((unsigned long )req32.list); if (count < 0) { count = 0; } else { } if (count > 0) { tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )to, (unsigned long )count * 24UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } } else { } nbytes = (unsigned long )count * 32UL + 16UL; tmp___4 = compat_alloc_user_space(nbytes); request = (struct drm_buf_info *)tmp___4; tmp___5 = current_thread_info(); tmp___6 = __chk_range_not_ok((unsigned long )request, nbytes, tmp___5->addr_limit.seg); if (tmp___6) { tmp___7 = 0; } else { tmp___7 = 1; } tmp___8 = ldv__builtin_expect((long )tmp___7, 1L); if (tmp___8 == 0L) { return (-14); } else { } list = (struct drm_buf_desc *)request + 1U; __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40742; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40742; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40742; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40742; default: __put_user_bad(); } ldv_40742: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40750; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40750; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40750; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40750; default: __put_user_bad(); } ldv_40750: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___9 = drm_ioctl(file, 3222299672U, (unsigned long )request); err = (int )tmp___9; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40759; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40759; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40759; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40759; default: tmp___10 = __get_user_bad(); __gu_val = (unsigned long )tmp___10; } ldv_40759: actual = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { } if (count >= actual) { i = 0; goto ldv_40766; ldv_40765: tmp___11 = __copy_in_user((void *)to + (unsigned long )i, (void const *)list + (unsigned long )i, 16U); if (tmp___11 != 0) { return (-14); } else { } i = i + 1; ldv_40766: ; if (i < actual) { goto ldv_40765; } else { } } else { } __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_40770; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_40770; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_40770; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_40770; default: __put_user_bad(); } ldv_40770: ; if (__pu_err___1 != 0) { return (-14); } else { } return (0); } } static int compat_drm_mapbufs(struct file *file , unsigned int cmd , unsigned long arg ) { drm_buf_map32_t *argp ; drm_buf_map32_t req32 ; drm_buf_pub32_t *list32 ; struct drm_buf_map *request ; struct drm_buf_pub *list ; int i ; int err ; int count ; int actual ; size_t nbytes ; void *addr ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int tmp___7 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___8 ; int __pu_err___1 ; int __pu_err___2 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___9 ; int __pu_err___3 ; { argp = (drm_buf_map32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 12UL); if (tmp != 0UL) { return (-14); } else { } count = req32.count; list32 = (drm_buf_pub32_t *)((unsigned long )req32.list); if (count < 0) { return (-22); } else { } nbytes = ((unsigned long )count + 1UL) * 24UL; tmp___0 = compat_alloc_user_space(nbytes); request = (struct drm_buf_map *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, nbytes, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } list = (struct drm_buf_pub *)request + 1U; __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40806; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40806; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40806; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40806; default: __put_user_bad(); } ldv_40806: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40814; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40814; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40814; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (list), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40814; default: __put_user_bad(); } ldv_40814: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 3222823961U, (unsigned long )request); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40823; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40823; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40823; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__gu_err)); goto ldv_40823; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_40823: actual = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { } if (count >= actual) { i = 0; goto ldv_40847; ldv_40846: tmp___7 = __copy_in_user((void *)list32 + (unsigned long )i, (void const *)list + (unsigned long )i, 16U); if (tmp___7 != 0) { return (-14); } else { __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& (list + (unsigned long )i)->address))), "i" (-14), "0" (__gu_err___0)); goto ldv_40832; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& (list + (unsigned long )i)->address))), "i" (-14), "0" (__gu_err___0)); goto ldv_40832; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& (list + (unsigned long )i)->address))), "i" (-14), "0" (__gu_err___0)); goto ldv_40832; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& (list + (unsigned long )i)->address))), "i" (-14), "0" (__gu_err___0)); goto ldv_40832; default: tmp___8 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___8; } ldv_40832: addr = (void *)__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& (list32 + (unsigned long )i)->address))), "i" (-14), "0" (__pu_err___1)); goto ldv_40840; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& (list32 + (unsigned long )i)->address))), "i" (-14), "0" (__pu_err___1)); goto ldv_40840; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& (list32 + (unsigned long )i)->address))), "i" (-14), "0" (__pu_err___1)); goto ldv_40840; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& (list32 + (unsigned long )i)->address))), "i" (-14), "0" (__pu_err___1)); goto ldv_40840; default: __put_user_bad(); } ldv_40840: ; if (__pu_err___1 != 0) { return (-14); } else { } } } i = i + 1; ldv_40847: ; if (i < actual) { goto ldv_40846; } else { } } else { } __pu_err___2 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "iq" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___2)); goto ldv_40851; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___2)); goto ldv_40851; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___2)); goto ldv_40851; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "er" (actual), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___2)); goto ldv_40851; default: __put_user_bad(); } ldv_40851: ; if (__pu_err___2 != 0) { return (-14); } else { __gu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& request->virtual))), "i" (-14), "0" (__gu_err___1)); goto ldv_40860; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->virtual))), "i" (-14), "0" (__gu_err___1)); goto ldv_40860; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->virtual))), "i" (-14), "0" (__gu_err___1)); goto ldv_40860; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->virtual))), "i" (-14), "0" (__gu_err___1)); goto ldv_40860; default: tmp___9 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___9; } ldv_40860: addr = (void *)__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __pu_err___3 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "iq" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& argp->virtual))), "i" (-14), "0" (__pu_err___3)); goto ldv_40868; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& argp->virtual))), "i" (-14), "0" (__pu_err___3)); goto ldv_40868; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& argp->virtual))), "i" (-14), "0" (__pu_err___3)); goto ldv_40868; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "er" ((unsigned int )((long )addr)), "m" (*((struct __large_struct *)(& argp->virtual))), "i" (-14), "0" (__pu_err___3)); goto ldv_40868; default: __put_user_bad(); } ldv_40868: ; if (__pu_err___3 != 0) { return (-14); } else { } } } return (0); } } static int compat_drm_freebufs(struct file *file , unsigned int cmd , unsigned long arg ) { drm_buf_free32_t req32 ; struct drm_buf_free *request ; drm_buf_free32_t *argp ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; { argp = (drm_buf_free32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); request = (struct drm_buf_free *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (req32.count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40889; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40889; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40889; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (req32.count), "m" (*((struct __large_struct *)(& request->count))), "i" (-14), "0" (__pu_err)); goto ldv_40889; default: __put_user_bad(); } ldv_40889: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((int *)((unsigned long )req32.list)), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40897; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((int *)((unsigned long )req32.list)), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40897; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((int *)((unsigned long )req32.list)), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40897; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((int *)((unsigned long )req32.list)), "m" (*((struct __large_struct *)(& request->list))), "i" (-14), "0" (__pu_err___0)); goto ldv_40897; default: __put_user_bad(); } ldv_40897: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 1074816026U, (unsigned long )request); return ((int )tmp___5); } } static int compat_drm_setsareactx(struct file *file , unsigned int cmd , unsigned long arg ) { drm_ctx_priv_map32_t req32 ; struct drm_ctx_priv_map *request ; drm_ctx_priv_map32_t *argp ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; { argp = (drm_ctx_priv_map32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); request = (struct drm_ctx_priv_map *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (req32.ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40918; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40918; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40918; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (req32.ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40918; default: __put_user_bad(); } ldv_40918: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((void *)((unsigned long )req32.handle)), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40926; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((void *)((unsigned long )req32.handle)), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40926; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((void *)((unsigned long )req32.handle)), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40926; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((void *)((unsigned long )req32.handle)), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40926; default: __put_user_bad(); } ldv_40926: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 1074816028U, (unsigned long )request); return ((int )tmp___5); } } static int compat_drm_getsareactx(struct file *file , unsigned int cmd , unsigned long arg ) { struct drm_ctx_priv_map *request ; drm_ctx_priv_map32_t *argp ; int err ; unsigned int ctx_id ; void *handle ; struct thread_info *tmp ; bool tmp___0 ; int tmp___1 ; long tmp___2 ; int __gu_err ; unsigned long __gu_val ; int tmp___3 ; void *tmp___4 ; struct thread_info *tmp___5 ; bool tmp___6 ; int tmp___7 ; long tmp___8 ; int __pu_err ; long tmp___9 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___10 ; int __pu_err___0 ; { argp = (drm_ctx_priv_map32_t *)arg; tmp = current_thread_info(); tmp___0 = __chk_range_not_ok((unsigned long )argp, 8UL, tmp->addr_limit.seg); if (tmp___0) { tmp___1 = 0; } else { tmp___1 = 1; } tmp___2 = ldv__builtin_expect((long )tmp___1, 1L); if (tmp___2 == 0L) { return (-14); } else { __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& argp->ctx_id))), "i" (-14), "0" (__gu_err)); goto ldv_40946; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->ctx_id))), "i" (-14), "0" (__gu_err)); goto ldv_40946; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->ctx_id))), "i" (-14), "0" (__gu_err)); goto ldv_40946; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->ctx_id))), "i" (-14), "0" (__gu_err)); goto ldv_40946; default: tmp___3 = __get_user_bad(); __gu_val = (unsigned long )tmp___3; } ldv_40946: ctx_id = (unsigned int )__gu_val; if (__gu_err != 0) { return (-14); } else { } } tmp___4 = compat_alloc_user_space(16UL); request = (struct drm_ctx_priv_map *)tmp___4; tmp___5 = current_thread_info(); tmp___6 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___5->addr_limit.seg); if (tmp___6) { tmp___7 = 0; } else { tmp___7 = 1; } tmp___8 = ldv__builtin_expect((long )tmp___7, 1L); if (tmp___8 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40955; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40955; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40955; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (ctx_id), "m" (*((struct __large_struct *)(& request->ctx_id))), "i" (-14), "0" (__pu_err)); goto ldv_40955; default: __put_user_bad(); } ldv_40955: ; if (__pu_err != 0) { return (-14); } else { } tmp___9 = drm_ioctl(file, 3222299677U, (unsigned long )request); err = (int )tmp___9; if (err != 0) { return (err); } else { } __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_40964; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_40964; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_40964; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_40964; default: tmp___10 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___10; } ldv_40964: handle = (void *)__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned int )((long )handle)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40972; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )((long )handle)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40972; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )((long )handle)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40972; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned int )((long )handle)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_40972; default: __put_user_bad(); } ldv_40972: ; if (__pu_err___0 != 0) { return (-14); } else { } } return (0); } } static int compat_drm_resctx(struct file *file , unsigned int cmd , unsigned long arg ) { drm_ctx_res32_t *argp ; drm_ctx_res32_t res32 ; struct drm_ctx_res *res ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __pu_err___1 ; { argp = (drm_ctx_res32_t *)arg; tmp = copy_from_user((void *)(& res32), (void const *)argp, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); res = (struct drm_ctx_res *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )res, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (res32.count), "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__pu_err)); goto ldv_40994; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (res32.count), "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__pu_err)); goto ldv_40994; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (res32.count), "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__pu_err)); goto ldv_40994; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (res32.count), "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__pu_err)); goto ldv_40994; default: __put_user_bad(); } ldv_40994: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((struct drm_ctx *)((unsigned long )res32.contexts)), "m" (*((struct __large_struct *)(& res->contexts))), "i" (-14), "0" (__pu_err___0)); goto ldv_41002; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((struct drm_ctx *)((unsigned long )res32.contexts)), "m" (*((struct __large_struct *)(& res->contexts))), "i" (-14), "0" (__pu_err___0)); goto ldv_41002; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((struct drm_ctx *)((unsigned long )res32.contexts)), "m" (*((struct __large_struct *)(& res->contexts))), "i" (-14), "0" (__pu_err___0)); goto ldv_41002; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((struct drm_ctx *)((unsigned long )res32.contexts)), "m" (*((struct __large_struct *)(& res->contexts))), "i" (-14), "0" (__pu_err___0)); goto ldv_41002; default: __put_user_bad(); } ldv_41002: ; if (__pu_err___0 != 0) { return (-14); } else { } } tmp___5 = drm_ioctl(file, 3222299686U, (unsigned long )res); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__gu_err)); goto ldv_41011; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__gu_err)); goto ldv_41011; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__gu_err)); goto ldv_41011; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& res->count))), "i" (-14), "0" (__gu_err)); goto ldv_41011; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_41011: res32.count = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" (res32.count), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_41019; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (res32.count), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_41019; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (res32.count), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_41019; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" (res32.count), "m" (*((struct __large_struct *)(& argp->count))), "i" (-14), "0" (__pu_err___1)); goto ldv_41019; default: __put_user_bad(); } ldv_41019: ; if (__pu_err___1 != 0) { return (-14); } else { } } return (0); } } static int compat_drm_dma(struct file *file , unsigned int cmd , unsigned long arg ) { drm_dma32_t d32 ; drm_dma32_t *argp ; struct drm_dma *d ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; int __pu_err___2 ; int __pu_err___3 ; int __pu_err___4 ; int __pu_err___5 ; int __pu_err___6 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___7 ; int __pu_err___7 ; int __pu_err___8 ; { argp = (drm_dma32_t *)arg; tmp = copy_from_user((void *)(& d32), (void const *)argp, 40UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(64UL); d = (struct drm_dma *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )d, 64UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { } __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (d32.context), "m" (*((struct __large_struct *)(& d->context))), "i" (-14), "0" (__pu_err)); goto ldv_41049; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (d32.context), "m" (*((struct __large_struct *)(& d->context))), "i" (-14), "0" (__pu_err)); goto ldv_41049; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (d32.context), "m" (*((struct __large_struct *)(& d->context))), "i" (-14), "0" (__pu_err)); goto ldv_41049; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (d32.context), "m" (*((struct __large_struct *)(& d->context))), "i" (-14), "0" (__pu_err)); goto ldv_41049; default: __put_user_bad(); } ldv_41049: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (d32.send_count), "m" (*((struct __large_struct *)(& d->send_count))), "i" (-14), "0" (__pu_err___0)); goto ldv_41057; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (d32.send_count), "m" (*((struct __large_struct *)(& d->send_count))), "i" (-14), "0" (__pu_err___0)); goto ldv_41057; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (d32.send_count), "m" (*((struct __large_struct *)(& d->send_count))), "i" (-14), "0" (__pu_err___0)); goto ldv_41057; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (d32.send_count), "m" (*((struct __large_struct *)(& d->send_count))), "i" (-14), "0" (__pu_err___0)); goto ldv_41057; default: __put_user_bad(); } ldv_41057: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" ((int *)((unsigned long )d32.send_indices)), "m" (*((struct __large_struct *)(& d->send_indices))), "i" (-14), "0" (__pu_err___1)); goto ldv_41065; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((int *)((unsigned long )d32.send_indices)), "m" (*((struct __large_struct *)(& d->send_indices))), "i" (-14), "0" (__pu_err___1)); goto ldv_41065; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((int *)((unsigned long )d32.send_indices)), "m" (*((struct __large_struct *)(& d->send_indices))), "i" (-14), "0" (__pu_err___1)); goto ldv_41065; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" ((int *)((unsigned long )d32.send_indices)), "m" (*((struct __large_struct *)(& d->send_indices))), "i" (-14), "0" (__pu_err___1)); goto ldv_41065; default: __put_user_bad(); } ldv_41065: ; if (__pu_err___1 != 0) { return (-14); } else { __pu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "iq" ((int *)((unsigned long )d32.send_sizes)), "m" (*((struct __large_struct *)(& d->send_sizes))), "i" (-14), "0" (__pu_err___2)); goto ldv_41073; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" ((int *)((unsigned long )d32.send_sizes)), "m" (*((struct __large_struct *)(& d->send_sizes))), "i" (-14), "0" (__pu_err___2)); goto ldv_41073; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" ((int *)((unsigned long )d32.send_sizes)), "m" (*((struct __large_struct *)(& d->send_sizes))), "i" (-14), "0" (__pu_err___2)); goto ldv_41073; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "er" ((int *)((unsigned long )d32.send_sizes)), "m" (*((struct __large_struct *)(& d->send_sizes))), "i" (-14), "0" (__pu_err___2)); goto ldv_41073; default: __put_user_bad(); } ldv_41073: ; if (__pu_err___2 != 0) { return (-14); } else { __pu_err___3 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "iq" (d32.flags), "m" (*((struct __large_struct *)(& d->flags))), "i" (-14), "0" (__pu_err___3)); goto ldv_41081; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" (d32.flags), "m" (*((struct __large_struct *)(& d->flags))), "i" (-14), "0" (__pu_err___3)); goto ldv_41081; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "ir" (d32.flags), "m" (*((struct __large_struct *)(& d->flags))), "i" (-14), "0" (__pu_err___3)); goto ldv_41081; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___3): "er" (d32.flags), "m" (*((struct __large_struct *)(& d->flags))), "i" (-14), "0" (__pu_err___3)); goto ldv_41081; default: __put_user_bad(); } ldv_41081: ; if (__pu_err___3 != 0) { return (-14); } else { __pu_err___4 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "iq" (d32.request_count), "m" (*((struct __large_struct *)(& d->request_count))), "i" (-14), "0" (__pu_err___4)); goto ldv_41089; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "ir" (d32.request_count), "m" (*((struct __large_struct *)(& d->request_count))), "i" (-14), "0" (__pu_err___4)); goto ldv_41089; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "ir" (d32.request_count), "m" (*((struct __large_struct *)(& d->request_count))), "i" (-14), "0" (__pu_err___4)); goto ldv_41089; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___4): "er" (d32.request_count), "m" (*((struct __large_struct *)(& d->request_count))), "i" (-14), "0" (__pu_err___4)); goto ldv_41089; default: __put_user_bad(); } ldv_41089: ; if (__pu_err___4 != 0) { return (-14); } else { __pu_err___5 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___5): "iq" ((int *)((unsigned long )d32.request_indices)), "m" (*((struct __large_struct *)(& d->request_indices))), "i" (-14), "0" (__pu_err___5)); goto ldv_41097; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___5): "ir" ((int *)((unsigned long )d32.request_indices)), "m" (*((struct __large_struct *)(& d->request_indices))), "i" (-14), "0" (__pu_err___5)); goto ldv_41097; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___5): "ir" ((int *)((unsigned long )d32.request_indices)), "m" (*((struct __large_struct *)(& d->request_indices))), "i" (-14), "0" (__pu_err___5)); goto ldv_41097; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___5): "er" ((int *)((unsigned long )d32.request_indices)), "m" (*((struct __large_struct *)(& d->request_indices))), "i" (-14), "0" (__pu_err___5)); goto ldv_41097; default: __put_user_bad(); } ldv_41097: ; if (__pu_err___5 != 0) { return (-14); } else { __pu_err___6 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___6): "iq" ((int *)((unsigned long )d32.request_sizes)), "m" (*((struct __large_struct *)(& d->request_sizes))), "i" (-14), "0" (__pu_err___6)); goto ldv_41105; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___6): "ir" ((int *)((unsigned long )d32.request_sizes)), "m" (*((struct __large_struct *)(& d->request_sizes))), "i" (-14), "0" (__pu_err___6)); goto ldv_41105; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___6): "ir" ((int *)((unsigned long )d32.request_sizes)), "m" (*((struct __large_struct *)(& d->request_sizes))), "i" (-14), "0" (__pu_err___6)); goto ldv_41105; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___6): "er" ((int *)((unsigned long )d32.request_sizes)), "m" (*((struct __large_struct *)(& d->request_sizes))), "i" (-14), "0" (__pu_err___6)); goto ldv_41105; default: __put_user_bad(); } ldv_41105: ; if (__pu_err___6 != 0) { return (-14); } else { } } } } } } } } tmp___5 = drm_ioctl(file, 3225445417U, (unsigned long )d); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& d->request_size))), "i" (-14), "0" (__gu_err)); goto ldv_41114; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& d->request_size))), "i" (-14), "0" (__gu_err)); goto ldv_41114; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& d->request_size))), "i" (-14), "0" (__gu_err)); goto ldv_41114; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& d->request_size))), "i" (-14), "0" (__gu_err)); goto ldv_41114; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_41114: d32.request_size = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& d->granted_count))), "i" (-14), "0" (__gu_err___0)); goto ldv_41123; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& d->granted_count))), "i" (-14), "0" (__gu_err___0)); goto ldv_41123; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& d->granted_count))), "i" (-14), "0" (__gu_err___0)); goto ldv_41123; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& d->granted_count))), "i" (-14), "0" (__gu_err___0)); goto ldv_41123; default: tmp___7 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___7; } ldv_41123: d32.granted_count = (int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __pu_err___7 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___7): "iq" (d32.request_size), "m" (*((struct __large_struct *)(& argp->request_size))), "i" (-14), "0" (__pu_err___7)); goto ldv_41131; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___7): "ir" (d32.request_size), "m" (*((struct __large_struct *)(& argp->request_size))), "i" (-14), "0" (__pu_err___7)); goto ldv_41131; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___7): "ir" (d32.request_size), "m" (*((struct __large_struct *)(& argp->request_size))), "i" (-14), "0" (__pu_err___7)); goto ldv_41131; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___7): "er" (d32.request_size), "m" (*((struct __large_struct *)(& argp->request_size))), "i" (-14), "0" (__pu_err___7)); goto ldv_41131; default: __put_user_bad(); } ldv_41131: ; if (__pu_err___7 != 0) { return (-14); } else { __pu_err___8 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___8): "iq" (d32.granted_count), "m" (*((struct __large_struct *)(& argp->granted_count))), "i" (-14), "0" (__pu_err___8)); goto ldv_41139; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___8): "ir" (d32.granted_count), "m" (*((struct __large_struct *)(& argp->granted_count))), "i" (-14), "0" (__pu_err___8)); goto ldv_41139; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___8): "ir" (d32.granted_count), "m" (*((struct __large_struct *)(& argp->granted_count))), "i" (-14), "0" (__pu_err___8)); goto ldv_41139; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___8): "er" (d32.granted_count), "m" (*((struct __large_struct *)(& argp->granted_count))), "i" (-14), "0" (__pu_err___8)); goto ldv_41139; default: __put_user_bad(); } ldv_41139: ; if (__pu_err___8 != 0) { return (-14); } else { } } } } return (0); } } static int compat_drm_agp_enable(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_mode32_t *argp ; drm_agp_mode32_t m32 ; struct drm_agp_mode *mode ; int __ret_gu ; register unsigned long __val_gu ; void *tmp ; int __ret_pu ; unsigned long __pu_val ; long tmp___0 ; { argp = (drm_agp_mode32_t *)arg; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 734); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->mode), "i" (4UL)); m32.mode = (unsigned int )__val_gu; if (__ret_gu != 0) { return (-14); } else { } tmp = compat_alloc_user_space(8UL); mode = (struct drm_agp_mode *)tmp; __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 738); __pu_val = (unsigned long )m32.mode; switch (8UL) { case 1UL: __asm__ volatile ("call __put_user_1": "=a" (__ret_pu): "0" (__pu_val), "c" (& mode->mode): "ebx"); goto ldv_41162; case 2UL: __asm__ volatile ("call __put_user_2": "=a" (__ret_pu): "0" (__pu_val), "c" (& mode->mode): "ebx"); goto ldv_41162; case 4UL: __asm__ volatile ("call __put_user_4": "=a" (__ret_pu): "0" (__pu_val), "c" (& mode->mode): "ebx"); goto ldv_41162; case 8UL: __asm__ volatile ("call __put_user_8": "=a" (__ret_pu): "0" (__pu_val), "c" (& mode->mode): "ebx"); goto ldv_41162; default: __asm__ volatile ("call __put_user_X": "=a" (__ret_pu): "0" (__pu_val), "c" (& mode->mode): "ebx"); goto ldv_41162; } ldv_41162: ; if (__ret_pu != 0) { return (-14); } else { } tmp___0 = drm_ioctl(file, 1074291762U, (unsigned long )mode); return ((int )tmp___0); } } static int compat_drm_agp_info(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_info32_t *argp ; drm_agp_info32_t i32 ; struct drm_agp_info *info ; int err ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; long tmp___4 ; int __gu_err ; unsigned long __gu_val ; int tmp___5 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___6 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___7 ; int __gu_err___2 ; unsigned long __gu_val___2 ; int tmp___8 ; int __gu_err___3 ; unsigned long __gu_val___3 ; int tmp___9 ; int __gu_err___4 ; unsigned long __gu_val___4 ; int tmp___10 ; int __gu_err___5 ; unsigned long __gu_val___5 ; int tmp___11 ; int __gu_err___6 ; unsigned long __gu_val___6 ; int tmp___12 ; int __gu_err___7 ; unsigned long __gu_val___7 ; int tmp___13 ; unsigned long tmp___14 ; { argp = (drm_agp_info32_t *)arg; tmp = compat_alloc_user_space(56UL); info = (struct drm_agp_info *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )info, 56UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { } tmp___4 = drm_ioctl(file, 2151179315U, (unsigned long )info); err = (int )tmp___4; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& info->agp_version_major))), "i" (-14), "0" (__gu_err)); goto ldv_41192; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& info->agp_version_major))), "i" (-14), "0" (__gu_err)); goto ldv_41192; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& info->agp_version_major))), "i" (-14), "0" (__gu_err)); goto ldv_41192; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& info->agp_version_major))), "i" (-14), "0" (__gu_err)); goto ldv_41192; default: tmp___5 = __get_user_bad(); __gu_val = (unsigned long )tmp___5; } ldv_41192: i32.agp_version_major = (int )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& info->agp_version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_41201; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& info->agp_version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_41201; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& info->agp_version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_41201; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& info->agp_version_minor))), "i" (-14), "0" (__gu_err___0)); goto ldv_41201; default: tmp___6 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___6; } ldv_41201: i32.agp_version_minor = (int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& info->mode))), "i" (-14), "0" (__gu_err___1)); goto ldv_41210; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& info->mode))), "i" (-14), "0" (__gu_err___1)); goto ldv_41210; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& info->mode))), "i" (-14), "0" (__gu_err___1)); goto ldv_41210; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& info->mode))), "i" (-14), "0" (__gu_err___1)); goto ldv_41210; default: tmp___7 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___7; } ldv_41210: i32.mode = (u32 )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __gu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=q" (__gu_val___2): "m" (*((struct __large_struct *)(& info->aperture_base))), "i" (-14), "0" (__gu_err___2)); goto ldv_41219; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& info->aperture_base))), "i" (-14), "0" (__gu_err___2)); goto ldv_41219; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& info->aperture_base))), "i" (-14), "0" (__gu_err___2)); goto ldv_41219; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& info->aperture_base))), "i" (-14), "0" (__gu_err___2)); goto ldv_41219; default: tmp___8 = __get_user_bad(); __gu_val___2 = (unsigned long )tmp___8; } ldv_41219: i32.aperture_base = (u32 )__gu_val___2; if (__gu_err___2 != 0) { return (-14); } else { __gu_err___3 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=q" (__gu_val___3): "m" (*((struct __large_struct *)(& info->aperture_size))), "i" (-14), "0" (__gu_err___3)); goto ldv_41228; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& info->aperture_size))), "i" (-14), "0" (__gu_err___3)); goto ldv_41228; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& info->aperture_size))), "i" (-14), "0" (__gu_err___3)); goto ldv_41228; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___3), "=r" (__gu_val___3): "m" (*((struct __large_struct *)(& info->aperture_size))), "i" (-14), "0" (__gu_err___3)); goto ldv_41228; default: tmp___9 = __get_user_bad(); __gu_val___3 = (unsigned long )tmp___9; } ldv_41228: i32.aperture_size = (u32 )__gu_val___3; if (__gu_err___3 != 0) { return (-14); } else { __gu_err___4 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=q" (__gu_val___4): "m" (*((struct __large_struct *)(& info->memory_allowed))), "i" (-14), "0" (__gu_err___4)); goto ldv_41237; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& info->memory_allowed))), "i" (-14), "0" (__gu_err___4)); goto ldv_41237; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& info->memory_allowed))), "i" (-14), "0" (__gu_err___4)); goto ldv_41237; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___4), "=r" (__gu_val___4): "m" (*((struct __large_struct *)(& info->memory_allowed))), "i" (-14), "0" (__gu_err___4)); goto ldv_41237; default: tmp___10 = __get_user_bad(); __gu_val___4 = (unsigned long )tmp___10; } ldv_41237: i32.memory_allowed = (u32 )__gu_val___4; if (__gu_err___4 != 0) { return (-14); } else { __gu_err___5 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___5), "=q" (__gu_val___5): "m" (*((struct __large_struct *)(& info->memory_used))), "i" (-14), "0" (__gu_err___5)); goto ldv_41246; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___5), "=r" (__gu_val___5): "m" (*((struct __large_struct *)(& info->memory_used))), "i" (-14), "0" (__gu_err___5)); goto ldv_41246; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___5), "=r" (__gu_val___5): "m" (*((struct __large_struct *)(& info->memory_used))), "i" (-14), "0" (__gu_err___5)); goto ldv_41246; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___5), "=r" (__gu_val___5): "m" (*((struct __large_struct *)(& info->memory_used))), "i" (-14), "0" (__gu_err___5)); goto ldv_41246; default: tmp___11 = __get_user_bad(); __gu_val___5 = (unsigned long )tmp___11; } ldv_41246: i32.memory_used = (u32 )__gu_val___5; if (__gu_err___5 != 0) { return (-14); } else { __gu_err___6 = 0; switch (2UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___6), "=q" (__gu_val___6): "m" (*((struct __large_struct *)(& info->id_vendor))), "i" (-14), "0" (__gu_err___6)); goto ldv_41255; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___6), "=r" (__gu_val___6): "m" (*((struct __large_struct *)(& info->id_vendor))), "i" (-14), "0" (__gu_err___6)); goto ldv_41255; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___6), "=r" (__gu_val___6): "m" (*((struct __large_struct *)(& info->id_vendor))), "i" (-14), "0" (__gu_err___6)); goto ldv_41255; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___6), "=r" (__gu_val___6): "m" (*((struct __large_struct *)(& info->id_vendor))), "i" (-14), "0" (__gu_err___6)); goto ldv_41255; default: tmp___12 = __get_user_bad(); __gu_val___6 = (unsigned long )tmp___12; } ldv_41255: i32.id_vendor = (unsigned short )__gu_val___6; if (__gu_err___6 != 0) { return (-14); } else { __gu_err___7 = 0; switch (2UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___7), "=q" (__gu_val___7): "m" (*((struct __large_struct *)(& info->id_device))), "i" (-14), "0" (__gu_err___7)); goto ldv_41264; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___7), "=r" (__gu_val___7): "m" (*((struct __large_struct *)(& info->id_device))), "i" (-14), "0" (__gu_err___7)); goto ldv_41264; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___7), "=r" (__gu_val___7): "m" (*((struct __large_struct *)(& info->id_device))), "i" (-14), "0" (__gu_err___7)); goto ldv_41264; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___7), "=r" (__gu_val___7): "m" (*((struct __large_struct *)(& info->id_device))), "i" (-14), "0" (__gu_err___7)); goto ldv_41264; default: tmp___13 = __get_user_bad(); __gu_val___7 = (unsigned long )tmp___13; } ldv_41264: i32.id_device = (unsigned short )__gu_val___7; if (__gu_err___7 != 0) { return (-14); } else { } } } } } } } } } tmp___14 = copy_to_user((void *)argp, (void const *)(& i32), 32UL); if (tmp___14 != 0UL) { return (-14); } else { } return (0); } } static int compat_drm_agp_alloc(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_buffer32_t *argp ; drm_agp_buffer32_t req32 ; struct drm_agp_buffer *request ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___7 ; unsigned long tmp___8 ; { argp = (drm_agp_buffer32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 16UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(32UL); request = (struct drm_agp_buffer *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 32UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )req32.size), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41288; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )req32.size), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41288; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )req32.size), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41288; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )req32.size), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41288; default: __put_user_bad(); } ldv_41288: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned long )req32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41296; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )req32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41296; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )req32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41296; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned long )req32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41296; default: __put_user_bad(); } ldv_41296: ; if (__pu_err___0 != 0) { return (-14); } else { } } } tmp___5 = drm_ioctl(file, 3223348276U, (unsigned long )request); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41305; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41305; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41305; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41305; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_41305: req32.handle = (u32 )__gu_val; if (__gu_err != 0) { drm_ioctl(file, 1075864629U, (unsigned long )request); return (-14); } else { __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& request->physical))), "i" (-14), "0" (__gu_err___0)); goto ldv_41314; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->physical))), "i" (-14), "0" (__gu_err___0)); goto ldv_41314; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->physical))), "i" (-14), "0" (__gu_err___0)); goto ldv_41314; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->physical))), "i" (-14), "0" (__gu_err___0)); goto ldv_41314; default: tmp___7 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___7; } ldv_41314: req32.physical = (u32 )__gu_val___0; if (__gu_err___0 != 0) { drm_ioctl(file, 1075864629U, (unsigned long )request); return (-14); } else { tmp___8 = copy_to_user((void *)argp, (void const *)(& req32), 16UL); if (tmp___8 != 0UL) { drm_ioctl(file, 1075864629U, (unsigned long )request); return (-14); } else { } } } return (0); } } static int compat_drm_agp_free(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_buffer32_t *argp ; struct drm_agp_buffer *request ; u32 handle ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; int __ret_gu ; register unsigned long __val_gu ; int __pu_err ; long tmp___4 ; { argp = (drm_agp_buffer32_t *)arg; tmp = compat_alloc_user_space(32UL); request = (struct drm_agp_buffer *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )request, 32UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 838); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->handle), "i" (4UL)); handle = (unsigned int )__val_gu; if (__ret_gu != 0) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41334; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41334; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41334; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41334; default: __put_user_bad(); } ldv_41334: ; if (__pu_err != 0) { return (-14); } else { } } } tmp___4 = drm_ioctl(file, 1075864629U, (unsigned long )request); return ((int )tmp___4); } } static int compat_drm_agp_bind(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_binding32_t *argp ; drm_agp_binding32_t req32 ; struct drm_agp_binding *request ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; long tmp___5 ; { argp = (drm_agp_binding32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 8UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(16UL); request = (struct drm_agp_binding *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )req32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41355; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )req32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41355; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )req32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41355; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )req32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41355; default: __put_user_bad(); } ldv_41355: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned long )req32.offset), "m" (*((struct __large_struct *)(& request->offset))), "i" (-14), "0" (__pu_err___0)); goto ldv_41363; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )req32.offset), "m" (*((struct __large_struct *)(& request->offset))), "i" (-14), "0" (__pu_err___0)); goto ldv_41363; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned long )req32.offset), "m" (*((struct __large_struct *)(& request->offset))), "i" (-14), "0" (__pu_err___0)); goto ldv_41363; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned long )req32.offset), "m" (*((struct __large_struct *)(& request->offset))), "i" (-14), "0" (__pu_err___0)); goto ldv_41363; default: __put_user_bad(); } ldv_41363: ; if (__pu_err___0 != 0) { return (-14); } else { } } } tmp___5 = drm_ioctl(file, 1074816054U, (unsigned long )request); return ((int )tmp___5); } } static int compat_drm_agp_unbind(struct file *file , unsigned int cmd , unsigned long arg ) { drm_agp_binding32_t *argp ; struct drm_agp_binding *request ; u32 handle ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; int __ret_gu ; register unsigned long __val_gu ; int __pu_err ; long tmp___4 ; { argp = (drm_agp_binding32_t *)arg; tmp = compat_alloc_user_space(16UL); request = (struct drm_agp_binding *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { __might_fault("/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/10551/dscv_tempdir/dscv/ri/08_1a/drivers/gpu/drm/drm_ioc32.c", 878); __asm__ volatile ("call __get_user_%P3": "=a" (__ret_gu), "=r" (__val_gu): "0" (& argp->handle), "i" (4UL)); handle = (unsigned int )__val_gu; if (__ret_gu != 0) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41383; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41383; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41383; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" ((unsigned long )handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41383; default: __put_user_bad(); } ldv_41383: ; if (__pu_err != 0) { return (-14); } else { } } } tmp___4 = drm_ioctl(file, 1074816055U, (unsigned long )request); return ((int )tmp___4); } } static int compat_drm_sg_alloc(struct file *file , unsigned int cmd , unsigned long arg ) { drm_scatter_gather32_t *argp ; struct drm_scatter_gather *request ; int err ; unsigned long x ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; struct thread_info *tmp___4 ; bool tmp___5 ; int tmp___6 ; long tmp___7 ; int __gu_err ; unsigned long __gu_val ; int tmp___8 ; int __pu_err ; long tmp___9 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___10 ; int __pu_err___0 ; { argp = (drm_scatter_gather32_t *)arg; tmp = compat_alloc_user_space(16UL); request = (struct drm_scatter_gather *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { tmp___4 = current_thread_info(); tmp___5 = __chk_range_not_ok((unsigned long )argp, 8UL, tmp___4->addr_limit.seg); if (tmp___5) { tmp___6 = 0; } else { tmp___6 = 1; } tmp___7 = ldv__builtin_expect((long )tmp___6, 1L); if (tmp___7 == 0L) { return (-14); } else { __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& argp->size))), "i" (-14), "0" (__gu_err)); goto ldv_41407; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->size))), "i" (-14), "0" (__gu_err)); goto ldv_41407; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->size))), "i" (-14), "0" (__gu_err)); goto ldv_41407; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->size))), "i" (-14), "0" (__gu_err)); goto ldv_41407; default: tmp___8 = __get_user_bad(); __gu_val = (unsigned long )tmp___8; } ldv_41407: x = (unsigned long )((unsigned int )__gu_val); if (__gu_err != 0) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (x), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41415; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (x), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41415; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (x), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41415; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (x), "m" (*((struct __large_struct *)(& request->size))), "i" (-14), "0" (__pu_err)); goto ldv_41415; default: __put_user_bad(); } ldv_41415: ; if (__pu_err != 0) { return (-14); } else { } } } } tmp___9 = drm_ioctl(file, 3222299704U, (unsigned long )request); err = (int )tmp___9; if (err != 0) { return (err); } else { } __gu_err___0 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_41424; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_41424; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_41424; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__gu_err___0)); goto ldv_41424; default: tmp___10 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___10; } ldv_41424: x = __gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" ((unsigned int )(x >> 12)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_41432; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )(x >> 12)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_41432; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" ((unsigned int )(x >> 12)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_41432; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" ((unsigned int )(x >> 12)), "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__pu_err___0)); goto ldv_41432; default: __put_user_bad(); } ldv_41432: ; if (__pu_err___0 != 0) { return (-14); } else { } } return (0); } } static int compat_drm_sg_free(struct file *file , unsigned int cmd , unsigned long arg ) { drm_scatter_gather32_t *argp ; struct drm_scatter_gather *request ; unsigned long x ; void *tmp ; struct thread_info *tmp___0 ; bool tmp___1 ; int tmp___2 ; long tmp___3 ; struct thread_info *tmp___4 ; bool tmp___5 ; int tmp___6 ; long tmp___7 ; int __gu_err ; unsigned long __gu_val ; int tmp___8 ; int __pu_err ; long tmp___9 ; { argp = (drm_scatter_gather32_t *)arg; tmp = compat_alloc_user_space(16UL); request = (struct drm_scatter_gather *)tmp; tmp___0 = current_thread_info(); tmp___1 = __chk_range_not_ok((unsigned long )request, 16UL, tmp___0->addr_limit.seg); if (tmp___1) { tmp___2 = 0; } else { tmp___2 = 1; } tmp___3 = ldv__builtin_expect((long )tmp___2, 1L); if (tmp___3 == 0L) { return (-14); } else { tmp___4 = current_thread_info(); tmp___5 = __chk_range_not_ok((unsigned long )argp, 8UL, tmp___4->addr_limit.seg); if (tmp___5) { tmp___6 = 0; } else { tmp___6 = 1; } tmp___7 = ldv__builtin_expect((long )tmp___6, 1L); if (tmp___7 == 0L) { return (-14); } else { __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41451; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41451; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41451; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& argp->handle))), "i" (-14), "0" (__gu_err)); goto ldv_41451; default: tmp___8 = __get_user_bad(); __gu_val = (unsigned long )tmp___8; } ldv_41451: x = (unsigned long )((unsigned int )__gu_val); if (__gu_err != 0) { return (-14); } else { __pu_err = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (x << 12), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41459; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (x << 12), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41459; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (x << 12), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41459; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (x << 12), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41459; default: __put_user_bad(); } ldv_41459: ; if (__pu_err != 0) { return (-14); } else { } } } } tmp___9 = drm_ioctl(file, 1074816057U, (unsigned long )request); return ((int )tmp___9); } } static int compat_drm_update_draw(struct file *file , unsigned int cmd , unsigned long arg ) { drm_update_draw32_t update32 ; struct drm_update_draw *request ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; int __pu_err___2 ; long tmp___5 ; { tmp = copy_from_user((void *)(& update32), (void const *)arg, 20UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(24UL); request = (struct drm_update_draw *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 24UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (update32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41482; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (update32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41482; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (update32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41482; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (update32.handle), "m" (*((struct __large_struct *)(& request->handle))), "i" (-14), "0" (__pu_err)); goto ldv_41482; default: __put_user_bad(); } ldv_41482: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (update32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41490; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (update32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41490; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (update32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41490; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (update32.type), "m" (*((struct __large_struct *)(& request->type))), "i" (-14), "0" (__pu_err___0)); goto ldv_41490; default: __put_user_bad(); } ldv_41490: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" (update32.num), "m" (*((struct __large_struct *)(& request->num))), "i" (-14), "0" (__pu_err___1)); goto ldv_41498; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (update32.num), "m" (*((struct __large_struct *)(& request->num))), "i" (-14), "0" (__pu_err___1)); goto ldv_41498; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" (update32.num), "m" (*((struct __large_struct *)(& request->num))), "i" (-14), "0" (__pu_err___1)); goto ldv_41498; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" (update32.num), "m" (*((struct __large_struct *)(& request->num))), "i" (-14), "0" (__pu_err___1)); goto ldv_41498; default: __put_user_bad(); } ldv_41498: ; if (__pu_err___1 != 0) { return (-14); } else { __pu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "iq" (update32.data), "m" (*((struct __large_struct *)(& request->data))), "i" (-14), "0" (__pu_err___2)); goto ldv_41506; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (update32.data), "m" (*((struct __large_struct *)(& request->data))), "i" (-14), "0" (__pu_err___2)); goto ldv_41506; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "ir" (update32.data), "m" (*((struct __large_struct *)(& request->data))), "i" (-14), "0" (__pu_err___2)); goto ldv_41506; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___2): "er" (update32.data), "m" (*((struct __large_struct *)(& request->data))), "i" (-14), "0" (__pu_err___2)); goto ldv_41506; default: __put_user_bad(); } ldv_41506: ; if (__pu_err___2 != 0) { return (-14); } else { } } } } } tmp___5 = drm_ioctl(file, 1075340351U, (unsigned long )request); err = (int )tmp___5; return (err); } } static int compat_drm_wait_vblank(struct file *file , unsigned int cmd , unsigned long arg ) { drm_wait_vblank32_t *argp ; drm_wait_vblank32_t req32 ; union drm_wait_vblank *request ; int err ; unsigned long tmp ; void *tmp___0 ; struct thread_info *tmp___1 ; bool tmp___2 ; int tmp___3 ; long tmp___4 ; int __pu_err ; int __pu_err___0 ; int __pu_err___1 ; long tmp___5 ; int __gu_err ; unsigned long __gu_val ; int tmp___6 ; int __gu_err___0 ; unsigned long __gu_val___0 ; int tmp___7 ; int __gu_err___1 ; unsigned long __gu_val___1 ; int tmp___8 ; int __gu_err___2 ; unsigned long __gu_val___2 ; int tmp___9 ; unsigned long tmp___10 ; { argp = (drm_wait_vblank32_t *)arg; tmp = copy_from_user((void *)(& req32), (void const *)argp, 16UL); if (tmp != 0UL) { return (-14); } else { } tmp___0 = compat_alloc_user_space(24UL); request = (union drm_wait_vblank *)tmp___0; tmp___1 = current_thread_info(); tmp___2 = __chk_range_not_ok((unsigned long )request, 24UL, tmp___1->addr_limit.seg); if (tmp___2) { tmp___3 = 0; } else { tmp___3 = 1; } tmp___4 = ldv__builtin_expect((long )tmp___3, 1L); if (tmp___4 == 0L) { return (-14); } else { __pu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "iq" (req32.request.type), "m" (*((struct __large_struct *)(& request->request.type))), "i" (-14), "0" (__pu_err)); goto ldv_41537; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.request.type), "m" (*((struct __large_struct *)(& request->request.type))), "i" (-14), "0" (__pu_err)); goto ldv_41537; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "ir" (req32.request.type), "m" (*((struct __large_struct *)(& request->request.type))), "i" (-14), "0" (__pu_err)); goto ldv_41537; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err): "er" (req32.request.type), "m" (*((struct __large_struct *)(& request->request.type))), "i" (-14), "0" (__pu_err)); goto ldv_41537; default: __put_user_bad(); } ldv_41537: ; if (__pu_err != 0) { return (-14); } else { __pu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "iq" (req32.request.sequence), "m" (*((struct __large_struct *)(& request->request.sequence))), "i" (-14), "0" (__pu_err___0)); goto ldv_41545; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (req32.request.sequence), "m" (*((struct __large_struct *)(& request->request.sequence))), "i" (-14), "0" (__pu_err___0)); goto ldv_41545; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "ir" (req32.request.sequence), "m" (*((struct __large_struct *)(& request->request.sequence))), "i" (-14), "0" (__pu_err___0)); goto ldv_41545; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___0): "er" (req32.request.sequence), "m" (*((struct __large_struct *)(& request->request.sequence))), "i" (-14), "0" (__pu_err___0)); goto ldv_41545; default: __put_user_bad(); } ldv_41545: ; if (__pu_err___0 != 0) { return (-14); } else { __pu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %b1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "iq" ((unsigned long )req32.request.signal), "m" (*((struct __large_struct *)(& request->request.signal))), "i" (-14), "0" (__pu_err___1)); goto ldv_41553; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %w1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned long )req32.request.signal), "m" (*((struct __large_struct *)(& request->request.signal))), "i" (-14), "0" (__pu_err___1)); goto ldv_41553; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %k1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "ir" ((unsigned long )req32.request.signal), "m" (*((struct __large_struct *)(& request->request.signal))), "i" (-14), "0" (__pu_err___1)); goto ldv_41553; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %1,%2\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__pu_err___1): "er" ((unsigned long )req32.request.signal), "m" (*((struct __large_struct *)(& request->request.signal))), "i" (-14), "0" (__pu_err___1)); goto ldv_41553; default: __put_user_bad(); } ldv_41553: ; if (__pu_err___1 != 0) { return (-14); } else { } } } } tmp___5 = drm_ioctl(file, 3222823994U, (unsigned long )request); err = (int )tmp___5; if (err != 0) { return (err); } else { } __gu_err = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=q" (__gu_val): "m" (*((struct __large_struct *)(& request->reply.type))), "i" (-14), "0" (__gu_err)); goto ldv_41562; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->reply.type))), "i" (-14), "0" (__gu_err)); goto ldv_41562; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->reply.type))), "i" (-14), "0" (__gu_err)); goto ldv_41562; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err), "=r" (__gu_val): "m" (*((struct __large_struct *)(& request->reply.type))), "i" (-14), "0" (__gu_err)); goto ldv_41562; default: tmp___6 = __get_user_bad(); __gu_val = (unsigned long )tmp___6; } ldv_41562: req32.reply.type = (enum drm_vblank_seq_type )__gu_val; if (__gu_err != 0) { return (-14); } else { __gu_err___0 = 0; switch (4UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=q" (__gu_val___0): "m" (*((struct __large_struct *)(& request->reply.sequence))), "i" (-14), "0" (__gu_err___0)); goto ldv_41571; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->reply.sequence))), "i" (-14), "0" (__gu_err___0)); goto ldv_41571; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->reply.sequence))), "i" (-14), "0" (__gu_err___0)); goto ldv_41571; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___0), "=r" (__gu_val___0): "m" (*((struct __large_struct *)(& request->reply.sequence))), "i" (-14), "0" (__gu_err___0)); goto ldv_41571; default: tmp___7 = __get_user_bad(); __gu_val___0 = (unsigned long )tmp___7; } ldv_41571: req32.reply.sequence = (unsigned int )__gu_val___0; if (__gu_err___0 != 0) { return (-14); } else { __gu_err___1 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=q" (__gu_val___1): "m" (*((struct __large_struct *)(& request->reply.tval_sec))), "i" (-14), "0" (__gu_err___1)); goto ldv_41580; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->reply.tval_sec))), "i" (-14), "0" (__gu_err___1)); goto ldv_41580; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->reply.tval_sec))), "i" (-14), "0" (__gu_err___1)); goto ldv_41580; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___1), "=r" (__gu_val___1): "m" (*((struct __large_struct *)(& request->reply.tval_sec))), "i" (-14), "0" (__gu_err___1)); goto ldv_41580; default: tmp___8 = __get_user_bad(); __gu_val___1 = (unsigned long )tmp___8; } ldv_41580: req32.reply.tval_sec = (s32 )__gu_val___1; if (__gu_err___1 != 0) { return (-14); } else { __gu_err___2 = 0; switch (8UL) { case 1UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovb %2,%b1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorb %b1,%b1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=q" (__gu_val___2): "m" (*((struct __large_struct *)(& request->reply.tval_usec))), "i" (-14), "0" (__gu_err___2)); goto ldv_41589; case 2UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovw %2,%w1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorw %w1,%w1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& request->reply.tval_usec))), "i" (-14), "0" (__gu_err___2)); goto ldv_41589; case 4UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovl %2,%k1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorl %k1,%k1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& request->reply.tval_usec))), "i" (-14), "0" (__gu_err___2)); goto ldv_41589; case 8UL: __asm__ volatile ("661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xcb\n6651:\n\t.popsection\n1:\tmovq %2,%1\n2: 661:\n\t\n662:\n.skip -(((6651f-6641f)-(662b-661b)) > 0) * ((6651f-6641f)-(662b-661b)),0x90\n663:\n.pushsection .altinstructions,\"a\"\n .long 661b - .\n .long 6641f - .\n .word ( 9*32+20)\n .byte 663b-661b\n .byte 6651f-6641f\n .byte 663b-662b\n.popsection\n.pushsection .altinstr_replacement, \"ax\"\n6641:\n\t.byte 0x0f,0x01,0xca\n6651:\n\t.popsection\n.section .fixup,\"ax\"\n3:\tmov %3,%0\n\txorq %1,%1\n\tjmp 2b\n.previous\n .pushsection \"__ex_table\",\"a\"\n .balign 8\n .long (1b) - .\n .long (3b) - .\n .popsection\n": "=r" (__gu_err___2), "=r" (__gu_val___2): "m" (*((struct __large_struct *)(& request->reply.tval_usec))), "i" (-14), "0" (__gu_err___2)); goto ldv_41589; default: tmp___9 = __get_user_bad(); __gu_val___2 = (unsigned long )tmp___9; } ldv_41589: req32.reply.tval_usec = (s32 )__gu_val___2; if (__gu_err___2 != 0) { return (-14); } else { } } } } tmp___10 = copy_to_user((void *)argp, (void const *)(& req32), 16UL); if (tmp___10 != 0UL) { return (-14); } else { } return (0); } } static drm_ioctl_compat_t *drm_compat_ioctls[64U] = { & compat_drm_version, & compat_drm_getunique, 0, 0, & compat_drm_getmap, & compat_drm_getclient, & compat_drm_getstats, 0, 0, 0, 0, 0, 0, 0, 0, 0, & compat_drm_setunique, 0, 0, 0, 0, & compat_drm_addmap, & compat_drm_addbufs, & compat_drm_markbufs, & compat_drm_infobufs, & compat_drm_mapbufs, & compat_drm_freebufs, & compat_drm_rmmap, & compat_drm_setsareactx, & compat_drm_getsareactx, 0, 0, 0, 0, 0, 0, 0, 0, & compat_drm_resctx, 0, 0, & compat_drm_dma, 0, 0, 0, 0, 0, 0, 0, 0, & compat_drm_agp_enable, & compat_drm_agp_info, & compat_drm_agp_alloc, & compat_drm_agp_free, & compat_drm_agp_bind, & compat_drm_agp_unbind, & compat_drm_sg_alloc, & compat_drm_sg_free, & compat_drm_wait_vblank, 0, 0, 0, 0, & compat_drm_update_draw}; long drm_compat_ioctl(struct file *filp , unsigned int cmd , unsigned long arg ) { unsigned int nr ; drm_ioctl_compat_t *fn ; int ret ; long tmp ; long tmp___0 ; { nr = cmd & 255U; if (nr > 63U) { tmp = drm_ioctl(filp, cmd, arg); return (tmp); } else { } fn = drm_compat_ioctls[nr]; if ((unsigned long )fn != (unsigned long )((drm_ioctl_compat_t *)0)) { ret = (*fn)(filp, cmd, arg); } else { tmp___0 = drm_ioctl(filp, cmd, arg); ret = (int )tmp___0; } return ((long )ret); } } static char const __kstrtab_drm_compat_ioctl[17U] = { 'd', 'r', 'm', '_', 'c', 'o', 'm', 'p', 'a', 't', '_', 'i', 'o', 'c', 't', 'l', '\000'}; struct kernel_symbol const __ksymtab_drm_compat_ioctl ; struct kernel_symbol const __ksymtab_drm_compat_ioctl = {(unsigned long )(& drm_compat_ioctl), (char const *)(& __kstrtab_drm_compat_ioctl)}; bool ldv_queue_work_on_510(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_511(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_512(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_513(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_514(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } __inline static long ldv__builtin_expect(long exp , long c ) ; extern struct pv_cpu_ops pv_cpu_ops ; __inline static void wbinvd(void) { unsigned long __edi ; unsigned long __esi ; unsigned long __edx ; unsigned long __ecx ; unsigned long __eax ; long tmp ; { __edi = __edi; __esi = __esi; __edx = __edx; __ecx = __ecx; __eax = __eax; tmp = ldv__builtin_expect((unsigned long )pv_cpu_ops.wbinvd == (unsigned long )((void (*)(void))0), 0L); if (tmp != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"./arch/x86/include/asm/paravirt.h"), "i" (121), "i" (12UL)); ldv_4031: ; goto ldv_4031; } else { } __asm__ volatile ("771:\n\tcall *%c5;\n772:\n.pushsection .parainstructions,\"a\"\n .balign 8 \n .quad 771b\n .byte %c4\n .byte 772b-771b\n .short %c6\n.popsection\n": "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx): [paravirt_typenum] "i" (29UL), [paravirt_opptr] "i" (& pv_cpu_ops.wbinvd), [paravirt_clobber] "i" (511): "memory", "cc", "rax", "r8", "r9", "r10", "r11"); return; } } bool ldv_queue_work_on_524(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_526(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_525(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_528(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_527(struct workqueue_struct *ldv_func_arg1 ) ; __inline static void writel(unsigned int val , void volatile *addr ) { { __asm__ volatile ("movl %0,%1": : "r" (val), "m" (*((unsigned int volatile *)addr)): "memory"); return; } } __inline static void memset_io(void volatile *addr , unsigned char val , size_t count ) { { memset((void *)addr, (int )val, count); return; } } extern void debug_dma_map_page(struct device * , struct page * , size_t , size_t , int , dma_addr_t , bool ) ; extern void debug_dma_mapping_error(struct device * , dma_addr_t ) ; extern void debug_dma_unmap_page(struct device * , dma_addr_t , size_t , int , bool ) ; __inline static dma_addr_t dma_map_page(struct device *dev , struct page *page , size_t offset , size_t size , enum dma_data_direction dir ) { struct dma_map_ops *ops ; struct dma_map_ops *tmp ; dma_addr_t addr ; void *tmp___0 ; int tmp___1 ; long tmp___2 ; { tmp = get_dma_ops(dev); ops = tmp; tmp___0 = lowmem_page_address((struct page const *)page); kmemcheck_mark_initialized(tmp___0 + offset, (unsigned int )size); tmp___1 = valid_dma_direction((int )dir); tmp___2 = ldv__builtin_expect(tmp___1 == 0, 0L); if (tmp___2 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/asm-generic/dma-mapping-common.h"), "i" (84), "i" (12UL)); ldv_24961: ; goto ldv_24961; } else { } addr = (*(ops->map_page))(dev, page, offset, size, dir, (struct dma_attrs *)0); debug_dma_map_page(dev, page, offset, size, (int )dir, addr, 0); return (addr); } } __inline static void dma_unmap_page(struct device *dev , dma_addr_t addr , size_t size , enum dma_data_direction dir ) { struct dma_map_ops *ops ; struct dma_map_ops *tmp ; int tmp___0 ; long tmp___1 ; { tmp = get_dma_ops(dev); ops = tmp; tmp___0 = valid_dma_direction((int )dir); tmp___1 = ldv__builtin_expect(tmp___0 == 0, 0L); if (tmp___1 != 0L) { __asm__ volatile ("1:\tud2\n.pushsection __bug_table,\"a\"\n2:\t.long 1b - 2b, %c0 - 2b\n\t.word %c1, 0\n\t.org 2b+%c2\n.popsection": : "i" ((char *)"include/asm-generic/dma-mapping-common.h"), "i" (96), "i" (12UL)); ldv_24969: ; goto ldv_24969; } else { } if ((unsigned long )ops->unmap_page != (unsigned long )((void (*)(struct device * , dma_addr_t , size_t , enum dma_data_direction , struct dma_attrs * ))0)) { (*(ops->unmap_page))(dev, addr, size, dir, (struct dma_attrs *)0); } else { } debug_dma_unmap_page(dev, addr, size, (int )dir, 0); return; } } __inline static int dma_mapping_error(struct device *dev , dma_addr_t dma_addr ) { struct dma_map_ops *ops ; struct dma_map_ops *tmp ; int tmp___0 ; { tmp = get_dma_ops(dev); ops = tmp; debug_dma_mapping_error(dev, dma_addr); if ((unsigned long )ops->mapping_error != (unsigned long )((int (*)(struct device * , dma_addr_t ))0)) { tmp___0 = (*(ops->mapping_error))(dev, dma_addr); return (tmp___0); } else { } return (dma_addr == 0ULL); } } extern int dma_set_mask(struct device * , u64 ) ; __inline static dma_addr_t pci_map_page(struct pci_dev *hwdev , struct page *page , unsigned long offset , size_t size , int direction ) { dma_addr_t tmp ; { tmp = dma_map_page((unsigned long )hwdev != (unsigned long )((struct pci_dev *)0) ? & hwdev->dev : (struct device *)0, page, offset, size, (enum dma_data_direction )direction); return (tmp); } } __inline static void pci_unmap_page(struct pci_dev *hwdev , dma_addr_t dma_address , size_t size , int direction ) { { dma_unmap_page((unsigned long )hwdev != (unsigned long )((struct pci_dev *)0) ? & hwdev->dev : (struct device *)0, dma_address, size, (enum dma_data_direction )direction); return; } } __inline static int pci_dma_mapping_error(struct pci_dev *pdev , dma_addr_t dma_addr ) { int tmp ; { tmp = dma_mapping_error(& pdev->dev, dma_addr); return (tmp); } } __inline static int pci_set_dma_mask(struct pci_dev *dev , u64 mask ) { int tmp ; { tmp = dma_set_mask(& dev->dev, mask); return (tmp); } } int drm_ati_pcigart_init(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) ; int drm_ati_pcigart_cleanup(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) ; static int drm_ati_alloc_pcigart_table(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) { { gart_info->table_handle = drm_pci_alloc(dev, (size_t )gart_info->table_size, 4096UL); if ((unsigned long )gart_info->table_handle == (unsigned long )((struct drm_dma_handle *)0)) { return (-12); } else { } return (0); } } static void drm_ati_free_pcigart_table(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) { { drm_pci_free(dev, gart_info->table_handle); gart_info->table_handle = (struct drm_dma_handle *)0; return; } } int drm_ati_pcigart_cleanup(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) { struct drm_sg_mem *entry ; unsigned long pages ; int i ; int max_pages ; { entry = dev->sg; if ((unsigned long )entry == (unsigned long )((struct drm_sg_mem *)0)) { drm_err("no scatter/gather memory!\n"); return (0); } else { } if (gart_info->bus_addr != 0ULL) { max_pages = (int )((unsigned long )gart_info->table_size / 4UL); pages = (unsigned long )(max_pages < entry->pages ? max_pages : entry->pages); i = 0; goto ldv_38863; ldv_38862: ; if (*(entry->busaddr + (unsigned long )i) == 0ULL) { goto ldv_38861; } else { } pci_unmap_page(dev->pdev, *(entry->busaddr + (unsigned long )i), 4096UL, 0); i = i + 1; ldv_38863: ; if ((unsigned long )i < pages) { goto ldv_38862; } else { } ldv_38861: ; if (gart_info->gart_table_location == 1) { gart_info->bus_addr = 0ULL; } else { } } else { } if (gart_info->gart_table_location == 1 && (unsigned long )gart_info->table_handle != (unsigned long )((struct drm_dma_handle *)0)) { drm_ati_free_pcigart_table(dev, gart_info); } else { } return (1); } } static char const __kstrtab_drm_ati_pcigart_cleanup[24U] = { 'd', 'r', 'm', '_', 'a', 't', 'i', '_', 'p', 'c', 'i', 'g', 'a', 'r', 't', '_', 'c', 'l', 'e', 'a', 'n', 'u', 'p', '\000'}; struct kernel_symbol const __ksymtab_drm_ati_pcigart_cleanup ; struct kernel_symbol const __ksymtab_drm_ati_pcigart_cleanup = {(unsigned long )(& drm_ati_pcigart_cleanup), (char const *)(& __kstrtab_drm_ati_pcigart_cleanup)}; int drm_ati_pcigart_init(struct drm_device *dev , struct drm_ati_pcigart_info *gart_info ) { struct drm_local_map *map ; struct drm_sg_mem *entry ; void *address ; unsigned long pages ; u32 *pci_gart ; u32 page_base ; u32 gart_idx ; dma_addr_t bus_address ; int i ; int j ; int ret ; int max_ati_pages ; int max_real_pages ; long tmp ; int tmp___0 ; long tmp___1 ; int tmp___2 ; u32 val ; { map = & gart_info->mapping; entry = dev->sg; address = (void *)0; pci_gart = (u32 *)0U; bus_address = 0ULL; ret = 0; if ((unsigned long )entry == (unsigned long )((struct drm_sg_mem *)0)) { drm_err("no scatter/gather memory!\n"); goto done; } else { } if (gart_info->gart_table_location == 1) { tmp = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp != 0L) { drm_ut_debug_printk("drm_ati_pcigart_init", "PCI: no table in VRAM: using normal RAM\n"); } else { } tmp___0 = pci_set_dma_mask(dev->pdev, gart_info->table_mask); if (tmp___0 != 0) { drm_err("fail to set dma mask to 0x%Lx\n", gart_info->table_mask); ret = 1; goto done; } else { } ret = drm_ati_alloc_pcigart_table(dev, gart_info); if (ret != 0) { drm_err("cannot allocate PCI GART page!\n"); goto done; } else { } pci_gart = (u32 *)(gart_info->table_handle)->vaddr; address = (gart_info->table_handle)->vaddr; bus_address = (gart_info->table_handle)->busaddr; } else { address = gart_info->addr; bus_address = gart_info->bus_addr; tmp___1 = ldv__builtin_expect((long )((int )drm_debug) & 1L, 0L); if (tmp___1 != 0L) { drm_ut_debug_printk("drm_ati_pcigart_init", "PCI: Gart Table: VRAM %08LX mapped at %08lX\n", bus_address, (unsigned long )address); } else { } } max_ati_pages = (int )((unsigned long )gart_info->table_size / 4UL); max_real_pages = max_ati_pages; pages = (unsigned long )(max_real_pages < entry->pages ? max_real_pages : entry->pages); if (gart_info->gart_table_location == 1) { memset((void *)pci_gart, 0, (unsigned long )max_ati_pages * 4UL); } else { memset_io((void volatile *)map->handle, 0, (unsigned long )max_ati_pages * 4UL); } gart_idx = 0U; i = 0; goto ldv_38901; ldv_38900: *(entry->busaddr + (unsigned long )i) = pci_map_page(dev->pdev, *(entry->pagelist + (unsigned long )i), 0UL, 4096UL, 0); tmp___2 = pci_dma_mapping_error(dev->pdev, *(entry->busaddr + (unsigned long )i)); if (tmp___2 != 0) { drm_err("unable to map PCIGART pages!\n"); drm_ati_pcigart_cleanup(dev, gart_info); address = (void *)0; bus_address = 0ULL; goto done; } else { } page_base = (unsigned int )*(entry->busaddr + (unsigned long )i); j = 0; goto ldv_38898; ldv_38897: ; switch (gart_info->gart_reg_if) { case 3: val = page_base | 12U; goto ldv_38893; case 2: val = (page_base >> 8) | 12U; goto ldv_38893; default: ; case 1: val = page_base; goto ldv_38893; } ldv_38893: ; if (gart_info->gart_table_location == 1) { *(pci_gart + (unsigned long )gart_idx) = val; } else { writel(val, (void volatile *)(map->handle + (unsigned long )gart_idx * 4UL)); } gart_idx = gart_idx + 1U; page_base = page_base + 4096U; j = j + 1; ldv_38898: ; if (j == 0) { goto ldv_38897; } else { } i = i + 1; ldv_38901: ; if ((unsigned long )i < pages) { goto ldv_38900; } else { } ret = 1; wbinvd(); done: gart_info->addr = address; gart_info->bus_addr = bus_address; return (ret); } } static char const __kstrtab_drm_ati_pcigart_init[21U] = { 'd', 'r', 'm', '_', 'a', 't', 'i', '_', 'p', 'c', 'i', 'g', 'a', 'r', 't', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_ati_pcigart_init ; struct kernel_symbol const __ksymtab_drm_ati_pcigart_init = {(unsigned long )(& drm_ati_pcigart_init), (char const *)(& __kstrtab_drm_ati_pcigart_init)}; bool ldv_queue_work_on_524(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_525(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_526(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_527(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_528(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_538(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_540(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_539(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_542(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_541(struct workqueue_struct *ldv_func_arg1 ) ; void drm_panel_init(struct drm_panel *panel ) ; int drm_panel_add(struct drm_panel *panel ) ; void drm_panel_remove(struct drm_panel *panel ) ; int drm_panel_attach(struct drm_panel *panel , struct drm_connector *connector ) ; int drm_panel_detach(struct drm_panel *panel ) ; struct drm_panel *of_drm_find_panel(struct device_node *np ) ; static struct mutex panel_lock = {{1}, {{{{{0}}, 3735899821U, 4294967295U, (void *)-1, {0, {0, 0}, "panel_lock.wait_lock", 0, 0UL}}}}, {& panel_lock.wait_list, & panel_lock.wait_list}, 0, (void *)(& panel_lock), {0, {0, 0}, "panel_lock", 0, 0UL}}; static struct list_head panel_list = {& panel_list, & panel_list}; void drm_panel_init(struct drm_panel *panel ) { { INIT_LIST_HEAD(& panel->list); return; } } static char const __kstrtab_drm_panel_init[15U] = { 'd', 'r', 'm', '_', 'p', 'a', 'n', 'e', 'l', '_', 'i', 'n', 'i', 't', '\000'}; struct kernel_symbol const __ksymtab_drm_panel_init ; struct kernel_symbol const __ksymtab_drm_panel_init = {(unsigned long )(& drm_panel_init), (char const *)(& __kstrtab_drm_panel_init)}; int drm_panel_add(struct drm_panel *panel ) { { mutex_lock_nested(& panel_lock, 0U); list_add_tail(& panel->list, & panel_list); mutex_unlock(& panel_lock); return (0); } } static char const __kstrtab_drm_panel_add[14U] = { 'd', 'r', 'm', '_', 'p', 'a', 'n', 'e', 'l', '_', 'a', 'd', 'd', '\000'}; struct kernel_symbol const __ksymtab_drm_panel_add ; struct kernel_symbol const __ksymtab_drm_panel_add = {(unsigned long )(& drm_panel_add), (char const *)(& __kstrtab_drm_panel_add)}; void drm_panel_remove(struct drm_panel *panel ) { { mutex_lock_nested(& panel_lock, 0U); list_del_init(& panel->list); mutex_unlock(& panel_lock); return; } } static char const __kstrtab_drm_panel_remove[17U] = { 'd', 'r', 'm', '_', 'p', 'a', 'n', 'e', 'l', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\000'}; struct kernel_symbol const __ksymtab_drm_panel_remove ; struct kernel_symbol const __ksymtab_drm_panel_remove = {(unsigned long )(& drm_panel_remove), (char const *)(& __kstrtab_drm_panel_remove)}; int drm_panel_attach(struct drm_panel *panel , struct drm_connector *connector ) { { if ((unsigned long )panel->connector != (unsigned long )((struct drm_connector *)0)) { return (-16); } else { } panel->connector = connector; panel->drm = connector->dev; return (0); } } static char const __kstrtab_drm_panel_attach[17U] = { 'd', 'r', 'm', '_', 'p', 'a', 'n', 'e', 'l', '_', 'a', 't', 't', 'a', 'c', 'h', '\000'}; struct kernel_symbol const __ksymtab_drm_panel_attach ; struct kernel_symbol const __ksymtab_drm_panel_attach = {(unsigned long )(& drm_panel_attach), (char const *)(& __kstrtab_drm_panel_attach)}; int drm_panel_detach(struct drm_panel *panel ) { { panel->connector = (struct drm_connector *)0; panel->drm = (struct drm_device *)0; return (0); } } static char const __kstrtab_drm_panel_detach[17U] = { 'd', 'r', 'm', '_', 'p', 'a', 'n', 'e', 'l', '_', 'd', 'e', 't', 'a', 'c', 'h', '\000'}; struct kernel_symbol const __ksymtab_drm_panel_detach ; struct kernel_symbol const __ksymtab_drm_panel_detach = {(unsigned long )(& drm_panel_detach), (char const *)(& __kstrtab_drm_panel_detach)}; struct drm_panel *of_drm_find_panel(struct device_node *np ) { struct drm_panel *panel ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { mutex_lock_nested(& panel_lock, 0U); __mptr = (struct list_head const *)panel_list.next; panel = (struct drm_panel *)__mptr + 0xffffffffffffffe0UL; goto ldv_29063; ldv_29062: ; if ((unsigned long )(panel->dev)->of_node == (unsigned long )np) { mutex_unlock(& panel_lock); return (panel); } else { } __mptr___0 = (struct list_head const *)panel->list.next; panel = (struct drm_panel *)__mptr___0 + 0xffffffffffffffe0UL; ldv_29063: ; if ((unsigned long )(& panel->list) != (unsigned long )(& panel_list)) { goto ldv_29062; } else { } mutex_unlock(& panel_lock); return ((struct drm_panel *)0); } } static char const __kstrtab_of_drm_find_panel[18U] = { 'o', 'f', '_', 'd', 'r', 'm', '_', 'f', 'i', 'n', 'd', '_', 'p', 'a', 'n', 'e', 'l', '\000'}; struct kernel_symbol const __ksymtab_of_drm_find_panel ; struct kernel_symbol const __ksymtab_of_drm_find_panel = {(unsigned long )(& of_drm_find_panel), (char const *)(& __kstrtab_of_drm_find_panel)}; bool ldv_queue_work_on_538(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_539(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_540(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_541(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_542(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_552(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_work_on_554(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) ; bool ldv_queue_delayed_work_on_553(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; bool ldv_queue_delayed_work_on_556(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) ; void ldv_flush_workqueue_555(struct workqueue_struct *ldv_func_arg1 ) ; extern struct device_node *of_graph_get_next_endpoint(struct device_node const * , struct device_node * ) ; extern struct device_node *of_graph_get_remote_port(struct device_node const * ) ; extern void of_node_put(struct device_node * ) ; uint32_t drm_of_find_possible_crtcs(struct drm_device *dev , struct device_node *port ) ; static uint32_t drm_crtc_port_mask(struct drm_device *dev , struct device_node *port ) { unsigned int index ; struct drm_crtc *tmp ; struct list_head const *__mptr ; struct list_head const *__mptr___0 ; { index = 0U; __mptr = (struct list_head const *)dev->mode_config.crtc_list.next; tmp = (struct drm_crtc *)__mptr + 0xfffffffffffffff0UL; goto ldv_38745; ldv_38744: ; if ((unsigned long )tmp->port == (unsigned long )port) { return ((uint32_t )(1 << (int )index)); } else { } index = index + 1U; __mptr___0 = (struct list_head const *)tmp->head.next; tmp = (struct drm_crtc *)__mptr___0 + 0xfffffffffffffff0UL; ldv_38745: ; if ((unsigned long )(& tmp->head) != (unsigned long )(& dev->mode_config.crtc_list)) { goto ldv_38744; } else { } return (0U); } } uint32_t drm_of_find_possible_crtcs(struct drm_device *dev , struct device_node *port ) { struct device_node *remote_port ; struct device_node *ep ; uint32_t possible_crtcs ; uint32_t tmp ; { possible_crtcs = 0U; ep = of_graph_get_next_endpoint((struct device_node const *)port, (struct device_node *)0); goto ldv_38755; ldv_38754: remote_port = of_graph_get_remote_port((struct device_node const *)ep); if ((unsigned long )remote_port == (unsigned long )((struct device_node *)0)) { of_node_put(ep); return (0U); } else { } tmp = drm_crtc_port_mask(dev, remote_port); possible_crtcs = tmp | possible_crtcs; of_node_put(remote_port); ep = of_graph_get_next_endpoint((struct device_node const *)port, ep); ldv_38755: ; if ((unsigned long )ep != (unsigned long )((struct device_node *)0)) { goto ldv_38754; } else { } return (possible_crtcs); } } static char const __kstrtab_drm_of_find_possible_crtcs[27U] = { 'd', 'r', 'm', '_', 'o', 'f', '_', 'f', 'i', 'n', 'd', '_', 'p', 'o', 's', 's', 'i', 'b', 'l', 'e', '_', 'c', 'r', 't', 'c', 's', '\000'}; struct kernel_symbol const __ksymtab_drm_of_find_possible_crtcs ; struct kernel_symbol const __ksymtab_drm_of_find_possible_crtcs = {(unsigned long )(& drm_of_find_possible_crtcs), (char const *)(& __kstrtab_drm_of_find_possible_crtcs)}; bool ldv_queue_work_on_552(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } bool ldv_queue_delayed_work_on_553(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___0 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } bool ldv_queue_work_on_554(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct work_struct *ldv_func_arg3 ) { ldv_func_ret_type___1 ldv_func_res ; bool tmp ; { tmp = queue_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3); ldv_func_res = tmp; activate_work_1(ldv_func_arg3, 2); return (ldv_func_res); } } void ldv_flush_workqueue_555(struct workqueue_struct *ldv_func_arg1 ) { { flush_workqueue(ldv_func_arg1); call_and_disable_all_1(2); return; } } bool ldv_queue_delayed_work_on_556(int ldv_func_arg1 , struct workqueue_struct *ldv_func_arg2 , struct delayed_work *ldv_func_arg3 , unsigned long ldv_func_arg4 ) { ldv_func_ret_type___2 ldv_func_res ; bool tmp ; { tmp = queue_delayed_work_on(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3, ldv_func_arg4); ldv_func_res = tmp; activate_work_1(& ldv_func_arg3->work, 2); return (ldv_func_res); } } extern void *memset(void * , int , size_t ) ; __inline static void ldv_error(void) { { ERROR: ; __VERIFIER_error(); } } bool ldv_is_err(void const *ptr ) { { return ((unsigned long )ptr > 2012UL); } } void *ldv_err_ptr(long error ) { { return ((void *)(2012L - error)); } } long ldv_ptr_err(void const *ptr ) { { return ((long )(2012UL - (unsigned long )ptr)); } } bool ldv_is_err_or_null(void const *ptr ) { bool tmp ; int tmp___0 ; { if ((unsigned long )ptr == (unsigned long )((void const *)0)) { tmp___0 = 1; } else { tmp = ldv_is_err(ptr); if ((int )tmp) { tmp___0 = 1; } else { tmp___0 = 0; } } return ((bool )tmp___0); } } int ldv_module_refcounter = 1; void ldv_module_get(struct module *module ) { { if ((unsigned long )module != (unsigned long )((struct module *)0)) { ldv_module_refcounter = ldv_module_refcounter + 1; } else { } return; } } int ldv_try_module_get(struct module *module ) { int module_get_succeeded ; { if ((unsigned long )module != (unsigned long )((struct module *)0)) { module_get_succeeded = ldv_undef_int(); if (module_get_succeeded == 1) { ldv_module_refcounter = ldv_module_refcounter + 1; return (1); } else { return (0); } } else { } return (0); } } void ldv_module_put(struct module *module ) { { if ((unsigned long )module != (unsigned long )((struct module *)0)) { if (ldv_module_refcounter <= 1) { ldv_error(); } else { } ldv_module_refcounter = ldv_module_refcounter - 1; } else { } return; } } void ldv_module_put_and_exit(void) { { ldv_module_put((struct module *)1); LDV_STOP: ; goto LDV_STOP; } } unsigned int ldv_module_refcount(void) { { return ((unsigned int )(ldv_module_refcounter + -1)); } } void ldv_check_final_state(void) { { if (ldv_module_refcounter != 1) { ldv_error(); } else { } return; } }