From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30819 invoked by alias); 9 Jan 2012 09:21:12 -0000 Received: (qmail 30809 invoked by uid 22791); 9 Jan 2012 09:21:08 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,TW_BP,TW_EG,TW_GJ,TW_HP X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 09 Jan 2012 09:20:43 +0000 Received: by vcge1 with SMTP id e1so2833734vcg.0 for ; Mon, 09 Jan 2012 01:20:42 -0800 (PST) Received: by 10.220.213.200 with SMTP id gx8mr8740720vcb.13.1326100842165; Mon, 09 Jan 2012 01:20:42 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.3.130 with HTTP; Mon, 9 Jan 2012 01:20:21 -0800 (PST) In-Reply-To: <201201041712.q04HChEA012745@d06av02.portsmouth.uk.ibm.com> References: <201201041712.q04HChEA012745@d06av02.portsmouth.uk.ibm.com> From: Kevin Pouget Date: Mon, 09 Jan 2012 09:21:00 -0000 Message-ID: Subject: Re: [RFC] Python Finish Breakpoints To: gdb-patches@sourceware.org Cc: Tom Tromey , Ulrich Weigand Content-Type: multipart/mixed; boundary=bcaec54fb814a2361404b614e9f4 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00267.txt.bz2 --bcaec54fb814a2361404b614e9f4 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5092 On Wed, Jan 4, 2012 at 6:12 PM, Ulrich Weigand wrote: > Tom Tromey wrote: > >> We have support for "finish", and other operations in the presence of >> exceptions. =A0Search for _Unwind_DebugHook (in breakpoint.c and infrun.= c). >> This code only works if you are using a new-enough version of GCC and >> have debuginfo for libgcc (but once the stap probe patches are in, you >> will no longer need debuginfo). > > Ah, I see -- that's what I was missing. =A0Yes, this looks like the > way to handle this situation ... Hello, I would like to discuss this patch which intends to fix and improve the handling for c++ exceptions with the Python FinishBreakpoint. Based on what I understood of the existing mechanisms which handle longjmps and and exception, I extended the "momentary breakpoints" with a "nostop" flag. Indeed, their initial behavior/goal was to stop unconditionally the execution, whereas I just wanted to receive a notification when the relevant code location was hit (namely infrun.c::BPSTAT_WHAT_CLEAR_LONGJMP_RESUME). The nostop flag is propagated step by step (bp by bp) from the exception throw to its catchpoint, where I check if the FinishBreakpoint have ran out of their scope. As Tom mentioned, c++ debug info are needed for this machinery to work (otherwise, FinishBreakpoint will fail the same way GDB fails: stop at the beginning of the catch(), never stop, ...) -- I used xfail in the testsuite to refer to this situation, I'm not sure that's correct). I've also fixed a bug which triggered twice the out_of_scope notification in case of inferior exit (observer_attach_normal_stop and observer_attach_inferior_exit are both triggered when the inferior exits) (This is just a preliminary patch, I'll would like to prepare some more tests with exceptions and longjmps) Tested with no regression on f15/X86_64 ( these always fail on my system: Running PATH/git/gdb/gdb/testsuite/gdb.base/longjmp.exp ... FAIL: gdb.base/longjmp.exp: next over longjmp(1) FAIL: gdb.base/longjmp.exp: next over call_longjmp (2) FAIL: gdb.base/longjmp.exp: next over patt3 ) Thanks for your comments, Kevin -- 2012-01-09 Kevin Pouget * breakpoint.c (momentary_nostop_breakpoint_ops): New variable. (bpstat_what): Set field retval.is_nostop when necessary. (set_longjmp_breakpoint): Add parameter nostop and create nostop momentary breakpoint ops if necessary. (set_momentary_breakpoint): Likewise. (set_momentary_breakpoint_at_pc): Likewise. (momentary_breakpoint_is_nostop): New function. (until_break_command): Call set_momentary_breakpoint and set_longjmp_breakpoint with nostop not set. (momentary_stop_bkpt_check_status): Rename from momentary_bkpt_check_status. (momentary_bkpt_check_status): Remove. (momentary_nostop_bkpt_check_status): New function. (initialize_breakpoint_ops): Initialize momentary_breakpoint_ops.check_status to momentary_stop_bkpt_check_status, initialize momentary_nostop_breakpoint_ops. * breakpoint.h (struct bpstat_what): New field: is_nostop. (set_momentary_breakpoint): New parameter: nostop. (set_momentary_breakpoint_at_pc): Liklewise. (set_longjmp_breakpoint): Likewise. (momentary_breakpoint_is_nostop): New prototype. * arm-linux-tdep.c (arm_linux_copy_svc): Add nostop parameter to set_momentary_breakpoint call. * elfread.c: (elf_gnu_ifunc_resolver_stop): Likewise * infcall.c (call_function_by_hand): Likewise. * infcmd.c: (finish_forward): Likewise, add nostop parameter to set_longjmp_breakpoint call. (step_1): Add nostop parameter to set_longjmp_breakpoint call. (until_next_command): Likewise. * infrun.c: Include python/python.h. (insert_step_resume_breakpoint_at_sal_1): Add nostop parameter to set_momentary_breakpoint call. (insert_longjmp_resume_breakpoint): Add nostop parameter to prototype. Add nostop parameter to set_momentary_breakpoint_at_pc call. (insert_exception_resume_breakpoint): Likewise. (check_exception_resume): Add nostop parameter to prototype. Add nostop parameter to insert_exception_resume_breakpoint call. (process_event_stop_test): Set and use nostop to prevent GDB from stopping the execution, trigger gdbpy_bpfinish_handle_exception when necessary. * python/py-finishbreakpoint.c (bpfinishpy_init): Call set_longjmp_breakpoint. (bpfinishpy_detect_out_scope): Renamed from bpfinishpy_detect_out_scope_cb. Cleaned up. Add inc_current parameter. (bpfinishpy_detect_out_scope_cb): Removed. (bpfinishpy_detect_out_scope_bp_cb): New function. (bpfinishpy_detect_out_scope_exception_cb): New function. (bpfinishpy_handle_stop): Update with function name bpfinishpy_detect_out_scope_bp_cb. (bpfinishpy_handle_exit): Removed. (gdbpy_bpfinish_handle_exception): New function. (gdbpy_initialize_finishbreakpoints): Remove call to bpfinishpy_handle_exit. * python/python.c (gdbpy_bpfinish_handle_exception): New function. * python/python.h (gdbpy_bpfinish_handle_exception): New prototype. testsuite/ * gdb.python/py-finish-breakpoint2.exp: Strengthen the exception tests. --bcaec54fb814a2361404b614e9f4 Content-Type: text/x-patch; charset=US-ASCII; name="0001-better-exception-support.patch" Content-Disposition: attachment; filename="0001-better-exception-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gx7a6yie1 Content-length: 36747 RnJvbSA3NWNkOGEyODg3ODc1NTBhNThjOWRkM2E3ZGIxYjViMGM5OWM1ODdm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IEZyaSwgNiBKYW4gMjAxMiAx NDoxNDo0OSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGJldHRlciBleGNlcHRp b24gc3VwcG9ydAoKLS0tCiBnZGIvYXJtLWxpbnV4LXRkZXAuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIGdkYi9icmVha3Bv aW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2 OCArKysrKysrKysrKy0tLS0KIGdkYi9icmVha3BvaW50LmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKy0KIGdkYi9lbGZy ZWFkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArLQogZ2RiL2luZmNhbGwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAzICstCiBnZGIvaW5mY21kLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KIGdk Yi9pbmZydW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA0NiArKysrKysrLS0tCiBnZGIvcHl0aG9uL3B5LWZpbmlzaGJy ZWFrcG9pbnQuYyAgICAgICAgICAgICAgICAgICB8ICAgOTYgKysrKysrKysr KysrKy0tLS0tLS0KIGdkYi9weXRob24vcHl0aG9uLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgNiArKwogZ2RiL3B5dGhvbi9weXRo b24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsK IGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1maW5pc2gtYnJlYWtwb2lu dDIuZXhwIHwgICAyMiArKysrLQogMTEgZmlsZXMgY2hhbmdlZCwgMTk0IGlu c2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dk Yi9hcm0tbGludXgtdGRlcC5jIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKaW5k ZXggYWM0ODYwYy4uODQ3OTgzOSAxMDA2NDQKLS0tIGEvZ2RiL2FybS1saW51 eC10ZGVwLmMKKysrIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKQEAgLTkzNSw3 ICs5MzUsNyBAQCBhcm1fbGludXhfY29weV9zdmMgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ3MsCiAJICAgIHsKIAkg ICAgICBpbmZlcmlvcl90aHJlYWQgKCktPmNvbnRyb2wuc3RlcF9yZXN1bWVf YnJlYWtwb2ludAogICAgICAgICAJPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9p bnQgKGdkYmFyY2gsIHNhbCwgZ2V0X2ZyYW1lX2lkIChmcmFtZSksCi0JCQkJ CSAgICBicF9zdGVwX3Jlc3VtZSk7CisJCQkJCSAgICBicF9zdGVwX3Jlc3Vt ZSwgLyogbm9zdG9wICovIDApOwogCiAJICAgICAgLyogV2UgbmVlZCB0byBt YWtlIHN1cmUgd2UgYWN0dWFsbHkgaW5zZXJ0IHRoZSBtb21lbnRhcnkKIAkg ICAgICAgICBicmVha3BvaW50IHNldCBhYm92ZS4gICovCmRpZmYgLS1naXQg YS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwppbmRleCA2 YmNlZGM0Li5lNTc4YWVkIDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5j CisrKyBiL2dkYi9icmVha3BvaW50LmMKQEAgLTI1Nyw2ICsyNTcsNyBAQCBz dGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGludGVybmFsX2JyZWFrcG9p bnRfb3BzOwogCiAvKiBNb21lbnRhcnkgYnJlYWtwb2ludHMgY2xhc3MgdHlw ZS4gICovCiBzdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIG1vbWVudGFy eV9icmVha3BvaW50X29wczsKK3N0YXRpYyBzdHJ1Y3QgYnJlYWtwb2ludF9v cHMgbW9tZW50YXJ5X25vc3RvcF9icmVha3BvaW50X29wczsKIAogLyogVGhl IGJyZWFrcG9pbnRfb3BzIHN0cnVjdHVyZSB0byBiZSB1c2VkIGluIHJlZ3Vs YXIgdXNlciBjcmVhdGVkCiAgICBicmVha3BvaW50cy4gICovCkBAIC00MzA4 LDYgKzQzMDksNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzX2hlYWQpCiAg IHJldHZhbC5tYWluX2FjdGlvbiA9IEJQU1RBVF9XSEFUX0tFRVBfQ0hFQ0tJ Tkc7CiAgIHJldHZhbC5jYWxsX2R1bW15ID0gU1RPUF9OT05FOwogICByZXR2 YWwuaXNfbG9uZ2ptcCA9IDA7CisgIHJldHZhbC5pc19ub3N0b3AgPSAwOwog CiAgIGZvciAoYnMgPSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5u ZXh0KQogICAgIHsKQEAgLTQzNjQsNiArNDM2Niw4IEBAIGJwc3RhdF93aGF0 IChicHN0YXQgYnNfaGVhZCkKIAljYXNlIGJwX2V4Y2VwdGlvbjoKIAkgIHRo aXNfYWN0aW9uID0gQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FOwog CSAgcmV0dmFsLmlzX2xvbmdqbXAgPSBicHR5cGUgPT0gYnBfbG9uZ2ptcDsK KwkgIHJldHZhbC5pc19ub3N0b3AgPQorCSAgICAgIG1vbWVudGFyeV9icmVh a3BvaW50X2lzX25vc3RvcCAoYnMtPmJyZWFrcG9pbnRfYXQpOwogCSAgYnJl YWs7CiAJY2FzZSBicF9sb25nam1wX3Jlc3VtZToKIAljYXNlIGJwX2V4Y2Vw dGlvbl9yZXN1bWU6CkBAIC01OTAyLDEzICs1OTA2LDE4IEBAIG1ha2VfYnJl YWtwb2ludF9wZXJtYW5lbnQgKHN0cnVjdCBicmVha3BvaW50ICpiKQogCiAv KiBDYWxsIHRoaXMgcm91dGluZSB3aGVuIHN0ZXBwaW5nIGFuZCBuZXh0aW5n IHRvIGVuYWJsZSBhIGJyZWFrcG9pbnQKICAgIGlmIHdlIGRvIGEgbG9uZ2pt cCgpIG9yICd0aHJvdycgaW4gVFAuICBGUkFNRSBpcyB0aGUgZnJhbWUgd2hp Y2gKLSAgIGluaXRpYXRlZCB0aGUgb3BlcmF0aW9uLiAgKi8KKyAgIGluaXRp YXRlZCB0aGUgb3BlcmF0aW9uLiAgSWYgdGhlIGZsYWcgTk9TVE9QIGlzIHNl dCwgdGhlIGV4ZWN1dGlvbiB3aWxsCisgICBub3QgYmUgc3RvcHBlZCB1cG9u IGhpdHRpbmcgdGhlIGJyZWFrcG9pbnQsIGJ1dCBpbnRlcm5hbCBmdW5jdGlv bnMgY2FuIGJlCisgICB0cmlnZ2VyZWQuICAqLwogCiB2b2lkCi1zZXRfbG9u Z2ptcF9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCBzdHJ1 Y3QgZnJhbWVfaWQgZnJhbWUpCitzZXRfbG9uZ2ptcF9icmVha3BvaW50IChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWUs CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm9zdG9wKQogewogICBz dHJ1Y3QgYnJlYWtwb2ludCAqYiwgKmJfdG1wOwogICBpbnQgdGhyZWFkID0g dHAtPm51bTsKKyAgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHMgPSAobm9z dG9wID8gJm1vbWVudGFyeV9ub3N0b3BfYnJlYWtwb2ludF9vcHMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJm1vbWVudGFy eV9icmVha3BvaW50X29wcyk7CiAKICAgLyogVG8gYXZvaWQgaGF2aW5nIHRv IHJlc2NhbiBhbGwgb2JqZmlsZSBzeW1ib2xzIGF0IGV2ZXJ5IHN0ZXAsCiAg ICAgIHdlIG1haW50YWluIGEgbGlzdCBvZiBjb250aW51YWxseS1pbnNlcnRl ZCBidXQgYWx3YXlzIGRpc2FibGVkCkBAIC01OTIyLDggKzU5MzEsNyBAQCBz ZXRfbG9uZ2ptcF9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw LCBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWUpCiAJZW51bSBicHR5cGUgdHlwZSA9 IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIgPyBicF9sb25nam1wIDog YnBfZXhjZXB0aW9uOwogCXN0cnVjdCBicmVha3BvaW50ICpjbG9uZTsKIAot CWNsb25lID0gbW9tZW50YXJ5X2JyZWFrcG9pbnRfZnJvbV9tYXN0ZXIgKGIs IHR5cGUsCi0JCQkJCQkgICZtb21lbnRhcnlfYnJlYWtwb2ludF9vcHMpOwor CWNsb25lID0gbW9tZW50YXJ5X2JyZWFrcG9pbnRfZnJvbV9tYXN0ZXIgKGIs IHR5cGUsIG9wcyk7CiAJY2xvbmUtPnRocmVhZCA9IHRocmVhZDsKICAgICAg IH0KIApAQCAtNzA0NSwyMSArNzA1MywyNCBAQCBlbmFibGVfYnJlYWtwb2lu dHNfYWZ0ZXJfc3RhcnR1cCAodm9pZCkKIH0KIAogCi0vKiBTZXQgYSBicmVh a3BvaW50IHRoYXQgd2lsbCBldmFwb3JhdGUgYW4gZW5kIG9mIGNvbW1hbmQK LSAgIGF0IGFkZHJlc3Mgc3BlY2lmaWVkIGJ5IFNBTC4KLSAgIFJlc3RyaWN0 IGl0IHRvIGZyYW1lIEZSQU1FIGlmIEZSQU1FIGlzIG5vbnplcm8uICAqLwor LyogU2V0IGEgYnJlYWtwb2ludCB0aGF0IHdpbGwgZXZhcG9yYXRlIGFuIGVu ZCBvZiBjb21tYW5kIGF0IGFkZHJlc3Mgc3BlY2lmaWVkCisgICBieSBTQUwu IFJlc3RyaWN0IGl0IHRvIGZyYW1lIEZSQU1FIGlmIEZSQU1FIGlzIG5vbnpl cm8uICBXaWxsIG5vdCByZXF1ZXN0CisgICBleGVjdXRpb24gc3RvcCBpZiBO T1NUT1AgaXMgc2V0LiAgKi8KIAogc3RydWN0IGJyZWFrcG9pbnQgKgogc2V0 X21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwsCi0JCQkgIHN0cnVjdCBm cmFtZV9pZCBmcmFtZV9pZCwgZW51bSBicHR5cGUgdHlwZSkKKwkJCSAgc3Ry dWN0IGZyYW1lX2lkIGZyYW1lX2lkLCBlbnVtIGJwdHlwZSB0eXBlLAorCQkJ ICBpbnQgbm9zdG9wKQogewogICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKKyAg c3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHMgPSAobm9zdG9wID8gJm1vbWVu dGFyeV9ub3N0b3BfYnJlYWtwb2ludF9vcHMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogJm1vbWVudGFyeV9icmVha3BvaW50 X29wcyk7CiAKICAgLyogSWYgRlJBTUVfSUQgaXMgdmFsaWQsIGl0IHNob3Vs ZCBiZSBhIHJlYWwgZnJhbWUsIG5vdCBhbiBpbmxpbmVkCiAgICAgIG9uZS4g ICovCiAgIGdkYl9hc3NlcnQgKCFmcmFtZV9pZF9pbmxpbmVkX3AgKGZyYW1l X2lkKSk7CiAKLSAgYiA9IHNldF9yYXdfYnJlYWtwb2ludCAoZ2RiYXJjaCwg c2FsLCB0eXBlLCAmbW9tZW50YXJ5X2JyZWFrcG9pbnRfb3BzKTsKKyAgYiA9 IHNldF9yYXdfYnJlYWtwb2ludCAoZ2RiYXJjaCwgc2FsLCB0eXBlLCBvcHMp OwogICBiLT5lbmFibGVfc3RhdGUgPSBicF9lbmFibGVkOwogICBiLT5kaXNw b3NpdGlvbiA9IGRpc3BfZG9udHRvdWNoOwogICBiLT5mcmFtZV9pZCA9IGZy YW1lX2lkOwpAQCAtNzEyNyw3ICs3MTM4LDcgQEAgY2xvbmVfbW9tZW50YXJ5 X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpvcmlnKQogCiBzdHJ1 Y3QgYnJlYWtwb2ludCAqCiBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRf cGMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMsCi0J CQkJZW51bSBicHR5cGUgdHlwZSkKKwkJCQllbnVtIGJwdHlwZSB0eXBlLCBp bnQgbm9zdG9wKQogewogICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsK IApAQCAtNzEzNiw3ICs3MTQ3LDE2IEBAIHNldF9tb21lbnRhcnlfYnJlYWtw b2ludF9hdF9wYyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQURE UiBwYywKICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHBjKTsK ICAgc2FsLmV4cGxpY2l0X3BjID0gMTsKIAotICByZXR1cm4gc2V0X21vbWVu dGFyeV9icmVha3BvaW50IChnZGJhcmNoLCBzYWwsIG51bGxfZnJhbWVfaWQs IHR5cGUpOworICByZXR1cm4gc2V0X21vbWVudGFyeV9icmVha3BvaW50IChn ZGJhcmNoLCBzYWwsIG51bGxfZnJhbWVfaWQsIHR5cGUsIG5vc3RvcCk7Cit9 CisKKy8qIFJldHVybiAxIGlmIHRoZSBtb21lbnRhcnkgYnJlYWtwb2ludCBC UCB3YXMgY3JlYXRlZCB3aXRoIHRoZSBOT1NUT1AKKyAgIGZsYWcuICAqLwor CitpbnQKK21vbWVudGFyeV9icmVha3BvaW50X2lzX25vc3RvcCAoc3RydWN0 IGJyZWFrcG9pbnQgKmJwKQoreworICByZXR1cm4gYnAtPm9wcyA9PSAmbW9t ZW50YXJ5X25vc3RvcF9icmVha3BvaW50X29wczsKIH0KIAwKIApAQCAtOTU0 OSwxMyArOTU2OSwxNCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAgIC8qIElmIHRo ZSB1c2VyIHRvbGQgdXMgdG8gY29udGludWUgdW50aWwgYSBzcGVjaWZpZWQg bG9jYXRpb24sCiAgICAgICAgd2UgZG9uJ3Qgc3BlY2lmeSBhIGZyYW1lIGF0 IHdoaWNoIHdlIG5lZWQgdG8gc3RvcC4gICovCiAgICAgYnJlYWtwb2ludCA9 IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludCAoZ2V0X2ZyYW1lX2FyY2ggKGZy YW1lKSwgc2FsLAotCQkJCQkgICBudWxsX2ZyYW1lX2lkLCBicF91bnRpbCk7 CisJCQkJCSAgIG51bGxfZnJhbWVfaWQsIGJwX3VudGlsLAorCQkJCQkgICAv KiBub3N0b3AgKi8gMCk7CiAgIGVsc2UKICAgICAvKiBPdGhlcndpc2UsIHNw ZWNpZnkgdGhlIHNlbGVjdGVkIGZyYW1lLCBiZWNhdXNlIHdlIHdhbnQgdG8g c3RvcAogICAgICAgIG9ubHkgYXQgdGhlIHZlcnkgc2FtZSBmcmFtZS4gICov CiAgICAgYnJlYWtwb2ludCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludCAo Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwgc2FsLAogCQkJCQkgICBnZXRfc3Rh Y2tfZnJhbWVfaWQgKGZyYW1lKSwKLQkJCQkJICAgYnBfdW50aWwpOworCQkJ CQkgICBicF91bnRpbCwgLyogbm9zdG9wICovIDApOwogCiAgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2lu dCk7CiAKQEAgLTk1NzIsMTAgKzk1OTMsMTEgQEAgdW50aWxfYnJlYWtfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkK ICAgICAgIGJyZWFrcG9pbnQyID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50 IChmcmFtZV91bndpbmRfY2FsbGVyX2FyY2ggKGZyYW1lKSwKIAkJCQkJICAg ICAgc2FsLAogCQkJCQkgICAgICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChm cmFtZSksCi0JCQkJCSAgICAgIGJwX3VudGlsKTsKKwkJCQkJICAgICAgYnBf dW50aWwsIC8qIG5vc3RvcCAqLyAwKTsKICAgICAgIG1ha2VfY2xlYW51cF9k ZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludDIpOwogCi0gICAgICBzZXRf bG9uZ2ptcF9icmVha3BvaW50ICh0cCwgZnJhbWVfdW53aW5kX2NhbGxlcl9p ZCAoZnJhbWUpKTsKKyAgICAgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRw LCBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBub3N0b3AgKi8gMCk7CiAgICAgICBt YWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51 cCwgJnRocmVhZCk7CiAgICAgfQogCkBAIC0xMTE3NiwxMSArMTExOTgsMTkg QEAgbW9tZW50YXJ5X2JrcHRfcmVfc2V0IChzdHJ1Y3QgYnJlYWtwb2ludCAq YikKIH0KIAogc3RhdGljIHZvaWQKLW1vbWVudGFyeV9ia3B0X2NoZWNrX3N0 YXR1cyAoYnBzdGF0IGJzKQorbW9tZW50YXJ5X3N0b3BfYmtwdF9jaGVja19z dGF0dXMgKGJwc3RhdCBicykKIHsKICAgLyogTm90aGluZy4gIFRoZSBwb2lu dCBvZiB0aGVzZSBicmVha3BvaW50cyBpcyBjYXVzaW5nIGEgc3RvcC4gICov CiB9CiAKK3N0YXRpYyB2b2lkCittb21lbnRhcnlfbm9zdG9wX2JrcHRfY2hl Y2tfc3RhdHVzIChicHN0YXQgYnMpCit7CisgIC8qIERvbid0IHN0b3AsIGp1 c3QgdHJpZ2dlciBpbnRlcm5hbCBtZWNoYW5pc21zLiAgKi8KKyAgYnMtPnN0 b3AgPSAwOworICBicy0+cHJpbnQgPSAwOworfQorCiBzdGF0aWMgZW51bSBw cmludF9zdG9wX2FjdGlvbgogbW9tZW50YXJ5X2JrcHRfcHJpbnRfaXQgKGJw c3RhdCBicykKIHsKQEAgLTEzNDgwLDEwICsxMzUxMCwxNCBAQCBpbml0aWFs aXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQogICBvcHMgPSAmbW9tZW50YXJ5 X2JyZWFrcG9pbnRfb3BzOwogICAqb3BzID0gYmtwdF9iYXNlX2JyZWFrcG9p bnRfb3BzOwogICBvcHMtPnJlX3NldCA9IG1vbWVudGFyeV9ia3B0X3JlX3Nl dDsKLSAgb3BzLT5jaGVja19zdGF0dXMgPSBtb21lbnRhcnlfYmtwdF9jaGVj a19zdGF0dXM7CisgIG9wcy0+Y2hlY2tfc3RhdHVzID0gbW9tZW50YXJ5X3N0 b3BfYmtwdF9jaGVja19zdGF0dXM7CiAgIG9wcy0+cHJpbnRfaXQgPSBtb21l bnRhcnlfYmtwdF9wcmludF9pdDsKICAgb3BzLT5wcmludF9tZW50aW9uID0g bW9tZW50YXJ5X2JrcHRfcHJpbnRfbWVudGlvbjsKIAorICBvcHMgPSAmbW9t ZW50YXJ5X25vc3RvcF9icmVha3BvaW50X29wczsKKyAgKm9wcyA9IG1vbWVu dGFyeV9icmVha3BvaW50X29wczsKKyAgb3BzLT5jaGVja19zdGF0dXMgPSBt b21lbnRhcnlfbm9zdG9wX2JrcHRfY2hlY2tfc3RhdHVzOworCiAgIC8qIEdO VSB2MyBleGNlcHRpb24gY2F0Y2hwb2ludHMuICAqLwogICBvcHMgPSAmZ251 X3YzX2V4Y2VwdGlvbl9jYXRjaHBvaW50X29wczsKICAgKm9wcyA9IGJrcHRf YnJlYWtwb2ludF9vcHM7CmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5o IGIvZ2RiL2JyZWFrcG9pbnQuaAppbmRleCBjMWQzYmU5Li4xYjZjYWJkIDEw MDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dkYi9icmVha3Bv aW50LmgKQEAgLTgzNiw2ICs4MzYsMTEgQEAgc3RydWN0IGJwc3RhdF93aGF0 CiAgICAgICAgQlBTVEFUX1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUUuICBU cnVlIGlmIHdlIGFyZSBoYW5kbGluZyBhCiAgICAgICAgbG9uZ2ptcCwgZmFs c2UgaWYgd2UgYXJlIGhhbmRsaW5nIGFuIGV4Y2VwdGlvbi4gICovCiAgICAg aW50IGlzX2xvbmdqbXA7CisKKyAgICAvKiBVc2VkIGZvciBCUFNUQVRfV0hB VF9TRVRfTE9OR0pNUF9SRVNVTUUgYW5kCisgICAgICAgQlBTVEFUX1dIQVRf Q0xFQVJfTE9OR0pNUF9SRVNVTUUuICBUcnVlIGlmIHdlIGFyZSBoYW5kbGlu ZyBhCisgICAgICAgbm9zdG9wIG1vbWVudGFyeSBicmVha3BvaW50LiAgKi8K KyAgICBpbnQgaXNfbm9zdG9wOwogICB9OwogCiAvKiBUaGUgcG9zc2libGUg cmV0dXJuIHZhbHVlcyBmb3IgcHJpbnRfYnBzdGF0LCBwcmludF9pdF9ub3Jt YWwsCkBAIC0xMDI5LDEzICsxMDM0LDE1IEBAIGV4dGVybiB2b2lkIGJyZWFr cG9pbnRfcmVfc2V0ICh2b2lkKTsKIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRf cmVfc2V0X3RocmVhZCAoc3RydWN0IGJyZWFrcG9pbnQgKik7CiAKIGV4dGVy biBzdHJ1Y3QgYnJlYWtwb2ludCAqc2V0X21vbWVudGFyeV9icmVha3BvaW50 Ci0gIChzdHJ1Y3QgZ2RiYXJjaCAqLCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5l LCBzdHJ1Y3QgZnJhbWVfaWQsIGVudW0gYnB0eXBlKTsKKyAgKHN0cnVjdCBn ZGJhcmNoICosIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUsIHN0cnVjdCBmcmFt ZV9pZCwgZW51bSBicHR5cGUsCisgICBpbnQgbm9zdG9wKTsKIAogZXh0ZXJu IHN0cnVjdCBicmVha3BvaW50ICpzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRf YXRfcGMKLSAgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUiBwYywgZW51 bSBicHR5cGUgdHlwZSk7CisgIChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FE RFIgcGMsIGVudW0gYnB0eXBlIHR5cGUsIGludCBub3N0b3ApOwogCiBleHRl cm4gc3RydWN0IGJyZWFrcG9pbnQgKmNsb25lX21vbWVudGFyeV9icmVha3Bv aW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnBrdCk7CiAKK2V4dGVybiBpbnQg bW9tZW50YXJ5X2JyZWFrcG9pbnRfaXNfbm9zdG9wIChzdHJ1Y3QgYnJlYWtw b2ludCAqYnApOwogZXh0ZXJuIHZvaWQgc2V0X2lnbm9yZV9jb3VudCAoaW50 LCBpbnQsIGludCk7CiAKIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5pdF9p bmZlcmlvciAoZW51bSBpbmZfY29udGV4dCk7CkBAIC0xMTYzLDcgKzExNzAs NyBAQCBleHRlcm4gaW50IGRldGFjaF9icmVha3BvaW50cyAoaW50KTsKIGV4 dGVybiB2b2lkIGJyZWFrcG9pbnRfcHJvZ3JhbV9zcGFjZV9leGl0IChzdHJ1 Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKIAogZXh0ZXJuIHZvaWQgc2V0 X2xvbmdqbXBfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwK LQkJCQkgICAgc3RydWN0IGZyYW1lX2lkIGZyYW1lKTsKKwkJCQkgICAgc3Ry dWN0IGZyYW1lX2lkIGZyYW1lLCBpbnQgbm9zdG9wKTsKIGV4dGVybiB2b2lk IGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpOwogCiBl eHRlcm4gdm9pZCBlbmFibGVfb3ZlcmxheV9icmVha3BvaW50cyAodm9pZCk7 CmRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwpp bmRleCBkZGFlMDk5Li42MzE1MzIzIDEwMDY0NAotLS0gYS9nZGIvZWxmcmVh ZC5jCisrKyBiL2dkYi9lbGZyZWFkLmMKQEAgLTk5Myw3ICs5OTMsOCBAQCBl bGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50 ICpiKQogICAgICAgc2FsLmV4cGxpY2l0X3BjID0gMTsKICAgICAgIGJfcmV0 dXJuID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50IChnZXRfZnJhbWVfYXJj aCAocHJldl9mcmFtZSksIHNhbCwKIAkJCQkJICAgcHJldl9mcmFtZV9pZCwK LQkJCQkJICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7CisJCQkJ CSAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sCisJCQkJCSAgIC8q IG5vc3RvcCAqLyAwKTsKIAogICAgICAgLyogQWRkIG5ldyBiX3JldHVybiB0 byB0aGUgcmluZyBsaXN0IGItPnJlbGF0ZWRfYnJlYWtwb2ludC4gICovCiAg ICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+cmVsYXRlZF9icmVha3BvaW50 ID09IGJfcmV0dXJuKTsKZGlmZiAtLWdpdCBhL2dkYi9pbmZjYWxsLmMgYi9n ZGIvaW5mY2FsbC5jCmluZGV4IDlhZjU2YmEuLmNjYTEzYjIgMTAwNjQ0Ci0t LSBhL2dkYi9pbmZjYWxsLmMKKysrIGIvZ2RiL2luZmNhbGwuYwpAQCAtNzgy LDcgKzc4Miw4IEBAIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoc3RydWN0IHZh bHVlICpmdW5jdGlvbiwgaW50IG5hcmdzLCBzdHJ1Y3QgdmFsdWUgKiphcmdz KQogICAgIC8qIFNhbml0eS4gIFRoZSBleGFjdCBzYW1lIFNQIHZhbHVlIGlz IHJldHVybmVkIGJ5CiAgICAgICAgUFVTSF9EVU1NWV9DQUxMLCBzYXZlZCBh cyB0aGUgZHVtbXktZnJhbWUgVE9TLCBhbmQgdXNlZCBieQogICAgICAgIGR1 bW15X2lkIHRvIGZvcm0gdGhlIGZyYW1lIElEJ3Mgc3RhY2sgYWRkcmVzcy4g ICovCi0gICAgYnB0ID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50IChnZGJh cmNoLCBzYWwsIGR1bW15X2lkLCBicF9jYWxsX2R1bW15KTsKKyAgICBicHQg PSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHNhbCwgZHVt bXlfaWQsIGJwX2NhbGxfZHVtbXksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBub3N0b3AgKi8gMCk7CiAgICAgYnB0LT5kaXNw b3NpdGlvbiA9IGRpc3BfZGVsOwogICB9CiAKZGlmZiAtLWdpdCBhL2dkYi9p bmZjbWQuYyBiL2dkYi9pbmZjbWQuYwppbmRleCA3NWRjNTViLi41YzhjOWYy IDEwMDY0NAotLS0gYS9nZGIvaW5mY21kLmMKKysrIGIvZ2RiL2luZmNtZC5j CkBAIC04ODksNyArODg5LDggQEAgc3RlcF8xIChpbnQgc2tpcF9zdWJyb3V0 aW5lcywgaW50IHNpbmdsZV9pbnN0LCBjaGFyICpjb3VudF9zdHJpbmcpCiAg ICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQogIAl0 aHJlYWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKTsKIAot ICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodHAsIGdldF9mcmFtZV9p ZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKTsKKyAgICAgIHNldF9sb25nam1w X2JyZWFrcG9pbnQgKHRwLCBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2Zy YW1lICgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5v c3RvcCAqLyAwKTsKIAogICAgICAgbWFrZV9jbGVhbnVwIChkZWxldGVfbG9u Z2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwogICAgIH0KQEAg LTEzMjcsNyArMTMyOCw3IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50IGZy b21fdHR5KQogCiAgIHRwLT5zdGVwX211bHRpID0gMDsJCS8qIE9ubHkgb25l IGNhbGwgdG8gcHJvY2VlZCAqLwogCi0gIHNldF9sb25nam1wX2JyZWFrcG9p bnQgKHRwLCBnZXRfZnJhbWVfaWQgKGZyYW1lKSk7CisgIHNldF9sb25nam1w X2JyZWFrcG9pbnQgKHRwLCBnZXRfZnJhbWVfaWQgKGZyYW1lKSwgLyogbm9z dG9wICovIDApOwogICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0 ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiAKICAg cHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdFVF9TSUdOQUxfREVGQVVM VCwgMSk7CkBAIC0xNjQ5LDExICsxNjUwLDExIEBAIGZpbmlzaF9mb3J3YXJk IChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQogCiAgIGJyZWFrcG9pbnQgPSBzZXRfbW9tZW50YXJ5X2JyZWFr cG9pbnQgKGdkYmFyY2gsIHNhbCwKIAkJCQkJIGdldF9zdGFja19mcmFtZV9p ZCAoZnJhbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicF9maW5pc2gpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicF9maW5pc2gsIC8qIG5vc3RvcCAqLyAwKTsK IAogICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9p bnQgKGJyZWFrcG9pbnQpOwogCi0gIHNldF9sb25nam1wX2JyZWFrcG9pbnQg KHRwLCBnZXRfZnJhbWVfaWQgKGZyYW1lKSk7CisgIHNldF9sb25nam1wX2Jy ZWFrcG9pbnQgKHRwLCBnZXRfZnJhbWVfaWQgKGZyYW1lKSwgLyogZnJvbV9w eSovIDApOwogICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFr cG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiAKICAgLyogV2Ugd2FudCBzdG9w X3JlZ2lzdGVycywgcGxlYXNlLi4uICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL2lu ZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCmluZGV4IDI0ZDI3MjAuLmRiZTA2MmEg MTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4uYworKysgYi9nZGIvaW5mcnVuLmMK QEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJjb250aW51YXRpb25zLmgi CiAjaW5jbHVkZSAiaW50ZXJwcy5oIgogI2luY2x1ZGUgInNraXAuaCIKKyNp bmNsdWRlICJweXRob24vcHl0aG9uLmgiCiAKIC8qIFByb3RvdHlwZXMgZm9y IGxvY2FsIGZ1bmN0aW9ucyAqLwogCkBAIC0xMDQsNyArMTA1LDggQEAgc3Rh dGljIHZvaWQgaW5zZXJ0X2hwX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRf ZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICopOwogCiBzdGF0aWMgdm9pZCBp bnNlcnRfc3RlcF9yZXN1bWVfYnJlYWtwb2ludF9hdF9jYWxsZXIgKHN0cnVj dCBmcmFtZV9pbmZvICopOwogCi1zdGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2pt cF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9B RERSKTsKK3N0YXRpYyB2b2lkIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVh a3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KTsK IAogLyogV2hlbiBzZXQsIHN0b3AgdGhlICdzdGVwJyBjb21tYW5kIGlmIHdl IGVudGVyIGEgZnVuY3Rpb24gd2hpY2ggaGFzCiAgICBubyBsaW5lIG51bWJl ciBpbmZvcm1hdGlvbi4gIFRoZSBub3JtYWwgYmVoYXZpb3IgaXMgdGhhdCB3 ZSBzdGVwCkBAIC0yMzc5LDcgKzIzODEsOCBAQCBzdGF0aWMgdm9pZCBoYW5k bGVfc3RlcF9pbnRvX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKIHN0YXRpYyB2b2lkIGhhbmRsZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFj a3dhcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogCQkJCQkJc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwogc3RhdGljIHZvaWQg Y2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICosCi0JCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICosIHN0 cnVjdCBzeW1ib2wgKik7CisJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICos IHN0cnVjdCBzeW1ib2wgKiwKKwkJCQkgICAgaW50IG5vc3RvcCk7CiAKIHN0 YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKTsKIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9fd2Fp dCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwpAQCAt NDM4OCw2ICs0MzkxLDcgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAg IHsKICAgICBDT1JFX0FERFIgam1wX2J1Zl9wYzsKICAgICBzdHJ1Y3QgYnBz dGF0X3doYXQgd2hhdDsKKyAgICBpbnQgbm9zdG9wOwogCiAgICAgd2hhdCA9 IGJwc3RhdF93aGF0IChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdG9w X2Jwc3RhdCk7CiAKQEAgLTQ0MzQsMTQgKzQ0MzgsMTUgQEAgcHJvY2Vzc19l dmVudF9zdG9wX3Rlc3Q6CiAJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVh a3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CiAKIAkgICAgLyogSW5zZXJ0 IGEgYnJlYWtwb2ludCBhdCByZXN1bWUgYWRkcmVzcy4gICovCi0JICAgIGlu c2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBf YnVmX3BjKTsKKwkgICAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9p bnQgKGdkYmFyY2gsIGptcF9idWZfcGMsCisJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3aGF0LmlzX25vc3RvcCk7CiAJICB9CiAJ ZWxzZQogCSAgewogCSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jID0gZ2V0X2Zy YW1lX2Z1bmN0aW9uIChmcmFtZSk7CiAKIAkgICAgaWYgKGZ1bmMpCi0JICAg ICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwgZnVuYyk7 CisJICAgICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwg ZnVuYywgd2hhdC5pc19ub3N0b3ApOwogCSAgfQogCWtlZXBfZ29pbmcgKGVj cyk7CiAJcmV0dXJuOwpAQCAtNDQ1NSw2ICs0NDYwLDggQEAgcHJvY2Vzc19l dmVudF9zdG9wX3Rlc3Q6CiAJICB7CiAJICAgIGdkYl9hc3NlcnQgKGVjcy0+ ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQK IAkJCSE9IE5VTEwpOworCSAgICBub3N0b3AgPSBtb21lbnRhcnlfYnJlYWtw b2ludF9pc19ub3N0b3AgKAorCSAgICAgICAgZWNzLT5ldmVudF90aHJlYWQt PmNvbnRyb2wuc3RlcF9yZXN1bWVfYnJlYWtwb2ludCk7CiAJICAgIGRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7 CiAJICB9CiAJZWxzZQpAQCAtNDQ3Niw2ICs0NDgzLDggQEAgcHJvY2Vzc19l dmVudF9zdG9wX3Rlc3Q6CiAKIAkgICAgZ2RiX2Fzc2VydCAoZWNzLT5ldmVu dF90aHJlYWQtPmNvbnRyb2wuZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 CiAJCQkhPSBOVUxMKTsKKwkgICAgbm9zdG9wID0gbW9tZW50YXJ5X2JyZWFr cG9pbnRfaXNfbm9zdG9wICgKKwkgICAgICAgICAgICAgIGVjcy0+ZXZlbnRf dGhyZWFkLT5jb250cm9sLmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCk7 CiAJICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKGVj cy0+ZXZlbnRfdGhyZWFkKTsKIAogCSAgICBpZiAoaW5pdF9mcmFtZSkKQEAg LTQ1MDAsNiArNDUwOSwxMiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoK IAkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZl bnRfdGhyZWFkKTsKIAkgIH0KIAorICAgICAgICAvKiBOb3RpZnkgUHl0aG9u IHRoYXQgYW4gZXhjZXB0aW9uL2xvbmdqbXAgb2NjdXJlZC4gICovCisgICAg ICAgIGdkYnB5X2JwZmluaXNoX2hhbmRsZV9leGNlcHRpb24gKCk7CisKKyAg ICAgICAgaWYgKG5vc3RvcCkKKyAgICAgICAgICBicmVhazsKKwogCWVjcy0+ ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0b3Bfc3RlcCA9IDE7CiAJcHJpbnRf ZW5kX3N0ZXBwaW5nX3JhbmdlX3JlYXNvbiAoKTsKIAlzdG9wX3N0ZXBwaW5n IChlY3MpOwpAQCAtNTM4NSw3ICs1NDAwLDggQEAgaW5zZXJ0X3N0ZXBfcmVz dW1lX2JyZWFrcG9pbnRfYXRfc2FsXzEgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAogCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHNyX3NhbC5wYykpOwogCiAg IGluZmVyaW9yX3RocmVhZCAoKS0+Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVh a3BvaW50Ci0gICAgPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGdkYmFy Y2gsIHNyX3NhbCwgc3JfaWQsIHNyX3R5cGUpOworICAgID0gc2V0X21vbWVu dGFyeV9icmVha3BvaW50IChnZGJhcmNoLCBzcl9zYWwsIHNyX2lkLCBzcl90 eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3N0 b3AgKi8gMCk7CiB9CiAKIHZvaWQKQEAgLTU0NjYsNyArNTQ4Miw4IEBAIGlu c2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X2NhbGxlciAoc3RydWN0 IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCiAgICAic3RlcC1yZXN1bWUiIGJy ZWFrcG9pbnRzLiAgKi8KIAogc3RhdGljIHZvaWQKLWluc2VydF9sb25nam1w X3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIHBjKQoraW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9p bnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vc3RvcCkK IHsKICAgLyogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhbiBvbmUg c3RlcC1yZXN1bWUgb3IgbG9uZ2ptcC1yZXN1bWUKICAgICAgYnJlYWtwb2lu dCBwZXIgdGhyZWFkLCBzbyB3ZSBzaG91bGQgbmV2ZXIgYmUgc2V0dGluZyBh IG5ldwpAQCAtNTQ3OSwyMCArNTQ5NiwyMyBAQCBpbnNlcnRfbG9uZ2ptcF9y ZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBwYykKIAkJCXBhZGRyZXNzIChnZGJhcmNoLCBwYykpOwogCiAg IGluZmVyaW9yX3RocmVhZCAoKS0+Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVh a3BvaW50ID0KLSAgICBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMg KGdkYmFyY2gsIHBjLCBicF9sb25nam1wX3Jlc3VtZSk7CisgICAgc2V0X21v bWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9u Z2ptcF9yZXN1bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBub3N0b3ApOwogfQogCiAvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJl c3VtZSBicmVha3BvaW50LiAgVFAgaXMgdGhlIHRocmVhZCB0aHJvd2luZwog ICAgdGhlIGV4Y2VwdGlvbi4gIFRoZSBibG9jayBCIGlzIHRoZSBibG9jayBv ZiB0aGUgdW53aW5kZXIgZGVidWcgaG9vawogICAgZnVuY3Rpb24uICBGUkFN RSBpcyB0aGUgZnJhbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCB0byB0 aGlzCiAgICBmdW5jdGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBm dW5jdGlvbiBhcmd1bWVudCBob2xkaW5nIHRoZQotICAgdGFyZ2V0IFBDIG9m IHRoZSBleGNlcHRpb24uICAqLworICAgdGFyZ2V0IFBDIG9mIHRoZSBleGNl cHRpb24uICBUaGUgYnJlYWtwb2ludCB3aWxsIG5vdCBzdG9wIHRoZSBleGVj dXRpb24KKyAgIGlmIHRoZSBmbGFnIE5PU1RPUCBpcyBzZXQuICAqLwogCiBz dGF0aWMgdm9pZAogaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKIAkJCQkgICAgc3RydWN0IGJs b2NrICpiLAogCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0J CQkJICAgIHN0cnVjdCBzeW1ib2wgKnN5bSkKKwkJCQkgICAgc3RydWN0IHN5 bWJvbCAqc3ltLAorCQkJCSAgICBpbnQgbm9zdG9wKQogewogICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwogCkBAIC01NTE3LDcgKzU1Mzcs OCBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwLAogCQkJCSh1bnNpZ25lZCBsb25nKSBoYW5k bGVyKTsKIAogCSAgYnAgPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRf cGMgKGdldF9mcmFtZV9hcmNoIChmcmFtZSksCi0JCQkJCSAgICAgICBoYW5k bGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKKwkJCQkJICAgICAgIGhhbmRs ZXIsIGJwX2V4Y2VwdGlvbl9yZXN1bWUsCisJCQkJCSAgICAgICBub3N0b3Ap OwogCSAgYnAtPnRocmVhZCA9IHRwLT5udW07CiAJICBpbmZlcmlvcl90aHJl YWQgKCktPmNvbnRyb2wuZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0g YnA7CiAJfQpAQCAtNTUzMCw3ICs1NTUxLDggQEAgaW5zZXJ0X2V4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwK IAogc3RhdGljIHZvaWQKIGNoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKHN0cnVj dCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzLAotCQkJc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLCBzdHJ1Y3Qgc3ltYm9sICpmdW5jKQorCQkJc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lLCBzdHJ1Y3Qgc3ltYm9sICpmdW5jLAor CQkJaW50IG5vc3RvcCkKIHsKICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZTsKIApAQCAtNTU2Niw3ICs1NTg4LDcgQEAgY2hlY2tfZXhjZXB0 aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICpl Y3MsCiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBpbnNlcnRfZXhjZXB0aW9u X3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKLQkJCQkJ CSAgYiwgZnJhbWUsIHN5bSk7CisJCQkJCQkgIGIsIGZyYW1lLCBzeW0sIG5v c3RvcCk7CiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAl9CmRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL3B5LWZpbmlzaGJyZWFrcG9pbnQuYyBiL2dkYi9weXRo b24vcHktZmluaXNoYnJlYWtwb2ludC5jCmluZGV4IGJmYmY5YzMuLjYyMWEx NTUgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktZmluaXNoYnJlYWtwb2lu dC5jCisrKyBiL2dkYi9weXRob24vcHktZmluaXNoYnJlYWtwb2ludC5jCkBA IC0yOTgsNiArMjk4LDEwIEBAIGJwZmluaXNocHlfaW5pdCAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogICAv KiBCaW5kIHRoZSBicmVha3BvaW50IHdpdGggdGhlIGN1cnJlbnQgcHJvZ3Jh bSBzcGFjZS4gICovCiAgIHNlbGZfYnBmaW5pc2gtPnB5X2JwLmJwLT5wc3Bh Y2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7CiAKKyAgLyogU2V0IGEgd2F0 Y2hkb2cgb24gbG9uZ2ptcC9leGNlcHRpb24uICBJdCB3aWxsIHRyaWdnZXIK KyAgICBgZ2RicHlfYnBmaW5pc2hfaGFuZGxlX2V4Y2VwdGlvbicgaWYgbmVj ZXNzYXJ5LiAgKi8KKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW5mZXJp b3JfdGhyZWFkICgpLCBmcmFtZV9pZCwgLyogbm9zdG9wICovIDEpOworCiAg IHJldHVybiAwOwogICAKICBpbnZhbGlkX2ZyYW1lOgpAQCAtMzI3LDQ1ICsz MzEsNzQgQEAgYnBmaW5pc2hweV9vdXRfb2Zfc2NvcGUgKHN0cnVjdCBmaW5p c2hfYnJlYWtwb2ludF9vYmplY3QgKmJwZmluaXNoX29iaikKICAgZGVsZXRl X2JyZWFrcG9pbnQgKGJwZmluaXNoX29iai0+cHlfYnAuYnApOwogfQogCi0v KiBDYWxsYmFjayBmb3IgYGJwZmluaXNocHlfZGV0ZWN0X291dF9zY29wZScu ICBUcmlnZ2VycyBQeXRob24ncwotICAgYEItPm91dF9vZl9zY29wZScgZnVu Y3Rpb24gaWYgQiBpcyBhIEZpbmlzaEJyZWFrcG9pbnQgb3V0IG9mIGl0cyBz Y29wZS4gICovCisvKiBUcmlnZ2VycyBQeXRob24ncyBgQi0+b3V0X29mX3Nj b3BlJyBmdW5jdGlvbiBpZiBCIGlzIGEgRmluaXNoQnJlYWtwb2ludAorICAg b3V0IG9mIGl0cyBzY29wZS4gIElmIElOQ19DVVJSRU5UIGlzIHNldCwgYmVp bmcgb24gdGhlIGluaXRpYWwgZnJhbWUgd2lsbAorICAgdHJpZ2dlciB0aGUg Y2FsbGJhY2sgYXMgd2VsbC4gICovCiAKIHN0YXRpYyBpbnQKLWJwZmluaXNo cHlfZGV0ZWN0X291dF9zY29wZV9jYiAoc3RydWN0IGJyZWFrcG9pbnQgKmIs IHZvaWQgKmFyZ3MpCiticGZpbmlzaHB5X2RldGVjdF9vdXRfc2NvcGUgKHN0 cnVjdCBicmVha3BvaW50ICpiLCBpbnQgaW5jX2N1cnJlbnQpCiB7CiAgIHZv bGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSAgc3RydWN0 IGJyZWFrcG9pbnQgKmJwX3N0b3BwZWQgPSAoc3RydWN0IGJyZWFrcG9pbnQg KikgYXJnczsKLSAgUHlPYmplY3QgKnB5X2JwID0gKFB5T2JqZWN0ICopIGIt PnB5X2JwX29iamVjdDsKKyAgc3RydWN0IGZpbmlzaF9icmVha3BvaW50X29i amVjdCAqZmluaXNoX2JwID0KKyAgICAgIChzdHJ1Y3QgZmluaXNoX2JyZWFr cG9pbnRfb2JqZWN0ICopIGItPnB5X2JwX29iamVjdDsKICAgc3RydWN0IGdk YmFyY2ggKmdhcmNoID0gYi0+Z2RiYXJjaCA/IGItPmdkYmFyY2ggOiBnZXRf Y3VycmVudF9hcmNoICgpOwogICAKLSAgLyogVHJpZ2dlciBvdXRfb2Zfc2Nv cGUgaWYgdGhpcyBpcyBhIEZpbmlzaEJyZWFrcG9pbnQgYW5kIGl0cyBmcmFt ZSBpcwotICAgICBub3QgYW55bW9yZSBpbiB0aGUgY3VycmVudCBjYWxsc3Rh Y2suICAqLwotICBpZiAocHlfYnAgIT0gTlVMTCAmJiBiLT5weV9icF9vYmpl Y3QtPmlzX2ZpbmlzaF9icCkKKyAgLyogRW5zdXJlIHRoYXQgQiBpcyBhIEZp bmlzaEJyZWFrcG9pbnQgYW5kIHdlJ3JlIHN0b3BwZWQgaW4gaXRzIGluZmVy aW9yLiAgKi8KKyAgaWYgKGZpbmlzaF9icCAhPSBOVUxMICYmIGZpbmlzaF9i cC0+cHlfYnAuaXNfZmluaXNoX2JwCisgICAgICAmJiBiLT5wc3BhY2UgPT0g Y3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlKQogICAgIHsKLSAgICAgIHN0 cnVjdCBmaW5pc2hfYnJlYWtwb2ludF9vYmplY3QgKmZpbmlzaF9icCA9Ci0g ICAgICAgICAgKHN0cnVjdCBmaW5pc2hfYnJlYWtwb2ludF9vYmplY3QgKikg cHlfYnA7Ci0KLSAgICAgIC8qIENoZWNrIHNjb3BlIGlmIG5vdCBjdXJyZW50 bHkgc3RvcHBlZCBhdCB0aGUgRmluaXNoQnJlYWtwb2ludC4gICovCi0gICAg ICBpZiAoYiAhPSBicF9zdG9wcGVkKQorICAgICAgVFJZX0NBVENIIChleGNl cHQsIFJFVFVSTl9NQVNLX0FMTCkKICAgICAgICAgewotICAgICAgICAgIFRS WV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0gICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9p bmZlcmlvciAoKS0+cHNwYWNlCi0gICAgICAgICAgICAgICAgICAmJiAoIXRh cmdldF9oYXNfcmVnaXN0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgfHwg ZnJhbWVfZmluZF9ieV9pZCAoYi0+ZnJhbWVfaWQpID09IE5VTEwpKQotICAg ICAgICAgICAgICAgIGJwZmluaXNocHlfb3V0X29mX3Njb3BlIChmaW5pc2hf YnApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGlmIChleGNlcHQucmVh c29uIDwgMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgZ2RicHlf Y29udmVydF9leGNlcHRpb24gKGV4Y2VwdCk7Ci0gICAgICAgICAgICAgIGdk YnB5X3ByaW50X3N0YWNrICgpOwotICAgICAgICAgICAgfQorICAgICAgICAg IC8qIFRyaWdnZXIgdGhlIGNhbGxiYWNrIGlmIHRoZSBpbml0aWFsIGZyYW1l IG5vIGxvbmdlciBleGlzdHMgb3IsCisgICAgICAgICAgIGlmIElOQ19DVVJS RU5UIGlzIHNldCwgaWYgd2UncmUgYmFjayBvbiB0aGUgaW5pdGlhbCBmcmFt ZSwgb3IgaWYKKyAgICAgICAgICAgdGhlIGluZmVyaW9yIG5vIGxvbmdlciBl eGlzdHMuICAqLworICAgICAgICAgIGludCBpc19jdXJyZW50ID0gMDsKKwor ICAgICAgICAgIGlmIChpbmNfY3VycmVudCAmJiB0YXJnZXRfaGFzX3JlZ2lz dGVycykKKyAgICAgICAgICAgIGlzX2N1cnJlbnQgPSBmcmFtZV9pZF9lcSAo Z2V0X2ZyYW1lX2lkIChnZXRfY3VycmVudF9mcmFtZSAoKSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGItPmZyYW1lX2lkKTsK KworICAgICAgICAgIGlmICghdGFyZ2V0X2hhc19yZWdpc3RlcnMKKyAgICAg ICAgICAgICAgfHwgZnJhbWVfZmluZF9ieV9pZCAoYi0+ZnJhbWVfaWQpID09 IE5VTEwKKyAgICAgICAgICAgICAgfHwgaXNfY3VycmVudCkKKyAgICAgICAg ICAgIGJwZmluaXNocHlfb3V0X29mX3Njb3BlIChmaW5pc2hfYnApOworICAg ICAgICB9CisgICAgICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCisgICAgICAg IHsKKyAgICAgICAgICBnZGJweV9jb252ZXJ0X2V4Y2VwdGlvbiAoZXhjZXB0 KTsKKyAgICAgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKICAgICAgICAg fQogICAgIH0KIAogICByZXR1cm4gMDsKIH0KIAorLyogQ2FsbGJhY2sgZm9y IGJwZmluaXNocHlfaGFuZGxlX3N0b3AuICBDaGVjayBzY29wZSBvZiBCIGlm IG5vdAorICAgY3VycmVudGx5IHN0b3BwZWQgb24gaXQuICAqLworCitzdGF0 aWMgaW50CiticGZpbmlzaHB5X2RldGVjdF9vdXRfc2NvcGVfYnBfY2IgKHN0 cnVjdCBicmVha3BvaW50ICpiLCB2b2lkICphcmdzKQoreworICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYnBfc3RvcHBlZCA9IChzdHJ1Y3QgYnJlYWtwb2ludCAq KSBhcmdzOworCisgIGlmIChicF9zdG9wcGVkICE9IGIpCisgICAgYnBmaW5p c2hweV9kZXRlY3Rfb3V0X3Njb3BlIChiLCAwKTsKKworICByZXR1cm4gMDsK K30KKworLyogQ2FsbGJhY2sgZm9yIGJwZmluaXNocHlfaGFuZGxlX2V4Y2Vw dGlvbi4gIEZvcmNlIG91dF9vZl9zY29wZSBpZiBzdG9wcGVkCisgICBpbiB0 aGUgaW5pdGlhbCBmcmFtZS4gICovCisKK3N0YXRpYyBpbnQKK2JwZmluaXNo cHlfZGV0ZWN0X291dF9zY29wZV9leGNlcHRpb25fY2IgKHN0cnVjdCBicmVh a3BvaW50ICpiLCB2b2lkICphcmdzKQoreworICBicGZpbmlzaHB5X2RldGVj dF9vdXRfc2NvcGUgKGIsIDEpOworCisgIHJldHVybiAwOworfQorCisKIC8q IEF0dGFjaGVkIHRvIGBzdG9wJyBub3RpZmljYXRpb25zLCBjaGVjayBpZiB0 aGUgZXhlY3V0aW9uIGhhcyBydW4KICAgIG91dCBvZiB0aGUgc2NvcGUgb2Yg YW55IEZpbmlzaEJyZWFrcG9pbnQgYmVmb3JlIGl0IGhhcyBiZWVuIGhpdC4g ICovCiAKQEAgLTM3NSwyMiArNDA4LDIyIEBAIGJwZmluaXNocHlfaGFuZGxl X3N0b3AgKHN0cnVjdCBicHN0YXRzICpicywgaW50IHByaW50X2ZyYW1lKQog ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52 IChnZXRfY3VycmVudF9hcmNoICgpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2xhbmd1YWdlKTsK IAotICBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGJwZmluaXNocHlfZGV0 ZWN0X291dF9zY29wZV9jYiwKKyAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRz IChicGZpbmlzaHB5X2RldGVjdF9vdXRfc2NvcGVfYnBfY2IsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnMgPT0gTlVMTCA/IE5VTEwgOiBicy0+ YnJlYWtwb2ludF9hdCk7CiAKICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwog fQogCi0vKiBBdHRhY2hlZCB0byBgZXhpdCcgbm90aWZpY2F0aW9ucywgdHJp Z2dlcnMgYWxsIHRoZSBuZWNlc3Nhcnkgb3V0IG9mCisvKiBDYWxsZWQgd2hl biBhbiBleGNlcHRpb24gaXMgY2F1Z2h0LCB0cmlnZ2VycyB0aGUgbmVjZXNz YXJ5IG91dCBvZgogICAgc2NvcGUgbm90aWZpY2F0aW9ucy4gICovCiAKLXN0 YXRpYyB2b2lkCi1icGZpbmlzaHB5X2hhbmRsZV9leGl0IChzdHJ1Y3QgaW5m ZXJpb3IgKmluZikKK3ZvaWQKK2dkYnB5X2JwZmluaXNoX2hhbmRsZV9leGNl cHRpb24gICh2b2lkKQogewotICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9 IGVuc3VyZV9weXRob25fZW52ICh0YXJnZXRfZ2RiYXJjaCwKKyAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3VycmVudF9sYW5ndWFnZSk7CiAKLSAgaXRl cmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChicGZpbmlzaHB5X2RldGVjdF9vdXRf c2NvcGVfY2IsIE5VTEwpOworICBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMg KGJwZmluaXNocHlfZGV0ZWN0X291dF9zY29wZV9leGNlcHRpb25fY2IsIE5V TEwpOwogCiAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKIH0KQEAgLTQwOCw3 ICs0NDEsNiBAQCBnZGJweV9pbml0aWFsaXplX2ZpbmlzaGJyZWFrcG9pbnRz ICh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAm ZmluaXNoX2JyZWFrcG9pbnRfb2JqZWN0X3R5cGUpOwogICAgIAogICBvYnNl cnZlcl9hdHRhY2hfbm9ybWFsX3N0b3AgKGJwZmluaXNocHlfaGFuZGxlX3N0 b3ApOwotICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfZXhpdCAoYnBmaW5p c2hweV9oYW5kbGVfZXhpdCk7CiB9CiAKIHN0YXRpYyBQeUdldFNldERlZiBm aW5pc2hfYnJlYWtwb2ludF9vYmplY3RfZ2V0c2V0W10gPSB7CmRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24u YwppbmRleCA1MjEyZDRlLi5hNzg2YTU1IDEwMDY0NAotLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5jCisrKyBiL2dkYi9weXRob24vcHl0aG9uLmMKQEAgLTEx MDEsNiArMTEwMSwxMiBAQCBnZGJweV9icmVha3BvaW50X2hhc19weV9jb25k IChzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaikKIAkJICAgICJz Y3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZC4iKSk7CiB9CiAKK3ZvaWQKK2dk YnB5X2JwZmluaXNoX2hhbmRsZV9leGNlcHRpb24gKHZvaWQpCit7CisgIC8q IE5vdGhpbmcuICAqLworfQorCiAjZW5kaWYgLyogSEFWRV9QWVRIT04gKi8K IAogDApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9w eXRob24vcHl0aG9uLmgKaW5kZXggOWU0NjFmNy4uOGFmZTI4ZiAxMDA2NDQK LS0tIGEvZ2RiL3B5dGhvbi9weXRob24uaAorKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5oCkBAIC00Nyw0ICs0Nyw2IEBAIGludCBnZGJweV9zaG91bGRfc3Rv cCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9vYmopOwogCiBpbnQg Z2RicHlfYnJlYWtwb2ludF9oYXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9p bnRfb2JqZWN0ICpicF9vYmopOwogCit2b2lkIGdkYnB5X2JwZmluaXNoX2hh bmRsZV9leGNlcHRpb24gKHZvaWQpOworCiAjZW5kaWYgLyogR0RCX1BZVEhP Tl9IICovCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktZmluaXNoLWJyZWFrcG9pbnQyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1maW5pc2gtYnJlYWtwb2ludDIuZXhwCmluZGV4IDllNjVk NmMuLmZmYTRmNjIgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1maW5pc2gtYnJlYWtwb2ludDIuZXhwCisrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1maW5pc2gtYnJlYWtwb2ludDIuZXhwCkBA IC01MCwxOCArNTAsMzAgQEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKICMg Q2hlY2sgRmluaXNoQnJlYWtwb2ludHMgYWdhaW5zdCBDKysgZXhjZXB0aW9u cwogIwogCi1nZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi QnJlYWsgYWZ0ZXIgZXhjZXB0aW9uIDIiXQotCiBnZGJfdGVzdCAic291cmNl ICRweWZpbGUiICIuKlB5dGhvbiBzY3JpcHQgaW1wb3J0ZWQuKiIgXAogICAg ICAgICAgImltcG9ydCBweXRob24gc2NyaXB0cyIKICAgICAgICAgIAogZ2Ri X2JyZWFrcG9pbnQgInRocm93X2V4Y2VwdGlvbl8xIgorZ2RiX3Rlc3QgInB5 dGhvbiB3YXRjaCA9IGdkYi5CcmVha3BvaW50IChcIltnZGJfZ2V0X2xpbmVf bnVtYmVyICJCcmVhayBhZnRlciBleGNlcHRpb24gMSJdXCIpIiBcCisgICAg ICAgICAiQnJlYWtwb2ludC4qIiAic2V0IHdhdGNoZG9nIGJyZWFrcG9pbnQg YWZ0ZXIgZXhjZXB0aW9uIGhhbmRsZXIiCiBnZGJfdGVzdCAiY29udGludWUi ICJCcmVha3BvaW50IC4qdGhyb3dfZXhjZXB0aW9uXzEuKiIgInJ1biB0byBl eGNlcHRpb24gMSIKIAotZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBsZW4oZ2Ri LmJyZWFrcG9pbnRzKCkpIiAiMyIgImNoZWNrIEJQIGNvdW50IgorZ2RiX3Rl c3QgInB5dGhvbiBwcmludCBsZW4oZ2RiLmJyZWFrcG9pbnRzICgpKSIgIjMi ICJjaGVjayBCUCBjb3VudCIKIGdkYl90ZXN0ICJweXRob24gRXhjZXB0aW9u RmluaXNoQnJlYWtwb2ludChnZGIubmV3ZXN0X2ZyYW1lKCkpIiAiaW5pdCBF eGNlcHRpb25GaW5pc2hCcmVha3BvaW50IiAic2V0IEZpbmlzaEJQIGFmdGVy IHRoZSBleGNlcHRpb24iCi1nZGJfdGVzdCAiY29udGludWUiICIuKnN0b3Bw ZWQgYXQgRXhjZXB0aW9uRmluaXNoQnJlYWtwb2ludC4qIiAiY2hlY2sgRmlu aXNoQnJlYWtwb2ludCBpbiBjYXRjaCgpIgotZ2RiX3Rlc3QgInB5dGhvbiBw cmludCBsZW4oZ2RiLmJyZWFrcG9pbnRzKCkpIiAiMyIgImNoZWNrIGZpbmlz aCBCUCByZW1vdmFsIgorCitzZXQgdGVzdCAiZG9uJ3QgY2F0Y2ggRmluaXNo QnJlYWtwb2ludCB3aXRoIGV4Y2VwdGlvbiIKK2dkYl90ZXN0X211bHRpcGxl ICJjb250aW51ZSIgJHRlc3QgeworICAgIC1yZSAic3RvcHBlZCBhdCBFeGNl cHRpb25GaW5pc2hCcmVha3BvaW50LiokZ2RiX3Byb21wdCAkIiB7CisgICAg CXhmYWlsICR0ZXN0CisgICAgfQorICAgIC1yZSAiZXhjZXB0aW9uIGRpZCBu b3QgZmluaXNoLipCcmVha3BvaW50IC4qIEJyZWFrIGFmdGVyIGV4Y2VwdGlv biAxLiokZ2RiX3Byb21wdCAkIiB7CisgICAgICAgIHBhc3MgJHRlc3QKKyAg ICAgICAgCisgICAgICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQgbGVuKGdk Yi5icmVha3BvaW50cygpKSIgIjMiICJjaGVjayBmaW5pc2ggQlAgcmVtb3Zh bCIKKyAgICB9Cit9CisKK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhv biB3YXRjaC5kZWxldGUgKCkiICJkZWxldGUgd2F0Y2hkb2cgYnJlYWtwb2lu dCIgMAogCiBnZGJfdGVzdCAiY29udGludWUiICIuKkJyZWFrcG9pbnQuKiB0 aHJvd19leGNlcHRpb25fMS4qIiAiY29udGludWUgdG8gc2Vjb25kIGV4Y2Vw dGlvbiIKIGdkYl90ZXN0ICJweXRob24gRXhjZXB0aW9uRmluaXNoQnJlYWtw b2ludChnZGIubmV3ZXN0X2ZyYW1lKCkpIiAiaW5pdCBFeGNlcHRpb25GaW5p c2hCcmVha3BvaW50IiAic2V0IEZpbmlzaEJQIGFmdGVyIHRoZSBleGNlcHRp b24iCi0tIAoxLjcuNi41Cgo= --bcaec54fb814a2361404b614e9f4--