From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F965C00144 for ; Mon, 1 Aug 2022 06:29:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232896AbiHAG3A (ORCPT ); Mon, 1 Aug 2022 02:29:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229642AbiHAG27 (ORCPT ); Mon, 1 Aug 2022 02:28:59 -0400 Received: from mail-vs1-xe2e.google.com (mail-vs1-xe2e.google.com [IPv6:2607:f8b0:4864:20::e2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E4E213CE5 for ; Sun, 31 Jul 2022 23:28:56 -0700 (PDT) Received: by mail-vs1-xe2e.google.com with SMTP id c3so10241162vsc.6 for ; Sun, 31 Jul 2022 23:28:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to:cc; bh=xMg4Q+PL+SZm7lOlgO2RAO/0rJDrObhUb7oGQ8oPqnc=; b=nGFBz/HkIRzCJfVJosdz+rl0St4Q09oE/SMPdWdYDbsggJzhUSD8pMmGduYNsQ+0yC txh0US0q7tbAQgaY+kKRXP1aNNf8YV2PYquZuUkJulj2zlDGHiMwL1MyNnphxTY6dvlH SAmMsQxGZfWzgNv84Gktj8xl/ax3kSbSJPj8P2O3kxB7G7EGMo4EVMiJNaMn/fbKicDW EUT1jeCr3tVCtYBhV3poV3/vX5eZlC/1uLmTyontgSlCnVXsWRXlxAvhW5rLqy2KgMm0 ic2Ddk8TDFm41+ZqyCMq0cuNSVvg2fbicPyj4v5hedR7gzZM4clu02k3wltiw0ZFTBCS OtRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=xMg4Q+PL+SZm7lOlgO2RAO/0rJDrObhUb7oGQ8oPqnc=; b=Tx67Rr+UhVypPN1aEMsYKpbXE7pgdQuDWzbcWVY20j0v9pnBh6wqlEaLTnGmvDYsi8 Pr0uetkhM6BHX4ilghR8bgbGGLA3gDcK3nQmuCe+p1THJG4+eLBScNZCHA+SPb8j/Zgl JnjEkNzS0nNhQfx19CWaLSw9Irg/ZXNUxomIMGZaEPWqeRZqELW4iAOnCnO+BnZxZhom 19Raijl0OYaMsPOGSxiW9BDh1fSIUeCJfydKgXMMFdpbzRY2mdtGlUilYMwd3neea21+ bd2lusgIYui+JW8d3iNqOSkyHUTp45FGrA31yPnKLEFj8H21GqvLsFMhzQmJ5ASJ84sb PM/A== X-Gm-Message-State: AJIora+jcJPiEDV8op1ae6MZbTiZ5R5gMu6NdPs+avqKIwX7DdyJyW1g Y/Hroh18OE0xnDWcUSDrUksKwsd6OZieJopASil+f2vD X-Google-Smtp-Source: AGRyM1u6ZojIGDYznn2etKyay/aSnwKh06Kz16IzxPMWV/lhrrXBrLOhKufd6nnN9ddOhxgy6M716GcR7Suhosj58iA= X-Received: by 2002:a67:f943:0:b0:35a:2603:6c94 with SMTP id u3-20020a67f943000000b0035a26036c94mr5538200vsq.17.1659335334955; Sun, 31 Jul 2022 23:28:54 -0700 (PDT) MIME-Version: 1.0 From: Steve French Date: Mon, 1 Aug 2022 01:28:43 -0500 Message-ID: Subject: [WIP PATCH][CIFS] move legacy cifs (smb1) code to legacy ifdef and do not include in build when legacy disabled To: CIFS Cc: Enzo Matsumiya , Tom Talpey Content-Type: multipart/mixed; boundary="000000000000342abd05e5281d5c" Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org --000000000000342abd05e5281d5c Content-Type: text/plain; charset="UTF-8" Currently much of the smb1 code is built even when CONFIG_CIFS_ALLOW_INSECURE_LEGACY is disabled. Move cifssmb.c to only be compiled when insecure legacy is disabled, and move various SMB1/CIFS helper functions to that ifdef. Some functions that were not SMB1/CIFS specific needed to be moved out of cifssmb.c This shrinks cifs.ko by more than 10% which is good - but also will help with the eventual movement of the legacy code to a distinct module. See attached. -- Thanks, Steve --000000000000342abd05e5281d5c Content-Type: text/x-patch; charset="US-ASCII"; name="move-more-legacy-cifs-code-to-optional-config.patch" Content-Disposition: attachment; filename="move-more-legacy-cifs-code-to-optional-config.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l6ad8ep20 ZGlmZiAtLWdpdCBhL2ZzL2NpZnMvTWFrZWZpbGUgYi9mcy9jaWZzL01ha2VmaWxlCmluZGV4IDhj OWYyYzAwYmU3Mi4uZTg4MmU5MTJhNTE3IDEwMDY0NAotLS0gYS9mcy9jaWZzL01ha2VmaWxlCisr KyBiL2ZzL2NpZnMvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBACiBjY2ZsYWdzLXkgKz0gLUkkKHNy YykJCSMgbmVlZGVkIGZvciB0cmFjZSBldmVudHMKIG9iai0kKENPTkZJR19DSUZTKSArPSBjaWZz Lm8KIAotY2lmcy15IDo9IHRyYWNlLm8gY2lmc2ZzLm8gY2lmc3NtYi5vIGNpZnNfZGVidWcubyBj b25uZWN0Lm8gZGlyLm8gZmlsZS5vIFwKK2NpZnMteSA6PSB0cmFjZS5vIGNpZnNmcy5vIGNpZnNf ZGVidWcubyBjb25uZWN0Lm8gZGlyLm8gZmlsZS5vIFwKIAkgIGlub2RlLm8gbGluay5vIG1pc2Mu byBuZXRtaXNjLm8gc21iZW5jcnlwdC5vIHRyYW5zcG9ydC5vIFwKIAkgIGNpZnNfdW5pY29kZS5v IG50ZXJyLm8gY2lmc2VuY3J5cHQubyBcCiAJICByZWFkZGlyLm8gaW9jdGwubyBzZXNzLm8gZXhw b3J0Lm8gdW5jLm8gd2ludWNhc2UubyBcCkBAIC0zMSw0ICszMSw0IEBAIGNpZnMtJChDT05GSUdf Q0lGU19TTUJfRElSRUNUKSArPSBzbWJkaXJlY3QubwogCiBjaWZzLSQoQ09ORklHX0NJRlNfUk9P VCkgKz0gY2lmc3Jvb3QubwogCi1jaWZzLSQoQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVH QUNZKSArPSBzbWIxb3BzLm8KK2NpZnMtJChDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdB Q1kpICs9IHNtYjFvcHMubyBjaWZzc21iLm8KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2FjbC5j IGIvZnMvY2lmcy9jaWZzYWNsLmMKaW5kZXggYmY4NjFmZWYyZjBjLi5mYTQ4MGQ2MmYzMTMgMTAw NjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2FjbC5jCisrKyBiL2ZzL2NpZnMvY2lmc2FjbC5jCkBAIC0x Mzc5LDYgKzEzNzksNyBAQCBzdGF0aWMgaW50IGJ1aWxkX3NlY19kZXNjKHN0cnVjdCBjaWZzX250 c2QgKnBudHNkLCBzdHJ1Y3QgY2lmc19udHNkICpwbm50c2QsCiAJcmV0dXJuIHJjOwogfQogCisj aWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiBzdHJ1Y3QgY2lmc19udHNk ICpnZXRfY2lmc19hY2xfYnlfZmlkKHN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsCiAJCQkJ ICAgICAgY29uc3Qgc3RydWN0IGNpZnNfZmlkICpjaWZzZmlkLCB1MzIgKnBhY2xsZW4sCiAJCQkJ ICAgICAgdTMyIF9fbWF5YmVfdW51c2VkIHVudXNlZCkKQEAgLTE1MTIsNiArMTUxMyw3IEBAIGlu dCBzZXRfY2lmc19hY2woc3RydWN0IGNpZnNfbnRzZCAqcG5udHNkLCBfX3UzMiBhY2xsZW4sCiAJ Y2lmc19wdXRfdGxpbmsodGxpbmspOwogCXJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBDT05GSUdf Q0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogLyogVHJhbnNsYXRlIHRoZSBDSUZTIEFD TCAoc2ltaWxhciB0byBOVEZTIEFDTCkgZm9yIGEgZmlsZSBpbnRvIG1vZGUgYml0cyAqLwogaW50 CmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNwcm90by5oIGIvZnMvY2lmcy9jaWZzcHJvdG8uaApp bmRleCBkNTlhZWJlZmE3MWMuLmRlMTY3ZTNhZjAxNSAxMDA2NDQKLS0tIGEvZnMvY2lmcy9jaWZz cHJvdG8uaAorKysgYi9mcy9jaWZzL2NpZnNwcm90by5oCkBAIC01MjEsNiArNTIxLDcgQEAgZXh0 ZXJuIGludCBnZW5lcmF0ZV9zbWIzMHNpZ25pbmdrZXkoc3RydWN0IGNpZnNfc2VzICpzZXMsCiBl eHRlcm4gaW50IGdlbmVyYXRlX3NtYjMxMXNpZ25pbmdrZXkoc3RydWN0IGNpZnNfc2VzICpzZXMs CiAJCQkJICAgICBzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIpOwogCisjaWZkZWYgQ09O RklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiBleHRlcm4gaW50IENJRlNTTUJDb3B5KHVu c2lnbmVkIGludCB4aWQsCiAJCQlzdHJ1Y3QgY2lmc190Y29uICpzb3VyY2VfdGNvbiwKIAkJCWNv bnN0IGNoYXIgKmZyb21OYW1lLApAQCAtNTUxLDYgKzU1Miw3IEBAIGV4dGVybiBpbnQgQ0lGU1NN QlNldFBvc2l4QUNMKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRj b24sCiAJCWNvbnN0IHN0cnVjdCBubHNfdGFibGUgKm5sc19jb2RlcGFnZSwgaW50IHJlbWFwX3Nw ZWNpYWxfY2hhcnMpOwogZXh0ZXJuIGludCBDSUZTR2V0RXh0QXR0cihjb25zdCB1bnNpZ25lZCBp bnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCQkJY29uc3QgaW50IG5ldGZpZCwgX191 NjQgKnBFeHRBdHRyQml0cywgX191NjQgKnBNYXNrKTsKKyNlbmRpZiAvKiBDSUZTX0FMTE9XX0lO U0VDVVJFX0xFR0FDWSAqLwogZXh0ZXJuIHZvaWQgY2lmc19hdXRvZGlzYWJsZV9zZXJ2ZXJpbm8o c3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYik7CiBleHRlcm4gYm9vbCBjb3VsZGJlX21mX3N5 bWxpbmsoY29uc3Qgc3RydWN0IGNpZnNfZmF0dHIgKmZhdHRyKTsKIGV4dGVybiBpbnQgY2hlY2tf bWZfc3ltbGluayh1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLApkaWZm IC0tZ2l0IGEvZnMvY2lmcy9jaWZzc21iLmMgYi9mcy9jaWZzL2NpZnNzbWIuYwppbmRleCAwNGE0 YzMwNGQwMDQuLmZmZmMxYjMzMmVhYyAxMDA2NDQKLS0tIGEvZnMvY2lmcy9jaWZzc21iLmMKKysr IGIvZnMvY2lmcy9jaWZzc21iLmMKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjaWZzcHJv dG8uaCIKICNpbmNsdWRlICJjaWZzX3VuaWNvZGUuaCIKICNpbmNsdWRlICJjaWZzX2RlYnVnLmgi Ci0jaW5jbHVkZSAic21iMnByb3RvLmgiCisvKiAjaW5jbHVkZSAic21iMnByb3RvLmgiKi8KICNp bmNsdWRlICJmc2NhY2hlLmgiCiAjaW5jbHVkZSAic21iZGlyZWN0LmgiCiAjaWZkZWYgQ09ORklH X0NJRlNfREZTX1VQQ0FMTApAQCAtNjIsNTIgKzYyLDYgQEAgc3RhdGljIHN0cnVjdCB7CiAjZGVm aW5lIENJRlNfTlVNX1BST1QgMQogI2VuZGlmIC8qIENJRlNfUE9TSVggKi8KIAotLyoKLSAqIE1h cmsgYXMgaW52YWxpZCwgYWxsIG9wZW4gZmlsZXMgb24gdHJlZSBjb25uZWN0aW9ucyBzaW5jZSB0 aGV5Ci0gKiB3ZXJlIGNsb3NlZCB3aGVuIHNlc3Npb24gdG8gc2VydmVyIHdhcyBsb3N0LgotICov Ci12b2lkCi1jaWZzX21hcmtfb3Blbl9maWxlc19pbnZhbGlkKHN0cnVjdCBjaWZzX3Rjb24gKnRj b24pCi17Ci0Jc3RydWN0IGNpZnNGaWxlSW5mbyAqb3Blbl9maWxlID0gTlVMTDsKLQlzdHJ1Y3Qg bGlzdF9oZWFkICp0bXA7Ci0Jc3RydWN0IGxpc3RfaGVhZCAqdG1wMTsKLQotCS8qIG9ubHkgc2Vu ZCBvbmNlIHBlciBjb25uZWN0ICovCi0Jc3Bpbl9sb2NrKCZ0Y29uLT5zZXMtPnNlc19sb2NrKTsK LQlpZiAoKHRjb24tPnNlcy0+c2VzX3N0YXR1cyAhPSBTRVNfR09PRCkgfHwgKHRjb24tPnN0YXR1 cyAhPSBUSURfTkVFRF9SRUNPTikpIHsKLQkJc3Bpbl91bmxvY2soJnRjb24tPnNlcy0+c2VzX2xv Y2spOwotCQlyZXR1cm47Ci0JfQotCXRjb24tPnN0YXR1cyA9IFRJRF9JTl9GSUxFU19JTlZBTElE QVRFOwotCXNwaW5fdW5sb2NrKCZ0Y29uLT5zZXMtPnNlc19sb2NrKTsKLQotCS8qIGxpc3QgYWxs IGZpbGVzIG9wZW4gb24gdHJlZSBjb25uZWN0aW9uIGFuZCBtYXJrIHRoZW0gaW52YWxpZCAqLwot CXNwaW5fbG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2spOwotCWxpc3RfZm9yX2VhY2hfc2FmZSh0 bXAsIHRtcDEsICZ0Y29uLT5vcGVuRmlsZUxpc3QpIHsKLQkJb3Blbl9maWxlID0gbGlzdF9lbnRy eSh0bXAsIHN0cnVjdCBjaWZzRmlsZUluZm8sIHRsaXN0KTsKLQkJb3Blbl9maWxlLT5pbnZhbGlk SGFuZGxlID0gdHJ1ZTsKLQkJb3Blbl9maWxlLT5vcGxvY2tfYnJlYWtfY2FuY2VsbGVkID0gdHJ1 ZTsKLQl9Ci0Jc3Bpbl91bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKLQotCW11dGV4X2xv Y2soJnRjb24tPmNyZmlkLmZpZF9tdXRleCk7Ci0JdGNvbi0+Y3JmaWQuaXNfdmFsaWQgPSBmYWxz ZTsKLQkvKiBjYWNoZWQgaGFuZGxlIGlzIG5vdCB2YWxpZCwgc28gU01CMl9DTE9TRSB3b24ndCBi ZSBzZW50IGJlbG93ICovCi0JY2xvc2VfY2FjaGVkX2Rpcl9sZWFzZV9sb2NrZWQoJnRjb24tPmNy ZmlkKTsKLQltZW1zZXQodGNvbi0+Y3JmaWQuZmlkLCAwLCBzaXplb2Yoc3RydWN0IGNpZnNfZmlk KSk7Ci0JbXV0ZXhfdW5sb2NrKCZ0Y29uLT5jcmZpZC5maWRfbXV0ZXgpOwotCi0Jc3Bpbl9sb2Nr KCZ0Y29uLT50Y19sb2NrKTsKLQlpZiAodGNvbi0+c3RhdHVzID09IFRJRF9JTl9GSUxFU19JTlZB TElEQVRFKQotCQl0Y29uLT5zdGF0dXMgPSBUSURfTkVFRF9UQ09OOwotCXNwaW5fdW5sb2NrKCZ0 Y29uLT50Y19sb2NrKTsKLQotCS8qCi0JICogQkIgQWRkIGNhbGwgdG8gaW52YWxpZGF0ZV9pbm9k ZXMoc2IpIGZvciBhbGwgc3VwZXJibG9ja3MgbW91bnRlZAotCSAqIHRvIHRoaXMgdGNvbi4KLQkg Ki8KLX0KIAogLyogcmVjb25uZWN0IHRoZSBzb2NrZXQsIHRjb24sIGFuZCBzbWIgc2Vzc2lvbiBp ZiBuZWVkZWQgKi8KIHN0YXRpYyBpbnQKQEAgLTQ1Nyw1MiArNDExLDYgQEAgZGVjb2RlX2V4dF9z ZWNfYmxvYihzdHJ1Y3QgY2lmc19zZXMgKnNlcywgTkVHT1RJQVRFX1JTUCAqcFNNQnIpCiAJcmV0 dXJuIDA7CiB9CiAKLWludAotY2lmc19lbmFibGVfc2lnbmluZyhzdHJ1Y3QgVENQX1NlcnZlcl9J bmZvICpzZXJ2ZXIsIGJvb2wgbW50X3NpZ25fcmVxdWlyZWQpCi17Ci0JYm9vbCBzcnZfc2lnbl9y ZXF1aXJlZCA9IHNlcnZlci0+c2VjX21vZGUgJiBzZXJ2ZXItPnZhbHMtPnNpZ25pbmdfcmVxdWly ZWQ7Ci0JYm9vbCBzcnZfc2lnbl9lbmFibGVkID0gc2VydmVyLT5zZWNfbW9kZSAmIHNlcnZlci0+ dmFscy0+c2lnbmluZ19lbmFibGVkOwotCWJvb2wgbW50X3NpZ25fZW5hYmxlZDsKLQotCS8qCi0J ICogSXMgc2lnbmluZyByZXF1aXJlZCBieSBtbnQgb3B0aW9ucz8gSWYgbm90IHRoZW4gY2hlY2sK LQkgKiBnbG9iYWxfc2VjZmxhZ3MgdG8gc2VlIGlmIGl0IGlzIHRoZXJlLgotCSAqLwotCWlmICgh bW50X3NpZ25fcmVxdWlyZWQpCi0JCW1udF9zaWduX3JlcXVpcmVkID0gKChnbG9iYWxfc2VjZmxh Z3MgJiBDSUZTU0VDX01VU1RfU0lHTikgPT0KLQkJCQkJCUNJRlNTRUNfTVVTVF9TSUdOKTsKLQot CS8qCi0JICogSWYgc2lnbmluZyBpcyByZXF1aXJlZCB0aGVuIGl0J3MgYXV0b21hdGljYWxseSBl bmFibGVkIHRvbywKLQkgKiBvdGhlcndpc2UsIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2VjZmxhZ3Mg YWxsb3cgaXQuCi0JICovCi0JbW50X3NpZ25fZW5hYmxlZCA9IG1udF9zaWduX3JlcXVpcmVkID8g bW50X3NpZ25fcmVxdWlyZWQgOgotCQkJCShnbG9iYWxfc2VjZmxhZ3MgJiBDSUZTU0VDX01BWV9T SUdOKTsKLQotCS8qIElmIHNlcnZlciByZXF1aXJlcyBzaWduaW5nLCBkb2VzIGNsaWVudCBhbGxv dyBpdD8gKi8KLQlpZiAoc3J2X3NpZ25fcmVxdWlyZWQpIHsKLQkJaWYgKCFtbnRfc2lnbl9lbmFi bGVkKSB7Ci0JCQljaWZzX2RiZyhWRlMsICJTZXJ2ZXIgcmVxdWlyZXMgc2lnbmluZywgYnV0IGl0 J3MgZGlzYWJsZWQgaW4gU2VjdXJpdHlGbGFncyFcbiIpOwotCQkJcmV0dXJuIC1FTk9UU1VQUDsK LQkJfQotCQlzZXJ2ZXItPnNpZ24gPSB0cnVlOwotCX0KLQotCS8qIElmIGNsaWVudCByZXF1aXJl cyBzaWduaW5nLCBkb2VzIHNlcnZlciBhbGxvdyBpdD8gKi8KLQlpZiAobW50X3NpZ25fcmVxdWly ZWQpIHsKLQkJaWYgKCFzcnZfc2lnbl9lbmFibGVkKSB7Ci0JCQljaWZzX2RiZyhWRlMsICJTZXJ2 ZXIgZG9lcyBub3Qgc3VwcG9ydCBzaWduaW5nIVxuIik7Ci0JCQlyZXR1cm4gLUVOT1RTVVBQOwot CQl9Ci0JCXNlcnZlci0+c2lnbiA9IHRydWU7Ci0JfQotCi0JaWYgKGNpZnNfcmRtYV9lbmFibGVk KHNlcnZlcikgJiYgc2VydmVyLT5zaWduKQotCQljaWZzX2RiZyhWRlMsICJTaWduaW5nIGlzIGVu YWJsZWQsIGFuZCBSRE1BIHJlYWQvd3JpdGUgd2lsbCBiZSBkaXNhYmxlZFxuIik7Ci0KLQlyZXR1 cm4gMDsKLX0KLQogc3RhdGljIGJvb2wKIHNob3VsZF9zZXRfZXh0X3NlY19mbGFnKGVudW0gc2Vj dXJpdHlFbnVtIHNlY3R5cGUpCiB7CkBAIC0xMzc5LDE4NCArMTI4Nyw2IEBAIENJRlNfb3Blbihj b25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc19vcGVuX3Bhcm1zICpvcGFybXMsIGlu dCAqb3Bsb2NrLAogCXJldHVybiByYzsKIH0KIAotLyoKLSAqIERpc2NhcmQgYW55IHJlbWFpbmlu ZyBkYXRhIGluIHRoZSBjdXJyZW50IFNNQi4gVG8gZG8gdGhpcywgd2UgYm9ycm93IHRoZQotICog Y3VycmVudCBiaWdidWYuCi0gKi8KLWludAotY2lmc19kaXNjYXJkX3JlbWFpbmluZ19kYXRhKHN0 cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKLXsKLQl1bnNpZ25lZCBpbnQgcmZjbGVuID0g c2VydmVyLT5wZHVfc2l6ZTsKLQlpbnQgcmVtYWluaW5nID0gcmZjbGVuICsgc2VydmVyLT52YWxz LT5oZWFkZXJfcHJlYW1ibGVfc2l6ZSAtCi0JCXNlcnZlci0+dG90YWxfcmVhZDsKLQotCXdoaWxl IChyZW1haW5pbmcgPiAwKSB7Ci0JCWludCBsZW5ndGg7Ci0KLQkJbGVuZ3RoID0gY2lmc19kaXNj YXJkX2Zyb21fc29ja2V0KHNlcnZlciwKLQkJCQltaW5fdChzaXplX3QsIHJlbWFpbmluZywKLQkJ CQkgICAgICBDSUZTTWF4QnVmU2l6ZSArIE1BWF9IRUFERVJfU0laRShzZXJ2ZXIpKSk7Ci0JCWlm IChsZW5ndGggPCAwKQotCQkJcmV0dXJuIGxlbmd0aDsKLQkJc2VydmVyLT50b3RhbF9yZWFkICs9 IGxlbmd0aDsKLQkJcmVtYWluaW5nIC09IGxlbmd0aDsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQot c3RhdGljIGludAotX19jaWZzX3JlYWR2X2Rpc2NhcmQoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAq c2VydmVyLCBzdHJ1Y3QgbWlkX3FfZW50cnkgKm1pZCwKLQkJICAgICBib29sIG1hbGZvcm1lZCkK LXsKLQlpbnQgbGVuZ3RoOwotCi0JbGVuZ3RoID0gY2lmc19kaXNjYXJkX3JlbWFpbmluZ19kYXRh KHNlcnZlcik7Ci0JZGVxdWV1ZV9taWQobWlkLCBtYWxmb3JtZWQpOwotCW1pZC0+cmVzcF9idWYg PSBzZXJ2ZXItPnNtYWxsYnVmOwotCXNlcnZlci0+c21hbGxidWYgPSBOVUxMOwotCXJldHVybiBs ZW5ndGg7Ci19Ci0KLXN0YXRpYyBpbnQKLWNpZnNfcmVhZHZfZGlzY2FyZChzdHJ1Y3QgVENQX1Nl cnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVjdCBtaWRfcV9lbnRyeSAqbWlkKQotewotCXN0cnVjdCBj aWZzX3JlYWRkYXRhICpyZGF0YSA9IG1pZC0+Y2FsbGJhY2tfZGF0YTsKLQotCXJldHVybiAgX19j aWZzX3JlYWR2X2Rpc2NhcmQoc2VydmVyLCBtaWQsIHJkYXRhLT5yZXN1bHQpOwotfQotCi1pbnQK LWNpZnNfcmVhZHZfcmVjZWl2ZShzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIHN0cnVj dCBtaWRfcV9lbnRyeSAqbWlkKQotewotCWludCBsZW5ndGgsIGxlbjsKLQl1bnNpZ25lZCBpbnQg ZGF0YV9vZmZzZXQsIGRhdGFfbGVuOwotCXN0cnVjdCBjaWZzX3JlYWRkYXRhICpyZGF0YSA9IG1p ZC0+Y2FsbGJhY2tfZGF0YTsKLQljaGFyICpidWYgPSBzZXJ2ZXItPnNtYWxsYnVmOwotCXVuc2ln bmVkIGludCBidWZsZW4gPSBzZXJ2ZXItPnBkdV9zaXplICsKLQkJc2VydmVyLT52YWxzLT5oZWFk ZXJfcHJlYW1ibGVfc2l6ZTsKLQlib29sIHVzZV9yZG1hX21yID0gZmFsc2U7Ci0KLQljaWZzX2Ri ZyhGWUksICIlczogbWlkPSVsbHUgb2Zmc2V0PSVsbHUgYnl0ZXM9JXVcbiIsCi0JCSBfX2Z1bmNf XywgbWlkLT5taWQsIHJkYXRhLT5vZmZzZXQsIHJkYXRhLT5ieXRlcyk7Ci0KLQkvKgotCSAqIHJl YWQgdGhlIHJlc3Qgb2YgUkVBRF9SU1AgaGVhZGVyIChzYW5zIERhdGEgYXJyYXkpLCBvciB3aGF0 ZXZlciB3ZQotCSAqIGNhbiBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggZGF0YS4gQXQgdGhpcyBwb2lu dCwgd2UndmUgcmVhZCBkb3duIHRvCi0JICogdGhlIE1pZC4KLQkgKi8KLQlsZW4gPSBtaW5fdCh1 bnNpZ25lZCBpbnQsIGJ1Zmxlbiwgc2VydmVyLT52YWxzLT5yZWFkX3JzcF9zaXplKSAtCi0JCQkJ CQkJSEVBREVSX1NJWkUoc2VydmVyKSArIDE7Ci0KLQlsZW5ndGggPSBjaWZzX3JlYWRfZnJvbV9z b2NrZXQoc2VydmVyLAotCQkJCSAgICAgICBidWYgKyBIRUFERVJfU0laRShzZXJ2ZXIpIC0gMSwg bGVuKTsKLQlpZiAobGVuZ3RoIDwgMCkKLQkJcmV0dXJuIGxlbmd0aDsKLQlzZXJ2ZXItPnRvdGFs X3JlYWQgKz0gbGVuZ3RoOwotCi0JaWYgKHNlcnZlci0+b3BzLT5pc19zZXNzaW9uX2V4cGlyZWQg JiYKLQkgICAgc2VydmVyLT5vcHMtPmlzX3Nlc3Npb25fZXhwaXJlZChidWYpKSB7Ci0JCWNpZnNf cmVjb25uZWN0KHNlcnZlciwgdHJ1ZSk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoc2VydmVy LT5vcHMtPmlzX3N0YXR1c19wZW5kaW5nICYmCi0JICAgIHNlcnZlci0+b3BzLT5pc19zdGF0dXNf cGVuZGluZyhidWYsIHNlcnZlcikpIHsKLQkJY2lmc19kaXNjYXJkX3JlbWFpbmluZ19kYXRhKHNl cnZlcik7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQkvKiBzZXQgdXAgZmlyc3QgdHdvIGlvdiBmb3Ig c2lnbmF0dXJlIGNoZWNrIGFuZCB0byBnZXQgY3JlZGl0cyAqLwotCXJkYXRhLT5pb3ZbMF0uaW92 X2Jhc2UgPSBidWY7Ci0JcmRhdGEtPmlvdlswXS5pb3ZfbGVuID0gc2VydmVyLT52YWxzLT5oZWFk ZXJfcHJlYW1ibGVfc2l6ZTsKLQlyZGF0YS0+aW92WzFdLmlvdl9iYXNlID0gYnVmICsgc2VydmVy LT52YWxzLT5oZWFkZXJfcHJlYW1ibGVfc2l6ZTsKLQlyZGF0YS0+aW92WzFdLmlvdl9sZW4gPQot CQlzZXJ2ZXItPnRvdGFsX3JlYWQgLSBzZXJ2ZXItPnZhbHMtPmhlYWRlcl9wcmVhbWJsZV9zaXpl OwotCWNpZnNfZGJnKEZZSSwgIjA6IGlvdl9iYXNlPSVwIGlvdl9sZW49JXp1XG4iLAotCQkgcmRh dGEtPmlvdlswXS5pb3ZfYmFzZSwgcmRhdGEtPmlvdlswXS5pb3ZfbGVuKTsKLQljaWZzX2RiZyhG WUksICIxOiBpb3ZfYmFzZT0lcCBpb3ZfbGVuPSV6dVxuIiwKLQkJIHJkYXRhLT5pb3ZbMV0uaW92 X2Jhc2UsIHJkYXRhLT5pb3ZbMV0uaW92X2xlbik7Ci0KLQkvKiBXYXMgdGhlIFNNQiByZWFkIHN1 Y2Nlc3NmdWw/ICovCi0JcmRhdGEtPnJlc3VsdCA9IHNlcnZlci0+b3BzLT5tYXBfZXJyb3IoYnVm LCBmYWxzZSk7Ci0JaWYgKHJkYXRhLT5yZXN1bHQgIT0gMCkgewotCQljaWZzX2RiZyhGWUksICIl czogc2VydmVyIHJldHVybmVkIGVycm9yICVkXG4iLAotCQkJIF9fZnVuY19fLCByZGF0YS0+cmVz dWx0KTsKLQkJLyogbm9ybWFsIGVycm9yIG9uIHJlYWQgcmVzcG9uc2UgKi8KLQkJcmV0dXJuIF9f Y2lmc19yZWFkdl9kaXNjYXJkKHNlcnZlciwgbWlkLCBmYWxzZSk7Ci0JfQotCi0JLyogSXMgdGhl cmUgZW5vdWdoIHRvIGdldCB0byB0aGUgcmVzdCBvZiB0aGUgUkVBRF9SU1AgaGVhZGVyPyAqLwot CWlmIChzZXJ2ZXItPnRvdGFsX3JlYWQgPCBzZXJ2ZXItPnZhbHMtPnJlYWRfcnNwX3NpemUpIHsK LQkJY2lmc19kYmcoRllJLCAiJXM6IHNlcnZlciByZXR1cm5lZCBzaG9ydCBoZWFkZXIuIGdvdD0l dSBleHBlY3RlZD0lenVcbiIsCi0JCQkgX19mdW5jX18sIHNlcnZlci0+dG90YWxfcmVhZCwKLQkJ CSBzZXJ2ZXItPnZhbHMtPnJlYWRfcnNwX3NpemUpOwotCQlyZGF0YS0+cmVzdWx0ID0gLUVJTzsK LQkJcmV0dXJuIGNpZnNfcmVhZHZfZGlzY2FyZChzZXJ2ZXIsIG1pZCk7Ci0JfQotCi0JZGF0YV9v ZmZzZXQgPSBzZXJ2ZXItPm9wcy0+cmVhZF9kYXRhX29mZnNldChidWYpICsKLQkJc2VydmVyLT52 YWxzLT5oZWFkZXJfcHJlYW1ibGVfc2l6ZTsKLQlpZiAoZGF0YV9vZmZzZXQgPCBzZXJ2ZXItPnRv dGFsX3JlYWQpIHsKLQkJLyoKLQkJICogd2luMms4IHNvbWV0aW1lcyBzZW5kcyBhbiBvZmZzZXQg b2YgMCB3aGVuIHRoZSByZWFkCi0JCSAqIGlzIGJleW9uZCB0aGUgRU9GLiBUcmVhdCBpdCBhcyBp ZiB0aGUgZGF0YSBzdGFydHMganVzdCBhZnRlcgotCQkgKiB0aGUgaGVhZGVyLgotCQkgKi8KLQkJ Y2lmc19kYmcoRllJLCAiJXM6IGRhdGEgb2Zmc2V0ICgldSkgaW5zaWRlIHJlYWQgcmVzcG9uc2Ug aGVhZGVyXG4iLAotCQkJIF9fZnVuY19fLCBkYXRhX29mZnNldCk7Ci0JCWRhdGFfb2Zmc2V0ID0g c2VydmVyLT50b3RhbF9yZWFkOwotCX0gZWxzZSBpZiAoZGF0YV9vZmZzZXQgPiBNQVhfQ0lGU19T TUFMTF9CVUZGRVJfU0laRSkgewotCQkvKiBkYXRhX29mZnNldCBpcyBiZXlvbmQgdGhlIGVuZCBv ZiBzbWFsbGJ1ZiAqLwotCQljaWZzX2RiZyhGWUksICIlczogZGF0YSBvZmZzZXQgKCV1KSBiZXlv bmQgZW5kIG9mIHNtYWxsYnVmXG4iLAotCQkJIF9fZnVuY19fLCBkYXRhX29mZnNldCk7Ci0JCXJk YXRhLT5yZXN1bHQgPSAtRUlPOwotCQlyZXR1cm4gY2lmc19yZWFkdl9kaXNjYXJkKHNlcnZlciwg bWlkKTsKLQl9Ci0KLQljaWZzX2RiZyhGWUksICIlczogdG90YWxfcmVhZD0ldSBkYXRhX29mZnNl dD0ldVxuIiwKLQkJIF9fZnVuY19fLCBzZXJ2ZXItPnRvdGFsX3JlYWQsIGRhdGFfb2Zmc2V0KTsK LQotCWxlbiA9IGRhdGFfb2Zmc2V0IC0gc2VydmVyLT50b3RhbF9yZWFkOwotCWlmIChsZW4gPiAw KSB7Ci0JCS8qIHJlYWQgYW55IGp1bmsgYmVmb3JlIGRhdGEgaW50byB0aGUgcmVzdCBvZiBzbWFs bGJ1ZiAqLwotCQlsZW5ndGggPSBjaWZzX3JlYWRfZnJvbV9zb2NrZXQoc2VydmVyLAotCQkJCQkg ICAgICAgYnVmICsgc2VydmVyLT50b3RhbF9yZWFkLCBsZW4pOwotCQlpZiAobGVuZ3RoIDwgMCkK LQkJCXJldHVybiBsZW5ndGg7Ci0JCXNlcnZlci0+dG90YWxfcmVhZCArPSBsZW5ndGg7Ci0JfQot Ci0JLyogaG93IG11Y2ggZGF0YSBpcyBpbiB0aGUgcmVzcG9uc2U/ICovCi0jaWZkZWYgQ09ORklH X0NJRlNfU01CX0RJUkVDVAotCXVzZV9yZG1hX21yID0gcmRhdGEtPm1yOwotI2VuZGlmCi0JZGF0 YV9sZW4gPSBzZXJ2ZXItPm9wcy0+cmVhZF9kYXRhX2xlbmd0aChidWYsIHVzZV9yZG1hX21yKTsK LQlpZiAoIXVzZV9yZG1hX21yICYmIChkYXRhX29mZnNldCArIGRhdGFfbGVuID4gYnVmbGVuKSkg ewotCQkvKiBkYXRhX2xlbiBpcyBjb3JydXB0IC0tIGRpc2NhcmQgZnJhbWUgKi8KLQkJcmRhdGEt PnJlc3VsdCA9IC1FSU87Ci0JCXJldHVybiBjaWZzX3JlYWR2X2Rpc2NhcmQoc2VydmVyLCBtaWQp OwotCX0KLQotCWxlbmd0aCA9IHJkYXRhLT5yZWFkX2ludG9fcGFnZXMoc2VydmVyLCByZGF0YSwg ZGF0YV9sZW4pOwotCWlmIChsZW5ndGggPCAwKQotCQlyZXR1cm4gbGVuZ3RoOwotCi0Jc2VydmVy LT50b3RhbF9yZWFkICs9IGxlbmd0aDsKLQotCWNpZnNfZGJnKEZZSSwgInRvdGFsX3JlYWQ9JXUg YnVmbGVuPSV1IHJlbWFpbmluZz0ldVxuIiwKLQkJIHNlcnZlci0+dG90YWxfcmVhZCwgYnVmbGVu LCBkYXRhX2xlbik7Ci0KLQkvKiBkaXNjYXJkIGFueXRoaW5nIGxlZnQgb3ZlciAqLwotCWlmIChz ZXJ2ZXItPnRvdGFsX3JlYWQgPCBidWZsZW4pCi0JCXJldHVybiBjaWZzX3JlYWR2X2Rpc2NhcmQo c2VydmVyLCBtaWQpOwotCi0JZGVxdWV1ZV9taWQobWlkLCBmYWxzZSk7Ci0JbWlkLT5yZXNwX2J1 ZiA9IHNlcnZlci0+c21hbGxidWY7Ci0Jc2VydmVyLT5zbWFsbGJ1ZiA9IE5VTEw7Ci0JcmV0dXJu IGxlbmd0aDsKLX0KLQogc3RhdGljIHZvaWQKIGNpZnNfcmVhZHZfY2FsbGJhY2soc3RydWN0IG1p ZF9xX2VudHJ5ICptaWQpCiB7CkBAIC0xOTA5LDE4MyArMTYzOSw2IEBAIENJRlNTTUJXcml0ZShj b25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc19pb19wYXJtcyAqaW9fcGFybXMsCiAJ cmV0dXJuIHJjOwogfQogCi12b2lkCi1jaWZzX3dyaXRlZGF0YV9yZWxlYXNlKHN0cnVjdCBrcmVm ICpyZWZjb3VudCkKLXsKLQlzdHJ1Y3QgY2lmc193cml0ZWRhdGEgKndkYXRhID0gY29udGFpbmVy X29mKHJlZmNvdW50LAotCQkJCQlzdHJ1Y3QgY2lmc193cml0ZWRhdGEsIHJlZmNvdW50KTsKLSNp ZmRlZiBDT05GSUdfQ0lGU19TTUJfRElSRUNUCi0JaWYgKHdkYXRhLT5tcikgewotCQlzbWJkX2Rl cmVnaXN0ZXJfbXIod2RhdGEtPm1yKTsKLQkJd2RhdGEtPm1yID0gTlVMTDsKLQl9Ci0jZW5kaWYK LQotCWlmICh3ZGF0YS0+Y2ZpbGUpCi0JCWNpZnNGaWxlSW5mb19wdXQod2RhdGEtPmNmaWxlKTsK LQotCWt2ZnJlZSh3ZGF0YS0+cGFnZXMpOwotCWtmcmVlKHdkYXRhKTsKLX0KLQotLyoKLSAqIFdy aXRlIGZhaWxlZCB3aXRoIGEgcmV0cnlhYmxlIGVycm9yLiBSZXNlbmQgdGhlIHdyaXRlIHJlcXVl c3QuIEl0J3MgYWxzbwotICogcG9zc2libGUgdGhhdCB0aGUgcGFnZSB3YXMgcmVkaXJ0aWVkIHNv IHJlLWNsZWFuIHRoZSBwYWdlLgotICovCi1zdGF0aWMgdm9pZAotY2lmc193cml0ZXZfcmVxdWV1 ZShzdHJ1Y3QgY2lmc193cml0ZWRhdGEgKndkYXRhKQotewotCWludCBpLCByYyA9IDA7Ci0Jc3Ry dWN0IGlub2RlICppbm9kZSA9IGRfaW5vZGUod2RhdGEtPmNmaWxlLT5kZW50cnkpOwotCXN0cnVj dCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcjsKLQl1bnNpZ25lZCBpbnQgcmVzdF9sZW47Ci0KLQlz ZXJ2ZXIgPSB0bGlua190Y29uKHdkYXRhLT5jZmlsZS0+dGxpbmspLT5zZXMtPnNlcnZlcjsKLQlp ID0gMDsKLQlyZXN0X2xlbiA9IHdkYXRhLT5ieXRlczsKLQlkbyB7Ci0JCXN0cnVjdCBjaWZzX3dy aXRlZGF0YSAqd2RhdGEyOwotCQl1bnNpZ25lZCBpbnQgaiwgbnJfcGFnZXMsIHdzaXplLCB0YWls c3osIGN1cl9sZW47Ci0KLQkJd3NpemUgPSBzZXJ2ZXItPm9wcy0+d3BfcmV0cnlfc2l6ZShpbm9k ZSk7Ci0JCWlmICh3c2l6ZSA8IHJlc3RfbGVuKSB7Ci0JCQlucl9wYWdlcyA9IHdzaXplIC8gUEFH RV9TSVpFOwotCQkJaWYgKCFucl9wYWdlcykgewotCQkJCXJjID0gLUVOT1RTVVBQOwotCQkJCWJy ZWFrOwotCQkJfQotCQkJY3VyX2xlbiA9IG5yX3BhZ2VzICogUEFHRV9TSVpFOwotCQkJdGFpbHN6 ID0gUEFHRV9TSVpFOwotCQl9IGVsc2UgewotCQkJbnJfcGFnZXMgPSBESVZfUk9VTkRfVVAocmVz dF9sZW4sIFBBR0VfU0laRSk7Ci0JCQljdXJfbGVuID0gcmVzdF9sZW47Ci0JCQl0YWlsc3ogPSBy ZXN0X2xlbiAtIChucl9wYWdlcyAtIDEpICogUEFHRV9TSVpFOwotCQl9Ci0KLQkJd2RhdGEyID0g Y2lmc193cml0ZWRhdGFfYWxsb2MobnJfcGFnZXMsIGNpZnNfd3JpdGV2X2NvbXBsZXRlKTsKLQkJ aWYgKCF3ZGF0YTIpIHsKLQkJCXJjID0gLUVOT01FTTsKLQkJCWJyZWFrOwotCQl9Ci0KLQkJZm9y IChqID0gMDsgaiA8IG5yX3BhZ2VzOyBqKyspIHsKLQkJCXdkYXRhMi0+cGFnZXNbal0gPSB3ZGF0 YS0+cGFnZXNbaSArIGpdOwotCQkJbG9ja19wYWdlKHdkYXRhMi0+cGFnZXNbal0pOwotCQkJY2xl YXJfcGFnZV9kaXJ0eV9mb3JfaW8od2RhdGEyLT5wYWdlc1tqXSk7Ci0JCX0KLQotCQl3ZGF0YTIt PnN5bmNfbW9kZSA9IHdkYXRhLT5zeW5jX21vZGU7Ci0JCXdkYXRhMi0+bnJfcGFnZXMgPSBucl9w YWdlczsKLQkJd2RhdGEyLT5vZmZzZXQgPSBwYWdlX29mZnNldCh3ZGF0YTItPnBhZ2VzWzBdKTsK LQkJd2RhdGEyLT5wYWdlc3ogPSBQQUdFX1NJWkU7Ci0JCXdkYXRhMi0+dGFpbHN6ID0gdGFpbHN6 OwotCQl3ZGF0YTItPmJ5dGVzID0gY3VyX2xlbjsKLQotCQlyYyA9IGNpZnNfZ2V0X3dyaXRhYmxl X2ZpbGUoQ0lGU19JKGlub2RlKSwgRklORF9XUl9BTlksCi0JCQkJCSAgICAmd2RhdGEyLT5jZmls ZSk7Ci0JCWlmICghd2RhdGEyLT5jZmlsZSkgewotCQkJY2lmc19kYmcoVkZTLCAiTm8gd3JpdGFi bGUgaGFuZGxlIHRvIHJldHJ5IHdyaXRlcGFnZXMgcmM9JWRcbiIsCi0JCQkJIHJjKTsKLQkJCWlm ICghaXNfcmV0cnlhYmxlX2Vycm9yKHJjKSkKLQkJCQlyYyA9IC1FQkFERjsKLQkJfSBlbHNlIHsK LQkJCXdkYXRhMi0+cGlkID0gd2RhdGEyLT5jZmlsZS0+cGlkOwotCQkJcmMgPSBzZXJ2ZXItPm9w cy0+YXN5bmNfd3JpdGV2KHdkYXRhMiwKLQkJCQkJCSAgICAgICBjaWZzX3dyaXRlZGF0YV9yZWxl YXNlKTsKLQkJfQotCi0JCWZvciAoaiA9IDA7IGogPCBucl9wYWdlczsgaisrKSB7Ci0JCQl1bmxv Y2tfcGFnZSh3ZGF0YTItPnBhZ2VzW2pdKTsKLQkJCWlmIChyYyAhPSAwICYmICFpc19yZXRyeWFi bGVfZXJyb3IocmMpKSB7Ci0JCQkJU2V0UGFnZUVycm9yKHdkYXRhMi0+cGFnZXNbal0pOwotCQkJ CWVuZF9wYWdlX3dyaXRlYmFjayh3ZGF0YTItPnBhZ2VzW2pdKTsKLQkJCQlwdXRfcGFnZSh3ZGF0 YTItPnBhZ2VzW2pdKTsKLQkJCX0KLQkJfQotCi0JCWtyZWZfcHV0KCZ3ZGF0YTItPnJlZmNvdW50 LCBjaWZzX3dyaXRlZGF0YV9yZWxlYXNlKTsKLQkJaWYgKHJjKSB7Ci0JCQlpZiAoaXNfcmV0cnlh YmxlX2Vycm9yKHJjKSkKLQkJCQljb250aW51ZTsKLQkJCWkgKz0gbnJfcGFnZXM7Ci0JCQlicmVh azsKLQkJfQotCi0JCXJlc3RfbGVuIC09IGN1cl9sZW47Ci0JCWkgKz0gbnJfcGFnZXM7Ci0JfSB3 aGlsZSAoaSA8IHdkYXRhLT5ucl9wYWdlcyk7Ci0KLQkvKiBjbGVhbnVwIHJlbWFpbmluZyBwYWdl cyBmcm9tIHRoZSBvcmlnaW5hbCB3ZGF0YSAqLwotCWZvciAoOyBpIDwgd2RhdGEtPm5yX3BhZ2Vz OyBpKyspIHsKLQkJU2V0UGFnZUVycm9yKHdkYXRhLT5wYWdlc1tpXSk7Ci0JCWVuZF9wYWdlX3dy aXRlYmFjayh3ZGF0YS0+cGFnZXNbaV0pOwotCQlwdXRfcGFnZSh3ZGF0YS0+cGFnZXNbaV0pOwot CX0KLQotCWlmIChyYyAhPSAwICYmICFpc19yZXRyeWFibGVfZXJyb3IocmMpKQotCQltYXBwaW5n X3NldF9lcnJvcihpbm9kZS0+aV9tYXBwaW5nLCByYyk7Ci0Ja3JlZl9wdXQoJndkYXRhLT5yZWZj b3VudCwgY2lmc193cml0ZWRhdGFfcmVsZWFzZSk7Ci19Ci0KLXZvaWQKLWNpZnNfd3JpdGV2X2Nv bXBsZXRlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKLXsKLQlzdHJ1Y3QgY2lmc193cml0ZWRh dGEgKndkYXRhID0gY29udGFpbmVyX29mKHdvcmssCi0JCQkJCQlzdHJ1Y3QgY2lmc193cml0ZWRh dGEsIHdvcmspOwotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkX2lub2RlKHdkYXRhLT5jZmlsZS0+ ZGVudHJ5KTsKLQlpbnQgaSA9IDA7Ci0KLQlpZiAod2RhdGEtPnJlc3VsdCA9PSAwKSB7Ci0JCXNw aW5fbG9jaygmaW5vZGUtPmlfbG9jayk7Ci0JCWNpZnNfdXBkYXRlX2VvZihDSUZTX0koaW5vZGUp LCB3ZGF0YS0+b2Zmc2V0LCB3ZGF0YS0+Ynl0ZXMpOwotCQlzcGluX3VubG9jaygmaW5vZGUtPmlf bG9jayk7Ci0JCWNpZnNfc3RhdHNfYnl0ZXNfd3JpdHRlbih0bGlua190Y29uKHdkYXRhLT5jZmls ZS0+dGxpbmspLAotCQkJCQkgd2RhdGEtPmJ5dGVzKTsKLQl9IGVsc2UgaWYgKHdkYXRhLT5zeW5j X21vZGUgPT0gV0JfU1lOQ19BTEwgJiYgd2RhdGEtPnJlc3VsdCA9PSAtRUFHQUlOKQotCQlyZXR1 cm4gY2lmc193cml0ZXZfcmVxdWV1ZSh3ZGF0YSk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgd2RhdGEt Pm5yX3BhZ2VzOyBpKyspIHsKLQkJc3RydWN0IHBhZ2UgKnBhZ2UgPSB3ZGF0YS0+cGFnZXNbaV07 Ci0JCWlmICh3ZGF0YS0+cmVzdWx0ID09IC1FQUdBSU4pCi0JCQlfX3NldF9wYWdlX2RpcnR5X25v YnVmZmVycyhwYWdlKTsKLQkJZWxzZSBpZiAod2RhdGEtPnJlc3VsdCA8IDApCi0JCQlTZXRQYWdl RXJyb3IocGFnZSk7Ci0JCWVuZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKLQkJY2lmc19yZWFkcGFn ZV90b19mc2NhY2hlKGlub2RlLCBwYWdlKTsKLQkJcHV0X3BhZ2UocGFnZSk7Ci0JfQotCWlmICh3 ZGF0YS0+cmVzdWx0ICE9IC1FQUdBSU4pCi0JCW1hcHBpbmdfc2V0X2Vycm9yKGlub2RlLT5pX21h cHBpbmcsIHdkYXRhLT5yZXN1bHQpOwotCWtyZWZfcHV0KCZ3ZGF0YS0+cmVmY291bnQsIGNpZnNf d3JpdGVkYXRhX3JlbGVhc2UpOwotfQotCi1zdHJ1Y3QgY2lmc193cml0ZWRhdGEgKgotY2lmc193 cml0ZWRhdGFfYWxsb2ModW5zaWduZWQgaW50IG5yX3BhZ2VzLCB3b3JrX2Z1bmNfdCBjb21wbGV0 ZSkKLXsKLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0KLQkJa2NhbGxvYyhucl9wYWdlcywgc2l6ZW9m KHN0cnVjdCBwYWdlICopLCBHRlBfTk9GUyk7Ci0JaWYgKHBhZ2VzKQotCQlyZXR1cm4gY2lmc193 cml0ZWRhdGFfZGlyZWN0X2FsbG9jKHBhZ2VzLCBjb21wbGV0ZSk7Ci0KLQlyZXR1cm4gTlVMTDsK LX0KLQotc3RydWN0IGNpZnNfd3JpdGVkYXRhICoKLWNpZnNfd3JpdGVkYXRhX2RpcmVjdF9hbGxv YyhzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB3b3JrX2Z1bmNfdCBjb21wbGV0ZSkKLXsKLQlzdHJ1Y3Qg Y2lmc193cml0ZWRhdGEgKndkYXRhOwotCi0Jd2RhdGEgPSBremFsbG9jKHNpemVvZigqd2RhdGEp LCBHRlBfTk9GUyk7Ci0JaWYgKHdkYXRhICE9IE5VTEwpIHsKLQkJd2RhdGEtPnBhZ2VzID0gcGFn ZXM7Ci0JCWtyZWZfaW5pdCgmd2RhdGEtPnJlZmNvdW50KTsKLQkJSU5JVF9MSVNUX0hFQUQoJndk YXRhLT5saXN0KTsKLQkJaW5pdF9jb21wbGV0aW9uKCZ3ZGF0YS0+ZG9uZSk7Ci0JCUlOSVRfV09S Sygmd2RhdGEtPndvcmssIGNvbXBsZXRlKTsKLQl9Ci0JcmV0dXJuIHdkYXRhOwotfQotCiAvKgog ICogQ2hlY2sgdGhlIG1pZF9zdGF0ZSBhbmQgc2lnbmF0dXJlIG9uIHJlY2VpdmVkIGJ1ZmZlciAo aWYgYW55KSwgYW5kIHF1ZXVlIHRoZQogICogd29ya3F1ZXVlIGNvbXBsZXRpb24gdGFzay4KQEAg LTM2NjAsNyArMzIxMyw2IEBAIENJRlNTTUJTZXRQb3NpeEFDTChjb25zdCB1bnNpZ25lZCBpbnQg eGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCXJldHVybiByYzsKIH0KIAotLyogQkIgZml4 IHRhYnMgaW4gdGhpcyBmdW5jdGlvbiBGSVhNRSBCQiAqLwogaW50CiBDSUZTR2V0RXh0QXR0cihj b25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCSAgICAgICBj b25zdCBpbnQgbmV0ZmlkLCBfX3U2NCAqcEV4dEF0dHJCaXRzLCBfX3U2NCAqcE1hc2spCkBAIC0z Njc3LDcgKzMyMjksNyBAQCBDSUZTR2V0RXh0QXR0cihjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBz dHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCiBHZXRFeHRBdHRyUmV0cnk6CiAJcmMgPSBzbWJfaW5p dChTTUJfQ09NX1RSQU5TQUNUSU9OMiwgMTUsIHRjb24sICh2b2lkICoqKSAmcFNNQiwKLQkJCSh2 b2lkICoqKSAmcFNNQnIpOworCQkgICAgICAodm9pZCAqKikgJnBTTUJyKTsKIAlpZiAocmMpCiAJ CXJldHVybiByYzsKIApAQCAtMzcyMyw3ICszMjc1LDcgQEAgQ0lGU0dldEV4dEF0dHIoY29uc3Qg dW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNfdGNvbiAqdGNvbiwKIAkJCV9fdTE2IGRhdGFf b2Zmc2V0ID0gbGUxNl90b19jcHUocFNNQnItPnQyLkRhdGFPZmZzZXQpOwogCQkJX191MTYgY291 bnQgPSBsZTE2X3RvX2NwdShwU01Cci0+dDIuRGF0YUNvdW50KTsKIAkJCXN0cnVjdCBmaWxlX2No YXR0cl9pbmZvICpwZmluZm87Ci0JCQkvKiBCQiBEbyB3ZSBuZWVkIGEgY2FzdCBvciBoYXNoIGhl cmUgPyAqLworCiAJCQlpZiAoY291bnQgIT0gMTYpIHsKIAkJCQljaWZzX2RiZyhGWUksICJJbnZh bGlkIHNpemUgcmV0IGluIEdldEV4dEF0dHJcbiIpOwogCQkJCXJjID0gLUVJTzsKZGlmZiAtLWdp dCBhL2ZzL2NpZnMvY29ubmVjdC5jIGIvZnMvY2lmcy9jb25uZWN0LmMKaW5kZXggMTM2MjIxMGYz ZWNlLi5hYmI2NWRkNzQ3MWYgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY29ubmVjdC5jCisrKyBiL2Zz L2NpZnMvY29ubmVjdC5jCkBAIC04OTgsNiArODk4LDUzIEBAIGhhbmRsZV9taWQoc3RydWN0IG1p ZF9xX2VudHJ5ICptaWQsIHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlciwKIAlkZXF1ZXVl X21pZChtaWQsIG1hbGZvcm1lZCk7CiB9CiAKK2ludAorY2lmc19lbmFibGVfc2lnbmluZyhzdHJ1 Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsIGJvb2wgbW50X3NpZ25fcmVxdWlyZWQpCit7CisJ Ym9vbCBzcnZfc2lnbl9yZXF1aXJlZCA9IHNlcnZlci0+c2VjX21vZGUgJiBzZXJ2ZXItPnZhbHMt PnNpZ25pbmdfcmVxdWlyZWQ7CisJYm9vbCBzcnZfc2lnbl9lbmFibGVkID0gc2VydmVyLT5zZWNf bW9kZSAmIHNlcnZlci0+dmFscy0+c2lnbmluZ19lbmFibGVkOworCWJvb2wgbW50X3NpZ25fZW5h YmxlZDsKKworCS8qCisJICogSXMgc2lnbmluZyByZXF1aXJlZCBieSBtbnQgb3B0aW9ucz8gSWYg bm90IHRoZW4gY2hlY2sKKwkgKiBnbG9iYWxfc2VjZmxhZ3MgdG8gc2VlIGlmIGl0IGlzIHRoZXJl LgorCSAqLworCWlmICghbW50X3NpZ25fcmVxdWlyZWQpCisJCW1udF9zaWduX3JlcXVpcmVkID0g KChnbG9iYWxfc2VjZmxhZ3MgJiBDSUZTU0VDX01VU1RfU0lHTikgPT0KKwkJCQkJCUNJRlNTRUNf TVVTVF9TSUdOKTsKKworCS8qCisJICogSWYgc2lnbmluZyBpcyByZXF1aXJlZCB0aGVuIGl0J3Mg YXV0b21hdGljYWxseSBlbmFibGVkIHRvbywKKwkgKiBvdGhlcndpc2UsIGNoZWNrIHRvIHNlZSBp ZiB0aGUgc2VjZmxhZ3MgYWxsb3cgaXQuCisJICovCisJbW50X3NpZ25fZW5hYmxlZCA9IG1udF9z aWduX3JlcXVpcmVkID8gbW50X3NpZ25fcmVxdWlyZWQgOgorCQkJCShnbG9iYWxfc2VjZmxhZ3Mg JiBDSUZTU0VDX01BWV9TSUdOKTsKKworCS8qIElmIHNlcnZlciByZXF1aXJlcyBzaWduaW5nLCBk b2VzIGNsaWVudCBhbGxvdyBpdD8gKi8KKwlpZiAoc3J2X3NpZ25fcmVxdWlyZWQpIHsKKwkJaWYg KCFtbnRfc2lnbl9lbmFibGVkKSB7CisJCQljaWZzX2RiZyhWRlMsICJTZXJ2ZXIgcmVxdWlyZXMg c2lnbmluZywgYnV0IGl0J3MgZGlzYWJsZWQgaW4gU2VjdXJpdHlGbGFncyFcbiIpOworCQkJcmV0 dXJuIC1FT1BOT1RTVVBQOworCQl9CisJCXNlcnZlci0+c2lnbiA9IHRydWU7CisJfQorCisJLyog SWYgY2xpZW50IHJlcXVpcmVzIHNpZ25pbmcsIGRvZXMgc2VydmVyIGFsbG93IGl0PyAqLworCWlm IChtbnRfc2lnbl9yZXF1aXJlZCkgeworCQlpZiAoIXNydl9zaWduX2VuYWJsZWQpIHsKKwkJCWNp ZnNfZGJnKFZGUywgIlNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHNpZ25pbmchXG4iKTsKKwkJCXJl dHVybiAtRU9QTk9UU1VQUDsKKwkJfQorCQlzZXJ2ZXItPnNpZ24gPSB0cnVlOworCX0KKworCWlm IChjaWZzX3JkbWFfZW5hYmxlZChzZXJ2ZXIpICYmIHNlcnZlci0+c2lnbikKKwkJY2lmc19kYmco VkZTLCAiU2lnbmluZyBpcyBlbmFibGVkLCBhbmQgUkRNQSByZWFkL3dyaXRlIHdpbGwgYmUgZGlz YWJsZWRcbiIpOworCisJcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIHZvaWQgY2xlYW5fZGVtdWx0 aXBsZXhfaW5mbyhzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIpCiB7CiAJaW50IGxlbmd0 aDsKQEAgLTI5NzYsNiArMzAyMyw3IEBAIGlwX2Nvbm5lY3Qoc3RydWN0IFRDUF9TZXJ2ZXJfSW5m byAqc2VydmVyKQogCXJldHVybiBnZW5lcmljX2lwX2Nvbm5lY3Qoc2VydmVyKTsKIH0KIAorI2lm ZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogdm9pZCByZXNldF9jaWZzX3Vu aXhfY2Fwcyh1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCQkJICBz dHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiLCBzdHJ1Y3Qgc21iM19mc19jb250ZXh0ICpjdHgp CiB7CkBAIC0zMDgxLDYgKzMxMjksNyBAQCB2b2lkIHJlc2V0X2NpZnNfdW5peF9jYXBzKHVuc2ln bmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAJCX0KIAl9CiB9CisjZW5kaWYg LyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAKIGludCBjaWZzX3NldHVw X2NpZnNfc2Ioc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYikKIHsKQEAgLTMxOTcsNiArMzI0 Niw3IEBAIHN0YXRpYyBpbnQgbW91bnRfZ2V0X2Nvbm5zKHN0cnVjdCBtb3VudF9jdHggKm1udF9j dHgpCiAJaWYgKHRjb24tPnBvc2l4X2V4dGVuc2lvbnMpCiAJCWNpZnNfc2ItPm1udF9jaWZzX2Zs YWdzIHw9IENJRlNfTU9VTlRfUE9TSVhfUEFUSFM7CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExP V19JTlNFQ1VSRV9MRUdBQ1kKIAkvKiB0ZWxsIHNlcnZlciB3aGljaCBVbml4IGNhcHMgd2Ugc3Vw cG9ydCAqLwogCWlmIChjYXBfdW5peCh0Y29uLT5zZXMpKSB7CiAJCS8qCkBAIC0zMjE0LDYgKzMy NjQsNyBAQCBzdGF0aWMgaW50IG1vdW50X2dldF9jb25ucyhzdHJ1Y3QgbW91bnRfY3R4ICptbnRf Y3R4KQogCQl9CiAJCXNwaW5fdW5sb2NrKCZ0Y29uLT5zZXMtPnNlcnZlci0+c3J2X2xvY2spOwog CX0gZWxzZQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwog CQl0Y29uLT51bml4X2V4dCA9IDA7IC8qIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gKi8K IAogCS8qIGRvIG5vdCBjYXJlIGlmIGEgZm9sbG93aW5nIGNhbGwgc3VjY2VlZCAtIGluZm9ybWF0 aW9uYWwgKi8KQEAgLTQxODksOCArNDI0MCwxMCBAQCBjaWZzX2NvbnN0cnVjdF90Y29uKHN0cnVj dCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsIGt1aWRfdCBmc3VpZCkKIAkJZ290byBvdXQ7CiAJfQog CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJaWYgKGNhcF91bml4 KHNlcykpCiAJCXJlc2V0X2NpZnNfdW5peF9jYXBzKDAsIHRjb24sIE5VTEwsIGN0eCk7CisjZW5k aWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAKIG91dDoKIAlrZnJl ZShjdHgtPnVzZXJuYW1lKTsKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvZGlyLmMgYi9mcy9jaWZzL2Rp ci5jCmluZGV4IGNlOWIyMmFlY2ZiYS4uMDhmNzM5MjcxNmUyIDEwMDY0NAotLS0gYS9mcy9jaWZz L2Rpci5jCisrKyBiL2ZzL2NpZnMvZGlyLmMKQEAgLTE5Myw2ICsxOTMsNyBAQCBjaWZzX2RvX2Ny ZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwgdW5zaWdu ZWQgaW50IHhpZCwKIAkJcmV0dXJuIFBUUl9FUlIoZnVsbF9wYXRoKTsKIAl9CiAKKyNpZmRlZiBD T05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAodGNvbi0+dW5peF9leHQgJiYg Y2FwX3VuaXgodGNvbi0+c2VzKSAmJiAhdGNvbi0+YnJva2VuX3Bvc2l4X29wZW4gJiYKIAkgICAg KENJRlNfVU5JWF9QT1NJWF9QQVRIX09QU19DQVAgJgogCQkJbGU2NF90b19jcHUodGNvbi0+ZnNV bml4SW5mby5DYXBhYmlsaXR5KSkpIHsKQEAgLTI2MSw2ICsyNjIsNyBAQCBjaWZzX2RvX2NyZWF0 ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwgdW5zaWduZWQg aW50IHhpZCwKIAkJICogcmFyZSBmb3IgcGF0aCBub3QgY292ZXJlZCBvbiBmaWxlcykKIAkJICov CiAJfQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAJ ZGVzaXJlZF9hY2Nlc3MgPSAwOwogCWlmIChPUEVOX0ZNT0RFKG9mbGFncykgJiBGTU9ERV9SRUFE KQpAQCAtMzE2LDYgKzMxOCw3IEBAIGNpZnNfZG9fY3JlYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LCB1bnNpZ25lZCBpbnQgeGlkLAogCQlnb3RvIG91dDsK IAl9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAkvKgogCSAq IElmIE9wZW4gcmVwb3J0ZWQgdGhhdCB3ZSBhY3R1YWxseSBjcmVhdGVkIGEgZmlsZSB0aGVuIHdl IG5vdyBoYXZlIHRvCiAJICogc2V0IHRoZSBtb2RlIGlmIHBvc3NpYmxlLgpAQCAtMzU3LDYgKzM2 MCw5IEBAIGNpZnNfZG9fY3JlYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkg KmRpcmVudHJ5LCB1bnNpZ25lZCBpbnQgeGlkLAogCQlyYyA9IGNpZnNfZ2V0X2lub2RlX2luZm9f dW5peCgmbmV3aW5vZGUsIGZ1bGxfcGF0aCwgaW5vZGUtPmlfc2IsCiAJCQkJCSAgICAgIHhpZCk7 CiAJZWxzZSB7CisjZWxzZQorCXsKKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VS RV9MRUdBQ1kgKi8KIAkJLyogVE9ETzogQWRkIHN1cHBvcnQgZm9yIGNhbGxpbmcgUE9TSVggcXVl cnkgaW5mbyBoZXJlLCBidXQgcGFzc2luZyBpbiBmaWQgKi8KIAkJcmMgPSBjaWZzX2dldF9pbm9k ZV9pbmZvKCZuZXdpbm9kZSwgZnVsbF9wYXRoLCBidWYsIGlub2RlLT5pX3NiLAogCQkJCQkgeGlk LCBmaWQpOwpAQCAtMzc3LDcgKzM4Myw5IEBAIGNpZnNfZG9fY3JlYXRlKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LCB1bnNpZ25lZCBpbnQgeGlkLAogCQl9CiAJ fQogCisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiBjaWZzX2NyZWF0 ZV9zZXRfZGVudHJ5OgorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FD WSAqLwogCWlmIChyYyAhPSAwKSB7CiAJCWNpZnNfZGJnKEZZSSwgIkNyZWF0ZSB3b3JrZWQsIGdl dF9pbm9kZV9pbmZvIGZhaWxlZCByYyA9ICVkXG4iLAogCQkJIHJjKTsKZGlmZiAtLWdpdCBhL2Zz L2NpZnMvZmlsZS5jIGIvZnMvY2lmcy9maWxlLmMKaW5kZXggOTY3NjYzYWQ2M2EwLi45MTFjNGZi YWZmYTggMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvZmlsZS5jCisrKyBiL2ZzL2NpZnMvZmlsZS5jCkBA IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY2lmc3BkdS5oIgogI2luY2x1ZGUgImNpZnNnbG9i LmgiCiAjaW5jbHVkZSAiY2lmc3Byb3RvLmgiCisjaW5jbHVkZSAic21iMnByb3RvLmgiCiAjaW5j bHVkZSAiY2lmc191bmljb2RlLmgiCiAjaW5jbHVkZSAiY2lmc19kZWJ1Zy5oIgogI2luY2x1ZGUg ImNpZnNfZnNfc2IuaCIKQEAgLTM0LDYgKzM1LDUzIEBACiAjaW5jbHVkZSAiZnNfY29udGV4dC5o IgogI2luY2x1ZGUgImNpZnNfaW9jdGwuaCIKIAorLyoKKyAqIE1hcmsgYXMgaW52YWxpZCwgYWxs IG9wZW4gZmlsZXMgb24gdHJlZSBjb25uZWN0aW9ucyBzaW5jZSB0aGV5CisgKiB3ZXJlIGNsb3Nl ZCB3aGVuIHNlc3Npb24gdG8gc2VydmVyIHdhcyBsb3N0LgorICovCit2b2lkCitjaWZzX21hcmtf b3Blbl9maWxlc19pbnZhbGlkKHN0cnVjdCBjaWZzX3Rjb24gKnRjb24pCit7CisJc3RydWN0IGNp ZnNGaWxlSW5mbyAqb3Blbl9maWxlID0gTlVMTDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7CisJ c3RydWN0IGxpc3RfaGVhZCAqdG1wMTsKKworCS8qIG9ubHkgc2VuZCBvbmNlIHBlciBjb25uZWN0 ICovCisJc3Bpbl9sb2NrKCZ0Y29uLT5zZXMtPnNlc19sb2NrKTsKKwlpZiAoKHRjb24tPnNlcy0+ c2VzX3N0YXR1cyAhPSBTRVNfR09PRCkgfHwgKHRjb24tPnN0YXR1cyAhPSBUSURfTkVFRF9SRUNP TikpIHsKKwkJc3Bpbl91bmxvY2soJnRjb24tPnNlcy0+c2VzX2xvY2spOworCQlyZXR1cm47CisJ fQorCXRjb24tPnN0YXR1cyA9IFRJRF9JTl9GSUxFU19JTlZBTElEQVRFOworCXNwaW5fdW5sb2Nr KCZ0Y29uLT5zZXMtPnNlc19sb2NrKTsKKworCS8qIGxpc3QgYWxsIGZpbGVzIG9wZW4gb24gdHJl ZSBjb25uZWN0aW9uIGFuZCBtYXJrIHRoZW0gaW52YWxpZCAqLworCXNwaW5fbG9jaygmdGNvbi0+ b3Blbl9maWxlX2xvY2spOworCWxpc3RfZm9yX2VhY2hfc2FmZSh0bXAsIHRtcDEsICZ0Y29uLT5v cGVuRmlsZUxpc3QpIHsKKwkJb3Blbl9maWxlID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBjaWZz RmlsZUluZm8sIHRsaXN0KTsKKwkJb3Blbl9maWxlLT5pbnZhbGlkSGFuZGxlID0gdHJ1ZTsKKwkJ b3Blbl9maWxlLT5vcGxvY2tfYnJlYWtfY2FuY2VsbGVkID0gdHJ1ZTsKKwl9CisJc3Bpbl91bmxv Y2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKKworCW11dGV4X2xvY2soJnRjb24tPmNyZmlkLmZp ZF9tdXRleCk7CisJdGNvbi0+Y3JmaWQuaXNfdmFsaWQgPSBmYWxzZTsKKwkvKiBjYWNoZWQgaGFu ZGxlIGlzIG5vdCB2YWxpZCwgc28gU01CMl9DTE9TRSB3b24ndCBiZSBzZW50IGJlbG93ICovCisJ Y2xvc2VfY2FjaGVkX2Rpcl9sZWFzZV9sb2NrZWQoJnRjb24tPmNyZmlkKTsKKwltZW1zZXQodGNv bi0+Y3JmaWQuZmlkLCAwLCBzaXplb2Yoc3RydWN0IGNpZnNfZmlkKSk7CisJbXV0ZXhfdW5sb2Nr KCZ0Y29uLT5jcmZpZC5maWRfbXV0ZXgpOworCisJc3Bpbl9sb2NrKCZ0Y29uLT50Y19sb2NrKTsK KwlpZiAodGNvbi0+c3RhdHVzID09IFRJRF9JTl9GSUxFU19JTlZBTElEQVRFKQorCQl0Y29uLT5z dGF0dXMgPSBUSURfTkVFRF9UQ09OOworCXNwaW5fdW5sb2NrKCZ0Y29uLT50Y19sb2NrKTsKKwor CS8qCisJICogQkIgQWRkIGNhbGwgdG8gaW52YWxpZGF0ZV9pbm9kZXMoc2IpIGZvciBhbGwgc3Vw ZXJibG9ja3MgbW91bnRlZAorCSAqIHRvIHRoaXMgdGNvbi4KKwkgKi8KK30KKwogc3RhdGljIGlu bGluZSBpbnQgY2lmc19jb252ZXJ0X2ZsYWdzKHVuc2lnbmVkIGludCBmbGFncykKIHsKIAlpZiAo KGZsYWdzICYgT19BQ0NNT0RFKSA9PSBPX1JET05MWSkKQEAgLTUyLDYgKzEwMCw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGNpZnNfY29udmVydF9mbGFncyh1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCUZJ TEVfUkVBRF9EQVRBKTsKIH0KIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xF R0FDWQogc3RhdGljIHUzMiBjaWZzX3Bvc2l4X2NvbnZlcnRfZmxhZ3ModW5zaWduZWQgaW50IGZs YWdzKQogewogCXUzMiBwb3NpeF9mbGFncyA9IDA7CkBAIC04NSw2ICsxMzQsNyBAQCBzdGF0aWMg dTMyIGNpZnNfcG9zaXhfY29udmVydF9mbGFncyh1bnNpZ25lZCBpbnQgZmxhZ3MpCiAKIAlyZXR1 cm4gcG9zaXhfZmxhZ3M7CiB9CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVf TEVHQUNZICovCiAKIHN0YXRpYyBpbmxpbmUgaW50IGNpZnNfZ2V0X2Rpc3Bvc2l0aW9uKHVuc2ln bmVkIGludCBmbGFncykKIHsKQEAgLTEwMCw2ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIGludCBj aWZzX2dldF9kaXNwb3NpdGlvbih1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCXJldHVybiBGSUxFX09Q RU47CiB9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIGludCBj aWZzX3Bvc2l4X29wZW4oY29uc3QgY2hhciAqZnVsbF9wYXRoLCBzdHJ1Y3QgaW5vZGUgKipwaW5v ZGUsCiAJCQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbW9kZSwgdW5zaWduZWQgaW50IGZf ZmxhZ3MsCiAJCQlfX3UzMiAqcG9wbG9jaywgX191MTYgKnBuZXRmaWQsIHVuc2lnbmVkIGludCB4 aWQpCkBAIC0xNjEsNiArMjEyLDcgQEAgaW50IGNpZnNfcG9zaXhfb3Blbihjb25zdCBjaGFyICpm dWxsX3BhdGgsIHN0cnVjdCBpbm9kZSAqKnBpbm9kZSwKIAlrZnJlZShwcmVzcF9kYXRhKTsKIAly ZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZ ICovCiAKIHN0YXRpYyBpbnQKIGNpZnNfbnRfb3Blbihjb25zdCBjaGFyICpmdWxsX3BhdGgsIHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsCkBAIC01Nzks NiArNjMxLDcgQEAgaW50IGNpZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkKIAllbHNlCiAJCW9wbG9jayA9IDA7CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExP V19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAoIXRjb24tPmJyb2tlbl9wb3NpeF9vcGVuICYmIHRjb24t PnVuaXhfZXh0ICYmCiAJICAgIGNhcF91bml4KHRjb24tPnNlcykgJiYgKENJRlNfVU5JWF9QT1NJ WF9QQVRIX09QU19DQVAgJgogCQkJCWxlNjRfdG9fY3B1KHRjb24tPmZzVW5peEluZm8uQ2FwYWJp bGl0eSkpKSB7CkBAIC02MDMsNiArNjU2LDcgQEAgaW50IGNpZnNfb3BlbihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkJICogb3IgREZTIGVycm9ycy4KIAkJICovCiAJ fQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAJaWYg KHNlcnZlci0+b3BzLT5nZXRfbGVhc2Vfa2V5KQogCQlzZXJ2ZXItPm9wcy0+Z2V0X2xlYXNlX2tl eShpbm9kZSwgJmZpZCk7CkBAIC02MzAsNiArNjg0LDcgQEAgaW50IGNpZnNfb3BlbihzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkJZ290byBvdXQ7CiAJfQogCisjaWZk ZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJaWYgKChvcGxvY2sgJiBDSUZT X0NSRUFURV9BQ1RJT04pICYmICFwb3NpeF9vcGVuX29rICYmIHRjb24tPnVuaXhfZXh0KSB7CiAJ CS8qCiAJCSAqIFRpbWUgdG8gc2V0IG1vZGUgd2hpY2ggd2UgY2FuIG5vdCBzZXQgZWFybGllciBk dWUgdG8KQEAgLTY0Nyw2ICs3MDIsNyBAQCBpbnQgY2lmc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogCQlDSUZTU01CVW5peFNldEZpbGVJbmZvKHhpZCwgdGNv biwgJmFyZ3MsIGZpZC5uZXRmaWQsCiAJCQkJICAgICAgIGNmaWxlLT5waWQpOwogCX0KKyNlbmRp ZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogdXNlX2NhY2hlOgog CWZzY2FjaGVfdXNlX2Nvb2tpZShjaWZzX2lub2RlX2Nvb2tpZShmaWxlX2lub2RlKGZpbGUpKSwK QEAgLTY2NCw3ICs3MjAsOSBAQCBpbnQgY2lmc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxlKQogCXJldHVybiByYzsKIH0KIAorI2lmZGVmIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWQogc3RhdGljIGludCBjaWZzX3B1c2hfcG9zaXhfbG9ja3Moc3Ry dWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUpOworI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lO U0VDVVJFX0xFR0FDWSAqLwogCiAvKgogICogVHJ5IHRvIHJlYWNxdWlyZSBieXRlIHJhbmdlIGxv Y2tzIHRoYXQgd2VyZSByZWxlYXNlZCB3aGVuIHNlc3Npb24KQEAgLTY3MywxMCArNzMxLDEyIEBA IHN0YXRpYyBpbnQgY2lmc19wdXNoX3Bvc2l4X2xvY2tzKHN0cnVjdCBjaWZzRmlsZUluZm8gKmNm aWxlKTsKIHN0YXRpYyBpbnQKIGNpZnNfcmVsb2NrX2ZpbGUoc3RydWN0IGNpZnNGaWxlSW5mbyAq Y2ZpbGUpCiB7Ci0Jc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiA9IENJRlNfU0IoY2ZpbGUt PmRlbnRyeS0+ZF9zYik7CiAJc3RydWN0IGNpZnNJbm9kZUluZm8gKmNpbm9kZSA9IENJRlNfSShk X2lub2RlKGNmaWxlLT5kZW50cnkpKTsKIAlzdHJ1Y3QgY2lmc190Y29uICp0Y29uID0gdGxpbmtf dGNvbihjZmlsZS0+dGxpbmspOwogCWludCByYyA9IDA7CisjaWZkZWYgQ09ORklHX0NJRlNfQUxM T1dfSU5TRUNVUkVfTEVHQUNZCisJc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiA9IENJRlNf U0IoY2ZpbGUtPmRlbnRyeS0+ZF9zYik7CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5T RUNVUkVfTEVHQUNZICovCiAKIAlkb3duX3JlYWRfbmVzdGVkKCZjaW5vZGUtPmxvY2tfc2VtLCBT SU5HTEVfREVQVEhfTkVTVElORyk7CiAJaWYgKGNpbm9kZS0+Y2FuX2NhY2hlX2JybGNrcykgewpA QCAtNjg1LDExICs3NDUsMTMgQEAgY2lmc19yZWxvY2tfZmlsZShzdHJ1Y3QgY2lmc0ZpbGVJbmZv ICpjZmlsZSkKIAkJcmV0dXJuIHJjOwogCX0KIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lO U0VDVVJFX0xFR0FDWQogCWlmIChjYXBfdW5peCh0Y29uLT5zZXMpICYmCiAJICAgIChDSUZTX1VO SVhfRkNOVExfQ0FQICYgbGU2NF90b19jcHUodGNvbi0+ZnNVbml4SW5mby5DYXBhYmlsaXR5KSkg JiYKIAkgICAgKChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9VTlRfTk9QT1NJWEJS TCkgPT0gMCkpCiAJCXJjID0gY2lmc19wdXNoX3Bvc2l4X2xvY2tzKGNmaWxlKTsKIAllbHNlCisj ZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAJCXJjID0gdGNv bi0+c2VzLT5zZXJ2ZXItPm9wcy0+cHVzaF9tYW5kX2xvY2tzKGNmaWxlKTsKIAogCXVwX3JlYWQo JmNpbm9kZS0+bG9ja19zZW0pOwpAQCAtNzUwLDYgKzgxMiw3IEBAIGNpZnNfcmVvcGVuX2ZpbGUo c3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUsIGJvb2wgY2FuX2ZsdXNoKQogCWVsc2UKIAkJb3Bs b2NrID0gMDsKIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogCWlm ICh0Y29uLT51bml4X2V4dCAmJiBjYXBfdW5peCh0Y29uLT5zZXMpICYmCiAJICAgIChDSUZTX1VO SVhfUE9TSVhfUEFUSF9PUFNfQ0FQICYKIAkJCQlsZTY0X3RvX2NwdSh0Y29uLT5mc1VuaXhJbmZv LkNhcGFiaWxpdHkpKSkgewpAQCAtNzczLDYgKzgzNiw3IEBAIGNpZnNfcmVvcGVuX2ZpbGUoc3Ry dWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUsIGJvb2wgY2FuX2ZsdXNoKQogCQkgKiBpbiB0aGUgcmVj b25uZWN0IHBhdGggaXQgaXMgaW1wb3J0YW50IHRvIHJldHJ5IGhhcmQKIAkJICovCiAJfQorI2Vu ZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAJZGVzaXJlZF9h Y2Nlc3MgPSBjaWZzX2NvbnZlcnRfZmxhZ3MoY2ZpbGUtPmZfZmxhZ3MpOwogCkBAIC04MTcsNyAr ODgxLDkgQEAgY2lmc19yZW9wZW5fZmlsZShzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpjZmlsZSwgYm9v bCBjYW5fZmx1c2gpCiAJCWdvdG8gcmVvcGVuX2Vycm9yX2V4aXQ7CiAJfQogCisjaWZkZWYgQ09O RklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiByZW9wZW5fc3VjY2VzczoKKyNlbmRpZiAv KiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAljZmlsZS0+aW52YWxpZEhh bmRsZSA9IGZhbHNlOwogCW11dGV4X3VubG9jaygmY2ZpbGUtPmZoX211dGV4KTsKIAljaW5vZGUg PSBDSUZTX0koaW5vZGUpOwpAQCAtMTE5Miw2ICsxMjU4LDcgQEAgY2lmc19sb2NrX2FkZF9pZihz dHJ1Y3QgY2lmc0ZpbGVJbmZvICpjZmlsZSwgc3RydWN0IGNpZnNMb2NrSW5mbyAqbG9jaywKIAly ZXR1cm4gcmM7CiB9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kK IC8qCiAgKiBDaGVjayBpZiB0aGVyZSBpcyBhbm90aGVyIGxvY2sgdGhhdCBwcmV2ZW50cyB1cyB0 byBzZXQgdGhlIGxvY2sgKHBvc2l4CiAgKiBzdHlsZSkuIElmIHN1Y2ggYSBsb2NrIGV4aXN0cywg dXBkYXRlIHRoZSBmbG9jayBzdHJ1Y3R1cmUgd2l0aCBpdHMKQEAgLTEzMzAsNiArMTM5Nyw3IEBA IGhhc2hfbG9ja293bmVyKGZsX293bmVyX3Qgb3duZXIpCiB7CiAJcmV0dXJuIGNpZnNfbG9ja19z ZWNyZXQgXiBoYXNoMzJfcHRyKChjb25zdCB2b2lkICopb3duZXIpOwogfQorI2VuZGlmIC8qIENP TkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiBzdHJ1Y3QgbG9ja190b19wdXNo IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxsaXN0OwpAQCAtMTM0MCw2ICsxNDA4LDcgQEAgc3RydWN0 IGxvY2tfdG9fcHVzaCB7CiAJX191OCB0eXBlOwogfTsKIAorI2lmZGVmIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWQogc3RhdGljIGludAogY2lmc19wdXNoX3Bvc2l4X2xvY2tzKHN0 cnVjdCBjaWZzRmlsZUluZm8gKmNmaWxlKQogewpAQCAtMTQyNywxNCArMTQ5NiwxNyBAQCBjaWZz X3B1c2hfcG9zaXhfbG9ja3Moc3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUpCiAJfQogCWdvdG8g b3V0OwogfQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwog CiBzdGF0aWMgaW50CiBjaWZzX3B1c2hfbG9ja3Moc3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUp CiB7Ci0Jc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiA9IENJRlNfU0IoY2ZpbGUtPmRlbnRy eS0+ZF9zYik7CiAJc3RydWN0IGNpZnNJbm9kZUluZm8gKmNpbm9kZSA9IENJRlNfSShkX2lub2Rl KGNmaWxlLT5kZW50cnkpKTsKIAlzdHJ1Y3QgY2lmc190Y29uICp0Y29uID0gdGxpbmtfdGNvbihj ZmlsZS0+dGxpbmspOwogCWludCByYyA9IDA7CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5T RUNVUkVfTEVHQUNZCisJc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiA9IENJRlNfU0IoY2Zp bGUtPmRlbnRyeS0+ZF9zYik7CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVf TEVHQUNZICovCiAKIAkvKiB3ZSBhcmUgZ29pbmcgdG8gdXBkYXRlIGNhbl9jYWNoZV9icmxja3Mg aGVyZSAtIG5lZWQgYSB3cml0ZSBhY2Nlc3MgKi8KIAljaWZzX2Rvd25fd3JpdGUoJmNpbm9kZS0+ bG9ja19zZW0pOwpAQCAtMTQ0MywxMSArMTUxNSwxMyBAQCBjaWZzX3B1c2hfbG9ja3Moc3RydWN0 IGNpZnNGaWxlSW5mbyAqY2ZpbGUpCiAJCXJldHVybiByYzsKIAl9CiAKKyNpZmRlZiBDT05GSUdf Q0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAoY2FwX3VuaXgodGNvbi0+c2VzKSAmJgog CSAgICAoQ0lGU19VTklYX0ZDTlRMX0NBUCAmIGxlNjRfdG9fY3B1KHRjb24tPmZzVW5peEluZm8u Q2FwYWJpbGl0eSkpICYmCiAJICAgICgoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01P VU5UX05PUE9TSVhCUkwpID09IDApKQogCQlyYyA9IGNpZnNfcHVzaF9wb3NpeF9sb2NrcyhjZmls ZSk7CiAJZWxzZQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAq LwogCQlyYyA9IHRjb24tPnNlcy0+c2VydmVyLT5vcHMtPnB1c2hfbWFuZF9sb2NrcyhjZmlsZSk7 CiAKIAljaW5vZGUtPmNhbl9jYWNoZV9icmxja3MgPSBmYWxzZTsKQEAgLTE1MTEsNiArMTU4NSw3 IEBAIGNpZnNfZ2V0bGsoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmaWxlX2xvY2sgKmZsb2Nr LCBfX3UzMiB0eXBlLAogCXN0cnVjdCBjaWZzRmlsZUluZm8gKmNmaWxlID0gKHN0cnVjdCBjaWZz RmlsZUluZm8gKilmaWxlLT5wcml2YXRlX2RhdGE7CiAJc3RydWN0IGNpZnNfdGNvbiAqdGNvbiA9 IHRsaW5rX3Rjb24oY2ZpbGUtPnRsaW5rKTsKIAlzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2 ZXIgPSB0Y29uLT5zZXMtPnNlcnZlcjsKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VS RV9MRUdBQ1kKIAlfX3UxNiBuZXRmaWQgPSBjZmlsZS0+ZmlkLm5ldGZpZDsKIAogCWlmIChwb3Np eF9sY2spIHsKQEAgLTE1MzAsNiArMTYwNSw3IEBAIGNpZnNfZ2V0bGsoc3RydWN0IGZpbGUgKmZp bGUsIHN0cnVjdCBmaWxlX2xvY2sgKmZsb2NrLCBfX3UzMiB0eXBlLAogCQkJCSAgICAgIHBvc2l4 X2xvY2tfdHlwZSwgd2FpdF9mbGFnKTsKIAkJcmV0dXJuIHJjOwogCX0KKyNlbmRpZiAvKiBDT05G SUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogCXJjID0gY2lmc19sb2NrX3Rlc3Qo Y2ZpbGUsIGZsb2NrLT5mbF9zdGFydCwgbGVuZ3RoLCB0eXBlLCBmbG9jayk7CiAJaWYgKCFyYykK QEAgLTE1OTAsNiArMTY2Niw3IEBAIGNpZnNfZnJlZV9sbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICps bGlzdCkKIAl9CiB9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kK IGludAogY2lmc191bmxvY2tfcmFuZ2Uoc3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUsIHN0cnVj dCBmaWxlX2xvY2sgKmZsb2NrLAogCQkgIHVuc2lnbmVkIGludCB4aWQpCkBAIC0xNzAyLDYgKzE3 NzksNyBAQCBjaWZzX3VubG9ja19yYW5nZShzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpjZmlsZSwgc3Ry dWN0IGZpbGVfbG9jayAqZmxvY2ssCiAJa2ZyZWUoYnVmKTsKIAlyZXR1cm4gcmM7CiB9CisjZW5k aWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAKIHN0YXRpYyBpbnQK IGNpZnNfc2V0bGsoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmaWxlX2xvY2sgKmZsb2NrLCBf X3UzMiB0eXBlLApAQCAtMTcxNSw2ICsxNzkzLDcgQEAgY2lmc19zZXRsayhzdHJ1Y3QgZmlsZSAq ZmlsZSwgc3RydWN0IGZpbGVfbG9jayAqZmxvY2ssIF9fdTMyIHR5cGUsCiAJc3RydWN0IFRDUF9T ZXJ2ZXJfSW5mbyAqc2VydmVyID0gdGNvbi0+c2VzLT5zZXJ2ZXI7CiAJc3RydWN0IGlub2RlICpp bm9kZSA9IGRfaW5vZGUoY2ZpbGUtPmRlbnRyeSk7CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExP V19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAocG9zaXhfbGNrKSB7CiAJCWludCBwb3NpeF9sb2NrX3R5 cGU7CiAKQEAgLTE3MzYsNyArMTgxNSw3IEBAIGNpZnNfc2V0bGsoc3RydWN0IGZpbGUgKmZpbGUs IHN0cnVjdCBmaWxlX2xvY2sgKmZsb2NrLCBfX3UzMiB0eXBlLAogCQkJCSAgICAgIE5VTEwsIHBv c2l4X2xvY2tfdHlwZSwgd2FpdF9mbGFnKTsKIAkJZ290byBvdXQ7CiAJfQotCisjZW5kaWYgLyog Q09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAJaWYgKGxvY2spIHsKIAkJc3Ry dWN0IGNpZnNMb2NrSW5mbyAqbG9jazsKIApAQCAtMjIwMCw2ICsyMjc5LDE4NSBAQCBjaWZzX2dl dF9yZWFkYWJsZV9wYXRoKHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sIGNvbnN0IGNoYXIgKm5hbWUs CiAJcmV0dXJuIC1FTk9FTlQ7CiB9CiAKK3ZvaWQKK2NpZnNfd3JpdGVkYXRhX3JlbGVhc2Uoc3Ry dWN0IGtyZWYgKnJlZmNvdW50KQoreworCXN0cnVjdCBjaWZzX3dyaXRlZGF0YSAqd2RhdGEgPSBj b250YWluZXJfb2YocmVmY291bnQsCisJCQkJCXN0cnVjdCBjaWZzX3dyaXRlZGF0YSwgcmVmY291 bnQpOworI2lmZGVmIENPTkZJR19DSUZTX1NNQl9ESVJFQ1QKKwlpZiAod2RhdGEtPm1yKSB7CisJ CXNtYmRfZGVyZWdpc3Rlcl9tcih3ZGF0YS0+bXIpOworCQl3ZGF0YS0+bXIgPSBOVUxMOworCX0K KyNlbmRpZgorCisJaWYgKHdkYXRhLT5jZmlsZSkKKwkJY2lmc0ZpbGVJbmZvX3B1dCh3ZGF0YS0+ Y2ZpbGUpOworCisJa3ZmcmVlKHdkYXRhLT5wYWdlcyk7CisJa2ZyZWUod2RhdGEpOworfQorCisv KgorICogV3JpdGUgZmFpbGVkIHdpdGggYSByZXRyeWFibGUgZXJyb3IuIFJlc2VuZCB0aGUgd3Jp dGUgcmVxdWVzdC4gSXQncyBhbHNvCisgKiBwb3NzaWJsZSB0aGF0IHRoZSBwYWdlIHdhcyByZWRp cnRpZWQgc28gcmUtY2xlYW4gdGhlIHBhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCitjaWZzX3dyaXRl dl9yZXF1ZXVlKHN0cnVjdCBjaWZzX3dyaXRlZGF0YSAqd2RhdGEpCit7CisJaW50IGksIHJjID0g MDsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZF9pbm9kZSh3ZGF0YS0+Y2ZpbGUtPmRlbnRyeSk7 CisJc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyOworCXVuc2lnbmVkIGludCByZXN0X2xl bjsKKworCXNlcnZlciA9IHRsaW5rX3Rjb24od2RhdGEtPmNmaWxlLT50bGluayktPnNlcy0+c2Vy dmVyOworCWkgPSAwOworCXJlc3RfbGVuID0gd2RhdGEtPmJ5dGVzOworCWRvIHsKKwkJc3RydWN0 IGNpZnNfd3JpdGVkYXRhICp3ZGF0YTI7CisJCXVuc2lnbmVkIGludCBqLCBucl9wYWdlcywgd3Np emUsIHRhaWxzeiwgY3VyX2xlbjsKKworCQl3c2l6ZSA9IHNlcnZlci0+b3BzLT53cF9yZXRyeV9z aXplKGlub2RlKTsKKwkJaWYgKHdzaXplIDwgcmVzdF9sZW4pIHsKKwkJCW5yX3BhZ2VzID0gd3Np emUgLyBQQUdFX1NJWkU7CisJCQlpZiAoIW5yX3BhZ2VzKSB7CisJCQkJcmMgPSAtRU9QTk9UU1VQ UDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWN1cl9sZW4gPSBucl9wYWdlcyAqIFBBR0VfU0laRTsK KwkJCXRhaWxzeiA9IFBBR0VfU0laRTsKKwkJfSBlbHNlIHsKKwkJCW5yX3BhZ2VzID0gRElWX1JP VU5EX1VQKHJlc3RfbGVuLCBQQUdFX1NJWkUpOworCQkJY3VyX2xlbiA9IHJlc3RfbGVuOworCQkJ dGFpbHN6ID0gcmVzdF9sZW4gLSAobnJfcGFnZXMgLSAxKSAqIFBBR0VfU0laRTsKKwkJfQorCisJ CXdkYXRhMiA9IGNpZnNfd3JpdGVkYXRhX2FsbG9jKG5yX3BhZ2VzLCBjaWZzX3dyaXRldl9jb21w bGV0ZSk7CisJCWlmICghd2RhdGEyKSB7CisJCQlyYyA9IC1FTk9NRU07CisJCQlicmVhazsKKwkJ fQorCisJCWZvciAoaiA9IDA7IGogPCBucl9wYWdlczsgaisrKSB7CisJCQl3ZGF0YTItPnBhZ2Vz W2pdID0gd2RhdGEtPnBhZ2VzW2kgKyBqXTsKKwkJCWxvY2tfcGFnZSh3ZGF0YTItPnBhZ2VzW2pd KTsKKwkJCWNsZWFyX3BhZ2VfZGlydHlfZm9yX2lvKHdkYXRhMi0+cGFnZXNbal0pOworCQl9CisK KwkJd2RhdGEyLT5zeW5jX21vZGUgPSB3ZGF0YS0+c3luY19tb2RlOworCQl3ZGF0YTItPm5yX3Bh Z2VzID0gbnJfcGFnZXM7CisJCXdkYXRhMi0+b2Zmc2V0ID0gcGFnZV9vZmZzZXQod2RhdGEyLT5w YWdlc1swXSk7CisJCXdkYXRhMi0+cGFnZXN6ID0gUEFHRV9TSVpFOworCQl3ZGF0YTItPnRhaWxz eiA9IHRhaWxzejsKKwkJd2RhdGEyLT5ieXRlcyA9IGN1cl9sZW47CisKKwkJcmMgPSBjaWZzX2dl dF93cml0YWJsZV9maWxlKENJRlNfSShpbm9kZSksIEZJTkRfV1JfQU5ZLAorCQkJCQkgICAgJndk YXRhMi0+Y2ZpbGUpOworCQlpZiAoIXdkYXRhMi0+Y2ZpbGUpIHsKKwkJCWNpZnNfZGJnKFZGUywg Ik5vIHdyaXRhYmxlIGhhbmRsZSB0byByZXRyeSB3cml0ZXBhZ2VzIHJjPSVkXG4iLAorCQkJCSBy Yyk7CisJCQlpZiAoIWlzX3JldHJ5YWJsZV9lcnJvcihyYykpCisJCQkJcmMgPSAtRUJBREY7CisJ CX0gZWxzZSB7CisJCQl3ZGF0YTItPnBpZCA9IHdkYXRhMi0+Y2ZpbGUtPnBpZDsKKwkJCXJjID0g c2VydmVyLT5vcHMtPmFzeW5jX3dyaXRldih3ZGF0YTIsCisJCQkJCQkgICAgICAgY2lmc193cml0 ZWRhdGFfcmVsZWFzZSk7CisJCX0KKworCQlmb3IgKGogPSAwOyBqIDwgbnJfcGFnZXM7IGorKykg eworCQkJdW5sb2NrX3BhZ2Uod2RhdGEyLT5wYWdlc1tqXSk7CisJCQlpZiAocmMgIT0gMCAmJiAh aXNfcmV0cnlhYmxlX2Vycm9yKHJjKSkgeworCQkJCVNldFBhZ2VFcnJvcih3ZGF0YTItPnBhZ2Vz W2pdKTsKKwkJCQllbmRfcGFnZV93cml0ZWJhY2sod2RhdGEyLT5wYWdlc1tqXSk7CisJCQkJcHV0 X3BhZ2Uod2RhdGEyLT5wYWdlc1tqXSk7CisJCQl9CisJCX0KKworCQlrcmVmX3B1dCgmd2RhdGEy LT5yZWZjb3VudCwgY2lmc193cml0ZWRhdGFfcmVsZWFzZSk7CisJCWlmIChyYykgeworCQkJaWYg KGlzX3JldHJ5YWJsZV9lcnJvcihyYykpCisJCQkJY29udGludWU7CisJCQlpICs9IG5yX3BhZ2Vz OworCQkJYnJlYWs7CisJCX0KKworCQlyZXN0X2xlbiAtPSBjdXJfbGVuOworCQlpICs9IG5yX3Bh Z2VzOworCX0gd2hpbGUgKGkgPCB3ZGF0YS0+bnJfcGFnZXMpOworCisJLyogY2xlYW51cCByZW1h aW5pbmcgcGFnZXMgZnJvbSB0aGUgb3JpZ2luYWwgd2RhdGEgKi8KKwlmb3IgKDsgaSA8IHdkYXRh LT5ucl9wYWdlczsgaSsrKSB7CisJCVNldFBhZ2VFcnJvcih3ZGF0YS0+cGFnZXNbaV0pOworCQll bmRfcGFnZV93cml0ZWJhY2sod2RhdGEtPnBhZ2VzW2ldKTsKKwkJcHV0X3BhZ2Uod2RhdGEtPnBh Z2VzW2ldKTsKKwl9CisKKwlpZiAocmMgIT0gMCAmJiAhaXNfcmV0cnlhYmxlX2Vycm9yKHJjKSkK KwkJbWFwcGluZ19zZXRfZXJyb3IoaW5vZGUtPmlfbWFwcGluZywgcmMpOworCWtyZWZfcHV0KCZ3 ZGF0YS0+cmVmY291bnQsIGNpZnNfd3JpdGVkYXRhX3JlbGVhc2UpOworfQorCit2b2lkCitjaWZz X3dyaXRldl9jb21wbGV0ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGNp ZnNfd3JpdGVkYXRhICp3ZGF0YSA9IGNvbnRhaW5lcl9vZih3b3JrLAorCQkJCQkJc3RydWN0IGNp ZnNfd3JpdGVkYXRhLCB3b3JrKTsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZF9pbm9kZSh3ZGF0 YS0+Y2ZpbGUtPmRlbnRyeSk7CisJaW50IGkgPSAwOworCisJaWYgKHdkYXRhLT5yZXN1bHQgPT0g MCkgeworCQlzcGluX2xvY2soJmlub2RlLT5pX2xvY2spOworCQljaWZzX3VwZGF0ZV9lb2YoQ0lG U19JKGlub2RlKSwgd2RhdGEtPm9mZnNldCwgd2RhdGEtPmJ5dGVzKTsKKwkJc3Bpbl91bmxvY2so Jmlub2RlLT5pX2xvY2spOworCQljaWZzX3N0YXRzX2J5dGVzX3dyaXR0ZW4odGxpbmtfdGNvbih3 ZGF0YS0+Y2ZpbGUtPnRsaW5rKSwKKwkJCQkJIHdkYXRhLT5ieXRlcyk7CisJfSBlbHNlIGlmICh3 ZGF0YS0+c3luY19tb2RlID09IFdCX1NZTkNfQUxMICYmIHdkYXRhLT5yZXN1bHQgPT0gLUVBR0FJ TikKKwkJcmV0dXJuIGNpZnNfd3JpdGV2X3JlcXVldWUod2RhdGEpOworCisJZm9yIChpID0gMDsg aSA8IHdkYXRhLT5ucl9wYWdlczsgaSsrKSB7CisJCXN0cnVjdCBwYWdlICpwYWdlID0gd2RhdGEt PnBhZ2VzW2ldOworCisJCWlmICh3ZGF0YS0+cmVzdWx0ID09IC1FQUdBSU4pCisJCQlfX3NldF9w YWdlX2RpcnR5X25vYnVmZmVycyhwYWdlKTsKKwkJZWxzZSBpZiAod2RhdGEtPnJlc3VsdCA8IDAp CisJCQlTZXRQYWdlRXJyb3IocGFnZSk7CisJCWVuZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKKwkJ Y2lmc19yZWFkcGFnZV90b19mc2NhY2hlKGlub2RlLCBwYWdlKTsKKwkJcHV0X3BhZ2UocGFnZSk7 CisJfQorCWlmICh3ZGF0YS0+cmVzdWx0ICE9IC1FQUdBSU4pCisJCW1hcHBpbmdfc2V0X2Vycm9y KGlub2RlLT5pX21hcHBpbmcsIHdkYXRhLT5yZXN1bHQpOworCWtyZWZfcHV0KCZ3ZGF0YS0+cmVm Y291bnQsIGNpZnNfd3JpdGVkYXRhX3JlbGVhc2UpOworfQorCitzdHJ1Y3QgY2lmc193cml0ZWRh dGEgKgorY2lmc193cml0ZWRhdGFfYWxsb2ModW5zaWduZWQgaW50IG5yX3BhZ2VzLCB3b3JrX2Z1 bmNfdCBjb21wbGV0ZSkKK3sKKwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0KKwkJa2NhbGxvYyhucl9w YWdlcywgc2l6ZW9mKHN0cnVjdCBwYWdlICopLCBHRlBfTk9GUyk7CisJaWYgKHBhZ2VzKQorCQly ZXR1cm4gY2lmc193cml0ZWRhdGFfZGlyZWN0X2FsbG9jKHBhZ2VzLCBjb21wbGV0ZSk7CisKKwly ZXR1cm4gTlVMTDsKK30KKworc3RydWN0IGNpZnNfd3JpdGVkYXRhICoKK2NpZnNfd3JpdGVkYXRh X2RpcmVjdF9hbGxvYyhzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB3b3JrX2Z1bmNfdCBjb21wbGV0ZSkK K3sKKwlzdHJ1Y3QgY2lmc193cml0ZWRhdGEgKndkYXRhOworCisJd2RhdGEgPSBremFsbG9jKHNp emVvZigqd2RhdGEpLCBHRlBfTk9GUyk7CisJaWYgKHdkYXRhICE9IE5VTEwpIHsKKwkJd2RhdGEt PnBhZ2VzID0gcGFnZXM7CisJCWtyZWZfaW5pdCgmd2RhdGEtPnJlZmNvdW50KTsKKwkJSU5JVF9M SVNUX0hFQUQoJndkYXRhLT5saXN0KTsKKwkJaW5pdF9jb21wbGV0aW9uKCZ3ZGF0YS0+ZG9uZSk7 CisJCUlOSVRfV09SSygmd2RhdGEtPndvcmssIGNvbXBsZXRlKTsKKwl9CisJcmV0dXJuIHdkYXRh OworfQorCisKIHN0YXRpYyBpbnQgY2lmc19wYXJ0aWFscGFnZXdyaXRlKHN0cnVjdCBwYWdlICpw YWdlLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqbWFwcGluZyA9IHBhZ2UtPm1hcHBpbmc7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2lub2RlLmMg Yi9mcy9jaWZzL2lub2RlLmMKaW5kZXggM2FkMzAzZGQ1ZTVhLi5lZWVhYmEzZGVjMDUgMTAwNjQ0 Ci0tLSBhL2ZzL2NpZnMvaW5vZGUuYworKysgYi9mcy9jaWZzL2lub2RlLmMKQEAgLTMzOSw2ICsz MzksNyBAQCBjaWZzX2NyZWF0ZV9kZnNfZmF0dHIoc3RydWN0IGNpZnNfZmF0dHIgKmZhdHRyLCBz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCWZhdHRyLT5jZl9mbGFncyA9IENJRlNfRkFUVFJfREZT X1JFRkVSUkFMOwogfQogCisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZ CiBzdGF0aWMgaW50CiBjaWZzX2dldF9maWxlX2luZm9fdW5peChzdHJ1Y3QgZmlsZSAqZmlscCkK IHsKQEAgLTQzMiw2ICs0MzMsMTQgQEAgaW50IGNpZnNfZ2V0X2lub2RlX2luZm9fdW5peChzdHJ1 Y3QgaW5vZGUgKipwaW5vZGUsCiBjZ2lpdV9leGl0OgogCXJldHVybiByYzsKIH0KKyNlbHNlCitp bnQgY2lmc19nZXRfaW5vZGVfaW5mb191bml4KHN0cnVjdCBpbm9kZSAqKnBpbm9kZSwKKwkJCSAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZnVsbF9wYXRoLAorCQkJICAgICBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCB1bnNpZ25lZCBpbnQgeGlkKQoreworCXJldHVybiAtRU9QTk9UU1VQUDsKK30K KyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogc3RhdGlj IGludAogY2lmc19zZnVfdHlwZShzdHJ1Y3QgY2lmc19mYXR0ciAqZmF0dHIsIGNvbnN0IGNoYXIg KnBhdGgsCkBAIC03OTUsNiArODA0LDcgQEAgc3RhdGljIF9fdTY0IHNpbXBsZV9oYXNoc3RyKGNv bnN0IGNoYXIgKnN0cikKIAlyZXR1cm4gaGFzaDsKIH0KIAorI2lmZGVmIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWQogLyoqCiAgKiBjaWZzX2JhY2t1cF9xdWVyeV9wYXRoX2luZm8g LSBTTUIxIGZhbGxiYWNrIGNvZGUgdG8gZ2V0IGlubwogICoKQEAgLTg0Nyw2ICs4NTcsNyBAQCBj aWZzX2JhY2t1cF9xdWVyeV9wYXRoX2luZm8oaW50IHhpZCwKIAkqZGF0YSA9IChGSUxFX0FMTF9J TkZPICopaW5mby5zcmNoX2VudHJpZXNfc3RhcnQ7CiAJcmV0dXJuIDA7CiB9CisjZW5kaWYgLyog Q09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAKIHN0YXRpYyB2b2lkCiBjaWZz X3NldF9mYXR0cl9pbm8oaW50IHhpZCwKQEAgLTk5MSw2ICsxMDAyLDcgQEAgY2lmc19nZXRfaW5v ZGVfaW5mbyhzdHJ1Y3QgaW5vZGUgKippbm9kZSwKIAkJcmMgPSAwOwogCQlicmVhazsKIAljYXNl IC1FQUNDRVM6CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJCS8q CiAJCSAqIHBlcm0gZXJyb3JzLCB0cnkgYWdhaW4gd2l0aCBiYWNrdXAgZmxhZ3MgaWYgcG9zc2li bGUKIAkJICoKQEAgLTEwMjIsNiArMTAzNCw5IEBAIGNpZnNfZ2V0X2lub2RlX2luZm8oc3RydWN0 IGlub2RlICoqaW5vZGUsCiAJCQkvKiBub3RoaW5nIHdlIGNhbiBkbywgYmFpbCBvdXQgKi8KIAkJ CWdvdG8gb3V0OwogCQl9CisjZWxzZQorCQlnb3RvIG91dDsKKyNlbmRpZiAvKiBDT05GSUdfQ0lG U19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJY2lmc19k YmcoRllJLCAiJXM6IHVuaGFuZGxlZCBlcnIgcmMgJWRcbiIsIF9fZnVuY19fLCByYyk7CkBAIC0x MDM3LDggKzEwNTIsOSBAQCBjaWZzX2dldF9pbm9kZV9pbmZvKHN0cnVjdCBpbm9kZSAqKmlub2Rl LAogCS8qCiAJICogNC4gVHdlYWsgZmF0dHIgYmFzZWQgb24gbW91bnQgb3B0aW9ucwogCSAqLwot CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiBoYW5kbGVfbW50X29w dDoKKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAkvKiBx dWVyeSBmb3IgU0ZVIHR5cGUgaW5mbyBpZiBzdXBwb3J0ZWQgYW5kIG5lZWRlZCAqLwogCWlmIChm YXR0ci5jZl9jaWZzYXR0cnMgJiBBVFRSX1NZU1RFTSAmJgogCSAgICBjaWZzX3NiLT5tbnRfY2lm c19mbGFncyAmIENJRlNfTU9VTlRfVU5YX0VNVUwpIHsKQEAgLTE0MzUsNiArMTQ1MSw3IEBAIGNp ZnNfc2V0X2ZpbGVfaW5mbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgaWF0dHIgKmF0dHJz LCB1bnNpZ25lZCBpbnQgeGlkLAogCXJldHVybiBzZXJ2ZXItPm9wcy0+c2V0X2ZpbGVfaW5mbyhp bm9kZSwgZnVsbF9wYXRoLCAmaW5mb19idWYsIHhpZCk7CiB9CiAKKyNpZmRlZiBDT05GSUdfQ0lG U19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIC8qCiAgKiBPcGVuIHRoZSBnaXZlbiBmaWxlIChpZiBp dCBpc24ndCBhbHJlYWR5KSwgc2V0IHRoZSBERUxFVEVfT05fQ0xPU0UgYml0CiAgKiBhbmQgcmVu YW1lIGl0IHRvIGEgcmFuZG9tIG5hbWUgdGhhdCBob3BlZnVsbHkgd29uJ3QgY29uZmxpY3Qgd2l0 aApAQCAtMTU2NSw2ICsxNTgyLDcgQEAgY2lmc19yZW5hbWVfcGVuZGluZ19kZWxldGUoY29uc3Qg Y2hhciAqZnVsbF9wYXRoLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAKIAlnb3RvIG91dF9jbG9z ZTsKIH0KKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAog LyogY29waWVkIGZyb20gZnMvbmZzL2Rpci5jIHdpdGggc21hbGwgY2hhbmdlcyAqLwogc3RhdGlj IHZvaWQKQEAgLTE2MjcsNiArMTY0NSw3IEBAIGludCBjaWZzX3VubGluayhzdHJ1Y3QgaW5vZGUg KmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCX0KIAogCWNpZnNfY2xvc2VfZGVmZXJyZWRf ZmlsZV91bmRlcl9kZW50cnkodGNvbiwgZnVsbF9wYXRoKTsKKyNpZmRlZiBDT05GSUdfQ0lGU19B TExPV19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAoY2FwX3VuaXgodGNvbi0+c2VzKSAmJiAoQ0lGU19V TklYX1BPU0lYX1BBVEhfT1BTX0NBUCAmCiAJCQkJbGU2NF90b19jcHUodGNvbi0+ZnNVbml4SW5m by5DYXBhYmlsaXR5KSkpIHsKIAkJcmMgPSBDSUZTUE9TSVhEZWxGaWxlKHhpZCwgdGNvbiwgZnVs bF9wYXRoLApAQCAtMTYzNiw2ICsxNjU1LDcgQEAgaW50IGNpZnNfdW5saW5rKHN0cnVjdCBpbm9k ZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiAJCWlmICgocmMgPT0gMCkgfHwgKHJjID09 IC1FTk9FTlQpKQogCQkJZ290byBwc3hfZGVsX25vX3JldHJ5OwogCX0KKyNlbmRpZiAvKiBDT05G SUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogcmV0cnlfc3RkX2RlbGV0ZToKIAlp ZiAoIXNlcnZlci0+b3BzLT51bmxpbmspIHsKQEAgLTE3MTQsOSArMTczNCwxMSBAQCBjaWZzX21r ZGlyX3FpbmZvKHN0cnVjdCBpbm9kZSAqcGFyZW50LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVt b2RlX3QgbW9kZSwKIAogCWlmICh0Y29uLT5wb3NpeF9leHRlbnNpb25zKQogCQlyYyA9IHNtYjMx MV9wb3NpeF9nZXRfaW5vZGVfaW5mbygmaW5vZGUsIGZ1bGxfcGF0aCwgcGFyZW50LT5pX3NiLCB4 aWQpOworI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogCWVsc2UgaWYg KHRjb24tPnVuaXhfZXh0KQogCQlyYyA9IGNpZnNfZ2V0X2lub2RlX2luZm9fdW5peCgmaW5vZGUs IGZ1bGxfcGF0aCwgcGFyZW50LT5pX3NiLAogCQkJCQkgICAgICB4aWQpOworI2VuZGlmIC8qIENP TkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCWVsc2UKIAkJcmMgPSBjaWZzX2dl dF9pbm9kZV9pbmZvKCZpbm9kZSwgZnVsbF9wYXRoLCBOVUxMLCBwYXJlbnQtPmlfc2IsCiAJCQkJ CSB4aWQsIE5VTEwpOwpAQCAtMTc0Niw2ICsxNzY4LDcgQEAgY2lmc19ta2Rpcl9xaW5mbyhzdHJ1 Y3QgaW5vZGUgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUsCiAJ aWYgKHBhcmVudC0+aV9tb2RlICYgU19JU0dJRCkKIAkJbW9kZSB8PSBTX0lTR0lEOwogCisjaWZk ZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJaWYgKHRjb24tPnVuaXhfZXh0 KSB7CiAJCXN0cnVjdCBjaWZzX3VuaXhfc2V0X2luZm9fYXJncyBhcmdzID0gewogCQkJLm1vZGUJ PSBtb2RlLApAQCAtMTc2OCw2ICsxNzkxLDkgQEAgY2lmc19ta2Rpcl9xaW5mbyhzdHJ1Y3QgaW5v ZGUgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUsCiAJCQkJICAg ICAgIGNpZnNfc2ItPmxvY2FsX25scywKIAkJCQkgICAgICAgY2lmc19yZW1hcChjaWZzX3NiKSk7 CiAJfSBlbHNlIHsKKyNlbHNlCisJeworI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VD VVJFX0xFR0FDWSAqLwogCQlzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIgPSB0Y29uLT5z ZXMtPnNlcnZlcjsKIAkJaWYgKCEoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5U X0NJRlNfQUNMKSAmJgogCQkgICAgKG1vZGUgJiBTX0lXVUdPKSA9PSAwICYmIHNlcnZlci0+b3Bz LT5ta2Rpcl9zZXRpbmZvKQpAQCAtMTc4OCw2ICsxODE0LDcgQEAgY2lmc19ta2Rpcl9xaW5mbyhz dHJ1Y3QgaW5vZGUgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUs CiAJcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdB Q1kKIHN0YXRpYyBpbnQKIGNpZnNfcG9zaXhfbWtkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUsCiAJCSBjb25zdCBjaGFyICpmdWxsX3Bh dGgsIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsCkBAIC0xODUwLDYgKzE4NzcsNyBAQCBj aWZzX3Bvc2l4X21rZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgdW1vZGVfdCBtb2RlLAogCQkJICAgICAgeGlkKTsKIAlnb3RvIHBvc2l4X21rZGlyX291dDsK IH0KKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAogaW50 IGNpZnNfbWtkaXIoc3RydWN0IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgaW5v ZGUgKmlub2RlLAogCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwgdW1vZGVfdCBtb2Rl KQpAQCAtMTg5Miw2ICsxOTIwLDcgQEAgaW50IGNpZnNfbWtkaXIoc3RydWN0IHVzZXJfbmFtZXNw YWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQlnb3RvIG1rZGlyX291dDsK IAl9CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAlpZiAoY2Fw X3VuaXgodGNvbi0+c2VzKSAmJiAoQ0lGU19VTklYX1BPU0lYX1BBVEhfT1BTX0NBUCAmCiAJCQkJ bGU2NF90b19jcHUodGNvbi0+ZnNVbml4SW5mby5DYXBhYmlsaXR5KSkpIHsKIAkJcmMgPSBjaWZz X3Bvc2l4X21rZGlyKGlub2RlLCBkaXJlbnRyeSwgbW9kZSwgZnVsbF9wYXRoLCBjaWZzX3NiLApA QCAtMTg5OSw2ICsxOTI4LDcgQEAgaW50IGNpZnNfbWtkaXIoc3RydWN0IHVzZXJfbmFtZXNwYWNl ICptbnRfdXNlcm5zLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQlpZiAocmMgIT0gLUVPUE5PVFNV UFApCiAJCQlnb3RvIG1rZGlyX291dDsKIAl9CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1df SU5TRUNVUkVfTEVHQUNZICovCiAKIAlpZiAoIXNlcnZlci0+b3BzLT5ta2RpcikgewogCQlyYyA9 IC1FTk9TWVM7CkBAIC0yMDE1LDkgKzIwNDUsMTIgQEAgY2lmc19kb19yZW5hbWUoY29uc3QgdW5z aWduZWQgaW50IHhpZCwgc3RydWN0IGRlbnRyeSAqZnJvbV9kZW50cnksCiAJc3RydWN0IHRjb25f bGluayAqdGxpbms7CiAJc3RydWN0IGNpZnNfdGNvbiAqdGNvbjsKIAlzdHJ1Y3QgVENQX1NlcnZl cl9JbmZvICpzZXJ2ZXI7CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZ CiAJc3RydWN0IGNpZnNfZmlkIGZpZDsKIAlzdHJ1Y3QgY2lmc19vcGVuX3Bhcm1zIG9wYXJtczsK LQlpbnQgb3Bsb2NrLCByYzsKKwlpbnQgb3Bsb2NrOworI2VuZGlmIC8qIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWSAqLworCWludCByYzsKIAogCXRsaW5rID0gY2lmc19zYl90bGlu ayhjaWZzX3NiKTsKIAlpZiAoSVNfRVJSKHRsaW5rKSkKQEAgLTIwNDMsNiArMjA3Niw3IEBAIGNp ZnNfZG9fcmVuYW1lKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBkZW50cnkgKmZyb21f ZGVudHJ5LAogCWlmIChzZXJ2ZXItPnZhbHMtPnByb3RvY29sX2lkICE9IDApCiAJCWdvdG8gZG9f cmVuYW1lX2V4aXQ7CiAKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kK IAkvKiBvcGVuLWZpbGUgcmVuYW1lcyBkb24ndCB3b3JrIGFjcm9zcyBkaXJlY3RvcmllcyAqLwog CWlmICh0b19kZW50cnktPmRfcGFyZW50ICE9IGZyb21fZGVudHJ5LT5kX3BhcmVudCkKIAkJZ290 byBkb19yZW5hbWVfZXhpdDsKQEAgLTIwNjQsNiArMjA5OCw3IEBAIGNpZnNfZG9fcmVuYW1lKGNv bnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBkZW50cnkgKmZyb21fZGVudHJ5LAogCQkJCWNp ZnNfc2ItPmxvY2FsX25scywgY2lmc19yZW1hcChjaWZzX3NiKSk7CiAJCUNJRlNTTUJDbG9zZSh4 aWQsIHRjb24sIGZpZC5uZXRmaWQpOwogCX0KKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19J TlNFQ1VSRV9MRUdBQ1kgKi8KIGRvX3JlbmFtZV9leGl0OgogCWlmIChyYyA9PSAwKQogCQlkX21v dmUoZnJvbV9kZW50cnksIHRvX2RlbnRyeSk7CkBAIC0yMDgxLDExICsyMTE2LDEzIEBAIGNpZnNf cmVuYW1lMihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBpbm9kZSAq c291cmNlX2RpciwKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3NiOwogCXN0cnVjdCB0Y29u X2xpbmsgKnRsaW5rOwogCXN0cnVjdCBjaWZzX3Rjb24gKnRjb247Ci0JRklMRV9VTklYX0JBU0lD X0lORk8gKmluZm9fYnVmX3NvdXJjZSA9IE5VTEw7Ci0JRklMRV9VTklYX0JBU0lDX0lORk8gKmlu Zm9fYnVmX3RhcmdldDsKIAl1bnNpZ25lZCBpbnQgeGlkOwogCWludCByYywgdG1wcmM7CiAJaW50 IHJldHJ5X2NvdW50ID0gMDsKKwlGSUxFX1VOSVhfQkFTSUNfSU5GTyAqaW5mb19idWZfc291cmNl ID0gTlVMTDsKKyNpZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKKwlGSUxF X1VOSVhfQkFTSUNfSU5GTyAqaW5mb19idWZfdGFyZ2V0OworI2VuZGlmIC8qIENPTkZJR19DSUZT X0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAJaWYgKGZsYWdzICYgflJFTkFNRV9OT1JFUExB Q0UpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMjEzOSw2ICsyMTc2LDcgQEAgY2lmc19yZW5hbWUy KHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbW50X3VzZXJucywgc3RydWN0IGlub2RlICpzb3VyY2Vf ZGlyLAogCWlmIChmbGFncyAmIFJFTkFNRV9OT1JFUExBQ0UpCiAJCWdvdG8gY2lmc19yZW5hbWVf ZXhpdDsKIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogCWlmIChy YyA9PSAtRUVYSVNUICYmIHRjb24tPnVuaXhfZXh0KSB7CiAJCS8qCiAJCSAqIEFyZSBzcmMgYW5k IGRzdCBoYXJkbGlua3Mgb2Ygc2FtZSBpbm9kZT8gV2UgY2FuIG9ubHkgdGVsbApAQCAtMjE3OCw2 ICsyMjE2LDggQEAgY2lmc19yZW5hbWUyKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbW50X3VzZXJu cywgc3RydWN0IGlub2RlICpzb3VyY2VfZGlyLAogCSAqLwogCiB1bmxpbmtfdGFyZ2V0OgorI2Vu ZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLworCiAJLyogVHJ5IHVu bGlua2luZyB0aGUgdGFyZ2V0IGRlbnRyeSBpZiBpdCdzIG5vdCBuZWdhdGl2ZSAqLwogCWlmIChk X3JlYWxseV9pc19wb3NpdGl2ZSh0YXJnZXRfZGVudHJ5KSAmJiAocmMgPT0gLUVBQ0NFUyB8fCBy YyA9PSAtRUVYSVNUKSkgewogCQlpZiAoZF9pc19kaXIodGFyZ2V0X2RlbnRyeSkpCkBAIC0yMzM3 LDE0ICsyMzc3LDE4IEBAIGludCBjaWZzX3JldmFsaWRhdGVfZmlsZV9hdHRyKHN0cnVjdCBmaWxl ICpmaWxwKQogewogCWludCByYyA9IDA7CiAJc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZV9k ZW50cnkoZmlscCk7CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJ c3RydWN0IGNpZnNGaWxlSW5mbyAqY2ZpbGUgPSAoc3RydWN0IGNpZnNGaWxlSW5mbyAqKSBmaWxw LT5wcml2YXRlX2RhdGE7CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVH QUNZICovCiAKIAlpZiAoIWNpZnNfZGVudHJ5X25lZWRzX3JldmFsKGRlbnRyeSkpCiAJCXJldHVy biByYzsKIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogCWlmICh0 bGlua190Y29uKGNmaWxlLT50bGluayktPnVuaXhfZXh0KQogCQlyYyA9IGNpZnNfZ2V0X2ZpbGVf aW5mb191bml4KGZpbHApOwogCWVsc2UKKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNF Q1VSRV9MRUdBQ1kgKi8KIAkJcmMgPSBjaWZzX2dldF9maWxlX2luZm8oZmlscCk7CiAKIAlyZXR1 cm4gcmM7CkBAIC0yNjUzLDYgKzI2OTcsNyBAQCBjaWZzX3NldF9maWxlX3NpemUoc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRycywKIAlyZXR1cm4gcmM7CiB9CiAKKyNpZmRl ZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIHN0YXRpYyBpbnQKIGNpZnNfc2V0 YXR0cl91bml4KHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHJzKQog ewpAQCAtMjgwMCw2ICsyODQ1LDcgQEAgY2lmc19zZXRhdHRyX3VuaXgoc3RydWN0IGRlbnRyeSAq ZGlyZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cnMpCiAJZnJlZV94aWQoeGlkKTsKIAlyZXR1cm4g cmM7CiB9CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAK IHN0YXRpYyBpbnQKIGNpZnNfc2V0YXR0cl9ub3VuaXgoc3RydWN0IGRlbnRyeSAqZGlyZW50cnks IHN0cnVjdCBpYXR0ciAqYXR0cnMpCkBAIC0yOTk1LDE2ICszMDQxLDIwIEBAIGNpZnNfc2V0YXR0 cihzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm1udF91c2VybnMsIHN0cnVjdCBkZW50cnkgKmRpcmVu dHJ5LAogCSAgICAgc3RydWN0IGlhdHRyICphdHRycykKIHsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZv ICpjaWZzX3NiID0gQ0lGU19TQihkaXJlbnRyeS0+ZF9zYik7Ci0Jc3RydWN0IGNpZnNfdGNvbiAq cFRjb24gPSBjaWZzX3NiX21hc3Rlcl90Y29uKGNpZnNfc2IpOwogCWludCByYywgcmV0cmllcyA9 IDA7CisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCisJc3RydWN0IGNp ZnNfdGNvbiAqcFRjb24gPSBjaWZzX3NiX21hc3Rlcl90Y29uKGNpZnNfc2IpOworI2VuZGlmIC8q IENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAJaWYgKHVubGlrZWx5KGNp ZnNfZm9yY2VkX3NodXRkb3duKGNpZnNfc2IpKSkKIAkJcmV0dXJuIC1FSU87CiAKIAlkbyB7Cisj aWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJCWlmIChwVGNvbi0+dW5p eF9leHQpCiAJCQlyYyA9IGNpZnNfc2V0YXR0cl91bml4KGRpcmVudHJ5LCBhdHRycyk7CiAJCWVs c2UKKyNlbmRpZiAvKiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kgKi8KIAkJCXJj ID0gY2lmc19zZXRhdHRyX25vdW5peChkaXJlbnRyeSwgYXR0cnMpOwogCQlyZXRyaWVzKys7CiAJ fSB3aGlsZSAoaXNfcmV0cnlhYmxlX2Vycm9yKHJjKSAmJiByZXRyaWVzIDwgMik7CmRpZmYgLS1n aXQgYS9mcy9jaWZzL2lvY3RsLmMgYi9mcy9jaWZzL2lvY3RsLmMKaW5kZXggMDM1OWI2MDRiZGJj Li5iNmU2ZTVkNmM4ZGQgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvaW9jdGwuYworKysgYi9mcy9jaWZz L2lvY3RsLmMKQEAgLTMzMyw2ICszMzMsNyBAQCBsb25nIGNpZnNfaW9jdGwoc3RydWN0IGZpbGUg KmZpbGVwLCB1bnNpZ25lZCBpbnQgY29tbWFuZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCQl0Y29u ID0gdGxpbmtfdGNvbihwU01CRmlsZS0+dGxpbmspOwogCQkJY2FwcyA9IGxlNjRfdG9fY3B1KHRj b24tPmZzVW5peEluZm8uQ2FwYWJpbGl0eSk7CiAjaWZkZWYgQ09ORklHX0NJRlNfUE9TSVgKKyNp ZmRlZiBDT05GSUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAkJCWlmIChDSUZTX1VOSVhf RVhUQVRUUl9DQVAgJiBjYXBzKSB7CiAJCQkJX191NjQJRXh0QXR0ck1hc2sgPSAwOwogCQkJCXJj ID0gQ0lGU0dldEV4dEF0dHIoeGlkLCB0Y29uLApAQCAtMzQ1LDYgKzM0Niw3IEBAIGxvbmcgY2lm c19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZXAsIHVuc2lnbmVkIGludCBjb21tYW5kLCB1bnNpZ25l ZCBsb25nIGFyZykKIAkJCQlpZiAocmMgIT0gRU9QTk9UU1VQUCkKIAkJCQkJYnJlYWs7CiAJCQl9 CisjZW5kaWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAjZW5kaWYg LyogQ09ORklHX0NJRlNfUE9TSVggKi8KIAkJCXJjID0gMDsKIAkJCWlmIChDSUZTX0koaW5vZGUp LT5jaWZzQXR0cnMgJiBBVFRSX0NPTVBSRVNTRUQpIHsKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvbGlu ay5jIGIvZnMvY2lmcy9saW5rLmMKaW5kZXggYmJkZjMyODE1NTljLi42ODAzY2IyN2VlY2MgMTAw NjQ0Ci0tLSBhL2ZzL2NpZnMvbGluay5jCisrKyBiL2ZzL2NpZnMvbGluay5jCkBAIC0yODYsNiAr Mjg2LDcgQEAgY2hlY2tfbWZfc3ltbGluayh1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190 Y29uICp0Y29uLAogCXJldHVybiByYzsKIH0KIAorI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lO U0VDVVJFX0xFR0FDWQogLyoKICAqIFNNQiAxLjAgUHJvdG9jb2wgc3BlY2lmaWMgZnVuY3Rpb25z CiAgKi8KQEAgLTM2OCw2ICszNjksNyBAQCBjaWZzX2NyZWF0ZV9tZl9zeW1saW5rKHVuc2lnbmVk IGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAJQ0lGU1NNQkNsb3NlKHhpZCwgdGNv biwgZmlkLm5ldGZpZCk7CiAJcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiAvKgogICogU01CIDIuMS9TTUIzIFByb3RvY29sIHNw ZWNpZmljIGZ1bmN0aW9ucwpAQCAtNTMyLDExICs1MzQsMTUgQEAgY2lmc19oYXJkbGluayhzdHJ1 Y3QgZGVudHJ5ICpvbGRfZmlsZSwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJZ290byBjaWZzX2hs X2V4aXQ7CiAJfQogCisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiAJ aWYgKHRjb24tPnVuaXhfZXh0KQogCQlyYyA9IENJRlNVbml4Q3JlYXRlSGFyZExpbmsoeGlkLCB0 Y29uLCBmcm9tX25hbWUsIHRvX25hbWUsCiAJCQkJCSAgICBjaWZzX3NiLT5sb2NhbF9ubHMsCiAJ CQkJCSAgICBjaWZzX3JlbWFwKGNpZnNfc2IpKTsKIAllbHNlIHsKKyNlbHNlCisJeworI2VuZGlm IC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCQlzZXJ2ZXIgPSB0Y29u LT5zZXMtPnNlcnZlcjsKIAkJaWYgKCFzZXJ2ZXItPm9wcy0+Y3JlYXRlX2hhcmRsaW5rKSB7CiAJ CQlyYyA9IC1FTk9TWVM7CkBAIC03MDQsMTAgKzcxMCwxMiBAQCBjaWZzX3N5bWxpbmsoc3RydWN0 IHVzZXJfbmFtZXNwYWNlICptbnRfdXNlcm5zLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCS8qIEJC IHdoYXQgaWYgREZTIGFuZCB0aGlzIHZvbHVtZSBpcyBvbiBkaWZmZXJlbnQgc2hhcmU/IEJCICov CiAJaWYgKGNpZnNfc2ItPm1udF9jaWZzX2ZsYWdzICYgQ0lGU19NT1VOVF9NRl9TWU1MSU5LUykK IAkJcmMgPSBjcmVhdGVfbWZfc3ltbGluayh4aWQsIHBUY29uLCBjaWZzX3NiLCBmdWxsX3BhdGgs IHN5bW5hbWUpOworI2lmZGVmIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWQogCWVs c2UgaWYgKHBUY29uLT51bml4X2V4dCkKIAkJcmMgPSBDSUZTVW5peENyZWF0ZVN5bUxpbmsoeGlk LCBwVGNvbiwgZnVsbF9wYXRoLCBzeW1uYW1lLAogCQkJCQkgICBjaWZzX3NiLT5sb2NhbF9ubHMs CiAJCQkJCSAgIGNpZnNfcmVtYXAoY2lmc19zYikpOworI2VuZGlmIC8qIENPTkZJR19DSUZTX0FM TE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCS8qIGVsc2UKIAkgICByYyA9IENJRlNDcmVhdGVSZXBh cnNlU3ltTGluayh4aWQsIHBUY29uLCBmcm9tTmFtZSwgdG9OYW1lLAogCQkJCQljaWZzX3NiX3Rh cmdldC0+bG9jYWxfbmxzKTsgKi8KZGlmZiAtLWdpdCBhL2ZzL2NpZnMvc2Vzcy5jIGIvZnMvY2lm cy9zZXNzLmMKaW5kZXggMDJjOGIyOTA2MTk2Li4zYWYzYjA1YjZjNzQgMTAwNjQ0Ci0tLSBhL2Zz L2NpZnMvc2Vzcy5jCisrKyBiL2ZzL2NpZnMvc2Vzcy5jCkBAIC00OTksNiArNDk5LDcgQEAgY2lm c19zZXNfYWRkX2NoYW5uZWwoc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiwgc3RydWN0IGNp ZnNfc2VzICpzZXMsCiAJcmV0dXJuIHJjOwogfQogCisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1df SU5TRUNVUkVfTEVHQUNZCiBzdGF0aWMgX191MzIgY2lmc19zc2V0dXBfaGRyKHN0cnVjdCBjaWZz X3NlcyAqc2VzLAogCQkJICAgICBzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIsCiAJCQkg ICAgIFNFU1NJT05fU0VUVVBfQU5EWCAqcFNNQikKQEAgLTU5MSw3ICs1OTIsNiBAQCBzdGF0aWMg dm9pZCB1bmljb2RlX2RvbWFpbl9zdHJpbmcoY2hhciAqKnBiY2NfYXJlYSwgc3RydWN0IGNpZnNf c2VzICpzZXMsCiAJKnBiY2NfYXJlYSA9IGJjY19wdHI7CiB9CiAKLQogc3RhdGljIHZvaWQgdW5p Y29kZV9zc2V0dXBfc3RyaW5ncyhjaGFyICoqcGJjY19hcmVhLCBzdHJ1Y3QgY2lmc19zZXMgKnNl cywKIAkJCQkgICBjb25zdCBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfY3ApCiB7CkBAIC03NTMsNiAr NzUzLDcgQEAgc3RhdGljIHZvaWQgZGVjb2RlX2FzY2lpX3NzZXR1cChjaGFyICoqcGJjY19hcmVh LCBfX3UxNiBibGVmdCwKIAkgICBmb3IgaXQgbGF0ZXIsIGJ1dCBpdCBpcyBub3QgdmVyeSBpbXBv cnRhbnQgKi8KIAljaWZzX2RiZyhGWUksICJhc2NpaTogYnl0ZXMgbGVmdCAlZFxuIiwgYmxlZnQp OwogfQorI2VuZGlmIC8qIENPTkZJR19DSUZTX0FMTE9XX0lOU0VDVVJFX0xFR0FDWSAqLwogCiBp bnQgZGVjb2RlX250bG1zc3BfY2hhbGxlbmdlKGNoYXIgKmJjY19wdHIsIGludCBibG9iX2xlbiwK IAkJCQkgICAgc3RydWN0IGNpZnNfc2VzICpzZXMpCkBAIC0xMTcwLDYgKzExNzEsNyBAQCBzdHJ1 Y3Qgc2Vzc19kYXRhIHsKIAlzdHJ1Y3Qga3ZlYyBpb3ZbM107CiB9OwogCisjaWZkZWYgQ09ORklH X0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZCiBzdGF0aWMgaW50CiBzZXNzX2FsbG9jX2J1ZmZl cihzdHJ1Y3Qgc2Vzc19kYXRhICpzZXNzX2RhdGEsIGludCB3Y3QpCiB7CkBAIC0xODQ2LDMgKzE4 NDgsNCBAQCBpbnQgQ0lGU19TZXNzU2V0dXAoY29uc3QgdW5zaWduZWQgaW50IHhpZCwgc3RydWN0 IGNpZnNfc2VzICpzZXMsCiAJa2ZyZWUoc2Vzc19kYXRhKTsKIAlyZXR1cm4gcmM7CiB9CisjZW5k aWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCmRpZmYgLS1naXQgYS9m cy9jaWZzL3RyYW5zcG9ydC5jIGIvZnMvY2lmcy90cmFuc3BvcnQuYwppbmRleCAxNjA0NjNlMjJj OTUuLjkxNGE3YWFmOWZhNyAxMDA2NDQKLS0tIGEvZnMvY2lmcy90cmFuc3BvcnQuYworKysgYi9m cy9jaWZzL3RyYW5zcG9ydC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8YXNtL3Byb2Nl c3Nvci5oPgogI2luY2x1ZGUgPGxpbnV4L21lbXBvb2wuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hl ZC9zaWduYWwuaD4KKyNpbmNsdWRlIDxsaW51eC90YXNrX2lvX2FjY291bnRpbmdfb3BzLmg+CiAj aW5jbHVkZSAiY2lmc3BkdS5oIgogI2luY2x1ZGUgImNpZnNnbG9iLmgiCiAjaW5jbHVkZSAiY2lm c3Byb3RvLmgiCkBAIC0xNjM4LDMgKzE2MzksMTgxIEBAIFNlbmRSZWNlaXZlQmxvY2tpbmdMb2Nr KGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAJCXJldHVy biAtRVJFU1RBUlRTWVM7CiAJcmV0dXJuIHJjOwogfQorCisvKgorICogRGlzY2FyZCBhbnkgcmVt YWluaW5nIGRhdGEgaW4gdGhlIGN1cnJlbnQgU01CLiBUbyBkbyB0aGlzLCB3ZSBib3Jyb3cgdGhl CisgKiBjdXJyZW50IGJpZ2J1Zi4KKyAqLworaW50CitjaWZzX2Rpc2NhcmRfcmVtYWluaW5nX2Rh dGEoc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyKQoreworCXVuc2lnbmVkIGludCByZmNs ZW4gPSBzZXJ2ZXItPnBkdV9zaXplOworCWludCByZW1haW5pbmcgPSByZmNsZW4gKyBzZXJ2ZXIt PnZhbHMtPmhlYWRlcl9wcmVhbWJsZV9zaXplIC0KKwkJc2VydmVyLT50b3RhbF9yZWFkOworCisJ d2hpbGUgKHJlbWFpbmluZyA+IDApIHsKKwkJaW50IGxlbmd0aDsKKworCQlsZW5ndGggPSBjaWZz X2Rpc2NhcmRfZnJvbV9zb2NrZXQoc2VydmVyLAorCQkJCW1pbl90KHNpemVfdCwgcmVtYWluaW5n LAorCQkJCSAgICAgIENJRlNNYXhCdWZTaXplICsgTUFYX0hFQURFUl9TSVpFKHNlcnZlcikpKTsK KwkJaWYgKGxlbmd0aCA8IDApCisJCQlyZXR1cm4gbGVuZ3RoOworCQlzZXJ2ZXItPnRvdGFsX3Jl YWQgKz0gbGVuZ3RoOworCQlyZW1haW5pbmcgLT0gbGVuZ3RoOworCX0KKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50CitfX2NpZnNfcmVhZHZfZGlzY2FyZChzdHJ1Y3QgVENQX1NlcnZlcl9J bmZvICpzZXJ2ZXIsIHN0cnVjdCBtaWRfcV9lbnRyeSAqbWlkLAorCQkgICAgIGJvb2wgbWFsZm9y bWVkKQoreworCWludCBsZW5ndGg7CisKKwlsZW5ndGggPSBjaWZzX2Rpc2NhcmRfcmVtYWluaW5n X2RhdGEoc2VydmVyKTsKKwlkZXF1ZXVlX21pZChtaWQsIG1hbGZvcm1lZCk7CisJbWlkLT5yZXNw X2J1ZiA9IHNlcnZlci0+c21hbGxidWY7CisJc2VydmVyLT5zbWFsbGJ1ZiA9IE5VTEw7CisJcmV0 dXJuIGxlbmd0aDsKK30KKworc3RhdGljIGludAorY2lmc19yZWFkdl9kaXNjYXJkKHN0cnVjdCBU Q1BfU2VydmVyX0luZm8gKnNlcnZlciwgc3RydWN0IG1pZF9xX2VudHJ5ICptaWQpCit7CisJc3Ry dWN0IGNpZnNfcmVhZGRhdGEgKnJkYXRhID0gbWlkLT5jYWxsYmFja19kYXRhOworCisJcmV0dXJu ICBfX2NpZnNfcmVhZHZfZGlzY2FyZChzZXJ2ZXIsIG1pZCwgcmRhdGEtPnJlc3VsdCk7Cit9CisK K2ludAorY2lmc19yZWFkdl9yZWNlaXZlKHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlciwg c3RydWN0IG1pZF9xX2VudHJ5ICptaWQpCit7CisJaW50IGxlbmd0aCwgbGVuOworCXVuc2lnbmVk IGludCBkYXRhX29mZnNldCwgZGF0YV9sZW47CisJc3RydWN0IGNpZnNfcmVhZGRhdGEgKnJkYXRh ID0gbWlkLT5jYWxsYmFja19kYXRhOworCWNoYXIgKmJ1ZiA9IHNlcnZlci0+c21hbGxidWY7CisJ dW5zaWduZWQgaW50IGJ1ZmxlbiA9IHNlcnZlci0+cGR1X3NpemUgKworCQlzZXJ2ZXItPnZhbHMt PmhlYWRlcl9wcmVhbWJsZV9zaXplOworCWJvb2wgdXNlX3JkbWFfbXIgPSBmYWxzZTsKKworCWNp ZnNfZGJnKEZZSSwgIiVzOiBtaWQ9JWxsdSBvZmZzZXQ9JWxsdSBieXRlcz0ldVxuIiwKKwkJIF9f ZnVuY19fLCBtaWQtPm1pZCwgcmRhdGEtPm9mZnNldCwgcmRhdGEtPmJ5dGVzKTsKKworCS8qCisJ ICogcmVhZCB0aGUgcmVzdCBvZiBSRUFEX1JTUCBoZWFkZXIgKHNhbnMgRGF0YSBhcnJheSksIG9y IHdoYXRldmVyIHdlCisJICogY2FuIGlmIHRoZXJlJ3Mgbm90IGVub3VnaCBkYXRhLiBBdCB0aGlz IHBvaW50LCB3ZSd2ZSByZWFkIGRvd24gdG8KKwkgKiB0aGUgTWlkLgorCSAqLworCWxlbiA9IG1p bl90KHVuc2lnbmVkIGludCwgYnVmbGVuLCBzZXJ2ZXItPnZhbHMtPnJlYWRfcnNwX3NpemUpIC0K KwkJCQkJCQlIRUFERVJfU0laRShzZXJ2ZXIpICsgMTsKKworCWxlbmd0aCA9IGNpZnNfcmVhZF9m cm9tX3NvY2tldChzZXJ2ZXIsCisJCQkJICAgICAgIGJ1ZiArIEhFQURFUl9TSVpFKHNlcnZlcikg LSAxLCBsZW4pOworCWlmIChsZW5ndGggPCAwKQorCQlyZXR1cm4gbGVuZ3RoOworCXNlcnZlci0+ dG90YWxfcmVhZCArPSBsZW5ndGg7CisKKwlpZiAoc2VydmVyLT5vcHMtPmlzX3Nlc3Npb25fZXhw aXJlZCAmJgorCSAgICBzZXJ2ZXItPm9wcy0+aXNfc2Vzc2lvbl9leHBpcmVkKGJ1ZikpIHsKKwkJ Y2lmc19yZWNvbm5lY3Qoc2VydmVyLCB0cnVlKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChz ZXJ2ZXItPm9wcy0+aXNfc3RhdHVzX3BlbmRpbmcgJiYKKwkgICAgc2VydmVyLT5vcHMtPmlzX3N0 YXR1c19wZW5kaW5nKGJ1Ziwgc2VydmVyKSkgeworCQljaWZzX2Rpc2NhcmRfcmVtYWluaW5nX2Rh dGEoc2VydmVyKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIHNldCB1cCBmaXJzdCB0d28gaW92 IGZvciBzaWduYXR1cmUgY2hlY2sgYW5kIHRvIGdldCBjcmVkaXRzICovCisJcmRhdGEtPmlvdlsw XS5pb3ZfYmFzZSA9IGJ1ZjsKKwlyZGF0YS0+aW92WzBdLmlvdl9sZW4gPSBzZXJ2ZXItPnZhbHMt PmhlYWRlcl9wcmVhbWJsZV9zaXplOworCXJkYXRhLT5pb3ZbMV0uaW92X2Jhc2UgPSBidWYgKyBz ZXJ2ZXItPnZhbHMtPmhlYWRlcl9wcmVhbWJsZV9zaXplOworCXJkYXRhLT5pb3ZbMV0uaW92X2xl biA9CisJCXNlcnZlci0+dG90YWxfcmVhZCAtIHNlcnZlci0+dmFscy0+aGVhZGVyX3ByZWFtYmxl X3NpemU7CisJY2lmc19kYmcoRllJLCAiMDogaW92X2Jhc2U9JXAgaW92X2xlbj0lenVcbiIsCisJ CSByZGF0YS0+aW92WzBdLmlvdl9iYXNlLCByZGF0YS0+aW92WzBdLmlvdl9sZW4pOworCWNpZnNf ZGJnKEZZSSwgIjE6IGlvdl9iYXNlPSVwIGlvdl9sZW49JXp1XG4iLAorCQkgcmRhdGEtPmlvdlsx XS5pb3ZfYmFzZSwgcmRhdGEtPmlvdlsxXS5pb3ZfbGVuKTsKKworCS8qIFdhcyB0aGUgU01CIHJl YWQgc3VjY2Vzc2Z1bD8gKi8KKwlyZGF0YS0+cmVzdWx0ID0gc2VydmVyLT5vcHMtPm1hcF9lcnJv cihidWYsIGZhbHNlKTsKKwlpZiAocmRhdGEtPnJlc3VsdCAhPSAwKSB7CisJCWNpZnNfZGJnKEZZ SSwgIiVzOiBzZXJ2ZXIgcmV0dXJuZWQgZXJyb3IgJWRcbiIsCisJCQkgX19mdW5jX18sIHJkYXRh LT5yZXN1bHQpOworCQkvKiBub3JtYWwgZXJyb3Igb24gcmVhZCByZXNwb25zZSAqLworCQlyZXR1 cm4gX19jaWZzX3JlYWR2X2Rpc2NhcmQoc2VydmVyLCBtaWQsIGZhbHNlKTsKKwl9CisKKwkvKiBJ cyB0aGVyZSBlbm91Z2ggdG8gZ2V0IHRvIHRoZSByZXN0IG9mIHRoZSBSRUFEX1JTUCBoZWFkZXI/ ICovCisJaWYgKHNlcnZlci0+dG90YWxfcmVhZCA8IHNlcnZlci0+dmFscy0+cmVhZF9yc3Bfc2l6 ZSkgeworCQljaWZzX2RiZyhGWUksICIlczogc2VydmVyIHJldHVybmVkIHNob3J0IGhlYWRlci4g Z290PSV1IGV4cGVjdGVkPSV6dVxuIiwKKwkJCSBfX2Z1bmNfXywgc2VydmVyLT50b3RhbF9yZWFk LAorCQkJIHNlcnZlci0+dmFscy0+cmVhZF9yc3Bfc2l6ZSk7CisJCXJkYXRhLT5yZXN1bHQgPSAt RUlPOworCQlyZXR1cm4gY2lmc19yZWFkdl9kaXNjYXJkKHNlcnZlciwgbWlkKTsKKwl9CisKKwlk YXRhX29mZnNldCA9IHNlcnZlci0+b3BzLT5yZWFkX2RhdGFfb2Zmc2V0KGJ1ZikgKworCQlzZXJ2 ZXItPnZhbHMtPmhlYWRlcl9wcmVhbWJsZV9zaXplOworCWlmIChkYXRhX29mZnNldCA8IHNlcnZl ci0+dG90YWxfcmVhZCkgeworCQkvKgorCQkgKiB3aW4yazggc29tZXRpbWVzIHNlbmRzIGFuIG9m ZnNldCBvZiAwIHdoZW4gdGhlIHJlYWQKKwkJICogaXMgYmV5b25kIHRoZSBFT0YuIFRyZWF0IGl0 IGFzIGlmIHRoZSBkYXRhIHN0YXJ0cyBqdXN0IGFmdGVyCisJCSAqIHRoZSBoZWFkZXIuCisJCSAq LworCQljaWZzX2RiZyhGWUksICIlczogZGF0YSBvZmZzZXQgKCV1KSBpbnNpZGUgcmVhZCByZXNw b25zZSBoZWFkZXJcbiIsCisJCQkgX19mdW5jX18sIGRhdGFfb2Zmc2V0KTsKKwkJZGF0YV9vZmZz ZXQgPSBzZXJ2ZXItPnRvdGFsX3JlYWQ7CisJfSBlbHNlIGlmIChkYXRhX29mZnNldCA+IE1BWF9D SUZTX1NNQUxMX0JVRkZFUl9TSVpFKSB7CisJCS8qIGRhdGFfb2Zmc2V0IGlzIGJleW9uZCB0aGUg ZW5kIG9mIHNtYWxsYnVmICovCisJCWNpZnNfZGJnKEZZSSwgIiVzOiBkYXRhIG9mZnNldCAoJXUp IGJleW9uZCBlbmQgb2Ygc21hbGxidWZcbiIsCisJCQkgX19mdW5jX18sIGRhdGFfb2Zmc2V0KTsK KwkJcmRhdGEtPnJlc3VsdCA9IC1FSU87CisJCXJldHVybiBjaWZzX3JlYWR2X2Rpc2NhcmQoc2Vy dmVyLCBtaWQpOworCX0KKworCWNpZnNfZGJnKEZZSSwgIiVzOiB0b3RhbF9yZWFkPSV1IGRhdGFf b2Zmc2V0PSV1XG4iLAorCQkgX19mdW5jX18sIHNlcnZlci0+dG90YWxfcmVhZCwgZGF0YV9vZmZz ZXQpOworCisJbGVuID0gZGF0YV9vZmZzZXQgLSBzZXJ2ZXItPnRvdGFsX3JlYWQ7CisJaWYgKGxl biA+IDApIHsKKwkJLyogcmVhZCBhbnkganVuayBiZWZvcmUgZGF0YSBpbnRvIHRoZSByZXN0IG9m IHNtYWxsYnVmICovCisJCWxlbmd0aCA9IGNpZnNfcmVhZF9mcm9tX3NvY2tldChzZXJ2ZXIsCisJ CQkJCSAgICAgICBidWYgKyBzZXJ2ZXItPnRvdGFsX3JlYWQsIGxlbik7CisJCWlmIChsZW5ndGgg PCAwKQorCQkJcmV0dXJuIGxlbmd0aDsKKwkJc2VydmVyLT50b3RhbF9yZWFkICs9IGxlbmd0aDsK Kwl9CisKKwkvKiBob3cgbXVjaCBkYXRhIGlzIGluIHRoZSByZXNwb25zZT8gKi8KKyNpZmRlZiBD T05GSUdfQ0lGU19TTUJfRElSRUNUCisJdXNlX3JkbWFfbXIgPSByZGF0YS0+bXI7CisjZW5kaWYK KwlkYXRhX2xlbiA9IHNlcnZlci0+b3BzLT5yZWFkX2RhdGFfbGVuZ3RoKGJ1ZiwgdXNlX3JkbWFf bXIpOworCWlmICghdXNlX3JkbWFfbXIgJiYgKGRhdGFfb2Zmc2V0ICsgZGF0YV9sZW4gPiBidWZs ZW4pKSB7CisJCS8qIGRhdGFfbGVuIGlzIGNvcnJ1cHQgLS0gZGlzY2FyZCBmcmFtZSAqLworCQly ZGF0YS0+cmVzdWx0ID0gLUVJTzsKKwkJcmV0dXJuIGNpZnNfcmVhZHZfZGlzY2FyZChzZXJ2ZXIs IG1pZCk7CisJfQorCisJbGVuZ3RoID0gcmRhdGEtPnJlYWRfaW50b19wYWdlcyhzZXJ2ZXIsIHJk YXRhLCBkYXRhX2xlbik7CisJaWYgKGxlbmd0aCA8IDApCisJCXJldHVybiBsZW5ndGg7CisKKwlz ZXJ2ZXItPnRvdGFsX3JlYWQgKz0gbGVuZ3RoOworCisJY2lmc19kYmcoRllJLCAidG90YWxfcmVh ZD0ldSBidWZsZW49JXUgcmVtYWluaW5nPSV1XG4iLAorCQkgc2VydmVyLT50b3RhbF9yZWFkLCBi dWZsZW4sIGRhdGFfbGVuKTsKKworCS8qIGRpc2NhcmQgYW55dGhpbmcgbGVmdCBvdmVyICovCisJ aWYgKHNlcnZlci0+dG90YWxfcmVhZCA8IGJ1ZmxlbikKKwkJcmV0dXJuIGNpZnNfcmVhZHZfZGlz Y2FyZChzZXJ2ZXIsIG1pZCk7CisKKwlkZXF1ZXVlX21pZChtaWQsIGZhbHNlKTsKKwltaWQtPnJl c3BfYnVmID0gc2VydmVyLT5zbWFsbGJ1ZjsKKwlzZXJ2ZXItPnNtYWxsYnVmID0gTlVMTDsKKwly ZXR1cm4gbGVuZ3RoOworfQpkaWZmIC0tZ2l0IGEvZnMvY2lmcy94YXR0ci5jIGIvZnMvY2lmcy94 YXR0ci5jCmluZGV4IDlkNDg2ZmJiZmJiZC4uOTk4ZmE1MWY5YjY4IDEwMDY0NAotLS0gYS9mcy9j aWZzL3hhdHRyLmMKKysrIGIvZnMvY2lmcy94YXR0ci5jCkBAIC0yMDEsNiArMjAxLDcgQEAgc3Rh dGljIGludCBjaWZzX3hhdHRyX3NldChjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqaGFuZGxl ciwKIAkJYnJlYWs7CiAJfQogCisjaWZkZWYgQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVH QUNZCiAJY2FzZSBYQVRUUl9BQ0xfQUNDRVNTOgogI2lmZGVmIENPTkZJR19DSUZTX1BPU0lYCiAJ CWlmICghdmFsdWUpCkBAIC0yMjQsNiArMjI1LDcgQEAgc3RhdGljIGludCBjaWZzX3hhdHRyX3Nl dChjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqaGFuZGxlciwKIAkJCQljaWZzX3JlbWFwKGNp ZnNfc2IpKTsKICNlbmRpZiAgLyogQ09ORklHX0NJRlNfUE9TSVggKi8KIAkJYnJlYWs7CisjZW5k aWYgLyogQ09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAJfQogCiBvdXQ6CkBA IC0zNjQsNyArMzY2LDcgQEAgc3RhdGljIGludCBjaWZzX3hhdHRyX2dldChjb25zdCBzdHJ1Y3Qg eGF0dHJfaGFuZGxlciAqaGFuZGxlciwKIAkJfQogCQlicmVhazsKIAl9Ci0KKyNpZmRlZiBDT05G SUdfQ0lGU19BTExPV19JTlNFQ1VSRV9MRUdBQ1kKIAljYXNlIFhBVFRSX0FDTF9BQ0NFU1M6CiAj aWZkZWYgQ09ORklHX0NJRlNfUE9TSVgKIAkJaWYgKHNiLT5zX2ZsYWdzICYgU0JfUE9TSVhBQ0wp CkBAIC0zODQsNiArMzg2LDcgQEAgc3RhdGljIGludCBjaWZzX3hhdHRyX2dldChjb25zdCBzdHJ1 Y3QgeGF0dHJfaGFuZGxlciAqaGFuZGxlciwKIAkJCQljaWZzX3JlbWFwKGNpZnNfc2IpKTsKICNl bmRpZiAgLyogQ09ORklHX0NJRlNfUE9TSVggKi8KIAkJYnJlYWs7CisjZW5kaWYgLyogaWZkZWYg Q09ORklHX0NJRlNfQUxMT1dfSU5TRUNVUkVfTEVHQUNZICovCiAJfQogCiAJLyogV2UgY291bGQg YWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIHN0cmVhbXMgaWUK --000000000000342abd05e5281d5c--