From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:34437) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKet-0003NL-VL for qemu-devel@nongnu.org; Sat, 14 May 2011 15:37:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QLKer-0002Zs-FK for qemu-devel@nongnu.org; Sat, 14 May 2011 15:37:51 -0400 Received: from mail-qw0-f45.google.com ([209.85.216.45]:41051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QLKer-0002Qf-9i for qemu-devel@nongnu.org; Sat, 14 May 2011 15:37:49 -0400 Received: by mail-qw0-f45.google.com with SMTP id 8so2052660qwj.4 for ; Sat, 14 May 2011 12:37:49 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Sat, 14 May 2011 22:37:29 +0300 Message-ID: Content-Type: multipart/mixed; boundary=20cf303b4045b22efb04a3418ec7 Subject: [Qemu-devel] [PATCH 03/11] cpu_loop_exit: avoid using AREG0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --20cf303b4045b22efb04a3418ec7 Content-Type: text/plain; charset=UTF-8 Make cpu_loop_exit() take a parameter for CPUState instead of relying on global env. Signed-off-by: Blue Swirl --- cpu-exec.c | 16 ++++++++-------- exec-all.h | 2 +- hw/alpha_palcode.c | 2 +- target-alpha/op_helper.c | 4 ++-- target-arm/op_helper.c | 6 +++--- target-cris/op_helper.c | 4 ++-- target-i386/op_helper.c | 16 ++++++++-------- target-lm32/op_helper.c | 6 +++--- target-m68k/op_helper.c | 6 +++--- target-microblaze/op_helper.c | 4 ++-- target-mips/op_helper.c | 4 ++-- target-ppc/op_helper.c | 2 +- target-sh4/op_helper.c | 10 +++++----- target-sparc/op_helper.c | 6 +++--- target-unicore32/op_helper.c | 2 +- user-exec.c | 9 ++++++--- 16 files changed, 51 insertions(+), 48 deletions(-) diff --git a/cpu-exec.c b/cpu-exec.c index 5f0a5a1..752eabd 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -38,10 +38,10 @@ int qemu_cpu_has_work(CPUState *env) return cpu_has_work(env); } -void cpu_loop_exit(void) +void cpu_loop_exit(CPUState *env1) { - env->current_tb = NULL; - longjmp(env->jmp_env, 1); + env1->current_tb = NULL; + longjmp(env1->jmp_env, 1); } #if defined(CONFIG_SOFTMMU) @@ -328,7 +328,7 @@ int cpu_exec(CPUState *env1) if (interrupt_request & CPU_INTERRUPT_DEBUG) { env->interrupt_request &= ~CPU_INTERRUPT_DEBUG; env->exception_index = EXCP_DEBUG; - cpu_loop_exit(); + cpu_loop_exit(env); } #if defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_MIPS) || \ defined(TARGET_PPC) || defined(TARGET_ALPHA) || defined(TARGET_CRIS) || \ @@ -337,7 +337,7 @@ int cpu_exec(CPUState *env1) env->interrupt_request &= ~CPU_INTERRUPT_HALT; env->halted = 1; env->exception_index = EXCP_HLT; - cpu_loop_exit(); + cpu_loop_exit(env); } #endif #if defined(TARGET_I386) @@ -345,7 +345,7 @@ int cpu_exec(CPUState *env1) svm_check_intercept(SVM_EXIT_INIT); do_cpu_init(env); env->exception_index = EXCP_HALTED; - cpu_loop_exit(); + cpu_loop_exit(env); } else if (interrupt_request & CPU_INTERRUPT_SIPI) { do_cpu_sipi(env); } else if (env->hflags2 & HF2_GIF_MASK) { @@ -538,7 +538,7 @@ int cpu_exec(CPUState *env1) if (unlikely(env->exit_request)) { env->exit_request = 0; env->exception_index = EXCP_INTERRUPT; - cpu_loop_exit(); + cpu_loop_exit(env); } #if defined(DEBUG_DISAS) || defined(CONFIG_DEBUG_EXEC) if (qemu_loglevel_mask(CPU_LOG_TB_CPU)) { @@ -621,7 +621,7 @@ int cpu_exec(CPUState *env1) } env->exception_index = EXCP_INTERRUPT; next_tb = 0; - cpu_loop_exit(); + cpu_loop_exit(env); } } } diff --git a/exec-all.h b/exec-all.h index cf3a704..1862428 100644 --- a/exec-all.h +++ b/exec-all.h @@ -91,7 +91,7 @@ TranslationBlock *tb_gen_code(CPUState *env, target_ulong pc, target_ulong cs_base, int flags, int cflags); void cpu_exec_init(CPUState *env); -void QEMU_NORETURN cpu_loop_exit(void); +void QEMU_NORETURN cpu_loop_exit(CPUState *env1); int page_unprotect(target_ulong address, unsigned long pc, void *puc); void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end, int is_cpu_write_access); diff --git a/hw/alpha_palcode.c b/hw/alpha_palcode.c index 033b542..49719f6 100644 --- a/hw/alpha_palcode.c +++ b/hw/alpha_palcode.c @@ -96,7 +96,7 @@ static void do_swappal (CPUState *env, uint64_t palid) env->pal_handler = NULL; env->ipr[IPR_PAL_BASE] = palid; env->pc = env->ipr[IPR_PAL_BASE]; - cpu_loop_exit(); + cpu_loop_exit(env); } } diff --git a/target-alpha/op_helper.c b/target-alpha/op_helper.c index 4ccb10b..d50977c 100644 --- a/target-alpha/op_helper.c +++ b/target-alpha/op_helper.c @@ -29,7 +29,7 @@ void QEMU_NORETURN helper_excp (int excp, int error) { env->exception_index = excp; env->error_code = error; - cpu_loop_exit(); + cpu_loop_exit(env); } uint64_t helper_load_pcc (void) @@ -1378,7 +1378,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) } } /* Exception index and error code are already set */ - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c index 8334fbc..4635884 100644 --- a/target-arm/op_helper.c +++ b/target-arm/op_helper.c @@ -25,7 +25,7 @@ void raise_exception(int tt) { env->exception_index = tt; - cpu_loop_exit(); + cpu_loop_exit(env); } uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, @@ -234,13 +234,13 @@ void HELPER(wfi)(void) { env->exception_index = EXCP_HLT; env->halted = 1; - cpu_loop_exit(); + cpu_loop_exit(env); } void HELPER(exception)(uint32_t excp) { env->exception_index = excp; - cpu_loop_exit(); + cpu_loop_exit(env); } uint32_t HELPER(cpsr_read)(void) diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c index 34329e2..b3ddd33 100644 --- a/target-cris/op_helper.c +++ b/target-cris/op_helper.c @@ -83,7 +83,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) helper_top_evaluate_flags(); } } - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } @@ -93,7 +93,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) void helper_raise_exception(uint32_t index) { env->exception_index = index; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_tlb_flush_pid(uint32_t pid) diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c index 3c539f3..b7e0304 100644 --- a/target-i386/op_helper.c +++ b/target-i386/op_helper.c @@ -1017,7 +1017,7 @@ void helper_syscall(int next_eip_addend) { env->exception_index = EXCP_SYSCALL; env->exception_next_eip = env->eip + next_eip_addend; - cpu_loop_exit(); + cpu_loop_exit(env); } #else void helper_syscall(int next_eip_addend) @@ -1352,7 +1352,7 @@ static void QEMU_NORETURN raise_interrupt(int intno, int is_int, int error_code, env->error_code = error_code; env->exception_is_int = is_int; env->exception_next_eip = env->eip + next_eip_addend; - cpu_loop_exit(); + cpu_loop_exit(env); } /* shortcuts to generate exceptions */ @@ -4721,7 +4721,7 @@ static void do_hlt(void) env->hflags &= ~HF_INHIBIT_IRQ_MASK; /* needed if sti is just before */ env->halted = 1; env->exception_index = EXCP_HLT; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_hlt(int next_eip_addend) @@ -4759,7 +4759,7 @@ void helper_mwait(int next_eip_addend) void helper_debug(void) { env->exception_index = EXCP_DEBUG; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_reset_rf(void) @@ -5111,7 +5111,7 @@ void helper_vmrun(int aflag, int next_eip_addend) env->exception_is_int = 0; env->exception_next_eip = EIP; qemu_log_mask(CPU_LOG_TB_IN_ASM, "NMI"); - cpu_loop_exit(); + cpu_loop_exit(env); break; case SVM_EVTINJ_TYPE_EXEPT: env->exception_index = vector; @@ -5119,7 +5119,7 @@ void helper_vmrun(int aflag, int next_eip_addend) env->exception_is_int = 0; env->exception_next_eip = -1; qemu_log_mask(CPU_LOG_TB_IN_ASM, "EXEPT"); - cpu_loop_exit(); + cpu_loop_exit(env); break; case SVM_EVTINJ_TYPE_SOFT: env->exception_index = vector; @@ -5127,7 +5127,7 @@ void helper_vmrun(int aflag, int next_eip_addend) env->exception_is_int = 1; env->exception_next_eip = EIP; qemu_log_mask(CPU_LOG_TB_IN_ASM, "SOFT"); - cpu_loop_exit(); + cpu_loop_exit(env); break; } qemu_log_mask(CPU_LOG_TB_IN_ASM, " %#x %#x\n", env->exception_index, env->error_code); @@ -5463,7 +5463,7 @@ void helper_vmexit(uint32_t exit_code, uint64_t exit_info_1) env->error_code = 0; env->old_exception = -1; - cpu_loop_exit(); + cpu_loop_exit(env); } #endif diff --git a/target-lm32/op_helper.c b/target-lm32/op_helper.c index c72b1df..a34cecd 100644 --- a/target-lm32/op_helper.c +++ b/target-lm32/op_helper.c @@ -20,14 +20,14 @@ void helper_raise_exception(uint32_t index) { env->exception_index = index; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_hlt(void) { env->halted = 1; env->exception_index = EXCP_HLT; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_wcsr_im(uint32_t im) @@ -98,7 +98,7 @@ void tlb_fill(target_ulong addr, int is_write, int mmu_idx, void *retaddr) cpu_restore_state(tb, env, pc); } } - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } diff --git a/target-m68k/op_helper.c b/target-m68k/op_helper.c index 9b13bdb..084a182 100644 --- a/target-m68k/op_helper.c +++ b/target-m68k/op_helper.c @@ -71,7 +71,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) cpu_restore_state(tb, env, pc); } } - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } @@ -118,7 +118,7 @@ void do_interrupt(int is_hw) } env->halted = 1; env->exception_index = EXCP_HLT; - cpu_loop_exit(); + cpu_loop_exit(env); return; } if (env->exception_index >= EXCP_TRAP0 @@ -160,7 +160,7 @@ void do_interrupt(int is_hw) static void raise_exception(int tt) { env->exception_index = tt; - cpu_loop_exit(); + cpu_loop_exit(env); } void HELPER(raise_exception)(uint32_t tt) diff --git a/target-microblaze/op_helper.c b/target-microblaze/op_helper.c index c7b2f97..1a0a476 100644 --- a/target-microblaze/op_helper.c +++ b/target-microblaze/op_helper.c @@ -63,7 +63,7 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr) cpu_restore_state(tb, env, pc); } } - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } @@ -107,7 +107,7 @@ uint32_t helper_get(uint32_t id, uint32_t ctrl) void helper_raise_exception(uint32_t index) { env->exception_index = index; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_debug(void) diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c index b8e4991..6b966b1 100644 --- a/target-mips/op_helper.c +++ b/target-mips/op_helper.c @@ -38,7 +38,7 @@ void helper_raise_exception_err (uint32_t exception, int error_code) #endif env->exception_index = exception; env->error_code = error_code; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_raise_exception (uint32_t exception) @@ -277,7 +277,7 @@ static inline target_phys_addr_t do_translate_address(target_ulong address, int lladdr = cpu_mips_translate_address(env, address, rw); if (lladdr == -1LL) { - cpu_loop_exit(); + cpu_loop_exit(env); } else { return lladdr; } diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c index d5a987b..5e58278 100644 --- a/target-ppc/op_helper.c +++ b/target-ppc/op_helper.c @@ -44,7 +44,7 @@ void helper_raise_exception_err (uint32_t exception, uint32_t error_code) #endif env->exception_index = exception; env->error_code = error_code; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_raise_exception (uint32_t exception) diff --git a/target-sh4/op_helper.c b/target-sh4/op_helper.c index b909d18..a932225 100644 --- a/target-sh4/op_helper.c +++ b/target-sh4/op_helper.c @@ -66,7 +66,7 @@ void tlb_fill(target_ulong addr, int is_write, int mmu_idx, void *retaddr) if (ret) { /* now we have a real cpu fault */ cpu_restore_state_from_retaddr(retaddr); - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } @@ -87,7 +87,7 @@ static inline void raise_exception(int index, void *retaddr) { env->exception_index = index; cpu_restore_state_from_retaddr(retaddr); - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_raise_illegal_instruction(void) @@ -113,7 +113,7 @@ void helper_raise_slot_fpu_disable(void) void helper_debug(void) { env->exception_index = EXCP_DEBUG; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_sleep(uint32_t next_pc) @@ -122,7 +122,7 @@ void helper_sleep(uint32_t next_pc) env->in_sleep = 1; env->exception_index = EXCP_HLT; env->pc = next_pc; - cpu_loop_exit(); + cpu_loop_exit(env); } void helper_trapa(uint32_t tra) @@ -482,7 +482,7 @@ static void update_fpscr(void *retaddr) if (cause & enable) { cpu_restore_state_from_retaddr(retaddr); env->exception_index = 0x120; - cpu_loop_exit(); + cpu_loop_exit(env); } } } diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index b38691e..491a9f3 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -316,7 +316,7 @@ static inline target_ulong asi_address_mask(CPUState *env1, static void raise_exception(int tt) { env->exception_index = tt; - cpu_loop_exit(); + cpu_loop_exit(env); } void HELPER(raise_exception)(int tt) @@ -3702,7 +3702,7 @@ void helper_ldxfsr(uint64_t new_fsr) void helper_debug(void) { env->exception_index = EXCP_DEBUG; - cpu_loop_exit(); + cpu_loop_exit(env); } #ifndef TARGET_SPARC64 @@ -4402,7 +4402,7 @@ void tlb_fill(target_ulong addr, int is_write, int mmu_idx, void *retaddr) ret = cpu_sparc_handle_mmu_fault(env, addr, is_write, mmu_idx, 1); if (ret) { cpu_restore_state2(retaddr); - cpu_loop_exit(); + cpu_loop_exit(env); } env = saved_env; } diff --git a/target-unicore32/op_helper.c b/target-unicore32/op_helper.c index 31e4b11..541e6f0 100644 --- a/target-unicore32/op_helper.c +++ b/target-unicore32/op_helper.c @@ -16,7 +16,7 @@ void HELPER(exception)(uint32_t excp) { env->exception_index = excp; - cpu_loop_exit(); + cpu_loop_exit(env); } static target_ulong asr_read(void) diff --git a/user-exec.c b/user-exec.c index 01151e5..b728407 100644 --- a/user-exec.c +++ b/user-exec.c @@ -37,11 +37,14 @@ //#define DEBUG_SIGNAL +static void exception_action(CPUState *env1) +{ #if defined(TARGET_I386) -#define EXCEPTION_ACTION raise_exception_err(env->exception_index, env->error_code) + raise_exception_err(env1->exception_index, env1->error_code); #else -#define EXCEPTION_ACTION cpu_loop_exit() + cpu_loop_exit(env); #endif +} /* exit the current TB from a signal handler. The host registers are restored in a state compatible with the CPU emulator @@ -113,7 +116,7 @@ static inline int handle_cpu_signal(unsigned long pc, unsigned long address, /* we restore the process signal mask as the sigreturn should do it (XXX: use sigsetjmp) */ sigprocmask(SIG_SETMASK, old_set, NULL); - EXCEPTION_ACTION; + exception_action(env); /* never comes here */ return 1; -- 1.6.2.4 --20cf303b4045b22efb04a3418ec7 Content-Type: text/x-diff; charset=US-ASCII; name="0003-cpu_loop_exit-avoid-using-AREG0.patch" Content-Disposition: attachment; filename="0003-cpu_loop_exit-avoid-using-AREG0.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnoyjr6w0 RnJvbSA5MzJjZTZkNzllYTRmMWZmMTA5ZWRiZDg1ZjU4MDY3NjljYzdhM2U5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8OTMyY2U2ZDc5ZWE0ZjFmZjEwOWVkYmQ4NWY1ODA2 NzY5Y2M3YTNlOS4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDw2ZTIxZGY4ZTM2OTM4OGEzMTUyZGNjN2RhMzA0MzFjNjcyZTFlZTM3LjEzMDU0MDE3NTAu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8NmUyMWRmOGUzNjkzODhhMzE1 MmRjYzdkYTMwNDMxYzY3MmUxZWUzNy4xMzA1NDAxNzUwLmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTQg TWF5IDIwMTEgMTI6NTI6MzUgKzAwMDAKU3ViamVjdDogW1BBVENIIDAzLzExXSBjcHVfbG9vcF9l eGl0OiBhdm9pZCB1c2luZyBBUkVHMAoKTWFrZSBjcHVfbG9vcF9leGl0KCkgdGFrZSBhIHBhcmFt ZXRlciBmb3IgQ1BVU3RhdGUgaW5zdGVhZCBvZiByZWx5aW5nCm9uIGdsb2JhbCBlbnYuCgpTaWdu ZWQtb2ZmLWJ5OiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KLS0tCiBjcHUtZXhl Yy5jICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysrKystLS0tLS0tLQogZXhlYy1hbGwu aCAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBody9hbHBoYV9wYWxjb2RlLmMgICAgICAg ICAgICB8ICAgIDIgKy0KIHRhcmdldC1hbHBoYS9vcF9oZWxwZXIuYyAgICAgIHwgICAgNCArKy0t CiB0YXJnZXQtYXJtL29wX2hlbHBlci5jICAgICAgICB8ICAgIDYgKysrLS0tCiB0YXJnZXQtY3Jp cy9vcF9oZWxwZXIuYyAgICAgICB8ICAgIDQgKystLQogdGFyZ2V0LWkzODYvb3BfaGVscGVyLmMg ICAgICAgfCAgIDE2ICsrKysrKysrLS0tLS0tLS0KIHRhcmdldC1sbTMyL29wX2hlbHBlci5jICAg ICAgIHwgICAgNiArKystLS0KIHRhcmdldC1tNjhrL29wX2hlbHBlci5jICAgICAgIHwgICAgNiAr KystLS0KIHRhcmdldC1taWNyb2JsYXplL29wX2hlbHBlci5jIHwgICAgNCArKy0tCiB0YXJnZXQt bWlwcy9vcF9oZWxwZXIuYyAgICAgICB8ICAgIDQgKystLQogdGFyZ2V0LXBwYy9vcF9oZWxwZXIu YyAgICAgICAgfCAgICAyICstCiB0YXJnZXQtc2g0L29wX2hlbHBlci5jICAgICAgICB8ICAgMTAg KysrKystLS0tLQogdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jICAgICAgfCAgICA2ICsrKy0tLQog dGFyZ2V0LXVuaWNvcmUzMi9vcF9oZWxwZXIuYyAgfCAgICAyICstCiB1c2VyLWV4ZWMuYyAgICAg ICAgICAgICAgICAgICB8ICAgIDkgKysrKysrLS0tCiAxNiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNl cnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jcHUtZXhlYy5jIGIvY3B1 LWV4ZWMuYwppbmRleCA1ZjBhNWExLi43NTJlYWJkIDEwMDY0NAotLS0gYS9jcHUtZXhlYy5jCisr KyBiL2NwdS1leGVjLmMKQEAgLTM4LDEwICszOCwxMCBAQCBpbnQgcWVtdV9jcHVfaGFzX3dvcmso Q1BVU3RhdGUgKmVudikKICAgICByZXR1cm4gY3B1X2hhc193b3JrKGVudik7CiB9CiAKLXZvaWQg Y3B1X2xvb3BfZXhpdCh2b2lkKQordm9pZCBjcHVfbG9vcF9leGl0KENQVVN0YXRlICplbnYxKQog ewotICAgIGVudi0+Y3VycmVudF90YiA9IE5VTEw7Ci0gICAgbG9uZ2ptcChlbnYtPmptcF9lbnYs IDEpOworICAgIGVudjEtPmN1cnJlbnRfdGIgPSBOVUxMOworICAgIGxvbmdqbXAoZW52MS0+am1w X2VudiwgMSk7CiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19TT0ZUTU1VKQpAQCAtMzI4LDcgKzMy OCw3IEBAIGludCBjcHVfZXhlYyhDUFVTdGF0ZSAqZW52MSkKICAgICAgICAgICAgICAgICAgICAg aWYgKGludGVycnVwdF9yZXF1ZXN0ICYgQ1BVX0lOVEVSUlVQVF9ERUJVRykgewogICAgICAgICAg ICAgICAgICAgICAgICAgZW52LT5pbnRlcnJ1cHRfcmVxdWVzdCAmPSB+Q1BVX0lOVEVSUlVQVF9E RUJVRzsKICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+ZXhjZXB0aW9uX2luZGV4ID0gRVhD UF9ERUJVRzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNwdV9sb29wX2V4aXQoZW52KTsKICAgICAgICAgICAgICAgICAg ICAgfQogI2lmIGRlZmluZWQoVEFSR0VUX0FSTSkgfHwgZGVmaW5lZChUQVJHRVRfU1BBUkMpIHx8 IGRlZmluZWQoVEFSR0VUX01JUFMpIHx8IFwKICAgICBkZWZpbmVkKFRBUkdFVF9QUEMpIHx8IGRl ZmluZWQoVEFSR0VUX0FMUEhBKSB8fCBkZWZpbmVkKFRBUkdFVF9DUklTKSB8fCBcCkBAIC0zMzcs NyArMzM3LDcgQEAgaW50IGNwdV9leGVjKENQVVN0YXRlICplbnYxKQogICAgICAgICAgICAgICAg ICAgICAgICAgZW52LT5pbnRlcnJ1cHRfcmVxdWVzdCAmPSB+Q1BVX0lOVEVSUlVQVF9IQUxUOwog ICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5oYWx0ZWQgPSAxOwogICAgICAgICAgICAgICAg ICAgICAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBFWENQX0hMVDsKLSAgICAgICAgICAgICAg ICAgICAgICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9s b29wX2V4aXQoZW52KTsKICAgICAgICAgICAgICAgICAgICAgfQogI2VuZGlmCiAjaWYgZGVmaW5l ZChUQVJHRVRfSTM4NikKQEAgLTM0NSw3ICszNDUsNyBAQCBpbnQgY3B1X2V4ZWMoQ1BVU3RhdGUg KmVudjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZtX2NoZWNrX2ludGVyY2VwdChT Vk1fRVhJVF9JTklUKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19jcHVfaW5pdChl bnYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+ZXhjZXB0aW9uX2luZGV4ID0g RVhDUF9IQUxURUQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2xvb3BfZXhpdCgp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9sb29wX2V4aXQoZW52KTsKICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnRlcnJ1cHRfcmVxdWVzdCAmIENQVV9JTlRFUlJV UFRfU0lQSSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2NwdV9zaXBpKGVudik7 CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW52LT5oZmxhZ3MyICYgSEYyX0dJRl9N QVNLKSB7CkBAIC01MzgsNyArNTM4LDcgQEAgaW50IGNwdV9leGVjKENQVVN0YXRlICplbnYxKQog ICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShlbnYtPmV4aXRfcmVxdWVzdCkpIHsKICAgICAg ICAgICAgICAgICAgICAgZW52LT5leGl0X3JlcXVlc3QgPSAwOwogICAgICAgICAgICAgICAgICAg ICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfSU5URVJSVVBUOwotICAgICAgICAgICAgICAg ICAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgICAgICAgICAgICAgICAgIGNwdV9sb29wX2V4aXQo ZW52KTsKICAgICAgICAgICAgICAgICB9CiAjaWYgZGVmaW5lZChERUJVR19ESVNBUykgfHwgZGVm aW5lZChDT05GSUdfREVCVUdfRVhFQykKICAgICAgICAgICAgICAgICBpZiAocWVtdV9sb2dsZXZl bF9tYXNrKENQVV9MT0dfVEJfQ1BVKSkgewpAQCAtNjIxLDcgKzYyMSw3IEBAIGludCBjcHVfZXhl YyhDUFVTdGF0ZSAqZW52MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBFWENQX0lOVEVSUlVQ VDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3RiID0gMDsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZXhlYy1h bGwuaCBiL2V4ZWMtYWxsLmgKaW5kZXggY2YzYTcwNC4uMTg2MjQyOCAxMDA2NDQKLS0tIGEvZXhl Yy1hbGwuaAorKysgYi9leGVjLWFsbC5oCkBAIC05MSw3ICs5MSw3IEBAIFRyYW5zbGF0aW9uQmxv Y2sgKnRiX2dlbl9jb2RlKENQVVN0YXRlICplbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YXJnZXRfdWxvbmcgcGMsIHRhcmdldF91bG9uZyBjc19iYXNlLCBpbnQgZmxhZ3MsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2ZsYWdzKTsKIHZvaWQgY3B1X2V4ZWNf aW5pdChDUFVTdGF0ZSAqZW52KTsKLXZvaWQgUUVNVV9OT1JFVFVSTiBjcHVfbG9vcF9leGl0KHZv aWQpOwordm9pZCBRRU1VX05PUkVUVVJOIGNwdV9sb29wX2V4aXQoQ1BVU3RhdGUgKmVudjEpOwog aW50IHBhZ2VfdW5wcm90ZWN0KHRhcmdldF91bG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHBj LCB2b2lkICpwdWMpOwogdm9pZCB0Yl9pbnZhbGlkYXRlX3BoeXNfcGFnZV9yYW5nZSh0Yl9wYWdl X2FkZHJfdCBzdGFydCwgdGJfcGFnZV9hZGRyX3QgZW5kLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgaXNfY3B1X3dyaXRlX2FjY2Vzcyk7CmRpZmYgLS1naXQgYS9ody9h bHBoYV9wYWxjb2RlLmMgYi9ody9hbHBoYV9wYWxjb2RlLmMKaW5kZXggMDMzYjU0Mi4uNDk3MTlm NiAxMDA2NDQKLS0tIGEvaHcvYWxwaGFfcGFsY29kZS5jCisrKyBiL2h3L2FscGhhX3BhbGNvZGUu YwpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgdm9pZCBkb19zd2FwcGFsIChDUFVTdGF0ZSAqZW52 LCB1aW50NjRfdCBwYWxpZCkKICAgICAgICAgZW52LT5wYWxfaGFuZGxlciA9IE5VTEw7CiAgICAg ICAgIGVudi0+aXByW0lQUl9QQUxfQkFTRV0gPSBwYWxpZDsKICAgICAgICAgZW52LT5wYyA9IGVu di0+aXByW0lQUl9QQUxfQkFTRV07Ci0gICAgICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICAgICAg Y3B1X2xvb3BfZXhpdChlbnYpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvdGFyZ2V0LWFscGhh L29wX2hlbHBlci5jIGIvdGFyZ2V0LWFscGhhL29wX2hlbHBlci5jCmluZGV4IDRjY2IxMGIuLmQ1 MDk3N2MgMTAwNjQ0Ci0tLSBhL3RhcmdldC1hbHBoYS9vcF9oZWxwZXIuYworKysgYi90YXJnZXQt YWxwaGEvb3BfaGVscGVyLmMKQEAgLTI5LDcgKzI5LDcgQEAgdm9pZCBRRU1VX05PUkVUVVJOIGhl bHBlcl9leGNwIChpbnQgZXhjcCwgaW50IGVycm9yKQogewogICAgIGVudi0+ZXhjZXB0aW9uX2lu ZGV4ID0gZXhjcDsKICAgICBlbnYtPmVycm9yX2NvZGUgPSBlcnJvcjsKLSAgICBjcHVfbG9vcF9l eGl0KCk7CisgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogfQogCiB1aW50NjRfdCBoZWxwZXJfbG9h ZF9wY2MgKHZvaWQpCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIHRsYl9maWxsICh0YXJnZXRf dWxvbmcgYWRkciwgaW50IGlzX3dyaXRlLCBpbnQgbW11X2lkeCwgdm9pZCAqcmV0YWRkcikKICAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBFeGNlcHRpb24gaW5kZXggYW5kIGVy cm9yIGNvZGUgYXJlIGFscmVhZHkgc2V0ICovCi0gICAgICAgIGNwdV9sb29wX2V4aXQoKTsKKyAg ICAgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogICAgIH0KICAgICBlbnYgPSBzYXZlZF9lbnY7CiB9 CmRpZmYgLS1naXQgYS90YXJnZXQtYXJtL29wX2hlbHBlci5jIGIvdGFyZ2V0LWFybS9vcF9oZWxw ZXIuYwppbmRleCA4MzM0ZmJjLi40NjM1ODg0IDEwMDY0NAotLS0gYS90YXJnZXQtYXJtL29wX2hl bHBlci5jCisrKyBiL3RhcmdldC1hcm0vb3BfaGVscGVyLmMKQEAgLTI1LDcgKzI1LDcgQEAKIHZv aWQgcmFpc2VfZXhjZXB0aW9uKGludCB0dCkKIHsKICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9 IHR0OwotICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAK IHVpbnQzMl90IEhFTFBFUihuZW9uX3RibCkodWludDMyX3QgaXJlZywgdWludDMyX3QgZGVmLApA QCAtMjM0LDEzICsyMzQsMTMgQEAgdm9pZCBIRUxQRVIod2ZpKSh2b2lkKQogewogICAgIGVudi0+ ZXhjZXB0aW9uX2luZGV4ID0gRVhDUF9ITFQ7CiAgICAgZW52LT5oYWx0ZWQgPSAxOwotICAgIGNw dV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHZvaWQgSEVMUEVS KGV4Y2VwdGlvbikodWludDMyX3QgZXhjcCkKIHsKICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9 IGV4Y3A7Ci0gICAgY3B1X2xvb3BfZXhpdCgpOworICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0K IAogdWludDMyX3QgSEVMUEVSKGNwc3JfcmVhZCkodm9pZCkKZGlmZiAtLWdpdCBhL3RhcmdldC1j cmlzL29wX2hlbHBlci5jIGIvdGFyZ2V0LWNyaXMvb3BfaGVscGVyLmMKaW5kZXggMzQzMjllMi4u YjNkZGQzMyAxMDA2NDQKLS0tIGEvdGFyZ2V0LWNyaXMvb3BfaGVscGVyLmMKKysrIGIvdGFyZ2V0 LWNyaXMvb3BfaGVscGVyLmMKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCB0bGJfZmlsbCAodGFyZ2V0 X3Vsb25nIGFkZHIsIGludCBpc193cml0ZSwgaW50IG1tdV9pZHgsIHZvaWQgKnJldGFkZHIpCiAg ICAgICAgICAgICAgICAgaGVscGVyX3RvcF9ldmFsdWF0ZV9mbGFncygpOwogICAgICAgICAgICAg fQogICAgICAgICB9Ci0gICAgICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICAgICAgY3B1X2xvb3Bf ZXhpdChlbnYpOwogICAgIH0KICAgICBlbnYgPSBzYXZlZF9lbnY7CiB9CkBAIC05Myw3ICs5Myw3 IEBAIHZvaWQgdGxiX2ZpbGwgKHRhcmdldF91bG9uZyBhZGRyLCBpbnQgaXNfd3JpdGUsIGludCBt bXVfaWR4LCB2b2lkICpyZXRhZGRyKQogdm9pZCBoZWxwZXJfcmFpc2VfZXhjZXB0aW9uKHVpbnQz Ml90IGluZGV4KQogewogCWVudi0+ZXhjZXB0aW9uX2luZGV4ID0gaW5kZXg7Ci0JY3B1X2xvb3Bf ZXhpdCgpOworICAgICAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHZvaWQgaGVscGVyX3Rs Yl9mbHVzaF9waWQodWludDMyX3QgcGlkKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWkzODYvb3BfaGVs cGVyLmMgYi90YXJnZXQtaTM4Ni9vcF9oZWxwZXIuYwppbmRleCAzYzUzOWYzLi5iN2UwMzA0IDEw MDY0NAotLS0gYS90YXJnZXQtaTM4Ni9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtaTM4Ni9vcF9o ZWxwZXIuYwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBoZWxwZXJfc3lzY2FsbChpbnQgbmV4 dF9laXBfYWRkZW5kKQogewogICAgIGVudi0+ZXhjZXB0aW9uX2luZGV4ID0gRVhDUF9TWVNDQUxM OwogICAgIGVudi0+ZXhjZXB0aW9uX25leHRfZWlwID0gZW52LT5laXAgKyBuZXh0X2VpcF9hZGRl bmQ7Ci0gICAgY3B1X2xvb3BfZXhpdCgpOworICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0KICNl bHNlCiB2b2lkIGhlbHBlcl9zeXNjYWxsKGludCBuZXh0X2VpcF9hZGRlbmQpCkBAIC0xMzUyLDcg KzEzNTIsNyBAQCBzdGF0aWMgdm9pZCBRRU1VX05PUkVUVVJOIHJhaXNlX2ludGVycnVwdChpbnQg aW50bm8sIGludCBpc19pbnQsIGludCBlcnJvcl9jb2RlLAogICAgIGVudi0+ZXJyb3JfY29kZSA9 IGVycm9yX2NvZGU7CiAgICAgZW52LT5leGNlcHRpb25faXNfaW50ID0gaXNfaW50OwogICAgIGVu di0+ZXhjZXB0aW9uX25leHRfZWlwID0gZW52LT5laXAgKyBuZXh0X2VpcF9hZGRlbmQ7Ci0gICAg Y3B1X2xvb3BfZXhpdCgpOworICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0KIAogLyogc2hvcnRj dXRzIHRvIGdlbmVyYXRlIGV4Y2VwdGlvbnMgKi8KQEAgLTQ3MjEsNyArNDcyMSw3IEBAIHN0YXRp YyB2b2lkIGRvX2hsdCh2b2lkKQogICAgIGVudi0+aGZsYWdzICY9IH5IRl9JTkhJQklUX0lSUV9N QVNLOyAvKiBuZWVkZWQgaWYgc3RpIGlzIGp1c3QgYmVmb3JlICovCiAgICAgZW52LT5oYWx0ZWQg PSAxOwogICAgIGVudi0+ZXhjZXB0aW9uX2luZGV4ID0gRVhDUF9ITFQ7Ci0gICAgY3B1X2xvb3Bf ZXhpdCgpOworICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0KIAogdm9pZCBoZWxwZXJfaGx0KGlu dCBuZXh0X2VpcF9hZGRlbmQpCkBAIC00NzU5LDcgKzQ3NTksNyBAQCB2b2lkIGhlbHBlcl9td2Fp dChpbnQgbmV4dF9laXBfYWRkZW5kKQogdm9pZCBoZWxwZXJfZGVidWcodm9pZCkKIHsKICAgICBl bnYtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfREVCVUc7Ci0gICAgY3B1X2xvb3BfZXhpdCgpOwor ICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0KIAogdm9pZCBoZWxwZXJfcmVzZXRfcmYodm9pZCkK QEAgLTUxMTEsNyArNTExMSw3IEBAIHZvaWQgaGVscGVyX3ZtcnVuKGludCBhZmxhZywgaW50IG5l eHRfZWlwX2FkZGVuZCkKICAgICAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pc19pbnQgPSAw OwogICAgICAgICAgICAgICAgIGVudi0+ZXhjZXB0aW9uX25leHRfZWlwID0gRUlQOwogICAgICAg ICAgICAgICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19UQl9JTl9BU00sICJOTUkiKTsKLSAgICAg ICAgICAgICAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgICAgICAgICAgICAgY3B1X2xvb3BfZXhp dChlbnYpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNWTV9FVlRJTkpf VFlQRV9FWEVQVDoKICAgICAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IHZlY3Rv cjsKQEAgLTUxMTksNyArNTExOSw3IEBAIHZvaWQgaGVscGVyX3ZtcnVuKGludCBhZmxhZywgaW50 IG5leHRfZWlwX2FkZGVuZCkKICAgICAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pc19pbnQg PSAwOwogICAgICAgICAgICAgICAgIGVudi0+ZXhjZXB0aW9uX25leHRfZWlwID0gLTE7CiAgICAg ICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX1RCX0lOX0FTTSwgIkVYRVBUIik7Ci0g ICAgICAgICAgICAgICAgY3B1X2xvb3BfZXhpdCgpOworICAgICAgICAgICAgICAgIGNwdV9sb29w X2V4aXQoZW52KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTVk1fRVZU SU5KX1RZUEVfU09GVDoKICAgICAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IHZl Y3RvcjsKQEAgLTUxMjcsNyArNTEyNyw3IEBAIHZvaWQgaGVscGVyX3ZtcnVuKGludCBhZmxhZywg aW50IG5leHRfZWlwX2FkZGVuZCkKICAgICAgICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pc19p bnQgPSAxOwogICAgICAgICAgICAgICAgIGVudi0+ZXhjZXB0aW9uX25leHRfZWlwID0gRUlQOwog ICAgICAgICAgICAgICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19UQl9JTl9BU00sICJTT0ZUIik7 Ci0gICAgICAgICAgICAgICAgY3B1X2xvb3BfZXhpdCgpOworICAgICAgICAgICAgICAgIGNwdV9s b29wX2V4aXQoZW52KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg ICBxZW11X2xvZ19tYXNrKENQVV9MT0dfVEJfSU5fQVNNLCAiICUjeCAlI3hcbiIsIGVudi0+ZXhj ZXB0aW9uX2luZGV4LCBlbnYtPmVycm9yX2NvZGUpOwpAQCAtNTQ2Myw3ICs1NDYzLDcgQEAgdm9p ZCBoZWxwZXJfdm1leGl0KHVpbnQzMl90IGV4aXRfY29kZSwgdWludDY0X3QgZXhpdF9pbmZvXzEp CiAgICAgZW52LT5lcnJvcl9jb2RlID0gMDsKICAgICBlbnYtPm9sZF9leGNlcHRpb24gPSAtMTsK IAotICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKICNl bmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWxtMzIvb3BfaGVscGVyLmMgYi90YXJnZXQtbG0zMi9v cF9oZWxwZXIuYwppbmRleCBjNzJiMWRmLi5hMzRjZWNkIDEwMDY0NAotLS0gYS90YXJnZXQtbG0z Mi9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtbG0zMi9vcF9oZWxwZXIuYwpAQCAtMjAsMTQgKzIw LDE0IEBACiB2b2lkIGhlbHBlcl9yYWlzZV9leGNlcHRpb24odWludDMyX3QgaW5kZXgpCiB7CiAg ICAgZW52LT5leGNlcHRpb25faW5kZXggPSBpbmRleDsKLSAgICBjcHVfbG9vcF9leGl0KCk7Cisg ICAgY3B1X2xvb3BfZXhpdChlbnYpOwogfQogCiB2b2lkIGhlbHBlcl9obHQodm9pZCkKIHsKICAg ICBlbnYtPmhhbHRlZCA9IDE7CiAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBFWENQX0hMVDsK LSAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogfQogCiB2b2lk IGhlbHBlcl93Y3NyX2ltKHVpbnQzMl90IGltKQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIHRsYl9m aWxsKHRhcmdldF91bG9uZyBhZGRyLCBpbnQgaXNfd3JpdGUsIGludCBtbXVfaWR4LCB2b2lkICpy ZXRhZGRyKQogICAgICAgICAgICAgICAgIGNwdV9yZXN0b3JlX3N0YXRlKHRiLCBlbnYsIHBjKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjcHVfbG9vcF9leGl0KCk7CisgICAg ICAgIGNwdV9sb29wX2V4aXQoZW52KTsKICAgICB9CiAgICAgZW52ID0gc2F2ZWRfZW52OwogfQpk aWZmIC0tZ2l0IGEvdGFyZ2V0LW02OGsvb3BfaGVscGVyLmMgYi90YXJnZXQtbTY4ay9vcF9oZWxw ZXIuYwppbmRleCA5YjEzYmRiLi4wODRhMTgyIDEwMDY0NAotLS0gYS90YXJnZXQtbTY4ay9vcF9o ZWxwZXIuYworKysgYi90YXJnZXQtbTY4ay9vcF9oZWxwZXIuYwpAQCAtNzEsNyArNzEsNyBAQCB2 b2lkIHRsYl9maWxsICh0YXJnZXRfdWxvbmcgYWRkciwgaW50IGlzX3dyaXRlLCBpbnQgbW11X2lk eCwgdm9pZCAqcmV0YWRkcikKICAgICAgICAgICAgICAgICBjcHVfcmVzdG9yZV9zdGF0ZSh0Yiwg ZW52LCBwYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY3B1X2xvb3BfZXhp dCgpOworICAgICAgICBjcHVfbG9vcF9leGl0KGVudik7CiAgICAgfQogICAgIGVudiA9IHNhdmVk X2VudjsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIGRvX2ludGVycnVwdChpbnQgaXNfaHcp CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbnYtPmhhbHRlZCA9IDE7CiAgICAgICAgICAg ICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfSExUOwotICAgICAgICAgICAgY3B1X2xvb3Bf ZXhpdCgpOworICAgICAgICAgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogICAgICAgICAgICAgcmV0 dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbnYtPmV4Y2VwdGlvbl9pbmRleCA+PSBFWENQ X1RSQVAwCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBkb19pbnRlcnJ1cHQoaW50IGlzX2h3KQog c3RhdGljIHZvaWQgcmFpc2VfZXhjZXB0aW9uKGludCB0dCkKIHsKICAgICBlbnYtPmV4Y2VwdGlv bl9pbmRleCA9IHR0OwotICAgIGNwdV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVu dik7CiB9CiAKIHZvaWQgSEVMUEVSKHJhaXNlX2V4Y2VwdGlvbikodWludDMyX3QgdHQpCmRpZmYg LS1naXQgYS90YXJnZXQtbWljcm9ibGF6ZS9vcF9oZWxwZXIuYyBiL3RhcmdldC1taWNyb2JsYXpl L29wX2hlbHBlci5jCmluZGV4IGM3YjJmOTcuLjFhMGE0NzYgMTAwNjQ0Ci0tLSBhL3RhcmdldC1t aWNyb2JsYXplL29wX2hlbHBlci5jCisrKyBiL3RhcmdldC1taWNyb2JsYXplL29wX2hlbHBlci5j CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgdGxiX2ZpbGwgKHRhcmdldF91bG9uZyBhZGRyLCBpbnQg aXNfd3JpdGUsIGludCBtbXVfaWR4LCB2b2lkICpyZXRhZGRyKQogICAgICAgICAgICAgICAgIGNw dV9yZXN0b3JlX3N0YXRlKHRiLCBlbnYsIHBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot ICAgICAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgICAgIGNwdV9sb29wX2V4aXQoZW52KTsKICAg ICB9CiAgICAgZW52ID0gc2F2ZWRfZW52OwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHVpbnQzMl90 IGhlbHBlcl9nZXQodWludDMyX3QgaWQsIHVpbnQzMl90IGN0cmwpCiB2b2lkIGhlbHBlcl9yYWlz ZV9leGNlcHRpb24odWludDMyX3QgaW5kZXgpCiB7CiAgICAgZW52LT5leGNlcHRpb25faW5kZXgg PSBpbmRleDsKLSAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgY3B1X2xvb3BfZXhpdChlbnYpOwog fQogCiB2b2lkIGhlbHBlcl9kZWJ1Zyh2b2lkKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LW1pcHMvb3Bf aGVscGVyLmMgYi90YXJnZXQtbWlwcy9vcF9oZWxwZXIuYwppbmRleCBiOGU0OTkxLi42Yjk2NmIx IDEwMDY0NAotLS0gYS90YXJnZXQtbWlwcy9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtbWlwcy9v cF9oZWxwZXIuYwpAQCAtMzgsNyArMzgsNyBAQCB2b2lkIGhlbHBlcl9yYWlzZV9leGNlcHRpb25f ZXJyICh1aW50MzJfdCBleGNlcHRpb24sIGludCBlcnJvcl9jb2RlKQogI2VuZGlmCiAgICAgZW52 LT5leGNlcHRpb25faW5kZXggPSBleGNlcHRpb247CiAgICAgZW52LT5lcnJvcl9jb2RlID0gZXJy b3JfY29kZTsKLSAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgY3B1X2xvb3BfZXhpdChlbnYpOwog fQogCiB2b2lkIGhlbHBlcl9yYWlzZV9leGNlcHRpb24gKHVpbnQzMl90IGV4Y2VwdGlvbikKQEAg LTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIHRhcmdldF9waHlzX2FkZHJfdCBkb190cmFu c2xhdGVfYWRkcmVzcyh0YXJnZXRfdWxvbmcgYWRkcmVzcywgaW50CiAgICAgbGxhZGRyID0gY3B1 X21pcHNfdHJhbnNsYXRlX2FkZHJlc3MoZW52LCBhZGRyZXNzLCBydyk7CiAKICAgICBpZiAobGxh ZGRyID09IC0xTEwpIHsKLSAgICAgICAgY3B1X2xvb3BfZXhpdCgpOworICAgICAgICBjcHVfbG9v cF9leGl0KGVudik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIGxsYWRkcjsKICAgICB9 CmRpZmYgLS1naXQgYS90YXJnZXQtcHBjL29wX2hlbHBlci5jIGIvdGFyZ2V0LXBwYy9vcF9oZWxw ZXIuYwppbmRleCBkNWE5ODdiLi41ZTU4Mjc4IDEwMDY0NAotLS0gYS90YXJnZXQtcHBjL29wX2hl bHBlci5jCisrKyBiL3RhcmdldC1wcGMvb3BfaGVscGVyLmMKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9p ZCBoZWxwZXJfcmFpc2VfZXhjZXB0aW9uX2VyciAodWludDMyX3QgZXhjZXB0aW9uLCB1aW50MzJf dCBlcnJvcl9jb2RlKQogI2VuZGlmCiAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBleGNlcHRp b247CiAgICAgZW52LT5lcnJvcl9jb2RlID0gZXJyb3JfY29kZTsKLSAgICBjcHVfbG9vcF9leGl0 KCk7CisgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogfQogCiB2b2lkIGhlbHBlcl9yYWlzZV9leGNl cHRpb24gKHVpbnQzMl90IGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL3RhcmdldC1zaDQvb3BfaGVs cGVyLmMgYi90YXJnZXQtc2g0L29wX2hlbHBlci5jCmluZGV4IGI5MDlkMTguLmE5MzIyMjUgMTAw NjQ0Ci0tLSBhL3RhcmdldC1zaDQvb3BfaGVscGVyLmMKKysrIGIvdGFyZ2V0LXNoNC9vcF9oZWxw ZXIuYwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIHRsYl9maWxsKHRhcmdldF91bG9uZyBhZGRyLCBp bnQgaXNfd3JpdGUsIGludCBtbXVfaWR4LCB2b2lkICpyZXRhZGRyKQogICAgIGlmIChyZXQpIHsK ICAgICAgICAgLyogbm93IHdlIGhhdmUgYSByZWFsIGNwdSBmYXVsdCAqLwogICAgICAgICBjcHVf cmVzdG9yZV9zdGF0ZV9mcm9tX3JldGFkZHIocmV0YWRkcik7Ci0JY3B1X2xvb3BfZXhpdCgpOwor ICAgICAgICBjcHVfbG9vcF9leGl0KGVudik7CiAgICAgfQogICAgIGVudiA9IHNhdmVkX2VudjsK IH0KQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2V4Y2VwdGlvbihp bnQgaW5kZXgsIHZvaWQgKnJldGFkZHIpCiB7CiAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBp bmRleDsKICAgICBjcHVfcmVzdG9yZV9zdGF0ZV9mcm9tX3JldGFkZHIocmV0YWRkcik7Ci0gICAg Y3B1X2xvb3BfZXhpdCgpOworICAgIGNwdV9sb29wX2V4aXQoZW52KTsKIH0KIAogdm9pZCBoZWxw ZXJfcmFpc2VfaWxsZWdhbF9pbnN0cnVjdGlvbih2b2lkKQpAQCAtMTEzLDcgKzExMyw3IEBAIHZv aWQgaGVscGVyX3JhaXNlX3Nsb3RfZnB1X2Rpc2FibGUodm9pZCkKIHZvaWQgaGVscGVyX2RlYnVn KHZvaWQpCiB7CiAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBFWENQX0RFQlVHOwotICAgIGNw dV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHZvaWQgaGVscGVy X3NsZWVwKHVpbnQzMl90IG5leHRfcGMpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBoZWxwZXJf c2xlZXAodWludDMyX3QgbmV4dF9wYykKICAgICBlbnYtPmluX3NsZWVwID0gMTsKICAgICBlbnYt PmV4Y2VwdGlvbl9pbmRleCA9IEVYQ1BfSExUOwogICAgIGVudi0+cGMgPSBuZXh0X3BjOwotICAg IGNwdV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHZvaWQgaGVs cGVyX3RyYXBhKHVpbnQzMl90IHRyYSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgdm9pZCB1 cGRhdGVfZnBzY3Iodm9pZCAqcmV0YWRkcikKICAgICAgICAgaWYgKGNhdXNlICYgZW5hYmxlKSB7 CiAgICAgICAgICAgICBjcHVfcmVzdG9yZV9zdGF0ZV9mcm9tX3JldGFkZHIocmV0YWRkcik7CiAg ICAgICAgICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IDB4MTIwOwotICAgICAgICAgICAgY3B1 X2xvb3BfZXhpdCgpOworICAgICAgICAgICAgY3B1X2xvb3BfZXhpdChlbnYpOwogICAgICAgICB9 CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LXNwYXJjL29wX2hlbHBlci5jIGIvdGFyZ2V0 LXNwYXJjL29wX2hlbHBlci5jCmluZGV4IGIzODY5MWUuLjQ5MWE5ZjMgMTAwNjQ0Ci0tLSBhL3Rh cmdldC1zcGFyYy9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtc3BhcmMvb3BfaGVscGVyLmMKQEAg LTMxNiw3ICszMTYsNyBAQCBzdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBhc2lfYWRkcmVzc19t YXNrKENQVVN0YXRlICplbnYxLAogc3RhdGljIHZvaWQgcmFpc2VfZXhjZXB0aW9uKGludCB0dCkK IHsKICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IHR0OwotICAgIGNwdV9sb29wX2V4aXQoKTsK KyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHZvaWQgSEVMUEVSKHJhaXNlX2V4Y2VwdGlv bikoaW50IHR0KQpAQCAtMzcwMiw3ICszNzAyLDcgQEAgdm9pZCBoZWxwZXJfbGR4ZnNyKHVpbnQ2 NF90IG5ld19mc3IpCiB2b2lkIGhlbHBlcl9kZWJ1Zyh2b2lkKQogewogICAgIGVudi0+ZXhjZXB0 aW9uX2luZGV4ID0gRVhDUF9ERUJVRzsKLSAgICBjcHVfbG9vcF9leGl0KCk7CisgICAgY3B1X2xv b3BfZXhpdChlbnYpOwogfQogCiAjaWZuZGVmIFRBUkdFVF9TUEFSQzY0CkBAIC00NDAyLDcgKzQ0 MDIsNyBAQCB2b2lkIHRsYl9maWxsKHRhcmdldF91bG9uZyBhZGRyLCBpbnQgaXNfd3JpdGUsIGlu dCBtbXVfaWR4LCB2b2lkICpyZXRhZGRyKQogICAgIHJldCA9IGNwdV9zcGFyY19oYW5kbGVfbW11 X2ZhdWx0KGVudiwgYWRkciwgaXNfd3JpdGUsIG1tdV9pZHgsIDEpOwogICAgIGlmIChyZXQpIHsK ICAgICAgICAgY3B1X3Jlc3RvcmVfc3RhdGUyKHJldGFkZHIpOwotICAgICAgICBjcHVfbG9vcF9l eGl0KCk7CisgICAgICAgIGNwdV9sb29wX2V4aXQoZW52KTsKICAgICB9CiAgICAgZW52ID0gc2F2 ZWRfZW52OwogfQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LXVuaWNvcmUzMi9vcF9oZWxwZXIuYyBiL3Rh cmdldC11bmljb3JlMzIvb3BfaGVscGVyLmMKaW5kZXggMzFlNGIxMS4uNTQxZTZmMCAxMDA2NDQK LS0tIGEvdGFyZ2V0LXVuaWNvcmUzMi9vcF9oZWxwZXIuYworKysgYi90YXJnZXQtdW5pY29yZTMy L29wX2hlbHBlci5jCkBAIC0xNiw3ICsxNiw3IEBACiB2b2lkIEhFTFBFUihleGNlcHRpb24pKHVp bnQzMl90IGV4Y3ApCiB7CiAgICAgZW52LT5leGNlcHRpb25faW5kZXggPSBleGNwOwotICAgIGNw dV9sb29wX2V4aXQoKTsKKyAgICBjcHVfbG9vcF9leGl0KGVudik7CiB9CiAKIHN0YXRpYyB0YXJn ZXRfdWxvbmcgYXNyX3JlYWQodm9pZCkKZGlmZiAtLWdpdCBhL3VzZXItZXhlYy5jIGIvdXNlci1l eGVjLmMKaW5kZXggMDExNTFlNS4uYjcyODQwNyAxMDA2NDQKLS0tIGEvdXNlci1leGVjLmMKKysr IGIvdXNlci1leGVjLmMKQEAgLTM3LDExICszNywxNCBAQAogCiAvLyNkZWZpbmUgREVCVUdfU0lH TkFMCiAKK3N0YXRpYyB2b2lkIGV4Y2VwdGlvbl9hY3Rpb24oQ1BVU3RhdGUgKmVudjEpCit7CiAj aWYgZGVmaW5lZChUQVJHRVRfSTM4NikKLSNkZWZpbmUgRVhDRVBUSU9OX0FDVElPTiByYWlzZV9l eGNlcHRpb25fZXJyKGVudi0+ZXhjZXB0aW9uX2luZGV4LCBlbnYtPmVycm9yX2NvZGUpCisgICAg cmFpc2VfZXhjZXB0aW9uX2VycihlbnYxLT5leGNlcHRpb25faW5kZXgsIGVudjEtPmVycm9yX2Nv ZGUpOwogI2Vsc2UKLSNkZWZpbmUgRVhDRVBUSU9OX0FDVElPTiBjcHVfbG9vcF9leGl0KCkKKyAg ICBjcHVfbG9vcF9leGl0KGVudik7CiAjZW5kaWYKK30KIAogLyogZXhpdCB0aGUgY3VycmVudCBU QiBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuIFRoZSBob3N0IHJlZ2lzdGVycyBhcmUKICAgIHJlc3Rv cmVkIGluIGEgc3RhdGUgY29tcGF0aWJsZSB3aXRoIHRoZSBDUFUgZW11bGF0b3IKQEAgLTExMyw3 ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBoYW5kbGVfY3B1X3NpZ25hbCh1bnNpZ25lZCBs b25nIHBjLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAgICAgLyogd2UgcmVzdG9yZSB0aGUgcHJv Y2VzcyBzaWduYWwgbWFzayBhcyB0aGUgc2lncmV0dXJuIHNob3VsZAogICAgICAgIGRvIGl0IChY WFg6IHVzZSBzaWdzZXRqbXApICovCiAgICAgc2lncHJvY21hc2soU0lHX1NFVE1BU0ssIG9sZF9z ZXQsIE5VTEwpOwotICAgIEVYQ0VQVElPTl9BQ1RJT047CisgICAgZXhjZXB0aW9uX2FjdGlvbihl bnYpOwogCiAgICAgLyogbmV2ZXIgY29tZXMgaGVyZSAqLwogICAgIHJldHVybiAxOwotLSAKMS43 LjIuNQoK --20cf303b4045b22efb04a3418ec7--