Linux thread_info与task_struct内核栈布局关联
Linux thread_info与task_struct内核栈布局关联内核栈与thread_info的联编由THREAD_SIZE和arch-specific的栈底寄存器协作完成。x86_64上内核栈大小为16KBTHREAD_SIZE16*1024按页对齐分配。栈顶高地址端向下增长存放函数调用帧栈底低地址端存放struct thread_info。通过current_thread_info()宏从栈指针sp的低12位掩码获取栈基地址再强制类型转换为thread_info指针。c/* arch/x86/include/asm/thread_info.h */#ifndef __ASSEMBLY__struct thread_info {unsigned long flags; /* TIF_xxx标志位 */u32 status; /* 线程状态位如TS_COMPAT */};/* 低12位清零即得栈基地址也即thread_info基地址 */#define current_thread_info() \((struct thread_info *)(current_top_of_stack() - THREAD_SIZE))/* 也可以直接通过sp低位掩码获取 */static inline struct thread_info *current_thread_info(void){return (struct thread_info *)((unsigned long)current_stack_pointer ~(THREAD_SIZE - 1));}#endifx86_64从4.9内核开始采用了arch_thread_struct_setup的分离布局thread_info不再是内核栈底部的固定成员而是通过task_struct中的thread_info字段直接嵌入。CONFIG_THREAD_INFO_IN_TASKy时thread_info变成task_struct的第一个成员flags和status直接内联在task_struct中内核栈底部不包含thread_info。此时current_thread_info()退化为current-thread_info。c/* include/linux/sched.h */struct task_struct {#ifdef CONFIG_THREAD_INFO_IN_TASKstruct thread_info thread_info;#endif/* ... */void *stack; /* 指向内核栈的指针 *//* ... */};/* CONFIG_THREAD_INFO_IN_TASK时current_thread_info的实现变为 */#define current_thread_info() (current-thread_info)内核栈通过alloc_thread_stack_node()分配。该函数优先从thread_info_cache的slab缓存中分配当缓存耗尽时使用__get_free_pages(GFP_KERNEL_ACCOUNT, THREAD_SIZE_ORDER)。分配的页面物理地址直接作为栈基址并将stack_vm_area结构链接到task_struct-stack上。释放时检查memcg的kmem CG是否已关联若是则通过memcg_kmem_uncharge退还计费。cstatic unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node){unsigned long *stack;stack kmem_cache_alloc_node(thread_stack_cache, GFP_KERNEL_ACCOUNT, node);if (stack)goto done;stack __get_free_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,THREAD_SIZE_ORDER, node);if (!stack)return NULL;done:tsk-stack stack;return stack;}在CONFIG_THREAD_INFO_IN_TASKy的架构上内核栈溢出检测依赖STACK_END_MAGIC。alloc_thread_stack_node在栈顶填入一个0x57AC6E9D魔数作为哨兵。每次内核态entry如syscall或interrupt检查current-stack THREAD_SIZE处的魔数是否被改写。若在栈溢出导致栈空间越界到下一个页面时魔数被覆盖则触发stack overflow异常。c/* kernel/fork.c */#ifdef CONFIG_STACK_GROWS_SUP#define STACK_END_MAGIC 0x57AC6E9D#else#define STACK_END_MAGIC 0x57AC6E9D#endifstatic void check_stack_usage(void){static DEFINE_SPINLOCK(low_water_lock);static int lowest_to_date THREAD_SIZE;unsigned long unused;/* 计算实际栈使用量——从栈顶向下扫描第一个非零字节 */for (unused THREAD_SIZE - sizeof(struct thread_info); unused 0; unused--)if (unlikely(((unsigned long *)current-stack)[unused / sizeof(unsigned long)]))break;/* unused更新到lowest_to_date时记录到dmesg */}内核栈布局直接决定schedule()和__switch_to_asm的行为。在__switch_to_asm中当前进程的RSP保存到task_struct-thread.sp属于arch特定的struct thread_struct然后加载next进程的thread.sp。此时栈完全切换——prev进程后续的调度统计update发生在切换后的栈上但通过rq指针而非当前栈来访问prev workload。c/* arch/x86/entry/entry_64.S */__switch_to_asm:pushq %rbppushq %rbxpushq %r12pushq %r13pushq %r14pushq %r15movq %rsp, TASK_threadsp(%rdi) /* 保存prev-thread.sp */movq TASK_threadsp(%rsi), %rsp /* 恢复next-thread.sp */popq %r15popq %r14popq %r13popq %r12popq %rbxpopq %rbpret存在一个与内核栈相关的double fault竞态当进程因page fault进入do_page_fault时若fault本身发生在内核栈已接近溢出的边缘do_page_fault的栈帧可能超过剩余栈空间触发#DF双故障。在x86_64上#DF使用独立的IST栈Interrupt Stack Table所以不会递归。但如果CONFIG_THREAD_INFO_IN_TASK已启用task_struct本身不在栈上从而不受影响。另一个边界问题是内核栈在kasan和kasan_stack模式下会附加额外的shadow map。stack_depot_save()在fork路径中记录stack trace到slab缓存时会扫描当前内核栈的call frames——如果进程刚创建但尚未执行任何内核调用即stack区域全零stack_trace_save_truncated直接返回0。preemption与栈关联的特殊性preempt_disable()递增current_thread_info()-preempt_count在CONFIG_PREEMPT_COUNTy时该字段存放在task_struct-thread_info中而不是内核栈上。这意味着即使栈被完全切换进程切换后新进程能读到自己的preempt_count而不会误读旧进程的值。但CONFIG_THREAD_INFO_IN_TASK使preempt_count迁移到了thread_info内部其行为仍保持一致。c/* include/asm-generic/current.h */#define get_current() (current_thread_info()-task)/* include/linux/sched.h */#define current get_current()/* 在x86_64上percpu的current_task保存着指向task_struct的指针 */DECLARE_PER_CPU(struct task_struct *, current_task);#define current raw_cpu_read(current_task)x86_64的current实现从percpu的current_task变量读取而非通过内核栈偏移。与arm64不同——arm64通过sp_el0寄存器保存task_struct指针比percpu读取少一次内存load。两种架构差异导致switch_to()中更新current的方式不同x86_64写current_task percpuarm64写sp_el0。内核栈耗尽的关键保护机制是double fault IST栈。当exception entry检查到rsp低于栈基址时硬件自动切换到IST栈执行double fault handler。该handler通过dump_stack()输出内核栈完整信息后调用panic()。但若在fork阶段thread_stack_cache的__GFP_ZERO分配意外返回已污染的页面slab reuse导致残留值check_stack_usage可能在first-run时误判栈使用量。eif.kfrxyi.cn/99711.Doceif.kfrxyi.cn/35191.Doceif.kfrxyi.cn/71719.Doceif.kfrxyi.cn/19537.Doceif.kfrxyi.cn/33173.Doceif.kfrxyi.cn/75139.Doceif.kfrxyi.cn/42440.Doceif.kfrxyi.cn/44084.Doceif.kfrxyi.cn/40408.Doceif.kfrxyi.cn/86662.Doceid.kfrxyi.cn/73579.Doceid.kfrxyi.cn/53775.Doceid.kfrxyi.cn/02842.Doceid.kfrxyi.cn/33333.Doceid.kfrxyi.cn/00624.Doceid.kfrxyi.cn/77317.Doceid.kfrxyi.cn/84684.Doceid.kfrxyi.cn/64428.Doceid.kfrxyi.cn/62424.Doceid.kfrxyi.cn/17195.Doceis.kfrxyi.cn/88280.Doceis.kfrxyi.cn/13775.Doceis.kfrxyi.cn/06420.Doceis.kfrxyi.cn/20840.Doceis.kfrxyi.cn/28622.Doceis.kfrxyi.cn/26000.Doceis.kfrxyi.cn/02868.Doceis.kfrxyi.cn/64828.Doceis.kfrxyi.cn/39937.Doceis.kfrxyi.cn/88206.Doceia.kfrxyi.cn/28026.Doceia.kfrxyi.cn/37735.Doceia.kfrxyi.cn/04046.Doceia.kfrxyi.cn/17159.Doceia.kfrxyi.cn/66240.Doceia.kfrxyi.cn/28268.Doceia.kfrxyi.cn/39373.Doceia.kfrxyi.cn/31753.Doceia.kfrxyi.cn/79731.Doceia.kfrxyi.cn/93775.Doceip.kfrxyi.cn/02646.Doceip.kfrxyi.cn/77971.Doceip.kfrxyi.cn/64204.Doceip.kfrxyi.cn/33977.Doceip.kfrxyi.cn/86260.Doceip.kfrxyi.cn/26624.Doceip.kfrxyi.cn/95775.Doceip.kfrxyi.cn/71537.Doceip.kfrxyi.cn/97731.Doceip.kfrxyi.cn/93197.Doceio.kfrxyi.cn/66886.Doceio.kfrxyi.cn/79197.Doceio.kfrxyi.cn/53517.Doceio.kfrxyi.cn/15371.Doceio.kfrxyi.cn/80688.Doceio.kfrxyi.cn/24488.Doceio.kfrxyi.cn/91119.Doceio.kfrxyi.cn/24006.Doceio.kfrxyi.cn/88844.Doceio.kfrxyi.cn/06802.Doceii.kfrxyi.cn/08406.Doceii.kfrxyi.cn/86222.Doceii.kfrxyi.cn/93975.Doceii.kfrxyi.cn/42004.Doceii.kfrxyi.cn/93519.Doceii.kfrxyi.cn/68626.Doceii.kfrxyi.cn/13331.Doceii.kfrxyi.cn/31511.Doceii.kfrxyi.cn/13991.Doceii.kfrxyi.cn/75133.Doceiu.kfrxyi.cn/00008.Doceiu.kfrxyi.cn/06262.Doceiu.kfrxyi.cn/35953.Doceiu.kfrxyi.cn/19597.Doceiu.kfrxyi.cn/35355.Doceiu.kfrxyi.cn/68820.Doceiu.kfrxyi.cn/62600.Doceiu.kfrxyi.cn/33311.Doceiu.kfrxyi.cn/44882.Doceiu.kfrxyi.cn/62864.Doceiy.kfrxyi.cn/20888.Doceiy.kfrxyi.cn/20624.Doceiy.kfrxyi.cn/46824.Doceiy.kfrxyi.cn/91533.Doceiy.kfrxyi.cn/57777.Doceiy.kfrxyi.cn/93919.Doceiy.kfrxyi.cn/57559.Doceiy.kfrxyi.cn/22622.Doceiy.kfrxyi.cn/04602.Doceiy.kfrxyi.cn/39393.Doceit.kfrxyi.cn/35193.Doceit.kfrxyi.cn/71573.Doceit.kfrxyi.cn/88666.Doceit.kfrxyi.cn/77797.Doceit.kfrxyi.cn/64408.Doceit.kfrxyi.cn/73195.Doceit.kfrxyi.cn/82026.Doceit.kfrxyi.cn/62642.Doceit.kfrxyi.cn/15551.Doceit.kfrxyi.cn/08022.Doceir.kfrxyi.cn/82022.Doceir.kfrxyi.cn/24642.Doceir.kfrxyi.cn/75559.Doceir.kfrxyi.cn/51937.Doceir.kfrxyi.cn/71913.Doceir.kfrxyi.cn/73137.Doceir.kfrxyi.cn/20000.Doceir.kfrxyi.cn/39179.Doceir.kfrxyi.cn/26082.Doceir.kfrxyi.cn/77575.Doceie.kfrxyi.cn/68042.Doceie.kfrxyi.cn/77371.Doceie.kfrxyi.cn/53995.Doceie.kfrxyi.cn/35797.Doceie.kfrxyi.cn/17735.Doceie.kfrxyi.cn/93117.Doceie.kfrxyi.cn/19551.Doceie.kfrxyi.cn/44086.Doceie.kfrxyi.cn/62086.Doceie.kfrxyi.cn/60288.Doceiw.kfrxyi.cn/60460.Doceiw.kfrxyi.cn/66848.Doceiw.kfrxyi.cn/46660.Doceiw.kfrxyi.cn/31573.Doceiw.kfrxyi.cn/22642.Doceiw.kfrxyi.cn/60022.Doceiw.kfrxyi.cn/26000.Doceiw.kfrxyi.cn/15573.Doceiw.kfrxyi.cn/35971.Doceiw.kfrxyi.cn/60682.Doceiq.kfrxyi.cn/66600.Doceiq.kfrxyi.cn/53793.Doceiq.kfrxyi.cn/42066.Doceiq.kfrxyi.cn/17539.Doceiq.kfrxyi.cn/59713.Doceiq.kfrxyi.cn/62020.Doceiq.kfrxyi.cn/39179.Doceiq.kfrxyi.cn/17913.Doceiq.kfrxyi.cn/26064.Doceiq.kfrxyi.cn/68608.Doceum.kfrxyi.cn/04808.Doceum.kfrxyi.cn/55115.Doceum.kfrxyi.cn/51551.Doceum.kfrxyi.cn/28042.Doceum.kfrxyi.cn/75911.Doceum.kfrxyi.cn/48082.Doceum.kfrxyi.cn/88622.Doceum.kfrxyi.cn/59711.Doceum.kfrxyi.cn/04404.Doceum.kfrxyi.cn/68086.Doceun.kfrxyi.cn/88484.Doceun.kfrxyi.cn/46604.Doceun.kfrxyi.cn/62422.Doceun.kfrxyi.cn/55919.Doceun.kfrxyi.cn/02246.Doceun.kfrxyi.cn/73575.Doceun.kfrxyi.cn/91593.Doceun.kfrxyi.cn/48880.Doceun.kfrxyi.cn/66422.Doceun.kfrxyi.cn/26604.Doceub.kfrxyi.cn/86480.Doceub.kfrxyi.cn/75113.Doceub.kfrxyi.cn/15191.Doceub.kfrxyi.cn/68440.Doceub.kfrxyi.cn/79735.Doceub.kfrxyi.cn/44422.Doceub.kfrxyi.cn/13537.Doceub.kfrxyi.cn/40680.Doceub.kfrxyi.cn/77395.Doceub.kfrxyi.cn/40460.Doceuv.kfrxyi.cn/24462.Doceuv.kfrxyi.cn/71355.Doceuv.kfrxyi.cn/46486.Doceuv.kfrxyi.cn/71791.Doceuv.kfrxyi.cn/93191.Doceuv.kfrxyi.cn/57599.Doceuv.kfrxyi.cn/71513.Doceuv.kfrxyi.cn/31597.Doceuv.kfrxyi.cn/97557.Doceuv.kfrxyi.cn/53991.Doceuc.kfrxyi.cn/33199.Doceuc.kfrxyi.cn/84244.Doceuc.kfrxyi.cn/42828.Doceuc.kfrxyi.cn/75777.Doceuc.kfrxyi.cn/15711.Doceuc.kfrxyi.cn/59193.Doceuc.kfrxyi.cn/35775.Doceuc.kfrxyi.cn/39131.Doceuc.kfrxyi.cn/57591.Doceuc.kfrxyi.cn/97133.Doceux.kfrxyi.cn/06642.Doceux.kfrxyi.cn/99715.Doceux.kfrxyi.cn/40244.Doceux.kfrxyi.cn/13339.Doceux.kfrxyi.cn/46408.Doceux.kfrxyi.cn/95539.Doceux.kfrxyi.cn/22486.Doceux.kfrxyi.cn/68486.Doceux.kfrxyi.cn/20284.Doceux.kfrxyi.cn/55395.Doceuz.kfrxyi.cn/95399.Doceuz.kfrxyi.cn/79397.Doceuz.kfrxyi.cn/00622.Doceuz.kfrxyi.cn/86686.Doceuz.kfrxyi.cn/84824.Doceuz.kfrxyi.cn/86600.Doceuz.kfrxyi.cn/53339.Doceuz.kfrxyi.cn/93591.Doceuz.kfrxyi.cn/71357.Doceuz.kfrxyi.cn/51373.Doceul.kfrxyi.cn/79199.Doceul.kfrxyi.cn/55159.Doceul.kfrxyi.cn/24680.Doceul.kfrxyi.cn/08806.Doceul.kfrxyi.cn/44004.Doceul.kfrxyi.cn/99391.Doceul.kfrxyi.cn/19931.Doceul.kfrxyi.cn/31911.Doceul.kfrxyi.cn/75355.Doceul.kfrxyi.cn/17555.Doceuk.kfrxyi.cn/75375.Doceuk.kfrxyi.cn/40248.Doceuk.kfrxyi.cn/86882.Doceuk.kfrxyi.cn/55153.Doceuk.kfrxyi.cn/24220.Doceuk.kfrxyi.cn/71335.Doceuk.kfrxyi.cn/19779.Doceuk.kfrxyi.cn/42848.Doceuk.kfrxyi.cn/26888.Doceuk.kfrxyi.cn/37995.Doceuj.kfrxyi.cn/99537.Doceuj.kfrxyi.cn/68244.Doceuj.kfrxyi.cn/71311.Doceuj.kfrxyi.cn/15351.Doceuj.kfrxyi.cn/77335.Doceuj.kfrxyi.cn/91335.Doceuj.kfrxyi.cn/68888.Doceuj.kfrxyi.cn/59579.Doceuj.kfrxyi.cn/80002.Doceuj.kfrxyi.cn/44246.Doceuh.kfrxyi.cn/06044.Doceuh.kfrxyi.cn/84680.Doceuh.kfrxyi.cn/57793.Doceuh.kfrxyi.cn/80466.Doceuh.kfrxyi.cn/11539.Doceuh.kfrxyi.cn/66624.Doceuh.kfrxyi.cn/91979.Doceuh.kfrxyi.cn/39731.Doceuh.kfrxyi.cn/19311.Doceuh.kfrxyi.cn/06844.Doceug.kfrxyi.cn/24682.Doceug.kfrxyi.cn/71195.Doceug.kfrxyi.cn/44844.Doceug.kfrxyi.cn/04288.Doceug.kfrxyi.cn/37113.Doceug.kfrxyi.cn/02080.Doceug.kfrxyi.cn/26640.Doceug.kfrxyi.cn/20428.Doceug.kfrxyi.cn/15755.Doceug.kfrxyi.cn/84002.Doceuf.kfrxyi.cn/19557.Doceuf.kfrxyi.cn/60444.Doceuf.kfrxyi.cn/24404.Doceuf.kfrxyi.cn/75155.Doceuf.kfrxyi.cn/64408.Doceuf.kfrxyi.cn/62062.Doceuf.kfrxyi.cn/04602.Doceuf.kfrxyi.cn/04084.Doceuf.kfrxyi.cn/02068.Doceuf.kfrxyi.cn/62424.Doceud.kfrxyi.cn/73539.Doceud.kfrxyi.cn/68646.Doceud.kfrxyi.cn/06202.Doceud.kfrxyi.cn/33591.Doceud.kfrxyi.cn/95133.Doceud.kfrxyi.cn/71113.Doceud.kfrxyi.cn/99397.Doceud.kfrxyi.cn/22848.Doceud.kfrxyi.cn/82864.Doceud.kfrxyi.cn/64842.Doceus.kfrxyi.cn/79137.Doceus.kfrxyi.cn/28046.Doceus.kfrxyi.cn/28446.Doceus.kfrxyi.cn/17779.Doceus.kfrxyi.cn/55917.Doceus.kfrxyi.cn/22004.Doceus.kfrxyi.cn/57573.Doceus.kfrxyi.cn/00602.Doceus.kfrxyi.cn/22620.Doceus.kfrxyi.cn/28822.Doceua.kfrxyi.cn/13955.Doceua.kfrxyi.cn/59711.Doceua.kfrxyi.cn/31799.Doceua.kfrxyi.cn/79579.Doceua.kfrxyi.cn/35313.Doceua.kfrxyi.cn/44060.Doceua.kfrxyi.cn/08286.Doceua.kfrxyi.cn/64086.Doceua.kfrxyi.cn/20602.Doceua.kfrxyi.cn/73713.Doceup.kfrxyi.cn/55573.Doceup.kfrxyi.cn/66422.Doceup.kfrxyi.cn/68246.Doceup.kfrxyi.cn/11793.Doceup.kfrxyi.cn/82002.Doceup.kfrxyi.cn/06880.Doceup.kfrxyi.cn/48488.Doceup.kfrxyi.cn/33159.Doceup.kfrxyi.cn/13757.Doceup.kfrxyi.cn/42004.Doceuo.kfrxyi.cn/37519.Doceuo.kfrxyi.cn/19775.Doceuo.kfrxyi.cn/35155.Doceuo.kfrxyi.cn/24640.Doceuo.kfrxyi.cn/48882.Doceuo.kfrxyi.cn/44882.Doceuo.kfrxyi.cn/86826.Doceuo.kfrxyi.cn/59351.Doceuo.kfrxyi.cn/19375.Doceuo.kfrxyi.cn/64404.Doceui.kfrxyi.cn/46028.Doceui.kfrxyi.cn/19595.Doceui.kfrxyi.cn/59951.Doceui.kfrxyi.cn/20466.Doceui.kfrxyi.cn/84428.Doceui.kfrxyi.cn/75513.Doceui.kfrxyi.cn/26884.Doceui.kfrxyi.cn/11911.Doceui.kfrxyi.cn/86846.Doceui.kfrxyi.cn/82240.Doceuu.kfrxyi.cn/80828.Doceuu.kfrxyi.cn/06488.Doceuu.kfrxyi.cn/33335.Doceuu.kfrxyi.cn/88042.Doceuu.kfrxyi.cn/59193.Doceuu.kfrxyi.cn/88666.Doceuu.kfrxyi.cn/00422.Doceuu.kfrxyi.cn/97993.Doceuu.kfrxyi.cn/17995.Doceuu.kfrxyi.cn/88846.Doceuy.kfrxyi.cn/15115.Doceuy.kfrxyi.cn/17713.Doceuy.kfrxyi.cn/66480.Doceuy.kfrxyi.cn/26886.Doceuy.kfrxyi.cn/64422.Doceuy.kfrxyi.cn/55915.Doceuy.kfrxyi.cn/84462.Doceuy.kfrxyi.cn/35511.Doceuy.kfrxyi.cn/73577.Doceuy.kfrxyi.cn/44204.Doceut.kfrxyi.cn/84028.Doceut.kfrxyi.cn/75317.Doceut.kfrxyi.cn/24460.Doceut.kfrxyi.cn/26680.Doceut.kfrxyi.cn/19955.Doceut.kfrxyi.cn/42440.Doceut.kfrxyi.cn/39735.Doceut.kfrxyi.cn/77911.Doceut.kfrxyi.cn/19371.Doceut.kfrxyi.cn/42828.Doceur.kfrxyi.cn/31399.Doceur.kfrxyi.cn/88000.Doceur.kfrxyi.cn/33779.Doceur.kfrxyi.cn/13159.Doceur.kfrxyi.cn/04282.Doceur.kfrxyi.cn/08086.Doceur.kfrxyi.cn/62282.Doceur.kfrxyi.cn/28622.Doceur.kfrxyi.cn/71557.Doceur.kfrxyi.cn/13513.Doceue.kfrxyi.cn/28488.Doceue.kfrxyi.cn/31753.Doceue.kfrxyi.cn/73151.Doceue.kfrxyi.cn/88282.Doceue.kfrxyi.cn/53597.Doceue.kfrxyi.cn/79551.Doceue.kfrxyi.cn/68288.Doceue.kfrxyi.cn/82620.Doceue.kfrxyi.cn/06628.Doceue.kfrxyi.cn/66248.Doceuw.kfrxyi.cn/26604.Doceuw.kfrxyi.cn/24660.Doceuw.kfrxyi.cn/04028.Doceuw.kfrxyi.cn/42222.Doceuw.kfrxyi.cn/28806.Doceuw.kfrxyi.cn/60602.Doceuw.kfrxyi.cn/46208.Doceuw.kfrxyi.cn/26242.Doceuw.kfrxyi.cn/84020.Doceuw.kfrxyi.cn/66826.Doceuq.kfrxyi.cn/73795.Doceuq.kfrxyi.cn/48462.Doceuq.kfrxyi.cn/22284.Doceuq.kfrxyi.cn/17593.Doceuq.kfrxyi.cn/86622.Doceuq.kfrxyi.cn/77573.Doceuq.kfrxyi.cn/06624.Doceuq.kfrxyi.cn/80664.Doceuq.kfrxyi.cn/48222.Doceuq.kfrxyi.cn/00228.Doceym.kfrxyi.cn/66842.Doceym.kfrxyi.cn/93179.Doceym.kfrxyi.cn/37377.Doceym.kfrxyi.cn/91979.Doceym.kfrxyi.cn/35939.Doceym.kfrxyi.cn/93193.Doceym.kfrxyi.cn/37553.Doceym.kfrxyi.cn/84408.Doceym.kfrxyi.cn/82460.Doceym.kfrxyi.cn/15779.Doceyn.kfrxyi.cn/62648.Doceyn.kfrxyi.cn/77535.Doceyn.kfrxyi.cn/68860.Doceyn.kfrxyi.cn/79955.Doceyn.kfrxyi.cn/04884.Doceyn.kfrxyi.cn/86644.Doceyn.kfrxyi.cn/19733.Doceyn.kfrxyi.cn/37719.Doceyn.kfrxyi.cn/57335.Doceyn.kfrxyi.cn/73555.Doceyb.kfrxyi.cn/75399.Doceyb.kfrxyi.cn/37979.Doceyb.kfrxyi.cn/57397.Doceyb.kfrxyi.cn/68008.Doceyb.kfrxyi.cn/75553.Doceyb.kfrxyi.cn/48080.Doceyb.kfrxyi.cn/11991.Doceyb.kfrxyi.cn/08408.Doceyb.kfrxyi.cn/64280.Doceyb.kfrxyi.cn/53353.Doceyv.kfrxyi.cn/02626.Doceyv.kfrxyi.cn/55357.Doceyv.kfrxyi.cn/68060.Doceyv.kfrxyi.cn/15113.Doceyv.kfrxyi.cn/97539.Doceyv.kfrxyi.cn/13999.Doceyv.kfrxyi.cn/15951.Doceyv.kfrxyi.cn/42068.Doceyv.kfrxyi.cn/55715.Doceyv.kfrxyi.cn/37139.Doceyc.kfrxyi.cn/39713.Doceyc.kfrxyi.cn/08024.Doceyc.kfrxyi.cn/42286.Doceyc.kfrxyi.cn/40024.Doceyc.kfrxyi.cn/97159.Doceyc.kfrxyi.cn/84080.Doceyc.kfrxyi.cn/31597.Doceyc.kfrxyi.cn/26624.Doceyc.kfrxyi.cn/79151.Doceyc.kfrxyi.cn/17159.Doceyx.kfrxyi.cn/02820.Doceyx.kfrxyi.cn/42024.Doceyx.kfrxyi.cn/15357.Doceyx.kfrxyi.cn/53559.Doceyx.kfrxyi.cn/73351.Doceyx.kfrxyi.cn/86048.Doceyx.kfrxyi.cn/46680.Doceyx.kfrxyi.cn/15711.Doceyx.kfrxyi.cn/80002.Doceyx.kfrxyi.cn/28882.Doceyz.kfrxyi.cn/24200.Doceyz.kfrxyi.cn/13755.Doceyz.kfrxyi.cn/73979.Doceyz.kfrxyi.cn/80864.Doceyz.kfrxyi.cn/04840.Doceyz.kfrxyi.cn/51537.Doceyz.kfrxyi.cn/95553.Doceyz.kfrxyi.cn/80020.Doceyz.kfrxyi.cn/15739.Doceyz.kfrxyi.cn/19337.Doceyl.kfrxyi.cn/77539.Doceyl.kfrxyi.cn/24246.Doceyl.kfrxyi.cn/08086.Doceyl.kfrxyi.cn/11713.Doceyl.kfrxyi.cn/62408.Doceyl.kfrxyi.cn/39377.Doceyl.kfrxyi.cn/35739.Doceyl.kfrxyi.cn/31713.Doceyl.kfrxyi.cn/75753.Doceyl.kfrxyi.cn/11971.Doceyk.kfrxyi.cn/73117.Doceyk.kfrxyi.cn/97137.Doceyk.kfrxyi.cn/22840.Doceyk.kfrxyi.cn/20486.Doceyk.kfrxyi.cn/04840.Doceyk.kfrxyi.cn/97753.Doceyk.kfrxyi.cn/86640.Doceyk.kfrxyi.cn/66820.Doceyk.kfrxyi.cn/13159.Doceyk.kfrxyi.cn/53597.Doceyj.kfrxyi.cn/93937.Doceyj.kfrxyi.cn/77973.Doceyj.kfrxyi.cn/13937.Doceyj.kfrxyi.cn/57117.Doceyj.kfrxyi.cn/84448.Doceyj.kfrxyi.cn/24620.Doceyj.kfrxyi.cn/77313.Doceyj.kfrxyi.cn/15135.Doceyj.kfrxyi.cn/31397.Doceyj.kfrxyi.cn/51153.Doceyh.kfrxyi.cn/19175.Doceyh.kfrxyi.cn/31537.Doceyh.kfrxyi.cn/66660.Doceyh.kfrxyi.cn/28824.Doceyh.kfrxyi.cn/88484.Doceyh.kfrxyi.cn/53379.Doceyh.kfrxyi.cn/19175.Doceyh.kfrxyi.cn/40622.Doceyh.kfrxyi.cn/79173.Doceyh.kfrxyi.cn/13357.Doceyg.kfrxyi.cn/57573.Doceyg.kfrxyi.cn/13517.Doceyg.kfrxyi.cn/80486.Doceyg.kfrxyi.cn/40228.Doceyg.kfrxyi.cn/15939.Doceyg.kfrxyi.cn/97171.Doceyg.kfrxyi.cn/19537.Doceyg.kfrxyi.cn/80264.Doceyg.kfrxyi.cn/11511.Doceyg.kfrxyi.cn/73597.Doceyf.kfrxyi.cn/11797.Doceyf.kfrxyi.cn/73539.Doceyf.kfrxyi.cn/75335.Doceyf.kfrxyi.cn/62400.Doceyf.kfrxyi.cn/02242.Doceyf.kfrxyi.cn/86828.Doceyf.kfrxyi.cn/00684.Doceyf.kfrxyi.cn/3.Doceyf.kfrxyi.cn/95739.Doceyf.kfrxyi.cn/20842.Doceyd.kfrxyi.cn/31933.Doceyd.kfrxyi.cn/77197.Doceyd.kfrxyi.cn/20280.Doceyd.kfrxyi.cn/59173.Doceyd.kfrxyi.cn/95535.Doceyd.kfrxyi.cn/46624.Doceyd.kfrxyi.cn/19751.Doceyd.kfrxyi.cn/73317.Doceyd.kfrxyi.cn/71335.Doceyd.kfrxyi.cn/22048.Doceys.kfrxyi.cn/15731.Doceys.kfrxyi.cn/40864.Doceys.kfrxyi.cn/60284.Doceys.kfrxyi.cn/22608.Doceys.kfrxyi.cn/28062.Doceys.kfrxyi.cn/82486.Doceys.kfrxyi.cn/17331.Doceys.kfrxyi.cn/60264.Doceys.kfrxyi.cn/51773.Doceys.kfrxyi.cn/22408.Doceya.kfrxyi.cn/53517.Doceya.kfrxyi.cn/19173.Doceya.kfrxyi.cn/71793.Doceya.kfrxyi.cn/91131.Doceya.kfrxyi.cn/35935.Doceya.kfrxyi.cn/08888.Doceya.kfrxyi.cn/33793.Doceya.kfrxyi.cn/26820.Doceya.kfrxyi.cn/91113.Doceya.kfrxyi.cn/19539.Doceyp.kfrxyi.cn/22842.Doceyp.kfrxyi.cn/33597.Doceyp.kfrxyi.cn/40408.Doceyp.kfrxyi.cn/60622.Doceyp.kfrxyi.cn/46840.Doceyp.kfrxyi.cn/39911.Doceyp.kfrxyi.cn/97577.Doceyp.kfrxyi.cn/88842.Doceyp.kfrxyi.cn/39391.Doceyp.kfrxyi.cn/97935.Doceyo.kfrxyi.cn/06066.Doceyo.kfrxyi.cn/00604.Doceyo.kfrxyi.cn/99319.Doceyo.kfrxyi.cn/28862.Doceyo.kfrxyi.cn/39359.Doceyo.kfrxyi.cn/37931.Doceyo.kfrxyi.cn/11511.Doceyo.kfrxyi.cn/22648.Doceyo.kfrxyi.cn/53519.Doceyo.kfrxyi.cn/56040.Doceyi.kfrxyi.cn/80808.Doceyi.kfrxyi.cn/39199.Doceyi.kfrxyi.cn/57331.Doceyi.kfrxyi.cn/73333.Doceyi.kfrxyi.cn/35999.Doceyi.kfrxyi.cn/66806.Doceyi.kfrxyi.cn/64866.Doceyi.kfrxyi.cn/71139.Doceyi.kfrxyi.cn/39135.Doceyi.kfrxyi.cn/62642.Doceyu.kfrxyi.cn/57951.Doceyu.kfrxyi.cn/55931.Doceyu.kfrxyi.cn/13519.Doceyu.kfrxyi.cn/91375.Doceyu.kfrxyi.cn/64840.Doceyu.kfrxyi.cn/53917.Doceyu.kfrxyi.cn/82466.Doceyu.kfrxyi.cn/13597.Doceyu.kfrxyi.cn/06266.Doceyu.kfrxyi.cn/75153.Doceyy.kfrxyi.cn/64464.Doceyy.kfrxyi.cn/08064.Doceyy.kfrxyi.cn/11555.Doceyy.kfrxyi.cn/59151.Doceyy.kfrxyi.cn/33753.Doceyy.kfrxyi.cn/75353.Doceyy.kfrxyi.cn/82424.Doceyy.kfrxyi.cn/48082.Doceyy.kfrxyi.cn/91397.Doceyy.kfrxyi.cn/95535.Doceyt.kfrxyi.cn/82408.Doceyt.kfrxyi.cn/39737.Doceyt.kfrxyi.cn/31397.Doceyt.kfrxyi.cn/04842.Doceyt.kfrxyi.cn/86264.Doceyt.kfrxyi.cn/39117.Doceyt.kfrxyi.cn/95731.Doceyt.kfrxyi.cn/39995.Doceyt.kfrxyi.cn/57735.Doceyt.kfrxyi.cn/15135.Doceyr.kfrxyi.cn/08288.Doceyr.kfrxyi.cn/44286.Doceyr.kfrxyi.cn/20840.Doceyr.kfrxyi.cn/51537.Doceyr.kfrxyi.cn/95731.Doceyr.kfrxyi.cn/53759.Doceyr.kfrxyi.cn/86086.Doceyr.kfrxyi.cn/22028.Doceyr.kfrxyi.cn/77179.Doceyr.kfrxyi.cn/28040.Doceye.kfrxyi.cn/75515.Doceye.kfrxyi.cn/64420.Doceye.kfrxyi.cn/62444.Doceye.kfrxyi.cn/55731.Doceye.kfrxyi.cn/84882.Doceye.kfrxyi.cn/62640.Doceye.kfrxyi.cn/20800.Doceye.kfrxyi.cn/26860.Doceye.kfrxyi.cn/80206.Doceye.kfrxyi.cn/33315.Doceyw.kfrxyi.cn/95779.Doceyw.kfrxyi.cn/19371.Doceyw.kfrxyi.cn/40464.Doceyw.kfrxyi.cn/77979.Doceyw.kfrxyi.cn/97357.Doceyw.kfrxyi.cn/06022.Doceyw.kfrxyi.cn/13113.Doceyw.kfrxyi.cn/79795.Doceyw.kfrxyi.cn/64626.Doceyw.kfrxyi.cn/80684.Doceyq.kfrxyi.cn/31719.Doceyq.kfrxyi.cn/46422.Doceyq.kfrxyi.cn/37177.Doceyq.kfrxyi.cn/88622.Doceyq.kfrxyi.cn/75395.Doceyq.kfrxyi.cn/88686.Doceyq.kfrxyi.cn/40808.Doceyq.kfrxyi.cn/02037.Doceyq.kfrxyi.cn/77551.Doceyq.kfrxyi.cn/26802.Docetm.kfrxyi.cn/00266.Docetm.kfrxyi.cn/37795.Docetm.kfrxyi.cn/53337.Docetm.kfrxyi.cn/55173.Docetm.kfrxyi.cn/08448.Docetm.kfrxyi.cn/00648.Docetm.kfrxyi.cn/46020.Docetm.kfrxyi.cn/24680.Docetm.kfrxyi.cn/95711.Docetm.kfrxyi.cn/97195.Docetn.kfrxyi.cn/88060.Docetn.kfrxyi.cn/80886.Docetn.kfrxyi.cn/11753.Docetn.kfrxyi.cn/42820.Docetn.kfrxyi.cn/79571.Docetn.kfrxyi.cn/99595.Docetn.kfrxyi.cn/79171.Docetn.kfrxyi.cn/84640.Docetn.kfrxyi.cn/08840.Docetn.kfrxyi.cn/53571.Docetb.kfrxyi.cn/24028.Docetb.kfrxyi.cn/24022.Docetb.kfrxyi.cn/75373.Docetb.kfrxyi.cn/06840.Docetb.kfrxyi.cn/48460.Docetb.kfrxyi.cn/91151.Docetb.kfrxyi.cn/17991.Docetb.kfrxyi.cn/20800.Docetb.kfrxyi.cn/60644.Docetb.kfrxyi.cn/06200.Docetv.kfrxyi.cn/08464.Docetv.kfrxyi.cn/02888.Docetv.kfrxyi.cn/24068.Docetv.kfrxyi.cn/97973.Docetv.kfrxyi.cn/15919.Docetv.kfrxyi.cn/48404.Docetv.kfrxyi.cn/71915.Docetv.kfrxyi.cn/06228.Docetv.kfrxyi.cn/57173.Docetv.kfrxyi.cn/08882.Docetc.kfrxyi.cn/11537.Docetc.kfrxyi.cn/26062.Docetc.kfrxyi.cn/64840.Docetc.kfrxyi.cn/15199.Docetc.kfrxyi.cn/77915.Docetc.kfrxyi.cn/59333.Docetc.kfrxyi.cn/15115.Docetc.kfrxyi.cn/57193.Docetc.kfrxyi.cn/11159.Docetc.kfrxyi.cn/26660.Docetx.kfrxyi.cn/60664.Docetx.kfrxyi.cn/53371.Docetx.kfrxyi.cn/33713.Docetx.kfrxyi.cn/17597.Docetx.kfrxyi.cn/62426.Docetx.kfrxyi.cn/39351.Docetx.kfrxyi.cn/95151.Docetx.kfrxyi.cn/84686.Docetx.kfrxyi.cn/11571.Docetx.kfrxyi.cn/17115.Docetz.kfrxyi.cn/19511.Docetz.kfrxyi.cn/28448.Docetz.kfrxyi.cn/40064.Docetz.kfrxyi.cn/44226.Docetz.kfrxyi.cn/99197.Docetz.kfrxyi.cn/31591.Docetz.kfrxyi.cn/46642.Docetz.kfrxyi.cn/53755.Docetz.kfrxyi.cn/17171.Docetz.kfrxyi.cn/91393.Docetl.kfrxyi.cn/68008.Docetl.kfrxyi.cn/55511.Docetl.kfrxyi.cn/33359.Docetl.kfrxyi.cn/22028.Docetl.kfrxyi.cn/00268.Docetl.kfrxyi.cn/75177.Docetl.kfrxyi.cn/60842.Docetl.kfrxyi.cn/66262.Docetl.kfrxyi.cn/97731.Docetl.kfrxyi.cn/46682.Docetk.kfrxyi.cn/13933.Docetk.kfrxyi.cn/71573.Docetk.kfrxyi.cn/55557.Docetk.kfrxyi.cn/22488.Docetk.kfrxyi.cn/57319.Docetk.kfrxyi.cn/40828.Docetk.kfrxyi.cn/17931.Docetk.kfrxyi.cn/95979.Docetk.kfrxyi.cn/80608.Docetk.kfrxyi.cn/15951.Docetj.kfrxyi.cn/75735.Docetj.kfrxyi.cn/37593.Docetj.kfrxyi.cn/51157.Docetj.kfrxyi.cn/77191.Docetj.kfrxyi.cn/28466.Docetj.kfrxyi.cn/17991.Docetj.kfrxyi.cn/57513.Docetj.kfrxyi.cn/44600.Docetj.kfrxyi.cn/82480.Docetj.kfrxyi.cn/99315.Doceth.kfrxyi.cn/11313.Doceth.kfrxyi.cn/40686.Doceth.kfrxyi.cn/97331.Doceth.kfrxyi.cn/26888.Doceth.kfrxyi.cn/57137.Doceth.kfrxyi.cn/80802.Doceth.kfrxyi.cn/79793.Doceth.kfrxyi.cn/31115.Doceth.kfrxyi.cn/17377.Doceth.kfrxyi.cn/13319.Docetg.kfrxyi.cn/73975.Docetg.kfrxyi.cn/75515.Docetg.kfrxyi.cn/91519.Docetg.kfrxyi.cn/59395.Docetg.kfrxyi.cn/79711.Docetg.kfrxyi.cn/60828.Docetg.kfrxyi.cn/17955.Docetg.kfrxyi.cn/79597.Docetg.kfrxyi.cn/80468.Docetg.kfrxyi.cn/77995.Docetf.kfrxyi.cn/24248.Docetf.kfrxyi.cn/93193.Docetf.kfrxyi.cn/95971.Docetf.kfrxyi.cn/15179.Docetf.kfrxyi.cn/73575.Docetf.kfrxyi.cn/84242.Docetf.kfrxyi.cn/59935.Docetf.kfrxyi.cn/19517.Docetf.kfrxyi.cn/39193.Docetf.kfrxyi.cn/33993.Doc