From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27594 invoked by alias); 17 Jun 2008 23:21:10 -0000 Received: (qmail 27578 invoked by uid 22791); 17 Jun 2008 23:21:05 -0000 X-Spam-Check-By: sourceware.org Received: from wa-out-1112.google.com (HELO wa-out-1112.google.com) (209.85.146.181) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 17 Jun 2008 23:20:48 +0000 Received: by wa-out-1112.google.com with SMTP id k22so4576672waf.20 for ; Tue, 17 Jun 2008 16:20:46 -0700 (PDT) Received: by 10.115.32.1 with SMTP id k1mr8849035waj.107.1213744845998; Tue, 17 Jun 2008 16:20:45 -0700 (PDT) Received: by 10.114.204.17 with HTTP; Tue, 17 Jun 2008 16:20:45 -0700 (PDT) Message-ID: <571f6b510806171620i519d4501r67aa365de6c0ceec@mail.gmail.com> Date: Tue, 17 Jun 2008 23:37:00 -0000 From: "Steven Bosscher" To: "Kenneth Zadeck" Subject: [patch] Make df_ref point to a df_insn_info instead of an insn rtx Cc: gcc-patches MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_41811_17998672.1213744845994" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-06/txt/msg01116.txt.bz2 ------=_Part_41811_17998672.1213744845994 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 767 Hi, This is the patch to change how df_refs point to their insns. Without this patch, a df_ref points directly to the insn's rtx. And from the insn, we get the df_insn_info via DF_INSN_GET, which points to the insn def and use refs. But if we are going to have fake insns that have defs and uses, but no real insns (e.g. PHI nodes), we need a different way to find the sibling defs/uses for a given reference. The easiest way is to just point directly at the df_insn_info for the insn that contains the reference. This way, we can then still point at a df_insn_info for fake insns. Attached patch was bootstrapped&tested on ia64-unknown-linux-gnu (and an earlier equivalent version on powerpc). Kenny, what do you think about this? OK for trunk? Gr. Steven ------=_Part_41811_17998672.1213744845994 Content-Type: text/x-patch; name=df_insn_info.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fhl4bwlp0 Content-Disposition: attachment; filename=df_insn_info.diff Content-length: 58959 CSogZGYuaCAoc3RydWN0IGRmX3JlZik6IFJlcGxhY2UgJ2luc24nIGZpZWxk IHdpdGggJ2luc25faW5mbycgZmllbGQuCgkoREZfUkVGX0lOU05fSU5GTyk6 IE5ldy4KCShERl9SRUZfSU5TTiwgREZfUkVGX0lOU05fVUlEKTogUmV3cml0 ZSBtYWNyb3MgdXNpbmcgREZfUkVGX0lOU05fSU5GTy4KCShERl9SRUZfSVNf QVJUSUZJQ0lBTCk6IEFydGlmaWNpYWwgcmVmcyBhcmUgbm93IGlkZW50aWZp ZWQgYXMgcmVmcwoJd2l0aCBhIE5VTEwgREZfUkVGX0lOU05fSU5GTy4KCShE Rl9JTlNOX0lORk9fR0VULCBERl9JTlNOX0lORk9fU0VUKTogUmVuYW1lZCBm cm9tIERGX0lOU05fR0VUIGFuZAoJREZfSU5TTl9TRVQuCgkoREZfSU5TTl9J TkZPX0xVSUQsIERGX0lOU05fSU5GT19ERUZTLCBERl9JTlNOX0lORk9fVVNF UywKCURGX0lOU05fSU5GT19FUV9VU0VTKTogTmV3LgoJKERGX0lOU05fTFVJ RCwgREZfSU5TTl9ERUZTLCBERl9JTlNOX1VTRVMsIERGX0lOU05fRVFfVVNF UywKCURGX0lOU05fVUlEX0xVSUQsIERGX0lOU05fVUlEX0RFRlMsIERGX0lO U05fVUlEX1VTRVMsCglERl9JTlNOX1VJRF9FUV9VU0VTKTogUmV3cml0ZSB1 c2luZyBERl9JTlNOX0lORk9fKiBtYWNyb3MuCgkqIGRmLWNvZGUuYzogVXBk YXRlIGNvbW1lbnQgZm9yIGFib3ZlIGNoYW5nZXMuCgkoZGZfaW5zbl9kZWJ1 Z19yZWdubyk6IFVzZSBERl9JTlNOX0lORk9fR0VUIGluc3RlYWQgb2YgSU5T Tl9VSUQgYW5kCglERl9JTlNOX1VJRF8qIG1hY3Jvcy4KCShkZl9yZWZfZGVi dWcpOiBDaGVjayBmb3IgTlVMTCBERl9SRUZfSU5TTl9JTkZPLgoJKiBkZi1z Y2FuLmMgKGRmX3JlZl9yZWNvcmQpOiBUYWtlIGEgZGZfaW5zbl9pbmZvIGlu c3RlYWQgb2YgYW4KCWluc24gcnR4LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJ KGRmX2RlZl9yZWNvcmRfMSwgZGZfZGVmc19yZWNvcmQsIGRmX3VzZXNfcmVj b3JkLCBkZl9nZXRfY2FsbF9yZWZzLAoJZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1 cmUsIGRmX2luc25fcmVmc19jb2xsZWN0KTogTGlrZXdpc2UuCgkoZGZfcmVm X2VxdWFsX3ApOiBDb21wYXJlIERGX1JFRl9JTlNOX0lORk8gcG9pbnRlcnMg Zm9yIHRoZSByZWZzLgoJKiBkZi1wcm9ibGVtcy5jIChkZl9jaGFpbl9kdW1w KTogVGVzdCBmb3Igbm9uLU5VTEwgREZfUkVGX0lOU05fSU5GTy4KCShkZl9s aXZlX2JiX2xvY2FsX2NvbXB1dGUpOiBSZXRyaWV2ZSBERl9JTlNOX0lORk8s IHVzZSBERl9JTlNOX0lORk9fKgoJbWFjcm9zIHRvIGFjY2VzcyB0aGUgaW5z biByZWZzLgoJKGRmX2NoYWluX3RvcF9kdW1wLCBkZl9jaGFpbl9ib3R0b21f ZHVtcCwgZGZfYnl0ZV9scl9hbGxvYyk6IExpa2V3aXNlLgoJKiBmd3Byb3Au YyAodXNlX2tpbGxlZF9iZXR3ZWVuKTogVXNlIERGX1JFRl9JTlNOIGFjY2Vz c29yIG1hY3JvLgoJKGFsbF91c2VzX2F2YWlsYWJsZSk6IFJldHJpZXZlIERG X0lOU05fSU5GTyBmb3IgZGVmX2luc24sIGFuZCB1c2UgaXQKCWZvciBhY2Nl c3NpbmcgdGhlIHJlZnMuCgkodHJ5X2Z3cHJvcF9zdWJzdCk6IExpa2V3aXNl LgoJKiBkZGcuYyAoYWRkX2Nyb3NzX2l0ZXJhdGlvbl9yZWdpc3Rlcl9kZXBz KTogVXNlIERGX1JFRl9JTlNOIG1hY3JvLgoJKiB3ZWIuYyAodW5pb25fZGVm cyk6IFJldHJpZXZlIERGX0lOU05fSU5GTyBmb3IgZGVmX2luc24sIGFuZCB1 c2UgaXQKCWZvciBhY2Nlc3NpbmcgdGhlIHJlZnMuCgkqIGxvb3AtaW52YXJp YW50LmMgKGludmFyaWFudF9mb3JfdXNlKTogVXNlIERGX1JFRl9CQiBtYWNy by4KCShjaGVja19kZXBlbmRlbmNpZXMpOiBVc2UgREZfSU5TTl9JTkZPX0dF VCwgdXNlIERGX0lOU05fSU5GT18qIG1hY3JvcwoJdG8gbG9vayBhdCB0aGUg aW5zbiByZWZzLgoJKHJlY29yZF91c2VzKTogTGlrZXdpc2UuCgkqIGRjZS5j IChkZWxldGFibGVfaW5zbl9wKTogRG9uJ3QgdG9sZXJhdGUgYXJ0aWZpY2lh bCBERUZzIGluIHRoaXMKCWZ1bmN0aW9uIGFueW1vcmUuCgkobWFya19hcnRp ZmljaWFsX3VzZXMpOiBEb24ndCBtYXJrX2luc24gZm9yIGFydGlmaWNpYWwg cmVmcy4KCShtYXJrX3JlZ19yZXBlbmRlbmNpZXMpOiBMaWtld2lzZS4KCklu ZGV4OiBkZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRmLmgJKHJl dmlzaW9uIDEzNjg2OCkKKysrIGRmLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3 MCw5ICszNzAsMTAgQEAgc3RydWN0IGRmX3JlZgogICBydHggcmVnOwkJCS8q IFRoZSByZWdpc3RlciByZWZlcmVuY2VkLiAgKi8KICAgYmFzaWNfYmxvY2sg YmI7ICAgICAgICAgICAgICAgLyogQmFzaWMgYmxvY2sgY29udGFpbmluZyB0 aGUgaW5zdHJ1Y3Rpb24uICovCiAKLSAgLyogSW5zbiBjb250YWluaW5nIHJl Zi4gVGhpcyB3aWxsIGJlIG51bGwgaWYgdGhpcyBpcyBhbiBhcnRpZmljaWFs Ci0gICAgIHJlZmVyZW5jZS4gICovCi0gIHJ0eCBpbnNuOworICAvKiBJbnNu IGluZm8gZm9yIHRoZSBpbnNuIGNvbnRhaW5pbmcgcmVmLiBUaGlzIHdpbGwg YmUgbnVsbCBpZiB0aGlzIGlzCisgICAgIGFuIGFydGlmaWNpYWwgcmVmZXJl bmNlLiAgKi8KKyAgc3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvOwor CiAgIHJ0eCAqbG9jOwkJCS8qIFRoZSBsb2NhdGlvbiBvZiB0aGUgcmVnLiAg Ki8KICAgc3RydWN0IGRmX2xpbmsgKmNoYWluOwkvKiBIZWFkIG9mIGRlZi11 c2UsIHVzZS1kZWYuICAqLwogICAvKiBMb2NhdGlvbiBpbiB0aGUgcmVmIHRh YmxlLiAgVGhpcyBpcyBvbmx5IHZhbGlkIGFmdGVyIGEgY2FsbCB0byAKQEAg LTYxMiw4ICs2MTMsOSBAQCBzdHJ1Y3QgZGYKICNkZWZpbmUgREZfUkVGX0xP QyhSRUYpICgoUkVGKS0+bG9jKQogI2RlZmluZSBERl9SRUZfQkIoUkVGKSAo KFJFRiktPmJiKQogI2RlZmluZSBERl9SRUZfQkJOTyhSRUYpIChERl9SRUZf QkIgKFJFRiktPmluZGV4KQotI2RlZmluZSBERl9SRUZfSU5TTihSRUYpICgo UkVGKS0+aW5zbikKLSNkZWZpbmUgREZfUkVGX0lOU05fVUlEKFJFRikgKElO U05fVUlEICgoUkVGKS0+aW5zbikpCisjZGVmaW5lIERGX1JFRl9JTlNOX0lO Rk8oUkVGKSAoKFJFRiktPmluc25faW5mbykKKyNkZWZpbmUgREZfUkVGX0lO U04oUkVGKSAoKFJFRiktPmluc25faW5mby0+aW5zbikKKyNkZWZpbmUgREZf UkVGX0lOU05fVUlEKFJFRikgKElOU05fVUlEIChERl9SRUZfSU5TTihSRUYp KSkKICNkZWZpbmUgREZfUkVGX1RZUEUoUkVGKSAoKFJFRiktPnR5cGUpCiAj ZGVmaW5lIERGX1JFRl9DSEFJTihSRUYpICgoUkVGKS0+Y2hhaW4pCiAjZGVm aW5lIERGX1JFRl9JRChSRUYpICgoUkVGKS0+aWQpCkBAIC02MjYsNyArNjI4 LDcgQEAgc3RydWN0IGRmCiAgICBidXQgYW4gYXJ0aWZpY2lhbCBvbmUgY3Jl YXRlZCB0byBtb2RlbCAKICAgIGFsd2F5cyBsaXZlIHJlZ2lzdGVycywgZWgg dXNlcywgZXRjLiAgCiAgICBBUlRJRklDSUFMIHJlZnMgaGFzIE5VTEwgaW5z bi4gICovCi0jZGVmaW5lIERGX1JFRl9JU19BUlRJRklDSUFMKFJFRikgKChS RUYpLT5pbnNuID09IE5VTEwpCisjZGVmaW5lIERGX1JFRl9JU19BUlRJRklD SUFMKFJFRikgKChSRUYpLT5pbnNuX2luZm8gPT0gTlVMTCkKICNkZWZpbmUg REZfUkVGX1JFR19NQVJLKFJFRikgKERGX1JFRl9GTEFHU19TRVQgKChSRUYp LERGX1JFRl9SRUdfTUFSS0VSKSkKICNkZWZpbmUgREZfUkVGX1JFR19VTk1B UksoUkVGKSAoREZfUkVGX0ZMQUdTX0NMRUFSICgoUkVGKSxERl9SRUZfUkVH X01BUktFUikpCiAjZGVmaW5lIERGX1JFRl9JU19SRUdfTUFSS0VEKFJFRikg KERGX1JFRl9GTEFHU19JU19TRVQgKChSRUYpLERGX1JFRl9SRUdfTUFSS0VS KSkKQEAgLTY5MSwxMiArNjkzLDE3IEBAIHN0cnVjdCBkZgogLyogTWFjcm9z IHRvIGFjY2VzcyB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBpbnNuX2luZm8g c3RydWN0dXJlIHRhYmxlLiAgKi8KIAogI2RlZmluZSBERl9JTlNOX1NJWkUo KSAoKGRmKS0+aW5zbnNfc2l6ZSkKLSNkZWZpbmUgREZfSU5TTl9HRVQoSU5T TikgKGRmLT5pbnNuc1soSU5TTl9VSUQoSU5TTikpXSkKLSNkZWZpbmUgREZf SU5TTl9TRVQoSU5TTixWQUwpIChkZi0+aW5zbnNbKElOU05fVUlEIChJTlNO KSldPShWQUwpKQotI2RlZmluZSBERl9JTlNOX0xVSUQoSU5TTikgKERGX0lO U05fR0VUKElOU04pLT5sdWlkKQotI2RlZmluZSBERl9JTlNOX0RFRlMoSU5T TikgKERGX0lOU05fR0VUKElOU04pLT5kZWZzKQotI2RlZmluZSBERl9JTlNO X1VTRVMoSU5TTikgKERGX0lOU05fR0VUKElOU04pLT51c2VzKQotI2RlZmlu ZSBERl9JTlNOX0VRX1VTRVMoSU5TTikgKERGX0lOU05fR0VUKElOU04pLT5l cV91c2VzKQorI2RlZmluZSBERl9JTlNOX0lORk9fR0VUKElOU04pIChkZi0+ aW5zbnNbKElOU05fVUlEKElOU04pKV0pCisjZGVmaW5lIERGX0lOU05fSU5G T19TRVQoSU5TTixWQUwpIChkZi0+aW5zbnNbKElOU05fVUlEIChJTlNOKSld PShWQUwpKQorI2RlZmluZSBERl9JTlNOX0lORk9fTFVJRChJSSkgKChJSSkt Pmx1aWQpCisjZGVmaW5lIERGX0lOU05fSU5GT19ERUZTKElJKSAoKElJKS0+ ZGVmcykKKyNkZWZpbmUgREZfSU5TTl9JTkZPX1VTRVMoSUkpICgoSUkpLT51 c2VzKQorI2RlZmluZSBERl9JTlNOX0lORk9fRVFfVVNFUyhJSSkgKChJSSkt PmVxX3VzZXMpCisKKyNkZWZpbmUgREZfSU5TTl9MVUlEKElOU04pIChERl9J TlNOX0lORk9fTFVJRCAoREZfSU5TTl9JTkZPX0dFVChJTlNOKSkpCisjZGVm aW5lIERGX0lOU05fREVGUyhJTlNOKSAoREZfSU5TTl9JTkZPX0RFRlMgKERG X0lOU05fSU5GT19HRVQoSU5TTikpKQorI2RlZmluZSBERl9JTlNOX1VTRVMo SU5TTikgKERGX0lOU05fSU5GT19VU0VTIChERl9JTlNOX0lORk9fR0VUKElO U04pKSkKKyNkZWZpbmUgREZfSU5TTl9FUV9VU0VTKElOU04pIChERl9JTlNO X0lORk9fRVFfVVNFUyAoREZfSU5TTl9JTkZPX0dFVChJTlNOKSkpCiAKICNk ZWZpbmUgREZfSU5TTl9VSURfR0VUKFVJRCkgKGRmLT5pbnNuc1soVUlEKV0p CiAjZGVmaW5lIERGX0lOU05fVUlEX1NFVChVSUQsVkFMKSAoZGYtPmluc25z WyhVSUQpXT0oVkFMKSkKSW5kZXg6IGRmLWNvcmUuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBkZi1jb3JlLmMJKHJldmlzaW9uIDEzNjg2OCkKKysr IGRmLWNvcmUuYwkod29ya2luZyBjb3B5KQpAQCAtMjY4LDI1ICsyNjgsMjkg QEAgcHNldWRvcyBhbmQgbG9uZyBmb3IgdGhlIGhhcmQgcmVnaXN0ZXJzLgog CiBBQ0NFU1NJTkcgSU5TTlM6CiAKLTEpIFRoZSBkZiBpbnNuIGluZm9ybWF0 aW9uIGlzIGtlcHQgaW4gdGhlIGluc25zIGFycmF5LiAgVGhpcyBhcnJheSBp cwotICAgaW5kZXhlZCBieSBpbnNuIHVpZC4gIAotCi0yKSBFYWNoIGluc24g aGFzIHRocmVlIHNldHMgb2YgcmVmczogVGhleSBhcmUgbGlua2VkIGludG8g b25lIG9mIHRocmVlCi0gICBsaXN0czogdGhlIGluc24ncyBkZWZzIGxpc3Qg KGFjY2Vzc2VkIGJ5IHRoZSBERl9JTlNOX0RFRlMgb3IKLSAgIERGX0lOU05f VUlEX0RFRlMgbWFjcm9zKSwgdGhlIGluc24ncyB1c2VzIGxpc3QgKGFjY2Vz c2VkIGJ5IHRoZQotICAgREZfSU5TTl9VU0VTIG9yIERGX0lOU05fVUlEX1VT RVMgbWFjcm9zKSBvciB0aGUgaW5zbidzIGVxX3VzZXMgbGlzdAotICAgKGFj Y2Vzc2VkIGJ5IHRoZSBERl9JTlNOX0VRX1VTRVMgb3IgREZfSU5TTl9VSURf RVFfVVNFUyBtYWNyb3MpLgotICAgVGhlIGxhdHRlciBsaXN0IGFyZSB0aGUg bGlzdCBvZiByZWZlcmVuY2VzIGluIFJFR19FUVVBTCBvcgotICAgUkVHX0VR VUlWIG5vdGVzLiAgVGhlc2UgbWFjcm9zIHByb2R1Y2UgYSByZWYgKG9yIE5V TEwpLCB0aGUgcmVzdCBvZgotICAgdGhlIGxpc3QgY2FuIGJlIG9idGFpbmVk IGJ5IHRyYXZlcnNhbCBvZiB0aGUgTkVYVF9SRUYgZmllbGQKLSAgIChhY2Nl c3NlZCBieSB0aGUgREZfUkVGX05FWFRfUkVGIG1hY3JvLikgIFRoZXJlIGlz IG5vIHNpZ25pZmljYW5jZQotICAgdG8gdGhlIG9yZGVyaW5nIG9mIHRoZSB1 c2VzIG9yIHJlZnMgaW4gYW4gaW5zdHJ1Y3Rpb24uCi0KLTMpIEVhY2ggaW5z biBoYXMgYSBsb2dpY2FsIHVpZCBmaWVsZCAoTFVJRCkuICBXaGVuIHByb3Bl cmx5IHNldCwgdGhpcwotICAgaXMgYW4gaW50ZWdlciB0aGF0IG51bWJlcnMg ZWFjaCBpbnNuIGluIHRoZSBiYXNpYyBibG9jaywgaW4gb3JkZXIgZnJvbQot ICAgdGhlIHN0YXJ0IG9mIHRoZSBibG9jay4gIFRoZSBudW1iZXJzIGFyZSBv bmx5IGNvcnJlY3QgYWZ0ZXIgYSBjYWxsIHRvCi0gICBkZl9hbmFseXNlLiAg VGhleSB3aWxsIHJvdCBhZnRlciBpbnNucyBhcmUgYWRkZWQgZGVsZXRlZCBv ciBtb3ZlZAotICAgYXJvdW5kLgorMSkgVGhlIGRmIGluc24gaW5mb3JtYXRp b24gaXMga2VwdCBpbiBhbiBhcnJheSBvZiBERl9JTlNOX0lORk8gb2JqZWN0 cy4KKyAgIFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IGluc24gdWlkLCBhbmQg ZXZlcnkgREZfUkVGIHBvaW50cyB0byB0aGUKKyAgIERGX0lOU05fSU5GTyBv YmplY3Qgb2YgdGhlIGluc24gdGhhdCBjb250YWlucyB0aGUgcmVmZXJlbmNl LgorCisyKSBFYWNoIGluc24gaGFzIHRocmVlIHNldHMgb2YgcmVmcywgd2hp Y2ggYXJlIGxpbmtlZCBpbnRvIG9uZSBvZiB0aHJlZQorICAgbGlzdHM6IFRo ZSBpbnNuJ3MgZGVmcyBsaXN0IChhY2Nlc3NlZCBieSB0aGUgREZfSU5TTl9J TkZPX0RFRlMsCisgICBERl9JTlNOX0RFRlMsIG9yIERGX0lOU05fVUlEX0RF RlMgbWFjcm9zKSwgdGhlIGluc24ncyB1c2VzIGxpc3QKKyAgIChhY2Nlc3Nl ZCBieSB0aGUgREZfSU5TTl9JTkZPX1VTRVMsIERGX0lOU05fVVNFUywgb3IK KyAgIERGX0lOU05fVUlEX1VTRVMgbWFjcm9zKSBvciB0aGUgaW5zbidzIGVx X3VzZXMgbGlzdCAoYWNjZXNzZWQgYnkgdGhlCisgICBERl9JTlNOX0lORk9f RVFfVVNFUywgREZfSU5TTl9FUV9VU0VTIG9yIERGX0lOU05fVUlEX0VRX1VT RVMgbWFjcm9zKS4KKyAgIFRoZSBsYXR0ZXIgbGlzdCBhcmUgdGhlIGxpc3Qg b2YgcmVmZXJlbmNlcyBpbiBSRUdfRVFVQUwgb3IgUkVHX0VRVUlWCisgICBu b3Rlcy4gIFRoZXNlIG1hY3JvcyBwcm9kdWNlIGEgcmVmIChvciBOVUxMKSwg dGhlIHJlc3Qgb2YgdGhlIGxpc3QKKyAgIGNhbiBiZSBvYnRhaW5lZCBieSB0 cmF2ZXJzYWwgb2YgdGhlIE5FWFRfUkVGIGZpZWxkIChhY2Nlc3NlZCBieSB0 aGUKKyAgIERGX1JFRl9ORVhUX1JFRiBtYWNyby4pICBUaGVyZSBpcyBubyBz aWduaWZpY2FuY2UgdG8gdGhlIG9yZGVyaW5nIG9mCisgICB0aGUgdXNlcyBv ciByZWZzIGluIGFuIGluc3RydWN0aW9uLgorCiszKSBFYWNoIGluc24gaGFz IGEgbG9naWNhbCB1aWQgZmllbGQgKExVSUQpIHdoaWNoIGlzIHN0b3JlZCBp biB0aGUKKyAgIERGX0lOU05fSU5GTyBvYmplY3QgZm9yIHRoZSBpbnNuLiAg VGhlIExVSUQgZmllbGQgaXMgYWNjZXNzZWQgYnkKKyAgIHRoZSBERl9JTlNO X0lORk9fTFVJRCwgREZfSU5TTl9MVUlELCBhbmQgREZfSU5TTl9VSURfTFVJ RCBtYWNyb3MuCisgICBXaGVuIHByb3Blcmx5IHNldCwgdGhlIExVSUQgaXMg YW4gaW50ZWdlciB0aGF0IG51bWJlcnMgZWFjaCBpbnNuIGluCisgICB0aGUg YmFzaWMgYmxvY2ssIGluIG9yZGVyIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBi bG9jay4KKyAgIFRoZSBudW1iZXJzIGFyZSBvbmx5IGNvcnJlY3QgYWZ0ZXIg YSBjYWxsIHRvIGRmX2FuYWx5emUuICBUaGV5IHdpbGwKKyAgIHJvdCBhZnRl ciBpbnNucyBhcmUgYWRkZWQgZGVsZXRlZCBvciBtb3ZlZCByb3VuZC4KIAog QUNDRVNTSU5HIFJFRlM6CiAKQEAgLTIxNTIsMTcgKzIxNTYsMTggQEAgZGZf aW5zbl9kZWJ1ZyAocnR4IGluc24sIGJvb2wgZm9sbG93X2NoYQogdm9pZAog ZGZfaW5zbl9kZWJ1Z19yZWdubyAocnR4IGluc24sIEZJTEUgKmZpbGUpCiB7 Ci0gIHVuc2lnbmVkIGludCB1aWQgPSBJTlNOX1VJRChpbnNuKTsKKyAgc3Ry dWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0gREZfSU5TTl9JTkZPX0dF VCAoaW5zbik7CiAKICAgZnByaW50ZiAoZmlsZSwgImluc24gJWQgYmIgJWQg bHVpZCAlZCBkZWZzICIsCi0JICAgdWlkLCBCTE9DS19GT1JfSU5TTiAoaW5z biktPmluZGV4LCBERl9JTlNOX0xVSUQgKGluc24pKTsKLSAgZGZfcmVmc19j aGFpbl9kdW1wIChERl9JTlNOX1VJRF9ERUZTICh1aWQpLCBmYWxzZSwgZmls ZSk7CisJICAgSU5TTl9VSUQgKGluc24pLCBCTE9DS19GT1JfSU5TTiAoaW5z biktPmluZGV4LAorCSAgIERGX0lOU05fSU5GT19MVUlEIChpbnNuX2luZm8p KTsKKyAgZGZfcmVmc19jaGFpbl9kdW1wIChERl9JTlNOX0lORk9fREVGUyAo aW5zbl9pbmZvKSwgZmFsc2UsIGZpbGUpOwogICAgIAogICBmcHJpbnRmIChm aWxlLCAiIHVzZXMgIik7Ci0gIGRmX3JlZnNfY2hhaW5fZHVtcCAoREZfSU5T Tl9VSURfVVNFUyAodWlkKSwgZmFsc2UsIGZpbGUpOworICBkZl9yZWZzX2No YWluX2R1bXAgKERGX0lOU05fSU5GT19VU0VTIChpbnNuX2luZm8pLCBmYWxz ZSwgZmlsZSk7CiAKICAgZnByaW50ZiAoZmlsZSwgIiBlcV91c2VzICIpOwot ICBkZl9yZWZzX2NoYWluX2R1bXAgKERGX0lOU05fVUlEX0VRX1VTRVMgKHVp ZCksIGZhbHNlLCBmaWxlKTsKKyAgZGZfcmVmc19jaGFpbl9kdW1wIChERl9J TlNOX0lORk9fRVFfVVNFUyAoaW5zbl9pbmZvKSwgZmFsc2UsIGZpbGUpOwog ICBmcHJpbnRmIChmaWxlLCAiXG4iKTsKIH0KIApAQCAtMjE4OCw3ICsyMTkz LDcgQEAgZGZfcmVmX2RlYnVnIChzdHJ1Y3QgZGZfcmVmICpyZWYsIEZJTEUg KgogICBmcHJpbnRmIChmaWxlLCAicmVnICVkIGJiICVkIGluc24gJWQgZmxh ZyAweCV4IHR5cGUgMHgleCAiLAogCSAgIERGX1JFRl9SRUdOTyAocmVmKSwK IAkgICBERl9SRUZfQkJOTyAocmVmKSwKLQkgICBERl9SRUZfSU5TTiAocmVm KSA/IElOU05fVUlEIChERl9SRUZfSU5TTiAocmVmKSkgOiAtMSwKKwkgICBE Rl9SRUZfSU5TTl9JTkZPIChyZWYpID8gSU5TTl9VSUQgKERGX1JFRl9JTlNO IChyZWYpKSA6IC0xLAogCSAgIERGX1JFRl9GTEFHUyAocmVmKSwKIAkgICBE Rl9SRUZfVFlQRSAocmVmKSk7CiAgIGlmIChERl9SRUZfTE9DIChyZWYpKQpJ bmRleDogZGYtc2Nhbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRm LXNjYW4uYwkocmV2aXNpb24gMTM2ODY4KQorKysgZGYtc2Nhbi5jCSh3b3Jr aW5nIGNvcHkpCkBAIC05NCwyNiArOTQsMjggQEAgc3RhdGljIHN0cnVjdCBk Zl9td19oYXJkcmVnICogZGZfbnVsbF9tdwogCiBzdGF0aWMgdm9pZCBkZl9y ZWZfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMgKiwKIAkJCSAg IHJ0eCwgcnR4ICosIAotCQkJICAgYmFzaWNfYmxvY2ssIHJ0eCwgZW51bSBk Zl9yZWZfdHlwZSwgCi0JCQkgICBlbnVtIGRmX3JlZl9mbGFncywgaW50LCBp bnQsIGVudW0gbWFjaGluZV9tb2RlKTsKLXN0YXRpYyB2b2lkIGRmX2RlZl9y ZWNvcmRfMSAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcmVjICosCi0JCQkgICAg IHJ0eCwgYmFzaWNfYmxvY2ssIHJ0eCwKKwkJCSAgIGJhc2ljX2Jsb2NrLCBz dHJ1Y3QgZGZfaW5zbl9pbmZvICosCisJCQkgICBlbnVtIGRmX3JlZl90eXBl LCBlbnVtIGRmX3JlZl9mbGFncywKKwkJCSAgIGludCwgaW50LCBlbnVtIG1h Y2hpbmVfbW9kZSk7CitzdGF0aWMgdm9pZCBkZl9kZWZfcmVjb3JkXzEgKHN0 cnVjdCBkZl9jb2xsZWN0aW9uX3JlYyAqLCBydHgsCisJCQkgICAgIGJhc2lj X2Jsb2NrLCBzdHJ1Y3QgZGZfaW5zbl9pbmZvICosCiAJCQkgICAgIGVudW0g ZGZfcmVmX2ZsYWdzKTsKLXN0YXRpYyB2b2lkIGRmX2RlZnNfcmVjb3JkIChz dHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMgKiwKLQkJCSAgICBydHgsIGJhc2lj X2Jsb2NrLCBydHgsCitzdGF0aWMgdm9pZCBkZl9kZWZzX3JlY29yZCAoc3Ry dWN0IGRmX2NvbGxlY3Rpb25fcmVjICosIHJ0eCwKKwkJCSAgICBiYXNpY19i bG9jaywgc3RydWN0IGRmX2luc25faW5mbyAqLAogCQkJICAgIGVudW0gZGZf cmVmX2ZsYWdzKTsKIHN0YXRpYyB2b2lkIGRmX3VzZXNfcmVjb3JkIChzdHJ1 Y3QgZGZfY29sbGVjdGlvbl9yZWMgKiwKIAkJCSAgICBydHggKiwgZW51bSBk Zl9yZWZfdHlwZSwKLQkJCSAgICBiYXNpY19ibG9jaywgcnR4LCBlbnVtIGRm X3JlZl9mbGFncywgCisJCQkgICAgYmFzaWNfYmxvY2ssIHN0cnVjdCBkZl9p bnNuX2luZm8gKiwKKwkJCSAgICBlbnVtIGRmX3JlZl9mbGFncywgCiAJCQkg ICAgaW50LCBpbnQsIGVudW0gbWFjaGluZV9tb2RlKTsKIAogc3RhdGljIHN0 cnVjdCBkZl9yZWYgKmRmX3JlZl9jcmVhdGVfc3RydWN0dXJlIChzdHJ1Y3Qg ZGZfY29sbGVjdGlvbl9yZWMgKiwgcnR4LCBydHggKiwgCi0JCQkJCSAgICAg ICBiYXNpY19ibG9jaywgcnR4LCBlbnVtIGRmX3JlZl90eXBlLCAKLQkJCQkJ ICAgICAgIGVudW0gZGZfcmVmX2ZsYWdzLCAKKwkJCQkJICAgICAgIGJhc2lj X2Jsb2NrLCBzdHJ1Y3QgZGZfaW5zbl9pbmZvICosCisJCQkJCSAgICAgICBl bnVtIGRmX3JlZl90eXBlLCBlbnVtIGRmX3JlZl9mbGFncywKIAkJCQkJICAg ICAgIGludCwgaW50LCBlbnVtIG1hY2hpbmVfbW9kZSk7CiAKIHN0YXRpYyB2 b2lkIGRmX2luc25fcmVmc19jb2xsZWN0IChzdHJ1Y3QgZGZfY29sbGVjdGlv bl9yZWMqLCAKLQkJCQkgIGJhc2ljX2Jsb2NrLCBydHgpOyAKKwkJCQkgIGJh c2ljX2Jsb2NrLCBzdHJ1Y3QgZGZfaW5zbl9pbmZvICopOyAKIHN0YXRpYyB2 b2lkIGRmX2Nhbm9uaXplX2NvbGxlY3Rpb25fcmVjIChzdHJ1Y3QgZGZfY29s bGVjdGlvbl9yZWMgKik7CiAKIHN0YXRpYyB2b2lkIGRmX2dldF9yZWd1bGFy X2Jsb2NrX2FydGlmaWNpYWxfdXNlcyAoYml0bWFwKTsKQEAgLTYzNiw3ICs2 MzgsNyBAQCBkZl9yZWZfY3JlYXRlIChydHggcmVnLCBydHggKmxvYywgcnR4 IGluCiAKICAgLyogWW91IGNhbm5vdCBoYWNrIGFydGlmaWNpYWwgcmVmcy4g ICovCiAgIGdjY19hc3NlcnQgKGluc24pOwotICByZWYgPSBkZl9yZWZfY3Jl YXRlX3N0cnVjdHVyZSAoTlVMTCwgcmVnLCBsb2MsIGJiLCBpbnNuLAorICBy ZWYgPSBkZl9yZWZfY3JlYXRlX3N0cnVjdHVyZSAoTlVMTCwgcmVnLCBsb2Ms IGJiLCBERl9JTlNOX0lORk9fR0VUIChpbnNuKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZl90eXBlLCByZWZfZmxhZ3MsIAogCQkJ CSB3aWR0aCwgb2Zmc2V0LCBtb2RlKTsKIApAQCAtOTI0LDExICs5MjYsMTEg QEAgZGZfaW5zbl9jcmVhdGVfaW5zbl9yZWNvcmQgKHJ0eCBpbnNuKQogICBz dHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNuX3JlYzsKIAogICBkZl9ncm93X2lu c25faW5mbyAoKTsKLSAgaW5zbl9yZWMgPSBERl9JTlNOX0dFVCAoaW5zbik7 CisgIGluc25fcmVjID0gREZfSU5TTl9JTkZPX0dFVCAoaW5zbik7CiAgIGlm ICghaW5zbl9yZWMpCiAgICAgewogICAgICAgaW5zbl9yZWMgPSBwb29sX2Fs bG9jIChwcm9ibGVtX2RhdGEtPmluc25fcG9vbCk7Ci0gICAgICBERl9JTlNO X1NFVCAoaW5zbiwgaW5zbl9yZWMpOworICAgICAgREZfSU5TTl9JTkZPX1NF VCAoaW5zbiwgaW5zbl9yZWMpOwogICAgIH0KICAgbWVtc2V0IChpbnNuX3Jl YywgMCwgc2l6ZW9mIChzdHJ1Y3QgZGZfaW5zbl9pbmZvKSk7CiAgIGluc25f cmVjLT5pbnNuID0gaW5zbjsKQEAgLTExNjYsOCArMTE2OCw4IEBAIGRmX2lu c25fcmVzY2FuIChydHggaW5zbikKICAgICB9CiAgIGVsc2UKICAgICB7Ci0g ICAgICBkZl9pbnNuX2NyZWF0ZV9pbnNuX3JlY29yZCAoaW5zbik7Ci0gICAg ICBkZl9pbnNuX3JlZnNfY29sbGVjdCAoJmNvbGxlY3Rpb25fcmVjLCBiYiwg aW5zbik7CisgICAgICBzdHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNuX2luZm8g PSBkZl9pbnNuX2NyZWF0ZV9pbnNuX3JlY29yZCAoaW5zbik7CisgICAgICBk Zl9pbnNuX3JlZnNfY29sbGVjdCAoJmNvbGxlY3Rpb25fcmVjLCBiYiwgaW5z bl9pbmZvKTsKICAgICAgIGlmIChkdW1wX2ZpbGUpCiAJZnByaW50ZiAoZHVt cF9maWxlLCAic2Nhbm5pbmcgbmV3IGluc24gd2l0aCB1aWQgPSAlZC5cbiIs IHVpZCk7CiAgICAgfQpAQCAtMTg5Myw4ICsxODk1LDcgQEAgZGZfcmVmX2No YW5nZV9yZWdfd2l0aF9sb2NfMSAoc3RydWN0IGRmXwogCSAgICB9CiAJICBl bHNlCiAJICAgIHsKLQkgICAgICBzdHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNu X2luZm8gCi0JCT0gREZfSU5TTl9HRVQgKERGX1JFRl9JTlNOICh0aGVfcmVm KSk7CisJICAgICAgc3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0g REZfUkVGX0lOU05fSU5GTyAodGhlX3JlZik7CiAJICAgICAgaWYgKERGX1JF Rl9GTEFHUyAodGhlX3JlZikgJiBERl9SRUZfSU5fTk9URSkKIAkJcmVmX3Zl YyA9IGluc25faW5mby0+ZXFfdXNlczsKIAkgICAgICBlbHNlCkBAIC0yMDY0 LDcgKzIwNjUsNyBAQCBkZl9ub3Rlc19yZXNjYW4gKHJ0eCBpbnNuKQogCSAg ICBjYXNlIFJFR19FUVVBTDoKIAkgICAgICBkZl91c2VzX3JlY29yZCAoJmNv bGxlY3Rpb25fcmVjLAogCQkJICAgICAgJlhFWFAgKG5vdGUsIDApLCBERl9S RUZfUkVHX1VTRSwKLQkJCSAgICAgIGJiLCBpbnNuLCBERl9SRUZfSU5fTk9U RSwgLTEsIC0xLCAwKTsKKwkJCSAgICAgIGJiLCBpbnNuX2luZm8sIERGX1JF Rl9JTl9OT1RFLCAtMSwgLTEsIDApOwogCSAgICBkZWZhdWx0OgogCSAgICAg IGJyZWFrOwogCSAgICB9CkBAIC0yMTQ5LDcgKzIxNTAsNyBAQCBkZl9yZWZf ZXF1YWxfcCAoc3RydWN0IGRmX3JlZiAqcmVmMSwgc3RyCiAgICAgKERGX1JF Rl9SRUcgKHJlZjEpID09IERGX1JFRl9SRUcgKHJlZjIpCiAgICAgICYmIERG X1JFRl9SRUdOTyAocmVmMSkgPT0gREZfUkVGX1JFR05PIChyZWYyKQogICAg ICAmJiBERl9SRUZfTE9DIChyZWYxKSA9PSBERl9SRUZfTE9DIChyZWYyKQot ICAgICAmJiBERl9SRUZfSU5TTiAocmVmMSkgPT0gREZfUkVGX0lOU04gKHJl ZjIpCisgICAgICYmIERGX1JFRl9JTlNOX0lORk8gKHJlZjEpID09IERGX1JF Rl9JTlNOX0lORk8gKHJlZjIpCiAgICAgICYmIERGX1JFRl9UWVBFIChyZWYx KSA9PSBERl9SRUZfVFlQRSAocmVmMikKICAgICAgJiYgKChERl9SRUZfRkxB R1MgKHJlZjEpICYgfihERl9SRUZfUkVHX01BUktFUiArIERGX1JFRl9NV19I QVJEUkVHKSkgCiAJID09IChERl9SRUZfRkxBR1MgKHJlZjIpICYgfihERl9S RUZfUkVHX01BUktFUiArIERGX1JFRl9NV19IQVJEUkVHKSkpCkBAIC0yNTE2 LDcgKzI1MTcsNyBAQCBkZl9yZWZzX2FkZF90b19jaGFpbnMgKHN0cnVjdCBk Zl9jb2xsZWN0CiB7CiAgIGlmIChpbnNuKQogICAgIHsKLSAgICAgIHN0cnVj dCBkZl9pbnNuX2luZm8gKmluc25fcmVjID0gREZfSU5TTl9HRVQgKGluc24p OworICAgICAgc3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9yZWMgPSBERl9J TlNOX0lORk9fR0VUIChpbnNuKTsKICAgICAgIC8qIElmIHRoZXJlIGlzIGEg dmVjdG9yIGluIHRoZSBjb2xsZWN0aW9uIHJlYywgYWRkIGl0IHRvIHRoZQog CSBpbnNuLiAgQSBudWxsIHJlYyBpcyBhIHNpZ25hbCB0aGF0IHRoZSBjYWxs ZXIgd2lsbCBoYW5kbGUgdGhlCiAJIGNoYWluIHNwZWNpYWxseS4gICovCkBA IC0yNTkxLDcgKzI1OTIsNyBAQCBkZl9yZWZzX2FkZF90b19jaGFpbnMgKHN0 cnVjdCBkZl9jb2xsZWN0CiBzdGF0aWMgc3RydWN0IGRmX3JlZiAqCiBkZl9y ZWZfY3JlYXRlX3N0cnVjdHVyZSAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcmVj ICpjb2xsZWN0aW9uX3JlYywKIAkJCSBydHggcmVnLCBydHggKmxvYywgCi0J CQkgYmFzaWNfYmxvY2sgYmIsIHJ0eCBpbnNuLCAKKwkJCSBiYXNpY19ibG9j ayBiYiwgc3RydWN0IGRmX2luc25faW5mbyAqaW5mbywKIAkJCSBlbnVtIGRm X3JlZl90eXBlIHJlZl90eXBlLCAKIAkJCSBlbnVtIGRmX3JlZl9mbGFncyBy ZWZfZmxhZ3MsCiAJCQkgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBlbnVtIG1h Y2hpbmVfbW9kZSBtb2RlKQpAQCAtMjYxNCw3ICsyNjE1LDcgQEAgZGZfcmVm X2NyZWF0ZV9zdHJ1Y3R1cmUgKHN0cnVjdCBkZl9jb2xsZQogICBERl9SRUZf UkVHICh0aGlzX3JlZikgPSByZWc7CiAgIERGX1JFRl9SRUdOTyAodGhpc19y ZWYpID0gIHJlZ25vOwogICBERl9SRUZfTE9DICh0aGlzX3JlZikgPSBsb2M7 Ci0gIERGX1JFRl9JTlNOICh0aGlzX3JlZikgPSBpbnNuOworICBERl9SRUZf SU5TTl9JTkZPICh0aGlzX3JlZikgPSBpbmZvOwogICBERl9SRUZfQ0hBSU4g KHRoaXNfcmVmKSA9IE5VTEw7CiAgIERGX1JFRl9UWVBFICh0aGlzX3JlZikg PSByZWZfdHlwZTsKICAgREZfUkVGX0ZMQUdTICh0aGlzX3JlZikgPSByZWZf ZmxhZ3M7CkBAIC0yNjY5LDcgKzI2NzAsNyBAQCBkZl9yZWZfY3JlYXRlX3N0 cnVjdHVyZSAoc3RydWN0IGRmX2NvbGxlCiBzdGF0aWMgdm9pZAogZGZfcmVm X3JlY29yZCAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcmVjICpjb2xsZWN0aW9u X3JlYywKICAgICAgICAgICAgICAgIHJ0eCByZWcsIHJ0eCAqbG9jLCAKLQkg ICAgICAgYmFzaWNfYmxvY2sgYmIsIHJ0eCBpbnNuLCAKKwkgICAgICAgYmFz aWNfYmxvY2sgYmIsIHN0cnVjdCBkZl9pbnNuX2luZm8gKmluc25faW5mbywK IAkgICAgICAgZW51bSBkZl9yZWZfdHlwZSByZWZfdHlwZSwgCiAJICAgICAg IGVudW0gZGZfcmVmX2ZsYWdzIHJlZl9mbGFncywKIAkgICAgICAgaW50IHdp ZHRoLCBpbnQgb2Zmc2V0LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlKSAKQEAg LTI3MDAsNyArMjcwMSw3IEBAIGRmX3JlZl9yZWNvcmQgKHN0cnVjdCBkZl9j b2xsZWN0aW9uX3JlYyAKICAgICAgIC8qICBJZiB0aGlzIGlzIGEgbXVsdGl3 b3JkIGhhcmRyZWcsIHdlIGNyZWF0ZSBzb21lIGV4dHJhCiAJICBkYXRhc3Ry dWN0dXJlcyB0aGF0IHdpbGwgZW5hYmxlIHVzIHRvIGVhc2lseSBidWlsZCBS RUdfREVBRAogCSAgYW5kIFJFR19VTlVTRUQgbm90ZXMuICAqLwotICAgICAg aWYgKChlbmRyZWdubyAhPSByZWdubyArIDEpICYmIGluc24pCisgICAgICBp ZiAoKGVuZHJlZ25vICE9IHJlZ25vICsgMSkgJiYgaW5zbl9pbmZvKQogCXsK IAkgIC8qIFNldHMgdG8gYSBzdWJyZWcgb2YgYSBtdWx0aXdvcmQgcmVnaXN0 ZXIgYXJlIHBhcnRpYWwuIAogCSAgICAgU2V0cyB0byBhIG5vbi1zdWJyZWcg b2YgYSBtdWx0aXdvcmQgcmVnaXN0ZXIgYXJlIG5vdC4gICovCkBAIC0yNzIx LDcgKzI3MjIsNyBAQCBkZl9yZWZfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVj dGlvbl9yZWMgCiAgICAgICBmb3IgKGkgPSByZWdubzsgaSA8IGVuZHJlZ25v OyBpKyspCiAJewogCSAgcmVmID0gZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1cmUg KGNvbGxlY3Rpb25fcmVjLCByZWdub19yZWdfcnR4W2ldLCBsb2MsIAotCQkJ CQkgYmIsIGluc24sIHJlZl90eXBlLCByZWZfZmxhZ3MsIAorCQkJCQkgYmIs IGluc25faW5mbywgcmVmX3R5cGUsIHJlZl9mbGFncywgCiAJCQkJCSB3aWR0 aCwgb2Zmc2V0LCBtb2RlKTsKIAogICAgICAgICAgIGdjY19hc3NlcnQgKE9S SUdJTkFMX1JFR05PIChERl9SRUZfUkVHIChyZWYpKSA9PSBpKTsKQEAgLTI3 MzAsNyArMjczMSw3IEBAIGRmX3JlZl9yZWNvcmQgKHN0cnVjdCBkZl9jb2xs ZWN0aW9uX3JlYyAKICAgZWxzZQogICAgIHsKICAgICAgIHN0cnVjdCBkZl9y ZWYgKnJlZjsKLSAgICAgIHJlZiA9IGRmX3JlZl9jcmVhdGVfc3RydWN0dXJl IChjb2xsZWN0aW9uX3JlYywgcmVnLCBsb2MsIGJiLCBpbnNuLCAKKyAgICAg IHJlZiA9IGRmX3JlZl9jcmVhdGVfc3RydWN0dXJlIChjb2xsZWN0aW9uX3Jl YywgcmVnLCBsb2MsIGJiLCBpbnNuX2luZm8sIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZl90eXBlLCByZWZfZmxhZ3MsIHdp ZHRoLCBvZmZzZXQsIG1vZGUpOwogICAgIH0KIH0KQEAgLTI3NjAsNyArMjc2 MSw3IEBAIGRmX3JlYWRfbW9kaWZ5X3N1YnJlZ19wIChydHggeCkKIAogc3Rh dGljIHZvaWQKIGRmX2RlZl9yZWNvcmRfMSAoc3RydWN0IGRmX2NvbGxlY3Rp b25fcmVjICpjb2xsZWN0aW9uX3JlYywKLSAgICAgICAgICAgICAgICAgcnR4 IHgsIGJhc2ljX2Jsb2NrIGJiLCBydHggaW5zbiwgCisgICAgICAgICAgICAg ICAgIHJ0eCB4LCBiYXNpY19ibG9jayBiYiwgc3RydWN0IGRmX2luc25faW5m byAqaW5zbl9pbmZvLAogCQkgZW51bSBkZl9yZWZfZmxhZ3MgZmxhZ3MpCiB7 CiAgIHJ0eCAqbG9jOwpAQCAtMjc4OCw3ICsyNzg5LDcgQEAgZGZfZGVmX3Jl Y29yZF8xIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZQogCSAgaWYgKEdFVF9D T0RFICh0ZW1wKSA9PSBFWFBSX0xJU1QgfHwgR0VUX0NPREUgKHRlbXApID09 IENMT0JCRVIKIAkgICAgICB8fCBHRVRfQ09ERSAodGVtcCkgPT0gU0VUKQog CSAgICBkZl9kZWZfcmVjb3JkXzEgKGNvbGxlY3Rpb25fcmVjLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLCBiYiwgaW5zbiwgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAsIGJiLCBpbnNuX2luZm8s IAogCQkJICAgICBHRVRfQ09ERSAodGVtcCkgPT0gQ0xPQkJFUiAKIAkJCSAg ICAgPyBmbGFncyB8IERGX1JFRl9NVVNUX0NMT0JCRVIgOiBmbGFncyk7CiAJ fQpAQCAtMjgyMywxNCArMjgyNCwxNCBAQCBkZl9kZWZfcmVjb3JkXzEgKHN0 cnVjdCBkZl9jb2xsZWN0aW9uX3JlCiAgIGlmIChSRUdfUCAoZHN0KSkKICAg ICB7CiAgICAgICBkZl9yZWZfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywgCi0J CSAgICAgZHN0LCBsb2MsIGJiLCBpbnNuLCBERl9SRUZfUkVHX0RFRiwgZmxh Z3MsIAorCQkgICAgIGRzdCwgbG9jLCBiYiwgaW5zbl9pbmZvLCBERl9SRUZf UkVHX0RFRiwgZmxhZ3MsIAogCQkgICAgIHdpZHRoLCBvZmZzZXQsIG1vZGUp OwogCiAgICAgICAvKiBXZSB3YW50IHRvIGtlZXAgc3AgYWxpdmUgZXZlcnl3 aGVyZSAtIGJ5IG1ha2luZyBhbGwKIAkgd3JpdGVzIHRvIHNwIGFsc28gdXNl IG9mIHNwLiAqLwogICAgICAgaWYgKFJFR05PIChkc3QpID09IFNUQUNLX1BP SU5URVJfUkVHTlVNKQogCWRmX3JlZl9yZWNvcmQgKGNvbGxlY3Rpb25fcmVj LAotCQkgICAgICAgZHN0LCBOVUxMLCBiYiwgaW5zbiwgREZfUkVGX1JFR19V U0UsIGZsYWdzLCAKKwkJICAgICAgIGRzdCwgTlVMTCwgYmIsIGluc25faW5m bywgREZfUkVGX1JFR19VU0UsIGZsYWdzLCAKIAkJICAgICAgIHdpZHRoLCBv ZmZzZXQsIG1vZGUpOwogICAgIH0KICAgZWxzZSBpZiAoR0VUX0NPREUgKGRz dCkgPT0gU1VCUkVHICYmIFJFR19QIChTVUJSRUdfUkVHIChkc3QpKSkKQEAg LTI4NDEsNyArMjg0Miw3IEBAIGRmX2RlZl9yZWNvcmRfMSAoc3RydWN0IGRm X2NvbGxlY3Rpb25fcmUKICAgICAgIGZsYWdzIHw9IERGX1JFRl9TVUJSRUc7 CiAKICAgICAgIGRmX3JlZl9yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLCAKLQkJ ICAgICBkc3QsIGxvYywgYmIsIGluc24sIERGX1JFRl9SRUdfREVGLCBmbGFn cywgCisJCSAgICAgZHN0LCBsb2MsIGJiLCBpbnNuX2luZm8sIERGX1JFRl9S RUdfREVGLCBmbGFncywgCiAJCSAgICAgd2lkdGgsIG9mZnNldCwgbW9kZSk7 CiAgICAgfQogfQpAQCAtMjg1MSw3ICsyODUyLDggQEAgZGZfZGVmX3JlY29y ZF8xIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZQogCiBzdGF0aWMgdm9pZAog ZGZfZGVmc19yZWNvcmQgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYyAqY29s bGVjdGlvbl9yZWMsIAotICAgICAgICAgICAgICAgIHJ0eCB4LCBiYXNpY19i bG9jayBiYiwgcnR4IGluc24sIGVudW0gZGZfcmVmX2ZsYWdzIGZsYWdzKQor ICAgICAgICAgICAgICAgIHJ0eCB4LCBiYXNpY19ibG9jayBiYiwgc3RydWN0 IGRmX2luc25faW5mbyAqaW5zbl9pbmZvLAorCQllbnVtIGRmX3JlZl9mbGFn cyBmbGFncykKIHsKICAgUlRYX0NPREUgY29kZSA9IEdFVF9DT0RFICh4KTsK IApAQCAtMjg2MCwxMiArMjg2MiwxMiBAQCBkZl9kZWZzX3JlY29yZCAoc3Ry dWN0IGRmX2NvbGxlY3Rpb25fcmVjCiAgICAgICAvKiBNYXJrIHRoZSBzaW5n bGUgZGVmIHdpdGhpbiB0aGUgcGF0dGVybi4gICovCiAgICAgICBlbnVtIGRm X3JlZl9mbGFncyBjbG9iYmVyX2ZsYWdzID0gZmxhZ3M7CiAgICAgICBjbG9i YmVyX2ZsYWdzIHw9IChjb2RlID09IENMT0JCRVIpID8gREZfUkVGX01VU1Rf Q0xPQkJFUiA6IDA7Ci0gICAgICBkZl9kZWZfcmVjb3JkXzEgKGNvbGxlY3Rp b25fcmVjLCB4LCBiYiwgaW5zbiwgY2xvYmJlcl9mbGFncyk7CisgICAgICBk Zl9kZWZfcmVjb3JkXzEgKGNvbGxlY3Rpb25fcmVjLCB4LCBiYiwgaW5zbl9p bmZvLCBjbG9iYmVyX2ZsYWdzKTsKICAgICB9CiAgIGVsc2UgaWYgKGNvZGUg PT0gQ09ORF9FWEVDKQogICAgIHsKICAgICAgIGRmX2RlZnNfcmVjb3JkIChj b2xsZWN0aW9uX3JlYywgQ09ORF9FWEVDX0NPREUgKHgpLCAKLQkJICAgICAg YmIsIGluc24sIERGX1JFRl9DT05ESVRJT05BTCk7CisJCSAgICAgIGJiLCBp bnNuX2luZm8sIERGX1JFRl9DT05ESVRJT05BTCk7CiAgICAgfQogICBlbHNl IGlmIChjb2RlID09IFBBUkFMTEVMKQogICAgIHsKQEAgLTI4NzMsNyArMjg3 NSw3IEBAIGRmX2RlZnNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9y ZWMKIAogICAgICAgLyogTWFyayB0aGUgbXVsdGlwbGUgZGVmcyB3aXRoaW4g dGhlIHBhdHRlcm4uICAqLwogICAgICAgZm9yIChpID0gWFZFQ0xFTiAoeCwg MCkgLSAxOyBpID49IDA7IGktLSkKLQlkZl9kZWZzX3JlY29yZCAoY29sbGVj dGlvbl9yZWMsIFhWRUNFWFAgKHgsIDAsIGkpLCBiYiwgaW5zbiwgZmxhZ3Mp OworCWRmX2RlZnNfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywgWFZFQ0VYUCAo eCwgMCwgaSksIGJiLCBpbnNuX2luZm8sIGZsYWdzKTsKICAgICB9CiB9CiAK QEAgLTI4ODgsNyArMjg5MCw4IEBAIGRmX2RlZnNfcmVjb3JkIChzdHJ1Y3Qg ZGZfY29sbGVjdGlvbl9yZWMKIHN0YXRpYyB2b2lkCiBkZl91c2VzX3JlY29y ZCAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcmVjICpjb2xsZWN0aW9uX3JlYywK ICAgICAgICAgICAgICAgICBydHggKmxvYywgZW51bSBkZl9yZWZfdHlwZSBy ZWZfdHlwZSwKLQkJYmFzaWNfYmxvY2sgYmIsIHJ0eCBpbnNuLCBlbnVtIGRm X3JlZl9mbGFncyBmbGFncywKKwkJYmFzaWNfYmxvY2sgYmIsIHN0cnVjdCBk Zl9pbnNuX2luZm8gKmluc25faW5mbywKKwkJZW51bSBkZl9yZWZfZmxhZ3Mg ZmxhZ3MsCiAJCWludCB3aWR0aCwgaW50IG9mZnNldCwgZW51bSBtYWNoaW5l X21vZGUgbW9kZSkKIHsKICAgUlRYX0NPREUgY29kZTsKQEAgLTI5MjAsOCAr MjkyMyw5IEBAIGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlv bl9yZWMKICAgICAgIGlmIChNRU1fUCAoWEVYUCAoeCwgMCkpKQogCWRmX3Vz ZXNfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywKIAkJCSZYRVhQIChYRVhQICh4 LCAwKSwgMCksCi0JCQlERl9SRUZfUkVHX01FTV9TVE9SRSwgYmIsIGluc24s IGZsYWdzLCAKLQkJCXdpZHRoLCBvZmZzZXQsIG1vZGUpOworCQkJREZfUkVG X1JFR19NRU1fU1RPUkUsCisJCSAgICAgICAgYmIsIGluc25faW5mbywKKwkJ CWZsYWdzLCB3aWR0aCwgb2Zmc2V0LCBtb2RlKTsKIAogICAgICAgLyogSWYg d2UncmUgY2xvYmJlcmluZyBhIFJFRyB0aGVuIHdlIGhhdmUgYSBkZWYgc28g aWdub3JlLiAgKi8KICAgICAgIHJldHVybjsKQEAgLTI5MjksNyArMjkzMyw3 IEBAIGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMK ICAgICBjYXNlIE1FTToKICAgICAgIGRmX3VzZXNfcmVjb3JkIChjb2xsZWN0 aW9uX3JlYywKIAkJICAgICAgJlhFWFAgKHgsIDApLCBERl9SRUZfUkVHX01F TV9MT0FELCAKLQkJICAgICAgYmIsIGluc24sIGZsYWdzICYgREZfUkVGX0lO X05PVEUsIAorCQkgICAgICBiYiwgaW5zbl9pbmZvLCBmbGFncyAmIERGX1JF Rl9JTl9OT1RFLCAKIAkJICAgICAgd2lkdGgsIG9mZnNldCwgbW9kZSk7CiAg ICAgICByZXR1cm47CiAKQEAgLTI5NDAsNyArMjk0NCw3IEBAIGRmX3VzZXNf cmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMKICAgICAgIGlmICgh UkVHX1AgKFNVQlJFR19SRUcgKHgpKSkKIAl7CiAJICBsb2MgPSAmU1VCUkVH X1JFRyAoeCk7Ci0JICBkZl91c2VzX3JlY29yZCAoY29sbGVjdGlvbl9yZWMs IGxvYywgcmVmX3R5cGUsIGJiLCBpbnNuLCBmbGFncywgCisJICBkZl91c2Vz X3JlY29yZCAoY29sbGVjdGlvbl9yZWMsIGxvYywgcmVmX3R5cGUsIGJiLCBp bnNuX2luZm8sIGZsYWdzLCAKIAkJCSAgd2lkdGgsIG9mZnNldCwgbW9kZSk7 CiAJICByZXR1cm47CiAJfQpAQCAtMjk0OCw3ICsyOTUyLDggQEAgZGZfdXNl c19yZWNvcmQgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYwogCiAgICAgY2Fz ZSBSRUc6CiAgICAgICBkZl9yZWZfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywg Ci0JCSAgICAgeCwgbG9jLCBiYiwgaW5zbiwgcmVmX3R5cGUsIGZsYWdzLCAK KwkJICAgICB4LCBsb2MsIGJiLCBpbnNuX2luZm8sCisJCSAgICAgcmVmX3R5 cGUsIGZsYWdzLCAKIAkJICAgICB3aWR0aCwgb2Zmc2V0LCBtb2RlKTsKICAg ICAgIHJldHVybjsKIApAQCAtMjk3MSw3ICsyOTc2LDcgQEAgZGZfdXNlc19y ZWNvcmQgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYwogCSAgICAgIGZsYWdz IHw9IERGX1JFRl9TSUdOX0VYVFJBQ1Q7CiAKIAkgICAgZGZfdXNlc19yZWNv cmQgKGNvbGxlY3Rpb25fcmVjLAotCQkJICAgICZYRVhQICh4LCAwKSwgcmVm X3R5cGUsIGJiLCBpbnNuLCBmbGFncywgCisJCQkgICAgJlhFWFAgKHgsIDAp LCByZWZfdHlwZSwgYmIsIGluc25faW5mbywgZmxhZ3MsIAogCQkJICAgIHdp ZHRoLCBvZmZzZXQsIG1vZGUpOwogCSAgICByZXR1cm47CiAJICB9CkBAIC0y OTgzLDcgKzI5ODgsNyBAQCBkZl91c2VzX3JlY29yZCAoc3RydWN0IGRmX2Nv bGxlY3Rpb25fcmVjCiAJcnR4IGRzdCA9IFNFVF9ERVNUICh4KTsKIAlnY2Nf YXNzZXJ0ICghKGZsYWdzICYgREZfUkVGX0lOX05PVEUpKTsKIAlkZl91c2Vz X3JlY29yZCAoY29sbGVjdGlvbl9yZWMsCi0JCQkmU0VUX1NSQyAoeCksIERG X1JFRl9SRUdfVVNFLCBiYiwgaW5zbiwgZmxhZ3MsIAorCQkJJlNFVF9TUkMg KHgpLCBERl9SRUZfUkVHX1VTRSwgYmIsIGluc25faW5mbywgZmxhZ3MsIAog CQkJd2lkdGgsIG9mZnNldCwgbW9kZSk7CiAKIAlzd2l0Y2ggKEdFVF9DT0RF IChkc3QpKQpAQCAtMjk5Miw3ICsyOTk3LDcgQEAgZGZfdXNlc19yZWNvcmQg KHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYwogCSAgICAgIGlmIChkZl9yZWFk X21vZGlmeV9zdWJyZWdfcCAoZHN0KSkKIAkJewogCQkgIGRmX3VzZXNfcmVj b3JkIChjb2xsZWN0aW9uX3JlYywgJlNVQlJFR19SRUcgKGRzdCksIAotCQkJ CSAgREZfUkVGX1JFR19VU0UsIGJiLCBpbnNuLCAKKwkJCQkgIERGX1JFRl9S RUdfVVNFLCBiYiwgaW5zbl9pbmZvLCAKIAkJCQkgIGZsYWdzIHwgREZfUkVG X1JFQURfV1JJVEUgfCBERl9SRUZfU1VCUkVHLCAKIAkJCQkgIHdpZHRoLCBv ZmZzZXQsIG1vZGUpOwogCQkgIGJyZWFrOwpAQCAtMzAwNiw3ICszMDExLDcg QEAgZGZfdXNlc19yZWNvcmQgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYwog CQlicmVhazsKIAkgICAgY2FzZSBNRU06CiAJICAgICAgZGZfdXNlc19yZWNv cmQgKGNvbGxlY3Rpb25fcmVjLCAmWEVYUCAoZHN0LCAwKSwKLQkJCSAgICAg IERGX1JFRl9SRUdfTUVNX1NUT1JFLCBiYiwgaW5zbiwgZmxhZ3MsIAorCQkJ ICAgICAgREZfUkVGX1JFR19NRU1fU1RPUkUsIGJiLCBpbnNuX2luZm8sIGZs YWdzLCAKIAkJCSAgICAgIHdpZHRoLCBvZmZzZXQsIG1vZGUpOwogCSAgICAg IGJyZWFrOwogCSAgICBjYXNlIFNUUklDVF9MT1dfUEFSVDoKQEAgLTMwMTcs NyArMzAyMiw3IEBAIGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVj dGlvbl9yZWMKIAkJZHN0ID0gWEVYUCAoZHN0LCAwKTsKIAkJZGZfdXNlc19y ZWNvcmQgKGNvbGxlY3Rpb25fcmVjLCAKIAkJCQkoR0VUX0NPREUgKGRzdCkg PT0gU1VCUkVHKSA/ICZTVUJSRUdfUkVHIChkc3QpIDogdGVtcCwgCi0JCQkJ REZfUkVGX1JFR19VU0UsIGJiLCBpbnNuLCAKKwkJCQlERl9SRUZfUkVHX1VT RSwgYmIsIGluc25faW5mbywKIAkJCQlERl9SRUZfUkVBRF9XUklURSB8IERG X1JFRl9TVFJJQ1RfTE9XX1BBUlQsIAogCQkJCXdpZHRoLCBvZmZzZXQsIG1v ZGUpOwogCSAgICAgIH0KQEAgLTMwMzQsMTUgKzMwMzksMTUgQEAgZGZfdXNl c19yZWNvcmQgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3JlYwogCQllbHNlIAog CQkgIHsKIAkJICAgIGRmX3VzZXNfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywg JlhFWFAgKGRzdCwgMSksIAotCQkJCSAgICBERl9SRUZfUkVHX1VTRSwgYmIs IGluc24sIGZsYWdzLCAKKwkJCQkgICAgREZfUkVGX1JFR19VU0UsIGJiLCBp bnNuX2luZm8sIGZsYWdzLCAKIAkJCQkgICAgd2lkdGgsIG9mZnNldCwgbW9k ZSk7CiAJCSAgICBkZl91c2VzX3JlY29yZCAoY29sbGVjdGlvbl9yZWMsICZY RVhQIChkc3QsIDIpLCAKLQkJCQkgICAgREZfUkVGX1JFR19VU0UsIGJiLCBp bnNuLCBmbGFncywgCisJCQkJICAgIERGX1JFRl9SRUdfVVNFLCBiYiwgaW5z bl9pbmZvLCBmbGFncywgCiAJCQkJICAgIHdpZHRoLCBvZmZzZXQsIG1vZGUp OwogCQkgIH0KIAogCQlkZl91c2VzX3JlY29yZCAoY29sbGVjdGlvbl9yZWMs ICZYRVhQIChkc3QsIDApLCAKLQkJCQlERl9SRUZfUkVHX1VTRSwgYmIsIGlu c24sIAorCQkJCURGX1JFRl9SRUdfVVNFLCBiYiwgaW5zbl9pbmZvLCAKIAkJ CQlERl9SRUZfUkVBRF9XUklURSB8IERGX1JFRl9aRVJPX0VYVFJBQ1QsIAog CQkJCXdpZHRoLCBvZmZzZXQsIG1vZGUpOwogCSAgICAgIH0KQEAgLTMwOTQs NyArMzA5OSw3IEBAIGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVj dGlvbl9yZWMKIAogCSAgICBmb3IgKGogPSAwOyBqIDwgQVNNX09QRVJBTkRT X0lOUFVUX0xFTkdUSCAoeCk7IGorKykKIAkgICAgICBkZl91c2VzX3JlY29y ZCAoY29sbGVjdGlvbl9yZWMsICZBU01fT1BFUkFORFNfSU5QVVQgKHgsIGop LAotCQkJICAgICAgREZfUkVGX1JFR19VU0UsIGJiLCBpbnNuLCBmbGFncywg CisJCQkgICAgICBERl9SRUZfUkVHX1VTRSwgYmIsIGluc25faW5mbywgZmxh Z3MsIAogCQkJICAgICAgd2lkdGgsIG9mZnNldCwgbW9kZSk7CiAJICAgIHJl dHVybjsKIAkgIH0KQEAgLTMxMDgsNyArMzExMyw4IEBAIGRmX3VzZXNfcmVj b3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMKICAgICBjYXNlIFBSRV9N T0RJRlk6CiAgICAgY2FzZSBQT1NUX01PRElGWToKICAgICAgIC8qIENhdGNo IHRoZSBkZWYgb2YgdGhlIHJlZ2lzdGVyIGJlaW5nIG1vZGlmaWVkLiAgKi8K LSAgICAgIGRmX3JlZl9yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLCBYRVhQICh4 LCAwKSwgJlhFWFAgKHgsIDApLCBiYiwgaW5zbiwgCisgICAgICBkZl9yZWZf cmVjb3JkIChjb2xsZWN0aW9uX3JlYywgWEVYUCAoeCwgMCksICZYRVhQICh4 LCAwKSwKKwkJICAgICBiYiwgaW5zbl9pbmZvLCAKIAkJICAgICBERl9SRUZf UkVHX0RFRiwKICAgICAgICAgICAgICAgICAgICAgIGZsYWdzIHwgREZfUkVG X1JFQURfV1JJVEUgfCBERl9SRUZfUFJFX1BPU1RfTU9ESUZZLCAKIAkJICAg ICB3aWR0aCwgb2Zmc2V0LCBtb2RlKTsKQEAgLTMxMzUsNyArMzE0MSw3IEBA IGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMKIAkJ Z290byByZXRyeTsKIAkgICAgICB9CiAJICAgIGRmX3VzZXNfcmVjb3JkIChj b2xsZWN0aW9uX3JlYywgJlhFWFAgKHgsIGkpLCByZWZfdHlwZSwgCi0JCQkg ICAgYmIsIGluc24sIGZsYWdzLCAKKwkJCSAgICBiYiwgaW5zbl9pbmZvLCBm bGFncywgCiAJCQkgICAgd2lkdGgsIG9mZnNldCwgbW9kZSk7CiAJICB9CiAJ ZWxzZSBpZiAoZm10W2ldID09ICdFJykKQEAgLTMxNDQsNyArMzE1MCw3IEBA IGRmX3VzZXNfcmVjb3JkIChzdHJ1Y3QgZGZfY29sbGVjdGlvbl9yZWMKIAkg ICAgZm9yIChqID0gMDsgaiA8IFhWRUNMRU4gKHgsIGkpOyBqKyspCiAJICAg ICAgZGZfdXNlc19yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLAogCQkJICAgICAg JlhWRUNFWFAgKHgsIGksIGopLCByZWZfdHlwZSwgCi0JCQkgICAgICBiYiwg aW5zbiwgZmxhZ3MsIAorCQkJICAgICAgYmIsIGluc25faW5mbywgZmxhZ3Ms IAogCQkJICAgICAgd2lkdGgsIG9mZnNldCwgbW9kZSk7CiAJICB9CiAgICAg ICB9CkBAIC0zMTc5LDcgKzMxODUsNyBAQCBkZl9nZXRfY29uZGl0aW9uYWxf dXNlcyAoc3RydWN0IGRmX2NvbGxlCiAKICAgICAgICAgICB1c2UgPSBkZl9y ZWZfY3JlYXRlX3N0cnVjdHVyZSAoY29sbGVjdGlvbl9yZWMsIERGX1JFRl9S RUcgKHJlZiksCiAJCQkJCSBERl9SRUZfTE9DIChyZWYpLCBERl9SRUZfQkIg KHJlZiksCi0JCQkJCSBERl9SRUZfSU5TTiAocmVmKSwgREZfUkVGX1JFR19V U0UsCisJCQkJCSBERl9SRUZfSU5TTl9JTkZPIChyZWYpLCBERl9SRUZfUkVH X1VTRSwKIAkJCQkJIERGX1JFRl9GTEFHUyAocmVmKSAmIH5ERl9SRUZfQ09O RElUSU9OQUwsCiAJCQkJCSB3aWR0aCwgb2Zmc2V0LCBtb2RlKTsKICAgICAg ICAgICBERl9SRUZfUkVHTk8gKHVzZSkgPSBERl9SRUZfUkVHTk8gKHJlZik7 CkBAIC0zMTkzLDcgKzMxOTksNyBAQCBkZl9nZXRfY29uZGl0aW9uYWxfdXNl cyAoc3RydWN0IGRmX2NvbGxlCiBzdGF0aWMgdm9pZAogZGZfZ2V0X2NhbGxf cmVmcyAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcmVjICogY29sbGVjdGlvbl9y ZWMsCiAgICAgICAgICAgICAgICAgICBiYXNpY19ibG9jayBiYiwgCi0gICAg ICAgICAgICAgICAgICBydHggaW5zbiwKKyAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkZl9pbnNuX2luZm8gKmluc25faW5mbywKICAgICAgICAgICAgICAg ICAgIGVudW0gZGZfcmVmX2ZsYWdzIGZsYWdzKQogewogICBydHggbm90ZTsK QEAgLTMyMTQsMTIgKzMyMjAsMTIgQEAgZGZfZ2V0X2NhbGxfcmVmcyAoc3Ry dWN0IGRmX2NvbGxlY3Rpb25fcgogCiAgIC8qIFJlY29yZCB0aGUgcmVnaXN0 ZXJzIHVzZWQgdG8gcGFzcyBhcmd1bWVudHMsIGFuZCBleHBsaWNpdGx5CiAg ICAgIG5vdGVkIGFzIGNsb2JiZXJlZC4gICovCi0gIGZvciAobm90ZSA9IENB TExfSU5TTl9GVU5DVElPTl9VU0FHRSAoaW5zbik7IG5vdGU7CisgIGZvciAo bm90ZSA9IENBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAoaW5zbl9pbmZvLT5p bnNuKTsgbm90ZTsKICAgICAgICBub3RlID0gWEVYUCAobm90ZSwgMSkpCiAg ICAgewogICAgICAgaWYgKEdFVF9DT0RFIChYRVhQIChub3RlLCAwKSkgPT0g VVNFKQogICAgICAgICBkZl91c2VzX3JlY29yZCAoY29sbGVjdGlvbl9yZWMs ICZYRVhQIChYRVhQIChub3RlLCAwKSwgMCksCi0JCQlERl9SRUZfUkVHX1VT RSwgYmIsIGluc24sIGZsYWdzLCAtMSwgLTEsIDApOworCQkJREZfUkVGX1JF R19VU0UsIGJiLCBpbnNuX2luZm8sIGZsYWdzLCAtMSwgLTEsIDApOwogICAg ICAgZWxzZSBpZiAoR0VUX0NPREUgKFhFWFAgKG5vdGUsIDApKSA9PSBDTE9C QkVSKQogCXsKIAkgIGlmIChSRUdfUCAoWEVYUCAoWEVYUCAobm90ZSwgMCks IDApKSkKQEAgLTMyMjcsMTcgKzMyMzMsMTggQEAgZGZfZ2V0X2NhbGxfcmVm cyAoc3RydWN0IGRmX2NvbGxlY3Rpb25fcgogCSAgICAgIHVuc2lnbmVkIGlu dCByZWdubyA9IFJFR05PIChYRVhQIChYRVhQIChub3RlLCAwKSwgMCkpOwog CSAgICAgIGlmICghYml0bWFwX2JpdF9wIChkZWZzX2dlbmVyYXRlZCwgcmVn bm8pKQogCQlkZl9kZWZzX3JlY29yZCAoY29sbGVjdGlvbl9yZWMsIFhFWFAg KG5vdGUsIDApLCBiYiwKLQkJCQlpbnNuLCBmbGFncyk7CisJCQkJaW5zbl9p bmZvLCBmbGFncyk7CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgZGZfdXNlc19y ZWNvcmQgKGNvbGxlY3Rpb25fcmVjLCAmWEVYUCAobm90ZSwgMCksCi0JCSAg ICAgICAgICAgIERGX1JFRl9SRUdfVVNFLCBiYiwgaW5zbiwgZmxhZ3MsIC0x LCAtMSwgMCk7CisJCSAgICAgICAgICAgIERGX1JFRl9SRUdfVVNFLCBiYiwg aW5zbl9pbmZvLCBmbGFncywgLTEsIC0xLCAwKTsKIAl9CiAgICAgfQogCiAg IC8qIFRoZSBzdGFjayBwdHIgaXMgdXNlZCAoaG9ub3JhcmlseSkgYnkgYSBD QUxMIGluc24uICAqLwogICBkZl9yZWZfcmVjb3JkIChjb2xsZWN0aW9uX3Jl YywgcmVnbm9fcmVnX3J0eFtTVEFDS19QT0lOVEVSX1JFR05VTV0sCi0JCSBO VUxMLCBiYiwgaW5zbiwgREZfUkVGX1JFR19VU0UsIERGX1JFRl9DQUxMX1NU QUNLX1VTQUdFIHwgZmxhZ3MsIAorCQkgTlVMTCwgYmIsIGluc25faW5mbywg REZfUkVGX1JFR19VU0UsCisJCSBERl9SRUZfQ0FMTF9TVEFDS19VU0FHRSB8 IGZsYWdzLCAKIAkJIC0xLCAtMSwgMCk7CiAKICAgLyogQ2FsbHMgbWF5IGFs c28gcmVmZXJlbmNlIGFueSBvZiB0aGUgZ2xvYmFsIHJlZ2lzdGVycywKQEAg LTMyNDYsMTIgKzMyNTMsMTIgQEAgZGZfZ2V0X2NhbGxfcmVmcyAoc3RydWN0 IGRmX2NvbGxlY3Rpb25fcgogICAgIGlmIChnbG9iYWxfcmVnc1tpXSkKICAg ICAgIHsKIAlkZl9yZWZfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywgcmVnbm9f cmVnX3J0eFtpXSwKLQkJICAgICAgIE5VTEwsIGJiLCBpbnNuLCBERl9SRUZf UkVHX1VTRSwgZmxhZ3MsIC0xLCAtMSwgMCk7CisJCSAgICAgICBOVUxMLCBi YiwgaW5zbl9pbmZvLCBERl9SRUZfUkVHX1VTRSwgZmxhZ3MsIC0xLCAtMSwg MCk7CiAJZGZfcmVmX3JlY29yZCAoY29sbGVjdGlvbl9yZWMsIHJlZ25vX3Jl Z19ydHhbaV0sCi0JCSAgICAgICBOVUxMLCBiYiwgaW5zbiwgREZfUkVGX1JF R19ERUYsIGZsYWdzLCAtMSwgLTEsIDApOworCQkgICAgICAgTlVMTCwgYmIs IGluc25faW5mbywgREZfUkVGX1JFR19ERUYsIGZsYWdzLCAtMSwgLTEsIDAp OwogICAgICAgfQogCi0gIGlzX3NpYmxpbmdfY2FsbCA9IFNJQkxJTkdfQ0FM TF9QIChpbnNuKTsKKyAgaXNfc2libGluZ19jYWxsID0gU0lCTElOR19DQUxM X1AgKGluc25faW5mby0+aW5zbik7CiAgIEVYRUNVVEVfSUZfU0VUX0lOX0JJ VE1BUCAoZGZfaW52YWxpZGF0ZWRfYnlfY2FsbCwgMCwgdWksIGJpKQogICAg IHsKICAgICAgIGlmICghZ2xvYmFsX3JlZ3NbdWldCkBAIC0zMjYxLDcgKzMy NjgsOCBAQCBkZl9nZXRfY2FsbF9yZWZzIChzdHJ1Y3QgZGZfY29sbGVjdGlv bl9yCiAJICAgICAgfHwgcmVmZXJzX3RvX3JlZ25vX3AgKHVpLCB1aSsxLCAK IAkJCQkgICAgY3J0bC0+cmV0dXJuX3J0eCwgTlVMTCkpKQogICAgICAgICBk Zl9yZWZfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywgcmVnbm9fcmVnX3J0eFt1 aV0sIAotCQkgICAgICAgTlVMTCwgYmIsIGluc24sIERGX1JFRl9SRUdfREVG LCBERl9SRUZfTUFZX0NMT0JCRVIgfCBmbGFncywgCisJCSAgICAgICBOVUxM LCBiYiwgaW5zbl9pbmZvLCBERl9SRUZfUkVHX0RFRiwKKwkJICAgICAgIERG X1JFRl9NQVlfQ0xPQkJFUiB8IGZsYWdzLCAKIAkJICAgICAgIC0xLCAtMSwg MCk7CiAgICAgfQogCkBAIC0zMjc2LDEwICszMjg0LDEwIEBAIGRmX2dldF9j YWxsX3JlZnMgKHN0cnVjdCBkZl9jb2xsZWN0aW9uX3IKIAogc3RhdGljIHZv aWQKIGRmX2luc25fcmVmc19jb2xsZWN0IChzdHJ1Y3QgZGZfY29sbGVjdGlv bl9yZWMqIGNvbGxlY3Rpb25fcmVjLCAKLQkJICAgICAgYmFzaWNfYmxvY2sg YmIsIHJ0eCBpbnNuKSAKKwkJICAgICAgYmFzaWNfYmxvY2sgYmIsIHN0cnVj dCBkZl9pbnNuX2luZm8gKmluc25faW5mbykgCiB7CiAgIHJ0eCBub3RlOwot ICBib29sIGlzX2NvbmRfZXhlYyA9IChHRVRfQ09ERSAoUEFUVEVSTiAoaW5z bikpID09IENPTkRfRVhFQyk7CisgIGJvb2wgaXNfY29uZF9leGVjID0gKEdF VF9DT0RFIChQQVRURVJOIChpbnNuX2luZm8tPmluc24pKSA9PSBDT05EX0VY RUMpOwogCiAgIC8qIENsZWFyIG91dCB0aGUgY29sbGVjdGlvbiByZWNvcmQu ICAqLwogICBjb2xsZWN0aW9uX3JlYy0+bmV4dF9kZWYgPSAwOwpAQCAtMzI4 OCwxMCArMzI5NiwxMCBAQCBkZl9pbnNuX3JlZnNfY29sbGVjdCAoc3RydWN0 IGRmX2NvbGxlY3RpCiAgIGNvbGxlY3Rpb25fcmVjLT5uZXh0X213ID0gMDsK IAogICAvKiBSZWNvcmQgcmVnaXN0ZXIgZGVmcy4gICovCi0gIGRmX2RlZnNf cmVjb3JkIChjb2xsZWN0aW9uX3JlYywgUEFUVEVSTiAoaW5zbiksIGJiLCBp bnNuLCAwKTsKKyAgZGZfZGVmc19yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLCBQ QVRURVJOIChpbnNuX2luZm8tPmluc24pLCBiYiwgaW5zbl9pbmZvLCAwKTsK IAotICAvKiBQcm9jZXNzIFJFR19FUVVJVi9SRUdfRVFVQUwgbm90ZXMgKi8K LSAgZm9yIChub3RlID0gUkVHX05PVEVTIChpbnNuKTsgbm90ZTsKKyAgLyog UHJvY2VzcyBSRUdfRVFVSVYvUkVHX0VRVUFMIG5vdGVzLiAgKi8KKyAgZm9y IChub3RlID0gUkVHX05PVEVTIChpbnNuX2luZm8tPmluc24pOyBub3RlOwog ICAgICAgIG5vdGUgPSBYRVhQIChub3RlLCAxKSkKICAgICB7CiAgICAgICBz d2l0Y2ggKFJFR19OT1RFX0tJTkQgKG5vdGUpKQpAQCAtMzMwMCwyMCArMzMw OCwxOCBAQCBkZl9pbnNuX3JlZnNfY29sbGVjdCAoc3RydWN0IGRmX2NvbGxl Y3RpCiAgICAgICAgIGNhc2UgUkVHX0VRVUFMOgogICAgICAgICAgIGRmX3Vz ZXNfcmVjb3JkIChjb2xsZWN0aW9uX3JlYywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgJlhFWFAgKG5vdGUsIDApLCBERl9SRUZfUkVHX1VTRSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgYmIsIGluc24sIERGX1JFRl9JTl9O T1RFLCAtMSwgLTEsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICBi YiwgaW5zbl9pbmZvLCBERl9SRUZfSU5fTk9URSwgLTEsIC0xLCAwKTsKICAg ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSRUdfTk9OX0xPQ0FMX0dP VE86CiAgICAgICAgICAgLyogVGhlIGZyYW1lIHB0ciBpcyB1c2VkIGJ5IGEg bm9uLWxvY2FsIGdvdG8uICAqLwogICAgICAgICAgIGRmX3JlZl9yZWNvcmQg KGNvbGxlY3Rpb25fcmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJl Z25vX3JlZ19ydHhbRlJBTUVfUE9JTlRFUl9SRUdOVU1dLAotICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgYmIsIGluc24sIAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IGJiLCBpbnNuX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgREZf UkVGX1JFR19VU0UsIDAsIC0xLCAtMSwgMCk7CiAjaWYgRlJBTUVfUE9JTlRF Ul9SRUdOVU0gIT0gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTQogICAgICAg ICAgIGRmX3JlZl9yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLAogICAgICAgICAg ICAgICAgICAgICAgICAgIHJlZ25vX3JlZ19ydHhbSEFSRF9GUkFNRV9QT0lO VEVSX1JFR05VTV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwK LSAgICAgICAgICAgICAgICAgICAgICAgICBiYiwgaW5zbiwgCisgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgYmIsIGluc25faW5mbywKICAgICAg ICAgICAgICAgICAgICAgICAgICBERl9SRUZfUkVHX1VTRSwgMCwgLTEsIC0x LCAwKTsKICNlbmRpZgogICAgICAgICAgIGJyZWFrOwpAQCAtMzMyMiwxMyAr MzMyOCwxMyBAQCBkZl9pbnNuX3JlZnNfY29sbGVjdCAoc3RydWN0IGRmX2Nv bGxlY3RpCiAgICAgICAgIH0KICAgICB9CiAKLSAgaWYgKENBTExfUCAoaW5z bikpCi0gICAgZGZfZ2V0X2NhbGxfcmVmcyAoY29sbGVjdGlvbl9yZWMsIGJi LCBpbnNuLCAKKyAgaWYgKENBTExfUCAoaW5zbl9pbmZvLT5pbnNuKSkKKyAg ICBkZl9nZXRfY2FsbF9yZWZzIChjb2xsZWN0aW9uX3JlYywgYmIsIGluc25f aW5mbywgCiAJCSAgICAgIChpc19jb25kX2V4ZWMpID8gREZfUkVGX0NPTkRJ VElPTkFMIDogMCk7CiAKICAgLyogUmVjb3JkIHRoZSByZWdpc3RlciB1c2Vz LiAgKi8KICAgZGZfdXNlc19yZWNvcmQgKGNvbGxlY3Rpb25fcmVjLAotCQkg ICZQQVRURVJOIChpbnNuKSwgREZfUkVGX1JFR19VU0UsIGJiLCBpbnNuLCAw LCAKKwkJICAmUEFUVEVSTiAoaW5zbl9pbmZvLT5pbnNuKSwgREZfUkVGX1JF R19VU0UsIGJiLCBpbnNuX2luZm8sIDAsIAogCQkgIC0xLCAtMSwgMCk7CiAK ICAgLyogREZfUkVGX0NPTkRJVElPTkFMIG5lZWRzIGNvcnJlc3BvbmRpbmcg VVNFUy4gKi8KQEAgLTMzNTEsMTYgKzMzNTcsMTYgQEAgZGZfcmVjb21wdXRl X2x1aWRzIChiYXNpY19ibG9jayBiYikKICAgLyogU2NhbiB0aGUgYmxvY2sg YW4gaW5zbiBhdCBhIHRpbWUgZnJvbSBiZWdpbm5pbmcgdG8gZW5kLiAgKi8K ICAgRk9SX0JCX0lOU05TIChiYiwgaW5zbikKICAgICB7Ci0gICAgICBzdHJ1 Y3QgZGZfaW5zbl9pbmZvICppbnNuX2luZm8gPSBERl9JTlNOX0dFVCAoaW5z bik7CisgICAgICBzdHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNuX2luZm8gPSBE Rl9JTlNOX0lORk9fR0VUIChpbnNuKTsKICAgICAgIC8qIEluc2VydGluZyBs YWJlbHMgZG9lcyBub3QgYWx3YXlzIHRyaWdnZXIgdGhlIGluY3JlbWVudGFs CiAJIHJlc2Nhbm5pbmcuICAqLwogICAgICAgaWYgKCFpbnNuX2luZm8pCiAJ ewogCSAgZ2NjX2Fzc2VydCAoIUlOU05fUCAoaW5zbikpOwotCSAgZGZfaW5z bl9jcmVhdGVfaW5zbl9yZWNvcmQgKGluc24pOworCSAgaW5zbl9pbmZvID0g ZGZfaW5zbl9jcmVhdGVfaW5zbl9yZWNvcmQgKGluc24pOwogCX0KIAotICAg ICAgREZfSU5TTl9MVUlEIChpbnNuKSA9IGx1aWQ7CisgICAgICBERl9JTlNO X0lORk9fTFVJRCAoaW5zbl9pbmZvKSA9IGx1aWQ7CiAgICAgICBpZiAoSU5T Tl9QIChpbnNuKSkKIAlsdWlkKys7CiAgICAgfQpAQCAtMzQ5OSwxOCArMzUw NSwxOCBAQCBkZl9iYl9yZWZzX3JlY29yZCAoaW50IGJiX2luZGV4LCBib29s IHNjCiAgICAgLyogU2NhbiB0aGUgYmxvY2sgYW4gaW5zbiBhdCBhIHRpbWUg ZnJvbSBiZWdpbm5pbmcgdG8gZW5kLiAgKi8KICAgICBGT1JfQkJfSU5TTlMg KGJiLCBpbnNuKQogICAgICAgewotCXN0cnVjdCBkZl9pbnNuX2luZm8gKmlu c25faW5mbyA9IERGX0lOU05fR0VUIChpbnNuKTsKKwlzdHJ1Y3QgZGZfaW5z bl9pbmZvICppbnNuX2luZm8gPSBERl9JTlNOX0lORk9fR0VUIChpbnNuKTsK IAlnY2NfYXNzZXJ0ICghaW5zbl9pbmZvKTsKIAotCWRmX2luc25fY3JlYXRl X2luc25fcmVjb3JkIChpbnNuKTsKKwlpbnNuX2luZm8gPSBkZl9pbnNuX2Ny ZWF0ZV9pbnNuX3JlY29yZCAoaW5zbik7CiAJaWYgKElOU05fUCAoaW5zbikp CiAJICB7CiAJICAgIC8qIFJlY29yZCByZWZzIHdpdGhpbiBJTlNOLiAgKi8K LQkgICAgREZfSU5TTl9MVUlEIChpbnNuKSA9IGx1aWQrKzsKLQkgICAgZGZf aW5zbl9yZWZzX2NvbGxlY3QgKCZjb2xsZWN0aW9uX3JlYywgYmIsIGluc24p OworCSAgICBERl9JTlNOX0lORk9fTFVJRCAoaW5zbl9pbmZvKSA9IGx1aWQr KzsKKwkgICAgZGZfaW5zbl9yZWZzX2NvbGxlY3QgKCZjb2xsZWN0aW9uX3Jl YywgYmIsIERGX0lOU05fSU5GT19HRVQgKGluc24pKTsKIAkgICAgZGZfcmVm c19hZGRfdG9fY2hhaW5zICgmY29sbGVjdGlvbl9yZWMsIGJiLCBpbnNuKTsK IAkgIH0KLQlERl9JTlNOX0xVSUQgKGluc24pID0gbHVpZDsKKwlERl9JTlNO X0lORk9fTFVJRCAoaW5zbl9pbmZvKSA9IGx1aWQ7CiAgICAgICB9CiAKICAg LyogT3RoZXIgYmxvY2sgbGV2ZWwgYXJ0aWZpY2lhbCByZWZzICovCkBAIC00 MjcyLDggKzQyNzgsOSBAQCBkZl9pbnNuX3JlZnNfdmVyaWZ5IChzdHJ1Y3Qg ZGZfY29sbGVjdGlvCiB7CiAgIGJvb2wgcmV0MSwgcmV0MiwgcmV0MywgcmV0 NDsKICAgdW5zaWduZWQgaW50IHVpZCA9IElOU05fVUlEIChpbnNuKTsKKyAg c3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0gREZfSU5TTl9JTkZP X0dFVCAoaW5zbik7CiAKLSAgZGZfaW5zbl9yZWZzX2NvbGxlY3QgKGNvbGxl Y3Rpb25fcmVjLCBiYiwgaW5zbik7CisgIGRmX2luc25fcmVmc19jb2xsZWN0 IChjb2xsZWN0aW9uX3JlYywgYmIsIGluc25faW5mbyk7CiAKICAgaWYgKCFE Rl9JTlNOX1VJRF9ERUZTICh1aWQpKQogICAgIHsKSW5kZXg6IGRmLXByb2Js ZW1zLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZGYtcHJvYmxlbXMu YwkocmV2aXNpb24gMTM2ODY4KQorKysgZGYtcHJvYmxlbXMuYwkod29ya2lu ZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIGRmX2NoYWluX2R1bXAgKHN0 cnVjdCBkZl9saW5rICpsaW5rLCBGSUwKIAkgICAgICAgREZfUkVGX1JFR19E RUZfUCAobGluay0+cmVmKSA/ICdkJyA6ICd1JywKIAkgICAgICAgREZfUkVG X0lEIChsaW5rLT5yZWYpLAogCSAgICAgICBERl9SRUZfQkJOTyAobGluay0+ cmVmKSwKLQkgICAgICAgREZfUkVGX0lOU04gKGxpbmstPnJlZikgPyBERl9S RUZfSU5TTl9VSUQgKGxpbmstPnJlZikgOiAtMSk7CisJICAgICAgIERGX1JF Rl9JTlNOX0lORk8gKGxpbmstPnJlZikgPyBERl9SRUZfSU5TTl9VSUQgKGxp bmstPnJlZikgOiAtMSk7CiAgICAgfQogICBmcHJpbnRmIChmaWxlLCAifSIp OwogfQpAQCAtMTQyOSwxNSArMTQyOSwxNSBAQCBkZl9saXZlX2JiX2xvY2Fs X2NvbXB1dGUgKHVuc2lnbmVkIGludCBiCiAgICAgICBpZiAoIWluc25faW5m bykKIAl7CiAJICBnY2NfYXNzZXJ0ICghSU5TTl9QIChpbnNuKSk7Ci0JICBk Zl9pbnNuX2NyZWF0ZV9pbnNuX3JlY29yZCAoaW5zbik7CisJICBpbnNuX2lu Zm8gPSBkZl9pbnNuX2NyZWF0ZV9pbnNuX3JlY29yZCAoaW5zbik7CiAJfQog Ci0gICAgICBERl9JTlNOX0xVSUQgKGluc24pID0gbHVpZDsKKyAgICAgIERG X0lOU05fSU5GT19MVUlEIChpbnNuX2luZm8pID0gbHVpZDsKICAgICAgIGlm ICghSU5TTl9QIChpbnNuKSkKIAljb250aW51ZTsKIAogICAgICAgbHVpZCsr OwotICAgICAgZm9yIChkZWZfcmVjID0gREZfSU5TTl9VSURfREVGUyAodWlk KTsgKmRlZl9yZWM7IGRlZl9yZWMrKykKKyAgICAgIGZvciAoZGVmX3JlYyA9 IERGX0lOU05fSU5GT19ERUZTIChpbnNuX2luZm8pOyAqZGVmX3JlYzsgZGVm X3JlYysrKQogCXsKIAkgIHN0cnVjdCBkZl9yZWYgKmRlZiA9ICpkZWZfcmVj OwogCSAgdW5zaWduZWQgaW50IHJlZ25vID0gREZfUkVGX1JFR05PIChkZWYp OwpAQCAtMjIwMSwxNCArMjIwMSwxNCBAQCBkZl9jaGFpbl90b3BfZHVtcCAo YmFzaWNfYmxvY2sgYmIsIEZJTEUgCiAKICAgICAgIEZPUl9CQl9JTlNOUyAo YmIsIGluc24pCiAJewotCSAgdW5zaWduZWQgaW50IHVpZCA9IElOU05fVUlE IChpbnNuKTsKIAkgIGlmIChJTlNOX1AgKGluc24pKQogCSAgICB7Ci0JICAg ICAgZGVmX3JlYyA9IERGX0lOU05fVUlEX0RFRlMgKHVpZCk7CisJICAgICAg c3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0gREZfSU5TTl9JTkZP X0dFVCAoaW5zbik7CisJICAgICAgZGVmX3JlYyA9IERGX0lOU05fSU5GT19E RUZTIChpbnNuX2luZm8pOwogCSAgICAgIGlmICgqZGVmX3JlYykKIAkJewog CQkgIGZwcmludGYgKGZpbGUsICI7OyAgIERVIGNoYWlucyBmb3IgaW5zbiBs dWlkICVkIHVpZCAlZFxuIiwgCi0JCQkgICBERl9JTlNOX0xVSUQgKGluc24p LCB1aWQpOworCQkJICAgREZfSU5TTl9JTkZPX0xVSUQgKGluc25faW5mbyks IElOU05fVUlEIChpbnNuKSk7CiAJCSAgCiAJCSAgd2hpbGUgKCpkZWZfcmVj KQogCQkgICAgewpAQCAtMjI1MCwxNSArMjI1MCwxNSBAQCBkZl9jaGFpbl9i b3R0b21fZHVtcCAoYmFzaWNfYmxvY2sgYmIsIEZJCiAKICAgICAgIEZPUl9C Ql9JTlNOUyAoYmIsIGluc24pCiAJewotCSAgdW5zaWduZWQgaW50IHVpZCA9 IElOU05fVUlEIChpbnNuKTsKIAkgIGlmIChJTlNOX1AgKGluc24pKQogCSAg ICB7Ci0JICAgICAgc3RydWN0IGRmX3JlZiAqKmVxX3VzZV9yZWMgPSBERl9J TlNOX1VJRF9FUV9VU0VTICh1aWQpOwotCSAgICAgIHVzZV9yZWMgPSBERl9J TlNOX1VJRF9VU0VTICh1aWQpOworCSAgICAgIHN0cnVjdCBkZl9pbnNuX2lu Zm8gKmluc25faW5mbyA9IERGX0lOU05fSU5GT19HRVQgKGluc24pOworCSAg ICAgIHN0cnVjdCBkZl9yZWYgKiplcV91c2VfcmVjID0gREZfSU5TTl9JTkZP X0VRX1VTRVMgKGluc25faW5mbyk7CisJICAgICAgdXNlX3JlYyA9IERGX0lO U05fSU5GT19VU0VTIChpbnNuX2luZm8pOwogCSAgICAgIGlmICgqdXNlX3Jl YyB8fCAqZXFfdXNlX3JlYykKIAkJewogCQkgIGZwcmludGYgKGZpbGUsICI7 OyAgIFVEIGNoYWlucyBmb3IgaW5zbiBsdWlkICVkIHVpZCAlZFxuIiwgCi0J CQkgICBERl9JTlNOX0xVSUQgKGluc24pLCB1aWQpOworCQkJICAgREZfSU5T Tl9JTkZPX0xVSUQgKGluc25faW5mbyksIElOU05fVUlEIChpbnNuKSk7CiAJ CSAgCiAJCSAgd2hpbGUgKCp1c2VfcmVjKQogCQkgICAgewpAQCAtMjUxNSw4 ICsyNTE1LDkgQEAgZGZfYnl0ZV9scl9hbGxvYyAoYml0bWFwIGFsbF9ibG9j a3MgQVRUUgogCXsKIAkgIGlmIChJTlNOX1AgKGluc24pKQogCSAgICB7Ci0J ICAgICAgZGZfYnl0ZV9scl9jaGVja19yZWdzIChERl9JTlNOX0RFRlMgKGlu c24pKTsKLQkgICAgICBkZl9ieXRlX2xyX2NoZWNrX3JlZ3MgKERGX0lOU05f VVNFUyAoaW5zbikpOworCSAgICAgIHN0cnVjdCBkZl9pbnNuX2luZm8gKmlu c25faW5mbyA9IERGX0lOU05fSU5GT19HRVQgKGluc24pOworCSAgICAgIGRm X2J5dGVfbHJfY2hlY2tfcmVncyAoREZfSU5TTl9JTkZPX0RFRlMgKGluc25f aW5mbykpOworCSAgICAgIGRmX2J5dGVfbHJfY2hlY2tfcmVncyAoREZfSU5T Tl9JTkZPX1VTRVMgKGluc25faW5mbykpOwogCSAgICB9CiAJfQogICAgICAg Yml0bWFwX3NldF9iaXQgKGRmX2J5dGVfbHItPm91dF9vZl9kYXRlX3RyYW5z ZmVyX2Z1bmN0aW9ucywgYmItPmluZGV4KTsKSW5kZXg6IGZ3cHJvcC5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGZ3cHJvcC5jCShyZXZpc2lvbiAx MzY4NjgpCisrKyBmd3Byb3AuYwkod29ya2luZyBjb3B5KQpAQCAtNTQ2LDEz ICs1NDYsMTMgQEAgdXNlX2tpbGxlZF9iZXR3ZWVuIChzdHJ1Y3QgZGZfcmVm ICp1c2UsIAogICAgICAgLyogU2VlIGlmIFVTRSBpcyBraWxsZWQgYmV0d2Vl biBERUZfSU5TTiBhbmQgdGhlIGxhc3QgaW5zbiBpbiB0aGUKIAkgYmFzaWMg YmxvY2sgY29udGFpbmluZyBERUZfSU5TTi4gICovCiAgICAgICB4ID0gZGZf YmJfcmVnbm9fbGFzdF9kZWZfZmluZCAoZGVmX2JiLCByZWdubyk7Ci0gICAg ICBpZiAoeCAmJiBERl9JTlNOX0xVSUQgKHgtPmluc24pID49IERGX0lOU05f TFVJRCAoZGVmX2luc24pKQorICAgICAgaWYgKHggJiYgREZfSU5TTl9MVUlE IChERl9SRUZfSU5TTiAoeCkpID49IERGX0lOU05fTFVJRCAoZGVmX2luc24p KQogCXJldHVybiB0cnVlOwogCiAgICAgICAvKiBTZWUgaWYgVVNFIGlzIGtp bGxlZCBiZXR3ZWVuIFRBUkdFVF9JTlNOIGFuZCB0aGUgZmlyc3QgaW5zbiBp biB0aGUKIAkgYmFzaWMgYmxvY2sgY29udGFpbmluZyBUQVJHRVRfSU5TTi4g ICovCiAgICAgICB4ID0gZGZfYmJfcmVnbm9fZmlyc3RfZGVmX2ZpbmQgKHRh cmdldF9iYiwgcmVnbm8pOwotICAgICAgaWYgKHggJiYgREZfSU5TTl9MVUlE ICh4LT5pbnNuKSA8IERGX0lOU05fTFVJRCAodGFyZ2V0X2luc24pKQorICAg ICAgaWYgKHggJiYgREZfSU5TTl9MVUlEIChERl9SRUZfSU5TTiAoeCkpIDwg REZfSU5TTl9MVUlEICh0YXJnZXRfaW5zbikpCiAJcmV0dXJuIHRydWU7CiAK ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU3MCw2ICs1NzAsNyBAQCBzdGF0 aWMgYm9vbAogYWxsX3VzZXNfYXZhaWxhYmxlX2F0IChydHggZGVmX2luc24s IHJ0eCB0YXJnZXRfaW5zbikKIHsKICAgc3RydWN0IGRmX3JlZiAqKnVzZV9y ZWM7CisgIHN0cnVjdCBkZl9pbnNuX2luZm8gKmluc25faW5mbyA9IERGX0lO U05fSU5GT19HRVQgKGRlZl9pbnNuKTsKICAgcnR4IGRlZl9zZXQgPSBzaW5n bGVfc2V0IChkZWZfaW5zbik7CiAKICAgZ2NjX2Fzc2VydCAoZGVmX3NldCk7 CkBAIC01ODMsMTMgKzU4NCwxMyBAQCBhbGxfdXNlc19hdmFpbGFibGVfYXQg KHJ0eCBkZWZfaW5zbiwgcnR4CiAKICAgICAgIC8qIElmIHRoZSBpbnNuIHVz ZXMgdGhlIHJlZyB0aGF0IGl0IGRlZmluZXMsIHRoZSBzdWJzdGl0dXRpb24g aXMKICAgICAgICAgIGludmFsaWQuICAqLwotICAgICAgZm9yICh1c2VfcmVj ID0gREZfSU5TTl9VU0VTIChkZWZfaW5zbik7ICp1c2VfcmVjOyB1c2VfcmVj KyspCisgICAgICBmb3IgKHVzZV9yZWMgPSBERl9JTlNOX0lORk9fVVNFUyAo aW5zbl9pbmZvKTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKIAl7CiAJICBzdHJ1 Y3QgZGZfcmVmICp1c2UgPSAqdXNlX3JlYzsKIAkgIGlmIChydHhfZXF1YWxf cCAoREZfUkVGX1JFRyAodXNlKSwgZGVmX3JlZykpCiAJICAgIHJldHVybiBm YWxzZTsKIAl9Ci0gICAgICBmb3IgKHVzZV9yZWMgPSBERl9JTlNOX0VRX1VT RVMgKGRlZl9pbnNuKTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKKyAgICAgIGZv ciAodXNlX3JlYyA9IERGX0lOU05fSU5GT19FUV9VU0VTIChpbnNuX2luZm8p OyAqdXNlX3JlYzsgdXNlX3JlYysrKQogCXsKIAkgIHN0cnVjdCBkZl9yZWYg KnVzZSA9ICp1c2VfcmVjOwogCSAgaWYgKHJ0eF9lcXVhbF9wICh1c2UtPnJl ZywgZGVmX3JlZykpCkBAIC02MDAsMTMgKzYwMSwxMyBAQCBhbGxfdXNlc19h dmFpbGFibGVfYXQgKHJ0eCBkZWZfaW5zbiwgcnR4CiAgICAgewogICAgICAg LyogTG9vayBhdCBhbGwgdGhlIHVzZXMgb2YgREVGX0lOU04sIGFuZCBzZWUg aWYgdGhleSBhcmUgbm90CiAJIGtpbGxlZCBiZXR3ZWVuIERFRl9JTlNOIGFu ZCBUQVJHRVRfSU5TTi4gICovCi0gICAgICBmb3IgKHVzZV9yZWMgPSBERl9J TlNOX1VTRVMgKGRlZl9pbnNuKTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKKyAg ICAgIGZvciAodXNlX3JlYyA9IERGX0lOU05fSU5GT19VU0VTIChpbnNuX2lu Zm8pOyAqdXNlX3JlYzsgdXNlX3JlYysrKQogCXsKIAkgIHN0cnVjdCBkZl9y ZWYgKnVzZSA9ICp1c2VfcmVjOwogCSAgaWYgKHVzZV9raWxsZWRfYmV0d2Vl biAodXNlLCBkZWZfaW5zbiwgdGFyZ2V0X2luc24pKQogCSAgICByZXR1cm4g ZmFsc2U7CiAJfQotICAgICAgZm9yICh1c2VfcmVjID0gREZfSU5TTl9FUV9V U0VTIChkZWZfaW5zbik7ICp1c2VfcmVjOyB1c2VfcmVjKyspCisgICAgICBm b3IgKHVzZV9yZWMgPSBERl9JTlNOX0lORk9fRVFfVVNFUyAoaW5zbl9pbmZv KTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKIAl7CiAJICBzdHJ1Y3QgZGZfcmVm ICp1c2UgPSAqdXNlX3JlYzsKIAkgIGlmICh1c2Vfa2lsbGVkX2JldHdlZW4g KHVzZSwgZGVmX2luc24sIHRhcmdldF9pbnNuKSkKQEAgLTc2Nyw4ICs3Njgs OSBAQCB0cnlfZndwcm9wX3N1YnN0IChzdHJ1Y3QgZGZfcmVmICp1c2UsIHJ0 CiAgICAgICBkZl9yZWZfcmVtb3ZlICh1c2UpOwogICAgICAgaWYgKCFDT05T VEFOVF9QIChuZXcpKQogCXsKLQkgIHVwZGF0ZV9kZiAoaW5zbiwgbG9jLCBE Rl9JTlNOX1VTRVMgKGRlZl9pbnNuKSwgdHlwZSwgZmxhZ3MpOwotCSAgdXBk YXRlX2RmIChpbnNuLCBsb2MsIERGX0lOU05fRVFfVVNFUyAoZGVmX2luc24p LCB0eXBlLCBmbGFncyk7CisJICBzdHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNu X2luZm8gPSBERl9JTlNOX0lORk9fR0VUIChkZWZfaW5zbik7CisJICB1cGRh dGVfZGYgKGluc24sIGxvYywgREZfSU5TTl9JTkZPX1VTRVMgKGluc25faW5m byksIHR5cGUsIGZsYWdzKTsKKwkgIHVwZGF0ZV9kZiAoaW5zbiwgbG9jLCBE Rl9JTlNOX0lORk9fRVFfVVNFUyAoaW5zbl9pbmZvKSwgdHlwZSwgZmxhZ3Mp OwogCX0KICAgICB9CiAgIGVsc2UKQEAgLTc4OCw5ICs3OTAsMTAgQEAgdHJ5 X2Z3cHJvcF9zdWJzdCAoc3RydWN0IGRmX3JlZiAqdXNlLCBydAogCSAgICAg c2V0X3VuaXF1ZV9yZWdfbm90ZT8gICovCiAgICAgICAgICAgaWYgKCFDT05T VEFOVF9QIChuZXcpKQogCSAgICB7Ci0JICAgICAgdXBkYXRlX2RmIChpbnNu LCBsb2MsIERGX0lOU05fVVNFUyAoZGVmX2luc24pLAorCSAgICAgIHN0cnVj dCBkZl9pbnNuX2luZm8gKmluc25faW5mbyA9IERGX0lOU05fSU5GT19HRVQg KGRlZl9pbnNuKTsKKwkgICAgICB1cGRhdGVfZGYgKGluc24sIGxvYywgREZf SU5TTl9JTkZPX1VTRVMgKGluc25faW5mbyksCiAJCQkgdHlwZSwgREZfUkVG X0lOX05PVEUpOwotCSAgICAgIHVwZGF0ZV9kZiAoaW5zbiwgbG9jLCBERl9J TlNOX0VRX1VTRVMgKGRlZl9pbnNuKSwKKwkgICAgICB1cGRhdGVfZGYgKGlu c24sIGxvYywgREZfSU5TTl9JTkZPX0VRX1VTRVMgKGluc25faW5mbyksCiAJ CQkgdHlwZSwgREZfUkVGX0lOX05PVEUpOwogCSAgICB9CiAJfQpJbmRleDog ZGRnLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZGRnLmMJKHJldmlz aW9uIDEzNjg2OCkKKysrIGRkZy5jCSh3b3JraW5nIGNvcHkpCkBAIC0yODks NyArMjg5LDcgQEAgYWRkX2Nyb3NzX2l0ZXJhdGlvbl9yZWdpc3Rlcl9kZXBz IChkZGdfcAogCSAgICAgZGVwcyB3aGVuIGJyb2tlbi4JSWYgdGhlIGZpcnN0 X2RlZiByZWFjaGVzIHRoZSBVU0UgdGhlbgogCSAgICAgdGhlcmUgaXMgc3Vj aCBhIGRlcC4gICovCiAJICBkZGdfbm9kZV9wdHIgZmlyc3RfZGVmX25vZGUg PSBnZXRfbm9kZV9vZl9pbnNuIChnLAotCQkJCQkJCSAgZmlyc3RfZGVmLT5p bnNuKTsKKwkJCQkJCQkgIERGX1JFRl9JTlNOIChmaXJzdF9kZWYpKTsKIAog CSAgZ2NjX2Fzc2VydCAoZmlyc3RfZGVmX25vZGUpOwogCkBAIC0zMTQsNyAr MzE0LDcgQEAgYWRkX2Nyb3NzX2l0ZXJhdGlvbl9yZWdpc3Rlcl9kZXBzIChk ZGdfcAogICAgICAgaWYgKGxhc3RfZGVmLT5pZCA9PSBmaXJzdF9kZWYtPmlk KQogCXJldHVybjsKIAotICAgICAgZGVzdF9ub2RlID0gZ2V0X25vZGVfb2Zf aW5zbiAoZywgZmlyc3RfZGVmLT5pbnNuKTsKKyAgICAgIGRlc3Rfbm9kZSA9 IGdldF9ub2RlX29mX2luc24gKGcsIERGX1JFRl9JTlNOIChmaXJzdF9kZWYp KTsKICAgICAgIGdjY19hc3NlcnQgKGRlc3Rfbm9kZSk7CiAgICAgICBjcmVh dGVfZGRnX2RlcF9ub19saW5rIChnLCBsYXN0X2RlZl9ub2RlLCBkZXN0X25v ZGUsCiAJCQkgICAgICBPVVRQVVRfREVQLCBSRUdfREVQLCAxKTsKSW5kZXg6 IHdlYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdlYi5jCShyZXZp c2lvbiAxMzY4NjgpCisrKyB3ZWIuYwkod29ya2luZyBjb3B5KQpAQCAtMTA1 LDIyICsxMDUsMjQgQEAgdW5pb25fZGVmcyAoc3RydWN0IGRmX3JlZiAqdXNl LCBzdHJ1Y3QgdwogIAkgICAgc3RydWN0IHdlYl9lbnRyeSAqdXNlX2VudHJ5 LAogIAkgICAgYm9vbCAoKmZ1bikgKHN0cnVjdCB3ZWJfZW50cnkgKiwgc3Ry dWN0IHdlYl9lbnRyeSAqKSkKIHsKLSAgcnR4IGluc24gPSBERl9SRUZfSU5T TiAodXNlKTsKKyAgc3RydWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0g REZfUkVGX0lOU05fSU5GTyAodXNlKTsKICAgc3RydWN0IGRmX2xpbmsgKmxp bmsgPSBERl9SRUZfQ0hBSU4gKHVzZSk7CiAgIHN0cnVjdCBkZl9yZWYgKip1 c2VfbGluazsKICAgc3RydWN0IGRmX3JlZiAqKmVxX3VzZV9saW5rOwogICBz dHJ1Y3QgZGZfcmVmICoqZGVmX2xpbms7CiAgIHJ0eCBzZXQ7CiAKLSAgaWYg KGluc24pCisgIGlmIChpbnNuX2luZm8pCiAgICAgewotICAgICAgdXNlX2xp bmsgPSBERl9JTlNOX1VTRVMgKGluc24pOwotICAgICAgZXFfdXNlX2xpbmsg PSBERl9JTlNOX0VRX1VTRVMgKGluc24pOwotICAgICAgZGVmX2xpbmsgPSBE Rl9JTlNOX0RFRlMgKGluc24pOworICAgICAgcnR4IGluc24gPSBpbnNuX2lu Zm8tPmluc247CisgICAgICB1c2VfbGluayA9IERGX0lOU05fSU5GT19VU0VT IChpbnNuX2luZm8pOworICAgICAgZXFfdXNlX2xpbmsgPSBERl9JTlNOX0lO Rk9fRVFfVVNFUyAoaW5zbl9pbmZvKTsKKyAgICAgIGRlZl9saW5rID0gREZf SU5TTl9JTkZPX0RFRlMgKGluc25faW5mbyk7CiAgICAgICBzZXQgPSBzaW5n bGVfc2V0IChpbnNuKTsKICAgICB9CiAgIGVsc2UKICAgICB7CisgICAgICAv KiBBbiBhcnRpZmljaWFsIHVzZS4gIEl0IGxpbmtzIHVwIHdpdGggbm90aGlu Zy4gICovCiAgICAgICB1c2VfbGluayA9IE5VTEw7CiAgICAgICBlcV91c2Vf bGluayA9IE5VTEw7CiAgICAgICBkZWZfbGluayA9IE5VTEw7CkBAIC0xODAs OCArMTgyLDggQEAgdW5pb25fZGVmcyAoc3RydWN0IGRmX3JlZiAqdXNlLCBz dHJ1Y3QgdwogICAgIHsKICAgICAgIHN0cnVjdCBkZl9yZWYgKipsaW5rOwog Ci0gICAgICBpZiAoREZfUkVGX0lOU04gKHVzZSkpCi0JbGluayA9IERGX0lO U05fREVGUyAoREZfUkVGX0lOU04gKHVzZSkpOworICAgICAgaWYgKGluc25f aW5mbykKKwlsaW5rID0gREZfSU5TTl9JTkZPX0RFRlMgKGluc25faW5mbyk7 CiAgICAgICBlbHNlCiAJbGluayA9IE5VTEw7CiAKSW5kZXg6IGxvb3AtaW52 YXJpYW50LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9vcC1pbnZh cmlhbnQuYwkocmV2aXNpb24gMTM2ODY4KQorKysgbG9vcC1pbnZhcmlhbnQu Ywkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIGludmFyaWFu dF9mb3JfdXNlIChzdHJ1Y3QgZGZfcmVmICp1c2UpCiB7CiAgIHN0cnVjdCBk Zl9saW5rICpkZWZzOwogICBzdHJ1Y3QgZGZfcmVmICpkZWY7Ci0gIGJhc2lj X2Jsb2NrIGJiID0gQkxPQ0tfRk9SX0lOU04gKHVzZS0+aW5zbiksIGRlZl9i YjsKKyAgYmFzaWNfYmxvY2sgYmIgPSBERl9SRUZfQkIgKHVzZSksIGRlZl9i YjsKIAogICBpZiAodXNlLT5mbGFncyAmIERGX1JFRl9SRUFEX1dSSVRFKQog ICAgIHJldHVybiBOVUxMOwpAQCAtNzY4LDEzICs3NjgsMTQgQEAgY2hlY2tf ZGVwZW5kZW5jeSAoYmFzaWNfYmxvY2sgYmIsIHN0cnVjdAogc3RhdGljIGJv b2wKIGNoZWNrX2RlcGVuZGVuY2llcyAocnR4IGluc24sIGJpdG1hcCBkZXBl bmRzX29uKQogeworICBzdHJ1Y3QgZGZfaW5zbl9pbmZvICppbnNuX2luZm8g PSBERl9JTlNOX0lORk9fR0VUIChpbnNuKTsKICAgc3RydWN0IGRmX3JlZiAq KnVzZV9yZWM7CiAgIGJhc2ljX2Jsb2NrIGJiID0gQkxPQ0tfRk9SX0lOU04g KGluc24pOwogCi0gIGZvciAodXNlX3JlYyA9IERGX0lOU05fVVNFUyAoaW5z bik7ICp1c2VfcmVjOyB1c2VfcmVjKyspCisgIGZvciAodXNlX3JlYyA9IERG X0lOU05fSU5GT19VU0VTIChpbnNuX2luZm8pOyAqdXNlX3JlYzsgdXNlX3Jl YysrKQogICAgIGlmICghY2hlY2tfZGVwZW5kZW5jeSAoYmIsICp1c2VfcmVj LCBkZXBlbmRzX29uKSkKICAgICAgIHJldHVybiBmYWxzZTsKLSAgZm9yICh1 c2VfcmVjID0gREZfSU5TTl9FUV9VU0VTIChpbnNuKTsgKnVzZV9yZWM7IHVz ZV9yZWMrKykKKyAgZm9yICh1c2VfcmVjID0gREZfSU5TTl9JTkZPX0VRX1VT RVMgKGluc25faW5mbyk7ICp1c2VfcmVjOyB1c2VfcmVjKyspCiAgICAgaWYg KCFjaGVja19kZXBlbmRlbmN5IChiYiwgKnVzZV9yZWMsIGRlcGVuZHNfb24p KQogICAgICAgcmV0dXJuIGZhbHNlOwogCQpAQCAtODUwLDE3ICs4NTEsMTgg QEAgZmluZF9pbnZhcmlhbnRfaW5zbiAocnR4IGluc24sIGJvb2wgYWx3YQog c3RhdGljIHZvaWQKIHJlY29yZF91c2VzIChydHggaW5zbikKIHsKKyAgc3Ry dWN0IGRmX2luc25faW5mbyAqaW5zbl9pbmZvID0gREZfSU5TTl9JTkZPX0dF VCAoaW5zbik7CiAgIHN0cnVjdCBkZl9yZWYgKip1c2VfcmVjOwogICBzdHJ1 Y3QgaW52YXJpYW50ICppbnY7CiAKLSAgZm9yICh1c2VfcmVjID0gREZfSU5T Tl9VU0VTIChpbnNuKTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKKyAgZm9yICh1 c2VfcmVjID0gREZfSU5TTl9JTkZPX1VTRVMgKGluc25faW5mbyk7ICp1c2Vf cmVjOyB1c2VfcmVjKyspCiAgICAgewogICAgICAgc3RydWN0IGRmX3JlZiAq dXNlID0gKnVzZV9yZWM7CiAgICAgICBpbnYgPSBpbnZhcmlhbnRfZm9yX3Vz ZSAodXNlKTsKICAgICAgIGlmIChpbnYpCiAJcmVjb3JkX3VzZSAoaW52LT5k ZWYsIERGX1JFRl9SRUFMX0xPQyAodXNlKSwgREZfUkVGX0lOU04gKHVzZSkp OwogICAgIH0KLSAgZm9yICh1c2VfcmVjID0gREZfSU5TTl9FUV9VU0VTIChp bnNuKTsgKnVzZV9yZWM7IHVzZV9yZWMrKykKKyAgZm9yICh1c2VfcmVjID0g REZfSU5TTl9JTkZPX0VRX1VTRVMgKGluc25faW5mbyk7ICp1c2VfcmVjOyB1 c2VfcmVjKyspCiAgICAgewogICAgICAgc3RydWN0IGRmX3JlZiAqdXNlID0g KnVzZV9yZWM7CiAgICAgICBpbnYgPSBpbnZhcmlhbnRfZm9yX3VzZSAodXNl KTsKSW5kZXg6IGRjZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRj ZS5jCShyZXZpc2lvbiAxMzY4NjgpCisrKyBkY2UuYwkod29ya2luZyBjb3B5 KQpAQCAtMTU0LDEyICsxNTQsMTAgQEAgZGVsZXRhYmxlX2luc25fcCAocnR4 IGluc24sIGJvb2wgZmFzdCkKIHN0YXRpYyBpbmxpbmUgaW50CiBtYXJrZWRf aW5zbl9wIChydHggaW5zbikKIHsKLSAgaWYgKGluc24pCi0gICAgcmV0dXJu IFRFU1RfQklUIChtYXJrZWQsIElOU05fVUlEIChpbnNuKSk7Ci0gIGVsc2Ug Ci0gICAgLyogQXJ0aWZpY2lhbCBkZWZzIGFyZSBhbHdheXMgbmVlZGVkIGFu ZCB0aGV5IGRvIG5vdCBoYXZlIGFuCi0gICAgICAgaW5zbi4gICovCi0gICAg cmV0dXJuIHRydWU7CisgIC8qIEFydGlmaWNpYWwgZGVmcyBhcmUgYWx3YXlz IG5lZWRlZCBhbmQgdGhleSBkbyBub3QgaGF2ZSBhbiBpbnNuLgorICAgICBX ZSBzaG91bGQgbmV2ZXIgc2VlIHRoZW0gaGVyZS4gICovCisgIGdjY19hc3Nl cnQgKGluc24pOworICByZXR1cm4gVEVTVF9CSVQgKG1hcmtlZCwgSU5TTl9V SUQgKGluc24pKTsKIH0KIAogCkBAIC0zMzksNyArMzM3LDggQEAgbWFya19h cnRpZmljaWFsX3VzZXMgKHZvaWQpCiAgICAgICBmb3IgKHVzZV9yZWMgPSBk Zl9nZXRfYXJ0aWZpY2lhbF91c2VzIChiYi0+aW5kZXgpOyAKIAkgICAqdXNl X3JlYzsgdXNlX3JlYysrKQogCWZvciAoZGVmcyA9IERGX1JFRl9DSEFJTiAo KnVzZV9yZWMpOyBkZWZzOyBkZWZzID0gZGVmcy0+bmV4dCkKLQkgIG1hcmtf aW5zbiAoREZfUkVGX0lOU04gKGRlZnMtPnJlZiksIGZhbHNlKTsKKwkgIGlm ICghIERGX1JFRl9JU19BUlRJRklDSUFMIChkZWZzLT5yZWYpKQorCSAgICBt YXJrX2luc24gKERGX1JFRl9JTlNOIChkZWZzLT5yZWYpLCBmYWxzZSk7CiAg ICAgfQogfQogCkBAIC0zNjIsNyArMzYxLDggQEAgbWFya19yZWdfZGVwZW5k ZW5jaWVzIChydHggaW5zbikKIAkgIGZwcmludGYgKGR1bXBfZmlsZSwgIiBp biBpbnNuICVkOlxuIiwgSU5TTl9VSUQgKGluc24pKTsKIAl9CiAgICAgICBm b3IgKGRlZnMgPSBERl9SRUZfQ0hBSU4gKHVzZSk7IGRlZnM7IGRlZnMgPSBk ZWZzLT5uZXh0KQotCW1hcmtfaW5zbiAoREZfUkVGX0lOU04gKGRlZnMtPnJl ZiksIGZhbHNlKTsKKwlpZiAoISBERl9SRUZfSVNfQVJUSUZJQ0lBTCAoZGVm cy0+cmVmKSkKKwkgIG1hcmtfaW5zbiAoREZfUkVGX0lOU04gKGRlZnMtPnJl ZiksIGZhbHNlKTsKICAgICB9CiB9CiAK ------=_Part_41811_17998672.1213744845994--