From owner-freebsd-net@freebsd.org Tue Apr 4 20:19:16 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 D2E16D2F823 for ; Tue, 4 Apr 2017 20:19:16 +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 86F0D77C for ; Tue, 4 Apr 2017 20:19:16 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id ADFAD20D4B; Tue, 4 Apr 2017 20:19:15 +0000 (UTC) Date: Tue, 4 Apr 2017 20:19:15 +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: <8513b9a6eeb72a7bfdce60f3f947d8d7@localhost.localdomain> 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: Precedence: bulk In-Reply-To: References: Thread-Index: NTZkNjQzYWQxOGQ3MGJlZTIzOGZhZmQ4NGNmIFjj/8M= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_8513b9a6eeb72a7bfdce60f3f947d8d7" 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, 04 Apr 2017 20:19:16 -0000 --b1_8513b9a6eeb72a7bfdce60f3f947d8d7 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 YWxlIHVwZGF0ZWQgdGhpcyByZXZpc2lvbiB0byBEaWZmIDI3MDU5LgphbGUgYWRkZWQgYSBjb21t ZW50LgoKCiAgQWRkcmVzc2VkIGxhdGVzdCBjb21tZW50cywgdXBkYXRlZCBhbHNvIHRoZSBwcHBv ZSBkaXNjb25uZWN0IGZ1bmN0aW9uLgogIFBsZWFzZSBjaGVjayB0aGUgY29ycmVjdG5lc3MsIGFu ZCBjb21taXQgdGhlIHBhdGNoIGlmIHlvdSBhcmUgc2F0aXNmaWVkLgoKUkVQT1NJVE9SWQogIHJT IEZyZWVCU0Qgc3JjIHJlcG9zaXRvcnkKCkNIQU5HRVMgU0lOQ0UgTEFTVCBVUERBVEUKICBodHRw czovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDkyNzA/dnM9MjU5NzcmaWQ9MjcwNTkKClJFVklTSU9O IERFVEFJTAogIGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EOTI3MAoKQUZGRUNURUQgRklM RVMKICBzaGFyZS9tYW4vbWFuNC9uZ19wcHBvZS40CiAgc3lzL25ldGdyYXBoL25nX3BwcG9lLmMK ICBzeXMvbmV0Z3JhcGgvbmdfcHBwb2UuaAoKRU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jl dmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBh bGUsICNtYW5wYWdlcywgd2Jsb2NrLCAjbmV0d29yaywganVsaWFuLCBtYXYsIGFkcmlhbiwgZ2xl Yml1cwpDYzogZ2xlYml1cywgd2Jsb2NrLCBtYXYsIHBvb2xyb29tX2dtYWlsLmNvbSwgbWFuZHJl ZSwgaW1wLCBmcmVlYnNkLW5ldC1saXN0Cg== --b1_8513b9a6eeb72a7bfdce60f3f947d8d7 Content-Type: text/x-patch; charset=utf-8; name="D9270.27059.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D9270.27059.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 ICs2MDUsNDAgQEAKIHBwcG9lX2ZpbmR1bmlxKG5vZGVfcCBub2RlLCBjb25zdCBzdHJ1Y3QgcHBw b2VfdGFnICp0YWcpCiB7CiAJaG9va19wCWhvb2sgPSBOVUxMOwotCXVuaW9uIHVuaXEgdW5pcTsK KwlzZXNzcAlzcDsKKworCS8qIEN5Y2xlIHRocm91Z2ggYWxsIGtub3duIGhvb2tzLiAqLworCUxJ U1RfRk9SRUFDSChob29rLCAmbm9kZS0+bmRfaG9va3MsIGhrX2hvb2tzKSB7CisJCS8qIFNraXAg YW55IG5vbnNlc3Npb24gaG9vay4gKi8KKwkJaWYgKE5HX0hPT0tfUFJJVkFURShob29rKSA9PSBO VUxMKQorCQkJY29udGludWU7CisJCXNwID0gTkdfSE9PS19QUklWQVRFKGhvb2spOworCQlpZiAo c3AtPm5lZy0+aG9zdF91bmlxX2xlbiA9PSBudG9ocyh0YWctPnRhZ19sZW4pICYmCisJCSAgICBi Y21wKHNwLT5uZWctPmhvc3RfdW5pcS5kYXRhLCAoY29uc3QgY2hhciAqKSh0YWcgKyAxKSwKKwkJ ICAgICBzcC0+bmVnLT5ob3N0X3VuaXFfbGVuKSA9PSAwKQorCQkJYnJlYWs7CisJfQorCUNUUjMo S1RSX05FVCwgIiUyMHM6IG1hdGNoZWQgJXAgZm9yICVwIiwgX19mdW5jX18sIGhvb2ssIHNwKTsK KworCXJldHVybiAoaG9vayk7Cit9CisKK3N0YXRpYyBob29rX3AKK3BwcG9lX2ZpbmRjb29raWUo bm9kZV9wIG5vZGUsIGNvbnN0IHN0cnVjdCBwcHBvZV90YWcgKnRhZykKK3sKKwlob29rX3AJaG9v ayA9IE5VTEw7CisJdW5pb24gdW5pcSBjb29raWU7CiAKLQliY29weSh0YWcgKyAxLCB1bmlxLmJ5 dGVzLCBzaXplb2Yodm9pZCAqKSk7CisJYmNvcHkodGFnICsgMSwgY29va2llLmJ5dGVzLCBzaXpl b2Yodm9pZCAqKSk7CiAJLyogQ3ljbGUgdGhyb3VnaCBhbGwga25vd24gaG9va3MuICovCiAJTElT VF9GT1JFQUNIKGhvb2ssICZub2RlLT5uZF9ob29rcywgaGtfaG9va3MpIHsKIAkJLyogU2tpcCBh bnkgbm9uc2Vzc2lvbiBob29rLiAqLwogCQlpZiAoTkdfSE9PS19QUklWQVRFKGhvb2spID09IE5V TEwpCiAJCQljb250aW51ZTsKLQkJaWYgKHVuaXEucG9pbnRlciA9PSBOR19IT09LX1BSSVZBVEUo aG9vaykpCisJCWlmIChjb29raWUucG9pbnRlciA9PSBOR19IT09LX1BSSVZBVEUoaG9vaykpCiAJ CQlicmVhazsKIAl9Ci0JQ1RSMyhLVFJfTkVULCAiJTIwczogbWF0Y2hlZCAlcCBmb3IgJXAiLCBf X2Z1bmNfXywgaG9vaywgdW5pcS5wb2ludGVyKTsKKwlDVFIzKEtUUl9ORVQsICIlMjBzOiBtYXRj aGVkICVwIGZvciAlcCIsIF9fZnVuY19fLCBob29rLCBjb29raWUucG9pbnRlcik7CiAKIAlyZXR1 cm4gKGhvb2spOwogfQpAQCAtNzQ0LDE3ICs3ODIsMjkgQEAKIAkJY2FzZSBOR01fUFBQT0VfTElT VEVOOgogCQljYXNlIE5HTV9QUFBPRV9PRkZFUjoKIAkJY2FzZSBOR01fUFBQT0VfU0VSVklDRToK KwkJY2FzZSBOR01fUFBQT0VfU0VORF9IVVJMOgorCQljYXNlIE5HTV9QUFBPRV9TRU5EX01PVE06 CiAJCQlvdXJtc2cgPSAoc3RydWN0IG5ncHBwb2VfaW5pdF9kYXRhICopbXNnLT5kYXRhOwogCQkJ aWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiA8IHNpemVvZigqb3VybXNnKSkgewogCQkJCWxvZyhMT0df RVJSLCAibmdfcHBwb2VbJXhdOiBpbml0IGRhdGEgdG9vICIKIAkJCQkgICAgInNtYWxsXG4iLCBu b2RlLT5uZF9JRCk7CiAJCQkJTEVBVkUoRU1TR1NJWkUpOwogCQkJfQotCQkJaWYgKG1zZy0+aGVh ZGVyLmFyZ2xlbiAtIHNpemVvZigqb3VybXNnKSA+Ci0JCQkgICAgUFBQT0VfU0VSVklDRV9OQU1F X1NJWkUpIHsKLQkJCQlsb2coTE9HX0VSUiwgIm5nX3BwcG9lWyV4XTogc2VydmljZSBuYW1lICIK LQkJCQkgICAgInRvbyBiaWdcbiIsIG5vZGUtPm5kX0lEKTsKLQkJCQlMRUFWRShFTVNHU0laRSk7 CisJCQlpZiAobXNnLT5oZWFkZXIuY21kID09IE5HTV9QUFBPRV9TRU5EX0hVUkwgfHwKKwkJCSAg ICBtc2ctPmhlYWRlci5jbWQgPT0gTkdNX1BQUE9FX1NFTkRfTU9UTSkgeworCQkJCWlmIChtc2ct PmhlYWRlci5hcmdsZW4gLSBzaXplb2YoKm91cm1zZykgPgorCQkJCSAgICBQUFBPRV9QQURNX1ZB TFVFX1NJWkUpIHsKKwkJCQkJbG9nKExPR19FUlIsICJuZ19wcHBvZVsleF06IG1lc3NhZ2UgIgor CQkJCQkgICAgInRvbyBiaWdcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRU1TR1NJWkUp OworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKG1zZy0+aGVhZGVyLmFyZ2xlbiAtIHNpemVv Zigqb3VybXNnKSA+CisJCQkJICAgIFBQUE9FX1NFUlZJQ0VfTkFNRV9TSVpFKSB7CisJCQkJCWxv ZyhMT0dfRVJSLCAibmdfcHBwb2VbJXhdOiBzZXJ2aWNlIG5hbWUgIgorCQkJCQkgICAgInRvbyBi aWdcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRU1TR1NJWkUpOworCQkJCX0KIAkJCX0K IAkJCWlmIChtc2ctPmhlYWRlci5hcmdsZW4gLSBzaXplb2YoKm91cm1zZykgPAogCQkJICAgIG91 cm1zZy0+ZGF0YV9sZW4pIHsKQEAgLTc5NCw2ICs4NDQsMjAgQEAKIAkJCWlmIChtc2ctPmhlYWRl ci5jbWQgPT0gTkdNX1BQUE9FX1NFUlZJQ0UpCiAJCQkJYnJlYWs7CiAKKwkJCS8qCisJCQkgKiBQ QURNIG1lc3NhZ2VzIGFyZSBzZXQgdXAgb24gYWN0aXZlIHNlc3Npb25zLgorCQkJICovCisJCQlp ZiAobXNnLT5oZWFkZXIuY21kID09IE5HTV9QUFBPRV9TRU5EX0hVUkwgfHwKKwkJCSAgICBtc2ct PmhlYWRlci5jbWQgPT0gTkdNX1BQUE9FX1NFTkRfTU9UTSkgeworCQkJCWlmIChzcC0+c3RhdGUg IT0gUFBQT0VfTkVXQ09OTkVDVEVEICYmCisJCQkJICAgIHNwLT5zdGF0ZSAhPSBQUFBPRV9DT05O RUNURUQpIHsKKwkJCQkJbG9nKExPR19OT1RJQ0UsICJuZ19wcHBvZVsleF06IHNlc3Npb24gaXMg bm90ICIKKwkJCQkJICAgICJhY3RpdmVcbiIsIG5vZGUtPm5kX0lEKTsKKwkJCQkJTEVBVkUoRUlT Q09OTik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCiAJCQlpZiAoc3AtPnN0YXRlICE9IFBQ UE9FX1NOT05FKSB7CiAJCQkJbG9nKExPR19OT1RJQ0UsICJuZ19wcHBvZVsleF06IFNlc3Npb24g YWxyZWFkeSAiCiAJCQkJICAgICJhY3RpdmVcbiIsIG5vZGUtPm5kX0lEKTsKQEAgLTg0OCwyOCAr OTEyLDcyIEBACiAJCQkgKiBDaGVjayB0aGUgaG9vayBleGlzdHMgYW5kIGlzIFVuaW5pdGlhbGlz ZWQuCiAJCQkgKiBTZW5kIGEgUEFESSByZXF1ZXN0LCBhbmQgc3RhcnQgdGhlIHRpbWVvdXQgbG9n aWMuCiAJCQkgKiBTdG9yZSB0aGUgb3JpZ2luYXRvciBvZiB0aGlzIG1lc3NhZ2Ugc28gd2UgY2Fu IHNlbmQKLQkJCSAqIGEgc3VjY2VzcyBvZiBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRlci4KKwkJ CSAqIGEgc3VjY2VzcyBvciBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRlci4KIAkJCSAqIE1vdmUg dGhlIHNlc3Npb24gdG8gU0lOSVQuCiAJCQkgKiBTZXQgdXAgdGhlIHNlc3Npb24gdG8gdGhlIGNv cnJlY3Qgc3RhdGUgYW5kCiAJCQkgKiBzdGFydCBpdC4KIAkJCSAqLwotCQkJaW50CWksIGFjbmxl biA9IDAsIGFjbnNlcCA9IDAsIHNydmxlbjsKKwkJCWludAlhY25wb3MsIGFjbmxlbiA9IDAsIGFj bnNlcCA9IDA7CisJCQlpbnQJaHVwb3MsIGh1bGVuID0gMCwgaHVzZXAgPSAwOworCQkJaW50CWks IHNydnBvcywgc3J2bGVuOworCQkJYWNucG9zID0gMDsKIAkJCWZvciAoaSA9IDA7IGkgPCBvdXJt c2ctPmRhdGFfbGVuOyBpKyspIHsKIAkJCQlpZiAob3VybXNnLT5kYXRhW2ldID09ICdcXCcpIHsK IAkJCQkJYWNubGVuID0gaTsKIAkJCQkJYWNuc2VwID0gMTsKIAkJCQkJYnJlYWs7CiAJCQkJfQog CQkJfQotCQkJc3J2bGVuID0gb3VybXNnLT5kYXRhX2xlbiAtIGFjbmxlbiAtIGFjbnNlcDsKKwkJ CWh1cG9zID0gYWNubGVuICsgYWNuc2VwOworCQkJZm9yIChpID0gaHVwb3M7IGkgPCBvdXJtc2ct PmRhdGFfbGVuOyBpKyspIHsKKwkJCQlpZiAob3VybXNnLT5kYXRhW2ldID09ICd8JykgeworCQkJ CQlodWxlbiA9IGkgLSBodXBvczsKKwkJCQkJaHVzZXAgPSAxOworCQkJCQlicmVhazsKKwkJCQl9 CisJCQl9CisJCQlzcnZwb3MgPSBodXBvcyArIGh1bGVuICsgaHVzZXA7CisJCQlzcnZsZW4gPSBv dXJtc2ctPmRhdGFfbGVuIC0gc3J2cG9zOwogCi0JCQliY29weShvdXJtc2ctPmRhdGEsIG5lZy0+ YWNfbmFtZS5kYXRhLCBhY25sZW4pOworCQkJYmNvcHkob3VybXNnLT5kYXRhICsgYWNucG9zLCBu ZWctPmFjX25hbWUuZGF0YSwgYWNubGVuKTsKIAkJCW5lZy0+YWNfbmFtZV9sZW4gPSBhY25sZW47 CiAKKwkJCW5lZy0+aG9zdF91bmlxLmhkci50YWdfdHlwZSA9IFBUVF9IT1NUX1VOSVE7CisJCQlp ZiAoaHVsZW4gPT0gMCkgeworCQkJCS8qIE5vdCBwcm92aWRlZCwgZ2VuZXJhdGUgb25lICovCisJ CQkJbmVnLT5ob3N0X3VuaXEuaGRyLnRhZ19sZW4gPSBodG9ucyhzaXplb2Yoc3ApKTsKKwkJCQli Y29weSgmc3AsIG5lZy0+aG9zdF91bmlxLmRhdGEsIHNpemVvZihzcCkpOworCQkJCW5lZy0+aG9z dF91bmlxX2xlbiA9IHNpemVvZihzcCk7CisJCQl9IGVsc2UgaWYgKGh1bGVuID4gMiAmJiBvdXJt c2ctPmRhdGFbaHVwb3NdID09ICcwJyAmJgorCQkJICBvdXJtc2ctPmRhdGFbaHVwb3MgKyAxXSA9 PSAneCcgJiYgaHVsZW4gJSAyID09IDApIHsKKwkJCQkvKiBIZXggZW5jb2RlZCAqLworCQkJCXN0 YXRpYyBjb25zdCBjaGFyIGhleGRpZ1sxNl0gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisJCQkJaW50 IGo7CisKKwkJCQluZWctPmhvc3RfdW5pcS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZfdCko aHVsZW4gLyAyIC0gMSkpOworCQkJCWZvciAoaSA9IDA7IGkgPCBodWxlbiAtIDI7IGkrKykgewor CQkJCQlmb3IgKGogPSAwOworCQkJCQkgICAgIGogPCAxNiAmJgorCQkJCQkgICAgIG91cm1zZy0+ ZGF0YVtodXBvcyArIDIgKyBpXSAhPSBoZXhkaWdbal07CisJCQkJCSAgICAgaisrKTsKKwkJCQkJ aWYgKGogPT0gMTYpCisJCQkJCQlMRUFWRShFSU5WQUwpOworCQkJCQlpZiAoaSAlIDIgPT0gMCkK KwkJCQkJCW5lZy0+aG9zdF91bmlxLmRhdGFbaSAvIDJdID0gaiA8PCA0OworCQkJCQllbHNlCisJ CQkJCQluZWctPmhvc3RfdW5pcS5kYXRhW2kgLyAyXSB8PSBqOworCQkJCX0KKwkJCQluZWctPmhv c3RfdW5pcV9sZW4gPSBodWxlbiAvIDIgLSAxOworCQkJfSBlbHNlIHsKKwkJCQkvKiBQbGFpbiBz dHJpbmcgKi8KKwkJCQluZWctPmhvc3RfdW5pcS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZf dClodWxlbik7CisJCQkJYmNvcHkob3VybXNnLT5kYXRhICsgaHVwb3MsIG5lZy0+aG9zdF91bmlx LmRhdGEsIGh1bGVuKTsKKwkJCQluZWctPmhvc3RfdW5pcV9sZW4gPSBodWxlbjsKKwkJCX0KKwog CQkJbmVnLT5zZXJ2aWNlLmhkci50YWdfdHlwZSA9IFBUVF9TUlZfTkFNRTsKIAkJCW5lZy0+c2Vy dmljZS5oZHIudGFnX2xlbiA9IGh0b25zKCh1aW50MTZfdClzcnZsZW4pOwotCQkJYmNvcHkob3Vy bXNnLT5kYXRhICsgYWNubGVuICsgYWNuc2VwLAotCQkJICAgIG5lZy0+c2VydmljZS5kYXRhLCBz cnZsZW4pOworCQkJYmNvcHkob3VybXNnLT5kYXRhICsgc3J2cG9zLCBuZWctPnNlcnZpY2UuZGF0 YSwgc3J2bGVuKTsKIAkJCW5lZy0+c2VydmljZV9sZW4gPSBzcnZsZW47CiAJCQlwcHBvZV9zdGFy dChzcCk7CiAJCQlicmVhazsKQEAgLTg3OSw3ICs5ODcsNyBAQAogCQkJICogQ2hlY2sgdGhlIGhv b2sgZXhpc3RzIGFuZCBpcyBVbmluaXRpYWxpc2VkLgogCQkJICogSW5zdGFsbCB0aGUgc2Vydmlj ZSBtYXRjaGluZyBzdHJpbmcuCiAJCQkgKiBTdG9yZSB0aGUgb3JpZ2luYXRvciBvZiB0aGlzIG1l c3NhZ2Ugc28gd2UgY2FuIHNlbmQKLQkJCSAqIGEgc3VjY2VzcyBvZiBmYWlsIG1lc3NhZ2UgdG8g dGhlbSBsYXRlci4KKwkJCSAqIGEgc3VjY2VzcyBvciBmYWlsIG1lc3NhZ2UgdG8gdGhlbSBsYXRl ci4KIAkJCSAqIE1vdmUgdGhlIGhvb2sgdG8gJ0xJU1RFTklORycKIAkJCSAqLwogCQkJbmVnLT5z ZXJ2aWNlLmhkci50YWdfdHlwZSA9IFBUVF9TUlZfTkFNRTsKQEAgLTEwMTksNiArMTEyNyw5MiBA QAogCQkJcHJpdnAtPm1heF9wYXlsb2FkLmhkci50YWdfbGVuID0gaHRvbnMoc2l6ZW9mKHVpbnQx Nl90KSk7CiAJCQlwcml2cC0+bWF4X3BheWxvYWQuZGF0YSA9IGh0b25zKCooKHVpbnQxNl90ICop bXNnLT5kYXRhKSk7CiAJCQlicmVhazsKKwkJY2FzZSBOR01fUFBQT0VfU0VORF9IVVJMOgorCQkg ICAgeworCQkJc3RydWN0IG1idWYgKm07CisKKwkJCS8qIEdlbmVyYXRlIGEgcGFja2V0IG9mIHRo YXQgdHlwZS4gKi8KKwkJCW0gPSBtX2dldGhkcihNX05PV0FJVCwgTVRfREFUQSk7CisJCQlpZiAo bSA9PSBOVUxMKQorCQkJCWxvZyhMT0dfTk9USUNFLCAibmdfcHBwb2VbJXhdOiBzZXNzaW9uIG91 dCBvZiAiCisJCQkJICAgICJtYnVmc1xuIiwgbm9kZS0+bmRfSUQpOworCQkJZWxzZSB7CisJCQkJ c3RydWN0IHBwcG9lX2Z1bGxfaGRyICp3aDsKKwkJCQlzdHJ1Y3QgcHBwb2VfdGFnICp0YWc7CisJ CQkJaW50ICAgICBlcnJvciA9IDA7CisKKwkJCQl3aCA9IG10b2QobSwgc3RydWN0IHBwcG9lX2Z1 bGxfaGRyICopOworCQkJCWJjb3B5KCZzcC0+cGt0X2hkciwgd2gsIHNpemVvZigqd2gpKTsKKwor CQkJCS8qIFJldmVydCB0aGUgc3RvcmVkIGhlYWRlciB0byBESVNDL1BBRE0gbW9kZS4gKi8KKwkJ CQl3aC0+cGguY29kZSA9IFBBRE1fQ09ERTsKKwkJCQkvKgorCQkJCSAqIENvbmZpZ3VyZSBldGhl cnR5cGUgZGVwZW5kaW5nIG9uIHdoYXQKKwkJCQkgKiB3YXMgdXNlZCBkdXJpbmcgc2Vzc2lvbnMg c3RhZ2UuCisJCQkJICovCisJCQkJaWYgKHdoLT5laC5ldGhlcl90eXBlID09CisJCQkJICAgIEVU SEVSVFlQRV9QUFBPRV8zQ09NX1NFU1MpCisJCQkJCXdoLT5laC5ldGhlcl90eXBlID0gRVRIRVJU WVBFX1BQUE9FXzNDT01fRElTQzsKKwkJCQllbHNlCisJCQkJCXdoLT5laC5ldGhlcl90eXBlID0g RVRIRVJUWVBFX1BQUE9FX0RJU0M7CisJCQkJLyoKKwkJCQkgKiBBZGQgUEFETSBtZXNzYWdlIGFu ZCBhZGp1c3Qgc2l6ZXMuCisJCQkJICovCisJCQkJdGFnID0gKHZvaWQgKikoJndoLT5waCArIDEp OworCQkJCXRhZy0+dGFnX3R5cGUgPSBQVFRfSFVSTDsKKwkJCQl0YWctPnRhZ19sZW4gPSBodG9u cyhvdXJtc2ctPmRhdGFfbGVuKTsKKwkJCQlzdHJuY3B5KChjaGFyICopKHRhZyArIDEpLCBvdXJt c2ctPmRhdGEsIG91cm1zZy0+ZGF0YV9sZW4pOworCQkJCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1f bGVuID0gc2l6ZW9mKCp3aCkgKyBzaXplb2YoKnRhZykgKworCQkJCSAgICBvdXJtc2ctPmRhdGFf bGVuOworCQkJCXdoLT5waC5sZW5ndGggPSBodG9ucyhzaXplb2YoKnRhZykgKyBvdXJtc2ctPmRh dGFfbGVuKTsKKwkJCQlOR19TRU5EX0RBVEFfT05MWShlcnJvciwKKwkJCQkgICAgcHJpdnAtPmV0 aGVybmV0X2hvb2ssIG0pOworCQkJfQorCQkJYnJlYWs7CisJCSAgICB9CisJCWNhc2UgTkdNX1BQ UE9FX1NFTkRfTU9UTToKKwkJICAgIHsKKwkJCXN0cnVjdCBtYnVmICptOworCisJCQkvKiBHZW5l cmF0ZSBhIHBhY2tldCBvZiB0aGF0IHR5cGUuICovCisJCQltID0gbV9nZXRoZHIoTV9OT1dBSVQs IE1UX0RBVEEpOworCQkJaWYgKG0gPT0gTlVMTCkKKwkJCQlsb2coTE9HX05PVElDRSwgIm5nX3Bw cG9lWyV4XTogc2Vzc2lvbiBvdXQgb2YgIgorCQkJCSAgICAibWJ1ZnNcbiIsIG5vZGUtPm5kX0lE KTsKKwkJCWVsc2UgeworCQkJCXN0cnVjdCBwcHBvZV9mdWxsX2hkciAqd2g7CisJCQkJc3RydWN0 IHBwcG9lX3RhZyAqdGFnOworCQkJCWludCAgICAgZXJyb3IgPSAwOworCisJCQkJd2ggPSBtdG9k KG0sIHN0cnVjdCBwcHBvZV9mdWxsX2hkciAqKTsKKwkJCQliY29weSgmc3AtPnBrdF9oZHIsIHdo LCBzaXplb2YoKndoKSk7CisKKwkJCQkvKiBSZXZlcnQgdGhlIHN0b3JlZCBoZWFkZXIgdG8gRElT Qy9QQURNIG1vZGUuICovCisJCQkJd2gtPnBoLmNvZGUgPSBQQURNX0NPREU7CisJCQkJLyoKKwkJ CQkgKiBDb25maWd1cmUgZXRoZXJ0eXBlIGRlcGVuZGluZyBvbiB3aGF0CisJCQkJICogd2FzIHVz ZWQgZHVyaW5nIHNlc3Npb25zIHN0YWdlLgorCQkJCSAqLworCQkJCWlmICh3aC0+ZWguZXRoZXJf dHlwZSA9PQorCQkJCSAgICBFVEhFUlRZUEVfUFBQT0VfM0NPTV9TRVNTKQorCQkJCQl3aC0+ZWgu ZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9QUFBPRV8zQ09NX0RJU0M7CisJCQkJZWxzZQorCQkJCQl3 aC0+ZWguZXRoZXJfdHlwZSA9IEVUSEVSVFlQRV9QUFBPRV9ESVNDOworCQkJCS8qCisJCQkJICog QWRkIFBBRE0gbWVzc2FnZSBhbmQgYWRqdXN0IHNpemVzLgorCQkJCSAqLworCQkJCXRhZyA9ICh2 b2lkICopKCZ3aC0+cGggKyAxKTsKKwkJCQl0YWctPnRhZ190eXBlID0gUFRUX01PVE07CisJCQkJ dGFnLT50YWdfbGVuID0gaHRvbnMob3VybXNnLT5kYXRhX2xlbik7CisJCQkJc3RybmNweSgoY2hh ciAqKSh0YWcgKyAxKSwgb3VybXNnLT5kYXRhLCBvdXJtc2ctPmRhdGFfbGVuKTsKKwkJCQltLT5t X3BrdGhkci5sZW4gPSBtLT5tX2xlbiA9IHNpemVvZigqd2gpICsgc2l6ZW9mKCp0YWcpICsKKwkJ CQkgICAgb3VybXNnLT5kYXRhX2xlbjsKKwkJCQl3aC0+cGgubGVuZ3RoID0gaHRvbnMoc2l6ZW9m KCp0YWcpICsgb3VybXNnLT5kYXRhX2xlbik7CisJCQkJTkdfU0VORF9EQVRBX09OTFkoZXJyb3Is CisJCQkJICAgIHByaXZwLT5ldGhlcm5ldF9ob29rLCBtKTsKKwkJCX0KKwkJCWJyZWFrOworCQkg ICAgfQogCQlkZWZhdWx0OgogCQkJTEVBVkUoRUlOVkFMKTsKIAkJfQpAQCAtMTA2MSwxMCArMTI1 NSw2IEBACiAJbm9kZV9wCW5vZGUgPSBOR19IT09LX05PREUoaG9vayk7CiAJcHJpdl9wCXByaXZw ID0gTkdfTk9ERV9QUklWQVRFKG5vZGUpOwogCW5lZ3AJbmVnID0gc3AtPm5lZzsKLQlzdHJ1Y3Qg ewotCQlzdHJ1Y3QgcHBwb2VfdGFnIGhkcjsKLQkJdW5pb24JdW5pcQlkYXRhOwotCX0gX19wYWNr ZWQgdW5pcXRhZzsKIAlzdHJ1Y3QgIG1idWYgKm0wOwogCWludAllcnJvcjsKIApAQCAtMTA4MCwx MSArMTI3MCw4IEBACiAJbWVtY3B5KCh2b2lkICopJm5lZy0+cGt0LT5wa3RfaGVhZGVyLmVoLCAm cHJpdnAtPmVoLAogCSAgICBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcikpOwogCW5lZy0+cGt0 LT5wa3RfaGVhZGVyLnBoLmNvZGUgPSBQQURJX0NPREU7Ci0JdW5pcXRhZy5oZHIudGFnX3R5cGUg PSBQVFRfSE9TVF9VTklROwotCXVuaXF0YWcuaGRyLnRhZ19sZW4gPSBodG9ucygodV9pbnQxNl90 KXNpemVvZih1bmlxdGFnLmRhdGEpKTsKLQl1bmlxdGFnLmRhdGEucG9pbnRlciA9IHNwOwogCWlu aXRfdGFncyhzcCk7Ci0JaW5zZXJ0X3RhZyhzcCwgJnVuaXF0YWcuaGRyKTsKKwlpbnNlcnRfdGFn KHNwLCAmbmVnLT5ob3N0X3VuaXEuaGRyKTsKIAlpbnNlcnRfdGFnKHNwLCAmbmVnLT5zZXJ2aWNl Lmhkcik7CiAJaWYgKHByaXZwLT5tYXhfcGF5bG9hZC5kYXRhICE9IDApCiAJCWluc2VydF90YWco c3AsICZwcml2cC0+bWF4X3BheWxvYWQuaGRyKTsKQEAgLTExNjMsNiArMTM1MCw1MiBAQAogCXJl dHVybiAoZXJyb3IpOwogfQogCitzdGF0aWMgaW50CitzZW5kX2h1cmwoc2Vzc3Agc3AsIGNvbnN0 IHN0cnVjdCBwcHBvZV90YWcgKnRhZykKK3sKKwlpbnQgZXJyb3IsIHRsZW47CisJc3RydWN0IG5n X21lc2cgKm1zZzsKKwlzdHJ1Y3QgbmdwcHBvZV9wYWRtICpwYWRtOworCisJQ1RSMihLVFJfTkVU LCAiJTIwczogY2FsbGVkICVkIiwgX19mdW5jX18sIHNwLT5TZXNzaW9uX0lEKTsKKworCU5HX01L TUVTU0FHRShtc2csIE5HTV9QUFBPRV9DT09LSUUsIE5HTV9QUFBPRV9IVVJMLAorCSAgICBzaXpl b2Yoc3RydWN0IG5ncHBwb2VfcGFkbSksIE1fTk9XQUlUKTsKKwlpZiAobXNnID09IE5VTEwpCisJ CXJldHVybiAoRU5PTUVNKTsKKworCXBhZG0gPSAoc3RydWN0IG5ncHBwb2VfcGFkbSAqKW1zZy0+ ZGF0YTsKKwl0bGVuID0gbWluKFBQUE9FX1BBRE1fVkFMVUVfU0laRSAtIDEsIG50b2hzKHRhZy0+ dGFnX2xlbikpOworCXN0cm5jcHkocGFkbS0+bXNnLCAoY29uc3QgY2hhciAqKSh0YWcgKyAxKSwg dGxlbik7CisJcGFkbS0+bXNnW3RsZW5dID0gJ1wwJzsKKwlOR19TRU5EX01TR19JRChlcnJvciwg TkdfSE9PS19OT0RFKHNwLT5ob29rKSwgbXNnLCBzcC0+Y3JlYXRvciwgMCk7CisKKwlyZXR1cm4g KGVycm9yKTsKK30KKworc3RhdGljIGludAorc2VuZF9tb3RtKHNlc3NwIHNwLCBjb25zdCBzdHJ1 Y3QgcHBwb2VfdGFnICp0YWcpCit7CisJaW50IGVycm9yLCB0bGVuOworCXN0cnVjdCBuZ19tZXNn ICptc2c7CisJc3RydWN0IG5ncHBwb2VfcGFkbSAqcGFkbTsKKworCUNUUjIoS1RSX05FVCwgIiUy MHM6IGNhbGxlZCAlZCIsIF9fZnVuY19fLCBzcC0+U2Vzc2lvbl9JRCk7CisKKwlOR19NS01FU1NB R0UobXNnLCBOR01fUFBQT0VfQ09PS0lFLCBOR01fUFBQT0VfTU9UTSwKKwkgICAgc2l6ZW9mKHN0 cnVjdCBuZ3BwcG9lX3BhZG0pLCBNX05PV0FJVCk7CisJaWYgKG1zZyA9PSBOVUxMKQorCQlyZXR1 cm4gKEVOT01FTSk7CisKKwlwYWRtID0gKHN0cnVjdCBuZ3BwcG9lX3BhZG0gKiltc2ctPmRhdGE7 CisJdGxlbiA9IG1pbihQUFBPRV9QQURNX1ZBTFVFX1NJWkUgLSAxLCBudG9ocyh0YWctPnRhZ19s ZW4pKTsKKwlzdHJuY3B5KHBhZG0tPm1zZywgKGNvbnN0IGNoYXIgKikodGFnICsgMSksIHRsZW4p OworCXBhZG0tPm1zZ1t0bGVuXSA9ICdcMCc7CisJTkdfU0VORF9NU0dfSUQoZXJyb3IsIE5HX0hP T0tfTk9ERShzcC0+aG9vayksIG1zZywgc3AtPmNyZWF0b3IsIDApOworCisJcmV0dXJuIChlcnJv cik7Cit9CisKIC8qCiAgKiBSZWNlaXZlIGRhdGEgZnJvbSBzZXNzaW9uIGhvb2sgYW5kIGRvIHNv bWV0aGluZyB3aXRoIGl0LgogICovCkBAIC0xMzIwLDYgKzE1NTMsNyBAQAogCWNvbnN0IHByaXZf cAkJcHJpdnAgPSBOR19OT0RFX1BSSVZBVEUobm9kZSk7CiAJc2Vzc3AJCQlzcDsKIAljb25zdCBz dHJ1Y3QgcHBwb2VfdGFnCSp1dGFnID0gTlVMTCwgKnRhZyA9IE5VTEw7CisJY29uc3Qgc3RydWN0 IHBwcG9lX3RhZwlzbnRhZyA9IHsgUFRUX1NSVl9OQU1FLCAwIH07CiAJY29uc3Qgc3RydWN0IHBw cG9lX2Z1bGxfaGRyICp3aDsKIAljb25zdCBzdHJ1Y3QgcHBwb2VfaGRyCSpwaDsKIAluZWdwCQkJ bmVnID0gTlVMTDsKQEAgLTE0MDksMTEgKzE2NDMsOCBAQAogCQkJICogcHJvY2Vzc2luZy4KIAkJ CSAqLwogCQkJdGFnID0gZ2V0X3RhZyhwaCwgUFRUX1NSVl9OQU1FKTsKLQkJCWlmICh0YWcgPT0g TlVMTCkgewotCQkJCUNUUjEoS1RSX05FVCwgIiUyMHM6IFBBREkgdy9vIFNlcnZpY2UtTmFtZSIs Ci0JCQkJICAgIF9fZnVuY19fKTsKLQkJCQlMRUFWRShFTkVUVU5SRUFDSCk7Ci0JCQl9CisJCQlp ZiAodGFnID09IE5VTEwpCisJCQkJdGFnID0gJnNudGFnOwogCiAJCQkvKgogCQkJICogRmlyc3Qs IHRyeSB0byBtYXRjaCBTZXJ2aWNlLU5hbWUgYWdhaW5zdCBvdXIgCkBAIC0xNDM4LDggKzE2Njks NyBAQAogCQkJICogRm9yIG5vdyBzaW1wbHkgYWNjZXB0IHRoZSBmaXJzdCB3ZSByZWNlaXZlLgog CQkJICovCiAJCQl1dGFnID0gZ2V0X3RhZyhwaCwgUFRUX0hPU1RfVU5JUSk7Ci0JCQlpZiAoKHV0 YWcgPT0gTlVMTCkgfHwKLQkJCSAgICAobnRvaHModXRhZy0+dGFnX2xlbikgIT0gc2l6ZW9mKHNw KSkpIHsKKwkJCWlmICh1dGFnID09IE5VTEwpIHsKIAkJCQlsb2coTE9HX05PVElDRSwgIm5nX3Bw cG9lWyV4XTogbm8gaG9zdCAiCiAJCQkJICAgICJ1bmlxdWUgZmllbGRcbiIsIG5vZGUtPm5kX0lE KTsKIAkJCQlMRUFWRShFTkVUVU5SRUFDSCk7CkBAIC0xNTI5LDcgKzE3NTksNyBAQAogCQkJCUxF QVZFKEVORVRVTlJFQUNIKTsKIAkJCX0KIAotCQkJc2VuZGhvb2sgPSBwcHBvZV9maW5kdW5pcShu b2RlLCB1dGFnKTsKKwkJCXNlbmRob29rID0gcHBwb2VfZmluZGNvb2tpZShub2RlLCB1dGFnKTsK IAkJCWlmIChzZW5kaG9vayA9PSBOVUxMKQogCQkJCUxFQVZFKEVORVRVTlJFQUNIKTsKIApAQCAt MTYwNSw4ICsxODM1LDcgQEAKIAkJCSAqIHNldCB1cyBpbnRvIFNlc3Npb24gbW9kZS4KIAkJCSAq LwogCQkJdXRhZyA9IGdldF90YWcocGgsIFBUVF9IT1NUX1VOSVEpOwotCQkJaWYgKCh1dGFnID09 IE5VTEwpIHx8Ci0JCQkgICAgKG50b2hzKHV0YWctPnRhZ19sZW4pICE9IHNpemVvZihzcCkpKSB7 CisJCQlpZiAodXRhZyA9PSBOVUxMKSB7CiAJCQkJTEVBVkUgKEVORVRVTlJFQUNIKTsKIAkJCX0K IAkJCXNlbmRob29rID0gcHBwb2VfZmluZHVuaXEobm9kZSwgdXRhZyk7CkBAIC0xNjU5LDYgKzE4 ODgsMTkgQEAKIAkJCS8qIERpc2Nvbm5lY3QgdGhhdCBob29rLiAqLwogCQkJbmdfcm1ob29rX3Nl bGYoc3AtPmhvb2spOwogCQkJYnJlYWs7CisJCWNhc2UJUEFETV9DT0RFOgorCQkJLyoKKwkJCSAq IFdlIGFyZSBhIGNsaWVudDoKKwkJCSAqIGZpbmQgbWF0Y2hpbmcgcGVlci9zZXNzaW9uIGNvbWJp bmF0aW9uLgorCQkJICovCisJCQlzcCA9IHBwcG9lX2ZpbmRzZXNzaW9uKHByaXZwLCB3aCk7CisJ CQlpZiAoc3AgPT0gTlVMTCkKKwkJCQlMRUFWRSAoRU5FVFVOUkVBQ0gpOworCQkJaWYgKCh0YWcg PSBnZXRfdGFnKHBoLCBQVFRfSFVSTCkpKQorCQkJCXNlbmRfaHVybChzcCwgdGFnKTsKKwkJCWlm ICgodGFnID0gZ2V0X3RhZyhwaCwgUFRUX01PVE0pKSkKKwkJCQlzZW5kX21vdG0oc3AsIHRhZyk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCUxFQVZFKEVQRk5PU1VQUE9SVCk7CiAJCX0KQEAg LTE3ODEsNyArMjAyMyw3IEBACiAJCQlzdHJ1Y3QgbWJ1ZiAqbTsKIAogCQkJLyogR2VuZXJhdGUg YSBwYWNrZXQgb2YgdGhhdCB0eXBlLiAqLwotCQkJTUdFVEhEUihtLCBNX05PV0FJVCwgTVRfREFU QSk7CisJCQltID0gbV9nZXRoZHIoTV9OT1dBSVQsIE1UX0RBVEEpOwogCQkJaWYgKG0gPT0gTlVM TCkKIAkJCQlsb2coTE9HX05PVElDRSwgIm5nX3BwcG9lWyV4XTogc2Vzc2lvbiBvdXQgb2YgIgog CQkJCSAgICAibWJ1ZnNcbiIsIG5vZGUtPm5kX0lEKTsKQEAgLTE3OTEsOCArMjAzMyw2IEBACiAJ CQkJaW50CW1zZ2xlbiA9IHN0cmxlbihTSUdOT0ZGKTsKIAkJCQlpbnQJZXJyb3IgPSAwOwogCi0J CQkJbS0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOwotCQkJCW0tPm1fcGt0aGRyLmxlbiA9IG0tPm1f bGVuID0gc2l6ZW9mKCp3aCk7CiAJCQkJd2ggPSBtdG9kKG0sIHN0cnVjdCBwcHBvZV9mdWxsX2hk ciAqKTsKIAkJCQliY29weSgmc3AtPnBrdF9oZHIsIHdoLCBzaXplb2YoKndoKSk7CiAKQEAgLTE4 MTUsOCArMjA1NSw4IEBACiAJCQkJdGFnLT50YWdfdHlwZSA9IFBUVF9HRU5fRVJSOwogCQkJCXRh Zy0+dGFnX2xlbiA9IGh0b25zKCh1X2ludDE2X3QpbXNnbGVuKTsKIAkJCQlzdHJuY3B5KChjaGFy ICopKHRhZyArIDEpLCBTSUdOT0ZGLCBtc2dsZW4pOwotCQkJCW0tPm1fcGt0aGRyLmxlbiA9ICht LT5tX2xlbiArPSBzaXplb2YoKnRhZykgKwotCQkJCSAgICBtc2dsZW4pOworCQkJCW0tPm1fcGt0 aGRyLmxlbiA9IG0tPm1fbGVuID0gc2l6ZW9mKCp3aCkgKyBzaXplb2YoKnRhZykgKworCQkJCSAg ICBtc2dsZW47CiAJCQkJd2gtPnBoLmxlbmd0aCA9IGh0b25zKHNpemVvZigqdGFnKSArIG1zZ2xl bik7CiAJCQkJTkdfU0VORF9EQVRBX09OTFkoZXJyb3IsCiAJCQkJCXByaXZwLT5ldGhlcm5ldF9o b29rLCBtKTsKQEAgLTE5MzMsNiArMjE3Myw4IEBACiAJCWNhc2UJUFRUX1NZU19FUlI6CiAJCWNh c2UJUFRUX0dFTl9FUlI6CiAJCWNhc2UJUFRUX01BWF9QQVlMOgorCQljYXNlCVBUVF9IVVJMOgor CQljYXNlCVBUVF9NT1RNOgogCQkJYnJlYWs7CiAJCX0KIAkJcHQgPSAoY29uc3Qgc3RydWN0IHBw cG9lX3RhZyopcHRuOwpkaWZmIC0tZ2l0IGEvc2hhcmUvbWFuL21hbjQvbmdfcHBwb2UuNCBiL3No YXJlL21hbi9tYW40L25nX3BwcG9lLjQKLS0tIGEvc2hhcmUvbWFuL21hbjQvbmdfcHBwb2UuNAor KysgYi9zaGFyZS9tYW4vbWFuNC9uZ19wcHBvZS40CkBAIC0zNSw3ICszNSw3IEBACiAuXCIgJEZy ZWVCU0QkCiAuXCIgJFdoaXN0bGU6IG5nX3BwcG9lLjgsdiAxLjEgMTk5OS8wMS8yNSAyMzo0Njoy NyBhcmNoaWUgRXhwICQKIC5cIgotLkRkIFNlcHRlbWJlciAxNSwgMjAxNQorLkRkIEFwcmlsIDQs IDIwMTcKIC5EdCBOR19QUFBPRSA0CiAuT3MKIC5TaCBOQU1FCkBAIC0xMDQsMTIgKzEwNCwzMyBA QAogSXQgbXVzdCBiZSBuZXdseSBjcmVhdGVkIGFuZCBhIHNlcnZpY2UgbmFtZSBjYW4gYmUgZ2l2 ZW4gYXMgYW4gYXJndW1lbnQuCiBJdCBpcyBsZWdhbCB0byBzcGVjaWZ5IGEgemVyby1sZW5ndGgg c2VydmljZSBuYW1lLCB0aGlzIGlzIGNvbW1vbgogb24gc29tZSBEU0wgc2V0dXBzLgotSXQgaXMg cG9zc2libGUgdG8gcmVxdWVzdCBhIGNvbm5lY3Rpb24gdG8gYSBzcGVjaWZpYwotYWNjZXNzIGNv bmNlbnRyYXRvciBieSBpdHMgbmFtZSB1c2luZyB0aGUgIkFDLU5hbWVcXFNlcnZpY2UtTmFtZSIg c3ludGF4LgotQSBzZXNzaW9uIHJlcXVlc3QgcGFja2V0IHdpbGwgYmUgYnJvYWRjYXN0ZWQgb24g dGhlIEV0aGVybmV0LgorSXQgaXMgcG9zc2libGUgdG8gcmVxdWVzdCBhIGNvbm5lY3Rpb24gdG8g YSBzcGVjaWZpYyBhY2Nlc3MgY29uY2VudHJhdG9yLAorYW5kL29yIHNldCBhIHNwZWNpZmljIEhv c3QtVW5pcSB0YWcsIHJlcXVpcmVkIGJ5IHNvbWUgSW50ZXJuZXQgcHJvdmlkZXJzLAordXNpbmcg dGhlCisuUXEgTGkgW0FDLU5hbWVcXF1bSG9zdC1VbmlxfF1TZXJ2aWNlLU5hbWUKK3N5bnRheC4K K1RvIHNldCBhIGJpbmFyeSBIb3N0LVVuaXEsIGl0IG11c3QgYmUgZW5jb2RlZCBhcyBhIGhleGFk ZWNpbWFsIGxvd2VyY2FzZQorc3RyaW5nIGFuZCBwcmVmaXhlZCB3aXRoIAorLlFxIExpIDB4ICwK K2ZvciBleGFtcGxlIAorLlFxIExpIDB4NmQ3OTJkNzQ2MTY3CitpcyBlcXVpdmFsZW50IHRvCisu UXEgTGkgbXktdGFnIC4KK0Egc2Vzc2lvbiByZXF1ZXN0IHBhY2tldCB3aWxsIGJlIGJyb2FkY2Fz dCBvbiB0aGUgRXRoZXJuZXQuCiBUaGlzIGNvbW1hbmQgdXNlcyB0aGUKIC5EdiBuZ3BwcG9lX2lu aXRfZGF0YQogc3RydWN0dXJlIHNob3duIGJlbG93LgorRm9yIGV4YW1wbGUsIHRoaXMgaW5pdCBk YXRhIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvCitjb25uZWN0IHRvCisuUXEgTGkgbXktaXNwCitz ZXJ2aWNlIHdpdGgKKy5RcSBMaSBteS1ob3N0Cit1bmlxIHRhZywgYWNjZXB0aW5nIG9ubHkKKy5R cSBMaSByZW1vdGUtYWMKK2FzIGFjY2VzcyBjb25jZW50cmF0b3I6CisuQmQgLWxpdGVyYWwgLW9m ZnNldCBpbmRlbnQKKyJyZW1vdGUtYWNcXG15LWhvc3R8bXktaXNwIgorLkVkCiAuSXQgRHYgTkdN X1BQUE9FX0xJU1RFTiBQcSBJYyBwcHBvZV9saXN0ZW4KIFRlbGwgYSBub21pbmF0ZWQgbmV3bHkg Y3JlYXRlZCBob29rIHRoYXQgaXRzIHNlc3Npb24gc2hvdWxkIGVudGVyCiB0aGUgc3RhdGUgbWFj aGluZSBhcyBhIHNlcnZlciBsaXN0ZW5lci4KQEAgLTI1OCw3ICsyNzksNDEgQEAKICAgICB1aW50 MTZfdCBkYXRhOwogfTsKIC5FZAorLkl0IER2IE5HTV9QUFBPRV9TRU5EX0hVUkwgUHEgSWMgc2Vu ZF9odXJsCitUZWxsIGEgbm9taW5hdGVkIGhvb2sgd2l0aCBhbiBhY3RpdmUgc2Vzc2lvbiB0byBz ZW5kIGEgUEFETSBtZXNzYWdlIHdpdGgKK2EgSFVSTCB0YWcuCitUaGUgYXJndW1lbnQgaXMgdGhl IFVSTCB0byBiZSBkZWxpdmVyZWQgdG8gdGhlIGNsaWVudDoKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0 IGluZGVudAorbmdjdGwgbXNnIGZ4cDA6b3JwaGFucyBzZW5kX2h1cmwgJ3sgaG9vaz0ibXlIb29r IiBkYXRhPSJodHRwOi8vZXhhbXBsZS5uZXQvY3BlIiB9JworLkVkCisuSXQgRHYgTkdNX1BQUE9F X1NFTkRfTU9UTSBQcSBJYyBzZW5kX21vdG0KK1RlbGwgYSBub21pbmF0ZWQgaG9vayB3aXRoIGFu IGFjdGl2ZSBzZXNzaW9uIHRvIHNlbmQgYSBQQURNIG1lc3NhZ2Ugd2l0aAorYSBNT1RNIHRhZy4K K1RoZSBhcmd1bWVudCBpcyB0aGUgbWVzc2FnZSB0byBiZSBkZWxpdmVyZWQgdG8gdGhlIGNsaWVu dDoKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGluZGVudAorbmdjdGwgbXNnIGZ4cDA6b3JwaGFucyBz ZW5kX21vdG0gJ3sgaG9vaz0ibXlIb29rIiBkYXRhPSJXZWxjb21lIGFib2FyZCIgfScKKy5FZAog LkVsCisuUHAKK1RoZSB0d28gY29tbWFuZHMgYWJvdmUgdXNlIHRoZSBzYW1lIG5ncHBwb2VfaW5p dF9kYXRhIHN0cnVjdHVyZSBkZXNjcmliZWQKK2Fib3ZlLgorLkJsIC10YWcgLXdpZHRoIDNuCisu SXQgRHYgTkdNX1BQUE9FX0hVUkwKK1RoaXMgY29tbWFuZCBpcyBzZW50IHRvIHRoZSBub2RlIHRo YXQgc3RhcnRlZCB0aGlzIHNlc3Npb24gd2hlbiBhIFBBRE0KK21lc3NhZ2Ugd2l0aCBhIEhVUkwg dGFnIGlzIHJlY2VpdmVkLCBhbmQgY29udGFpbnMgYSBVUkwgdGhhdCB0aGUgaG9zdCBjYW4KK3Bh c3MgdG8gYSB3ZWIgYnJvd3NlciBmb3IgcHJlc2VudGF0aW9uIHRvIHRoZSB1c2VyLgorLkl0IER2 IE5HTV9QUFBPRV9NT1RNCitUaGlzIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgbm9kZSB0aGF0IHN0 YXJ0ZWQgdGhpcyBzZXNzaW9uIHdoZW4gYSBQQURNCittZXNzYWdlIHdpdGggYSBNT1RNIHRhZyBp cyByZWNlaXZlZCwgYW5kIGNvbnRhaW5zIGEgTWVzc2FnZSBPZiBUaGUKK01pbnV0ZSB0aGF0IHRo ZSBob3N0IGNhbiBkaXNwbGF5IHRvIHRoZSB1c2VyLgorLkVsCisuUHAKK1RoZSB0d28gY29tbWFu ZHMgYWJvdmUgdXNlIGEgY29tbW9uIGRhdGEgc3RydWN0dXJlOgorLkJkIC1saXRlcmFsIC1vZmZz ZXQgNG4KK3N0cnVjdCBuZ3BwcG9lX3BhZG0geworICAgIGNoYXIgICAgbXNnW1BQUE9FX1BBRE1f VkFMVUVfU0laRV07Cit9OworLkVkCiAuU2ggU0hVVERPV04KIFRoaXMgbm9kZSBzaHV0cyBkb3du IHVwb24gcmVjZWlwdCBvZiBhCiAuRHYgTkdNX1NIVVRET1dOCgo= --b1_8513b9a6eeb72a7bfdce60f3f947d8d7--