From owner-freebsd-net@freebsd.org Tue Aug 29 15:41:25 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C5FE4DDEA0C for ; Tue, 29 Aug 2017 15:41:25 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mx1.freebsd.org (Postfix) with ESMTP id 79F9266F36 for ; Tue, 29 Aug 2017 15:41:25 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id C03496046F; Tue, 29 Aug 2017 15:41:24 +0000 (UTC) Date: Tue, 29 Aug 2017 15:41:24 +0000 To: freebsd-net@freebsd.org From: "ale (Alex Dupre)" Reply-to: D9270+325+bbd470fd257eef1b@reviews.freebsd.org Subject: [Differential] D9270: Add support for user-supplied Host-Uniq tag and handle PADM messages in Netgraph PPPoE Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , Thread-Topic: D9270: Add support for user-supplied Host-Uniq tag in Netgraph PPPoE X-Herald-Rules: <28>, <8> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: NTZkNjQzYWQxOGQ3MGJlZTIzOGZhZmQ4NGNmIFmliyQ= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_be9a246fb2f00ab577fbcdf758dfb5d1" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.23 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Aug 2017 15:41:25 -0000 --b1_be9a246fb2f00ab577fbcdf758dfb5d1 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 YWxlIHVwZGF0ZWQgdGhpcyByZXZpc2lvbiB0byBEaWZmIDMyNDg3LgphbGUgYWRkZWQgYSBjb21t ZW50LgoKCiAgVGhlIHVwZGF0ZWQgcGF0Y2ggZml4ZXMgdGhlIHJlcG9ydGVkIGlzc3VlIG9uIG11 bHRpcGxlIFBBRE8gcmVwbGllcyBhZnRlciB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBhbHJlYWR5IGVz dGFibGlzaGVkLgoKUkVQT1NJVE9SWQogIHJTIEZyZWVCU0Qgc3JjIHJlcG9zaXRvcnkKCkNIQU5H RVMgU0lOQ0UgTEFTVCBVUERBVEUKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDkyNzA/ dnM9MjcwNTkmaWQ9MzI0ODcKClJFVklTSU9OIERFVEFJTAogIGh0dHBzOi8vcmV2aWV3cy5mcmVl YnNkLm9yZy9EOTI3MAoKQUZGRUNURUQgRklMRVMKICBzaGFyZS9tYW4vbWFuNC9uZ19wcHBvZS40 CiAgc3lzL25ldGdyYXBoL25nX3BwcG9lLmMKICBzeXMvbmV0Z3JhcGgvbmdfcHBwb2UuaAoKRU1B SUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFu ZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBhbGUsICNtYW5wYWdlcywgd2Jsb2NrLCAjbmV0d29y aywganVsaWFuLCBtYXYsIGFkcmlhbiwgZ2xlYml1cwpDYzogZ2FyZ2EsIGV1Z2VuX2dyb3NiZWlu Lm5ldCwgZnJhbmNvX29wbnNlbnNlLm9yZywgbWxlb25lODdfaG90bWFpbC5jb20sIGdsZWJpdXMs IHdibG9jaywgbWF2LCBwb29scm9vbV9nbWFpbC5jb20sIG1hbmRyZWUsIGltcCwgZnJlZWJzZC1u ZXQtbGlzdAo= --b1_be9a246fb2f00ab577fbcdf758dfb5d1 Content-Type: text/x-patch; charset=utf-8; name="D9270.32487.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D9270.32487.patch" ZGlmZiAtLWdpdCBhL3N5cy9uZXRncmFwaC9uZ19wcHBvZS5oIGIvc3lzL25ldGdyYXBoL25nX3Bw cG9lLmgKLS0tIGEvc3lzL25ldGdyYXBoL25nX3BwcG9lLmgKKysrIGIvc3lzL25ldGdyYXBoL25n X3BwcG9lLmgKQEAgLTUyLDggKzUyLDEwIEBACiAKICNkZWZpbmUgTkdNX1BQUE9FX0NPT0tJRQkJ MTA4OTg5MzA3MgogI2RlZmluZSBOR01fUFBQT0VfU0VUTUFYUF9DT09LSUUJMTQ0MTYyNDMyMgor I2RlZmluZSBOR01fUFBQT0VfUEFETV9DT09LSUUJCTE0ODg0MDU4MjIKIAogI2RlZmluZQlQUFBP RV9TRVJWSUNFX05BTUVfU0laRQkJNjQgLyogZm9yIG5vdyAqLworI2RlZmluZQlQUFBPRV9QQURN X1ZBTFVFX1NJWkUJCTEyOCAvKiBmb3Igbm93ICovCiAKIC8qIEhvb2sgbmFtZXMgKi8KICNkZWZp bmUgTkdfUFBQT0VfSE9PS19FVEhFUk5FVAkiZXRoZXJuZXQiCkBAIC04NCw3ICs4NiwxMSBAQAog CU5HTV9QUFBPRV9TRVRNT0RFICA9IDEyLCAvKiBzZXQgdG8gc3RhbmRhcmQgb3IgY29tcGF0IG1v ZGVzICovCiAJTkdNX1BQUE9FX0dFVE1PREUgID0gMTMsIC8qIHNlZSBjdXJyZW50IG1vZGUgKi8K IAlOR01fUFBQT0VfU0VURU5BRERSID0gMTQsIC8qIHNldCBFdGhlcm5ldCBhZGRyZXNzICovCi0J TkdNX1BQUE9FX1NFVE1BWFAgID0gMTUgLyogU2V0IFBQUC1NYXgtUGF5bG9hZCB2YWx1ZSAqLwor CU5HTV9QUFBPRV9TRVRNQVhQICAgPSAxNSwgLyogU2V0IFBQUC1NYXgtUGF5bG9hZCB2YWx1ZSAq LworCU5HTV9QUFBPRV9TRU5EX0hVUkwgPSAxNiwgLyogU2VuZCBQQURNIEhVUkwgbWVzc2FnZSAq LworCU5HTV9QUFBPRV9IVVJMICAgICAgPSAxNywgLyogSFVSTCBmb3IgaW5mb3JtYXRpb25hbCBw dXJwb3NlcyAqLworCU5HTV9QUFBPRV9TRU5EX01PVE0gPSAxOCwgLyogU2VuZCBQQURNIE1PVE0g bWVzc2FnZSAqLworCU5HTV9QUFBPRV9NT1RNICAgICAgPSAxOSAgLyogTU9UTSBmb3IgaW5mb3Jt YXRpb25hbCBwdXJwb3NlcyAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x NTcsNiArMTYzLDEzIEBACiAJdWludDE2X3QJZGF0YTsKIH07CiAKKy8qCisgKiBUaGlzIHN0cnVj dHVyZSBpcyB1c2VkIHRvIHNlbmQgUEFETSBtZXNzYWdlcyBmcm9tIHNlcnZlciB0byBjbGllbnQu CisgKi8KK3N0cnVjdCBuZ3BwcG9lX3BhZG0geworCWNoYXIJbXNnW1BQUE9FX1BBRE1fVkFMVUVf U0laRV07Cit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIENvbnN0YW50cyBhbmQgZGVmaW5pdGlvbnMg c3BlY2lmaWMgdG8gcHBwb2UKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE3MSw2ICsxODQsNyBAQAogI2Rl ZmluZSBQQURSX0NPREUJMHgxOQogI2RlZmluZSBQQURTX0NPREUJMHg2NQogI2RlZmluZSBQQURU X0NPREUJMHhhNworI2RlZmluZSBQQURNX0NPREUJMHhkMwogCiAvKiBUYWcgaWRlbnRpZmllcnMg Ki8KICNpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU4KQEAgLTE4MSw2ICsxOTUsOCBAQAogI2Rl ZmluZSBQVFRfQUNfQ09PS0lFCSgweDAxMDQpCiAjZGVmaW5lIFBUVF9WRU5ET1IgCSgweDAxMDUp CiAjZGVmaW5lIFBUVF9SRUxBWV9TSUQJKDB4MDExMCkKKyNkZWZpbmUgUFRUX0hVUkwJKDB4MDEx MSkJLyogUFBQb0UgRXh0ZW5zaW9ucyAoQ0FSUkVMKSAqLworI2RlZmluZSBQVFRfTU9UTQkoMHgw MTEyKQkvKiBQUFBvRSBFeHRlbnNpb25zIChDQVJSRUwpICovCiAjZGVmaW5lCVBUVF9NQVhfUEFZ TAkoMHgwMTIwKQkvKiBQUFAtTWF4LVBheWxvYWQgKFJGQzQ2MzgpICovCiAjZGVmaW5lIFBUVF9T UlZfRVJSICAgICAoMHgwMjAxKQogI2RlZmluZSBQVFRfU1lTX0VSUiAgCSgweDAyMDIpCkBAIC0x OTgsNiArMjE0LDggQEAKICNkZWZpbmUgUFRUX0FDX0NPT0tJRQkoMHgwNDAxKQogI2RlZmluZSBQ VFRfVkVORE9SIAkoMHgwNTAxKQogI2RlZmluZSBQVFRfUkVMQVlfU0lECSgweDEwMDEpCisjZGVm aW5lIFBUVF9IVVJMCSgweDExMDEpCS8qIFBQUG9FIEV4dGVuc2lvbnMgKENBUlJFTCkgKi8KKyNk ZWZpbmUgUFRUX01PVE0JKDB4MTIwMSkJLyogUFBQb0UgRXh0ZW5zaW9ucyAoQ0FSUkVMKSAqLwog I2RlZmluZQlQVFRfTUFYX1BBWUwJKDB4MjAwMSkJLyogUFBQLU1heC1QYXlsb2FkIChSRkM0NjM4 KSAqLwogI2RlZmluZSBQVFRfU1JWX0VSUiAgICAgKDB4MDEwMikKICNkZWZpbmUgUFRUX1NZU19F UlIgIAkoMHgwMjAyKQpkaWZmIC0tZ2l0IGEvc3lzL25ldGdyYXBoL25nX3BwcG9lLmMgYi9zeXMv bmV0Z3JhcGgvbmdfcHBwb2UuYwotLS0gYS9zeXMvbmV0Z3JhcGgvbmdfcHBwb2UuYworKysgYi9z eXMvbmV0Z3JhcGgvbmdfcHBwb2UuYwpAQCAtMTc1LDYgKzE3NSwyMCBAQAogCSAgJm5nX3BhcnNl X3VpbnQxNl90eXBlLAogCSAgTlVMTAogCX0sCisgICAgICAgIHsKKwkgIE5HTV9QUFBPRV9DT09L SUUsCisJICBOR01fUFBQT0VfU0VORF9IVVJMLAorCSAgInNlbmRfaHVybCIsCisJICAmbmdwcHBv ZV9pbml0X2RhdGFfc3RhdGVfdHlwZSwKKwkgIE5VTEwKKyAgICAgICAgfSwKKyAgICAgICAgewor CSAgTkdNX1BQUE9FX0NPT0tJRSwKKwkgIE5HTV9QUFBPRV9TRU5EX01PVE0sCisJICAic2VuZF9t b3RtIiwKKwkgICZuZ3BwcG9lX2luaXRfZGF0YV9zdGF0ZV90eXBlLAorCSAgTlVMTAorICAgICAg ICB9LAogCXsgMCB9CiB9OwogCkBAIC0yMjYsOSArMjQwLDExIEBACiAJY29uc3Qgc3RydWN0IHBw cG9lX3RhZwkqdGFnc1tOVU1UQUdTXTsKIAl1X2ludAkJCXNlcnZpY2VfbGVuOwogCXVfaW50CQkJ YWNfbmFtZV9sZW47CisJdV9pbnQJCQlob3N0X3VuaXFfbGVuOwogCiAJc3RydWN0IGRhdGF0YWcJ CXNlcnZpY2U7CiAJc3RydWN0IGRhdGF0YWcJCWFjX25hbWU7CisJc3RydWN0IGRhdGF0YWcJCWhv c3RfdW5pcTsKIH07CiB0eXBlZGVmIHN0cnVjdCBzZXNzX25lZyAqbmVncDsKIApAQCAtNTg5LDE4 ICs2MDUsNDMgQEAKIHBwcG9lX2ZpbmR1bmlxKG5vZGVfcCBub2RlLCBjb25zdCBzdHJ1Y3QgcHBw b2VfdGFnICp0YWcpCiB7CiAJaG9va19wCWhvb2sgPSBOVUxMOwotCXVuaW9uIHVuaXEgdW5pcTsK KwlzZXNzcAlzcDsKIAotCWJjb3B5KHRhZyArIDEsIHVuaXEuYnl0ZXMsIHNpemVvZih2b2lkICop KTsKIAkvKiBDeWNsZSB0aHJvdWdoIGFsbCBrbm93biBob29rcy4gKi8KIAlMSVNUX0ZPUkVBQ0go aG9vaywgJm5vZGUtPm5kX2hvb2tzLCBoa19ob29rcykgewogCQkvKiBTa2lwIGFueSBub25zZXNz aW9uIGhvb2suICovCiAJCWlmIChOR19IT09LX1BSSVZBVEUoaG9vaykgPT0gTlVMTCkKIAkJCWNv bnRpbnVlOwotCQlpZiAodW5pcS5wb2ludGVyID09IE5HX0hPT0tfUFJJVkFURShob29rKSkKKwkJ c3AgPSBOR19IT09LX1BSSVZBVEUoaG9vayk7CisJCS8qIFNraXAgYWxyZWFkeSBjb25uZWN0ZWQg c2Vzc2lvbnMuICovCisJCWlmIChzcC0+bmVnID09IE5VTEwpCisJCQljb250aW51ZTsKKwkJaWYg KHNwLT5uZWctPmhvc3RfdW5pcV9sZW4gPT0gbnRvaHModGFnLT50YWdfbGVuKSAmJgorCQkgICAg YmNtcChzcC0+bmVnLT5ob3N0X3VuaXEuZGF0YSwgKGNvbnN0IGNoYXIgKikodGFnICsgMSksCisJ CSAgICAgc3AtPm5lZy0+aG9zdF91bmlxX2xlbikgPT0gMCkKIAkJCWJyZWFrOwogCX0KLQlDVFIz KEtUUl9ORVQsICIlMjBzOiBtYXRjaGVkICVwIGZvciAlcCIsIF9fZnVuY19fLCBob29rLCB1bmlx LnBvaW50ZXIpOworCUNUUjMoS1RSX05FVCwgIiUyMHM6IG1hdGNoZWQgJXAgZm9yICVwIiwgX19m dW5jX18sIGhvb2ssIHNwKTsKKworCXJldHVybiAoaG9vayk7Cit9CisKK3N0YXRpYyBob29rX3AK K3BwcG9lX2ZpbmRjb29raWUobm9kZV9wIG5vZGUsIGNvbnN0IHN0cnVjdCBwcHBvZV90YWcgKnRh ZykKK3sKKwlob29rX3AJaG9vayA9IE5VTEw7CisJdW5pb24gdW5pcSBjb29raWU7CisKKwliY29w eSh0YWcgKyAxLCBjb29raWUuYnl0ZXMsIHNpemVvZih2b2lkICopKTsKKwkvKiBDeWNsZSB0aHJv dWdoIGFsbCBrbm93biBob29rcy4gKi8KKwlMSVNUX0ZPUkVBQ0goaG9vaywgJm5vZGUtPm5kX2hv b2tzLCBoa19ob29rcykgeworCQkvKiBTa2lwIGFueSBub25zZXNzaW9uIGhvb2suICovCisJCWlm IChOR19IT09LX1BSSVZBVEUoaG9vaykgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCQlpZiAoY29v a2llLnBvaW50ZXIgPT0gTkdfSE9PS19QUklWQVRFKGhvb2spKQorCQkJYnJlYWs7CisJfQorCUNU UjMoS1RSX05FVCwgIiUyMHM6IG1hdGNoZWQgJXAgZm9yICVwIiwgX19mdW5jX18sIGhvb2ssIGNv b2tpZS5wb2ludGVyKTsKIAogCXJldHVybiAoaG9vayk7CiB9CkBAIC03NDQsMTcgKzc4NSwyOSBA QAogCQljYXNlIE5HTV9QUFBPRV9MSVNURU46CiAJCWNhc2UgTkdNX1BQUE9FX09GRkVSOgogCQlj YXNlIE5HTV9QUFBPRV9TRVJWSUNFOgorCQljYXNlIE5HTV9QUFBPRV9TRU5EX0hVUkw6CisJCWNh c2UgTkdNX1BQUE9FX1NFTkRfTU9UTToKIAkJCW91cm1zZyA9IChzdHJ1Y3QgbmdwcHBvZV9pbml0 X2RhdGEgKiltc2ctPmRhdGE7CiAJCQlpZiAobXNnLT5oZWFkZXIuYXJnbGVuIDwgc2l6ZW9mKCpv dXJtc2cpKSB7CiAJCQkJbG9nKExPR19FUlIsICJuZ19wcHBvZVsleF06IGluaXQgZGF0YSB0b28g IgogCQkJCSAgICAic21hbGxcbiIsIG5vZGUtPm5kX0lEKTsKIAkJCQlMRUFWRShFTVNHU0laRSk7 CiAJCQl9Ci0JCQlpZiAobXNnLT5oZWFkZXIuYXJnbGVuIC0gc2l6ZW9mKCpvdXJtc2cpID4KLQkJ CSAgICBQUFBPRV9TRVJWSUNFX05BTUVfU0laRSkgewotCQkJCWxvZyhMT0dfRVJSLCAibmdfcHBw b2VbJXhdOiBzZXJ2aWNlIG5hbWUgIgotCQkJCSAgICAidG9vIGJpZ1xuIiwgbm9kZS0+bmRfSUQp OwotCQkJCUxFQVZFKEVNU0dTSVpFKTsKKwkJCWlmIChtc2ctPmhlYWRlci5jbWQgPT0gTkdNX1BQ UE9FX1NFTkRfSFVSTCB8fAorCQkJICAgIG1zZy0+aGVhZGVyLmNtZCA9PSBOR01fUFBQT0VfU0VO RF9NT1RNKSB7CisJCQkJaWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiAtIHNpemVvZigqb3VybXNnKSA+ CisJCQkJICAgIFBQUE9FX1BBRE1fVkFMVUVfU0laRSkgeworCQkJCQlsb2coTE9HX0VSUiwgIm5n X3BwcG9lWyV4XTogbWVzc2FnZSAiCisJCQkJCSAgICAidG9vIGJpZ1xuIiwgbm9kZS0+bmRfSUQp OworCQkJCQlMRUFWRShFTVNHU0laRSk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlpZiAobXNn LT5oZWFkZXIuYXJnbGVuIC0gc2l6ZW9mKCpvdXJtc2cpID4KKwkJCQkgICAgUFBQT0VfU0VSVklD RV9OQU1FX1NJWkUpIHsKKwkJCQkJbG9nKExPR19FUlIsICJuZ19wcHBvZVsleF06IHNlcnZpY2Ug bmFtZSAiCisJCQkJCSAgICAidG9vIGJpZ1xuIiwgbm9kZS0+bmRfSUQpOworCQkJCQlMRUFWRShF TVNHU0laRSk7CisJCQkJfQogCQkJfQogCQkJaWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiAtIHNpemVv Zigqb3VybXNnKSA8CiAJCQkgICAgb3VybXNnLT5kYXRhX2xlbikgewpAQCAtNzk0LDYgKzg0Nywy MCBAQAogCQkJaWYgKG1zZy0+aGVhZGVyLmNtZCA9PSBOR01fUFBQT0VfU0VSVklDRSkKIAkJCQli cmVhazsKIAorCQkJLyoKKwkJCSAqIFBBRE0gbWVzc2FnZXMgYXJlIHNldCB1cCBvbiBhY3RpdmUg c2Vzc2lvbnMuCisJCQkgKi8KKwkJCWlmIChtc2ctPmhlYWRlci5jbWQgPT0gTkdNX1BQUE9FX1NF TkRfSFVSTCB8fAorCQkJICAgIG1zZy0+aGVhZGVyLmNtZCA9PSBOR01fUFBQT0VfU0VORF9NT1RN KSB7CisJCQkJaWYgKHNwLT5zdGF0ZSAhPSBQUFBPRV9ORVdDT05ORUNURUQgJiYKKwkJCQkgICAg c3AtPnN0YXRlICE9IFBQUE9FX0NPTk5FQ1RFRCkgeworCQkJCQlsb2coTE9HX05PVElDRSwgIm5n X3BwcG9lWyV4XTogc2Vzc2lvbiBpcyBub3QgIgorCQkJCQkgICAgImFjdGl2ZVxuIiwgbm9kZS0+ bmRfSUQpOworCQkJCQlMRUFWRShFSVNDT05OKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisK IAkJCWlmIChzcC0+c3RhdGUgIT0gUFBQT0VfU05PTkUpIHsKIAkJCQlsb2coTE9HX05PVElDRSwg Im5nX3BwcG9lWyV4XTogU2Vzc2lvbiBhbHJlYWR5ICIKIAkJCQkgICAgImFjdGl2ZVxuIiwgbm9k ZS0+bmRfSUQpOwpAQCAtODQ4LDI4ICs5MTUsNzIgQEAKIAkJCSAqIENoZWNrIHRoZSBob29rIGV4 aXN0cyBhbmQgaXMgVW5pbml0aWFsaXNlZC4KIAkJCSAqIFNlbmQgYSBQQURJIHJlcXVlc3QsIGFu ZCBzdGFydCB0aGUgdGltZW91dCBsb2dpYy4KIAkJCSAqIFN0b3JlIHRoZSBvcmlnaW5hdG9yIG9m IHRoaXMgbWVzc2FnZSBzbyB3ZSBjYW4gc2VuZAotCQkJICogYSBzdWNjZXNzIG9mIGZhaWwgbWVz c2FnZSB0byB0aGVtIGxhdGVyLgorCQkJICogYSBzdWNjZXNzIG9yIGZhaWwgbWVzc2FnZSB0byB0 aGVtIGxhdGVyLgogCQkJICogTW92ZSB0aGUgc2Vzc2lvbiB0byBTSU5JVC4KIAkJCSAqIFNldCB1 cCB0aGUgc2Vzc2lvbiB0byB0aGUgY29ycmVjdCBzdGF0ZSBhbmQKIAkJCSAqIHN0YXJ0IGl0Lgog CQkJICovCi0JCQlpbnQJaSwgYWNubGVuID0gMCwgYWNuc2VwID0gMCwgc3J2bGVuOworCQkJaW50 CWFjbnBvcywgYWNubGVuID0gMCwgYWNuc2VwID0gMDsKKwkJCWludAlodXBvcywgaHVsZW4gPSAw LCBodXNlcCA9IDA7CisJCQlpbnQJaSwgc3J2cG9zLCBzcnZsZW47CisJCQlhY25wb3MgPSAwOwog CQkJZm9yIChpID0gMDsgaSA8IG91cm1zZy0+ZGF0YV9sZW47IGkrKykgewogCQkJCWlmIChvdXJt c2ctPmRhdGFbaV0gPT0gJ1xcJykgewogCQkJCQlhY25sZW4gPSBpOwogCQkJCQlhY25zZXAgPSAx OwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9Ci0JCQlzcnZsZW4gPSBvdXJtc2ctPmRhdGFfbGVu IC0gYWNubGVuIC0gYWNuc2VwOworCQkJaHVwb3MgPSBhY25sZW4gKyBhY25zZXA7CisJCQlmb3Ig KGkgPSBodXBvczsgaSA8IG91cm1zZy0+ZGF0YV9sZW47IGkrKykgeworCQkJCWlmIChvdXJtc2ct PmRhdGFbaV0gPT0gJ3wnKSB7CisJCQkJCWh1bGVuID0gaSAtIGh1cG9zOworCQkJCQlodXNlcCA9 IDE7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCXNydnBvcyA9IGh1cG9zICsgaHVsZW4g KyBodXNlcDsKKwkJCXNydmxlbiA9IG91cm1zZy0+ZGF0YV9sZW4gLSBzcnZwb3M7CiAKLQkJCWJj b3B5KG91cm1zZy0+ZGF0YSwgbmVnLT5hY19uYW1lLmRhdGEsIGFjbmxlbik7CisJCQliY29weShv dXJtc2ctPmRhdGEgKyBhY25wb3MsIG5lZy0+YWNfbmFtZS5kYXRhLCBhY25sZW4pOwogCQkJbmVn LT5hY19uYW1lX2xlbiA9IGFjbmxlbjsKIAorCQkJbmVnLT5ob3N0X3VuaXEuaGRyLnRhZ190eXBl ID0gUFRUX0hPU1RfVU5JUTsKKwkJCWlmIChodWxlbiA9PSAwKSB7CisJCQkJLyogTm90IHByb3Zp ZGVkLCBnZW5lcmF0ZSBvbmUgKi8KKwkJCQluZWctPmhvc3RfdW5pcS5oZHIudGFnX2xlbiA9IGh0 b25zKHNpemVvZihzcCkpOworCQkJCWJjb3B5KCZzcCwgbmVnLT5ob3N0X3VuaXEuZGF0YSwgc2l6 ZW9mKHNwKSk7CisJCQkJbmVnLT5ob3N0X3VuaXFfbGVuID0gc2l6ZW9mKHNwKTsKKwkJCX0gZWxz ZSBpZiAoaHVsZW4gPiAyICYmIG91cm1zZy0+ZGF0YVtodXBvc10gPT0gJzAnICYmCisJCQkgIG91 cm1zZy0+ZGF0YVtodXBvcyArIDFdID09ICd4JyAmJiBodWxlbiAlIDIgPT0gMCkgeworCQkJCS8q IEhleCBlbmNvZGVkICovCisJCQkJc3RhdGljIGNvbnN0IGNoYXIgaGV4ZGlnWzE2XSA9ICIwMTIz NDU2Nzg5YWJjZGVmIjsKKwkJCQlpbnQgajsKKworCQkJCW5lZy0+aG9zdF91bmlxLmhkci50YWdf bGVuID0gaHRvbnMoKHVpbnQxNl90KShodWxlbiAvIDIgLSAxKSk7CisJCQkJZm9yIChpID0gMDsg aSA8IGh1bGVuIC0gMjsgaSsrKSB7CisJCQkJCWZvciAoaiA9IDA7CisJCQkJCSAgICAgaiA8IDE2 ICYmCisJCQkJCSAgICAgb3VybXNnLT5kYXRhW2h1cG9zICsgMiArIGldICE9IGhleGRpZ1tqXTsK KwkJCQkJICAgICBqKyspOworCQkJCQlpZiAoaiA9PSAxNikKKwkJCQkJCUxFQVZFKEVJTlZBTCk7 CisJCQkJCWlmIChpICUgMiA9PSAwKQorCQkJCQkJbmVnLT5ob3N0X3VuaXEuZGF0YVtpIC8gMl0g PSBqIDw8IDQ7CisJCQkJCWVsc2UKKwkJCQkJCW5lZy0+aG9zdF91bmlxLmRhdGFbaSAvIDJdIHw9 IGo7CisJCQkJfQorCQkJCW5lZy0+aG9zdF91bmlxX2xlbiA9IGh1bGVuIC8gMiAtIDE7CisJCQl9 IGVsc2UgeworCQkJCS8qIFBsYWluIHN0cmluZyAqLworCQkJCW5lZy0+aG9zdF91bmlxLmhkci50 YWdfbGVuID0gaHRvbnMoKHVpbnQxNl90KWh1bGVuKTsKKwkJCQliY29weShvdXJtc2ctPmRhdGEg KyBodXBvcywgbmVnLT5ob3N0X3VuaXEuZGF0YSwgaHVsZW4pOworCQkJCW5lZy0+aG9zdF91bmlx X2xlbiA9IGh1bGVuOworCQkJfQorCiAJCQluZWctPnNlcnZpY2UuaGRyLnRhZ190eXBlID0gUFRU X1NSVl9OQU1FOwogCQkJbmVnLT5zZXJ2aWNlLmhkci50YWdfbGVuID0gaHRvbnMoKHVpbnQxNl90 KXNydmxlbik7Ci0JCQliY29weShvdXJtc2ctPmRhdGEgKyBhY25sZW4gKyBhY25zZXAsCi0JCQkg ICAgbmVnLT5zZXJ2aWNlLmRhdGEsIHNydmxlbik7CisJCQliY29weShvdXJtc2ctPmRhdGEgKyBz cnZwb3MsIG5lZy0+c2VydmljZS5kYXRhLCBzcnZsZW4pOwogCQkJbmVnLT5zZXJ2aWNlX2xlbiA9 IHNydmxlbjsKIAkJCXBwcG9lX3N0YXJ0KHNwKTsKIAkJCWJyZWFrOwpAQCAtODc5LDcgKzk5MCw3 IEBACiAJCQkgKiBDaGVjayB0aGUgaG9vayBleGlzdHMgYW5kIGlzIFVuaW5pdGlhbGlzZWQuCiAJ CQkgKiBJbnN0YWxsIHRoZSBzZXJ2aWNlIG1hdGNoaW5nIHN0cmluZy4KIAkJCSAqIFN0b3JlIHRo ZSBvcmlnaW5hdG9yIG9mIHRoaXMgbWVzc2FnZSBzbyB3ZSBjYW4gc2VuZAotCQkJICogYSBzdWNj ZXNzIG9mIGZhaWwgbWVzc2FnZSB0byB0aGVtIGxhdGVyLgorCQkJICogYSBzdWNjZXNzIG9yIGZh aWwgbWVzc2FnZSB0byB0aGVtIGxhdGVyLgogCQkJICogTW92ZSB0aGUgaG9vayB0byAnTElTVEVO SU5HJwogCQkJICovCiAJCQluZWctPnNlcnZpY2UuaGRyLnRhZ190eXBlID0gUFRUX1NSVl9OQU1F OwpAQCAtMTAxOSw2ICsxMTMwLDkyIEBACiAJCQlwcml2cC0+bWF4X3BheWxvYWQuaGRyLnRhZ19s ZW4gPSBodG9ucyhzaXplb2YodWludDE2X3QpKTsKIAkJCXByaXZwLT5tYXhfcGF5bG9hZC5kYXRh ID0gaHRvbnMoKigodWludDE2X3QgKiltc2ctPmRhdGEpKTsKIAkJCWJyZWFrOworCQljYXNlIE5H TV9QUFBPRV9TRU5EX0hVUkw6CisJCSAgICB7CisJCQlzdHJ1Y3QgbWJ1ZiAqbTsKKworCQkJLyog R2VuZXJhdGUgYSBwYWNrZXQgb2YgdGhhdCB0eXBlLiAqLworCQkJbSA9IG1fZ2V0aGRyKE1fTk9X QUlULCBNVF9EQVRBKTsKKwkJCWlmIChtID09IE5VTEwpCisJCQkJbG9nKExPR19OT1RJQ0UsICJu Z19wcHBvZVsleF06IHNlc3Npb24gb3V0IG9mICIKKwkJCQkgICAgIm1idWZzXG4iLCBub2RlLT5u ZF9JRCk7CisJCQllbHNlIHsKKwkJCQlzdHJ1Y3QgcHBwb2VfZnVsbF9oZHIgKndoOworCQkJCXN0 cnVjdCBwcHBvZV90YWcgKnRhZzsKKwkJCQlpbnQgICAgIGVycm9yID0gMDsKKworCQkJCXdoID0g bXRvZChtLCBzdHJ1Y3QgcHBwb2VfZnVsbF9oZHIgKik7CisJCQkJYmNvcHkoJnNwLT5wa3RfaGRy LCB3aCwgc2l6ZW9mKCp3aCkpOworCisJCQkJLyogUmV2ZXJ0IHRoZSBzdG9yZWQgaGVhZGVyIHRv IERJU0MvUEFETSBtb2RlLiAqLworCQkJCXdoLT5waC5jb2RlID0gUEFETV9DT0RFOworCQkJCS8q CisJCQkJICogQ29uZmlndXJlIGV0aGVydHlwZSBkZXBlbmRpbmcgb24gd2hhdAorCQkJCSAqIHdh cyB1c2VkIGR1cmluZyBzZXNzaW9ucyBzdGFnZS4KKwkJCQkgKi8KKwkJCQlpZiAod2gtPmVoLmV0 aGVyX3R5cGUgPT0KKwkJCQkgICAgRVRIRVJUWVBFX1BQUE9FXzNDT01fU0VTUykKKwkJCQkJd2gt PmVoLmV0aGVyX3R5cGUgPSBFVEhFUlRZUEVfUFBQT0VfM0NPTV9ESVNDOworCQkJCWVsc2UKKwkJ CQkJd2gtPmVoLmV0aGVyX3R5cGUgPSBFVEhFUlRZUEVfUFBQT0VfRElTQzsKKwkJCQkvKgorCQkJ CSAqIEFkZCBQQURNIG1lc3NhZ2UgYW5kIGFkanVzdCBzaXplcy4KKwkJCQkgKi8KKwkJCQl0YWcg PSAodm9pZCAqKSgmd2gtPnBoICsgMSk7CisJCQkJdGFnLT50YWdfdHlwZSA9IFBUVF9IVVJMOwor CQkJCXRhZy0+dGFnX2xlbiA9IGh0b25zKG91cm1zZy0+ZGF0YV9sZW4pOworCQkJCXN0cm5jcHko KGNoYXIgKikodGFnICsgMSksIG91cm1zZy0+ZGF0YSwgb3VybXNnLT5kYXRhX2xlbik7CisJCQkJ bS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBzaXplb2YoKndoKSArIHNpemVvZigqdGFnKSAr CisJCQkJICAgIG91cm1zZy0+ZGF0YV9sZW47CisJCQkJd2gtPnBoLmxlbmd0aCA9IGh0b25zKHNp emVvZigqdGFnKSArIG91cm1zZy0+ZGF0YV9sZW4pOworCQkJCU5HX1NFTkRfREFUQV9PTkxZKGVy cm9yLAorCQkJCSAgICBwcml2cC0+ZXRoZXJuZXRfaG9vaywgbSk7CisJCQl9CisJCQlicmVhazsK KwkJICAgIH0KKwkJY2FzZSBOR01fUFBQT0VfU0VORF9NT1RNOgorCQkgICAgeworCQkJc3RydWN0 IG1idWYgKm07CisKKwkJCS8qIEdlbmVyYXRlIGEgcGFja2V0IG9mIHRoYXQgdHlwZS4gKi8KKwkJ CW0gPSBtX2dldGhkcihNX05PV0FJVCwgTVRfREFUQSk7CisJCQlpZiAobSA9PSBOVUxMKQorCQkJ CWxvZyhMT0dfTk9USUNFLCAibmdfcHBwb2VbJXhdOiBzZXNzaW9uIG91dCBvZiAiCisJCQkJICAg ICJtYnVmc1xuIiwgbm9kZS0+bmRfSUQpOworCQkJZWxzZSB7CisJCQkJc3RydWN0IHBwcG9lX2Z1 bGxfaGRyICp3aDsKKwkJCQlzdHJ1Y3QgcHBwb2VfdGFnICp0YWc7CisJCQkJaW50ICAgICBlcnJv ciA9IDA7CisKKwkJCQl3aCA9IG10b2QobSwgc3RydWN0IHBwcG9lX2Z1bGxfaGRyICopOworCQkJ CWJjb3B5KCZzcC0+cGt0X2hkciwgd2gsIHNpemVvZigqd2gpKTsKKworCQkJCS8qIFJldmVydCB0 aGUgc3RvcmVkIGhlYWRlciB0byBESVNDL1BBRE0gbW9kZS4gKi8KKwkJCQl3aC0+cGguY29kZSA9 IFBBRE1fQ09ERTsKKwkJCQkvKgorCQkJCSAqIENvbmZpZ3VyZSBldGhlcnR5cGUgZGVwZW5kaW5n IG9uIHdoYXQKKwkJCQkgKiB3YXMgdXNlZCBkdXJpbmcgc2Vzc2lvbnMgc3RhZ2UuCisJCQkJICov CisJCQkJaWYgKHdoLT5laC5ldGhlcl90eXBlID09CisJCQkJICAgIEVUSEVSVFlQRV9QUFBPRV8z Q09NX1NFU1MpCisJCQkJCXdoLT5laC5ldGhlcl90eXBlID0gRVRIRVJUWVBFX1BQUE9FXzNDT01f RElTQzsKKwkJCQllbHNlCisJCQkJCXdoLT5laC5ldGhlcl90eXBlID0gRVRIRVJUWVBFX1BQUE9F X0RJU0M7CisJCQkJLyoKKwkJCQkgKiBBZGQgUEFETSBtZXNzYWdlIGFuZCBhZGp1c3Qgc2l6ZXMu CisJCQkJICovCisJCQkJdGFnID0gKHZvaWQgKikoJndoLT5waCArIDEpOworCQkJCXRhZy0+dGFn X3R5cGUgPSBQVFRfTU9UTTsKKwkJCQl0YWctPnRhZ19sZW4gPSBodG9ucyhvdXJtc2ctPmRhdGFf bGVuKTsKKwkJCQlzdHJuY3B5KChjaGFyICopKHRhZyArIDEpLCBvdXJtc2ctPmRhdGEsIG91cm1z Zy0+ZGF0YV9sZW4pOworCQkJCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1fbGVuID0gc2l6ZW9mKCp3 aCkgKyBzaXplb2YoKnRhZykgKworCQkJCSAgICBvdXJtc2ctPmRhdGFfbGVuOworCQkJCXdoLT5w aC5sZW5ndGggPSBodG9ucyhzaXplb2YoKnRhZykgKyBvdXJtc2ctPmRhdGFfbGVuKTsKKwkJCQlO R19TRU5EX0RBVEFfT05MWShlcnJvciwKKwkJCQkgICAgcHJpdnAtPmV0aGVybmV0X2hvb2ssIG0p OworCQkJfQorCQkJYnJlYWs7CisJCSAgICB9CiAJCWRlZmF1bHQ6CiAJCQlMRUFWRShFSU5WQUwp OwogCQl9CkBAIC0xMDYxLDEwICsxMjU4LDYgQEAKIAlub2RlX3AJbm9kZSA9IE5HX0hPT0tfTk9E RShob29rKTsKIAlwcml2X3AJcHJpdnAgPSBOR19OT0RFX1BSSVZBVEUobm9kZSk7CiAJbmVncAlu ZWcgPSBzcC0+bmVnOwotCXN0cnVjdCB7Ci0JCXN0cnVjdCBwcHBvZV90YWcgaGRyOwotCQl1bmlv bgl1bmlxCWRhdGE7Ci0JfSBfX3BhY2tlZCB1bmlxdGFnOwogCXN0cnVjdCAgbWJ1ZiAqbTA7CiAJ aW50CWVycm9yOwogCkBAIC0xMDgwLDExICsxMjczLDggQEAKIAltZW1jcHkoKHZvaWQgKikmbmVn LT5wa3QtPnBrdF9oZWFkZXIuZWgsICZwcml2cC0+ZWgsCiAJICAgIHNpemVvZihzdHJ1Y3QgZXRo ZXJfaGVhZGVyKSk7CiAJbmVnLT5wa3QtPnBrdF9oZWFkZXIucGguY29kZSA9IFBBRElfQ09ERTsK LQl1bmlxdGFnLmhkci50YWdfdHlwZSA9IFBUVF9IT1NUX1VOSVE7Ci0JdW5pcXRhZy5oZHIudGFn X2xlbiA9IGh0b25zKCh1X2ludDE2X3Qpc2l6ZW9mKHVuaXF0YWcuZGF0YSkpOwotCXVuaXF0YWcu ZGF0YS5wb2ludGVyID0gc3A7CiAJaW5pdF90YWdzKHNwKTsKLQlpbnNlcnRfdGFnKHNwLCAmdW5p cXRhZy5oZHIpOworCWluc2VydF90YWcoc3AsICZuZWctPmhvc3RfdW5pcS5oZHIpOwogCWluc2Vy dF90YWcoc3AsICZuZWctPnNlcnZpY2UuaGRyKTsKIAlpZiAocHJpdnAtPm1heF9wYXlsb2FkLmRh dGEgIT0gMCkKIAkJaW5zZXJ0X3RhZyhzcCwgJnByaXZwLT5tYXhfcGF5bG9hZC5oZHIpOwpAQCAt MTE2Myw2ICsxMzUzLDUyIEBACiAJcmV0dXJuIChlcnJvcik7CiB9CiAKK3N0YXRpYyBpbnQKK3Nl bmRfaHVybChzZXNzcCBzcCwgY29uc3Qgc3RydWN0IHBwcG9lX3RhZyAqdGFnKQoreworCWludCBl cnJvciwgdGxlbjsKKwlzdHJ1Y3QgbmdfbWVzZyAqbXNnOworCXN0cnVjdCBuZ3BwcG9lX3BhZG0g KnBhZG07CisKKwlDVFIyKEtUUl9ORVQsICIlMjBzOiBjYWxsZWQgJWQiLCBfX2Z1bmNfXywgc3At PlNlc3Npb25fSUQpOworCisJTkdfTUtNRVNTQUdFKG1zZywgTkdNX1BQUE9FX0NPT0tJRSwgTkdN X1BQUE9FX0hVUkwsCisJICAgIHNpemVvZihzdHJ1Y3QgbmdwcHBvZV9wYWRtKSwgTV9OT1dBSVQp OworCWlmIChtc2cgPT0gTlVMTCkKKwkJcmV0dXJuIChFTk9NRU0pOworCisJcGFkbSA9IChzdHJ1 Y3QgbmdwcHBvZV9wYWRtICopbXNnLT5kYXRhOworCXRsZW4gPSBtaW4oUFBQT0VfUEFETV9WQUxV RV9TSVpFIC0gMSwgbnRvaHModGFnLT50YWdfbGVuKSk7CisJc3RybmNweShwYWRtLT5tc2csIChj b25zdCBjaGFyICopKHRhZyArIDEpLCB0bGVuKTsKKwlwYWRtLT5tc2dbdGxlbl0gPSAnXDAnOwor CU5HX1NFTkRfTVNHX0lEKGVycm9yLCBOR19IT09LX05PREUoc3AtPmhvb2spLCBtc2csIHNwLT5j cmVhdG9yLCAwKTsKKworCXJldHVybiAoZXJyb3IpOworfQorCitzdGF0aWMgaW50CitzZW5kX21v dG0oc2Vzc3Agc3AsIGNvbnN0IHN0cnVjdCBwcHBvZV90YWcgKnRhZykKK3sKKwlpbnQgZXJyb3Is IHRsZW47CisJc3RydWN0IG5nX21lc2cgKm1zZzsKKwlzdHJ1Y3QgbmdwcHBvZV9wYWRtICpwYWRt OworCisJQ1RSMihLVFJfTkVULCAiJTIwczogY2FsbGVkICVkIiwgX19mdW5jX18sIHNwLT5TZXNz aW9uX0lEKTsKKworCU5HX01LTUVTU0FHRShtc2csIE5HTV9QUFBPRV9DT09LSUUsIE5HTV9QUFBP RV9NT1RNLAorCSAgICBzaXplb2Yoc3RydWN0IG5ncHBwb2VfcGFkbSksIE1fTk9XQUlUKTsKKwlp ZiAobXNnID09IE5VTEwpCisJCXJldHVybiAoRU5PTUVNKTsKKworCXBhZG0gPSAoc3RydWN0IG5n cHBwb2VfcGFkbSAqKW1zZy0+ZGF0YTsKKwl0bGVuID0gbWluKFBQUE9FX1BBRE1fVkFMVUVfU0la RSAtIDEsIG50b2hzKHRhZy0+dGFnX2xlbikpOworCXN0cm5jcHkocGFkbS0+bXNnLCAoY29uc3Qg Y2hhciAqKSh0YWcgKyAxKSwgdGxlbik7CisJcGFkbS0+bXNnW3RsZW5dID0gJ1wwJzsKKwlOR19T RU5EX01TR19JRChlcnJvciwgTkdfSE9PS19OT0RFKHNwLT5ob29rKSwgbXNnLCBzcC0+Y3JlYXRv ciwgMCk7CisKKwlyZXR1cm4gKGVycm9yKTsKK30KKwogLyoKICAqIFJlY2VpdmUgZGF0YSBmcm9t IHNlc3Npb24gaG9vayBhbmQgZG8gc29tZXRoaW5nIHdpdGggaXQuCiAgKi8KQEAgLTEzMjAsNiAr MTU1Niw3IEBACiAJY29uc3QgcHJpdl9wCQlwcml2cCA9IE5HX05PREVfUFJJVkFURShub2RlKTsK IAlzZXNzcAkJCXNwOwogCWNvbnN0IHN0cnVjdCBwcHBvZV90YWcJKnV0YWcgPSBOVUxMLCAqdGFn ID0gTlVMTDsKKwljb25zdCBzdHJ1Y3QgcHBwb2VfdGFnCXNudGFnID0geyBQVFRfU1JWX05BTUUs IDAgfTsKIAljb25zdCBzdHJ1Y3QgcHBwb2VfZnVsbF9oZHIgKndoOwogCWNvbnN0IHN0cnVjdCBw cHBvZV9oZHIJKnBoOwogCW5lZ3AJCQluZWcgPSBOVUxMOwpAQCAtMTQwOSwxMSArMTY0Niw4IEBA CiAJCQkgKiBwcm9jZXNzaW5nLgogCQkJICovCiAJCQl0YWcgPSBnZXRfdGFnKHBoLCBQVFRfU1JW X05BTUUpOwotCQkJaWYgKHRhZyA9PSBOVUxMKSB7Ci0JCQkJQ1RSMShLVFJfTkVULCAiJTIwczog UEFESSB3L28gU2VydmljZS1OYW1lIiwKLQkJCQkgICAgX19mdW5jX18pOwotCQkJCUxFQVZFKEVO RVRVTlJFQUNIKTsKLQkJCX0KKwkJCWlmICh0YWcgPT0gTlVMTCkKKwkJCQl0YWcgPSAmc250YWc7 CiAKIAkJCS8qCiAJCQkgKiBGaXJzdCwgdHJ5IHRvIG1hdGNoIFNlcnZpY2UtTmFtZSBhZ2FpbnN0 IG91ciAKQEAgLTE0MzgsOCArMTY3Miw3IEBACiAJCQkgKiBGb3Igbm93IHNpbXBseSBhY2NlcHQg dGhlIGZpcnN0IHdlIHJlY2VpdmUuCiAJCQkgKi8KIAkJCXV0YWcgPSBnZXRfdGFnKHBoLCBQVFRf SE9TVF9VTklRKTsKLQkJCWlmICgodXRhZyA9PSBOVUxMKSB8fAotCQkJICAgIChudG9ocyh1dGFn LT50YWdfbGVuKSAhPSBzaXplb2Yoc3ApKSkgeworCQkJaWYgKHV0YWcgPT0gTlVMTCkgewogCQkJ CWxvZyhMT0dfTk9USUNFLCAibmdfcHBwb2VbJXhdOiBubyBob3N0ICIKIAkJCQkgICAgInVuaXF1 ZSBmaWVsZFxuIiwgbm9kZS0+bmRfSUQpOwogCQkJCUxFQVZFKEVORVRVTlJFQUNIKTsKQEAgLTE1 MjksNyArMTc2Miw3IEBACiAJCQkJTEVBVkUoRU5FVFVOUkVBQ0gpOwogCQkJfQogCi0JCQlzZW5k aG9vayA9IHBwcG9lX2ZpbmR1bmlxKG5vZGUsIHV0YWcpOworCQkJc2VuZGhvb2sgPSBwcHBvZV9m aW5kY29va2llKG5vZGUsIHV0YWcpOwogCQkJaWYgKHNlbmRob29rID09IE5VTEwpCiAJCQkJTEVB VkUoRU5FVFVOUkVBQ0gpOwogCkBAIC0xNjA1LDggKzE4MzgsNyBAQAogCQkJICogc2V0IHVzIGlu dG8gU2Vzc2lvbiBtb2RlLgogCQkJICovCiAJCQl1dGFnID0gZ2V0X3RhZyhwaCwgUFRUX0hPU1Rf VU5JUSk7Ci0JCQlpZiAoKHV0YWcgPT0gTlVMTCkgfHwKLQkJCSAgICAobnRvaHModXRhZy0+dGFn X2xlbikgIT0gc2l6ZW9mKHNwKSkpIHsKKwkJCWlmICh1dGFnID09IE5VTEwpIHsKIAkJCQlMRUFW RSAoRU5FVFVOUkVBQ0gpOwogCQkJfQogCQkJc2VuZGhvb2sgPSBwcHBvZV9maW5kdW5pcShub2Rl LCB1dGFnKTsKQEAgLTE2NTksNiArMTg5MSwxOSBAQAogCQkJLyogRGlzY29ubmVjdCB0aGF0IGhv b2suICovCiAJCQluZ19ybWhvb2tfc2VsZihzcC0+aG9vayk7CiAJCQlicmVhazsKKwkJY2FzZQlQ QURNX0NPREU6CisJCQkvKgorCQkJICogV2UgYXJlIGEgY2xpZW50OgorCQkJICogZmluZCBtYXRj aGluZyBwZWVyL3Nlc3Npb24gY29tYmluYXRpb24uCisJCQkgKi8KKwkJCXNwID0gcHBwb2VfZmlu ZHNlc3Npb24ocHJpdnAsIHdoKTsKKwkJCWlmIChzcCA9PSBOVUxMKQorCQkJCUxFQVZFIChFTkVU VU5SRUFDSCk7CisJCQlpZiAoKHRhZyA9IGdldF90YWcocGgsIFBUVF9IVVJMKSkpCisJCQkJc2Vu ZF9odXJsKHNwLCB0YWcpOworCQkJaWYgKCh0YWcgPSBnZXRfdGFnKHBoLCBQVFRfTU9UTSkpKQor CQkJCXNlbmRfbW90bShzcCwgdGFnKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJTEVBVkUo RVBGTk9TVVBQT1JUKTsKIAkJfQpAQCAtMTc4MSw3ICsyMDI2LDcgQEAKIAkJCXN0cnVjdCBtYnVm ICptOwogCiAJCQkvKiBHZW5lcmF0ZSBhIHBhY2tldCBvZiB0aGF0IHR5cGUuICovCi0JCQlNR0VU SERSKG0sIE1fTk9XQUlULCBNVF9EQVRBKTsKKwkJCW0gPSBtX2dldGhkcihNX05PV0FJVCwgTVRf REFUQSk7CiAJCQlpZiAobSA9PSBOVUxMKQogCQkJCWxvZyhMT0dfTk9USUNFLCAibmdfcHBwb2Vb JXhdOiBzZXNzaW9uIG91dCBvZiAiCiAJCQkJICAgICJtYnVmc1xuIiwgbm9kZS0+bmRfSUQpOwpA QCAtMTc5MSw4ICsyMDM2LDYgQEAKIAkJCQlpbnQJbXNnbGVuID0gc3RybGVuKFNJR05PRkYpOwog CQkJCWludAllcnJvciA9IDA7CiAKLQkJCQltLT5tX3BrdGhkci5yY3ZpZiA9IE5VTEw7Ci0JCQkJ bS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBzaXplb2YoKndoKTsKIAkJCQl3aCA9IG10b2Qo bSwgc3RydWN0IHBwcG9lX2Z1bGxfaGRyICopOwogCQkJCWJjb3B5KCZzcC0+cGt0X2hkciwgd2gs IHNpemVvZigqd2gpKTsKIApAQCAtMTgxNSw4ICsyMDU4LDggQEAKIAkJCQl0YWctPnRhZ190eXBl ID0gUFRUX0dFTl9FUlI7CiAJCQkJdGFnLT50YWdfbGVuID0gaHRvbnMoKHVfaW50MTZfdCltc2ds ZW4pOwogCQkJCXN0cm5jcHkoKGNoYXIgKikodGFnICsgMSksIFNJR05PRkYsIG1zZ2xlbik7Ci0J CQkJbS0+bV9wa3RoZHIubGVuID0gKG0tPm1fbGVuICs9IHNpemVvZigqdGFnKSArCi0JCQkJICAg IG1zZ2xlbik7CisJCQkJbS0+bV9wa3RoZHIubGVuID0gbS0+bV9sZW4gPSBzaXplb2YoKndoKSAr IHNpemVvZigqdGFnKSArCisJCQkJICAgIG1zZ2xlbjsKIAkJCQl3aC0+cGgubGVuZ3RoID0gaHRv bnMoc2l6ZW9mKCp0YWcpICsgbXNnbGVuKTsKIAkJCQlOR19TRU5EX0RBVEFfT05MWShlcnJvciwK IAkJCQkJcHJpdnAtPmV0aGVybmV0X2hvb2ssIG0pOwpAQCAtMTkzMyw2ICsyMTc2LDggQEAKIAkJ Y2FzZQlQVFRfU1lTX0VSUjoKIAkJY2FzZQlQVFRfR0VOX0VSUjoKIAkJY2FzZQlQVFRfTUFYX1BB WUw6CisJCWNhc2UJUFRUX0hVUkw6CisJCWNhc2UJUFRUX01PVE06CiAJCQlicmVhazsKIAkJfQog CQlwdCA9IChjb25zdCBzdHJ1Y3QgcHBwb2VfdGFnKilwdG47CmRpZmYgLS1naXQgYS9zaGFyZS9t YW4vbWFuNC9uZ19wcHBvZS40IGIvc2hhcmUvbWFuL21hbjQvbmdfcHBwb2UuNAotLS0gYS9zaGFy ZS9tYW4vbWFuNC9uZ19wcHBvZS40CisrKyBiL3NoYXJlL21hbi9tYW40L25nX3BwcG9lLjQKQEAg LTM1LDcgKzM1LDcgQEAKIC5cIiAkRnJlZUJTRCQKIC5cIiAkV2hpc3RsZTogbmdfcHBwb2UuOCx2 IDEuMSAxOTk5LzAxLzI1IDIzOjQ2OjI3IGFyY2hpZSBFeHAgJAogLlwiCi0uRGQgU2VwdGVtYmVy IDE1LCAyMDE1CisuRGQgQXByaWwgNCwgMjAxNwogLkR0IE5HX1BQUE9FIDQKIC5PcwogLlNoIE5B TUUKQEAgLTEwNCwxMiArMTA0LDMzIEBACiBJdCBtdXN0IGJlIG5ld2x5IGNyZWF0ZWQgYW5kIGEg c2VydmljZSBuYW1lIGNhbiBiZSBnaXZlbiBhcyBhbiBhcmd1bWVudC4KIEl0IGlzIGxlZ2FsIHRv IHNwZWNpZnkgYSB6ZXJvLWxlbmd0aCBzZXJ2aWNlIG5hbWUsIHRoaXMgaXMgY29tbW9uCiBvbiBz b21lIERTTCBzZXR1cHMuCi1JdCBpcyBwb3NzaWJsZSB0byByZXF1ZXN0IGEgY29ubmVjdGlvbiB0 byBhIHNwZWNpZmljCi1hY2Nlc3MgY29uY2VudHJhdG9yIGJ5IGl0cyBuYW1lIHVzaW5nIHRoZSAi QUMtTmFtZVxcU2VydmljZS1OYW1lIiBzeW50YXguCi1BIHNlc3Npb24gcmVxdWVzdCBwYWNrZXQg d2lsbCBiZSBicm9hZGNhc3RlZCBvbiB0aGUgRXRoZXJuZXQuCitJdCBpcyBwb3NzaWJsZSB0byBy ZXF1ZXN0IGEgY29ubmVjdGlvbiB0byBhIHNwZWNpZmljIGFjY2VzcyBjb25jZW50cmF0b3IsCith bmQvb3Igc2V0IGEgc3BlY2lmaWMgSG9zdC1VbmlxIHRhZywgcmVxdWlyZWQgYnkgc29tZSBJbnRl cm5ldCBwcm92aWRlcnMsCit1c2luZyB0aGUKKy5RcSBMaSBbQUMtTmFtZVxcXVtIb3N0LVVuaXF8 XVNlcnZpY2UtTmFtZQorc3ludGF4LgorVG8gc2V0IGEgYmluYXJ5IEhvc3QtVW5pcSwgaXQgbXVz dCBiZSBlbmNvZGVkIGFzIGEgaGV4YWRlY2ltYWwgbG93ZXJjYXNlCitzdHJpbmcgYW5kIHByZWZp eGVkIHdpdGggCisuUXEgTGkgMHggLAorZm9yIGV4YW1wbGUgCisuUXEgTGkgMHg2ZDc5MmQ3NDYx NjcKK2lzIGVxdWl2YWxlbnQgdG8KKy5RcSBMaSBteS10YWcgLgorQSBzZXNzaW9uIHJlcXVlc3Qg cGFja2V0IHdpbGwgYmUgYnJvYWRjYXN0IG9uIHRoZSBFdGhlcm5ldC4KIFRoaXMgY29tbWFuZCB1 c2VzIHRoZQogLkR2IG5ncHBwb2VfaW5pdF9kYXRhCiBzdHJ1Y3R1cmUgc2hvd24gYmVsb3cuCitG b3IgZXhhbXBsZSwgdGhpcyBpbml0IGRhdGEgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8KK2Nvbm5l Y3QgdG8KKy5RcSBMaSBteS1pc3AKK3NlcnZpY2Ugd2l0aAorLlFxIExpIG15LWhvc3QKK3VuaXEg dGFnLCBhY2NlcHRpbmcgb25seQorLlFxIExpIHJlbW90ZS1hYworYXMgYWNjZXNzIGNvbmNlbnRy YXRvcjoKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGluZGVudAorInJlbW90ZS1hY1xcbXktaG9zdHxt eS1pc3AiCisuRWQKIC5JdCBEdiBOR01fUFBQT0VfTElTVEVOIFBxIEljIHBwcG9lX2xpc3Rlbgog VGVsbCBhIG5vbWluYXRlZCBuZXdseSBjcmVhdGVkIGhvb2sgdGhhdCBpdHMgc2Vzc2lvbiBzaG91 bGQgZW50ZXIKIHRoZSBzdGF0ZSBtYWNoaW5lIGFzIGEgc2VydmVyIGxpc3RlbmVyLgpAQCAtMjU4 LDcgKzI3OSw0MSBAQAogICAgIHVpbnQxNl90IGRhdGE7CiB9OwogLkVkCisuSXQgRHYgTkdNX1BQ UE9FX1NFTkRfSFVSTCBQcSBJYyBzZW5kX2h1cmwKK1RlbGwgYSBub21pbmF0ZWQgaG9vayB3aXRo IGFuIGFjdGl2ZSBzZXNzaW9uIHRvIHNlbmQgYSBQQURNIG1lc3NhZ2Ugd2l0aAorYSBIVVJMIHRh Zy4KK1RoZSBhcmd1bWVudCBpcyB0aGUgVVJMIHRvIGJlIGRlbGl2ZXJlZCB0byB0aGUgY2xpZW50 OgorLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CituZ2N0bCBtc2cgZnhwMDpvcnBoYW5zIHNl bmRfaHVybCAneyBob29rPSJteUhvb2siIGRhdGE9Imh0dHA6Ly9leGFtcGxlLm5ldC9jcGUiIH0n CisuRWQKKy5JdCBEdiBOR01fUFBQT0VfU0VORF9NT1RNIFBxIEljIHNlbmRfbW90bQorVGVsbCBh IG5vbWluYXRlZCBob29rIHdpdGggYW4gYWN0aXZlIHNlc3Npb24gdG8gc2VuZCBhIFBBRE0gbWVz c2FnZSB3aXRoCithIE1PVE0gdGFnLgorVGhlIGFyZ3VtZW50IGlzIHRoZSBtZXNzYWdlIHRvIGJl IGRlbGl2ZXJlZCB0byB0aGUgY2xpZW50OgorLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50Citu Z2N0bCBtc2cgZnhwMDpvcnBoYW5zIHNlbmRfbW90bSAneyBob29rPSJteUhvb2siIGRhdGE9Ildl bGNvbWUgYWJvYXJkIiB9JworLkVkCiAuRWwKKy5QcAorVGhlIHR3byBjb21tYW5kcyBhYm92ZSB1 c2UgdGhlIHNhbWUgbmdwcHBvZV9pbml0X2RhdGEgc3RydWN0dXJlIGRlc2NyaWJlZAorYWJvdmUu CisuQmwgLXRhZyAtd2lkdGggM24KKy5JdCBEdiBOR01fUFBQT0VfSFVSTAorVGhpcyBjb21tYW5k IGlzIHNlbnQgdG8gdGhlIG5vZGUgdGhhdCBzdGFydGVkIHRoaXMgc2Vzc2lvbiB3aGVuIGEgUEFE TQorbWVzc2FnZSB3aXRoIGEgSFVSTCB0YWcgaXMgcmVjZWl2ZWQsIGFuZCBjb250YWlucyBhIFVS TCB0aGF0IHRoZSBob3N0IGNhbgorcGFzcyB0byBhIHdlYiBicm93c2VyIGZvciBwcmVzZW50YXRp b24gdG8gdGhlIHVzZXIuCisuSXQgRHYgTkdNX1BQUE9FX01PVE0KK1RoaXMgY29tbWFuZCBpcyBz ZW50IHRvIHRoZSBub2RlIHRoYXQgc3RhcnRlZCB0aGlzIHNlc3Npb24gd2hlbiBhIFBBRE0KK21l c3NhZ2Ugd2l0aCBhIE1PVE0gdGFnIGlzIHJlY2VpdmVkLCBhbmQgY29udGFpbnMgYSBNZXNzYWdl IE9mIFRoZQorTWludXRlIHRoYXQgdGhlIGhvc3QgY2FuIGRpc3BsYXkgdG8gdGhlIHVzZXIuCisu RWwKKy5QcAorVGhlIHR3byBjb21tYW5kcyBhYm92ZSB1c2UgYSBjb21tb24gZGF0YSBzdHJ1Y3R1 cmU6CisuQmQgLWxpdGVyYWwgLW9mZnNldCA0bgorc3RydWN0IG5ncHBwb2VfcGFkbSB7CisgICAg Y2hhciAgICBtc2dbUFBQT0VfUEFETV9WQUxVRV9TSVpFXTsKK307CisuRWQKIC5TaCBTSFVURE9X TgogVGhpcyBub2RlIHNodXRzIGRvd24gdXBvbiByZWNlaXB0IG9mIGEKIC5EdiBOR01fU0hVVERP V04KCg== --b1_be9a246fb2f00ab577fbcdf758dfb5d1--