From owner-freebsd-net@freebsd.org Fri Mar 17 16:51:05 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 3F97CD109E8 for ; Fri, 17 Mar 2017 16:51:05 +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 E5C701EB0 for ; Fri, 17 Mar 2017 16:51:04 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 43592CDED; Fri, 17 Mar 2017 16:51:04 +0000 (UTC) Date: Fri, 17 Mar 2017 16:51:04 +0000 To: freebsd-net@freebsd.org From: "asomers (Alan Somers)" Reply-to: D9451+325+eaa6f8a0c0731bfe@reviews.freebsd.org Subject: [Differential] D9451: Constrain IPv6 interface routes to each FIB 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: D9451: Constrain IPv6 interface routes to each FIB X-Herald-Rules: <28>, <81>, <51> 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: Precedence: bulk In-Reply-To: References: Thread-Index: MzA4MmVhNjA3MDYxYjk1ZGE4NzFjZWJhMzgyIFjME/g= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_fb72446cf287def9e9cac5f8e88fc51b" 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: Fri, 17 Mar 2017 16:51:05 -0000 --b1_fb72446cf287def9e9cac5f8e88fc51b Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 VGhpcyByZXZpc2lvbiB3YXMgYXV0b21hdGljYWxseSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGNv bW1pdHRlZCBjaGFuZ2VzLgpDbG9zZWQgYnkgY29tbWl0IHJTMzE1NDU4OiBDb25zdHJhaW4gSVB2 NiByb3V0ZXMgdG8gc2luZ2xlIEZJQnMgd2hlbiBuZXQuYWRkX2FkZHJfYWxsZmlicz0wIChhdXRo b3JlZCBieSBhc29tZXJzKS4KCkNIQU5HRUQgUFJJT1IgVE8gQ09NTUlUCiAgaHR0cHM6Ly9yZXZp ZXdzLmZyZWVic2Qub3JnL0Q5NDUxP3ZzPTI2MDUzJmlkPTI2MzU5I3RvYwoKUkVQT1NJVE9SWQog IHJTIEZyZWVCU0Qgc3JjIHJlcG9zaXRvcnkKCkNIQU5HRVMgU0lOQ0UgTEFTVCBVUERBVEUKICBo dHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvRDk0NTE/dnM9MjYwNTMmaWQ9MjYzNTkKClJFVklT SU9OIERFVEFJTAogIGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EOTQ1MQoKQUZGRUNURUQg RklMRVMKICBoZWFkL3N5cy9uZXRpbmV0Ni9pY21wNi5jCiAgaGVhZC9zeXMvbmV0aW5ldDYvaW42 LmMKICBoZWFkL3N5cy9uZXRpbmV0Ni9pbjZfc3JjLmMKICBoZWFkL3N5cy9uZXRpbmV0Ni9uZDYu YwogIGhlYWQvc3lzL25ldGluZXQ2L25kNi5oCiAgaGVhZC9zeXMvbmV0aW5ldDYvbmQ2X25ici5j CiAgaGVhZC9zeXMvbmV0aW5ldDYvbmQ2X3J0ci5jCiAgaGVhZC90ZXN0cy9zeXMvbmV0aW5ldC9m aWJzX3Rlc3Quc2gKCkVNQUlMIFBSRUZFUkVOQ0VTCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qu b3JnL3NldHRpbmdzL3BhbmVsL2VtYWlscHJlZmVyZW5jZXMvCgpUbzogamh1amhpdGlfYWRqZWN0 aXZpc20ub3JnLCAjbmV0d29yaywgYnosIGFzb21lcnMKQ2M6IGpjaCwgYnosIGltcCwgYWUsIGZy ZWVic2QtbmV0LWxpc3QK --b1_fb72446cf287def9e9cac5f8e88fc51b Content-Type: text/x-patch; charset=utf-8; name="D9451.26359.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D9451.26359.patch" ZGlmZiAtLWdpdCBhL2hlYWQvdGVzdHMvc3lzL25ldGluZXQvZmlic190ZXN0LnNoIGIvaGVhZC90 ZXN0cy9zeXMvbmV0aW5ldC9maWJzX3Rlc3Quc2gKLS0tIGEvaGVhZC90ZXN0cy9zeXMvbmV0aW5l dC9maWJzX3Rlc3Quc2gKKysrIGIvaGVhZC90ZXN0cy9zeXMvbmV0aW5ldC9maWJzX3Rlc3Quc2gK QEAgLTE2Myw3ICsxNjMsNiBAQAogCiBsb29wYmFja19hbmRfbmV0d29ya19yb3V0ZXNfb25fbm9u ZGVmYXVsdF9maWJfaW5ldDZfYm9keSgpCiB7Ci0JYXRmX2V4cGVjdF9mYWlsICJQUjE5NjM2MSBJ UHY2IG5ldHdvcmsgcm91dGVzIGRvbid0IHJlc3BlY3QgbmV0LmFkZF9hZGRyX2FsbGZpYnM9MCIK IAkjIENvbmZpZ3VyZSB0aGUgVEFQIGludGVyZmFjZSB0byB1c2UgYSBub25yb3V0ZWFibGUgUkZD Mzg0OQogCSMgYWRkcmVzcyBhbmQgYSBub24tZGVmYXVsdCBmaWIKIAlBRERSPSIyMDAxOmRiODo6 MiIKQEAgLTQ1MiwxNSArNDUxLDE0IEBACiB9CiBzbGFhY19vbl9ub25kZWZhdWx0X2ZpYjZfYm9k eSgpCiB7CisJYXRmX3NraXAgIkJVRzIxNzg3MSBTTEFBQyBvbiBhIG5ld2x5IGNyZWF0ZWQgZXBh aXIgc29tZXRpbWVzIGZhaWxzIHRvIGFkZCByb3V0ZXMiCiAJIyBDb25maWd1cmUgdGhlIGVwYWly IGludGVyZmFjZXMgdG8gdXNlIG5vbnJvdXRlYWJsZSBSRkMzODQ5CiAJIyBhZGRyZXNzZXMgYW5k IG5vbi1kZWZhdWx0IEZJQnMKIAlBRERSPSIyMDAxOmRiODo6MiIKIAlHQVRFV0FZPSIyMDAxOmRi ODo6MSIKIAlTVUJORVQ9IjIwMDE6ZGI4OiIKIAlNQVNLPSI2NCIKIAotCWF0Zl9leHBlY3RfZmFp bCAiUFIxOTYzNjEgSVB2NiBuZXR3b3JrIHJvdXRlcyBkb24ndCByZXNwZWN0IG5ldC5hZGRfYWRk cl9hbGxmaWJzPTAiCi0KIAkjIENoZWNrIHN5c3RlbSBjb25maWd1cmF0aW9uCiAJaWYgWyAwICE9 IGBzeXNjdGwgLW4gbmV0LmFkZF9hZGRyX2FsbGZpYnNgIF07IHRoZW4KIAkJYXRmX3NraXAgIlRo aXMgdGVzdCByZXF1aXJlcyBuZXQuYWRkX2FkZHJfYWxsZmlicz0wIgpAQCAtNDc4LDggKzQ3Niw4 IEBACiAJIyBDb25maWd1cmUgZXBhaXIgaW50ZXJmYWNlcwogCWdldF9lcGFpcgogCXNldHVwX2lm YWNlICIkRVBBSVJBIiAiJEZJQjAiIGluZXQ2ICR7QUREUn0gJHtNQVNLfQotCWVjaG8gaWZjb25m aWcgIiRFUEFJUkIiIHVwIGluZXQ2IGZpYiAkRklCMSAtaWZkaXNhYmxlZCBhY2NlcHRfcnRhZHYK LQlpZmNvbmZpZyAiJEVQQUlSQiIgaW5ldDYgLWlmZGlzYWJsZWQgYWNjZXB0X3J0YWR2IGZpYiAk RklCMSB1cAorCWVjaG8gc2V0ZmliICRGSUIxIGlmY29uZmlnICIkRVBBSVJCIiBpbmV0NiAtaWZk aXNhYmxlZCBhY2NlcHRfcnRhZHYgZmliICRGSUIxIHVwCisJc2V0ZmliICRGSUIxIGlmY29uZmln ICIkRVBBSVJCIiBpbmV0NiAtaWZkaXNhYmxlZCBhY2NlcHRfcnRhZHYgZmliICRGSUIxIHVwCiAJ cnRhZHZkIC1wIHJ0YWR2ZC5waWQgLUMgcnRhZHZkLnNvY2sgLWMgL2Rldi9udWxsICIkRVBBSVJB IgogCXJ0c29sICIkRVBBSVJCIgogCkBAIC01MTQsNyArNTEyLDcgQEAKIAljbGVhbnVwX2lmYWNl cwogCWlmIFsgLWYgInJ0YWR2ZC5waWQiIF07IHRoZW4KIAkJcGtpbGwgLUYgcnRhZHZkLnBpZAot CQlybSBydGFkdmQucGlkCisJCXJtIC1mIHJ0YWR2ZC5waWQKIAlmaQogCWlmIFsgLWYgInJmYzYy MDR3My5zdGF0ZSIgXSA7IHRoZW4KIAkJc3lzY3RsICJuZXQuaW5ldDYuaXA2LnJmYzYyMDR3MyI9 YGNhdCAicmZjNjIwNHczLnN0YXRlImAKQEAgLTY4NSw4ICs2ODMsNiBAQAogCVRBUkdFVD0iMjAw MTpkYjg6OjEwMCIKIAlTUkNESVI9YGF0Zl9nZXRfc3JjZGlyYAogCi0JYXRmX2V4cGVjdF9mYWls ICJQUjE5NjM2MSBJUHY2IG5ldHdvcmsgcm91dGVzIGRvbid0IHJlc3BlY3QgbmV0LmFkZF9hZGRy X2FsbGZpYnM9MCIKLQogCSMgQ2hlY2sgc3lzdGVtIGNvbmZpZ3VyYXRpb24KIAlpZiBbIDAgIT0g YHN5c2N0bCAtbiBuZXQuYWRkX2FkZHJfYWxsZmlic2AgXTsgdGhlbgogCQlhdGZfc2tpcCAiVGhp cyB0ZXN0IHJlcXVpcmVzIG5ldC5hZGRfYWRkcl9hbGxmaWJzPTAiCkBAIC03NjcsNyArNzYzLDcg QEAKIAlsb2NhbCBFUEFJUkQKIAogCWlmIEVQQUlSRD1gaWZjb25maWcgZXBhaXIgY3JlYXRlYDsg dGhlbgotCQkjIFJlY29yZCB0aGUgVEFQIGRldmljZSBzbyB3ZSBjYW4gY2xlYW4gaXQgdXAgbGF0 ZXIKKwkJIyBSZWNvcmQgdGhlIGVwYWlyIGRldmljZSBzbyB3ZSBjYW4gY2xlYW4gaXQgdXAgbGF0 ZXIKIAkJZWNobyAke0VQQUlSRH0gPj4gImlmYWNlc190b19jbGVhbnVwIgogCQlFUEFJUkE9JHtF UEFJUkR9CiAJCUVQQUlSQj0ke0VQQUlSRCVhfWIKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL25ldGlu ZXQ2L25kNl9ydHIuYyBiL2hlYWQvc3lzL25ldGluZXQ2L25kNl9ydHIuYwotLS0gYS9oZWFkL3N5 cy9uZXRpbmV0Ni9uZDZfcnRyLmMKKysrIGIvaGVhZC9zeXMvbmV0aW5ldDYvbmQ2X3J0ci5jCkBA IC01MDAsNyArNTAwLDcgQEAKIAogCWVycm9yID0gaW42X3J0cmVxdWVzdChSVE1fQURELCAoc3Ry dWN0IHNvY2thZGRyICopJmRlZiwKIAkgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZnYXRlLCAoc3Ry dWN0IHNvY2thZGRyICopJm1hc2ssCi0JICAgIFJURl9HQVRFV0FZLCAmbmV3cnQsIFJUX0RFRkFV TFRfRklCKTsKKwkgICAgUlRGX0dBVEVXQVksICZuZXdydCwgbmV3LT5pZnAtPmlmX2ZpYik7CiAJ aWYgKG5ld3J0KSB7CiAJCW5kNl9ydG1zZyhSVE1fQURELCBuZXdydCk7IC8qIHRlbGwgdXNlciBw cm9jZXNzICovCiAJCVJURlJFRShuZXdydCk7CkBAIC01NTEsOCArNTUxLDggQEAKIAogLyoKICAq IFJlbW92ZSB0aGUgZGVmYXVsdCByb3V0ZSBmb3IgYSBnaXZlbiByb3V0ZXIuCi0gKiBUaGlzIGlz IGp1c3QgYSBzdWJyb3V0aW5lIGZ1bmN0aW9uIGZvciBkZWZyb3V0ZXJfc2VsZWN0KCksIGFuZCBz aG91bGQKLSAqIG5vdCBiZSBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLgorICogVGhpcyBpcyBq dXN0IGEgc3Vicm91dGluZSBmdW5jdGlvbiBmb3IgZGVmcm91dGVyX3NlbGVjdF9maWIoKSwgYW5k CisgKiBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuCiAgKi8KIHN0YXRp YyB2b2lkCiBkZWZyb3V0ZXJfZGVscmVxKHN0cnVjdCBuZF9kZWZyb3V0ZXIgKmRyKQpAQCAtNTcx LDcgKzU3MSw3IEBACiAKIAlpbjZfcnRyZXF1ZXN0KFJUTV9ERUxFVEUsIChzdHJ1Y3Qgc29ja2Fk ZHIgKikmZGVmLAogCSAgICAoc3RydWN0IHNvY2thZGRyICopJmdhdGUsCi0JICAgIChzdHJ1Y3Qg c29ja2FkZHIgKikmbWFzaywgUlRGX0dBVEVXQVksICZvbGRydCwgUlRfREVGQVVMVF9GSUIpOwor CSAgICAoc3RydWN0IHNvY2thZGRyICopJm1hc2ssIFJURl9HQVRFV0FZLCAmb2xkcnQsIGRyLT5p ZnAtPmlmX2ZpYik7CiAJaWYgKG9sZHJ0KSB7CiAJCW5kNl9ydG1zZyhSVE1fREVMRVRFLCBvbGRy dCk7CiAJCVJURlJFRShvbGRydCk7CkBAIC02OTgsMTEgKzY5OCwxMSBAQAogCiAJLyoKIAkgKiBJ ZiB0aGUgcm91dGVyIGlzIHRoZSBwcmltYXJ5IG9uZSwgY2hvb3NlIGEgbmV3IG9uZS4KLQkgKiBO b3RlIHRoYXQgZGVmcm91dGVyX3NlbGVjdCgpIHdpbGwgcmVtb3ZlIHRoZSBjdXJyZW50IGdhdGV3 YXkKLQkgKiBmcm9tIHRoZSByb3V0aW5nIHRhYmxlLgorCSAqIE5vdGUgdGhhdCBkZWZyb3V0ZXJf c2VsZWN0X2ZpYigpIHdpbGwgcmVtb3ZlIHRoZSBjdXJyZW50CisgICAgICAgICAqIGdhdGV3YXkg ZnJvbSB0aGUgcm91dGluZyB0YWJsZS4KIAkgKi8KIAlpZiAoZGVsZHIpCi0JCWRlZnJvdXRlcl9z ZWxlY3QoKTsKKwkJZGVmcm91dGVyX3NlbGVjdF9maWIoZGVsZHItPmlmcC0+aWZfZmliKTsKIAog CS8qCiAJICogUmVsZWFzZSB0aGUgbGlzdCByZWZlcmVuY2UuCkBAIC03MzAsMTMgKzczMCwyMyBA QAogICogZXZlbiB3aGVuIHRoZSBtdWx0aXBhdGggcm91dGluZyBpcyBhdmFpbGFibGUsIGJlY2F1 c2Ugd2UncmUgbm90IHN1cmUgYWJvdXQKICAqIHRoZSBiZW5lZml0cyBmb3Igc3R1YiBob3N0cyBj b21wYXJpbmcgdG8gdGhlIHJpc2sgb2YgbWFraW5nIHRoZSBjb2RlCiAgKiBjb21wbGljYXRlZCBh bmQgdGhlIHBvc3NpYmlsaXR5IG9mIGludHJvZHVjaW5nIGJ1Z3MuCisgKgorICogV2UgbWFpbnRh aW4gYSBzaW5nbGUgbGlzdCBvZiByb3V0ZXJzIGZvciBtdWx0aXBsZSBGSUJzLCBvbmx5IGNvbnNp ZGVyaW5nIG9uZQorICogYXQgYSB0aW1lIGJhc2VkIG9uIHRoZSByZWNlaXZpbmcgaW50ZXJmYWNl J3MgRklCLiBJZiBAZmlibnVtIGlzIFJUX0FMTF9GSUJTLAorICogd2UgZG8gdGhlIHdob2xlIHRo aW5nIG11bHRpcGxlIHRpbWVzLgogICovCiB2b2lkCi1kZWZyb3V0ZXJfc2VsZWN0KHZvaWQpCitk ZWZyb3V0ZXJfc2VsZWN0X2ZpYihpbnQgZmlibnVtKQogewogCXN0cnVjdCBuZF9kZWZyb3V0ZXIg KmRyLCAqc2VsZWN0ZWRfZHIsICppbnN0YWxsZWRfZHI7CiAJc3RydWN0IGxsZW50cnkgKmxuID0g TlVMTDsKIAorCWlmIChmaWJudW0gPT0gUlRfQUxMX0ZJQlMpIHsKKwkJZm9yIChmaWJudW0gPSAw OyBmaWJudW0gPCBydF9udW1maWJzOyBmaWJudW0rKykgeworCQkJZGVmcm91dGVyX3NlbGVjdF9m aWIoZmlibnVtKTsKKwkJfQorCX0KKwogCU5ENl9STE9DSygpOwogCS8qCiAJICogTGV0J3MgaGFu ZGxlIGVhc3kgY2FzZSAoMykgZmlyc3Q6CkBAIC03NTUsNyArNzY1LDcgQEAKIAlzZWxlY3RlZF9k ciA9IGluc3RhbGxlZF9kciA9IE5VTEw7CiAJVEFJTFFfRk9SRUFDSChkciwgJlZfbmRfZGVmcm91 dGVyLCBkcl9lbnRyeSkgewogCQlJRl9BRkRBVEFfUkxPQ0soZHItPmlmcCk7Ci0JCWlmIChzZWxl Y3RlZF9kciA9PSBOVUxMICYmCisJCWlmIChzZWxlY3RlZF9kciA9PSBOVUxMICYmIGRyLT5pZnAt PmlmX2ZpYiA9PSBmaWJudW0gJiYKIAkJICAgIChsbiA9IG5kNl9sb29rdXAoJmRyLT5ydGFkZHIs IDAsIGRyLT5pZnApKSAmJgogCQkgICAgTkQ2X0lTX0xMSU5GT19QUk9CUkVBQ0gobG4pKSB7CiAJ CQlzZWxlY3RlZF9kciA9IGRyOwpAQCAtNzY3LDE0ICs3NzcsMTcgQEAKIAkJCWxuID0gTlVMTDsK IAkJfQogCi0JCWlmIChkci0+aW5zdGFsbGVkKSB7CisJCWlmIChkci0+aW5zdGFsbGVkICYmIGRy LT5pZnAtPmlmX2ZpYiA9PSBmaWJudW0pIHsKIAkJCWlmIChpbnN0YWxsZWRfZHIgPT0gTlVMTCkg ewogCQkJCWluc3RhbGxlZF9kciA9IGRyOwogCQkJCWRlZnJvdXRlcl9yZWYoaW5zdGFsbGVkX2Ry KTsKIAkJCX0gZWxzZSB7Ci0JCQkJLyogdGhpcyBzaG91bGQgbm90IGhhcHBlbi4gIHdhcm4gZm9y IGRpYWdub3Npcy4gKi8KLQkJCQlsb2coTE9HX0VSUiwKLQkJICAgICJkZWZyb3V0ZXJfc2VsZWN0 OiBtb3JlIHRoYW4gb25lIHJvdXRlciBpcyBpbnN0YWxsZWRcbiIpOworCQkJCS8qCisJCQkJICog dGhpcyBzaG91bGQgbm90IGhhcHBlbi4KKwkJCQkgKiB3YXJuIGZvciBkaWFnbm9zaXMuCisJCQkJ ICovCisJCQkJbG9nKExPR19FUlIsICJkZWZyb3V0ZXJfc2VsZWN0X2ZpYjogbW9yZSB0aGFuICIK KwkJCQkgICAgICAgICAgICAgIm9uZSByb3V0ZXIgaXMgaW5zdGFsbGVkXG4iKTsKIAkJCX0KIAkJ fQogCX0KQEAgLTc4OSwxNCArODAyLDI0IEBACiAJaWYgKHNlbGVjdGVkX2RyID09IE5VTEwpIHsK IAkJaWYgKGluc3RhbGxlZF9kciA9PSBOVUxMIHx8CiAJCSAgICBUQUlMUV9ORVhUKGluc3RhbGxl ZF9kciwgZHJfZW50cnkpID09IE5VTEwpCi0JCQlzZWxlY3RlZF9kciA9IFRBSUxRX0ZJUlNUKCZW X25kX2RlZnJvdXRlcik7CisJCQlkciA9IFRBSUxRX0ZJUlNUKCZWX25kX2RlZnJvdXRlcik7CiAJ CWVsc2UKLQkJCXNlbGVjdGVkX2RyID0gVEFJTFFfTkVYVChpbnN0YWxsZWRfZHIsIGRyX2VudHJ5 KTsKLQkJZGVmcm91dGVyX3JlZihzZWxlY3RlZF9kcik7CisJCQlkciA9IFRBSUxRX05FWFQoaW5z dGFsbGVkX2RyLCBkcl9lbnRyeSk7CisKKwkJLyogRW5zdXJlIHdlIHNlbGVjdCBhIHJvdXRlciBm b3IgdGhpcyBGSUIuICovCisJCVRBSUxRX0ZPUkVBQ0hfRlJPTShkciwgJlZfbmRfZGVmcm91dGVy LCBkcl9lbnRyeSkgeworCQkJaWYgKGRyLT5pZnAtPmlmX2ZpYiA9PSBmaWJudW0pIHsKKwkJCQlz ZWxlY3RlZF9kciA9IGRyOworCQkJCWRlZnJvdXRlcl9yZWYoc2VsZWN0ZWRfZHIpOworCQkJCWJy ZWFrOworCQkJfQorCQl9CiAJfSBlbHNlIGlmIChpbnN0YWxsZWRfZHIgIT0gTlVMTCkgewogCQlJ Rl9BRkRBVEFfUkxPQ0soaW5zdGFsbGVkX2RyLT5pZnApOwotCQlpZiAoKGxuID0gbmQ2X2xvb2t1 cCgmaW5zdGFsbGVkX2RyLT5ydGFkZHIsIDAsIGluc3RhbGxlZF9kci0+aWZwKSkgJiYKKwkJaWYg KChsbiA9IG5kNl9sb29rdXAoJmluc3RhbGxlZF9kci0+cnRhZGRyLCAwLAorCQkgICAgICAgICAg ICAgICAgICAgICBpbnN0YWxsZWRfZHItPmlmcCkpICYmCiAJCSAgICBORDZfSVNfTExJTkZPX1BS T0JSRUFDSChsbikgJiYKKwkJICAgIGluc3RhbGxlZF9kci0+aWZwLT5pZl9maWIgPT0gZmlibnVt ICYmCiAJCSAgICBydHByZWYoc2VsZWN0ZWRfZHIpIDw9IHJ0cHJlZihpbnN0YWxsZWRfZHIpKSB7 CiAJCQlkZWZyb3V0ZXJfcmVsZShzZWxlY3RlZF9kcik7CiAJCQlzZWxlY3RlZF9kciA9IGluc3Rh bGxlZF9kcjsKQEAgLTgwOCwxOCArODMxLDMwIEBACiAJTkQ2X1JVTkxPQ0soKTsKIAogCS8qCi0J ICogSWYgdGhlIHNlbGVjdGVkIHJvdXRlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgaW5zdGFsbGVk IG9uZSwKLQkgKiByZW1vdmUgdGhlIGluc3RhbGxlZCByb3V0ZXIgYW5kIGluc3RhbGwgdGhlIHNl bGVjdGVkIG9uZS4KLQkgKiBOb3RlIHRoYXQgdGhlIHNlbGVjdGVkIHJvdXRlciBpcyBuZXZlciBO VUxMIGhlcmUuCisJICogSWYgd2Ugc2VsZWN0ZWQgYSByb3V0ZXIgZm9yIHRoaXMgRklCIGFuZCBp dCdzIGRpZmZlcmVudAorCSAqIHRoYW4gdGhlIGluc3RhbGxlZCBvbmUsIHJlbW92ZSB0aGUgaW5z dGFsbGVkIHJvdXRlciBhbmQKKwkgKiBpbnN0YWxsIHRoZSBzZWxlY3RlZCBvbmUgaW4gaXRzIHBs YWNlLgogCSAqLwogCWlmIChpbnN0YWxsZWRfZHIgIT0gc2VsZWN0ZWRfZHIpIHsKIAkJaWYgKGlu c3RhbGxlZF9kciAhPSBOVUxMKSB7CiAJCQlkZWZyb3V0ZXJfZGVscmVxKGluc3RhbGxlZF9kcik7 CiAJCQlkZWZyb3V0ZXJfcmVsZShpbnN0YWxsZWRfZHIpOwogCQl9Ci0JCWRlZnJvdXRlcl9hZGRy ZXEoc2VsZWN0ZWRfZHIpOworCQlpZiAoc2VsZWN0ZWRfZHIgIT0gTlVMTCkKKwkJCWRlZnJvdXRl cl9hZGRyZXEoc2VsZWN0ZWRfZHIpOwogCX0KLQlkZWZyb3V0ZXJfcmVsZShzZWxlY3RlZF9kcik7 CisJaWYgKHNlbGVjdGVkX2RyICE9IE5VTEwpCisJCWRlZnJvdXRlcl9yZWxlKHNlbGVjdGVkX2Ry KTsKK30KKworLyoKKyAqIE1haW50YWluIG9sZCBLUEkgZm9yIGRlZmF1bHQgcm91dGVyIHNlbGVj dGlvbi4KKyAqIElmIHVuc3BlY2lmaWVkLCB3ZSBjYW4gcmUtc2VsZWN0IHJvdXRlcnMgZm9yIGFs bCBGSUJzLgorICovCit2b2lkCitkZWZyb3V0ZXJfc2VsZWN0KHZvaWQpCit7CisJZGVmcm91dGVy X3NlbGVjdF9maWIoUlRfQUxMX0ZJQlMpOwogfQogCiAvKgpAQCAtOTQyLDcgKzk3Nyw3IEBACiAJ Vl9uZDZfbGlzdF9nZW5pZCsrOwogCU5ENl9XVU5MT0NLKCk7CiAKLQlkZWZyb3V0ZXJfc2VsZWN0 KCk7CisJZGVmcm91dGVyX3NlbGVjdF9maWIobmV3LT5pZnAtPmlmX2ZpYik7CiAKIAlyZXR1cm4g KG4pOwogfQpAQCAtMTczMSw3ICsxNzY2LDcgQEAKIAlzdHJ1Y3QgcnRlbnRyeSAqcnQ7CiAJc3Ry dWN0IHNvY2thZGRyX2luNiBtYXNrNjsKIAl1X2xvbmcgcnRmbGFnczsKLQlpbnQgZXJyb3IsIGFf ZmFpbHVyZSwgZmlibnVtOworCWludCBlcnJvciwgYV9mYWlsdXJlLCBmaWJudW0sIG1heGZpYjsK IAogCS8qCiAJICogaW42X2lmaW5pdCgpIHNldHMgbmQ2X3J0cmVxdWVzdCB0byBpZmFfcnRyZXF1 ZXN0IGZvciBhbGwgaWZhZGRycy4KQEAgLTE3NDIsOCArMTc3NywxNSBAQAogCW1hc2s2LnNpbjZf YWRkciA9IHByLT5uZHByX21hc2s7CiAJcnRmbGFncyA9IChpZmEtPmlmYV9mbGFncyAmIH5JRkFf UlRTRUxGKSB8IFJURl9VUDsKIAorCWlmKFZfcnRfYWRkX2FkZHJfYWxsZmlicykgeworCQlmaWJu dW0gPSAwOworCQltYXhmaWIgPSBydF9udW1maWJzOworCX0gZWxzZSB7CisJCWZpYm51bSA9IGlm YS0+aWZhX2lmcC0+aWZfZmliOworCQltYXhmaWIgPSBmaWJudW0gKyAxOworCX0KIAlhX2ZhaWx1 cmUgPSAwOwotCWZvciAoZmlibnVtID0gMDsgZmlibnVtIDwgcnRfbnVtZmliczsgZmlibnVtKysp IHsKKwlmb3IgKDsgZmlibnVtIDwgbWF4ZmliOyBmaWJudW0rKykgewogCiAJCXJ0ID0gTlVMTDsK IAkJZXJyb3IgPSBpbjZfcnRyZXF1ZXN0KFJUTV9BREQsCkBAIC0xODMxLDYgKzE4NzMsMTAgQEAK IAkJaWYgKChvcHItPm5kcHJfc3RhdGVmbGFncyAmIE5EUFJGX09OTElOSykgPT0gMCkKIAkJCWNv bnRpbnVlOwogCisJCWlmICghVl9ydF9hZGRfYWRkcl9hbGxmaWJzICYmCisJCSAgICBvcHItPm5k cHJfaWZwLT5pZl9maWIgIT0gcHItPm5kcHJfaWZwLT5pZl9maWIpCisJCQljb250aW51ZTsKKwog CQlpZiAob3ByLT5uZHByX3BsZW4gPT0gcHItPm5kcHJfcGxlbiAmJgogCQkgICAgaW42X2FyZV9w cmVmaXhfZXF1YWwoJnByLT5uZHByX3ByZWZpeC5zaW42X2FkZHIsCiAJCSAgICAmb3ByLT5uZHBy X3ByZWZpeC5zaW42X2FkZHIsIHByLT5uZHByX3BsZW4pKSB7CkBAIC0xODkxLDcgKzE5MzcsNyBA QAogCXN0cnVjdCBydGVudHJ5ICpydDsKIAljaGFyIGlwNmJ1ZltJTkVUNl9BRERSU1RSTEVOXTsK IAl1aW50NjRfdCBnZW5pZDsKLQlpbnQgZmlibnVtLCBhX2ZhaWx1cmU7CisJaW50IGZpYm51bSwg bWF4ZmliLCBhX2ZhaWx1cmU7CiAKIAlORDZfT05MSU5LX0xPQ0tfQVNTRVJUKCk7CiAJTkQ2X1VO TE9DS19BU1NFUlQoKTsKQEAgLTE5MDksOCArMTk1NSwxNiBAQAogCW1hc2s2LnNpbjZfbGVuID0g c2l6ZW9mKHNhNik7CiAJYmNvcHkoJnByLT5uZHByX21hc2ssICZtYXNrNi5zaW42X2FkZHIsIHNp emVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKIAorCWlmIChWX3J0X2FkZF9hZGRyX2FsbGZpYnMpIHsK KwkJZmlibnVtID0gMDsKKwkJbWF4ZmliID0gcnRfbnVtZmliczsKKwl9IGVsc2UgeworCQlmaWJu dW0gPSBpZnAtPmlmX2ZpYjsKKwkJbWF4ZmliID0gZmlibnVtICsgMTsKKwl9CisKIAlhX2ZhaWx1 cmUgPSAwOwotCWZvciAoZmlibnVtID0gMDsgZmlibnVtIDwgcnRfbnVtZmliczsgZmlibnVtKysp IHsKKwlmb3IgKDsgZmlibnVtIDwgbWF4ZmliOyBmaWJudW0rKykgewogCQlydCA9IE5VTEw7CiAJ CWVycm9yID0gaW42X3J0cmVxdWVzdChSVE1fREVMRVRFLCAoc3RydWN0IHNvY2thZGRyICopJnNh NiwgTlVMTCwKIAkJICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbWFzazYsIDAsICZydCwgZmlibnVt KTsKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL25ldGluZXQ2L25kNl9uYnIuYyBiL2hlYWQvc3lzL25l dGluZXQ2L25kNl9uYnIuYwotLS0gYS9oZWFkL3N5cy9uZXRpbmV0Ni9uZDZfbmJyLmMKKysrIGIv aGVhZC9zeXMvbmV0aW5ldDYvbmQ2X25ici5jCkBAIC0yNjIsOCArMjYyLDcgQEAKIAkJYnplcm8o JmluZm8sIHNpemVvZihpbmZvKSk7CiAJCWluZm8ucnRpX2luZm9bUlRBWF9HQVRFV0FZXSA9IChz dHJ1Y3Qgc29ja2FkZHIgKikmcnRfZ2F0ZXdheTsKIAotCQkvKiBBbHdheXMgdXNlIHRoZSBkZWZh dWx0IEZJQi4gKi8KLQkJaWYgKHJpYl9sb29rdXBfaW5mbyhSVF9ERUZBVUxUX0ZJQiwgKHN0cnVj dCBzb2NrYWRkciAqKSZkc3Q2LAorCQlpZiAocmliX2xvb2t1cF9pbmZvKGlmcC0+aWZfZmliLCAo c3RydWN0IHNvY2thZGRyICopJmRzdDYsCiAJCSAgICAwLCAwLCAmaW5mbykgPT0gMCkgewogCQkJ aWYgKChpbmZvLnJ0aV9mbGFncyAmIFJURl9BTk5PVU5DRSkgIT0gMCAmJgogCQkJICAgIHJ0X2dh dGV3YXkuc2RsX2ZhbWlseSA9PSBBRl9MSU5LKSB7CkBAIC00ODUsNyArNDg0LDcgQEAKIAkJCXVp bnQzMl90IHNjb3BlaWQ7CiAKIAkJCWluNl9zcGxpdHNjb3BlKCZpcDYtPmlwNl9kc3QsICZkc3Q2 LCAmc2NvcGVpZCk7Ci0JCQllcnJvciA9IGluNl9zZWxlY3RzcmNfYWRkcihSVF9ERUZBVUxUX0ZJ QiwgJmRzdDYsCisJCQllcnJvciA9IGluNl9zZWxlY3RzcmNfYWRkcihmaWJudW0sICZkc3Q2LAog CQkJICAgIHNjb3BlaWQsIGlmcCwgJnNyYzYsIE5VTEwpOwogCQkJaWYgKGVycm9yKSB7CiAJCQkJ Y2hhciBpcDZidWZbSU5FVDZfQUREUlNUUkxFTl07CkBAIC05ODIsNyArOTgxLDcgQEAKIAkgKiBT ZWxlY3QgYSBzb3VyY2Ugd2hvc2Ugc2NvcGUgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgZGVz dC4KIAkgKi8KIAlpbjZfc3BsaXRzY29wZSgmZGFkZHI2LCAmZHN0NiwgJnNjb3BlaWQpOwotCWVy cm9yID0gaW42X3NlbGVjdHNyY19hZGRyKFJUX0RFRkFVTFRfRklCLCAmZHN0NiwKKwllcnJvciA9 IGluNl9zZWxlY3RzcmNfYWRkcihmaWJudW0sICZkc3Q2LAogCSAgICBzY29wZWlkLCBpZnAsICZz cmM2LCBOVUxMKTsKIAlpZiAoZXJyb3IpIHsKIAkJY2hhciBpcDZidWZbSU5FVDZfQUREUlNUUkxF Tl07CmRpZmYgLS1naXQgYS9oZWFkL3N5cy9uZXRpbmV0Ni9uZDYuaCBiL2hlYWQvc3lzL25ldGlu ZXQ2L25kNi5oCi0tLSBhL2hlYWQvc3lzL25ldGluZXQ2L25kNi5oCisrKyBiL2hlYWQvc3lzL25l dGluZXQ2L25kNi5oCkBAIC00NjksNiArNDY5LDcgQEAKIHZvaWQgbmQ2X3JzX2lucHV0KHN0cnVj dCBtYnVmICosIGludCwgaW50KTsKIHZvaWQgbmQ2X3JhX2lucHV0KHN0cnVjdCBtYnVmICosIGlu dCwgaW50KTsKIHZvaWQgZGVmcm91dGVyX3Jlc2V0KHZvaWQpOwordm9pZCBkZWZyb3V0ZXJfc2Vs ZWN0X2ZpYihpbnQgZmlibnVtKTsKIHZvaWQgZGVmcm91dGVyX3NlbGVjdCh2b2lkKTsKIHZvaWQg ZGVmcm91dGVyX3JlZihzdHJ1Y3QgbmRfZGVmcm91dGVyICopOwogdm9pZCBkZWZyb3V0ZXJfcmVs ZShzdHJ1Y3QgbmRfZGVmcm91dGVyICopOwpkaWZmIC0tZ2l0IGEvaGVhZC9zeXMvbmV0aW5ldDYv bmQ2LmMgYi9oZWFkL3N5cy9uZXRpbmV0Ni9uZDYuYwotLS0gYS9oZWFkL3N5cy9uZXRpbmV0Ni9u ZDYuYworKysgYi9oZWFkL3N5cy9uZXRpbmV0Ni9uZDYuYwpAQCAtMTU3LDYgKzE1Nyw3IEBACiAJ c3RydWN0IHNvY2thZGRyX2RsIGd3OwogCXN0cnVjdCBpZm5ldCAqaWZwOwogCWludCB0eXBlOwor CWludCBmaWJudW07CiAKIAlMTEVfV0xPQ0tfQVNTRVJUKGxsZSk7CiAKQEAgLTE5NCw4ICsxOTUs OSBAQAogCXJ0aW5mby5ydGlfaW5mb1tSVEFYX0RTVF0gPSAoc3RydWN0IHNvY2thZGRyICopJmRz dDsKIAlydGluZm8ucnRpX2luZm9bUlRBWF9HQVRFV0FZXSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikm Z3c7CiAJcnRpbmZvLnJ0aV9hZGRycyA9IFJUQV9EU1QgfCBSVEFfR0FURVdBWTsKKwlmaWJudW0g PSBWX3J0X2FkZF9hZGRyX2FsbGZpYnMgPyBSVF9BTExfRklCUyA6IGlmcC0+aWZfZmliOwogCXJ0 X21pc3Ntc2dfZmliKHR5cGUsICZydGluZm8sIFJURl9IT1NUIHwgUlRGX0xMREFUQSB8ICgKLQkg ICAgdHlwZSA9PSBSVE1fQUREID8gUlRGX1VQOiAwKSwgMCwgUlRfREVGQVVMVF9GSUIpOworCSAg ICB0eXBlID09IFJUTV9BREQgPyBSVEZfVVA6IDApLCAwLCBmaWJudW0pOwogfQogCiAvKgpAQCAt MTIwMCw3ICsxMjAyLDcgQEAKIAogCWlmIChORF9JRklORk8oaWZwKS0+ZmxhZ3MgJiBORDZfSUZG X0FDQ0VQVF9SVEFEVikgewogCQkvKiBSZWZyZXNoIGRlZmF1bHQgcm91dGVyIGxpc3QuICovCi0J CWRlZnJvdXRlcl9zZWxlY3QoKTsKKwkJZGVmcm91dGVyX3NlbGVjdF9maWIoaWZwLT5pZl9maWIp OwogCX0KIH0KIApAQCAtMTI1Myw3ICsxMjU1LDcgQEAKIG5kNl9pc19uZXdfYWRkcl9uZWlnaGJv cihjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLCBzdHJ1Y3QgaWZuZXQgKmlmcCkKIHsK IAlzdHJ1Y3QgbmRfcHJlZml4ICpwcjsKLQlzdHJ1Y3QgaWZhZGRyICpkc3RhZGRyOworCXN0cnVj dCBpZmFkZHIgKmlmYTsKIAlzdHJ1Y3QgcnRfYWRkcmluZm8gaW5mbzsKIAlzdHJ1Y3Qgc29ja2Fk ZHJfaW42IHJ0X2tleTsKIAljb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdDY7CkBAIC0xMjg3LDkg KzEyODksNiBAQAogCWJ6ZXJvKCZpbmZvLCBzaXplb2YoaW5mbykpOwogCWluZm8ucnRpX2luZm9b UlRBWF9EU1RdID0gKHN0cnVjdCBzb2NrYWRkciAqKSZydF9rZXk7CiAKLQkvKiBBbHdheXMgdXNl IHRoZSBkZWZhdWx0IEZJQiBoZXJlLiBYWE1FIC0gd2h5PyAqLwotCWZpYm51bSA9IFJUX0RFRkFV TFRfRklCOwotCiAJLyoKIAkgKiBJZiB0aGUgYWRkcmVzcyBtYXRjaGVzIG9uZSBvZiBvdXIgYWRk cmVzc2VzLAogCSAqIGl0IHNob3VsZCBiZSBhIG5laWdoYm9yLgpAQCAtMTMwMywxOSArMTMwMiwz MSBAQAogCQkJY29udGludWU7CiAKIAkJaWYgKChwci0+bmRwcl9zdGF0ZWZsYWdzICYgTkRQUkZf T05MSU5LKSA9PSAwKSB7Ci0JCQkvKiBBbHdheXMgdXNlIHRoZSBkZWZhdWx0IEZJQiBoZXJlLiAq LwogCQkJZHN0NiA9IChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmcHItPm5kcHJfcHJlZml4Owog Ci0JCQlnZW5pZCA9IFZfbmQ2X2xpc3RfZ2VuaWQ7Ci0JCQlORDZfUlVOTE9DSygpOwotCi0JCQkv KiBSZXN0b3JlIGxlbmd0aCBmaWVsZCBiZWZvcmUgcmV0cnlpbmcgbG9va3VwICovCi0JCQlydF9r ZXkuc2luNl9sZW4gPSBzaXplb2YocnRfa2V5KTsKLQkJCWVycm9yID0gcmliX2xvb2t1cF9pbmZv KGZpYm51bSwgZHN0NiwgMCwgMCwgJmluZm8pOworCQkJLyoKKwkJCSAqIFdlIG9ubHkgbmVlZCB0 byBjaGVjayBhbGwgRklCcyBpZiBhZGRfYWRkcl9hbGxmaWJzCisJCQkgKiBpcyB1bnNldC4gSWYg c2V0LCBjaGVja2luZyBhbnkgRklCIHdpbGwgc3VmZmljZS4KKwkJCSAqLworCQkJZmlibnVtID0g Vl9ydF9hZGRfYWRkcl9hbGxmaWJzID8gcnRfbnVtZmlicyAtIDEgOiAwOworCQkJZm9yICg7IGZp Ym51bSA8IHJ0X251bWZpYnM7IGZpYm51bSsrKSB7CisJCQkJZ2VuaWQgPSBWX25kNl9saXN0X2dl bmlkOworCQkJCU5ENl9SVU5MT0NLKCk7CiAKLQkJCU5ENl9STE9DSygpOwotCQkJaWYgKGdlbmlk ICE9IFZfbmQ2X2xpc3RfZ2VuaWQpCi0JCQkJZ290byByZXN0YXJ0OworCQkJCS8qCisJCQkJICog UmVzdG9yZSBsZW5ndGggZmllbGQgYmVmb3JlCisJCQkJICogcmV0cnlpbmcgbG9va3VwCisJCQkJ ICovCisJCQkJcnRfa2V5LnNpbjZfbGVuID0gc2l6ZW9mKHJ0X2tleSk7CisJCQkJZXJyb3IgPSBy aWJfbG9va3VwX2luZm8oZmlibnVtLCBkc3Q2LCAwLCAwLAorCQkJCQkJICAgICAgICAmaW5mbyk7 CisKKwkJCQlORDZfUkxPQ0soKTsKKwkJCQlpZiAoZ2VuaWQgIT0gVl9uZDZfbGlzdF9nZW5pZCkK KwkJCQkJZ290byByZXN0YXJ0OworCQkJCWlmIChlcnJvciA9PSAwKQorCQkJCQlicmVhazsKKwkJ CX0KIAkJCWlmIChlcnJvciAhPSAwKQogCQkJCWNvbnRpbnVlOwogCkBAIC0xMzQ2LDEzICsxMzU3 LDE4IEBACiAJICogSWYgdGhlIGFkZHJlc3MgaXMgYXNzaWduZWQgb24gdGhlIG5vZGUgb2YgdGhl IG90aGVyIHNpZGUgb2YKIAkgKiBhIHAycCBpbnRlcmZhY2UsIHRoZSBhZGRyZXNzIHNob3VsZCBi ZSBhIG5laWdoYm9yLgogCSAqLwotCWRzdGFkZHIgPSBpZmFfaWZ3aXRoZHN0YWRkcigoY29uc3Qg c3RydWN0IHNvY2thZGRyICopYWRkciwgUlRfQUxMX0ZJQlMpOwotCWlmIChkc3RhZGRyICE9IE5V TEwpIHsKLQkJaWYgKGRzdGFkZHItPmlmYV9pZnAgPT0gaWZwKSB7Ci0JCQlpZmFfZnJlZShkc3Rh ZGRyKTsKLQkJCXJldHVybiAoMSk7CisJaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUE9JTlRPUE9J TlQpIHsKKwkJSUZfQUREUl9STE9DSyhpZnApOworCQlUQUlMUV9GT1JFQUNIKGlmYSwgJmlmcC0+ aWZfYWRkcmhlYWQsIGlmYV9saW5rKSB7CisJCQlpZiAoaWZhLT5pZmFfYWRkci0+c2FfZmFtaWx5 ICE9IGFkZHItPnNpbjZfZmFtaWx5KQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGlmYS0+aWZhX2Rz dGFkZHIgIT0gTlVMTCAmJgorCQkJICAgIHNhX2VxdWFsKGFkZHIsIGlmYS0+aWZhX2RzdGFkZHIp KSB7CisJCQkJSUZfQUREUl9SVU5MT0NLKGlmcCk7CisJCQkJcmV0dXJuIDE7CisJCQl9CiAJCX0K LQkJaWZhX2ZyZWUoZHN0YWRkcik7CisJCUlGX0FERFJfUlVOTE9DSyhpZnApOwogCX0KIAogCS8q CkBAIC0xNDg1LDcgKzE1MDEsNyBAQAogCQkJLyoKIAkJCSAqIFdlIG5lZWQgdG8gdW5sb2NrIHRv IGF2b2lkIGEgTE9SIHdpdGggcnQ2X2ZsdXNoKCkgd2l0aCB0aGUKIAkJCSAqIHJuaCBhbmQgZm9y IHRoZSBjYWxscyB0byBwZnhsaXN0X29ubGlua19jaGVjaygpIGFuZAotCQkJICogZGVmcm91dGVy X3NlbGVjdCgpIGluIHRoZSBibG9jayBmdXJ0aGVyIGRvd24gZm9yIGNhbGxzCisJCQkgKiBkZWZy b3V0ZXJfc2VsZWN0X2ZpYigpIGluIHRoZSBibG9jayBmdXJ0aGVyIGRvd24gZm9yIGNhbGxzCiAJ CQkgKiBpbnRvIG5kNl9sb29rdXAoKS4gIFdlIHN0aWxsIGhvbGQgYSByZWYuCiAJCQkgKi8KIAkJ CUxMRV9XVU5MT0NLKGxuKTsKQEAgLTE1MDAsNyArMTUxNiw3IEBACiAKIAkJaWYgKGRyKSB7CiAJ CQkvKgotCQkJICogU2luY2UgZGVmcm91dGVyX3NlbGVjdCgpIGRvZXMgbm90IGFmZmVjdCB0aGUK KwkJCSAqIFNpbmNlIGRlZnJvdXRlcl9zZWxlY3RfZmliKCkgZG9lcyBub3QgYWZmZWN0IHRoZQog CQkJICogb24tbGluayBkZXRlcm1pbmF0aW9uIGFuZCBNSVA2IG5lZWRzIHRoZSBjaGVjawogCQkJ ICogYmVmb3JlIHRoZSBkZWZhdWx0IHJvdXRlciBzZWxlY3Rpb24sIHdlIHBlcmZvcm0KIAkJCSAq IHRoZSBjaGVjayBub3cuCkBAIC0xNTEwLDcgKzE1MjYsNyBAQAogCQkJLyoKIAkJCSAqIFJlZnJl c2ggZGVmYXVsdCByb3V0ZXIgbGlzdC4KIAkJCSAqLwotCQkJZGVmcm91dGVyX3NlbGVjdCgpOwor CQkJZGVmcm91dGVyX3NlbGVjdF9maWIoZHItPmlmcC0+aWZfZmliKTsKIAkJfQogCiAJCS8qCkBA IC0yMTA0LDIwICsyMTIwLDIwIEBACiAJICogUXVlc3Rpb246IGNhbiB3ZSByZXN0cmljdCB0aGUg Zmlyc3QgY29uZGl0aW9uIHRvIHRoZSAiaXNfbmV3ZW50cnkiCiAJICogY2FzZT8KIAkgKiBYWFg6 IHdoZW4gd2UgaGVhciBhbiBSQSBmcm9tIGEgbmV3IHJvdXRlciB3aXRoIHRoZSBsaW5rLWxheWVy Ci0JICogYWRkcmVzcyBvcHRpb24sIGRlZnJvdXRlcl9zZWxlY3QoKSBpcyBjYWxsZWQgdHdpY2Us IHNpbmNlCisJICogYWRkcmVzcyBvcHRpb24sIGRlZnJvdXRlcl9zZWxlY3RfZmliKCkgaXMgY2Fs bGVkIHR3aWNlLCBzaW5jZQogCSAqIGRlZnJ0cmxpc3RfdXBkYXRlIGNhbGxlZCB0aGUgZnVuY3Rp b24gYXMgd2VsbC4gIEhvd2V2ZXIsIEkgYmVsaWV2ZQogCSAqIHdlIGNhbiBjb21wcm9taXNlIHRo ZSBvdmVyaGVhZCwgc2luY2UgaXQgb25seSBoYXBwZW5zIHRoZSBmaXJzdAogCSAqIHRpbWUuCi0J ICogWFhYOiBhbHRob3VnaCBkZWZyb3V0ZXJfc2VsZWN0KCkgc2hvdWxkIG5vdCBoYXZlIGEgYmFk IGVmZmVjdAorCSAqIFhYWDogYWx0aG91Z2ggZGVmcm91dGVyX3NlbGVjdF9maWIoKSBzaG91bGQg bm90IGhhdmUgYSBiYWQgZWZmZWN0CiAJICogZm9yIHRob3NlIGFyZSBub3QgYXV0b2NvbmZpZ3Vy ZWQgaG9zdHMsIHdlIGV4cGxpY2l0bHkgYXZvaWQgc3VjaAogCSAqIGNhc2VzIGZvciBzYWZldHku CiAJICovCiAJaWYgKChkb191cGRhdGUgfHwgaXNfbmV3ZW50cnkpICYmIHJvdXRlciAmJgogCSAg ICBORF9JRklORk8oaWZwKS0+ZmxhZ3MgJiBORDZfSUZGX0FDQ0VQVF9SVEFEVikgewogCQkvKgog CQkgKiBndWFyYW50ZWVkIHJlY3Vyc2lvbgogCQkgKi8KLQkJZGVmcm91dGVyX3NlbGVjdCgpOwor CQlkZWZyb3V0ZXJfc2VsZWN0X2ZpYihpZnAtPmlmX2ZpYik7CiAJfQogfQogCmRpZmYgLS1naXQg YS9oZWFkL3N5cy9uZXRpbmV0Ni9pbjZfc3JjLmMgYi9oZWFkL3N5cy9uZXRpbmV0Ni9pbjZfc3Jj LmMKLS0tIGEvaGVhZC9zeXMvbmV0aW5ldDYvaW42X3NyYy5jCisrKyBiL2hlYWQvc3lzL25ldGlu ZXQ2L2luNl9zcmMuYwpAQCAtMjk3LDcgKzI5Nyw3IEBACiAJICovCiAJLyogZ2V0IHRoZSBvdXRn b2luZyBpbnRlcmZhY2UgKi8KIAlpZiAoKGVycm9yID0gaW42X3NlbGVjdGlmKGRzdHNvY2ssIG9w dHMsIG1vcHRzLCAmaWZwLCBvaWZwLAotCSAgICAoaW5wICE9IE5VTEwpID8gaW5wLT5pbnBfaW5j LmluY19maWJudW0gOiBSVF9ERUZBVUxUX0ZJQikpICE9IDApCisJICAgIChpbnAgIT0gTlVMTCkg PyBpbnAtPmlucF9pbmMuaW5jX2ZpYm51bSA6IGZpYm51bSkpICE9IDApCiAJCXJldHVybiAoZXJy b3IpOwogCiAjaWZkZWYgRElBR05PU1RJQwpAQCAtNTYzLDcgKzU2Myw3IEBACiAJdWludDMyX3Qg ZmlibnVtOwogCWludCBlcnJvcjsKIAotCWZpYm51bSA9IChpbnAgIT0gTlVMTCkgPyBpbnAtPmlu cF9pbmMuaW5jX2ZpYm51bSA6IFJUX0RFRkFVTFRfRklCOworCWZpYm51bSA9IGlucC0+aW5wX2lu Yy5pbmNfZmlibnVtOwogCXJldGlmcCA9IE5VTEw7CiAKIAllcnJvciA9IGluNl9zZWxlY3RzcmMo ZmlibnVtLCBkc3Rzb2NrLCBvcHRzLCBpbnAsIGNyZWQsICZyZXRpZnAsIHNyY3ApOwpkaWZmIC0t Z2l0IGEvaGVhZC9zeXMvbmV0aW5ldDYvaW42LmMgYi9oZWFkL3N5cy9uZXRpbmV0Ni9pbjYuYwot LS0gYS9oZWFkL3N5cy9uZXRpbmV0Ni9pbjYuYworKysgYi9oZWFkL3N5cy9uZXRpbmV0Ni9pbjYu YwpAQCAtMTU5LDYgKzE1OSw3IEBACiAJc3RydWN0IHNvY2thZGRyX2RsIGdhdGV3YXk7CiAJc3Ry dWN0IHNvY2thZGRyX2luNiBtYXNrLCBhZGRyOwogCXN0cnVjdCBydGVudHJ5IHJ0OworCWludCBm aWJudW07CiAKIAkvKgogCSAqIGluaXRpYWxpemUgZm9yIHJ0bXNnIGdlbmVyYXRpb24KQEAgLTE3 Niw4ICsxNzcsOSBAQAogCXJ0LnJ0X2ZsYWdzID0gUlRGX0hPU1QgfCBSVEZfU1RBVElDOwogCWlm IChjbWQgPT0gUlRNX0FERCkKIAkJcnQucnRfZmxhZ3MgfD0gUlRGX1VQOwotCS8qIEFubm91bmNl IGFycml2YWwgb2YgbG9jYWwgYWRkcmVzcyB0byBhbGwgRklCcy4gKi8KLQlydF9uZXdhZGRybXNn KGNtZCwgJmlhLT5pYV9pZmEsIDAsICZydCk7CisJZmlibnVtID0gVl9ydF9hZGRfYWRkcl9hbGxm aWJzID8gUlRfQUxMX0ZJQlMgOiBpYTYyaWZhKGlhKS0+aWZhX2lmcC0+aWZfZmliOworCS8qIEFu bm91bmNlIGFycml2YWwgb2YgbG9jYWwgYWRkcmVzcyB0byB0aGlzIEZJQi4gKi8KKwlydF9uZXdh ZGRybXNnX2ZpYihjbWQsICZpYS0+aWFfaWZhLCAwLCAmcnQsIGZpYm51bSk7CiB9CiAKIGludApA QCAtMjExNywxNSArMjExOSwxNSBAQAogCXVpbnQzMl90IHNjb3BlaWQ7CiAJaW50IGVycm9yOwog CWNoYXIgaXA2YnVmW0lORVQ2X0FERFJTVFJMRU5dOworCWludCBmaWJudW07CiAKIAlLQVNTRVJU KGwzYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2LAogCSAgICAoInNpbl9mYW1pbHkgJWQiLCBs M2FkZHItPnNhX2ZhbWlseSkpOwogCi0JLyogT3VyIGxvY2FsIGFkZHJlc3NlcyBhcmUgYWx3YXlz IG9ubHkgaW5zdGFsbGVkIG9uIHRoZSBkZWZhdWx0IEZJQi4gKi8KLQogCXNpbjYgPSAoY29uc3Qg c3RydWN0IHNvY2thZGRyX2luNiAqKWwzYWRkcjsKIAlpbjZfc3BsaXRzY29wZSgmc2luNi0+c2lu Nl9hZGRyLCAmZHN0LCAmc2NvcGVpZCk7Ci0JZXJyb3IgPSBmaWI2X2xvb2t1cF9uaF9iYXNpYyhS VF9ERUZBVUxUX0ZJQiwgJmRzdCwgc2NvcGVpZCwgMCwgMCwgJm5oNik7CisJZmlibnVtID0gVl9y dF9hZGRfYWRkcl9hbGxmaWJzID8gUlRfREVGQVVMVF9GSUIgOiBpZnAtPmlmX2ZpYjsKKwllcnJv ciA9IGZpYjZfbG9va3VwX25oX2Jhc2ljKGZpYm51bSwgJmRzdCwgc2NvcGVpZCwgMCwgMCwgJm5o Nik7CiAJaWYgKGVycm9yICE9IDAgfHwgKG5oNi5uaF9mbGFncyAmIE5IRl9HQVRFV0FZKSB8fCBu aDYubmhfaWZwICE9IGlmcCkgewogCQlzdHJ1Y3QgaWZhZGRyICppZmE7CiAJCS8qCmRpZmYgLS1n aXQgYS9oZWFkL3N5cy9uZXRpbmV0Ni9pY21wNi5jIGIvaGVhZC9zeXMvbmV0aW5ldDYvaWNtcDYu YwotLS0gYS9oZWFkL3N5cy9uZXRpbmV0Ni9pY21wNi5jCisrKyBiL2hlYWQvc3lzL25ldGluZXQ2 L2ljbXA2LmMKQEAgLTIxNDcsNyArMjE0Nyw3IEBACiAJCSAqIHNvdXJjZSBhZGRyZXNzIG9mIHRo ZSBlcnJvbmVvdXMgcGFja2V0LgogCQkgKi8KIAkJaW42X3NwbGl0c2NvcGUoJmlwNi0+aXA2X3Ny YywgJmRzdDYsICZzY29wZWlkKTsKLQkJZXJyb3IgPSBpbjZfc2VsZWN0c3JjX2FkZHIoUlRfREVG QVVMVF9GSUIsICZkc3Q2LAorCQllcnJvciA9IGluNl9zZWxlY3RzcmNfYWRkcihNX0dFVEZJQiht KSwgJmRzdDYsCiAJCSAgICBzY29wZWlkLCBOVUxMLCAmc3JjNiwgJmhsaW0pOwogCiAJCWlmIChl cnJvcikgewpAQCAtMjI4OSw3ICsyMjg5LDcgQEAKIAl1aW50MzJfdCBzY29wZWlkOwogCiAJaW42 X3NwbGl0c2NvcGUoJnJlZGRzdDYsICZrZHN0LCAmc2NvcGVpZCk7Ci0JaWYgKGZpYjZfbG9va3Vw X25oX2Jhc2ljKFJUX0RFRkFVTFRfRklCLCAma2RzdCwgc2NvcGVpZCwgMCwgMCwmbmg2KT09MCl7 CisJaWYgKGZpYjZfbG9va3VwX25oX2Jhc2ljKGlmcC0+aWZfZmliLCAma2RzdCwgc2NvcGVpZCwg MCwgMCwmbmg2KT09MCl7CiAJCWlmICgobmg2Lm5oX2ZsYWdzICYgTkhGX0dBVEVXQVkpID09IDAp IHsKIAkJCW5kNmxvZygoTE9HX0VSUiwKIAkJCSAgICAiSUNNUDYgcmVkaXJlY3QgcmVqZWN0ZWQ7 IG5vIHJvdXRlICIKCg== --b1_fb72446cf287def9e9cac5f8e88fc51b--