From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v8 11/11] vpci/msix: add MSI-X handlers Date: Tue, 23 Jan 2018 15:07:35 +0000 Message-ID: <20180123150735.74779-12-roger.pau@citrix.com> References: <20180123150735.74779-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ee0Br-0003i0-S6 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2018 15:08:47 +0000 In-Reply-To: <20180123150735.74779-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Boris Ostrovsky , Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWRkIGhhbmRsZXJzIGZvciBhY2Nlc3NlcyB0byB0aGUgTVNJLVggbWVzc2FnZSBjb250cm9sIGZp ZWxkIG9uIHRoZQpQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgYW5kIHRyYXBzIGZvciBhY2Nlc3Nl cyB0byB0aGUgbWVtb3J5IHJlZ2lvbgp0aGF0IGNvbnRhaW5zIHRoZSBNU0ktWCB0YWJsZSBhbmQg UEJBLiBUaGlzIHRyYXBzIGRldGVjdCBhdHRlbXB0cyBmcm9tCnRoZSBndWVzdCB0byBjb25maWd1 cmUgTVNJLVggaW50ZXJydXB0cyBhbmQgcHJvcGVybHkgc2V0cyB0aGVtIHVwLgoKTm90ZSB0aGF0 IGFjY2Vzc2VzIHRvIHRoZSBUYWJsZSBPZmZzZXQsIFRhYmxlIEJJUiwgUEJBIE9mZnNldCBhbmQg UEJBCkJJUiBhcmUgbm90IHRyYXBwZWQgYnkgWGVuIGF0IHRoZSBtb21lbnQuCgpGaW5hbGx5LCB0 dXJuIHRoZSBwYW5pYyBpbiB0aGUgRG9tMCBQVkggYnVpbGRlciBpbnRvIGEgd2FybmluZy4KClNp Z25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0K Q2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHY3OgogLSBTd2l0Y2gg dnBjaS5oIG1hY3JvcyB0byBpbmxpbmUgZnVuY3Rpb25zLgogLSBDaGFuZ2UgdnBjaV9tc2l4X2Fy Y2hfcHJpbnRfZW50cnkgaW50byB2cGNpX21zaXhfYXJjaF9wcmludCBhbmQKICAgbWFrZSBpdCBw cmludCBhbGwgdGhlIGVudHJpZXMuCiAtIEFkZCBhIGxvZyBtZXNzYWdlIGlmIHJhbmdlc2V0X3Jl bW92ZV9yYW5nZSBmYWlscyB0byByZW1vdmUgdGhlIEJBUgogICBNU0ktcmVsYXRlZCByYW5nZS4K IC0gSW50cm9kdWNlIGEgbmV3IHVwZGF0ZV9lbnRyeSB0byBkaXNhYmxlIGFuZCBlbmFibGUgYSBN U0lYIGVudHJ5IGluCiAgIG9yZGVyIHRvIGVpdGhlciB1cGRhdGUgb3Igc2V0IGl0IHVwLiBUaGlz IHJlbW92ZXMgb3BlbiBjb2RpbmcgaXQgaW4KICAgdHdvIGRpZmZlcmVudCBwbGFjZXMuCiAtIFVu aWZ5IGFjY2VzcyBjaGVja3MgaW4gYWNjZXNzX2FsbG93ZWQuCiAtIEFkZCBuZXdsaW5lcyBiZXR3 ZWVuIHN3aXRjaCBjYXNlcy4KIC0gRXhwYW5kIG1heF9lbnRyaWVzIHRvIDEyIGJpdHMuCgpDaGFu Z2VzIHNpbmNlIHY2OgogLSBSZWR1Y2UgdGhlIG91dHB1dCBvZiB0aGUgZGVidWcga2V5cy4KIC0g Rml4IGNvbW1lbnRzIGFuZCBjb2RlIHRvIG1hdGNoIGluIHZwY2lfbXNpeF9jb250cm9sX3dyaXRl LgogLSBPcHRpbWl6ZSBzaXplIG9mIHRoZSBNU0lYIHN0cnVjdHVyZS4KIC0gQ29udmVydCAndGFi bGVzW10nIHRvIGEgdWludDMyX3QgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBzaXplIG9mCiAgIHZw Y2lfbXNpeC4gSW50cm9kdWNlIHNvbWUgbWFjcm9zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGdldCB0 aGUgTVNJWAogICB0YWJsZXMgcmVsYXRlZCBkYXRhLgogLSBMaW1pdCBzaXplIG9mIHRoZSBib29s IGZpZWxkcyB0byAxIGJpdC4KIC0gUmVtb3ZlIHRoZSAnbnInIGZpZWxkIG9mIHZwY2lfbXNpeF9l bnRyeS4gVGhlIHBvc2l0aW9uIGNhbiBiZQogICBjYWxjdWxhdGVkIGZyb20gdGhlIGJhc2Ugb2Yg dGhlIGVudHJpZXMgYXJyYXkuCiAtIERyb3AgdGhlICd2cGNpXycgcHJlZml4IGZyb20gdGhlIGZ1 bmN0aW9ucyBpbiBtc2l4LmMsIHRoZXkgYXJlIGFsbAogICBzdGF0aWMuCiAtIFJlbW92ZSB0aGUg dmFsIGxvY2FsIHZhcmlhYmxlIGluIGNvbnRyb2xfcmVhZC4KIC0gSW5pdGlhbGl6ZSBuZXdfbWFz a2VkIGFuZCBuZXdfZW5hYmxlZCBhdCBkZWNsYXJhdGlvbi4KIC0gUmVjYWxjdWxhdGUgdGhlIG1z aXggY29udHJvbCB2YWx1ZSBiZWZvcmUgd3JpdGluZyBpdC4KIC0gUmVtb3ZlIHRoZSBzZWcgYW5k IGJ1cyBsb2NhbCB2YXJpYWJsZXMgYW5kIHVzZSBwZGV2LT5zZWcgYW5kCiAgIHBkZXYtPmJ1cyBp bnN0ZWFkLgogLSBJbml0aWFsaXplIG1zaXggYXQgZGVjbGFyYXRpb24gaW4gbXNpeF97d3JpdGUv cmVhZH0uCiAtIEFkZCB0aGUgbXVzdF9jaGVjayBhdHRyaWJ1dGUgdG8KICAgdnBjaV9tc2l4X2Fy Y2hfe2VuYWJsZS9kaXNhYmxlfV9lbnRyeS4KCkNoYW5nZXMgc2luY2UgdjU6CiAtIFVwZGF0ZSBs b2NrIHVzYWdlLgogLSBVbmJpbmQvdW5tYXAgUElSUXMgd2hlbiBNU0lYIGlzIGRpc2FibGVkLgog LSBTaGFyZSB0aGUgYXJjaC1zcGVjaWZpYyBNU0lYIGNvZGUgd2l0aCB0aGUgTVNJIGZ1bmN0aW9u cy4KIC0gRG8gbm90IHJlZmVyZW5jZSB0aGUgTVNJWCBtZW1vcnkgYXJlYXMgZnJvbSB0aGUgUENJ IEJBUnMgZmllbGRzLAogICBpbnN0ZWFkIGZldGNoIHRoZSBCSVIgYW5kIG9mZnNldCBlYWNoIHRp bWUgbmVlZGVkLgogLSBBZGQgdGhlICdfZW50cnknIHN1ZmZpeCB0byB0aGUgTVNJWCBhcmNoIGZ1 bmN0aW9ucy4KIC0gUHJlZml4IHRoZSB2TVNJWCBtYWNyb3Mgd2l0aCAnVicuCiAtIHMvZ2Rwcmlu dGsvZ3ByaW50ay8gaW4gbXNpeC5jCiAtIE1ha2UgdnBjaV9tc2l4X2FjY2Vzc19jaGVjayByZXR1 cm4gYm9vbCwgYW5kIGNoYW5nZSBpdCdzIG5hbWUgdG8KICAgdnBjaV9tc2l4X2FjY2Vzc19hbGxv d2VkLgogLSBKb2luIHRoZSBmaXJzdCB0d28gaWZzIGluIHZwY2lfbXNpeF97cmVhZC93cml0ZX0g aW50byBhIHNpbmdsZSBvbmUuCiAtIEFsbG93IERvbTAgdG8gd3JpdGUgdG8gdGhlIFBCQSBhcmVh LgogLSBBZGQgYSBub3RlIHRoYXQgcmVhZHMgZnJvbSB0aGUgUEJBIGFyZWEgd2lsbCBuZWVkIHRv IGJlIHRyYW5zbGF0ZWQKICAgaWYgdGhlIFBCQSBpdCdzIG5vdCBpZGVudGl0eSBtYXBwZWQuCgpD aGFuZ2VzIHNpbmNlIHY0OgogLSBSZW1vdmUgcGFyZW50aGVzZXMgYXJvdW5kIG9mZnNldG9mLgog LSBBZGQgImJlaW5nIiB0byBNU0ktWCBlbmFibGluZyBjb21tZW50LgogLSBVc2UgSU5WQUxJRF9Q SVJRLgogLSBBZGQgYSBzaW1wbGUgc2FuaXR5IGNoZWNrIHRvIHZwY2lfbXNpeF9hcmNoX2VuYWJs ZSBpbiBvcmRlciB0bwogICBkZXRlY3Qgd3JvbmcgTVNJLVggZW50cmllcyBtb3JlIHF1aWNrbHku CiAtIENvbnN0aWZ5IHZwY2lfbXNpeF9hcmNoX3ByaW50IGVudHJ5IGFyZ3VtZW50LgogLSBzL2Nw dS9maXhlZC8gaW4gdnBjaV9tc2l4X2FyY2hfcHJpbnQuCiAtIER1bXAgdGhlIE1TSS1YIGluZm8g dG9nZXRoZXIgd2l0aCB0aGUgTVNJIGluZm8uCiAtIEZpeCB2cGNpX21zaXhfY29udHJvbF93cml0 ZSB0byB0YWtlIGludG8gYWNjb3VudCBjaGFuZ2VzIHRvIHRoZQogICBhZGRyZXNzIGFuZCBkYXRh IGZpZWxkcyB3aGVuIHN3aXRjaGluZyB0aGUgZnVuY3Rpb24gbWFzayBiaXQuCiAtIE9ubHkgZGlz YWJsZS9lbmFibGUgdGhlIGVudHJpZXMgaWYgdGhlIGFkZHJlc3Mgb3IgZGF0YSBmaWVsZHMgaGF2 ZQogICBiZWVuIHVwZGF0ZWQuCiAtIFVzZXcgdGhlIEJBUiBlbmFibGUgZmllbGQgdG8gY2hlY2sg aWYgYSBCQVIgaXMgbWFwcGVkIG9yIG5vdAogICAoaW5zdGVhZCBvZiByZWFkaW5nIHRoZSBjb21t YW5kIHJlZ2lzdGVyIGZvciBlYWNoIGRldmljZSkuCiAtIEZpeCBlcnJvciBwYXRoIGluIHZwY2lf bXNpeF9yZWFkIHRvIHNldCB0aGUgcmV0dXJuIGRhdGEgdG8gfjAuCiAtIFNpbXBsaWZ5IG1hc2sg dXNhZ2UgaW4gdnBjaV9tc2l4X3dyaXRlLgogLSBDYXN0IGRhdGEgdG8gdWludDY0X3Qgd2hlbiBz aGlmdGluZyBpdCAzMiBiaXRzLgogLSBGaXggd3JpdGVzIHRvIHRoZSB0YWJsZSBlbnRyeSBjb250 cm9sIHJlZ2lzdGVyIHRvIHRha2UgaW50byBhY2NvdW50CiAgIGlmIHRoZSBtYXNrLWFsbCBiaXQg aXMgc2V0LgogLSBBZGQgc29tZSBjb21tZW50cyB0byBjbGFyaWZ5IHRoZSBpbnRlbmRlZCBiZWhh dmlvciBvZiB0aGUgY29kZS4KIC0gQWxpZ24gdGhlIFBCQSBzaXplIHRvIDY0LWJpdHMuCiAtIFJl bW92ZSB0aGUgZXJyb3IgbGFiZWwgaW4gdnBjaV9pbml0X21zaXguCiAtIFRyeSB0byBjb21wYWN0 IHRoZSBsYXlvdXQgb2YgdGhlIHZwY2lfbXNpeCBzdHJ1Y3R1cmUuCiAtIFJlbW92ZSB0aGUgbG9j YWwgdGFibGVfYmFyIGFuZCBwYmFfYmFyIHZhcmlhYmxlcyBmcm9tCiAgIHZwY2lfaW5pdF9tc2l4 LCB0aGV5IGFyZSB1c2VkIG9ubHkgb25jZS4KCkNoYW5nZXMgc2luY2UgdjM6CiAtIFByb3BhZ2F0 ZSBjaGFuZ2VzIGZyb20gcHJldmlvdXMgdmVyc2lvbnM6IHJlbW92ZSB4ZW5fIHByZWZpeCwgdXNl CiAgIHRoZSBuZXcgZmllbGRzIGluIHZwY2lfdmFsIGFuZCByZW1vdmUgdGhlIHJldHVybiB2YWx1 ZSBmcm9tCiAgIGhhbmRsZXJzLgogLSBSZW1vdmUgdGhlIHVzYWdlIG9mIEdFTk1BU0suCiAtIE1h dmUgdGhlIGFyY2gtc3BlY2lmaWMgcGFydHMgb2YgdGhlIGR1bXAgcm91dGluZSB0byB0aGUKICAg eDg2L2h2bS92bXNpLmMgZHVtcCBoYW5kbGVyLgogLSBDaGFpbiB0aGUgTVNJLVggZHVtcCBoYW5k bGVyIHRvIHRoZSAnTScgZGVidWcga2V5LgogLSBGaXggdGhlIGhlYWRlciBCQVIgbWFwcGluZ3Mg c28gdGhhdCB0aGUgTVNJLVggcmVnaW9ucyBpbnNpZGUgb2YKICAgQkFScyBhcmUgdW5tYXBwZWQg ZnJvbSB0aGUgZG9tYWluIHAybSBpbiBvcmRlciBmb3IgdGhlIGhhbmRsZXJzIHRvCiAgIHdvcmsg cHJvcGVybHkuCiAtIFVuY29uZGl0aW9uYWxseSB0cmFwIGFuZCBmb3J3YXJkIGFjY2Vzc2VzIHRv IHRoZSBQQkEgTVNJLVggYXJlYS4KIC0gU2ltcGxpZnkgdGhlIGNvbmRpdGlvbmFscyBpbiB2cGNp X21zaXhfY29udHJvbF93cml0ZS4KIC0gRml4IHZwY2lfbXNpeF9hY2NlcHQgdG8gdXNlIGEgYm9v bCB0eXBlLgogLSBBbGxvdyBhbGwgc3VwcG9ydGVkIGFjY2Vzc2VzIGFzIGRlc2NyaWJlZCBpbiB0 aGUgc3BlYyB0byB0aGUgTVNJLVgKICAgdGFibGUuCiAtIFRydW5jYXRlIHRoZSByZXR1cm5lZCBh ZGRyZXNzIHdoZW4gdGhlIGFjY2VzcyBpcyBhIDMyYiByZWFkLgogLSBBbHdheXMgcmV0dXJuIFg4 NkVNVUxfT0tBWSBmcm9tIHRoZSBoYW5kbGVycywgcmV0dXJuaW5nIH4wIGluIHRoZQogICByZWFk IGNhc2UgaWYgdGhlIGFjY2VzcyBpcyBub3Qgc3VwcG9ydGVkLCBvciBpZ25vcmluZyB3cml0ZXMu CiAtIERvIG5vdCBjaGVjayB0aGF0IG1heF9lbnRyaWVzIGlzICE9IDAgaW4gdGhlIGluaXQgaGFu ZGxlci4KIC0gVXNlIHRyeWxvY2sgaW4gdGhlIGR1bXAgaGFuZGxlci4KCkNoYW5nZXMgc2luY2Ug djI6CiAtIFNwbGl0IG91dCBhcmNoLXNwZWNpZmljIGNvZGUuCgpUaGlzIHBhdGNoIGhhcyBiZWVu IHRlc3RlZCB3aXRoIGRldmljZXMgdXNpbmcgYm90aCBhIHNpbmdsZSBNU0ktWAplbnRyeSBhbmQg bXVsdGlwbGUgb25lcy4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYyAgICB8ICAg MiArLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gv eDg2L2h2bS92bXNpLmMgICAgICAgICAgfCAxNDIgKysrKysrKysrLS0tCiB4ZW4vZHJpdmVycy92 cGNpL01ha2VmaWxlICAgICAgICB8ICAgMiArLQogeGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYyAg ICAgICAgfCAgMTggKysKIHhlbi9kcml2ZXJzL3ZwY2kvbXNpLmMgICAgICAgICAgIHwgIDIwICst CiB4ZW4vZHJpdmVycy92cGNpL21zaXguYyAgICAgICAgICB8IDQ2NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5o IHwgICAzICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmggICAgIHwgICA1ICsKIHhlbi9p bmNsdWRlL3hlbi92cGNpLmggICAgICAgICAgIHwgIDcxICsrKysrKwogMTAgZmlsZXMgY2hhbmdl ZCwgNjk1IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9kcml2ZXJzL3ZwY2kvbXNpeC5jCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9k b20wX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYwppbmRleCBlNTExODA5 NzY2Li43MmY2YmFmNjAxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQu YworKysgYi94ZW4vYXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYwpAQCAtMTExOCw3ICsxMTE4LDcg QEAgaW50IF9faW5pdCBkb20wX2NvbnN0cnVjdF9wdmgoc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qg bW9kdWxlX3QgKmltYWdlLAogCiAgICAgcHZoX3NldHVwX21tY2ZnKGQpOwogCi0gICAgcGFuaWMo IkJ1aWxkaW5nIGEgUFZIdjIgRG9tMCBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTsKKyAgICBwcmlu dGsoIldBUk5JTkc6IFBWSCBpcyBhbiBleHBlcmltZW50YWwgbW9kZSB3aXRoIGxpbWl0ZWQgZnVu Y3Rpb25hbGl0eVxuIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IDQyMzY5ZDM0Y2Iu Ljk2MWZmNDQyZDEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS9odm0uYwpAQCAtNTg5LDYgKzU4OSw3IEBAIGludCBodm1fZG9tYWluX2lu aXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkb21jcl9mbGFncywKICAg ICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLndyaXRlX21hcC5saXN0KTsKICAg ICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLmcybV9pb3BvcnRfbGlzdCk7CiAg ICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19yZWdpb25zKTsKKyAg ICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLm1zaXhfdGFibGVzKTsKIAogICAg IHJjID0gY3JlYXRlX3BlcmRvbWFpbl9tYXBwaW5nKGQsIFBFUkRPTUFJTl9WSVJUX1NUQVJULCAw LCBOVUxMLCBOVUxMKTsKICAgICBpZiAoIHJjICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdm1zaS5jIGIveGVuL2FyY2gveDg2L2h2bS92bXNpLmMKaW5kZXggYmU1OWM1NmQ0My4uMDdm MDhjNWMzMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXNpLmMKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS92bXNpLmMKQEAgLTY0NCwxMyArNjQ0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgbXNpX2dmbGFncyh1aW50MTZfdCBkYXRhLCB1aW50NjRfdCBhZGRyLCBib29sIG1hc2tlZCkK ICAgICAgICAgICAgKG1hc2tlZCA/IDAgOiBYRU5fRE9NQ1RMX1ZNU0lfWDg2X1VOTUFTS0VEKTsK IH0KIAotdm9pZCB2cGNpX21zaV9hcmNoX21hc2soc3RydWN0IHZwY2lfbXNpICptc2ksIGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGVudHJ5LCBib29sIG1hc2spCitzdGF0aWMgdm9pZCB2cGNpX21hc2tfcGlycShzdHJ1Y3Qg ZG9tYWluICpkLCBpbnQgcGlycSwgYm9vbCBtYXNrKQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7Ci0gICAgc3RydWN0IGlycV9kZXNjICpkZXNjID0gZG9tYWluX3NwaW5fbG9ja19pcnFfZGVz YyhwZGV2LT5kb21haW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtc2ktPmFyY2gucGlycSArIGVudHJ5LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsYWdzKTsKKyAgICBzdHJ1Y3Qg aXJxX2Rlc2MgKmRlc2MgPSBkb21haW5fc3Bpbl9sb2NrX2lycV9kZXNjKGQsIHBpcnEsICZmbGFn cyk7CiAKICAgICBpZiAoICFkZXNjICkKICAgICAgICAgcmV0dXJuOwpAQCAtNjU4LDIzICs2NTUs MzEgQEAgdm9pZCB2cGNpX21zaV9hcmNoX21hc2soc3RydWN0IHZwY2lfbXNpICptc2ksIGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRlc2Mt PmxvY2ssIGZsYWdzKTsKIH0KIAotaW50IHZwY2lfbXNpX2FyY2hfZW5hYmxlKHN0cnVjdCB2cGNp X21zaSAqbXNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9ycykKK3ZvaWQgdnBjaV9tc2lfYXJjaF9tYXNrKHN0 cnVjdCB2cGNpX21zaSAqbXNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbnRyeSwgYm9vbCBtYXNrKQoreworICAgIHZw Y2lfbWFza19waXJxKHBkZXYtPmRvbWFpbiwgbXNpLT5hcmNoLnBpcnEgKyBlbnRyeSwgbWFzayk7 Cit9CisKK3N0YXRpYyBpbnQgdnBjaV9tc2lfZW5hYmxlKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpw ZGV2LCB1aW50MzJfdCBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg YWRkcmVzcywgdW5zaWduZWQgaW50IG5yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFk ZHJfdCB0YWJsZV9iYXNlLCB1aW50MzJfdCBtYXNrKQogewogICAgIHN0cnVjdCBtc2lfaW5mbyBt c2lfaW5mbyA9IHsKICAgICAgICAgLnNlZyA9IHBkZXYtPnNlZywKICAgICAgICAgLmJ1cyA9IHBk ZXYtPmJ1cywKICAgICAgICAgLmRldmZuID0gcGRldi0+ZGV2Zm4sCi0gICAgICAgIC5lbnRyeV9u ciA9IHZlY3RvcnMsCisgICAgICAgIC50YWJsZV9iYXNlID0gdGFibGVfYmFzZSwKKyAgICAgICAg LmVudHJ5X25yID0gbnIsCiAgICAgfTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICBpbnQgcmM7 Ci0KLSAgICBBU1NFUlQobXNpLT5hcmNoLnBpcnEgPT0gSU5WQUxJRF9QSVJRKTsKKyAgICB1bnNp Z25lZCBpbnQgaSwgdmVjdG9ycyA9IHRhYmxlX2Jhc2UgPyAxIDogbnI7CisgICAgaW50IHJjLCBw aXJxID0gSU5WQUxJRF9QSVJROwogCiAgICAgLyogR2V0IGEgUElSUS4gKi8KLSAgICByYyA9IGFs bG9jYXRlX2FuZF9tYXBfbXNpX3BpcnEocGRldi0+ZG9tYWluLCAtMSwgJm1zaS0+YXJjaC5waXJx LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUElSUV9UWVBFX01VTFRJ X01TSSwgJm1zaV9pbmZvKTsKKyAgICByYyA9IGFsbG9jYXRlX2FuZF9tYXBfbXNpX3BpcnEocGRl di0+ZG9tYWluLCAtMSwgJnBpcnEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhYmxlX2Jhc2UgPyBNQVBfUElSUV9UWVBFX01TSQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogTUFQX1BJUlFfVFlQRV9NVUxUSV9NU0ksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc2lfaW5mbyk7CiAgICAgaWYgKCByYyApCiAg ICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiJTA0eDolMDJ4OiUwMnguJXU6IGZh aWxlZCB0byBtYXAgUElSUTogJWRcbiIsCkBAIC02ODUsMTUgKzY5MCwxNCBAQCBpbnQgdnBjaV9t c2lfYXJjaF9lbmFibGUoc3RydWN0IHZwY2lfbXNpICptc2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2 ICpwZGV2LAogCiAgICAgZm9yICggaSA9IDA7IGkgPCB2ZWN0b3JzOyBpKysgKQogICAgIHsKLSAg ICAgICAgdWludDhfdCB2ZWN0b3IgPSBNQVNLX0VYVFIobXNpLT5kYXRhLCBNU0lfREFUQV9WRUNU T1JfTUFTSyk7Ci0gICAgICAgIHVpbnQ4X3QgdmVjdG9yX21hc2sgPSAweGZmID4+ICg4IC0gZmxz KG1zaS0+dmVjdG9ycykgKyAxKTsKKyAgICAgICAgdWludDhfdCB2ZWN0b3IgPSBNQVNLX0VYVFIo ZGF0YSwgTVNJX0RBVEFfVkVDVE9SX01BU0spOworICAgICAgICB1aW50OF90IHZlY3Rvcl9tYXNr ID0gMHhmZiA+PiAoOCAtIGZscyh2ZWN0b3JzKSArIDEpOwogICAgICAgICBzdHJ1Y3QgeGVuX2Rv bWN0bF9iaW5kX3B0X2lycSBiaW5kID0gewotICAgICAgICAgICAgLm1hY2hpbmVfaXJxID0gbXNp LT5hcmNoLnBpcnEgKyBpLAorICAgICAgICAgICAgLm1hY2hpbmVfaXJxID0gcGlycSArIGksCiAg ICAgICAgICAgICAuaXJxX3R5cGUgPSBQVF9JUlFfVFlQRV9NU0ksCiAgICAgICAgICAgICAudS5t c2kuZ3ZlYyA9ICh2ZWN0b3IgJiB+dmVjdG9yX21hc2spIHwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCh2ZWN0b3IgKyBpKSAmIHZlY3Rvcl9tYXNrKSwKLSAgICAgICAgICAgIC51Lm1zaS5n ZmxhZ3MgPSBtc2lfZ2ZsYWdzKG1zaS0+ZGF0YSwgbXNpLT5hZGRyZXNzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zaS0+bWFzayA+PiBpKSAmIDEpLAorICAgICAg ICAgICAgLnUubXNpLmdmbGFncyA9IG1zaV9nZmxhZ3MoZGF0YSwgYWRkcmVzcywgKG1hc2sgPj4g aSkgJiAxKSwKICAgICAgICAgfTsKIAogICAgICAgICBwY2lkZXZzX2xvY2soKTsKQEAgLTcwMywz MyArNzA3LDQ5IEBAIGludCB2cGNpX21zaV9hcmNoX2VuYWJsZShzdHJ1Y3QgdnBjaV9tc2kgKm1z aSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAgICBnZHByaW50ayhYRU5M T0dfRVJSLAogICAgICAgICAgICAgICAgICAgICAgIiUwNHg6JTAyeDolMDJ4LiV1OiBmYWlsZWQg dG8gYmluZCBQSVJRICV1OiAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgIHBkZXYtPnNlZywg cGRldi0+YnVzLCBQQ0lfU0xPVChwZGV2LT5kZXZmbiksCi0gICAgICAgICAgICAgICAgICAgICBQ Q0lfRlVOQyhwZGV2LT5kZXZmbiksIG1zaS0+YXJjaC5waXJxICsgaSwgcmMpOworICAgICAgICAg ICAgICAgICAgICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pLCBwaXJxICsgaSwgcmMpOwogICAgICAg ICAgICAgd2hpbGUgKCBiaW5kLm1hY2hpbmVfaXJxLS0gKQogICAgICAgICAgICAgICAgIHB0X2ly cV9kZXN0cm95X2JpbmQocGRldi0+ZG9tYWluLCAmYmluZCk7CiAgICAgICAgICAgICBzcGluX2xv Y2soJnBkZXYtPmRvbWFpbi0+ZXZlbnRfbG9jayk7Ci0gICAgICAgICAgICB1bm1hcF9kb21haW5f cGlycShwZGV2LT5kb21haW4sIG1zaS0+YXJjaC5waXJxKTsKKyAgICAgICAgICAgIHVubWFwX2Rv bWFpbl9waXJxKHBkZXYtPmRvbWFpbiwgcGlycSk7CiAgICAgICAgICAgICBzcGluX3VubG9jaygm cGRldi0+ZG9tYWluLT5ldmVudF9sb2NrKTsKICAgICAgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7 Ci0gICAgICAgICAgICBtc2ktPmFyY2gucGlycSA9IElOVkFMSURfUElSUTsKICAgICAgICAgICAg IHJldHVybiByYzsKICAgICAgICAgfQogICAgICAgICBwY2lkZXZzX3VubG9jaygpOwogICAgIH0K IAotICAgIHJldHVybiAwOworICAgIHJldHVybiBwaXJxOwogfQogCi12b2lkIHZwY2lfbXNpX2Fy Y2hfZGlzYWJsZShzdHJ1Y3QgdnBjaV9tc2kgKm1zaSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBk ZXYpCitpbnQgdnBjaV9tc2lfYXJjaF9lbmFibGUoc3RydWN0IHZwY2lfbXNpICptc2ksIGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB2ZWN0b3JzKQoreworICAgIGludCByYzsKKworICAgIEFTU0VSVChtc2ktPmFyY2gucGly cSA9PSBJTlZBTElEX1BJUlEpOworICAgIHJjID0gdnBjaV9tc2lfZW5hYmxlKHBkZXYsIG1zaS0+ ZGF0YSwgbXNpLT5hZGRyZXNzLCB2ZWN0b3JzLCAwLCBtc2ktPm1hc2spOworICAgIGlmICggcmMg Pj0gMCApCisgICAgeworICAgICAgICBtc2ktPmFyY2gucGlycSA9IHJjOworICAgICAgICByYyA9 IDA7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCB2cGNpX21zaV9k aXNhYmxlKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgcGlycSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yKQogewogICAgIHVuc2lnbmVkIGludCBp OwogCi0gICAgQVNTRVJUKG1zaS0+YXJjaC5waXJxICE9IElOVkFMSURfUElSUSk7CisgICAgQVNT RVJUKHBpcnEgIT0gSU5WQUxJRF9QSVJRKTsKIAogICAgIHBjaWRldnNfbG9jaygpOwotICAgIGZv ciAoIGkgPSAwOyBpIDwgbXNpLT52ZWN0b3JzOyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwg bnI7IGkrKyApCiAgICAgewogICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9iaW5kX3B0X2lycSBi aW5kID0gewotICAgICAgICAgICAgLm1hY2hpbmVfaXJxID0gbXNpLT5hcmNoLnBpcnEgKyBpLAor ICAgICAgICAgICAgLm1hY2hpbmVfaXJxID0gcGlycSArIGksCiAgICAgICAgICAgICAuaXJxX3R5 cGUgPSBQVF9JUlFfVFlQRV9NU0ksCiAgICAgICAgIH07CiAgICAgICAgIGludCByYzsKQEAgLTcz OSwxMCArNzU5LDE0IEBAIHZvaWQgdnBjaV9tc2lfYXJjaF9kaXNhYmxlKHN0cnVjdCB2cGNpX21z aSAqbXNpLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldikKICAgICB9CiAKICAgICBzcGluX2xv Y2soJnBkZXYtPmRvbWFpbi0+ZXZlbnRfbG9jayk7Ci0gICAgdW5tYXBfZG9tYWluX3BpcnEocGRl di0+ZG9tYWluLCBtc2ktPmFyY2gucGlycSk7CisgICAgdW5tYXBfZG9tYWluX3BpcnEocGRldi0+ ZG9tYWluLCBwaXJxKTsKICAgICBzcGluX3VubG9jaygmcGRldi0+ZG9tYWluLT5ldmVudF9sb2Nr KTsKICAgICBwY2lkZXZzX3VubG9jaygpOworfQogCit2b2lkIHZwY2lfbXNpX2FyY2hfZGlzYWJs ZShzdHJ1Y3QgdnBjaV9tc2kgKm1zaSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7Cisg ICAgdnBjaV9tc2lfZGlzYWJsZShwZGV2LCBtc2ktPmFyY2gucGlycSwgbXNpLT52ZWN0b3JzKTsK ICAgICBtc2ktPmFyY2gucGlycSA9IElOVkFMSURfUElSUTsKIH0KIApAQCAtNzYzLDMgKzc4Nyw2 NSBAQCB2b2lkIHZwY2lfbXNpX2FyY2hfcHJpbnQoY29uc3Qgc3RydWN0IHZwY2lfbXNpICptc2kp CiAgICAgICAgICAgIE1BU0tfRVhUUihtc2ktPmFkZHJlc3MsIE1TSV9BRERSX0RFU1RfSURfTUFT SyksCiAgICAgICAgICAgIG1zaS0+YXJjaC5waXJxKTsKIH0KKwordm9pZCB2cGNpX21zaXhfYXJj aF9tYXNrX2VudHJ5KHN0cnVjdCB2cGNpX21zaXhfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBib29sIG1hc2sp Cit7CisgICAgQVNTRVJUKGVudHJ5LT5hcmNoLnBpcnEgIT0gSU5WQUxJRF9QSVJRKTsKKyAgICB2 cGNpX21hc2tfcGlycShwZGV2LT5kb21haW4sIGVudHJ5LT5hcmNoLnBpcnEsIG1hc2spOworfQor CitpbnQgdnBjaV9tc2l4X2FyY2hfZW5hYmxlX2VudHJ5KHN0cnVjdCB2cGNpX21zaXhfZW50cnkg KmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcGNp X2RldiAqcGRldiwgcGFkZHJfdCB0YWJsZV9iYXNlKQoreworICAgIGludCByYzsKKworICAgIEFT U0VSVChlbnRyeS0+YXJjaC5waXJxID09IElOVkFMSURfUElSUSk7CisgICAgcmMgPSB2cGNpX21z aV9lbmFibGUocGRldiwgZW50cnktPmRhdGEsIGVudHJ5LT5hZGRyLAorICAgICAgICAgICAgICAg ICAgICAgICAgIHZtc2l4X2VudHJ5X25yKHBkZXYtPnZwY2ktPm1zaXgsIGVudHJ5KSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICB0YWJsZV9iYXNlLCBlbnRyeS0+bWFza2VkKTsKKyAgICBpZiAo IHJjID49IDAgKQorICAgIHsKKyAgICAgICAgZW50cnktPmFyY2gucGlycSA9IHJjOworICAgICAg ICByYyA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgdnBjaV9tc2l4X2Fy Y2hfZGlzYWJsZV9lbnRyeShzdHJ1Y3QgdnBjaV9tc2l4X2VudHJ5ICplbnRyeSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2KQorewor ICAgIGlmICggZW50cnktPmFyY2gucGlycSA9PSBJTlZBTElEX1BJUlEgKQorICAgICAgICByZXR1 cm4gLUVOT0VOVDsKKworICAgIHZwY2lfbXNpX2Rpc2FibGUocGRldiwgZW50cnktPmFyY2gucGly cSwgMSk7CisgICAgZW50cnktPmFyY2gucGlycSA9IElOVkFMSURfUElSUTsKKworICAgIHJldHVy biAwOworfQorCit2b2lkIHZwY2lfbXNpeF9hcmNoX2luaXRfZW50cnkoc3RydWN0IHZwY2lfbXNp eF9lbnRyeSAqZW50cnkpCit7CisgICAgZW50cnktPmFyY2gucGlycSA9IElOVkFMSURfUElSUTsK K30KKwordm9pZCB2cGNpX21zaXhfYXJjaF9wcmludChjb25zdCBzdHJ1Y3QgdnBjaV9tc2l4ICpt c2l4KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBtc2l4 LT5tYXhfZW50cmllczsgaSsrICkKKyAgICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCB2cGNpX21z aXhfZW50cnkgKmVudHJ5ID0gJm1zaXgtPmVudHJpZXNbaV07CisKKyAgICAgICAgcHJpbnRrKCIl NnUgdmVjPSUwMnglN3MlNnMlM3Nhc3NlcnQlNXMlN3MgZGVzdF9pZD0lbHUgbWFzaz0ldSBwaXJx OiAlZFxuIiwKKyAgICAgICAgICAgICAgIGksIE1BU0tfRVhUUihlbnRyeS0+ZGF0YSwgTVNJX0RB VEFfVkVDVE9SX01BU0spLAorICAgICAgICAgICAgICAgZW50cnktPmRhdGEgJiBNU0lfREFUQV9E RUxJVkVSWV9MT1dQUkkgPyAibG93ZXN0IiA6ICJmaXhlZCIsCisgICAgICAgICAgICAgICBlbnRy eS0+ZGF0YSAmIE1TSV9EQVRBX1RSSUdHRVJfTEVWRUwgPyAibGV2ZWwiIDogImVkZ2UiLAorICAg ICAgICAgICAgICAgZW50cnktPmRhdGEgJiBNU0lfREFUQV9MRVZFTF9BU1NFUlQgPyAiIiA6ICJk ZSIsCisgICAgICAgICAgICAgICBlbnRyeS0+YWRkciAmIE1TSV9BRERSX0RFU1RNT0RFX0xPR0lD ID8gImxvZyIgOiAicGh5cyIsCisgICAgICAgICAgICAgICBlbnRyeS0+YWRkciAmIE1TSV9BRERS X1JFRElSRUNUSU9OX0xPV1BSSSA/ICJsb3dlc3QiIDogImZpeGVkIiwKKyAgICAgICAgICAgICAg IE1BU0tfRVhUUihlbnRyeS0+YWRkciwgTVNJX0FERFJfREVTVF9JRF9NQVNLKSwKKyAgICAgICAg ICAgICAgIGVudHJ5LT5tYXNrZWQsIGVudHJ5LT5hcmNoLnBpcnEpOworICAgIH0KK30KZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy92cGNpL01ha2Vm aWxlCmluZGV4IDYyY2VjOWU4MmIuLjU1ZDFiZGZkYTAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L3ZwY2kvTWFrZWZpbGUKKysrIGIveGVuL2RyaXZlcnMvdnBjaS9NYWtlZmlsZQpAQCAtMSArMSBA QAotb2JqLXkgKz0gdnBjaS5vIGhlYWRlci5vIG1zaS5vCitvYmoteSArPSB2cGNpLm8gaGVhZGVy Lm8gbXNpLm8gbXNpeC5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL2hlYWRlci5jIGIv eGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYwppbmRleCA5OGVkNTNhMTI2Li41YzVlOTFkOGViIDEw MDY0NAotLS0gYS94ZW4vZHJpdmVycy92cGNpL2hlYWRlci5jCisrKyBiL3hlbi9kcml2ZXJzL3Zw Y2kvaGVhZGVyLmMKQEAgLTIxMCw2ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBtb2RpZnlfYmFycyhj b25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCBtYXAsIGJvb2wgcm9tKQogICAgIHN0cnVj dCB2cGNpX2hlYWRlciAqaGVhZGVyID0gJnBkZXYtPnZwY2ktPmhlYWRlcjsKICAgICBzdHJ1Y3Qg cmFuZ2VzZXQgKm1lbSA9IHJhbmdlc2V0X25ldyhOVUxMLCBOVUxMLCAwKTsKICAgICBjb25zdCBz dHJ1Y3QgcGNpX2RldiAqdG1wOworICAgIGNvbnN0IHN0cnVjdCB2cGNpX21zaXggKm1zaXggPSBw ZGV2LT52cGNpLT5tc2l4OwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGludCByYzsKIApAQCAt MjU1LDYgKzI1NiwyMyBAQCBzdGF0aWMgdm9pZCBtb2RpZnlfYmFycyhjb25zdCBzdHJ1Y3QgcGNp X2RldiAqcGRldiwgYm9vbCBtYXAsIGJvb2wgcm9tKQogICAgICAgICB9CiAgICAgfQogCisgICAg LyogUmVtb3ZlIGFueSBNU0lYIHJlZ2lvbnMgaWYgcHJlc2VudC4gKi8KKyAgICBmb3IgKCBpID0g MDsgbXNpeCAmJiBpIDwgQVJSQVlfU0laRShtc2l4LT50YWJsZXMpOyBpKysgKQorICAgIHsKKyAg ICAgICAgcGFkZHJfdCBzdGFydCA9IHZtc2l4X3RhYmxlX2FkZHIocGRldi0+dnBjaSwgaSk7Cisg ICAgICAgIHBhZGRyX3QgZW5kID0gc3RhcnQgKyB2bXNpeF90YWJsZV9zaXplKHBkZXYtPnZwY2ks IGkpIC0gMTsKKworICAgICAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9yYW5nZShtZW0sIFBGTl9E T1dOKHN0YXJ0KSwgUEZOX1VQKGVuZCkpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgewor ICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcKKyAgICAgICAgICAgICAgICAgICAi RmFpbGVkIHRvIHJlbW92ZSBNU0lYIHRhYmxlIFslIiBQUklfZ2ZuICIsICUiIFBSSV9nZm4gIik6 ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIFBGTl9ET1dOKHN0YXJ0KSwgUEZOX1VQKGVuZCks IHJjKTsKKyAgICAgICAgICAgIHJhbmdlc2V0X2Rlc3Ryb3kobWVtKTsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qCiAgICAgICogQ2hlY2sgZm9yIG92ZXJs YXBzIHdpdGggb3RoZXIgQkFScy4gTm90ZSB0aGF0IG9ubHkgQkFScyB0aGF0IGFyZQogICAgICAq IGN1cnJlbnRseSBtYXBwZWQgKGVuYWJsZWQpIGFyZSBjaGVja2VkIGZvciBvdmVybGFwcy4KZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvbXNpLmMgYi94ZW4vZHJpdmVycy92cGNpL21zaS5j CmluZGV4IGY4ZjA4Y2I1MTUuLjNhODFmZDE3MGMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Zw Y2kvbXNpLmMKKysrIGIveGVuL2RyaXZlcnMvdnBjaS9tc2kuYwpAQCAtMjc5LDExICsyNzksMTYg QEAgdm9pZCB2cGNpX2R1bXBfbXNpKHZvaWQpCiAgICAgICAgIGlmICggIWhhc192cGNpKGQpICkK ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHByaW50aygidlBDSSBNU0kgZCVkXG4i LCBkLT5kb21haW5faWQpOworICAgICAgICBwcmludGsoInZQQ0kgTVNJL01TSS1YIGQlZFxuIiwg ZC0+ZG9tYWluX2lkKTsKIAogICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcGRldiwgJmQt PmFyY2gucGRldl9saXN0LCBkb21haW5fbGlzdCApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCB2cGNpX21zaSAqbXNpID0gcGRldi0+dnBjaS0+bXNpOworICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHZwY2lfbXNpeCAqbXNpeCA9IHBkZXYtPnZwY2ktPm1zaXg7CisKKyAgICAg ICAgICAgIGlmICggbXNpIHx8IG1zaXggKQorICAgICAgICAgICAgICAgIHByaW50aygiJTA0eDol MDJ4OiUwMnguJXVcbiIsIHBkZXYtPnNlZywgcGRldi0+YnVzLAorICAgICAgICAgICAgICAgICAg ICAgICBQQ0lfU0xPVChwZGV2LT5kZXZmbiksIFBDSV9GVU5DKHBkZXYtPmRldmZuKSk7CiAKICAg ICAgICAgICAgIGlmICggIXNwaW5fdHJ5bG9jaygmcGRldi0+dnBjaS0+bG9jaykgKQogICAgICAg ICAgICAgewpAQCAtMjkzLDggKzI5OCw3IEBAIHZvaWQgdnBjaV9kdW1wX21zaSh2b2lkKQogCiAg ICAgICAgICAgICBpZiAoIG1zaSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJp bnRrKCIlMDR4OiUwMng6JTAyeC4ldVxuIiwgcGRldi0+c2VnLCBwZGV2LT5idXMsCi0gICAgICAg ICAgICAgICAgICAgICAgIFBDSV9TTE9UKHBkZXYtPmRldmZuKSwgUENJX0ZVTkMocGRldi0+ZGV2 Zm4pKTsKKyAgICAgICAgICAgICAgICBwcmludGsoIiBNU0lcbiIpOwogCiAgICAgICAgICAgICAg ICAgcHJpbnRrKCIgIGVuYWJsZWQ6ICVkIDY0LWJpdDogJWQiLAogICAgICAgICAgICAgICAgICAg ICAgICBtc2ktPmVuYWJsZWQsIG1zaS0+YWRkcmVzczY0KTsKQEAgLTMwNiw2ICszMTAsMTYgQEAg dm9pZCB2cGNpX2R1bXBfbXNpKHZvaWQpCiAgICAgICAgICAgICAgICAgdnBjaV9tc2lfYXJjaF9w cmludChtc2kpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAoIG1zaXggKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50aygiIE1TSS1YXG4iKTsKKworICAgICAg ICAgICAgICAgIHByaW50aygiICBlbnRyaWVzOiAldSBtYXNrYWxsOiAlZCBlbmFibGVkOiAlZFxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgbXNpeC0+bWF4X2VudHJpZXMsIG1zaXgtPm1hc2tl ZCwgbXNpeC0+ZW5hYmxlZCk7CisKKyAgICAgICAgICAgICAgICB2cGNpX21zaXhfYXJjaF9wcmlu dChtc2l4KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBkZXYt PnZwY2ktPmxvY2spOwogICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CiAg ICAgICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvbXNpeC5jIGIveGVuL2RyaXZl cnMvdnBjaS9tc2l4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMmFl ZDMxZTJlNAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvbXNpeC5jCkBAIC0w LDAgKzEsNDY0IEBACisvKgorICogSGFuZGxlcnMgZm9yIGFjY2Vzc2VzIHRvIHRoZSBNU0ktWCBj YXBhYmlsaXR5IHN0cnVjdHVyZSBhbmQgdGhlIG1lbW9yeQorICogcmVnaW9uLgorICoKKyAqIENv cHlyaWdodCAoQykgMjAxNyBDaXRyaXggU3lzdGVtcyBSJkQKKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UsIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5j bHVkZSA8eGVuL3ZwY2kuaD4KKworI2luY2x1ZGUgPGFzbS9tc2kuaD4KKworI2RlZmluZSBWTVNJ WF9TSVpFKG51bSkgb2Zmc2V0b2Yoc3RydWN0IHZwY2lfbXNpeCwgZW50cmllc1tudW1dKQorCisj ZGVmaW5lIFZNU0lYX0FERFJfSU5fUkFOR0UoYWRkciwgdnBjaSwgbnIpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAoKGFkZHIpID49IHZtc2l4X3RhYmxlX2FkZHIodnBjaSwg bnIpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoYWRkcikgPCB2bXNp eF90YWJsZV9hZGRyKHZwY2ksIG5yKSArIHZtc2l4X3RhYmxlX3NpemUodnBjaSwgbnIpKQorCitz dGF0aWMgdWludDMyX3QgY29udHJvbF9yZWFkKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1 bnNpZ25lZCBpbnQgcmVnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRh KQoreworICAgIGNvbnN0IHN0cnVjdCB2cGNpX21zaXggKm1zaXggPSBkYXRhOworCisgICAgcmV0 dXJuIChtc2l4LT5tYXhfZW50cmllcyAtIDEpIHwKKyAgICAgICAgICAgKG1zaXgtPmVuYWJsZWQg PyBQQ0lfTVNJWF9GTEFHU19FTkFCTEUgOiAwKSB8CisgICAgICAgICAgIChtc2l4LT5tYXNrZWQg PyBQQ0lfTVNJWF9GTEFHU19NQVNLQUxMIDogMCk7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX2Vu dHJ5KHN0cnVjdCB2cGNpX21zaXhfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCBucikKK3sKKyAgICB1 aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2LT5kZXZmbiksIGZ1bmMgPSBQQ0lfRlVOQyhwZGV2 LT5kZXZmbik7CisgICAgaW50IHJjID0gdnBjaV9tc2l4X2FyY2hfZGlzYWJsZV9lbnRyeShlbnRy eSwgcGRldik7CisKKyAgICAvKiBJZ25vcmUgRU5PRU5ULCBpdCBtZWFucyB0aGUgZW50cnkgd2Fz bid0IHNldHVwLiAqLworICAgIGlmICggcmMgJiYgcmMgIT0gLUVOT0VOVCApCisgICAgeworICAg ICAgICBncHJpbnRrKFhFTkxPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICIlMDR4OiUwMng6 JTAyeC4ldTogdW5hYmxlIHRvIGRpc2FibGUgZW50cnkgJXUgZm9yIHVwZGF0ZTogJWRcbiIsCisg ICAgICAgICAgICAgICAgcGRldi0+c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1bmMsIG5yLCByYyk7 CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICByYyA9IHZwY2lfbXNpeF9hcmNoX2Vu YWJsZV9lbnRyeShlbnRyeSwgcGRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2bXNpeF90YWJsZV9iYXNlKHBkZXYtPnZwY2ksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWUENJX01TSVhfVEFCTEUpKTsKKyAgICBp ZiAoIHJjICkKKyAgICB7CisgICAgICAgIGdwcmludGsoWEVOTE9HX1dBUk5JTkcsCisgICAgICAg ICAgICAgICAgIiUwNHg6JTAyeDolMDJ4LiV1OiB1bmFibGUgdG8gZW5hYmxlIGVudHJ5ICV1OiAl ZFxuIiwKKyAgICAgICAgICAgICAgICBwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVuYywg bnIsIHJjKTsKKyAgICAgICAgLyogRW50cnkgaXMgbGlrZWx5IG5vdCBwcm9wZXJseSBjb25maWd1 cmVkLCBza2lwIGl0LiAqLworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnRyb2xfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYg KnBkZXYsIHVuc2lnbmVkIGludCByZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHZhbCwgdm9pZCAqZGF0YSkKK3sKKyAgICB1aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2 LT5kZXZmbiksIGZ1bmMgPSBQQ0lfRlVOQyhwZGV2LT5kZXZmbik7CisgICAgc3RydWN0IHZwY2lf bXNpeCAqbXNpeCA9IGRhdGE7CisgICAgYm9vbCBuZXdfbWFza2VkID0gdmFsICYgUENJX01TSVhf RkxBR1NfTUFTS0FMTDsKKyAgICBib29sIG5ld19lbmFibGVkID0gdmFsICYgUENJX01TSVhfRkxB R1NfRU5BQkxFOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYzsKKworICAgIGlmICgg bmV3X21hc2tlZCA9PSBtc2l4LT5tYXNrZWQgJiYgbmV3X2VuYWJsZWQgPT0gbXNpeC0+ZW5hYmxl ZCApCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogQWNjb3JkaW5nIHRvIHRoZSBQ Q0kgMy4wIHNwZWNpZmljYXRpb24sIHN3aXRjaGluZyB0aGUgZW5hYmxlIGJpdCB0byAxCisgICAg ICogb3IgdGhlIGZ1bmN0aW9uIG1hc2sgYml0IHRvIDAgc2hvdWxkIGNhdXNlIGFsbCB0aGUgY2Fj aGVkIGFkZHJlc3NlcworICAgICAqIGFuZCBkYXRhIGZpZWxkcyB0byBiZSByZWNhbGN1bGF0ZWQu CisgICAgICoKKyAgICAgKiBJbiBvcmRlciB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgZGlzYWJs aW5nIGFuZCBlbmFibGluZyBhbGwgdGhlCisgICAgICogZW50cmllcyBldmVyeSB0aW1lIHRoZSBn dWVzdCBzZXRzIHRoZSBtYXNrYWxsIGJpdCwgWGVuIHdpbGwgb25seQorICAgICAqIHBlcmZvcm0g dGhlIGRpc2FibGUgYW5kIGVuYWJsZSBzZXF1ZW5jZSB3aGVuIHRoZSBndWVzdCBoYXMgd3JpdHRl biB0bworICAgICAqIHRoZSBlbnRyeS4KKyAgICAgKi8KKyAgICBpZiAoIG5ld19lbmFibGVkICYm ICFuZXdfbWFza2VkICYmICghbXNpeC0+ZW5hYmxlZCB8fCBtc2l4LT5tYXNrZWQpICkKKyAgICB7 CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbXNpeC0+bWF4X2VudHJpZXM7IGkrKyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlmICggbXNpeC0+ZW50cmllc1tpXS5tYXNrZWQgfHwgIW1zaXgt PmVudHJpZXNbaV0udXBkYXRlZCB8fAorICAgICAgICAgICAgICAgICB1cGRhdGVfZW50cnkoJm1z aXgtPmVudHJpZXNbaV0sIHBkZXYsIGkpICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor ICAgICAgICAgICAgbXNpeC0+ZW50cmllc1tpXS51cGRhdGVkID0gZmFsc2U7CisgICAgICAgIH0K KyAgICB9CisgICAgZWxzZSBpZiAoICFuZXdfZW5hYmxlZCAmJiBtc2l4LT5lbmFibGVkICkKKyAg ICB7CisgICAgICAgIC8qIEd1ZXN0IGhhcyBkaXNhYmxlZCBNU0lYLCBkaXNhYmxlIGFsbCBlbnRy aWVzLiAqLworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG1zaXgtPm1heF9lbnRyaWVzOyBpKysg KQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogTkI6IHZwY2lfbXNp eF9hcmNoX2Rpc2FibGUgY2FuIGJlIGNhbGxlZCBmb3IgZW50cmllcyB0aGF0IGFyZQorICAgICAg ICAgICAgICogbm90IHNldHVwLCBpdCB3aWxsIHJldHVybiAtRU5PRU5UIGluIHRoYXQgY2FzZS4K KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmMgPSB2cGNpX21zaXhfYXJjaF9kaXNhYmxl X2VudHJ5KCZtc2l4LT5lbnRyaWVzW2ldLCBwZGV2KTsKKyAgICAgICAgICAgIHN3aXRjaCAoIHJj ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAv KgorICAgICAgICAgICAgICAgICAqIE1hcmsgdGhlIGVudHJ5IHN1Y2Nlc3NmdWxseSBkaXNhYmxl ZCBhcyB1cGRhdGVkLCBzbyB0aGF0IG9uCisgICAgICAgICAgICAgICAgICogdGhlIG5leHQgZW5h YmxlIHRoZSBlbnRyeSBpcyBwcm9wZXJseSBzZXR1cC4gVGhpcyBpcyBkb25lCisgICAgICAgICAg ICAgICAgICogc28gdGhhdCB0aGUgZm9sbG93aW5nIGZsb3cgd29ya3MgY29ycmVjdGx5OgorICAg ICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogbWFzayBlbnRyeSAtPiBkaXNhYmxl IE1TSVggLT4gZW5hYmxlIE1TSVggLT4gdW5tYXNrIGVudHJ5CisgICAgICAgICAgICAgICAgICoK KyAgICAgICAgICAgICAgICAgKiBXaXRob3V0IHNldHRpbmcgJ3VwZGF0ZWQnLCB0aGUgJ3VubWFz ayBlbnRyeScgc3RlcCB3aWxsIGZhaWwKKyAgICAgICAgICAgICAgICAgKiBiZWNhdXNlIHRoZSBl bnRyeSBoYXMgbm90IGJlZW4gdXBkYXRlZCwgc28gaXQgd291bGQgbm90IGJlCisgICAgICAgICAg ICAgICAgICogbWFwcGVkL2JvdW5kIGF0IGFsbC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgICAgICBtc2l4LT5lbnRyaWVzW2ldLnVwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAtRU5PRU5UOgorICAgICAgICAgICAgICAgIC8q IElnbm9yZSBub24tcHJlc2VudCBlbnRyeS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklO RywKKyAgICAgICAgICAgICAgICAgICAgICAgICIlMDR4OiUwMng6JTAyeC4ldTogdW5hYmxlIHRv IGRpc2FibGUgZW50cnkgJXU6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgcGRldi0+ c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1bmMsIGksIHJjKTsKKyAgICAgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtc2l4LT5tYXNrZWQg PSBuZXdfbWFza2VkOworICAgIG1zaXgtPmVuYWJsZWQgPSBuZXdfZW5hYmxlZDsKKworICAgIHZh bCA9IGNvbnRyb2xfcmVhZChwZGV2LCByZWcsIGRhdGEpOworICAgIGlmICggcGNpX21zaV9jb25m X3dyaXRlX2ludGVyY2VwdChtc2l4LT5wZGV2LCByZWcsIDIsICZ2YWwpID49IDAgKQorICAgICAg ICBwY2lfY29uZl93cml0ZTE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLCByZWcs IHZhbCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdnBjaV9tc2l4ICptc2l4X2ZpbmQoY29uc3Qgc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBhZGRyKQoreworICAgIHN0cnVjdCB2cGNpX21z aXggKm1zaXg7CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggbXNpeCwgJmQtPmFyY2guaHZt X2RvbWFpbi5tc2l4X3RhYmxlcywgbmV4dCApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3Qg dnBjaV9iYXIgKmJhcnMgPSBtc2l4LT5wZGV2LT52cGNpLT5oZWFkZXIuYmFyczsKKyAgICAgICAg dW5zaWduZWQgaW50IGk7CisKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1z aXgtPnRhYmxlcyk7IGkrKyApCisgICAgICAgICAgICBpZiAoIGJhcnNbbXNpeC0+dGFibGVzW2ld ICYgUENJX01TSVhfQklSTUFTS10uZW5hYmxlZCAmJgorICAgICAgICAgICAgICAgICBWTVNJWF9B RERSX0lOX1JBTkdFKGFkZHIsIG1zaXgtPnBkZXYtPnZwY2ksIGkpICkKKyAgICAgICAgICAgICAg ICByZXR1cm4gbXNpeDsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGlu dCBtc2l4X2FjY2VwdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyKQoreworICAg IHJldHVybiAhIW1zaXhfZmluZCh2LT5kb21haW4sIGFkZHIpOworfQorCitzdGF0aWMgYm9vbCBh Y2Nlc3NfYWxsb3dlZChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgbG9uZyBh ZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikKK3sKKyAg ICAvKiBPbmx5IGFsbG93IGFsaWduZWQgMzIvNjRiIGFjY2Vzc2VzLiAqLworICAgIGlmICggKGxl biA9PSA0IHx8IGxlbiA9PSA4KSAmJiAhKGFkZHIgJiAobGVuIC0gMSkpICkKKyAgICAgICAgcmV0 dXJuIHRydWU7CisKKyAgICBncHJpbnRrKFhFTkxPR19XQVJOSU5HLAorICAgICAgICAgICAgIiUw NHg6JTAyeDolMDJ4LiV1OiB1bmFsaWduZWQgb3IgaW52YWxpZCBzaXplIE1TSS1YIHRhYmxlIGFj Y2Vzc1xuIiwKKyAgICAgICAgICAgIHBkZXYtPnNlZywgcGRldi0+YnVzLCBQQ0lfU0xPVChwZGV2 LT5kZXZmbiksIFBDSV9GVU5DKHBkZXYtPmRldmZuKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgdnBjaV9tc2l4X2VudHJ5ICpnZXRfZW50cnkoc3RydWN0IHZwY2lf bXNpeCAqbXNpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFk ZHJfdCBhZGRyKQoreworICAgIHBhZGRyX3Qgc3RhcnQgPSB2bXNpeF90YWJsZV9hZGRyKG1zaXgt PnBkZXYtPnZwY2ksIFZQQ0lfTVNJWF9UQUJMRSk7CisKKyAgICByZXR1cm4gJm1zaXgtPmVudHJp ZXNbKGFkZHIgLSBzdGFydCkgLyBQQ0lfTVNJWF9FTlRSWV9TSVpFXTsKK30KKworc3RhdGljIGlu dCBtc2l4X3JlYWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQg aW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmRhdGEpCit7Cisg ICAgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBzdHJ1Y3QgdnBjaV9t c2l4ICptc2l4ID0gbXNpeF9maW5kKGQsIGFkZHIpOworICAgIGNvbnN0IHN0cnVjdCB2cGNpX21z aXhfZW50cnkgKmVudHJ5OworICAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisKKyAgICAqZGF0YSA9 IH4wdWw7CisKKyAgICBpZiAoICFtc2l4ICkKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7 CisKKyAgICBpZiAoICFhY2Nlc3NfYWxsb3dlZChtc2l4LT5wZGV2LCBhZGRyLCBsZW4pICkKKyAg ICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKKworICAgIGlmICggVk1TSVhfQUREUl9JTl9SQU5H RShhZGRyLCBtc2l4LT5wZGV2LT52cGNpLCBWUENJX01TSVhfUEJBKSApCisgICAgeworICAgICAg ICAvKgorICAgICAgICAgKiBBY2Nlc3MgdG8gUEJBLgorICAgICAgICAgKgorICAgICAgICAgKiBU T0RPOiBub3RlIHRoYXQgdGhpcyByZWxpZXMgb24gaGF2aW5nIHRoZSBQQkEgaWRlbnRpdHkgbWFw cGVkIHRvIHRoZQorICAgICAgICAgKiBndWVzdCBhZGRyZXNzIHNwYWNlLiBJZiB0aGlzIGNoYW5n ZXMgdGhlIGFkZHJlc3Mgd2lsbCBuZWVkIHRvIGJlCisgICAgICAgICAqIHRyYW5zbGF0ZWQuCisg ICAgICAgICAqLworICAgICAgICBzd2l0Y2ggKCBsZW4gKQorICAgICAgICB7CisgICAgICAgIGNh c2UgNDoKKyAgICAgICAgICAgICpkYXRhID0gcmVhZGwoYWRkcik7CisgICAgICAgICAgICBicmVh azsKKworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICAqZGF0YSA9IHJlYWRxKGFkZHIpOwor ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS VF9VTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICByZXR1cm4gWDg2RU1VTF9PS0FZOworICAgIH0KKworICAgIHNwaW5fbG9jaygmbXNpeC0+cGRl di0+dnBjaS0+bG9jayk7CisgICAgZW50cnkgPSBnZXRfZW50cnkobXNpeCwgYWRkcik7CisgICAg b2Zmc2V0ID0gYWRkciAmIChQQ0lfTVNJWF9FTlRSWV9TSVpFIC0gMSk7CisKKyAgICBzd2l0Y2gg KCBvZmZzZXQgKQorICAgIHsKKyAgICBjYXNlIFBDSV9NU0lYX0VOVFJZX0xPV0VSX0FERFJfT0ZG U0VUOgorICAgICAgICAqZGF0YSA9IGVudHJ5LT5hZGRyOworICAgICAgICBicmVhazsKKworICAg IGNhc2UgUENJX01TSVhfRU5UUllfVVBQRVJfQUREUl9PRkZTRVQ6CisgICAgICAgICpkYXRhID0g ZW50cnktPmFkZHIgPj4gMzI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQQ0lfTVNJWF9F TlRSWV9EQVRBX09GRlNFVDoKKyAgICAgICAgKmRhdGEgPSBlbnRyeS0+ZGF0YTsKKyAgICAgICAg aWYgKCBsZW4gPT0gOCApCisgICAgICAgICAgICAqZGF0YSB8PQorICAgICAgICAgICAgICAgICh1 aW50NjRfdCkoZW50cnktPm1hc2tlZCA/IFBDSV9NU0lYX1ZFQ1RPUl9CSVRNQVNLIDogMCkgPDwg MzI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQQ0lfTVNJWF9FTlRSWV9WRUNUT1JfQ1RS TF9PRkZTRVQ6CisgICAgICAgICpkYXRhID0gZW50cnktPm1hc2tlZCA/IFBDSV9NU0lYX1ZFQ1RP Ul9CSVRNQVNLIDogMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBB U1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHNwaW5fdW5s b2NrKCZtc2l4LT5wZGV2LT52cGNpLT5sb2NrKTsKKworICAgIHJldHVybiBYODZFTVVMX09LQVk7 Cit9CisKK3N0YXRpYyBpbnQgbXNpeF93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9u ZyBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgZGF0YSkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwor ICAgIHN0cnVjdCB2cGNpX21zaXggKm1zaXggPSBtc2l4X2ZpbmQoZCwgYWRkcik7CisgICAgc3Ry dWN0IHZwY2lfbXNpeF9lbnRyeSAqZW50cnk7CisgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKwor ICAgIGlmICggIW1zaXggKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9SRVRSWTsKKworICAgIGlm ICggIWFjY2Vzc19hbGxvd2VkKG1zaXgtPnBkZXYsIGFkZHIsIGxlbikgKQorICAgICAgICByZXR1 cm4gWDg2RU1VTF9PS0FZOworCisgICAgaWYgKCBWTVNJWF9BRERSX0lOX1JBTkdFKGFkZHIsIG1z aXgtPnBkZXYtPnZwY2ksIFZQQ0lfTVNJWF9QQkEpICkKKyAgICB7CisgICAgICAgIC8qIElnbm9y ZSB3cml0ZXMgdG8gUEJBIGZvciBEb21VcywgaXQncyBiZWhhdmlvciBpcyB1bmRlZmluZWQuICov CisgICAgICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKKyAgICAgICAgeworICAgICAg ICAgICAgc3dpdGNoICggbGVuICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgNDoK KyAgICAgICAgICAgICAgICB3cml0ZWwoZGF0YSwgYWRkcik7CisgICAgICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICB3cml0ZXEoZGF0YSwg YWRkcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gWDg2RU1VTF9P S0FZOworICAgIH0KKworICAgIHNwaW5fbG9jaygmbXNpeC0+cGRldi0+dnBjaS0+bG9jayk7Cisg ICAgZW50cnkgPSBnZXRfZW50cnkobXNpeCwgYWRkcik7CisgICAgb2Zmc2V0ID0gYWRkciAmIChQ Q0lfTVNJWF9FTlRSWV9TSVpFIC0gMSk7CisKKyAgICAvKgorICAgICAqIE5COiBYZW4gYWxsb3dz IHdyaXRlcyB0byB0aGUgZGF0YS9hZGRyZXNzIHJlZ2lzdGVycyB3aXRoIHRoZSBlbnRyeQorICAg ICAqIHVubWFza2VkLiBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgaXMgdW5kZWZpbmVkIGJl aGF2aW9yLCBhbmQgWGVuCisgICAgICogaW1wbGVtZW50cyBpdCBhcyBzdG9yaW5nIHRoZSB3cml0 dGVuIHZhbHVlLCB3aGljaCB3aWxsIGJlIG1hZGUgZWZmZWN0aXZlCisgICAgICogaW4gdGhlIG5l eHQgbWFzay91bm1hc2sgY3ljbGUuIFRoaXMgYWxzbyBtaW1pY3MgdGhlIGltcGxlbWVudGF0aW9u IGluCisgICAgICogUUVNVS4KKyAgICAgKi8KKyAgICBzd2l0Y2ggKCBvZmZzZXQgKQorICAgIHsK KyAgICBjYXNlIFBDSV9NU0lYX0VOVFJZX0xPV0VSX0FERFJfT0ZGU0VUOgorICAgICAgICBlbnRy eS0+dXBkYXRlZCA9IHRydWU7CisgICAgICAgIGlmICggbGVuID09IDggKQorICAgICAgICB7Cisg ICAgICAgICAgICBlbnRyeS0+YWRkciA9IGRhdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorICAgICAgICBlbnRyeS0+YWRkciAmPSB+MHhmZmZmZmZmZjsKKyAgICAgICAgZW50cnkt PmFkZHIgfD0gZGF0YTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBDSV9NU0lYX0VOVFJZ X1VQUEVSX0FERFJfT0ZGU0VUOgorICAgICAgICBlbnRyeS0+dXBkYXRlZCA9IHRydWU7CisgICAg ICAgIGVudHJ5LT5hZGRyICY9IDB4ZmZmZmZmZmY7CisgICAgICAgIGVudHJ5LT5hZGRyIHw9ICh1 aW50NjRfdClkYXRhIDw8IDMyOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUENJX01TSVhf RU5UUllfREFUQV9PRkZTRVQ6CisgICAgICAgIGVudHJ5LT51cGRhdGVkID0gdHJ1ZTsKKyAgICAg ICAgZW50cnktPmRhdGEgPSBkYXRhOworCisgICAgICAgIGlmICggbGVuID09IDQgKQorICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGF0YSA+Pj0gMzI7CisgICAgICAgIC8qIGZhbGx0aHJv dWdoICovCisgICAgY2FzZSBQQ0lfTVNJWF9FTlRSWV9WRUNUT1JfQ1RSTF9PRkZTRVQ6CisgICAg eworICAgICAgICBib29sIG5ld19tYXNrZWQgPSBkYXRhICYgUENJX01TSVhfVkVDVE9SX0JJVE1B U0s7CisgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gbXNpeC0+cGRldjsKKwor ICAgICAgICBpZiAoIGVudHJ5LT5tYXNrZWQgPT0gbmV3X21hc2tlZCApCisgICAgICAgICAgICAv KiBObyBjaGFuZ2UgaW4gdGhlIG1hc2sgYml0LCBub3RoaW5nIHRvIGRvLiAqLworICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVXBkYXRlIHRoZSBtYXNrZWQgc3Rh dGUgYmVmb3JlIGNhbGxpbmcgdnBjaV9tc2l4X2FyY2hfZW5hYmxlX2VudHJ5LAorICAgICAgICAg KiBzbyB0aGF0IGl0IHBpY2tzIHRoZSBuZXcgc3RhdGUuCisgICAgICAgICAqLworICAgICAgICBl bnRyeS0+bWFza2VkID0gbmV3X21hc2tlZDsKKyAgICAgICAgaWYgKCAhbmV3X21hc2tlZCAmJiBt c2l4LT5lbmFibGVkICYmICFtc2l4LT5tYXNrZWQgJiYgZW50cnktPnVwZGF0ZWQgKQorICAgICAg ICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgTVNJLVggaXMgZW5hYmxlZCwg dGhlIGZ1bmN0aW9uIG1hc2sgaXMgbm90IGFjdGl2ZSwgdGhlIGVudHJ5CisgICAgICAgICAgICAg KiBpcyBiZWluZyB1bm1hc2tlZCBhbmQgdGhlcmUgaGF2ZSBiZWVuIGNoYW5nZXMgdG8gdGhlIGFk ZHJlc3Mgb3IKKyAgICAgICAgICAgICAqIGRhdGEgZmllbGRzIFhlbiBuZWVkcyB0byBkaXNhYmxl IGFuZCBlbmFibGUgdGhlIGVudHJ5IGluIG9yZGVyCisgICAgICAgICAgICAgKiB0byBwaWNrIHVw IHRoZSBjaGFuZ2VzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIHVwZGF0ZV9l bnRyeShlbnRyeSwgcGRldiwgdm1zaXhfZW50cnlfbnIobXNpeCwgZW50cnkpKSApCisgICAgICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGVudHJ5LT51cGRhdGVkID0gZmFsc2U7Cisg ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdnBjaV9tc2l4X2FyY2hfbWFza19l bnRyeShlbnRyeSwgcGRldiwgZW50cnktPm1hc2tlZCk7CisKKyAgICAgICAgYnJlYWs7CisgICAg fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAg IGJyZWFrOworICAgIH0KKyAgICBzcGluX3VubG9jaygmbXNpeC0+cGRldi0+dnBjaS0+bG9jayk7 CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2 bV9tbWlvX29wcyB2cGNpX21zaXhfdGFibGVfb3BzID0geworICAgIC5jaGVjayA9IG1zaXhfYWNj ZXB0LAorICAgIC5yZWFkID0gbXNpeF9yZWFkLAorICAgIC53cml0ZSA9IG1zaXhfd3JpdGUsCit9 OworCitzdGF0aWMgaW50IGluaXRfbXNpeChzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKyAgICBz dHJ1Y3QgZG9tYWluICpkID0gcGRldi0+ZG9tYWluOworICAgIHVpbnQ4X3Qgc2xvdCA9IFBDSV9T TE9UKHBkZXYtPmRldmZuKSwgZnVuYyA9IFBDSV9GVU5DKHBkZXYtPmRldmZuKTsKKyAgICBzdHJ1 Y3QgdnBjaV9tc2l4ICptc2l4OworICAgIHVuc2lnbmVkIGludCBtc2l4X29mZnNldCwgaSwgbWF4 X2VudHJpZXM7CisgICAgdWludDE2X3QgY29udHJvbDsKKyAgICBpbnQgcmM7CisKKyAgICBtc2l4 X29mZnNldCA9IHBjaV9maW5kX2NhcF9vZmZzZXQocGRldi0+c2VnLCBwZGV2LT5idXMsIHNsb3Qs IGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DQVBfSURf TVNJWCk7CisgICAgaWYgKCAhbXNpeF9vZmZzZXQgKQorICAgICAgICByZXR1cm4gMDsKKworICAg IGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1 bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X2NvbnRyb2xfcmVnKG1zaXhf b2Zmc2V0KSk7CisKKyAgICBtYXhfZW50cmllcyA9IG1zaXhfdGFibGVfc2l6ZShjb250cm9sKTsK KworICAgIG1zaXggPSB4emFsbG9jX2J5dGVzKFZNU0lYX1NJWkUobWF4X2VudHJpZXMpKTsKKyAg ICBpZiAoICFtc2l4ICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBtc2l4LT5tYXhf ZW50cmllcyA9IG1heF9lbnRyaWVzOworICAgIG1zaXgtPnBkZXYgPSBwZGV2OworCisgICAgbXNp eC0+dGFibGVzW1ZQQ0lfTVNJWF9UQUJMRV0gPQorICAgICAgICBwY2lfY29uZl9yZWFkMzIocGRl di0+c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICBt c2l4X3RhYmxlX29mZnNldF9yZWcobXNpeF9vZmZzZXQpKTsKKyAgICBtc2l4LT50YWJsZXNbVlBD SV9NU0lYX1BCQV0gPQorICAgICAgICBwY2lfY29uZl9yZWFkMzIocGRldi0+c2VnLCBwZGV2LT5i dXMsIHNsb3QsIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X3BiYV9vZmZzZXRf cmVnKG1zaXhfb2Zmc2V0KSk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG1zaXgtPm1heF9lbnRy aWVzOyBpKyspCisgICAgeworICAgICAgICBtc2l4LT5lbnRyaWVzW2ldLm1hc2tlZCA9IHRydWU7 CisgICAgICAgIHZwY2lfbXNpeF9hcmNoX2luaXRfZW50cnkoJm1zaXgtPmVudHJpZXNbaV0pOwor ICAgIH0KKworICAgIGlmICggbGlzdF9lbXB0eSgmZC0+YXJjaC5odm1fZG9tYWluLm1zaXhfdGFi bGVzKSApCisgICAgICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmdnBjaV9tc2l4X3RhYmxl X29wcyk7CisKKyAgICBsaXN0X2FkZCgmbXNpeC0+bmV4dCwgJmQtPmFyY2guaHZtX2RvbWFpbi5t c2l4X3RhYmxlcyk7CisKKyAgICByYyA9IHZwY2lfYWRkX3JlZ2lzdGVyKHBkZXYtPnZwY2ksIGNv bnRyb2xfcmVhZCwgY29udHJvbF93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1z aXhfY29udHJvbF9yZWcobXNpeF9vZmZzZXQpLCAyLCBtc2l4KTsKKyAgICBpZiAoIHJjICkKKyAg ICB7CisgICAgICAgIHhmcmVlKG1zaXgpOworICAgICAgICByZXR1cm4gcmM7CisgICAgfQorCisg ICAgcGRldi0+dnBjaS0+bXNpeCA9IG1zaXg7CisKKyAgICByZXR1cm4gMDsKK30KK1JFR0lTVEVS X1ZQQ0lfSU5JVChpbml0X21zaXgsIFZQQ0lfUFJJT1JJVFlfSElHSCk7CisKKy8qCisgKiBMb2Nh bCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJh c2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK KyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWlu LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAppbmRleCBkMWQ5MzNkNzkxLi4w MjBjZWFjZDgxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAor KysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaApAQCAtMTg4LDYgKzE4OCw5IEBA IHN0cnVjdCBodm1fZG9tYWluIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1tY2ZnX3JlZ2lvbnM7 CiAgICAgcndsb2NrX3QgbW1jZmdfbG9jazsKIAorICAgIC8qIExpc3Qgb2YgTVNJLVggdGFibGVz LiAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgbXNpeF90YWJsZXM7CisKICAgICAvKiBMaXN0IG9m IHBlcm1hbmVudGx5IHdyaXRlLW1hcHBlZCBwYWdlcy4gKi8KICAgICBzdHJ1Y3QgewogICAgICAg ICBzcGlubG9ja190IGxvY2s7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9p by5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaAppbmRleCAwZmVkYjM0NzNjLi5lNmI2 ZWQwYjkyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgKQEAgLTEzMiw2ICsxMzIsMTEgQEAgc3RydWN0IHZw Y2lfYXJjaF9tc2kgewogICAgIGludCBwaXJxOwogfTsKIAorLyogQXJjaC1zcGVjaWZpYyBNU0kt WCBlbnRyeSBkYXRhIGZvciB2UENJLiAqLworc3RydWN0IHZwY2lfYXJjaF9tc2l4X2VudHJ5IHsK KyAgICBpbnQgcGlycTsKK307CisKIGVudW0gc3RkdmdhX2NhY2hlX3N0YXRlIHsKICAgICBTVERW R0FfQ0FDSEVfVU5JTklUSUFMSVpFRCwKICAgICBTVERWR0FfQ0FDSEVfRU5BQkxFRCwKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92cGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vdnBjaS5oCmlu ZGV4IDZlODEwODAxZDYuLmU4YzBmYWZhZmYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92 cGNpLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZwY2kuaApAQCAtMTA1LDYgKzEwNSwzMiBAQCBz dHJ1Y3QgdnBjaSB7CiAgICAgICAgIC8qIEFyY2gtc3BlY2lmaWMgZGF0YS4gKi8KICAgICAgICAg c3RydWN0IHZwY2lfYXJjaF9tc2kgYXJjaDsKICAgICB9ICptc2k7CisKKyAgICAvKiBNU0ktWCBk YXRhLiAqLworICAgIHN0cnVjdCB2cGNpX21zaXggeworICAgICAgICBzdHJ1Y3QgcGNpX2RldiAq cGRldjsKKyAgICAgICAgLyogTGlzdCBsaW5rLiAqLworICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk IG5leHQ7CisgICAgICAgIC8qIFRhYmxlIGluZm9ybWF0aW9uLiAqLworI2RlZmluZSBWUENJX01T SVhfVEFCTEUgICAgIDAKKyNkZWZpbmUgVlBDSV9NU0lYX1BCQSAgICAgICAxCisjZGVmaW5lIFZQ Q0lfTVNJWF9NRU1fTlVNICAgMgorICAgICAgICB1aW50MzJfdCB0YWJsZXNbVlBDSV9NU0lYX01F TV9OVU1dOworICAgICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiB2ZWN0b3JzIHN1cHBvcnRlZCBi eSB0aGUgZGV2aWNlLiAqLworICAgICAgICB1aW50MTZfdCBtYXhfZW50cmllcyA6IDEyOworICAg ICAgICAvKiBNU0ktWCBlbmFibGVkPyAqLworICAgICAgICBib29sIGVuYWJsZWQgICAgICAgICA6 IDE7CisgICAgICAgIC8qIE1hc2tlZD8gKi8KKyAgICAgICAgYm9vbCBtYXNrZWQgICAgICAgICAg OiAxOworICAgICAgICAvKiBFbnRyaWVzLiAqLworICAgICAgICBzdHJ1Y3QgdnBjaV9tc2l4X2Vu dHJ5IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGFkZHI7CisgICAgICAgICAgICB1aW50MzJfdCBk YXRhOworICAgICAgICAgICAgYm9vbCBtYXNrZWQgIDogMTsKKyAgICAgICAgICAgIGJvb2wgdXBk YXRlZCA6IDE7CisgICAgICAgICAgICBzdHJ1Y3QgdnBjaV9hcmNoX21zaXhfZW50cnkgYXJjaDsK KyAgICAgICAgfSBlbnRyaWVzW107CisgICAgfSAqbXNpeDsKICNlbmRpZgogfTsKIApAQCAtMTI4 LDYgKzE1NCw1MSBAQCBpbnQgX19tdXN0X2NoZWNrIHZwY2lfbXNpX2FyY2hfZW5hYmxlKHN0cnVj dCB2cGNpX21zaSAqbXNpLAogdm9pZCB2cGNpX21zaV9hcmNoX2Rpc2FibGUoc3RydWN0IHZwY2lf bXNpICptc2ksIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKIHZvaWQgdnBjaV9tc2lfYXJj aF9pbml0KHN0cnVjdCB2cGNpX21zaSAqbXNpKTsKIHZvaWQgdnBjaV9tc2lfYXJjaF9wcmludChj b25zdCBzdHJ1Y3QgdnBjaV9tc2kgKm1zaSk7CisKKy8qIEFyY2gtc3BlY2lmaWMgdlBDSSBNU0kt WCBoZWxwZXJzLiAqLwordm9pZCB2cGNpX21zaXhfYXJjaF9tYXNrX2VudHJ5KHN0cnVjdCB2cGNp X21zaXhfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBib29sIG1hc2spOworaW50IF9fbXVzdF9jaGVjayB2cGNp X21zaXhfYXJjaF9lbmFibGVfZW50cnkoc3RydWN0IHZwY2lfbXNpeF9lbnRyeSAqZW50cnksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg cGNpX2RldiAqcGRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhZGRyX3QgdGFibGVfYmFzZSk7CitpbnQgX19tdXN0X2NoZWNrIHZwY2lfbXNpeF9hcmNo X2Rpc2FibGVfZW50cnkoc3RydWN0IHZwY2lfbXNpeF9lbnRyeSAqZW50cnksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXYg KnBkZXYpOwordm9pZCB2cGNpX21zaXhfYXJjaF9pbml0X2VudHJ5KHN0cnVjdCB2cGNpX21zaXhf ZW50cnkgKmVudHJ5KTsKK3ZvaWQgdnBjaV9tc2l4X2FyY2hfcHJpbnQoY29uc3Qgc3RydWN0IHZw Y2lfbXNpeCAqbXNpeCk7CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGZldGNoIE1TSVgg cmVsYXRlZCBkYXRhLiBUaGV5IGFyZSB1c2VkIGJ5IGJvdGggdGhlCisgKiBlbXVsYXRlZCBNU0lY IGNvZGUgYW5kIHRoZSBCQVIgaGFuZGxlcnMuCisgKi8KK3N0YXRpYyBpbmxpbmUgcGFkZHJfdCB2 bXNpeF90YWJsZV9iYXNlKGNvbnN0IHN0cnVjdCB2cGNpICp2cGNpLCB1bnNpZ25lZCBpbnQgbnIp Cit7CisgICAgcmV0dXJuIHZwY2ktPmhlYWRlci5iYXJzW3ZwY2ktPm1zaXgtPnRhYmxlc1tucl0g JiBQQ0lfTVNJWF9CSVJNQVNLXS5hZGRyOworfQorCitzdGF0aWMgaW5saW5lIHBhZGRyX3Qgdm1z aXhfdGFibGVfYWRkcihjb25zdCBzdHJ1Y3QgdnBjaSAqdnBjaSwgdW5zaWduZWQgaW50IG5yKQor eworICAgIHJldHVybiB2bXNpeF90YWJsZV9iYXNlKHZwY2ksIG5yKSArCisgICAgICAgICAgICh2 cGNpLT5tc2l4LT50YWJsZXNbbnJdICYgflBDSV9NU0lYX0JJUk1BU0spOworfQorCisvKgorICog Tm90ZSByZWdhcmRpbmcgdGhlIHNpemUgY2FsY3VsYXRpb24gb2YgdGhlIFBCQTogdGhlIHNwZWMg bWVudGlvbnMgIlRoZSBsYXN0CisgKiBRV09SRCB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBmdWxs eSBwb3B1bGF0ZWQiLCBzbyBpdCBpbXBsaWVzIHRoYXQgdGhlIFBCQQorICogc2l6ZSBpcyA2NC1i aXQgYWxpZ25lZC4KKyAqLworc3RhdGljIGlubGluZSBzaXplX3Qgdm1zaXhfdGFibGVfc2l6ZShj b25zdCBzdHJ1Y3QgdnBjaSAqdnBjaSwgdW5zaWduZWQgaW50IG5yKQoreworICAgIHJldHVybgor ICAgICAgICAobnIgPT0gVlBDSV9NU0lYX1RBQkxFKSA/IHZwY2ktPm1zaXgtPm1heF9lbnRyaWVz ICogUENJX01TSVhfRU5UUllfU0laRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 IFJPVU5EVVAoRElWX1JPVU5EX1VQKHZwY2ktPm1zaXgtPm1heF9lbnRyaWVzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgpLCA4KTsKK30K Kworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdm1zaXhfZW50cnlfbnIoY29uc3Qgc3RydWN0 IHZwY2lfbXNpeCAqbXNpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB2cGNpX21zaXhfZW50cnkgKmVudHJ5KQoreworICAgIHJldHVybiBl bnRyeSAtIG1zaXgtPmVudHJpZXM7Cit9CiAjZW5kaWYgLyogX19YRU5fXyAqLwogCiAjZWxzZSAv KiAhQ09ORklHX0hBU19QQ0kgKi8KLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=