From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by sourceware.org (Postfix) with ESMTPS id 21DE53846075; Fri, 26 Mar 2021 16:30:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 21DE53846075 Received: by mail-lf1-x134.google.com with SMTP id m12so8513149lfq.10; Fri, 26 Mar 2021 09:30:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=lUcL3VfjelGs3/Qz57NMIEcEiMULBzIrZ1JujUvx++4=; b=K3Yj3uU+AlecRQyQ3AYhZFQe/TXKsGpis6kSbvJPUsrYlrJi27GGb9DyBfudJ7lvxJ sUfP98VNihqlZdVoFOtngGIdxVkhHxkvlcuWLOt5Jvb0B4DR4lUbcbVmQ2VR1jYtERTk dZ36BepEGYrelivBQT2nZkZvwU91VRaMcko8gM2sP1xC4ICdEt7iL3SWnq36b/IHbfxb SFpTEKbKhCC2zFDCuXGTJrga+6Uz7YhuHo9c9Z2OLltlBa0n7Yh3UrwEGjByweh1flMr nceo+hx7IDrkUze0COpOwC8iuJ7GrUMXbBgIFKKoQNS9HCeLN4yesJb7uSlJNLG4iwdK lwWg== X-Gm-Message-State: AOAM532Oc3AmrEE1GAOy6C6DApmCdofNsCbCvnYyDrLbxu6zyMwaOy0N k84MRIELXj06bZVR++SuDWPvlGEGyg+ite6j/6hePdHu X-Google-Smtp-Source: ABdhPJzDDxYjLdX5uQsmrZwORSZjgMsxH2yZYP79onT+a6oPNWhuvrVNmhGGXwx14Fw+qihA1rToPSixSuj6yyBQdyM= X-Received: by 2002:a05:6512:1310:: with SMTP id x16mr8313326lfu.19.1616776235045; Fri, 26 Mar 2021 09:30:35 -0700 (PDT) MIME-Version: 1.0 From: Paul Richard Thomas Date: Fri, 26 Mar 2021 16:30:23 +0000 Message-ID: Subject: [Patch, fortran] 99307 - FAIL: gfortran.dg/class_assign_4.f90 execution test To: "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary="0000000000002bebe305be730d04" X-Spam-Status: No, score=-8.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Mar 2021 16:30:40 -0000 --0000000000002bebe305be730d04 Content-Type: text/plain; charset="UTF-8" This patch comes in two versions: submit.diff with Change.Logs or submit2.diff with Change2.Logs. The first fixes the problem by changing array temporaries from class expressions into class temporaries. This permits the use of gfc_get_class_from_expr to obtain the vptr for these temporaries and all the good things that come with that when handling dynamic types. The second part of the fix is to use the array element length from the class descriptor, when reallocating on assignment. This is needed because the vptr is being set too early. I will set about trying to track down why this is happening and fix it after release. The second version does the same as the first but puts in place a load of tidying up that is permitted by the fix to class array temporaries. I couldn't readily see how to prepare a testcase - ideas? Both regtest on FC33/x86_64. The first was tested by Dominique (see the PR). OK for master? Regards Paul --0000000000002bebe305be730d04 Content-Type: application/octet-stream; name="Change.Logs" Content-Disposition: attachment; filename="Change.Logs" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmqit9sa0 Rm9ydHJhbjogRml4IGNsYXNzIHJlYWxsb2NhdGUgb24gYXNzaWdubWVudCBbUFI5OTMwN10uCgoy MDIxLTAzLTI2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKZ2NjL2ZvcnRyYW4K CVBSIGZvcnRyYW4vOTkzMDcKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1w X2FycmF5KTogQ3JlYXRlIGEgY2xhc3MKCXRlbXBvcmFyeSBmb3IgY2xhc3MgZXhwcmVzc2lvbnMg YW5kIGFzc2lnbiB0aGUgbmV3IGRlc2NyaXB0b3IKCXRvIHRoZSBkYXRhIGZpZWxkLgoJKGJ1aWxk X2NsYXNzX2FycmF5X3JlZik6IElmIHRoZSBjbGFzcyBleHByIGNhbiBiZSBleHRyYWN0ZWQsCgl0 aGVuIHVzZSB0aGF0IGZvciAnZGVjbCcuIENsYXNzIGZ1bmN0aW9uIHJlc3VsdHMgYXJlIHJlbGlh Ymx5CgloYW5kbGVkIHRoaXMgd2F5LgoJKGdmY19hbGxvY19hbGxvY2F0YWJsZV9mb3JfYXNzaWdu bWVudCk6IFVzZSBjbGFzcyBkZXNjcmlwdG9yCgllbGVtZW50IGxlbmd0aCBmb3IgJ2VsZW1zaXpl MScuIEVsaW1pbmF0ZSByZXBlYXQgc2V0IG9mIGR0eXBlCglmb3IgY2xhc3MgZXhwcmVzc2lvbnMu CgkqIHRyYW5zLWV4cHJfYyAoZ2ZjX3RyYW5zX3NjYWxhcl9hc3NpZ24pOiBNYWtlIHVzZSBvZiBw cmUgYW5kCglwb3N0IGJsb2NrcyBmb3IgYWxsIGNsYXNzIGV4cHJlc3Npb25zLgo= --0000000000002bebe305be730d04 Content-Type: application/octet-stream; name="Change2.Logs" Content-Disposition: attachment; filename="Change2.Logs" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmqit9so1 Rm9ydHJhbjogRml4IGNsYXNzIHJlYWxsb2NhdGUgb24gYXNzaWdubWVudCBbUFI5OTMwN10uCgoy MDIxLTAzLTI2ICBQYXVsIFRob21hcyAgPHBhdWx0QGdjYy5nbnUub3JnPgoKZ2NjL2ZvcnRyYW4K CVBSIGZvcnRyYW4vOTkzMDcKCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2NyZWF0ZV90ZW1w X2FycmF5KTogQ3JlYXRlIGEgY2xhc3MKCXRlbXBvcmFyeSBmb3IgY2xhc3MgZXhwcmVzc2lvbnMg YW5kIGFzc2lnbiB0aGUgbmV3IGRlc2NyaXB0b3IKCXRvIHRoZSBkYXRhIGZpZWxkLgoJKGJ1aWxk X2NsYXNzX2FycmF5X3JlZik6IElmIHRoZSBjbGFzcyBleHByIGNhbiBiZSBleHRyYWN0ZWQsCgl0 aGVuIHVzZSB0aGF0IGZvciAnZGVjbCcuIENsYXNzIGZ1bmN0aW9uIHJlc3VsdHMgYXJlIHJlbGlh Ymx5CgloYW5kbGVkIHRoaXMgd2F5LiBDYWxsIGdmY19maW5kX2FuZF9jdXRfYXRfbGFzdF9jbGFz c19yZWYgdG8KCWVsaW1pbmF0ZSBsYXJnZWx5IHJlZHVuZGFudCBjb2RlLiBSZW1vdmUgZGVhZCBj b2RlIGFuZCByZWNhc3QKCXRoZSByZXN0IG9mIHRoZSBjb2RlIHRvIGV4dHJhY3QgJ2RlY2wnIGZv ciByZW1haW5pbmcgY2FzZXMuCglDYWxsIGdmY19idWlsZF9zcGFubmVkX2FycmF5X3JlZi4KCShn ZmNfYWxsb2NfYWxsb2NhdGFibGVfZm9yX2Fzc2lnbm1lbnQpOiBVc2UgY2xhc3MgZGVzY3JpcHRv cgoJZWxlbWVudCBsZW5ndGggZm9yICdlbGVtc2l6ZTEnLiBFbGltaW5hdGUgcmVwZWF0IHNldCBv ZiBkdHlwZQoJZm9yIGNsYXNzIGV4cHJlc3Npb25zLgoJKiB0cmFucy1leHByX2MgKGdmY19maW5k X2FuZF9jdXRfYXRfbGFzdF9jbGFzc19yZWYpOiBJbmNsdWRlCglhZGRpdGlvbmFsIGNvZGUgZnJv bSBidWlsZF9jbGFzc19hcnJheV9yZWYsIGFuZCB1c2Ugb3B0aW9uYWwKCWdmY190eXBlc3BlYyBw b2ludGVyIGFyZ3VtZW50LgoJKGdmY190cmFuc19zY2FsYXJfYXNzaWduKTogTWFrZSB1c2Ugb2Yg cHJlIGFuZCBwb3N0IGJsb2NrcyBmb3IKCWFsbCBjbGFzcyBleHByZXNzaW9ucy4KCSogdHJhbnMu YyAoZ2V0X2FycmF5X3NwYW4pOiBGb3IgdW5saW1pdGVkIHBvbHltb3JwaGljIGV4cHJzCgltdWx0 aXBseSB0aGUgc3BhbiBieSB0aGUgdmFsdWUgb2YgdGhlIF9sZW4gZmllbGQuCgkoZ2ZjX2J1aWxk X3NwYW5uZWRfYXJyYXlfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKGdmY19idWlsZF9hcnJheV9yZWYp OiBDYWxsIGdmY19idWlsZF9zcGFubmVkX2FycmF5X3JlZiBhbmQKCWVsaW1pbmF0ZSByZXBlYXRl ZCBjb2RlLgoJKiB0cmFucy5oOiBBZGQgYXJnIHRvIGdmY19maW5kX2FuZF9jdXRfYXRfbGFzdF9j bGFzc19yZWYgYW5kCglhZGQgcHJvdG90eXBlIGZvciBnZmNfYnVpbGRfc3Bhbm5lZF9hcnJheV9y ZWYuCg== --0000000000002bebe305be730d04 Content-Type: text/x-patch; charset="US-ASCII"; name="submit.diff" Content-Disposition: attachment; filename="submit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmqitfh52 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmMgYi9nY2MvZm9ydHJhbi90cmFu cy1hcnJheS5jCmluZGV4IGM2NzI1NjU5MDkzLi44YWE1NmQxY2NiOSAxMDA2NDQKLS0tIGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jCkBA IC0xNDAzLDkgKzE0MDMsNiBAQCBnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkgKHN0bXRibG9j a190ICogcHJlLCBzdG10YmxvY2tfdCAqIHBvc3QsIGdmY19zcyAqIHNzLAogICBkZXNjID0gZ2Zj X2NyZWF0ZV92YXIgKHR5cGUsICJhdG1wIik7CiAgIEdGQ19ERUNMX1BBQ0tFRF9BUlJBWSAoZGVz YykgPSAxOwogCi0gIGluZm8tPmRlc2NyaXB0b3IgPSBkZXNjOwotICBzaXplID0gZ2ZjX2luZGV4 X29uZV9ub2RlOwotCiAgIC8qIEVtaXQgYSBERUNMX0VYUFIgZm9yIHRoZSB2YXJpYWJsZSBzaXpl ZCBhcnJheSB0eXBlIGluCiAgICAgIEdGQ19UWVBFX0FSUkFZX0RBVEFQVFJfVFlQRSBzbyB0aGUg Z2ltcGxpZmljYXRpb24gb2YgaXRzIHR5cGUKICAgICAgc2l6ZXMgd29ya3MgY29ycmVjdGx5LiAg Ki8KQEAgLTE0MTYsOSArMTQxMyw0MCBAQCBnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkgKHN0 bXRibG9ja190ICogcHJlLCBzdG10YmxvY2tfdCAqIHBvc3QsIGdmY19zcyAqIHNzLAogICBnZmNf YWRkX2V4cHJfdG9fYmxvY2sgKHByZSwgYnVpbGQxIChERUNMX0VYUFIsCiAJCQkJICAgICAgYXJy YXl0eXBlLCBUWVBFX05BTUUgKGFycmF5dHlwZSkpKTsKIAotICAvKiBGaWxsIGluIHRoZSBhcnJh eSBkdHlwZS4gICovCi0gIHRtcCA9IGdmY19jb252X2Rlc2NyaXB0b3JfZHR5cGUgKGRlc2MpOwot ICBnZmNfYWRkX21vZGlmeSAocHJlLCB0bXAsIGdmY19nZXRfZHR5cGUgKFRSRUVfVFlQRSAoZGVz YykpKTsKKyAgaWYgKGNsYXNzX2V4cHIgIT0gTlVMTF9UUkVFKQorICAgIHsKKyAgICAgIHRyZWUg Y2xhc3NfZGF0YTsKKyAgICAgIHRyZWUgZHR5cGU7CisKKyAgICAgIC8qIENyZWF0ZSBhIGNsYXNz IHRlbXBvcmFyeS4gICovCisgICAgICB0bXAgPSBnZmNfY3JlYXRlX3ZhciAoVFJFRV9UWVBFIChj bGFzc19leHByKSwgImN0bXAiKTsKKyAgICAgIGdmY19hZGRfbW9kaWZ5IChwcmUsIHRtcCwgY2xh c3NfZXhwcik7CisKKyAgICAgIC8qIEFzc2lnbiB0aGUgbmV3IGRlc2NyaXB0b3IgdG8gdGhlIF9k YXRhIGZpZWxkLiBUaGlzIGFsbG93cyB0aGUKKwkgdnB0ciBfY29weSB0byBiZSB1c2VkIGZvciBz Y2FsYXJpemVkIGFzc2lnbm1lbnQgc2luY2UgdGhlIGNsYXNzCisJIHRlbXBvcmFyeSBjYW4gYmUg Zm91bmQgZnJvbSB0aGUgZGVzY3JpcHRvci4gICovCisgICAgICBjbGFzc19kYXRhID0gZ2ZjX2Ns YXNzX2RhdGFfZ2V0ICh0bXApOworICAgICAgdG1wID0gZm9sZF9idWlsZDFfbG9jIChpbnB1dF9s b2NhdGlvbiwgVklFV19DT05WRVJUX0VYUFIsCisJCQkgICAgIFRSRUVfVFlQRSAoZGVzYyksIGRl c2MpOworICAgICAgZ2ZjX2FkZF9tb2RpZnkgKHByZSwgY2xhc3NfZGF0YSwgdG1wKTsKKworICAg ICAgLyogVGFrZSB0aGUgZHR5cGUgZnJvbSB0aGUgY2xhc3MgZXhwcmVzc2lvbi4gICovCisgICAg ICBkdHlwZSA9IGdmY19jb252X2Rlc2NyaXB0b3JfZHR5cGUgKGdmY19jbGFzc19kYXRhX2dldCAo Y2xhc3NfZXhwcikpOworICAgICAgdG1wID0gZ2ZjX2NvbnZfZGVzY3JpcHRvcl9kdHlwZSAoY2xh c3NfZGF0YSk7CisgICAgICBnZmNfYWRkX21vZGlmeSAocHJlLCB0bXAsIGR0eXBlKTsKKworICAg ICAgLyogUG9pbnQgZGVzYyB0byB0aGUgY2xhc3MgX2RhdGEgZmllbGQuICAqLworICAgICAgZGVz YyA9IGNsYXNzX2RhdGE7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogRmlsbCBpbiB0 aGUgYXJyYXkgZHR5cGUuICAqLworICAgICAgdG1wID0gZ2ZjX2NvbnZfZGVzY3JpcHRvcl9kdHlw ZSAoZGVzYyk7CisgICAgICBnZmNfYWRkX21vZGlmeSAocHJlLCB0bXAsIGdmY19nZXRfZHR5cGUg KFRSRUVfVFlQRSAoZGVzYykpKTsKKyAgICB9CisKKyAgaW5mby0+ZGVzY3JpcHRvciA9IGRlc2M7 CisgIHNpemUgPSBnZmNfaW5kZXhfb25lX25vZGU7CiAKICAgLyoKICAgICAgRmlsbCBpbiB0aGUg Ym91bmRzIGFuZCBzdHJpZGUuICBUaGlzIGlzIGEgcGFja2VkIGFycmF5LCBzbzoKQEAgLTM0Mzgs NiArMzQ2NiwxMiBAQCBidWlsZF9jbGFzc19hcnJheV9yZWYgKGdmY19zZSAqc2UsIHRyZWUgYmFz ZSwgdHJlZSBpbmRleCkKICAgICAgICYmIEdGQ19ERUNMX1NBVkVEX0RFU0NSSVBUT1IgKHNlLT5l eHByKQogICAgICAgJiYgR0ZDX0NMQVNTX1RZUEVfUCAoVFJFRV9UWVBFIChHRkNfREVDTF9TQVZF RF9ERVNDUklQVE9SIChzZS0+ZXhwcikpKSkKICAgICBkZWNsID0gc2UtPmV4cHI7CisgIGVsc2Ug aWYgKCFWQVJfUCAoYmFzZSkgJiYgZ2ZjX2dldF9jbGFzc19mcm9tX2V4cHIgKGJhc2UpKQorICAg IHsKKyAgICAgIGRlY2wgPSBnZmNfZ2V0X2NsYXNzX2Zyb21fZXhwciAoYmFzZSk7CisgICAgICBz ZS0+Y2xhc3NfdnB0ciA9IGdmY19ldmFsdWF0ZV9ub3cgKGdmY19jbGFzc192cHRyX2dldCAoZGVj bCksICZzZS0+cHJlKTsKKyAgICAgIGdvdG8gY2xhc3NfZm91bmQ7CisgICAgfQogICBlbHNlCiAg ICAgewogICAgICAgaWYgKGV4cHIgPT0gTlVMTApAQCAtMzUzMCw2ICszNTY0LDcgQEAgYnVpbGRf Y2xhc3NfYXJyYXlfcmVmIChnZmNfc2UgKnNlLCB0cmVlIGJhc2UsIHRyZWUgaW5kZXgpCiAgIGlm IChQT0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBFIChkZWNsKSkpCiAgICAgZGVjbCA9IGJ1aWxkX2Zv bGRfaW5kaXJlY3RfcmVmX2xvYyAoaW5wdXRfbG9jYXRpb24sIGRlY2wpOwogCitjbGFzc19mb3Vu ZDoKICAgaWYgKCFHRkNfQ0xBU1NfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSkKICAgICByZXR1 cm4gZmFsc2U7CiAKQEAgLTEwMjc0LDIzICsxMDMwOSwxMCBAQCBnZmNfYWxsb2NfYWxsb2NhdGFi bGVfZm9yX2Fzc2lnbm1lbnQgKGdmY19sb29waW5mbyAqbG9vcCwKICAgICB9CiAgIGVsc2UgaWYg KGV4cHIxLT50cy50eXBlID09IEJUX0NMQVNTKQogICAgIHsKLSAgICAgIHRtcCA9IGV4cHIxLT5y YW5rID8gZ2ZjX2dldF9jbGFzc19mcm9tX2V4cHIgKGRlc2MpIDogTlVMTF9UUkVFOwotICAgICAg aWYgKHRtcCA9PSBOVUxMX1RSRUUpCi0JdG1wID0gZ2ZjX2dldF9jbGFzc19mcm9tX2dmY19leHBy IChleHByMSk7Ci0KLSAgICAgIGlmICh0bXAgIT0gTlVMTF9UUkVFKQotCXsKLQkgIHRtcDIgPSBn ZmNfY2xhc3NfdnB0cl9nZXQgKHRtcCk7Ci0JICBjb25kID0gZm9sZF9idWlsZDJfbG9jIChpbnB1 dF9sb2NhdGlvbiwgTkVfRVhQUiwKLQkJCQkgIGxvZ2ljYWxfdHlwZV9ub2RlLCB0bXAyLAotCQkJ CSAgYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFICh0bXAyKSwgMCkpOwotCSAgZWxlbXNpemUxID0g Z2ZjX2NsYXNzX3Z0YWJfc2l6ZV9nZXQgKHRtcCk7Ci0JICBlbGVtc2l6ZTEgPSBmb2xkX2J1aWxk M19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsCi0JCQkJICAgICAgZ2ZjX2FycmF5X2lu ZGV4X3R5cGUsIGNvbmQsCi0JCQkJICAgICAgZWxlbXNpemUxLCBnZmNfaW5kZXhfemVyb19ub2Rl KTsKLQl9Ci0gICAgICBlbHNlCi0JZWxlbXNpemUxID0gVFlQRV9TSVpFX1VOSVQgKGdmY190eXBl bm9kZV9mb3Jfc3BlYyAoJkNMQVNTX0RBVEEgKGV4cHIxKS0+dHMpKTsKKyAgICAgIC8qIFVuZm9y dHVuYXRlbHksIHRoZSBsaHMgdnB0ciBpcyBzZXQgdG9vIGVhcmx5IGluIG1hbnkgY2FzZXMuCisJ IFBsYXkgaXQgc2FmZSBieSB1c2luZyB0aGUgZGVzY3JpcHRvciBlbGVtZW50IGxlbmd0aC4gICov CisgICAgICB0bXAgPSBnZmNfY29udl9kZXNjcmlwdG9yX2VsZW1fbGVuIChkZXNjKTsKKyAgICAg IGVsZW1zaXplMSA9IGZvbGRfY29udmVydCAoZ2ZjX2FycmF5X2luZGV4X3R5cGUsIHRtcCk7CiAg ICAgfQogICBlbHNlCiAgICAgZWxlbXNpemUxID0gTlVMTF9UUkVFOwpAQCAtMTA3NjQsMTEgKzEw Nzg2LDExIEBAIGdmY19hbGxvY19hbGxvY2F0YWJsZV9mb3JfYXNzaWdubWVudCAoZ2ZjX2xvb3Bp bmZvICpsb29wLAogCiAKICAgLyogV2UgYWxyZWFkeSBzZXQgdGhlIGR0eXBlIGluIHRoZSBjYXNl IG9mIGRlZmVycmVkIGNoYXJhY3RlcgotICAgICBsZW5ndGggYXJyYXlzIGFuZCB1bmxpbWl0ZWQg cG9seW1vcnBoaWMgYXJyYXlzLiAgKi8KKyAgICAgbGVuZ3RoIGFycmF5cyBhbmQgY2xhc3MgbHZh bHVlcy4gICovCiAgIGlmICghKEdGQ19ERVNDUklQVE9SX1RZUEVfUCAoVFJFRV9UWVBFIChkZXNj KSkKIAkmJiAoKGV4cHIxLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUiAmJiBleHByMS0+dHMuZGVm ZXJyZWQpCiAJICAgIHx8IGNvYXJyYXkpKQotICAgICAgJiYgIVVOTElNSVRFRF9QT0xZIChleHBy MSkpCisgICAgICAmJiBleHByMS0+dHMudHlwZSAhPSBCVF9DTEFTUykKICAgICB7CiAgICAgICB0 bXAgPSBnZmNfY29udl9kZXNjcmlwdG9yX2R0eXBlIChkZXNjKTsKICAgICAgIGdmY19hZGRfbW9k aWZ5ICgmYWxsb2NfYmxvY2ssIHRtcCwgZ2ZjX2dldF9kdHlwZSAoVFJFRV9UWVBFIChkZXNjKSkp OwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jIGIvZ2NjL2ZvcnRyYW4vdHJh bnMtZXhwci5jCmluZGV4IDg1YzE2ZDdmNGMzLi42NDY4OTQzYjVjNyAxMDA2NDQKLS0tIGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtZXhwci5jCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwpAQCAt OTk4MywxNyArOTk4MywyMCBAQCBnZmNfdHJhbnNfc2NhbGFyX2Fzc2lnbiAoZ2ZjX3NlICogbHNl LCBnZmNfc2UgKiByc2UsIGdmY190eXBlc3BlYyB0cywKICAgICAgIGdmY19hZGRfbW9kaWZ5ICgm YmxvY2ssIGxzZS0+ZXhwciwgdG1wKTsKICAgICB9CiAgIC8qIElmIHBvc3NpYmxlIHVzZSB0aGUg cmhzIHZwdHIgY29weSB3aXRoIHRyYW5zX3NjYWxhcl9jbGFzc19hc3NpZ24uLi4uICAqLwotICBl bHNlIGlmICh0cy50eXBlID09IEJUX0NMQVNTCi0JICAgJiYgIXRyYW5zX3NjYWxhcl9jbGFzc19h c3NpZ24gKCZibG9jaywgbHNlLCByc2UpKQorICBlbHNlIGlmICh0cy50eXBlID09IEJUX0NMQVNT KQogICAgIHsKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJmxzZS0+cHJl KTsKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJnJzZS0+cHJlKTsKLSAg ICAgIC8qIC4uLm90aGVyd2lzZSBhc3NpZ25tZW50IHN1ZmZpY2VzLiBOb3RlIHRoZSB1c2Ugb2Yg VklFV19DT05WRVJUX0VYUFIKLQkgZm9yIHRoZSBsaHMgd2hpY2ggZW5zdXJlcyB0aGF0IGNsYXNz IGRhdGEgcmhzIGNhc3QgYXMgYSBzdHJpbmcgYXNzaWducwotCSBjb3JyZWN0bHkuICAqLwotICAg ICAgdG1wID0gZm9sZF9idWlsZDFfbG9jIChpbnB1dF9sb2NhdGlvbiwgVklFV19DT05WRVJUX0VY UFIsCi0JCQkgICAgIFRSRUVfVFlQRSAocnNlLT5leHByKSwgbHNlLT5leHByKTsKLSAgICAgIGdm Y19hZGRfbW9kaWZ5ICgmYmxvY2ssIHRtcCwgcnNlLT5leHByKTsKKworICAgICAgaWYgKCF0cmFu c19zY2FsYXJfY2xhc3NfYXNzaWduICgmYmxvY2ssIGxzZSwgcnNlKSkKKwl7CisJICAvKiAuLi5v dGhlcndpc2UgYXNzaWdubWVudCBzdWZmaWNlcy4gTm90ZSB0aGUgdXNlIG9mIFZJRVdfQ09OVkVS VF9FWFBSCisJICBmb3IgdGhlIGxocyB3aGljaCBlbnN1cmVzIHRoYXQgY2xhc3MgZGF0YSByaHMg Y2FzdCBhcyBhIHN0cmluZyBhc3NpZ25zCisJICBjb3JyZWN0bHkuICAqLworCSAgdG1wID0gZm9s ZF9idWlsZDFfbG9jIChpbnB1dF9sb2NhdGlvbiwgVklFV19DT05WRVJUX0VYUFIsCisJCQkJIFRS RUVfVFlQRSAocnNlLT5leHByKSwgbHNlLT5leHByKTsKKwkgIGdmY19hZGRfbW9kaWZ5ICgmYmxv Y2ssIHRtcCwgcnNlLT5leHByKTsKKwl9CiAgICAgfQogICBlbHNlIGlmICh0cy50eXBlICE9IEJU X0NMQVNTKQogICAgIHsK --0000000000002bebe305be730d04 Content-Type: text/x-patch; charset="US-ASCII"; name="submit2.diff" Content-Disposition: attachment; filename="submit2.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kmqitfhf3 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmMgYi9nY2MvZm9ydHJhbi90cmFu cy1hcnJheS5jCmluZGV4IGJlNWViODkzNTBmLi5jYTkwMTQyNTMwYyAxMDA2NDQKLS0tIGEvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jCkBA IC0xNDAzLDkgKzE0MDMsNiBAQCBnZmNfdHJhbnNfY3JlYXRlX3RlbXBfYXJyYXkgKHN0bXRibG9j a190ICogcHJlLCBzdG10YmxvY2tfdCAqIHBvc3QsIGdmY19zcyAqIHNzLAogICBkZXNjID0gZ2Zj X2NyZWF0ZV92YXIgKHR5cGUsICJhdG1wIik7CiAgIEdGQ19ERUNMX1BBQ0tFRF9BUlJBWSAoZGVz YykgPSAxOwoKLSAgaW5mby0+ZGVzY3JpcHRvciA9IGRlc2M7Ci0gIHNpemUgPSBnZmNfaW5kZXhf b25lX25vZGU7Ci0KICAgLyogRW1pdCBhIERFQ0xfRVhQUiBmb3IgdGhlIHZhcmlhYmxlIHNpemVk IGFycmF5IHR5cGUgaW4KICAgICAgR0ZDX1RZUEVfQVJSQVlfREFUQVBUUl9UWVBFIHNvIHRoZSBn aW1wbGlmaWNhdGlvbiBvZiBpdHMgdHlwZQogICAgICBzaXplcyB3b3JrcyBjb3JyZWN0bHkuICAq LwpAQCAtMTQxNiw5ICsxNDEzLDQwIEBAIGdmY190cmFuc19jcmVhdGVfdGVtcF9hcnJheSAoc3Rt dGJsb2NrX3QgKiBwcmUsIHN0bXRibG9ja190ICogcG9zdCwgZ2ZjX3NzICogc3MsCiAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAocHJlLCBidWlsZDEgKERFQ0xfRVhQUiwKIAkJCQkgICAgICBhcnJh eXR5cGUsIFRZUEVfTkFNRSAoYXJyYXl0eXBlKSkpOwoKLSAgLyogRmlsbCBpbiB0aGUgYXJyYXkg ZHR5cGUuICAqLwotICB0bXAgPSBnZmNfY29udl9kZXNjcmlwdG9yX2R0eXBlIChkZXNjKTsKLSAg Z2ZjX2FkZF9tb2RpZnkgKHByZSwgdG1wLCBnZmNfZ2V0X2R0eXBlIChUUkVFX1RZUEUgKGRlc2Mp KSk7CisgIGlmIChjbGFzc19leHByICE9IE5VTExfVFJFRSkKKyAgICB7CisgICAgICB0cmVlIGNs YXNzX2RhdGE7CisgICAgICB0cmVlIGR0eXBlOworCisgICAgICAvKiBDcmVhdGUgYSBjbGFzcyB0 ZW1wb3JhcnkuICAqLworICAgICAgdG1wID0gZ2ZjX2NyZWF0ZV92YXIgKFRSRUVfVFlQRSAoY2xh c3NfZXhwciksICJjdG1wIik7CisgICAgICBnZmNfYWRkX21vZGlmeSAocHJlLCB0bXAsIGNsYXNz X2V4cHIpOworCisgICAgICAvKiBBc3NpZ24gdGhlIG5ldyBkZXNjcmlwdG9yIHRvIHRoZSBfZGF0 YSBmaWVsZC4gVGhpcyBhbGxvd3MgdGhlCisJIHZwdHIgX2NvcHkgdG8gYmUgdXNlZCBmb3Igc2Nh bGFyaXplZCBhc3NpZ25tZW50IHNpbmNlIHRoZSBjbGFzcworCSB0ZW1wb3JhcnkgY2FuIGJlIGZv dW5kIGZyb20gdGhlIGRlc2NyaXB0b3IuICAqLworICAgICAgY2xhc3NfZGF0YSA9IGdmY19jbGFz c19kYXRhX2dldCAodG1wKTsKKyAgICAgIHRtcCA9IGZvbGRfYnVpbGQxX2xvYyAoaW5wdXRfbG9j YXRpb24sIFZJRVdfQ09OVkVSVF9FWFBSLAorCQkJICAgICBUUkVFX1RZUEUgKGRlc2MpLCBkZXNj KTsKKyAgICAgIGdmY19hZGRfbW9kaWZ5IChwcmUsIGNsYXNzX2RhdGEsIHRtcCk7CisKKyAgICAg IC8qIFRha2UgdGhlIGR0eXBlIGZyb20gdGhlIGNsYXNzIGV4cHJlc3Npb24uICAqLworICAgICAg ZHR5cGUgPSBnZmNfY29udl9kZXNjcmlwdG9yX2R0eXBlIChnZmNfY2xhc3NfZGF0YV9nZXQgKGNs YXNzX2V4cHIpKTsKKyAgICAgIHRtcCA9IGdmY19jb252X2Rlc2NyaXB0b3JfZHR5cGUgKGNsYXNz X2RhdGEpOworICAgICAgZ2ZjX2FkZF9tb2RpZnkgKHByZSwgdG1wLCBkdHlwZSk7CisKKyAgICAg IC8qIFBvaW50IGRlc2MgdG8gdGhlIGNsYXNzIF9kYXRhIGZpZWxkLiAgKi8KKyAgICAgIGRlc2Mg PSBjbGFzc19kYXRhOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIEZpbGwgaW4gdGhl IGFycmF5IGR0eXBlLiAgKi8KKyAgICAgIHRtcCA9IGdmY19jb252X2Rlc2NyaXB0b3JfZHR5cGUg KGRlc2MpOworICAgICAgZ2ZjX2FkZF9tb2RpZnkgKHByZSwgdG1wLCBnZmNfZ2V0X2R0eXBlIChU UkVFX1RZUEUgKGRlc2MpKSk7CisgICAgfQorCisgIGluZm8tPmRlc2NyaXB0b3IgPSBkZXNjOwor ICBzaXplID0gZ2ZjX2luZGV4X29uZV9ub2RlOwoKICAgLyoKICAgICAgRmlsbCBpbiB0aGUgYm91 bmRzIGFuZCBzdHJpZGUuICBUaGlzIGlzIGEgcGFja2VkIGFycmF5LCBzbzoKQEAgLTM0MjQsMTM0 ICszNDUyLDczIEBAIGNvbnZfYXJyYXlfaW5kZXhfb2Zmc2V0IChnZmNfc2UgKiBzZSwgZ2ZjX3Nz ICogc3MsIGludCBkaW0sIGludCBpLAogc3RhdGljIGJvb2wKIGJ1aWxkX2NsYXNzX2FycmF5X3Jl ZiAoZ2ZjX3NlICpzZSwgdHJlZSBiYXNlLCB0cmVlIGluZGV4KQogewotICB0cmVlIHR5cGU7CiAg IHRyZWUgc2l6ZTsKLSAgdHJlZSBvZmZzZXQ7CiAgIHRyZWUgZGVjbCA9IE5VTExfVFJFRTsKICAg dHJlZSB0bXA7CiAgIGdmY19leHByICpleHByID0gc2UtPnNzLT5pbmZvLT5leHByOwotICBnZmNf cmVmICpyZWY7Ci0gIGdmY19yZWYgKmNsYXNzX3JlZiA9IE5VTEw7CisgIGdmY19leHByICpjbGFz c19leHByOwogICBnZmNfdHlwZXNwZWMgKnRzOworICBnZmNfc3ltYm9sICpzeW07CgotICBpZiAo c2UtPmV4cHIgJiYgREVDTF9QIChzZS0+ZXhwcikgJiYgREVDTF9MQU5HX1NQRUNJRklDIChzZS0+ ZXhwcikKLSAgICAgICYmIEdGQ19ERUNMX1NBVkVEX0RFU0NSSVBUT1IgKHNlLT5leHByKQotICAg ICAgJiYgR0ZDX0NMQVNTX1RZUEVfUCAoVFJFRV9UWVBFIChHRkNfREVDTF9TQVZFRF9ERVNDUklQ VE9SIChzZS0+ZXhwcikpKSkKLSAgICBkZWNsID0gc2UtPmV4cHI7CisgIHRtcCA9ICFWQVJfUCAo YmFzZSkgPyBnZmNfZ2V0X2NsYXNzX2Zyb21fZXhwciAoYmFzZSkgOiBOVUxMX1RSRUU7CisKKyAg aWYgKHRtcCAhPSBOVUxMX1RSRUUpCisgICAgZGVjbCA9IHRtcDsKICAgZWxzZQogICAgIHsKLSAg ICAgIGlmIChleHByID09IE5VTEwKKyAgICAgIC8qIFRoZSBiYXNlIGV4cHJlc3Npb24gZG9lcyBu b3QgY29udGFpbiBhIGNsYXNzIGNvbXBvbmVudCwgZWl0aGVyCisJIGJlY2F1c2UgaXQgaXMgYSB0 ZW1wb3JhcnkgYXJyYXkgb3IgYXJyYXkgZGVzY3JpcHRvci4gIENsYXNzCisJIGFycmF5IGZ1bmN0 aW9ucyBhcmUgY29ycmVjdGx5IHJlc29sdmVkIGFib3ZlLiAgKi8KKyAgICAgIGlmICghZXhwcgog CSAgfHwgKGV4cHItPnRzLnR5cGUgIT0gQlRfQ0xBU1MKLQkgICAgICAmJiAhZ2ZjX2lzX2NsYXNz X2FycmF5X2Z1bmN0aW9uIChleHByKQogCSAgICAgICYmICFnZmNfaXNfY2xhc3NfYXJyYXlfcmVm IChleHByLCBOVUxMKSkpCiAJcmV0dXJuIGZhbHNlOwoKLSAgICAgIGlmIChleHByLT5zeW10cmVl ICYmIGV4cHItPnN5bXRyZWUtPm4uc3ltLT50cy50eXBlID09IEJUX0NMQVNTKQotCXRzID0gJmV4 cHItPnN5bXRyZWUtPm4uc3ltLT50czsKLSAgICAgIGVsc2UKLQl0cyA9IE5VTEw7Ci0KLSAgICAg IGZvciAocmVmID0gZXhwci0+cmVmOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkKLQl7Ci0JICBpZiAo cmVmLT50eXBlID09IFJFRl9DT01QT05FTlQKLQkgICAgICAmJiByZWYtPnUuYy5jb21wb25lbnQt PnRzLnR5cGUgPT0gQlRfQ0xBU1MKLQkgICAgICAmJiByZWYtPm5leHQgJiYgcmVmLT5uZXh0LT50 eXBlID09IFJFRl9DT01QT05FTlQKLQkgICAgICAmJiBzdHJjbXAgKHJlZi0+bmV4dC0+dS5jLmNv bXBvbmVudC0+bmFtZSwgIl9kYXRhIikgPT0gMAotCSAgICAgICYmIHJlZi0+bmV4dC0+bmV4dAot CSAgICAgICYmIHJlZi0+bmV4dC0+bmV4dC0+dHlwZSA9PSBSRUZfQVJSQVkKLQkgICAgICAmJiBy ZWYtPm5leHQtPm5leHQtPnUuYXIudHlwZSAhPSBBUl9FTEVNRU5UKQotCSAgICB7Ci0JICAgICAg dHMgPSAmcmVmLT51LmMuY29tcG9uZW50LT50czsKLQkgICAgICBjbGFzc19yZWYgPSByZWY7Ci0J ICAgICAgYnJlYWs7Ci0JICAgIH0KLQl9CisgICAgICAvKiBPYnRhaW4gdGhlIGV4cHJlc3Npb24g Zm9yIHRoZSBjbGFzcyBlbnRpdHkgb3IgY29tcG9uZW50IHRoYXQgaXMKKwkgZm9sbG93ZWQgYnkg YW4gYXJyYXkgcmVmZXJlbmNlLCB3aGljaCBpcyBub3QgYW4gZWxlbWVudCwgc28gdGhhdAorCSB0 aGUgc3BhbiBvZiB0aGUgYXJyYXkgY2FuIGJlIG9idGFpbmVkLiAgKi8KKyAgICAgIGNsYXNzX2V4 cHIgPSBnZmNfZmluZF9hbmRfY3V0X2F0X2xhc3RfY2xhc3NfcmVmIChleHByLCBmYWxzZSwgJnRz KTsKCi0gICAgICBpZiAodHMgPT0gTlVMTCkKKyAgICAgIGlmICghdHMpCiAJcmV0dXJuIGZhbHNl OwotICAgIH0KCi0gIGlmIChjbGFzc19yZWYgPT0gTlVMTCAmJiBleHByICYmIGV4cHItPnN5bXRy ZWUtPm4uc3ltLT5hdHRyLmZ1bmN0aW9uCi0gICAgICAmJiBleHByLT5zeW10cmVlLT5uLnN5bSA9 PSBleHByLT5zeW10cmVlLT5uLnN5bS0+cmVzdWx0Ci0gICAgICAmJiBleHByLT5zeW10cmVlLT5u LnN5bS0+YmFja2VuZF9kZWNsID09IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKLSAgICB7Ci0gICAg ICBkZWNsID0gZ2ZjX2dldF9mYWtlX3Jlc3VsdF9kZWNsIChleHByLT5zeW10cmVlLT5uLnN5bSwg MCk7Ci0gICAgfQotICBlbHNlIGlmIChleHByICYmIGdmY19pc19jbGFzc19hcnJheV9mdW5jdGlv biAoZXhwcikpCi0gICAgewotICAgICAgc2l6ZSA9IE5VTExfVFJFRTsKLSAgICAgIGRlY2wgPSBO VUxMX1RSRUU7Ci0gICAgICBmb3IgKHRtcCA9IGJhc2U7IHRtcDsgdG1wID0gVFJFRV9PUEVSQU5E ICh0bXAsIDApKQotCXsKLQkgIHRyZWUgdHlwZTsKLQkgIHR5cGUgPSBUUkVFX1RZUEUgKHRtcCk7 Ci0JICB3aGlsZSAodHlwZSkKLQkgICAgewotCSAgICAgIGlmIChHRkNfQ0xBU1NfVFlQRV9QICh0 eXBlKSkKLQkJZGVjbCA9IHRtcDsKLQkgICAgICBpZiAodHlwZSAhPSBUWVBFX0NBTk9OSUNBTCAo dHlwZSkpCi0JCXR5cGUgPSBUWVBFX0NBTk9OSUNBTCAodHlwZSk7Ci0JICAgICAgZWxzZQotCQl0 eXBlID0gTlVMTF9UUkVFOwotCSAgICB9Ci0JICBpZiAoVkFSX1AgKHRtcCkpCi0JICAgIGJyZWFr OworICAgICAgc3ltID0gKCFjbGFzc19leHByICYmIGV4cHIpID8gZXhwci0+c3ltdHJlZS0+bi5z eW0gOiBOVUxMOworICAgICAgaWYgKHN5bSAmJiBzeW0tPmF0dHIuZnVuY3Rpb24KKwkgICYmIHN5 bSA9PSBzeW0tPnJlc3VsdAorCSAgJiYgc3ltLT5iYWNrZW5kX2RlY2wgPT0gY3VycmVudF9mdW5j dGlvbl9kZWNsKQorCS8qIFRoZSB0ZW1wb3JhcnkgaXMgdGhlIGRhdGEgZmllbGQgb2YgdGhlIGNs YXNzIGRhdGEgY29tcG9uZW50CisJICAgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICAqLworCWRl Y2wgPSBnZmNfZ2V0X2Zha2VfcmVzdWx0X2RlY2wgKHN5bSwgMCk7CisgICAgICBlbHNlIGlmIChz eW0pCisJeworCSAgaWYgKGRlY2wgPT0gTlVMTF9UUkVFKQorCSAgICBkZWNsID0gZXhwci0+c3lt dHJlZS0+bi5zeW0tPmJhY2tlbmRfZGVjbDsKKwkgIC8qIEZvciBjbGFzcyBhcnJheXMgdGhlIHRy ZWUgY29udGFpbmluZyB0aGUgY2xhc3MgaXMgc3RvcmVkIGluCisJICAgICBHRkNfREVDTF9TQVZF RF9ERVNDUklQVE9SIG9mIHRoZSBzeW0ncyBiYWNrZW5kX2RlY2wuCisJICAgICBGb3IgYWxsIG90 aGVycyBpdCdzIHN5bSdzIGJhY2tlbmRfZGVjbCBkaXJlY3RseS4gICovCisJICBpZiAoREVDTF9M QU5HX1NQRUNJRklDIChkZWNsKSAmJiBHRkNfREVDTF9TQVZFRF9ERVNDUklQVE9SIChkZWNsKSkK KwkgICAgZGVjbCA9IEdGQ19ERUNMX1NBVkVEX0RFU0NSSVBUT1IgKGRlY2wpOwogCX0KKyAgICAg IGVsc2UKKwlkZWNsID0gZ2ZjX2dldF9jbGFzc19mcm9tX2dmY19leHByIChjbGFzc19leHByKTsK Ci0gICAgICBpZiAoZGVjbCA9PSBOVUxMX1RSRUUpCi0JcmV0dXJuIGZhbHNlOworICAgICAgaWYg KFBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSkKKwlkZWNsID0gYnVpbGRfZm9sZF9p bmRpcmVjdF9yZWZfbG9jIChpbnB1dF9sb2NhdGlvbiwgZGVjbCk7CgotICAgICAgc2UtPmNsYXNz X3ZwdHIgPSBnZmNfZXZhbHVhdGVfbm93IChnZmNfY2xhc3NfdnB0cl9nZXQgKGRlY2wpLCAmc2Ut PnByZSk7Ci0gICAgfQotICBlbHNlIGlmIChjbGFzc19yZWYgPT0gTlVMTCkKLSAgICB7Ci0gICAg ICBpZiAoZGVjbCA9PSBOVUxMX1RSRUUpCi0JZGVjbCA9IGV4cHItPnN5bXRyZWUtPm4uc3ltLT5i YWNrZW5kX2RlY2w7Ci0gICAgICAvKiBGb3IgY2xhc3MgYXJyYXlzIHRoZSB0cmVlIGNvbnRhaW5p bmcgdGhlIGNsYXNzIGlzIHN0b3JlZCBpbgotCSBHRkNfREVDTF9TQVZFRF9ERVNDUklQVE9SIG9m IHRoZSBzeW0ncyBiYWNrZW5kX2RlY2wuCi0JIEZvciBhbGwgb3RoZXJzIGl0J3Mgc3ltJ3MgYmFj a2VuZF9kZWNsIGRpcmVjdGx5LiAgKi8KLSAgICAgIGlmIChERUNMX0xBTkdfU1BFQ0lGSUMgKGRl Y2wpICYmIEdGQ19ERUNMX1NBVkVEX0RFU0NSSVBUT1IgKGRlY2wpKQotCWRlY2wgPSBHRkNfREVD TF9TQVZFRF9ERVNDUklQVE9SIChkZWNsKTsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICAv KiBSZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBjbGFzcyByZWZlcmVuY2UsIGNvbnZl cnQgdGhlCi0JIGV4cHJlc3Npb24gYW5kIHRoZW4gcmVjb3ZlciBpdHMgdGFpbGVuZCBvbmNlIG1v cmUuICAqLwotICAgICAgZ2ZjX3NlIHRtcHNlOwotICAgICAgcmVmID0gY2xhc3NfcmVmLT5uZXh0 OwotICAgICAgY2xhc3NfcmVmLT5uZXh0ID0gTlVMTDsKLSAgICAgIGdmY19pbml0X3NlICgmdG1w c2UsIE5VTEwpOwotICAgICAgZ2ZjX2NvbnZfZXhwciAoJnRtcHNlLCBleHByKTsKLSAgICAgIGdm Y19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS0+cHJlLCAmdG1wc2UucHJlKTsKLSAgICAgIGRlY2wg PSB0bXBzZS5leHByOwotICAgICAgY2xhc3NfcmVmLT5uZXh0ID0gcmVmOworICAgICAgaWYgKCFH RkNfQ0xBU1NfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSkKKwlyZXR1cm4gZmFsc2U7CiAgICAg fQoKLSAgaWYgKFBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSkKLSAgICBkZWNsID0g YnVpbGRfZm9sZF9pbmRpcmVjdF9yZWZfbG9jIChpbnB1dF9sb2NhdGlvbiwgZGVjbCk7Ci0KLSAg aWYgKCFHRkNfQ0xBU1NfVFlQRV9QIChUUkVFX1RZUEUgKGRlY2wpKSkKLSAgICByZXR1cm4gZmFs c2U7CisgIHNlLT5jbGFzc192cHRyID0gZ2ZjX2V2YWx1YXRlX25vdyAoZ2ZjX2NsYXNzX3ZwdHJf Z2V0IChkZWNsKSwgJnNlLT5wcmUpOwoKICAgc2l6ZSA9IGdmY19jbGFzc192dGFiX3NpemVfZ2V0 IChkZWNsKTsKLQogICAvKiBGb3IgdW5saW1pdGVkIHBvbHltb3JwaGljIGVudGl0aWVzIHRoZW4g X2xlbiBjb21wb25lbnQgbmVlZHMgdG8gYmUKICAgICAgbXVsdGlwbGllZCB3aXRoIHRoZSBzaXpl LiAgKi8KICAgc2l6ZSA9IGdmY19yZXNpemVfY2xhc3Nfc2l6ZV93aXRoX2xlbiAoJnNlLT5wcmUs IGRlY2wsIHNpemUpOwotCiAgIHNpemUgPSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAoaW5kZXgp LCBzaXplKTsKCi0gIC8qIEJ1aWxkIHRoZSBhZGRyZXNzIG9mIHRoZSBlbGVtZW50LiAgKi8KLSAg dHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFIChiYXNlKSk7Ci0gIG9mZnNldCA9IGZvbGRfYnVp bGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1VTFRfRVhQUiwKLQkJCSAgICBnZmNfYXJyYXlfaW5k ZXhfdHlwZSwKLQkJCSAgICBpbmRleCwgc2l6ZSk7Ci0gIHRtcCA9IGdmY19idWlsZF9hZGRyX2V4 cHIgKHB2b2lkX3R5cGVfbm9kZSwgYmFzZSk7Ci0gIHRtcCA9IGZvbGRfYnVpbGRfcG9pbnRlcl9w bHVzX2xvYyAoaW5wdXRfbG9jYXRpb24sIHRtcCwgb2Zmc2V0KTsKLSAgdG1wID0gZm9sZF9jb252 ZXJ0IChidWlsZF9wb2ludGVyX3R5cGUgKHR5cGUpLCB0bXApOwotCiAgIC8qIFJldHVybiB0aGUg ZWxlbWVudCBpbiB0aGUgc2UgZXhwcmVzc2lvbi4gICovCi0gIHNlLT5leHByID0gYnVpbGRfZm9s ZF9pbmRpcmVjdF9yZWZfbG9jIChpbnB1dF9sb2NhdGlvbiwgdG1wKTsKKyAgc2UtPmV4cHIgPSBn ZmNfYnVpbGRfc3Bhbm5lZF9hcnJheV9yZWYgKGJhc2UsIGluZGV4LCBzaXplKTsKICAgcmV0dXJu IHRydWU7CiB9CgpAQCAtMTAyODAsMjMgKzEwMjQ3LDEwIEBAIGdmY19hbGxvY19hbGxvY2F0YWJs ZV9mb3JfYXNzaWdubWVudCAoZ2ZjX2xvb3BpbmZvICpsb29wLAogICAgIH0KICAgZWxzZSBpZiAo ZXhwcjEtPnRzLnR5cGUgPT0gQlRfQ0xBU1MpCiAgICAgewotICAgICAgdG1wID0gZXhwcjEtPnJh bmsgPyBnZmNfZ2V0X2NsYXNzX2Zyb21fZXhwciAoZGVzYykgOiBOVUxMX1RSRUU7Ci0gICAgICBp ZiAodG1wID09IE5VTExfVFJFRSkKLQl0bXAgPSBnZmNfZ2V0X2NsYXNzX2Zyb21fZ2ZjX2V4cHIg KGV4cHIxKTsKLQotICAgICAgaWYgKHRtcCAhPSBOVUxMX1RSRUUpCi0JewotCSAgdG1wMiA9IGdm Y19jbGFzc192cHRyX2dldCAodG1wKTsKLQkgIGNvbmQgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0 X2xvY2F0aW9uLCBORV9FWFBSLAotCQkJCSAgbG9naWNhbF90eXBlX25vZGUsIHRtcDIsCi0JCQkJ ICBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKHRtcDIpLCAwKSk7Ci0JICBlbGVtc2l6ZTEgPSBn ZmNfY2xhc3NfdnRhYl9zaXplX2dldCAodG1wKTsKLQkgIGVsZW1zaXplMSA9IGZvbGRfYnVpbGQz X2xvYyAoaW5wdXRfbG9jYXRpb24sIENPTkRfRVhQUiwKLQkJCQkgICAgICBnZmNfYXJyYXlfaW5k ZXhfdHlwZSwgY29uZCwKLQkJCQkgICAgICBlbGVtc2l6ZTEsIGdmY19pbmRleF96ZXJvX25vZGUp OwotCX0KLSAgICAgIGVsc2UKLQllbGVtc2l6ZTEgPSBUWVBFX1NJWkVfVU5JVCAoZ2ZjX3R5cGVu b2RlX2Zvcl9zcGVjICgmQ0xBU1NfREFUQSAoZXhwcjEpLT50cykpOworICAgICAgLyogVW5mb3J0 dW5hdGVseSwgdGhlIGxocyB2cHRyIGlzIHNldCB0b28gZWFybHkgaW4gbWFueSBjYXNlcy4KKwkg UGxheSBpdCBzYWZlIGJ5IHVzaW5nIHRoZSBkZXNjcmlwdG9yIGVsZW1lbnQgbGVuZ3RoLiAgKi8K KyAgICAgIHRtcCA9IGdmY19jb252X2Rlc2NyaXB0b3JfZWxlbV9sZW4gKGRlc2MpOworICAgICAg ZWxlbXNpemUxID0gZm9sZF9jb252ZXJ0IChnZmNfYXJyYXlfaW5kZXhfdHlwZSwgdG1wKTsKICAg ICB9CiAgIGVsc2UKICAgICBlbGVtc2l6ZTEgPSBOVUxMX1RSRUU7CkBAIC0xMDc3MCwxMSArMTA3 MjQsMTEgQEAgZ2ZjX2FsbG9jX2FsbG9jYXRhYmxlX2Zvcl9hc3NpZ25tZW50IChnZmNfbG9vcGlu Zm8gKmxvb3AsCgoKICAgLyogV2UgYWxyZWFkeSBzZXQgdGhlIGR0eXBlIGluIHRoZSBjYXNlIG9m IGRlZmVycmVkIGNoYXJhY3RlcgotICAgICBsZW5ndGggYXJyYXlzIGFuZCB1bmxpbWl0ZWQgcG9s eW1vcnBoaWMgYXJyYXlzLiAgKi8KKyAgICAgbGVuZ3RoIGFycmF5cyBhbmQgY2xhc3MgbHZhbHVl cy4gICovCiAgIGlmICghKEdGQ19ERVNDUklQVE9SX1RZUEVfUCAoVFJFRV9UWVBFIChkZXNjKSkK IAkmJiAoKGV4cHIxLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUiAmJiBleHByMS0+dHMuZGVmZXJy ZWQpCiAJICAgIHx8IGNvYXJyYXkpKQotICAgICAgJiYgIVVOTElNSVRFRF9QT0xZIChleHByMSkp CisgICAgICAmJiBleHByMS0+dHMudHlwZSAhPSBCVF9DTEFTUykKICAgICB7CiAgICAgICB0bXAg PSBnZmNfY29udl9kZXNjcmlwdG9yX2R0eXBlIChkZXNjKTsKICAgICAgIGdmY19hZGRfbW9kaWZ5 ICgmYWxsb2NfYmxvY2ssIHRtcCwgZ2ZjX2dldF9kdHlwZSAoVFJFRV9UWVBFIChkZXNjKSkpOwpk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jIGIvZ2NjL2ZvcnRyYW4vdHJhbnMt ZXhwci5jCmluZGV4IGY2ZWY1YzAyM2JmLi4yZTRiNDgwOGUwOCAxMDA2NDQKLS0tIGEvZ2NjL2Zv cnRyYW4vdHJhbnMtZXhwci5jCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuYwpAQCAtMzg1 LDEwICszODUsMTMgQEAgZ2ZjX3ZwdHJfc2l6ZV9nZXQgKHRyZWUgdnB0cikKICAgIHRvIGNsYXNz LmM6OmdmY19hZGRfY29tcG9uZW50X3JlZiAoKSwgaXMgdGhlcmUgYSBzaWduaWZpY2FudAogICAg ZGlmZmVyZW5jZTogZ2ZjX2FkZF9jb21wb25lbnRfcmVmICgpIGNvbmNlbnRyYXRlcyBvbiBhbiBh cnJheSByZWYgdG8KICAgIGJlIHRoZSBsYXN0IHJlZiBpbiB0aGUgY2hhaW4uICBUaGlzIHJvdXRp bmUgaXMgb2JsaXZpb3VzIHRvIHRoZSBraW5kCi0gICBvZiByZWZzIGZvbGxvd2luZy4gICovCisg ICBvZiByZWZzIGZvbGxvd2luZy4gSWYgdHMgaXMgbm9uLW51bGwgdGhlIGN1dCBpcyBhdCB0aGUg Y2xhc3MgZW50aXR5CisgICBvciBjb21wb25lbnQgdGhhdCBpcyBmb2xsb3dlZCBieSBhbiBhcnJh eSByZWZlcmVuY2UsIHdoaWNoIGlzIG5vdAorICAgYW4gZWxlbWVudC4gICovCgogZ2ZjX2V4cHIg KgotZ2ZjX2ZpbmRfYW5kX2N1dF9hdF9sYXN0X2NsYXNzX3JlZiAoZ2ZjX2V4cHIgKmUsIGJvb2wg aXNfbW9sZCkKK2dmY19maW5kX2FuZF9jdXRfYXRfbGFzdF9jbGFzc19yZWYgKGdmY19leHByICpl LCBib29sIGlzX21vbGQsCisJCQkJICAgIGdmY190eXBlc3BlYyAqKnRzKQogewogICBnZmNfZXhw ciAqYmFzZV9leHByOwogICBnZmNfcmVmICpyZWYsICpjbGFzc19yZWYsICp0YWlsID0gTlVMTCwg KmFycmF5X3JlZjsKQEAgLTM5Niw4ICszOTksMzQgQEAgZ2ZjX2ZpbmRfYW5kX2N1dF9hdF9sYXN0 X2NsYXNzX3JlZiAoZ2ZjX2V4cHIgKmUsIGJvb2wgaXNfbW9sZCkKICAgLyogRmluZCB0aGUgbGFz dCBjbGFzcyByZWZlcmVuY2UuICAqLwogICBjbGFzc19yZWYgPSBOVUxMOwogICBhcnJheV9yZWYg PSBOVUxMOworCisgIGlmICh0cykKKyAgICB7CisgICAgICBpZiAoZS0+c3ltdHJlZQorCSAgJiYg ZS0+c3ltdHJlZS0+bi5zeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1MpCisJKnRzID0gJmUtPnN5bXRy ZWUtPm4uc3ltLT50czsKKyAgICAgIGVsc2UKKwkqdHMgPSBOVUxMOworICAgIH0KKwogICBmb3Ig KHJlZiA9IGUtPnJlZjsgcmVmOyByZWYgPSByZWYtPm5leHQpCiAgICAgeworICAgICAgaWYgKHRz ICYmIHJlZi0+dHlwZSA9PSBSRUZfQ09NUE9ORU5UCisJICAmJiByZWYtPnUuYy5jb21wb25lbnQt PnRzLnR5cGUgPT0gQlRfQ0xBU1MKKwkgICYmIHJlZi0+bmV4dCAmJiByZWYtPm5leHQtPnR5cGUg PT0gUkVGX0NPTVBPTkVOVAorCSAgJiYgc3RyY21wIChyZWYtPm5leHQtPnUuYy5jb21wb25lbnQt Pm5hbWUsICJfZGF0YSIpID09IDAKKwkgICYmIHJlZi0+bmV4dC0+bmV4dAorCSAgJiYgcmVmLT5u ZXh0LT5uZXh0LT50eXBlID09IFJFRl9BUlJBWQorCSAgJiYgcmVmLT5uZXh0LT5uZXh0LT51LmFy LnR5cGUgIT0gQVJfRUxFTUVOVCkKKwl7CisJICAqdHMgPSAmcmVmLT51LmMuY29tcG9uZW50LT50 czsKKwkgIGNsYXNzX3JlZiA9IHJlZjsKKwkgIGJyZWFrOworCX0KKworICAgICAgaWYgKHRzICYm ICp0cyA9PSBOVUxMKQorCXJldHVybiBOVUxMOworCiAgICAgICBpZiAocmVmLT50eXBlID09IFJF Rl9BUlJBWSAmJiByZWYtPnUuYXIudHlwZSAhPSBBUl9FTEVNRU5UKQogCWFycmF5X3JlZiA9IHJl ZjsKCkBAIC05OTgzLDE3ICsxMDAxMiwyMCBAQCBnZmNfdHJhbnNfc2NhbGFyX2Fzc2lnbiAoZ2Zj X3NlICogbHNlLCBnZmNfc2UgKiByc2UsIGdmY190eXBlc3BlYyB0cywKICAgICAgIGdmY19hZGRf bW9kaWZ5ICgmYmxvY2ssIGxzZS0+ZXhwciwgdG1wKTsKICAgICB9CiAgIC8qIElmIHBvc3NpYmxl IHVzZSB0aGUgcmhzIHZwdHIgY29weSB3aXRoIHRyYW5zX3NjYWxhcl9jbGFzc19hc3NpZ24uLi4u ICAqLwotICBlbHNlIGlmICh0cy50eXBlID09IEJUX0NMQVNTCi0JICAgJiYgIXRyYW5zX3NjYWxh cl9jbGFzc19hc3NpZ24gKCZibG9jaywgbHNlLCByc2UpKQorICBlbHNlIGlmICh0cy50eXBlID09 IEJUX0NMQVNTKQogICAgIHsKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywg JmxzZS0+cHJlKTsKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZibG9jaywgJnJzZS0+ cHJlKTsKLSAgICAgIC8qIC4uLm90aGVyd2lzZSBhc3NpZ25tZW50IHN1ZmZpY2VzLiBOb3RlIHRo ZSB1c2Ugb2YgVklFV19DT05WRVJUX0VYUFIKLQkgZm9yIHRoZSBsaHMgd2hpY2ggZW5zdXJlcyB0 aGF0IGNsYXNzIGRhdGEgcmhzIGNhc3QgYXMgYSBzdHJpbmcgYXNzaWducwotCSBjb3JyZWN0bHku ICAqLwotICAgICAgdG1wID0gZm9sZF9idWlsZDFfbG9jIChpbnB1dF9sb2NhdGlvbiwgVklFV19D T05WRVJUX0VYUFIsCi0JCQkgICAgIFRSRUVfVFlQRSAocnNlLT5leHByKSwgbHNlLT5leHByKTsK LSAgICAgIGdmY19hZGRfbW9kaWZ5ICgmYmxvY2ssIHRtcCwgcnNlLT5leHByKTsKKworICAgICAg aWYgKCF0cmFuc19zY2FsYXJfY2xhc3NfYXNzaWduICgmYmxvY2ssIGxzZSwgcnNlKSkKKwl7CisJ ICAvKiAuLi5vdGhlcndpc2UgYXNzaWdubWVudCBzdWZmaWNlcy4gTm90ZSB0aGUgdXNlIG9mIFZJ RVdfQ09OVkVSVF9FWFBSCisJICBmb3IgdGhlIGxocyB3aGljaCBlbnN1cmVzIHRoYXQgY2xhc3Mg ZGF0YSByaHMgY2FzdCBhcyBhIHN0cmluZyBhc3NpZ25zCisJICBjb3JyZWN0bHkuICAqLworCSAg dG1wID0gZm9sZF9idWlsZDFfbG9jIChpbnB1dF9sb2NhdGlvbiwgVklFV19DT05WRVJUX0VYUFIs CisJCQkJIFRSRUVfVFlQRSAocnNlLT5leHByKSwgbHNlLT5leHByKTsKKwkgIGdmY19hZGRfbW9k aWZ5ICgmYmxvY2ssIHRtcCwgcnNlLT5leHByKTsKKwl9CiAgICAgfQogICBlbHNlIGlmICh0cy50 eXBlICE9IEJUX0NMQVNTKQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLmMg Yi9nY2MvZm9ydHJhbi90cmFucy5jCmluZGV4IGFiNTNmYzVmNDQxLi45ZThlODYxOWZmOCAxMDA2 NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMuYworKysgYi9nY2MvZm9ydHJhbi90cmFucy5jCkBA IC00MjIsNiArNDIyLDkgQEAgZ2V0X2FycmF5X3NwYW4gKHRyZWUgdHlwZSwgdHJlZSBkZWNsKQog CQlyZXR1cm4gTlVMTF9UUkVFOwogCSAgICB9CiAJICBzcGFuID0gZ2ZjX2NsYXNzX3Z0YWJfc2l6 ZV9nZXQgKGRlY2wpOworCSAgLyogRm9yIHVubGltaXRlZCBwb2x5bW9ycGhpYyBlbnRpdGllcyB0 aGVuIF9sZW4gY29tcG9uZW50IG5lZWRzCisJICAgICB0byBiZSBtdWx0aXBsaWVkIHdpdGggdGhl IHNpemUuICAqLworCSAgc3BhbiA9IGdmY19yZXNpemVfY2xhc3Nfc2l6ZV93aXRoX2xlbiAoTlVM TCwgZGVjbCwgc3Bhbik7CiAJfQogICAgICAgZWxzZSBpZiAoR0ZDX0RFQ0xfUFRSX0FSUkFZX1Ag KGRlY2wpKQogCXsKQEAgLTQzOSwxMyArNDQyLDMxIEBAIGdldF9hcnJheV9zcGFuICh0cmVlIHR5 cGUsIHRyZWUgZGVjbCkKIH0KCgordHJlZQorZ2ZjX2J1aWxkX3NwYW5uZWRfYXJyYXlfcmVmICh0 cmVlIGJhc2UsIHRyZWUgb2Zmc2V0LCB0cmVlIHNwYW4pCit7CisgIHRyZWUgdHlwZTsKKyAgdHJl ZSB0bXA7CisgIHR5cGUgPSBUUkVFX1RZUEUgKFRSRUVfVFlQRSAoYmFzZSkpOworICBvZmZzZXQg PSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNVUxUX0VYUFIsCisJCQkgICAgZ2Zj X2FycmF5X2luZGV4X3R5cGUsCisJCQkgICAgb2Zmc2V0LCBzcGFuKTsKKyAgdG1wID0gZ2ZjX2J1 aWxkX2FkZHJfZXhwciAocHZvaWRfdHlwZV9ub2RlLCBiYXNlKTsKKyAgdG1wID0gZm9sZF9idWls ZF9wb2ludGVyX3BsdXNfbG9jIChpbnB1dF9sb2NhdGlvbiwgdG1wLCBvZmZzZXQpOworICB0bXAg PSBmb2xkX2NvbnZlcnQgKGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSksIHRtcCk7CisgIGlmICgo VFJFRV9DT0RFICh0eXBlKSAhPSBJTlRFR0VSX1RZUEUgJiYgVFJFRV9DT0RFICh0eXBlKSAhPSBB UlJBWV9UWVBFKQorICAgICAgfHwgIVRZUEVfU1RSSU5HX0ZMQUcgKHR5cGUpKQorICAgIHRtcCA9 IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmX2xvYyAoaW5wdXRfbG9jYXRpb24sIHRtcCk7CisgIHJl dHVybiB0bXA7Cit9CisKKwogLyogQnVpbGQgYW4gQVJSQVlfUkVGIHdpdGggaXRzIG5hdHVyYWwg dHlwZS4gICovCgogdHJlZQogZ2ZjX2J1aWxkX2FycmF5X3JlZiAodHJlZSBiYXNlLCB0cmVlIG9m ZnNldCwgdHJlZSBkZWNsLCB0cmVlIHZwdHIpCiB7CiAgIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAo YmFzZSk7Ci0gIHRyZWUgdG1wOwogICB0cmVlIHNwYW4gPSBOVUxMX1RSRUU7CgogICBpZiAoR0ZD X0FSUkFZX1RZUEVfUCAodHlwZSkgJiYgR0ZDX1RZUEVfQVJSQVlfUkFOSyAodHlwZSkgPT0gMCkK QEAgLTQ4OCwxOCArNTA5LDcgQEAgZ2ZjX2J1aWxkX2FycmF5X3JlZiAodHJlZSBiYXNlLCB0cmVl IG9mZnNldCwgdHJlZSBkZWNsLCB0cmVlIHZwdHIpCiAgIC8qIElmIGEgbm9uLW51bGwgc3BhbiBo YXMgYmVlbiBnZW5lcmF0ZWQgcmVmZXJlbmNlIHRoZSBlbGVtZW50IHdpdGgKICAgICAgcG9pbnRl ciBhcml0aG1ldGljLiAgKi8KICAgaWYgKHNwYW4gIT0gTlVMTF9UUkVFKQotICAgIHsKLSAgICAg IG9mZnNldCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1VTFRfRVhQUiwKLQkJ CQlnZmNfYXJyYXlfaW5kZXhfdHlwZSwKLQkJCQlvZmZzZXQsIHNwYW4pOwotICAgICAgdG1wID0g Z2ZjX2J1aWxkX2FkZHJfZXhwciAocHZvaWRfdHlwZV9ub2RlLCBiYXNlKTsKLSAgICAgIHRtcCA9 IGZvbGRfYnVpbGRfcG9pbnRlcl9wbHVzX2xvYyAoaW5wdXRfbG9jYXRpb24sIHRtcCwgb2Zmc2V0 KTsKLSAgICAgIHRtcCA9IGZvbGRfY29udmVydCAoYnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKSwg dG1wKTsKLSAgICAgIGlmICgoVFJFRV9DT0RFICh0eXBlKSAhPSBJTlRFR0VSX1RZUEUgJiYgVFJF RV9DT0RFICh0eXBlKSAhPSBBUlJBWV9UWVBFKQotCSAgfHwgIVRZUEVfU1RSSU5HX0ZMQUcgKHR5 cGUpKQotCXRtcCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmX2xvYyAoaW5wdXRfbG9jYXRpb24s IHRtcCk7Ci0gICAgICByZXR1cm4gdG1wOwotICAgIH0KKyAgICByZXR1cm4gZ2ZjX2J1aWxkX3Nw YW5uZWRfYXJyYXlfcmVmIChiYXNlLCBvZmZzZXQsIHNwYW4pOwogICAvKiBPdGhlcndpc2UgdXNl IGEgc3RyYWlnaHRmb3J3YXJkIGFycmF5IHJlZmVyZW5jZS4gICovCiAgIGVsc2UKICAgICByZXR1 cm4gYnVpbGQ0X2xvYyAoaW5wdXRfbG9jYXRpb24sIEFSUkFZX1JFRiwgdHlwZSwgYmFzZSwgb2Zm c2V0LApkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMuaCBiL2djYy9mb3J0cmFuL3RyYW5z LmgKaW5kZXggNDRjYmZiNjNmMzkuLjhjNmY4MmZmMWIxIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJh bi90cmFucy5oCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLmgKQEAgLTQyNCw3ICs0MjQsOCBAQCB0 cmVlIGdmY19jbGFzc192cHRyX2dldCAodHJlZSk7CiB0cmVlIGdmY19jbGFzc19sZW5fZ2V0ICh0 cmVlKTsKIHRyZWUgZ2ZjX2NsYXNzX2xlbl9vcl96ZXJvX2dldCAodHJlZSk7CiB0cmVlIGdmY19y ZXNpemVfY2xhc3Nfc2l6ZV93aXRoX2xlbiAoc3RtdGJsb2NrX3QgKiwgdHJlZSwgdHJlZSk7Ci1n ZmNfZXhwciAqIGdmY19maW5kX2FuZF9jdXRfYXRfbGFzdF9jbGFzc19yZWYgKGdmY19leHByICos IGJvb2wgaXNfbW9sZCA9IGZhbHNlKTsKK2dmY19leHByICogZ2ZjX2ZpbmRfYW5kX2N1dF9hdF9s YXN0X2NsYXNzX3JlZiAoZ2ZjX2V4cHIgKiwgYm9vbCBpc19tb2xkID0gZmFsc2UsCisJCQkJCSAg ICAgICBnZmNfdHlwZXNwZWMgKip0cyA9IE5VTEwpOwogLyogR2V0IGFuIGFjY2Vzc29yIHRvIHRo ZSBjbGFzcycgdnRhYidzICogZmllbGQsIHdoZW4gYSBjbGFzcyBoYW5kbGUgaXMKICAgIGF2YWls YWJsZS4gICovCiB0cmVlIGdmY19jbGFzc192dGFiX2hhc2hfZ2V0ICh0cmVlKTsKQEAgLTYyMiw2 ICs2MjMsOSBAQCB0cmVlIGdmY19idWlsZF9hZGRyX2V4cHIgKHRyZWUsIHRyZWUpOwogLyogQnVp bGQgYW4gQVJSQVlfUkVGLiAgKi8KIHRyZWUgZ2ZjX2J1aWxkX2FycmF5X3JlZiAodHJlZSwgdHJl ZSwgdHJlZSwgdHJlZSB2cHRyID0gTlVMTF9UUkVFKTsKCisvKiBCdWlsZCBhbiBhcnJheSByZWYg dXNpbmcgcG9pbnRlciBhcml0aG1ldGljLiAgKi8KK3RyZWUgZ2ZjX2J1aWxkX3NwYW5uZWRfYXJy YXlfcmVmICh0cmVlIGJhc2UsIHRyZWUgb2Zmc2V0LCB0cmVlIHNwYW4pOworCiAvKiBDcmVhdGVz IGEgbGFiZWwuICBEZWNsIGlzIGFydGlmaWNpYWwgaWYgbGFiZWxfaWQgPT0gTlVMTF9UUkVFLiAg Ki8KIHRyZWUgZ2ZjX2J1aWxkX2xhYmVsX2RlY2wgKHRyZWUpOwoK --0000000000002bebe305be730d04--