.set noreorder .set volatile .set noat .set nomacro .arch ev5 # GNU C89 (GCC) version 9.2.0 (alpha-linux) # compiled by GNU C version 6.5.0 20181026, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none # warning: GMP header version 6.1.0 differs from library version 6.1.2. # warning: MPC header version 1.0.3 differs from library version 1.1.0. # GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 # options passed: -nostdinc -I ./arch/alpha/include # -I ./arch/alpha/include/generated -I ./include # -I ./arch/alpha/include/uapi -I ./arch/alpha/include/generated/uapi # -I ./include/uapi -I ./include/generated/uapi # -iprefix /opt/kernel/gcc-9.2.0-nolibc/alpha-linux/bin/../lib/gcc/alpha-linux/9.2.0/ # -D __KERNEL__ -D KBUILD_BASENAME="readdir" -D KBUILD_MODNAME="readdir" # -isystem /opt/kernel/gcc-9.2.0-nolibc/alpha-linux/bin/../lib/gcc/alpha-linux/9.2.0/include # -include ./include/linux/kconfig.h # -include ./include/linux/compiler_types.h -MD fs/.readdir.s.d # fs/readdir.c -mno-fp-regs -mcpu=ev5 -auxbase-strip fs/readdir.s -O2 # -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs # -Werror=implicit-function-declaration -Werror=implicit-int # -Wno-format-security -Wno-frame-address -Wformat-truncation=0 # -Wformat-overflow=0 -Wno-address-of-packed-member # -Wframe-larger-than=2048 -Wno-unused-but-set-variable # -Wimplicit-fallthrough=3 -Wunused-const-variable=0 # -Wdeclaration-after-statement -Wvla -Wno-pointer-sign # -Wno-stringop-truncation -Werror=date-time # -Werror=incompatible-pointer-types -Werror=designated-init # -Wno-packed-not-aligned -std=gnu90 -fno-strict-aliasing -fno-common # -fshort-wchar -fno-PIE -ffixed-8 -fno-jump-tables # -fno-delete-null-pointer-checks -fno-stack-protector # -fomit-frame-pointer -fno-strict-overflow -fno-merge-all-constants # -fmerge-constants -fstack-check=no -fconserve-stack # -fmacro-prefix-map=./= -fverbose-asm --param allow-store-data-races=0 # options enabled: -faggressive-loop-optimizations -falign-functions # -falign-jumps -falign-labels -falign-loops -fassume-phsa -fauto-inc-dec # -fbranch-count-reg -fcaller-saves -fcode-hoisting # -fcombine-stack-adjustments -fcompare-elim -fcprop-registers # -fcrossjumping -fcse-follow-jumps -fdefer-pop -fdevirtualize # -fdevirtualize-speculatively -fdwarf2-cfi-asm -fearly-inlining # -feliminate-unused-debug-types -fexpensive-optimizations # -fforward-propagate -ffp-int-builtin-inexact -ffunction-cse -fgcse # -fgcse-lm -fgnu-runtime -fgnu-unique -fguess-branch-probability # -fhoist-adjacent-loads -fident -fif-conversion -fif-conversion2 # -findirect-inlining -finline -finline-atomics # -finline-functions-called-once -finline-small-functions -fipa-bit-cp # -fipa-cp -fipa-icf -fipa-icf-functions -fipa-icf-variables -fipa-profile # -fipa-pure-const -fipa-ra -fipa-reference -fipa-reference-addressable # -fipa-sra -fipa-stack-alignment -fipa-vrp -fira-hoist-pressure # -fira-share-save-slots -fira-share-spill-slots # -fisolate-erroneous-paths-dereference -fivopts -fkeep-static-consts # -fleading-underscore -flifetime-dse -flra-remat -flto-odr-type-merging # -fmath-errno -fmerge-constants -fmerge-debug-strings # -fmove-loop-invariants -fomit-frame-pointer -foptimize-sibling-calls # -foptimize-strlen -fpartial-inlining -fpcc-struct-return -fpeephole # -fpeephole2 -fplt -fprefetch-loop-arrays -free -freorder-blocks # -freorder-functions -frerun-cse-after-loop # -fsched-critical-path-heuristic -fsched-dep-count-heuristic # -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic # -fsched-rank-heuristic -fsched-spec -fsched-spec-insn-heuristic # -fsched-stalled-insns-dep -fschedule-fusion -fschedule-insns # -fschedule-insns2 -fsemantic-interposition -fshow-column -fshrink-wrap # -fshrink-wrap-separate -fsigned-zeros -fsplit-ivs-in-unroller # -fsplit-wide-types -fssa-backprop -fssa-phiopt -fstdarg-opt # -fstore-merging -fstrict-volatile-bitfields -fsync-libcalls # -fthread-jumps -ftoplevel-reorder -ftrapping-math -ftree-bit-ccp # -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-coalesce-vars # -ftree-copy-prop -ftree-cselim -ftree-dce -ftree-dominator-opts # -ftree-dse -ftree-forwprop -ftree-fre -ftree-loop-if-convert # -ftree-loop-im -ftree-loop-ivcanon -ftree-loop-optimize # -ftree-parallelize-loops= -ftree-phiprop -ftree-pre -ftree-pta # -ftree-reassoc -ftree-scev-cprop -ftree-sink -ftree-slsr -ftree-sra # -ftree-switch-conversion -ftree-tail-merge -ftree-ter -ftree-vrp # -funit-at-a-time -funwind-tables -fverbose-asm -fwrapv -fwrapv-pointer # -fzero-initialized-in-bss -mexplicit-relocs -mfloat-ieee -mglibc # -mlarge-data -mlarge-text -mlong-double-64 -msoft-float .text .align 2 .align 4 .globl iterate_dir .ent iterate_dir iterate_dir: .frame $30,64,$26,0 .mask 0x400fe00,-64 $LFB3537: .cfi_startproc ldah $29,0($27) !gpdisp!1 #,, lda $29,0($29) !gpdisp!1 #,, $iterate_dir..ng: lda $30,-64($30) #,, .cfi_def_cfa_offset 64 bis $31,$31,$31 stq $9,8($30) #, .cfi_offset 9, -56 mov $16,$9 # tmp144, file stq $11,24($30) #, .cfi_offset 11, -40 mov $17,$11 # tmp145, ctx stq $26,0($30) #, stq $10,16($30) #, stq $12,32($30) #, stq $13,40($30) #, stq $14,48($30) #, stq $15,56($30) #, .cfi_offset 26, -64 .cfi_offset 10, -48 .cfi_offset 12, -32 .cfi_offset 13, -24 .cfi_offset 14, -16 .cfi_offset 15, -8 .prologue 1 # fs/readdir.c:85: if (file->f_op->iterate_shared) ldq $1,40($16) # file_23(D)->f_op, _1 # ./include/linux/fs.h:1318: return f->f_inode; ldq $12,32($16) # MEM[(const struct file *)file_23(D)].f_inode, _26 # fs/readdir.c:85: if (file->f_op->iterate_shared) ldq $2,64($1) # _1->iterate_shared, _1->iterate_shared beq $2,$L20 #, _1->iterate_shared, # fs/readdir.c:95: res = down_read_killable(&inode->i_rwsem); lda $13,160($12) # pretmp_38,, _26 ldq $27,down_read_killable($29) !literal!14 #,,, mov $13,$16 # pretmp_38, # fs/readdir.c:86: shared = true; lda $14,1($31) # shared, # fs/readdir.c:95: res = down_read_killable(&inode->i_rwsem); jsr $26,($27),down_read_killable !lituse_jsr!14 #,, ldah $29,0($26) !gpdisp!15 # lda $29,0($29) !gpdisp!15 #,, mov $0,$10 # tmp146, $L5: # fs/readdir.c:98: if (res) ldq_u $31,0($30) bne $10,$L3 #, , # fs/readdir.c:102: if (!IS_DEADDIR(inode)) { ldl $1,12($12) #, _26->i_flags # fs/readdir.c:101: res = -ENOENT; lda $10,-2($31) # , # fs/readdir.c:102: if (!IS_DEADDIR(inode)) { and $1,16,$1 # _26->i_flags,, tmp112 bne $1,$L6 #, tmp112, # fs/readdir.c:103: ctx->pos = file->f_pos; ldq $1,152($9) # file_23(D)->f_pos, _8 # fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx); mov $11,$17 # ctx, mov $9,$16 # file, # fs/readdir.c:103: ctx->pos = file->f_pos; stq $1,8($11) # ctx_31(D)->pos, _8 # fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx); ldq $1,40($9) # file_23(D)->f_op, file_23(D)->f_op # fs/readdir.c:104: if (shared) bne $14,$L21 #, shared, # fs/readdir.c:107: res = file->f_op->iterate(file, ctx); ldq $27,56($1) # _11->iterate, _11->iterate jsr $26,($27),0 # _11->iterate ldah $29,0($26) !gpdisp!16 lda $29,0($29) !gpdisp!16 mov $0,$10 # tmp149, bis $31,$31,$31 $L8: # fs/readdir.c:108: file->f_pos = ctx->pos; ldq $1,8($11) # ctx_31(D)->pos, _13 # ./include/linux/fs.h:1318: return f->f_inode; ldq $12,32($9) # MEM[(const struct file *)file_23(D)].f_inode, _47 # ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY)) ldl $2,92($9) #, file_23(D)->f_mode # ./include/linux/fsnotify.h:237: mask |= FS_ISDIR; ldah $18,16384($31) # tmp100, # fs/readdir.c:108: file->f_pos = ctx->pos; stq $1,152($9) # file_23(D)->f_pos, _13 # ./include/linux/fsnotify.h:237: mask |= FS_ISDIR; lda $18,1($18) # tmp143,, tmp100 # ./include/linux/fsnotify.h:236: if (S_ISDIR(inode->i_mode)) ldl $1,0($12) #,* _47 # ./include/linux/fsnotify.h:237: mask |= FS_ISDIR; lda $11,1($31) # mask, # ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY)) srl $2,26,$2 # file_23(D)->f_mode,, tmp131 # ./include/linux/fsnotify.h:232: const struct path *path = &file->f_path; lda $15,16($9) # path,, file # ./include/linux/fsnotify.h:236: if (S_ISDIR(inode->i_mode)) extwl $1,0,$3 #, tmp122,, tmp121 lda $1,-4096($31) # tmp124, and $1,$3,$1 # tmp124, tmp121, tmp125 lda $1,-16384($1) # tmp126,, tmp125 # ./include/linux/fsnotify.h:237: mask |= FS_ISDIR; cmoveq $1,$18,$11 #, tmp126, tmp143, mask # ./include/linux/fsnotify.h:239: if (!(file->f_mode & FMODE_NONOTIFY)) blbc $2,$L22 # tmp131, $L11: # ./include/linux/fs.h:2201: if (!(file->f_flags & O_NOATIME)) ldl $1,88($9) #, file_23(D)->f_flags # ./include/linux/fs.h:2201: if (!(file->f_flags & O_NOATIME)) srl $1,20,$1 # file_23(D)->f_flags,, tmp139 ldq_u $31,0($30) blbs $1,$L6 # tmp139, # ./include/linux/fs.h:2202: touch_atime(&file->f_path); ldq $27,touch_atime($29) !literal!6 #,,, mov $15,$16 # path, jsr $26,($27),touch_atime !lituse_jsr!6 #,, ldah $29,0($26) !gpdisp!7 # lda $29,0($29) !gpdisp!7 #,, .align 4 $L6: # ./include/linux/fs.h:806: up_read(&inode->i_rwsem); mov $13,$16 # pretmp_38, # fs/readdir.c:112: if (shared) beq $14,$L13 #, shared, # ./include/linux/fs.h:806: up_read(&inode->i_rwsem); ldq $27,up_read($29) !literal!4 #,,, jsr $26,($27),up_read !lituse_jsr!4 #,, ldah $29,0($26) !gpdisp!5 # lda $29,0($29) !gpdisp!5 #,, $L3: # fs/readdir.c:118: } mov $10,$0 # , ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, ldq $13,40($30) #, ldq $14,48($30) #, ldq $15,56($30) #, bis $31,$31,$31 lda $30,64($30) #,, .cfi_remember_state .cfi_restore 15 .cfi_restore 14 .cfi_restore 13 .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L13: .cfi_restore_state # ./include/linux/fs.h:796: up_write(&inode->i_rwsem); ldq $27,up_write($29) !literal!2 #,,, bis $31,$31,$31 jsr $26,($27),up_write !lituse_jsr!2 #,, ldah $29,0($26) !gpdisp!3 # lda $29,0($29) !gpdisp!3 #,, # ./include/linux/fs.h:797: } br $31,$L3 # .align 4 $L20: # fs/readdir.c:87: else if (!file->f_op->iterate) ldq $1,56($1) # _1->iterate, _1->iterate # fs/readdir.c:84: int res = -ENOTDIR; lda $10,-20($31) # , # fs/readdir.c:87: else if (!file->f_op->iterate) ldq_u $31,0($30) beq $1,$L3 #, _1->iterate, # fs/readdir.c:97: res = down_write_killable(&inode->i_rwsem); lda $13,160($12) # pretmp_38,, _26 ldq $27,down_write_killable($29) !literal!12 #,,, mov $13,$16 # pretmp_38, # fs/readdir.c:83: bool shared = false; mov $31,$14 #, shared # fs/readdir.c:97: res = down_write_killable(&inode->i_rwsem); jsr $26,($27),down_write_killable !lituse_jsr!12 #,, ldah $29,0($26) !gpdisp!13 # lda $29,0($29) !gpdisp!13 #,, mov $0,$10 # tmp147, br $31,$L5 # .align 4 $L21: # fs/readdir.c:105: res = file->f_op->iterate_shared(file, ctx); ldq $27,64($1) # _9->iterate_shared, _9->iterate_shared jsr $26,($27),0 # _9->iterate_shared ldah $29,0($26) !gpdisp!17 lda $29,0($29) !gpdisp!17 mov $0,$10 # tmp148, br $31,$L8 # .align 4 $L22: # ./include/linux/fsnotify.h:40: return __fsnotify_parent(path, dentry, mask); ldq $17,24($9) # MEM[(const struct path *)file_23(D) + 16B].dentry, ldq $27,__fsnotify_parent($29) !literal!10 #,,, mov $11,$18 # mask, mov $15,$16 # path, jsr $26,($27),__fsnotify_parent !lituse_jsr!10 #,, ldah $29,0($26) !gpdisp!11 # lda $29,0($29) !gpdisp!11 #,, # ./include/linux/fsnotify.h:52: if (ret) bne $0,$L11 #, tmp150, # ./include/linux/fsnotify.h:54: return fsnotify(inode, mask, path, FSNOTIFY_EVENT_PATH, NULL, 0); ldq $27,fsnotify($29) !literal!8 #,,, mov $31,$21 #, mov $31,$20 #, lda $19,1($31) #, mov $15,$18 # path, mov $11,$17 # mask, mov $12,$16 # _47, jsr $26,($27),fsnotify !lituse_jsr!8 #,, ldah $29,0($26) !gpdisp!9 # lda $29,0($29) !gpdisp!9 #,, br $31,$L11 # .cfi_endproc $LFE3537: .end iterate_dir .align 2 .align 4 .ent fillonedir fillonedir: .frame $30,48,$26,0 .mask 0x4001e00,-48 $LFB3539: .cfi_startproc ldah $29,0($27) !gpdisp!18 #,, lda $29,0($29) !gpdisp!18 #,, $fillonedir..ng: lda $30,-48($30) #,, .cfi_def_cfa_offset 48 bis $31,$31,$31 stq $11,24($30) #, .cfi_offset 11, -24 mov $16,$11 # tmp141, ctx stq $12,32($30) #, .cfi_offset 12, -16 mov $18,$12 # namlen, tmp142 stq $26,0($30) #, stq $9,8($30) #, stq $10,16($30) #, .cfi_offset 26, -48 .cfi_offset 9, -40 .cfi_offset 10, -32 .prologue 1 # fs/readdir.c:187: if (buf->result) ldl $10,24($16) # , MEM[(struct readdir_callback *)ctx_33(D)].result # fs/readdir.c:187: if (buf->result) bne $10,$L27 #, , # fs/readdir.c:195: dirent = buf->dirent; ldq $2,16($16) # MEM[(struct readdir_callback *)ctx_33(D)].dirent, dirent # fs/readdir.c:196: if (!access_ok(dirent, lda $1,1($18) # tmp113,, namlen # fs/readdir.c:194: buf->result++; lda $3,1($31) # tmp112, stl $3,24($16) # tmp112, MEM[(struct readdir_callback *)ctx_33(D)].result # fs/readdir.c:196: if (!access_ok(dirent, lda $9,18($2) # _2,, dirent addq $9,$1,$1 # _2, tmp113, _6 ldq $4,80($8) # __current_thread_info.3_9->addr_limit.seg, __current_thread_info.3_9->addr_limit.seg subq $1,$2,$3 # _6, dirent, __ao_b cmpult $31,$3,$5 # __ao_b, tmp115 bis $2,$3,$3 # dirent, __ao_b, tmp117 subq $1,$5,$1 # _6, tmp115, __ao_end bis $1,$3,$1 # __ao_end, tmp117, tmp118 and $1,$4,$1 # tmp118, __current_thread_info.3_9->addr_limit.seg, tmp119 # fs/readdir.c:196: if (!access_ok(dirent, bne $1,$L26 #, tmp119, # fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) || mov $10,$1 # , __pu_err .set macro # 200 "fs/readdir.c" 1 1: stq $20,0($2) # ino, MEM[(struct __large_struct *)_16] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 # fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) || .set nomacro bne $1,$L26 #, __pu_err, # fs/readdir.c:201: __put_user(offset, &dirent->d_offset) || mov $10,$1 # , __pu_err .set macro # 201 "fs/readdir.c" 1 1: stq $19,8($2) # offset, MEM[(struct __large_struct *)_19] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 # fs/readdir.c:200: if ( __put_user(d_ino, &dirent->d_ino) || .set nomacro bne $1,$L26 #, __pu_err, # fs/readdir.c:202: __put_user(namlen, &dirent->d_namlen) || .align 3 #realign # lda $2,16($2) # tmp131,, dirent mov $10,$1 # , __pu_err zapnot $18,3,$3 # namlen, namlen .set macro # 202 "fs/readdir.c" 1 1: ldq_u $5,1($2) # __pu_tmp2, tmp131 2: ldq_u $4,0($2) # __pu_tmp1, tmp131 inswh $3,$2,$7 # namlen, tmp131, __pu_tmp4 inswl $3,$2,$6 # namlen, tmp131, __pu_tmp3 mskwh $5,$2,$5 # __pu_tmp2, tmp131 mskwl $4,$2,$4 # __pu_tmp1, tmp131 or $5,$7,$5 # __pu_tmp2, __pu_tmp4 or $4,$6,$4 # __pu_tmp1, __pu_tmp3 3: stq_u $5,1($2) # __pu_tmp2, tmp131 4: stq_u $4,0($2) # __pu_tmp1, tmp131 5: .section __ex_table,"a" .long 1b-. lda $31,5b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,5b-2b($1) # __pu_err .previous .section __ex_table,"a" .long 3b-. lda $31,5b-3b($1) # __pu_err .previous .section __ex_table,"a" .long 4b-. lda $31,5b-4b($1) # __pu_err .previous # 0 "" 2 # fs/readdir.c:201: __put_user(offset, &dirent->d_offset) || .set nomacro bne $1,$L26 #, __pu_err, # ./arch/alpha/include/asm/uaccess.h:314: return __copy_user((__force void *)to, from, len); .align 3 #realign # ldq $27,__copy_user($29) !literal!19 #,,, mov $9,$16 # _2, jsr $26,($27),__copy_user !lituse_jsr!19 #,, ldah $29,0($26) !gpdisp!20 # lda $29,0($29) !gpdisp!20 #,, # fs/readdir.c:202: __put_user(namlen, &dirent->d_namlen) || bne $0,$L26 #, tmp145, # fs/readdir.c:204: __put_user(0, dirent->d_name + namlen)) addq $9,$12,$9 # _2, namlen, tmp138 mov $10,$1 # , __pu_err .set macro # 204 "fs/readdir.c" 1 1: ldq_u $2,0($9) # __pu_tmp1, tmp138 insbl $10,$9,$3 # __pu_err, tmp138, __pu_tmp2 mskbl $2,$9,$2 # __pu_tmp1, tmp138 or $2,$3,$2 # __pu_tmp1, __pu_tmp2 2: stq_u $2,0($9) # __pu_tmp1, tmp138 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 # fs/readdir.c:203: __copy_to_user(dirent->d_name, name, namlen) || .set nomacro bne $1,$L26 #, __pu_err, .align 3 #realign # $L24: # fs/readdir.c:210: } mov $10,$0 # , ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, lda $30,48($30) #,, .cfi_remember_state .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L26: .cfi_restore_state # fs/readdir.c:208: buf->result = -EFAULT; lda $1,-14($31) # tmp121, # fs/readdir.c:209: return -EFAULT; lda $10,-14($31) # , # fs/readdir.c:208: buf->result = -EFAULT; stl $1,24($11) # tmp121, MEM[(struct readdir_callback *)ctx_33(D)].result # fs/readdir.c:209: return -EFAULT; br $31,$L24 # .align 4 $L27: # fs/readdir.c:188: return -EINVAL; lda $10,-22($31) # , br $31,$L24 # .cfi_endproc $LFE3539: .end fillonedir .section .rodata.str1.1,"aMS",@progbits,1 $LC0: .string "fs/readdir.c" .text .align 2 .align 4 .ent verify_dirent_name verify_dirent_name: .frame $30,32,$26,0 .mask 0x4000000,-32 $LFB3538: .cfi_startproc ldah $29,0($27) !gpdisp!21 #,, lda $29,0($29) !gpdisp!21 #,, $verify_dirent_name..ng: lda $30,-32($30) #,, .cfi_def_cfa_offset 32 mov $17,$18 # tmp106, len stq $26,0($30) #, .cfi_offset 26, -32 .prologue 1 # fs/readdir.c:148: if (WARN_ON_ONCE(!len)) beq $17,$L36 #, len, # fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len))) ldq $27,memchr($29) !literal!22 #,,, lda $17,47($31) #, jsr $26,($27),memchr !lituse_jsr!22 #,, ldah $29,0($26) !gpdisp!23 # lda $29,0($29) !gpdisp!23 #,, bne $0,$L31 #, tmp107, $L34: # fs/readdir.c:153: } ldq $26,0($30) #, lda $30,32($30) #,, .cfi_remember_state .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L36: .cfi_restore_state # fs/readdir.c:148: if (WARN_ON_ONCE(!len)) ldah $1,__warned.38909($29) !gprelhigh # tmp77,, # fs/readdir.c:149: return -EIO; lda $0,-5($31) # , # fs/readdir.c:148: if (WARN_ON_ONCE(!len)) ldq_u $2,__warned.38909($1) !gprellow #, tmp81 lda $3,__warned.38909($1) !gprellow # tmp82,, tmp77 extbl $2,$3,$4 #, tmp81, tmp82, tmp78 bne $4,$L34 #, tmp78, # fs/readdir.c:148: if (WARN_ON_ONCE(!len)) lda $4,1($31) # tmp84, mov $31,$19 #, mskbl $2,$3,$2 #, tmp81, tmp82, tmp86 lda $18,9($31) #, insbl $4,$3,$3 # tmp84, tmp82, tmp87 lda $17,148($31) #, bis $3,$2,$3 # tmp87, tmp86, tmp87 stq_u $3,__warned.38909($1) !gprellow #, tmp87 $L35: # fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len))) ldah $16,$LC0($29) !gprelhigh # tmp102,, ldq $27,warn_slowpath_fmt($29) !literal!24 #,,, stq $0,16($30) #, lda $16,$LC0($16) !gprellow #,, tmp102 jsr $26,($27),warn_slowpath_fmt !lituse_jsr!24 #,, ldah $29,0($26) !gpdisp!25 # lda $29,0($29) !gpdisp!25 #,, ldq $0,16($30) #, br $31,$L34 # .align 4 $L31: # fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len))) ldah $1,__warned.38914($29) !gprelhigh # tmp90,, # fs/readdir.c:149: return -EIO; lda $0,-5($31) # , # fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len))) ldq_u $2,__warned.38914($1) !gprellow #, tmp94 lda $3,__warned.38914($1) !gprellow # tmp95,, tmp90 extbl $2,$3,$4 #, tmp94, tmp95, tmp91 bne $4,$L34 #, tmp91, # fs/readdir.c:150: if (WARN_ON_ONCE(memchr(name, '/', len))) lda $4,1($31) # tmp97, mov $31,$19 #, mskbl $2,$3,$2 #, tmp94, tmp95, tmp99 lda $18,9($31) #, insbl $4,$3,$3 # tmp97, tmp95, tmp100 lda $17,150($31) #, bis $3,$2,$3 # tmp100, tmp99, tmp100 stq_u $3,__warned.38914($1) !gprellow #, tmp100 br $31,$L35 # .cfi_endproc $LFE3538: .end verify_dirent_name .align 2 .align 4 .ent filldir filldir: .frame $30,64,$26,0 .mask 0x400fe00,-64 $LFB3542: .cfi_startproc ldah $29,0($27) !gpdisp!26 #,, lda $29,0($29) !gpdisp!26 #,, $filldir..ng: lda $30,-64($30) #,, .cfi_def_cfa_offset 64 bis $31,$31,$31 stq $9,8($30) #, .cfi_offset 9, -56 mov $17,$9 # tmp243, name stq $13,40($30) #, .cfi_offset 13, -24 # fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2, addl $18,27,$13 # namlen,, tmp143 # fs/readdir.c:256: { stq $11,24($30) #, # fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2, bic $13,7,$13 # tmp143,, tmp144 .cfi_offset 11, -40 # fs/readdir.c:256: { mov $16,$11 # ctx, tmp242 # fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen); mov $18,$17 # namlen, mov $9,$16 # name, # fs/readdir.c:261: int reclen = ALIGN(offsetof(struct linux_dirent, d_name) + namlen + 2, addl $31,$13,$13 # tmp144, reclen # fs/readdir.c:256: { stq $10,16($30) #, .cfi_offset 10, -48 mov $18,$10 # tmp244, namlen stq $12,32($30) #, .cfi_offset 12, -32 mov $21,$12 # tmp247, d_type stq $14,48($30) #, .cfi_offset 14, -16 mov $20,$14 # tmp246, ino stq $15,56($30) #, .cfi_offset 15, -8 mov $19,$15 # tmp245, offset stq $26,0($30) #, .cfi_offset 26, -64 .prologue 1 # fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen); ldq $27,verify_dirent_name($29) !literal!27 # jsr $26,($27),0 !lituse_jsr!27 ldah $29,0($26) !gpdisp!28 lda $29,0($29) !gpdisp!28 # fs/readdir.c:265: if (unlikely(buf->error)) bne $0,$L60 #, , # fs/readdir.c:267: buf->error = -EINVAL; /* only used if we fail.. */ lda $1,-22($31) # tmp147, # fs/readdir.c:268: if (reclen > buf->count) ldl $5,32($11) # _8, MEM[(struct getdents_callback *)ctx_55(D)].count # fs/readdir.c:267: buf->error = -EINVAL; /* only used if we fail.. */ stl $1,36($11) # tmp147, MEM[(struct getdents_callback *)ctx_55(D)].error # fs/readdir.c:268: if (reclen > buf->count) bis $31,$31,$31 cmplt $5,$13,$1 #, _8, reclen, tmp148 bne $1,$L51 #, tmp148, # fs/readdir.c:275: dirent = buf->previous; ldq $2,24($11) # MEM[(struct getdents_callback *)ctx_55(D)].previous, dirent # fs/readdir.c:276: if (dirent && signal_pending(current)) beq $2,$L40 #, dirent, # ./include/linux/sched.h:1737: return test_ti_thread_flag(task_thread_info(tsk), flag); ldq $1,64($8) # __current_thread_info.16_9->task, __current_thread_info.16_9->task # ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL; ldq $1,8($1) # _10->stack, _10->stack # ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL; ldl $1,72($1) # MEM[(const int *)_118 + 72B], MEM[(const int *)_118 + 72B] # fs/readdir.c:276: if (dirent && signal_pending(current)) and $1,4,$1 # MEM[(const int *)_118 + 72B],, tmp154 cmpult $31,$1,$1 # tmp154, tmp154 bne $1,$L61 #, tmp154, # fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent))) lda $1,23($2) # __ao_end,, dirent ldq $3,80($8) # __current_thread_info.16_9->addr_limit.seg, __current_thread_info.16_9->addr_limit.seg bis $1,$2,$1 # __ao_end, dirent, tmp236 bis $1,24,$1 # tmp236,, tmp237 and $1,$3,$1 # tmp237, __current_thread_info.16_9->addr_limit.seg, tmp238 # fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent))) bne $1,$L48 #, tmp238, # fs/readdir.c:286: unsafe_put_user(offset, &dirent->d_off, efault_end); mov $0,$1 # , __pu_err .set macro # 286 "fs/readdir.c" 1 1: stq $15,8($2) # offset, MEM[(struct __large_struct *)_19] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, .align 3 #realign # $L50: # fs/readdir.c:287: dirent = buf->current_dir; ldq $6,16($11) # MEM[(struct getdents_callback *)ctx_55(D)].current_dir, dirent # fs/readdir.c:288: unsafe_put_user(d_ino, &dirent->d_ino, efault_end); mov $31,$1 #, __pu_err .set macro # 288 "fs/readdir.c" 1 1: stq $14,0($6) # ino, MEM[(struct __large_struct *)_25] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, # fs/readdir.c:289: unsafe_put_user(reclen, &dirent->d_reclen, efault_end); .align 3 #realign # zapnot $13,3,$3 # reclen, reclen lda $2,16($6) # tmp166,, dirent .set macro # 289 "fs/readdir.c" 1 1: ldq_u $7,1($2) # __pu_tmp2, tmp166 2: ldq_u $4,0($2) # __pu_tmp1, tmp166 inswh $3,$2,$23 # reclen, tmp166, __pu_tmp4 inswl $3,$2,$22 # reclen, tmp166, __pu_tmp3 mskwh $7,$2,$7 # __pu_tmp2, tmp166 mskwl $4,$2,$4 # __pu_tmp1, tmp166 or $7,$23,$7 # __pu_tmp2, __pu_tmp4 or $4,$22,$4 # __pu_tmp1, __pu_tmp3 3: stq_u $7,1($2) # __pu_tmp2, tmp166 4: stq_u $4,0($2) # __pu_tmp1, tmp166 5: .section __ex_table,"a" .long 1b-. lda $31,5b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,5b-2b($1) # __pu_err .previous .section __ex_table,"a" .long 3b-. lda $31,5b-3b($1) # __pu_err .previous .section __ex_table,"a" .long 4b-. lda $31,5b-4b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, # fs/readdir.c:290: unsafe_put_user(d_type, (char __user *) dirent + reclen - 1, efault_end); .align 3 #realign # sll $12,56,$12 # d_type,, tmp175 lda $2,-1($13) # tmp176,, reclen sra $12,56,$12 # tmp175,, tmp173 addq $6,$2,$2 # dirent, tmp176, tmp177 .set macro # 290 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, tmp177 insbl $12,$2,$4 # tmp173, tmp177, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, tmp177 or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, tmp177 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # mov $10,$18 # namlen, len lda $2,18($6) # dst,, dirent cmpule $10,7,$1 #, len,, tmp179 bne $1,$L43 #, tmp179, mov $31,$7 #, tmp187 br $31,$L44 # .align 4 $L62: # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); lda $2,8($2) # dst,, dst lda $9,8($9) # name,, name cmpule $18,7,$1 #, len,, tmp188 bne $1,$L43 #, tmp188, $L44: # ./include/linux/unaligned/packed_struct.h:25: return ptr->x; ldq_u $1,0($9) #, tmp182 ldq_u $4,7($9) #, tmp183 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $7,$3 # tmp187, __pu_err # ./include/linux/unaligned/packed_struct.h:25: return ptr->x; extql $1,$9,$1 #, tmp182, name, tmp185 extqh $4,$9,$4 # tmp183, name, tmp186 bis $1,$4,$1 # tmp185, tmp186, tmp181 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .set macro # 291 "fs/readdir.c" 1 1: stq $1,0($2) # tmp181, MEM[(struct __large_struct *)dst_154] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($3) # __pu_err .previous # 0 "" 2 .set nomacro .align 3 #realign # lda $18,-8($18) # len,, len beq $3,$L62 #, __pu_err, $L42: $L48: # fs/readdir.c:302: buf->error = -EFAULT; lda $1,-14($31) # tmp233, # fs/readdir.c:303: return -EFAULT; lda $0,-14($31) # , # fs/readdir.c:302: buf->error = -EFAULT; stl $1,36($11) # tmp233, MEM[(struct getdents_callback *)ctx_55(D)].error bis $31,$31,$31 $L57: # fs/readdir.c:304: } ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, ldq $13,40($30) #, ldq $14,48($30) #, ldq $15,56($30) #, lda $30,64($30) #,, .cfi_remember_state .cfi_restore 15 .cfi_restore 14 .cfi_restore 13 .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L40: .cfi_restore_state # fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent))) ldq $1,80($8) # __current_thread_info.17_165->addr_limit.seg, __current_thread_info.17_165->addr_limit.seg and $1,31,$1 # __current_thread_info.17_165->addr_limit.seg,, tmp240 # fs/readdir.c:283: if (!user_access_begin(dirent, sizeof(*dirent))) beq $1,$L50 #, tmp240, br $31,$L48 # .align 4 $L43: # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); cmpule $18,3,$1 #, len,, tmp189 bne $1,$L45 #, tmp189, # ./include/linux/unaligned/packed_struct.h:19: return ptr->x; ldq_u $1,0($9) #, tmp192 ldq_u $4,3($9) #, tmp193 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$3 #, __pu_err # ./include/linux/unaligned/packed_struct.h:19: return ptr->x; extll $1,$9,$1 #, tmp192, name, tmp195 extlh $4,$9,$4 # tmp193, name, tmp196 bis $1,$4,$1 # tmp195, tmp196, tmp191 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .set macro # 291 "fs/readdir.c" 1 1: stl $1,0($2) # tmp191, MEM[(struct __large_struct *)dst_147] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($3) # __pu_err .previous # 0 "" 2 .set nomacro bne $3,$L48 #, __pu_err, # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # lda $2,4($2) # dst,, dst lda $9,4($9) # name,, name lda $18,-4($18) # len,, len bis $31,$31,$31 $L45: # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); cmpule $18,1,$1 #, len,, tmp201 bne $1,$L46 #, tmp201, # ./include/linux/unaligned/packed_struct.h:13: return ptr->x; ldq_u $1,0($9) #, tmp208 ldq_u $4,1($9) #, tmp209 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$3 #, __pu_err # ./include/linux/unaligned/packed_struct.h:13: return ptr->x; extwl $1,$9,$1 #, tmp208, name, tmp211 extwh $4,$9,$4 # tmp209, name, tmp212 bis $1,$4,$1 # tmp211, tmp212, tmp207 # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); zapnot $1,3,$1 # tmp207, tmp216 .set macro # 291 "fs/readdir.c" 1 1: ldq_u $7,1($2) # __pu_tmp2, dst 2: ldq_u $4,0($2) # __pu_tmp1, dst inswh $1,$2,$23 # tmp216, dst, __pu_tmp4 inswl $1,$2,$22 # tmp216, dst, __pu_tmp3 mskwh $7,$2,$7 # __pu_tmp2, dst mskwl $4,$2,$4 # __pu_tmp1, dst or $7,$23,$7 # __pu_tmp2, __pu_tmp4 or $4,$22,$4 # __pu_tmp1, __pu_tmp3 3: stq_u $7,1($2) # __pu_tmp2, dst 4: stq_u $4,0($2) # __pu_tmp1, dst 5: .section __ex_table,"a" .long 1b-. lda $31,5b-1b($3) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,5b-2b($3) # __pu_err .previous .section __ex_table,"a" .long 3b-. lda $31,5b-3b($3) # __pu_err .previous .section __ex_table,"a" .long 4b-. lda $31,5b-4b($3) # __pu_err .previous # 0 "" 2 .set nomacro bne $3,$L48 #, __pu_err, # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # lda $2,2($2) # dst,, dst lda $9,2($9) # name,, name lda $18,-2($18) # len,, len $L46: # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); beq $18,$L47 #, len, ldq_u $3,0($9) #, tmp223 mov $31,$1 #, __pu_err extbl $3,$9,$9 #, tmp223, name, tmp221 .set macro # 291 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, dst insbl $9,$2,$4 # tmp221, dst, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, dst or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, dst 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); lda $2,1($2) # dst,, dst $L47: # fs/readdir.c:291: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$1 #, __pu_err .set macro # 291 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, dst insbl $1,$2,$4 # __pu_err, dst, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, dst or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, dst 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L48 #, __pu_err, # fs/readdir.c:295: dirent = (void __user *)dirent + reclen; .align 3 #realign # addq $6,$13,$1 # dirent, reclen, dirent # fs/readdir.c:297: buf->count -= reclen; subl $5,$13,$5 # _8, reclen, tmp232 # fs/readdir.c:294: buf->previous = dirent; stq $6,24($11) # MEM[(struct getdents_callback *)ctx_55(D)].previous, dirent # fs/readdir.c:296: buf->current_dir = dirent; stq $1,16($11) # MEM[(struct getdents_callback *)ctx_55(D)].current_dir, dirent # fs/readdir.c:297: buf->count -= reclen; stl $5,32($11) # tmp232, MEM[(struct getdents_callback *)ctx_55(D)].count # fs/readdir.c:298: return 0; br $31,$L57 # .align 4 $L60: # fs/readdir.c:264: buf->error = verify_dirent_name(name, namlen); stl $0,36($11) # , MEM[(struct getdents_callback *)ctx_55(D)].error br $31,$L57 # .align 4 $L61: # fs/readdir.c:277: return -EINTR; lda $0,-4($31) # , br $31,$L57 # $L51: # fs/readdir.c:269: return -EINVAL; lda $0,-22($31) # , br $31,$L57 # .cfi_endproc $LFE3542: .end filldir .align 2 .align 4 .ent filldir64 filldir64: .frame $30,64,$26,0 .mask 0x400fe00,-64 $LFB3545: .cfi_startproc ldah $29,0($27) !gpdisp!29 #,, lda $29,0($29) !gpdisp!29 #,, $filldir64..ng: lda $30,-64($30) #,, .cfi_def_cfa_offset 64 bis $31,$31,$31 stq $9,8($30) #, .cfi_offset 9, -56 mov $17,$9 # tmp238, name stq $12,32($30) #, .cfi_offset 12, -32 # fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1, addl $18,27,$12 # namlen,, tmp141 # fs/readdir.c:349: { stq $11,24($30) #, # fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1, bic $12,7,$12 # tmp141,, tmp142 .cfi_offset 11, -40 # fs/readdir.c:349: { mov $16,$11 # ctx, tmp237 # fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen); mov $18,$17 # namlen, mov $9,$16 # name, # fs/readdir.c:353: int reclen = ALIGN(offsetof(struct linux_dirent64, d_name) + namlen + 1, addl $31,$12,$12 # tmp142, reclen # fs/readdir.c:349: { stq $10,16($30) #, .cfi_offset 10, -48 mov $18,$10 # tmp239, namlen stq $13,40($30) #, .cfi_offset 13, -24 mov $21,$13 # tmp242, d_type stq $14,48($30) #, .cfi_offset 14, -16 mov $20,$14 # tmp241, ino stq $15,56($30) #, .cfi_offset 15, -8 mov $19,$15 # tmp240, offset stq $26,0($30) #, .cfi_offset 26, -64 .prologue 1 # fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen); ldq $27,verify_dirent_name($29) !literal!30 # jsr $26,($27),0 !lituse_jsr!30 ldah $29,0($26) !gpdisp!31 lda $29,0($29) !gpdisp!31 # fs/readdir.c:357: if (unlikely(buf->error)) bne $0,$L86 #, , # fs/readdir.c:359: buf->error = -EINVAL; /* only used if we fail.. */ lda $1,-22($31) # tmp145, # fs/readdir.c:360: if (reclen > buf->count) ldl $5,32($11) # _8, MEM[(struct getdents_callback64 *)ctx_45(D)].count # fs/readdir.c:359: buf->error = -EINVAL; /* only used if we fail.. */ stl $1,36($11) # tmp145, MEM[(struct getdents_callback64 *)ctx_45(D)].error # fs/readdir.c:360: if (reclen > buf->count) bis $31,$31,$31 cmplt $5,$12,$1 #, _8, reclen, tmp146 bne $1,$L77 #, tmp146, # fs/readdir.c:362: dirent = buf->previous; ldq $2,24($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].previous, dirent # fs/readdir.c:363: if (dirent && signal_pending(current)) beq $2,$L66 #, dirent, # ./include/linux/sched.h:1737: return test_ti_thread_flag(task_thread_info(tsk), flag); ldq $1,64($8) # __current_thread_info.30_9->task, __current_thread_info.30_9->task # ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL; ldq $1,8($1) # _10->stack, _10->stack # ./arch/alpha/include/asm/bitops.h:289: return (1UL & (((const int *) addr)[nr >> 5] >> (nr & 31))) != 0UL; ldl $1,72($1) # MEM[(const int *)_115 + 72B], MEM[(const int *)_115 + 72B] # fs/readdir.c:363: if (dirent && signal_pending(current)) and $1,4,$1 # MEM[(const int *)_115 + 72B],, tmp152 cmpult $31,$1,$1 # tmp152, tmp152 bne $1,$L87 #, tmp152, # fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent))) lda $1,23($2) # __ao_end,, dirent ldq $3,80($8) # __current_thread_info.30_9->addr_limit.seg, __current_thread_info.30_9->addr_limit.seg bis $1,$2,$1 # __ao_end, dirent, tmp231 bis $1,24,$1 # tmp231,, tmp232 and $1,$3,$1 # tmp232, __current_thread_info.30_9->addr_limit.seg, tmp233 # fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent))) bne $1,$L74 #, tmp233, # fs/readdir.c:373: unsafe_put_user(offset, &dirent->d_off, efault_end); mov $0,$1 # , __pu_err .set macro # 373 "fs/readdir.c" 1 1: stq $15,8($2) # offset, MEM[(struct __large_struct *)_18] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, .align 3 #realign # $L76: # fs/readdir.c:374: dirent = buf->current_dir; ldq $6,16($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].current_dir, dirent # fs/readdir.c:375: unsafe_put_user(ino, &dirent->d_ino, efault_end); mov $31,$1 #, __pu_err .set macro # 375 "fs/readdir.c" 1 1: stq $14,0($6) # ino, MEM[(struct __large_struct *)_24] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, # fs/readdir.c:376: unsafe_put_user(reclen, &dirent->d_reclen, efault_end); .align 3 #realign # zapnot $12,3,$3 # reclen, reclen lda $2,16($6) # tmp164,, dirent .set macro # 376 "fs/readdir.c" 1 1: ldq_u $7,1($2) # __pu_tmp2, tmp164 2: ldq_u $4,0($2) # __pu_tmp1, tmp164 inswh $3,$2,$23 # reclen, tmp164, __pu_tmp4 inswl $3,$2,$22 # reclen, tmp164, __pu_tmp3 mskwh $7,$2,$7 # __pu_tmp2, tmp164 mskwl $4,$2,$4 # __pu_tmp1, tmp164 or $7,$23,$7 # __pu_tmp2, __pu_tmp4 or $4,$22,$4 # __pu_tmp1, __pu_tmp3 3: stq_u $7,1($2) # __pu_tmp2, tmp164 4: stq_u $4,0($2) # __pu_tmp1, tmp164 5: .section __ex_table,"a" .long 1b-. lda $31,5b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,5b-2b($1) # __pu_err .previous .section __ex_table,"a" .long 3b-. lda $31,5b-3b($1) # __pu_err .previous .section __ex_table,"a" .long 4b-. lda $31,5b-4b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, # fs/readdir.c:377: unsafe_put_user(d_type, &dirent->d_type, efault_end); .align 3 #realign # and $13,0xff,$13 # d_type, d_type lda $2,18($6) # tmp172,, dirent .set macro # 377 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, tmp172 insbl $13,$2,$4 # d_type, tmp172, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, tmp172 or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, tmp172 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # mov $10,$18 # namlen, len lda $2,19($6) # dst,, dirent cmpule $10,7,$1 #, len,, tmp174 bne $1,$L69 #, tmp174, mov $31,$7 #, tmp182 br $31,$L70 # .align 4 $L88: # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); lda $2,8($2) # dst,, dst lda $9,8($9) # name,, name cmpule $18,7,$1 #, len,, tmp183 bne $1,$L69 #, tmp183, $L70: # ./include/linux/unaligned/packed_struct.h:25: return ptr->x; ldq_u $1,0($9) #, tmp177 ldq_u $4,7($9) #, tmp178 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $7,$3 # tmp182, __pu_err # ./include/linux/unaligned/packed_struct.h:25: return ptr->x; extql $1,$9,$1 #, tmp177, name, tmp180 extqh $4,$9,$4 # tmp178, name, tmp181 bis $1,$4,$1 # tmp180, tmp181, tmp176 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .set macro # 378 "fs/readdir.c" 1 1: stq $1,0($2) # tmp176, MEM[(struct __large_struct *)dst_152] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($3) # __pu_err .previous # 0 "" 2 .set nomacro .align 3 #realign # lda $18,-8($18) # len,, len beq $3,$L88 #, __pu_err, $L68: $L74: # fs/readdir.c:389: buf->error = -EFAULT; lda $1,-14($31) # tmp228, # fs/readdir.c:390: return -EFAULT; lda $0,-14($31) # , # fs/readdir.c:389: buf->error = -EFAULT; stl $1,36($11) # tmp228, MEM[(struct getdents_callback64 *)ctx_45(D)].error bis $31,$31,$31 $L83: # fs/readdir.c:391: } ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, ldq $13,40($30) #, ldq $14,48($30) #, ldq $15,56($30) #, lda $30,64($30) #,, .cfi_remember_state .cfi_restore 15 .cfi_restore 14 .cfi_restore 13 .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L66: .cfi_restore_state # fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent))) ldq $1,80($8) # __current_thread_info.31_163->addr_limit.seg, __current_thread_info.31_163->addr_limit.seg and $1,31,$1 # __current_thread_info.31_163->addr_limit.seg,, tmp235 # fs/readdir.c:370: if (!user_access_begin(dirent, sizeof(*dirent))) beq $1,$L76 #, tmp235, br $31,$L74 # .align 4 $L69: # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); cmpule $18,3,$1 #, len,, tmp184 bne $1,$L71 #, tmp184, # ./include/linux/unaligned/packed_struct.h:19: return ptr->x; ldq_u $1,0($9) #, tmp187 ldq_u $4,3($9) #, tmp188 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$3 #, __pu_err # ./include/linux/unaligned/packed_struct.h:19: return ptr->x; extll $1,$9,$1 #, tmp187, name, tmp190 extlh $4,$9,$4 # tmp188, name, tmp191 bis $1,$4,$1 # tmp190, tmp191, tmp186 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .set macro # 378 "fs/readdir.c" 1 1: stl $1,0($2) # tmp186, MEM[(struct __large_struct *)dst_145] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($3) # __pu_err .previous # 0 "" 2 .set nomacro bne $3,$L74 #, __pu_err, # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # lda $2,4($2) # dst,, dst lda $9,4($9) # name,, name lda $18,-4($18) # len,, len bis $31,$31,$31 $L71: # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); cmpule $18,1,$1 #, len,, tmp196 bne $1,$L72 #, tmp196, # ./include/linux/unaligned/packed_struct.h:13: return ptr->x; ldq_u $1,0($9) #, tmp203 ldq_u $4,1($9) #, tmp204 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$3 #, __pu_err # ./include/linux/unaligned/packed_struct.h:13: return ptr->x; extwl $1,$9,$1 #, tmp203, name, tmp206 extwh $4,$9,$4 # tmp204, name, tmp207 bis $1,$4,$1 # tmp206, tmp207, tmp202 # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); zapnot $1,3,$1 # tmp202, tmp211 .set macro # 378 "fs/readdir.c" 1 1: ldq_u $7,1($2) # __pu_tmp2, dst 2: ldq_u $4,0($2) # __pu_tmp1, dst inswh $1,$2,$23 # tmp211, dst, __pu_tmp4 inswl $1,$2,$22 # tmp211, dst, __pu_tmp3 mskwh $7,$2,$7 # __pu_tmp2, dst mskwl $4,$2,$4 # __pu_tmp1, dst or $7,$23,$7 # __pu_tmp2, __pu_tmp4 or $4,$22,$4 # __pu_tmp1, __pu_tmp3 3: stq_u $7,1($2) # __pu_tmp2, dst 4: stq_u $4,0($2) # __pu_tmp1, dst 5: .section __ex_table,"a" .long 1b-. lda $31,5b-1b($3) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,5b-2b($3) # __pu_err .previous .section __ex_table,"a" .long 3b-. lda $31,5b-3b($3) # __pu_err .previous .section __ex_table,"a" .long 4b-. lda $31,5b-4b($3) # __pu_err .previous # 0 "" 2 .set nomacro bne $3,$L74 #, __pu_err, # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); .align 3 #realign # lda $2,2($2) # dst,, dst lda $9,2($9) # name,, name lda $18,-2($18) # len,, len $L72: # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); beq $18,$L73 #, len, ldq_u $3,0($9) #, tmp218 mov $31,$1 #, __pu_err extbl $3,$9,$9 #, tmp218, name, tmp216 .set macro # 378 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, dst insbl $9,$2,$4 # tmp216, dst, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, dst or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, dst 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); lda $2,1($2) # dst,, dst $L73: # fs/readdir.c:378: unsafe_copy_dirent_name(dirent->d_name, name, namlen, efault_end); mov $31,$1 #, __pu_err .set macro # 378 "fs/readdir.c" 1 1: ldq_u $3,0($2) # __pu_tmp1, dst insbl $1,$2,$4 # __pu_err, dst, __pu_tmp2 mskbl $3,$2,$3 # __pu_tmp1, dst or $3,$4,$3 # __pu_tmp1, __pu_tmp2 2: stq_u $3,0($2) # __pu_tmp1, dst 3: .section __ex_table,"a" .long 1b-. lda $31,3b-1b($1) # __pu_err .previous .section __ex_table,"a" .long 2b-. lda $31,3b-2b($1) # __pu_err .previous # 0 "" 2 .set nomacro bne $1,$L74 #, __pu_err, # fs/readdir.c:382: dirent = (void __user *)dirent + reclen; .align 3 #realign # addq $6,$12,$1 # dirent, reclen, dirent # fs/readdir.c:384: buf->count -= reclen; subl $5,$12,$5 # _8, reclen, tmp227 # fs/readdir.c:381: buf->previous = dirent; stq $6,24($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].previous, dirent # fs/readdir.c:383: buf->current_dir = dirent; stq $1,16($11) # MEM[(struct getdents_callback64 *)ctx_45(D)].current_dir, dirent # fs/readdir.c:384: buf->count -= reclen; stl $5,32($11) # tmp227, MEM[(struct getdents_callback64 *)ctx_45(D)].count # fs/readdir.c:385: return 0; br $31,$L83 # .align 4 $L86: # fs/readdir.c:356: buf->error = verify_dirent_name(name, namlen); stl $0,36($11) # , MEM[(struct getdents_callback64 *)ctx_45(D)].error br $31,$L83 # .align 4 $L87: # fs/readdir.c:364: return -EINTR; lda $0,-4($31) # , br $31,$L83 # $L77: # fs/readdir.c:361: return -EINVAL; lda $0,-22($31) # , br $31,$L83 # .cfi_endproc $LFE3545: .end filldir64 .align 2 .align 4 .globl __se_sys_old_readdir .ent __se_sys_old_readdir __se_sys_old_readdir: .frame $30,64,$26,0 .mask 0x4000e00,-64 $LFB3540: .cfi_startproc ldah $29,0($27) !gpdisp!32 #,, lda $29,0($29) !gpdisp!32 #,, $__se_sys_old_readdir..ng: lda $30,-64($30) #,, .cfi_def_cfa_offset 64 # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); ldq $27,__fdget_pos($29) !literal!37 #,,, # fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd, stq $9,8($30) #, # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); addl $31,$16,$16 # tmp100, # fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd, stq $10,16($30) #, .cfi_offset 9, -56 .cfi_offset 10, -48 mov $17,$10 # tmp101, dirent stq $11,24($30) #, stq $26,0($30) #, .cfi_offset 11, -40 .cfi_offset 26, -64 .prologue 1 # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); jsr $26,($27),__fdget_pos !lituse_jsr!37 #,, ldah $29,0($26) !gpdisp!38 # # fs/readdir.c:217: struct readdir_callback buf = { stq $31,40($30) # MEM[(struct readdir_callback *)&buf + 8B], # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); lda $29,0($29) !gpdisp!38 #,, # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; bic $0,3,$11 # _9,, _11 # fs/readdir.c:217: struct readdir_callback buf = { ldq_u $31,0($30) ldah $1,fillonedir($29) !gprelhigh # tmp88,, # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; addl $31,$0,$9 # _9, _12 # fs/readdir.c:217: struct readdir_callback buf = { lda $1,fillonedir($1) !gprellow # tmp87,, tmp88 # fs/readdir.c:223: return -EBADF; lda $0,-9($31) # , # fs/readdir.c:217: struct readdir_callback buf = { stq $31,56($30) # MEM[(struct readdir_callback *)&buf + 8B], stq $1,32($30) # buf.ctx.actor, tmp87 stq $10,48($30) # buf.dirent, dirent # fs/readdir.c:222: if (!f.file) beq $11,$L89 #, _11, # fs/readdir.c:225: error = iterate_dir(f.file, &buf.ctx); lda $17,32($30) #,, mov $11,$16 # _11, ldq $27,iterate_dir($29) !literal!39 # jsr $26,($27),0 !lituse_jsr!39 ldah $29,0($26) !gpdisp!40 lda $29,0($29) !gpdisp!40 mov $0,$10 #, tmp103 # fs/readdir.c:226: if (buf.result) ldl $0,56($30) # _15, buf.result # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $9,2,$1 # _12,, tmp94 # fs/readdir.c:226: if (buf.result) cmovne $0,$0,$10 #, _15, _15, error # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) bne $1,$L104 #, tmp94, # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) blbs $9,$L105 # _12, $L93: # fs/readdir.c:230: return error; mov $10,$0 # error, $L89: # fs/readdir.c:212: SYSCALL_DEFINE3(old_readdir, unsigned int, fd, ldq $26,0($30) #, ldq $9,8($30) #, bis $31,$31,$31 ldq $10,16($30) #, ldq $11,24($30) #, lda $30,64($30) #,, .cfi_remember_state .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L105: .cfi_restore_state # ./include/linux/file.h:44: fput(fd.file); ldq $27,fput($29) !literal!33 #,,, mov $11,$16 # _11, jsr $26,($27),fput !lituse_jsr!33 #,, ldah $29,0($26) !gpdisp!34 # lda $29,0($29) !gpdisp!34 #,, br $31,$L93 # .align 4 $L104: # ./include/linux/file.h:78: __f_unlock_pos(f.file); ldq $27,__f_unlock_pos($29) !literal!35 #,,, mov $11,$16 # _11, jsr $26,($27),__f_unlock_pos !lituse_jsr!35 #,, ldah $29,0($26) !gpdisp!36 # lda $29,0($29) !gpdisp!36 #,, # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) blbc $9,$L93 # _12, br $31,$L105 # .cfi_endproc $LFE3540: .end __se_sys_old_readdir .globl sys_old_readdir $sys_old_readdir..ng = $__se_sys_old_readdir..ng sys_old_readdir = __se_sys_old_readdir .align 2 .align 4 .globl __se_sys_getdents .ent __se_sys_getdents __se_sys_getdents: .frame $30,96,$26,0 .mask 0x4001e00,-96 $LFB3543: .cfi_startproc ldah $29,0($27) !gpdisp!41 #,, lda $29,0($29) !gpdisp!41 #,, $__se_sys_getdents..ng: # fs/readdir.c:318: if (!access_ok(dirent, count)) zapnot $18,15,$2 # count,, __ao_b # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, lda $30,-96($30) #,, .cfi_def_cfa_offset 96 # fs/readdir.c:318: if (!access_ok(dirent, count)) cmpult $31,$2,$3 # __ao_b, tmp119 addq $17,$2,$1 # dirent, __ao_b, tmp117 subq $1,$3,$1 # tmp117, tmp119, __ao_end bis $17,$2,$2 # dirent, __ao_b, tmp121 # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, stq $10,16($30) #, # fs/readdir.c:318: if (!access_ok(dirent, count)) bis $1,$2,$1 # __ao_end, tmp121, tmp122 # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, stq $11,24($30) #, # fs/readdir.c:311: struct getdents_callback buf = { ldah $2,filldir($29) !gprelhigh # tmp116,, # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, stq $26,0($30) #, # fs/readdir.c:311: struct getdents_callback buf = { lda $2,filldir($2) !gprellow # tmp115,, tmp116 # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, stq $9,8($30) #, .cfi_offset 10, -80 .cfi_offset 11, -72 .cfi_offset 26, -96 .cfi_offset 9, -88 mov $18,$10 # tmp152, count stq $12,32($30) #, .cfi_offset 12, -64 .prologue 1 # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, addl $31,$16,$16 # tmp150, _1 # fs/readdir.c:311: struct getdents_callback buf = { stq $31,80($30) # MEM[(struct getdents_callback *)&buf + 8B], # fs/readdir.c:319: return -EFAULT; lda $11,-14($31) # , # fs/readdir.c:318: if (!access_ok(dirent, count)) ldq $3,80($8) # __current_thread_info.12_17->addr_limit.seg, __current_thread_info.12_17->addr_limit.seg # fs/readdir.c:311: struct getdents_callback buf = { stq $31,56($30) # MEM[(struct getdents_callback *)&buf + 8B], stq $31,72($30) # MEM[(struct getdents_callback *)&buf + 8B], # fs/readdir.c:318: if (!access_ok(dirent, count)) and $1,$3,$1 # tmp122, __current_thread_info.12_17->addr_limit.seg, tmp123 # fs/readdir.c:311: struct getdents_callback buf = { stq $2,48($30) # buf.ctx.actor, tmp115 stq $17,64($30) # buf.current_dir, dirent stl $18,80($30) # count, buf.count # fs/readdir.c:318: if (!access_ok(dirent, count)) bne $1,$L106 #, tmp123, # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); ldq $27,__fdget_pos($29) !literal!46 #,,, bis $31,$31,$31 jsr $26,($27),__fdget_pos !lituse_jsr!46 #,, ldah $29,0($26) !gpdisp!47 # lda $29,0($29) !gpdisp!47 #,, # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; bic $0,3,$12 # _22,, _24 # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; addl $31,$0,$9 # _22, _25 # fs/readdir.c:322: if (!f.file) beq $12,$L114 #, _24, # fs/readdir.c:325: error = iterate_dir(f.file, &buf.ctx); lda $17,48($30) #,, mov $12,$16 # _24, ldq $27,iterate_dir($29) !literal!48 # jsr $26,($27),0 !lituse_jsr!48 ldah $29,0($26) !gpdisp!49 lda $29,0($29) !gpdisp!49 # fs/readdir.c:327: error = buf.error; ldl $1,84($30) # buf.error, buf.error # fs/readdir.c:328: lastdirent = buf.previous; ldq $3,72($30) # buf.previous, lastdirent # fs/readdir.c:327: error = buf.error; cmovge $0,$1,$0 #, tmp154, buf.error, error # fs/readdir.c:329: if (lastdirent) { beq $3,$L123 #, lastdirent, # fs/readdir.c:330: if (put_user(buf.ctx.pos, &lastdirent->d_off)) lda $2,15($3) # __ao_end,, lastdirent lda $1,8($3) # __pu_addr,, lastdirent bis $2,$1,$1 # __ao_end, __pu_addr, tmp130 ldq $2,80($8) # __current_thread_info.14_33->addr_limit.seg, __current_thread_info.14_33->addr_limit.seg bis $1,8,$1 # tmp130,, tmp131 bis $31,$31,$31 and $1,$2,$1 # tmp131, __current_thread_info.14_33->addr_limit.seg, tmp132 bne $1,$L110 #, tmp132, ldq $2,56($30) # buf.ctx.pos, buf.ctx.pos .set macro # 330 "fs/readdir.c" 1 1: stq $2,8($3) # buf.ctx.pos, MEM[(struct __large_struct *)__pu_addr_30] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($1) # __pu_err .previous # 0 "" 2 # fs/readdir.c:330: if (put_user(buf.ctx.pos, &lastdirent->d_off)) .set nomacro beq $1,$L124 #, __pu_err, .align 3 #realign # $L110: # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $9,2,$1 # _25,, tmp142 bne $1,$L125 #, tmp142, $L111: # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) bis $31,$31,$31 blbs $9,$L126 # _25, $L106: # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, mov $11,$0 # , ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, lda $30,96($30) #,, .cfi_remember_state .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L125: .cfi_restore_state # ./include/linux/file.h:78: __f_unlock_pos(f.file); ldq $27,__f_unlock_pos($29) !literal!44 #,,, mov $12,$16 # _24, jsr $26,($27),__f_unlock_pos !lituse_jsr!44 #,, ldah $29,0($26) !gpdisp!45 # lda $29,0($29) !gpdisp!45 #,, # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) blbc $9,$L106 # _25, $L126: # ./include/linux/file.h:44: fput(fd.file); ldq $27,fput($29) !literal!42 #,,, mov $12,$16 # _24, jsr $26,($27),fput !lituse_jsr!42 #,, ldah $29,0($26) !gpdisp!43 # # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, ldq $9,8($30) #, bis $31,$31,$31 mov $11,$0 # , ldq $26,0($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, # ./include/linux/file.h:44: fput(fd.file); lda $29,0($29) !gpdisp!43 #,, # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, lda $30,96($30) #,, .cfi_remember_state .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L123: .cfi_restore_state mov $0,$11 # error, # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $9,2,$1 # _25,, tmp142 beq $1,$L111 #, tmp142, br $31,$L125 # .align 4 $L124: # fs/readdir.c:333: error = count - buf.count; ldl $11,80($30) #, buf.count # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $9,2,$1 # _25,, tmp142 subl $10,$11,$11 # count, buf.count, beq $1,$L111 #, tmp142, br $31,$L125 # $L114: # fs/readdir.c:323: return -EBADF; lda $11,-9($31) # , # fs/readdir.c:306: SYSCALL_DEFINE3(getdents, unsigned int, fd, br $31,$L106 # .cfi_endproc $LFE3543: .end __se_sys_getdents .globl sys_getdents $sys_getdents..ng = $__se_sys_getdents..ng sys_getdents = __se_sys_getdents .align 2 .align 4 .globl ksys_getdents64 .ent ksys_getdents64 ksys_getdents64: .frame $30,96,$26,0 .mask 0x4003e00,-96 $LFB3546: .cfi_startproc ldah $29,0($27) !gpdisp!50 #,, lda $29,0($29) !gpdisp!50 #,, $ksys_getdents64..ng: # fs/readdir.c:405: if (!access_ok(dirent, count)) zapnot $18,15,$1 # count, __ao_b # fs/readdir.c:395: { lda $30,-96($30) #,, .cfi_def_cfa_offset 96 stq $9,8($30) #, # fs/readdir.c:405: if (!access_ok(dirent, count)) cmpult $31,$1,$2 # __ao_b, tmp105 # fs/readdir.c:395: { stq $10,16($30) #, .cfi_offset 9, -88 .cfi_offset 10, -80 # fs/readdir.c:405: if (!access_ok(dirent, count)) addq $17,$1,$9 # dirent, __ao_b, tmp103 subq $9,$2,$9 # tmp103, tmp105, __ao_end bis $17,$1,$1 # dirent, __ao_b, tmp107 # fs/readdir.c:395: { stq $12,32($30) #, # fs/readdir.c:405: if (!access_ok(dirent, count)) bis $9,$1,$9 # __ao_end, tmp107, tmp108 # fs/readdir.c:395: { stq $26,0($30) #, # fs/readdir.c:398: struct getdents_callback64 buf = { ldah $1,filldir64($29) !gprelhigh # tmp102,, # fs/readdir.c:395: { stq $11,24($30) #, # fs/readdir.c:398: struct getdents_callback64 buf = { lda $1,filldir64($1) !gprellow # tmp101,, tmp102 # fs/readdir.c:395: { stq $13,40($30) #, .cfi_offset 12, -64 .cfi_offset 26, -96 .cfi_offset 11, -72 .cfi_offset 13, -56 .prologue 1 # fs/readdir.c:395: { mov $18,$12 # tmp132, count # fs/readdir.c:398: struct getdents_callback64 buf = { stq $31,80($30) # MEM[(struct getdents_callback64 *)&buf + 8B], # fs/readdir.c:406: return -EFAULT; lda $10,-14($31) # , # fs/readdir.c:405: if (!access_ok(dirent, count)) ldq $2,80($8) # __current_thread_info.25_5->addr_limit.seg, __current_thread_info.25_5->addr_limit.seg # fs/readdir.c:398: struct getdents_callback64 buf = { stq $31,56($30) # MEM[(struct getdents_callback64 *)&buf + 8B], stq $31,72($30) # MEM[(struct getdents_callback64 *)&buf + 8B], # fs/readdir.c:405: if (!access_ok(dirent, count)) and $9,$2,$9 # tmp108, __current_thread_info.25_5->addr_limit.seg, tmp109 # fs/readdir.c:398: struct getdents_callback64 buf = { stq $1,48($30) # buf.ctx.actor, tmp101 stq $17,64($30) # buf.current_dir, dirent stl $18,80($30) # count, buf.count # fs/readdir.c:405: if (!access_ok(dirent, count)) bne $9,$L128 #, tmp109, # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); ldq $27,__fdget_pos($29) !literal!55 #,,, # fs/readdir.c:410: return -EBADF; lda $10,-9($31) # , # ./include/linux/file.h:72: return __to_fd(__fdget_pos(fd)); jsr $26,($27),__fdget_pos !lituse_jsr!55 #,, ldah $29,0($26) !gpdisp!56 # lda $29,0($29) !gpdisp!56 #,, # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; bic $0,3,$13 # _38,, _40 # ./include/linux/file.h:57: return (struct fd){(struct file *)(v & ~3),v & 3}; addl $31,$0,$11 # _38, _41 # fs/readdir.c:409: if (!f.file) beq $13,$L128 #, _40, # fs/readdir.c:412: error = iterate_dir(f.file, &buf.ctx); lda $17,48($30) #,, mov $13,$16 # _40, ldq $27,iterate_dir($29) !literal!57 # jsr $26,($27),0 !lituse_jsr!57 ldah $29,0($26) !gpdisp!58 lda $29,0($29) !gpdisp!58 # fs/readdir.c:414: error = buf.error; ldl $10,84($30) # buf.error, buf.error # fs/readdir.c:415: lastdirent = buf.previous; ldq $1,72($30) # buf.previous, lastdirent # fs/readdir.c:414: error = buf.error; cmovlt $0,$0,$10 #, tmp134, tmp134, # fs/readdir.c:416: if (lastdirent) { beq $1,$L130 #, lastdirent, # fs/readdir.c:418: if (__put_user(d_off, &lastdirent->d_off)) ldq $2,56($30) # buf.ctx.pos, buf.ctx.pos .set macro # 418 "fs/readdir.c" 1 1: stq $2,8($1) # buf.ctx.pos, MEM[(struct __large_struct *)_15] 2: .section __ex_table,"a" .long 1b-. lda $31,2b-1b($9) # __pu_err .previous # 0 "" 2 # fs/readdir.c:419: error = -EFAULT; .set nomacro .align 3 #realign # lda $10,-14($31) # , # fs/readdir.c:418: if (__put_user(d_off, &lastdirent->d_off)) beq $9,$L144 #, __pu_err, $L130: # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $11,2,$1 # _41,, tmp123 bne $1,$L145 #, tmp123, $L131: # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) bis $31,$31,$31 blbs $11,$L146 # _41, $L128: # fs/readdir.c:425: } mov $10,$0 # , ldq $26,0($30) #, ldq $9,8($30) #, ldq $10,16($30) #, ldq $11,24($30) #, ldq $12,32($30) #, ldq $13,40($30) #, bis $31,$31,$31 lda $30,96($30) #,, .cfi_remember_state .cfi_restore 13 .cfi_restore 12 .cfi_restore 11 .cfi_restore 10 .cfi_restore 9 .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .align 4 $L144: .cfi_restore_state # fs/readdir.c:421: error = count - buf.count; ldl $10,80($30) #, buf.count # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) and $11,2,$1 # _41,, tmp123 # fs/readdir.c:421: error = count - buf.count; subl $12,$10,$10 # count, buf.count, # ./include/linux/file.h:77: if (f.flags & FDPUT_POS_UNLOCK) beq $1,$L131 #, tmp123, $L145: # ./include/linux/file.h:78: __f_unlock_pos(f.file); ldq $27,__f_unlock_pos($29) !literal!53 #,,, mov $13,$16 # _40, jsr $26,($27),__f_unlock_pos !lituse_jsr!53 #,, ldah $29,0($26) !gpdisp!54 # lda $29,0($29) !gpdisp!54 #,, # ./include/linux/file.h:43: if (fd.flags & FDPUT_FPUT) blbc $11,$L128 # _41, $L146: # ./include/linux/file.h:44: fput(fd.file); ldq $27,fput($29) !literal!51 #,,, mov $13,$16 # _40, jsr $26,($27),fput !lituse_jsr!51 #,, ldah $29,0($26) !gpdisp!52 # lda $29,0($29) !gpdisp!52 #,, br $31,$L128 # .cfi_endproc $LFE3546: .end ksys_getdents64 .align 2 .align 4 .globl __se_sys_getdents64 .ent __se_sys_getdents64 __se_sys_getdents64: .frame $30,16,$26,0 .mask 0x4000000,-16 $LFB3547: .cfi_startproc ldah $29,0($27) !gpdisp!59 #,, lda $29,0($29) !gpdisp!59 #,, $__se_sys_getdents64..ng: lda $30,-16($30) #,, .cfi_def_cfa_offset 16 # fs/readdir.c:431: return ksys_getdents64(fd, dirent, count); addl $31,$18,$18 # tmp84, # fs/readdir.c:428: SYSCALL_DEFINE3(getdents64, unsigned int, fd, stq $26,0($30) #, .cfi_offset 26, -16 .prologue 1 # fs/readdir.c:431: return ksys_getdents64(fd, dirent, count); addl $31,$16,$16 # tmp83, ldq $27,ksys_getdents64($29) !literal!60 # jsr $26,($27),0 !lituse_jsr!60 ldah $29,0($26) !gpdisp!61 lda $29,0($29) !gpdisp!61 # fs/readdir.c:428: SYSCALL_DEFINE3(getdents64, unsigned int, fd, ldq $26,0($30) #, bis $31,$31,$31 lda $30,16($30) #,, .cfi_restore 26 .cfi_def_cfa_offset 0 ret $31,($26),1 .cfi_endproc $LFE3547: .end __se_sys_getdents64 .globl sys_getdents64 $sys_getdents64..ng = $__se_sys_getdents64..ng sys_getdents64 = __se_sys_getdents64 .section .data.once,"aw" .type __warned.38914, @object .size __warned.38914, 1 __warned.38914: .zero 1 .type __warned.38909, @object .size __warned.38909, 1 __warned.38909: .zero 1 .section ___ksymtab+iterate_dir,"a" .align 3 .type __ksymtab_iterate_dir, @object .size __ksymtab_iterate_dir, 24 __ksymtab_iterate_dir: # value: .quad iterate_dir # name: .quad __kstrtab_iterate_dir # namespace: .quad 0 .section __ksymtab_strings,"a" .type __kstrtab_iterate_dir, @object .size __kstrtab_iterate_dir, 12 __kstrtab_iterate_dir: .string "iterate_dir" .ident "GCC: (GNU) 9.2.0" .section .note.GNU-stack,"",@progbits