From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH] [UPDATE] fs-backend fixes and improvements Date: Tue, 17 Mar 2009 10:55:04 +0000 Message-ID: <49BF8188.2050301@eu.citrix.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030505080306040205000707" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------030505080306040205000707 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Keir Fraser wrote: > On 16/03/2009 11:25, "Stefano Stabellini" > wrote: > >> Hi all, >> this patch is an updated version of the previous patch I sent to fix >> the issues that currently affect fs-backend. >> Compared to the previous version this patch is more resilient to errors >> because it is not using sigprocmask anymore to block SIGUSR2: blocking >> signals doesn't get along very well with glibc's aio implementation. >> Secondly I also introduced explicit error checking on the select return >> value, trying to recover in case of errors. >> >> Signed-off-by: Stefano Stabellini > > The patch fails to apply to xen-unstable. Perhaps it got eaten by your mail > client? > Maybe. I am attaching the patch to this email, is this any better? --------------030505080306040205000707 Content-Type: text/plain; name="fsback" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="fsback" ZGlmZiAtciAwZTE0NDlkNmYyMzEgdG9vbHMvZnMtYmFjay9NYWtlZmlsZQotLS0gYS90b29s cy9mcy1iYWNrL01ha2VmaWxlCUZyaSBNYXIgMTMgMTA6MDk6MjUgMjAwOSArMDAwMAorKysg Yi90b29scy9mcy1iYWNrL01ha2VmaWxlCU1vbiBNYXIgMTYgMTE6MjM6MzYgMjAwOSArMDAw MApAQCAtMTYsNyArMTYsNyBAQAogTElCUyAgICAgIDo9IC1MLiAtTC4uIC1MLi4vbGliCiBM SUJTICAgICAgKz0gJChMREZMQUdTX2xpYnhlbmN0cmwpCiBMSUJTICAgICAgKz0gJChMREZM QUdTX2xpYnhlbnN0b3JlKQotTElCUyAgICAgICs9IC1scHRocmVhZCAtbHJ0IAorTElCUyAg ICAgICs9IC1scnQgCiAKIE9CSlMJICA6PSBmcy14ZW5idXMubyBmcy1vcHMubwogCmRpZmYg LXIgMGUxNDQ5ZDZmMjMxIHRvb2xzL2ZzLWJhY2svZnMtYmFja2VuZC5jCi0tLSBhL3Rvb2xz L2ZzLWJhY2svZnMtYmFja2VuZC5jCUZyaSBNYXIgMTMgMTA6MDk6MjUgMjAwOSArMDAwMAor KysgYi90b29scy9mcy1iYWNrL2ZzLWJhY2tlbmQuYwlNb24gTWFyIDE2IDExOjIzOjM2IDIw MDkgKzAwMDAKQEAgLTMsMTA1ICszLDcxIEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5j bHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0jaW5jbHVkZSA8cHRocmVh ZC5oPgogI2luY2x1ZGUgPHhlbmN0cmwuaD4KICNpbmNsdWRlIDxhaW8uaD4KICNpbmNsdWRl IDxzeXMvbW1hbi5oPgogI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNpbmNsdWRlIDxzeXMv c29ja2V0Lmg+CiAjaW5jbHVkZSA8eGVuL2lvL3JpbmcuaD4KKyNpbmNsdWRlIDxlcnIuaD4K KyNpbmNsdWRlICJzeXMtcXVldWUuaCIKICNpbmNsdWRlICJmcy1iYWNrZW5kLmgiCisjaW5j bHVkZSAiZnMtZGVidWcuaCIKIAogc3RydWN0IHhzX2hhbmRsZSAqeHNoID0gTlVMTDsKIHN0 YXRpYyBzdHJ1Y3QgZnNfZXhwb3J0ICpmc19leHBvcnRzID0gTlVMTDsKIHN0YXRpYyBpbnQg ZXhwb3J0X2lkID0gMDsKIHN0YXRpYyBpbnQgbW91bnRfaWQgPSAwOworc3RhdGljIGludCBw aXBlZmRzWzJdOworc3RhdGljIExJU1RfSEVBRChtb3VudF9yZXF1ZXN0c19oZWFkLCBmc19t b3VudCkgbW91bnRfcmVxdWVzdHNfaGVhZDsKIAotc3RhdGljIHZvaWQgZGlzcGF0Y2hfcmVz cG9uc2Uoc3RydWN0IGZzX21vdW50ICptb3VudCwgaW50IHByaXZfcmVxX2lkKQorc3RhdGlj IHZvaWQgZnJlZV9tb3VudF9yZXF1ZXN0KHN0cnVjdCBmc19tb3VudCAqbW91bnQpOworCitz dGF0aWMgdm9pZCBkaXNwYXRjaF9yZXNwb25zZShzdHJ1Y3QgZnNfcmVxdWVzdCAqcmVxdWVz dCkKIHsKICAgICBpbnQgaTsKICAgICBzdHJ1Y3QgZnNfb3AgKm9wOwotICAgIHN0cnVjdCBm c19yZXF1ZXN0ICpyZXEgPSAmbW91bnQtPnJlcXVlc3RzW3ByaXZfcmVxX2lkXTsKIAogICAg IGZvcihpPTA7O2krKykKICAgICB7CiAgICAgICAgIG9wID0gZnNvcHNbaV07CiAgICAgICAg IC8qIFdlIHNob3VsZCBkaXNwYXRjaCBhIHJlc3BvbnNlIGJlZm9yZSByZWFjaGluZyB0aGUg ZW5kIG9mIHRoZSBhcnJheSAqLwogICAgICAgICBhc3NlcnQob3AgIT0gTlVMTCk7Ci0gICAg ICAgIGlmKG9wLT50eXBlID09IHJlcS0+cmVxX3NoYWRvdy50eXBlKQorICAgICAgICBpZihv cC0+dHlwZSA9PSByZXF1ZXN0LT5yZXFfc2hhZG93LnR5cGUpCiAgICAgICAgIHsKLSAgICAg ICAgICAgIHByaW50ZigiRm91bmQgb3AgZm9yIHR5cGU9JWRcbiIsIG9wLT50eXBlKTsKKyAg ICAgICAgICAgIEZTX0RFQlVHKCJGb3VuZCBvcCBmb3IgdHlwZT0lZFxuIiwgb3AtPnR5cGUp OwogICAgICAgICAgICAgLyogVGhlcmUgbmVlZHMgdG8gYmUgYSByZXNwb25zZSBoYW5kbGVy ICovCiAgICAgICAgICAgICBhc3NlcnQob3AtPnJlc3BvbnNlX2hhbmRsZXIgIT0gTlVMTCk7 Ci0gICAgICAgICAgICBvcC0+cmVzcG9uc2VfaGFuZGxlcihtb3VudCwgcmVxKTsKKyAgICAg ICAgICAgIG9wLT5yZXNwb25zZV9oYW5kbGVyKHJlcXVlc3QtPm1vdW50LCByZXF1ZXN0KTsK ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmVxLT5hY3Rp dmUgPSAwOwotICAgIGFkZF9pZF90b19mcmVlbGlzdChwcml2X3JlcV9pZCwgbW91bnQtPmZy ZWVsaXN0KTsKKyAgICByZXF1ZXN0LT5hY3RpdmUgPSAwOworICAgIGFkZF9pZF90b19mcmVl bGlzdChyZXF1ZXN0LT5pZCwgcmVxdWVzdC0+bW91bnQtPmZyZWVsaXN0KTsKIH0KIAotc3Rh dGljIHZvaWQgaGFuZGxlX2Fpb19ldmVudHMoc3RydWN0IGZzX21vdW50ICptb3VudCkKK3N0 YXRpYyB2b2lkIGhhbmRsZV9haW9fZXZlbnQoc3RydWN0IGZzX3JlcXVlc3QgKnJlcXVlc3Qp CiB7Ci0gICAgaW50IGZkLCByZXQsIGNvdW50LCBpLCBub3RpZnk7Ci0gICAgZXZ0Y2huX3Bv cnRfdCBwb3J0OwotICAgIC8qIEFJTyBjb250cm9sIGJsb2NrIGZvciB0aGUgZXZ0Y2huIGZp bGUgZGVzdHJpcHRvciAqLwotICAgIHN0cnVjdCBhaW9jYiBldnRjaG5fY2I7Ci0gICAgY29u c3Qgc3RydWN0IGFpb2NiICogY2JfbGlzdFttb3VudC0+bnJfZW50cmllc107Ci0gICAgaW50 IHJlcXVlc3RfaWRzW21vdW50LT5ucl9lbnRyaWVzXTsKKyAgICBpbnQgcmV0LCBub3RpZnk7 CiAKLSAgICAvKiBQcmVwYXJlIHRoZSBBSU8gY29udHJvbCBibG9jayBmb3IgZXZ0Y2huICov IAotICAgIGZkID0geGNfZXZ0Y2huX2ZkKG1vdW50LT5ldnRoKTsgCi0gICAgYnplcm8oJmV2 dGNobl9jYiwgc2l6ZW9mKHN0cnVjdCBhaW9jYikpOwotICAgIGV2dGNobl9jYi5haW9fZmls ZGVzID0gZmQ7Ci0gICAgZXZ0Y2huX2NiLmFpb19uYnl0ZXMgPSBzaXplb2YocG9ydCk7Ci0g ICAgZXZ0Y2huX2NiLmFpb19idWYgPSAmcG9ydDsKLSAgICBhc3NlcnQoYWlvX3JlYWQoJmV2 dGNobl9jYikgPT0gMCk7CisgICAgRlNfREVCVUcoImhhbmRsZV9haW9fZXZlbnQ6IG1vdW50 ICVzIHJlcXVlc3QgJWRcbiIsIHJlcXVlc3QtPm1vdW50LT5mcm9udGVuZCwgcmVxdWVzdC0+ aWQpOworICAgIGlmIChyZXF1ZXN0LT5hY3RpdmUgPCAwKSB7CisgICAgICAgIHJlcXVlc3Qt Pm1vdW50LT5ucl9lbnRyaWVzKys7CisgICAgICAgIGlmICghcmVxdWVzdC0+bW91bnQtPm5y X2VudHJpZXMpCisgICAgICAgICAgICBmcmVlX21vdW50X3JlcXVlc3QocmVxdWVzdC0+bW91 bnQpOworICAgICAgICByZXR1cm47CisgICAgfQogCi13YWl0X2FnYWluOiAgIAotICAgIC8q IENyZWF0ZSBsaXN0IG9mIGFjdGl2ZSBBSU8gcmVxdWVzdHMgKi8KLSAgICBjb3VudCA9IDA7 Ci0gICAgZm9yKGk9MDsgaTxtb3VudC0+bnJfZW50cmllczsgaSsrKQotICAgICAgICBpZiht b3VudC0+cmVxdWVzdHNbaV0uYWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYl9s aXN0W2NvdW50XSA9ICZtb3VudC0+cmVxdWVzdHNbaV0uYWlvY2I7Ci0gICAgICAgICAgICBy ZXF1ZXN0X2lkc1tjb3VudF0gPSBpOwotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAg fQotICAgIC8qIEFkZCB0aGUgZXZlbnQgY2hhbm5lbCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0 LiBFdmVudCBjaGFubmVsIG5lZWRzIHRvIGJlCi0gICAgICogaGFuZGxlZCBsYXN0IGFzIGl0 IGV4aXRzIHRoaXMgZnVuY3Rpb24uICovCi0gICAgY2JfbGlzdFtjb3VudF0gPSAmZXZ0Y2hu X2NiOwotICAgIHJlcXVlc3RfaWRzW2NvdW50XSA9IC0xOwotICAgIGNvdW50Kys7CisgICAg cmV0ID0gYWlvX2Vycm9yKCZyZXF1ZXN0LT5haW9jYik7CisgICAgaWYocmV0ICE9IEVJTlBS T0dSRVNTICYmIHJldCAhPSBFQ0FOQ0VMRUQpCisgICAgICAgIGRpc3BhdGNoX3Jlc3BvbnNl KHJlcXVlc3QpOwogCi0gICAgLyogQmxvY2sgdGlsbCBhbiBBSU8gcmVxdXNldCBmaW5pc2hl cywgb3Igd2UgZ2V0IGFuIGV2ZW50ICovIAotICAgIHdoaWxlKDEpIHsKLQlpbnQgcmV0ID0g YWlvX3N1c3BlbmQoY2JfbGlzdCwgY291bnQsIE5VTEwpOwotCWlmICghcmV0KQotCSAgICBi cmVhazsKLQlhc3NlcnQoZXJybm8gPT0gRUlOVFIpOwotICAgIH0KLSAgICBmb3IoaT0wOyBp PGNvdW50OyBpKyspCi0gICAgICAgIGlmKGFpb19lcnJvcihjYl9saXN0W2ldKSAhPSBFSU5Q Uk9HUkVTUykKLSAgICAgICAgewotICAgICAgICAgICAgaWYocmVxdWVzdF9pZHNbaV0gPj0g MCkKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9yZXNwb25zZShtb3VudCwgcmVxdWVzdF9p ZHNbaV0pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdvdG8gcmVhZF9l dmVudF9jaGFubmVsOwotICAgICAgICB9Ci0gCi0gICAgUklOR19QVVNIX1JFU1BPTlNFU19B TkRfQ0hFQ0tfTk9USUZZKCZtb3VudC0+cmluZywgbm90aWZ5KTsKLSAgICBwcmludGYoIlB1 c2hlZCByZXNwb25jZXMgYW5kIG5vdGlmeT0lZFxuIiwgbm90aWZ5KTsKKyAgICBSSU5HX1BV U0hfUkVTUE9OU0VTX0FORF9DSEVDS19OT1RJRlkoJnJlcXVlc3QtPm1vdW50LT5yaW5nLCBu b3RpZnkpOworICAgIEZTX0RFQlVHKCJQdXNoZWQgcmVzcG9uY2VzIGFuZCBub3RpZnk9JWRc biIsIG5vdGlmeSk7CiAgICAgaWYobm90aWZ5KQotICAgICAgICB4Y19ldnRjaG5fbm90aWZ5 KG1vdW50LT5ldnRoLCBtb3VudC0+bG9jYWxfZXZ0Y2huKTsKLSAgICAKLSAgICBnb3RvIHdh aXRfYWdhaW47Ci0KLXJlYWRfZXZlbnRfY2hhbm5lbDogICAgCi0gICAgYXNzZXJ0KGFpb19y ZXR1cm4oJmV2dGNobl9jYikgPT0gc2l6ZW9mKGV2dGNobl9wb3J0X3QpKTsgCi0gICAgYXNz ZXJ0KHhjX2V2dGNobl91bm1hc2sobW91bnQtPmV2dGgsIG1vdW50LT5sb2NhbF9ldnRjaG4p ID49IDApOworICAgICAgICB4Y19ldnRjaG5fbm90aWZ5KHJlcXVlc3QtPm1vdW50LT5ldnRo LCByZXF1ZXN0LT5tb3VudC0+bG9jYWxfZXZ0Y2huKTsKIH0KLQogCiBzdGF0aWMgdm9pZCBh bGxvY2F0ZV9yZXF1ZXN0X2FycmF5KHN0cnVjdCBmc19tb3VudCAqbW91bnQpCiB7CkBAIC0x MTYsNiArODIsNyBAQAogICAgIGZvcihpPTA7IGk8IG5yX2VudHJpZXM7IGkrKykKICAgICB7 CiAgICAgICAgIHJlcXVlc3RzW2ldLmFjdGl2ZSA9IDA7IAorICAgICAgICByZXF1ZXN0c1tp XS5tb3VudCA9IG1vdW50OyAKICAgICAgICAgYWRkX2lkX3RvX2ZyZWVsaXN0KGksIGZyZWVs aXN0KTsKICAgICB9CiAgICAgbW91bnQtPnJlcXVlc3RzID0gcmVxdWVzdHM7CkBAIC0xMjMs NzMgKzkwLDkxIEBACiB9CiAKIAotc3RhdGljIHZvaWQgKmhhbmRsZV9tb3VudCh2b2lkICpk YXRhKQorc3RhdGljIHZvaWQgaGFuZGxlX21vdW50KHN0cnVjdCBmc19tb3VudCAqbW91bnQp CiB7CiAgICAgaW50IG1vcmUsIG5vdGlmeTsKLSAgICBzdHJ1Y3QgZnNfbW91bnQgKm1vdW50 ID0gKHN0cnVjdCBmc19tb3VudCAqKWRhdGE7Ci0gICAgCi0gICAgcHJpbnRmKCJTdGFydGlu ZyBhIHRocmVhZCBmb3IgbW91bnQ6ICVkXG4iLCBtb3VudC0+bW91bnRfaWQpOwotICAgIGFs bG9jYXRlX3JlcXVlc3RfYXJyYXkobW91bnQpOworICAgIGludCBucl9jb25zdW1lZD0wOwor ICAgIFJJTkdfSURYIGNvbnMsIHJwOworICAgIHN0cnVjdCBmc2lmX3JlcXVlc3QgKnJlcTsK IAotICAgIGZvcig7OykKK21vcmV0b2RvOgorICAgIHJwID0gbW91bnQtPnJpbmcuc3Jpbmct PnJlcV9wcm9kOworICAgIHhlbl9ybWIoKTsgLyogRW5zdXJlIHdlIHNlZSBxdWV1ZWQgcmVx dWVzdHMgdXAgdG8gJ3JwJy4gKi8KKworICAgIHdoaWxlICgoY29ucyA9IG1vdW50LT5yaW5n LnJlcV9jb25zKSAhPSBycCkKICAgICB7Ci0gICAgICAgIGludCBucl9jb25zdW1lZD0wOwot ICAgICAgICBSSU5HX0lEWCBjb25zLCBycDsKLSAgICAgICAgc3RydWN0IGZzaWZfcmVxdWVz dCAqcmVxOworICAgICAgICBpbnQgaTsKKyAgICAgICAgc3RydWN0IGZzX29wICpvcDsKIAot ICAgICAgICBoYW5kbGVfYWlvX2V2ZW50cyhtb3VudCk7Ci1tb3JldG9kbzoKLSAgICAgICAg cnAgPSBtb3VudC0+cmluZy5zcmluZy0+cmVxX3Byb2Q7Ci0gICAgICAgIHhlbl9ybWIoKTsg LyogRW5zdXJlIHdlIHNlZSBxdWV1ZWQgcmVxdWVzdHMgdXAgdG8gJ3JwJy4gKi8KKyAgICAg ICAgRlNfREVCVUcoIkdvdCBhIHJlcXVlc3QgYXQgJWQgKG9mICVkKVxuIiwgCisgICAgICAg ICAgICAgICAgY29ucywgUklOR19TSVpFKCZtb3VudC0+cmluZykpOworICAgICAgICByZXEg PSBSSU5HX0dFVF9SRVFVRVNUKCZtb3VudC0+cmluZywgY29ucyk7CisgICAgICAgIEZTX0RF QlVHKCJSZXF1ZXN0IHR5cGU9JWRcbiIsIHJlcS0+dHlwZSk7IAorICAgICAgICBmb3IoaT0w OztpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG9wID0gZnNvcHNbaV07CisgICAgICAg ICAgICBpZihvcCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8q IFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgYXJyYXksIG5vIGFwcHJvcGlyYXRlCisg ICAgICAgICAgICAgICAgICogaGFuZGxlciBmb3VuZC4gV2FybiwgaWdub3JlIGFuZCBjb250 aW51ZS4gKi8KKyAgICAgICAgICAgICAgICBGU19ERUJVRygiV0FSTjogVW5rbm93biByZXF1 ZXN0IHR5cGU6ICVkXG4iLCByZXEtPnR5cGUpOworICAgICAgICAgICAgICAgIG1vdW50LT5y aW5nLnJlcV9jb25zKys7IAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYob3AtPnR5cGUgPT0gcmVxLT50eXBlKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIC8qIFRoZXJlIG5lZWRzIHRvIGJlIGEgZGlzcGF0Y2ggaGFu ZGxlciAqLworICAgICAgICAgICAgICAgIGFzc2VydChvcC0+ZGlzcGF0Y2hfaGFuZGxlciAh PSBOVUxMKTsKKyAgICAgICAgICAgICAgICBvcC0+ZGlzcGF0Y2hfaGFuZGxlcihtb3VudCwg cmVxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQogCi0gICAgICAgIHdoaWxlICgoY29ucyA9IG1vdW50LT5yaW5nLnJlcV9jb25zKSAhPSBy cCkKLSAgICAgICAgewotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICBzdHJ1Y3Qg ZnNfb3AgKm9wOworICAgICAgICBucl9jb25zdW1lZCsrOworICAgIH0KKyAgICBGU19ERUJV RygiQmFja2VuZCBjb25zdW1lZDogJWQgcmVxdWVzdHNcbiIsIG5yX2NvbnN1bWVkKTsKKyAg ICBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUygmbW91bnQtPnJpbmcsIG1vcmUpOwor ICAgIGlmKG1vcmUpIGdvdG8gbW9yZXRvZG87CiAKLSAgICAgICAgICAgIHByaW50ZigiR290 IGEgcmVxdWVzdCBhdCAlZCAob2YgJWQpXG4iLCAKLSAgICAgICAgICAgICAgICAgICAgY29u cywgUklOR19TSVpFKCZtb3VudC0+cmluZykpOwotICAgICAgICAgICAgcmVxID0gUklOR19H RVRfUkVRVUVTVCgmbW91bnQtPnJpbmcsIGNvbnMpOwotICAgICAgICAgICAgcHJpbnRmKCJS ZXF1ZXN0IHR5cGU9JWRcbiIsIHJlcS0+dHlwZSk7IAotICAgICAgICAgICAgZm9yKGk9MDs7 aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG9wID0gZnNvcHNbaV07Ci0g ICAgICAgICAgICAgICAgaWYob3AgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgICAgIC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgYXJyYXks IG5vIGFwcHJvcGlyYXRlCi0gICAgICAgICAgICAgICAgICAgICAqIGhhbmRsZXIgZm91bmQu IFdhcm4sIGlnbm9yZSBhbmQgY29udGludWUuICovCi0gICAgICAgICAgICAgICAgICAgIHBy aW50ZigiV0FSTjogVW5rbm93biByZXF1ZXN0IHR5cGU6ICVkXG4iLCByZXEtPnR5cGUpOwot ICAgICAgICAgICAgICAgICAgICBtb3VudC0+cmluZy5yZXFfY29ucysrOyAKLSAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg IGlmKG9wLT50eXBlID09IHJlcS0+dHlwZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgICAgIC8qIFRoZXJlIG5lZWRzIHRvIGJlIGEgZGlzcGF0Y2ggaGFuZGxlciAq LwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQob3AtPmRpc3BhdGNoX2hhbmRsZXIgIT0g TlVMTCk7Ci0gICAgICAgICAgICAgICAgICAgIG9wLT5kaXNwYXRjaF9oYW5kbGVyKG1vdW50 LCByZXEpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgfQorICAgIFJJTkdfUFVTSF9SRVNQT05TRVNfQU5EX0NIRUNLX05P VElGWSgmbW91bnQtPnJpbmcsIG5vdGlmeSk7CisgICAgRlNfREVCVUcoIlB1c2hlZCByZXNw b25jZXMgYW5kIG5vdGlmeT0lZFxuIiwgbm90aWZ5KTsKKyAgICBpZihub3RpZnkpCisgICAg ICAgIHhjX2V2dGNobl9ub3RpZnkobW91bnQtPmV2dGgsIG1vdW50LT5sb2NhbF9ldnRjaG4p OworfQogCi0gICAgICAgICAgICBucl9jb25zdW1lZCsrOworc3RhdGljIHZvaWQgdGVybWlu YXRlX21vdW50X3JlcXVlc3Qoc3RydWN0IGZzX21vdW50ICptb3VudCkgeworICAgIGludCBj b3VudCA9IDAsIGk7CisKKyAgICBGU19ERUJVRygidGVybWluYXRlX21vdW50X3JlcXVlc3Qg JXNcbiIsIG1vdW50LT5mcm9udGVuZCk7CisgICAgeGVuYnVzX3dyaXRlX2JhY2tlbmRfc3Rh dGUobW91bnQsIFNUQVRFX0NMT1NJTkcpOworCisgICAgZm9yKGk9MDsgaTxtb3VudC0+bnJf ZW50cmllczsgaSsrKQorICAgICAgICBpZihtb3VudC0+cmVxdWVzdHNbaV0uYWN0aXZlKSB7 CisgICAgICAgICAgICBtb3VudC0+cmVxdWVzdHNbaV0uYWN0aXZlID0gLTE7CisgICAgICAg ICAgICBhaW9fY2FuY2VsKG1vdW50LT5yZXF1ZXN0c1tpXS5haW9jYi5haW9fZmlsZGVzLCAm bW91bnQtPnJlcXVlc3RzW2ldLmFpb2NiKTsKKyAgICAgICAgICAgIGNvdW50LS07CiAgICAg ICAgIH0KLSAgICAgICAgcHJpbnRmKCJCYWNrZW5kIGNvbnN1bWVkOiAlZCByZXF1ZXN0c1xu IiwgbnJfY29uc3VtZWQpOwotICAgICAgICBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNU UygmbW91bnQtPnJpbmcsIG1vcmUpOwotICAgICAgICBpZihtb3JlKSBnb3RvIG1vcmV0b2Rv OworICAgIG1vdW50LT5ucl9lbnRyaWVzID0gY291bnQ7CiAKLSAgICAgICAgUklOR19QVVNI X1JFU1BPTlNFU19BTkRfQ0hFQ0tfTk9USUZZKCZtb3VudC0+cmluZywgbm90aWZ5KTsKLSAg ICAgICAgcHJpbnRmKCJQdXNoZWQgcmVzcG9uY2VzIGFuZCBub3RpZnk9JWRcbiIsIG5vdGlm eSk7Ci0gICAgICAgIGlmKG5vdGlmeSkKLSAgICAgICAgICAgIHhjX2V2dGNobl9ub3RpZnko bW91bnQtPmV2dGgsIG1vdW50LT5sb2NhbF9ldnRjaG4pOwotICAgIH0KLSAKLSAgICBwcmlu dGYoIkRlc3Ryb3lpbmcgdGhyZWFkIGZvciBtb3VudDogJWRcbiIsIG1vdW50LT5tb3VudF9p ZCk7CisgICAgd2hpbGUgKCF4ZW5idXNfZnJvbnRlbmRfc3RhdGVfY2hhbmdlZChtb3VudCwg U1RBVEVfQ0xPU0lORykpOworICAgIHhlbmJ1c193cml0ZV9iYWNrZW5kX3N0YXRlKG1vdW50 LCBTVEFURV9DTE9TRUQpOworCiAgICAgeGNfZ250dGFiX211bm1hcChtb3VudC0+Z250aCwg bW91bnQtPnJpbmcuc3JpbmcsIDEpOwogICAgIHhjX2dudHRhYl9jbG9zZShtb3VudC0+Z250 aCk7CiAgICAgeGNfZXZ0Y2huX3VuYmluZChtb3VudC0+ZXZ0aCwgbW91bnQtPmxvY2FsX2V2 dGNobik7CiAgICAgeGNfZXZ0Y2huX2Nsb3NlKG1vdW50LT5ldnRoKTsKKworICAgIGlmICgh Y291bnQpCisgICAgICAgIGZyZWVfbW91bnRfcmVxdWVzdChtb3VudCk7Cit9CisKK3N0YXRp YyB2b2lkIGZyZWVfbW91bnRfcmVxdWVzdChzdHJ1Y3QgZnNfbW91bnQgKm1vdW50KSB7Cisg ICAgRlNfREVCVUcoImZyZWVfbW91bnRfcmVxdWVzdCAlc1xuIiwgbW91bnQtPmZyb250ZW5k KTsKICAgICBmcmVlKG1vdW50LT5mcm9udGVuZCk7Ci0gICAgcHRocmVhZF9leGl0KE5VTEwp OworICAgIGZyZWUobW91bnQtPnJlcXVlc3RzKTsKKyAgICBmcmVlKG1vdW50LT5mcmVlbGlz dCk7CisgICAgTElTVF9SRU1PVkUgKG1vdW50LCBlbnRyaWVzKTsKKyAgICBmcmVlKG1vdW50 KTsKIH0KIAogc3RhdGljIHZvaWQgaGFuZGxlX2Nvbm5lY3Rpb24oaW50IGZyb250ZW5kX2Rv bV9pZCwgaW50IGV4cG9ydF9pZCwgY2hhciAqZnJvbnRlbmQpCkBAIC0xOTcsMTIgKzE4Miwx MSBAQAogICAgIHN0cnVjdCBmc19tb3VudCAqbW91bnQ7CiAgICAgc3RydWN0IGZzX2V4cG9y dCAqZXhwb3J0OwogICAgIGludCBldnRfcG9ydDsKLSAgICBwdGhyZWFkX3QgaGFuZGxpbmdf dGhyZWFkOwogICAgIHN0cnVjdCBmc2lmX3NyaW5nICpzcmluZzsKICAgICB1aW50MzJfdCBk b21faWRzW01BWF9SSU5HX1NJWkVdOwogICAgIGludCBpOwogCi0gICAgcHJpbnRmKCJIYW5k bGluZyBjb25uZWN0aW9uIGZyb20gZG9tPSVkLCBmb3IgZXhwb3J0PSVkXG4iLCAKKyAgICBG U19ERUJVRygiSGFuZGxpbmcgY29ubmVjdGlvbiBmcm9tIGRvbT0lZCwgZm9yIGV4cG9ydD0l ZFxuIiwgCiAgICAgICAgICAgICBmcm9udGVuZF9kb21faWQsIGV4cG9ydF9pZCk7CiAgICAg LyogVHJ5IHRvIGZpbmQgdGhlIGV4cG9ydCBvbiB0aGUgbGlzdCAqLwogICAgIGV4cG9ydCA9 IGZzX2V4cG9ydHM7CkBAIC0yMTQsNyArMTk4LDcgQEAKICAgICB9CiAgICAgaWYoIWV4cG9y dCkKICAgICB7Ci0gICAgICAgIHByaW50ZigiQ291bGQgbm90IGZpbmQgdGhlIGV4cG9ydCAo dGhlIGlkIGlzIHVua25vd24pLlxuIik7CisgICAgICAgIEZTX0RFQlVHKCJDb3VsZCBub3Qg ZmluZCB0aGUgZXhwb3J0ICh0aGUgaWQgaXMgdW5rbm93bikuXG4iKTsKICAgICAgICAgcmV0 dXJuOwogICAgIH0KIApAQCAtMjIzLDcgKzIwNyw3IEBACiAgICAgbW91bnQtPmV4cG9ydCA9 IGV4cG9ydDsKICAgICBtb3VudC0+bW91bnRfaWQgPSBtb3VudF9pZCsrOwogICAgIHhlbmJ1 c19yZWFkX21vdW50X3JlcXVlc3QobW91bnQsIGZyb250ZW5kKTsKLSAgICBwcmludGYoIkZy b250ZW5kIGZvdW5kIGF0OiAlcyAoZ3JlZj0lZCwgZXZ0Y2huPSVkKVxuIiwgCisgICAgRlNf REVCVUcoIkZyb250ZW5kIGZvdW5kIGF0OiAlcyAoZ3JlZj0lZCwgZXZ0Y2huPSVkKVxuIiwg CiAgICAgICAgICAgICBtb3VudC0+ZnJvbnRlbmQsIG1vdW50LT5ncmVmc1swXSwgbW91bnQt PnJlbW90ZV9ldnRjaG4pOwogICAgIHhlbmJ1c193cml0ZV9iYWNrZW5kX25vZGUobW91bnQp OwogICAgIG1vdW50LT5ldnRoID0gLTE7CkBAIC0yNDksMTggKzIzMywyNCBAQAogICAgIG1v dW50LT5ucl9lbnRyaWVzID0gbW91bnQtPnJpbmcubnJfZW50czsgCiAgICAgZm9yIChpID0g MDsgaSA8IE1BWF9GRFM7IGkrKykKICAgICAgICAgbW91bnQtPmZkc1tpXSA9IC0xOwotICAg IHhlbmJ1c193cml0ZV9iYWNrZW5kX3JlYWR5KG1vdW50KTsKIAotICAgIHB0aHJlYWRfY3Jl YXRlKCZoYW5kbGluZ190aHJlYWQsIE5VTEwsICZoYW5kbGVfbW91bnQsIG1vdW50KTsKKyAg ICBMSVNUX0lOU0VSVF9IRUFEKCZtb3VudF9yZXF1ZXN0c19oZWFkLCBtb3VudCwgZW50cmll cyk7CisgICAgeGVuYnVzX3dhdGNoX2Zyb250ZW5kX3N0YXRlKG1vdW50KTsKKyAgICB4ZW5i dXNfd3JpdGVfYmFja2VuZF9zdGF0ZShtb3VudCwgU1RBVEVfUkVBRFkpOworICAgIAorICAg IGFsbG9jYXRlX3JlcXVlc3RfYXJyYXkobW91bnQpOwogfQogCiBzdGF0aWMgdm9pZCBhd2Fp dF9jb25uZWN0aW9ucyh2b2lkKQogewotICAgIGludCBmZCwgcmV0LCBkb21faWQsIGV4cG9y dF9pZDsgCisgICAgaW50IGZkLCBtYXhfZmQsIHJldCwgZG9tX2lkLCBleHBvcnRfaWQ7IAog ICAgIGZkX3NldCBmZHM7CiAgICAgY2hhciAqKndhdGNoX3BhdGhzOwogICAgIHVuc2lnbmVk IGludCBsZW47CiAgICAgY2hhciBkOworICAgIHN0cnVjdCBmc19tb3VudCAqcG9pbnRlcjsK KworICAgIExJU1RfSU5JVCAoJm1vdW50X3JlcXVlc3RzX2hlYWQpOwogCiAgICAgYXNzZXJ0 KHhzaCAhPSBOVUxMKTsKICAgICBmZCA9IHhlbmJ1c19nZXRfd2F0Y2hfZmQoKTsgCkBAIC0y NjgsMjggKzI1OCwxMDEgQEAKICAgICBkbyB7CiAJRkRfWkVSTygmZmRzKTsKIAlGRF9TRVQo ZmQsICZmZHMpOwotICAgICAgICByZXQgPSBzZWxlY3QoZmQrMSwgJmZkcywgTlVMTCwgTlVM TCwgTlVMTCk7Ci0gICAgICAgIGFzc2VydChyZXQgPT0gMSk7Ci0gICAgICAgIHdhdGNoX3Bh dGhzID0geHNfcmVhZF93YXRjaCh4c2gsICZsZW4pOwotICAgICAgICBhc3NlcnQobGVuID09 IDIpOwotICAgICAgICBhc3NlcnQoc3RyY21wKHdhdGNoX3BhdGhzWzFdLCAiY29ubi13YXRj aCIpID09IDApOwotICAgICAgICBkb21faWQgPSAtMTsKLSAgICAgICAgZXhwb3J0X2lkID0g LTE7Ci0JZCA9IDA7Ci0gICAgICAgIHByaW50ZigiUGF0aCBjaGFuZ2VkICVzXG4iLCB3YXRj aF9wYXRoc1swXSk7Ci0gICAgICAgIHNzY2FuZih3YXRjaF9wYXRoc1swXSwgV0FUQ0hfTk9E RSIvJWQvJWQvZnJvbnRlbiVjIiwgCi0gICAgICAgICAgICAgICAgJmRvbV9pZCwgJmV4cG9y dF9pZCwgJmQpOwotICAgICAgICBpZigoZG9tX2lkID49IDApICYmIChleHBvcnRfaWQgPj0g MCkgJiYgZCA9PSAnZCcpIHsKLQkgICAgY2hhciAqZnJvbnRlbmQgPSB4c19yZWFkKHhzaCwg WEJUX05VTEwsIHdhdGNoX3BhdGhzWzBdLCBOVUxMKTsKLQkgICAgaWYgKGZyb250ZW5kKSB7 Ci0JCWhhbmRsZV9jb25uZWN0aW9uKGRvbV9pZCwgZXhwb3J0X2lkLCBmcm9udGVuZCk7Ci0J CXhzX3JtKHhzaCwgWEJUX05VTEwsIHdhdGNoX3BhdGhzWzBdKTsKLQkgICAgfQotCX0KLW5l eHRfc2VsZWN0OiAgICAgICAgCi0gICAgICAgIHByaW50ZigiQXdhaXRpbmcgbmV4dCBjb25u ZWN0aW9uLlxuIik7Ci0gICAgICAgIC8qIFRPRE8gLSB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQg d2hhdCB0byBmcmVlICovCi0JZnJlZSh3YXRjaF9wYXRocyk7CisJRkRfU0VUKHBpcGVmZHNb MF0sICZmZHMpOworICAgICAgICBtYXhfZmQgPSBmZCA+IHBpcGVmZHNbMF0gPyBmZCA6IHBp cGVmZHNbMF07CisgICAgICAgIExJU1RfRk9SRUFDSChwb2ludGVyLCAmbW91bnRfcmVxdWVz dHNfaGVhZCwgZW50cmllcykgeworICAgICAgICAgICAgaW50IHRmZCA9IHhjX2V2dGNobl9m ZChwb2ludGVyLT5ldnRoKTsKKyAgICAgICAgICAgIEZEX1NFVCh0ZmQsICZmZHMpOworICAg ICAgICAgICAgaWYgKHRmZCA+IG1heF9mZCkgbWF4X2ZkID0gdGZkOworICAgICAgICB9Cisg ICAgICAgIHJldCA9IHNlbGVjdChtYXhfZmQrMSwgJmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7 CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlO VFIpIGNvbnRpbnVlOworICAgICAgICAgICAgLyogdHJ5IHRvIHJlY292ZXIgKi8KKyAgICAg ICAgICAgIGVsc2UgaWYgKGVycm5vID09IEVCQURGKSB7CisgICAgICAgICAgICAgICAgc3Ry dWN0IHRpbWV2YWwgdGltZW91dDsKKyAgICAgICAgICAgICAgICBtZW1zZXQoJnRpbWVvdXQs IDB4MDAsIHNpemVvZih0aW1lb3V0KSk7CisgICAgICAgICAgICAgICAgRkRfWkVSTygmZmRz KTsKKyAgICAgICAgICAgICAgICBGRF9TRVQoZmQsICZmZHMpOworICAgICAgICAgICAgICAg IEZEX1NFVChwaXBlZmRzWzBdLCAmZmRzKTsKKyAgICAgICAgICAgICAgICBtYXhfZmQgPSBm ZCA+IHBpcGVmZHNbMF0gPyBmZCA6IHBpcGVmZHNbMF07CisgICAgICAgICAgICAgICAgcmV0 ID0gc2VsZWN0KG1heF9mZCArIDEsICZmZHMsIE5VTEwsIE5VTEwsICZ0aW1lb3V0KTsKKyAg ICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZXJyKDEs ICJzZWxlY3Q6IHVucmVjb3ZlcmFibGUgZXJyb3Igb2NjdXJyZWQ6ICVkXG4iLCBlcnJubyk7 CisKKyAgICAgICAgICAgICAgICAvKiB0cnlpbmcgdG8gZmluZCB0aGUgYm9ndXMgZmQgYW1v bmcgdGhlIG9wZW4gZXZlbnQgY2hhbm5lbHMgKi8KKyAgICAgICAgICAgICAgICBMSVNUX0ZP UkVBQ0gocG9pbnRlciwgJm1vdW50X3JlcXVlc3RzX2hlYWQsIGVudHJpZXMpIHsKKyAgICAg ICAgICAgICAgICAgICAgaW50IHRmZCA9IHhjX2V2dGNobl9mZChwb2ludGVyLT5ldnRoKTsK KyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZ0aW1lb3V0LCAweDAwLCBzaXplb2YodGlt ZW91dCkpOworICAgICAgICAgICAgICAgICAgICBGRF9aRVJPKCZmZHMpOworICAgICAgICAg ICAgICAgICAgICBGRF9TRVQodGZkLCAmZmRzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0 ID0gc2VsZWN0KHRmZCArIDEsICZmZHMsIE5VTEwsIE5VTEwsICZ0aW1lb3V0KTsKKyAgICAg ICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg IEZTX0RFQlVHKCJmZCAlZCBpcyBib2d1cywgY2xvc2luZyB0aGUgcmVsYXRlZCBjb25uZWN0 aW9uXG4iLCB0ZmQpOworICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci0+ZXZ0aCA9 IGZkOworICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlX21vdW50X3JlcXVlc3Qo cG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVycigxLCAic2Vs ZWN0OiB1bnJlY292ZXJhYmxlIGVycm9yIG9jY3VycmVkOiAlZFxuIiwgZXJybm8pOworICAg ICAgICB9CisgICAgICAgIGlmIChGRF9JU1NFVChmZCwgJmZkcykpIHsKKyAgICAgICAgICAg IHdhdGNoX3BhdGhzID0geHNfcmVhZF93YXRjaCh4c2gsICZsZW4pOworICAgICAgICAgICAg aWYgKCFzdHJjbXAod2F0Y2hfcGF0aHNbWFNfV0FUQ0hfVE9LRU5dLCAiY29ubi13YXRjaCIp KSB7CisgICAgICAgICAgICAgICAgZG9tX2lkID0gLTE7CisgICAgICAgICAgICAgICAgZXhw b3J0X2lkID0gLTE7CisgICAgICAgICAgICAgICAgZCA9IDA7CisgICAgICAgICAgICAgICAg RlNfREVCVUcoIlBhdGggY2hhbmdlZCAlc1xuIiwgd2F0Y2hfcGF0aHNbMF0pOworICAgICAg ICAgICAgICAgIHNzY2FuZih3YXRjaF9wYXRoc1tYU19XQVRDSF9QQVRIXSwgV0FUQ0hfTk9E RSIvJWQvJWQvZnJvbnRlbiVjIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAmZG9tX2lk LCAmZXhwb3J0X2lkLCAmZCk7CisgICAgICAgICAgICAgICAgaWYoKGRvbV9pZCA+PSAwKSAm JiAoZXhwb3J0X2lkID49IDApICYmIGQgPT0gJ2QnKSB7CisgICAgICAgICAgICAgICAgICAg IGNoYXIgKmZyb250ZW5kID0geHNfcmVhZCh4c2gsIFhCVF9OVUxMLCB3YXRjaF9wYXRoc1tY U19XQVRDSF9QQVRIXSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcm9udGVu ZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2Nvbm5lY3Rpb24oZG9tX2lk LCBleHBvcnRfaWQsIGZyb250ZW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHhzX3Jt KHhzaCwgWEJUX05VTEwsIHdhdGNoX3BhdGhzW1hTX1dBVENIX1BBVEhdKTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBp ZiAoIXN0cmNtcCh3YXRjaF9wYXRoc1tYU19XQVRDSF9UT0tFTl0sICJmcm9udGVuZC1zdGF0 ZSIpKSB7CisgICAgICAgICAgICAgICAgTElTVF9GT1JFQUNIKHBvaW50ZXIsICZtb3VudF9y ZXF1ZXN0c19oZWFkLCBlbnRyaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghc3Ry bmNtcChwb2ludGVyLT5mcm9udGVuZCwgd2F0Y2hfcGF0aHNbWFNfV0FUQ0hfUEFUSF0sIHN0 cmxlbihwb2ludGVyLT5mcm9udGVuZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpzdGF0ZSA9IHhlbmJ1c19yZWFkX2Zyb250ZW5kX3N0YXRlKHBvaW50ZXIpOworICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSB8fCBzdHJjbXAoc3RhdGUsIFNUQVRF X1JFQURZKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbmJ1c191bndhdGNo X2Zyb250ZW5kX3N0YXRlKHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRlcm1pbmF0ZV9tb3VudF9yZXF1ZXN0KHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShzdGF0ZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgRlNf REVCVUcoInhlbnN0b3JlIHdhdGNoIGV2ZW50IHVucmVjb2duaXplZFxuIik7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBGU19ERUJVRygiQXdhaXRpbmcgbmV4dCBjb25uZWN0aW9u LlxuIik7CisgICAgICAgICAgICAvKiBUT0RPIC0gd2UgbmVlZCB0byBmaWd1cmUgb3V0IHdo YXQgdG8gZnJlZSAqLworICAgICAgICAgICAgZnJlZSh3YXRjaF9wYXRocyk7CisgICAgICAg IH0KKyAgICAgICAgaWYgKEZEX0lTU0VUKHBpcGVmZHNbMF0sICZmZHMpKSB7CisgICAgICAg ICAgICBzdHJ1Y3QgZnNfcmVxdWVzdCAqcmVxdWVzdDsKKyAgICAgICAgICAgIGludCByZXQ7 CisgICAgICAgICAgICByZXQgPSByZWFkKHBpcGVmZHNbMF0sICZyZXF1ZXN0LCBzaXplb2Yo c3RydWN0IGZzX3JlcXVlc3QgKikpOworICAgICAgICAgICAgaWYgKHJldCAhPSBzaXplb2Yo c3RydWN0IGZzX3JlcXVlc3QgKikpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgInJlYWQgcmVxdWVzdCBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxlX2Fpb19ldmVudChyZXF1ZXN0 KTsgCisgICAgICAgIH0KKyAgICAgICAgTElTVF9GT1JFQUNIKHBvaW50ZXIsICZtb3VudF9y ZXF1ZXN0c19oZWFkLCBlbnRyaWVzKSB7CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQoeGNf ZXZ0Y2huX2ZkKHBvaW50ZXItPmV2dGgpLCAmZmRzKSkgeworICAgICAgICAgICAgICAgIGV2 dGNobl9wb3J0X3QgcG9ydDsKKyAgICAgICAgICAgICAgICBwb3J0ID0geGNfZXZ0Y2huX3Bl bmRpbmcocG9pbnRlci0+ZXZ0aCk7CisgICAgICAgICAgICAgICAgaWYgKHBvcnQgIT0gLTEp IHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlX21vdW50KHBvaW50ZXIpOworICAgICAg ICAgICAgICAgICAgICB4Y19ldnRjaG5fdW5tYXNrKHBvaW50ZXItPmV2dGgsIHBvcnQpOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0gd2hp bGUgKDEpOwogfQogCkBAIC0zMTIsMTAgKzM3NSwyOCBAQAogICAgIHJldHVybiBjdXJyX2V4 cG9ydDsKIH0KIAorc3RhdGljIHZvaWQgYWlvX3NpZ25hbF9oYW5kbGVyKGludCBzaWdubywg c2lnaW5mb190ICppbmZvLCB2b2lkICpjb250ZXh0KQoreworICAgIHN0cnVjdCBmc19yZXF1 ZXN0ICpyZXF1ZXN0ID0gKHN0cnVjdCBmc19yZXF1ZXN0KikgaW5mby0+c2lfdmFsdWUuc2l2 YWxfcHRyOworICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworICAgIHdyaXRlKHBpcGVm ZHNbMV0sICZyZXF1ZXN0LCBzaXplb2Yoc3RydWN0IGZzX3JlcXVlc3QgKikpOworICAgIGVy cm5vID0gc2F2ZWRfZXJybm87Cit9CiAKIGludCBtYWluKHZvaWQpCiB7CiAgICAgc3RydWN0 IGZzX2V4cG9ydCAqZXhwb3J0OworICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0OworICAgIHNp Z3NldF90IGVuYWJsZTsKKworICAgIHNpZ2VtcHR5c2V0KCZlbmFibGUpOworICAgIHNpZ2Fk ZHNldCgmZW5hYmxlLCBTSUdVU1IyKTsKKyAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1VOQkxP Q0ssICZlbmFibGUsIE5VTEwpOworCisgICAgc2lnZmlsbHNldCgmYWN0LnNhX21hc2spOwor ICAgIGFjdC5zYV9mbGFncyA9IFNBX1NJR0lORk87IC8qIGRvIG5vdCByZXN0YXJ0IHN5c2Nh bGxzIHRvIGludGVycnVwdCBzZWxlY3QoKTsgdXNlIHNhX3NpZ2FjdGlvbiAqLworICAgIGFj dC5zYV9zaWdhY3Rpb24gPSBhaW9fc2lnbmFsX2hhbmRsZXI7CisgICAgc2lnYWN0aW9uKFNJ R1VTUjIsICZhY3QsIE5VTEwpOwogCiAgICAgLyogT3BlbiB0aGUgY29ubmVjdGlvbiB0byBY ZW5TdG9yZSBmaXJzdCAqLwogICAgIHhzaCA9IHhzX2RvbWFpbl9vcGVuKCk7CkBAIC0zMjcs NiArNDA4LDkgQEAKICAgICAvKiBDcmVhdGUgJiByZWdpc3RlciB0aGUgZGVmYXVsdCBleHBv cnQgKi8KICAgICBleHBvcnQgPSBjcmVhdGVfZXhwb3J0KCJkZWZhdWx0IiwgIi9leHBvcnRz Iik7CiAgICAgeGVuYnVzX3JlZ2lzdGVyX2V4cG9ydChleHBvcnQpOworCisgICAgaWYgKHNv Y2tldHBhaXIoUEZfVU5JWCxTT0NLX1NUUkVBTSwgMCwgcGlwZWZkcykgPT0gLTEpCisgICAg ICAgIGVycigxLCAiZmFpbGVkIHRvIGNyZWF0ZSBwaXBlXG4iKTsKIAogICAgIGF3YWl0X2Nv bm5lY3Rpb25zKCk7CiAgICAgLyogQ2xvc2UgdGhlIGNvbm5lY3Rpb24gdG8gWGVuU3RvcmUg d2hlbiB3ZSBhcmUgZmluaXNoZWQgd2l0aCBldmVyeXRoaW5nICovCmRpZmYgLXIgMGUxNDQ5 ZDZmMjMxIHRvb2xzL2ZzLWJhY2svZnMtYmFja2VuZC5oCi0tLSBhL3Rvb2xzL2ZzLWJhY2sv ZnMtYmFja2VuZC5oCUZyaSBNYXIgMTMgMTA6MDk6MjUgMjAwOSArMDAwMAorKysgYi90b29s cy9mcy1iYWNrL2ZzLWJhY2tlbmQuaAlNb24gTWFyIDE2IDExOjIzOjM2IDIwMDkgKzAwMDAK QEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KICNpbmNs dWRlIDx4ZW4vaW8vcmluZy5oPgogI2luY2x1ZGUgPHhlbi9pby9mc2lmLmg+CisjaW5jbHVk ZSAic3lzLXF1ZXVlLmgiCiAKICNkZWZpbmUgUk9PVF9OT0RFICAgICAgICAgICAiYmFja2Vu ZC92ZnMiCiAjZGVmaW5lIEVYUE9SVFNfU1VCTk9ERSAgICAgImV4cG9ydHMiCkBAIC0yNSw2 ICsyNiw4IEBACiAKIHN0cnVjdCBmc19yZXF1ZXN0CiB7CisgICAgc3RydWN0IGZzX21vdW50 ICptb3VudDsKKyAgICBpbnQgaWQ7CiAgICAgaW50IGFjdGl2ZTsKICAgICB2b2lkICpwYWdl OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQb2ludGVyIHRvIG1hcHBlZCBncmFudCAq LwogICAgIGludCBjb3VudDsKQEAgLTUwLDYgKzUzLDcgQEAKICAgICBzdHJ1Y3QgZnNfcmVx dWVzdCAqcmVxdWVzdHM7CiAgICAgdW5zaWduZWQgc2hvcnQgKmZyZWVsaXN0OwogICAgIGlu dCBmZHNbTUFYX0ZEU107CisgICAgTElTVF9FTlRSWShmc19tb3VudCkgZW50cmllczsKIH07 CiAKIApAQCAtNjEsNyArNjUsMTEgQEAKIGludCB4ZW5idXNfZ2V0X3dhdGNoX2ZkKHZvaWQp Owogdm9pZCB4ZW5idXNfcmVhZF9tb3VudF9yZXF1ZXN0KHN0cnVjdCBmc19tb3VudCAqbW91 bnQsIGNoYXIgKmZyb250ZW5kKTsKIHZvaWQgeGVuYnVzX3dyaXRlX2JhY2tlbmRfbm9kZShz dHJ1Y3QgZnNfbW91bnQgKm1vdW50KTsKLXZvaWQgeGVuYnVzX3dyaXRlX2JhY2tlbmRfcmVh ZHkoc3RydWN0IGZzX21vdW50ICptb3VudCk7Cit2b2lkIHhlbmJ1c193cml0ZV9iYWNrZW5k X3N0YXRlKHN0cnVjdCBmc19tb3VudCAqbW91bnQsIGNvbnN0IGNoYXIgKnN0YXRlKTsKK2lu dCB4ZW5idXNfZnJvbnRlbmRfc3RhdGVfY2hhbmdlZChzdHJ1Y3QgZnNfbW91bnQgKm1vdW50 LCBjb25zdCBjaGFyICpvbGRzdGF0ZSk7Cit2b2lkIHhlbmJ1c193YXRjaF9mcm9udGVuZF9z dGF0ZShzdHJ1Y3QgZnNfbW91bnQgKm1vdW50KTsKK3ZvaWQgeGVuYnVzX3Vud2F0Y2hfZnJv bnRlbmRfc3RhdGUoc3RydWN0IGZzX21vdW50ICptb3VudCk7CitjaGFyKiB4ZW5idXNfcmVh ZF9mcm9udGVuZF9zdGF0ZShzdHJ1Y3QgZnNfbW91bnQgKm1vdW50KTsKIAogLyogRmlsZSBv cGVyYXRpb25zLCBpbXBsZW1lbnRlZCBpbiBmcy1vcHMuYyAqLwogc3RydWN0IGZzX29wCmRp ZmYgLXIgMGUxNDQ5ZDZmMjMxIHRvb2xzL2ZzLWJhY2svZnMtZGVidWcuaAotLS0gL2Rldi9u dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90b29scy9mcy1iYWNr L2ZzLWRlYnVnLmgJTW9uIE1hciAxNiAxMToyMzozNiAyMDA5ICswMDAwCkBAIC0wLDAgKzEs MTIgQEAKKyNpZm5kZWYgX19GU19ERUJVR19fCisjZGVmaW5lIF9fRlNfREVCVUdfXworCisv LyAjZGVmaW5lIERFQlVHIDEKKworI2lmZGVmIERFQlVHCisjZGVmaW5lIEZTX0RFQlVHKGZt dCwgLi4uKSBkbyB7IGZwcmludGYoc3RkZXJyLCBmbXQsICMjIF9fVkFfQVJHU19fKTsgfSB3 aGlsZSAoMCkKKyNlbHNlCisjZGVmaW5lIEZTX0RFQlVHKGZtdCwgLi4uKSBkbyB7IH0gd2hp bGUgKDApCisjZW5kaWYKKworI2VuZGlmIC8qX19GU19ERUJVR19fKi8KZGlmZiAtciAwZTE0 NDlkNmYyMzEgdG9vbHMvZnMtYmFjay9mcy1vcHMuYwotLS0gYS90b29scy9mcy1iYWNrL2Zz LW9wcy5jCUZyaSBNYXIgMTMgMTA6MDk6MjUgMjAwOSArMDAwMAorKysgYi90b29scy9mcy1i YWNrL2ZzLW9wcy5jCU1vbiBNYXIgMTYgMTE6MjM6MzYgMjAwOSArMDAwMApAQCAtMTQsNiAr MTQsNyBAQAogI2luY2x1ZGUgPHN5cy9tb3VudC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog I2luY2x1ZGUgImZzLWJhY2tlbmQuaCIKKyNpbmNsdWRlICJmcy1kZWJ1Zy5oIgogCiAvKiBG b3IgZGVidWdnaW5nIG9ubHkgKi8KICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtMjIsMTIg KzIzLDExIEBACiAKICNkZWZpbmUgQlVGRkVSX1NJWkUgMTAyNAogCi0KIHN0YXRpYyB1bnNp Z25lZCBzaG9ydCBnZXRfcmVxdWVzdChzdHJ1Y3QgZnNfbW91bnQgKm1vdW50LCBzdHJ1Y3Qg ZnNpZl9yZXF1ZXN0ICpyZXEpCiB7CiAgICAgdW5zaWduZWQgc2hvcnQgaWQgPSBnZXRfaWRf ZnJvbV9mcmVlbGlzdChtb3VudC0+ZnJlZWxpc3QpOyAKIAotICAgIHByaW50ZigiUHJpdmF0 ZSBSZXF1ZXN0IGlkOiAlZFxuIiwgaWQpOworICAgIEZTX0RFQlVHKCJQcml2YXRlIFJlcXVl c3QgaWQ6ICVkXG4iLCBpZCk7CiAgICAgbWVtY3B5KCZtb3VudC0+cmVxdWVzdHNbaWRdLnJl cV9zaGFkb3csIHJlcSwgc2l6ZW9mKHN0cnVjdCBmc2lmX3JlcXVlc3QpKTsKICAgICBtb3Vu dC0+cmVxdWVzdHNbaWRdLmFjdGl2ZSA9IDE7CiAKQEAgLTU0LDcgKzU0LDcgQEAKICAgICBm c2lmX3Jlc3BvbnNlX3QgKnJzcDsKICAgICB1aW50MTZfdCByZXFfaWQ7CiAKLSAgICBwcmlu dGYoIkRpc3BhdGNoaW5nIGZpbGUgb3BlbiBvcGVyYXRpb24gKGdyZWY9JWQpLlxuIiwgcmVx LT51LmZvcGVuLmdyZWYpOworICAgIEZTX0RFQlVHKCJEaXNwYXRjaGluZyBmaWxlIG9wZW4g b3BlcmF0aW9uIChncmVmPSVkKS5cbiIsIHJlcS0+dS5mb3Blbi5ncmVmKTsKICAgICAvKiBS ZWFkIHRoZSByZXF1ZXN0LCBhbmQgb3BlbiBmaWxlICovCiAgICAgZmlsZV9uYW1lID0geGNf Z250dGFiX21hcF9ncmFudF9yZWYobW91bnQtPmdudGgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbW91bnQtPmRvbV9pZCwKQEAgLTYyLDEzICs2MiwxMyBA QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCk7 CiAgICAKICAgICByZXFfaWQgPSByZXEtPmlkOwotICAgIHByaW50ZigiRmlsZSBvcGVuIGlz c3VlZCBmb3IgJXNcbiIsIGZpbGVfbmFtZSk7IAorICAgIEZTX0RFQlVHKCJGaWxlIG9wZW4g aXNzdWVkIGZvciAlc1xuIiwgZmlsZV9uYW1lKTsgCiAgICAgYXNzZXJ0KEJVRkZFUl9TSVpF ID4gCiAgICAgICAgICAgIHN0cmxlbihmaWxlX25hbWUpICsgc3RybGVuKG1vdW50LT5leHBv cnQtPmV4cG9ydF9wYXRoKSArIDEpOyAKICAgICBzbnByaW50ZihmdWxsX3BhdGgsIHNpemVv ZihmdWxsX3BhdGgpLCAiJXMvJXMiLAogICAgICAgICAgICBtb3VudC0+ZXhwb3J0LT5leHBv cnRfcGF0aCwgZmlsZV9uYW1lKTsKICAgICBhc3NlcnQoeGNfZ250dGFiX211bm1hcChtb3Vu dC0+Z250aCwgZmlsZV9uYW1lLCAxKSA9PSAwKTsKLSAgICBwcmludGYoIklzc3Vpbmcgb3Bl biBmb3IgJXNcbiIsIGZ1bGxfcGF0aCk7CisgICAgRlNfREVCVUcoIklzc3Vpbmcgb3BlbiBm b3IgJXNcbiIsIGZ1bGxfcGF0aCk7CiAgICAgZmQgPSBnZXRfZmQobW91bnQpOwogICAgIGlm IChmZCA+PSAwKSB7CiAgICAgICAgIGludCByZWFsX2ZkID0gb3BlbihmdWxsX3BhdGgsIE9f UkRXUik7CkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAg ICAgICAgICAgbW91bnQtPmZkc1tmZF0gPSByZWFsX2ZkOwotICAgICAgICAgICAgcHJpbnRm KCJHb3QgRkQ6ICVkIGZvciByZWFsICVkXG4iLCBmZCwgcmVhbF9mZCk7CisgICAgICAgICAg ICBGU19ERUJVRygiR290IEZEOiAlZCBmb3IgcmVhbCAlZFxuIiwgZmQsIHJlYWxfZmQpOwog ICAgICAgICB9CiAgICAgfQogICAgIC8qIFdlIGNhbiBhZHZhbmNlIHRoZSByZXF1ZXN0IGNv bnN1bWVyIGluZGV4LCBmcm9tIGhlcmUgb24sIHRoZSByZXF1ZXN0CkBAIC04Nyw3ICs4Nyw3 IEBACiAKICAgICAvKiBHZXQgYSByZXNwb25zZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNw X2lkeCA9IG1vdW50LT5yaW5nLnJzcF9wcm9kX3B2dCsrOwotICAgIHByaW50ZigiV3JpdGlu ZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKKyAg ICBGU19ERUJVRygiV3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNw X2lkeCwgcmVxX2lkKTsKICAgICByc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmbW91bnQtPnJp bmcsIHJzcF9pZHgpOwogICAgIHJzcC0+aWQgPSByZXFfaWQ7IAogICAgIHJzcC0+cmV0X3Zh bCA9ICh1aW50NjRfdClmZDsKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgIGZzaWZfcmVzcG9u c2VfdCAqcnNwOwogICAgIHVpbnQxNl90IHJlcV9pZDsKIAotICAgIHByaW50ZigiRGlzcGF0 Y2hpbmcgZmlsZSBjbG9zZSBvcGVyYXRpb24gKGZkPSVkKS5cbiIsIHJlcS0+dS5mY2xvc2Uu ZmQpOworICAgIEZTX0RFQlVHKCJEaXNwYXRjaGluZyBmaWxlIGNsb3NlIG9wZXJhdGlvbiAo ZmQ9JWQpLlxuIiwgcmVxLT51LmZjbG9zZS5mZCk7CiAgICAKICAgICByZXFfaWQgPSByZXEt PmlkOwogICAgIGlmIChyZXEtPnUuZmNsb3NlLmZkIDwgTUFYX0ZEUykgewpAQCAtMTA5LDcg KzEwOSw3IEBACiAgICAgICAgIG1vdW50LT5mZHNbcmVxLT51LmZjbG9zZS5mZF0gPSAtMTsK ICAgICB9IGVsc2UKICAgICAgICAgcmV0ID0gLTE7Ci0gICAgcHJpbnRmKCJHb3QgcmV0OiAl ZFxuIiwgcmV0KTsKKyAgICBGU19ERUJVRygiR290IHJldDogJWRcbiIsIHJldCk7CiAgICAg LyogV2UgY2FuIGFkdmFuY2UgdGhlIHJlcXVlc3QgY29uc3VtZXIgaW5kZXgsIGZyb20gaGVy ZSBvbiwgdGhlIHJlcXVlc3QKICAgICAgKiBzaG91bGQgbm90IGJlIHVzZWQgKGl0IG1heSBi ZSBvdmVycmluZGVuIGJ5IGEgcmVzcG9uc2UpICovCiAgICAgbW91bnQtPnJpbmcucmVxX2Nv bnMrKzsKQEAgLTExNyw3ICsxMTcsNyBAQAogCiAgICAgLyogR2V0IGEgcmVzcG9uc2UgZnJv bSB0aGUgcmluZyAqLwogICAgIHJzcF9pZHggPSBtb3VudC0+cmluZy5yc3BfcHJvZF9wdnQr KzsKLSAgICBwcmludGYoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwgaWQ9JWRcbiIs IHJzcF9pZHgsIHJlcV9pZCk7CisgICAgRlNfREVCVUcoIldyaXRpbmcgcmVzcG9uc2UgYXQ6 IGlkeD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9pZCk7CiAgICAgcnNwID0gUklOR19H RVRfUkVTUE9OU0UoJm1vdW50LT5yaW5nLCByc3BfaWR4KTsKICAgICByc3AtPmlkID0gcmVx X2lkOyAKICAgICByc3AtPnJldF92YWwgPSAodWludDY0X3QpcmV0OwpAQCAtMTQzLDcgKzE0 Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9U X1dSSVRFKTsKICAgIAogICAgIHJlcV9pZCA9IHJlcS0+aWQ7Ci0gICAgcHJpbnRmKCJGaWxl IHJlYWQgaXNzdWVkIGZvciBGRD0lZCAobGVuPSUiUFJJdTY0Iiwgb2ZmZXN0PSUiUFJJdTY0 IilcbiIsIAorICAgIEZTX0RFQlVHKCJGaWxlIHJlYWQgaXNzdWVkIGZvciBGRD0lZCAobGVu PSUiUFJJdTY0Iiwgb2ZmZXN0PSUiUFJJdTY0IilcbiIsIAogICAgICAgICAgICAgcmVxLT51 LmZyZWFkLmZkLCByZXEtPnUuZnJlYWQubGVuLCByZXEtPnUuZnJlYWQub2Zmc2V0KTsgCiAK ICAgICBpZiAocmVxLT51LmZyZWFkLmZkIDwgTUFYX0ZEUykKQEAgLTE1MiwxMCArMTUyLDEx IEBACiAgICAgICAgIGZkID0gLTE7CiAKICAgICBwcml2X2lkID0gZ2V0X3JlcXVlc3QobW91 bnQsIHJlcSk7Ci0gICAgcHJpbnRmKCJQcml2YXRlIGlkIGlzOiAlZFxuIiwgcHJpdl9pZCk7 CisgICAgRlNfREVCVUcoIlByaXZhdGUgaWQgaXM6ICVkXG4iLCBwcml2X2lkKTsKICAgICBw cml2X3JlcSA9ICZtb3VudC0+cmVxdWVzdHNbcHJpdl9pZF07CiAgICAgcHJpdl9yZXEtPnBh Z2UgPSBidWY7CiAgICAgcHJpdl9yZXEtPmNvdW50ID0gY291bnQ7CisgICAgcHJpdl9yZXEt PmlkID0gcHJpdl9pZDsKIAogICAgIC8qIERpc3BhdGNoIEFJTyByZWFkIHJlcXVlc3QgKi8K ICAgICBiemVybygmcHJpdl9yZXEtPmFpb2NiLCBzaXplb2Yoc3RydWN0IGFpb2NiKSk7CkBA IC0xNjMsNiArMTY0LDkgQEAKICAgICBwcml2X3JlcS0+YWlvY2IuYWlvX25ieXRlcyA9IHJl cS0+dS5mcmVhZC5sZW47CiAgICAgcHJpdl9yZXEtPmFpb2NiLmFpb19vZmZzZXQgPSByZXEt PnUuZnJlYWQub2Zmc2V0OwogICAgIHByaXZfcmVxLT5haW9jYi5haW9fYnVmID0gYnVmOwor ICAgIHByaXZfcmVxLT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfbm90aWZ5ID0gU0lHRVZf U0lHTkFMOworICAgIHByaXZfcmVxLT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfc2lnbm8g PSBTSUdVU1IyOworICAgIHByaXZfcmVxLT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfdmFs dWUuc2l2YWxfcHRyID0gcHJpdl9yZXE7CiAgICAgYXNzZXJ0KGFpb19yZWFkKCZwcml2X3Jl cS0+YWlvY2IpID49IDApOwogCiBvdXQ6IApAQCAtMTg1LDcgKzE4OSw3IEBACiAgICAgLyog R2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgcmluZyAqLwogICAgIHJzcF9pZHggPSBtb3VudC0+ cmluZy5yc3BfcHJvZF9wdnQrKzsKICAgICByZXFfaWQgPSBwcml2X3JlcS0+cmVxX3NoYWRv dy5pZDsgCi0gICAgcHJpbnRmKCJXcml0aW5nIHJlc3BvbnNlIGF0OiBpZHg9JWQsIGlkPSVk XG4iLCByc3BfaWR4LCByZXFfaWQpOworICAgIEZTX0RFQlVHKCJXcml0aW5nIHJlc3BvbnNl IGF0OiBpZHg9JWQsIGlkPSVkXG4iLCByc3BfaWR4LCByZXFfaWQpOwogICAgIHJzcCA9IFJJ TkdfR0VUX1JFU1BPTlNFKCZtb3VudC0+cmluZywgcnNwX2lkeCk7CiAgICAgcnNwLT5pZCA9 IHJlcV9pZDsgCiAgICAgcnNwLT5yZXRfdmFsID0gKHVpbnQ2NF90KWFpb19yZXR1cm4oJnBy aXZfcmVxLT5haW9jYik7CkBAIC0yMTAsNyArMjE0LDcgQEAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCk7CiAgICAKICAgICByZXFfaWQg PSByZXEtPmlkOwotICAgIHByaW50ZigiRmlsZSB3cml0ZSBpc3N1ZWQgZm9yIEZEPSVkIChs ZW49JSJQUkl1NjQiLCBvZmZlc3Q9JSJQUkl1NjQiKVxuIiwgCisgICAgRlNfREVCVUcoIkZp bGUgd3JpdGUgaXNzdWVkIGZvciBGRD0lZCAobGVuPSUiUFJJdTY0Iiwgb2ZmZXN0PSUiUFJJ dTY0IilcbiIsIAogICAgICAgICAgICAgcmVxLT51LmZ3cml0ZS5mZCwgcmVxLT51LmZ3cml0 ZS5sZW4sIHJlcS0+dS5md3JpdGUub2Zmc2V0KTsgCiAgICAKICAgICBpZiAocmVxLT51LmZ3 cml0ZS5mZCA8IE1BWF9GRFMpCkBAIC0yMTksMTAgKzIyMywxMSBAQAogICAgICAgICBmZCA9 IC0xOwogCiAgICAgcHJpdl9pZCA9IGdldF9yZXF1ZXN0KG1vdW50LCByZXEpOwotICAgIHBy aW50ZigiUHJpdmF0ZSBpZCBpczogJWRcbiIsIHByaXZfaWQpOworICAgIEZTX0RFQlVHKCJQ cml2YXRlIGlkIGlzOiAlZFxuIiwgcHJpdl9pZCk7CiAgICAgcHJpdl9yZXEgPSAmbW91bnQt PnJlcXVlc3RzW3ByaXZfaWRdOwogICAgIHByaXZfcmVxLT5wYWdlID0gYnVmOwogICAgIHBy aXZfcmVxLT5jb3VudCA9IGNvdW50OworICAgIHByaXZfcmVxLT5pZCA9IHByaXZfaWQ7CiAK ICAgICAvKiBEaXNwYXRjaCBBSU8gd3JpdGUgcmVxdWVzdCAqLwogICAgIGJ6ZXJvKCZwcml2 X3JlcS0+YWlvY2IsIHNpemVvZihzdHJ1Y3QgYWlvY2IpKTsKQEAgLTIzMCw2ICsyMzUsOSBA QAogICAgIHByaXZfcmVxLT5haW9jYi5haW9fbmJ5dGVzID0gcmVxLT51LmZ3cml0ZS5sZW47 CiAgICAgcHJpdl9yZXEtPmFpb2NiLmFpb19vZmZzZXQgPSByZXEtPnUuZndyaXRlLm9mZnNl dDsKICAgICBwcml2X3JlcS0+YWlvY2IuYWlvX2J1ZiA9IGJ1ZjsKKyAgICBwcml2X3JlcS0+ YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTDsKKyAgICBw cml2X3JlcS0+YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X3NpZ25vID0gU0lHVVNSMjsKKyAg ICBwcml2X3JlcS0+YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X3ZhbHVlLnNpdmFsX3B0ciA9 IHByaXZfcmVxOwogICAgIGFzc2VydChhaW9fd3JpdGUoJnByaXZfcmVxLT5haW9jYikgPj0g MCk7CiAKICAgICAgCkBAIC0yNTIsNyArMjYwLDcgQEAKICAgICAvKiBHZXQgYSByZXNwb25z ZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5yaW5nLnJzcF9wcm9k X3B2dCsrOwogICAgIHJlcV9pZCA9IHByaXZfcmVxLT5yZXFfc2hhZG93LmlkOyAKLSAgICBw cmludGYoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgs IHJlcV9pZCk7CisgICAgRlNfREVCVUcoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwg aWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9pZCk7CiAgICAgcnNwID0gUklOR19HRVRfUkVTUE9O U0UoJm1vdW50LT5yaW5nLCByc3BfaWR4KTsKICAgICByc3AtPmlkID0gcmVxX2lkOyAKICAg ICByc3AtPnJldF92YWwgPSAodWludDY0X3QpYWlvX3JldHVybigmcHJpdl9yZXEtPmFpb2Ni KTsKQEAgLTI3Myw3ICsyODEsNyBAQAogICAgIGVsc2UKICAgICAgICAgZmQgPSAtMTsKIAot ICAgIHByaW50ZigiRmlsZSBzdGF0IGlzc3VlZCBmb3IgRkQ9JWRcbiIsIHJlcS0+dS5mc3Rh dC5mZCk7IAorICAgIEZTX0RFQlVHKCJGaWxlIHN0YXQgaXNzdWVkIGZvciBGRD0lZFxuIiwg cmVxLT51LmZzdGF0LmZkKTsgCiAgICAKICAgICAvKiBXZSBjYW4gYWR2YW5jZSB0aGUgcmVx dWVzdCBjb25zdW1lciBpbmRleCwgZnJvbSBoZXJlIG9uLCB0aGUgcmVxdWVzdAogICAgICAq IHNob3VsZCBub3QgYmUgdXNlZCAoaXQgbWF5IGJlIG92ZXJyaW5kZW4gYnkgYSByZXNwb25z ZSkgKi8KQEAgLTI4MSwxMiArMjg5LDEyIEBACiAgICAKICAgICAvKiBTdGF0LCBhbmQgY3Jl YXRlIHRoZSByZXNwb25zZSAqLyAKICAgICByZXQgPSBmc3RhdChmZCwgJnN0YXQpOwotICAg IHByaW50ZigiTW9kZT0lbywgdWlkPSVkLCBhX3RpbWU9JWxkXG4iLAorICAgIEZTX0RFQlVH KCJNb2RlPSVvLCB1aWQ9JWQsIGFfdGltZT0lbGRcbiIsCiAgICAgICAgICAgICBzdGF0LnN0 X21vZGUsIHN0YXQuc3RfdWlkLCAobG9uZylzdGF0LnN0X2F0aW1lKTsKICAgICAKICAgICAv KiBHZXQgYSByZXNwb25zZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50 LT5yaW5nLnJzcF9wcm9kX3B2dCsrOwotICAgIHByaW50ZigiV3JpdGluZyByZXNwb25zZSBh dDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKKyAgICBGU19ERUJVRygi V3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lk KTsKICAgICByc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmbW91bnQtPnJpbmcsIHJzcF9pZHgp OwogICAgIHJzcC0+aWQgPSByZXFfaWQ7IAogICAgIHJzcC0+ZnN0YXQuc3RhdF9yZXQgPSAo dWludDMyX3QpcmV0OwpAQCAtMzIwLDcgKzMyOCw3IEBACiAKICAgICByZXFfaWQgPSByZXEt PmlkOwogICAgIGxlbmd0aCA9IHJlcS0+dS5mdHJ1bmNhdGUubGVuZ3RoOwotICAgIHByaW50 ZigiRmlsZSB0cnVuY2F0ZSBpc3N1ZWQgZm9yIEZEPSVkLCBsZW5ndGg9JSJQUklkNjQiXG4i LCByZXEtPnUuZnRydW5jYXRlLmZkLCBsZW5ndGgpOyAKKyAgICBGU19ERUJVRygiRmlsZSB0 cnVuY2F0ZSBpc3N1ZWQgZm9yIEZEPSVkLCBsZW5ndGg9JSJQUklkNjQiXG4iLCByZXEtPnUu ZnRydW5jYXRlLmZkLCBsZW5ndGgpOyAKICAgIAogICAgIGlmIChyZXEtPnUuZnRydW5jYXRl LmZkIDwgTUFYX0ZEUykKICAgICAgICAgZmQgPSBtb3VudC0+ZmRzW3JlcS0+dS5mdHJ1bmNh dGUuZmRdOwpAQCAtMzM2LDcgKzM0NCw3IEBACiAKICAgICAvKiBHZXQgYSByZXNwb25zZSBm cm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5yaW5nLnJzcF9wcm9kX3B2 dCsrOwotICAgIHByaW50ZigiV3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxu IiwgcnNwX2lkeCwgcmVxX2lkKTsKKyAgICBGU19ERUJVRygiV3JpdGluZyByZXNwb25zZSBh dDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKICAgICByc3AgPSBSSU5H X0dFVF9SRVNQT05TRSgmbW91bnQtPnJpbmcsIHJzcF9pZHgpOwogICAgIHJzcC0+aWQgPSBy ZXFfaWQ7IAogICAgIHJzcC0+cmV0X3ZhbCA9ICh1aW50NjRfdClyZXQ7CkBAIC0zNTAsNyAr MzU4LDcgQEAKICAgICBmc2lmX3Jlc3BvbnNlX3QgKnJzcDsKICAgICB1aW50MTZfdCByZXFf aWQ7CiAKLSAgICBwcmludGYoIkRpc3BhdGNoaW5nIHJlbW92ZSBvcGVyYXRpb24gKGdyZWY9 JWQpLlxuIiwgcmVxLT51LmZyZW1vdmUuZ3JlZik7CisgICAgRlNfREVCVUcoIkRpc3BhdGNo aW5nIHJlbW92ZSBvcGVyYXRpb24gKGdyZWY9JWQpLlxuIiwgcmVxLT51LmZyZW1vdmUuZ3Jl Zik7CiAgICAgLyogUmVhZCB0aGUgcmVxdWVzdCwgYW5kIG9wZW4gZmlsZSAqLwogICAgIGZp bGVfbmFtZSA9IHhjX2dudHRhYl9tYXBfZ3JhbnRfcmVmKG1vdW50LT5nbnRoLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50LT5kb21faWQsCkBAIC0z NTgsMTUgKzM2NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBST1RfUkVBRCk7CiAgICAKICAgICByZXFfaWQgPSByZXEtPmlkOwotICAgIHByaW50 ZigiRmlsZSByZW1vdmUgaXNzdWVkIGZvciAlc1xuIiwgZmlsZV9uYW1lKTsgCisgICAgRlNf REVCVUcoIkZpbGUgcmVtb3ZlIGlzc3VlZCBmb3IgJXNcbiIsIGZpbGVfbmFtZSk7IAogICAg IGFzc2VydChCVUZGRVJfU0laRSA+IAogICAgICAgICAgICBzdHJsZW4oZmlsZV9uYW1lKSAr IHN0cmxlbihtb3VudC0+ZXhwb3J0LT5leHBvcnRfcGF0aCkgKyAxKTsgCiAgICAgc25wcmlu dGYoZnVsbF9wYXRoLCBzaXplb2YoZnVsbF9wYXRoKSwgIiVzLyVzIiwKICAgICAgICAgICAg bW91bnQtPmV4cG9ydC0+ZXhwb3J0X3BhdGgsIGZpbGVfbmFtZSk7CiAgICAgYXNzZXJ0KHhj X2dudHRhYl9tdW5tYXAobW91bnQtPmdudGgsIGZpbGVfbmFtZSwgMSkgPT0gMCk7Ci0gICAg cHJpbnRmKCJJc3N1aW5nIHJlbW92ZSBmb3IgJXNcbiIsIGZ1bGxfcGF0aCk7CisgICAgRlNf REVCVUcoIklzc3VpbmcgcmVtb3ZlIGZvciAlc1xuIiwgZnVsbF9wYXRoKTsKICAgICByZXQg PSByZW1vdmUoZnVsbF9wYXRoKTsKLSAgICBwcmludGYoIkdvdCByZXQ6ICVkXG4iLCByZXQp OworICAgIEZTX0RFQlVHKCJHb3QgcmV0OiAlZFxuIiwgcmV0KTsKICAgICAvKiBXZSBjYW4g YWR2YW5jZSB0aGUgcmVxdWVzdCBjb25zdW1lciBpbmRleCwgZnJvbSBoZXJlIG9uLCB0aGUg cmVxdWVzdAogICAgICAqIHNob3VsZCBub3QgYmUgdXNlZCAoaXQgbWF5IGJlIG92ZXJyaW5k ZW4gYnkgYSByZXNwb25zZSkgKi8KICAgICBtb3VudC0+cmluZy5yZXFfY29ucysrOwpAQCAt Mzc0LDcgKzM4Miw3IEBACiAKICAgICAvKiBHZXQgYSByZXNwb25zZSBmcm9tIHRoZSByaW5n ICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5yaW5nLnJzcF9wcm9kX3B2dCsrOwotICAgIHBy aW50ZigiV3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwg cmVxX2lkKTsKKyAgICBGU19ERUJVRygiV3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBp ZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKICAgICByc3AgPSBSSU5HX0dFVF9SRVNQT05T RSgmbW91bnQtPnJpbmcsIHJzcF9pZHgpOwogICAgIHJzcC0+aWQgPSByZXFfaWQ7IAogICAg IHJzcC0+cmV0X3ZhbCA9ICh1aW50NjRfdClyZXQ7CkBAIC0zOTAsNyArMzk4LDcgQEAKICAg ICBmc2lmX3Jlc3BvbnNlX3QgKnJzcDsKICAgICB1aW50MTZfdCByZXFfaWQ7CiAKLSAgICBw cmludGYoIkRpc3BhdGNoaW5nIHJlbmFtZSBvcGVyYXRpb24gKGdyZWY9JWQpLlxuIiwgcmVx LT51LmZyZW1vdmUuZ3JlZik7CisgICAgRlNfREVCVUcoIkRpc3BhdGNoaW5nIHJlbmFtZSBv cGVyYXRpb24gKGdyZWY9JWQpLlxuIiwgcmVxLT51LmZyZW1vdmUuZ3JlZik7CiAgICAgLyog UmVhZCB0aGUgcmVxdWVzdCwgYW5kIG9wZW4gZmlsZSAqLwogICAgIGJ1ZiA9IHhjX2dudHRh Yl9tYXBfZ3JhbnRfcmVmKG1vdW50LT5nbnRoLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1vdW50LT5kb21faWQsCkBAIC00MDAsNyArNDA4LDcgQEAKICAgICByZXFf aWQgPSByZXEtPmlkOwogICAgIG9sZF9maWxlX25hbWUgPSBidWYgKyByZXEtPnUuZnJlbmFt ZS5vbGRfbmFtZV9vZmZzZXQ7CiAgICAgbmV3X2ZpbGVfbmFtZSA9IGJ1ZiArIHJlcS0+dS5m cmVuYW1lLm5ld19uYW1lX29mZnNldDsKLSAgICBwcmludGYoIkZpbGUgcmVuYW1lIGlzc3Vl ZCBmb3IgJXMgLT4gJXMgKGJ1Zj0lcylcbiIsIAorICAgIEZTX0RFQlVHKCJGaWxlIHJlbmFt ZSBpc3N1ZWQgZm9yICVzIC0+ICVzIChidWY9JXMpXG4iLCAKICAgICAgICAgICAgIG9sZF9m aWxlX25hbWUsIG5ld19maWxlX25hbWUsIGJ1Zik7IAogICAgIGFzc2VydChCVUZGRVJfU0la RSA+IAogICAgICAgICAgICBzdHJsZW4ob2xkX2ZpbGVfbmFtZSkgKyBzdHJsZW4obW91bnQt PmV4cG9ydC0+ZXhwb3J0X3BhdGgpICsgMSk7IApAQCAtNDExLDkgKzQxOSw5IEBACiAgICAg c25wcmludGYobmV3X2Z1bGxfcGF0aCwgc2l6ZW9mKG5ld19mdWxsX3BhdGgpLCAiJXMvJXMi LAogICAgICAgICAgICBtb3VudC0+ZXhwb3J0LT5leHBvcnRfcGF0aCwgbmV3X2ZpbGVfbmFt ZSk7CiAgICAgYXNzZXJ0KHhjX2dudHRhYl9tdW5tYXAobW91bnQtPmdudGgsIGJ1ZiwgMSkg PT0gMCk7Ci0gICAgcHJpbnRmKCJJc3N1aW5nIHJlbmFtZSBmb3IgJXMgLT4gJXNcbiIsIG9s ZF9mdWxsX3BhdGgsIG5ld19mdWxsX3BhdGgpOworICAgIEZTX0RFQlVHKCJJc3N1aW5nIHJl bmFtZSBmb3IgJXMgLT4gJXNcbiIsIG9sZF9mdWxsX3BhdGgsIG5ld19mdWxsX3BhdGgpOwog ICAgIHJldCA9IHJlbmFtZShvbGRfZnVsbF9wYXRoLCBuZXdfZnVsbF9wYXRoKTsKLSAgICBw cmludGYoIkdvdCByZXQ6ICVkXG4iLCByZXQpOworICAgIEZTX0RFQlVHKCJHb3QgcmV0OiAl ZFxuIiwgcmV0KTsKICAgICAvKiBXZSBjYW4gYWR2YW5jZSB0aGUgcmVxdWVzdCBjb25zdW1l ciBpbmRleCwgZnJvbSBoZXJlIG9uLCB0aGUgcmVxdWVzdAogICAgICAqIHNob3VsZCBub3Qg YmUgdXNlZCAoaXQgbWF5IGJlIG92ZXJyaW5kZW4gYnkgYSByZXNwb25zZSkgKi8KICAgICBt b3VudC0+cmluZy5yZXFfY29ucysrOwpAQCAtNDIxLDcgKzQyOSw3IEBACiAKICAgICAvKiBH ZXQgYSByZXNwb25zZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5y aW5nLnJzcF9wcm9kX3B2dCsrOwotICAgIHByaW50ZigiV3JpdGluZyByZXNwb25zZSBhdDog aWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKKyAgICBGU19ERUJVRygiV3Jp dGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsK ICAgICByc3AgPSBSSU5HX0dFVF9SRVNQT05TRSgmbW91bnQtPnJpbmcsIHJzcF9pZHgpOwog ICAgIHJzcC0+aWQgPSByZXFfaWQ7IAogICAgIHJzcC0+cmV0X3ZhbCA9ICh1aW50NjRfdCly ZXQ7CkBAIC00MzgsNyArNDQ2LDcgQEAKICAgICBmc2lmX3Jlc3BvbnNlX3QgKnJzcDsKICAg ICB1aW50MTZfdCByZXFfaWQ7CiAKLSAgICBwcmludGYoIkRpc3BhdGNoaW5nIGZpbGUgY3Jl YXRlIG9wZXJhdGlvbiAoZ3JlZj0lZCkuXG4iLCByZXEtPnUuZmNyZWF0ZS5ncmVmKTsKKyAg ICBGU19ERUJVRygiRGlzcGF0Y2hpbmcgZmlsZSBjcmVhdGUgb3BlcmF0aW9uIChncmVmPSVk KS5cbiIsIHJlcS0+dS5mY3JlYXRlLmdyZWYpOwogICAgIC8qIFJlYWQgdGhlIHJlcXVlc3Qs IGFuZCBjcmVhdGUgZmlsZS9kaXJlY3RvcnkgKi8KICAgICBtb2RlID0gcmVxLT51LmZjcmVh dGUubW9kZTsKICAgICBkaXJlY3RvcnkgPSByZXEtPnUuZmNyZWF0ZS5kaXJlY3Rvcnk7CkBA IC00NDgsNyArNDU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQUk9UX1JFQUQpOwogICAgCiAgICAgcmVxX2lkID0gcmVxLT5pZDsKLSAgICBwcmlu dGYoIkZpbGUgY3JlYXRlIGlzc3VlZCBmb3IgJXNcbiIsIGZpbGVfbmFtZSk7IAorICAgIEZT X0RFQlVHKCJGaWxlIGNyZWF0ZSBpc3N1ZWQgZm9yICVzXG4iLCBmaWxlX25hbWUpOyAKICAg ICBhc3NlcnQoQlVGRkVSX1NJWkUgPiAKICAgICAgICAgICAgc3RybGVuKGZpbGVfbmFtZSkg KyBzdHJsZW4obW91bnQtPmV4cG9ydC0+ZXhwb3J0X3BhdGgpICsgMSk7IAogICAgIHNucHJp bnRmKGZ1bGxfcGF0aCwgc2l6ZW9mKGZ1bGxfcGF0aCksICIlcy8lcyIsCkBAIC00NjAsMTIg KzQ2OCwxMiBAQAogCiAgICAgaWYoZGlyZWN0b3J5KQogICAgIHsKLSAgICAgICAgcHJpbnRm KCJJc3N1aW5nIGNyZWF0ZSBmb3IgZGlyZWN0b3J5OiAlc1xuIiwgZnVsbF9wYXRoKTsKKyAg ICAgICAgRlNfREVCVUcoIklzc3VpbmcgY3JlYXRlIGZvciBkaXJlY3Rvcnk6ICVzXG4iLCBm dWxsX3BhdGgpOwogICAgICAgICByZXQgPSBta2RpcihmdWxsX3BhdGgsIG1vZGUpOwogICAg IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBwcmludGYoIklzc3VpbmcgY3JlYXRlIGZv ciBmaWxlOiAlc1xuIiwgZnVsbF9wYXRoKTsKKyAgICAgICAgRlNfREVCVUcoIklzc3Vpbmcg Y3JlYXRlIGZvciBmaWxlOiAlc1xuIiwgZnVsbF9wYXRoKTsKICAgICAgICAgcmV0ID0gZ2V0 X2ZkKG1vdW50KTsKICAgICAgICAgaWYgKHJldCA+PSAwKSB7CiAgICAgICAgICAgICBpbnQg cmVhbF9mZCA9IGNyZWF0KGZ1bGxfcGF0aCwgbW9kZSk7IApAQCAtNDc0LDE1ICs0ODIsMTUg QEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBt b3VudC0+ZmRzW3JldF0gPSByZWFsX2ZkOwotICAgICAgICAgICAgICAgIHByaW50ZigiR290 IEZEOiAlZCBmb3IgcmVhbCAlZFxuIiwgcmV0LCByZWFsX2ZkKTsKKyAgICAgICAgICAgICAg ICBGU19ERUJVRygiR290IEZEOiAlZCBmb3IgcmVhbCAlZFxuIiwgcmV0LCByZWFsX2ZkKTsK ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBwcmludGYoIkdvdCByZXQg JWQgKGVycm5vPSVkKVxuIiwgcmV0LCBlcnJubyk7CisgICAgRlNfREVCVUcoIkdvdCByZXQg JWQgKGVycm5vPSVkKVxuIiwgcmV0LCBlcnJubyk7CiAKICAgICAvKiBHZXQgYSByZXNwb25z ZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5yaW5nLnJzcF9wcm9k X3B2dCsrOwotICAgIHByaW50ZigiV3JpdGluZyByZXNwb25zZSBhdDogaWR4PSVkLCBpZD0l ZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKKyAgICBGU19ERUJVRygiV3JpdGluZyByZXNwb25z ZSBhdDogaWR4PSVkLCBpZD0lZFxuIiwgcnNwX2lkeCwgcmVxX2lkKTsKICAgICByc3AgPSBS SU5HX0dFVF9SRVNQT05TRSgmbW91bnQtPnJpbmcsIHJzcF9pZHgpOwogICAgIHJzcC0+aWQg PSByZXFfaWQ7IAogICAgIHJzcC0+cmV0X3ZhbCA9ICh1aW50NjRfdClyZXQ7CkBAIC00OTks NyArNTA3LDcgQEAKICAgICBESVIgKmRpcjsKICAgICBzdHJ1Y3QgZGlyZW50ICpkaXJlbnQg PSBOVUxMOwogCi0gICAgcHJpbnRmKCJEaXNwYXRjaGluZyBsaXN0IG9wZXJhdGlvbiAoZ3Jl Zj0lZCkuXG4iLCByZXEtPnUuZmxpc3QuZ3JlZik7CisgICAgRlNfREVCVUcoIkRpc3BhdGNo aW5nIGxpc3Qgb3BlcmF0aW9uIChncmVmPSVkKS5cbiIsIHJlcS0+dS5mbGlzdC5ncmVmKTsK ICAgICAvKiBSZWFkIHRoZSByZXF1ZXN0LCBhbmQgbGlzdCBkaXJlY3RvcnkgKi8KICAgICBv ZmZzZXQgPSByZXEtPnUuZmxpc3Qub2Zmc2V0OwogICAgIGJ1ZiA9IGZpbGVfbmFtZSA9IHhj X2dudHRhYl9tYXBfZ3JhbnRfcmVmKG1vdW50LT5nbnRoLApAQCAtNTA4LDcgKzUxNiw3IEBA CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwg UFJPVF9XUklURSk7CiAgICAKICAgICByZXFfaWQgPSByZXEtPmlkOwotICAgIHByaW50Zigi RGlyIGxpc3QgaXNzdWVkIGZvciAlc1xuIiwgZmlsZV9uYW1lKTsgCisgICAgRlNfREVCVUco IkRpciBsaXN0IGlzc3VlZCBmb3IgJXNcbiIsIGZpbGVfbmFtZSk7IAogICAgIGFzc2VydChC VUZGRVJfU0laRSA+IAogICAgICAgICAgICBzdHJsZW4oZmlsZV9uYW1lKSArIHN0cmxlbiht b3VudC0+ZXhwb3J0LT5leHBvcnRfcGF0aCkgKyAxKTsgCiAgICAgc25wcmludGYoZnVsbF9w YXRoLCBzaXplb2YoZnVsbF9wYXRoKSwgIiVzLyVzIiwKQEAgLTU1Miw3ICs1NjAsNyBAQAog ICAgIAogICAgIC8qIEdldCBhIHJlc3BvbnNlIGZyb20gdGhlIHJpbmcgKi8KICAgICByc3Bf aWR4ID0gbW91bnQtPnJpbmcucnNwX3Byb2RfcHZ0Kys7Ci0gICAgcHJpbnRmKCJXcml0aW5n IHJlc3BvbnNlIGF0OiBpZHg9JWQsIGlkPSVkXG4iLCByc3BfaWR4LCByZXFfaWQpOworICAg IEZTX0RFQlVHKCJXcml0aW5nIHJlc3BvbnNlIGF0OiBpZHg9JWQsIGlkPSVkXG4iLCByc3Bf aWR4LCByZXFfaWQpOwogICAgIHJzcCA9IFJJTkdfR0VUX1JFU1BPTlNFKCZtb3VudC0+cmlu ZywgcnNwX2lkeCk7CiAgICAgcnNwLT5pZCA9IHJlcV9pZDsgCiAgICAgcnNwLT5yZXRfdmFs ID0gcmV0X3ZhbDsKQEAgLTU2Niw3ICs1NzQsNyBAQAogICAgIHVpbnQxNl90IHJlcV9pZDsK ICAgICBpbnQzMl90IG1vZGU7CiAKLSAgICBwcmludGYoIkRpc3BhdGNoaW5nIGZpbGUgY2ht b2Qgb3BlcmF0aW9uIChmZD0lZCwgbW9kZT0lbykuXG4iLCAKKyAgICBGU19ERUJVRygiRGlz cGF0Y2hpbmcgZmlsZSBjaG1vZCBvcGVyYXRpb24gKGZkPSVkLCBtb2RlPSVvKS5cbiIsIAog ICAgICAgICAgICAgcmVxLT51LmZjaG1vZC5mZCwgcmVxLT51LmZjaG1vZC5tb2RlKTsKICAg ICByZXFfaWQgPSByZXEtPmlkOwogICAgIGlmIChyZXEtPnUuZmNobW9kLmZkIDwgTUFYX0ZE UykKQEAgLTU4Myw3ICs1OTEsNyBAQAogCiAgICAgLyogR2V0IGEgcmVzcG9uc2UgZnJvbSB0 aGUgcmluZyAqLwogICAgIHJzcF9pZHggPSBtb3VudC0+cmluZy5yc3BfcHJvZF9wdnQrKzsK LSAgICBwcmludGYoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwgaWQ9JWRcbiIsIHJz cF9pZHgsIHJlcV9pZCk7CisgICAgRlNfREVCVUcoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlk eD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9pZCk7CiAgICAgcnNwID0gUklOR19HRVRf UkVTUE9OU0UoJm1vdW50LT5yaW5nLCByc3BfaWR4KTsKICAgICByc3AtPmlkID0gcmVxX2lk OyAKICAgICByc3AtPnJldF92YWwgPSAodWludDY0X3QpcmV0OwpAQCAtNTk4LDcgKzYwNiw3 IEBACiAgICAgc3RydWN0IHN0YXR2ZnMgc3RhdDsKICAgICBpbnQ2NF90IHJldDsKIAotICAg IHByaW50ZigiRGlzcGF0Y2hpbmcgZnMgc3BhY2Ugb3BlcmF0aW9uIChncmVmPSVkKS5cbiIs IHJlcS0+dS5mc3BhY2UuZ3JlZik7CisgICAgRlNfREVCVUcoIkRpc3BhdGNoaW5nIGZzIHNw YWNlIG9wZXJhdGlvbiAoZ3JlZj0lZCkuXG4iLCByZXEtPnUuZnNwYWNlLmdyZWYpOwogICAg IC8qIFJlYWQgdGhlIHJlcXVlc3QsIGFuZCBvcGVuIGZpbGUgKi8KICAgICBmaWxlX25hbWUg PSB4Y19nbnR0YWJfbWFwX2dyYW50X3JlZihtb3VudC0+Z250aCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudC0+ZG9tX2lkLApAQCAtNjA2LDEzICs2 MTQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9U X1JFQUQpOwogICAgCiAgICAgcmVxX2lkID0gcmVxLT5pZDsKLSAgICBwcmludGYoIkZzIHNw YWNlIGlzc3VlZCBmb3IgJXNcbiIsIGZpbGVfbmFtZSk7IAorICAgIEZTX0RFQlVHKCJGcyBz cGFjZSBpc3N1ZWQgZm9yICVzXG4iLCBmaWxlX25hbWUpOyAKICAgICBhc3NlcnQoQlVGRkVS X1NJWkUgPiAKICAgICAgICAgICAgc3RybGVuKGZpbGVfbmFtZSkgKyBzdHJsZW4obW91bnQt PmV4cG9ydC0+ZXhwb3J0X3BhdGgpICsgMSk7IAogICAgIHNucHJpbnRmKGZ1bGxfcGF0aCwg c2l6ZW9mKGZ1bGxfcGF0aCksICIlcy8lcyIsCiAgICAgICAgICAgIG1vdW50LT5leHBvcnQt PmV4cG9ydF9wYXRoLCBmaWxlX25hbWUpOwogICAgIGFzc2VydCh4Y19nbnR0YWJfbXVubWFw KG1vdW50LT5nbnRoLCBmaWxlX25hbWUsIDEpID09IDApOwotICAgIHByaW50ZigiSXNzdWlu ZyBmcyBzcGFjZSBmb3IgJXNcbiIsIGZ1bGxfcGF0aCk7CisgICAgRlNfREVCVUcoIklzc3Vp bmcgZnMgc3BhY2UgZm9yICVzXG4iLCBmdWxsX3BhdGgpOwogICAgIHJldCA9IHN0YXR2ZnMo ZnVsbF9wYXRoLCAmc3RhdCk7CiAgICAgaWYocmV0ID49IDApCiAgICAgICAgIHJldCA9IHN0 YXQuZl9ic2l6ZSAqIHN0YXQuZl9iZnJlZTsKQEAgLTYyNCw3ICs2MzIsNyBAQAogCiAgICAg LyogR2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgcmluZyAqLwogICAgIHJzcF9pZHggPSBtb3Vu dC0+cmluZy5yc3BfcHJvZF9wdnQrKzsKLSAgICBwcmludGYoIldyaXRpbmcgcmVzcG9uc2Ug YXQ6IGlkeD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9pZCk7CisgICAgRlNfREVCVUco IldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9p ZCk7CiAgICAgcnNwID0gUklOR19HRVRfUkVTUE9OU0UoJm1vdW50LT5yaW5nLCByc3BfaWR4 KTsKICAgICByc3AtPmlkID0gcmVxX2lkOyAKICAgICByc3AtPnJldF92YWwgPSAodWludDY0 X3QpcmV0OwpAQCAtNjQzLDE1ICs2NTEsMTkgQEAKICAgICBlbHNlCiAgICAgICAgIGZkID0g LTE7CiAKLSAgICBwcmludGYoIkZpbGUgc3luYyBpc3N1ZWQgZm9yIEZEPSVkXG4iLCByZXEt PnUuZnN5bmMuZmQpOyAKKyAgICBGU19ERUJVRygiRmlsZSBzeW5jIGlzc3VlZCBmb3IgRkQ9 JWRcbiIsIHJlcS0+dS5mc3luYy5mZCk7IAogICAgCiAgICAgcHJpdl9pZCA9IGdldF9yZXF1 ZXN0KG1vdW50LCByZXEpOwotICAgIHByaW50ZigiUHJpdmF0ZSBpZCBpczogJWRcbiIsIHBy aXZfaWQpOworICAgIEZTX0RFQlVHKCJQcml2YXRlIGlkIGlzOiAlZFxuIiwgcHJpdl9pZCk7 CiAgICAgcHJpdl9yZXEgPSAmbW91bnQtPnJlcXVlc3RzW3ByaXZfaWRdOworICAgIHByaXZf cmVxLT5pZCA9IHByaXZfaWQ7CiAKICAgICAvKiBEaXNwYXRjaCBBSU8gcmVhZCByZXF1ZXN0 ICovCiAgICAgYnplcm8oJnByaXZfcmVxLT5haW9jYiwgc2l6ZW9mKHN0cnVjdCBhaW9jYikp OwogICAgIHByaXZfcmVxLT5haW9jYi5haW9fZmlsZGVzID0gZmQ7CisgICAgcHJpdl9yZXEt PmFpb2NiLmFpb19zaWdldmVudC5zaWdldl9ub3RpZnkgPSBTSUdFVl9TSUdOQUw7CisgICAg cHJpdl9yZXEtPmFpb2NiLmFpb19zaWdldmVudC5zaWdldl9zaWdubyA9IFNJR1VTUjI7Cisg ICAgcHJpdl9yZXEtPmFpb2NiLmFpb19zaWdldmVudC5zaWdldl92YWx1ZS5zaXZhbF9wdHIg PSBwcml2X3JlcTsKICAgICBhc3NlcnQoYWlvX2ZzeW5jKE9fU1lOQywgJnByaXZfcmVxLT5h aW9jYikgPj0gMCk7CiAKICAgICAgCkBAIC02NjksNyArNjgxLDcgQEAKICAgICAvKiBHZXQg YSByZXNwb25zZSBmcm9tIHRoZSByaW5nICovCiAgICAgcnNwX2lkeCA9IG1vdW50LT5yaW5n LnJzcF9wcm9kX3B2dCsrOwogICAgIHJlcV9pZCA9IHByaXZfcmVxLT5yZXFfc2hhZG93Lmlk OyAKLSAgICBwcmludGYoIldyaXRpbmcgcmVzcG9uc2UgYXQ6IGlkeD0lZCwgaWQ9JWRcbiIs IHJzcF9pZHgsIHJlcV9pZCk7CisgICAgRlNfREVCVUcoIldyaXRpbmcgcmVzcG9uc2UgYXQ6 IGlkeD0lZCwgaWQ9JWRcbiIsIHJzcF9pZHgsIHJlcV9pZCk7CiAgICAgcnNwID0gUklOR19H RVRfUkVTUE9OU0UoJm1vdW50LT5yaW5nLCByc3BfaWR4KTsKICAgICByc3AtPmlkID0gcmVx X2lkOyAKICAgICByc3AtPnJldF92YWwgPSAodWludDY0X3QpYWlvX3JldHVybigmcHJpdl9y ZXEtPmFpb2NiKTsKZGlmZiAtciAwZTE0NDlkNmYyMzEgdG9vbHMvZnMtYmFjay9mcy14ZW5i dXMuYwotLS0gYS90b29scy9mcy1iYWNrL2ZzLXhlbmJ1cy5jCUZyaSBNYXIgMTMgMTA6MDk6 MjUgMjAwOSArMDAwMAorKysgYi90b29scy9mcy1iYWNrL2ZzLXhlbmJ1cy5jCU1vbiBNYXIg MTYgMTE6MjM6MzYgMjAwOSArMDAwMApAQCAtNCwxMCArNCwxMiBAQAogI2luY2x1ZGUgPHN0 ZGFyZy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgorI2lu Y2x1ZGUgPHN5cy9zZWxlY3QuaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8 eHMuaD4KICNpbmNsdWRlIDx4ZW4vaW8vZnNpZi5oPgogI2luY2x1ZGUgImZzLWJhY2tlbmQu aCIKKyNpbmNsdWRlICJmcy1kZWJ1Zy5oIgogCiAKIHN0YXRpYyBib29sIHhlbmJ1c19wcmlu dGYoc3RydWN0IHhzX2hhbmRsZSAqeHNoLApAQCAtMjUsNyArMjcsNyBAQAogICAgIHNucHJp bnRmKGZ1bGxwYXRoLCBzaXplb2YoZnVsbHBhdGgpLCAiJXMvJXMiLCBub2RlLCBwYXRoKTsK ICAgICB2c25wcmludGYodmFsLCBzaXplb2YodmFsKSwgZm10LCBhcmdzKTsKICAgICB2YV9l bmQoYXJncyk7Ci0gICAgcHJpbnRmKCJ4ZW5idXNfcHJpbnRmICglcykgPD0gJXMuXG4iLCBm dWxscGF0aCwgdmFsKTsgICAgCisgICAgRlNfREVCVUcoInhlbmJ1c19wcmludGYgKCVzKSA8 PSAlcy5cbiIsIGZ1bGxwYXRoLCB2YWwpOyAgICAKIAogICAgIHJldHVybiB4c193cml0ZSh4 c2gsIHhidCwgZnVsbHBhdGgsIHZhbCwgc3RybGVuKHZhbCkpOwogfQpAQCAtNTcsMTkgKzU5 LDE5IEBACiAgICAgYXNzZXJ0KHhzaCAhPSBOVUxMKTsKICAgICBpZih4c2ggPT0gTlVMTCkK ICAgICB7Ci0gICAgICAgIHByaW50ZigiQ291bGQgbm90IG9wZW4gY29ubmVjdGlvbiB0byB4 ZW5idXMgZGVhbW9uLlxuIik7CisgICAgICAgIEZTX0RFQlVHKCJDb3VsZCBub3Qgb3BlbiBj b25uZWN0aW9uIHRvIHhlbmJ1cyBkZWFtb24uXG4iKTsKICAgICAgICAgZ290byBlcnJvcl9l eGl0OwogICAgIH0KLSAgICBwcmludGYoIkNvbm5lY3Rpb24gdG8gdGhlIHhlbmJ1cyBkZWFt b24gb3BlbmVkIHN1Y2Nlc3NmdWxseS5cbiIpOworICAgIEZTX0RFQlVHKCJDb25uZWN0aW9u IHRvIHRoZSB4ZW5idXMgZGVhbW9uIG9wZW5lZCBzdWNjZXNzZnVsbHkuXG4iKTsKIAogICAg IC8qIFN0YXJ0IHRyYW5zYWN0aW9uICovCiAgICAgeHN0ID0geHNfdHJhbnNhY3Rpb25fc3Rh cnQoeHNoKTsKICAgICBpZih4c3QgPT0gMCkKICAgICB7Ci0gICAgICAgIHByaW50ZigiQ291 bGQgbm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24uXG4iKTsKKyAgICAgICAgRlNfREVCVUcoIkNv dWxkIG5vdCBzdGFydCBhIHRyYW5zYWN0aW9uLlxuIik7CiAgICAgICAgIGdvdG8gZXJyb3Jf ZXhpdDsKICAgICB9Ci0gICAgcHJpbnRmKCJYUyB0cmFuc2FjdGlvbiBpcyAlZFxuIiwgeHN0 KTsgCisgICAgRlNfREVCVUcoIlhTIHRyYW5zYWN0aW9uIGlzICVkXG4iLCB4c3QpOyAKICAK ICAgICAvKiBDcmVhdGUgbm9kZSBzdHJpbmcgKi8KICAgICBzbnByaW50Zihub2RlLCBzaXpl b2Yobm9kZSksICIlcy8lZCIsIEVYUE9SVFNfTk9ERSwgZXhwb3J0LT5leHBvcnRfaWQpOyAK QEAgLTc4LDcgKzgwLDcgQEAKIAogICAgIGlmKCF4ZW5idXNfcHJpbnRmKHhzaCwgeHN0LCBu b2RlLCAibmFtZSIsICIlcyIsIGV4cG9ydC0+bmFtZSkpCiAgICAgewotICAgICAgICBwcmlu dGYoIkNvdWxkIG5vdCB3cml0ZSB0aGUgZXhwb3J0IG5vZGUuXG4iKTsKKyAgICAgICAgRlNf REVCVUcoIkNvdWxkIG5vdCB3cml0ZSB0aGUgZXhwb3J0IG5vZGUuXG4iKTsKICAgICAgICAg Z290byBlcnJvcl9leGl0OwogICAgIH0KIApAQCAtODcsNyArODksNyBAQAogICAgIHBlcm1z LnBlcm1zID0gWFNfUEVSTV9SRUFEOwogICAgIGlmKCF4c19zZXRfcGVybWlzc2lvbnMoeHNo LCB4c3QsIEVYUE9SVFNfTk9ERSwgJnBlcm1zLCAxKSkKICAgICB7Ci0gICAgICAgIHByaW50 ZigiQ291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiB0aGUgZXhwb3J0IG5vZGUuXG4iKTsK KyAgICAgICAgRlNfREVCVUcoIkNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gdGhlIGV4 cG9ydCBub2RlLlxuIik7CiAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKICAgICB9CiAKQEAg LTE2Niw3ICsxNjgsNyBAQAogCiAgICAgYXNzZXJ0KHhzaCAhPSBOVUxMKTsKICAgICBzZWxm X2lkID0gZ2V0X3NlbGZfaWQoKTsKLSAgICBwcmludGYoIk91ciBvd24gZG9tX2lkPSVkXG4i LCBzZWxmX2lkKTsKKyAgICBGU19ERUJVRygiT3VyIG93biBkb21faWQ9JWRcbiIsIHNlbGZf aWQpOwogICAgIHNucHJpbnRmKG5vZGUsIHNpemVvZihub2RlKSwgIiVzL2JhY2tlbmQiLCBt b3VudC0+ZnJvbnRlbmQpOwogICAgIHNucHJpbnRmKGJhY2tlbmRfbm9kZSwgc2l6ZW9mKGJh Y2tlbmRfbm9kZSksICIvbG9jYWwvZG9tYWluLyVkLyJST09UX05PREUiLyVkIiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZl9pZCwgbW91bnQtPm1vdW50X2lkKTsK QEAgLTE3Niw3ICsxNzgsNyBAQAogICAgIHhzX3dyaXRlKHhzaCwgWEJUX05VTEwsIG5vZGUs IFNUQVRFX0lOSVRJQUxJU0VELCBzdHJsZW4oU1RBVEVfSU5JVElBTElTRUQpKTsKIH0KIAot dm9pZCB4ZW5idXNfd3JpdGVfYmFja2VuZF9yZWFkeShzdHJ1Y3QgZnNfbW91bnQgKm1vdW50 KQordm9pZCB4ZW5idXNfd3JpdGVfYmFja2VuZF9zdGF0ZShzdHJ1Y3QgZnNfbW91bnQgKm1v dW50LCBjb25zdCBjaGFyICpzdGF0ZSkKIHsKICAgICBjaGFyIG5vZGVbMTAyNF07CiAgICAg aW50IHNlbGZfaWQ7CkBAIC0xODQsNiArMTg2LDU5IEBACiAgICAgYXNzZXJ0KHhzaCAhPSBO VUxMKTsKICAgICBzZWxmX2lkID0gZ2V0X3NlbGZfaWQoKTsKICAgICBzbnByaW50Zihub2Rl LCBzaXplb2Yobm9kZSksIFJPT1RfTk9ERSIvJWQvc3RhdGUiLCBtb3VudC0+bW91bnRfaWQp OwotICAgIHhzX3dyaXRlKHhzaCwgWEJUX05VTEwsIG5vZGUsIFNUQVRFX1JFQURZLCBzdHJs ZW4oU1RBVEVfUkVBRFkpKTsKKyAgICB4c193cml0ZSh4c2gsIFhCVF9OVUxMLCBub2RlLCBz dGF0ZSwgc3RybGVuKHN0YXRlKSk7CiB9CiAKK3ZvaWQgeGVuYnVzX3dhdGNoX2Zyb250ZW5k X3N0YXRlKHN0cnVjdCBmc19tb3VudCAqbW91bnQpCit7CisgICAgaW50IHJlczsKKyAgICBj aGFyIHN0YXRlcGF0aFsxMDI0XTsKKworICAgIGFzc2VydCh4c2ggIT0gTlVMTCk7CisgICAg c25wcmludGYoc3RhdGVwYXRoLCBzaXplb2Yoc3RhdGVwYXRoKSwgIiVzL3N0YXRlIiwgbW91 bnQtPmZyb250ZW5kKTsKKyAgICByZXMgPSB4c193YXRjaCh4c2gsIHN0YXRlcGF0aCwgImZy b250ZW5kLXN0YXRlIik7CisgICAgYXNzZXJ0KHJlcyk7Cit9CisKK3ZvaWQgeGVuYnVzX3Vu d2F0Y2hfZnJvbnRlbmRfc3RhdGUoc3RydWN0IGZzX21vdW50ICptb3VudCkKK3sKKyAgICBp bnQgcmVzOworICAgIGNoYXIgc3RhdGVwYXRoWzEwMjRdOworCisgICAgYXNzZXJ0KHhzaCAh PSBOVUxMKTsKKyAgICBzbnByaW50ZihzdGF0ZXBhdGgsIHNpemVvZihzdGF0ZXBhdGgpLCAi JXMvc3RhdGUiLCBtb3VudC0+ZnJvbnRlbmQpOworICAgIHJlcyA9IHhzX3Vud2F0Y2goeHNo LCBzdGF0ZXBhdGgsICJmcm9udGVuZC1zdGF0ZSIpOworICAgIGFzc2VydChyZXMpOworfQor CitpbnQgeGVuYnVzX2Zyb250ZW5kX3N0YXRlX2NoYW5nZWQoc3RydWN0IGZzX21vdW50ICpt b3VudCwgY29uc3QgY2hhciAqb2xkc3RhdGUpCit7CisgICAgdW5zaWduZWQgaW50IGxlbjsK KyAgICBjaGFyIHN0YXRlcGF0aFsxMDI0XTsKKyAgICBjaGFyICpzdGF0ZSA9IE5VTEw7CisK KyAgICBhc3NlcnQoeHNoICE9IE5VTEwpOworICAgIHNucHJpbnRmKHN0YXRlcGF0aCwgc2l6 ZW9mKHN0YXRlcGF0aCksICIlcy9zdGF0ZSIsIG1vdW50LT5mcm9udGVuZCk7CisgICAgc3Rh dGUgPSB4c19yZWFkKHhzaCwgWEJUX05VTEwsIHN0YXRlcGF0aCwgJmxlbik7CisgICAgaWYg KHN0YXRlICYmIGxlbiA+IDApIHsKKyAgICAgICAgaWYgKHN0cmNtcChzdGF0ZSwgb2xkc3Rh dGUpKSB7CisgICAgICAgICAgICBmcmVlKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiAx OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZnJlZShzdGF0ZSk7CisgICAgICAg ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g MTsKK30KKworY2hhciogeGVuYnVzX3JlYWRfZnJvbnRlbmRfc3RhdGUoc3RydWN0IGZzX21v dW50ICptb3VudCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGVuOworICAgIGNoYXIgc3RhdGVw YXRoWzEwMjRdOworCisgICAgYXNzZXJ0KHhzaCAhPSBOVUxMKTsKKyAgICBzbnByaW50Zihz dGF0ZXBhdGgsIHNpemVvZihzdGF0ZXBhdGgpLCAiJXMvc3RhdGUiLCBtb3VudC0+ZnJvbnRl bmQpOworICAgIHJldHVybiB4c19yZWFkKHhzaCwgWEJUX05VTEwsIHN0YXRlcGF0aCwgJmxl bik7Cit9CisKZGlmZiAtciAwZTE0NDlkNmYyMzEgdG9vbHMvZnMtYmFjay9zeXMtcXVldWUu aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi90 b29scy9mcy1iYWNrL3N5cy1xdWV1ZS5oCU1vbiBNYXIgMTYgMTE6MjM6MzYgMjAwOSArMDAw MApAQCAtMCwwICsxLDMzOCBAQAorLyogICAgICAkTmV0QlNEOiBxdWV1ZS5oLHYgMS40NS4x NC4xIDIwMDcvMDcvMTggMjA6MTM6MjQgbGlhbWpmb3kgRXhwICQgKi8NCisNCisvKg0KKyAq IFFlbXUgdmVyc2lvbjogQ29weSBmcm9tIG5ldGJzZCwgcmVtb3ZlZCBkZWJ1ZyBjb2RlLCBy ZW1vdmVkIHNvbWUgb2YNCisgKiB0aGUgaW1wbGVtZW50YXRpb25zLiAgTGVmdCBpbiBsaXN0 cywgdGFpbCBxdWV1ZXMgYW5kIGNpcmN1bGFyIHF1ZXVlcy4NCisgKi8NCisNCisvKg0KKyAq IENvcHlyaWdodCAoYykgMTk5MSwgMTk5Mw0KKyAqICAgICAgVGhlIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoN CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAq IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250 cmlidXRvcnMNCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUNCisgKiAgICB3aXRob3V0IHNwZWNp ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUg SVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg QU5EDQorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisg KiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENP TlRSSUJVVE9SUyBCRSBMSUFCTEUNCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KKyAqIERB TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTDQorICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICogSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LCBTVFJJQ1QNCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQorICogT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP Rg0KKyAqIFNVQ0ggREFNQUdFLg0KKyAqDQorICogICAgICBAKCMpcXVldWUuaCAgICAgOC41 IChCZXJrZWxleSkgOC8yMC85NA0KKyAqLw0KKw0KKyNpZm5kZWYgX1NZU19RVUVVRV9IXw0K KyNkZWZpbmUgX1NZU19RVUVVRV9IXw0KKw0KKy8qDQorICogVGhpcyBmaWxlIGRlZmluZXMg dGhyZWUgdHlwZXMgb2YgZGF0YSBzdHJ1Y3R1cmVzOg0KKyAqIGxpc3RzLCB0YWlsIHF1ZXVl cywgYW5kIGNpcmN1bGFyIHF1ZXVlcy4NCisgKg0KKyAqIEEgbGlzdCBpcyBoZWFkZWQgYnkg YSBzaW5nbGUgZm9yd2FyZCBwb2ludGVyIChvciBhbiBhcnJheSBvZiBmb3J3YXJkDQorICog cG9pbnRlcnMgZm9yIGEgaGFzaCB0YWJsZSBoZWFkZXIpLiBUaGUgZWxlbWVudHMgYXJlIGRv dWJseSBsaW5rZWQNCisgKiBzbyB0aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSBy ZW1vdmVkIHdpdGhvdXQgYSBuZWVkIHRvDQorICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBl bGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlDQorICogb3IgYWZ0ZXIg YW4gZXhpc3RpbmcgZWxlbWVudCBvciBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gQSBsaXN0 DQorICogbWF5IG9ubHkgYmUgdHJhdmVyc2VkIGluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbi4N CisgKg0KKyAqIEEgdGFpbCBxdWV1ZSBpcyBoZWFkZWQgYnkgYSBwYWlyIG9mIHBvaW50ZXJz LCBvbmUgdG8gdGhlIGhlYWQgb2YgdGhlDQorICogbGlzdCBhbmQgdGhlIG90aGVyIHRvIHRo ZSB0YWlsIG9mIHRoZSBsaXN0LiBUaGUgZWxlbWVudHMgYXJlIGRvdWJseQ0KKyAqIGxpbmtl ZCBzbyB0aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQg YSBuZWVkIHRvDQorICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4gYmUg YWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlIG9yDQorICogYWZ0ZXIgYW4gZXhpc3RpbmcgZWxl bWVudCwgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QsIG9yIGF0IHRoZSBlbmQgb2YNCisgKiB0 aGUgbGlzdC4gQSB0YWlsIHF1ZXVlIG1heSBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVj dGlvbi4NCisgKg0KKyAqIEEgY2lyY2xlIHF1ZXVlIGlzIGhlYWRlZCBieSBhIHBhaXIgb2Yg cG9pbnRlcnMsIG9uZSB0byB0aGUgaGVhZCBvZiB0aGUNCisgKiBsaXN0IGFuZCB0aGUgb3Ro ZXIgdG8gdGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUgZG91Ymx5DQor ICogbGlua2VkIHNvIHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJlIHJlbW92ZWQg d2l0aG91dCBhIG5lZWQgdG8NCisgKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRz IGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCBiZWZvcmUgb3IgYWZ0ZXINCisgKiBhbiBleGlz dGluZyBlbGVtZW50LCBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgb3IgYXQgdGhlIGVuZCBv ZiB0aGUgbGlzdC4NCisgKiBBIGNpcmNsZSBxdWV1ZSBtYXkgYmUgdHJhdmVyc2VkIGluIGVp dGhlciBkaXJlY3Rpb24sIGJ1dCBoYXMgYSBtb3JlDQorICogY29tcGxleCBlbmQgb2YgbGlz dCBkZXRlY3Rpb24uDQorICoNCisgKiBGb3IgZGV0YWlscyBvbiB0aGUgdXNlIG9mIHRoZXNl IG1hY3Jvcywgc2VlIHRoZSBxdWV1ZSgzKSBtYW51YWwgcGFnZS4NCisgKi8NCisNCisvKg0K KyAqIExpc3QgZGVmaW5pdGlvbnMuDQorICovDQorI2RlZmluZSBMSVNUX0hFQUQobmFtZSwg dHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK3N0 cnVjdCBuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpsaF9maXJzdDsgIC8q IGZpcnN0IGVsZW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICBcDQorfQ0KKw0KKyNkZWZp bmUgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCisgICAgICAgIHsgTlVMTCB9DQorDQorI2RlZmluZSBMSVNUX0VO VFJZKHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KK3N0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpsZV9u ZXh0OyAgIC8qIG5leHQgZWxlbWVudCAqLyAgICAgICAgICAgICAgICAgICAgICBcDQorICAg ICAgICBzdHJ1Y3QgdHlwZSAqKmxlX3ByZXY7ICAvKiBhZGRyZXNzIG9mIHByZXZpb3VzIG5l eHQgZWxlbWVudCAqLyAgXA0KK30NCisNCisvKg0KKyAqIExpc3QgZnVuY3Rpb25zLg0KKyAq Lw0KKyNkZWZpbmUgTElTVF9JTklUKGhlYWQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+bGhfZmlyc3QgPSBO VUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSB3aGls ZSAoLypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBMSVNUX0lOU0VSVF9BRlRFUihsaXN0 ZWxtLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg aWYgKCgoZWxtKS0+ZmllbGQubGVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQubGVfbmV4dCkg IT0gTlVMTCkgIFwNCisgICAgICAgICAgICAgICAgKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0 LT5maWVsZC5sZV9wcmV2ID0gICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAg ICAmKGVsbSktPmZpZWxkLmxlX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KKyAgICAgICAgKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGVsbSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5sZV9wcmV2 ID0gJihsaXN0ZWxtKS0+ZmllbGQubGVfbmV4dDsgICAgICAgICAgICAgICBcDQorfSB3aGls ZSAoLypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBMSVNUX0lOU0VSVF9CRUZPUkUobGlz dGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg KGVsbSktPmZpZWxkLmxlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLmxlX3ByZXY7ICAgICAg ICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGxpc3RlbG0p OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAqKGxpc3RlbG0p LT5maWVsZC5sZV9wcmV2ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KKyAgICAgICAgKGxpc3RlbG0pLT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVsZC5s ZV9uZXh0OyAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisN CisjZGVmaW5lIExJU1RfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBpZiAoKChlbG0pLT5maWVsZC5sZV9u ZXh0ID0gKGhlYWQpLT5saF9maXJzdCkgIT0gTlVMTCkgICAgICAgICAgXA0KKyAgICAgICAg ICAgICAgICAoaGVhZCktPmxoX2ZpcnN0LT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVs ZC5sZV9uZXh0O1wNCisgICAgICAgIChoZWFkKS0+bGhfZmlyc3QgPSAoZWxtKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+Zmll bGQubGVfcHJldiA9ICYoaGVhZCktPmxoX2ZpcnN0OyAgICAgICAgICAgICAgICAgICAgICAg XA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgTElTVF9SRU1PVkUo ZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisgICAgICAgIGlmICgoZWxtKS0+ZmllbGQubGVfbmV4dCAhPSBOVUxMKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIChlbG0pLT5maWVsZC5s ZV9uZXh0LT5maWVsZC5sZV9wcmV2ID0gICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg ICAgICAgICAgICAgKGVsbSktPmZpZWxkLmxlX3ByZXY7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCisgICAgICAgICooZWxtKS0+ZmllbGQubGVfcHJldiA9IChlbG0pLT5m aWVsZC5sZV9uZXh0OyAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENP TkQqLzApDQorDQorI2RlZmluZSBMSVNUX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgZm9yICgodmFyKSA9 ICgoaGVhZCktPmxoX2ZpcnN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisgICAgICAgICAgICAgICAgKHZhcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICh2YXIpID0gKCh2YXIp LT5maWVsZC5sZV9uZXh0KSkNCisNCisvKg0KKyAqIExpc3QgYWNjZXNzIG1ldGhvZHMuDQor ICovDQorI2RlZmluZSBMSVNUX0VNUFRZKGhlYWQpICAgICAgICAgICAgICAgICgoaGVhZCkt PmxoX2ZpcnN0ID09IE5VTEwpDQorI2RlZmluZSBMSVNUX0ZJUlNUKGhlYWQpICAgICAgICAg ICAgICAgICgoaGVhZCktPmxoX2ZpcnN0KQ0KKyNkZWZpbmUgTElTVF9ORVhUKGVsbSwgZmll bGQpICAgICAgICAgICAoKGVsbSktPmZpZWxkLmxlX25leHQpDQorDQorDQorLyoNCisgKiBU YWlsIHF1ZXVlIGRlZmluaXRpb25zLg0KKyAqLw0KKyNkZWZpbmUgX1RBSUxRX0hFQUQobmFt ZSwgdHlwZSwgcXVhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCitz dHJ1Y3QgbmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQorICAgICAgICBxdWFsIHR5cGUgKnRxaF9maXJzdDsgICAg ICAgICAgIC8qIGZpcnN0IGVsZW1lbnQgKi8gICAgICAgICAgICAgXA0KKyAgICAgICAgcXVh bCB0eXBlICpxdWFsICp0cWhfbGFzdDsgICAgICAvKiBhZGRyIG9mIGxhc3QgbmV4dCBlbGVt ZW50ICovIFwNCit9DQorI2RlZmluZSBUQUlMUV9IRUFEKG5hbWUsIHR5cGUpICBfVEFJTFFf SEVBRChuYW1lLCBzdHJ1Y3QgdHlwZSwpDQorDQorI2RlZmluZSBUQUlMUV9IRUFEX0lOSVRJ QUxJWkVSKGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgeyBOVUxMLCAmKGhlYWQpLnRxaF9maXJzdCB9DQorDQorI2RlZmluZSBfVEFJTFFf RU5UUlkodHlwZSwgcXVhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KK3N0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIHF1YWwgdHlwZSAqdHFlX25l eHQ7ICAgICAgICAgICAgLyogbmV4dCBlbGVtZW50ICovICAgICAgICAgICAgICBcDQorICAg ICAgICBxdWFsIHR5cGUgKnF1YWwgKnRxZV9wcmV2OyAgICAgIC8qIGFkZHJlc3Mgb2YgcHJl dmlvdXMgbmV4dCBlbGVtZW50ICovXA0KK30NCisjZGVmaW5lIFRBSUxRX0VOVFJZKHR5cGUp ICAgICAgIF9UQUlMUV9FTlRSWShzdHJ1Y3QgdHlwZSwpDQorDQorLyoNCisgKiBUYWlsIHF1 ZXVlIGZ1bmN0aW9ucy4NCisgKi8NCisjZGVmaW5lIFRBSUxRX0lOSVQoaGVhZCkgZG8geyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAo aGVhZCktPnRxaF9maXJzdCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgKGhlYWQpLT50cWhfbGFzdCA9ICYoaGVhZCktPnRxaF9m aXJzdDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09O RCovMCkNCisNCisjZGVmaW5lIFRBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQp IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBpZiAoKChlbG0pLT5m aWVsZC50cWVfbmV4dCA9IChoZWFkKS0+dHFoX2ZpcnN0KSAhPSBOVUxMKSAgICAgICAgXA0K KyAgICAgICAgICAgICAgICAoaGVhZCktPnRxaF9maXJzdC0+ZmllbGQudHFlX3ByZXYgPSAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICYoZWxtKS0+Zmll bGQudHFlX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBl bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0p LT5maWVsZC50cWVfbmV4dDsgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+dHFo X2ZpcnN0ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQorICAgICAgICAoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAmKGhlYWQpLT50cWhfZmlyc3Q7 ICAgICAgICAgICAgICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0K KyNkZWZpbmUgVEFJTFFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC50cWVfbmV4dCA9 IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAo ZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAoaGVhZCktPnRxaF9sYXN0OyAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgKihoZWFkKS0+dHFoX2xhc3QgPSAoZWxtKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+dHFo X2xhc3QgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAgICBc DQorfSB3aGlsZSAoLypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBUQUlMUV9JTlNFUlRf QUZURVIoaGVhZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgXA0K KyAgICAgICAgaWYgKCgoZWxtKS0+ZmllbGQudHFlX25leHQgPSAobGlzdGVsbSktPmZpZWxk LnRxZV9uZXh0KSAhPSBOVUxMKVwNCisgICAgICAgICAgICAgICAgKGVsbSktPmZpZWxkLnRx ZV9uZXh0LT5maWVsZC50cWVfcHJldiA9ICAgICAgICAgICAgICAgICBcDQorICAgICAgICAg ICAgICAgICAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhl YWQpLT50cWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQudHFlX25leHQ7ICAgICAgICAgICAgICBc DQorICAgICAgICAobGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGVsbSk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9wcmV2 ID0gJihsaXN0ZWxtKS0+ZmllbGQudHFlX25leHQ7ICAgICAgICAgICAgIFwNCit9IHdoaWxl ICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVmaW5lIFRBSUxRX0lOU0VSVF9CRUZPUkUobGlz dGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAo ZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2OyAgICAg ICAgICAgICAgXA0KKyAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGxpc3RlbG0p OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICoobGlzdGVsbSkt PmZpZWxkLnRxZV9wcmV2ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQorICAgICAgICAobGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihlbG0pLT5maWVsZC50 cWVfbmV4dDsgICAgICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0K KyNkZWZpbmUgVEFJTFFfUkVNT1ZFKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGlmICgoKGVsbSktPmZpZWxkLnRxZV9u ZXh0KSAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAg ICAgICAgIChlbG0pLT5maWVsZC50cWVfbmV4dC0+ZmllbGQudHFlX3ByZXYgPSAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9wcmV2 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGVsc2UgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQorICAgICAgICAgICAgICAgIChoZWFkKS0+dHFoX2xhc3QgPSAoZWxtKS0+ZmllbGQudHFl X3ByZXY7ICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKihlbG0pLT5maWVsZC50cWVfcHJl diA9IChlbG0pLT5maWVsZC50cWVfbmV4dDsgICAgICAgICAgICAgICAgIFwNCit9IHdoaWxl ICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVmaW5lIFRBSUxRX0ZPUkVBQ0godmFyLCBoZWFk LCBmaWVsZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBm b3IgKCh2YXIpID0gKChoZWFkKS0+dHFoX2ZpcnN0KTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAodmFyKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKHZh cikgPSAoKHZhciktPmZpZWxkLnRxZV9uZXh0KSkNCisNCisjZGVmaW5lIFRBSUxRX0ZPUkVB Q0hfUkVWRVJTRSh2YXIsIGhlYWQsIGhlYWRuYW1lLCBmaWVsZCkgICAgICAgICAgICAgICBc DQorICAgICAgICBmb3IgKCh2YXIpID0gKCooKChzdHJ1Y3QgaGVhZG5hbWUgKikoKGhlYWQp LT50cWhfbGFzdCkpLT50cWhfbGFzdCkpOyAgICBcDQorICAgICAgICAgICAgICAgICh2YXIp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgICAgICAgICAodmFyKSA9ICgqKCgoc3RydWN0IGhlYWRuYW1lICopKCh2YXIp LT5maWVsZC50cWVfcHJldikpLT50cWhfbGFzdCkpKQ0KKw0KKy8qDQorICogVGFpbCBxdWV1 ZSBhY2Nlc3MgbWV0aG9kcy4NCisgKi8NCisjZGVmaW5lIFRBSUxRX0VNUFRZKGhlYWQpICAg ICAgICAgICAgICAgKChoZWFkKS0+dHFoX2ZpcnN0ID09IE5VTEwpDQorI2RlZmluZSBUQUlM UV9GSVJTVChoZWFkKSAgICAgICAgICAgICAgICgoaGVhZCktPnRxaF9maXJzdCkNCisjZGVm aW5lIFRBSUxRX05FWFQoZWxtLCBmaWVsZCkgICAgICAgICAgKChlbG0pLT5maWVsZC50cWVf bmV4dCkNCisNCisjZGVmaW5lIFRBSUxRX0xBU1QoaGVhZCwgaGVhZG5hbWUpIFwNCisgICAg ICAgICgqKCgoc3RydWN0IGhlYWRuYW1lICopKChoZWFkKS0+dHFoX2xhc3QpKS0+dHFoX2xh c3QpKQ0KKyNkZWZpbmUgVEFJTFFfUFJFVihlbG0sIGhlYWRuYW1lLCBmaWVsZCkgXA0KKyAg ICAgICAgKCooKChzdHJ1Y3QgaGVhZG5hbWUgKikoKGVsbSktPmZpZWxkLnRxZV9wcmV2KSkt PnRxaF9sYXN0KSkNCisNCisNCisvKg0KKyAqIENpcmN1bGFyIHF1ZXVlIGRlZmluaXRpb25z Lg0KKyAqLw0KKyNkZWZpbmUgQ0lSQ0xFUV9IRUFEKG5hbWUsIHR5cGUpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCitzdHJ1Y3QgbmFtZSB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor ICAgICAgICBzdHJ1Y3QgdHlwZSAqY3FoX2ZpcnN0OyAgICAgICAgIC8qIGZpcnN0IGVsZW1l bnQgKi8gICAgICAgICAgICAgXA0KKyAgICAgICAgc3RydWN0IHR5cGUgKmNxaF9sYXN0OyAg ICAgICAgICAvKiBsYXN0IGVsZW1lbnQgKi8gICAgICAgICAgICAgIFwNCit9DQorDQorI2Rl ZmluZSBDSVJDTEVRX0hFQURfSU5JVElBTElaRVIoaGVhZCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KKyAgICAgICAgeyAodm9pZCAqKSZoZWFkLCAodm9pZCAqKSZo ZWFkIH0NCisNCisjZGVmaW5lIENJUkNMRVFfRU5UUlkodHlwZSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorc3RydWN0IHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgc3RydWN0IHR5cGUgKmNxZV9uZXh0OyAgICAgICAgICAvKiBuZXh0IGVsZW1l bnQgKi8gICAgICAgICAgICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpjcWVfcHJldjsg ICAgICAgICAgLyogcHJldmlvdXMgZWxlbWVudCAqLyAgICAgICAgICBcDQorfQ0KKw0KKy8q DQorICogQ2lyY3VsYXIgcXVldWUgZnVuY3Rpb25zLg0KKyAqLw0KKyNkZWZpbmUgQ0lSQ0xF UV9JTklUKGhlYWQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIChoZWFkKS0+Y3FoX2ZpcnN0ID0gKHZvaWQgKikoaGVhZCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoaGVhZCktPmNxaF9sYXN0 ID0gKHZvaWQgKikoaGVhZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK30g d2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgQ0lSQ0xFUV9JTlNFUlRfQUZU RVIoaGVhZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgIFwNCisgICAg ICAgIChlbG0pLT5maWVsZC5jcWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQ7 ICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSAobGlz dGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgaWYgKChs aXN0ZWxtKS0+ZmllbGQuY3FlX25leHQgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAg ICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQpLT5jcWhfbGFzdCA9IChlbG0pOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBlbHNlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgICAgICAgICAobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0LT5maWVsZC5jcWVfcHJl diA9IChlbG0pOyAgICAgIFwNCisgICAgICAgIChsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQg PSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypD T05TVENPTkQqLzApDQorDQorI2RlZmluZSBDSVJDTEVRX0lOU0VSVF9CRUZPUkUoaGVhZCwg bGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgXA0KKyAgICAgICAgKGVsbSkt PmZpZWxkLmNxZV9uZXh0ID0gKGxpc3RlbG0pOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5jcWVfcHJldiA9IChsaXN0ZWxtKS0+Zmll bGQuY3FlX3ByZXY7ICAgICAgICAgICAgICBcDQorICAgICAgICBpZiAoKGxpc3RlbG0pLT5m aWVsZC5jcWVfcHJldiA9PSAodm9pZCAqKShoZWFkKSkgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgICAgICAgICAoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAg ICAgIChsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7 ICAgICAgXA0KKyAgICAgICAgKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJldiA9IChlbG0pOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCov MCkNCisNCisjZGVmaW5lIENJUkNMRVFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkg ZG8geyAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQuY3Fl X25leHQgPSAoaGVhZCktPmNxaF9maXJzdDsgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgKGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKHZvaWQgKikoaGVhZCk7ICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGlmICgoaGVhZCktPmNxaF9sYXN0ID09ICh2 b2lkICopKGhlYWQpKSAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAg ICAgIChoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQp LT5jcWhfZmlyc3QtPmZpZWxkLmNxZV9wcmV2ID0gKGVsbSk7ICAgICAgICAgICAgICBcDQor ICAgICAgICAoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNk ZWZpbmUgQ0lSQ0xFUV9JTlNFUlRfVEFJTChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5jcWVfbmV4dCA9ICh2 b2lkICopKGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxt KS0+ZmllbGQuY3FlX3ByZXYgPSAoaGVhZCktPmNxaF9sYXN0OyAgICAgICAgICAgICAgICAg ICAgICAgXA0KKyAgICAgICAgaWYgKChoZWFkKS0+Y3FoX2ZpcnN0ID09ICh2b2lkICopKGhl YWQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQp LT5jcWhfZmlyc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor ICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVhZCktPmNxaF9sYXN0 LT5maWVsZC5jcWVfbmV4dCA9IChlbG0pOyAgICAgICAgICAgICAgIFwNCisgICAgICAgICho ZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBDSVJD TEVRX1JFTU9WRShoZWFkLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KKyAgICAgICAgaWYgKChlbG0pLT5maWVsZC5jcWVfbmV4dCA9PSAodm9pZCAq KShoZWFkKSkgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQp LT5jcWhfbGFzdCA9IChlbG0pLT5maWVsZC5jcWVfcHJldjsgICAgICAgICAgICAgICBcDQor ICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoZWxtKS0+ZmllbGQuY3Fl X25leHQtPmZpZWxkLmNxZV9wcmV2ID0gICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAg ICAgICAgICAgIChlbG0pLT5maWVsZC5jcWVfcHJldjsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICBpZiAoKGVsbSktPmZpZWxkLmNxZV9wcmV2ID09ICh2b2lk ICopKGhlYWQpKSAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVh ZCktPmNxaF9maXJzdCA9IChlbG0pLT5maWVsZC5jcWVfbmV4dDsgICAgICAgICAgICAgIFwN CisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIChlbG0pLT5maWVsZC5j cWVfcHJldi0+ZmllbGQuY3FlX25leHQgPSAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg ICAgICAgICAgICAgKGVsbSktPmZpZWxkLmNxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVmaW5lIENJ UkNMRVFfRk9SRUFDSCh2YXIsIGhlYWQsIGZpZWxkKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICBmb3IgKCh2YXIpID0gKChoZWFkKS0+Y3FoX2ZpcnN0KTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAodmFy KSAhPSAoY29uc3Qgdm9pZCAqKShoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisgICAgICAgICAgICAgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLmNxZV9uZXh0KSkNCisN CisjZGVmaW5lIENJUkNMRVFfRk9SRUFDSF9SRVZFUlNFKHZhciwgaGVhZCwgZmllbGQpICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBmb3IgKCh2YXIpID0gKChoZWFkKS0+ Y3FoX2xhc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg ICAgICAgICAodmFyKSAhPSAoY29uc3Qgdm9pZCAqKShoZWFkKTsgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLmNx ZV9wcmV2KSkNCisNCisvKg0KKyAqIENpcmN1bGFyIHF1ZXVlIGFjY2VzcyBtZXRob2RzLg0K KyAqLw0KKyNkZWZpbmUgQ0lSQ0xFUV9FTVBUWShoZWFkKSAgICAgICAgICAgICAoKGhlYWQp LT5jcWhfZmlyc3QgPT0gKHZvaWQgKikoaGVhZCkpDQorI2RlZmluZSBDSVJDTEVRX0ZJUlNU KGhlYWQpICAgICAgICAgICAgICgoaGVhZCktPmNxaF9maXJzdCkNCisjZGVmaW5lIENJUkNM RVFfTEFTVChoZWFkKSAgICAgICAgICAgICAgKChoZWFkKS0+Y3FoX2xhc3QpDQorI2RlZmlu ZSBDSVJDTEVRX05FWFQoZWxtLCBmaWVsZCkgICAgICAgICgoZWxtKS0+ZmllbGQuY3FlX25l eHQpDQorI2RlZmluZSBDSVJDTEVRX1BSRVYoZWxtLCBmaWVsZCkgICAgICAgICgoZWxtKS0+ ZmllbGQuY3FlX3ByZXYpDQorDQorI2RlZmluZSBDSVJDTEVRX0xPT1BfTkVYVChoZWFkLCBl bG0sIGZpZWxkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKCgo ZWxtKS0+ZmllbGQuY3FlX25leHQgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAgICAg ICAgICAgIFwNCisgICAgICAgICAgICA/ICgoaGVhZCktPmNxaF9maXJzdCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgOiAoZWxtLT5m aWVsZC5jcWVfbmV4dCkpDQorI2RlZmluZSBDSVJDTEVRX0xPT1BfUFJFVihoZWFkLCBlbG0s IGZpZWxkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKCgoZWxt KS0+ZmllbGQuY3FlX3ByZXYgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgICAgICA/ICgoaGVhZCktPmNxaF9sYXN0KSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgOiAoZWxtLT5maWVs ZC5jcWVfcHJldikpDQorDQorI2VuZGlmICAvKiAhX1NZU19RVUVVRV9IXyAqLw0KZGlmZiAt ciAwZTE0NDlkNmYyMzEgeGVuL2luY2x1ZGUvcHVibGljL2lvL2ZzaWYuaAotLS0gYS94ZW4v aW5jbHVkZS9wdWJsaWMvaW8vZnNpZi5oCUZyaSBNYXIgMTMgMTA6MDk6MjUgMjAwOSArMDAw MAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZnNpZi5oCU1vbiBNYXIgMTYgMTE6MjM6 MzYgMjAwOSArMDAwMApAQCAtMTg1LDcgKzE4NSw4IEBACiAKICNkZWZpbmUgU1RBVEVfSU5J VElBTElTRUQgICAgICJpbml0IgogI2RlZmluZSBTVEFURV9SRUFEWSAgICAgICAgICAgInJl YWR5IgotCisjZGVmaW5lIFNUQVRFX0NMT1NJTkcgICAgICAgICAiY2xvc2luZyIKKyNkZWZp bmUgU1RBVEVfQ0xPU0VEICAgICAgICAgICJjbG9zZWQiCiAKIAogI2VuZGlmCg== --------------030505080306040205000707 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------030505080306040205000707--