From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29586 invoked by alias); 27 Oct 2008 15:43:32 -0000 Received: (qmail 29574 invoked by uid 22791); 27 Oct 2008 15:43:30 -0000 X-Spam-Check-By: sourceware.org Received: from mx2.redhat.com (HELO mx2.redhat.com) (66.187.237.31) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 27 Oct 2008 15:42:55 +0000 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id m9RFclh5019756; Mon, 27 Oct 2008 11:38:47 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m9RFciU3023869; Mon, 27 Oct 2008 11:38:44 -0400 Received: from opsy.redhat.com (vpn-13-43.rdu.redhat.com [10.11.13.43]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id m9RFcdP7030208; Mon, 27 Oct 2008 11:38:40 -0400 Received: by opsy.redhat.com (Postfix, from userid 500) id 5ADAC508074; Mon, 27 Oct 2008 09:38:39 -0600 (MDT) To: "Ulrich Weigand" Cc: brobecker@adacore.com (Joel Brobecker), gdb-patches@sourceware.org Subject: Re: [RFC/RFA] add struct parse_context to all command functions References: <200810241300.m9OD0X69010748@d12av02.megacenter.de.ibm.com> From: Tom Tromey Reply-To: Tom Tromey X-Attribution: Tom Date: Mon, 27 Oct 2008 17:07:00 -0000 In-Reply-To: <200810241300.m9OD0X69010748@d12av02.megacenter.de.ibm.com> (Ulrich Weigand's message of "Fri\, 24 Oct 2008 15\:00\:33 +0200 \(CEST\)") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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: 2008-10/txt/msg00663.txt.bz2 --=-=-= Content-length: 9650 >>>>> "Ulrich" == Ulrich Weigand writes: Tom> I'll start testing this and writing the ChangeLog entry. Ulrich> Thanks! The patch looks good to me now, so if testing goes well, Ulrich> this is OK. Here's the final version. Now value_print_options has both 'format' and 'output_format' fields. Most code should only check 'format'; 'output_format' is the analog of the old global. You can see where this matters by searching for this in the patch: format = format ? format : output_format; I added a small regression test for this. Built and regtested on x86-64 (compile farm). Ok? (I figured I probably changed enough to invalidate your earlier approval...) Tom 2008-10-27 Tom Tromey * varobj.c (value_get_print_value): Include valprint.h. (value_get_print_value): Use get_formatted_print_options. * value.h (struct value_print_options): Declare. (value_print, val_print, common_val_print, val_print_string): Update. * value.c: Include valprint.h. (show_values): Use get_user_print_options. (show_convenience): Likewise. * valprint.h (prettyprint_arrays, prettyprint_structs): Don't declare. (struct value_print_options): New type. (vtblprint, unionprint, addressprint, objectprint, print_max, inspect_it, repeat_count_threshold, output_format, stop_print_at_null): Don't declare. (user_print_options, get_user_print_options, get_raw_print_options, get_formatted_print_options): Declare. (print_array_indexes_p): Don't declare. (maybe_print_array_index, val_print_array_elements): Update. * valprint.c (print_max): Remove. (user_print_options): New global. (get_user_print_options, get_raw_print_options, get_formatted_print_options): New functions. (print_array_indexes, repeat_count_threshold, stop_print_at_null, prettyprint_structs, prettyprint_arrays, unionprint, addressprint): Remove. (val_print): Remove format, deref_ref, pretty arguments; add options. Update. (common_val_print): Likewise. (print_array_indexes_p): Remove. (maybe_print_array_index): Remove format, pretty arguments; add options. Update. (val_print_array_elements): Remove format, deref_ref, pretty arguments; add options. Update. (val_print_string): Add options argument. Update. (_initialize_valprint): Use user_print_options. (output_format): Remove. (set_output_radix_1): Use user_print_options. * typeprint.c: Include valprint.h. (objectprint): Don't declare. (whatis_exp): Use get_user_print_options. * tui/tui-regs.c: Include valprint.h. (tui_register_format): Use get_formatted_print_options. * tracepoint.c: Include valprint.h. (addressprint): Don't declare. (trace_mention): Use get_user_print_options. (tracepoints_info): Likewise. * stack.c (print_frame_args): Use get_raw_print_options. (print_frame_info): Use get_user_print_options. (print_frame): Likewise. * sh64-tdep.c: Include valprint.h (sh64_do_register): Use get_formatted_print_options. * scm-valprint.c (scm_inferior_print): Remove format, deref_ref, pretty arguments; add options. (scm_scmlist_print): Likewise. Update. (scm_scmval_print): Likewise. (scm_val_print): Likewise. (scm_value_print): Remove format, pretty arguments; add options. Update. * scm-lang.h (scm_value_print, scm_val_print, scm_scmval_print): Update. * scm-lang.c (scm_printstr): Add options argument. * python/python-value.c: Include valprint.h. (valpy_str): Use get_user_print_options. * printcmd.c: Include valprint.h. (addressprint): Don't declare. (inspect_it): Remove. (print_formatted): Remove format option; add options. Update. (print_scalar_formatted): Likewise. (print_address_demangle): Use get_user_print_options. (do_examine): Use get_formatted_print_options. (print_command_1): Likewise. (output_command): Use get_formatted_print_options. (do_one_display): Likewise. (print_variable_value): Use get_user_print_options. * p-valprint.c (pascal_val_print): Remove format, deref_ref, pretty arguments; add options. Update. (pascal_value_print): Remove format, pretty arguments; add options. Update. (vtblprint, objectprint): Don't declare. (pascal_static_field_print): Remove. (pascal_object_print_value_fields): Remove format, pretty arguments; add options. Update. (pascal_object_print_static_field): Likewise. (_initialize_pascal_valprint): Use user_print_options. Update. * p-lang.h (pascal_val_print, pascal_value_print, pascal_printstr, pascal_object_print_value_fields): Update. (vtblprint, static_field_print): Don't declare. * p-lang.c (pascal_printstr): Add options argument. Update. * objc-lang.c (objc_printstr): Add options argument. Update. * mt-tdep.c: Include valprint.h. (mt_registers_info): Use get_raw_print_options. * mips-tdep.c: Include valprint.h. (mips_print_fp_register): Use get_formatted_print_options. (mips_print_register): Likewise. * mi/mi-main.c: Include valprint.h. (get_register): Use get_user_print_options. (mi_cmd_data_evaluate_expression): Likewise. (mi_cmd_data_read_memory): Use get_formatted_print_options. * mi/mi-cmd-stack.c: Include valprint.h. (list_args_or_locals): Use get_raw_print_options. * m2-valprint.c (print_function_pointer_address): Add addressprint argument. (m2_print_long_set): Remove format, pretty arguments. (m2_print_unbounded_array): Remove format, deref_ref, pretty arguments; add options. Update. (print_unpacked_pointer): Remove format argument; add options. Now static. Update. (print_variable_at_address): Remove format, deref_ref, pretty arguments; add options. Update. (m2_print_array_contents): Likewise. (m2_val_print): Likewise. * m2-lang.h (m2_val_print): Update. * m2-lang.c (m2_printstr): Add options argument. Update. * language.h (struct value_print_options): Declare. (struct language_defn) : Add options argument. : Remove format, deref_ref, pretty argument; add options. : Remove format, pretty arguments; add options. : Likewise. (LA_VAL_PRINT, LA_VALUE_PRINT, LA_PRINT_STRING, LA_PRINT_ARRAY_INDEX): Update. (default_print_array_index): Update. * language.c (default_print_array_index): Remove format, pretty arguments; add options. Update. (unk_lang_printstr): Add options argument. (unk_lang_val_print): Remove format, deref_ref, pretty arguments; add options. (unk_lang_value_print): Remove format, pretty arguments; add options. * jv-valprint.c (java_value_print): Remove format, pretty arguments; add options. Update. (java_print_value_fields): Likewise. (java_val_print): Remove format, deref_ref, pretty arguments; add options. Update. * jv-lang.h (java_val_print, java_value_print): Declare. * infcmd.c: Include valprint.h. (print_return_value): Use get_raw_print_options. (default_print_registers_info): Use get_user_print_options, get_formatted_print_options. (registers_info): Use get_formatted_print_options. * gdbtypes.h (struct value_print_options): Declare. (print_scalar_formatted): Update. * f-valprint.c (f77_print_array_1): Remove format, deref_ref, pretty arguments; add options. Update. (f77_print_array): Likewise. (f_val_print): Likewise. * f-lang.h (f_val_print): Update. * f-lang.c (f_printstr): Add options argument. Update. (c_value_print): Update declaration. * expprint.c: Include valprint.h. (print_subexp_standard): Use get_raw_print_options, get_user_print_options. * eval.c: Include valprint.h. (objectprint): Don't declare. (evaluate_subexp_standard): Use get_user_print_options. * cp-valprint.c (vtblprint, objectprint, static_field_print): Remove. (cp_print_value_fields): Remove format, pretty arguments; add options. Update. (cp_print_value): Likewise. (cp_print_static_field): Likewise. (_initialize_cp_valprint): Use user_print_options. Update. * c-valprint.c (print_function_pointer_address): Add addressprint argument. (c_val_print): Remove format, deref_ref, pretty arguments; add options. Update. (c_value_print): Add options argument. Update. * c-lang.h (c_val_print, c_value_print, c_printstr): Update. (vtblprint, static_field_print): Don't declare. (cp_print_value_fields): Update. * c-lang.c (c_printstr): Add options argument. Update. * breakpoint.c: Include valprint.h. (addressprint): Don't declare. (watchpoint_value_print): Use get_user_print_options. (print_one_breakpoint_location): Likewise. (breakpoint_1, print_it_catch_fork, print_it_catch_vfork, mention, print_exception_catchpoint): Likewise. * auxv.c (fprint_target_auxv): Don't declare addressprint. Use get_user_print_options. * ada-valprint.c (struct ada_val_print_args): Remove format, deref_ref, and pretty; add options. (print_optional_low_bound): Add options argument. (val_print_packed_array_elements): Remove format and pretty arguments; add options. Update. (printstr): Add options argument. Update. (ada_printstr): Likewise. (ada_val_print): Remove format, deref_ref, pretty arguments; add options argument. Update. (ada_val_print_stub): Update. (ada_val_print_array): Remove format, deref_ref, pretty arguments; add options. Update. (ada_val_print_1): Likewise. (print_variant_part): Likewise. (ada_value_print): Remove format, pretty arguments; add options. Update. (print_record): Likewise. (print_field_values): Likewise. * ada-lang.h (ada_val_print, ada_value_print, ada_printstr): Update. * ada-lang.c (ada_print_array_index): Add options argument; remove format and pretty arguments. (print_one_exception): Use get_user_print_options. 2008-10-27 Tom Tromey * gdb.base/exprs.exp (test_expr): Add enum formatting tests. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=P Content-Transfer-Encoding: base64 Content-Description: final patch Content-length: 281576 ZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMK aW5kZXggY2NlN2RhOS4uOWZkZDk0NCAxMDA2NDQKLS0tIGEvZ2RiL2FkYS1s YW5nLmMKKysrIGIvZ2RiL2FkYS1sYW5nLmMKQEAgLTM1Myw5ICszNTMsOSBA QCBhZGFfZ2V0X2dkYl9jb21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJz ICh2b2lkKQogCiBzdGF0aWMgdm9pZAogYWRhX3ByaW50X2FycmF5X2luZGV4 IChzdHJ1Y3QgdmFsdWUgKmluZGV4X3ZhbHVlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0LCBl bnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zKQogewotICBMQV9WQUxVRV9QUklOVCAoaW5kZXhfdmFsdWUsIHN0cmVh bSwgZm9ybWF0LCBwcmV0dHkpOworICBMQV9WQUxVRV9QUklOVCAoaW5kZXhf dmFsdWUsIHN0cmVhbSwgb3B0aW9ucyk7CiAgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIiA9PiAiKTsKIH0KIApAQCAtMTAxMDAsNyArMTAxMDAsMTAg QEAgc3RhdGljIHZvaWQKIHByaW50X29uZV9leGNlcHRpb24gKGVudW0gZXhj ZXB0aW9uX2NhdGNocG9pbnRfa2luZCBleCwKICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBicmVha3BvaW50ICpiLCBDT1JFX0FERFIgKmxhc3RfYWRk cikKIHsgCi0gIGlmIChhZGRyZXNzcHJpbnQpCisgIHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zIG9wdHM7CisKKyAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9u cyAoJm9wdHMpOworICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCiAgICAgewog ICAgICAgYW5ub3RhdGVfZmllbGQgKDQpOwogICAgICAgdWlfb3V0X2ZpZWxk X2NvcmVfYWRkciAodWlvdXQsICJhZGRyIiwgYi0+bG9jLT5hZGRyZXNzKTsK ZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5oIGIvZ2RiL2FkYS1sYW5nLmgK aW5kZXggY2U2YmU0Yi4uNTYyYTg2NyAxMDA2NDQKLS0tIGEvZ2RiL2FkYS1s YW5nLmgKKysrIGIvZ2RiL2FkYS1sYW5nLmgKQEAgLTI0OSwxMSArMjQ5LDEx IEBAIGV4dGVybiB2b2lkIGFkYV9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAq LCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQpOwogCiBleHRlcm4gaW50IGFkYV92YWxf cHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGludCwg Q09SRV9BRERSLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg dWlfZmlsZSAqLCBpbnQsIGludCwgaW50LAotICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKLWV4dGVybiBp bnQgYWRhX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVp X2ZpbGUgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gdmFsX3ByZXR0eXByaW50KTsKK2V4dGVybiBpbnQgYWRhX3ZhbHVlX3By aW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKKwkJCSAg ICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWZpbmVkIGluIGFk YS1sYW5nLmMgKi8KIApAQCAtMjY2LDcgKzI2Niw4IEBAIGV4dGVybiB2b2lk IGFkYV9lbWl0X2NoYXIgKGludCwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBp bnQpOwogZXh0ZXJuIHZvaWQgYWRhX3ByaW50Y2hhciAoaW50LCBzdHJ1Y3Qg dWlfZmlsZSAqKTsKIAogZXh0ZXJuIHZvaWQgYWRhX3ByaW50c3RyIChzdHJ1 Y3QgdWlfZmlsZSAqLCBjb25zdCBnZGJfYnl0ZSAqLAotCQkJICB1bnNpZ25l ZCBpbnQsIGludCwgaW50KTsKKwkJCSAgdW5zaWduZWQgaW50LCBpbnQsIGlu dCwKKwkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7 CiAKIHN0cnVjdCB2YWx1ZSAqYWRhX2NvbnZlcnRfYWN0dWFsIChzdHJ1Y3Qg dmFsdWUgKmFjdHVhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdHlwZSAqZm9ybWFsX3R5cGUwLApkaWZmIC0tZ2l0IGEv Z2RiL2FkYS12YWxwcmludC5jIGIvZ2RiL2FkYS12YWxwcmludC5jCmluZGV4 IGUyZjc3NDAuLmNjODM1MmYgMTAwNjQ0Ci0tLSBhL2dkYi9hZGEtdmFscHJp bnQuYworKysgYi9nZGIvYWRhLXZhbHByaW50LmMKQEAgLTQzLDE4ICs0Mywx NyBAQCBzdHJ1Y3QgYWRhX3ZhbF9wcmludF9hcmdzCiAgIGludCBlbWJlZGRl ZF9vZmZzZXQ7CiAgIENPUkVfQUREUiBhZGRyZXNzOwogICBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtOwotICBpbnQgZm9ybWF0OwotICBpbnQgZGVyZWZfcmVm OwogICBpbnQgcmVjdXJzZTsKLSAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJl dHR5OworICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9uczsKIH07CiAKIHN0YXRpYyB2b2lkIHByaW50X3JlY29yZCAoc3RydWN0 IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwK LQkJCSAgaW50LCBpbnQsIGVudW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCSAg aW50LCBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAog c3RhdGljIGludCBwcmludF9maWVsZF92YWx1ZXMgKHN0cnVjdCB0eXBlICos IGNvbnN0IGdkYl9ieXRlICosCi0JCQkgICAgICAgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQsCi0JCQkgICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQs IGludCwgc3RydWN0IHR5cGUgKiwKKwkJCSAgICAgICBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKiwKKwkJCSAgICAgICBpbnQsIHN0cnVjdCB0eXBlICosCiAJ CQkgICAgICAgY29uc3QgZ2RiX2J5dGUgKik7CiAKIHN0YXRpYyB2b2lkIGFk anVzdF90eXBlX3NpZ25lZG5lc3MgKHN0cnVjdCB0eXBlICopOwpAQCAtNjIs OCArNjEsOCBAQCBzdGF0aWMgdm9pZCBhZGp1c3RfdHlwZV9zaWduZWRuZXNz IChzdHJ1Y3QgdHlwZSAqKTsKIHN0YXRpYyBpbnQgYWRhX3ZhbF9wcmludF9z dHViICh2b2lkICphcmdzMCk7CiAKIHN0YXRpYyBpbnQgYWRhX3ZhbF9wcmlu dF8xIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENP UkVfQUREUiwKLQkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwg aW50LAotCQkJICAgIGVudW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCSAgICBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKik7CiAMCiAKIC8qIE1ha2UgVFlQRSB1bnNp Z25lZCBpZiBpdHMgcmFuZ2Ugb2YgdmFsdWVzIGluY2x1ZGVzIG5vIG5lZ2F0 aXZlcy4gICovCkBAIC04MSwxMyArODAsMTQgQEAgYWRqdXN0X3R5cGVfc2ln bmVkbmVzcyAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICBvdGhlcndpc2UgMC4g ICovCiAKIHN0YXRpYyBpbnQKLXByaW50X29wdGlvbmFsX2xvd19ib3VuZCAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUpCitw cmludF9vcHRpb25hbF9sb3dfYm91bmQgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIHN0cnVjdCB0eXBlICp0eXBlLAorCQkJICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0IHR5cGUg KmluZGV4X3R5cGU7CiAgIGxvbmcgbG93X2JvdW5kOwogICBsb25nIGhpZ2hf Ym91bmQ7CiAKLSAgaWYgKHByaW50X2FycmF5X2luZGV4ZXNfcCAoKSkKKyAg aWYgKG9wdGlvbnMtPnByaW50X2FycmF5X2luZGV4ZXMpCiAgICAgcmV0dXJu IDA7CiAKICAgaWYgKCFnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2Jv dW5kLCAmaGlnaF9ib3VuZCkpCkBAIC0xMzcsMTYgKzEzNywxNSBAQCBwcmlu dF9vcHRpb25hbF9sb3dfYm91bmQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IHN0cnVjdCB0eXBlICp0eXBlKQogCiAvKiAgVmVyc2lvbiBvZiB2YWxfcHJp bnRfYXJyYXlfZWxlbWVudHMgZm9yIEdOQVQtc3R5bGUgcGFja2VkIGFycmF5 cy4KICAgICBQcmludHMgZWxlbWVudHMgb2YgcGFja2VkIGFycmF5IG9mIHR5 cGUgVFlQRSBhdCBiaXQgb2Zmc2V0Ci0gICAgQklUT0ZGU0VUIGZyb20gVkFM QUREUiBvbiBTVFJFQU0uICBGb3JtYXRzIGFjY29yZGluZyB0byBGT1JNQVQg YW5kCisgICAgQklUT0ZGU0VUIGZyb20gVkFMQUREUiBvbiBTVFJFQU0uICBG b3JtYXRzIGFjY29yZGluZyB0byBPUFRJT05TIGFuZAogICAgIHNlcGFyYXRl cyB3aXRoIGNvbW1hcy4gIFJFQ1VSU0UgaXMgdGhlIHJlY3Vyc2lvbiAobmVz dGluZykgbGV2ZWwuCi0gICAgSWYgUFJFVFRZLCB1c2VzICJwcmV0dGllciIg Zm9ybWF0LiAgVFlQRSBtdXN0IGhhdmUgYmVlbiBkZWNvZGVkIChhcwotICAg IGJ5IGFkYV9jb2VyY2VfdG9fc2ltcGxlX2FycmF5KS4gICovCisgICAgVFlQ RSBtdXN0IGhhdmUgYmVlbiBkZWNvZGVkIChhcyBieSBhZGFfY29lcmNlX3Rv X3NpbXBsZV9hcnJheSkuICAqLwogCiBzdGF0aWMgdm9pZAogdmFsX3ByaW50 X3BhY2tlZF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkJCSBpbnQgYml0b2Zmc2V0LCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotCQkJCSBpbnQgZm9ybWF0LCBpbnQg cmVjdXJzZSwKLQkJCQkgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQor CQkJCSBpbnQgcmVjdXJzZSwKKwkJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpOwog ICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwpAQCAtMTcyLDE0 ICsxNzEsMTQgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50cyAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog ICBpID0gMDsKICAgYW5ub3RhdGVfYXJyYXlfc2VjdGlvbl9iZWdpbiAoaSwg ZWx0dHlwZSk7CiAKLSAgd2hpbGUgKGkgPCBsZW4gJiYgdGhpbmdzX3ByaW50 ZWQgPCBwcmludF9tYXgpCisgIHdoaWxlIChpIDwgbGVuICYmIHRoaW5nc19w cmludGVkIDwgb3B0aW9ucy0+cHJpbnRfbWF4KQogICAgIHsKICAgICAgIHN0 cnVjdCB2YWx1ZSAqdjAsICp2MTsKICAgICAgIGludCBpMDsKIAogICAgICAg aWYgKGkgIT0gMCkKIAl7Ci0JICBpZiAocHJldHR5cHJpbnRfYXJyYXlzKQor CSAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X2FycmF5cykKIAkgICAgewog CSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIixcbiIpOwogCSAg ICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1cnNlLCBz dHJlYW0pOwpAQCAtMTkwLDcgKzE4OSw3IEBAIHZhbF9wcmludF9wYWNrZWRf YXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKIAkgICAgfQogCX0KICAgICAgIHdyYXBfaGVyZSAo bl9zcGFjZXMgKDIgKyAyICogcmVjdXJzZSkpOwotICAgICAgbWF5YmVfcHJp bnRfYXJyYXlfaW5kZXggKGluZGV4X3R5cGUsIGkgKyBsb3csIHN0cmVhbSwg Zm9ybWF0LCBwcmV0dHkpOworICAgICAgbWF5YmVfcHJpbnRfYXJyYXlfaW5k ZXggKGluZGV4X3R5cGUsIGkgKyBsb3csIHN0cmVhbSwgb3B0aW9ucyk7CiAK ICAgICAgIGkwID0gaTsKICAgICAgIHYwID0gYWRhX3ZhbHVlX3ByaW1pdGl2 ZV9wYWNrZWRfdmFsIChOVUxMLCB2YWxhZGRyLApAQCAtMjEwLDEwICsyMDks MTIgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50cyAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgICBi cmVhazsKIAl9CiAKLSAgICAgIGlmIChpIC0gaTAgPiByZXBlYXRfY291bnRf dGhyZXNob2xkKQorICAgICAgaWYgKGkgLSBpMCA+IG9wdGlvbnMtPnJlcGVh dF9jb3VudF90aHJlc2hvbGQpCiAJewotCSAgdmFsX3ByaW50IChlbHR0eXBl LCB2YWx1ZV9jb250ZW50cyAodjApLCAwLCAwLCBzdHJlYW0sIGZvcm1hdCwK LQkJICAgICAwLCByZWN1cnNlICsgMSwgcHJldHR5LCBjdXJyZW50X2xhbmd1 YWdlKTsKKwkgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHMgPSAq b3B0aW9uczsKKwkgIG9wdHMuZGVyZWZfcmVmID0gMDsKKwkgIHZhbF9wcmlu dCAoZWx0dHlwZSwgdmFsdWVfY29udGVudHMgKHYwKSwgMCwgMCwgc3RyZWFt LAorCQkgICAgIHJlY3Vyc2UgKyAxLCAmb3B0cywgY3VycmVudF9sYW5ndWFn ZSk7CiAJICBhbm5vdGF0ZV9lbHRfcmVwIChpIC0gaTApOwogCSAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCIgPHJlcGVhdHMgJXUgdGltZXM+Iiks IGkgLSBpMCk7CiAJICBhbm5vdGF0ZV9lbHRfcmVwX2VuZCAoKTsKQEAgLTIy MiwxMSArMjIzLDEzIEBAIHZhbF9wcmludF9wYWNrZWRfYXJyYXlfZWxlbWVu dHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKICAgICAgIGVsc2UKIAl7CiAJICBpbnQgajsKKwkgIHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKKwkgIG9wdHMuZGVy ZWZfcmVmID0gMDsKIAkgIGZvciAoaiA9IGkwOyBqIDwgaTsgaiArPSAxKQog CSAgICB7CiAJICAgICAgaWYgKGogPiBpMCkKIAkJewotCQkgIGlmIChwcmV0 dHlwcmludF9hcnJheXMpCisJCSAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50 X2FycmF5cykKIAkJICAgIHsKIAkJICAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLFxuIik7CiAJCSAgICAgIHByaW50X3NwYWNlc19maWx0ZXJl ZCAoMiArIDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtMjM3LDEwICsyNDAs MTAgQEAgdmFsX3ByaW50X3BhY2tlZF9hcnJheV9lbGVtZW50cyAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCQkgICAg fQogCQkgIHdyYXBfaGVyZSAobl9zcGFjZXMgKDIgKyAyICogcmVjdXJzZSkp OwogCQkgIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChpbmRleF90eXBlLCBq ICsgbG93LAotCQkJCQkgICBzdHJlYW0sIGZvcm1hdCwgcHJldHR5KTsKKwkJ CQkJICAgc3RyZWFtLCBvcHRpb25zKTsKIAkJfQotCSAgICAgIHZhbF9wcmlu dCAoZWx0dHlwZSwgdmFsdWVfY29udGVudHMgKHYwKSwgMCwgMCwgc3RyZWFt LCBmb3JtYXQsCi0JCQkgMCwgcmVjdXJzZSArIDEsIHByZXR0eSwgY3VycmVu dF9sYW5ndWFnZSk7CisJICAgICAgdmFsX3ByaW50IChlbHR0eXBlLCB2YWx1 ZV9jb250ZW50cyAodjApLCAwLCAwLCBzdHJlYW0sCisJCQkgcmVjdXJzZSAr IDEsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKIAkgICAgICBhbm5vdGF0 ZV9lbHQgKCk7CiAJICAgIH0KIAl9CkBAIC00NTIsNyArNDU1LDggQEAgYWRh X3ByaW50X3NjYWxhciAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgdmFs LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogCiBzdGF0aWMgdm9pZAogcHJp bnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRl ICpzdHJpbmcsCi0JICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgZm9yY2Vf ZWxsaXBzZXMsIGludCB0eXBlX2xlbikKKwkgIHVuc2lnbmVkIGludCBsZW5n dGgsIGludCBmb3JjZV9lbGxpcHNlcywgaW50IHR5cGVfbGVuLAorCSAgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAg IHVuc2lnbmVkIGludCBpOwogICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50 ZWQgPSAwOwpAQCAtNDY1LDcgKzQ2OSw3IEBAIHByaW50c3RyIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogICAg ICAgcmV0dXJuOwogICAgIH0KIAotICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3Ro ICYmIHRoaW5nc19wcmludGVkIDwgcHJpbnRfbWF4OyBpICs9IDEpCisgIGZv ciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRp b25zLT5wcmludF9tYXg7IGkgKz0gMSkKICAgICB7CiAgICAgICAvKiBQb3Np dGlvbiBvZiB0aGUgY2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcKICAgICAg ICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlzIHJlcGVhdGVkLiAgKi8KQEAgLTQ5 MSwxMSArNDk1LDExIEBAIHByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCSAgcmVwcyArPSAxOwog CX0KIAotICAgICAgaWYgKHJlcHMgPiByZXBlYXRfY291bnRfdGhyZXNob2xk KQorICAgICAgaWYgKHJlcHMgPiBvcHRpb25zLT5yZXBlYXRfY291bnRfdGhy ZXNob2xkKQogCXsKIAkgIGlmIChpbl9xdW90ZXMpCiAJICAgIHsKLQkgICAg ICBpZiAoaW5zcGVjdF9pdCkKKwkgICAgICBpZiAob3B0aW9ucy0+aW5zcGVj dF9pdCkKIAkJZnB1dHNfZmlsdGVyZWQgKCJcXFwiLCAiLCBzdHJlYW0pOwog CSAgICAgIGVsc2UKIAkJZnB1dHNfZmlsdGVyZWQgKCJcIiwgIiwgc3RyZWFt KTsKQEAgLTUwNywxNCArNTExLDE0IEBAIHByaW50c3RyIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogCSAgZnB1 dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsKIAkgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgXygiIDxyZXBlYXRzICV1IHRpbWVzPiIpLCByZXBzKTsK IAkgIGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9IHJlcGVh dF9jb3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRp b25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9jb21tYSA9 IDE7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVvdGVzKQog CSAgICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9w dGlvbnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIs IHN0cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwi Iiwgc3RyZWFtKTsKQEAgLTUyOSw3ICs1MzMsNyBAQCBwcmludHN0ciAoc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywK ICAgLyogVGVybWluYXRlIHRoZSBxdW90ZXMgaWYgbmVjZXNzYXJ5LiAgKi8K ICAgaWYgKGluX3F1b3RlcykKICAgICB7Ci0gICAgICBpZiAoaW5zcGVjdF9p dCkKKyAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCWZwdXRzX2Zp bHRlcmVkICgiXFxcIiIsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJZnB1dHNf ZmlsdGVyZWQgKCJcIiIsIHN0cmVhbSk7CkBAIC01NDEsMzYgKzU0NSwyOCBA QCBwcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKIAogdm9pZAogYWRhX3ByaW50c3RyIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAotCSAg ICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNl X2VsbGlwc2VzKQorCSAgICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3 aWR0aCwgaW50IGZvcmNlX2VsbGlwc2VzLAorCSAgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewotICBwcmludHN0 ciAoc3RyZWFtLCBzdHJpbmcsIGxlbmd0aCwgZm9yY2VfZWxsaXBzZXMsIHdp ZHRoKTsKKyAgcHJpbnRzdHIgKHN0cmVhbSwgc3RyaW5nLCBsZW5ndGgsIGZv cmNlX2VsbGlwc2VzLCB3aWR0aCwgb3B0aW9ucyk7CiB9CiAKIAogLyogUHJp bnQgZGF0YSBvZiB0eXBlIFRZUEUgbG9jYXRlZCBhdCBWQUxBRERSICh3aXRo aW4gR0RCKSwgd2hpY2ggY2FtZSBmcm9tCiAgICB0aGUgaW5mZXJpb3IgYXQg YWRkcmVzcyBBRERSRVNTLCBvbnRvIHN0ZGlvIHN0cmVhbSBTVFJFQU0gYWNj b3JkaW5nIHRvCi0gICBGT1JNQVQgKGEgbGV0dGVyIGFzIGZvciB0aGUgcHJp bnRmICUgY29kZXMgb3IgMCBmb3IgbmF0dXJhbCBmb3JtYXQpLgotICAgVGhl IGRhdGEgYXQgVkFMQUREUiBpcyBpbiB0YXJnZXQgYnl0ZSBvcmRlci4KKyAg IE9QVElPTlMuICBUaGUgZGF0YSBhdCBWQUxBRERSIGlzIGluIHRhcmdldCBi eXRlIG9yZGVyLgogCiAgICBJZiB0aGUgZGF0YSBpcyBwcmludGVkIGFzIGEg c3RyaW5nLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5nIGNoYXJhY3Rl cnMKICAgIHByaW50ZWQuCiAKLSAgIElmIERFUkVGX1JFRiBpcyBub256ZXJv LCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90aGVyd2lzZSBqdXN0 IHByaW50Ci0gICB0aGVtIGxpa2UgcG9pbnRlcnMuCi0KICAgIFJFQ1VSU0Ug aW5kaWNhdGVzIHRoZSBhbW91bnQgb2YgaW5kZW50YXRpb24gdG8gc3VwcGx5 IGJlZm9yZQotICAgY29udGludWF0aW9uIGxpbmVzOyB0aGlzIGFtb3VudCBp cyByb3VnaGx5IHR3aWNlIHRoZSB2YWx1ZSBvZiBSRUNVUlNFLgotCi0gICBX aGVuIFBSRVRUWSBpcyBub24temVybywgcHJpbnRzIHJlY29yZCBmaWVsZHMg b24gc2VwYXJhdGUgbGluZXMuCi0gICAoRm9yIHNvbWUgcmVhc29uLCB0aGUg Y3VycmVudCB2ZXJzaW9uIG9mIGdkYiBpbnN0ZWFkIHVzZXMgYSBnbG9iYWwK LSAgIHZhcmlhYmxlLS0tcHJldHR5cHJpbnRfYXJyYXlzLS0tIHRvIGNhdXNl cyBhIHNpbWlsYXIgZWZmZWN0IG9uCi0gICBhcnJheXMuKSAgKi8KKyAgIGNv bnRpbnVhdGlvbiBsaW5lczsgdGhpcyBhbW91bnQgaXMgcm91Z2hseSB0d2lj ZSB0aGUgdmFsdWUgb2YgUkVDVVJTRS4gICovCiAKIGludAogYWRhX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyMCwKIAkgICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERS IGFkZHJlc3MsCi0JICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBmb3JtYXQsIGludCBkZXJlZl9yZWYsCi0JICAgICAgIGludCByZWN1cnNl LCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJICAgICAgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorCSAgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAg c3RydWN0IGFkYV92YWxfcHJpbnRfYXJncyBhcmdzOwogICBhcmdzLnR5cGUg PSB0eXBlOwpAQCAtNTc4LDEwICs1NzQsOCBAQCBhZGFfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAog ICBhcmdzLmVtYmVkZGVkX29mZnNldCA9IGVtYmVkZGVkX29mZnNldDsKICAg YXJncy5hZGRyZXNzID0gYWRkcmVzczsKICAgYXJncy5zdHJlYW0gPSBzdHJl YW07Ci0gIGFyZ3MuZm9ybWF0ID0gZm9ybWF0OwotICBhcmdzLmRlcmVmX3Jl ZiA9IGRlcmVmX3JlZjsKICAgYXJncy5yZWN1cnNlID0gcmVjdXJzZTsKLSAg YXJncy5wcmV0dHkgPSBwcmV0dHk7CisgIGFyZ3Mub3B0aW9ucyA9IG9wdGlv bnM7CiAKICAgcmV0dXJuIGNhdGNoX2Vycm9ycyAoYWRhX3ZhbF9wcmludF9z dHViLCAmYXJncywgTlVMTCwgUkVUVVJOX01BU0tfQUxMKTsKIH0KQEAgLTU5 NCw4ICs1ODgsNyBAQCBhZGFfdmFsX3ByaW50X3N0dWIgKHZvaWQgKmFyZ3Mw KQogICBzdHJ1Y3QgYWRhX3ZhbF9wcmludF9hcmdzICphcmdzcCA9IChzdHJ1 Y3QgYWRhX3ZhbF9wcmludF9hcmdzICopIGFyZ3MwOwogICByZXR1cm4gYWRh X3ZhbF9wcmludF8xIChhcmdzcC0+dHlwZSwgYXJnc3AtPnZhbGFkZHIwLAog CQkJICBhcmdzcC0+ZW1iZWRkZWRfb2Zmc2V0LCBhcmdzcC0+YWRkcmVzcywK LQkJCSAgYXJnc3AtPnN0cmVhbSwgYXJnc3AtPmZvcm1hdCwgYXJnc3AtPmRl cmVmX3JlZiwKLQkJCSAgYXJnc3AtPnJlY3Vyc2UsIGFyZ3NwLT5wcmV0dHkp OworCQkJICBhcmdzcC0+c3RyZWFtLCBhcmdzcC0+cmVjdXJzZSwgYXJnc3At Pm9wdGlvbnMpOwogfQogCiAvKiBBc3N1bWluZyBUWVBFIGlzIGEgc2ltcGxl IGFycmF5LCBwcmludCB0aGUgdmFsdWUgb2YgdGhpcyBhcnJheSBsb2NhdGVk CkBAIC02MDUsOCArNTk4LDggQEAgYWRhX3ZhbF9wcmludF9zdHViICh2b2lk ICphcmdzMCkKIAogc3RhdGljIGludAogYWRhX3ZhbF9wcmludF9hcnJheSAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAot CQkgICAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBpbnQgZm9ybWF0LAotCQkgICAgIGludCBkZXJlZl9yZWYsIGludCBy ZWN1cnNlLCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJCSAgICAg Q09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAorCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICpvcHRpb25zKQogewogICBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSA9 IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwogICB1bnNpZ25lZCBpbnQgZWx0 bGVuOwpAQCAtNjIzLDQwICs2MTYsNDAgQEAgYWRhX3ZhbF9wcmludF9hcnJh eSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIGVsdGxlbjsKIAog ICAvKiBGb3IgYW4gYXJyYXkgb2YgY2hhcnMsIHByaW50IHdpdGggc3RyaW5n IHN5bnRheC4gICovCi0gIGlmIChhZGFfaXNfc3RyaW5nX3R5cGUgKHR5cGUp ICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0gJ3MnKSkKKyAgaWYgKGFk YV9pc19zdHJpbmdfdHlwZSAodHlwZSkKKyAgICAgICYmIChvcHRpb25zLT5m b3JtYXQgPT0gMCB8fCBvcHRpb25zLT5mb3JtYXQgPT0gJ3MnKSkKICAgICB7 Ci0gICAgICBpZiAocHJldHR5cHJpbnRfYXJyYXlzKQorICAgICAgaWYgKG9w dGlvbnMtPnByZXR0eXByaW50X2FycmF5cykKICAgICAgICAgcHJpbnRfc3Bh Y2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CiAKICAg ICAgIC8qIElmIHJlcXVlc3RlZCwgbG9vayBmb3IgdGhlIGZpcnN0IG51bGwg Y2hhciBhbmQgb25seSBwcmludAogICAgICAgICAgZWxlbWVudHMgdXAgdG8g aXQuICAqLwotICAgICAgaWYgKHN0b3BfcHJpbnRfYXRfbnVsbCkKKyAgICAg IGlmIChvcHRpb25zLT5zdG9wX3ByaW50X2F0X251bGwpCiAgICAgICAgIHsK ICAgICAgICAgICBpbnQgdGVtcF9sZW47CiAKICAgICAgICAgICAvKiBMb29r IGZvciBhIE5VTEwgY2hhci4gICovCiAgICAgICAgICAgZm9yICh0ZW1wX2xl biA9IDA7CiAgICAgICAgICAgICAgICAodGVtcF9sZW4gPCBsZW4KLSAgICAg ICAgICAgICAgICAmJiB0ZW1wX2xlbiA8IHByaW50X21heAorICAgICAgICAg ICAgICAgICYmIHRlbXBfbGVuIDwgb3B0aW9ucy0+cHJpbnRfbWF4CiAgICAg ICAgICAgICAgICAgJiYgY2hhcl9hdCAodmFsYWRkciwgdGVtcF9sZW4sIGVs dGxlbikgIT0gMCk7CiAgICAgICAgICAgICAgICB0ZW1wX2xlbiArPSAxKTsK ICAgICAgICAgICBsZW4gPSB0ZW1wX2xlbjsKICAgICAgICAgfQogCi0gICAg ICBwcmludHN0ciAoc3RyZWFtLCB2YWxhZGRyLCBsZW4sIDAsIGVsdGxlbik7 CisgICAgICBwcmludHN0ciAoc3RyZWFtLCB2YWxhZGRyLCBsZW4sIDAsIGVs dGxlbiwgb3B0aW9ucyk7CiAgICAgICByZXN1bHQgPSBsZW47CiAgICAgfQog ICBlbHNlCiAgICAgewogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiKCIpOwotICAgICAgcHJpbnRfb3B0aW9uYWxfbG93X2JvdW5kIChzdHJl YW0sIHR5cGUpOworICAgICAgcHJpbnRfb3B0aW9uYWxfbG93X2JvdW5kIChz dHJlYW0sIHR5cGUsIG9wdGlvbnMpOwogICAgICAgaWYgKFRZUEVfRklFTERf QklUU0laRSAodHlwZSwgMCkgPiAwKQogICAgICAgICB2YWxfcHJpbnRfcGFj a2VkX2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRyLCAwLCBzdHJlYW0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv cm1hdCwgcmVjdXJzZSwgcHJldHR5KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVjdXJzZSwgb3B0aW9ucyk7CiAgICAg ICBlbHNlCiAgICAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAodHlw ZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXR0eSwg MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJz ZSwgb3B0aW9ucywgMCk7CiAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIpIik7CiAgICAgfQogCkBAIC02NjksOCArNjYyLDggQEAgYWRhX3Zh bF9wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAogc3RhdGljIGludAogYWRhX3ZhbF9wcmludF8xIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAog CQkgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0J CSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgaW50 IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsIGVudW0gdmFsX3ByZXR0eXByaW50 IHByZXR0eSkKKwkJIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1 cnNlLAorCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBsZW47CiAgIGludCBpOwpAQCAt Njk1LDggKzY4OCw3IEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyMCwKIAl9CiAgICAgICBl bHNlCiAJcmV0biA9IGFkYV92YWxfcHJpbnRfMSAodmFsdWVfdHlwZSAodmFs KSwgdmFsdWVfY29udGVudHMgKHZhbCksIDAsCi0JCQkJVkFMVUVfQUREUkVT UyAodmFsKSwgc3RyZWFtLCBmb3JtYXQsCi0JCQkJZGVyZWZfcmVmLCByZWN1 cnNlLCBwcmV0dHkpOworCQkJCVZBTFVFX0FERFJFU1MgKHZhbCksIHN0cmVh bSwgcmVjdXJzZSwgb3B0aW9ucyk7CiAgICAgICB2YWx1ZV9mcmVlX3RvX21h cmsgKG1hcmspOwogICAgICAgcmV0dXJuIHJldG47CiAgICAgfQpAQCAtNzA5 LDEyICs3MDEsMTIgQEAgYWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAogICAgIHsKICAgICBk ZWZhdWx0OgogICAgICAgcmV0dXJuIGNfdmFsX3ByaW50ICh0eXBlLCB2YWxh ZGRyMCwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sCi0JCQkg IGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworCQkJICBy ZWN1cnNlLCBvcHRpb25zKTsKIAogICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoK ICAgICAgIHsKIAlpbnQgcmV0ID0gY192YWxfcHJpbnQgKHR5cGUsIHZhbGFk ZHIwLCBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIAotCQkJICAgICAgIHN0 cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSk7CisJ CQkgICAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zKTsKIAlpZiAoYWRh X2lzX3RhZ190eXBlICh0eXBlKSkKIAkgIHsKIAkgICAgc3RydWN0IHZhbHVl ICp2YWwgPSAKQEAgLTc3OCwyMCArNzcwLDIyIEBAIGFkYV92YWxfcHJpbnRf MSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy MCwKIAkJCQkJICAgIHZhbHVlX2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3MK IAkJCQkJICAgICh0eXBlLCB2YWxhZGRyLCAwKSk7CiAJICAgICAgcmV0dXJu IGFkYV92YWxfcHJpbnRfMSAodGFyZ2V0X3R5cGUsIHZhbHVlX2NvbnRlbnRz ICh2KSwgMCwgMCwKLQkJCQkgICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVj dXJzZSArIDEsIHByZXR0eSk7CisJCQkJICAgICAgc3RyZWFtLCByZWN1cnNl ICsgMSwgb3B0aW9ucyk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgcmV0dXJu IGFkYV92YWxfcHJpbnRfMSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCiAJ CQkJICAgIHZhbGFkZHIwLCBlbWJlZGRlZF9vZmZzZXQsCi0JCQkJICAgIGFk ZHJlc3MsIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsCi0JCQkJICAgIHJl Y3Vyc2UsIHByZXR0eSk7CisJCQkJICAgIGFkZHJlc3MsIHN0cmVhbSwgcmVj dXJzZSwgb3B0aW9ucyk7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIGZvcm1h dCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7CisJICBpbnQg Zm9ybWF0ID0gKG9wdGlvbnMtPmZvcm1hdCA/IG9wdGlvbnMtPmZvcm1hdAor CQkJOiBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKIAkgIGlmIChmb3JtYXQp CiAJICAgIHsKLQkgICAgICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxh ZGRyLCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICAgICAgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCSAgICAg IG9wdHMuZm9ybWF0ID0gZm9ybWF0OworCSAgICAgIHByaW50X3NjYWxhcl9m b3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsICZvcHRzLCAwLCBzdHJlYW0pOwog CSAgICB9CiAgICAgICAgICAgZWxzZSBpZiAoYWRhX2lzX3N5c3RlbV9hZGRy ZXNzX3R5cGUgKHR5cGUpCiAJCSAgICYmIFRZUEVfT0JKRklMRSAodHlwZSkg IT0gTlVMTCkKQEAgLTgzMCw5ICs4MjQsOSBAQCBhZGFfdmFsX3ByaW50XzEg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkcjAs CiAJfQogCiAgICAgY2FzZSBUWVBFX0NPREVfRU5VTToKLSAgICAgIGlmIChm b3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0KQogCXsKLQkgIHBy aW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIGZvcm1hdCwg MCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFk ZHIsIHR5cGUsIG9wdGlvbnMsIDAsIHN0cmVhbSk7CiAJICBicmVhazsKIAl9 CiAgICAgICBsZW4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOwpAQCAtODYwLDE2 ICs4NTQsMTYgQEAgYWRhX3ZhbF9wcmludF8xIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAogICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIFRZUEVfQ09ERV9GTEFHUzoKLSAgICAgIGlmIChmb3JtYXQp Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBm b3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0 KQorCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIG9w dGlvbnMsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJdmFsX3ByaW50X3R5 cGVfY29kZV9mbGFncyAodHlwZSwgdmFsYWRkciwgc3RyZWFtKTsKICAgICAg IGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgotICAgICAgaWYg KGZvcm1hdCkKKyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQpCiAJcmV0dXJu IGNfdmFsX3ByaW50ICh0eXBlLCB2YWxhZGRyMCwgZW1iZWRkZWRfb2Zmc2V0 LCBhZGRyZXNzLCBzdHJlYW0sCi0JCQkgICAgZm9ybWF0LCBkZXJlZl9yZWYs IHJlY3Vyc2UsIHByZXR0eSk7CisJCQkgICAgcmVjdXJzZSwgb3B0aW9ucyk7 CiAgICAgICBlbHNlCiAJYWRhX3ByaW50X2Zsb2F0aW5nICh2YWxhZGRyMCAr IGVtYmVkZGVkX29mZnNldCwgdHlwZSwgc3RyZWFtKTsKICAgICAgIGJyZWFr OwpAQCAtODgzLDEzICs4NzcsMTMgQEAgYWRhX3ZhbF9wcmludF8xIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIwLAogCX0K ICAgICAgIGVsc2UKIAl7Ci0JICBwcmludF9yZWNvcmQgKHR5cGUsIHZhbGFk ZHIsIHN0cmVhbSwgZm9ybWF0LCByZWN1cnNlLCBwcmV0dHkpOworCSAgcHJp bnRfcmVjb3JkICh0eXBlLCB2YWxhZGRyLCBzdHJlYW0sIHJlY3Vyc2UsIG9w dGlvbnMpOwogCSAgcmV0dXJuIDA7CiAJfQogCiAgICAgY2FzZSBUWVBFX0NP REVfQVJSQVk6Ci0gICAgICByZXR1cm4gYWRhX3ZhbF9wcmludF9hcnJheSAo dHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLCBmb3JtYXQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVyZWZfcmVmLCByZWN1 cnNlLCBwcmV0dHkpOworICAgICAgcmV0dXJuIGFkYV92YWxfcHJpbnRfYXJy YXkgKHR5cGUsIHZhbGFkZHIsIGFkZHJlc3MsIHN0cmVhbSwKKwkJCQkgIHJl Y3Vyc2UsIG9wdGlvbnMpOwogCiAgICAgY2FzZSBUWVBFX0NPREVfUkVGOgog ICAgICAgLyogRm9yIHJlZmVyZW5jZXMsIHRoZSBkZWJ1Z2dlciBpcyBleHBl Y3RlZCB0byBwcmludCB0aGUgdmFsdWUgYXMKQEAgLTkxMCw4ICs5MDQsOCBA QCBhZGFfdmFsX3ByaW50XzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkcjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRlcmVmX3ZhbF9pbnQpKTsKICAgICAgICAgICAgICAgdmFsX3By aW50ICh2YWx1ZV90eXBlIChkZXJlZl92YWwpLAogICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlX2NvbnRlbnRzIChkZXJlZl92YWwpLCAwLAotICAg ICAgICAgICAgICAgICAgICAgICAgIFZBTFVFX0FERFJFU1MgKGRlcmVmX3Zh bCksIHN0cmVhbSwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg IGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSwgY3VycmVudF9sYW5n dWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgVkFMVUVfQUREUkVT UyAoZGVyZWZfdmFsKSwgc3RyZWFtLCByZWN1cnNlICsgMSwKKwkJCSBvcHRp b25zLCBjdXJyZW50X2xhbmd1YWdlKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICBmcHV0c19maWx0ZXJlZCAoIihudWxs KSIsIHN0cmVhbSk7CkBAIC05MjcsOCArOTIxLDggQEAgYWRhX3ZhbF9wcmlu dF8xIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIwLAogCiBzdGF0aWMgaW50CiBwcmludF92YXJpYW50X3BhcnQgKHN0cnVj dCB0eXBlICp0eXBlLCBpbnQgZmllbGRfbnVtLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKLQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBm b3JtYXQsIGludCByZWN1cnNlLAotCQkgICAgZW51bSB2YWxfcHJldHR5cHJp bnQgcHJldHR5LCBpbnQgY29tbWFfbmVlZGVkLAorCQkgICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCSAgICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywgaW50IGNvbW1hX25l ZWRlZCwKIAkJICAgIHN0cnVjdCB0eXBlICpvdXRlcl90eXBlLCBjb25zdCBn ZGJfYnl0ZSAqb3V0ZXJfdmFsYWRkcikKIHsKICAgc3RydWN0IHR5cGUgKnZh cl90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZF9udW0pOwpA QCAtOTQxLDEzICs5MzUsMTMgQEAgcHJpbnRfdmFyaWFudF9wYXJ0IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxkX251bSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAgICAgICAoVFlQRV9GSUVMRF9UWVBFICh2YXJfdHlwZSwg d2hpY2gpLAogICAgICAgIHZhbGFkZHIgKyBUWVBFX0ZJRUxEX0JJVFBPUyAo dHlwZSwgZmllbGRfbnVtKSAvIEhPU1RfQ0hBUl9CSVQKICAgICAgICArIFRZ UEVfRklFTERfQklUUE9TICh2YXJfdHlwZSwgd2hpY2gpIC8gSE9TVF9DSEFS X0JJVCwKLSAgICAgICBzdHJlYW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5 LAorICAgICAgIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywKICAgICAgICBj b21tYV9uZWVkZWQsIG91dGVyX3R5cGUsIG91dGVyX3ZhbGFkZHIpOwogfQog CiBpbnQKLWFkYV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwwLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgZW51bSB2 YWxfcHJldHR5cHJpbnQgcHJldHR5KQorYWRhX3ZhbHVlX3ByaW50IChzdHJ1 Y3QgdmFsdWUgKnZhbDAsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisJCSBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsK ICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIgPSB2YWx1ZV9jb250ZW50cyAo dmFsMCk7CiAgIENPUkVfQUREUiBhZGRyZXNzID0gVkFMVUVfQUREUkVTUyAo dmFsMCkgKyB2YWx1ZV9vZmZzZXQgKHZhbDApOwpAQCAtOTU1LDYgKzk0OSw3 IEBAIGFkYV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwwLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAogICAgIGFkYV90b19m aXhlZF90eXBlICh2YWx1ZV90eXBlICh2YWwwKSwgdmFsYWRkciwgYWRkcmVz cywgTlVMTCwgMSk7CiAgIHN0cnVjdCB2YWx1ZSAqdmFsID0KICAgICB2YWx1 ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzICh0eXBlLCB2YWxhZGRyLCBh ZGRyZXNzKTsKKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK IAogICAvKiBJZiBpdCBpcyBhIHBvaW50ZXIsIGluZGljYXRlIHdoYXQgaXQg cG9pbnRzIHRvLiAgKi8KICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX1BUUikKQEAgLTk4NCwyMSArOTc5LDIzIEBAIGFkYV92YWx1ZV9w cmludCAoc3RydWN0IHZhbHVlICp2YWwwLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBpbnQgZm9ybWF0LAogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg IG9wdHMgPSAqb3B0aW9uczsKKyAgb3B0cy5kZXJlZl9yZWYgPSAxOwogICBy ZXR1cm4gKHZhbF9wcmludCAodHlwZSwgdmFsdWVfY29udGVudHMgKHZhbCks IDAsIGFkZHJlc3MsCi0JCSAgICAgc3RyZWFtLCBmb3JtYXQsIDEsIDAsIHBy ZXR0eSwgY3VycmVudF9sYW5ndWFnZSkpOworCQkgICAgIHN0cmVhbSwgMCwg Jm9wdHMsIGN1cnJlbnRfbGFuZ3VhZ2UpKTsKIH0KIAogc3RhdGljIHZvaWQK IHByaW50X3JlY29yZCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAotCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCBmb3JtYXQsIGludCByZWN1cnNlLAotCSAgICAgIGVudW0gdmFsX3By ZXR0eXByaW50IHByZXR0eSkKKwkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBpbnQgcmVjdXJzZSwKKwkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgdHlwZSA9IGFkYV9jaGVj a190eXBlZGVmICh0eXBlKTsKIAogICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIoIik7CiAKLSAgaWYgKHByaW50X2ZpZWxkX3ZhbHVlcyAodHlwZSwg dmFsYWRkciwgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwKLQkJ CSAgMCwgdHlwZSwgdmFsYWRkcikgIT0gMCAmJiBwcmV0dHkpCisgIGlmIChw cmludF9maWVsZF92YWx1ZXMgKHR5cGUsIHZhbGFkZHIsIHN0cmVhbSwgcmVj dXJzZSwgb3B0aW9ucywKKwkJCSAgMCwgdHlwZSwgdmFsYWRkcikgIT0gMCAm JiBvcHRpb25zLT5wcmV0dHkpCiAgICAgewogICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiXG4iKTsKICAgICAgIHByaW50X3NwYWNlc19maWx0 ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CkBAIC0xMDA5LDcgKzEwMDYs NyBAQCBwcmludF9yZWNvcmQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKIAogLyogUHJpbnQgb3V0IGZpZWxkcyBvZiB2 YWx1ZSBhdCBWQUxBRERSIGhhdmluZyBzdHJ1Y3R1cmUgdHlwZSBUWVBFLgog Ci0gICBUWVBFLCBWQUxBRERSLCBTVFJFQU0sIEZPUk1BVCwgUkVDVVJTRSwg YW5kIFBSRVRUWSBoYXZlIHRoZQorICAgVFlQRSwgVkFMQUREUiwgU1RSRUFN LCBSRUNVUlNFLCBhbmQgT1BUSU9OUyBoYXZlIHRoZQogICAgc2FtZSBtZWFu aW5ncyBhcyBpbiBhZGFfcHJpbnRfdmFsdWUgYW5kIGFkYV92YWxfcHJpbnQu CiAKICAgIE9VVEVSX1RZUEUgYW5kIE9VVEVSX1ZBTEFERFIgZ2l2ZSB0eXBl IGFuZCBhZGRyZXNzIG9mIGVuY2xvc2luZyByZWNvcmQKQEAgLTEwMjMsOCAr MTAyMCw5IEBAIHByaW50X3JlY29yZCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCiBzdGF0aWMgaW50CiBwcmludF9m aWVsZF92YWx1ZXMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKLQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBmb3JtYXQsIGludCByZWN1cnNlLAotCQkgICAgZW51bSB2YWxfcHJldHR5 cHJpbnQgcHJldHR5LCBpbnQgY29tbWFfbmVlZGVkLAorCQkgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCSAgICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKKwkJICAgIGlu dCBjb21tYV9uZWVkZWQsCiAJCSAgICBzdHJ1Y3QgdHlwZSAqb3V0ZXJfdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKm91dGVyX3ZhbGFkZHIpCiB7CiAgIGludCBp LCBsZW47CkBAIC0xMDQyLDcgKzEwNDAsNyBAQCBwcmludF9maWVsZF92YWx1 ZXMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKIAkgICAgcHJpbnRfZmllbGRfdmFsdWVzIChUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGkpLAogCQkJCXZhbGFkZHIKIAkJCQkrIFRZUEVfRklFTERfQklU UE9TICh0eXBlLCBpKSAvIEhPU1RfQ0hBUl9CSVQsCi0JCQkJc3RyZWFtLCBm b3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwKKwkJCQlzdHJlYW0sIHJlY3Vyc2Us IG9wdGlvbnMsCiAJCQkJY29tbWFfbmVlZGVkLCB0eXBlLCB2YWxhZGRyKTsK IAkgIGNvbnRpbnVlOwogCX0KQEAgLTEwNTAsNyArMTA0OCw3IEBAIHByaW50 X2ZpZWxkX3ZhbHVlcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAogCXsKIAkgIGNvbW1hX25lZWRlZCA9CiAJICAgIHBy aW50X3ZhcmlhbnRfcGFydCAodHlwZSwgaSwgdmFsYWRkciwKLQkJCQlzdHJl YW0sIGZvcm1hdCwgcmVjdXJzZSwgcHJldHR5LCBjb21tYV9uZWVkZWQsCisJ CQkJc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBjb21tYV9uZWVkZWQsCiAJ CQkJb3V0ZXJfdHlwZSwgb3V0ZXJfdmFsYWRkcik7CiAJICBjb250aW51ZTsK IAl9CkBAIC0xMDU5LDcgKzEwNTcsNyBAQCBwcmludF9maWVsZF92YWx1ZXMg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK IAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwogICAgICAgY29t bWFfbmVlZGVkID0gMTsKIAotICAgICAgaWYgKHByZXR0eSkKKyAgICAgIGlm IChvcHRpb25zLT5wcmV0dHkpCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiXG4iKTsKIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAr IDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtMTA2OCw3ICsxMDY2LDcgQEAg cHJpbnRfZmllbGRfdmFsdWVzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsCiAJewogCSAgd3JhcF9oZXJlIChuX3NwYWNl cyAoMiArIDIgKiByZWN1cnNlKSk7CiAJfQotICAgICAgaWYgKGluc3BlY3Rf aXQpCisgICAgICBpZiAob3B0aW9ucy0+aW5zcGVjdF9pdCkKIAl7CiAJICBp ZiAoVFlQRV9DT0RFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSA9PSBU WVBFX0NPREVfUFRSKQogCSAgICBmcHV0c19maWx0ZXJlZCAoIlwiKCBwdHIg XCIiLCBzdHJlYW0pOwpAQCAtMTEwNyw2ICsxMTA1LDcgQEAgcHJpbnRfZmll bGRfdmFsdWVzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCiAJICAgIHsKIAkgICAgICBpbnQgYml0X3BvcyA9IFRZUEVf RklFTERfQklUUE9TICh0eXBlLCBpKTsKIAkgICAgICBpbnQgYml0X3NpemUg PSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkpOworCSAgICAgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKIAkgICAgICBhZGp1c3Rf dHlwZV9zaWduZWRuZXNzIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKTsK IAkgICAgICB2ID0gYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChO VUxMLCB2YWxhZGRyLApAQCAtMTExNCwxNSArMTExMywyMCBAQCBwcmludF9m aWVsZF92YWx1ZXMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKIAkJCQkJCSAgYml0X3BvcyAlIEhPU1RfQ0hBUl9CSVQs CiAJCQkJCQkgIGJpdF9zaXplLAogCQkJCQkJICBUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGkpKTsKKwkgICAgICBvcHRzID0gKm9wdGlvbnM7CisJICAgICAg b3B0cy5kZXJlZl9yZWYgPSAwOwogCSAgICAgIHZhbF9wcmludCAoVFlQRV9G SUVMRF9UWVBFICh0eXBlLCBpKSwgdmFsdWVfY29udGVudHMgKHYpLCAwLCAw LAotCQkJIHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNlICsgMSwgcHJldHR5 LAotCQkJIGN1cnJlbnRfbGFuZ3VhZ2UpOworCQkJIHN0cmVhbSwgcmVjdXJz ZSArIDEsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKIAkgICAgfQogCX0K ICAgICAgIGVsc2UKLQlhZGFfdmFsX3ByaW50IChUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGkpLAotCQkgICAgICAgdmFsYWRkciArIFRZUEVfRklFTERfQklU UE9TICh0eXBlLCBpKSAvIEhPU1RfQ0hBUl9CSVQsCi0JCSAgICAgICAwLCAw LCBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEsIHByZXR0eSk7CisJ eworCSAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRp b25zOworCSAgb3B0cy5kZXJlZl9yZWYgPSAwOworCSAgYWRhX3ZhbF9wcmlu dCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwKKwkJCSB2YWxhZGRyICsg VFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gSE9TVF9DSEFSX0JJVCwK KwkJCSAwLCAwLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLCAmb3B0cyk7CisJfQog ICAgICAgYW5ub3RhdGVfZmllbGRfZW5kICgpOwogICAgIH0KIApkaWZmIC0t Z2l0IGEvZ2RiL2F1eHYuYyBiL2dkYi9hdXh2LmMKaW5kZXggYWZjN2ZkZC4u MTIxYTc0OSAxMDA2NDQKLS0tIGEvZ2RiL2F1eHYuYworKysgYi9nZGIvYXV4 di5jCkBAIC0xNzIsNyArMTcyLDYgQEAgZnByaW50X3RhcmdldF9hdXh2IChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydWN0IHRhcmdldF9vcHMgKm9wcykK IAogICB3aGlsZSAodGFyZ2V0X2F1eHZfcGFyc2UgKG9wcywgJnB0ciwgZGF0 YSArIGxlbiwgJnR5cGUsICZ2YWwpID4gMCkKICAgICB7Ci0gICAgICBleHRl cm4gaW50IGFkZHJlc3NwcmludDsKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUg PSAiPz8/IjsKICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uID0gIiI7 CiAgICAgICBlbnVtIHsgZGVjLCBoZXgsIHN0ciB9IGZsYXZvciA9IGhleDsK QEAgLTI0MCwxMCArMjM5LDE0IEBAIGZwcmludF90YXJnZXRfYXV4diAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCB0YXJnZXRfb3BzICpvcHMpCiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCAiMHglc1xuIiwgcGFkZHJfbnog KHZhbCkpOwogCSAgYnJlYWs7CiAJY2FzZSBzdHI6Ci0JICBpZiAoYWRkcmVz c3ByaW50KQotCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCAiMHglcyIs IHBhZGRyX256ICh2YWwpKTsKLQkgIHZhbF9wcmludF9zdHJpbmcgKHZhbCwg LTEsIDEsIGZpbGUpOwotCSAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgIlxu Iik7CisJICB7CisJICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9w dHM7CisJICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKwkg ICAgaWYgKG9wdHMuYWRkcmVzc3ByaW50KQorCSAgICAgIGZwcmludGZfZmls dGVyZWQgKGZpbGUsICIweCVzIiwgcGFkZHJfbnogKHZhbCkpOworCSAgICB2 YWxfcHJpbnRfc3RyaW5nICh2YWwsIC0xLCAxLCBmaWxlLCAmb3B0cyk7CisJ ICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsICJcbiIpOworCSAgfQogCSAg YnJlYWs7CiAJfQogICAgICAgKytlbnRzOwpkaWZmIC0tZ2l0IGEvZ2RiL2Jy ZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKaW5kZXggMTgwZjZjOS4u MDFiMjk5MCAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9n ZGIvYnJlYWtwb2ludC5jCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAi YWRhLWxhbmcuaCIKICNpbmNsdWRlICJ0b3AuaCIKICNpbmNsdWRlICJ3cmFw cGVyLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogI2luY2x1ZGUgIm1p L21pLWNvbW1vbi5oIgogCkBAIC0yODMsOCArMjg0LDYgQEAgYnJlYWtwb2lu dHNfYWx3YXlzX2luc2VydGVkX21vZGUgKHZvaWQpCiAKIHZvaWQgX2luaXRp YWxpemVfYnJlYWtwb2ludCAodm9pZCk7CiAKLWV4dGVybiBpbnQgYWRkcmVz c3ByaW50OwkvKiBQcmludCBtYWNoaW5lIGFkZHJlc3Nlcz8gKi8KLQogLyog QXJlIHdlIGV4ZWN1dGluZyBicmVha3BvaW50IGNvbW1hbmRzPyAgKi8KIHN0 YXRpYyBpbnQgZXhlY3V0aW5nX2JyZWFrcG9pbnRfY29tbWFuZHM7CiAKQEAg LTIyNTksNyArMjI1OCwxMSBAQCB3YXRjaHBvaW50X3ZhbHVlX3ByaW50IChz dHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAg aWYgKHZhbCA9PSBOVUxMKQogICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3Ry ZWFtLCBfKCI8dW5yZWFkYWJsZT4iKSk7CiAgIGVsc2UKLSAgICB2YWx1ZV9w cmludCAodmFsLCBzdHJlYW0sIDAsIFZhbF9wcmV0dHlfZGVmYXVsdCk7Cisg ICAgeworICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK KyAgICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKyAgICAg IHZhbHVlX3ByaW50ICh2YWwsIHN0cmVhbSwgJm9wdHMpOworICAgIH0KIH0K IAogLyogVGhpcyBpcyB0aGUgbm9ybWFsIHByaW50IGZ1bmN0aW9uIGZvciBh IGJwc3RhdC4gIEluIHRoZSBmdXR1cmUsCkBAIC0zNTc3LDYgKzM1ODAsOSBA QCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIsCiAKICAgaW50IGhlYWRlcl9vZl9tdWx0aXBsZSA9IDA7CiAg IGludCBwYXJ0X29mX211bHRpcGxlID0gKGxvYyAhPSBOVUxMKTsKKyAgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKworICBnZXRfdXNlcl9w cmludF9vcHRpb25zICgmb3B0cyk7CiAKICAgZ2RiX2Fzc2VydCAoIWxvYyB8 fCBsb2NfbnVtYmVyICE9IDApOwogICAvKiBTZWUgY29tbWVudCBpbiBwcmlu dF9vbmVfYnJlYWtwb2ludCBjb25jZXJuaW5nCkBAIC0zNjQwLDcgKzM2NDYs NyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCiAgIAogICAvKiA1IGFuZCA2ICovCiAgIHN0cmNweSAo d3JhcF9pbmRlbnQsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsK LSAgaWYgKGFkZHJlc3NwcmludCkKKyAgaWYgKG9wdHMuYWRkcmVzc3ByaW50 KQogICAgIHsKICAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChjdXJyZW50 X2dkYmFyY2gpIDw9IDMyKQogCXN0cmNhdCAod3JhcF9pbmRlbnQsICIgICAg ICAgICAgICIpOwpAQCAtMzY3Miw3ICszNjc4LDcgQEAgcHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogCS8q IEZpZWxkIDQsIHRoZSBhZGRyZXNzLCBpcyBvbWl0dGVkICh3aGljaCBtYWtl cyB0aGUgY29sdW1ucwogCSAgIG5vdCBsaW5lIHVwIHRvbyBuaWNlbHkgd2l0 aCB0aGUgaGVhZGVycywgYnV0IHRoZSBlZmZlY3QKIAkgICBpcyByZWxhdGl2 ZWx5IHJlYWRhYmxlKS4gICovCi0JaWYgKGFkZHJlc3NwcmludCkKKwlpZiAo b3B0cy5hZGRyZXNzcHJpbnQpCiAJICB1aV9vdXRfZmllbGRfc2tpcCAodWlv dXQsICJhZGRyIik7CiAJYW5ub3RhdGVfZmllbGQgKDUpOwogCXByaW50X2V4 cHJlc3Npb24gKGItPmV4cCwgc3RiLT5zdHJlYW0pOwpAQCAtMzY4NCw3ICsz NjkwLDcgQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVj dCBicmVha3BvaW50ICpiLAogCS8qIEZpZWxkIDQsIHRoZSBhZGRyZXNzLCBp cyBvbWl0dGVkICh3aGljaCBtYWtlcyB0aGUgY29sdW1ucwogCSAgIG5vdCBs aW5lIHVwIHRvbyBuaWNlbHkgd2l0aCB0aGUgaGVhZGVycywgYnV0IHRoZSBl ZmZlY3QKIAkgICBpcyByZWxhdGl2ZWx5IHJlYWRhYmxlKS4gICovCi0JaWYg KGFkZHJlc3NwcmludCkKKwlpZiAob3B0cy5hZGRyZXNzcHJpbnQpCiAJICB1 aV9vdXRfZmllbGRfc2tpcCAodWlvdXQsICJhZGRyIik7CiAJYW5ub3RhdGVf ZmllbGQgKDUpOwogCWlmIChiLT5kbGxfcGF0aG5hbWUgPT0gTlVMTCkKQEAg LTM3MDQsNyArMzcxMCw3IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0 aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKIAkvKiBGaWVsZCA0LCB0aGUg YWRkcmVzcywgaXMgb21pdHRlZCAod2hpY2ggbWFrZXMgdGhlIGNvbHVtbnMK IAkgICBub3QgbGluZSB1cCB0b28gbmljZWx5IHdpdGggdGhlIGhlYWRlcnMs IGJ1dCB0aGUgZWZmZWN0CiAJICAgaXMgcmVsYXRpdmVseSByZWFkYWJsZSku ICAqLwotCWlmIChhZGRyZXNzcHJpbnQpCisJaWYgKG9wdHMuYWRkcmVzc3By aW50KQogCSAgdWlfb3V0X2ZpZWxkX3NraXAgKHVpb3V0LCAiYWRkciIpOwog CWFubm90YXRlX2ZpZWxkICg1KTsKIAlpZiAoYi0+ZXhlY19wYXRobmFtZSAh PSBOVUxMKQpAQCAtMzcyNyw3ICszNzMzLDcgQEAgcHJpbnRfb25lX2JyZWFr cG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAg Y2FzZSBicF9zaGxpYl9ldmVudDoKICAgICAgIGNhc2UgYnBfdGhyZWFkX2V2 ZW50OgogICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgotCWlmIChhZGRy ZXNzcHJpbnQpCisJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQogCSAgewogCSAg ICBhbm5vdGF0ZV9maWVsZCAoNCk7CiAJICAgIGlmIChoZWFkZXJfb2ZfbXVs dGlwbGUpCkBAIC0zOTMzLDcgKzM5MzksMTAgQEAgYnJlYWtwb2ludF8xIChp bnQgYm51bSwgaW50IGFsbGZsYWcpCiAgIENPUkVfQUREUiBsYXN0X2FkZHIg PSAoQ09SRV9BRERSKSAtMTsKICAgaW50IG5yX3ByaW50YWJsZV9icmVha3Bv aW50czsKICAgc3RydWN0IGNsZWFudXAgKmJrcHR0YmxfY2hhaW47CisgIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgIAorICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CisKICAgLyogQ29tcHV0ZSB0aGUg bnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlLiAqLwogICBucl9wcmludGFi bGVfYnJlYWtwb2ludHMgPSAwOwogICBBTExfQlJFQUtQT0lOVFMgKGIpCkBA IC0zOTQ0LDcgKzM5NTMsNyBAQCBicmVha3BvaW50XzEgKGludCBibnVtLCBp bnQgYWxsZmxhZykKIAkgIG5yX3ByaW50YWJsZV9icmVha3BvaW50cysrOwog ICAgICAgfQogCi0gIGlmIChhZGRyZXNzcHJpbnQpCisgIGlmIChvcHRzLmFk ZHJlc3NwcmludCkKICAgICBia3B0dGJsX2NoYWluIAogICAgICAgPSBtYWtl X2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDYsIG5y X3ByaW50YWJsZV9icmVha3BvaW50cywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJCcmVha3BvaW50VGFibGUiKTsK QEAgLTM5NjcsNyArMzk3Niw3IEBAIGJyZWFrcG9pbnRfMSAoaW50IGJudW0s IGludCBhbGxmbGFnKQogICBpZiAobnJfcHJpbnRhYmxlX2JyZWFrcG9pbnRz ID4gMCkKICAgICBhbm5vdGF0ZV9maWVsZCAoMyk7CiAgIHVpX291dF90YWJs ZV9oZWFkZXIgKHVpb3V0LCAzLCB1aV9sZWZ0LCAiZW5hYmxlZCIsICJFbmIi KTsJLyogNCAqLwotICBpZiAoYWRkcmVzc3ByaW50KQorICBpZiAob3B0cy5h ZGRyZXNzcHJpbnQpCiAJewogCSAgaWYgKG5yX3ByaW50YWJsZV9icmVha3Bv aW50cyA+IDApCiAJICAgIGFubm90YXRlX2ZpZWxkICg0KTsKQEAgLTQ3NjAs MTAgKzQ3NjksMTQgQEAgcHJpbnRfaXRfY2F0Y2hfZm9yayAoc3RydWN0IGJy ZWFrcG9pbnQgKmIpCiBzdGF0aWMgdm9pZAogcHJpbnRfb25lX2NhdGNoX2Zv cmsgKHN0cnVjdCBicmVha3BvaW50ICpiLCBDT1JFX0FERFIgKmxhc3RfYWRk cikKIHsKKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKwor ICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisKICAgLyogRmll bGQgNCwgdGhlIGFkZHJlc3MsIGlzIG9taXR0ZWQgKHdoaWNoIG1ha2VzIHRo ZSBjb2x1bW5zCiAgICAgIG5vdCBsaW5lIHVwIHRvbyBuaWNlbHkgd2l0aCB0 aGUgaGVhZGVycywgYnV0IHRoZSBlZmZlY3QKICAgICAgaXMgcmVsYXRpdmVs eSByZWFkYWJsZSkuICAqLwotICBpZiAoYWRkcmVzc3ByaW50KQorICBpZiAo b3B0cy5hZGRyZXNzcHJpbnQpCiAgICAgdWlfb3V0X2ZpZWxkX3NraXAgKHVp b3V0LCAiYWRkciIpOwogICBhbm5vdGF0ZV9maWVsZCAoNSk7CiAgIHVpX291 dF90ZXh0ICh1aW91dCwgImZvcmsiKTsKQEAgLTQ4MzgsMTAgKzQ4NTEsMTMg QEAgcHJpbnRfaXRfY2F0Y2hfdmZvcmsgKHN0cnVjdCBicmVha3BvaW50ICpi KQogc3RhdGljIHZvaWQKIHByaW50X29uZV9jYXRjaF92Zm9yayAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsIENPUkVfQUREUiAqbGFzdF9hZGRyKQogeworICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCisgIGdldF91c2Vy X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKICAgLyogRmllbGQgNCwgdGhlIGFk ZHJlc3MsIGlzIG9taXR0ZWQgKHdoaWNoIG1ha2VzIHRoZSBjb2x1bW5zCiAg ICAgIG5vdCBsaW5lIHVwIHRvbyBuaWNlbHkgd2l0aCB0aGUgaGVhZGVycywg YnV0IHRoZSBlZmZlY3QKICAgICAgaXMgcmVsYXRpdmVseSByZWFkYWJsZSku ICAqLwotICBpZiAoYWRkcmVzc3ByaW50KQorICBpZiAob3B0cy5hZGRyZXNz cHJpbnQpCiAgICAgdWlfb3V0X2ZpZWxkX3NraXAgKHVpb3V0LCAiYWRkciIp OwogICBhbm5vdGF0ZV9maWVsZCAoNSk7CiAgIHVpX291dF90ZXh0ICh1aW91 dCwgInZmb3JrIik7CkBAIC01MDcyLDYgKzUwODgsOSBAQCBtZW50aW9uIChz dHJ1Y3QgYnJlYWtwb2ludCAqYikKICAgaW50IHNheV93aGVyZSA9IDA7CiAg IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4sICp1aV9vdXRfY2hhaW47CiAg IHN0cnVjdCB1aV9zdHJlYW0gKnN0YjsKKyAgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgb3B0czsKKworICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgm b3B0cyk7CiAKICAgc3RiID0gdWlfb3V0X3N0cmVhbV9uZXcgKHVpb3V0KTsK ICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF9zdHJlYW1fZGVs ZXRlIChzdGIpOwpAQCAtNTE4NCw3ICs1MjAzLDcgQEAgbWVudGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIpCiAJfQogICAgICAgZWxzZQogCXsKLQkgIGlm IChhZGRyZXNzcHJpbnQgfHwgYi0+c291cmNlX2ZpbGUgPT0gTlVMTCkKKwkg IGlmIChvcHRzLmFkZHJlc3NwcmludCB8fCBiLT5zb3VyY2VfZmlsZSA9PSBO VUxMKQogCSAgICB7CiAJICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiIGF0ICIp OwogCSAgICAgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoYi0+bG9jLT5h ZGRyZXNzKSwgZ2RiX3N0ZG91dCk7CkBAIC02NzQ2LDcgKzY3NjUsOSBAQCBw cmludF9leGNlcHRpb25fY2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCiBzdGF0aWMgdm9pZAogcHJpbnRfb25lX2V4Y2VwdGlvbl9jYXRjaHBv aW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgQ09SRV9BRERSICpsYXN0X2Fk ZHIpCiB7Ci0gIGlmIChhZGRyZXNzcHJpbnQpCisgIHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zIG9wdHM7CisgIGdldF91c2VyX3ByaW50X29wdGlvbnMg KCZvcHRzKTsKKyAgaWYgKG9wdHMuYWRkcmVzc3ByaW50KQogICAgIHsKICAg ICAgIGFubm90YXRlX2ZpZWxkICg0KTsKICAgICAgIGlmIChiLT5sb2MgPT0g TlVMTCB8fCBiLT5sb2MtPnNobGliX2Rpc2FibGVkKQpkaWZmIC0tZ2l0IGEv Z2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5jCmluZGV4IGE5NzhiMTcuLjA2 N2U0MjkgMTAwNjQ0Ci0tLSBhL2dkYi9jLWxhbmcuYworKysgYi9nZGIvYy1s YW5nLmMKQEAgLTg2LDcgKzg2LDggQEAgY19wcmludGNoYXIgKGludCBjLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogCiB2b2lkCiBjX3ByaW50c3RyIChz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5n LAotCSAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgsIGludCBm b3JjZV9lbGxpcHNlcykKKwkgICAgdW5zaWduZWQgaW50IGxlbmd0aCwgaW50 IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMsCisJICAgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogICB1bnNpZ25l ZCBpbnQgaTsKICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsK QEAgLTEwOCw3ICsxMDksNyBAQCBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogICAgICAgcmV0 dXJuOwogICAgIH0KIAotICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoICYmIHRo aW5nc19wcmludGVkIDwgcHJpbnRfbWF4OyArK2kpCisgIGZvciAoaSA9IDA7 IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRpb25zLT5wcmlu dF9tYXg7ICsraSkKICAgICB7CiAgICAgICAvKiBQb3NpdGlvbiBvZiB0aGUg Y2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcKICAgICAgICAgIHRvIHNlZSB3 aGV0aGVyIGl0IGlzIHJlcGVhdGVkLiAgKi8KQEAgLTEzNywxMSArMTM4LDEx IEBAIGNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0 IGdkYl9ieXRlICpzdHJpbmcsCiAJICArK3JlcHM7CiAJfQogCi0gICAgICBp ZiAocmVwcyA+IHJlcGVhdF9jb3VudF90aHJlc2hvbGQpCisgICAgICBpZiAo cmVwcyA+IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQpCiAJewog CSAgaWYgKGluX3F1b3RlcykKIAkgICAgewotCSAgICAgIGlmIChpbnNwZWN0 X2l0KQorCSAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCQlmcHV0 c19maWx0ZXJlZCAoIlxcXCIsICIsIHN0cmVhbSk7CiAJICAgICAgZWxzZQog CQlmcHV0c19maWx0ZXJlZCAoIlwiLCAiLCBzdHJlYW0pOwpAQCAtMTUwLDE0 ICsxNTEsMTQgQEAgY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKIAkgIExBX1BSSU5UX0NIQVIg KGN1cnJlbnRfY2hhciwgc3RyZWFtKTsKIAkgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgXygiIDxyZXBlYXRzICV1IHRpbWVzPiIpLCByZXBzKTsKIAkg IGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVkICs9IHJlcGVhdF9j b3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRpb25z LT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVlZF9jb21tYSA9IDE7 CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5fcXVvdGVzKQogCSAg ICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlv bnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIsIHN0 cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiIiwg c3RyZWFtKTsKQEAgLTE3MSw3ICsxNzIsNyBAQCBjX3ByaW50c3RyIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAog ICAvKiBUZXJtaW5hdGUgdGhlIHF1b3RlcyBpZiBuZWNlc3NhcnkuICAqLwog ICBpZiAoaW5fcXVvdGVzKQogICAgIHsKLSAgICAgIGlmIChpbnNwZWN0X2l0 KQorICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJZnB1dHNfZmls dGVyZWQgKCJcXFwiIiwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlmcHV0c19m aWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsKZGlmZiAtLWdpdCBhL2dkYi9jLWxh bmcuaCBiL2dkYi9jLWxhbmcuaAppbmRleCBmZTE5MzlhLi5jYzlhYmRlIDEw MDY0NAotLS0gYS9nZGIvYy1sYW5nLmgKKysrIGIvZ2RiL2MtbGFuZy5oCkBA IC00MCwxMSArNDAsMTEgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlIChz dHJ1Y3QgdHlwZSAqLCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwK IGV4dGVybiB2b2lkIGNfcHJpbnRfdHlwZWRlZiAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHN5bWJvbCAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKIAogZXh0ZXJu IGludCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5 dGUgKiwgaW50LCBDT1JFX0FERFIsCi0JCQlzdHJ1Y3QgdWlfZmlsZSAqLCBp bnQsIGludCwgaW50LAotCQkJZW51bSB2YWxfcHJldHR5cHJpbnQpOworCQkJ c3RydWN0IHVpX2ZpbGUgKiwgaW50LAorCQkJY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKik7CiAKLWV4dGVybiBpbnQgY192YWx1ZV9wcmlu dCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLQkJ CSAgZW51bSB2YWxfcHJldHR5cHJpbnQpOworZXh0ZXJuIGludCBjX3ZhbHVl X3ByaW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKKwkJ CSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIC8q IFRoZXNlIGFyZSBpbiBjLWxhbmcuYzogKi8KIApAQCAtNTIsNyArNTIsOCBA QCBleHRlcm4gdm9pZCBjX3ByaW50Y2hhciAoaW50LCBzdHJ1Y3QgdWlfZmls ZSAqKTsKIAogZXh0ZXJuIHZvaWQgY19wcmludHN0ciAoc3RydWN0IHVpX2Zp bGUgKiBzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJCQl1bnNp Z25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lkdGgsCi0JCQlpbnQgZm9yY2VfZWxs aXBzZXMpOworCQkJaW50IGZvcmNlX2VsbGlwc2VzLAorCQkJY29uc3Qgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwogCiBleHRlcm4g dm9pZCBzY2FuX21hY3JvX2V4cGFuc2lvbiAoY2hhciAqZXhwYW5zaW9uKTsK IGV4dGVybiBpbnQgc2Nhbm5pbmdfbWFjcm9fZXhwYW5zaW9uICh2b2lkKTsK QEAgLTcwLDE3ICs3MSwxMyBAQCBleHRlcm4gdm9pZCBjX3R5cGVfcHJpbnRf YmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBp bnQpOwogCiAvKiBUaGVzZSBhcmUgaW4gY3AtdmFscHJpbnQuYyAqLwogCi1l eHRlcm4gaW50IHZ0YmxwcmludDsJCS8qIENvbnRyb2xzIHByaW50aW5nIG9m IHZ0YmwncyAqLwotCi1leHRlcm4gaW50IHN0YXRpY19maWVsZF9wcmludDsK LQogZXh0ZXJuIHZvaWQgY3BfcHJpbnRfY2xhc3NfbWVtYmVyIChjb25zdCBn ZGJfYnl0ZSAqLCBzdHJ1Y3QgdHlwZSAqLAogCQkJCSAgIHN0cnVjdCB1aV9m aWxlICosIGNoYXIgKik7CiAKIGV4dGVybiB2b2lkIGNwX3ByaW50X3ZhbHVl X2ZpZWxkcyAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKIAkJCQkg ICBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKIAkJCQkgICBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0JCQkJICAgaW50LCBlbnVtIHZhbF9w cmV0dHlwcmludCwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqLAogCQkJCSAgIHN0cnVjdCB0eXBlICoqLCBpbnQpOwogCiBl eHRlcm4gaW50IGNwX2lzX3Z0YmxfcHRyX3R5cGUgKHN0cnVjdCB0eXBlICop OwpkaWZmIC0tZ2l0IGEvZ2RiL2MtdmFscHJpbnQuYyBiL2dkYi9jLXZhbHBy aW50LmMKaW5kZXggMWRmZjZjYi4uYjYzOWU4YiAxMDA2NDQKLS0tIGEvZ2Ri L2MtdmFscHJpbnQuYworKysgYi9nZGIvYy12YWxwcmludC5jCkBAIC0zNiw3 ICszNiw4IEBACiAgICBzdHJlYW0gU1RSRUFNLiAgKi8KIAogc3RhdGljIHZv aWQKLXByaW50X2Z1bmN0aW9uX3BvaW50ZXJfYWRkcmVzcyAoQ09SRV9BRERS IGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitwcmludF9mdW5j dGlvbl9wb2ludGVyX2FkZHJlc3MgKENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLAorCQkJCWludCBhZGRyZXNzcHJpbnQpCiB7 CiAgIENPUkVfQUREUiBmdW5jX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChjdXJyZW50X2dkYmFyY2gsCiAJCQkJCQkJICAg IGFkZHJlc3MsCkBAIC0xMDIsMjEgKzEwMywxNSBAQCB0ZXh0dWFsX2VsZW1l bnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNoYXIgZm9ybWF0KQogCiAv KiBQcmludCBkYXRhIG9mIHR5cGUgVFlQRSBsb2NhdGVkIGF0IFZBTEFERFIg KHdpdGhpbiBHREIpLCB3aGljaCBjYW1lIGZyb20KICAgIHRoZSBpbmZlcmlv ciBhdCBhZGRyZXNzIEFERFJFU1MsIG9udG8gc3RkaW8gc3RyZWFtIFNUUkVB TSBhY2NvcmRpbmcgdG8KLSAgIEZPUk1BVCAoYSBsZXR0ZXIgb3IgMCBmb3Ig bmF0dXJhbCBmb3JtYXQpLiAgVGhlIGRhdGEgYXQgVkFMQUREUiBpcyBpbgot ICAgdGFyZ2V0IGJ5dGUgb3JkZXIuCisgICBPUFRJT05TLiAgVGhlIGRhdGEg YXQgVkFMQUREUiBpcyBpbiB0YXJnZXQgYnl0ZSBvcmRlci4KIAogICAgSWYg dGhlIGRhdGEgYXJlIGEgc3RyaW5nIHBvaW50ZXIsIHJldHVybnMgdGhlIG51 bWJlciBvZiBzdHJpbmcgY2hhcmFjdGVycwotICAgcHJpbnRlZC4KLQotICAg SWYgREVSRUZfUkVGIGlzIG5vbnplcm8sIHRoZW4gZGVyZWZlcmVuY2UgcmVm ZXJlbmNlcywgb3RoZXJ3aXNlIGp1c3QgcHJpbnQKLSAgIHRoZW0gbGlrZSBw b2ludGVycy4KLQotICAgVGhlIFBSRVRUWSBwYXJhbWV0ZXIgY29udHJvbHMg cHJldHR5cHJpbnRpbmcuICAqLworICAgcHJpbnRlZC4gICovCiAKIGludAog Y192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKLQkgICAgIENPUkVf QUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9y bWF0LAotCSAgICAgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsIGVudW0g dmFsX3ByZXR0eXByaW50IHByZXR0eSkKKwkgICAgIENPUkVfQUREUiBhZGRy ZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKwkg ICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z KQogewogICB1bnNpZ25lZCBpbnQgaSA9IDA7CS8qIE51bWJlciBvZiBjaGFy YWN0ZXJzIHByaW50ZWQgKi8KICAgdW5zaWduZWQgbGVuOwpAQCAtMTM0LDI5 ICsxMjksMjkgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwK IAl7CiAJICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAoZWx0dHlwZSk7CiAJICBs ZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLyBlbHRsZW47Ci0JICBpZiAocHJl dHR5cHJpbnRfYXJyYXlzKQorCSAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50 X2FycmF5cykKIAkgICAgewogCSAgICAgIHByaW50X3NwYWNlc19maWx0ZXJl ZCAoMiArIDIgKiByZWN1cnNlLCBzdHJlYW0pOwogCSAgICB9CiAKIAkgIC8q IFByaW50IGFycmF5cyBvZiB0ZXh0dWFsIGNoYXJzIHdpdGggYSBzdHJpbmcg c3ludGF4LiAgKi8KLSAgICAgICAgICBpZiAodGV4dHVhbF9lbGVtZW50X3R5 cGUgKGVsdHR5cGUsIGZvcm1hdCkpCisgICAgICAgICAgaWYgKHRleHR1YWxf ZWxlbWVudF90eXBlIChlbHR0eXBlLCBvcHRpb25zLT5mb3JtYXQpKQogCSAg ICB7CiAJICAgICAgLyogSWYgcmVxdWVzdGVkLCBsb29rIGZvciB0aGUgZmly c3QgbnVsbCBjaGFyIGFuZCBvbmx5IHByaW50CiAJICAgICAgICAgZWxlbWVu dHMgdXAgdG8gaXQuICAqLwotCSAgICAgIGlmIChzdG9wX3ByaW50X2F0X251 bGwpCisJICAgICAgaWYgKG9wdGlvbnMtPnN0b3BfcHJpbnRfYXRfbnVsbCkK IAkJewogCQkgIHVuc2lnbmVkIGludCB0ZW1wX2xlbjsKIAogCQkgIC8qIExv b2sgZm9yIGEgTlVMTCBjaGFyLiAqLwogCQkgIGZvciAodGVtcF9sZW4gPSAw OwogCQkgICAgICAgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpW3RlbXBf bGVuXQotCQkgICAgICAgJiYgdGVtcF9sZW4gPCBsZW4gJiYgdGVtcF9sZW4g PCBwcmludF9tYXg7CisJCSAgICAgICAmJiB0ZW1wX2xlbiA8IGxlbiAmJiB0 ZW1wX2xlbiA8IG9wdGlvbnMtPnByaW50X21heDsKIAkJICAgICAgIHRlbXBf bGVuKyspOwogCQkgIGxlbiA9IHRlbXBfbGVuOwogCQl9CiAKLQkgICAgICBM QV9QUklOVF9TVFJJTkcgKHN0cmVhbSwgdmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwgbGVuLCBlbHRsZW4sIDApOworCSAgICAgIExBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIGVs dGxlbiwgMCwgb3B0aW9ucyk7CiAJICAgICAgaSA9IGxlbjsKIAkgICAgfQog CSAgZWxzZQpAQCAtMTc0LDcgKzE2OSw3IEBAIGNfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCiAJCSAgaSA9IDA7CiAJCX0KIAkgICAgICB2YWxf cHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLQkJCQkgICAgIGZvcm1hdCwg ZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHksIGkpOworCQkJCQlyZWN1cnNl LCBvcHRpb25zLCBpKTsKIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICJ9Iik7CiAJICAgIH0KIAkgIGJyZWFrOwpAQCAtMTg0LDkgKzE3OSwx MCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAg Z290byBwcmludF91bnBhY2tlZF9wb2ludGVyOwogCiAgICAgY2FzZSBUWVBF X0NPREVfTUVNQkVSUFRSOgotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlm IChvcHRpb25zLT5mb3JtYXQpCiAJewotCSAgcHJpbnRfc2NhbGFyX2Zvcm1h dHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0 LCAwLCBzdHJlYW0pOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKKwkJCQkgIG9wdGlvbnMs IDAsIHN0cmVhbSk7CiAJICBicmVhazsKIAl9CiAgICAgICBjcF9wcmludF9j bGFzc19tZW1iZXIgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUs IHN0cmVhbSwgIiYiKTsKQEAgLTE5NywxOSArMTkzLDIwIEBAIGNfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICBicmVhazsKIAogICAg IGNhc2UgVFlQRV9DT0RFX1BUUjoKLSAgICAgIGlmIChmb3JtYXQgJiYgZm9y bWF0ICE9ICdzJykKKyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQgJiYgb3B0 aW9ucy0+Zm9ybWF0ICE9ICdzJykKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9y bWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3Jt YXQsIDAsIHN0cmVhbSk7CisJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9u cywgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KLSAgICAgIGlmICh2dGJs cHJpbnQgJiYgY3BfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCisgICAgICBp ZiAob3B0aW9ucy0+dnRibHByaW50ICYmIGNwX2lzX3Z0YmxfcHRyX3R5cGUg KHR5cGUpKQogCXsKIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQgbmFtZSBp ZiBkZXNpcmVkLiAgKi8KIAkgIC8qIFByaW50IHZ0YWJsZSBlbnRyeSAtIHdl IG9ubHkgZ2V0IGhlcmUgaWYgd2UgQVJFIHVzaW5nCiAJICAgICAtZnZ0YWJs ZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyIFRZUEVfQ09ERV9T VFJVQ1QuKSAqLwogCSAgQ09SRV9BRERSIGFkZHIKIAkgICAgPSBleHRyYWN0 X3R5cGVkX2FkZHJlc3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUpOwotCSAgcHJpbnRfZnVuY3Rpb25fcG9pbnRlcl9hZGRyZXNzIChhZGRy LCBzdHJlYW0pOworCSAgcHJpbnRfZnVuY3Rpb25fcG9pbnRlcl9hZGRyZXNz IChhZGRyLCBzdHJlYW0sIG9wdGlvbnMtPmFkZHJlc3NwcmludCk7CiAJICBi cmVhazsKIAl9CiAgICAgICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOwpAQCAtMjIwLDIxICsyMTcsMjQgQEAg Y192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKIAkgIGlmIChUWVBF X0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQogCSAgICB7CiAJ ICAgICAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRz IHRvLiAgKi8KLQkgICAgICBwcmludF9mdW5jdGlvbl9wb2ludGVyX2FkZHJl c3MgKGFkZHIsIHN0cmVhbSk7CisJICAgICAgcHJpbnRfZnVuY3Rpb25fcG9p bnRlcl9hZGRyZXNzIChhZGRyLCBzdHJlYW0sCisJCQkJCSAgICAgIG9wdGlv bnMtPmFkZHJlc3NwcmludCk7CiAJICAgICAgLyogUmV0dXJuIHZhbHVlIGlz IGlycmVsZXZhbnQgZXhjZXB0IGZvciBzdHJpbmcgcG9pbnRlcnMuICAqLwog CSAgICAgIHJldHVybiAoMCk7CiAJICAgIH0KIAotCSAgaWYgKGFkZHJlc3Nw cmludCkKKwkgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJICAgIGZw dXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoYWRkciksIHN0cmVhbSk7CiAKIAkg IC8qIEZvciBhIHBvaW50ZXIgdG8gYSB0ZXh0dWFsIHR5cGUsIGFsc28gcHJp bnQgdGhlIHN0cmluZwogCSAgICAgcG9pbnRlZCB0bywgdW5sZXNzIHBvaW50 ZXIgaXMgbnVsbC4gICovCiAJICAvKiBGSVhNRTogbmVlZCB0byBoYW5kbGUg d2NoYXJfdCBoZXJlLi4uICovCiAKLQkgIGlmICh0ZXh0dWFsX2VsZW1lbnRf dHlwZSAoZWx0dHlwZSwgZm9ybWF0KSAmJiBhZGRyICE9IDApCisJICBpZiAo dGV4dHVhbF9lbGVtZW50X3R5cGUgKGVsdHR5cGUsIG9wdGlvbnMtPmZvcm1h dCkKKwkgICAgICAmJiBhZGRyICE9IDApCiAJICAgIHsKLQkgICAgICBpID0g dmFsX3ByaW50X3N0cmluZyAoYWRkciwgLTEsIFRZUEVfTEVOR1RIIChlbHR0 eXBlKSwgc3RyZWFtKTsKKwkgICAgICBpID0gdmFsX3ByaW50X3N0cmluZyAo YWRkciwgLTEsIFRZUEVfTEVOR1RIIChlbHR0eXBlKSwgc3RyZWFtLAorCQkJ CSAgICBvcHRpb25zKTsKIAkgICAgfQogCSAgZWxzZSBpZiAoY3BfaXNfdnRi bF9tZW1iZXIgKHR5cGUpKQogCSAgICB7CkBAIC0yNTAsNyArMjUwLDcgQEAg Y192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKIAkJICBmcHV0c19m aWx0ZXJlZCAoU1lNQk9MX1BSSU5UX05BTUUgKG1zeW1ib2wpLCBzdHJlYW0p OwogCQkgIGZwdXRzX2ZpbHRlcmVkICgiPiIsIHN0cmVhbSk7CiAJCX0KLQkg ICAgICBpZiAodnRfYWRkcmVzcyAmJiB2dGJscHJpbnQpCisJICAgICAgaWYg KHZ0X2FkZHJlc3MgJiYgb3B0aW9ucy0+dnRibHByaW50KQogCQl7CiAJCSAg c3RydWN0IHZhbHVlICp2dF92YWw7CiAJCSAgc3RydWN0IHN5bWJvbCAqd3N5 bSA9IChzdHJ1Y3Qgc3ltYm9sICopIE5VTEw7CkBAIC0yNzEsMTAgKzI3MSw5 IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAJCSAgICAg IHd0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7CiAJCSAgICB9CiAJ CSAgdnRfdmFsID0gdmFsdWVfYXQgKHd0eXBlLCB2dF9hZGRyZXNzKTsKLQkJ ICBjb21tb25fdmFsX3ByaW50ICh2dF92YWwsIHN0cmVhbSwgZm9ybWF0LAot CQkJCSAgICBkZXJlZl9yZWYsIHJlY3Vyc2UgKyAxLCBwcmV0dHksCisJCSAg Y29tbW9uX3ZhbF9wcmludCAodnRfdmFsLCBzdHJlYW0sIHJlY3Vyc2UgKyAx LCBvcHRpb25zLAogCQkJCSAgICBjdXJyZW50X2xhbmd1YWdlKTsKLQkJICBp ZiAocHJldHR5KQorCQkgIGlmIChvcHRpb25zLT5wcmV0dHkpCiAJCSAgICB7 CiAJCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJ CSAgICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1cnNl LCBzdHJlYW0pOwpAQCAtMjkxLDE3ICsyOTAsMTcgQEAgY192YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwg aW50IGVtYmVkZGVkX29mZnNldCwKIAogICAgIGNhc2UgVFlQRV9DT0RFX1JF RjoKICAgICAgIGVsdHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSk7Ci0gICAgICBpZiAoYWRkcmVzc3ByaW50KQorICAg ICAgaWYgKG9wdGlvbnMtPmFkZHJlc3NwcmludCkKIAl7CiAJICBDT1JFX0FE RFIgYWRkcgogCSAgICA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAodmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSk7CiAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICJAIik7CiAJICBmcHV0c19maWx0ZXJlZCAocGFkZHJl c3MgKGFkZHIpLCBzdHJlYW0pOwotCSAgaWYgKGRlcmVmX3JlZikKKwkgIGlm IChvcHRpb25zLT5kZXJlZl9yZWYpCiAJICAgIGZwdXRzX2ZpbHRlcmVkICgi OiAiLCBzdHJlYW0pOwogCX0KICAgICAgIC8qIERlLXJlZmVyZW5jZSB0aGUg cmVmZXJlbmNlLiAgKi8KLSAgICAgIGlmIChkZXJlZl9yZWYpCisgICAgICBp ZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQogCXsKIAkgIGlmIChUWVBFX0NPREUg KGVsdHR5cGUpICE9IFRZUEVfQ09ERV9VTkRFRikKIAkgICAgewpAQCAtMzA5 LDggKzMwOCw4IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQs CiAJICAgICAgdmFsdWVfYXQKIAkgICAgICAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksCiAJICAgICAgIHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0KSk7Ci0JICAgICAgY29tbW9uX3ZhbF9wcmlu dCAoZGVyZWZfdmFsLCBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVmLAotCQkJ CXJlY3Vyc2UsIHByZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJICAgICAg Y29tbW9uX3ZhbF9wcmludCAoZGVyZWZfdmFsLCBzdHJlYW0sIHJlY3Vyc2Us IG9wdGlvbnMsCisJCQkJY3VycmVudF9sYW5ndWFnZSk7CiAJICAgIH0KIAkg IGVsc2UKIAkgICAgZnB1dHNfZmlsdGVyZWQgKCI/Pz8iLCBzdHJlYW0pOwpA QCAtMzE4LDcgKzMxNyw3IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9v ZmZzZXQsCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX1VO SU9OOgotICAgICAgaWYgKHJlY3Vyc2UgJiYgIXVuaW9ucHJpbnQpCisgICAg ICBpZiAocmVjdXJzZSAmJiAhb3B0aW9ucy0+dW5pb25wcmludCkKIAl7CiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Li4ufSIpOwogCSAgYnJl YWs7CkBAIC0zMjYsNyArMzI1LDcgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVk ZGVkX29mZnNldCwKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAgICAg Y2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICAgLypGSVhNRTogQWJzdHJh Y3QgdGhpcyBhd2F5ICovCi0gICAgICBpZiAodnRibHByaW50ICYmIGNwX2lz X3Z0YmxfcHRyX3R5cGUgKHR5cGUpKQorICAgICAgaWYgKG9wdGlvbnMtPnZ0 YmxwcmludCAmJiBjcF9pc192dGJsX3B0cl90eXBlICh0eXBlKSkKIAl7CiAJ ICAvKiBQcmludCB0aGUgdW5tYW5nbGVkIG5hbWUgaWYgZGVzaXJlZC4gICov CiAJICAvKiBQcmludCB2dGFibGUgZW50cnkgLSB3ZSBvbmx5IGdldCBoZXJl IGlmIE5PVCB1c2luZwpAQCAtMzM3LDE3ICszMzYsMTggQEAgY192YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwgaW50IGVtYmVkZGVkX29mZnNldCwKIAkgIENPUkVfQUREUiBhZGRyCiAJ ICAgID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzICh2YWxhZGRyICsgb2Zmc2V0 LCBmaWVsZF90eXBlKTsKIAotCSAgcHJpbnRfZnVuY3Rpb25fcG9pbnRlcl9h ZGRyZXNzIChhZGRyLCBzdHJlYW0pOworCSAgcHJpbnRfZnVuY3Rpb25fcG9p bnRlcl9hZGRyZXNzIChhZGRyLCBzdHJlYW0sIG9wdGlvbnMtPmFkZHJlc3Nw cmludCk7CiAJfQogICAgICAgZWxzZQotCWNwX3ByaW50X3ZhbHVlX2ZpZWxk cyAodHlwZSwgdHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRy ZXNzLCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgICAgICByZWN1cnNlLCBwcmV0 dHksIE5VTEwsIDApOworCWNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlwZSwg dHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJl YW0sCisJCQkgICAgICAgcmVjdXJzZSwgb3B0aW9ucywgTlVMTCwgMCk7CiAg ICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06Ci0gICAg ICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKIAl7 Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRk ZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICBwcmlu dF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0 LCB0eXBlLAorCQkJCSAgb3B0aW9ucywgMCwgc3RyZWFtKTsKIAkgIGJyZWFr OwogCX0KICAgICAgIGxlbiA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CkBAIC0z NzEsMTcgKzM3MSwxOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zm c2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9GTEFH UzoKLSAgICAgIGlmIChmb3JtYXQpCi0JICBwcmludF9zY2FsYXJfZm9ybWF0 dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQs IDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0KQorCSAg cHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwgdHlwZSwKKwkJCQkgIG9wdGlvbnMsIDAsIHN0cmVhbSk7CiAgICAg ICBlbHNlCiAJdmFsX3ByaW50X3R5cGVfY29kZV9mbGFncyAodHlwZSwgdmFs YWRkciArIGVtYmVkZGVkX29mZnNldCwgc3RyZWFtKTsKICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoKICAgICBjYXNlIFRZUEVf Q09ERV9NRVRIT0Q6Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9w dGlvbnMtPmZvcm1hdCkKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVk ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAs IHN0cmVhbSk7CisJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9ucywgMCwg c3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KICAgICAgIC8qIEZJWE1FLCB3ZSBz aG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZvciBBTlNJIEMgbGFuZ3VhZ2Us IGVsaW1pbmF0aW5nCkBAIC0zOTQsOSArMzk2LDE0IEBAIGNfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs IGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICBicmVhazsKIAogICAgIGNh c2UgVFlQRV9DT0RFX0JPT0w6Ci0gICAgICBmb3JtYXQgPSBmb3JtYXQgPyBm b3JtYXQgOiBvdXRwdXRfZm9ybWF0OwotICAgICAgaWYgKGZvcm1hdCkKLQlw cmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zm c2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0 aW9ucy0+Zm9ybWF0IHx8IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCisJewor CSAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25z OworCSAgb3B0cy5mb3JtYXQgPSAob3B0aW9ucy0+Zm9ybWF0ID8gb3B0aW9u cy0+Zm9ybWF0CisJCQkgOiBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKKwkg IHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9v ZmZzZXQsIHR5cGUsCisJCQkJICAmb3B0cywgMCwgc3RyZWFtKTsKKwl9CiAg ICAgICBlbHNlCiAJewogCSAgdmFsID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZh bGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpOwpAQCAtNDIwLDEwICs0MjcsMTMg QEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIC8q IEZBTExUSFJPVUdIICovCiAKICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6Ci0g ICAgICBmb3JtYXQgPSBmb3JtYXQgPyBmb3JtYXQgOiBvdXRwdXRfZm9ybWF0 OwotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlmIChvcHRpb25zLT5mb3Jt YXQgfHwgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKIAl7Ci0JICBwcmludF9z Y2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0 eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7CisJICBvcHRzLmZvcm1hdCA9 IChvcHRpb25zLT5mb3JtYXQgPyBvcHRpb25zLT5mb3JtYXQKKwkJCSA6IG9w dGlvbnMtPm91dHB1dF9mb3JtYXQpOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1h dHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKKwkJCQkg ICZvcHRzLCAwLCBzdHJlYW0pOwogCX0KICAgICAgIGVsc2UKIAl7CkBAIC00 MzIsNyArNDQyLDcgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNl dCwKIAkgICAgIFNpbmNlIHdlIGRvbid0IGtub3cgd2hldGhlciB0aGUgdmFs dWUgaXMgcmVhbGx5IGludGVuZGVkIHRvCiAJICAgICBiZSB1c2VkIGFzIGFu IGludGVnZXIgb3IgYSBjaGFyYWN0ZXIsIHByaW50IHRoZSBjaGFyYWN0ZXIK IAkgICAgIGVxdWl2YWxlbnQgYXMgd2VsbC4gICovCi0JICBpZiAodGV4dHVh bF9lbGVtZW50X3R5cGUgKHR5cGUsIGZvcm1hdCkpCisJICBpZiAodGV4dHVh bF9lbGVtZW50X3R5cGUgKHR5cGUsIG9wdGlvbnMtPmZvcm1hdCkpCiAJICAg IHsKIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0pOwogCSAg ICAgIExBX1BSSU5UX0NIQVIgKCh1bnNpZ25lZCBjaGFyKSB1bnBhY2tfbG9u ZyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCksCkBAIC00NDIs MTAgKzQ1MiwxMyBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0 LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9DSEFSOgot ICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1h dDsKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+Zm9y bWF0IHx8IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCiAJewotCSAgcHJpbnRf c2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwg dHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCSAgb3B0cy5mb3JtYXQg PSAob3B0aW9ucy0+Zm9ybWF0ID8gb3B0aW9ucy0+Zm9ybWF0CisJCQkgOiBv cHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKKwkgIHByaW50X3NjYWxhcl9mb3Jt YXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJ ICAmb3B0cywgMCwgc3RyZWFtKTsKIAl9CiAgICAgICBlbHNlCiAJewpAQCAt NDYwLDkgKzQ3MywxMCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zm c2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6 Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPmZvcm1h dCkKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJ ICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0aW9ucywgMCwgc3RyZWFtKTsKIAl9 CiAgICAgICBlbHNlCiAJewpAQCAtNDcxLDggKzQ4NSw5IEBAIGNfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICBicmVhazsKIAogICAg IGNhc2UgVFlQRV9DT0RFX0RFQ0ZMT0FUOgotICAgICAgaWYgKGZvcm1hdCkK LQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAo b3B0aW9ucy0+Zm9ybWF0KQorCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZh bGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJb3B0aW9ucywg MCwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlwcmludF9kZWNpbWFsX2Zsb2F0 aW5nICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBzdHJlYW0p OwogICAgICAgYnJlYWs7CkBAIC00OTMsMTkgKzUwOCwxOSBAQCBjX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIFRZUEVfQ09ERV9DT01QTEVYOgotICAgICAgaWYgKGZvcm1hdCkK KyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQpCiAJcHJpbnRfc2NhbGFyX2Zv cm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwKIAkJCQlUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSwKLQkJCQlmb3JtYXQsIDAsIHN0cmVhbSk7 CisJCQkJb3B0aW9ucywgMCwgc3RyZWFtKTsKICAgICAgIGVsc2UKIAlwcmlu dF9mbG9hdGluZyAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksCiAJCQlzdHJlYW0pOwogICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiICsgIik7Ci0gICAgICBpZiAoZm9ybWF0 KQorICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKIAlwcmludF9zY2FsYXJf Zm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0CiAJCQkJKyBU WVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAogCQkJCVRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpLAotCQkJCWZvcm1hdCwgMCwgc3RyZWFt KTsKKwkJCQlvcHRpb25zLCAwLCBzdHJlYW0pOwogICAgICAgZWxzZQogCXBy aW50X2Zsb2F0aW5nICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0CiAJCQkr IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCkBAIC01 MjIsMTEgKzUzNywxNCBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zm c2V0LAogfQogDAogaW50Ci1jX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUg KnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkg ICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorY192YWx1ZV9w cmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIAorCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucykKIHsKICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5 cGU7CiAgIGludCBmdWxsLCB0b3AsIHVzaW5nX2VuYzsKKyAgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCisgIG9wdHMu ZGVyZWZfcmVmID0gMTsKIAogICAvKiBJZiBpdCBpcyBhIHBvaW50ZXIsIGlu ZGljYXRlIHdoYXQgaXQgcG9pbnRzIHRvLgogCkBAIC01NTEsNyArNTY5LDgg QEAgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCiAJewogCSAgLyogUHJpbnQg bm90aGluZyAqLwogCX0KLSAgICAgIGVsc2UgaWYgKG9iamVjdHByaW50ICYm IChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBF X0NPREVfQ0xBU1MpKQorICAgICAgZWxzZSBpZiAob3B0aW9ucy0+b2JqZWN0 cHJpbnQKKwkgICAgICAgJiYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpID09IFRZUEVfQ09ERV9DTEFTUykpCiAJewogCiAJICBpZiAo VFlQRV9DT0RFKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCkBAIC02MDIsNyAr NjIxLDcgQEAgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCiAgIGlmICghdmFs dWVfaW5pdGlhbGl6ZWQgKHZhbCkpCiAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiIFt1bmluaXRpYWxpemVkXSAiKTsKIAotICBpZiAob2JqZWN0 cHJpbnQgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0NMQVNT KSkKKyAgaWYgKG9wdGlvbnMtPm9iamVjdHByaW50ICYmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9DTEFTUykpCiAgICAgewogICAgICAgLyog QXR0ZW1wdCB0byBkZXRlcm1pbmUgcmVhbCB0eXBlIG9mIG9iamVjdCAqLwog ICAgICAgcmVhbF90eXBlID0gdmFsdWVfcnR0aV90eXBlICh2YWwsICZmdWxs LCAmdG9wLCAmdXNpbmdfZW5jKTsKQEAgLTYxNiw4ICs2MzUsOCBAQCBjX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IGZvcm1hdCwKIAkgIC8qIFByaW50IG91dCBvYmplY3Q6 IGVuY2xvc2luZyB0eXBlIGlzIHNhbWUgYXMgcmVhbF90eXBlIGlmIGZ1bGwg Ki8KIAkgIHJldHVybiB2YWxfcHJpbnQgKHZhbHVlX2VuY2xvc2luZ190eXBl ICh2YWwpLAogCQkJICAgIHZhbHVlX2NvbnRlbnRzX2FsbCAodmFsKSwgMCwK LQkJCSAgICBWQUxVRV9BRERSRVNTICh2YWwpLCBzdHJlYW0sIGZvcm1hdCwg MSwgMCwKLQkJCSAgICBwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCQkJ ICAgIFZBTFVFX0FERFJFU1MgKHZhbCksIHN0cmVhbSwgMCwKKwkJCSAgICAm b3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiAgICAgICAgICAgLyogTm90ZTog V2hlbiB3ZSBsb29rIHVwIFJUVEkgZW50cmllcywgd2UgZG9uJ3QgZ2V0IGFu eSBpbmZvcm1hdGlvbiBvbgogICAgICAgICAgICAgIGNvbnN0IG9yIHZvbGF0 aWxlIGF0dHJpYnV0ZXMgKi8KIAl9CkBAIC02MjgsOCArNjQ3LDggQEAgY192 YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsCiAJCQkgICAgVFlQRV9OQU1FICh2YWx1 ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSkpOwogCSAgcmV0dXJuIHZhbF9wcmlu dCAodmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCksCiAJCQkgICAgdmFsdWVf Y29udGVudHNfYWxsICh2YWwpLCAwLAotCQkJICAgIFZBTFVFX0FERFJFU1Mg KHZhbCksIHN0cmVhbSwgZm9ybWF0LCAxLCAwLAotCQkJICAgIHByZXR0eSwg Y3VycmVudF9sYW5ndWFnZSk7CisJCQkgICAgVkFMVUVfQUREUkVTUyAodmFs KSwgc3RyZWFtLCAwLAorCQkJICAgICZvcHRzLCBjdXJyZW50X2xhbmd1YWdl KTsKIAl9CiAgICAgICAvKiBPdGhlcndpc2UsIHdlIGVuZCB1cCBhdCB0aGUg cmV0dXJuIG91dHNpZGUgdGhpcyAiaWYiICovCiAgICAgfQpAQCAtNjM3LDUg KzY1Niw1IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAogICByZXR1cm4g dmFsX3ByaW50ICh0eXBlLCB2YWx1ZV9jb250ZW50c19hbGwgKHZhbCksCiAJ CSAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKHZhbCksCiAJCSAgICBWQUxV RV9BRERSRVNTICh2YWwpICsgdmFsdWVfb2Zmc2V0ICh2YWwpLAotCQkgICAg c3RyZWFtLCBmb3JtYXQsIDEsIDAsIHByZXR0eSwgY3VycmVudF9sYW5ndWFn ZSk7CisJCSAgICBzdHJlYW0sIDAsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdl KTsKIH0KZGlmZiAtLWdpdCBhL2dkYi9jcC12YWxwcmludC5jIGIvZ2RiL2Nw LXZhbHByaW50LmMKaW5kZXggNjE1NTlhZi4uMjk2ODk1MyAxMDA2NDQKLS0t IGEvZ2RiL2NwLXZhbHByaW50LmMKKysrIGIvZ2RiL2NwLXZhbHByaW50LmMK QEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJsYW5ndWFnZS5oIgogCiAv KiBDb250cm9scyBwcmludGluZyBvZiB2dGJsJ3MgKi8KLWludCB2dGJscHJp bnQ7CiBzdGF0aWMgdm9pZAogc2hvd192dGJscHJpbnQgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAJCXN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTUwLDcgKzQ5LDYg QEAgUHJpbnRpbmcgb2YgQysrIHZpcnR1YWwgZnVuY3Rpb24gdGFibGVzIGlz ICVzLlxuIiksCiAKIC8qIENvbnRyb2xzIGxvb2tpbmcgdXAgYW4gb2JqZWN0 J3MgZGVyaXZlZCB0eXBlIHVzaW5nIHdoYXQgd2UgZmluZCBpbgogICAgaXRz IHZ0YWJsZXMuICAqLwotaW50IG9iamVjdHByaW50Owogc3RhdGljIHZvaWQK IHNob3dfb2JqZWN0cHJpbnQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCiAJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsCkBA IC02MSw3ICs1OSw2IEBAIFByaW50aW5nIG9mIG9iamVjdCdzIGRlcml2ZWQg dHlwZSBiYXNlZCBvbiB2dGFibGUgaW5mbyBpcyAlcy5cbiIpLAogCQkgICAg dmFsdWUpOwogfQogCi1pbnQgc3RhdGljX2ZpZWxkX3ByaW50OwkJLyogQ29u dHJvbHMgcHJpbnRpbmcgb2Ygc3RhdGljIGZpZWxkcy4gKi8KIHN0YXRpYyB2 b2lkCiBzaG93X3N0YXRpY19maWVsZF9wcmludCAoc3RydWN0IHVpX2ZpbGUg KmZpbGUsIGludCBmcm9tX3R0eSwKIAkJCSBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCkBAIC03NywxMiArNzQsMTIg QEAgc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdG1lbV9v YnN0YWNrOwogZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfY3BfdmFscHJpbnQg KHZvaWQpOwogCiBzdGF0aWMgdm9pZCBjcF9wcmludF9zdGF0aWNfZmllbGQg KHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqLAotCQkJCSAgIHN0cnVj dCB1aV9maWxlICosIGludCwgaW50LAotCQkJCSAgIGVudW0gdmFsX3ByZXR0 eXByaW50KTsKKwkJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkJ ICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIHN0 YXRpYyB2b2lkIGNwX3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLAotCQkJICAgIGludCwgQ09S RV9BRERSLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwKLQkJCSAgICBl bnVtIHZhbF9wcmV0dHlwcmludCwgc3RydWN0IHR5cGUgKiopOworCQkJICAg IGludCwgQ09SRV9BRERSLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkg ICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKiwgc3RydWN0 IHR5cGUgKiopOwogCiAKIC8qIEdDQyB2ZXJzaW9ucyBhZnRlciAyLjQuNSB1 c2UgdGhpcy4gICovCkBAIC0xMzksNyArMTM2LDcgQEAgY3BfaXNfdnRibF9t ZW1iZXIgKHN0cnVjdCB0eXBlICp0eXBlKQogLyogTXV0dWFsbHkgcmVjdXJz aXZlIHN1YnJvdXRpbmVzIG9mIGNwX3ByaW50X3ZhbHVlIGFuZCBjX3ZhbF9w cmludCB0bwogICAgcHJpbnQgb3V0IGEgc3RydWN0dXJlJ3MgZmllbGRzOiBj cF9wcmludF92YWx1ZV9maWVsZHMgYW5kIGNwX3ByaW50X3ZhbHVlLgogCi0g ICBUWVBFLCBWQUxBRERSLCBBRERSRVNTLCBTVFJFQU0sIFJFQ1VSU0UsIGFu ZCBQUkVUVFkgaGF2ZSB0aGUKKyAgIFRZUEUsIFZBTEFERFIsIEFERFJFU1Ms IFNUUkVBTSwgUkVDVVJTRSwgYW5kIE9QVElPTlMgaGF2ZSB0aGUKICAgIHNh bWUgbWVhbmluZ3MgYXMgaW4gY3BfcHJpbnRfdmFsdWUgYW5kIGNfdmFsX3By aW50LgogCiAgICAybmQgYXJndW1lbnQgUkVBTF9UWVBFIGlzIHVzZWQgdG8g Y2Fycnkgb3ZlciB0aGUgdHlwZSBvZiB0aGUgZGVyaXZlZApAQCAtMTUxLDkg KzE0OCw5IEBAIGNwX2lzX3Z0YmxfbWVtYmVyIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKIHZvaWQKIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUsCiAJCSAgICAgICBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IG9mZnNldCwgQ09SRV9BRERSIGFk ZHJlc3MsCi0JCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg Zm9ybWF0LCBpbnQgcmVjdXJzZSwKLQkJICAgICAgIGVudW0gdmFsX3ByZXR0 eXByaW50IHByZXR0eSwKLQkJICAgICAgIHN0cnVjdCB0eXBlICoqZG9udF9w cmludF92YixpbnQgZG9udF9wcmludF9zdGF0bWVtKQorCQkgICAgICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCSAgICAgICBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKKwkJ ICAgICAgIHN0cnVjdCB0eXBlICoqZG9udF9wcmludF92YiwgaW50IGRvbnRf cHJpbnRfc3RhdG1lbSkKIHsKICAgaW50IGksIGxlbiwgbl9iYXNlY2xhc3Nl czsKICAgY2hhciAqbGFzdF9kb250X3ByaW50ID0gb2JzdGFja19uZXh0X2Zy ZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7CkBAIC0xNzAsNyAr MTY3LDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSwKIAogICBpZiAobl9iYXNl Y2xhc3NlcyA+IDApCiAgICAgY3BfcHJpbnRfdmFsdWUgKHR5cGUsIHJlYWxf dHlwZSwgdmFsYWRkciwgb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sCi0JCSAg ICBmb3JtYXQsIHJlY3Vyc2UgKyAxLCBwcmV0dHksIGRvbnRfcHJpbnRfdmIp OworCQkgICAgcmVjdXJzZSArIDEsIG9wdGlvbnMsIGRvbnRfcHJpbnRfdmIp OwogCiAgIC8qIFNlY29uZCwgcHJpbnQgb3V0IGRhdGEgZmllbGRzICovCiAK QEAgLTE5Miw3ICsxODksNyBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogICAg ICAgZm9yIChpID0gbl9iYXNlY2xhc3NlczsgaSA8IGxlbjsgaSsrKQogCXsK IAkgIC8qIElmIHJlcXVlc3RlZCwgc2tpcCBwcmludGluZyBvZiBzdGF0aWMg ZmllbGRzLiAgKi8KLQkgIGlmICghc3RhdGljX2ZpZWxkX3ByaW50CisJICBp ZiAoIW9wdGlvbnMtPnN0YXRpY19maWVsZF9wcmludAogCSAgICAgICYmIGZp ZWxkX2lzX3N0YXRpYyAoJlRZUEVfRklFTEQgKHR5cGUsIGkpKSkKIAkgICAg Y29udGludWU7CiAKQEAgLTIwMCw3ICsxOTcsNyBAQCBjcF9wcmludF92YWx1 ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVh bF90eXBlLAogCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIp OwogCSAgZWxzZSBpZiAobl9iYXNlY2xhc3NlcyA+IDApCiAJICAgIHsKLQkg ICAgICBpZiAocHJldHR5KQorCSAgICAgIGlmIChvcHRpb25zLT5wcmV0dHkp CiAJCXsKIAkJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwog CQkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1cnNlLCBz dHJlYW0pOwpAQCAtMjExLDcgKzIwOCw3IEBAIGNwX3ByaW50X3ZhbHVlX2Zp ZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5 cGUsCiAJICAgIH0KIAkgIGZpZWxkc19zZWVuID0gMTsKIAotCSAgaWYgKHBy ZXR0eSkKKwkgIGlmIChvcHRpb25zLT5wcmV0dHkpCiAJICAgIHsKIAkgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwogCSAgICAgIHBy aW50X3NwYWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1cnNlLCBzdHJlYW0p OwpAQCAtMjIwLDcgKzIxNyw3IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUsCiAJ ICAgIHsKIAkgICAgICB3cmFwX2hlcmUgKG5fc3BhY2VzICgyICsgMiAqIHJl Y3Vyc2UpKTsKIAkgICAgfQotCSAgaWYgKGluc3BlY3RfaXQpCisJICBpZiAo b3B0aW9ucy0+aW5zcGVjdF9pdCkKIAkgICAgewogCSAgICAgIGlmIChUWVBF X0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpID09IFRZUEVfQ09E RV9QVFIpCiAJCWZwdXRzX2ZpbHRlcmVkICgiXCIoIHB0ciBcIiIsIHN0cmVh bSk7CkBAIC0yNjYsMTEgKzI2MywxMyBAQCBjcF9wcmludF92YWx1ZV9maWVs ZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBl LAogCQl9CiAJICAgICAgZWxzZQogCQl7CisJCSAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCQkgIG9wdHMuZGVyZWZf cmVmID0gMDsKIAkJICB2ID0gdmFsdWVfZnJvbV9sb25nZXN0CiAJCSAgICAo VFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgCiAJCSAgICAgdW5wYWNrX2Zp ZWxkX2FzX2xvbmcgKHR5cGUsIHZhbGFkZHIgKyBvZmZzZXQsIGkpKTsKIAot CQkgIGNvbW1vbl92YWxfcHJpbnQgKHYsIHN0cmVhbSwgZm9ybWF0LCAwLCBy ZWN1cnNlICsgMSwgcHJldHR5LAorCQkgIGNvbW1vbl92YWxfcHJpbnQgKHYs IHN0cmVhbSwgcmVjdXJzZSArIDEsICZvcHRzLAogCQkJCSAgICBjdXJyZW50 X2xhbmd1YWdlKTsKIAkJfQogCSAgICB9CkBAIC0yODcsMTUgKzI4NiwxNiBA QCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogCQkgICAgZnB1dHNfZmlsdGVyZWQg KCI8b3B0aW1pemVkIG91dD4iLCBzdHJlYW0pOwogCQkgIGVsc2UKIAkJICAg IGNwX3ByaW50X3N0YXRpY19maWVsZCAoVFlQRV9GSUVMRF9UWVBFICh0eXBl LCBpKSwgdiwKLQkJCQkJICAgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UgKyAx LAotCQkJCQkgICBwcmV0dHkpOworCQkJCQkgICBzdHJlYW0sIHJlY3Vyc2Ug KyAxLCBvcHRpb25zKTsKIAkJfQogCSAgICAgIGVsc2UKIAkJeworCQkgIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKKwkJ ICBvcHRzLmRlcmVmX3JlZiA9IDA7CiAJCSAgdmFsX3ByaW50IChUWVBFX0ZJ RUxEX1RZUEUgKHR5cGUsIGkpLAogCQkJICAgICB2YWxhZGRyLCBvZmZzZXQg KyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4LAogCQkJICAgICBh ZGRyZXNzICsgVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpIC8gOCwKLQkJ CSAgICAgc3RyZWFtLCBmb3JtYXQsIDAsIHJlY3Vyc2UgKyAxLCBwcmV0dHks CisJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSArIDEsICZvcHRzLAogCQkJICAg ICBjdXJyZW50X2xhbmd1YWdlKTsKIAkJfQogCSAgICB9CkBAIC0zMTAsNyAr MzEwLDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSwKIAkgIGRvbnRfcHJpbnRf c3RhdG1lbV9vYnN0YWNrID0gdG1wX29ic3RhY2s7CiAJfQogCi0gICAgICBp ZiAocHJldHR5KQorICAgICAgaWYgKG9wdGlvbnMtPnByZXR0eSkKIAl7CiAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcbiIpOwogCSAgcHJpbnRf c3BhY2VzX2ZpbHRlcmVkICgyICogcmVjdXJzZSwgc3RyZWFtKTsKQEAgLTMy Niw4ICszMjYsOSBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogc3RhdGljIHZv aWQKIGNwX3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHR5cGUgKnJlYWxfdHlwZSwKIAkJY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs IGludCBvZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotCQlzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBpbnQgcmVjdXJzZSwKLQkJZW51 bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5LCBzdHJ1Y3QgdHlwZSAqKmRvbnRf cHJpbnRfdmIpCisJCXN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1 cnNlLAorCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucywKKwkJc3RydWN0IHR5cGUgKipkb250X3ByaW50X3ZiKQogewogICBz dHJ1Y3QgdHlwZSAqKmxhc3RfZG9udF9wcmludAogICAgID0gKHN0cnVjdCB0 eXBlICoqKSBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfdmJfb2Jz dGFjayk7CkBAIC00MDIsNyArNDAzLDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogCWJh c2VfdmFsYWRkciA9IHZhbGFkZHI7CiAKICAgICAgIC8qIG5vdyBkbyB0aGUg cHJpbnRpbmcgKi8KLSAgICAgIGlmIChwcmV0dHkpCisgICAgICBpZiAob3B0 aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKiByZWN1 cnNlLCBzdHJlYW0pOwpAQCAtNDE5LDggKzQyMCw3IEBAIGNwX3ByaW50X3Zh bHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlw ZSwKICAgICAgIGVsc2UKIAljcF9wcmludF92YWx1ZV9maWVsZHMgKGJhc2Vj bGFzcywgdGhpc3R5cGUsIGJhc2VfdmFsYWRkciwKIAkJCSAgICAgICB0aGlz b2Zmc2V0ICsgYm9mZnNldCwgYWRkcmVzcyArIGJvZmZzZXQsCi0JCQkgICAg ICAgc3RyZWFtLCBmb3JtYXQsCi0JCQkgICAgICAgcmVjdXJzZSwgcHJldHR5 LAorCQkJICAgICAgIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywKIAkJCSAg ICAgICAoKHN0cnVjdCB0eXBlICoqKQogCQkJCW9ic3RhY2tfYmFzZSAoJmRv bnRfcHJpbnRfdmJfb2JzdGFjaykpLAogCQkJICAgICAgIDApOwpAQCAtNDQ3 LDE3ICs0NDcsMTcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAogICAgc3RhdGljIG1lbWJl ciBjbGFzc2VzIGluIGFuIG9ic3RhY2sgYW5kIHJlZnVzZSB0byBwcmludCB0 aGVtIG1vcmUKICAgIHRoYW4gb25jZS4KIAotICAgVkFMIGNvbnRhaW5zIHRo ZSB2YWx1ZSB0byBwcmludCwgVFlQRSwgU1RSRUFNLCBSRUNVUlNFLCBhbmQg UFJFVFRZCisgICBWQUwgY29udGFpbnMgdGhlIHZhbHVlIHRvIHByaW50LCBU WVBFLCBTVFJFQU0sIFJFQ1VSU0UsIGFuZCBPUFRJT05TCiAgICBoYXZlIHRo ZSBzYW1lIG1lYW5pbmdzIGFzIGluIGNfdmFsX3ByaW50LiAgKi8KIAogc3Rh dGljIHZvaWQKIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUg KnR5cGUsCiAJCSAgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbCwKIAkJICAgICAg IHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0JCSAgICAgICBpbnQgZm9ybWF0 LAogCQkgICAgICAgaW50IHJlY3Vyc2UsCi0JCSAgICAgICBlbnVtIHZhbF9w cmV0dHlwcmludCBwcmV0dHkpCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKKyAgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgb3B0czsKICAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1NUUlVDVCkKICAgICB7CiAgICAgICBDT1JFX0FERFIg KmZpcnN0X2RvbnRfcHJpbnQ7CkBAIC00ODUsMTIgKzQ4NSwxNSBAQCBjcF9w cmludF9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgICAg Q0hFQ0tfVFlQRURFRiAodHlwZSk7CiAgICAgICBjcF9wcmludF92YWx1ZV9m aWVsZHMgKHR5cGUsIHR5cGUsIHZhbHVlX2NvbnRlbnRzX2FsbCAodmFsKSwK IAkJCSAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLCBWQUxVRV9B RERSRVNTICh2YWwpLAotCQkJICAgICBzdHJlYW0sIGZvcm1hdCwgcmVjdXJz ZSwgcHJldHR5LCBOVUxMLCAxKTsKKwkJCSAgICAgc3RyZWFtLCByZWN1cnNl LCBvcHRpb25zLCBOVUxMLCAxKTsKICAgICAgIHJldHVybjsKICAgICB9CisK KyAgb3B0cyA9ICpvcHRpb25zOworICBvcHRzLmRlcmVmX3JlZiA9IDA7CiAg IHZhbF9wcmludCAodHlwZSwgdmFsdWVfY29udGVudHNfYWxsICh2YWwpLCAK IAkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodmFsKSwgVkFMVUVfQURE UkVTUyAodmFsKSwKLQkgICAgIHN0cmVhbSwgZm9ybWF0LCAwLCByZWN1cnNl LCBwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCSAgICAgc3RyZWFtLCBy ZWN1cnNlLCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiB9CiAKIApAQCAt NTg5LDMyICs1OTIsMjkgQEAgdm9pZAogX2luaXRpYWxpemVfY3BfdmFscHJp bnQgKHZvaWQpCiB7CiAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgic3Rh dGljLW1lbWJlcnMiLCBjbGFzc19zdXBwb3J0LAotCQkJICAgJnN0YXRpY19m aWVsZF9wcmludCwgXygiXAorCQkJICAgJnVzZXJfcHJpbnRfb3B0aW9ucy5z dGF0aWNfZmllbGRfcHJpbnQsIF8oIlwKIFNldCBwcmludGluZyBvZiBDKysg c3RhdGljIG1lbWJlcnMuIiksIF8oIlwKIFNob3cgcHJpbnRpbmcgb2YgQysr IHN0YXRpYyBtZW1iZXJzLiIpLCBOVUxMLAogCQkJICAgTlVMTCwKIAkJCSAg IHNob3dfc3RhdGljX2ZpZWxkX3ByaW50LAogCQkJICAgJnNldHByaW50bGlz dCwgJnNob3dwcmludGxpc3QpOwotICAvKiBUdXJuIG9uIHByaW50aW5nIG9m IHN0YXRpYyBmaWVsZHMuICAqLwotICBzdGF0aWNfZmllbGRfcHJpbnQgPSAx OwogCi0gIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgidnRibCIsIGNsYXNz X3N1cHBvcnQsICZ2dGJscHJpbnQsIF8oIlwKKyAgYWRkX3NldHNob3dfYm9v bGVhbl9jbWQgKCJ2dGJsIiwgY2xhc3Nfc3VwcG9ydCwKKwkJCSAgICZ1c2Vy X3ByaW50X29wdGlvbnMudnRibHByaW50LCBfKCJcCiBTZXQgcHJpbnRpbmcg b2YgQysrIHZpcnR1YWwgZnVuY3Rpb24gdGFibGVzLiIpLCBfKCJcCiBTaG93 IHByaW50aW5nIG9mIEMrKyB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlcy4iKSwg TlVMTCwKIAkJCSAgIE5VTEwsCiAJCQkgICBzaG93X3Z0YmxwcmludCwKIAkJ CSAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRsaXN0KTsKIAotICBhZGRf c2V0c2hvd19ib29sZWFuX2NtZCAoIm9iamVjdCIsIGNsYXNzX3N1cHBvcnQs ICZvYmplY3RwcmludCwgXygiXAorICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoIm9iamVjdCIsIGNsYXNzX3N1cHBvcnQsCisJCQkgICAmdXNlcl9wcmlu dF9vcHRpb25zLm9iamVjdHByaW50LCBfKCJcCiBTZXQgcHJpbnRpbmcgb2Yg b2JqZWN0J3MgZGVyaXZlZCB0eXBlIGJhc2VkIG9uIHZ0YWJsZSBpbmZvLiIp LCBfKCJcCiBTaG93IHByaW50aW5nIG9mIG9iamVjdCdzIGRlcml2ZWQgdHlw ZSBiYXNlZCBvbiB2dGFibGUgaW5mby4iKSwgTlVMTCwKIAkJCSAgIE5VTEws CiAJCQkgICBzaG93X29iamVjdHByaW50LAogCQkJICAgJnNldHByaW50bGlz dCwgJnNob3dwcmludGxpc3QpOwogCi0gIC8qIEdpdmUgcGVvcGxlIHRoZSBk ZWZhdWx0cyB3aGljaCB0aGV5IGFyZSB1c2VkIHRvLiAgKi8KLSAgb2JqZWN0 cHJpbnQgPSAwOwotICB2dGJscHJpbnQgPSAwOwogICBvYnN0YWNrX2JlZ2lu ICgmZG9udF9wcmludF92Yl9vYnN0YWNrLCAzMiAqIHNpemVvZiAoc3RydWN0 IHR5cGUgKikpOwogICBvYnN0YWNrX3NwZWNpZnlfYWxsb2NhdGlvbiAoJmRv bnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLAogCQkJICAgICAgMzIgKiBzaXpl b2YgKENPUkVfQUREUiksIHNpemVvZiAoQ09SRV9BRERSKSwKZGlmZiAtLWdp dCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCmluZGV4IGNmM2U4NzYuLjQz OTRhYTEgMTAwNjQ0Ci0tLSBhL2dkYi9ldmFsLmMKKysrIGIvZ2RiL2V2YWwu YwpAQCAtMzksMTYgKzM5LDEzIEBACiAjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgogI2luY2x1ZGUgInJlZ2NhY2hlLmgiCiAjaW5jbHVkZSAidXNlci1yZWdz LmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKIAogLyogVGhpcyBpcyBkZWZpbmVkIGluIHZhbG9wcy5jICov CiBleHRlcm4gaW50IG92ZXJsb2FkX3Jlc29sdXRpb247CiAKLS8qIEpZRzog bG9va3VwIHJ0dGkgdHlwZSBvZiBTVFJVQ1RPUF9QVFIgd2hlbiB0aGlzIGlz IHNldCB0byBjb250aW51ZQotICAgb24gd2l0aCBzdWNjZXNzZnVsIGxvb2t1 cCBmb3IgbWVtYmVyL21ldGhvZCBvZiB0aGUgcnR0aSB0eXBlLiAqLwotZXh0 ZXJuIGludCBvYmplY3RwcmludDsKLQogLyogUHJvdG90eXBlcyBmb3IgbG9j YWwgZnVuY3Rpb25zLiAqLwogCiBzdGF0aWMgc3RydWN0IHZhbHVlICpldmFs dWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKiwg aW50ICopOwpAQCAtMTYyOCw4ICsxNjI1LDEwIEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAg ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZzEpOwogICAg ICAgICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlOwogICAgICAgICBpbnQgZnVs bCwgdG9wLCB1c2luZ19lbmM7Ci0gICAgICAgIAotICAgICAgICBpZiAob2Jq ZWN0cHJpbnQgJiYgVFlQRV9UQVJHRVRfVFlQRSh0eXBlKSAmJgorCXN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisKKwlnZXRfdXNlcl9wcmlu dF9vcHRpb25zICgmb3B0cyk7CisgICAgICAgIGlmIChvcHRzLm9iamVjdHBy aW50ICYmIFRZUEVfVEFSR0VUX1RZUEUodHlwZSkgJiYKICAgICAgICAgICAg IChUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBF X0NPREVfQ0xBU1MpKQogICAgICAgICAgIHsKICAgICAgICAgICAgIHJlYWxf dHlwZSA9IHZhbHVlX3J0dGlfdGFyZ2V0X3R5cGUgKGFyZzEsICZmdWxsLCAm dG9wLCAmdXNpbmdfZW5jKTsKZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5j IGIvZ2RiL2V4cHByaW50LmMKaW5kZXggMDc5ZjJhOS4uNzU2YTAyZSAxMDA2 NDQKLS0tIGEvZ2RiL2V4cHByaW50LmMKKysrIGIvZ2RiL2V4cHByaW50LmMK QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJibG9jay5oIgogI2luY2x1 ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorI2lu Y2x1ZGUgInZhbHByaW50LmgiCiAKICNpZmRlZiBIQVZFX0NUWVBFX0gKICNp bmNsdWRlIDxjdHlwZS5oPgpAQCAtOTIsMTcgKzkzLDI1IEBAIHByaW50X3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpw b3MsCiAgICAgICByZXR1cm47CiAKICAgICBjYXNlIE9QX0xPTkc6Ci0gICAg ICAoKnBvcykgKz0gMzsKLSAgICAgIHZhbHVlX3ByaW50ICh2YWx1ZV9mcm9t X2xvbmdlc3QgKGV4cC0+ZWx0c1twYyArIDFdLnR5cGUsCi0JCQkJICAgICAg IGV4cC0+ZWx0c1twYyArIDJdLmxvbmdjb25zdCksCi0JCSAgIHN0cmVhbSwg MCwgVmFsX25vX3ByZXR0eXByaW50KTsKKyAgICAgIHsKKwlzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCWdldF9yYXdfcHJpbnRfb3B0aW9u cyAoJm9wdHMpOworCSgqcG9zKSArPSAzOworCXZhbHVlX3ByaW50ICh2YWx1 ZV9mcm9tX2xvbmdlc3QgKGV4cC0+ZWx0c1twYyArIDFdLnR5cGUsCisJCQkJ CSBleHAtPmVsdHNbcGMgKyAyXS5sb25nY29uc3QpLAorCQkgICAgIHN0cmVh bSwgJm9wdHMpOworICAgICAgfQogICAgICAgcmV0dXJuOwogCiAgICAgY2Fz ZSBPUF9ET1VCTEU6Ci0gICAgICAoKnBvcykgKz0gMzsKLSAgICAgIHZhbHVl X3ByaW50ICh2YWx1ZV9mcm9tX2RvdWJsZSAoZXhwLT5lbHRzW3BjICsgMV0u dHlwZSwKLQkJCQkgICAgICBleHAtPmVsdHNbcGMgKyAyXS5kb3VibGVjb25z dCksCi0JCSAgIHN0cmVhbSwgMCwgVmFsX25vX3ByZXR0eXByaW50KTsKKyAg ICAgIHsKKwlzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCWdl dF9yYXdfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCSgqcG9zKSArPSAzOwor CXZhbHVlX3ByaW50ICh2YWx1ZV9mcm9tX2RvdWJsZSAoZXhwLT5lbHRzW3Bj ICsgMV0udHlwZSwKKwkJCQkJZXhwLT5lbHRzW3BjICsgMl0uZG91YmxlY29u c3QpLAorCQkgICAgIHN0cmVhbSwgJm9wdHMpOworICAgICAgfQogICAgICAg cmV0dXJuOwogCiAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CkBAIC0xNjksMTIg KzE3OCwxNyBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCAqcG9zLAogICAgICAgcmV0dXJuOwogCiAgICAg Y2FzZSBPUF9TVFJJTkc6Ci0gICAgICBuYXJncyA9IGxvbmdlc3RfdG9faW50 IChleHAtPmVsdHNbcGMgKyAxXS5sb25nY29uc3QpOwotICAgICAgKCpwb3Mp ICs9IDMgKyBCWVRFU19UT19FWFBfRUxFTSAobmFyZ3MgKyAxKTsKLSAgICAg IC8qIExBX1BSSU5UX1NUUklORyB3aWxsIHByaW50IHVzaW5nIHRoZSBjdXJy ZW50IHJlcGVhdCBjb3VudCB0aHJlc2hvbGQuCi0gICAgICAgICBJZiBuZWNl c3NhcnksIHdlIGNhbiB0ZW1wb3JhcmlseSBzZXQgaXQgdG8gemVybywgb3Ig cGFzcyBpdCBhcyBhbgotICAgICAgICAgYWRkaXRpb25hbCBwYXJhbWV0ZXIg dG8gTEFfUFJJTlRfU1RSSU5HLiAgLWZuZiAqLwotICAgICAgTEFfUFJJTlRf U1RSSU5HIChzdHJlYW0sICZleHAtPmVsdHNbcGMgKyAyXS5zdHJpbmcsIG5h cmdzLCAxLCAwKTsKKyAgICAgIHsKKwlzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyBvcHRzOworCW5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0 c1twYyArIDFdLmxvbmdjb25zdCk7CisJKCpwb3MpICs9IDMgKyBCWVRFU19U T19FWFBfRUxFTSAobmFyZ3MgKyAxKTsKKwkvKiBMQV9QUklOVF9TVFJJTkcg d2lsbCBwcmludCB1c2luZyB0aGUgY3VycmVudCByZXBlYXQgY291bnQgdGhy ZXNob2xkLgorCSAgIElmIG5lY2Vzc2FyeSwgd2UgY2FuIHRlbXBvcmFyaWx5 IHNldCBpdCB0byB6ZXJvLCBvciBwYXNzIGl0IGFzIGFuCisJICAgYWRkaXRp b25hbCBwYXJhbWV0ZXIgdG8gTEFfUFJJTlRfU1RSSU5HLiAgLWZuZiAqLwor CWdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKwlMQV9QUklOVF9T VFJJTkcgKHN0cmVhbSwgJmV4cC0+ZWx0c1twYyArIDJdLnN0cmluZywgbmFy Z3MsIDEsIDAsCisJCQkgJm9wdHMpOworICAgICAgfQogICAgICAgcmV0dXJu OwogCiAgICAgY2FzZSBPUF9CSVRTVFJJTkc6CkBAIC0xODUsMTEgKzE5OSwx NiBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCAqcG9zLAogICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBP UF9PQkpDX05TU1RSSU5HOgkvKiBPYmplY3RpdmUtQyBGb3VuZGF0aW9uIENs YXNzIE5TU3RyaW5nIGNvbnN0YW50LiAgKi8KLSAgICAgIG5hcmdzID0gbG9u Z2VzdF90b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7Ci0g ICAgICAoKnBvcykgKz0gMyArIEJZVEVTX1RPX0VYUF9FTEVNIChuYXJncyAr IDEpOwotICAgICAgZnB1dHNfZmlsdGVyZWQgKCJAXCIiLCBzdHJlYW0pOwot ICAgICAgTEFfUFJJTlRfU1RSSU5HIChzdHJlYW0sICZleHAtPmVsdHNbcGMg KyAyXS5zdHJpbmcsIG5hcmdzLCAxLCAwKTsKLSAgICAgIGZwdXRzX2ZpbHRl cmVkICgiXCIiLCBzdHJlYW0pOworICAgICAgeworCXN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zIG9wdHM7CisJbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAo ZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKwkoKnBvcykgKz0gMyAr IEJZVEVTX1RPX0VYUF9FTEVNIChuYXJncyArIDEpOworCWZwdXRzX2ZpbHRl cmVkICgiQFwiIiwgc3RyZWFtKTsKKwlnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7CisJTEFfUFJJTlRfU1RSSU5HIChzdHJlYW0sICZleHAtPmVs dHNbcGMgKyAyXS5zdHJpbmcsIG5hcmdzLCAxLCAwLAorCQkJICZvcHRzKTsK KwlmcHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsKKyAgICAgIH0KICAg ICAgIHJldHVybjsKIAogICAgIGNhc2UgT1BfT0JKQ19NU0dDQUxMOgpAQCAt MjcwLDcgKzI4OSwxMCBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAogCX0KICAgICAgIGlmICh0 ZW0gPiAwKQogCXsKLQkgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB0ZW1w c3RyLCBuYXJncyAtIDEsIDEsIDApOworCSAgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgb3B0czsKKwkgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZv cHRzKTsKKwkgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB0ZW1wc3RyLCBu YXJncyAtIDEsIDEsIDAsCisJCQkgICAmb3B0cyk7CiAJICAoKnBvcykgPSBw YzsKIAl9CiAgICAgICBlbHNlCkBAIC0zOTQsNiArNDE2LDggQEAgcHJpbnRf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcywKICAgICAgIGlmIChUWVBFX0NPREUgKGV4cC0+ZWx0c1twYyArIDFd LnR5cGUpID09IFRZUEVfQ09ERV9GVU5DICYmCiAJICBleHAtPmVsdHNbcGMg KyAzXS5vcGNvZGUgPT0gT1BfTE9ORykKIAl7CisJICBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyBvcHRzOworCiAJICAvKiBXZSBoYXZlIGEgbWluaW1h bCBzeW1ib2wgZm4sIHByb2JhYmx5LiAgSXQncyBlbmNvZGVkCiAJICAgICBh cyBhIFVOT1BfTUVNVkFMIChmdW5jdGlvbi10eXBlKSBvZiBhbiBPUF9MT05H IChpbnQsIGFkZHJlc3MpLgogCSAgICAgU3dhbGxvdyB0aGUgT1BfTE9ORyAo aW5jbHVkaW5nIGJvdGggaXRzIG9wY29kZXMpOyBpZ25vcmUKQEAgLTQwMSw3 ICs0MjUsOCBAQCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCAqcG9zLAogCSAgKCpwb3MpICs9IDQ7CiAJICB2 YWwgPSB2YWx1ZV9hdF9sYXp5IChleHAtPmVsdHNbcGMgKyAxXS50eXBlLAog CQkJICAgICAgIChDT1JFX0FERFIpIGV4cC0+ZWx0c1twYyArIDVdLmxvbmdj b25zdCk7Ci0JICB2YWx1ZV9wcmludCAodmFsLCBzdHJlYW0sIDAsIFZhbF9u b19wcmV0dHlwcmludCk7CisJICBnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZv cHRzKTsKKwkgIHZhbHVlX3ByaW50ICh2YWwsIHN0cmVhbSwgJm9wdHMpOwog CX0KICAgICAgIGVsc2UKIAl7CmRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMg Yi9nZGIvZi1sYW5nLmMKaW5kZXggNzM2ZDZjNi4uNGQ0ZDRkNyAxMDA2NDQK LS0tIGEvZ2RiL2YtbGFuZy5jCisrKyBiL2dkYi9mLWxhbmcuYwpAQCAtMTQy LDcgKzE0Miw4IEBAIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSkKIAogc3RhdGljIHZvaWQKIGZfcHJpbnRzdHIgKHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCi0J ICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNl X2VsbGlwc2VzKQorCSAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoLCBpbnQgd2lk dGgsIGludCBmb3JjZV9lbGxpcHNlcywKKwkgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHVuc2lnbmVkIGlu dCBpOwogICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwpAQCAt MTU1LDcgKzE1Niw3IEBAIGZfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAgICAgICByZXR1cm47 CiAgICAgfQogCi0gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGggJiYgdGhpbmdz X3ByaW50ZWQgPCBwcmludF9tYXg7ICsraSkKKyAgZm9yIChpID0gMDsgaSA8 IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IG9wdGlvbnMtPnByaW50X21h eDsgKytpKQogICAgIHsKICAgICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBjaGFy YWN0ZXIgd2UgYXJlIGV4YW1pbmluZwogICAgICAgICAgdG8gc2VlIHdoZXRo ZXIgaXQgaXMgcmVwZWF0ZWQuICAqLwpAQCAtMTc5LDExICsxODAsMTEgQEAg Zl9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKIAkgICsrcmVwczsKIAl9CiAKLSAgICAgIGlmIChy ZXBzID4gcmVwZWF0X2NvdW50X3RocmVzaG9sZCkKKyAgICAgIGlmIChyZXBz ID4gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZCkKIAl7CiAJICBp ZiAoaW5fcXVvdGVzKQogCSAgICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQp CisJICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2Zp bHRlcmVkICgiXFwnLCAiLCBzdHJlYW0pOwogCSAgICAgIGVsc2UKIAkJZnB1 dHNfZmlsdGVyZWQgKCInLCAiLCBzdHJlYW0pOwpAQCAtMTkyLDE0ICsxOTMs MTQgQEAgZl9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29u c3QgZ2RiX2J5dGUgKnN0cmluZywKIAkgIGZfcHJpbnRjaGFyIChzdHJpbmdb aV0sIHN0cmVhbSk7CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIg PHJlcGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7CiAJICBpID0gcmVwMSAtIDE7 Ci0JICB0aGluZ3NfcHJpbnRlZCArPSByZXBlYXRfY291bnRfdGhyZXNob2xk OworCSAgdGhpbmdzX3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50 X3RocmVzaG9sZDsKIAkgIG5lZWRfY29tbWEgPSAxOwogCX0KICAgICAgIGVs c2UKIAl7CiAJICBpZiAoIWluX3F1b3RlcykKIAkgICAgewotCSAgICAgIGlm IChpbnNwZWN0X2l0KQorCSAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0 KQogCQlmcHV0c19maWx0ZXJlZCAoIlxcJyIsIHN0cmVhbSk7CiAJICAgICAg ZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOwpAQCAtMjEz LDcgKzIxNCw3IEBAIGZfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAgIC8qIFRlcm1pbmF0ZSB0 aGUgcXVvdGVzIGlmIG5lY2Vzc2FyeS4gICovCiAgIGlmIChpbl9xdW90ZXMp CiAgICAgewotICAgICAgaWYgKGluc3BlY3RfaXQpCisgICAgICBpZiAob3B0 aW9ucy0+aW5zcGVjdF9pdCkKIAlmcHV0c19maWx0ZXJlZCAoIlxcJyIsIHN0 cmVhbSk7CiAgICAgICBlbHNlCiAJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3Ry ZWFtKTsKQEAgLTMwNSw4ICszMDYsOCBAQCBmX2xhbmd1YWdlX2FyY2hfaW5m byAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAKIC8qIFRoaXMgaXMgZGVj bGFyZWQgaW4gYy1sYW5nLmggYnV0IGl0IGlzIHNpbGx5IHRvIGltcG9ydCB0 aGF0IGZpbGUgZm9yIHdoYXQKICAgIGlzIGFscmVhZHkganVzdCBhIGhhY2su ICovCi1leHRlcm4gaW50IGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAq LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0JCQkgIGVudW0gdmFsX3ByZXR0 eXByaW50KTsKK2V4dGVybiBpbnQgY192YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICosIHN0cnVjdCB1aV9maWxlICosCisJCQkgIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICopOwogCiBjb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiBmX2xhbmd1YWdlX2RlZm4gPQogewpkaWZmIC0tZ2l0IGEvZ2Ri L2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCmluZGV4IDI1MmQyNWQuLjNiMzQ4 N2UgMTAwNjQ0Ci0tLSBhL2dkYi9mLWxhbmcuaAorKysgYi9nZGIvZi1sYW5n LmgKQEAgLTI5LDggKzI5LDggQEAgZXh0ZXJuIHZvaWQgZl9wcmludF90eXBl IChzdHJ1Y3QgdHlwZSAqLCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGlu dCwKIAkJCSAgaW50KTsKIAogZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIs Ci0JCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCwgaW50LAotCQkJZW51 bSB2YWxfcHJldHR5cHJpbnQpOworCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50 LAorCQkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAK IC8qIExhbmd1YWdlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyAqLwogCmRp ZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQu YwppbmRleCA2NzJlOTVjLi5mODkzYjQ5IDEwMDY0NAotLS0gYS9nZGIvZi12 YWxwcmludC5jCisrKyBiL2dkYi9mLXZhbHByaW50LmMKQEAgLTE2NCw0MiAr MTY0LDQyIEBAIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKIHN0 YXRpYyB2b2lkCiBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5k aW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKIAkJICAgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsIENPUkVfQUREUiBhZGRyZXNzLAotCQkgICBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgICBpbnQgZGVy ZWZfcmVmLCBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJl dHR5LAorCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKKwkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMsCiAJCSAgIGludCAqZWx0cykKIHsKICAgaW50IGk7CiAKICAgaWYg KG5zcyAhPSBuZGltZW5zaW9ucykKICAgICB7Ci0gICAgICBmb3IgKGkgPSAw OyAoaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgcHJpbnRf bWF4KTsgaSsrKQorICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX1NJ WkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkr KykKIAl7CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwog CSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCBU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKIAkJCSAgICAgdmFsYWRkciArIGkg KiBGNzdfRElNX09GRlNFVCAobnNzKSwKIAkJCSAgICAgYWRkcmVzcyArIGkg KiBGNzdfRElNX09GRlNFVCAobnNzKSwKLQkJCSAgICAgc3RyZWFtLCBmb3Jt YXQsIGRlcmVmX3JlZiwgcmVjdXJzZSwgcHJldHR5LCBlbHRzKTsKKwkJCSAg ICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBlbHRzKTsKIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7CiAJfQotICAgICAgaWYgKCpl bHRzID49IHByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAK KyAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8 IEY3N19ESU1fU0laRSAobnNzKSkgCiAJZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiLi4uIik7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgZm9y IChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwg cHJpbnRfbWF4OyAKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJ WkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKIAkg ICBpKyssICgqZWx0cykrKykKIAl7CiAJICB2YWxfcHJpbnQgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLAogCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJ TV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKIAkJICAgICAwLAogCQkgICAgIGFk ZHJlc3MgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKLQkJ ICAgICBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0 dHksCi0JCSAgICAgY3VycmVudF9sYW5ndWFnZSk7CisJCSAgICAgc3RyZWFt LCByZWN1cnNlLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKIAogCSAg aWYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNzKSAtIDEpKQogCSAgICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwogCi0JICBpZiAoKCplbHRz ID09IHByaW50X21heCAtIDEpICYmIChpICE9IChGNzdfRElNX1NJWkUgKG5z cykgLSAxKSkpCisJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21h eCAtIDEpCisJICAgICAgJiYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNzKSAt IDEpKSkKIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7 CiAJfQogICAgIH0KQEAgLTIxMSw4ICsyMTEsNyBAQCBmNzdfcHJpbnRfYXJy YXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAq dHlwZSwKIHN0YXRpYyB2b2lkCiBmNzdfcHJpbnRfYXJyYXkgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJIENPUkVf QUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotCQkgaW50 IGZvcm1hdCwgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsCi0JCSBlbnVt IHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJCSBpbnQgcmVjdXJzZSwgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAg IGludCBuZGltZW5zaW9uczsKICAgaW50IGVsdHMgPSAwOwpAQCAtMjI5LDI4 ICsyMjgsMjIgQEAgZjc3X3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAKICAgZjc3X2NyZWF0ZV9h cnJheXByaW50X29mZnNldF90YmwgKHR5cGUsIHN0cmVhbSk7CiAKLSAgZjc3 X3ByaW50X2FycmF5XzEgKDEsIG5kaW1lbnNpb25zLCB0eXBlLCB2YWxhZGRy LCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwKLQkJICAgICBkZXJlZl9yZWYs IHJlY3Vyc2UsIHByZXR0eSwgJmVsdHMpOworICBmNzdfcHJpbnRfYXJyYXlf MSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZhbGFkZHIsIGFkZHJlc3MsIHN0 cmVhbSwKKwkJICAgICByZWN1cnNlLCBvcHRpb25zLCAmZWx0cyk7CiB9CiAM CiAKIC8qIFByaW50IGRhdGEgb2YgdHlwZSBUWVBFIGxvY2F0ZWQgYXQgVkFM QUREUiAod2l0aGluIEdEQiksIHdoaWNoIGNhbWUgZnJvbQogICAgdGhlIGlu ZmVyaW9yIGF0IGFkZHJlc3MgQUREUkVTUywgb250byBzdGRpbyBzdHJlYW0g U1RSRUFNIGFjY29yZGluZyB0bwotICAgRk9STUFUIChhIGxldHRlciBvciAw IGZvciBuYXR1cmFsIGZvcm1hdCkuICBUaGUgZGF0YSBhdCBWQUxBRERSIGlz IGluCi0gICB0YXJnZXQgYnl0ZSBvcmRlci4KKyAgIE9QVElPTlMuICBUaGUg ZGF0YSBhdCBWQUxBRERSIGlzIGluIHRhcmdldCBieXRlIG9yZGVyLgogCiAg ICBJZiB0aGUgZGF0YSBhcmUgYSBzdHJpbmcgcG9pbnRlciwgcmV0dXJucyB0 aGUgbnVtYmVyIG9mIHN0cmluZyBjaGFyYWN0ZXJzCi0gICBwcmludGVkLgot Ci0gICBJZiBERVJFRl9SRUYgaXMgbm9uemVybywgdGhlbiBkZXJlZmVyZW5j ZSByZWZlcmVuY2VzLCBvdGhlcndpc2UganVzdCBwcmludAotICAgdGhlbSBs aWtlIHBvaW50ZXJzLgotCi0gICBUaGUgUFJFVFRZIHBhcmFtZXRlciBjb250 cm9scyBwcmV0dHlwcmludGluZy4gICovCisgICBwcmludGVkLiAgKi8KIAog aW50CiBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotCSAgICAg Q09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBmb3JtYXQsCi0JICAgICBpbnQgZGVyZWZfcmVmLCBpbnQgcmVjdXJzZSwg ZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorCSAgICAgQ09SRV9BRERS IGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAorCSAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpID0gMDsJLyogTnVtYmVyIG9m IGNoYXJhY3RlcnMgcHJpbnRlZCAqLwogICBzdHJ1Y3QgdHlwZSAqZWx0dHlw ZTsKQEAgLTI2MywyMCArMjU2LDE5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJl ZGRlZF9vZmZzZXQsCiAgICAgewogICAgIGNhc2UgVFlQRV9DT0RFX1NUUklO RzoKICAgICAgIGY3N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRl ICh0eXBlKTsKLSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB2YWxh ZGRyLCBUWVBFX0xFTkdUSCAodHlwZSksIDEsIDApOworICAgICAgTEFfUFJJ TlRfU1RSSU5HIChzdHJlYW0sIHZhbGFkZHIsIFRZUEVfTEVOR1RIICh0eXBl KSwgMSwgMCwgb3B0aW9ucyk7CiAgICAgICBicmVhazsKIAogICAgIGNhc2Ug VFlQRV9DT0RFX0FSUkFZOgogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiKCIpOwotICAgICAgZjc3X3ByaW50X2FycmF5ICh0eXBlLCB2YWxh ZGRyLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwKLQkJICAgICAgIGRlcmVm X3JlZiwgcmVjdXJzZSwgcHJldHR5KTsKKyAgICAgIGY3N19wcmludF9hcnJh eSAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCBv cHRpb25zKTsKICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiki KTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfUFRSOgot ICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQgIT0gJ3MnKQorICAgICAgaWYg KG9wdGlvbnMtPmZvcm1hdCAmJiBvcHRpb25zLT5mb3JtYXQgIT0gJ3MnKQog CXsKLQkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUs IGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0 ZWQgKHZhbGFkZHIsIHR5cGUsIG9wdGlvbnMsIDAsIHN0cmVhbSk7CiAJICBi cmVhazsKIAl9CiAgICAgICBlbHNlCkBAIC0yOTIsMTYgKzI4NCwxNyBAQCBm X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogCSAgICAgIHJldHVy biAwOwogCSAgICB9CiAKLQkgIGlmIChhZGRyZXNzcHJpbnQgJiYgZm9ybWF0 ICE9ICdzJykKKwkgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQgJiYgb3B0 aW9ucy0+Zm9ybWF0ICE9ICdzJykKIAkgICAgZnB1dHNfZmlsdGVyZWQgKHBh ZGRyZXNzIChhZGRyKSwgc3RyZWFtKTsKIAogCSAgLyogRm9yIGEgcG9pbnRl ciB0byBjaGFyIG9yIHVuc2lnbmVkIGNoYXIsIGFsc28gcHJpbnQgdGhlIHN0 cmluZwogCSAgICAgcG9pbnRlZCB0bywgdW5sZXNzIHBvaW50ZXIgaXMgbnVs bC4gICovCiAJICBpZiAoVFlQRV9MRU5HVEggKGVsdHR5cGUpID09IDEKIAkg ICAgICAmJiBUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9JTlQK LQkgICAgICAmJiAoZm9ybWF0ID09IDAgfHwgZm9ybWF0ID09ICdzJykKKwkg ICAgICAmJiAob3B0aW9ucy0+Zm9ybWF0ID09IDAgfHwgb3B0aW9ucy0+Zm9y bWF0ID09ICdzJykKIAkgICAgICAmJiBhZGRyICE9IDApCi0JICAgIGkgPSB2 YWxfcHJpbnRfc3RyaW5nIChhZGRyLCAtMSwgVFlQRV9MRU5HVEggKGVsdHR5 cGUpLCBzdHJlYW0pOworCSAgICBpID0gdmFsX3ByaW50X3N0cmluZyAoYWRk ciwgLTEsIFRZUEVfTEVOR1RIIChlbHR0eXBlKSwgc3RyZWFtLAorCQkJCSAg b3B0aW9ucyk7CiAKIAkgIC8qIFJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVy cyBwcmludGVkLCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nCiAJICAgICAn XDAnIGlmIHdlIHJlYWNoZWQgdGhlIGVuZC4gIHZhbF9wcmludF9zdHJpbmcg dGFrZXMgY2FyZSBpbmNsdWRpbmcKQEAgLTMxMiwxNyArMzA1LDE3IEBAIGZf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAKICAgICBjYXNlIFRZ UEVfQ09ERV9SRUY6CiAgICAgICBlbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotICAgICAgaWYgKGFkZHJlc3Nw cmludCkKKyAgICAgIGlmIChvcHRpb25zLT5hZGRyZXNzcHJpbnQpCiAJewog CSAgQ09SRV9BRERSIGFkZHIKIAkgICAgPSBleHRyYWN0X3R5cGVkX2FkZHJl c3MgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUpOwogCSAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiQCIpOwogCSAgZnB1dHNfZmlsdGVy ZWQgKHBhZGRyZXNzIChhZGRyKSwgc3RyZWFtKTsKLQkgIGlmIChkZXJlZl9y ZWYpCisJICBpZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQogCSAgICBmcHV0c19m aWx0ZXJlZCAoIjogIiwgc3RyZWFtKTsKIAl9CiAgICAgICAvKiBEZS1yZWZl cmVuY2UgdGhlIHJlZmVyZW5jZS4gICovCi0gICAgICBpZiAoZGVyZWZfcmVm KQorICAgICAgaWYgKG9wdGlvbnMtPmRlcmVmX3JlZikKIAl7CiAJICBpZiAo VFlQRV9DT0RFIChlbHR0eXBlKSAhPSBUWVBFX0NPREVfVU5ERUYpCiAJICAg IHsKQEAgLTMzMCw4ICszMjMsOCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRk ZWRfb2Zmc2V0LAogCSAgICAgIHZhbHVlX2F0CiAJICAgICAgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLAogCSAgICAgICB1bnBhY2tfcG9pbnRlciAodHlw ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCkpOwotCSAgICAgIGNvbW1v bl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3RyZWFtLCBmb3JtYXQsIGRlcmVm X3JlZiwgcmVjdXJzZSwKLQkJCQlwcmV0dHksIGN1cnJlbnRfbGFuZ3VhZ2Up OworCSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3RyZWFt LCByZWN1cnNlLAorCQkJCW9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwog CSAgICB9CiAJICBlbHNlCiAJICAgIGZwdXRzX2ZpbHRlcmVkICgiPz8/Iiwg c3RyZWFtKTsKQEAgLTMzOSw5ICszMzIsOSBAQCBmX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQg ZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZ UEVfQ09ERV9GVU5DOgotICAgICAgaWYgKGZvcm1hdCkKKyAgICAgIGlmIChv cHRpb25zLT5mb3JtYXQpCiAJewotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRl ZCAodmFsYWRkciwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgcHJp bnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciwgdHlwZSwgb3B0aW9ucywg MCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KICAgICAgIC8qIEZJWE1FLCB3 ZSBzaG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZvciBBTlNJIEMgbGFuZ3Vh Z2UsIGVsaW1pbmF0aW5nCkBAIC0zNTQsOSArMzQ3LDEzIEBAIGZfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAgICBicmVhazsKIAogICAg IGNhc2UgVFlQRV9DT0RFX0lOVDoKLSAgICAgIGZvcm1hdCA9IGZvcm1hdCA/ IGZvcm1hdCA6IG91dHB1dF9mb3JtYXQ7Ci0gICAgICBpZiAoZm9ybWF0KQot CXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIGZvcm1h dCwgMCwgc3RyZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQgfHwg b3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKKwl7CisJICBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7CisJICBvcHRzLmZvcm1h dCA9IChvcHRpb25zLT5mb3JtYXQgPyBvcHRpb25zLT5mb3JtYXQKKwkJCSA6 IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpOworCSAgcHJpbnRfc2NhbGFyX2Zv cm1hdHRlZCAodmFsYWRkciwgdHlwZSwgJm9wdHMsIDAsIHN0cmVhbSk7CisJ fQogICAgICAgZWxzZQogCXsKIAkgIHZhbF9wcmludF90eXBlX2NvZGVfaW50 ICh0eXBlLCB2YWxhZGRyLCBzdHJlYW0pOwpAQCAtMzc0LDE1ICszNzEsMTUg QEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxBR1M6Ci0gICAgICBpZiAo Zm9ybWF0KQotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciwg dHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworICAgICAgaWYgKG9wdGlvbnMt PmZvcm1hdCkKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIs IHR5cGUsIG9wdGlvbnMsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNlCiAJdmFs X3ByaW50X3R5cGVfY29kZV9mbGFncyAodHlwZSwgdmFsYWRkciwgc3RyZWFt KTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgot ICAgICAgaWYgKGZvcm1hdCkKLQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyLCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAo b3B0aW9ucy0+Zm9ybWF0KQorCXByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZh bGFkZHIsIHR5cGUsIG9wdGlvbnMsIDAsIHN0cmVhbSk7CiAgICAgICBlbHNl CiAJcHJpbnRfZmxvYXRpbmcgKHZhbGFkZHIsIHR5cGUsIHN0cmVhbSk7CiAg ICAgICBicmVhazsKQEAgLTQwMSw5ICszOTgsMTMgQEAgZl92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwg aW50IGVtYmVkZGVkX29mZnNldCwKICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBUWVBFX0NPREVfQk9PTDoKLSAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZv cm1hdCA6IG91dHB1dF9mb3JtYXQ7Ci0gICAgICBpZiAoZm9ybWF0KQotCXBy aW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIsIHR5cGUsIGZvcm1hdCwg MCwgc3RyZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQgfHwgb3B0 aW9ucy0+b3V0cHV0X2Zvcm1hdCkKKwl7CisJICBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7CisJICBvcHRzLmZvcm1hdCA9 IChvcHRpb25zLT5mb3JtYXQgPyBvcHRpb25zLT5mb3JtYXQKKwkJCSA6IG9w dGlvbnMtPm91dHB1dF9mb3JtYXQpOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1h dHRlZCAodmFsYWRkciwgdHlwZSwgJm9wdHMsIDAsIHN0cmVhbSk7CisJfQog ICAgICAgZWxzZQogCXsKIAkgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50 ZWdlciAodmFsYWRkciwgVFlQRV9MRU5HVEggKHR5cGUpKTsKQEAgLTQxNyw4 ICs0MTgsNyBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAog CSAgICB7CiAJICAgICAgLyogQmFzaCB0aGUgdHlwZSBjb2RlIHRlbXBvcmFy aWx5LiAgKi8KIAkgICAgICBUWVBFX0NPREUgKHR5cGUpID0gVFlQRV9DT0RF X0lOVDsKLQkgICAgICBmX3ZhbF9wcmludCAodHlwZSwgdmFsYWRkciwgMCwg YWRkcmVzcywgc3RyZWFtLCBmb3JtYXQsCi0JCQkgICBkZXJlZl9yZWYsIHJl Y3Vyc2UsIHByZXR0eSk7CisJICAgICAgZl92YWxfcHJpbnQgKHR5cGUsIHZh bGFkZHIsIDAsIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucyk7 CiAJICAgICAgLyogUmVzdG9yZSB0aGUgdHlwZSBjb2RlIHNvIGxhdGVyIHVz ZXMgd29yayBhcyBpbnRlbmRlZC4gKi8KIAkgICAgICBUWVBFX0NPREUgKHR5 cGUpID0gVFlQRV9DT0RFX0JPT0w7CiAJICAgIH0KQEAgLTQ1MCw4ICs0NTAs NyBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAg ICB7CiAgICAgICAgICAgaW50IG9mZnNldCA9IFRZUEVfRklFTERfQklUUE9T ICh0eXBlLCBpbmRleCkgLyA4OwogICAgICAgICAgIGZfdmFsX3ByaW50IChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGluZGV4KSwgdmFsYWRkciArIG9mZnNl dCwKLSAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWRfb2Zmc2V0LCBh ZGRyZXNzLCBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgIGZvcm1h dCwgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworICAgICAgICAgICAg ICAgICAgICAgICBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwg cmVjdXJzZSwgb3B0aW9ucyk7CiAgICAgICAgICAgaWYgKGluZGV4ICE9IFRZ UEVfTkZJRUxEUyAodHlwZSkgLSAxKQogICAgICAgICAgICAgZnB1dHNfZmls dGVyZWQgKCIsICIsIHN0cmVhbSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh L2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKaW5kZXggMmE0MWM1 Yi4uMzMzZWIzMSAxMDA2NDQKLS0tIGEvZ2RiL2dkYnR5cGVzLmgKKysrIGIv Z2RiL2dkYnR5cGVzLmgKQEAgLTI4LDYgKzI4LDcgQEAKIC8qIEZvcndhcmQg ZGVjbGFyYXRpb25zIGZvciBwcm90b3R5cGVzLiAgKi8KIHN0cnVjdCBmaWVs ZDsKIHN0cnVjdCBibG9jazsKK3N0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z OwogCiAvKiBTb21lIG1hY3JvcyBmb3IgY2hhci1iYXNlZCBiaXRmaWVsZHMu ICAqLwogCkBAIC0xMjQ2LDggKzEyNDcsOSBAQCBleHRlcm4gaW50IGZpZWxk X2lzX3N0YXRpYyAoc3RydWN0IGZpZWxkICopOwogCiAvKiBwcmludGNtZC5j ICovCiAKLWV4dGVybiB2b2lkIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKGNv bnN0IHZvaWQgKiwgc3RydWN0IHR5cGUgKiwgaW50LCBpbnQsCi0JCQkJICAg IHN0cnVjdCB1aV9maWxlICopOworZXh0ZXJuIHZvaWQgcHJpbnRfc2NhbGFy X2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqLCBzdHJ1Y3QgdHlwZSAqLAorCQkJ CSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAorCQkJ CSAgICBpbnQsIHN0cnVjdCB1aV9maWxlICopOwogCiBleHRlcm4gaW50IGNh bl9kZXJlZmVyZW5jZSAoc3RydWN0IHR5cGUgKik7CiAKZGlmZiAtLWdpdCBh L2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZjbWQuYwppbmRleCAwNmUzYmM1Li5j NjVkM2VmIDEwMDY0NAotLS0gYS9nZGIvaW5mY21kLmMKKysrIGIvZ2RiL2lu ZmNtZC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiZXhjZXB0aW9u cy5oIgogI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCiAjaW5jbHVkZSAi Z2RidGhyZWFkLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogLyogRnVu Y3Rpb25zIGV4cG9ydGVkIGZvciBnZW5lcmFsIHVzZSwgaW4gaW5mZXJpb3Iu aDogKi8KIApAQCAtMTI4Miw2ICsxMjgzLDggQEAgcHJpbnRfcmV0dXJuX3Zh bHVlIChzdHJ1Y3QgdHlwZSAqZnVuY190eXBlLCBzdHJ1Y3QgdHlwZSAqdmFs dWVfdHlwZSkKIAogICBpZiAodmFsdWUpCiAgICAgeworICAgICAgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKwogICAgICAgLyogUHJpbnQg aXQuICAqLwogICAgICAgc3RiID0gdWlfb3V0X3N0cmVhbV9uZXcgKHVpb3V0 KTsKICAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfc3Ry ZWFtX2RlbGV0ZSAoc3RiKTsKQEAgLTEyODksNyArMTI5Miw4IEBAIHByaW50 X3JldHVybl92YWx1ZSAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSwgc3RydWN0 IHR5cGUgKnZhbHVlX3R5cGUpCiAgICAgICB1aV9vdXRfZmllbGRfZm10ICh1 aW91dCwgImdkYi1yZXN1bHQtdmFyIiwgIiQlZCIsCiAJCQlyZWNvcmRfbGF0 ZXN0X3ZhbHVlICh2YWx1ZSkpOwogICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiID0gIik7Ci0gICAgICB2YWx1ZV9wcmludCAodmFsdWUsIHN0Yi0+c3Ry ZWFtLCAwLCBWYWxfbm9fcHJldHR5cHJpbnQpOworICAgICAgZ2V0X3Jhd19w cmludF9vcHRpb25zICgmb3B0cyk7CisgICAgICB2YWx1ZV9wcmludCAodmFs dWUsIHN0Yi0+c3RyZWFtLCAmb3B0cyk7CiAgICAgICB1aV9vdXRfZmllbGRf c3RyZWFtICh1aW91dCwgInJldHVybi12YWx1ZSIsIHN0Yik7CiAgICAgICB1 aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwogICAgICAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7CkBAIC0xODAzLDkgKzE4MDcsMTIgQEAgZGVmYXVsdF9w cmludF9yZWdpc3RlcnNfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CiAJICB8fCBUWVBFX0NPREUgKHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkp KSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCiAJewogCSAgaW50IGo7CisJICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCisJICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CisJICBvcHRzLmRlcmVmX3JlZiA9 IDE7CiAJICB2YWxfcHJpbnQgKHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkp LCBidWZmZXIsIDAsIDAsCi0JCSAgICAgZmlsZSwgMCwgMSwgMCwgVmFsX3By ZXR0eV9kZWZhdWx0LCBjdXJyZW50X2xhbmd1YWdlKTsKKwkJICAgICBmaWxl LCAwLCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiAKIAkgIGZwcmludGZf ZmlsdGVyZWQgKGZpbGUsICJcdChyYXcgMHgiKTsKIAkgIGZvciAoaiA9IDA7 IGogPCByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCBpKTsgaisrKQpAQCAtMTgy MSwxNiArMTgyOCwyMyBAQCBkZWZhdWx0X3ByaW50X3JlZ2lzdGVyc19pbmZv IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIAl9CiAgICAgICBlbHNlCiAJ eworCSAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKwogCSAg LyogUHJpbnQgdGhlIHJlZ2lzdGVyIGluIGhleC4gICovCisJICBnZXRfZm9y bWF0dGVkX3ByaW50X29wdGlvbnMgKCZvcHRzLCAneCcpOworCSAgb3B0cy5k ZXJlZl9yZWYgPSAxOwogCSAgdmFsX3ByaW50IChyZWdpc3Rlcl90eXBlIChn ZGJhcmNoLCBpKSwgYnVmZmVyLCAwLCAwLAotCQkgICAgIGZpbGUsICd4Jywg MSwgMCwgVmFsX3ByZXR0eV9kZWZhdWx0LCBjdXJyZW50X2xhbmd1YWdlKTsK KwkJICAgICBmaWxlLCAwLCAmb3B0cywKKwkJICAgICBjdXJyZW50X2xhbmd1 YWdlKTsKICAgICAgICAgICAvKiBJZiBub3QgYSB2ZWN0b3IgcmVnaXN0ZXIs IHByaW50IGl0IGFsc28gYWNjb3JkaW5nIHRvIGl0cwogICAgICAgICAgICAg IG5hdHVyYWwgZm9ybWF0LiAgKi8KIAkgIGlmIChUWVBFX1ZFQ1RPUiAocmVn aXN0ZXJfdHlwZSAoZ2RiYXJjaCwgaSkpID09IDApCiAJICAgIHsKKwkgICAg ICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisJICAgICAgb3B0 cy5kZXJlZl9yZWYgPSAxOwogCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGZp bGUsICJcdCIpOwogCSAgICAgIHZhbF9wcmludCAocmVnaXN0ZXJfdHlwZSAo Z2RiYXJjaCwgaSksIGJ1ZmZlciwgMCwgMCwKLQkJCSBmaWxlLCAwLCAxLCAw LCBWYWxfcHJldHR5X2RlZmF1bHQsIGN1cnJlbnRfbGFuZ3VhZ2UpOworCQkJ IGZpbGUsIDAsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKIAkgICAgfQog CX0KIApAQCAtMTg5NiwxMiArMTkxMCwxNCBAQCByZWdpc3RlcnNfaW5mbyAo Y2hhciAqYWRkcl9leHAsIGludCBmcHJlZ3MpCiAJICAgIGlmIChyZWdudW0g Pj0gZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkKIAkJCSAgKyBnZGJhcmNo X251bV9wc2V1ZG9fcmVncyAoZ2RiYXJjaCkpCiAJICAgICAgeworCQlzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCQlzdHJ1Y3QgdmFsdWUg KnZhbCA9IHZhbHVlX29mX3VzZXJfcmVnIChyZWdudW0sIGZyYW1lKTsKIAog CQlwcmludGZfZmlsdGVyZWQgKCIlczogIiwgc3RhcnQpOworCQlnZXRfZm9y bWF0dGVkX3ByaW50X29wdGlvbnMgKCZvcHRzLCAneCcpOwogCQlwcmludF9z Y2FsYXJfZm9ybWF0dGVkICh2YWx1ZV9jb250ZW50cyAodmFsKSwKIAkJCQkJ Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsKSksCi0JCQkJCSd4Jywg MCwgZ2RiX3N0ZG91dCk7CisJCQkJCSZvcHRzLCAwLCBnZGJfc3Rkb3V0KTsK IAkJcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKIAkgICAgICB9CiAJICAgIGVs c2UKZGlmZiAtLWdpdCBhL2dkYi9qdi1sYW5nLmggYi9nZGIvanYtbGFuZy5o CmluZGV4IDUxYmFkYTIuLjA0YmEzODMgMTAwNjQ0Ci0tLSBhL2dkYi9qdi1s YW5nLmgKKysrIGIvZ2RiL2p2LWxhbmcuaApAQCAtNDEsMTEgKzQxLDExIEBA IGV4dGVybiBzdHJ1Y3QgdHlwZSAqamF2YV9kb3VibGVfdHlwZTsKIGV4dGVy biBzdHJ1Y3QgdHlwZSAqamF2YV92b2lkX3R5cGU7CiAKIGV4dGVybiBpbnQg amF2YV92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRl ICosIGludCwgQ09SRV9BRERSLAotCQkJICAgc3RydWN0IHVpX2ZpbGUgKiwg aW50LCBpbnQsIGludCwKLQkJCSAgIGVudW0gdmFsX3ByZXR0eXByaW50KTsK KwkJCSAgIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogCi1leHRlcm4gaW50IGph dmFfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCi0JCQkgICAgIGVudW0gdmFsX3ByZXR0eXByaW50KTsKK2V4 dGVybiBpbnQgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0 cnVjdCB1aV9maWxlICosCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICopOwogCiBleHRlcm4gc3RydWN0IHZhbHVlICpqYXZh X2NsYXNzX2Zyb21fb2JqZWN0IChzdHJ1Y3QgdmFsdWUgKik7CiAKZGlmZiAt LWdpdCBhL2dkYi9qdi12YWxwcmludC5jIGIvZ2RiL2p2LXZhbHByaW50LmMK aW5kZXggOWUzNmFhNC4uMDcxNGUwNyAxMDA2NDQKLS0tIGEvZ2RiL2p2LXZh bHByaW50LmMKKysrIGIvZ2RiL2p2LXZhbHByaW50LmMKQEAgLTM1LDEzICsz NSwxNCBAQAogLyogTG9jYWwgZnVuY3Rpb25zICovCiAKIGludAotamF2YV92 YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCSAgZW51bSB2YWxfcHJldHR5cHJp bnQgcHJldHR5KQoramF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIAorCQkgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogICBzdHJ1Y3Qg dHlwZSAqdHlwZTsKICAgQ09SRV9BRERSIGFkZHJlc3M7CiAgIGludCBpOwog ICBjaGFyICpuYW1lOworICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBv cHRzOwogCiAgIHR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwogICBhZGRyZXNz ID0gVkFMVUVfQUREUkVTUyAodmFsKSArIHZhbHVlX29mZnNldCAodmFsKTsK QEAgLTg5LDcgKzkwLDcgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQs CiAKIAkgIGFkZHJlc3MgKz0gSkFWQV9PQkpFQ1RfU0laRSArIDQ7CS8qIFNr aXAgb2JqZWN0IGhlYWRlciBhbmQgbGVuZ3RoLiAqLwogCi0JICB3aGlsZSAo aSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50X21heCkKKwkg IHdoaWxlIChpIDwgbGVuZ3RoICYmIHRoaW5nc19wcmludGVkIDwgb3B0aW9u cy0+cHJpbnRfbWF4KQogCSAgICB7CiAJICAgICAgZ2RiX2J5dGUgKmJ1ZjsK IApAQCAtMTQ1LDcgKzE0Niw3IEBAIGphdmFfdmFsdWVfcHJpbnQgKHN0cnVj dCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9y bWF0LAogCSAgVkFMVUVfQUREUkVTUyAodikgPSBhZGRyZXNzICsgSkFWQV9P QkpFQ1RfU0laRSArIDQ7CiAJICBWQUxVRV9BRERSRVNTIChuZXh0X3YpID0g VkFMVUVfQUREUkVTUyAodik7CiAKLQkgIHdoaWxlIChpIDwgbGVuZ3RoICYm IHRoaW5nc19wcmludGVkIDwgcHJpbnRfbWF4KQorCSAgd2hpbGUgKGkgPCBs ZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBvcHRpb25zLT5wcmludF9tYXgp CiAJICAgIHsKIAkgICAgICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFt KTsKIAkgICAgICB3cmFwX2hlcmUgKG5fc3BhY2VzICgyKSk7CkBAIC0xODAs OCArMTgxLDkgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2 YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCiAJICAg ICAgZWxzZQogCQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZC4uJWQ6 ICIsIGksIGkgKyByZXBzIC0gMSk7CiAKLQkgICAgICBjb21tb25fdmFsX3By aW50ICh2LCBzdHJlYW0sIGZvcm1hdCwgMiwgMSwgcHJldHR5LAotCQkJCWN1 cnJlbnRfbGFuZ3VhZ2UpOworCSAgICAgIG9wdHMgPSAqb3B0aW9uczsKKwkg ICAgICBvcHRzLmRlcmVmX3JlZiA9IDE7CisJICAgICAgY29tbW9uX3ZhbF9w cmludCAodiwgc3RyZWFtLCAxLCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7 CiAKIAkgICAgICB0aGluZ3NfcHJpbnRlZCsrOwogCSAgICAgIGkgKz0gcmVw czsKQEAgLTIwMyw3ICsyMDUsNyBAQCBqYXZhX3ZhbHVlX3ByaW50IChzdHJ1 Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZv cm1hdCwKICAgICAgICYmIFRZUEVfVEFHX05BTUUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKQogICAgICAgJiYgc3RyY21wIChUWVBFX1RBR19OQU1FIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAJCSAiamF2YS5sYW5nLlN0cmlu ZyIpID09IDAKLSAgICAgICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0g J3MnKQorICAgICAgJiYgKG9wdGlvbnMtPmZvcm1hdCA9PSAwIHx8IG9wdGlv bnMtPmZvcm1hdCA9PSAncycpCiAgICAgICAmJiBhZGRyZXNzICE9IDAKICAg ICAgICYmIHZhbHVlX2FzX2FkZHJlc3MgKHZhbCkgIT0gMCkKICAgICB7CkBA IC0yMjgsMTYgKzIzMCwxNyBAQCBqYXZhX3ZhbHVlX3ByaW50IChzdHJ1Y3Qg dmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1h dCwKIAogICAgICAgdmFsdWVfZnJlZV90b19tYXJrIChtYXJrKTsJLyogUmVs ZWFzZSB1bm5lY2Vzc2FyeSB2YWx1ZXMgKi8KIAotICAgICAgdmFsX3ByaW50 X3N0cmluZyAoZGF0YSArIGJvZmZzZXQsIGNvdW50LCAyLCBzdHJlYW0pOwor ICAgICAgdmFsX3ByaW50X3N0cmluZyAoZGF0YSArIGJvZmZzZXQsIGNvdW50 LCAyLCBzdHJlYW0sIG9wdGlvbnMpOwogCiAgICAgICByZXR1cm4gMDsKICAg ICB9CiAKLSAgcmV0dXJuIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFt LCBmb3JtYXQsIDEsIDAsIHByZXR0eSwKLQkJCSAgIGN1cnJlbnRfbGFuZ3Vh Z2UpOworICBvcHRzID0gKm9wdGlvbnM7CisgIG9wdHMuZGVyZWZfcmVmID0g MTsKKyAgcmV0dXJuIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCAw LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiB9CiAKLS8qIFRZUEUsIFZB TEFERFIsIEFERFJFU1MsIFNUUkVBTSwgUkVDVVJTRSwgYW5kIFBSRVRUWSBo YXZlIHRoZQorLyogVFlQRSwgVkFMQUREUiwgQUREUkVTUywgU1RSRUFNLCBS RUNVUlNFLCBhbmQgT1BUSU9OUyBoYXZlIHRoZQogICAgc2FtZSBtZWFuaW5n cyBhcyBpbiBjcF9wcmludF92YWx1ZSBhbmQgY192YWxfcHJpbnQuCiAKICAg IERPTlRfUFJJTlQgaXMgYW4gYXJyYXkgb2YgYmFzZWNsYXNzIHR5cGVzIHRo YXQgd2UKQEAgLTI0Niw3ICsyNDksOCBAQCBqYXZhX3ZhbHVlX3ByaW50IChz dHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IGZvcm1hdCwKIHN0YXRpYyB2b2lkCiBqYXZhX3ByaW50X3ZhbHVlX2ZpZWxk cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogCQkJIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAotCQkJIGludCBmb3JtYXQsIGludCByZWN1cnNlLCBlbnVtIHZhbF9w cmV0dHlwcmludCBwcmV0dHkpCisJCQkgaW50IHJlY3Vyc2UsCisJCQkgY29u c3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAg IGludCBpLCBsZW4sIG5fYmFzZWNsYXNzZXM7CiAKQEAgLTI3NSw3ICsyNzks NyBAQCBqYXZhX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCiAJICBib2Zmc2V0ID0g MDsKIAotCSAgaWYgKHByZXR0eSkKKwkgIGlmIChvcHRpb25zLT5wcmV0dHkp CiAJICAgIHsKIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJc biIpOwogCSAgICAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIChyZWN1 cnNlICsgMSksIHN0cmVhbSk7CkBAIC0yODksNyArMjkzLDcgQEAgamF2YV9w cmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKIAkgIGJhc2VfdmFsYWRkciA9IHZhbGFkZHI7 CiAKIAkgIGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChiYXNlY2xhc3MsIGJh c2VfdmFsYWRkciwgYWRkcmVzcyArIGJvZmZzZXQsCi0JCQkJICAgc3RyZWFt LCBmb3JtYXQsIHJlY3Vyc2UgKyAxLCBwcmV0dHkpOworCQkJCSAgIHN0cmVh bSwgcmVjdXJzZSArIDEsIG9wdGlvbnMpOwogCSAgZnB1dHNfZmlsdGVyZWQg KCIsICIsIHN0cmVhbSk7CiAJfQogCkBAIC0zMDcsNyArMzExLDcgQEAgamF2 YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkgIGlmIChmaWVsZF9pc19zdGF0aWMg KCZUWVBFX0ZJRUxEICh0eXBlLCBpKSkpCiAJICAgIHsKIAkgICAgICBjaGFy ICpuYW1lID0gVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKTsKLQkgICAgICBp ZiAoIXN0YXRpY19maWVsZF9wcmludCkKKwkgICAgICBpZiAoIW9wdGlvbnMt PnN0YXRpY19maWVsZF9wcmludCkKIAkJY29udGludWU7CiAJICAgICAgaWYg KG5hbWUgIT0gTlVMTCAmJiBzdHJjbXAgKG5hbWUsICJjbGFzcyIpID09IDAp CiAJCWNvbnRpbnVlOwpAQCAtMzE2LDcgKzMyMCw3IEBAIGphdmFfcHJpbnRf dmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IiwgIik7CiAJICBlbHNlIGlmIChuX2Jhc2VjbGFzc2VzID4gMCkKIAkgICAg ewotCSAgICAgIGlmIChwcmV0dHkpCisJICAgICAgaWYgKG9wdGlvbnMtPnBy ZXR0eSkKIAkJewogCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxu Iik7CiAJCSAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vy c2UsIHN0cmVhbSk7CkBAIC0zMjcsNyArMzMxLDcgQEAgamF2YV9wcmludF92 YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKIAkgICAgfQogCSAgZmllbGRzX3NlZW4gPSAxOwogCi0J ICBpZiAocHJldHR5KQorCSAgaWYgKG9wdGlvbnMtPnByZXR0eSkKIAkgICAg ewogCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJ ICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2Us IHN0cmVhbSk7CkBAIC0zMzYsNyArMzQwLDcgQEAgamF2YV9wcmludF92YWx1 ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKIAkgICAgewogCSAgICAgIHdyYXBfaGVyZSAobl9zcGFjZXMg KDIgKyAyICogcmVjdXJzZSkpOwogCSAgICB9Ci0JICBpZiAoaW5zcGVjdF9p dCkKKwkgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCSAgICB7CiAJICAg ICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkg PT0gVFlQRV9DT0RFX1BUUikKIAkJZnB1dHNfZmlsdGVyZWQgKCJcIiggcHRy IFwiIiwgc3RyZWFtKTsKQEAgLTM4MCwxMSArMzg0LDE1IEBAIGphdmFfcHJp bnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAJCX0KIAkgICAgICBlbHNlCiAJCXsKKwkJICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCiAJCSAgdiA9IHZh bHVlX2Zyb21fbG9uZ2VzdCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwK IAkJCQkgICB1bnBhY2tfZmllbGRfYXNfbG9uZyAodHlwZSwgdmFsYWRkciwg aSkpOwogCi0JCSAgY29tbW9uX3ZhbF9wcmludCAodiwgc3RyZWFtLCBmb3Jt YXQsIDAsIHJlY3Vyc2UgKyAxLAotCQkJCSAgICBwcmV0dHksIGN1cnJlbnRf bGFuZ3VhZ2UpOworCQkgIG9wdHMgPSAqb3B0aW9uczsKKwkJICBvcHRzLmRl cmVmX3JlZiA9IDA7CisJCSAgY29tbW9uX3ZhbF9wcmludCAodiwgc3RyZWFt LCByZWN1cnNlICsgMSwKKwkJCQkgICAgJm9wdHMsIGN1cnJlbnRfbGFuZ3Vh Z2UpOwogCQl9CiAJICAgIH0KIAkgIGVsc2UKQEAgLTQwMCwyOCArNDA4LDMz IEBAIGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCSAgICBmcHV0c19maWx0 ZXJlZCAoIjxvcHRpbWl6ZWQgb3V0PiIsIHN0cmVhbSk7CiAJCSAgZWxzZQog CQkgICAgeworCQkgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBv cHRzOwogCQkgICAgICBzdHJ1Y3QgdHlwZSAqdCA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKHYpKTsKIAkJICAgICAgaWYgKFRZUEVfQ09ERSAodCkg PT0gVFlQRV9DT0RFX1NUUlVDVCkKIAkJCXYgPSB2YWx1ZV9hZGRyICh2KTsK LQkJICAgICAgY29tbW9uX3ZhbF9wcmludCAodiwgc3RyZWFtLCBmb3JtYXQs IDAsIHJlY3Vyc2UgKyAxLAotCQkJCQlwcmV0dHksIGN1cnJlbnRfbGFuZ3Vh Z2UpOworCQkgICAgICBvcHRzID0gKm9wdGlvbnM7CisJCSAgICAgIG9wdHMu ZGVyZWZfcmVmID0gMDsKKwkJICAgICAgY29tbW9uX3ZhbF9wcmludCAodiwg c3RyZWFtLCByZWN1cnNlICsgMSwKKwkJCQkJJm9wdHMsIGN1cnJlbnRfbGFu Z3VhZ2UpOwogCQkgICAgfQogCQl9CiAJICAgICAgZWxzZSBpZiAoVFlQRV9G SUVMRF9UWVBFICh0eXBlLCBpKSA9PSBOVUxMKQogCQlmcHV0c19maWx0ZXJl ZCAoIjx1bmtub3duIHR5cGU+Iiwgc3RyZWFtKTsKIAkgICAgICBlbHNlCiAJ CXsKKwkJICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzID0gKm9w dGlvbnM7CisJCSAgb3B0cy5kZXJlZl9yZWYgPSAwOwogCQkgIHZhbF9wcmlu dCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwKIAkJCSAgICAgdmFsYWRk ciArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSAvIDgsIDAsCiAJCQkg ICAgIGFkZHJlc3MgKyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgLyA4 LAotCQkJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEsIHBy ZXR0eSwKKwkJCSAgICAgc3RyZWFtLCByZWN1cnNlICsgMSwgJm9wdHMsCiAJ CQkgICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAgIH0KIAkgIGFu bm90YXRlX2ZpZWxkX2VuZCAoKTsKIAl9CiAKLSAgICAgIGlmIChwcmV0dHkp CisgICAgICBpZiAob3B0aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNfZmls dGVyZWQgKDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtNDMyLDIyICs0NDUs MTYgQEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAogLyogUHJpbnQgZGF0 YSBvZiB0eXBlIFRZUEUgbG9jYXRlZCBhdCBWQUxBRERSICh3aXRoaW4gR0RC KSwgd2hpY2ggY2FtZSBmcm9tCiAgICB0aGUgaW5mZXJpb3IgYXQgYWRkcmVz cyBBRERSRVNTLCBvbnRvIHN0ZGlvIHN0cmVhbSBTVFJFQU0gYWNjb3JkaW5n IHRvCi0gICBGT1JNQVQgKGEgbGV0dGVyIG9yIDAgZm9yIG5hdHVyYWwgZm9y bWF0KS4gIFRoZSBkYXRhIGF0IFZBTEFERFIgaXMgaW4KLSAgIHRhcmdldCBi eXRlIG9yZGVyLgorICAgT1BUSU9OUy4gIFRoZSBkYXRhIGF0IFZBTEFERFIg aXMgaW4gdGFyZ2V0IGJ5dGUgb3JkZXIuCiAKICAgIElmIHRoZSBkYXRhIGFy ZSBhIHN0cmluZyBwb2ludGVyLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3Ry aW5nIGNoYXJhY3RlcnMKLSAgIHByaW50ZWQuCi0KLSAgIElmIERFUkVGX1JF RiBpcyBub256ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90 aGVyd2lzZSBqdXN0IHByaW50Ci0gICB0aGVtIGxpa2UgcG9pbnRlcnMuCi0K LSAgIFRoZSBQUkVUVFkgcGFyYW1ldGVyIGNvbnRyb2xzIHByZXR0eXByaW50 aW5nLiAgKi8KKyAgIHByaW50ZWQuICAqLwogCiBpbnQKIGphdmFfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCiAJCWludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAotCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBpbnQg ZGVyZWZfcmVmLAotCQlpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJp bnQgcHJldHR5KQorCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVj dXJzZSwKKwkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpID0gMDsJLyogTnVtYmVyIG9m IGNoYXJhY3RlcnMgcHJpbnRlZCAqLwogICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0 X3R5cGU7CkBAIC00NTcsMTMgKzQ2NCwxMyBAQCBqYXZhX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog ICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAgICAgewogICAgIGNhc2Ug VFlQRV9DT0RFX1BUUjoKLSAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0ICE9 ICdzJykKKyAgICAgIGlmIChvcHRpb25zLT5mb3JtYXQgJiYgb3B0aW9ucy0+ Zm9ybWF0ICE9ICdzJykKIAl7Ci0JICBwcmludF9zY2FsYXJfZm9ybWF0dGVk ICh2YWxhZGRyLCB0eXBlLCBmb3JtYXQsIDAsIHN0cmVhbSk7CisJICBwcmlu dF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCBvcHRpb25zLCAw LCBzdHJlYW0pOwogCSAgYnJlYWs7CiAJfQogI2lmIDAKLSAgICAgIGlmICh2 dGJscHJpbnQgJiYgY3BfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCisgICAg ICBpZiAob3B0aW9ucy0+dnRibHByaW50ICYmIGNwX2lzX3Z0YmxfcHRyX3R5 cGUgKHR5cGUpKQogCXsKIAkgIC8qIFByaW50IHRoZSB1bm1hbmdsZWQgbmFt ZSBpZiBkZXNpcmVkLiAgKi8KIAkgIC8qIFByaW50IHZ0YWJsZSBlbnRyeSAt IHdlIG9ubHkgZ2V0IGhlcmUgaWYgd2UgQVJFIHVzaW5nCkBAIC00OTAsNyAr NDk3LDcgQEAgamF2YV92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkgIHJldHVybiAoMCk7CiAJfQog Ci0gICAgICBpZiAoYWRkcmVzc3ByaW50ICYmIGZvcm1hdCAhPSAncycpCisg ICAgICBpZiAob3B0aW9ucy0+YWRkcmVzc3ByaW50ICYmIG9wdGlvbnMtPmZv cm1hdCAhPSAncycpCiAJewogCSAgZnB1dHNfZmlsdGVyZWQgKCJAIiwgc3Ry ZWFtKTsKIAkgIHByaW50X2xvbmdlc3QgKHN0cmVhbSwgJ3gnLCAwLCAoVUxP TkdFU1QpIGFkZHIpOwpAQCAtNTAyLDkgKzUwOSwxMyBAQCBqYXZhX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAogICAgIGNhc2UgVFlQRV9DT0RFX0lOVDoKICAgICAgIC8qIENhbid0 IGp1c3QgY2FsbCBjX3ZhbF9wcmludCBiZWNhdXNlIHRoYXQgcHJpbnRzIGJ5 dGVzIGFzIEMKIAkgY2hhcnMuICAqLwotICAgICAgZm9ybWF0ID0gZm9ybWF0 ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQp Ci0JcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciwgdHlwZSwgZm9y bWF0LCAwLCBzdHJlYW0pOworICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCB8 fCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQorCXsKKwkgIHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKKwkgIG9wdHMuZm9y bWF0ID0gKG9wdGlvbnMtPmZvcm1hdCA/IG9wdGlvbnMtPmZvcm1hdAorCQkJ IDogb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCk7CisJICBwcmludF9zY2FsYXJf Zm9ybWF0dGVkICh2YWxhZGRyLCB0eXBlLCAmb3B0cywgMCwgc3RyZWFtKTsK Kwl9CiAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9DSEFSCiAJICAgICAgIHx8IChUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9JTlQKIAkJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpID09IDIK QEAgLTUxNSwxMyArNTI2LDEzIEBAIGphdmFfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICBi cmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgIGph dmFfcHJpbnRfdmFsdWVfZmllbGRzICh0eXBlLCB2YWxhZGRyLCBhZGRyZXNz LCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHkp OworICAgICAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHR5cGUsIHZhbGFk ZHIsIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwKKwkJCSAgICAgICBvcHRp b25zKTsKICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgIHJl dHVybiBjX3ZhbF9wcmludCAodHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zm c2V0LCBhZGRyZXNzLCBzdHJlYW0sCi0JCQkgIGZvcm1hdCwgZGVyZWZfcmVm LCByZWN1cnNlLCBwcmV0dHkpOworCQkJICByZWN1cnNlLCBvcHRpb25zKTsK ICAgICB9CiAKICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9nZGIvbGFuZ3Vh Z2UuYyBiL2dkYi9sYW5ndWFnZS5jCmluZGV4IDEyMWZjNTUuLjQ2ZTIzOGQg MTAwNjQ0Ci0tLSBhL2dkYi9sYW5ndWFnZS5jCisrKyBiL2dkYi9sYW5ndWFn ZS5jCkBAIC03Miw3ICs3Miw4IEBAIHN0YXRpYyB2b2lkIHVua19sYW5nX3By aW50Y2hhciAoaW50IGMsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogc3Rh dGljIHZvaWQgdW5rX2xhbmdfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwg Y2hhciAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAogCQkJCSBpbnQsIGludCk7CiAK LXN0YXRpYyBpbnQgdW5rX2xhbmdfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1 ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGVudW0gdmFsX3ByZXR0eXBy aW50KTsKK3N0YXRpYyBpbnQgdW5rX2xhbmdfdmFsdWVfcHJpbnQgKHN0cnVj dCB2YWx1ZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorCQkJCSBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogc3RhdGljIENPUkVfQURE UiB1bmtfbGFuZ190cmFtcG9saW5lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBD T1JFX0FERFIgcGMpOwogCkBAIC0xMDM1LDEwICsxMDM2LDEwIEBAIGRlZmF1 bHRfd29yZF9icmVha19jaGFyYWN0ZXJzICh2b2lkKQogCiB2b2lkCiBkZWZh dWx0X3ByaW50X2FycmF5X2luZGV4IChzdHJ1Y3QgdmFsdWUgKmluZGV4X3Zh bHVlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGZvcm1hdCwgZW51bSB2YWxfcHJldHR5cHJpbnQg cHJldHR5KQorCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpCiB7CiAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IlsiKTsKLSAgTEFfVkFMVUVfUFJJTlQgKGluZGV4X3ZhbHVlLCBzdHJlYW0s IGZvcm1hdCwgcHJldHR5KTsKKyAgTEFfVkFMVUVfUFJJTlQgKGluZGV4X3Zh bHVlLCBzdHJlYW0sIG9wdGlvbnMpOwogICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJdID0gIik7CiB9CiAKQEAgLTEwNzAsNyArMTA3MSw4IEBAIHVu a19sYW5nX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCiAKIHN0YXRpYyB2b2lkCiB1bmtfbGFuZ19wcmludHN0ciAoc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0cmluZywKLQkJ ICAgdW5zaWduZWQgaW50IGxlbmd0aCwgaW50IHdpZHRoLCBpbnQgZm9yY2Vf ZWxsaXBzZXMpCisJCSAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0 aCwgaW50IGZvcmNlX2VsbGlwc2VzLAorCQkgICBjb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgZXJyb3IgKF8oImlu dGVybmFsIGVycm9yIC0gdW5pbXBsZW1lbnRlZCBmdW5jdGlvbiB1bmtfbGFu Z19wcmludHN0ciBjYWxsZWQuIikpOwogfQpAQCAtMTA4NSwxNSArMTA4Nywx NSBAQCB1bmtfbGFuZ19wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y2hhciAqdmFyc3RyaW5nLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogc3Rh dGljIGludAogdW5rX2xhbmdfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCSAgICBpbnQgZW1iZWRk ZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKLQkJICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCSAgICBpbnQgZGVyZWZf cmVmLCBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5 KQorCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2Us CisJCSAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucykKIHsKICAgZXJyb3IgKF8oImludGVybmFsIGVycm9yIC0gdW5pbXBs ZW1lbnRlZCBmdW5jdGlvbiB1bmtfbGFuZ192YWxfcHJpbnQgY2FsbGVkLiIp KTsKIH0KIAogc3RhdGljIGludAotdW5rX2xhbmdfdmFsdWVfcHJpbnQgKHN0 cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg Zm9ybWF0LAotCQkgICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkp Cit1bmtfbGFuZ192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sCisJCSAgICAgIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogICBlcnJvciAoXygi aW50ZXJuYWwgZXJyb3IgLSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uIHVua19s YW5nX3ZhbHVlX3ByaW50IGNhbGxlZC4iKSk7CiB9CmRpZmYgLS1naXQgYS9n ZGIvbGFuZ3VhZ2UuaCBiL2dkYi9sYW5ndWFnZS5oCmluZGV4IGNjMTBmZjIu LmM5MmM1N2MgMTAwNjQ0Ci0tLSBhL2dkYi9sYW5ndWFnZS5oCisrKyBiL2dk Yi9sYW5ndWFnZS5oCkBAIC0zMCw2ICszMCw3IEBAIHN0cnVjdCBvYmpmaWxl Owogc3RydWN0IGZyYW1lX2luZm87CiBzdHJ1Y3QgZXhwcmVzc2lvbjsKIHN0 cnVjdCB1aV9maWxlOworc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnM7CiAK ICNkZWZpbmUgTUFYX0ZPUlRSQU5fRElNUyAgNwkvKiBNYXhpbXVtIG51bWJl ciBvZiBGNzcgYXJyYXkgZGltcyAqLwogCkBAIC0xODksNyArMTkwLDggQEAg c3RydWN0IGxhbmd1YWdlX2RlZm4KIAogICAgIHZvaWQgKCpsYV9wcmludHN0 cikgKHN0cnVjdCB1aV9maWxlICogc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAq c3RyaW5nLAogCQkJIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwK LQkJCSBpbnQgZm9yY2VfZWxsaXBzZXMpOworCQkJIGludCBmb3JjZV9lbGxp cHNlcywKKwkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq KTsKIAogICAgIHZvaWQgKCpsYV9lbWl0Y2hhcikgKGludCBjaCwgc3RydWN0 IHVpX2ZpbGUgKiBzdHJlYW0sIGludCBxdW90ZXIpOwogCkBAIC0yMDgsMTMg KzIxMCwxMyBAQCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbgogICAgIC8qIFByaW50 IGEgdmFsdWUgdXNpbmcgc3ludGF4IGFwcHJvcHJpYXRlIGZvciB0aGlzIGxh bmd1YWdlLiAqLwogCiAgICAgaW50ICgqbGFfdmFsX3ByaW50KSAoc3RydWN0 IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCi0J CQkgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsIGludCwKLQkJCSBlbnVt IHZhbF9wcmV0dHlwcmludCk7CisJCQkgc3RydWN0IHVpX2ZpbGUgKiwgaW50 LAorCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwog CiAgICAgLyogUHJpbnQgYSB0b3AtbGV2ZWwgdmFsdWUgdXNpbmcgc3ludGF4 IGFwcHJvcHJpYXRlIGZvciB0aGlzIGxhbmd1YWdlLiAqLwogCiAgICAgaW50 ICgqbGFfdmFsdWVfcHJpbnQpIChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVp X2ZpbGUgKiwKLQkJCSAgIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQpOwor CQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAK ICAgICAvKiBQQyBpcyBwb3NzaWJseSBhbiB1bmtub3duIGxhbmd1YWdlcyB0 cmFtcG9saW5lLgogICAgICAgIElmIHRoYXQgUEMgZmFsbHMgaW4gYSB0cmFt cG9saW5lIGJlbG9uZ2luZyB0byB0aGlzIGxhbmd1YWdlLApAQCAtMjc0LDgg KzI3Niw3IEBAIHN0cnVjdCBsYW5ndWFnZV9kZWZuCiAgICAgLyogUHJpbnQg dGhlIGluZGV4IG9mIGFuIGVsZW1lbnQgb2YgYW4gYXJyYXkuICAqLwogICAg IHZvaWQgKCpsYV9wcmludF9hcnJheV9pbmRleCkgKHN0cnVjdCB2YWx1ZSAq aW5kZXhfdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0 eSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwogCiAgICAg LyogUmV0dXJuIG5vbi16ZXJvIGlmIFRZUEUgc2hvdWxkIGJlIHBhc3NlZCAo YW5kIHJldHVybmVkKSBieQogICAgICAgIHJlZmVyZW5jZSBhdCB0aGUgbGFu Z3VhZ2UgbGV2ZWwuICAqLwpAQCAtMzY2LDIxICszNjcsMjIgQEAgZXh0ZXJu IGVudW0gbGFuZ3VhZ2Ugc2V0X2xhbmd1YWdlIChlbnVtIGxhbmd1YWdlKTsK ICNkZWZpbmUgTEFfUFJJTlRfVFlQRURFRih0eXBlLG5ld19zeW1ib2wsc3Ry ZWFtKSBcCiAgIChjdXJyZW50X2xhbmd1YWdlLT5sYV9wcmludF90eXBlZGVm KHR5cGUsbmV3X3N5bWJvbCxzdHJlYW0pKQogCi0jZGVmaW5lIExBX1ZBTF9Q UklOVCh0eXBlLHZhbGFkZHIsb2Zmc2V0LGFkZHIsc3RyZWFtLGZtdCxkZXJl ZixyZWN1cnNlLHByZXR0eSkgXAotICAoY3VycmVudF9sYW5ndWFnZS0+bGFf dmFsX3ByaW50KHR5cGUsdmFsYWRkcixvZmZzZXQsYWRkcixzdHJlYW0sZm10 LGRlcmVmLCBcCi0JCQkJICByZWN1cnNlLHByZXR0eSkpCi0jZGVmaW5lIExB X1ZBTFVFX1BSSU5UKHZhbCxzdHJlYW0sZm10LHByZXR0eSkgXAotICAoY3Vy cmVudF9sYW5ndWFnZS0+bGFfdmFsdWVfcHJpbnQodmFsLHN0cmVhbSxmbXQs cHJldHR5KSkKKyNkZWZpbmUgTEFfVkFMX1BSSU5UKHR5cGUsdmFsYWRkcixv ZmZzZXQsYWRkcixzdHJlYW0scmVjdXJzZSxvcHRpb25zKSBcCisgIChjdXJy ZW50X2xhbmd1YWdlLT5sYV92YWxfcHJpbnQodHlwZSx2YWxhZGRyLG9mZnNl dCxhZGRyLHN0cmVhbSwgXAorCQkJCSAgcmVjdXJzZSxvcHRpb25zKSkKKyNk ZWZpbmUgTEFfVkFMVUVfUFJJTlQodmFsLHN0cmVhbSxvcHRpb25zKSBcCisg IChjdXJyZW50X2xhbmd1YWdlLT5sYV92YWx1ZV9wcmludCh2YWwsc3RyZWFt LG9wdGlvbnMpKQogCiAjZGVmaW5lIExBX1BSSU5UX0NIQVIoY2gsIHN0cmVh bSkgXAogICAoY3VycmVudF9sYW5ndWFnZS0+bGFfcHJpbnRjaGFyKGNoLCBz dHJlYW0pKQotI2RlZmluZSBMQV9QUklOVF9TVFJJTkcoc3RyZWFtLCBzdHJp bmcsIGxlbmd0aCwgd2lkdGgsIGZvcmNlX2VsbGlwc2VzKSBcCi0gIChjdXJy ZW50X2xhbmd1YWdlLT5sYV9wcmludHN0cihzdHJlYW0sIHN0cmluZywgbGVu Z3RoLCB3aWR0aCwgZm9yY2VfZWxsaXBzZXMpKQorI2RlZmluZSBMQV9QUklO VF9TVFJJTkcoc3RyZWFtLCBzdHJpbmcsIGxlbmd0aCwgd2lkdGgsIGZvcmNl X2VsbGlwc2VzLG9wdGlvbnMpIFwKKyAgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxh X3ByaW50c3RyKHN0cmVhbSwgc3RyaW5nLCBsZW5ndGgsIHdpZHRoLCBcCisJ CQkJIGZvcmNlX2VsbGlwc2VzLG9wdGlvbnMpKQogI2RlZmluZSBMQV9FTUlU X0NIQVIoY2gsIHN0cmVhbSwgcXVvdGVyKSBcCiAgIChjdXJyZW50X2xhbmd1 YWdlLT5sYV9lbWl0Y2hhcihjaCwgc3RyZWFtLCBxdW90ZXIpKQogCi0jZGVm aW5lIExBX1BSSU5UX0FSUkFZX0lOREVYKGluZGV4X3ZhbHVlLCBzdHJlYW0s IGZvcm1hdCwgcHJldHR5KSBcCi0gIChjdXJyZW50X2xhbmd1YWdlLT5sYV9w cmludF9hcnJheV9pbmRleChpbmRleF92YWx1ZSwgc3RyZWFtLCBmb3JtYXQs IHByZXR0eSkpCisjZGVmaW5lIExBX1BSSU5UX0FSUkFZX0lOREVYKGluZGV4 X3ZhbHVlLCBzdHJlYW0sIG9wdGlucykgXAorICAoY3VycmVudF9sYW5ndWFn ZS0+bGFfcHJpbnRfYXJyYXlfaW5kZXgoaW5kZXhfdmFsdWUsIHN0cmVhbSwg b3B0aW9ucykpCiAKIC8qIFRlc3QgYSBjaGFyYWN0ZXIgdG8gZGVjaWRlIHdo ZXRoZXIgaXQgY2FuIGJlIHByaW50ZWQgaW4gbGl0ZXJhbCBmb3JtCiAgICBv ciBuZWVkcyB0byBiZSBwcmludGVkIGluIGFub3RoZXIgcmVwcmVzZW50YXRp b24uICBGb3IgZXhhbXBsZSwKQEAgLTQ3Miw4ICs0NzQsNyBAQCBleHRlcm4g Y2hhciAqZGVmYXVsdF93b3JkX2JyZWFrX2NoYXJhY3RlcnMgKHZvaWQpOwog LyogUHJpbnQgdGhlIGluZGV4IG9mIGFuIGFycmF5IGVsZW1lbnQgdXNpbmcg dGhlIEM5OSBzeW50YXguICAqLwogZXh0ZXJuIHZvaWQgZGVmYXVsdF9wcmlu dF9hcnJheV9pbmRleCAoc3RydWN0IHZhbHVlICppbmRleF92YWx1ZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5 KTsKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpOwogCiAvKiBSZXR1cm4gbm9uLXplcm8gaWYgVFlQRSBz aG91bGQgYmUgcGFzc2VkIChhbmQgcmV0dXJuZWQpIGJ5CiAgICByZWZlcmVu Y2UgYXQgdGhlIGxhbmd1YWdlIGxldmVsLiAgKi8KZGlmZiAtLWdpdCBhL2dk Yi9tMi1sYW5nLmMgYi9nZGIvbTItbGFuZy5jCmluZGV4IGVhNTk0MDMuLmUw OWI2NGIgMTAwNjQ0Ci0tLSBhL2dkYi9tMi1sYW5nLmMKKysrIGIvZ2RiL20y LWxhbmcuYwpAQCAtMTA0LDcgKzEwNCw4IEBAIG0yX3ByaW50Y2hhciAoaW50 IGMsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAKIHN0YXRpYyB2b2lkCiBt Ml9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKLQkgICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGlu dCB3aWR0aCwgaW50IGZvcmNlX2VsbGlwc2VzKQorCSAgICAgdW5zaWduZWQg aW50IGxlbmd0aCwgaW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMsCisJ ICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKIHsKICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGludCB0aGlu Z3NfcHJpbnRlZCA9IDA7CkBAIC0xMTcsNyArMTE4LDcgQEAgbTJfcHJpbnRz dHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpz dHJpbmcsCiAgICAgICByZXR1cm47CiAgICAgfQogCi0gIGZvciAoaSA9IDA7 IGkgPCBsZW5ndGggJiYgdGhpbmdzX3ByaW50ZWQgPCBwcmludF9tYXg7ICsr aSkKKyAgZm9yIChpID0gMDsgaSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRl ZCA8IG9wdGlvbnMtPnByaW50X21heDsgKytpKQogICAgIHsKICAgICAgIC8q IFBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZwog ICAgICAgICAgdG8gc2VlIHdoZXRoZXIgaXQgaXMgcmVwZWF0ZWQuICAqLwpA QCAtMTQxLDExICsxNDIsMTEgQEAgbTJfcHJpbnRzdHIgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJICArK3Jl cHM7CiAJfQogCi0gICAgICBpZiAocmVwcyA+IHJlcGVhdF9jb3VudF90aHJl c2hvbGQpCisgICAgICBpZiAocmVwcyA+IG9wdGlvbnMtPnJlcGVhdF9jb3Vu dF90aHJlc2hvbGQpCiAJewogCSAgaWYgKGluX3F1b3RlcykKIAkgICAgewot CSAgICAgIGlmIChpbnNwZWN0X2l0KQorCSAgICAgIGlmIChvcHRpb25zLT5p bnNwZWN0X2l0KQogCQlmcHV0c19maWx0ZXJlZCAoIlxcXCIsICIsIHN0cmVh bSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiLCAiLCBz dHJlYW0pOwpAQCAtMTU0LDE0ICsxNTUsMTQgQEAgbTJfcHJpbnRzdHIgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcs CiAJICBtMl9wcmludGNoYXIgKHN0cmluZ1tpXSwgc3RyZWFtKTsKIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1lcz4i LCByZXBzKTsKIAkgIGkgPSByZXAxIC0gMTsKLQkgIHRoaW5nc19wcmludGVk ICs9IHJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CisJICB0aGluZ3NfcHJpbnRl ZCArPSBvcHRpb25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogCSAgbmVl ZF9jb21tYSA9IDE7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGlmICghaW5f cXVvdGVzKQogCSAgICB7Ci0JICAgICAgaWYgKGluc3BlY3RfaXQpCisJICAg ICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJCWZwdXRzX2ZpbHRlcmVk ICgiXFxcIiIsIHN0cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0 ZXJlZCAoIlwiIiwgc3RyZWFtKTsKQEAgLTE3NSw3ICsxNzYsNyBAQCBtMl9w cmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5 dGUgKnN0cmluZywKICAgLyogVGVybWluYXRlIHRoZSBxdW90ZXMgaWYgbmVj ZXNzYXJ5LiAgKi8KICAgaWYgKGluX3F1b3RlcykKICAgICB7Ci0gICAgICBp ZiAoaW5zcGVjdF9pdCkKKyAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0 KQogCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIsIHN0cmVhbSk7CiAgICAgICBl bHNlCiAJZnB1dHNfZmlsdGVyZWQgKCJcIiIsIHN0cmVhbSk7CmRpZmYgLS1n aXQgYS9nZGIvbTItbGFuZy5oIGIvZ2RiL20yLWxhbmcuaAppbmRleCA4Y2U0 NThjLi5mOTllMzFhIDEwMDY0NAotLS0gYS9nZGIvbTItbGFuZy5oCisrKyBi L2dkYi9tMi1sYW5nLmgKQEAgLTMzLDggKzMzLDggQEAgZXh0ZXJuIGludCBt Ml9pc19sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUpOwogZXh0ZXJuIGlu dCBtMl9pc191bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlKTsK IAogZXh0ZXJuIGludCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNv bnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAotCQkJIHN0cnVjdCB1 aV9maWxlICosIGludCwgaW50LCBpbnQsCi0JCQkgZW51bSB2YWxfcHJldHR5 cHJpbnQpOworCQkJIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogZXh0ZXJuIGlu dCBnZXRfbG9uZ19zZXRfYm91bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9O R0VTVCAqbG93LAogCQkJCUxPTkdFU1QgKmhpZ2gpOwpkaWZmIC0tZ2l0IGEv Z2RiL20yLXZhbHByaW50LmMgYi9nZGIvbTItdmFscHJpbnQuYwppbmRleCA4 MmZmMzBlLi5kNDgxMDhmIDEwMDY0NAotLS0gYS9nZGIvbTItdmFscHJpbnQu YworKysgYi9nZGIvbTItdmFscHJpbnQuYwpAQCAtMzAsMjIgKzMwLDI0IEBA CiAjaW5jbHVkZSAibTItbGFuZy5oIgogI2luY2x1ZGUgInRhcmdldC5oIgog Ci1pbnQgcHJpbnRfdW5wYWNrZWRfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5 cGUsCi0JCQkgICAgQ09SRV9BRERSIGFkZHJlc3MsIENPUkVfQUREUiBhZGRy LAotCQkJICAgIGludCBmb3JtYXQsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p Oworc3RhdGljIGludCBwcmludF91bnBhY2tlZF9wb2ludGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKKwkJCQkgICBDT1JFX0FERFIgYWRkcmVzcywgQ09SRV9B RERSIGFkZHIsCisJCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMsCisJCQkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSk7CiBzdGF0aWMgdm9pZAogbTJfcHJpbnRfYXJyYXlfY29udGVudHMgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJ CSBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKLQkJ CSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkJIGVu dW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSwKLQkJCSBpbnQgZGVyZWZfcmVm LCBpbnQgcmVjdXJzZSwgaW50IGxlbik7CisJCQkgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCQkgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCisJCQkgaW50IGxlbik7CiAKIAog LyogUHJpbnQgZnVuY3Rpb24gcG9pbnRlciB3aXRoIGluZmVyaW9yIGFkZHJl c3MgQUREUkVTUyBvbnRvIHN0ZGlvCiAgICBzdHJlYW0gU1RSRUFNLiAgKi8K IAogc3RhdGljIHZvaWQKLXByaW50X2Z1bmN0aW9uX3BvaW50ZXJfYWRkcmVz cyAoQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p CitwcmludF9mdW5jdGlvbl9wb2ludGVyX2FkZHJlc3MgKENPUkVfQUREUiBh ZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorCQkJCWludCBhZGRy ZXNzcHJpbnQpCiB7CiAgIENPUkVfQUREUiBmdW5jX2FkZHIgPSBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChjdXJyZW50X2dkYmFyY2gs CiAJCQkJCQkJICAgIGFkZHJlc3MsCkBAIC04OCw4ICs5MCw3IEBAIGdldF9s b25nX3NldF9ib3VuZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUICps b3csIExPTkdFU1QgKmhpZ2gpCiBzdGF0aWMgdm9pZAogbTJfcHJpbnRfbG9u Z19zZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKIAkJICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFk ZHJlc3MsCi0JCSAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3Jt YXQsCi0JCSAgIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkKKwkJICAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKIHsKICAgaW50IGVtcHR5X3NldCAg ICAgICAgPSAxOwogICBpbnQgZWxlbWVudF9zZWVuICAgICA9IDA7CkBAIC0x ODQsOSArMTg1LDggQEAgbTJfcHJpbnRfbG9uZ19zZXQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIHN0YXRpYyB2b2lk CiBtMl9wcmludF91bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJCSAgaW50IGVtYmVkZGVk X29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCQkgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCQkgIGludCBkZXJlZl9yZWYs IGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSwKLQkJCSAgaW50IHJlY3Vy c2UpCisJCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAorCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucykKIHsKICAgc3RydWN0IHR5cGUgKmNvbnRlbnRfdHlwZTsKICAgQ09S RV9BRERSIGFkZHI7CkBAIC0yMDcsMjYgKzIwNywyNyBAQCBtMl9wcmludF91 bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi eyIpOyAgCiAgIG0yX3ByaW50X2FycmF5X2NvbnRlbnRzICh2YWx1ZV90eXBl ICh2YWwpLCB2YWx1ZV9jb250ZW50cyh2YWwpLAogCQkJICAgdmFsdWVfZW1i ZWRkZWRfb2Zmc2V0ICh2YWwpLCBhZGRyLCBzdHJlYW0sCi0JCQkgICBmb3Jt YXQsIGRlcmVmX3JlZiwgcHJldHR5LCByZWN1cnNlLCBsZW4pOworCQkJICAg cmVjdXJzZSwgb3B0aW9ucywgbGVuKTsKICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLCBISUdIID0gJWR9IiwgKGludCkgbGVuKTsKIH0KIAotaW50 CitzdGF0aWMgaW50CiBwcmludF91bnBhY2tlZF9wb2ludGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKIAkJCUNPUkVfQUREUiBhZGRyZXNzLCBDT1JFX0FERFIg YWRkciwKLQkJCWludCBmb3JtYXQsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p CisJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cywKKwkJCXN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiB7CiAgIHN0cnVjdCB0 eXBlICplbHR0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpOwogCiAgIGlmIChUWVBFX0NPREUgKGVsdHR5cGUpID09IFRZ UEVfQ09ERV9GVU5DKQogICAgIHsKICAgICAgIC8qIFRyeSB0byBwcmludCB3 aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4gICovCi0gICAgICBwcmludF9m dW5jdGlvbl9wb2ludGVyX2FkZHJlc3MgKGFkZHIsIHN0cmVhbSk7CisgICAg ICBwcmludF9mdW5jdGlvbl9wb2ludGVyX2FkZHJlc3MgKGFkZHIsIHN0cmVh bSwgb3B0aW9ucy0+YWRkcmVzc3ByaW50KTsKICAgICAgIC8qIFJldHVybiB2 YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJz LiAgKi8KICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICBpZiAoYWRkcmVz c3ByaW50ICYmIGZvcm1hdCAhPSAncycpCisgIGlmIChvcHRpb25zLT5hZGRy ZXNzcHJpbnQgJiYgb3B0aW9ucy0+Zm9ybWF0ICE9ICdzJykKICAgICBmcHV0 c19maWx0ZXJlZCAocGFkZHJlc3MgKGFkZHJlc3MpLCBzdHJlYW0pOwogCiAg IC8qIEZvciBhIHBvaW50ZXIgdG8gY2hhciBvciB1bnNpZ25lZCBjaGFyLCBh bHNvIHByaW50IHRoZSBzdHJpbmcKQEAgLTIzNCw5ICsyMzUsOSBAQCBwcmlu dF91bnBhY2tlZF9wb2ludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwKIAogICBp ZiAoVFlQRV9MRU5HVEggKGVsdHR5cGUpID09IDEKICAgICAgICYmIFRZUEVf Q09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0lOVAotICAgICAgJiYgKGZv cm1hdCA9PSAwIHx8IGZvcm1hdCA9PSAncycpCisgICAgICAmJiAob3B0aW9u cy0+Zm9ybWF0ID09IDAgfHwgb3B0aW9ucy0+Zm9ybWF0ID09ICdzJykKICAg ICAgICYmIGFkZHIgIT0gMCkKLSAgICAgIHJldHVybiB2YWxfcHJpbnRfc3Ry aW5nIChhZGRyLCAtMSwgVFlQRV9MRU5HVEggKGVsdHR5cGUpLCBzdHJlYW0p OworICAgIHJldHVybiB2YWxfcHJpbnRfc3RyaW5nIChhZGRyLCAtMSwgVFlQ RV9MRU5HVEggKGVsdHR5cGUpLCBzdHJlYW0sIG9wdGlvbnMpOwogICAKICAg cmV0dXJuIDA7CiB9CkBAIC0yNDQsOSArMjQ1LDkgQEAgcHJpbnRfdW5wYWNr ZWRfcG9pbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsCiBzdGF0aWMgdm9pZAog cHJpbnRfdmFyaWFibGVfYXRfYWRkcmVzcyAoc3RydWN0IHR5cGUgKnR5cGUs CiAJCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLQkJCSAgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JCQkgICBpbnQgZGVy ZWZfcmVmLCBpbnQgcmVjdXJzZSwKLQkJCSAgIGVudW0gdmFsX3ByZXR0eXBy aW50IHByZXR0eSkKKwkJCSAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisJ CQkgICBpbnQgcmVjdXJzZSwKKwkJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRpb25zKQogewogICBDT1JFX0FERFIgYWRkciA9 IHVucGFja19wb2ludGVyICh0eXBlLCB2YWxhZGRyKTsKICAgc3RydWN0IHR5 cGUgKmVsdHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSk7CkBAIC0yNTksOCArMjYwLDcgQEAgcHJpbnRfdmFyaWFibGVf YXRfYWRkcmVzcyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgewogICAgICAg c3RydWN0IHZhbHVlICpkZXJlZl92YWwgPQogCXZhbHVlX2F0IChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSwgdW5wYWNrX3BvaW50ZXIgKHR5cGUsIHZhbGFk ZHIpKTsKLSAgICAgIGNvbW1vbl92YWxfcHJpbnQgKGRlcmVmX3ZhbCwgc3Ry ZWFtLCBmb3JtYXQsIGRlcmVmX3JlZiwKLQkJCXJlY3Vyc2UsIHByZXR0eSwg Y3VycmVudF9sYW5ndWFnZSk7CisgICAgICBjb21tb25fdmFsX3ByaW50IChk ZXJlZl92YWwsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgY3VycmVudF9s YW5ndWFnZSk7CiAgICAgfQogICBlbHNlCiAgICAgZnB1dHNfZmlsdGVyZWQg KCI/Pz8iLCBzdHJlYW0pOwpAQCAtMjc2LDkgKzI3Niw5IEBAIHByaW50X3Zh cmlhYmxlX2F0X2FkZHJlc3MgKHN0cnVjdCB0eXBlICp0eXBlLAogc3RhdGlj IHZvaWQKIG0yX3ByaW50X2FycmF5X2NvbnRlbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCQkgaW50IGVtYmVk ZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0JCQkgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJCSBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHksCi0JCQkgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vy c2UsIGludCBsZW4pCisJCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCisJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMsCisJCQkgaW50IGxlbikKIHsKICAgaW50IGVsdGxlbjsK ICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CkBAIC0yODYsMjEgKzI4NiwyMCBA QCBtMl9wcmludF9hcnJheV9jb250ZW50cyAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICBpZiAoVFlQRV9MRU5HVEgg KHR5cGUpID4gMCkKICAgICB7CiAgICAgICBlbHRsZW4gPSBUWVBFX0xFTkdU SCAodHlwZSk7Ci0gICAgICBpZiAocHJldHR5cHJpbnRfYXJyYXlzKQorICAg ICAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X2FycmF5cykKIAlwcmludF9z cGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKICAg ICAgIC8qIEZvciBhbiBhcnJheSBvZiBjaGFycywgcHJpbnQgd2l0aCBzdHJp bmcgc3ludGF4LiAgKi8KICAgICAgIGlmIChlbHRsZW4gPT0gMSAmJgogCSAg KChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCiAJICAgfHwg KChjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9t MikKIAkgICAgICAgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X0NIQVIpKSkKLQkgICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0gJ3Mn KSkKLQl2YWxfcHJpbnRfc3RyaW5nIChhZGRyZXNzLCBsZW4rMSwgZWx0bGVu LCBzdHJlYW0pOworCSAgJiYgKG9wdGlvbnMtPmZvcm1hdCA9PSAwIHx8IG9w dGlvbnMtPmZvcm1hdCA9PSAncycpKQorCXZhbF9wcmludF9zdHJpbmcgKGFk ZHJlc3MsIGxlbisxLCBlbHRsZW4sIHN0cmVhbSwgb3B0aW9ucyk7CiAgICAg ICBlbHNlCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIp OwogCSAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LAotCQkJCSAgICBhZGRyZXNzLCBzdHJlYW0s IGZvcm1hdCwKLQkJCQkgICAgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHks IDApOworCQkJCSAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlv bnMsIDApOwogCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAifSIpOwog CX0KICAgICB9CkBAIC0zMDksMjEgKzMwOCwxNSBAQCBtMl9wcmludF9hcnJh eV9jb250ZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogCiAvKiBQcmludCBkYXRhIG9mIHR5cGUgVFlQRSBsb2Nh dGVkIGF0IFZBTEFERFIgKHdpdGhpbiBHREIpLCB3aGljaCBjYW1lIGZyb20K ICAgIHRoZSBpbmZlcmlvciBhdCBhZGRyZXNzIEFERFJFU1MsIG9udG8gc3Rk aW8gc3RyZWFtIFNUUkVBTSBhY2NvcmRpbmcgdG8KLSAgIEZPUk1BVCAoYSBs ZXR0ZXIgb3IgMCBmb3IgbmF0dXJhbCBmb3JtYXQpLiAgVGhlIGRhdGEgYXQg VkFMQUREUiBpcyBpbgotICAgdGFyZ2V0IGJ5dGUgb3JkZXIuCisgICBPUFRJ T05TLiAgVGhlIGRhdGEgYXQgVkFMQUREUiBpcyBpbiB0YXJnZXQgYnl0ZSBv cmRlci4KIAogICAgSWYgdGhlIGRhdGEgYXJlIGEgc3RyaW5nIHBvaW50ZXIs IHJldHVybnMgdGhlIG51bWJlciBvZiBzdHJpbmcgY2hhcmFjdGVycwotICAg cHJpbnRlZC4KLQotICAgSWYgREVSRUZfUkVGIGlzIG5vbnplcm8sIHRoZW4g ZGVyZWZlcmVuY2UgcmVmZXJlbmNlcywgb3RoZXJ3aXNlIGp1c3QgcHJpbnQK LSAgIHRoZW0gbGlrZSBwb2ludGVycy4KLQotICAgVGhlIFBSRVRUWSBwYXJh bWV0ZXIgY29udHJvbHMgcHJldHR5cHJpbnRpbmcuICAqLworICAgcHJpbnRl ZC4gICovCiAKIGludAogbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZz ZXQsCi0JICAgICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsCi0JICAgICAgaW50IGRlcmVmX3JlZiwg aW50IHJlY3Vyc2UsIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSkKKwkg ICAgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IHJlY3Vyc2UsCisJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpID0g MDsJLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCAqLwogICB1bnNp Z25lZCBsZW47CkBAIC0zNDMsNzQgKzMzNiw3MyBAQCBtMl92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwg aW50IGVtYmVkZGVkX29mZnNldCwKIAkgIGVsdHR5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CiAJICBlbHRsZW4gPSBU WVBFX0xFTkdUSCAoZWx0dHlwZSk7CiAJICBsZW4gPSBUWVBFX0xFTkdUSCAo dHlwZSkgLyBlbHRsZW47Ci0JICBpZiAocHJldHR5cHJpbnRfYXJyYXlzKQor CSAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X2FycmF5cykKIAkgICAgcHJp bnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7 CiAJICAvKiBGb3IgYW4gYXJyYXkgb2YgY2hhcnMsIHByaW50IHdpdGggc3Ry aW5nIHN5bnRheC4gICovCiAJICBpZiAoZWx0bGVuID09IDEgJiYKIAkgICAg ICAoKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKIAkg ICAgICAgfHwgKChjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBs YW5ndWFnZV9tMikKIAkJICAgJiYgKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0g VFlQRV9DT0RFX0NIQVIpKSkKLQkgICAgICAmJiAoZm9ybWF0ID09IDAgfHwg Zm9ybWF0ID09ICdzJykpCisJICAgICAgJiYgKG9wdGlvbnMtPmZvcm1hdCA9 PSAwIHx8IG9wdGlvbnMtPmZvcm1hdCA9PSAncycpKQogCSAgICB7CiAJICAg ICAgLyogSWYgcmVxdWVzdGVkLCBsb29rIGZvciB0aGUgZmlyc3QgbnVsbCBj aGFyIGFuZCBvbmx5IHByaW50CiAJICAgICAgICAgZWxlbWVudHMgdXAgdG8g aXQuICAqLwotCSAgICAgIGlmIChzdG9wX3ByaW50X2F0X251bGwpCisJICAg ICAgaWYgKG9wdGlvbnMtPnN0b3BfcHJpbnRfYXRfbnVsbCkKIAkJewogCQkg IHVuc2lnbmVkIGludCB0ZW1wX2xlbjsKIAogCQkgIC8qIExvb2sgZm9yIGEg TlVMTCBjaGFyLiAqLwogCQkgIGZvciAodGVtcF9sZW4gPSAwOwogCQkgICAg ICAgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpW3RlbXBfbGVuXQotCQkJ ICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVuIDwgcHJpbnRfbWF4Owor CQkJICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVuIDwgb3B0aW9ucy0+ cHJpbnRfbWF4OwogCQkgICAgICAgdGVtcF9sZW4rKyk7CiAJCSAgbGVuID0g dGVtcF9sZW47CiAJCX0KIAotCSAgICAgIExBX1BSSU5UX1NUUklORyAoc3Ry ZWFtLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIDEsIDApOwor CSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB2YWxhZGRyICsgZW1i ZWRkZWRfb2Zmc2V0LCBsZW4sIDEsIDAsCisJCQkgICAgICAgb3B0aW9ucyk7 CiAJICAgICAgaSA9IGxlbjsKIAkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJ ICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOwogCSAgICAg IHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAodHlwZSwgdmFsYWRkciArIGVt YmVkZGVkX29mZnNldCwKLQkJCQkJYWRkcmVzcywgc3RyZWFtLCBmb3JtYXQs IGRlcmVmX3JlZiwKLQkJCQkJcmVjdXJzZSwgcHJldHR5LCAwKTsKKwkJCQkJ YWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCAwKTsKIAkgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7CiAJICAgIH0KIAkg IGJyZWFrOwogCX0KICAgICAgIC8qIEFycmF5IG9mIHVuc3BlY2lmaWVkIGxl bmd0aDogdHJlYXQgbGlrZSBwb2ludGVyIHRvIGZpcnN0IGVsdC4gICovCi0g ICAgICBwcmludF91bnBhY2tlZF9wb2ludGVyICh0eXBlLCBhZGRyZXNzLCBh ZGRyZXNzLCBmb3JtYXQsIHN0cmVhbSk7CisgICAgICBwcmludF91bnBhY2tl ZF9wb2ludGVyICh0eXBlLCBhZGRyZXNzLCBhZGRyZXNzLCBvcHRpb25zLCBz dHJlYW0pOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9Q VFI6CiAgICAgICBpZiAoVFlQRV9DT05TVCAodHlwZSkpCiAJcHJpbnRfdmFy aWFibGVfYXRfYWRkcmVzcyAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29m ZnNldCwKLQkJCQkgICBzdHJlYW0sIGZvcm1hdCwgZGVyZWZfcmVmLCByZWN1 cnNlLAotCQkJCSAgIHByZXR0eSk7Ci0gICAgICBlbHNlIGlmIChmb3JtYXQg JiYgZm9ybWF0ICE9ICdzJykKLQlwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBmb3JtYXQsCi0JCQkJ MCwgc3RyZWFtKTsKKwkJCQkgICBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMp OworICAgICAgZWxzZSBpZiAob3B0aW9ucy0+Zm9ybWF0ICYmIG9wdGlvbnMt PmZvcm1hdCAhPSAncycpCisJcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKKwkJCQlvcHRpb25zLCAw LCBzdHJlYW0pOwogICAgICAgZWxzZQogCXsKIAkgIGFkZHIgPSB1bnBhY2tf cG9pbnRlciAodHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCk7Ci0J ICBwcmludF91bnBhY2tlZF9wb2ludGVyICh0eXBlLCBhZGRyLCBhZGRyZXNz LCBmb3JtYXQsIHN0cmVhbSk7CisJICBwcmludF91bnBhY2tlZF9wb2ludGVy ICh0eXBlLCBhZGRyLCBhZGRyZXNzLCBvcHRpb25zLCBzdHJlYW0pOwogCX0K ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfUkVGOgogICAg ICAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKTsKLSAgICAgIGlmIChhZGRyZXNzcHJpbnQpCisgICAgICBpZiAo b3B0aW9ucy0+YWRkcmVzc3ByaW50KQogCXsKIAkgIENPUkVfQUREUiBhZGRy CiAJICAgID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzICh2YWxhZGRyICsgZW1i ZWRkZWRfb2Zmc2V0LCB0eXBlKTsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIkAiKTsKIAkgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoYWRk ciksIHN0cmVhbSk7Ci0JICBpZiAoZGVyZWZfcmVmKQorCSAgaWYgKG9wdGlv bnMtPmRlcmVmX3JlZikKIAkgICAgZnB1dHNfZmlsdGVyZWQgKCI6ICIsIHN0 cmVhbSk7CiAJfQogICAgICAgLyogRGUtcmVmZXJlbmNlIHRoZSByZWZlcmVu Y2UuICAqLwotICAgICAgaWYgKGRlcmVmX3JlZikKKyAgICAgIGlmIChvcHRp b25zLT5kZXJlZl9yZWYpCiAJewogCSAgaWYgKFRZUEVfQ09ERSAoZWx0dHlw ZSkgIT0gVFlQRV9DT0RFX1VOREVGKQogCSAgICB7CkBAIC00MTgsOCArNDEw LDggQEAgbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAJCXZh bHVlX2F0CiAJCShUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKIAkJIHVucGFj a19wb2ludGVyICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0KSk7 Ci0JICAgICAgY29tbW9uX3ZhbF9wcmludCAoZGVyZWZfdmFsLCBzdHJlYW0s IGZvcm1hdCwgZGVyZWZfcmVmLAotCQkJCXJlY3Vyc2UsIHByZXR0eSwgY3Vy cmVudF9sYW5ndWFnZSk7CisJICAgICAgY29tbW9uX3ZhbF9wcmludCAoZGVy ZWZfdmFsLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMsCisJCQkJY3VycmVu dF9sYW5ndWFnZSk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgZnB1dHNfZmls dGVyZWQgKCI/Pz8iLCBzdHJlYW0pOwpAQCAtNDI3LDcgKzQxOSw3IEBAIG0y X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgYnJlYWs7 CiAKICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoKLSAgICAgIGlmIChyZWN1 cnNlICYmICF1bmlvbnByaW50KQorICAgICAgaWYgKHJlY3Vyc2UgJiYgIW9w dGlvbnMtPnVuaW9ucHJpbnQpCiAJewogCSAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiey4uLn0iKTsKIAkgIGJyZWFrOwpAQCAtNDM2LDIyICs0Mjgs MjAgQEAgbTJfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICAg Y2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICAgaWYgKG0yX2lzX2xvbmdf c2V0ICh0eXBlKSkKIAltMl9wcmludF9sb25nX3NldCAodHlwZSwgdmFsYWRk ciwgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLAotCQkJICAgc3RyZWFtLCBm b3JtYXQsIHByZXR0eSk7CisJCQkgICBzdHJlYW0pOwogICAgICAgZWxzZSBp ZiAobTJfaXNfdW5ib3VuZGVkX2FycmF5ICh0eXBlKSkKIAltMl9wcmludF91 bmJvdW5kZWRfYXJyYXkgKHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNl dCwKLQkJCQkgIGFkZHJlc3MsIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYs Ci0JCQkJICBwcmV0dHksIHJlY3Vyc2UpOworCQkJCSAgYWRkcmVzcywgc3Ry ZWFtLCByZWN1cnNlLCBvcHRpb25zKTsKICAgICAgIGVsc2UKIAljcF9wcmlu dF92YWx1ZV9maWVsZHMgKHR5cGUsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVk X29mZnNldCwKLQkJCSAgICAgICBhZGRyZXNzLCBzdHJlYW0sIGZvcm1hdCwK LQkJCSAgICAgICByZWN1cnNlLCBwcmV0dHksIE5VTEwsIDApOworCQkJICAg ICAgIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgTlVMTCwg MCk7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06 Ci0gICAgICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPmZvcm1h dCkKIAl7CiAJICBwcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAotCQkJCSAgZm9ybWF0LCAwLCBzdHJl YW0pOworCQkJCSAgb3B0aW9ucywgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwog CX0KICAgICAgIGxlbiA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CkBAIC00NzUs MTAgKzQ2NSwxMCBAQCBtMl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNl dCwKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRlVOQzoK LSAgICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0 KQogCXsKIAkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQsIHR5cGUsCi0JCQkJICBmb3JtYXQsIDAsIHN0cmVh bSk7CisJCQkJICBvcHRpb25zLCAwLCBzdHJlYW0pOwogCSAgYnJlYWs7CiAJ fQogICAgICAgLyogRklYTUUsIHdlIHNob3VsZCBjb25zaWRlciwgYXQgbGVh c3QgZm9yIEFOU0kgQyBsYW5ndWFnZSwgZWxpbWluYXRpbmcKQEAgLTQ5MSwx MCArNDgxLDE0IEBAIG0yX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0 LAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9CT09MOgot ICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1h dDsKLSAgICAgIGlmIChmb3JtYXQpCi0JcHJpbnRfc2NhbGFyX2Zvcm1hdHRl ZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwKLQkJCQlmb3Jt YXQsIDAsIHN0cmVhbSk7CisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0IHx8 IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCisJeworCSAgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCSAgb3B0cy5mb3Jt YXQgPSAob3B0aW9ucy0+Zm9ybWF0ID8gb3B0aW9ucy0+Zm9ybWF0CisJCQkg OiBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKKwkgIHByaW50X3NjYWxhcl9m b3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJ CQkJICAmb3B0cywgMCwgc3RyZWFtKTsKKwl9CiAgICAgICBlbHNlCiAJewog CSAgdmFsID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQpOwpAQCAtNTExLDcgKzUwNSw3IEBAIG0yX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBp bnQgZW1iZWRkZWRfb2Zmc2V0LAogICAgICAgaWYgKFRZUEVfTEVOR1RIICh0 eXBlKSA9PSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp KQogCXsKIAkgIG0yX3ZhbF9wcmludCAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksIHZhbGFkZHIsIGVtYmVkZGVkX29mZnNldCwKLQkJCWFkZHJlc3MsIHN0 cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSk7CisJ CQlhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwogCSAgYnJl YWs7CiAJfQogICAgICAgLyogRklYTUU6IGNyZWF0ZV9yYW5nZV90eXBlIGRv ZXMgbm90IHNldCB0aGUgdW5zaWduZWQgYml0IGluIGEKQEAgLTUyNCwxOSAr NTE4LDI3IEBAIG0yX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAog ICAgICAgLyogRkFMTFRIUk9VR0ggKi8KIAogICAgIGNhc2UgVFlQRV9DT0RF X0lOVDoKLSAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6IG91dHB1 dF9mb3JtYXQ7Ci0gICAgICBpZiAoZm9ybWF0KQotCXByaW50X3NjYWxhcl9m b3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZv cm1hdCwKLQkJCQkwLCBzdHJlYW0pOworICAgICAgaWYgKG9wdGlvbnMtPmZv cm1hdCB8fCBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KQorCXsKKwkgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKKwkgIG9w dHMuZm9ybWF0ID0gKG9wdGlvbnMtPmZvcm1hdCA/IG9wdGlvbnMtPmZvcm1h dAorCQkJIDogb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCk7CisJICBwcmludF9z Y2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0 eXBlLAorCQkJCSAgJm9wdHMsIDAsIHN0cmVhbSk7CisJfQogICAgICAgZWxz ZQogCXZhbF9wcmludF90eXBlX2NvZGVfaW50ICh0eXBlLCB2YWxhZGRyICsg ZW1iZWRkZWRfb2Zmc2V0LCBzdHJlYW0pOwogICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIFRZUEVfQ09ERV9DSEFSOgotICAgICAgZm9ybWF0ID0gZm9ybWF0 ID8gZm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQp Ci0JcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVk X29mZnNldCwgdHlwZSwKLQkJCQlmb3JtYXQsIDAsIHN0cmVhbSk7CisgICAg ICBpZiAob3B0aW9ucy0+Zm9ybWF0IHx8IG9wdGlvbnMtPm91dHB1dF9mb3Jt YXQpCisJeworCSAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9 ICpvcHRpb25zOworCSAgb3B0cy5mb3JtYXQgPSAob3B0aW9ucy0+Zm9ybWF0 ID8gb3B0aW9ucy0+Zm9ybWF0CisJCQkgOiBvcHRpb25zLT5vdXRwdXRfZm9y bWF0KTsKKwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQsIHR5cGUsCisJCQkJICAmb3B0cywgMCwgc3RyZWFt KTsKKwl9CiAgICAgICBlbHNlCiAJewogCSAgdmFsID0gdW5wYWNrX2xvbmcg KHR5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQpOwpAQCAtNTUwLDkg KzU1Miw5IEBAIG0yX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAog ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6Ci0gICAg ICBpZiAoZm9ybWF0KQorICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKIAlw cmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zm c2V0LCB0eXBlLAotCQkJCWZvcm1hdCwgMCwgc3RyZWFtKTsKKwkJCQlvcHRp b25zLCAwLCBzdHJlYW0pOwogICAgICAgZWxzZQogCXByaW50X2Zsb2F0aW5n ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBzdHJlYW0pOwog ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9nZGIvbWkvbWktY21kLXN0YWNr LmMgYi9nZGIvbWkvbWktY21kLXN0YWNrLmMKaW5kZXggYmFmOWI2ZC4uMzNj Yzg5MCAxMDA2NDQKLS0tIGEvZ2RiL21pL21pLWNtZC1zdGFjay5jCisrKyBi L2dkYi9taS9taS1jbWQtc3RhY2suYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgImRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJnZGJfc3RyaW5nLmgi CiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyNpbmNsdWRlICJ2YWxwcmludC5o IgogCiBzdGF0aWMgdm9pZCBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChpbnQgbG9j YWxzLCBpbnQgdmFsdWVzLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpOwogCkBA IC0yODAsMjEgKzI4MSwyOSBAQCBsaXN0X2FyZ3Nfb3JfbG9jYWxzIChpbnQg bG9jYWxzLCBpbnQgdmFsdWVzLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpCiAJ CSAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUlVD VAogCQkgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9V TklPTikKIAkJICAgIHsKKwkJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgb3B0czsKIAkJICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHN5 bTIsIGZpKTsKKwkJICAgICAgZ2V0X3Jhd19wcmludF9vcHRpb25zICgmb3B0 cyk7CisJCSAgICAgIG9wdHMuZGVyZWZfcmVmID0gMTsKIAkJICAgICAgY29t bW9uX3ZhbF9wcmludAotCQkJKHZhbCwgc3RiLT5zdHJlYW0sIDAsIDEsIDAs IFZhbF9ub19wcmV0dHlwcmludCwKKwkJCSh2YWwsIHN0Yi0+c3RyZWFtLCAw LCAmb3B0cywKIAkJCSBsYW5ndWFnZV9kZWYgKFNZTUJPTF9MQU5HVUFHRSAo c3ltMikpKTsKIAkJICAgICAgdWlfb3V0X2ZpZWxkX3N0cmVhbSAodWlvdXQs ICJ2YWx1ZSIsIHN0Yik7CiAJCSAgICB9CiAJCSAgZG9fY2xlYW51cHMgKGNs ZWFudXBfdHVwbGUpOwogCQkgIGJyZWFrOwogCQljYXNlIFBSSU5UX0FMTF9W QUxVRVM6Ci0JCSAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHN5bTIsIGZpKTsK LQkJICBjb21tb25fdmFsX3ByaW50Ci0JCSAgICAodmFsLCBzdGItPnN0cmVh bSwgMCwgMSwgMCwgVmFsX25vX3ByZXR0eXByaW50LAotCQkgICAgIGxhbmd1 YWdlX2RlZiAoU1lNQk9MX0xBTkdVQUdFIChzeW0yKSkpOwotCQkgIHVpX291 dF9maWVsZF9zdHJlYW0gKHVpb3V0LCAidmFsdWUiLCBzdGIpOwotCQkgIGRv X2NsZWFudXBzIChjbGVhbnVwX3R1cGxlKTsKKwkJICB7CisJCSAgICBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworCQkgICAgdmFsID0gcmVh ZF92YXJfdmFsdWUgKHN5bTIsIGZpKTsKKwkJICAgIGdldF9yYXdfcHJpbnRf b3B0aW9ucyAoJm9wdHMpOworCQkgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwor CQkgICAgY29tbW9uX3ZhbF9wcmludAorCQkgICAgICAodmFsLCBzdGItPnN0 cmVhbSwgMCwgJm9wdHMsCisJCSAgICAgICBsYW5ndWFnZV9kZWYgKFNZTUJP TF9MQU5HVUFHRSAoc3ltMikpKTsKKwkJICAgIHVpX291dF9maWVsZF9zdHJl YW0gKHVpb3V0LCAidmFsdWUiLCBzdGIpOworCQkgICAgZG9fY2xlYW51cHMg KGNsZWFudXBfdHVwbGUpOworCQkgIH0KIAkJICBicmVhazsKIAkJfQogCSAg ICB9CmRpZmYgLS1naXQgYS9nZGIvbWkvbWktbWFpbi5jIGIvZ2RiL21pL21p LW1haW4uYwppbmRleCA3NzgwMjA3Li5hOWZiY2FkIDEwMDY0NAotLS0gYS9n ZGIvbWkvbWktbWFpbi5jCisrKyBiL2dkYi9taS9taS1tYWluLmMKQEAgLTQ1 LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJmcmFtZS5oIgogI2luY2x1ZGUgIm1p LW1haW4uaCIKICNpbmNsdWRlICJsYW5ndWFnZS5oIgorI2luY2x1ZGUgInZh bHByaW50LmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHN5 cy90aW1lLmg+CkBAIC00OTksOSArNTAwLDExIEBAIGdldF9yZWdpc3RlciAo aW50IHJlZ251bSwgaW50IGZvcm1hdCkKICAgICB9CiAgIGVsc2UKICAgICB7 CisgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworICAg ICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworICAgICAgb3B0 cy5kZXJlZl9yZWYgPSAxOwogICAgICAgdmFsX3ByaW50IChyZWdpc3Rlcl90 eXBlIChjdXJyZW50X2dkYmFyY2gsIHJlZ251bSksIGJ1ZmZlciwgMCwgMCwK LQkJIHN0Yi0+c3RyZWFtLCBmb3JtYXQsIDEsIDAsIFZhbF9wcmV0dHlfZGVm YXVsdCwKLQkJIGN1cnJlbnRfbGFuZ3VhZ2UpOworCQkgc3RiLT5zdHJlYW0s IDAsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKICAgICAgIHVpX291dF9m aWVsZF9zdHJlYW0gKHVpb3V0LCAidmFsdWUiLCBzdGIpOwogICAgICAgdWlf b3V0X3N0cmVhbV9kZWxldGUgKHN0Yik7CiAgICAgfQpAQCAtNTcwLDYgKzU3 Myw3IEBAIG1pX2NtZF9kYXRhX2V2YWx1YXRlX2V4cHJlc3Npb24gKGNoYXIg KmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgc3RydWN0IGNs ZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7CiAgIHN0cnVjdCB2YWx1ZSAqdmFs OwogICBzdHJ1Y3QgdWlfc3RyZWFtICpzdGIgPSBOVUxMOworICBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCiAgIHN0YiA9IHVpX291dF9z dHJlYW1fbmV3ICh1aW91dCk7CiAKQEAgLTU4Niw5ICs1OTAsMTEgQEAgbWlf Y21kX2RhdGFfZXZhbHVhdGVfZXhwcmVzc2lvbiAoY2hhciAqY29tbWFuZCwg Y2hhciAqKmFyZ3YsIGludCBhcmdjKQogICB2YWwgPSBldmFsdWF0ZV9leHBy ZXNzaW9uIChleHByKTsKIAogICAvKiBQcmludCB0aGUgcmVzdWx0IG9mIHRo ZSBleHByZXNzaW9uIGV2YWx1YXRpb24uICAqLworICBnZXRfdXNlcl9wcmlu dF9vcHRpb25zICgmb3B0cyk7CisgIG9wdHMuZGVyZWZfcmVmID0gMDsKICAg dmFsX3ByaW50ICh2YWx1ZV90eXBlICh2YWwpLCB2YWx1ZV9jb250ZW50cyAo dmFsKSwKIAkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAodmFsKSwgVkFM VUVfQUREUkVTUyAodmFsKSwKLQkgICAgIHN0Yi0+c3RyZWFtLCAwLCAwLCAw LCAwLCBjdXJyZW50X2xhbmd1YWdlKTsKKwkgICAgIHN0Yi0+c3RyZWFtLCAw LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CiAKICAgdWlfb3V0X2ZpZWxk X3N0cmVhbSAodWlvdXQsICJ2YWx1ZSIsIHN0Yik7CiAgIHVpX291dF9zdHJl YW1fZGVsZXRlIChzdGIpOwpAQCAtNzQzLDEwICs3NDksMTMgQEAgbWlfY21k X2RhdGFfcmVhZF9tZW1vcnkgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2 LCBpbnQgYXJnYykKIAlpbnQgY29sX2J5dGU7CiAJc3RydWN0IGNsZWFudXAg KmNsZWFudXBfdHVwbGU7CiAJc3RydWN0IGNsZWFudXAgKmNsZWFudXBfbGlz dF9kYXRhOworCXN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisK IAljbGVhbnVwX3R1cGxlID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9i ZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKIAl1aV9vdXRfZmllbGRfY29yZV9h ZGRyICh1aW91dCwgImFkZHIiLCBhZGRyICsgcm93X2J5dGUpOwogCS8qIHVp X291dF9maWVsZF9jb3JlX2FkZHJfc3ltYm9saWMgKHVpb3V0LCAic2FkZHIi LCBhZGRyICsgcm93X2J5dGUpOyAqLwogCWNsZWFudXBfbGlzdF9kYXRhID0g bWFrZV9jbGVhbnVwX3VpX291dF9saXN0X2JlZ2luX2VuZCAodWlvdXQsICJk YXRhIik7CisJZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywg d29yZF9mb3JtYXQpOwogCWZvciAoY29sID0gMCwgY29sX2J5dGUgPSByb3df Ynl0ZTsKIAkgICAgIGNvbCA8IG5yX2NvbHM7CiAJICAgICBjb2wrKywgY29s X2J5dGUgKz0gd29yZF9zaXplKQpAQCAtNzU4LDcgKzc2Nyw3IEBAIG1pX2Nt ZF9kYXRhX3JlYWRfbWVtb3J5IChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJn diwgaW50IGFyZ2MpCiAJICAgIGVsc2UKIAkgICAgICB7CiAJCXVpX2ZpbGVf cmV3aW5kIChzdHJlYW0tPnN0cmVhbSk7Ci0JCXByaW50X3NjYWxhcl9mb3Jt YXR0ZWQgKG1idWYgKyBjb2xfYnl0ZSwgd29yZF90eXBlLCB3b3JkX2Zvcm1h dCwKKwkJcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAobWJ1ZiArIGNvbF9ieXRl LCB3b3JkX3R5cGUsICZvcHRzLAogCQkJCQl3b3JkX2FzaXplLCBzdHJlYW0t PnN0cmVhbSk7CiAJCXVpX291dF9maWVsZF9zdHJlYW0gKHVpb3V0LCBOVUxM LCBzdHJlYW0pOwogCSAgICAgIH0KZGlmZiAtLWdpdCBhL2dkYi9taXBzLXRk ZXAuYyBiL2dkYi9taXBzLXRkZXAuYwppbmRleCAxYmFiY2NlLi4wNzc0MjY2 IDEwMDY0NAotLS0gYS9nZGIvbWlwcy10ZGVwLmMKKysrIGIvZ2RiL21pcHMt dGRlcC5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAidGFyZ2V0LWRl c2NyaXB0aW9ucy5oIgogI2luY2x1ZGUgImR3YXJmMi1mcmFtZS5oIgogI2lu Y2x1ZGUgInVzZXItcmVncy5oIgorI2luY2x1ZGUgInZhbHByaW50LmgiCiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICptaXBzX3Bkcl9k YXRhOwogCkBAIC00Mzc4LDEyICs0Mzc5LDE1IEBAIG1pcHNfcHJpbnRfZnBf cmVnaXN0ZXIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsCiAKICAgaWYgKHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IHJlZ251bSkgPT0gNCB8fCBtaXBzMl9mcF9jb21wYXQgKGZyYW1lKSkKICAg ICB7CisgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwor CiAgICAgICAvKiA0LWJ5dGUgcmVnaXN0ZXJzOiBQcmludCBoZXggYW5kIGZs b2F0aW5nLiAgQWxzbyBwcmludCBldmVuCiAgICAgICAgICBudW1iZXJlZCBy ZWdpc3RlcnMgYXMgZG91Ymxlcy4gICovCiAgICAgICBtaXBzX3JlYWRfZnBf cmVnaXN0ZXJfc2luZ2xlIChmcmFtZSwgcmVnbnVtLCByYXdfYnVmZmVyKTsK ICAgICAgIGZsdDEgPSB1bnBhY2tfZG91YmxlIChtaXBzX2Zsb2F0X3JlZ2lz dGVyX3R5cGUgKCksIHJhd19idWZmZXIsICZpbnYxKTsKIAotICAgICAgcHJp bnRfc2NhbGFyX2Zvcm1hdHRlZCAocmF3X2J1ZmZlciwgYnVpbHRpbl90eXBl X3VpbnQzMiwgJ3gnLCAndycsCisgICAgICBnZXRfZm9ybWF0dGVkX3ByaW50 X29wdGlvbnMgKCZvcHRzLCAneCcpOworICAgICAgcHJpbnRfc2NhbGFyX2Zv cm1hdHRlZCAocmF3X2J1ZmZlciwgYnVpbHRpbl90eXBlX3VpbnQzMiwgJm9w dHMsICd3JywKIAkJCSAgICAgIGZpbGUpOwogCiAgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChmaWxlLCAiIGZsdDogIik7CkBAIC00NDA3LDYgKzQ0MTEsOCBA QCBtaXBzX3ByaW50X2ZwX3JlZ2lzdGVyIChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgIH0KICAgZWxzZQog ICAgIHsKKyAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7 CisKICAgICAgIC8qIEVpZ2h0IGJ5dGUgcmVnaXN0ZXJzOiBwcmludCBlYWNo IG9uZSBhcyBoZXgsIGZsb2F0IGFuZCBkb3VibGUuICAqLwogICAgICAgbWlw c19yZWFkX2ZwX3JlZ2lzdGVyX3NpbmdsZSAoZnJhbWUsIHJlZ251bSwgcmF3 X2J1ZmZlcik7CiAgICAgICBmbHQxID0gdW5wYWNrX2RvdWJsZSAobWlwc19m bG9hdF9yZWdpc3Rlcl90eXBlICgpLCByYXdfYnVmZmVyLCAmaW52MSk7CkBA IC00NDE0LDggKzQ0MjAsOCBAQCBtaXBzX3ByaW50X2ZwX3JlZ2lzdGVyIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LAogICAgICAgbWlwc19yZWFkX2ZwX3JlZ2lzdGVyX2RvdWJsZSAoZnJhbWUs IHJlZ251bSwgcmF3X2J1ZmZlcik7CiAgICAgICBkb3ViID0gdW5wYWNrX2Rv dWJsZSAobWlwc19kb3VibGVfcmVnaXN0ZXJfdHlwZSAoKSwgcmF3X2J1ZmZl ciwgJmludjIpOwogCi0KLSAgICAgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQg KHJhd19idWZmZXIsIGJ1aWx0aW5fdHlwZV91aW50NjQsICd4JywgJ2cnLAor ICAgICAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgJ3gn KTsKKyAgICAgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHJhd19idWZmZXIs IGJ1aWx0aW5fdHlwZV91aW50NjQsICZvcHRzLCAnZycsCiAJCQkgICAgICBm aWxlKTsKIAogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgIiBmbHQ6 ICIpOwpAQCAtNDQzOSw2ICs0NDQ1LDcgQEAgbWlwc19wcmludF9yZWdpc3Rl ciAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVf YXJjaCAoZnJhbWUpOwogICBnZGJfYnl0ZSByYXdfYnVmZmVyW01BWF9SRUdJ U1RFUl9TSVpFXTsKICAgaW50IG9mZnNldDsKKyAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0czsKIAogICBpZiAoVFlQRV9DT0RFIChyZWdpc3Rl cl90eXBlIChnZGJhcmNoLCByZWdudW0pKSA9PSBUWVBFX0NPREVfRkxUKQog ICAgIHsKQEAgLTQ0NzEsOCArNDQ3OCw5IEBAIG1pcHNfcHJpbnRfcmVnaXN0 ZXIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsCiAgIGVsc2UKICAgICBvZmZzZXQgPSAwOwogCisgIGdldF9mb3Jt YXR0ZWRfcHJpbnRfb3B0aW9ucyAoJm9wdHMsICd4Jyk7CiAgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHJhd19idWZmZXIgKyBvZmZzZXQsCi0JCQkgIHJl Z2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSksICd4JywgMCwKKwkJCSAg cmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgcmVnbnVtKSwgJm9wdHMsIDAsCiAJ CQkgIGZpbGUpOwogfQogCmRpZmYgLS1naXQgYS9nZGIvbXQtdGRlcC5jIGIv Z2RiL210LXRkZXAuYwppbmRleCBkYTRhZmUzLi5kYjQyZTkwIDEwMDY0NAot LS0gYS9nZGIvbXQtdGRlcC5jCisrKyBiL2dkYi9tdC10ZGVwLmMKQEAgLTM3 LDYgKzM3LDcgQEAKICNpbmNsdWRlICJpbmZjYWxsLmgiCiAjaW5jbHVkZSAi Z2RiX2Fzc2VydC5oIgogI2luY2x1ZGUgImxhbmd1YWdlLmgiCisjaW5jbHVk ZSAidmFscHJpbnQuaCIKIAogZW51bSBtdF9hcmNoX2NvbnN0YW50cwogewpA QCAtNjc1LDYgKzY3Niw3IEBAIG10X3JlZ2lzdGVyc19pbmZvIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKIAl7CiAJICAvKiBTcGVjaWFsIG91dHB1dCBo YW5kbGluZyBmb3IgdGhlICdjb3Byb2Nlc3NvcicgcmVnaXN0ZXIuICAqLwog CSAgZ2RiX2J5dGUgKmJ1ZjsKKwkgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zIG9wdHM7CiAKIAkgIGJ1ZiA9IGFsbG9jYSAocmVnaXN0ZXJfc2l6ZSAo Z2RiYXJjaCwgTVRfQ09QUk9fUkVHTlVNKSk7CiAJICBmcmFtZV9yZWdpc3Rl cl9yZWFkIChmcmFtZSwgTVRfQ09QUk9fUkVHTlVNLCBidWYpOwpAQCAtNjg1 LDggKzY4NywxMCBAQCBtdF9yZWdpc3RlcnNfaW5mbyAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDE1IC0g c3RybGVuIChnZGJhcmNoX3JlZ2lzdGVyX25hbWUKIAkJCQkJICAgICAgICAo Z2RiYXJjaCwgcmVnbnVtKSksCiAJCQkJIGZpbGUpOworCSAgZ2V0X3Jhd19w cmludF9vcHRpb25zICgmb3B0cyk7CisJICBvcHRzLmRlcmVmX3JlZiA9IDE7 CiAJICB2YWxfcHJpbnQgKHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251 bSksIGJ1ZiwKLQkJICAgICAwLCAwLCBmaWxlLCAwLCAxLCAwLCBWYWxfbm9f cHJldHR5cHJpbnQsCisJCSAgICAgMCwgMCwgZmlsZSwgMCwgJm9wdHMsCiAJ CSAgICAgY3VycmVudF9sYW5ndWFnZSk7CiAJICBmcHV0c19maWx0ZXJlZCAo IlxuIiwgZmlsZSk7CiAJfQpkaWZmIC0tZ2l0IGEvZ2RiL29iamMtbGFuZy5j IGIvZ2RiL29iamMtbGFuZy5jCmluZGV4IDdkMjg3YTAuLjNhOTUyZjUgMTAw NjQ0Ci0tLSBhL2dkYi9vYmpjLWxhbmcuYworKysgYi9nZGIvb2JqYy1sYW5n LmMKQEAgLTM0MSw3ICszNDEsOCBAQCBvYmpjX3ByaW50Y2hhciAoaW50IGMs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAKIHN0YXRpYyB2b2lkCiBvYmpj X3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJf Ynl0ZSAqc3RyaW5nLCAKLQkgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCwg aW50IHdpZHRoLCBpbnQgZm9yY2VfZWxsaXBzZXMpCisJICAgICAgIHVuc2ln bmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNlX2VsbGlwc2Vz LAorCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucykKIHsKICAgdW5zaWduZWQgaW50IGk7CiAgIHVuc2lnbmVkIGlu dCB0aGluZ3NfcHJpbnRlZCA9IDA7CkBAIC0zNjAsNyArMzYxLDcgQEAgb2Jq Y19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgZm9y IChpID0gMDsgaSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50 X21heDsgKytpKQorICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoICYmIHRoaW5n c19wcmludGVkIDwgb3B0aW9ucy0+cHJpbnRfbWF4OyArK2kpCiAgICAgewog ICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciB3ZSBhcmUgZXhh bWluaW5nIHRvIHNlZSB3aGV0aGVyIGl0CiAJIGlzIHJlcGVhdGVkLiAgKi8K QEAgLTM4NCwxMSArMzg1LDExIEBAIG9iamNfcHJpbnRzdHIgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJICAr K3JlcHM7CiAJfQogCi0gICAgICBpZiAocmVwcyA+IHJlcGVhdF9jb3VudF90 aHJlc2hvbGQpCisgICAgICBpZiAocmVwcyA+IG9wdGlvbnMtPnJlcGVhdF9j b3VudF90aHJlc2hvbGQpCiAJewogCSAgaWYgKGluX3F1b3RlcykKIAkgICAg ewotCSAgICAgIGlmIChpbnNwZWN0X2l0KQorCSAgICAgIGlmIChvcHRpb25z LT5pbnNwZWN0X2l0KQogCQlmcHV0c19maWx0ZXJlZCAoIlxcXCIsICIsIHN0 cmVhbSk7CiAJICAgICAgZWxzZQogCQlmcHV0c19maWx0ZXJlZCAoIlwiLCAi LCBzdHJlYW0pOwpAQCAtMzk3LDE0ICszOTgsMTQgQEAgb2JqY19wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2RiX2J5dGUgKnN0 cmluZywKIAkgIG9iamNfcHJpbnRjaGFyIChzdHJpbmdbaV0sIHN0cmVhbSk7 CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXUg dGltZXM+IiwgcmVwcyk7CiAJICBpID0gcmVwMSAtIDE7Ci0JICB0aGluZ3Nf cHJpbnRlZCArPSByZXBlYXRfY291bnRfdGhyZXNob2xkOworCSAgdGhpbmdz X3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsK IAkgIG5lZWRfY29tbWEgPSAxOwogCX0KICAgICAgIGVsc2UKIAl7CiAJICBp ZiAoIWluX3F1b3RlcykKIAkgICAgewotCSAgICAgIGlmIChpbnNwZWN0X2l0 KQorCSAgICAgIGlmIChvcHRpb25zLT5pbnNwZWN0X2l0KQogCQlmcHV0c19m aWx0ZXJlZCAoIlxcXCIiLCBzdHJlYW0pOwogCSAgICAgIGVsc2UKIAkJZnB1 dHNfZmlsdGVyZWQgKCJcIiIsIHN0cmVhbSk7CkBAIC00MTgsNyArNDE5LDcg QEAgb2JqY19wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29u c3QgZ2RiX2J5dGUgKnN0cmluZywKICAgLyogVGVybWluYXRlIHRoZSBxdW90 ZXMgaWYgbmVjZXNzYXJ5LiAgKi8KICAgaWYgKGluX3F1b3RlcykKICAgICB7 Ci0gICAgICBpZiAoaW5zcGVjdF9pdCkKKyAgICAgIGlmIChvcHRpb25zLT5p bnNwZWN0X2l0KQogCWZwdXRzX2ZpbHRlcmVkICgiXFxcIiIsIHN0cmVhbSk7 CiAgICAgICBlbHNlCiAJZnB1dHNfZmlsdGVyZWQgKCJcIiIsIHN0cmVhbSk7 CmRpZmYgLS1naXQgYS9nZGIvcC1sYW5nLmMgYi9nZGIvcC1sYW5nLmMKaW5k ZXggN2VjZGQ4ZC4uY2Q0Mjg1ZCAxMDA2NDQKLS0tIGEvZ2RiL3AtbGFuZy5j CisrKyBiL2dkYi9wLWxhbmcuYwpAQCAtMjA3LDcgKzIwNyw4IEBAIHBhc2Nh bF9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQog CiB2b2lkCiBwYXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCi0JCSB1bnNpZ25lZCBpbnQg bGVuZ3RoLCBpbnQgd2lkdGgsIGludCBmb3JjZV9lbGxpcHNlcykKKwkJIHVu c2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNlX2VsbGlw c2VzLAorCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpCiB7CiAgIHVuc2lnbmVkIGludCBpOwogICB1bnNpZ25lZCBpbnQg dGhpbmdzX3ByaW50ZWQgPSAwOwpAQCAtMjI2LDcgKzIyNyw3IEBAIHBhc2Nh bF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY29uc3QgZ2Ri X2J5dGUgKnN0cmluZywKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgZm9y IChpID0gMDsgaSA8IGxlbmd0aCAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50 X21heDsgKytpKQorICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoICYmIHRoaW5n c19wcmludGVkIDwgb3B0aW9ucy0+cHJpbnRfbWF4OyArK2kpCiAgICAgewog ICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciB3ZSBhcmUgZXhh bWluaW5nCiAgICAgICAgICB0byBzZWUgd2hldGhlciBpdCBpcyByZXBlYXRl ZC4gICovCkBAIC0yNTAsMTEgKzI1MSwxMSBAQCBwYXNjYWxfcHJpbnRzdHIg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJp bmcsCiAJICArK3JlcHM7CiAJfQogCi0gICAgICBpZiAocmVwcyA+IHJlcGVh dF9jb3VudF90aHJlc2hvbGQpCisgICAgICBpZiAocmVwcyA+IG9wdGlvbnMt PnJlcGVhdF9jb3VudF90aHJlc2hvbGQpCiAJewogCSAgaWYgKGluX3F1b3Rl cykKIAkgICAgewotCSAgICAgIGlmIChpbnNwZWN0X2l0KQorCSAgICAgIGlm IChvcHRpb25zLT5pbnNwZWN0X2l0KQogCQlmcHV0c19maWx0ZXJlZCAoIlxc JywgIiwgc3RyZWFtKTsKIAkgICAgICBlbHNlCiAJCWZwdXRzX2ZpbHRlcmVk ICgiJywgIiwgc3RyZWFtKTsKQEAgLTI2Myw3ICsyNjQsNyBAQCBwYXNjYWxf cHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9i eXRlICpzdHJpbmcsCiAJICBwYXNjYWxfcHJpbnRjaGFyIChzdHJpbmdbaV0s IHN0cmVhbSk7CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJl cGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7CiAJICBpID0gcmVwMSAtIDE7Ci0J ICB0aGluZ3NfcHJpbnRlZCArPSByZXBlYXRfY291bnRfdGhyZXNob2xkOwor CSAgdGhpbmdzX3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3Ro cmVzaG9sZDsKIAkgIG5lZWRfY29tbWEgPSAxOwogCX0KICAgICAgIGVsc2UK QEAgLTI3MSw3ICsyNzIsNyBAQCBwYXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICpzdHJpbmcsCiAJICBp bnQgYyA9IHN0cmluZ1tpXTsKIAkgIGlmICgoIWluX3F1b3RlcykgJiYgKFBS SU5UX0xJVEVSQUxfRk9STSAoYykpKQogCSAgICB7Ci0JICAgICAgaWYgKGlu c3BlY3RfaXQpCisJICAgICAgaWYgKG9wdGlvbnMtPmluc3BlY3RfaXQpCiAJ CWZwdXRzX2ZpbHRlcmVkICgiXFwnIiwgc3RyZWFtKTsKIAkgICAgICBlbHNl CiAJCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7CkBAIC0yODUsNyAr Mjg2LDcgQEAgcGFzY2FsX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLAogICAvKiBUZXJtaW5hdGUg dGhlIHF1b3RlcyBpZiBuZWNlc3NhcnkuICAqLwogICBpZiAoaW5fcXVvdGVz KQogICAgIHsKLSAgICAgIGlmIChpbnNwZWN0X2l0KQorICAgICAgaWYgKG9w dGlvbnMtPmluc3BlY3RfaXQpCiAJZnB1dHNfZmlsdGVyZWQgKCJcXCciLCBz dHJlYW0pOwogICAgICAgZWxzZQogCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0 cmVhbSk7CmRpZmYgLS1naXQgYS9nZGIvcC1sYW5nLmggYi9nZGIvcC1sYW5n LmgKaW5kZXggYTRmODc4Zi4uNGViZmJjMSAxMDA2NDQKLS0tIGEvZ2RiL3At bGFuZy5oCisrKyBiL2dkYi9wLWxhbmcuaApAQCAtMzUsMTAgKzM1LDExIEBA IGV4dGVybiB2b2lkIHBhc2NhbF9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3Qgc3ltYm9sICosCiAJCQkJICBzdHJ1Y3QgdWlfZmlsZSAq KTsKIAogZXh0ZXJuIGludCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsCi0JCQkgICAgIENPUkVfQURE Uiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsCi0JCQkgICAgIGludCwg ZW51bSB2YWxfcHJldHR5cHJpbnQpOworCQkJICAgICBDT1JFX0FERFIsIHN0 cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKik7CiAKLWV4dGVybiBpbnQgcGFzY2FsX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwg aW50LCBlbnVtIHZhbF9wcmV0dHlwcmludCk7CitleHRlcm4gaW50IHBhc2Nh bF92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9maWxl ICosCisJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKik7CiAKIGV4dGVybiB2b2lkIHBhc2NhbF90eXBlX3ByaW50X21ldGhv ZF9hcmdzIChjaGFyICosIGNoYXIgKiwKIAkJCQkJICAgc3RydWN0IHVpX2Zp bGUgKik7CkBAIC01MSw3ICs1Miw4IEBAIGV4dGVybiBpbnQKIGV4dGVybiB2 b2lkIHBhc2NhbF9wcmludGNoYXIgKGludCwgc3RydWN0IHVpX2ZpbGUgKik7 CiAKIGV4dGVybiB2b2lkIHBhc2NhbF9wcmludHN0ciAoc3RydWN0IHVpX2Zp bGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKLQkJCSAgICAgdW5zaWduZWQgaW50 LCBpbnQsIGludCk7CisJCQkgICAgIHVuc2lnbmVkIGludCwgaW50LCBpbnQs CisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICop OwogCiBleHRlcm4gc3RydWN0IHR5cGUgKipjb25zdCAocGFzY2FsX2J1aWx0 aW5fdHlwZXNbXSk7CiAKQEAgLTYzLDE1ICs2NSwxMCBAQCBleHRlcm4gdm9p ZAogZXh0ZXJuIHZvaWQKICAgcGFzY2FsX3R5cGVfcHJpbnRfdmFyc3BlY19w cmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwg aW50KTsKIAotLyogVGhlc2UgYXJlIGluIGNwLXZhbHByaW50LmMgKi8KLQot ZXh0ZXJuIGludCB2dGJscHJpbnQ7CQkvKiBDb250cm9scyBwcmludGluZyBv ZiB2dGJsJ3MgKi8KLQotZXh0ZXJuIGludCBzdGF0aWNfZmllbGRfcHJpbnQ7 Ci0KIGV4dGVybiB2b2lkIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmll bGRzIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLAogCQkJCQkg ICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosCi0JCQkJCSAgICAg IGludCwgaW50LCBlbnVtIHZhbF9wcmV0dHlwcmludCwKKwkJCQkJICAgICAg aW50LAorCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqLAogCQkJCQkgICAgICBzdHJ1Y3QgdHlwZSAqKiwgaW50KTsKIAog ZXh0ZXJuIGludCBwYXNjYWxfb2JqZWN0X2lzX3Z0YmxfcHRyX3R5cGUgKHN0 cnVjdCB0eXBlICopOwpkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBi L2dkYi9wLXZhbHByaW50LmMKaW5kZXggYmM0ZmJlMS4uNjVhYjhhMSAxMDA2 NDQKLS0tIGEvZ2RiL3AtdmFscHJpbnQuYworKysgYi9nZGIvcC12YWxwcmlu dC5jCkBAIC00NCwyMyArNDQsMTcgQEAKIAogLyogUHJpbnQgZGF0YSBvZiB0 eXBlIFRZUEUgbG9jYXRlZCBhdCBWQUxBRERSICh3aXRoaW4gR0RCKSwgd2hp Y2ggY2FtZSBmcm9tCiAgICB0aGUgaW5mZXJpb3IgYXQgYWRkcmVzcyBBRERS RVNTLCBvbnRvIHN0ZGlvIHN0cmVhbSBTVFJFQU0gYWNjb3JkaW5nIHRvCi0g ICBGT1JNQVQgKGEgbGV0dGVyIG9yIDAgZm9yIG5hdHVyYWwgZm9ybWF0KS4g IFRoZSBkYXRhIGF0IFZBTEFERFIgaXMgaW4KLSAgIHRhcmdldCBieXRlIG9y ZGVyLgorICAgT1BUSU9OUy4gIFRoZSBkYXRhIGF0IFZBTEFERFIgaXMgaW4g dGFyZ2V0IGJ5dGUgb3JkZXIuCiAKICAgIElmIHRoZSBkYXRhIGFyZSBhIHN0 cmluZyBwb2ludGVyLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5nIGNo YXJhY3RlcnMKLSAgIHByaW50ZWQuCi0KLSAgIElmIERFUkVGX1JFRiBpcyBu b256ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90aGVyd2lz ZSBqdXN0IHByaW50Ci0gICB0aGVtIGxpa2UgcG9pbnRlcnMuCi0KLSAgIFRo ZSBQUkVUVFkgcGFyYW1ldGVyIGNvbnRyb2xzIHByZXR0eXByaW50aW5nLiAg Ki8KKyAgIHByaW50ZWQuICAqLwogCiAKIGludAogcGFzY2FsX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogCQkgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAotCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsIGlu dCBkZXJlZl9yZWYsCi0JCSAgaW50IHJlY3Vyc2UsIGVudW0gdmFsX3ByZXR0 eXByaW50IHByZXR0eSkKKwkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgcmVjdXJzZSwKKwkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9ucykKIHsKICAgdW5zaWduZWQgaW50IGkgPSAwOwkvKiBO dW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkICovCiAgIHVuc2lnbmVkIGxl bjsKQEAgLTgwLDcgKzc0LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgZWx0 dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKIAkgIGVsdGxlbiA9IFRZUEVfTEVOR1RIIChlbHR0eXBlKTsKIAkgIGxl biA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIGVsdGxlbjsKLQkgIGlmIChwcmV0 dHlwcmludF9hcnJheXMpCisJICBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRf YXJyYXlzKQogCSAgICB7CiAJICAgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVk ICgyICsgMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CiAJICAgIH0KQEAgLTg5LDIz ICs4MywyNCBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICAgICAgJiYgKChUWVBF X0NPREUgKGVsdHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCiAJICAgICAgIHx8 ICgoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf cGFzY2FsKQogCQkgICAmJiAoVFlQRV9DT0RFIChlbHR0eXBlKSA9PSBUWVBF X0NPREVfQ0hBUikpKQotCSAgICAgICYmIChmb3JtYXQgPT0gMCB8fCBmb3Jt YXQgPT0gJ3MnKSkKKwkgICAgICAmJiAob3B0aW9ucy0+Zm9ybWF0ID09IDAg fHwgb3B0aW9ucy0+Zm9ybWF0ID09ICdzJykpCiAJICAgIHsKIAkgICAgICAv KiBJZiByZXF1ZXN0ZWQsIGxvb2sgZm9yIHRoZSBmaXJzdCBudWxsIGNoYXIg YW5kIG9ubHkgcHJpbnQKIAkgICAgICAgICBlbGVtZW50cyB1cCB0byBpdC4g ICovCi0JICAgICAgaWYgKHN0b3BfcHJpbnRfYXRfbnVsbCkKKwkgICAgICBp ZiAob3B0aW9ucy0+c3RvcF9wcmludF9hdF9udWxsKQogCQl7CiAJCSAgdW5z aWduZWQgaW50IHRlbXBfbGVuOwogCiAJCSAgLyogTG9vayBmb3IgYSBOVUxM IGNoYXIuICovCiAJCSAgZm9yICh0ZW1wX2xlbiA9IDA7CiAJCSAgICAgICAo dmFsYWRkciArIGVtYmVkZGVkX29mZnNldClbdGVtcF9sZW5dCi0JCSAgICAg ICAmJiB0ZW1wX2xlbiA8IGxlbiAmJiB0ZW1wX2xlbiA8IHByaW50X21heDsK KwkJICAgICAgICYmIHRlbXBfbGVuIDwgbGVuICYmIHRlbXBfbGVuIDwgb3B0 aW9ucy0+cHJpbnRfbWF4OwogCQkgICAgICAgdGVtcF9sZW4rKyk7CiAJCSAg bGVuID0gdGVtcF9sZW47CiAJCX0KIAotCSAgICAgIExBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIDEs IDApOworCSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LCBsZW4sIDEsIDAsCisJCQkgICAgICAgb3B0 aW9ucyk7CiAJICAgICAgaSA9IGxlbjsKIAkgICAgfQogCSAgZWxzZQpAQCAt MTIzLDcgKzExOCw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJICBpID0gMDsK IAkJfQogCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAodHlwZSwg dmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgYWRkcmVzcywgc3RyZWFtLAot CQkJCSAgICAgZm9ybWF0LCBkZXJlZl9yZWYsIHJlY3Vyc2UsIHByZXR0eSwg aSk7CisJCQkJCXJlY3Vyc2UsIG9wdGlvbnMsIGkpOwogCSAgICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0iKTsKIAkgICAgfQogCSAgYnJlYWs7 CkBAIC0xMzMsMTIgKzEyOCwxMyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAg ICBnb3RvIHByaW50X3VucGFja2VkX3BvaW50ZXI7CiAKICAgICBjYXNlIFRZ UEVfQ09ERV9QVFI6Ci0gICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdCAhPSAn cycpCisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0ICYmIG9wdGlvbnMtPmZv cm1hdCAhPSAncycpCiAJewotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAo dmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBz dHJlYW0pOworCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciAr IGVtYmVkZGVkX29mZnNldCwgdHlwZSwKKwkJCQkgIG9wdGlvbnMsIDAsIHN0 cmVhbSk7CiAJICBicmVhazsKIAl9Ci0gICAgICBpZiAodnRibHByaW50ICYm IHBhc2NhbF9vYmplY3RfaXNfdnRibF9wdHJfdHlwZSAodHlwZSkpCisgICAg ICBpZiAob3B0aW9ucy0+dnRibHByaW50ICYmIHBhc2NhbF9vYmplY3RfaXNf dnRibF9wdHJfdHlwZSAodHlwZSkpCiAJewogCSAgLyogUHJpbnQgdGhlIHVu bWFuZ2xlZCBuYW1lIGlmIGRlc2lyZWQuICAqLwogCSAgLyogUHJpbnQgdnRh YmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiB3ZSBBUkUgdXNpbmcK QEAgLTE2Miw3ICsxNTgsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICAgICAg cmV0dXJuICgwKTsKIAkgICAgfQogCi0JICBpZiAoYWRkcmVzc3ByaW50ICYm IGZvcm1hdCAhPSAncycpCisJICBpZiAob3B0aW9ucy0+YWRkcmVzc3ByaW50 ICYmIG9wdGlvbnMtPmZvcm1hdCAhPSAncycpCiAJICAgIHsKIAkgICAgICBm cHV0c19maWx0ZXJlZCAocGFkZHJlc3MgKGFkZHIpLCBzdHJlYW0pOwogCSAg ICB9CkBAIC0xNzIsMTEgKzE2OCwxMSBAQCBwYXNjYWxfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJ ICBpZiAoVFlQRV9MRU5HVEggKGVsdHR5cGUpID09IDEKIAkgICAgICAmJiAo VFlQRV9DT0RFIChlbHR0eXBlKSA9PSBUWVBFX0NPREVfSU5UCiAJCSAgfHwg VFlQRV9DT0RFKGVsdHR5cGUpID09IFRZUEVfQ09ERV9DSEFSKQotCSAgICAg ICYmIChmb3JtYXQgPT0gMCB8fCBmb3JtYXQgPT0gJ3MnKQorCSAgICAgICYm IChvcHRpb25zLT5mb3JtYXQgPT0gMCB8fCBvcHRpb25zLT5mb3JtYXQgPT0g J3MnKQogCSAgICAgICYmIGFkZHIgIT0gMCkKIAkgICAgewogCSAgICAgIC8q IG5vIHdpZGUgc3RyaW5nIHlldCAqLwotCSAgICAgIGkgPSB2YWxfcHJpbnRf c3RyaW5nIChhZGRyLCAtMSwgMSwgc3RyZWFtKTsKKwkgICAgICBpID0gdmFs X3ByaW50X3N0cmluZyAoYWRkciwgLTEsIDEsIHN0cmVhbSwgb3B0aW9ucyk7 CiAJICAgIH0KIAkgIC8qIGFsc28gZm9yIHBvaW50ZXJzIHRvIHBhc2NhbCBz dHJpbmdzICovCiAJICAvKiBOb3RlOiB0aGlzIGlzIEZyZWUgUGFzY2FsIHNw ZWNpZmljOgpAQCAtMTkzLDcgKzE4OSw3IEBAIHBhc2NhbF92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK ICAgICAgICAgICAgICAgcmVhZF9tZW1vcnkgKGFkZHIgKyBsZW5ndGhfcG9z LCBidWZmZXIsIGxlbmd0aF9zaXplKTsKIAkgICAgICBzdHJpbmdfbGVuZ3Ro ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZmZXIsIGxlbmd0aF9z aXplKTsKICAgICAgICAgICAgICAgeGZyZWUgKGJ1ZmZlcik7Ci0gICAgICAg ICAgICAgIGkgPSB2YWxfcHJpbnRfc3RyaW5nIChhZGRyICsgc3RyaW5nX3Bv cywgc3RyaW5nX2xlbmd0aCwgY2hhcl9zaXplLCBzdHJlYW0pOworICAgICAg ICAgICAgICBpID0gdmFsX3ByaW50X3N0cmluZyAoYWRkciArIHN0cmluZ19w b3MsIHN0cmluZ19sZW5ndGgsIGNoYXJfc2l6ZSwgc3RyZWFtLCBvcHRpb25z KTsKIAkgICAgfQogCSAgZWxzZSBpZiAocGFzY2FsX29iamVjdF9pc192dGJs X21lbWJlciAodHlwZSkpCiAJICAgIHsKQEAgLTIwOSw3ICsyMDUsNyBAQCBw YXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAJCSAgZnB1dHNfZmlsdGVyZWQgKFNZTUJPTF9Q UklOVF9OQU1FIChtc3ltYm9sKSwgc3RyZWFtKTsKIAkJICBmcHV0c19maWx0 ZXJlZCAoIj4iLCBzdHJlYW0pOwogCQl9Ci0JICAgICAgaWYgKHZ0X2FkZHJl c3MgJiYgdnRibHByaW50KQorCSAgICAgIGlmICh2dF9hZGRyZXNzICYmIG9w dGlvbnMtPnZ0YmxwcmludCkKIAkJewogCQkgIHN0cnVjdCB2YWx1ZSAqdnRf dmFsOwogCQkgIHN0cnVjdCBzeW1ib2wgKndzeW0gPSAoc3RydWN0IHN5bWJv bCAqKSBOVUxMOwpAQCAtMjMwLDkgKzIyNiw5IEBAIHBhc2NhbF92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKIAkJICAgICAgd3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsK IAkJICAgIH0KIAkJICB2dF92YWwgPSB2YWx1ZV9hdCAod3R5cGUsIHZ0X2Fk ZHJlc3MpOwotCQkgIGNvbW1vbl92YWxfcHJpbnQgKHZ0X3ZhbCwgc3RyZWFt LCBmb3JtYXQsIGRlcmVmX3JlZiwKLQkJCQkgICAgcmVjdXJzZSArIDEsIHBy ZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7Ci0JCSAgaWYgKHByZXR0eSkKKwkJ ICBjb21tb25fdmFsX3ByaW50ICh2dF92YWwsIHN0cmVhbSwgcmVjdXJzZSAr IDEsIG9wdGlvbnMsCisJCQkJICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOworCQkg IGlmIChvcHRpb25zLT5wcmV0dHkpCiAJCSAgICB7CiAJCSAgICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJCSAgICAgIHByaW50X3Nw YWNlc19maWx0ZXJlZCAoMiArIDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAt MjQ5LDE4ICsyNDUsMTggQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCiAgICAgY2Fz ZSBUWVBFX0NPREVfUkVGOgogICAgICAgZWx0dHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAgICAgIGlmIChhZGRy ZXNzcHJpbnQpCisgICAgICBpZiAob3B0aW9ucy0+YWRkcmVzc3ByaW50KQog CXsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIkAiKTsKIAkgIC8q IEV4dHJhY3QgdGhlIGFkZHJlc3MsIGFzc3VtZSB0aGF0IGl0IGlzIHVuc2ln bmVkLiAgKi8KIAkgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoCiAJICAg IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYWRkciArIGVtYmVkZGVk X29mZnNldCwKIAkgICAgICAgZ2RiYXJjaF9wdHJfYml0IChjdXJyZW50X2dk YmFyY2gpIC8gSE9TVF9DSEFSX0JJVCkpLCBzdHJlYW0pOwotCSAgaWYgKGRl cmVmX3JlZikKKwkgIGlmIChvcHRpb25zLT5kZXJlZl9yZWYpCiAJICAgIGZw dXRzX2ZpbHRlcmVkICgiOiAiLCBzdHJlYW0pOwogCX0KICAgICAgIC8qIERl LXJlZmVyZW5jZSB0aGUgcmVmZXJlbmNlLiAgKi8KLSAgICAgIGlmIChkZXJl Zl9yZWYpCisgICAgICBpZiAob3B0aW9ucy0+ZGVyZWZfcmVmKQogCXsKIAkg IGlmIChUWVBFX0NPREUgKGVsdHR5cGUpICE9IFRZUEVfQ09ERV9VTkRFRikK IAkgICAgewpAQCAtMjY4LDggKzI2NCw4IEBAIHBhc2NhbF92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK IAkgICAgICB2YWx1ZV9hdAogCSAgICAgIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSwKIAkgICAgICAgdW5wYWNrX3BvaW50ZXIgKHR5cGUsIHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQpKTsKLQkgICAgICBjb21tb25fdmFsX3ByaW50 IChkZXJlZl92YWwsIHN0cmVhbSwgZm9ybWF0LCBkZXJlZl9yZWYsCi0JCQkJ cmVjdXJzZSArIDEsIHByZXR0eSwgY3VycmVudF9sYW5ndWFnZSk7CisJICAg ICAgY29tbW9uX3ZhbF9wcmludCAoZGVyZWZfdmFsLCBzdHJlYW0sIHJlY3Vy c2UgKyAxLCBvcHRpb25zLAorCQkJCWN1cnJlbnRfbGFuZ3VhZ2UpOwogCSAg ICB9CiAJICBlbHNlCiAJICAgIGZwdXRzX2ZpbHRlcmVkICgiPz8/Iiwgc3Ry ZWFtKTsKQEAgLTI3NywxNCArMjczLDE0IEBAIHBhc2NhbF92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046Ci0g ICAgICBpZiAocmVjdXJzZSAmJiAhdW5pb25wcmludCkKKyAgICAgIGlmIChy ZWN1cnNlICYmICFvcHRpb25zLT51bmlvbnByaW50KQogCXsKIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgInsuLi59Iik7CiAJICBicmVhazsKIAl9 CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwogICAgIGNhc2UgVFlQRV9D T0RFX1NUUlVDVDoKLSAgICAgIGlmICh2dGJscHJpbnQgJiYgcGFzY2FsX29i amVjdF9pc192dGJsX3B0cl90eXBlICh0eXBlKSkKKyAgICAgIGlmIChvcHRp b25zLT52dGJscHJpbnQgJiYgcGFzY2FsX29iamVjdF9pc192dGJsX3B0cl90 eXBlICh0eXBlKSkKIAl7CiAJICAvKiBQcmludCB0aGUgdW5tYW5nbGVkIG5h bWUgaWYgZGVzaXJlZC4gICovCiAJICAvKiBQcmludCB2dGFibGUgZW50cnkg LSB3ZSBvbmx5IGdldCBoZXJlIGlmIE5PVCB1c2luZwpAQCAtMzAxLDE4ICsy OTcsMTkgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZzdHJpbmdfcG9zLCAmY2hhcl9zaXplLCBO VUxMKSkKIAkgICAgewogCSAgICAgIGxlbiA9IGV4dHJhY3RfdW5zaWduZWRf aW50ZWdlciAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCArIGxlbmd0aF9w b3MsIGxlbmd0aF9zaXplKTsKLQkgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0 cmVhbSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCArIHN0cmluZ19wb3Ms IGxlbiwgY2hhcl9zaXplLCAwKTsKKwkgICAgICBMQV9QUklOVF9TVFJJTkcg KHN0cmVhbSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCArIHN0cmluZ19w b3MsIGxlbiwgY2hhcl9zaXplLCAwLCBvcHRpb25zKTsKIAkgICAgfQogCSAg ZWxzZQotCSAgICBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAo dHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgYWRkcmVzcywgc3Ry ZWFtLCBmb3JtYXQsCi0JCQkJCSAgICAgIHJlY3Vyc2UsIHByZXR0eSwgTlVM TCwgMCk7CisJICAgIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRz ICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBz dHJlYW0sCisJCQkJCSAgICAgIHJlY3Vyc2UsIG9wdGlvbnMsIE5VTEwsIDAp OwogCX0KICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRU5V TToKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+Zm9y bWF0KQogCXsKLQkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIg KyBlbWJlZGRlZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsK KwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIHR5cGUsCisJCQkJICBvcHRpb25zLCAwLCBzdHJlYW0pOwog CSAgYnJlYWs7CiAJfQogICAgICAgbGVuID0gVFlQRV9ORklFTERTICh0eXBl KTsKQEAgLTMzNiwxNiArMzMzLDE4IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAg ICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBFX0NPREVfRkxBR1M6Ci0gICAg ICBpZiAoZm9ybWF0KQotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFs YWRkciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJl YW0pOworICAgICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKKwkgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUsCisJCQkJICBvcHRpb25zLCAwLCBzdHJlYW0pOwogICAgICAgZWxzZQog CXZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHR5cGUsIHZhbGFkZHIgKyBl bWJlZGRlZF9vZmZzZXQsIHN0cmVhbSk7CiAgICAgICBicmVhazsKIAogICAg IGNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci0gICAgICBpZiAoZm9ybWF0KQorICAg ICAgaWYgKG9wdGlvbnMtPmZvcm1hdCkKIAl7Ci0JICBwcmludF9zY2FsYXJf Zm9ybWF0dGVkICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLCBm b3JtYXQsIDAsIHN0cmVhbSk7CisJICBwcmludF9zY2FsYXJfZm9ybWF0dGVk ICh2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCB0eXBlLAorCQkJCSAgb3B0 aW9ucywgMCwgc3RyZWFtKTsKIAkgIGJyZWFrOwogCX0KICAgICAgIC8qIEZJ WE1FLCB3ZSBzaG91bGQgY29uc2lkZXIsIGF0IGxlYXN0IGZvciBBTlNJIEMg bGFuZ3VhZ2UsIGVsaW1pbmF0aW5nCkBAIC0zNTgsOSArMzU3LDE0IEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUWVBF X0NPREVfQk9PTDoKLSAgICAgIGZvcm1hdCA9IGZvcm1hdCA/IGZvcm1hdCA6 IG91dHB1dF9mb3JtYXQ7Ci0gICAgICBpZiAoZm9ybWF0KQotCXByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKyAgICAgIGlmIChvcHRpb25zLT5m b3JtYXQgfHwgb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCkKKwl7CisJICBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7CisJICBv cHRzLmZvcm1hdCA9IChvcHRpb25zLT5mb3JtYXQgPyBvcHRpb25zLT5mb3Jt YXQKKwkJCSA6IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpOworCSAgcHJpbnRf c2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwg dHlwZSwKKwkJCQkgICZvcHRzLCAwLCBzdHJlYW0pOworCX0KICAgICAgIGVs c2UKIAl7CiAJICB2YWwgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsYWRkciAr IGVtYmVkZGVkX29mZnNldCk7CkBAIC0zODcsMTAgKzM5MSwxMyBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCiAgICAgICAvKiBGQUxMVEhST1VHSCAqLwogCiAgICAg Y2FzZSBUWVBFX0NPREVfSU5UOgotICAgICAgZm9ybWF0ID0gZm9ybWF0ID8g Zm9ybWF0IDogb3V0cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQpCisg ICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0IHx8IG9wdGlvbnMtPm91dHB1dF9m b3JtYXQpCiAJewotCSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0p OworCSAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRp b25zOworCSAgb3B0cy5mb3JtYXQgPSAob3B0aW9ucy0+Zm9ybWF0ID8gb3B0 aW9ucy0+Zm9ybWF0CisJCQkgOiBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsK KwkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIHR5cGUsCisJCQkJICAmb3B0cywgMCwgc3RyZWFtKTsKIAl9 CiAgICAgICBlbHNlCiAJewpAQCAtMzk5LDEwICs0MDYsMTMgQEAgcGFzY2Fs X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09E RV9DSEFSOgotICAgICAgZm9ybWF0ID0gZm9ybWF0ID8gZm9ybWF0IDogb3V0 cHV0X2Zvcm1hdDsKLSAgICAgIGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0 aW9ucy0+Zm9ybWF0IHx8IG9wdGlvbnMtPm91dHB1dF9mb3JtYXQpCiAJewot CSAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAodmFsYWRkciArIGVtYmVkZGVk X29mZnNldCwgdHlwZSwgZm9ybWF0LCAwLCBzdHJlYW0pOworCSAgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCSAgb3B0 cy5mb3JtYXQgPSAob3B0aW9ucy0+Zm9ybWF0ID8gb3B0aW9ucy0+Zm9ybWF0 CisJCQkgOiBvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKKwkgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIHR5 cGUsCisJCQkJICAmb3B0cywgMCwgc3RyZWFtKTsKIAl9CiAgICAgICBlbHNl CiAJewpAQCAtNDE3LDkgKzQyNywxMCBAQCBwYXNjYWxfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAg ICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFX0ZMVDoKLSAgICAg IGlmIChmb3JtYXQpCisgICAgICBpZiAob3B0aW9ucy0+Zm9ybWF0KQogCXsK LQkgIHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRl ZF9vZmZzZXQsIHR5cGUsIGZvcm1hdCwgMCwgc3RyZWFtKTsKKwkgIHByaW50 X3NjYWxhcl9mb3JtYXR0ZWQgKHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQs IHR5cGUsCisJCQkJICBvcHRpb25zLCAwLCBzdHJlYW0pOwogCX0KICAgICAg IGVsc2UKIAl7CkBAIC01MTcsOCArNTI4LDggQEAgcGFzY2FsX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogfQogDAogaW50Ci1wYXNjYWxfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1 ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAot CQkgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQorcGFzY2FsX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKKwkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRpb25zKQogewogICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVl X3R5cGUgKHZhbCk7CiAKQEAgLTU0NywxOSArNTU4LDEwIEBAIHBhc2NhbF92 YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCBmb3JtYXQsCiAJICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICIpICIpOwogCX0KICAgICB9Ci0gIHJldHVybiBjb21tb25fdmFs X3ByaW50ICh2YWwsIHN0cmVhbSwgZm9ybWF0LCAxLCAwLCBwcmV0dHksCi0J CQkgICBjdXJyZW50X2xhbmd1YWdlKTsKKyAgcmV0dXJuIGNvbW1vbl92YWxf cHJpbnQgKHZhbCwgc3RyZWFtLCAwLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1 YWdlKTsKIH0KIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gICAgICAgICAgICAgICAgICAgIEluc2VydGVkIGZyb20gY3AtdmFs cHJpbnQKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQot ZXh0ZXJuIGludCB2dGJscHJpbnQ7CQkvKiBDb250cm9scyBwcmludGluZyBv ZiB2dGJsJ3MgKi8KLWV4dGVybiBpbnQgb2JqZWN0cHJpbnQ7CQkvKiBDb250 cm9scyBsb29raW5nIHVwIGFuIG9iamVjdCdzIGRlcml2ZWQgdHlwZQotCQkJ CSAgIHVzaW5nIHdoYXQgd2UgZmluZCBpbiBpdHMgdnRhYmxlcy4gICovCi1z dGF0aWMgaW50IHBhc2NhbF9zdGF0aWNfZmllbGRfcHJpbnQ7CS8qIENvbnRy b2xzIHByaW50aW5nIG9mIHN0YXRpYyBmaWVsZHMuICovCiBzdGF0aWMgdm9p ZAogc2hvd19wYXNjYWxfc3RhdGljX2ZpZWxkX3ByaW50IChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkJCXN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTU3MiwxMiAr NTc0LDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgb2JzdGFjayBkb250X3ByaW50X3Zi X29ic3RhY2s7CiBzdGF0aWMgc3RydWN0IG9ic3RhY2sgZG9udF9wcmludF9z dGF0bWVtX29ic3RhY2s7CiAKIHN0YXRpYyB2b2lkIHBhc2NhbF9vYmplY3Rf cHJpbnRfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKiwKLQkJCQkJICAg ICAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsCi0JCQkJCSAgICAgIGVu dW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCQkJICAgICAgc3RydWN0IHVpX2Zp bGUgKiwgaW50LAorCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqKTsKIAogc3RhdGljIHZvaWQgcGFzY2FsX29iamVjdF9w cmludF92YWx1ZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwK LQkJCQkgICAgICAgQ09SRV9BRERSLCBzdHJ1Y3QgdWlfZmlsZSAqLAotCQkJ CSAgICAgICBpbnQsIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQsCisJCQkJ ICAgICAgIENPUkVfQUREUiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAorCQkJ CSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAog CQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKik7CiAKIC8qIEl0IHdhcyBjaGFu Z2VkIHRvIHRoaXMgYWZ0ZXIgMi40LjUuICAqLwpAQCAtNjI0LDcgKzYyNiw3 IEBAIHBhc2NhbF9vYmplY3RfaXNfdnRibF9tZW1iZXIgKHN0cnVjdCB0eXBl ICp0eXBlKQogICAgY192YWxfcHJpbnQgdG8gcHJpbnQgb3V0IGEgc3RydWN0 dXJlJ3MgZmllbGRzOgogICAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9m aWVsZHMgYW5kIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUuCiAKLSAgIFRZ UEUsIFZBTEFERFIsIEFERFJFU1MsIFNUUkVBTSwgUkVDVVJTRSwgYW5kIFBS RVRUWSBoYXZlIHRoZQorICAgVFlQRSwgVkFMQUREUiwgQUREUkVTUywgU1RS RUFNLCBSRUNVUlNFLCBhbmQgT1BUSU9OUyBoYXZlIHRoZQogICAgc2FtZSBt ZWFuaW5ncyBhcyBpbiBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIGFuZCBj X3ZhbF9wcmludC4KIAogICAgRE9OVF9QUklOVCBpcyBhbiBhcnJheSBvZiBi YXNlY2xhc3MgdHlwZXMgdGhhdCB3ZQpAQCAtNjMzLDggKzYzNSw4IEBAIHBh c2NhbF9vYmplY3RfaXNfdnRibF9tZW1iZXIgKHN0cnVjdCB0eXBlICp0eXBl KQogdm9pZAogcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJ CQkgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LAotCQkJCSAgaW50IGZvcm1hdCwgaW50IHJlY3Vyc2UsCi0JCQkJICBlbnVt IHZhbF9wcmV0dHlwcmludCBwcmV0dHksCisJCQkJICBpbnQgcmVjdXJzZSwK KwkJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zLAogCQkJCSAgc3RydWN0IHR5cGUgKipkb250X3ByaW50X3ZiLAogCQkJ CSAgaW50IGRvbnRfcHJpbnRfc3RhdG1lbSkKIHsKQEAgLTY1MSw3ICs2NTMs NyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgICBk dXBsaWNhdGVzIG9mIHZpcnR1YWwgYmFzZWNsYXNzZXMuICAqLwogICBpZiAo bl9iYXNlY2xhc3NlcyA+IDApCiAgICAgcGFzY2FsX29iamVjdF9wcmludF92 YWx1ZSAodHlwZSwgdmFsYWRkciwgYWRkcmVzcywgc3RyZWFtLAotCQkJICAg ICAgIGZvcm1hdCwgcmVjdXJzZSArIDEsIHByZXR0eSwgZG9udF9wcmludF92 Yik7CisJCQkgICAgICAgcmVjdXJzZSArIDEsIG9wdGlvbnMsIGRvbnRfcHJp bnRfdmIpOwogCiAgIGlmICghbGVuICYmIG5fYmFzZWNsYXNzZXMgPT0gMSkK ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICI8Tm8gZGF0YSBmaWVs ZHM+Iik7CkBAIC02NzEsMTQgKzY3MywxNCBAQCBwYXNjYWxfb2JqZWN0X3By aW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAogICAgICAgZm9yIChpID0gbl9iYXNlY2xhc3Nl czsgaSA8IGxlbjsgaSsrKQogCXsKIAkgIC8qIElmIHJlcXVlc3RlZCwgc2tp cCBwcmludGluZyBvZiBzdGF0aWMgZmllbGRzLiAgKi8KLQkgIGlmICghcGFz Y2FsX3N0YXRpY19maWVsZF9wcmludAorCSAgaWYgKCFvcHRpb25zLT5wYXNj YWxfc3RhdGljX2ZpZWxkX3ByaW50CiAJICAgICAgJiYgZmllbGRfaXNfc3Rh dGljICgmVFlQRV9GSUVMRCAodHlwZSwgaSkpKQogCSAgICBjb250aW51ZTsK IAkgIGlmIChmaWVsZHNfc2VlbikKIAkgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiLCAiKTsKIAkgIGVsc2UgaWYgKG5fYmFzZWNsYXNzZXMgPiAw KQogCSAgICB7Ci0JICAgICAgaWYgKHByZXR0eSkKKwkgICAgICBpZiAob3B0 aW9ucy0+cHJldHR5KQogCQl7CiAJCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiXG4iKTsKIAkJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAy ICogcmVjdXJzZSwgc3RyZWFtKTsKQEAgLTY4OSw3ICs2OTEsNyBAQCBwYXNj YWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgICB9CiAJICBmaWVs ZHNfc2VlbiA9IDE7CiAKLQkgIGlmIChwcmV0dHkpCisJICBpZiAob3B0aW9u cy0+cHJldHR5KQogCSAgICB7CiAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiXG4iKTsKIAkgICAgICBwcmludF9zcGFjZXNfZmlsdGVyZWQg KDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKQEAgLTY5OCw3ICs3MDAsNyBA QCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAogCSAgICB7CiAJ ICAgICAgd3JhcF9oZXJlIChuX3NwYWNlcyAoMiArIDIgKiByZWN1cnNlKSk7 CiAJICAgIH0KLQkgIGlmIChpbnNwZWN0X2l0KQorCSAgaWYgKG9wdGlvbnMt Pmluc3BlY3RfaXQpCiAJICAgIHsKIAkgICAgICBpZiAoVFlQRV9DT0RFIChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSA9PSBUWVBFX0NPREVfUFRSKQog CQlmcHV0c19maWx0ZXJlZCAoIlwiKCBwdHIgXCIiLCBzdHJlYW0pOwpAQCAt NzQyLDExICs3NDQsMTMgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9m aWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKIAkJfQogCSAgICAgIGVsc2UKIAkJeworCQkgIHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKIAkJICB2ID0gdmFs dWVfZnJvbV9sb25nZXN0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAog CQkJCSAgIHVucGFja19maWVsZF9hc19sb25nICh0eXBlLCB2YWxhZGRyLCBp KSk7CiAKLQkJICBjb21tb25fdmFsX3ByaW50ICh2LCBzdHJlYW0sIGZvcm1h dCwgMCwgcmVjdXJzZSArIDEsCi0JCQkJICAgIHByZXR0eSwgY3VycmVudF9s YW5ndWFnZSk7CisJCSAgb3B0cy5kZXJlZl9yZWYgPSAwOworCQkgIGNvbW1v bl92YWxfcHJpbnQgKHYsIHN0cmVhbSwgcmVjdXJzZSArIDEsICZvcHRzLAor CQkJCSAgICBjdXJyZW50X2xhbmd1YWdlKTsKIAkJfQogCSAgICB9CiAJICBl bHNlCkBAIC03NjUsMTEgKzc2OSwxMyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50 X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAogCQkgIGlmICh2ID09IE5VTEwpCiAJCSAgICBmcHV0 c19maWx0ZXJlZCAoIjxvcHRpbWl6ZWQgb3V0PiIsIHN0cmVhbSk7CiAJCSAg ZWxzZQotCQkgICAgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZmllbGQg KHYsIHN0cmVhbSwgZm9ybWF0LAotCQkJCQkJICAgICAgcmVjdXJzZSArIDEs IHByZXR0eSk7CisJCSAgICBwYXNjYWxfb2JqZWN0X3ByaW50X3N0YXRpY19m aWVsZCAodiwgc3RyZWFtLCByZWN1cnNlICsgMSwKKwkJCQkJCSAgICAgIG9w dGlvbnMpOwogCQl9CiAJICAgICAgZWxzZQogCQl7CisJCSAgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgb3B0cyA9ICpvcHRpb25zOworCQkgIG9wdHMu ZGVyZWZfcmVmID0gMDsKIAkJICAvKiB2YWxfcHJpbnQgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSksCiAJCSAgICAgdmFsYWRkciArIFRZUEVfRklFTERf QklUUE9TICh0eXBlLCBpKSAvIDgsCiAJCSAgICAgYWRkcmVzcyArIFRZUEVf RklFTERfQklUUE9TICh0eXBlLCBpKSAvIDgsIDAsCkBAIC03NzcsNyArNzgz LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAkJICB2 YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksCiAJCQkgICAg IHZhbGFkZHIsIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSAvIDgsCiAJ CQkgICAgIGFkZHJlc3MgKyBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkg LyA4LAotCQkJICAgICBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSArIDEs IHByZXR0eSwKKwkJCSAgICAgc3RyZWFtLCByZWN1cnNlICsgMSwgJm9wdHMs CiAJCQkgICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCQl9CiAJICAgIH0KQEAg LTc5Miw3ICs3OTgsNyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2Zp ZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAogCSAgZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2sgPSB0bXBfb2Jz dGFjazsKIAl9CiAKLSAgICAgIGlmIChwcmV0dHkpCisgICAgICBpZiAob3B0 aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKiByZWN1 cnNlLCBzdHJlYW0pOwpAQCAtODA3LDggKzgxMyw4IEBAIHBhc2NhbF9vYmpl Y3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiBzdGF0aWMgdm9pZAogcGFzY2FsX29i amVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAogCQkJICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sCi0JCQkgICBpbnQgZm9ybWF0LCBpbnQg cmVjdXJzZSwKLQkJCSAgIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSwK KwkJCSAgIGludCByZWN1cnNlLAorCQkJICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCiAJCQkgICBzdHJ1Y3QgdHlwZSAq KmRvbnRfcHJpbnRfdmIpCiB7CiAgIHN0cnVjdCB0eXBlICoqbGFzdF9kb250 X3ByaW50CkBAIC04NDksNyArODU1LDcgQEAgcGFzY2FsX29iamVjdF9wcmlu dF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAogCiAgICAgICBib2Zmc2V0ID0gYmFzZWNsYXNzX29mZnNldCAo dHlwZSwgaSwgdmFsYWRkciwgYWRkcmVzcyk7CiAKLSAgICAgIGlmIChwcmV0 dHkpCisgICAgICBpZiAob3B0aW9ucy0+cHJldHR5KQogCXsKIAkgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIlxuIik7CiAJICBwcmludF9zcGFjZXNf ZmlsdGVyZWQgKDIgKiByZWN1cnNlLCBzdHJlYW0pOwpAQCAtODgxLDcgKzg4 Nyw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAlmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICI8aW52YWxpZCBhZGRyZXNzPiIpOwogICAgICAg ZWxzZQogCXBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChiYXNl Y2xhc3MsIGJhc2VfdmFsYWRkciwgYWRkcmVzcyArIGJvZmZzZXQsCi0JCQkJ CSAgc3RyZWFtLCBmb3JtYXQsIHJlY3Vyc2UsIHByZXR0eSwKKwkJCQkJICBz dHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMsCiAJCSAgICAgKHN0cnVjdCB0eXBl ICoqKSBvYnN0YWNrX2Jhc2UgKCZkb250X3ByaW50X3ZiX29ic3RhY2spLAog CQkJCQkgIDApOwogICAgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVh bSk7CkBAIC05MDcsMTUgKzkxMywxNyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50 X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCiAgICBzdGF0aWMgbWVtYmVyIGNsYXNzZXMgaW4gYW4gb2JzdGFj ayBhbmQgcmVmdXNlIHRvIHByaW50IHRoZW0gbW9yZQogICAgdGhhbiBvbmNl LgogCi0gICBWQUwgY29udGFpbnMgdGhlIHZhbHVlIHRvIHByaW50LCBTVFJF QU0sIFJFQ1VSU0UsIGFuZCBQUkVUVFkKKyAgIFZBTCBjb250YWlucyB0aGUg dmFsdWUgdG8gcHJpbnQsIFNUUkVBTSwgUkVDVVJTRSwgYW5kIE9QVElPTlMK ICAgIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgaW4gY192YWxfcHJpbnQu ICAqLwogCiBzdGF0aWMgdm9pZAogcGFzY2FsX29iamVjdF9wcmludF9zdGF0 aWNfZmllbGQgKHN0cnVjdCB2YWx1ZSAqdmFsLAotCQkJCSAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJCQkgIGludCByZWN1cnNl LCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCisJCQkJICBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLAorCQkJCSAgaW50IHJlY3Vyc2UsCisJCQkJICBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsK ICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOworICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCiAgIGlmIChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QpCiAgICAgewpAQCAt OTQyLDExICs5NTAsMTMgQEAgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNf ZmllbGQgKHN0cnVjdCB2YWx1ZSAqdmFsLAogCiAgICAgICBDSEVDS19UWVBF REVGICh0eXBlKTsKICAgICAgIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVf ZmllbGRzICh0eXBlLCB2YWx1ZV9jb250ZW50cyAodmFsKSwgVkFMVUVfQURE UkVTUyAodmFsKSwKLQkJCQkgIHN0cmVhbSwgZm9ybWF0LCByZWN1cnNlLCBw cmV0dHksIE5VTEwsIDEpOworCQkJCQlzdHJlYW0sIHJlY3Vyc2UsIG9wdGlv bnMsIE5VTEwsIDEpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgY29tbW9u X3ZhbF9wcmludCAodmFsLCBzdHJlYW0sIGZvcm1hdCwgMCwgcmVjdXJzZSwg cHJldHR5LAotCQkgICAgY3VycmVudF9sYW5ndWFnZSk7CisKKyAgb3B0cyA9 ICpvcHRpb25zOworICBvcHRzLmRlcmVmX3JlZiA9IDA7CisgIGNvbW1vbl92 YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCByZWN1cnNlLCAmb3B0cywgY3VycmVu dF9sYW5ndWFnZSk7CiB9CiAKIGV4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5 cGUgX2luaXRpYWxpemVfcGFzY2FsX3ZhbHByaW50OyAvKiAtV21pc3Npbmct cHJvdG90eXBlcyAqLwpAQCAtOTU1LDEzICs5NjUsMTAgQEAgdm9pZAogX2lu aXRpYWxpemVfcGFzY2FsX3ZhbHByaW50ICh2b2lkKQogewogICBhZGRfc2V0 c2hvd19ib29sZWFuX2NtZCAoInBhc2NhbF9zdGF0aWMtbWVtYmVycyIsIGNs YXNzX3N1cHBvcnQsCi0JCQkgICAmcGFzY2FsX3N0YXRpY19maWVsZF9wcmlu dCwgXygiXAorCQkJICAgJnVzZXJfcHJpbnRfb3B0aW9ucy5wYXNjYWxfc3Rh dGljX2ZpZWxkX3ByaW50LCBfKCJcCiBTZXQgcHJpbnRpbmcgb2YgcGFzY2Fs IHN0YXRpYyBtZW1iZXJzLiIpLCBfKCJcCiBTaG93IHByaW50aW5nIG9mIHBh c2NhbCBzdGF0aWMgbWVtYmVycy4iKSwgTlVMTCwKIAkJCSAgIE5VTEwsCiAJ CQkgICBzaG93X3Bhc2NhbF9zdGF0aWNfZmllbGRfcHJpbnQsCiAJCQkgICAm c2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7Ci0gIC8qIFR1cm4gb24g cHJpbnRpbmcgb2Ygc3RhdGljIGZpZWxkcy4gICovCi0gIHBhc2NhbF9zdGF0 aWNfZmllbGRfcHJpbnQgPSAxOwotCiB9CmRpZmYgLS1naXQgYS9nZGIvcHJp bnRjbWQuYyBiL2dkYi9wcmludGNtZC5jCmluZGV4IDAyMWUxOTEuLjM1NTU1 MmQgMTAwNjQ0Ci0tLSBhL2dkYi9wcmludGNtZC5jCisrKyBiL2dkYi9wcmlu dGNtZC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiYmxvY2suaCIK ICNpbmNsdWRlICJkaXNhc20uaCIKICNpbmNsdWRlICJkZnAuaCIKKyNpbmNs dWRlICJ2YWxwcmludC5oIgogCiAjaWZkZWYgVFVJCiAjaW5jbHVkZSAidHVp L3R1aS5oIgkJLyogRm9yIHR1aV9hY3RpdmUgZXQuYWwuICAgKi8KQEAgLTU1 LDcgKzU2LDYgQEAKICNlbmRpZgogCiBleHRlcm4gaW50IGFzbV9kZW1hbmds ZTsJLyogV2hldGhlciB0byBkZW1hbmdsZSBzeW1zIGluIGFzbSBwcmludG91 dHMgKi8KLWV4dGVybiBpbnQgYWRkcmVzc3ByaW50OwkvKiBXaGV0aGVyIHRv IHByaW50IGhleCBhZGRyZXNzZXMgaW4gSExMICIgKi8KIAogc3RydWN0IGZv cm1hdF9kYXRhCiAgIHsKQEAgLTEyMCwxMyArMTIwLDYgQEAgUHJpbnRpbmcg b2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1i b2w+IGlzICVzLlxuIiksCiAKIGludCBjdXJyZW50X2Rpc3BsYXlfbnVtYmVy OwogCi0vKiBGbGFnIHRvIGxvdy1sZXZlbCBwcmludCByb3V0aW5lcyB0aGF0 IHRoaXMgdmFsdWUgaXMgYmVpbmcgcHJpbnRlZAotICAgaW4gYW4gZXBvY2gg d2luZG93LiAgV2UnZCBsaWtlIHRvIHBhc3MgdGhpcyBhcyBhIHBhcmFtZXRl ciwgYnV0Ci0gICBldmVyeSByb3V0aW5lIHdvdWxkIG5lZWQgdG8gdGFrZSBp dC4gIFBlcmhhcHMgd2UgY2FuIGVuY2Fwc3VsYXRlCi0gICB0aGlzIGluIHRo ZSBJL08gc3RyZWFtIG9uY2Ugd2UgaGF2ZSBHTlUgc3RkaW8uICovCi0KLWlu dCBpbnNwZWN0X2l0ID0gMDsKLQogc3RydWN0IGRpc3BsYXkKICAgewogICAg IC8qIENoYWluIGxpbmsgdG8gbmV4dCBhdXRvLWRpc3BsYXkgaXRlbS4gICov CkBAIC0yNTQsMTUgKzI0NywxNSBAQCBkZWNvZGVfZm9ybWF0IChjaGFyICoq c3RyaW5nX3B0ciwgaW50IG9mb3JtYXQsIGludCBvc2l6ZSkKICAgcmV0dXJu IHZhbDsKIH0KIAwKLS8qIFByaW50IHZhbHVlIFZBTCBvbiBzdHJlYW0gYWNj b3JkaW5nIHRvIEZPUk1BVCwgYSBsZXR0ZXIgb3IgMC4KKy8qIFByaW50IHZh bHVlIFZBTCBvbiBzdHJlYW0gYWNjb3JkaW5nIHRvIE9QVElPTlMuCiAgICBE byBub3QgZW5kIHdpdGggYSBuZXdsaW5lLgotICAgMCBtZWFucyBwcmludCBW QUwgYWNjb3JkaW5nIHRvIGl0cyBvd24gdHlwZS4KICAgIFNJWkUgaXMgdGhl IGxldHRlciBmb3IgdGhlIHNpemUgb2YgZGF0dW0gYmVpbmcgcHJpbnRlZC4K ICAgIFRoaXMgaXMgdXNlZCB0byBwYWQgaGV4IG51bWJlcnMgc28gdGhleSBs aW5lIHVwLiAgU0laRSBpcyAwCiAgICBmb3IgcHJpbnQgLyBvdXRwdXQgYW5k IHNldCBmb3IgZXhhbWluZS4gICovCiAKIHN0YXRpYyB2b2lkCi1wcmludF9m b3JtYXR0ZWQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBpbnQgZm9ybWF0LCBpbnQg c2l6ZSwKK3ByaW50X2Zvcm1hdHRlZCAoc3RydWN0IHZhbHVlICp2YWwsIGlu dCBzaXplLAorCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMsCiAJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogewogICBz dHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KHZhbCkpOwpAQCAtMjczLDEyICsyNjYsMTMgQEAgcHJpbnRfZm9ybWF0dGVk IChzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50IGZvcm1hdCwgaW50IHNpemUsCiAK ICAgaWYgKHNpemUpCiAgICAgewotICAgICAgc3dpdGNoIChmb3JtYXQpCisg ICAgICBzd2l0Y2ggKG9wdGlvbnMtPmZvcm1hdCkKIAl7CiAJY2FzZSAncyc6 CiAJICAvKiBGSVhNRTogTmVlZCB0byBoYW5kbGUgd2NoYXJfdCdzIGhlcmUu Li4gKi8KIAkgIG5leHRfYWRkcmVzcyA9IFZBTFVFX0FERFJFU1MgKHZhbCkK LQkgICAgKyB2YWxfcHJpbnRfc3RyaW5nIChWQUxVRV9BRERSRVNTICh2YWwp LCAtMSwgMSwgc3RyZWFtKTsKKwkgICAgKyB2YWxfcHJpbnRfc3RyaW5nIChW QUxVRV9BRERSRVNTICh2YWwpLCAtMSwgMSwgc3RyZWFtLAorCQkJCW9wdGlv bnMpOwogCSAgcmV0dXJuOwogCiAJY2FzZSAnaSc6CkBAIC0yOTEsMjIgKzI4 NSwxOSBAQCBwcmludF9mb3JtYXR0ZWQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBp bnQgZm9ybWF0LCBpbnQgc2l6ZSwKIAl9CiAgICAgfQogCi0gIGlmIChmb3Jt YXQgPT0gMCB8fCBmb3JtYXQgPT0gJ3MnCisgIGlmIChvcHRpb25zLT5mb3Jt YXQgPT0gMCB8fCBvcHRpb25zLT5mb3JtYXQgPT0gJ3MnCiAgICAgICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYKICAgICAgIHx8IFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCiAgICAgICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcKICAgICAgIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVAogICAgICAg fHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfVU5JT04KICAgICAg IHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX05BTUVTUEFDRSkK LSAgICAvKiBJZiBmb3JtYXQgaXMgMCwgdXNlIHRoZSAnbmF0dXJhbCcgZm9y bWF0IGZvciB0aGF0IHR5cGUgb2YKLSAgICAgICB2YWx1ZS4gIElmIHRoZSB0 eXBlIGlzIG5vbi1zY2FsYXIsIHdlIGhhdmUgdG8gdXNlIGxhbmd1YWdlCi0g ICAgICAgcnVsZXMgdG8gcHJpbnQgaXQgYXMgYSBzZXJpZXMgb2Ygc2NhbGFy cy4gICovCi0gICAgdmFsdWVfcHJpbnQgKHZhbCwgc3RyZWFtLCBmb3JtYXQs IFZhbF9wcmV0dHlfZGVmYXVsdCk7CisgICAgdmFsdWVfcHJpbnQgKHZhbCwg c3RyZWFtLCBvcHRpb25zKTsKICAgZWxzZQogICAgIC8qIFVzZXIgc3BlY2lm aWVkIGZvcm1hdCwgc28gZG9uJ3QgbG9vayB0byB0aGUgdGhlIHR5cGUgdG8K ICAgICAgICB0ZWxsIHVzIHdoYXQgdG8gZG8uICAqLwogICAgIHByaW50X3Nj YWxhcl9mb3JtYXR0ZWQgKHZhbHVlX2NvbnRlbnRzICh2YWwpLCB0eXBlLAot CQkJICAgIGZvcm1hdCwgc2l6ZSwgc3RyZWFtKTsKKwkJCSAgICBvcHRpb25z LCBzaXplLCBzdHJlYW0pOwogfQogCiAvKiBSZXR1cm4gYnVpbHRpbiBmbG9h dGluZyBwb2ludCB0eXBlIG9mIHNhbWUgbGVuZ3RoIGFzIFRZUEUuCkBAIC0z MjgsMTUgKzMxOSwxNiBAQCBmbG9hdF90eXBlX2Zyb21fbGVuZ3RoIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHR5cGUgKnR5cGUpCiB9CiAK IC8qIFByaW50IGEgc2NhbGFyIG9mIGRhdGEgb2YgdHlwZSBUWVBFLCBwb2lu dGVkIHRvIGluIEdEQiBieSBWQUxBRERSLAotICAgYWNjb3JkaW5nIHRvIGxl dHRlcnMgRk9STUFUIGFuZCBTSVpFIG9uIFNUUkVBTS4KLSAgIEZPUk1BVCBt YXkgbm90IGJlIHplcm8uICBGb3JtYXRzIHMgYW5kIGkgYXJlIG5vdCBzdXBw b3J0ZWQgYXQgdGhpcyBsZXZlbC4KKyAgIGFjY29yZGluZyB0byBPUFRJT05T IGFuZCBTSVpFIG9uIFNUUkVBTS4KKyAgIEZvcm1hdHMgcyBhbmQgaSBhcmUg bm90IHN1cHBvcnRlZCBhdCB0aGlzIGxldmVsLgogCiAgICBUaGlzIGlzIGhv dyB0aGUgZWxlbWVudHMgb2YgYW4gYXJyYXkgb3Igc3RydWN0dXJlIGFyZSBw cmludGVkCiAgICB3aXRoIGEgZm9ybWF0LiAgKi8KIAogdm9pZAogcHJpbnRf c2NhbGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFsYWRkciwgc3RydWN0 IHR5cGUgKnR5cGUsCi0JCQlpbnQgZm9ybWF0LCBpbnQgc2l6ZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSkKKwkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zLAorCQkJaW50IHNpemUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCiB7CiAgIExPTkdFU1QgdmFsX2xvbmcgPSAwOwogICB1 bnNpZ25lZCBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwpAQCAtMzQ1 LDkgKzMzNywxMiBAQCBwcmludF9zY2FsYXJfZm9ybWF0dGVkIChjb25zdCB2 b2lkICp2YWxhZGRyLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgLyogSWYgd2Ug Z2V0IGhlcmUgd2l0aCBhIHN0cmluZyBmb3JtYXQsIHRyeSBhZ2FpbiB3aXRo b3V0IGl0LiAgR28KICAgICAgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgbGFu Z3VhZ2UgcHJpbnRlcnMsIHdoaWNoIG1heSBjYWxsIHVzCiAgICAgIGFnYWlu LiAgKi8KLSAgaWYgKGZvcm1hdCA9PSAncycpCisgIGlmIChvcHRpb25zLT5m b3JtYXQgPT0gJ3MnKQogICAgIHsKLSAgICAgIHZhbF9wcmludCAodHlwZSwg dmFsYWRkciwgMCwgMCwgc3RyZWFtLCAwLCAwLCAwLCBWYWxfcHJldHR5X2Rl ZmF1bHQsCisgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz ID0gKm9wdGlvbnM7CisgICAgICBvcHRzLmZvcm1hdCA9IDA7CisgICAgICBv cHRzLmRlcmVmX3JlZiA9IDA7CisgICAgICB2YWxfcHJpbnQgKHR5cGUsIHZh bGFkZHIsIDAsIDAsIHN0cmVhbSwgMCwgJm9wdHMsCiAJCSBjdXJyZW50X2xh bmd1YWdlKTsKICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNTYsNyArMzUx LDcgQEAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFs YWRkciwgc3RydWN0IHR5cGUgKnR5cGUsCiAgICAgICAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfSU5UCiAgICAgICAgfHwgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfRU5VTSkpCiAgICAgewotICAgICAgc3dpdGNo IChmb3JtYXQpCisgICAgICBzd2l0Y2ggKG9wdGlvbnMtPmZvcm1hdCkKIAl7 CiAJY2FzZSAnbyc6CiAJICBwcmludF9vY3RhbF9jaGFycyAoc3RyZWFtLCB2 YWxhZGRyLCBsZW4sIGJ5dGVfb3JkZXIpOwpAQCAtMzc5LDcgKzM3NCw3IEBA IHByaW50X3NjYWxhcl9mb3JtYXR0ZWQgKGNvbnN0IHZvaWQgKnZhbGFkZHIs IHN0cnVjdCB0eXBlICp0eXBlLAogCX07CiAgICAgfQogCi0gIGlmIChmb3Jt YXQgIT0gJ2YnKQorICBpZiAob3B0aW9ucy0+Zm9ybWF0ICE9ICdmJykKICAg ICB2YWxfbG9uZyA9IHVucGFja19sb25nICh0eXBlLCB2YWxhZGRyKTsKIAog ICAvKiBJZiB0aGUgdmFsdWUgaXMgYSBwb2ludGVyLCBhbmQgcG9pbnRlcnMg YW5kIGFkZHJlc3NlcyBhcmUgbm90IHRoZQpAQCAtMzkxLDEzICszODYsMTMg QEAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFsYWRk ciwgc3RydWN0IHR5cGUgKnR5cGUsCiAgIC8qIElmIHdlIGFyZSBwcmludGlu ZyBpdCBhcyB1bnNpZ25lZCwgdHJ1bmNhdGUgaXQgaW4gY2FzZSBpdCBpcyBh Y3R1YWxseQogICAgICBhIG5lZ2F0aXZlIHNpZ25lZCB2YWx1ZSAoZS5nLiAi cHJpbnQvdSAoc2hvcnQpLTEiIHNob3VsZCBwcmludCA2NTUzNQogICAgICAo aWYgc2hvcnRzIGFyZSAxNiBiaXRzKSBpbnN0ZWFkIG9mIDQyOTQ5NjcyOTUp LiAgKi8KLSAgaWYgKGZvcm1hdCAhPSAnZCcpCisgIGlmIChvcHRpb25zLT5m b3JtYXQgIT0gJ2QnKQogICAgIHsKICAgICAgIGlmIChsZW4gPCBzaXplb2Yg KExPTkdFU1QpKQogCXZhbF9sb25nICY9ICgoTE9OR0VTVCkgMSA8PCBIT1NU X0NIQVJfQklUICogbGVuKSAtIDE7CiAgICAgfQogCi0gIHN3aXRjaCAoZm9y bWF0KQorICBzd2l0Y2ggKG9wdGlvbnMtPmZvcm1hdCkKICAgICB7CiAgICAg Y2FzZSAneCc6CiAgICAgICBpZiAoIXNpemUpCkBAIC00NDIsMTMgKzQzNywx NyBAQCBwcmludF9zY2FsYXJfZm9ybWF0dGVkIChjb25zdCB2b2lkICp2YWxh ZGRyLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSAnYyc6Ci0gICAgICBpZiAoVFlQRV9VTlNJR05FRCAodHlwZSkpCi0J dmFsdWVfcHJpbnQgKHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBl X3RydWVfdW5zaWduZWRfY2hhciwKLQkJCQkJIHZhbF9sb25nKSwKLQkJICAg ICBzdHJlYW0sIDAsIFZhbF9wcmV0dHlfZGVmYXVsdCk7Ci0gICAgICBlbHNl Ci0JdmFsdWVfcHJpbnQgKHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90 eXBlX3RydWVfY2hhciwgdmFsX2xvbmcpLAotCQkgICAgIHN0cmVhbSwgMCwg VmFsX3ByZXR0eV9kZWZhdWx0KTsKKyAgICAgIHsKKwlzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyBvcHRzID0gKm9wdGlvbnM7CisJb3B0cy5mb3JtYXQg PSAwOworCWlmIChUWVBFX1VOU0lHTkVEICh0eXBlKSkKKwkgIHZhbHVlX3By aW50ICh2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZV90cnVlX3Vu c2lnbmVkX2NoYXIsCisJCQkJCSAgIHZhbF9sb25nKSwKKwkJICAgICAgIHN0 cmVhbSwgJm9wdHMpOworCWVsc2UKKwkgIHZhbHVlX3ByaW50ICh2YWx1ZV9m cm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZV90cnVlX2NoYXIsIHZhbF9sb25n KSwKKwkJICAgICAgIHN0cmVhbSwgJm9wdHMpOworICAgICAgfQogICAgICAg YnJlYWs7CiAKICAgICBjYXNlICdmJzoKQEAgLTUwOCw3ICs1MDcsNyBAQCBw cmludF9zY2FsYXJfZm9ybWF0dGVkIChjb25zdCB2b2lkICp2YWxhZGRyLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVs dDoKLSAgICAgIGVycm9yIChfKCJVbmRlZmluZWQgb3V0cHV0IGZvcm1hdCBc IiVjXCIuIiksIGZvcm1hdCk7CisgICAgICBlcnJvciAoXygiVW5kZWZpbmVk IG91dHB1dCBmb3JtYXQgXCIlY1wiLiIpLCBvcHRpb25zLT5mb3JtYXQpOwog ICAgIH0KIH0KIApAQCAtNzA3LDExICs3MDYsMTMgQEAgdm9pZAogcHJpbnRf YWRkcmVzc19kZW1hbmdsZSAoQ09SRV9BRERSIGFkZHIsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCiAJCQlpbnQgZG9fZGVtYW5nbGUpCiB7CisgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CisgIGdldF91c2VyX3ByaW50 X29wdGlvbnMgKCZvcHRzKTsKICAgaWYgKGFkZHIgPT0gMCkKICAgICB7CiAg ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIwIik7CiAgICAgfQot ICBlbHNlIGlmIChhZGRyZXNzcHJpbnQpCisgIGVsc2UgaWYgKG9wdHMuYWRk cmVzc3ByaW50KQogICAgIHsKICAgICAgIGZwdXRzX2ZpbHRlcmVkIChwYWRk cmVzcyAoYWRkciksIHN0cmVhbSk7CiAgICAgICBwcmludF9hZGRyZXNzX3N5 bWJvbGljIChhZGRyLCBzdHJlYW0sIGRvX2RlbWFuZ2xlLCAiICIpOwpAQCAt NzQ1LDYgKzc0Niw3IEBAIGRvX2V4YW1pbmUgKHN0cnVjdCBmb3JtYXRfZGF0 YSBmbXQsIENPUkVfQUREUiBhZGRyKQogICBzdHJ1Y3QgdHlwZSAqdmFsX3R5 cGUgPSBOVUxMOwogICBpbnQgaTsKICAgaW50IG1heGVsdHM7CisgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKICAgZm9ybWF0ID0gZm10 LmZvcm1hdDsKICAgc2l6ZSA9IGZtdC5zaXplOwpAQCAtNzc1LDYgKzc3Nyw4 IEBAIGRvX2V4YW1pbmUgKHN0cnVjdCBmb3JtYXRfZGF0YSBmbXQsIENPUkVf QUREUiBhZGRyKQogICBpZiAoZm9ybWF0ID09ICdzJyB8fCBmb3JtYXQgPT0g J2knKQogICAgIG1heGVsdHMgPSAxOwogCisgIGdldF9mb3JtYXR0ZWRfcHJp bnRfb3B0aW9ucyAoJm9wdHMsIGZvcm1hdCk7CisKICAgLyogUHJpbnQgYXMg bWFueSBvYmplY3RzIGFzIHNwZWNpZmllZCBpbiBDT1VOVCwgYXQgbW9zdCBt YXhlbHRzIHBlciBsaW5lLAogICAgICB3aXRoIHRoZSBhZGRyZXNzIG9mIHRo ZSBuZXh0IG9uZSBhdCB0aGUgc3RhcnQgb2YgZWFjaCBsaW5lLiAgKi8KIApA QCAtODA5LDcgKzgxMyw3IEBAIGRvX2V4YW1pbmUgKHN0cnVjdCBmb3JtYXRf ZGF0YSBmbXQsIENPUkVfQUREUiBhZGRyKQogCSAgaWYgKGxhc3RfZXhhbWlu ZV92YWx1ZSkKIAkgICAgcmVsZWFzZV92YWx1ZSAobGFzdF9leGFtaW5lX3Zh bHVlKTsKIAotCSAgcHJpbnRfZm9ybWF0dGVkIChsYXN0X2V4YW1pbmVfdmFs dWUsIGZvcm1hdCwgc2l6ZSwgZ2RiX3N0ZG91dCk7CisJICBwcmludF9mb3Jt YXR0ZWQgKGxhc3RfZXhhbWluZV92YWx1ZSwgc2l6ZSwgJm9wdHMsIGdkYl9z dGRvdXQpOwogCiAJICAvKiBEaXNwbGF5IGFueSBicmFuY2ggZGVsYXkgc2xv dHMgZm9sbG93aW5nIHRoZSBmaW5hbCBpbnNuLiAgKi8KIAkgIGlmIChmb3Jt YXQgPT0gJ2knICYmIGNvdW50ID09IDEpCkBAIC04NDcsMTAgKzg1MSw2IEBA IHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50 IHZvaWRwcmludCkKICAgc3RydWN0IGZvcm1hdF9kYXRhIGZtdDsKICAgaW50 IGNsZWFudXAgPSAwOwogCi0gIC8qIFBhc3MgaW5zcGVjdCBmbGFnIHRvIHRo ZSByZXN0IG9mIHRoZSBwcmludCByb3V0aW5lcyBpbiBhIGdsb2JhbAotICAg ICAoc2lnaCkuICAqLwotICBpbnNwZWN0X2l0ID0gaW5zcGVjdDsKLQogICBp ZiAoZXhwICYmICpleHAgPT0gJy8nKQogICAgIHsKICAgICAgIGV4cCsrOwpA QCAtODc5LDYgKzg3OSw3IEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhw LCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKICAgaWYgKHZvaWRwcmlu dCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKIAkJICAgIFRZUEVf Q09ERSAodmFsdWVfdHlwZSAodmFsKSkgIT0gVFlQRV9DT0RFX1ZPSUQpKQog ICAgIHsKKyAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7 CiAgICAgICBpbnQgaGlzdGluZGV4ID0gcmVjb3JkX2xhdGVzdF92YWx1ZSAo dmFsKTsKIAogICAgICAgaWYgKGhpc3RpbmRleCA+PSAwKQpAQCAtODk1LDcg Kzg5NiwxMCBAQCBwcmludF9jb21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGlu c3BlY3QsIGludCB2b2lkcHJpbnQpCiAgICAgICBpZiAoaGlzdGluZGV4ID49 IDApCiAJYW5ub3RhdGVfdmFsdWVfaGlzdG9yeV92YWx1ZSAoKTsKIAotICAg ICAgcHJpbnRfZm9ybWF0dGVkICh2YWwsIGZvcm1hdCwgZm10LnNpemUsIGdk Yl9zdGRvdXQpOworICAgICAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25z ICgmb3B0cywgZm9ybWF0KTsKKyAgICAgIG9wdHMuaW5zcGVjdF9pdCA9IGlu c3BlY3Q7CisKKyAgICAgIHByaW50X2Zvcm1hdHRlZCAodmFsLCBmbXQuc2l6 ZSwgJm9wdHMsIGdkYl9zdGRvdXQpOwogICAgICAgcHJpbnRmX2ZpbHRlcmVk ICgiXG4iKTsKIAogICAgICAgaWYgKGhpc3RpbmRleCA+PSAwKQpAQCAtOTA5 LDcgKzkxMyw2IEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQg aW5zcGVjdCwgaW50IHZvaWRwcmludCkKIAogICBpZiAoY2xlYW51cCkKICAg ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgaW5zcGVjdF9pdCA9IDA7 CQkvKiBSZXNldCBwcmludCByb3V0aW5lcyB0byBub3JtYWwuICAqLwogfQog CiBzdGF0aWMgdm9pZApAQCAtOTQyLDYgKzk0NSw3IEBAIG91dHB1dF9jb21t YW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAgY2hhciBmb3JtYXQg PSAwOwogICBzdHJ1Y3QgdmFsdWUgKnZhbDsKICAgc3RydWN0IGZvcm1hdF9k YXRhIGZtdDsKKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK IAogICBmbXQuc2l6ZSA9IDA7CiAKQEAgLTk2MCw3ICs5NjQsOCBAQCBvdXRw dXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCiAKICAgYW5u b3RhdGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwogCi0gIHBy aW50X2Zvcm1hdHRlZCAodmFsLCBmb3JtYXQsIGZtdC5zaXplLCBnZGJfc3Rk b3V0KTsKKyAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywg Zm9ybWF0KTsKKyAgcHJpbnRfZm9ybWF0dGVkICh2YWwsIGZtdC5zaXplLCAm b3B0cywgZ2RiX3N0ZG91dCk7CiAKICAgYW5ub3RhdGVfdmFsdWVfZW5kICgp OwogCkBAIC0xNTA3LDYgKzE1MTIsOCBAQCBkb19vbmVfZGlzcGxheSAoc3Ry dWN0IGRpc3BsYXkgKmQpCiAgICAgfQogICBlbHNlCiAgICAgeworICAgICAg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKwogICAgICAgYW5u b3RhdGVfZGlzcGxheV9mb3JtYXQgKCk7CiAKICAgICAgIGlmIChkLT5mb3Jt YXQuZm9ybWF0KQpAQCAtMTUyMSw4ICsxNTI4LDkgQEAgZG9fb25lX2Rpc3Bs YXkgKHN0cnVjdCBkaXNwbGF5ICpkKQogCiAgICAgICBhbm5vdGF0ZV9kaXNw bGF5X2V4cHJlc3Npb24gKCk7CiAKKyAgICAgIGdldF9mb3JtYXR0ZWRfcHJp bnRfb3B0aW9ucyAoJm9wdHMsIGQtPmZvcm1hdC5mb3JtYXQpOwogICAgICAg cHJpbnRfZm9ybWF0dGVkIChldmFsdWF0ZV9leHByZXNzaW9uIChkLT5leHAp LAotCQkgICAgICAgZC0+Zm9ybWF0LmZvcm1hdCwgZC0+Zm9ybWF0LnNpemUs IGdkYl9zdGRvdXQpOworCQkgICAgICAgZC0+Zm9ybWF0LnNpemUsICZvcHRz LCBnZGJfc3Rkb3V0KTsKICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlxuIik7 CiAgICAgfQogCkBAIC0xNjc3LDggKzE2ODUsMTAgQEAgcHJpbnRfdmFyaWFi bGVfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLAogCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQog ewogICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IHJlYWRfdmFyX3ZhbHVlICh2YXIs IGZyYW1lKTsKKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK IAotICB2YWx1ZV9wcmludCAodmFsLCBzdHJlYW0sIDAsIFZhbF9wcmV0dHlf ZGVmYXVsdCk7CisgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsK KyAgdmFsdWVfcHJpbnQgKHZhbCwgc3RyZWFtLCAmb3B0cyk7CiB9CiAKIHN0 YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi12YWx1 ZS5jIGIvZ2RiL3B5dGhvbi9weXRob24tdmFsdWUuYwppbmRleCBkOTU3Mjcz Li44YmY0ZWM4IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi12YWx1 ZS5jCisrKyBiL2dkYi9weXRob24vcHl0aG9uLXZhbHVlLmMKQEAgLTIzLDYg KzIzLDcgQEAKICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAjaW5jbHVkZSAi bGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJkZnAuaCIKKyNpbmNsdWRlICJ2YWxw cmludC5oIgogCiAvKiBMaXN0IG9mIGFsbCB2YWx1ZXMgd2hpY2ggYXJlIGN1 cnJlbnRseSBleHBvc2VkIHRvIFB5dGhvbi4gSXQgaXMKICAgIG1haW50YWlu ZWQgc28gdGhhdCB3aGVuIGFuIG9iamZpbGUgaXMgZGlzY2FyZGVkLCBwcmVz ZXJ2ZV92YWx1ZXMKQEAgLTE4OSwxNSArMTkwLDE5IEBAIHZhbHB5X3N0ciAo UHlPYmplY3QgKnNlbGYpCiAgIHN0cnVjdCB1aV9maWxlICpzdGI7CiAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgIFB5T2JqZWN0ICpyZXN1bHQ7 CisgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgIHZvbGF0 aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKIAorICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CisgIG9wdHMuZGVyZWZfcmVmID0g MDsKKwogICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7CiAgIG9sZF9jaGFpbiA9 IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RiKTsKIAogICBUUllf Q0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQogICAgIHsKLSAgICAg IGNvbW1vbl92YWxfcHJpbnQgKCgodmFsdWVfb2JqZWN0ICopIHNlbGYpLT52 YWx1ZSwgc3RiLCAwLCAwLCAwLAotCQkJVmFsX3ByZXR0eV9kZWZhdWx0LCBj dXJyZW50X2xhbmd1YWdlKTsKKyAgICAgIGNvbW1vbl92YWxfcHJpbnQgKCgo dmFsdWVfb2JqZWN0ICopIHNlbGYpLT52YWx1ZSwgc3RiLCAwLAorCQkJJm9w dHMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogICAgICAgcyA9IHVpX2ZpbGVfeHN0 cmR1cCAoc3RiLCAmZHVtbXkpOwogICAgIH0KICAgR0RCX1BZX0hBTkRMRV9F WENFUFRJT04gKGV4Y2VwdCk7CmRpZmYgLS1naXQgYS9nZGIvc2NtLWxhbmcu YyBiL2dkYi9zY20tbGFuZy5jCmluZGV4IDQyZDI1MDIuLjBiMjU1OTAgMTAw NjQ0Ci0tLSBhL2dkYi9zY20tbGFuZy5jCisrKyBiL2dkYi9zY20tbGFuZy5j CkBAIC01MCw3ICs1MCw4IEBAIHNjbV9wcmludGNoYXIgKGludCBjLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtKQogCiBzdGF0aWMgdm9pZAogc2NtX3ByaW50 c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBjb25zdCBnZGJfYnl0ZSAq c3RyaW5nLAotCSAgICAgIHVuc2lnbmVkIGludCBsZW5ndGgsIGludCB3aWR0 aCwgaW50IGZvcmNlX2VsbGlwc2VzKQorCSAgICAgIHVuc2lnbmVkIGludCBs ZW5ndGgsIGludCB3aWR0aCwgaW50IGZvcmNlX2VsbGlwc2VzLAorCSAgICAg IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQog ewogICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJcIiVzXCIiLCBzdHJp bmcpOwogfQpkaWZmIC0tZ2l0IGEvZ2RiL3NjbS1sYW5nLmggYi9nZGIvc2Nt LWxhbmcuaAppbmRleCA2NTQwOTVjLi4zNjk5MDViIDEwMDY0NAotLS0gYS9n ZGIvc2NtLWxhbmcuaAorKysgYi9nZGIvc2NtLWxhbmcuaApAQCAtNDYsMTYg KzQ2LDE2IEBACiBzdHJ1Y3QgdmFsdWU7CiAKIGV4dGVybiBpbnQgc2NtX3Zh bHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwK LQkJCSAgICBpbnQsIGVudW0gdmFsX3ByZXR0eXByaW50KTsKKwkJCSAgICBj b25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogZXh0ZXJu IGludCBzY21fdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJf Ynl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLQkJCSAgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQsIGludCwKLQkJCSAgZW51bSB2YWxfcHJldHR5cHJpbnQp OworCQkJICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisJCQkgIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogCiBleHRlcm4gTE9OR0VT VCBzY21fZ2V0X2ZpZWxkIChMT05HRVNULCBpbnQpOwogCi1leHRlcm4gdm9p ZCBzY21fc2NtdmFsX3ByaW50IChMT05HRVNULCBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsIGludCwgaW50LAotCQkJICAgICAgZW51bSB2YWxfcHJldHR5cHJp bnQpOworZXh0ZXJuIHZvaWQgc2NtX3NjbXZhbF9wcmludCAoTE9OR0VTVCwg c3RydWN0IHVpX2ZpbGUgKiwgaW50LAorCQkJICAgICAgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAKIGV4dGVybiBpbnQgaXNfc2Nt dmFsdWVfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAKZGlmZiAtLWdpdCBhL2dk Yi9zY20tdmFscHJpbnQuYyBiL2dkYi9zY20tdmFscHJpbnQuYwppbmRleCBm ZWI0M2RkLi4wMDZmMjgwIDEwMDY0NAotLS0gYS9nZGIvc2NtLXZhbHByaW50 LmMKKysrIGIvZ2RiL3NjbS12YWxwcmludC5jCkBAIC0zMywxOCArMzMsMTgg QEAKICNpbmNsdWRlICJvYmpmaWxlcy5oIgogCiBzdGF0aWMgdm9pZCBzY21f aXBydWsgKGNoYXIgKiwgTE9OR0VTVCwgc3RydWN0IHVpX2ZpbGUgKik7Ci1z dGF0aWMgdm9pZCBzY21fc2NtbGlzdF9wcmludCAoTE9OR0VTVCwgc3RydWN0 IHVpX2ZpbGUgKiwgaW50LCBpbnQsCi0JCQkgICAgICAgaW50LCBlbnVtIHZh bF9wcmV0dHlwcmludCk7Ci1zdGF0aWMgaW50IHNjbV9pbmZlcmlvcl9wcmlu dCAoTE9OR0VTVCwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQsCi0JCQkg ICAgICAgaW50LCBlbnVtIHZhbF9wcmV0dHlwcmludCk7CitzdGF0aWMgdm9p ZCBzY21fc2NtbGlzdF9wcmludCAoTE9OR0VTVCwgc3RydWN0IHVpX2ZpbGUg KiwgaW50LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zICopOworc3RhdGljIGludCBzY21faW5mZXJpb3JfcHJpbnQgKExP TkdFU1QsIHN0cnVjdCB1aV9maWxlICosIGludCwKKwkJCSAgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKIAogLyogUHJpbnRz IHRoZSBTQ00gdmFsdWUgVkFMVUUgYnkgaW52b2tpbmcgdGhlIGluZmVyaW9y LCBpZiBhcHByb3ByYWl0ZS4KICAgIFJldHVybnMgPj0gMCBvbiBzdWNjZXNz OyAgcmV0dXJuIC0xIGlmIHRoZSBpbmZlcmlvciBjYW5ub3Qvc2hvdWxkIG5v dAogICAgcHJpbnQgVkFMVUUuICovCiAKIHN0YXRpYyBpbnQKLXNjbV9pbmZl cmlvcl9wcmludCAoTE9OR0VTVCB2YWx1ZSwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IGZvcm1hdCwKLQkJICAgIGludCBkZXJlZl9yZWYsIGludCBy ZWN1cnNlLCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpCitzY21faW5m ZXJpb3JfcHJpbnQgKExPTkdFU1QgdmFsdWUsIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCisJCSAgICBpbnQgcmVjdXJzZSwgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiB7CiAgIHN0cnVjdCBvYmpmaWxl ICpvYmpmOwogICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKQEAgLTEyOSwx NyArMTI5LDE2IEBAIHN0YXRpYyBjaGFyICpzY21faXN5bW5hbWVzW10gPQog fTsKIAogc3RhdGljIHZvaWQKLXNjbV9zY21saXN0X3ByaW50IChMT05HRVNU IHN2YWx1ZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwK LQkJICAgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2UsIGVudW0gdmFsX3By ZXR0eXByaW50IHByZXR0eSkKK3NjbV9zY21saXN0X3ByaW50IChMT05HRVNU IHN2YWx1ZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2Us CisJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRp b25zKQogewotICB1bnNpZ25lZCBpbnQgbW9yZSA9IHByaW50X21heDsKKyAg dW5zaWduZWQgaW50IG1vcmUgPSBvcHRpb25zLT5wcmludF9tYXg7CiAgIGlm IChyZWN1cnNlID4gNikKICAgICB7CiAgICAgICBmcHV0c19maWx0ZXJlZCAo Ii4uLiIsIHN0cmVhbSk7CiAgICAgICByZXR1cm47CiAgICAgfQotICBzY21f c2NtdmFsX3ByaW50IChTQ01fQ0FSIChzdmFsdWUpLCBzdHJlYW0sIGZvcm1h dCwKLQkJICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSk7Cisg IHNjbV9zY212YWxfcHJpbnQgKFNDTV9DQVIgKHN2YWx1ZSksIHN0cmVhbSwg cmVjdXJzZSArIDEsIG9wdGlvbnMpOwogICBzdmFsdWUgPSBTQ01fQ0RSIChz dmFsdWUpOwogICBmb3IgKDsgU0NNX05JTVAgKHN2YWx1ZSk7IHN2YWx1ZSA9 IFNDTV9DRFIgKHN2YWx1ZSkpCiAgICAgewpAQCAtMTUxLDE0ICsxNTAsMTIg QEAgc2NtX3NjbWxpc3RfcHJpbnQgKExPTkdFU1Qgc3ZhbHVlLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAogCSAgZnB1dHNfZmlsdGVy ZWQgKCIuLi4iLCBzdHJlYW0pOwogCSAgcmV0dXJuOwogCX0KLSAgICAgIHNj bV9zY212YWxfcHJpbnQgKFNDTV9DQVIgKHN2YWx1ZSksIHN0cmVhbSwgZm9y bWF0LAotCQkJZGVyZWZfcmVmLCByZWN1cnNlICsgMSwgcHJldHR5KTsKKyAg ICAgIHNjbV9zY212YWxfcHJpbnQgKFNDTV9DQVIgKHN2YWx1ZSksIHN0cmVh bSwgcmVjdXJzZSArIDEsIG9wdGlvbnMpOwogICAgIH0KICAgaWYgKFNDTV9O TlVMTFAgKHN2YWx1ZSkpCiAgICAgewogICAgICAgZnB1dHNfZmlsdGVyZWQg KCIgLiAiLCBzdHJlYW0pOwotICAgICAgc2NtX3NjbXZhbF9wcmludCAoc3Zh bHVlLCBzdHJlYW0sIGZvcm1hdCwKLQkJCWRlcmVmX3JlZiwgcmVjdXJzZSAr IDEsIHByZXR0eSk7CisgICAgICBzY21fc2NtdmFsX3ByaW50IChzdmFsdWUs IHN0cmVhbSwgcmVjdXJzZSArIDEsIG9wdGlvbnMpOwogICAgIH0KIH0KIApA QCAtMTc0LDE1ICsxNzEsMTcgQEAgc2NtX2lwcnVrIChjaGFyICpoZHIsIExP TkdFU1QgcHRyLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogfQogCiB2b2lk Ci1zY21fc2NtdmFsX3ByaW50IChMT05HRVNUIHN2YWx1ZSwgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwKLQkJICBpbnQgZGVyZWZfcmVm LCBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5KQor c2NtX3NjbXZhbF9wcmludCAoTE9OR0VTVCBzdmFsdWUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCisJCSAgaW50IHJlY3Vyc2UsIGNvbnN0IHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogdGFsb29wOgogICBz d2l0Y2ggKDcgJiAoaW50KSBzdmFsdWUpCiAgICAgewogICAgIGNhc2UgMjoK ICAgICBjYXNlIDY6Ci0gICAgICBwcmludF9sb25nZXN0IChzdHJlYW0sIGZv cm1hdCA/IGZvcm1hdCA6ICdkJywgMSwgc3ZhbHVlID4+IDIpOworICAgICAg cHJpbnRfbG9uZ2VzdCAoc3RyZWFtLAorCQkgICAgIG9wdGlvbnMtPmZvcm1h dCA/IG9wdGlvbnMtPmZvcm1hdCA6ICdkJywKKwkJICAgICAxLCBzdmFsdWUg Pj4gMik7CiAgICAgICBicmVhazsKICAgICBjYXNlIDQ6CiAgICAgICBpZiAo U0NNX0lDSFJQIChzdmFsdWUpKQpAQCAtMjQzLDE0ICsyNDIsMTIgQEAgdGFs b29wOgogCWNhc2Ugc2NtX3Rjc19jb25zX2ltY2FyOgogCWNhc2Ugc2NtX3Rj c19jb25zX25pbWNhcjoKIAkgIGZwdXRzX2ZpbHRlcmVkICgiKCIsIHN0cmVh bSk7Ci0JICBzY21fc2NtbGlzdF9wcmludCAoc3ZhbHVlLCBzdHJlYW0sIGZv cm1hdCwKLQkJCSAgICAgZGVyZWZfcmVmLCByZWN1cnNlICsgMSwgcHJldHR5 KTsKKwkgIHNjbV9zY21saXN0X3ByaW50IChzdmFsdWUsIHN0cmVhbSwgcmVj dXJzZSArIDEsIG9wdGlvbnMpOwogCSAgZnB1dHNfZmlsdGVyZWQgKCIpIiwg c3RyZWFtKTsKIAkgIGJyZWFrOwogCWNhc2Ugc2NtX3Rjc19jbG9zdXJlczoK IAkgIGZwdXRzX2ZpbHRlcmVkICgiIzxDTE9TVVJFICIsIHN0cmVhbSk7Ci0J ICBzY21fc2NtbGlzdF9wcmludCAoU0NNX0NPREUgKHN2YWx1ZSksIHN0cmVh bSwgZm9ybWF0LAotCQkJICAgICBkZXJlZl9yZWYsIHJlY3Vyc2UgKyAxLCBw cmV0dHkpOworCSAgc2NtX3NjbWxpc3RfcHJpbnQgKFNDTV9DT0RFIChzdmFs dWUpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLCBvcHRpb25zKTsKIAkgIGZwdXRz X2ZpbHRlcmVkICgiPiIsIHN0cmVhbSk7CiAJICBicmVhazsKIAljYXNlIHNj bV90Yzdfc3RyaW5nOgpAQCAtMjYxLDkgKzI1OCw5IEBAIHRhbG9vcDoKIAkg ICAgaW50IGRvbmUgPSAwOwogCSAgICBpbnQgYnVmX3NpemU7CiAJICAgIGdk Yl9ieXRlIGJ1ZmZlcls2NF07Ci0JICAgIGludCB0cnVuY2F0ZSA9IHByaW50 X21heCAmJiBsZW4gPiAoaW50KSBwcmludF9tYXg7CisJICAgIGludCB0cnVu Y2F0ZSA9IG9wdGlvbnMtPnByaW50X21heCAmJiBsZW4gPiAoaW50KSBvcHRp b25zLT5wcmludF9tYXg7CiAJICAgIGlmICh0cnVuY2F0ZSkKLQkgICAgICBs ZW4gPSBwcmludF9tYXg7CisJICAgICAgbGVuID0gb3B0aW9ucy0+cHJpbnRf bWF4OwogCSAgICBmcHV0c19maWx0ZXJlZCAoIlwiIiwgc3RyZWFtKTsKIAkg ICAgZm9yICg7IGRvbmUgPCBsZW47IGRvbmUgKz0gYnVmX3NpemUpCiAJICAg ICAgewpAQCAtMzA1LDggKzMwMiw4IEBAIHRhbG9vcDoKIAkgICAgICB7CiAJ CWlmIChpID4gMCkKIAkJICBmcHV0c19maWx0ZXJlZCAoIiAiLCBzdHJlYW0p OwotCQlzY21fc2NtdmFsX3ByaW50IChzY21fZ2V0X2ZpZWxkIChlbGVtZW50 cywgaSksIHN0cmVhbSwgZm9ybWF0LAotCQkJCSAgZGVyZWZfcmVmLCByZWN1 cnNlICsgMSwgcHJldHR5KTsKKwkJc2NtX3NjbXZhbF9wcmludCAoc2NtX2dl dF9maWVsZCAoZWxlbWVudHMsIGkpLCBzdHJlYW0sCisJCQkJICByZWN1cnNl ICsgMSwgb3B0aW9ucyk7CiAJICAgICAgfQogCSAgICBmcHV0c19maWx0ZXJl ZCAoIikiLCBzdHJlYW0pOwogCSAgfQpAQCAtNDAxLDIxICszOTgsMTkgQEAg dGFsb29wOgogaW50CiBzY21fdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJICAgICAgIGludCBlbWJl ZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotCSAgICAgICBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LCBpbnQgZGVyZWZfcmVm LAotCSAgICAgICBpbnQgcmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQg cHJldHR5KQorCSAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg cmVjdXJzZSwKKwkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMpCiB7CiAgIGlmIChpc19zY212YWx1ZV90eXBlICh0 eXBlKSkKICAgICB7CiAgICAgICBMT05HRVNUIHN2YWx1ZSA9IGV4dHJhY3Rf c2lnbmVkX2ludGVnZXIgKHZhbGFkZHIsIFRZUEVfTEVOR1RIICh0eXBlKSk7 CiAKLSAgICAgIGlmIChzY21faW5mZXJpb3JfcHJpbnQgKHN2YWx1ZSwgc3Ry ZWFtLCBmb3JtYXQsCi0JCQkgICAgICBkZXJlZl9yZWYsIHJlY3Vyc2UsIHBy ZXR0eSkgPj0gMCkKKyAgICAgIGlmIChzY21faW5mZXJpb3JfcHJpbnQgKHN2 YWx1ZSwgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zKSA+PSAwKQogCXsKIAl9 CiAgICAgICBlbHNlCiAJewotCSAgc2NtX3NjbXZhbF9wcmludCAoc3ZhbHVl LCBzdHJlYW0sIGZvcm1hdCwKLQkJCSAgICBkZXJlZl9yZWYsIHJlY3Vyc2Us IHByZXR0eSk7CisJICBzY21fc2NtdmFsX3ByaW50IChzdmFsdWUsIHN0cmVh bSwgcmVjdXJzZSwgb3B0aW9ucyk7CiAJfQogCiAgICAgICBnZGJfZmx1c2gg KHN0cmVhbSk7CkBAIC00MjMsMTUgKzQxOCwxNSBAQCBzY21fdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgcmV0dXJuIGNfdmFsX3By aW50ICh0eXBlLCB2YWxhZGRyLCAwLCBhZGRyZXNzLCBzdHJlYW0sIGZvcm1h dCwKLQkJCSAgZGVyZWZfcmVmLCByZWN1cnNlLCBwcmV0dHkpOworICAgICAg cmV0dXJuIGNfdmFsX3ByaW50ICh0eXBlLCB2YWxhZGRyLCAwLCBhZGRyZXNz LCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwogICAgIH0KIH0KIAogaW50 Ci1zY21fdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LAotCQkgZW51bSB2YWxfcHJl dHR5cHJpbnQgcHJldHR5KQorc2NtX3ZhbHVlX3ByaW50IChzdHJ1Y3QgdmFs dWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKwkJIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewotICByZXR1 cm4gKGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBmb3JtYXQsIDEs IDAsIHByZXR0eSwKLQkJCSAgICBjdXJyZW50X2xhbmd1YWdlKSk7CisgIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHMgPSAqb3B0aW9uczsKKyAg b3B0cy5kZXJlZl9yZWYgPSAxOworICByZXR1cm4gKGNvbW1vbl92YWxfcHJp bnQgKHZhbCwgc3RyZWFtLCAwLCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSkp OwogfQpkaWZmIC0tZ2l0IGEvZ2RiL3NoNjQtdGRlcC5jIGIvZ2RiL3NoNjQt dGRlcC5jCmluZGV4IDQ3NGQ0OWEuLjk4OGU4Y2IgMTAwNjQ0Ci0tLSBhL2dk Yi9zaDY0LXRkZXAuYworKysgYi9nZGIvc2g2NC10ZGVwLmMKQEAgLTQwLDYg KzQwLDcgQEAKICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCiAjaW5jbHVkZSAi cmVnY2FjaGUuaCIKICNpbmNsdWRlICJvc2FiaS5oIgorI2luY2x1ZGUgInZh bHByaW50LmgiCiAKICNpbmNsdWRlICJlbGYtYmZkLmgiCiAKQEAgLTIwOTIs NiArMjA5Myw3IEBAIHNoNjRfZG9fcmVnaXN0ZXIgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwKIAkJICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsIGludCByZWdudW0pCiB7CiAgIHVuc2lnbmVk IGNoYXIgcmF3X2J1ZmZlcltNQVhfUkVHSVNURVJfU0laRV07CisgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKICAgZnB1dHNfZmlsdGVy ZWQgKGdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgcmVnbnVtKSwg ZmlsZSk7CiAgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMTUgLSBzdHJsZW4g KGdkYmFyY2hfcmVnaXN0ZXJfbmFtZQpAQCAtMjEwMCwxMiArMjEwMiwxNiBA QCBzaDY0X2RvX3JlZ2lzdGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IHVpX2ZpbGUgKmZpbGUsCiAgIC8qIEdldCB0aGUgZGF0YSBpbiBy YXcgZm9ybWF0LiAgKi8KICAgaWYgKCFmcmFtZV9yZWdpc3Rlcl9yZWFkIChm cmFtZSwgcmVnbnVtLCByYXdfYnVmZmVyKSkKICAgICBmcHJpbnRmX2ZpbHRl cmVkIChmaWxlLCAiKnZhbHVlIG5vdCBhdmFpbGFibGUqXG4iKTsKLSAgICAg IAorCisgIGdldF9mb3JtYXR0ZWRfcHJpbnRfb3B0aW9ucyAoJm9wdHMsICd4 Jyk7CisgIG9wdHMuZGVyZWZfcmVmID0gMTsKICAgdmFsX3ByaW50IChyZWdp c3Rlcl90eXBlIChnZGJhcmNoLCByZWdudW0pLCByYXdfYnVmZmVyLCAwLCAw LAotCSAgICAgZmlsZSwgJ3gnLCAxLCAwLCBWYWxfcHJldHR5X2RlZmF1bHQs IGN1cnJlbnRfbGFuZ3VhZ2UpOworCSAgICAgZmlsZSwgMCwgJm9wdHMsIGN1 cnJlbnRfbGFuZ3VhZ2UpOwogICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCAi XHQiKTsKKyAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywg MCk7CisgIG9wdHMuZGVyZWZfcmVmID0gMTsKICAgdmFsX3ByaW50IChyZWdp c3Rlcl90eXBlIChnZGJhcmNoLCByZWdudW0pLCByYXdfYnVmZmVyLCAwLCAw LAotCSAgICAgZmlsZSwgMCwgMSwgMCwgVmFsX3ByZXR0eV9kZWZhdWx0LCBj dXJyZW50X2xhbmd1YWdlKTsKKwkgICAgIGZpbGUsIDAsICZvcHRzLCBjdXJy ZW50X2xhbmd1YWdlKTsKICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgIlxu Iik7CiB9CiAKZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNr LmMKaW5kZXggMmMzYzBiYi4uM2MxMDE5YiAxMDA2NDQKLS0tIGEvZ2RiL3N0 YWNrLmMKKysrIGIvZ2RiL3N0YWNrLmMKQEAgLTM2OCw2ICszNjgsNyBAQCBw cmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsCiAJICAgICAgaWYgKHZhbCkKIAkgICAgICAg IHsKICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9k ZWZuICpsYW5ndWFnZTsKKwkJICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyBvcHRzOwogCiAgICAgICAgICAgICAgICAgICAvKiBVc2UgdGhlIGFwcHJv cHJpYXRlIGxhbmd1YWdlIHRvIGRpc3BsYXkgb3VyIHN5bWJvbCwKICAgICAg ICAgICAgICAgICAgICAgIHVubGVzcyB0aGUgdXNlciBmb3JjZWQgdGhlIGxh bmd1YWdlIHRvIGEgc3BlY2lmaWMKQEAgLTM3Nyw4ICszNzgsMTAgQEAgcHJp bnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAqZnVuYywgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAogICAgICAgICAgICAgICAgICAgZWxzZQogICAg ICAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IGN1cnJlbnRfbGFuZ3VhZ2U7 CiAKLQkJICBjb21tb25fdmFsX3ByaW50ICh2YWwsIHN0Yi0+c3RyZWFtLCAw LCAwLCAyLAotCQkJCSAgICBWYWxfbm9fcHJldHR5cHJpbnQsIGxhbmd1YWdl KTsKKwkJICBnZXRfcmF3X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKwkJICBv cHRzLmRlcmVmX3JlZiA9IDA7CisJCSAgY29tbW9uX3ZhbF9wcmludCAodmFs LCBzdGItPnN0cmVhbSwgMiwKKwkJCQkgICAgJm9wdHMsIGxhbmd1YWdlKTsK IAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3Ri KTsKIAkgICAgICAgIH0KIAkgICAgICBlbHNlCkBAIC01NDcsNiArNTUwLDgg QEAgcHJpbnRfZnJhbWVfaW5mbyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LCBpbnQgcHJpbnRfbGV2ZWwsCiAJCQkJCQkgICAgICBzYWwubGluZSArIDEs IDApOwogCSAgZWxzZQogCSAgICB7CisJICAgICAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0czsKKwkgICAgICBnZXRfdXNlcl9wcmludF9vcHRp b25zICgmb3B0cyk7CiAJICAgICAgLyogV2UgdXNlZCB0byBkbyB0aGlzIGVh cmxpZXIsIGJ1dCB0aGF0IGlzIGNsZWFybHkKIAkJIHdyb25nLiBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgYnkgbWFueSBkaWZmZXJlbnQKIAkJIHBhcnRzIG9m IGdkYiwgaW5jbHVkaW5nIG5vcm1hbF9zdG9wIGluIGluZnJ1bi5jLApAQCAt NTU1LDcgKzU2MCw3IEBAIHByaW50X2ZyYW1lX2luZm8gKHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogCQkgbGluZS4gT25s eSB0aGUgY29tbWFuZCBsaW5lIHJlYWxseSB3YW50cyB0aGlzCiAJCSBiZWhh dmlvci4gT3RoZXIgVUlzIHByb2JhYmx5IHdvdWxkIGxpa2UgdGhlCiAJCSBh YmlsaXR5IHRvIGRlY2lkZSBmb3IgdGhlbXNlbHZlcyBpZiBpdCBpcyBkZXNp cmVkLiAgKi8KLQkgICAgICBpZiAoYWRkcmVzc3ByaW50ICYmIG1pZF9zdGF0 ZW1lbnQpCisJICAgICAgaWYgKG9wdHMuYWRkcmVzc3ByaW50ICYmIG1pZF9z dGF0ZW1lbnQpCiAJCXsKIAkJICB1aV9vdXRfZmllbGRfY29yZV9hZGRyICh1 aW91dCwgImFkZHIiLCBnZXRfZnJhbWVfcGMgKGZyYW1lKSk7CiAJCSAgdWlf b3V0X3RleHQgKHVpb3V0LCAiXHQiKTsKQEAgLTU4NCw2ICs1ODksNyBAQCBw cmludF9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJp bnRfbGV2ZWwsCiAgIGVudW0gbGFuZ3VhZ2UgZnVubGFuZyA9IGxhbmd1YWdl X3Vua25vd247CiAgIHN0cnVjdCB1aV9zdHJlYW0gKnN0YjsKICAgc3RydWN0 IGNsZWFudXAgKm9sZF9jaGFpbiwgKmxpc3RfY2hhaW47CisgIHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKICAgc3RiID0gdWlfb3V0X3N0 cmVhbV9uZXcgKHVpb3V0KTsKICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF9zdHJlYW1fZGVsZXRlIChzdGIpOwpAQCAtNjY1LDcgKzY3MSw4 IEBAIHByaW50X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGlu dCBwcmludF9sZXZlbCwKICAgICAgIHVpX291dF9maWVsZF9mbXRfaW50ICh1 aW91dCwgMiwgdWlfbGVmdCwgImxldmVsIiwKIAkJCSAgICBmcmFtZV9yZWxh dGl2ZV9sZXZlbCAoZnJhbWUpKTsKICAgICB9Ci0gIGlmIChhZGRyZXNzcHJp bnQpCisgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKyAgaWYg KG9wdHMuYWRkcmVzc3ByaW50KQogICAgIGlmIChnZXRfZnJhbWVfcGMgKGZy YW1lKSAhPSBzYWwucGMgfHwgIXNhbC5zeW10YWIKIAl8fCBwcmludF93aGF0 ID09IExPQ19BTkRfQUREUkVTUykKICAgICAgIHsKQEAgLTE0MDUsMTAgKzE0 MTIsMTIgQEAgcHJpbnRfYmxvY2tfZnJhbWVfbGFiZWxzIChzdHJ1Y3QgYmxv Y2sgKmIsIGludCAqaGF2ZV9kZWZhdWx0LAogICAgICAgaWYgKFNZTUJPTF9D TEFTUyAoc3ltKSA9PSBMT0NfTEFCRUwpCiAJewogCSAgc3RydWN0IHN5bXRh Yl9hbmRfbGluZSBzYWw7CisJICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyBvcHRzOwogCSAgc2FsID0gZmluZF9wY19saW5lIChTWU1CT0xfVkFMVUVf QUREUkVTUyAoc3ltKSwgMCk7CiAJICB2YWx1ZXNfcHJpbnRlZCA9IDE7CiAJ ICBmcHV0c19maWx0ZXJlZCAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN0 cmVhbSk7Ci0JICBpZiAoYWRkcmVzc3ByaW50KQorCSAgZ2V0X3VzZXJfcHJp bnRfb3B0aW9ucyAoJm9wdHMpOworCSAgaWYgKG9wdHMuYWRkcmVzc3ByaW50 KQogCSAgICB7CiAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi ICIpOwogCSAgICAgIGZwdXRzX2ZpbHRlcmVkIChwYWRkcmVzcyAoU1lNQk9M X1ZBTFVFX0FERFJFU1MgKHN5bSkpLCBzdHJlYW0pOwpkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leHBycy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2V4cHJzLmV4cAppbmRleCA0ODRiNWE0Li5mMTJhMjM0 IDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4cHJzLmV4 cAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4cHJzLmV4cApAQCAt MjUyLDMgKzI1MiwxMCBAQCBnZGJfdGVzdCAicHJpbnQgKHZvaWQqKSAofigo bG9uZyBsb25nKSh1bnNpZ25lZCBsb25nKSAtMSkgLSAxKSIgXAogIyBTdHJp bmcgY29uY2F0ZW50YXRpb24uCiB0ZXN0X2V4cHIgInByaW50IFwieFwiIFwi eVwiIiAiXFwkXFswLTlcXSogPSBcInh5XCIiCiB0ZXN0X2V4cHIgInByaW50 IFwieFwiIFwieVwiIFwielwiIiAiXFwkXFswLTlcXSogPSBcInh5elwiIgor CisjIEVudW0gZm9ybWF0dGluZyB0ZXN0cy4KK3Rlc3RfZXhwciAicHJpbnQg cmVkIiAiXFwkXFswLTlcXSogPSByZWQiCitnZGJfdGVzdCAic2V0IG91dHB1 dC1yYWRpeCA4IiAiIgordGVzdF9leHByICJwcmludCByZWQiICJcXCRcWzAt OVxdKiA9IHJlZCIKK3Rlc3RfZXhwciAicHJpbnQvZCByZWQiICJcXCRcWzAt OVxdKiA9IDAiCitnZGJfdGVzdCAic2V0IG91dHB1dC1yYWRpeCAxMCIgIiIK ZGlmZiAtLWdpdCBhL2dkYi90cmFjZXBvaW50LmMgYi9nZGIvdHJhY2Vwb2lu dC5jCmluZGV4IDRmNWM1NmEuLjQ2NDZhYjEgMTAwNjQ0Ci0tLSBhL2dkYi90 cmFjZXBvaW50LmMKKysrIGIvZ2RiL3RyYWNlcG9pbnQuYwpAQCAtMzgsNiAr MzgsNyBAQAogI2luY2x1ZGUgImRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJv YnNlcnZlci5oIgogI2luY2x1ZGUgInVzZXItcmVncy5oIgorI2luY2x1ZGUg InZhbHByaW50LmgiCiAKICNpbmNsdWRlICJheC5oIgogI2luY2x1ZGUgImF4 LWdkYi5oIgpAQCAtNjcsNyArNjgsNiBAQAogZXh0ZXJuIHZvaWQgKCpkZXBy ZWNhdGVkX3JlYWRsaW5lX2JlZ2luX2hvb2spIChjaGFyICosIC4uLik7CiBl eHRlcm4gY2hhciAqKCpkZXByZWNhdGVkX3JlYWRsaW5lX2hvb2spIChjaGFy ICopOwogZXh0ZXJuIHZvaWQgKCpkZXByZWNhdGVkX3JlYWRsaW5lX2VuZF9o b29rKSAodm9pZCk7Ci1leHRlcm4gaW50IGFkZHJlc3NwcmludDsJLyogUHJp bnQgbWFjaGluZSBhZGRyZXNzZXM/ICovCiAKIC8qIEdEQiBjb21tYW5kcyBp bXBsZW1lbnRlZCBpbiBvdGhlciBtb2R1bGVzOgogICovICAKQEAgLTQzNCw5 ICs0MzQsMTEgQEAgdHJhY2VfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCiBzdGF0aWMgdm9pZAogdHJhY2VfbWVudGlvbiAoc3RydWN0IHRy YWNlcG9pbnQgKnRwKQogeworICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyBvcHRzOwogICBwcmludGZfZmlsdGVyZWQgKCJUcmFjZXBvaW50ICVkIiwg dHAtPm51bWJlcik7CiAKLSAgaWYgKGFkZHJlc3NwcmludCB8fCAodHAtPnNv dXJjZV9maWxlID09IE5VTEwpKQorICBnZXRfdXNlcl9wcmludF9vcHRpb25z ICgmb3B0cyk7CisgIGlmIChvcHRzLmFkZHJlc3NwcmludCB8fCAodHAtPnNv dXJjZV9maWxlID09IE5VTEwpKQogICAgIHsKICAgICAgIHByaW50Zl9maWx0 ZXJlZCAoIiBhdCAiKTsKICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIiVzIiwg cGFkZHJlc3MgKHRwLT5hZGRyZXNzKSk7CkBAIC00NjcsMTIgKzQ2OSwxMiBA QCB0cmFjZXBvaW50c19pbmZvIChjaGFyICp0cG51bV9leHAsIGludCBmcm9t X3R0eSkKICAgQUxMX1RSQUNFUE9JTlRTICh0KQogICAgIGlmICh0cG51bSA9 PSAtMSB8fCB0cG51bSA9PSB0LT5udW1iZXIpCiAgICAgewotICAgICAgZXh0 ZXJuIGludCBhZGRyZXNzcHJpbnQ7CS8qIFByaW50IG1hY2hpbmUgYWRkcmVz c2VzPyAgKi8KLQorICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg b3B0czsKKyAgICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsK ICAgICAgIGlmICghZm91bmRfYV90cmFjZXBvaW50KyspCiAJewogCSAgcHJp bnRmX2ZpbHRlcmVkICgiTnVtIEVuYiAiKTsKLQkgIGlmIChhZGRyZXNzcHJp bnQpCisJICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCiAJICAgIHsKIAkgICAg ICBpZiAoZ2RiYXJjaF9hZGRyX2JpdCAoY3VycmVudF9nZGJhcmNoKSA8PSAz MikKIAkJcHJpbnRmX2ZpbHRlcmVkICgiQWRkcmVzcyAgICAiKTsKQEAgLTQ4 Miw3ICs0ODQsNyBAQCB0cmFjZXBvaW50c19pbmZvIChjaGFyICp0cG51bV9l eHAsIGludCBmcm9tX3R0eSkKIAkgIHByaW50Zl9maWx0ZXJlZCAoIlBhc3ND IFN0ZXBDIFdoYXRcbiIpOwogCX0KICAgICAgIHN0cmNweSAod3JhcF9pbmRl bnQsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTsKLSAgICAgIGlm IChhZGRyZXNzcHJpbnQpCisgICAgICBpZiAob3B0cy5hZGRyZXNzcHJpbnQp CiAJewogCSAgaWYgKGdkYmFyY2hfYWRkcl9iaXQgKGN1cnJlbnRfZ2RiYXJj aCkgPD0gMzIpCiAJICAgIHN0cmNhdCAod3JhcF9pbmRlbnQsICIgICAgICAg ICAgICIpOwpAQCAtNDkyLDcgKzQ5NCw3IEBAIHRyYWNlcG9pbnRzX2luZm8g KGNoYXIgKnRwbnVtX2V4cCwgaW50IGZyb21fdHR5KQogCiAgICAgICBwcmlu dGZfZmlsdGVyZWQgKCIlLTNkICUtM3MgIiwgdC0+bnVtYmVyLAogCQkgICAg ICAgdC0+ZW5hYmxlZF9wID8gInkiIDogIm4iKTsKLSAgICAgIGlmIChhZGRy ZXNzcHJpbnQpCisgICAgICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCiAJewog CSAgY2hhciAqdG1wOwogCmRpZmYgLS1naXQgYS9nZGIvdHVpL3R1aS1yZWdz LmMgYi9nZGIvdHVpL3R1aS1yZWdzLmMKaW5kZXggMzk1ODBlNi4uYjI0Mjhl ZiAxMDA2NDQKLS0tIGEvZ2RiL3R1aS90dWktcmVncy5jCisrKyBiL2dkYi90 dWkvdHVpLXJlZ3MuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInR1 aS90dWktd2luZ2VuZXJhbC5oIgogI2luY2x1ZGUgInR1aS90dWktZmlsZS5o IgogI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgorI2luY2x1ZGUgInZhbHByaW50 LmgiCiAKICNpbmNsdWRlICJnZGJfY3Vyc2VzLmgiCiAKQEAgLTY4OSwxMSAr NjkwLDEzIEBAIHR1aV9yZWdpc3Rlcl9mb3JtYXQgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAogICAgIHsKICAgICAgIGdkYl9ieXRlIGJ1ZltNQVhfUkVH SVNURVJfU0laRV07CiAgICAgICBpbnQgbGVuOworICAgICAgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgb3B0czsKIAogICAgICAgbGVuID0gcmVnaXN0 ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCByZWdudW0pOwogICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJS0xNHMgIiwgbmFtZSk7CiAgICAg ICBnZXRfZnJhbWVfcmVnaXN0ZXIgKGZyYW1lLCByZWdudW0sIGJ1Zik7Ci0g ICAgICBwcmludF9zY2FsYXJfZm9ybWF0dGVkIChidWYsIHR5cGUsICdmJywg bGVuLCBzdHJlYW0pOworICAgICAgZ2V0X2Zvcm1hdHRlZF9wcmludF9vcHRp b25zICgmb3B0cywgJ2YnKTsKKyAgICAgIHByaW50X3NjYWxhcl9mb3JtYXR0 ZWQgKGJ1ZiwgdHlwZSwgJm9wdHMsIGxlbiwgc3RyZWFtKTsKICAgICB9CiAg IGVsc2UKICAgICB7CmRpZmYgLS1naXQgYS9nZGIvdHlwZXByaW50LmMgYi9n ZGIvdHlwZXByaW50LmMKaW5kZXggNDRmMWE3Ny4uZWRmODdjZCAxMDA2NDQK LS0tIGEvZ2RiL3R5cGVwcmludC5jCisrKyBiL2dkYi90eXBlcHJpbnQuYwpA QCAtMzMsMTIgKzMzLDkgQEAKICNpbmNsdWRlICJjcC1hYmkuaCIKICNpbmNs dWRlICJ0eXBlcHJpbnQuaCIKICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisj aW5jbHVkZSAidmFscHJpbnQuaCIKICNpbmNsdWRlIDxlcnJuby5oPgogCi0v KiBGb3IgcmVhbC10eXBlIHByaW50aW5nIGluIHdoYXRpc19leHAoKSAqLwot ZXh0ZXJuIGludCBvYmplY3RwcmludDsJCS8qIENvbnRyb2xzIGxvb2tpbmcg dXAgYW4gb2JqZWN0J3MgZGVyaXZlZCB0eXBlCi0JCQkJICAgdXNpbmcgd2hh dCB3ZSBmaW5kIGluIGl0cyB2dGFibGVzLiAgKi8KLQogZXh0ZXJuIHZvaWQg X2luaXRpYWxpemVfdHlwZXByaW50ICh2b2lkKTsKIAogc3RhdGljIHZvaWQg cHR5cGVfY29tbWFuZCAoY2hhciAqLCBpbnQpOwpAQCAtOTUsNiArOTIsNyBA QCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQogICBpbnQgZnVs bCA9IDA7CiAgIGludCB0b3AgPSAtMTsKICAgaW50IHVzaW5nX2VuYyA9IDA7 CisgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAKICAgaWYg KGV4cCkKICAgICB7CkBAIC0xMDcsNyArMTA1LDggQEAgd2hhdGlzX2V4cCAo Y2hhciAqZXhwLCBpbnQgc2hvdykKIAogICB0eXBlID0gdmFsdWVfdHlwZSAo dmFsKTsKIAotICBpZiAob2JqZWN0cHJpbnQpCisgIGdldF91c2VyX3ByaW50 X29wdGlvbnMgKCZvcHRzKTsKKyAgaWYgKG9wdHMub2JqZWN0cHJpbnQpCiAg ICAgewogICAgICAgaWYgKCgoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfUFRSKQogCSAgIHx8IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9SRUYpKQpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9nZGIvdmFs cHJpbnQuYwppbmRleCA5OWMzNzZmLi41MDg2YTcwIDEwMDY0NAotLS0gYS9n ZGIvdmFscHJpbnQuYworKysgYi9nZGIvdmFscHJpbnQuYwpAQCAtNjAsMTMg KzYwLDU1IEBAIHN0YXRpYyB2b2lkIHNldF9vdXRwdXRfcmFkaXhfMSAoaW50 LCB1bnNpZ25lZCk7CiAKIHZvaWQgX2luaXRpYWxpemVfdmFscHJpbnQgKHZv aWQpOwogCi0vKiBNYXhpbXVtIG51bWJlciBvZiBjaGFycyB0byBwcmludCBm b3IgYSBzdHJpbmcgcG9pbnRlciB2YWx1ZSBvciB2ZWN0b3IKLSAgIGNvbnRl bnRzLCBvciBVSU5UX01BWCBmb3Igbm8gbGltaXQuICBOb3RlIHRoYXQgInNl dCBwcmludCBlbGVtZW50cyAwIgotICAgc3RvcmVzIFVJTlRfTUFYIGluIHBy aW50X21heCwgd2hpY2ggZGlzcGxheXMgaW4gYSBzaG93IGNvbW1hbmQgYXMK LSAgICJ1bmxpbWl0ZWQiLiAqLwotCi11bnNpZ25lZCBpbnQgcHJpbnRfbWF4 OwogI2RlZmluZSBQUklOVF9NQVhfREVGQVVMVCAyMDAJLyogU3RhcnQgcHJp bnRfbWF4IG9mZiBhdCB0aGlzIHZhbHVlLiAqLworCitzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyB1c2VyX3ByaW50X29wdGlvbnMgPQoreworICBWYWxf cHJldHR5X2RlZmF1bHQsCQkvKiBwcmV0dHkgKi8KKyAgMCwJCQkJLyogcHJl dHR5cHJpbnRfYXJyYXlzICovCisgIDAsCQkJCS8qIHByZXR0eXByaW50X3N0 cnVjdHMgKi8KKyAgMCwJCQkJLyogdnRibHByaW50ICovCisgIDEsCQkJCS8q IHVuaW9ucHJpbnQgKi8KKyAgMSwJCQkJLyogYWRkcmVzc3ByaW50ICovCisg IDAsCQkJCS8qIG9iamVjdHByaW50ICovCisgIFBSSU5UX01BWF9ERUZBVUxU LAkJLyogcHJpbnRfbWF4ICovCisgIDEwLAkJCQkvKiByZXBlYXRfY291bnRf dGhyZXNob2xkICovCisgIDAsCQkJCS8qIG91dHB1dF9mb3JtYXQgKi8KKyAg MCwJCQkJLyogZm9ybWF0ICovCisgIDAsCQkJCS8qIHN0b3BfcHJpbnRfYXRf bnVsbCAqLworICAwLAkJCQkvKiBpbnNwZWN0X2l0ICovCisgIDAsCQkJCS8q IHByaW50X2FycmF5X2luZGV4ZXMgKi8KKyAgMCwJCQkJLyogZGVyZWZfcmVm ICovCisgIDEsCQkJCS8qIHN0YXRpY19maWVsZF9wcmludCAqLworICAxCQkJ CS8qIHBhc2NhbF9zdGF0aWNfZmllbGRfcHJpbnQgKi8KK307CisKKy8qIElu aXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRoZSB1c2VyIHByaW50 IG9wdGlvbnMuICAqLwordm9pZAorZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAo c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdHMpCit7CisgICpvcHRz ID0gdXNlcl9wcmludF9vcHRpb25zOworfQorCisvKiBJbml0aWFsaXplICpP UFRTIHRvIGJlIGEgY29weSBvZiB0aGUgdXNlciBwcmludCBvcHRpb25zLCBi dXQgd2l0aAorICAgcHJldHR5LXByaW50aW5nIGRpc2FibGVkLiAgKi8KK3Zv aWQKK2dldF9yYXdfcHJpbnRfb3B0aW9ucyAoc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdHMpCit7ICAKKyAgKm9wdHMgPSB1c2VyX3ByaW50X29w dGlvbnM7CisgIG9wdHMtPnByZXR0eSA9IFZhbF9ub19wcmV0dHlwcmludDsK K30KKworLyogSW5pdGlhbGl6ZSAqT1BUUyB0byBiZSBhIGNvcHkgb2YgdGhl IHVzZXIgcHJpbnQgb3B0aW9ucywgYnV0IHVzaW5nCisgICBGT1JNQVQgYXMg dGhlIGZvcm1hdHRpbmcgb3B0aW9uLiAgKi8KK3ZvaWQKK2dldF9mb3JtYXR0 ZWRfcHJpbnRfb3B0aW9ucyAoc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdHMsCisJCQkgICAgIGNoYXIgZm9ybWF0KQoreworICAqb3B0cyA9IHVz ZXJfcHJpbnRfb3B0aW9uczsKKyAgb3B0cy0+Zm9ybWF0ID0gZm9ybWF0Owor fQorCiBzdGF0aWMgdm9pZAogc2hvd19wcmludF9tYXggKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAJCXN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTk4LDEyICsxNDAs MTAgQEAgc2hvd19vdXRwdXRfcmFkaXggKHN0cnVjdCB1aV9maWxlICpmaWxl LCBpbnQgZnJvbV90dHksCiBEZWZhdWx0IG91dHB1dCByYWRpeCBmb3IgcHJp bnRpbmcgb2YgdmFsdWVzIGlzICVzLlxuIiksCiAJCSAgICB2YWx1ZSk7CiB9 Ci1pbnQgb3V0cHV0X2Zvcm1hdCA9IDA7CiAKIC8qIEJ5IGRlZmF1bHQgd2Ug cHJpbnQgYXJyYXlzIHdpdGhvdXQgcHJpbnRpbmcgdGhlIGluZGV4IG9mIGVh Y2ggZWxlbWVudCBpbgogICAgdGhlIGFycmF5LiAgVGhpcyBiZWhhdmlvciBj YW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIFBSSU5UX0FSUkFZX0lOREVYRVMu ICAqLwogCi1zdGF0aWMgaW50IHByaW50X2FycmF5X2luZGV4ZXMgPSAwOwog c3RhdGljIHZvaWQKIHNob3dfcHJpbnRfYXJyYXlfaW5kZXhlcyAoc3RydWN0 IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKIAkJICAgICAgICAgIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkK QEAgLTExNSw3ICsxNTUsNiBAQCBzaG93X3ByaW50X2FycmF5X2luZGV4ZXMg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAgICBlbGVt ZW50IGluIGFuIGFycmF5LiAgUmVmZXJlbmNlZCBieSB0aGUgbG93IGxldmVs IGxhbmd1YWdlIGRlcGVuZGVudAogICAgcHJpbnQgcm91dGluZXMuICovCiAK LXVuc2lnbmVkIGludCByZXBlYXRfY291bnRfdGhyZXNob2xkID0gMTA7CiBz dGF0aWMgdm9pZAogc2hvd19yZXBlYXRfY291bnRfdGhyZXNob2xkIChzdHJ1 Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkJICAgICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCkBA IC0xMjYsNyArMTY1LDYgQEAgc2hvd19yZXBlYXRfY291bnRfdGhyZXNob2xk IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCiAvKiBJ ZiBub256ZXJvLCBzdG9wcyBwcmludGluZyBvZiBjaGFyIGFycmF5cyBhdCBm aXJzdCBudWxsLiAqLwogCi1pbnQgc3RvcF9wcmludF9hdF9udWxsOwogc3Rh dGljIHZvaWQKIHNob3dfc3RvcF9wcmludF9hdF9udWxsIChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkJIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTEzOCw3ICsx NzYsNiBAQCBQcmludGluZyBvZiBjaGFyIGFycmF5cyB0byBzdG9wIGF0IGZp cnN0IG51bGwgY2hhciBpcyAlcy5cbiIpLAogCiAvKiBDb250cm9scyBwcmV0 dHkgcHJpbnRpbmcgb2Ygc3RydWN0dXJlcy4gKi8KIAotaW50IHByZXR0eXBy aW50X3N0cnVjdHM7CiBzdGF0aWMgdm9pZAogc2hvd19wcmV0dHlwcmludF9z dHJ1Y3RzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAog CQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAq dmFsdWUpCkBAIC0xNDgsNyArMTg1LDYgQEAgc2hvd19wcmV0dHlwcmludF9z dHJ1Y3RzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAog CiAvKiBDb250cm9scyBwcmV0dHkgcHJpbnRpbmcgb2YgYXJyYXlzLiAgKi8K IAotaW50IHByZXR0eXByaW50X2FycmF5czsKIHN0YXRpYyB2b2lkCiBzaG93 X3ByZXR0eXByaW50X2FycmF5cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKIAkJCSBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywg Y29uc3QgY2hhciAqdmFsdWUpCkBAIC0xNTksNyArMTk1LDYgQEAgc2hvd19w cmV0dHlwcmludF9hcnJheXMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCiAvKiBJZiBub256ZXJvLCBjYXVzZXMgdW5pb25zIGluc2lk ZSBzdHJ1Y3R1cmVzIG9yIG90aGVyIHVuaW9ucyB0byBiZQogICAgcHJpbnRl ZC4gKi8KIAotaW50IHVuaW9ucHJpbnQ7CQkJLyogQ29udHJvbHMgcHJpbnRp bmcgb2YgbmVzdGVkIHVuaW9ucy4gICovCiBzdGF0aWMgdm9pZAogc2hvd191 bmlvbnByaW50IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5 LAogCQkgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIg KnZhbHVlKQpAQCAtMTcxLDcgKzIwNiw2IEBAIFByaW50aW5nIG9mIHVuaW9u cyBpbnRlcmlvciB0byBzdHJ1Y3R1cmVzIGlzICVzLlxuIiksCiAKIC8qIElm IG5vbnplcm8sIGNhdXNlcyBtYWNoaW5lIGFkZHJlc3NlcyB0byBiZSBwcmlu dGVkIGluIGNlcnRhaW4gY29udGV4dHMuICovCiAKLWludCBhZGRyZXNzcHJp bnQ7CQkvKiBDb250cm9scyBwcmludGluZyBvZiBtYWNoaW5lIGFkZHJlc3Nl cyAqLwogc3RhdGljIHZvaWQKIHNob3dfYWRkcmVzc3ByaW50IChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCQkgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCkBAIC0xODIs MTMgKzIxNiw3IEBAIHNob3dfYWRkcmVzc3ByaW50IChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAogCiAvKiBQcmludCB1c2luZyB0aGUg Z2l2ZW4gTEFOR1VBR0UgdGhlIGRhdGEgb2YgdHlwZSBUWVBFIGxvY2F0ZWQg YXQgVkFMQUREUgogICAgKHdpdGhpbiBHREIpLCB3aGljaCBjYW1lIGZyb20g dGhlIGluZmVyaW9yIGF0IGFkZHJlc3MgQUREUkVTUywgb250bwotICAgc3Rk aW8gc3RyZWFtIFNUUkVBTSBhY2NvcmRpbmcgdG8gRk9STUFUIChhIGxldHRl ciwgb3IgMCBmb3IgbmF0dXJhbAotICAgZm9ybWF0IHVzaW5nIFRZUEUpLgot Ci0gICBJZiBERVJFRl9SRUYgaXMgbm9uemVybywgdGhlbiBkZXJlZmVyZW5j ZSByZWZlcmVuY2VzLCBvdGhlcndpc2UganVzdCBwcmludAotICAgdGhlbSBs aWtlIHBvaW50ZXJzLgotCi0gICBUaGUgUFJFVFRZIHBhcmFtZXRlciBjb250 cm9scyBwcmV0dHlwcmludGluZy4KKyAgIHN0ZGlvIHN0cmVhbSBTVFJFQU0g YWNjb3JkaW5nIHRvIE9QVElPTlMuCiAKICAgIElmIHRoZSBkYXRhIGFyZSBh IHN0cmluZyBwb2ludGVyLCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5n IGNoYXJhY3RlcnMKICAgIHByaW50ZWQuCkBAIC0yMDMsMTcgKzIzMSwxOCBA QCBzaG93X2FkZHJlc3NwcmludCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKIAogaW50CiB2YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29m ZnNldCwKLQkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IGZvcm1hdCwKLQkgICBpbnQgZGVyZWZfcmVmLCBpbnQg cmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5LAorCSAgIENP UkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQg cmVjdXJzZSwKKwkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucywKIAkgICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAq bGFuZ3VhZ2UpCiB7CiAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGV4Y2VwdDsKLSAgdm9sYXRpbGUgZW51bSB2YWxfcHJldHR5cHJpbnQgcmVh bF9wcmV0dHkgPSBwcmV0dHk7CiAgIGludCByZXQgPSAwOwotCisgIHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zIGxvY2FsX29wdHMgPSAqb3B0aW9uczsK ICAgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5 cGUpOwotICBpZiAocHJldHR5ID09IFZhbF9wcmV0dHlfZGVmYXVsdCkKLSAg ICByZWFsX3ByZXR0eSA9IHByZXR0eXByaW50X3N0cnVjdHMgPyBWYWxfcHJl dHR5cHJpbnQgOiBWYWxfbm9fcHJldHR5cHJpbnQ7CisKKyAgaWYgKGxvY2Fs X29wdHMucHJldHR5ID09IFZhbF9wcmV0dHlfZGVmYXVsdCkKKyAgICBsb2Nh bF9vcHRzLnByZXR0eSA9IChsb2NhbF9vcHRzLnByZXR0eXByaW50X3N0cnVj dHMKKwkJCSA/IFZhbF9wcmV0dHlwcmludCA6IFZhbF9ub19wcmV0dHlwcmlu dCk7CiAKICAgUVVJVDsKIApAQCAtMjMxLDggKzI2MCw3IEBAIHZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAogICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfRVJST1IpCiAgICAgewogICAgICAgcmV0ID0gbGFuZ3Vh Z2UtPmxhX3ZhbF9wcmludCAodHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zm c2V0LCBhZGRyZXNzLAotCQkJCSAgICBzdHJlYW0sIGZvcm1hdCwgZGVyZWZf cmVmLCByZWN1cnNlLAotCQkJCSAgICByZWFsX3ByZXR0eSk7CisJCQkJICAg IHN0cmVhbSwgcmVjdXJzZSwgJmxvY2FsX29wdHMpOwogICAgIH0KICAgaWYg KGV4Y2VwdC5yZWFzb24gPCAwKQogICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgXygiPGVycm9yIHJlYWRpbmcgdmFyaWFibGU+IikpOwpAQCAtMjYz LDEyICsyOTEsNyBAQCB2YWx1ZV9jaGVja19wcmludGFibGUgKHN0cnVjdCB2 YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogfQogCiAvKiBQ cmludCB1c2luZyB0aGUgZ2l2ZW4gTEFOR1VBR0UgdGhlIHZhbHVlIFZBTCBv bnRvIHN0cmVhbSBTVFJFQU0gYWNjb3JkaW5nCi0gICB0byBGT1JNQVQgKGEg bGV0dGVyLCBvciAwIGZvciBuYXR1cmFsIGZvcm1hdCB1c2luZyBUWVBFKS4K LQotICAgSWYgREVSRUZfUkVGIGlzIG5vbnplcm8sIHRoZW4gZGVyZWZlcmVu Y2UgcmVmZXJlbmNlcywgb3RoZXJ3aXNlIGp1c3QgcHJpbnQKLSAgIHRoZW0g bGlrZSBwb2ludGVycy4KLQotICAgVGhlIFBSRVRUWSBwYXJhbWV0ZXIgY29u dHJvbHMgcHJldHR5cHJpbnRpbmcuCisgICB0byBPUFRJT05TLgogCiAgICBJ ZiB0aGUgZGF0YSBhcmUgYSBzdHJpbmcgcG9pbnRlciwgcmV0dXJucyB0aGUg bnVtYmVyIG9mIHN0cmluZyBjaGFyYWN0ZXJzCiAgICBwcmludGVkLgpAQCAt Mjc3LDggKzMwMCw4IEBAIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3RydWN0 IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgICBHREIn cyB2YWx1ZSBtZWNoYW5pc20uICAqLwogCiBpbnQKLWNvbW1vbl92YWxfcHJp bnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgZm9ybWF0LAotCQkgIGludCBkZXJlZl9yZWYsIGludCByZWN1cnNl LCBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHksCitjb21tb25fdmFsX3By aW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwgaW50IHJlY3Vyc2UsCisJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdGlvbnMsCiAJCSAgY29uc3Qgc3RydWN0IGxhbmd1YWdl X2RlZm4gKmxhbmd1YWdlKQogewogICBpZiAoIXZhbHVlX2NoZWNrX3ByaW50 YWJsZSAodmFsLCBzdHJlYW0pKQpAQCAtMjg2LDIzICszMDksMjIgQEAgY29t bW9uX3ZhbF9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sIGludCBmb3JtYXQsCiAKICAgcmV0dXJuIHZhbF9wcmlu dCAodmFsdWVfdHlwZSAodmFsKSwgdmFsdWVfY29udGVudHNfYWxsICh2YWwp LAogCQkgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLCBWQUxVRV9B RERSRVNTICh2YWwpLAotCQkgICAgc3RyZWFtLCBmb3JtYXQsIGRlcmVmX3Jl ZiwgcmVjdXJzZSwgcHJldHR5LAotCQkgICAgbGFuZ3VhZ2UpOworCQkgICAg c3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBsYW5ndWFnZSk7CiB9CiAKLS8q IFByaW50IHRoZSB2YWx1ZSBWQUwgaW4gQy1pc2ggc3ludGF4IG9uIHN0cmVh bSBTVFJFQU0uCi0gICBGT1JNQVQgaXMgYSBmb3JtYXQtbGV0dGVyLCBvciAw IGZvciBwcmludCBpbiBuYXR1cmFsIGZvcm1hdCBvZiBkYXRhIHR5cGUuCisv KiBQcmludCB0aGUgdmFsdWUgVkFMIGluIEMtaXNoIHN5bnRheCBvbiBzdHJl YW0gU1RSRUFNIGFjY29yZGluZyB0bworICAgT1BUSU9OUy4KICAgIElmIHRo ZSBvYmplY3QgcHJpbnRlZCBpcyBhIHN0cmluZyBwb2ludGVyLCByZXR1cm5z CiAgICB0aGUgbnVtYmVyIG9mIHN0cmluZyBieXRlcyBwcmludGVkLiAgKi8K IAogaW50Ci12YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGludCBmb3JtYXQsCi0JICAgICBlbnVtIHZh bF9wcmV0dHlwcmludCBwcmV0dHkpCit2YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisJICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAg aWYgKCF2YWx1ZV9jaGVja19wcmludGFibGUgKHZhbCwgc3RyZWFtKSkKICAg ICByZXR1cm4gMDsKIAotICByZXR1cm4gTEFfVkFMVUVfUFJJTlQgKHZhbCwg c3RyZWFtLCBmb3JtYXQsIHByZXR0eSk7CisgIHJldHVybiBMQV9WQUxVRV9Q UklOVCAodmFsLCBzdHJlYW0sIG9wdGlvbnMpOwogfQogCiAvKiBDYWxsZWQg YnkgdmFyaW91cyA8bGFuZz5fdmFsX3ByaW50IHJvdXRpbmVzIHRvIHByaW50 CkBAIC05MjgsMTUgKzk1MCw2IEBAIHByaW50X2NoYXJfY2hhcnMgKHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog ICAgIH0KIH0KIAotLyogUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBkZWJ1Z2dl ciBzaG91bGQgcHJpbnQgdGhlIGluZGV4IG9mIGVhY2ggZWxlbWVudAotICAg d2hlbiBwcmludGluZyBhcnJheSB2YWx1ZXMuICAqLwotCi1pbnQKLXByaW50 X2FycmF5X2luZGV4ZXNfcCAodm9pZCkKLXsgICAgICAgICAgICAgIAotICBy ZXR1cm4gcHJpbnRfYXJyYXlfaW5kZXhlczsKLX0gCi0KIC8qIEFzc3VtaW5n IFRZUEUgaXMgYSBzaW1wbGUsIG5vbi1lbXB0eSBhcnJheSB0eXBlLCBjb21w dXRlIGl0cyB1cHBlcgogICAgYW5kIGxvd2VyIGJvdW5kLiAgU2F2ZSB0aGUg bG93IGJvdW5kIGludG8gTE9XX0JPVU5EIGlmIG5vdCBOVUxMLgogICAgU2F2 ZSB0aGUgaGlnaCBib3VuZCBpbnRvIEhJR0hfQk9VTkQgaWYgbm90IE5VTEwu CkBAIC05OTIsMjMgKzEwMDUsMjMgQEAgZ2V0X2FycmF5X2JvdW5kcyAoc3Ry dWN0IHR5cGUgKnR5cGUsIGxvbmcgKmxvd19ib3VuZCwgbG9uZyAqaGlnaF9i b3VuZCkKICAgcmV0dXJuIDE7CiB9CiAKLS8qIFByaW50IG9uIFNUUkVBTSB1 c2luZyB0aGUgZ2l2ZW4gRk9STUFUIHRoZSBpbmRleCBmb3IgdGhlIGVsZW1l bnQKKy8qIFByaW50IG9uIFNUUkVBTSB1c2luZyB0aGUgZ2l2ZW4gT1BUSU9O UyB0aGUgaW5kZXggZm9yIHRoZSBlbGVtZW50CiAgICBhdCBJTkRFWCBvZiBh biBhcnJheSB3aG9zZSBpbmRleCB0eXBlIGlzIElOREVYX1RZUEUuICAqLwog ICAgIAogdm9pZCAgCiBtYXliZV9wcmludF9hcnJheV9pbmRleCAoc3RydWN0 IHR5cGUgKmluZGV4X3R5cGUsIExPTkdFU1QgaW5kZXgsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZv cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHZhbF9wcmV0 dHlwcmludCBwcmV0dHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwKKwkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKIHsKICAgc3RydWN0IHZhbHVlICpp bmRleF92YWx1ZTsKIAotICBpZiAoIXByaW50X2FycmF5X2luZGV4ZXMpCisg IGlmICghb3B0aW9ucy0+cHJpbnRfYXJyYXlfaW5kZXhlcykKICAgICByZXR1 cm47IAogICAgIAogICBpbmRleF92YWx1ZSA9IHZhbHVlX2Zyb21fbG9uZ2Vz dCAoaW5kZXhfdHlwZSwgaW5kZXgpOwogCi0gIExBX1BSSU5UX0FSUkFZX0lO REVYIChpbmRleF92YWx1ZSwgc3RyZWFtLCBmb3JtYXQsIHByZXR0eSk7Ci19 ICAgCisgIExBX1BSSU5UX0FSUkFZX0lOREVYIChpbmRleF92YWx1ZSwgc3Ry ZWFtLCBvcHRpb25zKTsKK30KIAogLyogIENhbGxlZCBieSB2YXJpb3VzIDxs YW5nPl92YWxfcHJpbnQgcm91dGluZXMgdG8gcHJpbnQgZWxlbWVudHMgb2Yg YW4KICAgIGFycmF5IGluIHRoZSBmb3JtICI8ZWxlbTE+LCA8ZWxlbTI+LCA8 ZWxlbTM+LCAuLi4iLgpAQCAtMTAyMiw4ICsxMDM1LDggQEAgbWF5YmVfcHJp bnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbmRleF90eXBlLCBMT05H RVNUIGluZGV4LAogdm9pZAogdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJ CQkgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LAotCQkJICBpbnQgZm9ybWF0LCBpbnQgZGVyZWZfcmVmLAotCQkJICBpbnQg cmVjdXJzZSwgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5LAorCQkJICBp bnQgcmVjdXJzZSwKKwkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMsCiAJCQkgIHVuc2lnbmVkIGludCBpKQogewogICB1 bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwpAQCAtMTA3MCwxMSAr MTA4MywxMSBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKIAogICBhbm5v dGF0ZV9hcnJheV9zZWN0aW9uX2JlZ2luIChpLCBlbHR0eXBlKTsKIAotICBm b3IgKDsgaSA8IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IHByaW50X21heDsg aSsrKQorICBmb3IgKDsgaSA8IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IG9w dGlvbnMtPnByaW50X21heDsgaSsrKQogICAgIHsKICAgICAgIGlmIChpICE9 IDApCiAJewotCSAgaWYgKHByZXR0eXByaW50X2FycmF5cykKKwkgIGlmIChv cHRpb25zLT5wcmV0dHlwcmludF9hcnJheXMpCiAJICAgIHsKIAkgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsXG4iKTsKIAkgICAgICBwcmlu dF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsK QEAgLTEwODYsNyArMTA5OSw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50 cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAogCX0KICAgICAgIHdyYXBfaGVyZSAobl9zcGFjZXMgKDIgKyAyICogcmVj dXJzZSkpOwogICAgICAgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKGluZGV4 X3R5cGUsIGkgKyBsb3dfYm91bmRfaW5kZXgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyZWFtLCBmb3JtYXQsIHByZXR0eSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLCBvcHRpb25zKTsK IAogICAgICAgcmVwMSA9IGkgKyAxOwogICAgICAgcmVwcyA9IDE7CkBAIC0x MDk3LDIxICsxMTEwLDIxIEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAog CSAgKytyZXAxOwogCX0KIAotICAgICAgaWYgKHJlcHMgPiByZXBlYXRfY291 bnRfdGhyZXNob2xkKQorICAgICAgaWYgKHJlcHMgPiBvcHRpb25zLT5yZXBl YXRfY291bnRfdGhyZXNob2xkKQogCXsKLQkgIHZhbF9wcmludCAoZWx0dHlw ZSwgdmFsYWRkciArIGkgKiBlbHRsZW4sIDAsIDAsIHN0cmVhbSwgZm9ybWF0 LAotCQkgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSwgY3Vy cmVudF9sYW5ndWFnZSk7CisJICB2YWxfcHJpbnQgKGVsdHR5cGUsIHZhbGFk ZHIgKyBpICogZWx0bGVuLCAwLCAwLCBzdHJlYW0sCisJCSAgICAgcmVjdXJz ZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCSAgYW5ub3Rh dGVfZWx0X3JlcCAocmVwcyk7CiAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIgPHJlcGVhdHMgJXUgdGltZXM+IiwgcmVwcyk7CiAJICBhbm5vdGF0 ZV9lbHRfcmVwX2VuZCAoKTsKIAogCSAgaSA9IHJlcDEgLSAxOwotCSAgdGhp bmdzX3ByaW50ZWQgKz0gcmVwZWF0X2NvdW50X3RocmVzaG9sZDsKKwkgIHRo aW5nc19wcmludGVkICs9IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hv bGQ7CiAJfQogICAgICAgZWxzZQogCXsKLQkgIHZhbF9wcmludCAoZWx0dHlw ZSwgdmFsYWRkciArIGkgKiBlbHRsZW4sIDAsIDAsIHN0cmVhbSwgZm9ybWF0 LAotCQkgICAgIGRlcmVmX3JlZiwgcmVjdXJzZSArIDEsIHByZXR0eSwgY3Vy cmVudF9sYW5ndWFnZSk7CisJICB2YWxfcHJpbnQgKGVsdHR5cGUsIHZhbGFk ZHIgKyBpICogZWx0bGVuLCAwLCAwLCBzdHJlYW0sCisJCSAgICAgcmVjdXJz ZSArIDEsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwogCSAgYW5ub3Rh dGVfZWx0ICgpOwogCSAgdGhpbmdzX3ByaW50ZWQrKzsKIAl9CkBAIC0xMTcz LDcgKzExODYsOCBAQCBwYXJ0aWFsX21lbW9yeV9yZWFkIChDT1JFX0FERFIg bWVtYWRkciwgZ2RiX2J5dGUgKm15YWRkciwgaW50IGxlbiwgaW50ICplcnJu b3B0cgogLyogRklYTUU6IFVzZSB0YXJnZXRfcmVhZF9zdHJpbmcuICAqLwog CiBpbnQKLXZhbF9wcmludF9zdHJpbmcgKENPUkVfQUREUiBhZGRyLCBpbnQg bGVuLCBpbnQgd2lkdGgsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCit2YWxf cHJpbnRfc3RyaW5nIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHdp ZHRoLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorCQkgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogewogICBpbnQgZm9y Y2VfZWxsaXBzaXMgPSAwOwkvKiBGb3JjZSBlbGxpcHNpcyB0byBiZSBwcmlu dGVkIGlmIG5vbnplcm8uICovCiAgIGludCBlcnJjb2RlOwkJCS8qIEVycm5v IHJldHVybmVkIGZyb20gYmFkIHJlYWRzLiAqLwpAQCAtMTE5NCw3ICsxMjA4 LDcgQEAgdmFsX3ByaW50X3N0cmluZyAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCB3aWR0aCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgICAg YmVjYXVzZSBmaW5kaW5nIHRoZSBudWxsIGJ5dGUgKG9yIGF2YWlsYWJsZSBt ZW1vcnkpIGlzIHdoYXQgYWN0dWFsbHkKICAgICAgbGltaXRzIHRoZSBmZXRj aC4gKi8KIAotICBmZXRjaGxpbWl0ID0gKGxlbiA9PSAtMSA/IHByaW50X21h eCA6IG1pbiAobGVuLCBwcmludF9tYXgpKTsKKyAgZmV0Y2hsaW1pdCA9IChs ZW4gPT0gLTEgPyBvcHRpb25zLT5wcmludF9tYXggOiBtaW4gKGxlbiwgb3B0 aW9ucy0+cHJpbnRfbWF4KSk7CiAKICAgLyogTm93IGRlY2lkZSBob3cgbGFy Z2Ugb2YgY2h1bmtzIHRvIHRyeSB0byByZWFkIGluIG9uZSBvcGVyYXRpb24u ICBUaGlzCiAgICAgIGlzIGFsc28gcHJldHR5IHNpbXBsZS4gIElmIExFTiA+ PSB6ZXJvLCB0aGVuIHdlIHdhbnQgZmV0Y2hsaW1pdCBjaGFycywKQEAgLTEz MTcsMTEgKzEzMzEsMTEgQEAgdmFsX3ByaW50X3N0cmluZyAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCB3aWR0aCwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSkKICAgICAgYW5kIHRoZW4gdGhlIGVycm9yIG1lc3NhZ2UuICAqLwog ICBpZiAoZXJyY29kZSA9PSAwIHx8IGJ1ZnB0ciA+IGJ1ZmZlcikKICAgICB7 Ci0gICAgICBpZiAoYWRkcmVzc3ByaW50KQorICAgICAgaWYgKG9wdGlvbnMt PmFkZHJlc3NwcmludCkKIAl7CiAJICBmcHV0c19maWx0ZXJlZCAoIiAiLCBz dHJlYW0pOwogCX0KLSAgICAgIExBX1BSSU5UX1NUUklORyAoc3RyZWFtLCBi dWZmZXIsIChidWZwdHIgLSBidWZmZXIpIC8gd2lkdGgsIHdpZHRoLCBmb3Jj ZV9lbGxpcHNpcyk7CisgICAgICBMQV9QUklOVF9TVFJJTkcgKHN0cmVhbSwg YnVmZmVyLCAoYnVmcHRyIC0gYnVmZmVyKSAvIHdpZHRoLCB3aWR0aCwgZm9y Y2VfZWxsaXBzaXMsIG9wdGlvbnMpOwogICAgIH0KIAogICBpZiAoZXJyY29k ZSAhPSAwKQpAQCAtMTM5NCwxMyArMTQwOCwxMyBAQCBzZXRfb3V0cHV0X3Jh ZGl4XzEgKGludCBmcm9tX3R0eSwgdW5zaWduZWQgcmFkaXgpCiAgIHN3aXRj aCAocmFkaXgpCiAgICAgewogICAgIGNhc2UgMTY6Ci0gICAgICBvdXRwdXRf Zm9ybWF0ID0gJ3gnOwkvKiBoZXggKi8KKyAgICAgIHVzZXJfcHJpbnRfb3B0 aW9ucy5vdXRwdXRfZm9ybWF0ID0gJ3gnOwkvKiBoZXggKi8KICAgICAgIGJy ZWFrOwogICAgIGNhc2UgMTA6Ci0gICAgICBvdXRwdXRfZm9ybWF0ID0gMDsJ LyogZGVjaW1hbCAqLworICAgICAgdXNlcl9wcmludF9vcHRpb25zLm91dHB1 dF9mb3JtYXQgPSAwOwkvKiBkZWNpbWFsICovCiAgICAgICBicmVhazsKICAg ICBjYXNlIDg6Ci0gICAgICBvdXRwdXRfZm9ybWF0ID0gJ28nOwkvKiBvY3Rh bCAqLworICAgICAgdXNlcl9wcmludF9vcHRpb25zLm91dHB1dF9mb3JtYXQg PSAnbyc7CS8qIG9jdGFsICovCiAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgogICAgICAgLyogRklYTUU6IGNhZ25leS8yMDAyLTAzLTE3OiBUaGlzIG5l ZWRzIHRvIHJldmVydCB0aGUgYmFkIHJhZGl4CkBAIC0xNDk0LDcgKzE1MDgs OCBAQCBfaW5pdGlhbGl6ZV92YWxwcmludCAodm9pZCkKICAgYWRkX2FsaWFz X2NtZCAoInAiLCAicHJpbnQiLCBub19jbGFzcywgMSwgJnNob3dsaXN0KTsK ICAgYWRkX2FsaWFzX2NtZCAoInByIiwgInByaW50Iiwgbm9fY2xhc3MsIDEs ICZzaG93bGlzdCk7CiAKLSAgYWRkX3NldHNob3dfdWludGVnZXJfY21kICgi ZWxlbWVudHMiLCBub19jbGFzcywgJnByaW50X21heCwgXygiXAorICBhZGRf c2V0c2hvd191aW50ZWdlcl9jbWQgKCJlbGVtZW50cyIsIG5vX2NsYXNzLAor CQkJICAgICZ1c2VyX3ByaW50X29wdGlvbnMucHJpbnRfbWF4LCBfKCJcCiBT ZXQgbGltaXQgb24gc3RyaW5nIGNoYXJzIG9yIGFycmF5IGVsZW1lbnRzIHRv IHByaW50LiIpLCBfKCJcCiBTaG93IGxpbWl0IG9uIHN0cmluZyBjaGFycyBv ciBhcnJheSBlbGVtZW50cyB0byBwcmludC4iKSwgXygiXAogXCJzZXQgcHJp bnQgZWxlbWVudHMgMFwiIGNhdXNlcyB0aGVyZSB0byBiZSBubyBsaW1pdC4i KSwKQEAgLTE1MDIsNyArMTUxNyw4IEBAIFNob3cgbGltaXQgb24gc3RyaW5n IGNoYXJzIG9yIGFycmF5IGVsZW1lbnRzIHRvIHByaW50LiIpLCBfKCJcCiAJ CQkgICAgc2hvd19wcmludF9tYXgsCiAJCQkgICAgJnNldHByaW50bGlzdCwg JnNob3dwcmludGxpc3QpOwogCi0gIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21k ICgibnVsbC1zdG9wIiwgbm9fY2xhc3MsICZzdG9wX3ByaW50X2F0X251bGws IF8oIlwKKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJudWxsLXN0b3Ai LCBub19jbGFzcywKKwkJCSAgICZ1c2VyX3ByaW50X29wdGlvbnMuc3RvcF9w cmludF9hdF9udWxsLCBfKCJcCiBTZXQgcHJpbnRpbmcgb2YgY2hhciBhcnJh eXMgdG8gc3RvcCBhdCBmaXJzdCBudWxsIGNoYXIuIiksIF8oIlwKIFNob3cg cHJpbnRpbmcgb2YgY2hhciBhcnJheXMgdG8gc3RvcCBhdCBmaXJzdCBudWxs IGNoYXIuIiksIE5VTEwsCiAJCQkgICBOVUxMLApAQCAtMTUxMCw3ICsxNTI2 LDcgQEAgU2hvdyBwcmludGluZyBvZiBjaGFyIGFycmF5cyB0byBzdG9wIGF0 IGZpcnN0IG51bGwgY2hhci4iKSwgTlVMTCwKIAkJCSAgICZzZXRwcmludGxp c3QsICZzaG93cHJpbnRsaXN0KTsKIAogICBhZGRfc2V0c2hvd191aW50ZWdl cl9jbWQgKCJyZXBlYXRzIiwgbm9fY2xhc3MsCi0JCQkgICAgJnJlcGVhdF9j b3VudF90aHJlc2hvbGQsIF8oIlwKKwkJCSAgICAmdXNlcl9wcmludF9vcHRp b25zLnJlcGVhdF9jb3VudF90aHJlc2hvbGQsIF8oIlwKIFNldCB0aHJlc2hv bGQgZm9yIHJlcGVhdGVkIHByaW50IGVsZW1lbnRzLiIpLCBfKCJcCiBTaG93 IHRocmVzaG9sZCBmb3IgcmVwZWF0ZWQgcHJpbnQgZWxlbWVudHMuIiksIF8o IlwKIFwic2V0IHByaW50IHJlcGVhdHMgMFwiIGNhdXNlcyBhbGwgZWxlbWVu dHMgdG8gYmUgaW5kaXZpZHVhbGx5IHByaW50ZWQuIiksCkBAIC0xNTE4LDI4 ICsxNTM0LDMyIEBAIFNob3cgdGhyZXNob2xkIGZvciByZXBlYXRlZCBwcmlu dCBlbGVtZW50cy4iKSwgXygiXAogCQkJICAgIHNob3dfcmVwZWF0X2NvdW50 X3RocmVzaG9sZCwKIAkJCSAgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50 bGlzdCk7CiAKLSAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJwcmV0dHki LCBjbGFzc19zdXBwb3J0LCAmcHJldHR5cHJpbnRfc3RydWN0cywgXygiXAor ICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInByZXR0eSIsIGNsYXNzX3N1 cHBvcnQsCisJCQkgICAmdXNlcl9wcmludF9vcHRpb25zLnByZXR0eXByaW50 X3N0cnVjdHMsIF8oIlwKIFNldCBwcmV0dHlwcmludGluZyBvZiBzdHJ1Y3R1 cmVzLiIpLCBfKCJcCiBTaG93IHByZXR0eXByaW50aW5nIG9mIHN0cnVjdHVy ZXMuIiksIE5VTEwsCiAJCQkgICBOVUxMLAogCQkJICAgc2hvd19wcmV0dHlw cmludF9zdHJ1Y3RzLAogCQkJICAgJnNldHByaW50bGlzdCwgJnNob3dwcmlu dGxpc3QpOwogCi0gIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgidW5pb24i LCBjbGFzc19zdXBwb3J0LCAmdW5pb25wcmludCwgXygiXAorICBhZGRfc2V0 c2hvd19ib29sZWFuX2NtZCAoInVuaW9uIiwgY2xhc3Nfc3VwcG9ydCwKKwkJ CSAgICZ1c2VyX3ByaW50X29wdGlvbnMudW5pb25wcmludCwgXygiXAogU2V0 IHByaW50aW5nIG9mIHVuaW9ucyBpbnRlcmlvciB0byBzdHJ1Y3R1cmVzLiIp LCBfKCJcCiBTaG93IHByaW50aW5nIG9mIHVuaW9ucyBpbnRlcmlvciB0byBz dHJ1Y3R1cmVzLiIpLCBOVUxMLAogCQkJICAgTlVMTCwKIAkJCSAgIHNob3df dW5pb25wcmludCwKIAkJCSAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRs aXN0KTsKIAotICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImFycmF5Iiwg Y2xhc3Nfc3VwcG9ydCwgJnByZXR0eXByaW50X2FycmF5cywgXygiXAorICBh ZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImFycmF5IiwgY2xhc3Nfc3VwcG9y dCwKKwkJCSAgICZ1c2VyX3ByaW50X29wdGlvbnMucHJldHR5cHJpbnRfYXJy YXlzLCBfKCJcCiBTZXQgcHJldHR5cHJpbnRpbmcgb2YgYXJyYXlzLiIpLCBf KCJcCiBTaG93IHByZXR0eXByaW50aW5nIG9mIGFycmF5cy4iKSwgTlVMTCwK IAkJCSAgIE5VTEwsCiAJCQkgICBzaG93X3ByZXR0eXByaW50X2FycmF5cywK IAkJCSAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRsaXN0KTsKIAotICBh ZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImFkZHJlc3MiLCBjbGFzc19zdXBw b3J0LCAmYWRkcmVzc3ByaW50LCBfKCJcCisgIGFkZF9zZXRzaG93X2Jvb2xl YW5fY21kICgiYWRkcmVzcyIsIGNsYXNzX3N1cHBvcnQsCisJCQkgICAmdXNl cl9wcmludF9vcHRpb25zLmFkZHJlc3NwcmludCwgXygiXAogU2V0IHByaW50 aW5nIG9mIGFkZHJlc3Nlcy4iKSwgXygiXAogU2hvdyBwcmludGluZyBvZiBh ZGRyZXNzZXMuIiksIE5VTEwsCiAJCQkgICBOVUxMLApAQCAtMTU3OCwxNSAr MTU5OCw4IEBAIFVzZSAnc2hvdyBpbnB1dC1yYWRpeCcgb3IgJ3Nob3cgb3V0 cHV0LXJhZGl4JyB0byBpbmRlcGVuZGVudGx5IHNob3cgZWFjaC4iKSwKIAkg ICAmc2hvd2xpc3QpOwogCiAgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgi YXJyYXktaW5kZXhlcyIsIGNsYXNzX3N1cHBvcnQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAmcHJpbnRfYXJyYXlfaW5kZXhlcywgXygiXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJfcHJpbnRfb3B0aW9ucy5w cmludF9hcnJheV9pbmRleGVzLCBfKCJcCiBTZXQgcHJpbnRpbmcgb2YgYXJy YXkgaW5kZXhlcy4iKSwgXygiXAogU2hvdyBwcmludGluZyBvZiBhcnJheSBp bmRleGVzIiksIE5VTEwsIE5VTEwsIHNob3dfcHJpbnRfYXJyYXlfaW5kZXhl cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRwcmludGxpc3Qs ICZzaG93cHJpbnRsaXN0KTsKLQotICAvKiBHaXZlIHBlb3BsZSB0aGUgZGVm YXVsdHMgd2hpY2ggdGhleSBhcmUgdXNlZCB0by4gICovCi0gIHByZXR0eXBy aW50X3N0cnVjdHMgPSAwOwotICBwcmV0dHlwcmludF9hcnJheXMgPSAwOwot ICB1bmlvbnByaW50ID0gMTsKLSAgYWRkcmVzc3ByaW50ID0gMTsKLSAgcHJp bnRfbWF4ID0gUFJJTlRfTUFYX0RFRkFVTFQ7CiB9CmRpZmYgLS1naXQgYS9n ZGIvdmFscHJpbnQuaCBiL2dkYi92YWxwcmludC5oCmluZGV4IDNiMjA1MTYu LjQ3YTJjNGYgMTAwNjQ0Ci0tLSBhL2dkYi92YWxwcmludC5oCisrKyBiL2dk Yi92YWxwcmludC5oCkBAIC0yMSw0NSArMjEsOTggQEAKICNpZm5kZWYgVkFM UFJJTlRfSAogI2RlZmluZSBWQUxQUklOVF9ICiAKLWV4dGVybiBpbnQgcHJl dHR5cHJpbnRfYXJyYXlzOwkvKiBDb250cm9scyBwcmV0dHkgcHJpbnRpbmcg b2YgYXJyYXlzLiAgKi8KLWV4dGVybiBpbnQgcHJldHR5cHJpbnRfc3RydWN0 czsJLyogQ29udHJvbHMgcHJldHR5IHByaW50aW5nIG9mIHN0cnVjdHVyZXMg Ki8KLWV4dGVybiBpbnQgcHJldHR5cHJpbnRfYXJyYXlzOwkvKiBDb250cm9s cyBwcmV0dHkgcHJpbnRpbmcgb2YgYXJyYXlzLiAgKi8KKy8qIFRoaXMgaXMg dXNlZCB0byBwYXNzIGZvcm1hdHRpbmcgb3B0aW9ucyB0byB2YXJpb3VzIHZh bHVlLXByaW50aW5nCisgICBmdW5jdGlvbnMuICAqLworc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMKK3sKKyAgLyogUHJldHR5LXByaW50aW5nIGNvbnRy b2wuICAqLworICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHk7CiAKLWV4 dGVybiBpbnQgdnRibHByaW50OwkJLyogQ29udHJvbHMgcHJpbnRpbmcgb2Yg dnRibCdzICovCi1leHRlcm4gaW50IHVuaW9ucHJpbnQ7CQkvKiBDb250cm9s cyBwcmludGluZyBvZiBuZXN0ZWQgdW5pb25zLiAgKi8KLWV4dGVybiBpbnQg YWRkcmVzc3ByaW50OwkvKiBDb250cm9scyBwcmV0dHkgcHJpbnRpbmcgb2Yg YWRkcmVzc2VzLiAgKi8KLWV4dGVybiBpbnQgb2JqZWN0cHJpbnQ7CQkvKiBD b250cm9scyBsb29raW5nIHVwIGFuIG9iamVjdCdzIGRlcml2ZWQgdHlwZQot CQkJCSAgIHVzaW5nIHdoYXQgd2UgZmluZCBpbiBpdHMgdnRhYmxlcy4gICov CisgIC8qIENvbnRyb2xzIHByZXR0eSBwcmludGluZyBvZiBhcnJheXMuICAq LworICBpbnQgcHJldHR5cHJpbnRfYXJyYXlzOwogCi1leHRlcm4gdW5zaWdu ZWQgaW50IHByaW50X21heDsJLyogTWF4ICMgb2YgY2hhcnMgZm9yIHN0cmlu Z3MvdmVjdG9ycyAqLworICAvKiBDb250cm9scyBwcmV0dHkgcHJpbnRpbmcg b2Ygc3RydWN0dXJlcy4gICovCisgIGludCBwcmV0dHlwcmludF9zdHJ1Y3Rz OwogCi0vKiBGbGFnIHRvIGxvdy1sZXZlbCBwcmludCByb3V0aW5lcyB0aGF0 IHRoaXMgdmFsdWUgaXMgYmVpbmcgcHJpbnRlZAotICAgaW4gYW4gZXBvY2gg d2luZG93LiAgV2UnZCBsaWtlIHRvIHBhc3MgdGhpcyBhcyBhIHBhcmFtZXRl ciwgYnV0Ci0gICBldmVyeSByb3V0aW5lIHdvdWxkIG5lZWQgdG8gdGFrZSBp dC4gIFBlcmhhcHMgd2UgY2FuIGVuY2Fwc3VsYXRlCi0gICB0aGlzIGluIHRo ZSBJL08gc3RyZWFtIG9uY2Ugd2UgaGF2ZSBHTlUgc3RkaW8uICovCi1leHRl cm4gaW50IGluc3BlY3RfaXQ7CisgIC8qIENvbnRyb2xzIHByaW50aW5nIG9m IHZpcnR1YWwgdGFibGVzLiAgKi8KKyAgaW50IHZ0YmxwcmludDsKIAotLyog UHJpbnQgcmVwZWF0IGNvdW50cyBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIHRo aXMgbWFueSByZXBldGl0aW9ucyBvZiBhbgotICAgZWxlbWVudCBpbiBhbiBh cnJheS4gIFJlZmVyZW5jZWQgYnkgdGhlIGxvdyBsZXZlbCBsYW5ndWFnZSBk ZXBlbmRlbnQKLSAgIHByaW50IHJvdXRpbmVzLiAqLwotZXh0ZXJuIHVuc2ln bmVkIGludCByZXBlYXRfY291bnRfdGhyZXNob2xkOworICAvKiBDb250cm9s cyBwcmludGluZyBvZiBuZXN0ZWQgdW5pb25zLiAgKi8KKyAgaW50IHVuaW9u cHJpbnQ7CiAKLWV4dGVybiBpbnQgb3V0cHV0X2Zvcm1hdDsKKyAgLyogQ29u dHJvbHMgcHJpbnRpbmcgb2YgYWRkcmVzc2VzLiAgKi8KKyAgaW50IGFkZHJl c3NwcmludDsKIAotZXh0ZXJuIGludCBzdG9wX3ByaW50X2F0X251bGw7CS8q IFN0b3AgcHJpbnRpbmcgYXQgbnVsbCBjaGFyPyAqLworICAvKiBDb250cm9s cyBsb29raW5nIHVwIGFuIG9iamVjdCdzIGRlcml2ZWQgdHlwZSB1c2luZyB3 aGF0IHdlIGZpbmQKKyAgICAgaW4gaXRzIHZ0YWJsZXMuICAqLworICBpbnQg b2JqZWN0cHJpbnQ7CisKKyAgLyogTWF4aW11bSBudW1iZXIgb2YgY2hhcnMg dG8gcHJpbnQgZm9yIGEgc3RyaW5nIHBvaW50ZXIgdmFsdWUgb3IgdmVjdG9y CisgICAgIGNvbnRlbnRzLCBvciBVSU5UX01BWCBmb3Igbm8gbGltaXQuICBO b3RlIHRoYXQgInNldCBwcmludCBlbGVtZW50cyAwIgorICAgICBzdG9yZXMg VUlOVF9NQVggaW4gcHJpbnRfbWF4LCB3aGljaCBkaXNwbGF5cyBpbiBhIHNo b3cgY29tbWFuZCBhcworICAgICAidW5saW1pdGVkIi4gKi8KKyAgdW5zaWdu ZWQgaW50IHByaW50X21heDsKKworICAvKiBQcmludCByZXBlYXQgY291bnRz IGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gdGhpcyBtYW55IHJlcGV0aXRpb25z CisgICAgIG9mIGFuIGVsZW1lbnQgaW4gYW4gYXJyYXkuICAqLworICB1bnNp Z25lZCBpbnQgcmVwZWF0X2NvdW50X3RocmVzaG9sZDsKKworICAvKiBUaGUg Z2xvYmFsIG91dHB1dCBmb3JtYXQgbGV0dGVyLiAgKi8KKyAgaW50IG91dHB1 dF9mb3JtYXQ7CisKKyAgLyogVGhlIGN1cnJlbnQgZm9ybWF0IGxldHRlci4g IFRoaXMgaXMgc2V0IGxvY2FsbHkgZm9yIGEgZ2l2ZW4gY2FsbCwKKyAgICAg ZS5nLiB3aGVuIHRoZSB1c2VyIHBhc3NlcyBhIGZvcm1hdCB0byAicHJpbnQi LiAgKi8KKyAgaW50IGZvcm1hdDsKKworICAvKiBTdG9wIHByaW50aW5nIGF0 IG51bGwgY2hhcmFjdGVyPyAgKi8KKyAgaW50IHN0b3BfcHJpbnRfYXRfbnVs bDsKKworICAvKiBUcnVlIGlmIHRoaXMgdmFsdWUgaXMgYmVpbmcgcHJpbnRl ZCBpbiBhbiBlcG9jaCB3aW5kb3cuICAqLworICBpbnQgaW5zcGVjdF9pdDsK KworICAvKiBUcnVlIGlmIHdlIHNob3VsZCBwcmludCB0aGUgaW5kZXggb2Yg ZWFjaCBlbGVtZW50IHdoZW4gcHJpbnRpbmcKKyAgICAgYW4gYXJyYXkuICAq LworICBpbnQgcHJpbnRfYXJyYXlfaW5kZXhlczsKKworICAvKiBJZiBub256 ZXJvLCB0aGVuIGRlcmVmZXJlbmNlIHJlZmVyZW5jZXMsIG90aGVyd2lzZSBq dXN0IHByaW50CisgICAgIHRoZW0gbGlrZSBwb2ludGVycy4gICovCisgIGlu dCBkZXJlZl9yZWY7CisKKyAgLyogSWYgbm9uemVybywgcHJpbnQgc3RhdGlj IGZpZWxkcy4gICovCisgIGludCBzdGF0aWNfZmllbGRfcHJpbnQ7CisKKyAg LyogSWYgbm9uemVybywgcHJpbnQgc3RhdGljIGZpZWxkcyBmb3IgUGFzY2Fs LiAgRklYTUU6IEMrKyBhbmQgSmF2YQorICAgICBzaGFyZSBvbmUgZmxhZywg d2h5IG5vdCBQYXNjYWwgdG9vPyAgKi8KKyAgaW50IHBhc2NhbF9zdGF0aWNf ZmllbGRfcHJpbnQ7Cit9OworCisvKiBUaGUgZ2xvYmFsIHByaW50IG9wdGlv bnMgc2V0IGJ5IHRoZSB1c2VyLiAgSW4gZ2VuZXJhbCB0aGlzIHNob3VsZAor ICAgbm90IGJlIGRpcmVjdGx5IGFjY2Vzc2VkLCBleGNlcHQgYnkgc2V0L3No b3cgY29tbWFuZHMuICBPcmRpbmFyeQorICAgY29kZSBzaG91bGQgY2FsbCBn ZXRfdXNlcl9wcmludF9vcHRpb25zIGluc3RlYWQuICAqLworZXh0ZXJuIHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIHVzZXJfcHJpbnRfb3B0aW9uczsK KworLyogSW5pdGlhbGl6ZSAqT1BUUyB0byBiZSBhIGNvcHkgb2YgdGhlIHVz ZXIgcHJpbnQgb3B0aW9ucy4gICovCitleHRlcm4gdm9pZCBnZXRfdXNlcl9w cmludF9vcHRpb25zIChzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 cyk7CisKKy8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRo ZSB1c2VyIHByaW50IG9wdGlvbnMsIGJ1dCB3aXRoCisgICBwcmV0dHktcHJp bnRpbmcgZGlzYWJsZWQuICAqLworZXh0ZXJuIHZvaWQgZ2V0X3Jhd19wcmlu dF9vcHRpb25zIChzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0cyk7 CisKKy8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRoZSB1 c2VyIHByaW50IG9wdGlvbnMsIGJ1dCB1c2luZworICAgRk9STUFUIGFzIHRo ZSBmb3JtYXR0aW5nIG9wdGlvbi4gICovCitleHRlcm4gdm9pZCBnZXRfZm9y bWF0dGVkX3ByaW50X29wdGlvbnMgKHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRzLAorCQkJCQkgY2hhciBmb3JtYXQpOwogCi1leHRlcm4gaW50 IHByaW50X2FycmF5X2luZGV4ZXNfcCAodm9pZCk7Ci0gCiBleHRlcm4gaW50 IGdldF9hcnJheV9ib3VuZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBsb25nICps b3dfYm91bmQsCiAJCQkgICAgIGxvbmcgKmhpZ2hfYm91bmQpOwogCiBleHRl cm4gdm9pZCBtYXliZV9wcmludF9hcnJheV9pbmRleCAoc3RydWN0IHR5cGUg KmluZGV4X3R5cGUsIExPTkdFU1QgaW5kZXgsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg aW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIHZhbF9wcmV0dHlwcmludCBwcmV0dHkpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCisJCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9ucyk7CiAKIGV4dGVybiB2b2lkIHZhbF9wcmludF9hcnJh eV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwK IAkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwK LQkJCQkgICAgICBpbnQsIGludCwgZW51bSB2YWxfcHJldHR5cHJpbnQsCisJ CQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKiwK IAkJCQkgICAgICB1bnNpZ25lZCBpbnQpOwogCiBleHRlcm4gdm9pZCB2YWxf cHJpbnRfdHlwZV9jb2RlX2ludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2Ri X2J5dGUgKiwKZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVl LmMKaW5kZXggMGI1MzBmMC4uMWZhMzc2ZCAxMDA2NDQKLS0tIGEvZ2RiL3Zh bHVlLmMKKysrIGIvZ2RiL3ZhbHVlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNp bmNsdWRlICJibG9jay5oIgogI2luY2x1ZGUgImRmcC5oIgogI2luY2x1ZGUg Im9iamZpbGVzLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIKIAogI2luY2x1 ZGUgInB5dGhvbi9weXRob24uaCIKIApAQCAtNzA4LDkgKzcwOSwxMSBAQCBz aG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5KQogCiAg IGZvciAoaSA9IG51bTsgaSA8IG51bSArIDEwICYmIGkgPD0gdmFsdWVfaGlz dG9yeV9jb3VudDsgaSsrKQogICAgIHsKKyAgICAgIHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zIG9wdHM7CiAgICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVf aGlzdG9yeSAoaSk7CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCgiJCVkID0g IiksIGkpOwotICAgICAgdmFsdWVfcHJpbnQgKHZhbCwgZ2RiX3N0ZG91dCwg MCwgVmFsX3ByZXR0eV9kZWZhdWx0KTsKKyAgICAgIGdldF91c2VyX3ByaW50 X29wdGlvbnMgKCZvcHRzKTsKKyAgICAgIHZhbHVlX3ByaW50ICh2YWwsIGdk Yl9zdGRvdXQsICZvcHRzKTsKICAgICAgIHByaW50Zl9maWx0ZXJlZCAoKCJc biIpKTsKICAgICB9CiAKQEAgLTk2OSw3ICs5NzIsOSBAQCBzaG93X2NvbnZl bmllbmNlIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKIHsKICAgc3Ry dWN0IGludGVybmFsdmFyICp2YXI7CiAgIGludCB2YXJzZWVuID0gMDsKKyAg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKIAorICBnZXRfdXNl cl9wcmludF9vcHRpb25zICgmb3B0cyk7CiAgIGZvciAodmFyID0gaW50ZXJu YWx2YXJzOyB2YXI7IHZhciA9IHZhci0+bmV4dCkKICAgICB7CiAgICAgICBp ZiAoIXZhcnNlZW4pCkBAIC05NzgsNyArOTgzLDcgQEAgc2hvd19jb252ZW5p ZW5jZSAoY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHkpCiAJfQogICAgICAg cHJpbnRmX2ZpbHRlcmVkICgoIiQlcyA9ICIpLCB2YXItPm5hbWUpOwogICAg ICAgdmFsdWVfcHJpbnQgKHZhbHVlX29mX2ludGVybmFsdmFyICh2YXIpLCBn ZGJfc3Rkb3V0LAotCQkgICAwLCBWYWxfcHJldHR5X2RlZmF1bHQpOworCQkg ICAmb3B0cyk7CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCgiXG4iKSk7CiAg ICAgfQogICBpZiAoIXZhcnNlZW4pCmRpZmYgLS1naXQgYS9nZGIvdmFsdWUu aCBiL2dkYi92YWx1ZS5oCmluZGV4IGY1M2QzMzMuLjY1ZmVhOTkgMTAwNjQ0 Ci0tLSBhL2dkYi92YWx1ZS5oCisrKyBiL2dkYi92YWx1ZS5oCkBAIC0zMiw2 ICszMiw3IEBAIHN0cnVjdCBzeW1ib2w7CiBzdHJ1Y3QgdHlwZTsKIHN0cnVj dCB1aV9maWxlOwogc3RydWN0IGxhbmd1YWdlX2RlZm47CitzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9uczsKIAogLyogVGhlIHN0cnVjdHVyZSB3aGljaCBk ZWZpbmVzIHRoZSB0eXBlIG9mIGEgdmFsdWUuICBJdCBzaG91bGQgbmV2ZXIK ICAgIGJlIHBvc3NpYmxlIGZvciBhIHByb2dyYW0gbHZhbCB2YWx1ZSB0byBz dXJ2aXZlIG92ZXIgYSBjYWxsIHRvIHRoZQpAQCAtNTI2LDggKzUyNyw4IEBA IGV4dGVybiB2b2lkIHByaW50X2Zsb2F0aW5nIChjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwgc3RydWN0IHR5cGUgKnR5cGUsCiBleHRlcm4gdm9pZCBwcmlu dF9kZWNpbWFsX2Zsb2F0aW5nIChjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwg c3RydWN0IHR5cGUgKnR5cGUsCiAJCQkJICAgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0pOwogCi1leHRlcm4gaW50IHZhbHVlX3ByaW50IChzdHJ1Y3QgdmFs dWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGZvcm1hdCwK LQkJCWVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSk7CitleHRlcm4gaW50 IHZhbHVlX3ByaW50IChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKKwkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRpb25zKTsKIAogZXh0ZXJuIHZvaWQgdmFsdWVfcHJpbnRfYXJy YXlfZWxlbWVudHMgKHN0cnVjdCB2YWx1ZSAqdmFsLAogCQkJCQlzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtLCBpbnQgZm9ybWF0LApAQCAtNTM3LDE5ICs1Mzgs MTggQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfcmVsZWFzZV90b19t YXJrIChzdHJ1Y3QgdmFsdWUgKm1hcmspOwogCiBleHRlcm4gaW50IHZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAogCQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIg YWRkcmVzcywKLQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IGZvcm1hdCwKLQkJICAgICAgaW50IGRlcmVmX3JlZiwgaW50IHJlY3Vyc2Us Ci0JCSAgICAgIGVudW0gdmFsX3ByZXR0eXByaW50IHByZXR0eSwKKwkJICAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisJCSAg ICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z LAogCQkgICAgICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ3Vh Z2UpOwogCiBleHRlcm4gaW50IGNvbW1vbl92YWxfcHJpbnQgKHN0cnVjdCB2 YWx1ZSAqdmFsLAotCQkJICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgZm9ybWF0LAotCQkJICAgICBpbnQgZGVyZWZfcmVmLCBpbnQgcmVjdXJz ZSwKLQkJCSAgICAgZW51bSB2YWxfcHJldHR5cHJpbnQgcHJldHR5LAorCQkJ ICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKwkJ CSAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMsCiAJCQkgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5n dWFnZSk7CiAKIGV4dGVybiBpbnQgdmFsX3ByaW50X3N0cmluZyAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB3aWR0aCwKLQkJCSAgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSk7CisJCQkgICAgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sCisJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRpb25zKTsKIAogZXh0ZXJuIHZvaWQgcHJpbnRfdmFyaWFibGVf dmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwKIAkJCQkgIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwKZGlmZiAtLWdpdCBhL2dkYi92YXJvYmouYyBiL2dk Yi92YXJvYmouYwppbmRleCAxNWNiZDQ1Li5hYjM2OWEyIDEwMDY0NAotLS0g YS9nZGIvdmFyb2JqLmMKKysrIGIvZ2RiL3Zhcm9iai5jCkBAIC0yNSw2ICsy NSw3IEBACiAjaW5jbHVkZSAid3JhcHBlci5oIgogI2luY2x1ZGUgImdkYmNt ZC5oIgogI2luY2x1ZGUgImJsb2NrLmgiCisjaW5jbHVkZSAidmFscHJpbnQu aCIKIAogI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICNpbmNsdWRlICJnZGJf c3RyaW5nLmgiCkBAIC0xNzkxLDYgKzE3OTIsNyBAQCB2YWx1ZV9nZXRfcHJp bnRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIGVudW0gdmFyb2JqX2Rp c3BsYXlfZm9ybWF0cyBmb3JtYXQpCiAgIHN0cnVjdCB1aV9maWxlICpzdGI7 CiAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgIGNoYXIgKnRoZXZh bHVlOworICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwogCiAg IGlmICh2YWx1ZSA9PSBOVUxMKQogICAgIHJldHVybiBOVUxMOwpAQCAtMTc5 OCw4ICsxODAwLDkgQEAgdmFsdWVfZ2V0X3ByaW50X3ZhbHVlIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlLCBlbnVtIHZhcm9ial9kaXNwbGF5X2Zvcm1hdHMgZm9y bWF0KQogICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7CiAgIG9sZF9jaGFpbiA9 IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RiKTsKIAotICBjb21t b25fdmFsX3ByaW50ICh2YWx1ZSwgc3RiLCBmb3JtYXRfY29kZVsoaW50KSBm b3JtYXRdLCAxLCAwLCAwLAotCQkgICAgY3VycmVudF9sYW5ndWFnZSk7Cisg IGdldF9mb3JtYXR0ZWRfcHJpbnRfb3B0aW9ucyAoJm9wdHMsIGZvcm1hdF9j b2RlWyhpbnQpIGZvcm1hdF0pOworICBvcHRzLmRlcmVmX3JlZiA9IDA7Cisg IGNvbW1vbl92YWxfcHJpbnQgKHZhbHVlLCBzdGIsIDAsICZvcHRzLCBjdXJy ZW50X2xhbmd1YWdlKTsKICAgdGhldmFsdWUgPSB1aV9maWxlX3hzdHJkdXAg KHN0YiwgJmR1bW15KTsKIAogICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsK --=-=-=--