From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bartlomiej Zolnierkiewicz Subject: [git pull] IDE updates part 1 Date: Mon, 29 Dec 2008 20:49:39 +0100 Message-ID: <200812292049.39414.bzolnier@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Return-path: Received: from mail-bw0-f21.google.com ([209.85.218.21]:43391 "EHLO mail-bw0-f21.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751870AbYL2Txi (ORCPT ); Mon, 29 Dec 2008 14:53:38 -0500 Content-Disposition: inline Sender: linux-ide-owner@vger.kernel.org List-Id: linux-ide@vger.kernel.org To: Linus Torvalds Cc: Andrew Morton , Stephen Rothwell , linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org Ckluc2lkZToKCiogRml4IGZvciBJREUgQUNQSSByZWdyZXNzaW9uIGJyZWFraW5nIHN1c3BlbmQg b24gc29tZSBtYWNoaW5lcwogIChrZXJuZWwub3JnIGJ1ZyAjMTIyNzkpLgoKKiB0eDQ5M1s4OV1p ZGUgaG9zdCBkcml2ZXJzIGZpeGVzIChmcm9tIEF0c3VzaGkgTmVtb3RvKS4KCiogTG9ja2luZyBz YW5pdGl6YXRpb25zL2ltcHJvdmVtZW50cy4KCiogUmVwbGFjZW1lbnQgb2YgZ2xvYmFsIGlkZV9s b2NrIGJ5IHBlci1od2dyb3VwIGxvY2tzCiAgKGJhc2VkIG9uIHByZXZpb3VzIHBhdGNoIGZyb20g UmF2aWtpcmFuIEcgVGhpcnVtYWxhaSkuCgoqIE1pc2MgZml4ZXMgYW5kIGhvdXNla2VlcGluZyBw YXRjaGVzLi4uCgpBbGwgcGF0Y2hlcyBoYXZlIGJlZW4gaW4gbGludXgtbmV4dCB0cmVlIGZvciBm ZXcgd2Vla3Mgbm93CihleGNlcHQgcmVncmVzc2lvbiBmaXggYW5kIHR4NDkzWzg5XSBmaXhlcyBi dXQgdGhleSdyZSBhbGwKb2J2aW91c2x5IGNvcnJlY3QpLgoKCkxpbnVzLCBwbGVhc2UgcHVsbCBm cm9tOgoKbWFzdGVyLmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9iYXJ0L2lk ZS0yLjYuZ2l0LwoKdG8gcmVjZWl2ZSB0aGUgZm9sbG93aW5nIHVwZGF0ZXM6CgogZHJpdmVycy9p ZGUvS2NvbmZpZyAgICAgICAgfCAgICA4ICsrCiBkcml2ZXJzL2lkZS9NYWtlZmlsZSAgICAgICB8 ICAgIDMgKy0KIGRyaXZlcnMvaWRlL2NtZDY0eC5jICAgICAgIHwgICAgNCArLQogZHJpdmVycy9p ZGUvY3k4MmM2OTMuYyAgICAgfCAgICAxIC0KIGRyaXZlcnMvaWRlL2dheWxlLmMgICAgICAgIHwg ICAgNiArLQogZHJpdmVycy9pZGUvaHB0MzY2LmMgICAgICAgfCAgICA4ICstCiBkcml2ZXJzL2lk ZS9pZGUtYWNwaS5jICAgICB8ICAgIDQgKy0KIGRyaXZlcnMvaWRlL2lkZS1jZC5jICAgICAgIHwg IDE0MiArKysrLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaWRlL2lkZS1jZC5oICAgICAgIHwg ICAgMiAtCiBkcml2ZXJzL2lkZS9pZGUtZG1hLXNmZi5jICB8ICAgNTQgKysrKy0tLS0tCiBkcml2 ZXJzL2lkZS9pZGUtaW8uYyAgICAgICB8ICAyOTIgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaWRlL2lkZS1pb2N0bHMuYyAgIHwgICAgNSArLQog ZHJpdmVycy9pZGUvaWRlLWlvcHMuYyAgICAgfCAgIDQ4ICsrKystLS0tCiBkcml2ZXJzL2lkZS9p ZGUtbGVnYWN5LmMgICB8ICAgNTggKysrKysrKysrCiBkcml2ZXJzL2lkZS9pZGUtbGliLmMgICAg ICB8ICAxMDUgKysrKysrKystLS0tLS0tLQogZHJpdmVycy9pZGUvaWRlLXBhcmsuYyAgICAgfCAg IDE2ICsrLS0KIGRyaXZlcnMvaWRlL2lkZS1wbS5jICAgICAgIHwgIDIzNSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9pZGUvaWRlLXByb2JlLmMgICAgfCAgMTY2 ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaWRlL2lkZS1wcm9jLmMgICAgIHwg ICAyOSArLS0tLQogZHJpdmVycy9pZGUvaWRlLmMgICAgICAgICAgfCAgIDg5ICstLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2lkZS9wZGMyMDJ4eF9vbGQuYyB8ICAgIDkgKy0KIGRyaXZlcnMvaWRlL3J6 MTAwMC5jICAgICAgIHwgICAzNiArKysrLS0KIGRyaXZlcnMvaWRlL3RybTI5MC5jICAgICAgIHwg ICAgNCArLQogZHJpdmVycy9pZGUvdHg0OTM4aWRlLmMgICAgfCAgICA0ICstCiBkcml2ZXJzL2lk ZS90eDQ5MzlpZGUuYyAgICB8ICAgMTAgKystCiBkcml2ZXJzL2lkZS91bWM4NjcyLmMgICAgICB8 ICAgMTEgKy0KIGRyaXZlcnMvc2NzaS9pZGUtc2NzaS5jICAgIHwgICAzMiArKystLQogaW5jbHVk ZS9saW51eC9pZGUuaCAgICAgICAgfCAgIDM3ICsrKy0tLQogMjggZmlsZXMgY2hhbmdlZCwgNjM1 IGluc2VydGlvbnMoKyksIDc4MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2lkZS9pZGUtbGVnYWN5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lkZS9pZGUt cG0uYwoKCkF0c3VzaGkgTmVtb3RvICgyKToKICAgICAgdHg0OTM5aWRlOiBEbyBub3QgdXNlIHpl cm8gY291bnQgUFJEIGVudHJ5CiAgICAgIHR4NDkzWzg5XWlkZTogRml4IGxlbmd0aCBmb3IgX19p ZGVfZmx1c2hfZGNhY2hlX3JhbmdlCgpCYXJ0bG9taWVqIFpvbG5pZXJraWV3aWN6ICgzMCk6CiAg ICAgIGlkZTogZml4IElERSBBQ1BJIHJlZ3Jlc3Npb24gYnJlYWtpbmcgc3VzcGVuZAogICAgICBp ZGU6IHVuaWZ5IGlkZV9pbnRyKCkncyBleGl0IHBvaW50cwogICAgICBpZGU6IElERSBzZXR0aW5n cyBkb24ndCBuZWVkIGFuIGlkZV9sb2NrIGhlbGQKICAgICAgaWRlOiBfX2lkZV9wb3J0X3VucmVn aXN0ZXJfZGV2aWNlcygpIGRvZXNuJ3QgbmVlZCBhbiBpZGVfbG9jayBoZWxkCiAgICAgIGlkZTog aWRlX2h3Z3JvdXBfdC5ycSBkb2Vzbid0IG5lZWQgYW4gaWRlX2xvY2sgaGVsZAogICAgICBpZGU6 IHB1c2ggaWRlX2xvY2sgdG8gX19pZGVfZW5kX3JlcXVlc3QoKQogICAgICBpZGU6IGlkZV9sb2Nr ICsgX19ibGtfZW5kX3JlcXVlc3QoKSAtPiBibGtfZW5kX3JlcXVlc3QoKQogICAgICBpZGU6IHVz ZSBxdWV1ZSBsb2NrIGluc3RlYWQgb2YgaWRlX2xvY2sgd2hlbiBwb3NzaWJsZQogICAgICBpZGU6 IHJlcGxhY2UgdGhlIGdsb2JhbCBpZGVfbG9jayBzcGlubG9jayBieSBwZXItaHdncm91cCBzcGlu bG9ja3MgKHYyKQogICAgICBpZGU6IGNsZWFudXAgaWRlX2RvX3JlcXVlc3QoKQogICAgICBpZGUt Y2Q6IHJlbW92ZSBvYnNvbGV0ZSBzZWVrIG9wdGltaXphdGlvbgogICAgICBhbGkxNHh4OiBkb2Vz bid0IHVzZSBzaGFyZWQgSVJRcwogICAgICBjbWQ2NHg6IHNldCBJREVfSEZMQUdfU0VSSUFMSVpF IGV4cGxpY3RseSBmb3IgQ01ENjQ2CiAgICAgIGdheWxlOiBzZXQgSURFX0hGTEFHX1NFUklBTEla RSBleHBsaWN0bHkKICAgICAgaWRlOiBmaXggLT5xdWlya19saXN0IGNoZWNraW5nIGluIGlkZV9k b19yZXF1ZXN0KCkKICAgICAgaWRlOiBhbHdheXMgc2V0IG5JRU4gb24gaWRsZSBkZXZpY2VzCiAg ICAgIHJ6MTAwMDogYXBwbHkgY2hpcHNldCBxdWlya3MgZWFybHkgKHYyKQogICAgICBpZGU6IGFk ZCAtPm1heF9zZWN0b3JzIGZpZWxkIHRvIHN0cnVjdCBpZGVfcG9ydF9pbmZvCiAgICAgIHRybTI5 MDogYWRkIElERV9IRkxBR19UUk0yOTAgaG9zdCBmbGFnCiAgICAgIGN5ODJjNjkzOiByZW1vdmUg c3VwZXJmbHVvdXMgaWRlX2N5ODJjNjkzIGNoaXBzZXQgdHlwZQogICAgICBpZGU6IHJld29yayBo YW5kbGluZyBvZiBzZXJpYWxpemVkIHBvcnRzICh2MikKICAgICAgaWRlOiByZW1vdmUgcmVkdW5k YW50IGNvZGUgZnJvbSBpZGVfZW5kX2RyaXZlX2NtZCgpCiAgICAgIGlkZTogcmVtb3ZlIGlubGlu ZSB0YWdzIGZyb20gaWRlLXByb2JlLmMKICAgICAgaWRlOiBjaGVja3BhdGNoLnBsIGZpeGVzIGZv ciBpZGUtbGliLmMKICAgICAgaWRlOiB1c2UgQVRBX0RNQV8qIGRlZmluZXMgaW4gaWRlLWRtYS1z ZmYuYwogICAgICBpZGU6IG1vdmUgUG93ZXIgTWFuYWdlbWVudCBzdXBwb3J0IHRvIGlkZS1wbS5j CiAgICAgIGlkZTogbW92ZSBsZWdhY3kgSVNBL1ZMQiBwb3J0cyBoYW5kbGluZyB0byBpZGUtbGVn YWN5LmMgKHYyKQogICAgICBpZGU6IHJlbW92ZSBzdXBlcmZsdW91cyBsb2NhbF9pcnFfe3NhdmUs cmVzdG9yZX0oKSBmcm9tIGlkZV9kdW1wX3N0YXR1cygpCiAgICAgIGlkZTogcHVzaCBsb2NhbF9p cnFfe3NhdmUscmVzdG9yZX0oKSB0byBkb19pZGVudGlmeSgpCiAgICAgIGlkZS1jZDogcmVtb3Zl IGRlYWQgZHNjX292ZXJsYXAgc2V0dGluZwoKS2F5IFNpZXZlcnMgKDEpOgogICAgICBpZGU6IHN0 cnVjdCBkZXZpY2UgLSByZXBsYWNlIGJ1c19pZCB3aXRoIGRldl9uYW1lKCksIGRldl9zZXRfbmFt ZSgpCgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL0tjb25maWcgYi9kcml2ZXJzL2lkZS9LY29u ZmlnCmluZGV4IGU2ODU3ZTAuLjdhMGE4NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL0tjb25m aWcKKysrIGIvZHJpdmVycy9pZGUvS2NvbmZpZwpAQCAtNjIsNiArNjIsOSBAQCBjb25maWcgSURF X1RJTUlOR1MKIGNvbmZpZyBJREVfQVRBUEkKIAlib29sCiAKK2NvbmZpZyBJREVfTEVHQUNZCisJ Ym9vbAorCiBjb25maWcgQkxLX0RFVl9JREVfU0FUQQogCWJvb2wgIlN1cHBvcnQgZm9yIFNBVEEg KGRlcHJlY2F0ZWQ7IGNvbmZsaWN0cyB3aXRoIGxpYmF0YSBTQVRBIGRyaXZlcikiCiAJZGVmYXVs dCBuCkBAIC04NTYsNiArODU5LDcgQEAgY29uZmlnIEJMS19ERVZfNERSSVZFUwogY29uZmlnIEJM S19ERVZfQUxJMTRYWAogCXRyaXN0YXRlICJBTEkgTTE0eHggc3VwcG9ydCIKIAlzZWxlY3QgSURF X1RJTUlOR1MKKwlzZWxlY3QgSURFX0xFR0FDWQogCWhlbHAKIAkgIFRoaXMgZHJpdmVyIGlzIGVu YWJsZWQgYXQgcnVudGltZSB1c2luZyB0aGUgImFsaTE0eHgucHJvYmUiIGtlcm5lbAogCSAgYm9v dCBwYXJhbWV0ZXIuICBJdCBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBzZWNvbmRhcnkgSURFIGlu dGVyZmFjZQpAQCAtODY2LDYgKzg3MCw3IEBAIGNvbmZpZyBCTEtfREVWX0FMSTE0WFgKIAogY29u ZmlnIEJMS19ERVZfRFRDMjI3OAogCXRyaXN0YXRlICJEVEMtMjI3OCBzdXBwb3J0IgorCXNlbGVj dCBJREVfTEVHQUNZCiAJaGVscAogCSAgVGhpcyBkcml2ZXIgaXMgZW5hYmxlZCBhdCBydW50aW1l IHVzaW5nIHRoZSAiZHRjMjI3OC5wcm9iZSIga2VybmVsCiAJICBib290IHBhcmFtZXRlci4gSXQg ZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgc2Vjb25kYXJ5IElERSBpbnRlcmZhY2UKQEAgLTg3Niw2 ICs4ODEsNyBAQCBjb25maWcgQkxLX0RFVl9EVEMyMjc4CiBjb25maWcgQkxLX0RFVl9IVDY1NjBC CiAJdHJpc3RhdGUgIkhvbHRlayBIVDY1NjBCIHN1cHBvcnQiCiAJc2VsZWN0IElERV9USU1JTkdT CisJc2VsZWN0IElERV9MRUdBQ1kKIAloZWxwCiAJICBUaGlzIGRyaXZlciBpcyBlbmFibGVkIGF0 IHJ1bnRpbWUgdXNpbmcgdGhlICJodDY1NjBiLnByb2JlIiBrZXJuZWwKIAkgIGJvb3QgcGFyYW1l dGVyLiBJdCBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBzZWNvbmRhcnkgSURFIGludGVyZmFjZQpA QCAtODg2LDYgKzg5Miw3IEBAIGNvbmZpZyBCTEtfREVWX0hUNjU2MEIKIGNvbmZpZyBCTEtfREVW X1FENjVYWAogCXRyaXN0YXRlICJRREkgUUQ2NXh4IHN1cHBvcnQiCiAJc2VsZWN0IElERV9USU1J TkdTCisJc2VsZWN0IElERV9MRUdBQ1kKIAloZWxwCiAJICBUaGlzIGRyaXZlciBpcyBlbmFibGVk IGF0IHJ1bnRpbWUgdXNpbmcgdGhlICJxZDY1eHgucHJvYmUiIGtlcm5lbAogCSAgYm9vdCBwYXJh bWV0ZXIuICBJdCBwZXJtaXRzIGZhc3RlciBJL08gc3BlZWRzIHRvIGJlIHNldC4gIFNlZSB0aGUK QEAgLTg5NCw2ICs5MDEsNyBAQCBjb25maWcgQkxLX0RFVl9RRDY1WFgKIAogY29uZmlnIEJMS19E RVZfVU1DODY3MgogCXRyaXN0YXRlICJVTUMtODY3MiBzdXBwb3J0IgorCXNlbGVjdCBJREVfTEVH QUNZCiAJaGVscAogCSAgVGhpcyBkcml2ZXIgaXMgZW5hYmxlZCBhdCBydW50aW1lIHVzaW5nIHRo ZSAidW1jODY3Mi5wcm9iZSIga2VybmVsCiAJICBib290IHBhcmFtZXRlci4gSXQgZW5hYmxlcyBz dXBwb3J0IGZvciB0aGUgc2Vjb25kYXJ5IElERSBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL2RyaXZl cnMvaWRlL01ha2VmaWxlIGIvZHJpdmVycy9pZGUvTWFrZWZpbGUKaW5kZXggNzgxOGQ0MC4uMTc3 ZTNmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9pZGUv TWFrZWZpbGUKQEAgLTUsNyArNSw3IEBACiBFWFRSQV9DRkxBR1MJCQkJKz0gLUlkcml2ZXJzL2lk ZQogCiBpZGUtY29yZS15ICs9IGlkZS5vIGlkZS1pb2N0bHMubyBpZGUtaW8ubyBpZGUtaW9wcy5v IGlkZS1saWIubyBpZGUtcHJvYmUubyBcCi0JICAgICAgaWRlLXRhc2tmaWxlLm8gaWRlLXBhcmsu byBpZGUtcGlvLWJsYWNrbGlzdC5vCisJICAgICAgaWRlLXRhc2tmaWxlLm8gaWRlLXBtLm8gaWRl LXBhcmsubyBpZGUtcGlvLWJsYWNrbGlzdC5vCiAKICMgY29yZSBJREUgY29kZQogaWRlLWNvcmUt JChDT05GSUdfSURFX1RJTUlOR1MpCQkrPSBpZGUtdGltaW5ncy5vCkBAIC0xNSw2ICsxNSw3IEBA IGlkZS1jb3JlLSQoQ09ORklHX0JMS19ERVZfSURFRE1BKQkrPSBpZGUtZG1hLm8KIGlkZS1jb3Jl LSQoQ09ORklHX0JMS19ERVZfSURFRE1BX1NGRikJKz0gaWRlLWRtYS1zZmYubwogaWRlLWNvcmUt JChDT05GSUdfSURFX1BST0NfRlMpCQkrPSBpZGUtcHJvYy5vCiBpZGUtY29yZS0kKENPTkZJR19C TEtfREVWX0lERUFDUEkpCSs9IGlkZS1hY3BpLm8KK2lkZS1jb3JlLSQoQ09ORklHX0lERV9MRUdB Q1kpCQkrPSBpZGUtbGVnYWN5Lm8KIAogb2JqLSQoQ09ORklHX0lERSkJCQkrPSBpZGUtY29yZS5v CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2NtZDY0eC5jIGIvZHJpdmVycy9pZGUvY21kNjR4 LmMKaW5kZXggOTM1Mzg1Yy4uMzYyM2JmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvY21kNjR4 LmMKKysrIGIvZHJpdmVycy9pZGUvY21kNjR4LmMKQEAgLTQyNCwxMCArNDI0LDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaWRlX3BvcnRfaW5mbyBjbWQ2NHhfY2hpcHNldHNbXSBfX2RldmluaXRk YXRhID0gewogCQkubmFtZQkJPSBEUlZfTkFNRSwKIAkJLmluaXRfY2hpcHNldAk9IGluaXRfY2hp cHNldF9jbWQ2NHgsCiAJCS5lbmFibGViaXRzCT0ge3sweDUxLDB4MDQsMHgwNH0sIHsweDUxLDB4 MDgsMHgwOH19LAotCQkuY2hpcHNldAk9IGlkZV9jbWQ2NDYsCiAJCS5wb3J0X29wcwk9ICZjbWQ2 NHhfcG9ydF9vcHMsCiAJCS5kbWFfb3BzCT0gJmNtZDY0OF9kbWFfb3BzLAotCQkuaG9zdF9mbGFn cwk9IElERV9IRkxBR19BQlVTRV9QUkVGRVRDSCwKKwkJLmhvc3RfZmxhZ3MJPSBJREVfSEZMQUdf U0VSSUFMSVpFIHwKKwkJCQkgIElERV9IRkxBR19BQlVTRV9QUkVGRVRDSCwKIAkJLnBpb19tYXNr CT0gQVRBX1BJTzUsCiAJCS5td2RtYV9tYXNrCT0gQVRBX01XRE1BMiwKIAkJLnVkbWFfbWFzawk9 IEFUQV9VRE1BMiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2N5ODJjNjkzLmMgYi9kcml2ZXJz L2lkZS9jeTgyYzY5My5jCmluZGV4IDUyOTdmMDcuLmQzN2JhZjggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaWRlL2N5ODJjNjkzLmMKKysrIGIvZHJpdmVycy9pZGUvY3k4MmM2OTMuYwpAQCAtMjkyLDcg KzI5Miw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWRlX3BvcnRfaW5mbyBjeTgyYzY5M19jaGlw c2V0IF9fZGV2aW5pdGRhdGEgPSB7CiAJLm5hbWUJCT0gRFJWX05BTUUsCiAJLmluaXRfaW9wcwk9 IGluaXRfaW9wc19jeTgyYzY5MywKIAkucG9ydF9vcHMJPSAmY3k4MmM2OTNfcG9ydF9vcHMsCi0J LmNoaXBzZXQJPSBpZGVfY3k4MmM2OTMsCiAJLmhvc3RfZmxhZ3MJPSBJREVfSEZMQUdfU0lOR0xF LAogCS5waW9fbWFzawk9IEFUQV9QSU80LAogCS5zd2RtYV9tYXNrCT0gQVRBX1NXRE1BMiwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2dheWxlLmMgYi9kcml2ZXJzL2lkZS9nYXlsZS5jCmluZGV4 IDY5MTUwNjguLjU5YmQwYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2dheWxlLmMKKysrIGIv ZHJpdmVycy9pZGUvZ2F5bGUuYwpAQCAtMTE3LDYgKzExNywxMCBAQCBzdGF0aWMgdm9pZCBfX2lu aXQgZ2F5bGVfc2V0dXBfcG9ydHMoaHdfcmVnc190ICpodywgdW5zaWduZWQgbG9uZyBiYXNlLAog CWh3LT5jaGlwc2V0ID0gaWRlX2dlbmVyaWM7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWRl X3BvcnRfaW5mbyBnYXlsZV9wb3J0X2luZm8gPSB7CisJLmhvc3RfZmxhZ3MJCT0gSURFX0hGTEFH X1NFUklBTElaRSB8IElERV9IRkxBR19OT19ETUEsCit9OworCiAgICAgLyoKICAgICAgKiAgUHJv YmUgZm9yIGEgR2F5bGUgSURFIGludGVyZmFjZSAoYW5kIG9wdGlvbmFsbHkgZm9yIGFuIElERSBk b3VibGVyKQogICAgICAqLwpAQCAtMTc4LDcgKzE4Miw3IEBAIGZvdW5kOgogCWh3c1tpXSA9ICZo d1tpXTsKICAgICB9CiAKLSAgICByYyA9IGlkZV9ob3N0X2FkZChOVUxMLCBod3MsIE5VTEwpOwor ICAgIHJjID0gaWRlX2hvc3RfYWRkKCZnYXlsZV9wb3J0X2luZm8sIGh3cywgTlVMTCk7CiAgICAg aWYgKHJjKQogCXJlbGVhc2VfbWVtX3JlZ2lvbihyZXNfc3RhcnQsIHJlc19uKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9pZGUvaHB0MzY2LmMgYi9kcml2ZXJzL2lkZS9ocHQzNjYuYwppbmRleCBm NWFmZDQ2Li5iMThlMTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9ocHQzNjYuYworKysgYi9k cml2ZXJzL2lkZS9ocHQzNjYuYwpAQCAtMTM1LDcgKzEzNSw2IEBACiAvKiB2YXJpb3VzIHR1bmlu ZyBwYXJhbWV0ZXJzICovCiAjZGVmaW5lIEhQVF9SRVNFVF9TVEFURV9FTkdJTkUKICN1bmRlZglI UFRfREVMQVlfSU5URVJSVVBUCi0jZGVmaW5lIEhQVF9TRVJJQUxJWkVfSU8JMAogCiBzdGF0aWMg Y29uc3QgY2hhciAqcXVpcmtfZHJpdmVzW10gPSB7CiAJIlFVQU5UVU0gRklSRUJBTExsY3QwOCAw OCIsCkBAIC0xMjg4LDcgKzEyODcsNiBAQCBzdGF0aWMgdTggaHB0M3h4X2NhYmxlX2RldGVjdChp ZGVfaHdpZl90ICpod2lmKQogc3RhdGljIHZvaWQgX19kZXZpbml0IGluaXRfaHdpZl9ocHQzNjYo aWRlX2h3aWZfdCAqaHdpZikKIHsKIAlzdHJ1Y3QgaHB0X2luZm8gKmluZm8JPSBocHQzeHhfZ2V0 X2luZm8oaHdpZi0+ZGV2KTsKLQlpbnQgc2VyaWFsaXplCQk9IEhQVF9TRVJJQUxJWkVfSU87CiAJ dTggIGNoaXBfdHlwZQkJPSBpbmZvLT5jaGlwX3R5cGU7CiAKIAkvKiBDYWNoZSB0aGUgY2hhbm5l bCdzIE1JU0MuIGNvbnRyb2wgcmVnaXN0ZXJzJyBvZmZzZXQgKi8KQEAgLTEzMDUsMTMgKzEzMDMs OSBAQCBzdGF0aWMgdm9pZCBfX2RldmluaXQgaW5pdF9od2lmX2hwdDM2NihpZGVfaHdpZl90ICpo d2lmKQogCQkgKiBDbG9jayBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgY2hhbm5lbHMsCiAJCSAqIHNv IHdlJ2xsIGhhdmUgdG8gc2VyaWFsaXplIHRoZW0uLi4gOi0oCiAJCSAqLwotCQlzZXJpYWxpemUg PSAxOworCQlod2lmLT5ob3N0LT5ob3N0X2ZsYWdzIHw9IElERV9IRkxBR19TRVJJQUxJWkU7CiAJ CWh3aWYtPnJ3X2Rpc2sgPSAmaHB0M3h4bl9yd19kaXNrOwogCX0KLQotCS8qIFNlcmlhbGl6ZSBh Y2Nlc3MgdG8gdGhpcyBkZXZpY2UgaWYgbmVlZGVkICovCi0JaWYgKHNlcmlhbGl6ZSAmJiBod2lm LT5tYXRlKQotCQlod2lmLT5zZXJpYWxpemVkID0gaHdpZi0+bWF0ZS0+c2VyaWFsaXplZCA9IDE7 CiB9CiAKIHN0YXRpYyBpbnQgX19kZXZpbml0IGluaXRfZG1hX2hwdDM2NihpZGVfaHdpZl90ICpo d2lmLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWFjcGkuYyBiL2RyaXZlcnMvaWRlL2lk ZS1hY3BpLmMKaW5kZXggMjQ0YThhMC4uZmQ0YTM2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUv aWRlLWFjcGkuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtYWNwaS5jCkBAIC02MTUsMTAgKzYxNSwx MCBAQCB2b2lkIGlkZV9hY3BpX3B1c2hfdGltaW5nKGlkZV9od2lmX3QgKmh3aWYpCiAJaW5fcGFy YW1zWzBdLmJ1ZmZlci5sZW5ndGggPSBzaXplb2Yoc3RydWN0IEdUTV9idWZmZXIpOwogCWluX3Bh cmFtc1swXS5idWZmZXIucG9pbnRlciA9ICh1OCAqKSZod2lmLT5hY3BpZGF0YS0+Z3RtOwogCWlu X3BhcmFtc1sxXS50eXBlID0gQUNQSV9UWVBFX0JVRkZFUjsKLQlpbl9wYXJhbXNbMV0uYnVmZmVy Lmxlbmd0aCA9IHNpemVvZihBVEFfSURfV09SRFMgKiAyKTsKKwlpbl9wYXJhbXNbMV0uYnVmZmVy Lmxlbmd0aCA9IEFUQV9JRF9XT1JEUyAqIDI7CiAJaW5fcGFyYW1zWzFdLmJ1ZmZlci5wb2ludGVy ID0gKHU4ICopJm1hc3Rlci0+aWRidWZmOwogCWluX3BhcmFtc1syXS50eXBlID0gQUNQSV9UWVBF X0JVRkZFUjsKLQlpbl9wYXJhbXNbMl0uYnVmZmVyLmxlbmd0aCA9IHNpemVvZihBVEFfSURfV09S RFMgKiAyKTsKKwlpbl9wYXJhbXNbMl0uYnVmZmVyLmxlbmd0aCA9IEFUQV9JRF9XT1JEUyAqIDI7 CiAJaW5fcGFyYW1zWzJdLmJ1ZmZlci5wb2ludGVyID0gKHU4ICopJnNsYXZlLT5pZGJ1ZmY7CiAJ LyogT3V0cHV0IGJ1ZmZlcjogX1NUTSBoYXMgbm8gb3V0cHV0ICovCiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaWRlL2lkZS1jZC5jIGIvZHJpdmVycy9pZGUvaWRlLWNkLmMKaW5kZXggNDJhYjZkOC4u NWRhYTRkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWNkLmMKKysrIGIvZHJpdmVycy9p ZGUvaWRlLWNkLmMKQEAgLTI2Miw3ICsyNjIsNiBAQCBzdGF0aWMgdm9pZCBjZHJvbV9lbmRfcmVx dWVzdChpZGVfZHJpdmVfdCAqZHJpdmUsIGludCB1cHRvZGF0ZSkKIAkJc3RydWN0IHJlcXVlc3Qg KmZhaWxlZCA9IChzdHJ1Y3QgcmVxdWVzdCAqKSBycS0+YnVmZmVyOwogCQlzdHJ1Y3QgY2Ryb21f aW5mbyAqaW5mbyA9IGRyaXZlLT5kcml2ZXJfZGF0YTsKIAkJdm9pZCAqc2Vuc2UgPSAmaW5mby0+ c2Vuc2VfZGF0YTsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCQlpZiAoZmFpbGVkKSB7CiAJ CQlpZiAoZmFpbGVkLT5zZW5zZSkgewpAQCAtMjc4LDExICsyNzcsOSBAQCBzdGF0aWMgdm9pZCBj ZHJvbV9lbmRfcmVxdWVzdChpZGVfZHJpdmVfdCAqZHJpdmUsIGludCB1cHRvZGF0ZSkKIAkJCQkJ CWZhaWxlZC0+aGFyZF9ucl9zZWN0b3JzKSkKIAkJCQkJQlVHKCk7CiAJCQl9IGVsc2UgewotCQkJ CXNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9jaywgZmxhZ3MpOwotCQkJCWlmIChfX2Jsa19lbmRf cmVxdWVzdChmYWlsZWQsIC1FSU8sCi0JCQkJCQkgICAgICBmYWlsZWQtPmRhdGFfbGVuKSkKKwkJ CQlpZiAoYmxrX2VuZF9yZXF1ZXN0KGZhaWxlZCwgLUVJTywKKwkJCQkJCSAgICBmYWlsZWQtPmRh dGFfbGVuKSkKIAkJCQkJQlVHKCk7Ci0JCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xv Y2ssIGZsYWdzKTsKIAkJCX0KIAkJfSBlbHNlCiAJCQljZHJvbV9hbmFseXplX3NlbnNlX2RhdGEo ZHJpdmUsIE5VTEwsIHNlbnNlKTsKQEAgLTMxNyw3ICszMTQsOCBAQCBzdGF0aWMgdm9pZCBpZGVf ZHVtcF9zdGF0dXNfbm9fc2Vuc2UoaWRlX2RyaXZlX3QgKmRyaXZlLCBjb25zdCBjaGFyICptc2cs IHU4IHN0KQogc3RhdGljIGludCBjZHJvbV9kZWNvZGVfc3RhdHVzKGlkZV9kcml2ZV90ICpkcml2 ZSwgaW50IGdvb2Rfc3RhdCwgaW50ICpzdGF0X3JldCkKIHsKIAlpZGVfaHdpZl90ICpod2lmID0g ZHJpdmUtPmh3aWY7Ci0Jc3RydWN0IHJlcXVlc3QgKnJxID0gaHdpZi0+aHdncm91cC0+cnE7CisJ aWRlX2h3Z3JvdXBfdCAqaHdncm91cCA9IGh3aWYtPmh3Z3JvdXA7CisJc3RydWN0IHJlcXVlc3Qg KnJxID0gaHdncm91cC0+cnE7CiAJaW50IHN0YXQsIGVyciwgc2Vuc2Vfa2V5OwogCiAJLyogY2hl Y2sgZm9yIGVycm9ycyAqLwpAQCAtNDI2LDE2ICs0MjQsMTcgQEAgc3RhdGljIGludCBjZHJvbV9k ZWNvZGVfc3RhdHVzKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGdvb2Rfc3RhdCwgaW50ICpzdGF0 X3JldCkKIAkJCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBpbmZvLT53cml0ZV90aW1lb3V0KSkK IAkJCQkJZG9fZW5kX3JlcXVlc3QgPSAxOwogCQkJCWVsc2UgeworCQkJCQlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IGRyaXZlLT5xdWV1ZTsKIAkJCQkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAog CQkJCQkvKgogCQkJCQkgKiB0YWtlIGEgYnJlYXRoZXIgcmVseWluZyBvbiB0aGUgdW5wbHVnCiAJ CQkJCSAqIHRpbWVyIHRvIGtpY2sgdXMgYWdhaW4KIAkJCQkJICovCi0JCQkJCXNwaW5fbG9ja19p cnFzYXZlKCZpZGVfbG9jaywgZmxhZ3MpOwotCQkJCQlibGtfcGx1Z19kZXZpY2UoZHJpdmUtPnF1 ZXVlKTsKLQkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssCi0JCQkJCQkJCWZs YWdzKTsKKwkJCQkJc3Bpbl9sb2NrX2lycXNhdmUocS0+cXVldWVfbG9jaywgZmxhZ3MpOworCQkJ CQlibGtfcGx1Z19kZXZpY2UocSk7CisJCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+cXVl dWVfbG9jaywgZmxhZ3MpOworCiAJCQkJCXJldHVybiAxOwogCQkJCX0KIAkJCX0KQEAgLTUwNCwx MiArNTAzLDE0IEBAIHN0YXRpYyBpbnQgY2Ryb21fZGVjb2RlX3N0YXR1cyhpZGVfZHJpdmVfdCAq ZHJpdmUsIGludCBnb29kX3N0YXQsIGludCAqc3RhdF9yZXQpCiAKIGVuZF9yZXF1ZXN0OgogCWlm IChzdGF0ICYgQVRBX0VSUikgeworCQlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9IGRyaXZlLT5x dWV1ZTsKIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCQlzcGluX2xvY2tfaXJxc2F2ZSgmaWRl X2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUocS0+cXVldWVfbG9jaywgZmxhZ3Mp OwogCQlibGtkZXZfZGVxdWV1ZV9yZXF1ZXN0KHJxKTsKLQkJSFdHUk9VUChkcml2ZSktPnJxID0g TlVMTDsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZShxLT5xdWV1ZV9sb2NrLCBmbGFncyk7CisKKwkJaHdncm91cC0+ cnEgPSBOVUxMOwogCiAJCWNkcm9tX3F1ZXVlX3JlcXVlc3Rfc2Vuc2UoZHJpdmUsIHJxLT5zZW5z ZSwgcnEpOwogCX0gZWxzZQpAQCAtNzczLDUyICs3NzQsNiBAQCBzdGF0aWMgaWRlX3N0YXJ0c3Rv cF90IGNkcm9tX3N0YXJ0X3J3X2NvbnQoaWRlX2RyaXZlX3QgKmRyaXZlKQogCXJldHVybiBjZHJv bV90cmFuc2Zlcl9wYWNrZXRfY29tbWFuZChkcml2ZSwgcnEsIGNkcm9tX25ld3BjX2ludHIpOwog fQogCi0jZGVmaW5lIElERUNEX1NFRUtfVEhSRVNIT0xECSgxMDAwKQkJCS8qIDEwMDAgYmxvY2tz ICovCi0jZGVmaW5lIElERUNEX1NFRUtfVElNRVIJKDUgKiBXQUlUX01JTl9TTEVFUCkJLyogMTAw IG1zICovCi0jZGVmaW5lIElERUNEX1NFRUtfVElNRU9VVAkoMiAqIFdBSVRfQ01EKQkJLyogMjAg c2VjICovCi0KLXN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgY2Ryb21fc2Vla19pbnRyKGlkZV9kcml2 ZV90ICpkcml2ZSkKLXsKLQlzdHJ1Y3QgY2Ryb21faW5mbyAqaW5mbyA9IGRyaXZlLT5kcml2ZXJf ZGF0YTsKLQlpbnQgc3RhdDsKLQlzdGF0aWMgaW50IHJldHJ5ID0gMTA7Ci0KLQlpZGVfZGVidWdf bG9nKElERV9EQkdfRlVOQywgIkNhbGwgJXNcbiIsIF9fZnVuY19fKTsKLQotCWlmIChjZHJvbV9k ZWNvZGVfc3RhdHVzKGRyaXZlLCAwLCAmc3RhdCkpCi0JCXJldHVybiBpZGVfc3RvcHBlZDsKLQot CWRyaXZlLT5hdGFwaV9mbGFncyB8PSBJREVfQUZMQUdfU0VFS0lORzsKLQotCWlmIChyZXRyeSAm JiB0aW1lX2FmdGVyKGppZmZpZXMsIGluZm8tPnN0YXJ0X3NlZWsgKyBJREVDRF9TRUVLX1RJTUVS KSkgewotCQlpZiAoLS1yZXRyeSA9PSAwKQotCQkJZHJpdmUtPmRldl9mbGFncyAmPSB+SURFX0RG TEFHX0RTQ19PVkVSTEFQOwotCX0KLQlyZXR1cm4gaWRlX3N0b3BwZWQ7Ci19Ci0KLXN0YXRpYyB2 b2lkIGlkZV9jZF9wcmVwYXJlX3NlZWtfcmVxdWVzdChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVj dCByZXF1ZXN0ICpycSkKLXsKLQlzZWN0b3JfdCBmcmFtZSA9IHJxLT5zZWN0b3I7Ci0KLQlpZGVf ZGVidWdfbG9nKElERV9EQkdfRlVOQywgIkNhbGwgJXNcbiIsIF9fZnVuY19fKTsKLQotCXNlY3Rv cl9kaXYoZnJhbWUsIHF1ZXVlX2hhcmRzZWN0X3NpemUoZHJpdmUtPnF1ZXVlKSA+PiBTRUNUT1Jf QklUUyk7Ci0KLQltZW1zZXQocnEtPmNtZCwgMCwgQkxLX01BWF9DREIpOwotCXJxLT5jbWRbMF0g PSBHUENNRF9TRUVLOwotCXB1dF91bmFsaWduZWQoY3B1X3RvX2JlMzIoZnJhbWUpLCAodW5zaWdu ZWQgaW50ICopICZycS0+Y21kWzJdKTsKLQotCXJxLT50aW1lb3V0ID0gQVRBUElfV0FJVF9QQzsK LX0KLQotc3RhdGljIGlkZV9zdGFydHN0b3BfdCBjZHJvbV9zdGFydF9zZWVrX2NvbnRpbnVhdGlv bihpZGVfZHJpdmVfdCAqZHJpdmUpCi17Ci0Jc3RydWN0IHJlcXVlc3QgKnJxID0gZHJpdmUtPmh3 aWYtPmh3Z3JvdXAtPnJxOwotCi0JcmV0dXJuIGNkcm9tX3RyYW5zZmVyX3BhY2tldF9jb21tYW5k KGRyaXZlLCBycSwgJmNkcm9tX3NlZWtfaW50cik7Ci19Ci0KIC8qCiAgKiBGaXggdXAgYSBwb3Nz aWJseSBwYXJ0aWFsbHktcHJvY2Vzc2VkIHJlcXVlc3Qgc28gdGhhdCB3ZSBjYW4gc3RhcnQgaXQg b3ZlcgogICogZW50aXJlbHksIG9yIGV2ZW4gcHV0IGl0IGJhY2sgb24gdGhlIHJlcXVlc3QgcXVl dWUuCkBAIC05NTAsNyArOTA1LDggQEAgc3RhdGljIGludCBjZHJvbV9uZXdwY19pbnRyX2R1bW15 X2NiKHN0cnVjdCByZXF1ZXN0ICpycSkKIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgY2Ryb21fbmV3 cGNfaW50cihpZGVfZHJpdmVfdCAqZHJpdmUpCiB7CiAJaWRlX2h3aWZfdCAqaHdpZiA9IGRyaXZl LT5od2lmOwotCXN0cnVjdCByZXF1ZXN0ICpycSA9IEhXR1JPVVAoZHJpdmUpLT5ycTsKKwlpZGVf aHdncm91cF90ICpod2dyb3VwID0gaHdpZi0+aHdncm91cDsKKwlzdHJ1Y3QgcmVxdWVzdCAqcnEg PSBod2dyb3VwLT5ycTsKIAl4ZmVyX2Z1bmNfdCAqeGZlcmZ1bmM7CiAJaWRlX2V4cGlyeV90ICpl eHBpcnkgPSBOVUxMOwogCWludCBkbWFfZXJyb3IgPSAwLCBkbWEsIHN0YXQsIHRoaXNsZW4sIHVw dG9kYXRlID0gMDsKQEAgLTExNDgsMTcgKzExMDQsMTUgQEAgc3RhdGljIGlkZV9zdGFydHN0b3Bf dCBjZHJvbV9uZXdwY19pbnRyKGlkZV9kcml2ZV90ICpkcml2ZSkKIAogZW5kX3JlcXVlc3Q6CiAJ aWYgKGJsa19wY19yZXF1ZXN0KHJxKSkgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCQl1bnNp Z25lZCBpbnQgZGxlbiA9IHJxLT5kYXRhX2xlbjsKIAogCQlpZiAoZG1hKQogCQkJcnEtPmRhdGFf bGVuID0gMDsKIAotCQlzcGluX2xvY2tfaXJxc2F2ZSgmaWRlX2xvY2ssIGZsYWdzKTsKLQkJaWYg KF9fYmxrX2VuZF9yZXF1ZXN0KHJxLCAwLCBkbGVuKSkKKwkJaWYgKGJsa19lbmRfcmVxdWVzdChy cSwgMCwgZGxlbikpCiAJCQlCVUcoKTsKLQkJSFdHUk9VUChkcml2ZSktPnJxID0gTlVMTDsKLQkJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKKworCQlod2dyb3VwLT5y cSA9IE5VTEw7CiAJfSBlbHNlIHsKIAkJaWYgKCF1cHRvZGF0ZSkKIAkJCXJxLT5jbWRfZmxhZ3Mg fD0gUkVRX0ZBSUxFRDsKQEAgLTEyNjAsNyArMTIxNCw2IEBAIHN0YXRpYyB2b2lkIGNkcm9tX2Rv X2Jsb2NrX3BjKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQogc3RhdGlj IGlkZV9zdGFydHN0b3BfdCBpZGVfY2RfZG9fcmVxdWVzdChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0 cnVjdCByZXF1ZXN0ICpycSwKIAkJCQkJc2VjdG9yX3QgYmxvY2spCiB7Ci0Jc3RydWN0IGNkcm9t X2luZm8gKmluZm8gPSBkcml2ZS0+ZHJpdmVyX2RhdGE7CiAJaWRlX2hhbmRsZXJfdCAqZm47CiAJ aW50IHhmZXJsZW47CiAKQEAgLTEyNzAsNDQgKzEyMjMsMTQgQEAgc3RhdGljIGlkZV9zdGFydHN0 b3BfdCBpZGVfY2RfZG9fcmVxdWVzdChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0 ICpycSwKIAkJICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylibG9jayk7CiAKIAlpZiAoYmxrX2Zz X3JlcXVlc3QocnEpKSB7Ci0JCWlmIChkcml2ZS0+YXRhcGlfZmxhZ3MgJiBJREVfQUZMQUdfU0VF S0lORykgewotCQkJaWRlX2h3aWZfdCAqaHdpZiA9IGRyaXZlLT5od2lmOwotCQkJdW5zaWduZWQg bG9uZyBlbGFwc2VkID0gamlmZmllcyAtIGluZm8tPnN0YXJ0X3NlZWs7Ci0JCQlpbnQgc3RhdCA9 IGh3aWYtPnRwX29wcy0+cmVhZF9zdGF0dXMoaHdpZik7Ci0KLQkJCWlmICgoc3RhdCAmIEFUQV9E U0MpICE9IEFUQV9EU0MpIHsKLQkJCQlpZiAoZWxhcHNlZCA8IElERUNEX1NFRUtfVElNRU9VVCkg ewotCQkJCQlpZGVfc3RhbGxfcXVldWUoZHJpdmUsCi0JCQkJCQkJSURFQ0RfU0VFS19USU1FUik7 Ci0JCQkJCXJldHVybiBpZGVfc3RvcHBlZDsKLQkJCQl9Ci0JCQkJcHJpbnRrKEtFUk5fRVJSIFBG WCAiJXM6IERTQyB0aW1lb3V0XG4iLAotCQkJCQkJZHJpdmUtPm5hbWUpOwotCQkJfQotCQkJZHJp dmUtPmF0YXBpX2ZsYWdzICY9IH5JREVfQUZMQUdfU0VFS0lORzsKLQkJfQotCQlpZiAocnFfZGF0 YV9kaXIocnEpID09IFJFQUQgJiYKLQkJICAgIElERV9MQVJHRV9TRUVLKGluZm8tPmxhc3RfYmxv Y2ssIGJsb2NrLAotCQkJICAgIElERUNEX1NFRUtfVEhSRVNIT0xEKSAmJgotCQkgICAgKGRyaXZl LT5kZXZfZmxhZ3MgJiBJREVfREZMQUdfRFNDX09WRVJMQVApKSB7Ci0JCQl4ZmVybGVuID0gMDsK LQkJCWZuID0gY2Ryb21fc3RhcnRfc2Vla19jb250aW51YXRpb247CisJCXhmZXJsZW4gPSAzMjc2 ODsKKwkJZm4gPSBjZHJvbV9zdGFydF9yd19jb250OwogCi0JCQlkcml2ZS0+ZG1hID0gMDsKLQkJ CWluZm8tPnN0YXJ0X3NlZWsgPSBqaWZmaWVzOwotCi0JCQlpZGVfY2RfcHJlcGFyZV9zZWVrX3Jl cXVlc3QoZHJpdmUsIHJxKTsKLQkJfSBlbHNlIHsKLQkJCXhmZXJsZW4gPSAzMjc2ODsKLQkJCWZu ID0gY2Ryb21fc3RhcnRfcndfY29udDsKLQotCQkJaWYgKGNkcm9tX3N0YXJ0X3J3KGRyaXZlLCBy cSkgPT0gaWRlX3N0b3BwZWQpCi0JCQkJcmV0dXJuIGlkZV9zdG9wcGVkOworCQlpZiAoY2Ryb21f c3RhcnRfcncoZHJpdmUsIHJxKSA9PSBpZGVfc3RvcHBlZCkKKwkJCXJldHVybiBpZGVfc3RvcHBl ZDsKIAotCQkJaWYgKGlkZV9jZF9wcmVwYXJlX3J3X3JlcXVlc3QoZHJpdmUsIHJxKSA9PSBpZGVf c3RvcHBlZCkKLQkJCQlyZXR1cm4gaWRlX3N0b3BwZWQ7Ci0JCX0KLQkJaW5mby0+bGFzdF9ibG9j ayA9IGJsb2NrOworCQlpZiAoaWRlX2NkX3ByZXBhcmVfcndfcmVxdWVzdChkcml2ZSwgcnEpID09 IGlkZV9zdG9wcGVkKQorCQkJcmV0dXJuIGlkZV9zdG9wcGVkOwogCX0gZWxzZSBpZiAoYmxrX3Nl bnNlX3JlcXVlc3QocnEpIHx8IGJsa19wY19yZXF1ZXN0KHJxKSB8fAogCQkgICBycS0+Y21kX3R5 cGUgPT0gUkVRX1RZUEVfQVRBX1BDKSB7CiAJCXhmZXJsZW4gPSBycS0+ZGF0YV9sZW47CkBAIC0x OTA4LDEzICsxODMxLDYgQEAgc3RhdGljIGlkZV9wcm9jX2VudHJ5X3QgaWRlY2RfcHJvY1tdID0g ewogCXsgTlVMTCwgMCwgTlVMTCwgTlVMTCB9CiB9OwogCi1pZGVfZGV2c2V0X3J3X2ZsYWcoZHNj X292ZXJsYXAsIElERV9ERkxBR19EU0NfT1ZFUkxBUCk7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aWRlX3Byb2NfZGV2c2V0IGlkZWNkX3NldHRpbmdzW10gPSB7Ci0JSURFX1BST0NfREVWU0VUKGRz Y19vdmVybGFwLCAwLCAxKSwKLQl7IDAgfSwKLX07Ci0KIHN0YXRpYyBpZGVfcHJvY19lbnRyeV90 ICppZGVfY2RfcHJvY19lbnRyaWVzKGlkZV9kcml2ZV90ICpkcml2ZSkKIHsKIAlyZXR1cm4gaWRl Y2RfcHJvYzsKQEAgLTE5MjIsNyArMTgzOCw3IEBAIHN0YXRpYyBpZGVfcHJvY19lbnRyeV90ICpp ZGVfY2RfcHJvY19lbnRyaWVzKGlkZV9kcml2ZV90ICpkcml2ZSkKIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBpZGVfcHJvY19kZXZzZXQgKmlkZV9jZF9wcm9jX2RldnNldHMoaWRlX2RyaXZlX3QgKmRy aXZlKQogewotCXJldHVybiBpZGVjZF9zZXR0aW5nczsKKwlyZXR1cm4gTlVMTDsKIH0KICNlbmRp ZgogCkBAIC0yMDIyLDExICsxOTM4LDYgQEAgc3RhdGljIGludCBpZGVfY2Ryb21fc2V0dXAoaWRl X2RyaXZlX3QgKmRyaXZlKQogCS8qIHNldCBjb3JyZWN0IGJsb2NrIHNpemUgKi8KIAlibGtfcXVl dWVfaGFyZHNlY3Rfc2l6ZShkcml2ZS0+cXVldWUsIENEX0ZSQU1FU0laRSk7CiAKLQlpZiAoZHJp dmUtPm5leHQgIT0gZHJpdmUpCi0JCWRyaXZlLT5kZXZfZmxhZ3MgfD0gSURFX0RGTEFHX0RTQ19P VkVSTEFQOwotCWVsc2UKLQkJZHJpdmUtPmRldl9mbGFncyAmPSB+SURFX0RGTEFHX0RTQ19PVkVS TEFQOwotCiAJaWYgKGlkZV9jZHJvbV9yZWdpc3Rlcihkcml2ZSwgbnNsb3RzKSkgewogCQlwcmlu dGsoS0VSTl9FUlIgUEZYICIlczogJXMgZmFpbGVkIHRvIHJlZ2lzdGVyIGRldmljZSB3aXRoIHRo ZSIKIAkJCQkiIGNkcm9tIGRyaXZlci5cbiIsIGRyaXZlLT5uYW1lLCBfX2Z1bmNfXyk7CkBAIC0y MDYzLDcgKzE5NzQsNiBAQCBzdGF0aWMgdm9pZCBpZGVfY2RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAq a3JlZikKIAlrZnJlZShpbmZvLT50b2MpOwogCWlmIChkZXZpbmZvLT5oYW5kbGUgPT0gZHJpdmUp CiAJCXVucmVnaXN0ZXJfY2Ryb20oZGV2aW5mbyk7Ci0JZHJpdmUtPmRldl9mbGFncyAmPSB+SURF X0RGTEFHX0RTQ19PVkVSTEFQOwogCWRyaXZlLT5kcml2ZXJfZGF0YSA9IE5VTEw7CiAJYmxrX3F1 ZXVlX3ByZXBfcnEoZHJpdmUtPnF1ZXVlLCBOVUxMKTsKIAlnLT5wcml2YXRlX2RhdGEgPSBOVUxM OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWNkLmggYi9kcml2ZXJzL2lkZS9pZGUtY2Qu aAppbmRleCA1ODgyYjlhLi5kNWNlMzM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtY2Qu aAorKysgYi9kcml2ZXJzL2lkZS9pZGUtY2QuaApAQCAtODgsOCArODgsNiBAQCBzdHJ1Y3QgY2Ry b21faW5mbyB7CiAJc3RydWN0IHJlcXVlc3Rfc2Vuc2Ugc2Vuc2VfZGF0YTsKIAogCXN0cnVjdCBy ZXF1ZXN0IHJlcXVlc3Rfc2Vuc2VfcmVxdWVzdDsKLQl1bnNpZ25lZCBsb25nIGxhc3RfYmxvY2s7 Ci0JdW5zaWduZWQgbG9uZyBzdGFydF9zZWVrOwogCiAJdTggbWF4X3NwZWVkOwkJLyogTWF4IHNw ZWVkIG9mIHRoZSBkcml2ZS4gKi8KIAl1OCBjdXJyZW50X3NwZWVkOwkvKiBDdXJyZW50IHNwZWVk IG9mIHRoZSBkcml2ZS4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1kbWEtc2ZmLmMg Yi9kcml2ZXJzL2lkZS9pZGUtZG1hLXNmZi5jCmluZGV4IGNhYzQzMWYuLmY2ZDJkNDQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1kbWEtc2ZmLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWRt YS1zZmYuYwpAQCAtOTgsMTAgKzk4LDEwIEBAIGludCBpZGVfYnVpbGRfZG1hdGFibGUoaWRlX2Ry aXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCiB7CiAJaWRlX2h3aWZfdCAqaHdpZiA9 IGRyaXZlLT5od2lmOwogCV9fbGUzMiAqdGFibGUgPSAoX19sZTMyICopaHdpZi0+ZG1hdGFibGVf Y3B1OwotCXVuc2lnbmVkIGludCBpc190cm0yOTAJPSAoaHdpZi0+Y2hpcHNldCA9PSBpZGVfdHJt MjkwKSA/IDEgOiAwOwogCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CiAJaW50IGk7CiAJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsKKwl1OCBpc190cm0yOTAgPSAhIShod2lmLT5ob3N0X2ZsYWdzICYg SURFX0hGTEFHX1RSTTI5MCk7CiAKIAlod2lmLT5zZ19uZW50cyA9IGlkZV9idWlsZF9zZ2xpc3Qo ZHJpdmUsIHJxKTsKIAlpZiAoaHdpZi0+c2dfbmVudHMgPT0gMCkKQEAgLTE3NiwxNSArMTc2LDEw IEBAIGludCBpZGVfZG1hX3NldHVwKGlkZV9kcml2ZV90ICpkcml2ZSkKIHsKIAlpZGVfaHdpZl90 ICpod2lmID0gZHJpdmUtPmh3aWY7CiAJc3RydWN0IHJlcXVlc3QgKnJxID0gaHdpZi0+aHdncm91 cC0+cnE7Ci0JdW5zaWduZWQgaW50IHJlYWRpbmc7CisJdW5zaWduZWQgaW50IHJlYWRpbmcgPSBy cV9kYXRhX2RpcihycSkgPyAwIDogQVRBX0RNQV9XUjsKIAl1OCBtbWlvID0gKGh3aWYtPmhvc3Rf ZmxhZ3MgJiBJREVfSEZMQUdfTU1JTykgPyAxIDogMDsKIAl1OCBkbWFfc3RhdDsKIAotCWlmIChy cV9kYXRhX2RpcihycSkpCi0JCXJlYWRpbmcgPSAwOwotCWVsc2UKLQkJcmVhZGluZyA9IDEgPDwg MzsKLQogCS8qIGZhbGwgYmFjayB0byBwaW8hICovCiAJaWYgKCFpZGVfYnVpbGRfZG1hdGFibGUo ZHJpdmUsIHJxKSkgewogCQlpZGVfbWFwX3NnKGRyaXZlLCBycSk7CkBAIC0yMDksMTAgKzIwNCwx MSBAQCBpbnQgaWRlX2RtYV9zZXR1cChpZGVfZHJpdmVfdCAqZHJpdmUpCiAKIAkvKiBjbGVhciBJ TlRSICYgRVJST1IgZmxhZ3MgKi8KIAlpZiAobW1pbykKLQkJd3JpdGViKGRtYV9zdGF0IHwgNiwK KwkJd3JpdGViKGRtYV9zdGF0IHwgQVRBX0RNQV9FUlIgfCBBVEFfRE1BX0lOVFIsCiAJCSAgICAg ICAodm9pZCBfX2lvbWVtICopKGh3aWYtPmRtYV9iYXNlICsgQVRBX0RNQV9TVEFUVVMpKTsKIAll bHNlCi0JCW91dGIoZG1hX3N0YXQgfCA2LCBod2lmLT5kbWFfYmFzZSArIEFUQV9ETUFfU1RBVFVT KTsKKwkJb3V0YihkbWFfc3RhdCB8IEFUQV9ETUFfRVJSIHwgQVRBX0RNQV9JTlRSLAorCQkgICAg IGh3aWYtPmRtYV9iYXNlICsgQVRBX0RNQV9TVEFUVVMpOwogCiAJZHJpdmUtPndhaXRpbmdfZm9y X2RtYSA9IDE7CiAJcmV0dXJuIDA7CkBAIC0yNDYsMTQgKzI0MiwxMyBAQCBzdGF0aWMgaW50IGRt YV90aW1lcl9leHBpcnkoaWRlX2RyaXZlX3QgKmRyaXZlKQogCiAJaHdpZi0+aHdncm91cC0+ZXhw aXJ5ID0gTlVMTDsJLyogb25lIGZyZWUgcmlkZSBmb3Igbm93ICovCiAKLQkvKiAxIGRtYWluZywg MiBlcnJvciwgNCBpbnRyICovCi0JaWYgKGRtYV9zdGF0ICYgMikJLyogRVJST1IgKi8KKwlpZiAo ZG1hX3N0YXQgJiBBVEFfRE1BX0VSUikJLyogRVJST1IgKi8KIAkJcmV0dXJuIC0xOwogCi0JaWYg KGRtYV9zdGF0ICYgMSkJLyogRE1BaW5nICovCisJaWYgKGRtYV9zdGF0ICYgQVRBX0RNQV9BQ1RJ VkUpCS8qIERNQWluZyAqLwogCQlyZXR1cm4gV0FJVF9DTUQ7CiAKLQlpZiAoZG1hX3N0YXQgJiA0 KQkvKiBHb3QgYW4gSW50ZXJydXB0ICovCisJaWYgKGRtYV9zdGF0ICYgQVRBX0RNQV9JTlRSKQkv KiBHb3QgYW4gSW50ZXJydXB0ICovCiAJCXJldHVybiBXQUlUX0NNRDsKIAogCXJldHVybiAwOwkv KiBTdGF0dXMgaXMgdW5rbm93biAtLSByZXNldCB0aGUgYnVzICovCkBAIC0yNzksMTIgKzI3NCwx MSBAQCB2b2lkIGlkZV9kbWFfc3RhcnQoaWRlX2RyaXZlX3QgKmRyaXZlKQogCSAqLwogCWlmICho d2lmLT5ob3N0X2ZsYWdzICYgSURFX0hGTEFHX01NSU8pIHsKIAkJZG1hX2NtZCA9IHJlYWRiKCh2 b2lkIF9faW9tZW0gKikoaHdpZi0+ZG1hX2Jhc2UgKyBBVEFfRE1BX0NNRCkpOwotCQkvKiBzdGFy dCBETUEgKi8KLQkJd3JpdGViKGRtYV9jbWQgfCAxLAorCQl3cml0ZWIoZG1hX2NtZCB8IEFUQV9E TUFfU1RBUlQsCiAJCSAgICAgICAodm9pZCBfX2lvbWVtICopKGh3aWYtPmRtYV9iYXNlICsgQVRB X0RNQV9DTUQpKTsKIAl9IGVsc2UgewogCQlkbWFfY21kID0gaW5iKGh3aWYtPmRtYV9iYXNlICsg QVRBX0RNQV9DTUQpOwotCQlvdXRiKGRtYV9jbWQgfCAxLCBod2lmLT5kbWFfYmFzZSArIEFUQV9E TUFfQ01EKTsKKwkJb3V0YihkbWFfY21kIHwgQVRBX0RNQV9TVEFSVCwgaHdpZi0+ZG1hX2Jhc2Ug KyBBVEFfRE1BX0NNRCk7CiAJfQogCiAJd21iKCk7CkBAIC0yOTYsMTkgKzI5MCwxOCBAQCBpbnQg aWRlX2RtYV9lbmQoaWRlX2RyaXZlX3QgKmRyaXZlKQogewogCWlkZV9od2lmX3QgKmh3aWYgPSBk cml2ZS0+aHdpZjsKIAl1OCBtbWlvID0gKGh3aWYtPmhvc3RfZmxhZ3MgJiBJREVfSEZMQUdfTU1J TykgPyAxIDogMDsKLQl1OCBkbWFfc3RhdCA9IDAsIGRtYV9jbWQgPSAwOworCXU4IGRtYV9zdGF0 ID0gMCwgZG1hX2NtZCA9IDAsIG1hc2s7CiAKIAlkcml2ZS0+d2FpdGluZ19mb3JfZG1hID0gMDsK IAorCS8qIHN0b3AgRE1BICovCiAJaWYgKG1taW8pIHsKLQkJLyogZ2V0IERNQSBjb21tYW5kIG1v ZGUgKi8KIAkJZG1hX2NtZCA9IHJlYWRiKCh2b2lkIF9faW9tZW0gKikoaHdpZi0+ZG1hX2Jhc2Ug KyBBVEFfRE1BX0NNRCkpOwotCQkvKiBzdG9wIERNQSAqLwotCQl3cml0ZWIoZG1hX2NtZCAmIH4x LAorCQl3cml0ZWIoZG1hX2NtZCAmIH5BVEFfRE1BX1NUQVJULAogCQkgICAgICAgKHZvaWQgX19p b21lbSAqKShod2lmLT5kbWFfYmFzZSArIEFUQV9ETUFfQ01EKSk7CiAJfSBlbHNlIHsKIAkJZG1h X2NtZCA9IGluYihod2lmLT5kbWFfYmFzZSArIEFUQV9ETUFfQ01EKTsKLQkJb3V0YihkbWFfY21k ICYgfjEsIGh3aWYtPmRtYV9iYXNlICsgQVRBX0RNQV9DTUQpOworCQlvdXRiKGRtYV9jbWQgJiB+ QVRBX0RNQV9TVEFSVCwgaHdpZi0+ZG1hX2Jhc2UgKyBBVEFfRE1BX0NNRCk7CiAJfQogCiAJLyog Z2V0IERNQSBzdGF0dXMgKi8KQEAgLTMxNiwxNiArMzA5LDIxIEBAIGludCBpZGVfZG1hX2VuZChp ZGVfZHJpdmVfdCAqZHJpdmUpCiAKIAlpZiAobW1pbykKIAkJLyogY2xlYXIgdGhlIElOVFIgJiBF UlJPUiBiaXRzICovCi0JCXdyaXRlYihkbWFfc3RhdCB8IDYsCisJCXdyaXRlYihkbWFfc3RhdCB8 IEFUQV9ETUFfRVJSIHwgQVRBX0RNQV9JTlRSLAogCQkgICAgICAgKHZvaWQgX19pb21lbSAqKSho d2lmLT5kbWFfYmFzZSArIEFUQV9ETUFfU1RBVFVTKSk7CiAJZWxzZQotCQlvdXRiKGRtYV9zdGF0 IHwgNiwgaHdpZi0+ZG1hX2Jhc2UgKyBBVEFfRE1BX1NUQVRVUyk7CisJCW91dGIoZG1hX3N0YXQg fCBBVEFfRE1BX0VSUiB8IEFUQV9ETUFfSU5UUiwKKwkJICAgICBod2lmLT5kbWFfYmFzZSArIEFU QV9ETUFfU1RBVFVTKTsKIAogCS8qIHB1cmdlIERNQSBtYXBwaW5ncyAqLwogCWlkZV9kZXN0cm95 X2RtYXRhYmxlKGRyaXZlKTsKLQkvKiB2ZXJpZnkgZ29vZCBETUEgc3RhdHVzICovCiAJd21iKCk7 Ci0JcmV0dXJuIChkbWFfc3RhdCAmIDcpICE9IDQgPyAoMHgxMCB8IGRtYV9zdGF0KSA6IDA7CisK KwkvKiB2ZXJpZnkgZ29vZCBETUEgc3RhdHVzICovCisJbWFzayA9IEFUQV9ETUFfQUNUSVZFIHwg QVRBX0RNQV9FUlIgfCBBVEFfRE1BX0lOVFI7CisJaWYgKChkbWFfc3RhdCAmIG1hc2spICE9IEFU QV9ETUFfSU5UUikKKwkJcmV0dXJuIDB4MTAgfCBkbWFfc3RhdDsKKwlyZXR1cm4gMDsKIH0KIEVY UE9SVF9TWU1CT0xfR1BMKGlkZV9kbWFfZW5kKTsKIApAQCAtMzM1LDExICszMzMsNyBAQCBpbnQg aWRlX2RtYV90ZXN0X2lycShpZGVfZHJpdmVfdCAqZHJpdmUpCiAJaWRlX2h3aWZfdCAqaHdpZiA9 IGRyaXZlLT5od2lmOwogCXU4IGRtYV9zdGF0ID0gaHdpZi0+dHBfb3BzLT5yZWFkX3NmZl9kbWFf c3RhdHVzKGh3aWYpOwogCi0JLyogcmV0dXJuIDEgaWYgSU5UUiBhc3NlcnRlZCAqLwotCWlmICgo ZG1hX3N0YXQgJiA0KSA9PSA0KQotCQlyZXR1cm4gMTsKLQotCXJldHVybiAwOworCXJldHVybiAo ZG1hX3N0YXQgJiBBVEFfRE1BX0lOVFIpID8gMSA6IDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChp ZGVfZG1hX3Rlc3RfaXJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLWlvLmMgYi9k cml2ZXJzL2lkZS9pZGUtaW8uYwppbmRleCBjYzM1ZDZkLi5lY2FjYzAwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2lkZS9pZGUtaW8uYworKysgYi9kcml2ZXJzL2lkZS9pZGUtaW8uYwpAQCAtODQsMTEg Kzg0LDExIEBAIHN0YXRpYyBpbnQgX19pZGVfZW5kX3JlcXVlc3QoaWRlX2RyaXZlX3QgKmRyaXZl LCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJCWlkZV9kbWFfb24oZHJpdmUpOwogCX0KIAotCWlmICgh X19ibGtfZW5kX3JlcXVlc3QocnEsIGVycm9yLCBucl9ieXRlcykpIHsKLQkJaWYgKGRlcXVldWUp Ci0JCQlIV0dST1VQKGRyaXZlKS0+cnEgPSBOVUxMOworCWlmICghYmxrX2VuZF9yZXF1ZXN0KHJx LCBlcnJvciwgbnJfYnl0ZXMpKQogCQlyZXQgPSAwOwotCX0KKworCWlmIChyZXQgPT0gMCAmJiBk ZXF1ZXVlKQorCQlkcml2ZS0+aHdpZi0+aHdncm91cC0+cnEgPSBOVUxMOwogCiAJcmV0dXJuIHJl dDsKIH0KQEAgLTEwNywxNiArMTA3LDcgQEAgc3RhdGljIGludCBfX2lkZV9lbmRfcmVxdWVzdChp ZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSwKIGludCBpZGVfZW5kX3JlcXVl c3QgKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IHVwdG9kYXRlLCBpbnQgbnJfc2VjdG9ycykKIHsK IAl1bnNpZ25lZCBpbnQgbnJfYnl0ZXMgPSBucl9zZWN0b3JzIDw8IDk7Ci0Jc3RydWN0IHJlcXVl c3QgKnJxOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IHJldCA9IDE7Ci0KLQkvKgotCSAq IHJvb20gZm9yIGxvY2tpbmcgaW1wcm92ZW1lbnRzIGhlcmUsIHRoZSBjYWxscyBiZWxvdyBkb24n dAotCSAqIG5lZWQgdGhlIHF1ZXVlIGxvY2sgaGVsZCBhdCBhbGwKLQkgKi8KLQlzcGluX2xvY2tf aXJxc2F2ZSgmaWRlX2xvY2ssIGZsYWdzKTsKLQlycSA9IEhXR1JPVVAoZHJpdmUpLT5ycTsKKwlz dHJ1Y3QgcmVxdWVzdCAqcnEgPSBkcml2ZS0+aHdpZi0+aHdncm91cC0+cnE7CiAKIAlpZiAoIW5y X2J5dGVzKSB7CiAJCWlmIChibGtfcGNfcmVxdWVzdChycSkpCkBAIC0xMjUsMTA1ICsxMTYsMTAg QEAgaW50IGlkZV9lbmRfcmVxdWVzdCAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgdXB0b2RhdGUs IGludCBucl9zZWN0b3JzKQogCQkJbnJfYnl0ZXMgPSBycS0+aGFyZF9jdXJfc2VjdG9ycyA8PCA5 OwogCX0KIAotCXJldCA9IF9faWRlX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgdXB0b2RhdGUsIG5y X2J5dGVzLCAxKTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9sb2NrLCBmbGFncyk7 Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gX19pZGVfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCB1cHRv ZGF0ZSwgbnJfYnl0ZXMsIDEpOwogfQogRVhQT1JUX1NZTUJPTChpZGVfZW5kX3JlcXVlc3QpOwog Ci1zdGF0aWMgdm9pZCBpZGVfY29tcGxldGVfcG93ZXJfc3RlcChpZGVfZHJpdmVfdCAqZHJpdmUs IHN0cnVjdCByZXF1ZXN0ICpycSkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9wbV9zdGF0ZSAqcG0gPSBy cS0+ZGF0YTsKLQotI2lmZGVmIERFQlVHX1BNCi0JcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGNvbXBs ZXRlX3Bvd2VyX3N0ZXAoc3RlcDogJWQpXG4iLAotCQlkcml2ZS0+bmFtZSwgcG0tPnBtX3N0ZXAp OwotI2VuZGlmCi0JaWYgKGRyaXZlLT5tZWRpYSAhPSBpZGVfZGlzaykKLQkJcmV0dXJuOwotCi0J c3dpdGNoIChwbS0+cG1fc3RlcCkgewotCWNhc2UgSURFX1BNX0ZMVVNIX0NBQ0hFOgkvKiBTdXNw ZW5kIHN0ZXAgMSAoZmx1c2ggY2FjaGUpICovCi0JCWlmIChwbS0+cG1fc3RhdGUgPT0gUE1fRVZF TlRfRlJFRVpFKQotCQkJcG0tPnBtX3N0ZXAgPSBJREVfUE1fQ09NUExFVEVEOwotCQllbHNlCi0J CQlwbS0+cG1fc3RlcCA9IElERV9QTV9TVEFOREJZOwotCQlicmVhazsKLQljYXNlIElERV9QTV9T VEFOREJZOgkJLyogU3VzcGVuZCBzdGVwIDIgKHN0YW5kYnkpICovCi0JCXBtLT5wbV9zdGVwID0g SURFX1BNX0NPTVBMRVRFRDsKLQkJYnJlYWs7Ci0JY2FzZSBJREVfUE1fUkVTVE9SRV9QSU86CS8q IFJlc3VtZSBzdGVwIDEgKHJlc3RvcmUgUElPKSAqLwotCQlwbS0+cG1fc3RlcCA9IElERV9QTV9J RExFOwotCQlicmVhazsKLQljYXNlIElERV9QTV9JRExFOgkJLyogUmVzdW1lIHN0ZXAgMiAoaWRs ZSkqLwotCQlwbS0+cG1fc3RlcCA9IElERV9QTV9SRVNUT1JFX0RNQTsKLQkJYnJlYWs7Ci0JfQot fQotCi1zdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGlkZV9zdGFydF9wb3dlcl9zdGVwKGlkZV9kcml2 ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQotewotCXN0cnVjdCByZXF1ZXN0X3BtX3N0 YXRlICpwbSA9IHJxLT5kYXRhOwotCWlkZV90YXNrX3QgKmFyZ3MgPSBycS0+c3BlY2lhbDsKLQot CW1lbXNldChhcmdzLCAwLCBzaXplb2YoKmFyZ3MpKTsKLQotCXN3aXRjaCAocG0tPnBtX3N0ZXAp IHsKLQljYXNlIElERV9QTV9GTFVTSF9DQUNIRToJLyogU3VzcGVuZCBzdGVwIDEgKGZsdXNoIGNh Y2hlKSAqLwotCQlpZiAoZHJpdmUtPm1lZGlhICE9IGlkZV9kaXNrKQotCQkJYnJlYWs7Ci0JCS8q IE5vdCBzdXBwb3J0ZWQ/IFN3aXRjaCB0byBuZXh0IHN0ZXAgbm93LiAqLwotCQlpZiAoYXRhX2lk X2ZsdXNoX2VuYWJsZWQoZHJpdmUtPmlkKSA9PSAwIHx8Ci0JCSAgICAoZHJpdmUtPmRldl9mbGFn cyAmIElERV9ERkxBR19XQ0FDSEUpID09IDApIHsKLQkJCWlkZV9jb21wbGV0ZV9wb3dlcl9zdGVw KGRyaXZlLCBycSk7Ci0JCQlyZXR1cm4gaWRlX3N0b3BwZWQ7Ci0JCX0KLQkJaWYgKGF0YV9pZF9m bHVzaF9leHRfZW5hYmxlZChkcml2ZS0+aWQpKQotCQkJYXJncy0+dGYuY29tbWFuZCA9IEFUQV9D TURfRkxVU0hfRVhUOwotCQllbHNlCi0JCQlhcmdzLT50Zi5jb21tYW5kID0gQVRBX0NNRF9GTFVT SDsKLQkJZ290byBvdXRfZG9fdGY7Ci0JY2FzZSBJREVfUE1fU1RBTkRCWToJCS8qIFN1c3BlbmQg c3RlcCAyIChzdGFuZGJ5KSAqLwotCQlhcmdzLT50Zi5jb21tYW5kID0gQVRBX0NNRF9TVEFOREJZ Tk9XMTsKLQkJZ290byBvdXRfZG9fdGY7Ci0JY2FzZSBJREVfUE1fUkVTVE9SRV9QSU86CS8qIFJl c3VtZSBzdGVwIDEgKHJlc3RvcmUgUElPKSAqLwotCQlpZGVfc2V0X21heF9waW8oZHJpdmUpOwot CQkvKgotCQkgKiBza2lwIElERV9QTV9JRExFIGZvciBBVEFQSSBkZXZpY2VzCi0JCSAqLwotCQlp ZiAoZHJpdmUtPm1lZGlhICE9IGlkZV9kaXNrKQotCQkJcG0tPnBtX3N0ZXAgPSBJREVfUE1fUkVT VE9SRV9ETUE7Ci0JCWVsc2UKLQkJCWlkZV9jb21wbGV0ZV9wb3dlcl9zdGVwKGRyaXZlLCBycSk7 Ci0JCXJldHVybiBpZGVfc3RvcHBlZDsKLQljYXNlIElERV9QTV9JRExFOgkJLyogUmVzdW1lIHN0 ZXAgMiAoaWRsZSkgKi8KLQkJYXJncy0+dGYuY29tbWFuZCA9IEFUQV9DTURfSURMRUlNTUVESUFU RTsKLQkJZ290byBvdXRfZG9fdGY7Ci0JY2FzZSBJREVfUE1fUkVTVE9SRV9ETUE6CS8qIFJlc3Vt ZSBzdGVwIDMgKHJlc3RvcmUgRE1BKSAqLwotCQkvKgotCQkgKiBSaWdodCBub3csIGFsbCB3ZSBk byBpcyBjYWxsIGlkZV9zZXRfZG1hKGRyaXZlKSwKLQkJICogd2UgY291bGQgYmUgc21hcnRlciBh bmQgY2hlY2sgZm9yIGN1cnJlbnQgeGZlcl9zcGVlZAotCQkgKiBpbiBzdHJ1Y3QgZHJpdmUgZXRj Li4uCi0JCSAqLwotCQlpZiAoZHJpdmUtPmh3aWYtPmRtYV9vcHMgPT0gTlVMTCkKLQkJCWJyZWFr OwotCQkvKgotCQkgKiBUT0RPOiByZXNwZWN0IElERV9ERkxBR19VU0lOR19ETUEKLQkJICovCi0J CWlkZV9zZXRfZG1hKGRyaXZlKTsKLQkJYnJlYWs7Ci0JfQotCi0JcG0tPnBtX3N0ZXAgPSBJREVf UE1fQ09NUExFVEVEOwotCXJldHVybiBpZGVfc3RvcHBlZDsKLQotb3V0X2RvX3RmOgotCWFyZ3Mt PnRmX2ZsYWdzCSA9IElERV9URkxBR19URiB8IElERV9URkxBR19ERVZJQ0U7Ci0JYXJncy0+ZGF0 YV9waGFzZSA9IFRBU0tGSUxFX05PX0RBVEE7Ci0JcmV0dXJuIGRvX3J3X3Rhc2tmaWxlKGRyaXZl LCBhcmdzKTsKLX0KLQogLyoqCiAgKglpZGVfZW5kX2RlcXVldWVkX3JlcXVlc3QJLQljb21wbGV0 ZSBhbiBJREUgSS9PCiAgKglAZHJpdmU6IElERSBkZXZpY2UgZm9yIHRoZSBJL08KQEAgLTI0Miw0 OCArMTM4LDEyIEBAIG91dF9kb190ZjoKIGludCBpZGVfZW5kX2RlcXVldWVkX3JlcXVlc3QoaWRl X2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJCQkgICAgIGludCB1cHRvZGF0 ZSwgaW50IG5yX3NlY3RvcnMpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlpbnQgcmV0Owot Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CiAJQlVHX09OKCFibGtfcnFf c3RhcnRlZChycSkpOwotCXJldCA9IF9faWRlX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgdXB0b2Rh dGUsIG5yX3NlY3RvcnMgPDwgOSwgMCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xv Y2ssIGZsYWdzKTsKIAotCXJldHVybiByZXQ7CisJcmV0dXJuIF9faWRlX2VuZF9yZXF1ZXN0KGRy aXZlLCBycSwgdXB0b2RhdGUsIG5yX3NlY3RvcnMgPDwgOSwgMCk7CiB9CiBFWFBPUlRfU1lNQk9M X0dQTChpZGVfZW5kX2RlcXVldWVkX3JlcXVlc3QpOwogCi0KLS8qKgotICoJaWRlX2NvbXBsZXRl X3BtX3JlcXVlc3QgLSBlbmQgdGhlIGN1cnJlbnQgUG93ZXIgTWFuYWdlbWVudCByZXF1ZXN0Ci0g KglAZHJpdmU6IHRhcmdldCBkcml2ZQotICoJQHJxOiByZXF1ZXN0Ci0gKgotICoJVGhpcyBmdW5j dGlvbiBjbGVhbnMgdXAgdGhlIGN1cnJlbnQgUE0gcmVxdWVzdCBhbmQgc3RvcHMgdGhlIHF1ZXVl Ci0gKglpZiBuZWNlc3NhcnkuCi0gKi8KLXN0YXRpYyB2b2lkIGlkZV9jb21wbGV0ZV9wbV9yZXF1 ZXN0IChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkKLXsKLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwotCi0jaWZkZWYgREVCVUdfUE0KLQlwcmludGsoIiVzOiBjb21wbGV0aW5n IFBNIHJlcXVlc3QsICVzXG4iLCBkcml2ZS0+bmFtZSwKLQkgICAgICAgYmxrX3BtX3N1c3BlbmRf cmVxdWVzdChycSkgPyAic3VzcGVuZCIgOiAicmVzdW1lIik7Ci0jZW5kaWYKLQlzcGluX2xvY2tf aXJxc2F2ZSgmaWRlX2xvY2ssIGZsYWdzKTsKLQlpZiAoYmxrX3BtX3N1c3BlbmRfcmVxdWVzdChy cSkpIHsKLQkJYmxrX3N0b3BfcXVldWUoZHJpdmUtPnF1ZXVlKTsKLQl9IGVsc2UgewotCQlkcml2 ZS0+ZGV2X2ZsYWdzICY9IH5JREVfREZMQUdfQkxPQ0tFRDsKLQkJYmxrX3N0YXJ0X3F1ZXVlKGRy aXZlLT5xdWV1ZSk7Ci0JfQotCUhXR1JPVVAoZHJpdmUpLT5ycSA9IE5VTEw7Ci0JaWYgKF9fYmxr X2VuZF9yZXF1ZXN0KHJxLCAwLCAwKSkKLQkJQlVHKCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmaWRlX2xvY2ssIGZsYWdzKTsKLX0KLQogLyoqCiAgKglpZGVfZW5kX2RyaXZlX2NtZAktCWVu ZCBhbiBleHBsaWNpdCBkcml2ZSBjb21tYW5kCiAgKglAZHJpdmU6IGNvbW1hbmQgCkBAIC0zMDAs MTkgKzE2MCwxMiBAQCBzdGF0aWMgdm9pZCBpZGVfY29tcGxldGVfcG1fcmVxdWVzdCAoaWRlX2Ry aXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCiAgCiB2b2lkIGlkZV9lbmRfZHJpdmVf Y21kIChpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IHN0YXQsIHU4IGVycikKIHsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOwotCXN0cnVjdCByZXF1ZXN0ICpycTsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZp ZGVfbG9jaywgZmxhZ3MpOwotCXJxID0gSFdHUk9VUChkcml2ZSktPnJxOwotCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmlkZV9sb2NrLCBmbGFncyk7CisJaWRlX2h3Z3JvdXBfdCAqaHdncm91cCA9 IGRyaXZlLT5od2lmLT5od2dyb3VwOworCXN0cnVjdCByZXF1ZXN0ICpycSA9IGh3Z3JvdXAtPnJx OwogCiAJaWYgKHJxLT5jbWRfdHlwZSA9PSBSRVFfVFlQRV9BVEFfVEFTS0ZJTEUpIHsKIAkJaWRl X3Rhc2tfdCAqdGFzayA9IChpZGVfdGFza190ICopcnEtPnNwZWNpYWw7CiAKLQkJaWYgKHJxLT5l cnJvcnMgPT0gMCkKLQkJCXJxLT5lcnJvcnMgPSAhT0tfU1RBVChzdGF0LCBBVEFfRFJEWSwgQkFE X1NUQVQpOwotCiAJCWlmICh0YXNrKSB7CiAJCQlzdHJ1Y3QgaWRlX3Rhc2tmaWxlICp0ZiA9ICZ0 YXNrLT50ZjsKIApAQCAtMzMzLDE1ICsxODYsMTQgQEAgdm9pZCBpZGVfZW5kX2RyaXZlX2NtZCAo aWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBzdGF0LCB1OCBlcnIpCiAJCXJldHVybjsKIAl9CiAKLQlz cGluX2xvY2tfaXJxc2F2ZSgmaWRlX2xvY2ssIGZsYWdzKTsKLQlIV0dST1VQKGRyaXZlKS0+cnEg PSBOVUxMOworCWh3Z3JvdXAtPnJxID0gTlVMTDsKKwogCXJxLT5lcnJvcnMgPSBlcnI7Ci0JaWYg KHVubGlrZWx5KF9fYmxrX2VuZF9yZXF1ZXN0KHJxLCAocnEtPmVycm9ycyA/IC1FSU8gOiAwKSwK LQkJCQkgICAgICAgYmxrX3JxX2J5dGVzKHJxKSkpKQorCisJaWYgKHVubGlrZWx5KGJsa19lbmRf cmVxdWVzdChycSwgKHJxLT5lcnJvcnMgPyAtRUlPIDogMCksCisJCQkJICAgICBibGtfcnFfYnl0 ZXMocnEpKSkpCiAJCUJVRygpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9sb2NrLCBm bGFncyk7CiB9Ci0KIEVYUE9SVF9TWU1CT0woaWRlX2VuZF9kcml2ZV9jbWQpOwogCiBzdGF0aWMg dm9pZCBpZGVfa2lsbF9ycShpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkK QEAgLTcyMCw0MCArNTcyLDYgQEAgc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVfc3BlY2lhbF9y cShpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkKIAl9CiB9CiAKLXN0YXRp YyB2b2lkIGlkZV9jaGVja19wbV9zdGF0ZShpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1 ZXN0ICpycSkKLXsKLQlzdHJ1Y3QgcmVxdWVzdF9wbV9zdGF0ZSAqcG0gPSBycS0+ZGF0YTsKLQot CWlmIChibGtfcG1fc3VzcGVuZF9yZXF1ZXN0KHJxKSAmJgotCSAgICBwbS0+cG1fc3RlcCA9PSBJ REVfUE1fU1RBUlRfU1VTUEVORCkKLQkJLyogTWFyayBkcml2ZSBibG9ja2VkIHdoZW4gc3RhcnRp bmcgdGhlIHN1c3BlbmQgc2VxdWVuY2UuICovCi0JCWRyaXZlLT5kZXZfZmxhZ3MgfD0gSURFX0RG TEFHX0JMT0NLRUQ7Ci0JZWxzZSBpZiAoYmxrX3BtX3Jlc3VtZV9yZXF1ZXN0KHJxKSAmJgotCQkg cG0tPnBtX3N0ZXAgPT0gSURFX1BNX1NUQVJUX1JFU1VNRSkgewotCQkvKiAKLQkJICogVGhlIGZp cnN0IHRoaW5nIHdlIGRvIG9uIHdha2V1cCBpcyB0byB3YWl0IGZvciBCU1kgYml0IHRvCi0JCSAq IGdvIGF3YXkgKHdpdGggYSBsb29vbmcgdGltZW91dCkgYXMgYSBkcml2ZSBvbiB0aGlzIGh3aWYg bWF5Ci0JCSAqIGp1c3QgYmUgUE9TVGluZyBpdHNlbGYuCi0JCSAqIFdlIGRvIHRoYXQgYmVmb3Jl IGV2ZW4gc2VsZWN0aW5nIGFzIHRoZSAib3RoZXIiIGRldmljZSBvbgotCQkgKiB0aGUgYnVzIG1h eSBiZSBicm9rZW4gZW5vdWdoIHRvIHdhbGsgb24gb3VyIHRvZXMgYXQgdGhpcwotCQkgKiBwb2lu dC4KLQkJICovCi0JCWlkZV9od2lmX3QgKmh3aWYgPSBkcml2ZS0+aHdpZjsKLQkJaW50IHJjOwot I2lmZGVmIERFQlVHX1BNCi0JCXByaW50aygiJXM6IFdha2V1cCByZXF1ZXN0IGluaXRlZCwgd2Fp dGluZyBmb3IgIUJTWS4uLlxuIiwgZHJpdmUtPm5hbWUpOwotI2VuZGlmCi0JCXJjID0gaWRlX3dh aXRfbm90X2J1c3koaHdpZiwgMzUwMDApOwotCQlpZiAocmMpCi0JCQlwcmludGsoS0VSTl9XQVJO SU5HICIlczogYnVzIG5vdCByZWFkeSBvbiB3YWtldXBcbiIsIGRyaXZlLT5uYW1lKTsKLQkJU0VM RUNUX0RSSVZFKGRyaXZlKTsKLQkJaHdpZi0+dHBfb3BzLT5zZXRfaXJxKGh3aWYsIDEpOwotCQly YyA9IGlkZV93YWl0X25vdF9idXN5KGh3aWYsIDEwMDAwMCk7Ci0JCWlmIChyYykKLQkJCXByaW50 ayhLRVJOX1dBUk5JTkcgIiVzOiBkcml2ZSBub3QgcmVhZHkgb24gd2FrZXVwXG4iLCBkcml2ZS0+ bmFtZSk7Ci0JfQotfQotCiAvKioKICAqCXN0YXJ0X3JlcXVlc3QJLQlzdGFydCBvZiBJL08gYW5k IGNvbW1hbmQgaXNzdWluZyBmb3IgSURFCiAgKgpAQCAtOTI3LDcgKzc0NSw3IEBAIHJlcGVhdDoK IAogLyoKICAqIElzc3VlIGEgbmV3IHJlcXVlc3QgdG8gYSBkcml2ZSBmcm9tIGh3Z3JvdXAKLSAq IENhbGxlciBtdXN0IGhhdmUgYWxyZWFkeSBkb25lIHNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9j aywgLi4pOworICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGRvbmUgc3Bpbl9sb2NrX2lycXNh dmUoJmh3Z3JvdXAtPmxvY2ssIC4uKTsKICAqCiAgKiBBIGh3Z3JvdXAgaXMgYSBzZXJpYWxpemVk IGdyb3VwIG9mIElERSBpbnRlcmZhY2VzLiAgVXN1YWxseSB0aGVyZSBpcwogICogZXhhY3RseSBv bmUgaHdpZiAoaW50ZXJmYWNlKSBwZXIgaHdncm91cCwgYnV0IGJ1Z2d5IGNvbnRyb2xsZXJzIChl Zy4gQ01ENjQwKQpAQCAtOTM5LDcgKzc1Nyw3IEBAIHJlcGVhdDoKICAqIHBvc3NpYmx5IGFsb25n IHdpdGggbWFueSBvdGhlciBkZXZpY2VzLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGNvbW1vbiBpbgog ICogUENJLWJhc2VkIHN5c3RlbXMgd2l0aCBvZmYtYm9hcmQgSURFIGNvbnRyb2xsZXIgY2FyZHMu CiAgKgotICogVGhlIElERSBkcml2ZXIgdXNlcyB0aGUgc2luZ2xlIGdsb2JhbCBpZGVfbG9jayBz cGlubG9jayB0byBwcm90ZWN0CisgKiBUaGUgSURFIGRyaXZlciB1c2VzIGEgcGVyLWh3Z3JvdXAg c3BpbmxvY2sgdG8gcHJvdGVjdAogICogYWNjZXNzIHRvIHRoZSByZXF1ZXN0IHF1ZXVlcywgYW5k IHRvIHByb3RlY3QgdGhlIGh3Z3JvdXAtPmJ1c3kgZmxhZy4KICAqCiAgKiBUaGUgZmlyc3QgdGhy ZWFkIGludG8gdGhlIGRyaXZlciBmb3IgYSBwYXJ0aWN1bGFyIGh3Z3JvdXAgc2V0cyB0aGUKQEAg LTk1NSw3ICs3NzMsNyBAQCByZXBlYXQ6CiAgKiB3aWxsIHN0YXJ0IHRoZSBuZXh0IHJlcXVlc3Qg ZnJvbSB0aGUgcXVldWUuICBJZiBubyBtb3JlIHdvcmsgcmVtYWlucywKICAqIHRoZSBkcml2ZXIg d2lsbCBjbGVhciB0aGUgaHdncm91cC0+YnVzeSBmbGFnIGFuZCBleGl0LgogICoKLSAqIFRoZSBp ZGVfbG9jayAoc3BpbmxvY2spIGlzIHVzZWQgdG8gcHJvdGVjdCBhbGwgYWNjZXNzIHRvIHRoZQor ICogVGhlIHBlci1od2dyb3VwIHNwaW5sb2NrIGlzIHVzZWQgdG8gcHJvdGVjdCBhbGwgYWNjZXNz IHRvIHRoZQogICogaHdncm91cC0+YnVzeSBmbGFnLCBidXQgaXMgb3RoZXJ3aXNlIG5vdCBuZWVk ZWQgZm9yIG1vc3QgcHJvY2Vzc2luZyBpbgogICogdGhlIGRyaXZlci4gIFRoaXMgbWFrZXMgdGhl IGRyaXZlciBtdWNoIG1vcmUgZnJpZW5kbGllciB0byBzaGFyZWQgSVJRcwogICogdGhhbiBwcmV2 aW91cyBkZXNpZ25zLCB3aGlsZSByZW1haW5pbmcgMTAwJSAoPykgU01QIHNhZmUgYW5kIGNhcGFi bGUuCkBAIC05NjgsNyArNzg2LDcgQEAgc3RhdGljIHZvaWQgaWRlX2RvX3JlcXVlc3QgKGlkZV9o d2dyb3VwX3QgKmh3Z3JvdXAsIGludCBtYXNrZWRfaXJxKQogCWlkZV9zdGFydHN0b3BfdAlzdGFy dHN0b3A7CiAJaW50ICAgICAgICAgICAgIGxvb3BzID0gMDsKIAotCS8qIGNhbGxlciBtdXN0IG93 biBpZGVfbG9jayAqLworCS8qIGNhbGxlciBtdXN0IG93biBod2dyb3VwLT5sb2NrICovCiAJQlVH X09OKCFpcnFzX2Rpc2FibGVkKCkpOwogCiAJd2hpbGUgKCFod2dyb3VwLT5idXN5KSB7CkBAIC0x MDIzLDEyICs4NDEsMTIgQEAgc3RhdGljIHZvaWQgaWRlX2RvX3JlcXVlc3QgKGlkZV9od2dyb3Vw X3QgKmh3Z3JvdXAsIGludCBtYXNrZWRfaXJxKQogCQl9CiAJYWdhaW46CiAJCWh3aWYgPSBIV0lG KGRyaXZlKTsKLQkJaWYgKGh3Z3JvdXAtPmh3aWYtPnNoYXJpbmdfaXJxICYmIGh3aWYgIT0gaHdn cm91cC0+aHdpZikgeworCQlpZiAoaHdpZiAhPSBod2dyb3VwLT5od2lmKSB7CiAJCQkvKgogCQkJ ICogc2V0IG5JRU4gZm9yIHByZXZpb3VzIGh3aWYsIGRyaXZlcyBpbiB0aGUKIAkJCSAqIHF1aXJr X2xpc3QgbWF5IG5vdCBsaWtlIGludHIgc2V0dXBzL2NsZWFudXBzCiAJCQkgKi8KLQkJCWlmIChk cml2ZS0+cXVpcmtfbGlzdCAhPSAxKQorCQkJaWYgKGRyaXZlLT5xdWlya19saXN0ID09IDApCiAJ CQkJaHdpZi0+dHBfb3BzLT5zZXRfaXJxKGh3aWYsIDApOwogCQl9CiAJCWh3Z3JvdXAtPmh3aWYg PSBod2lmOwpAQCAtMTAzNiwxMSArODU0LDYgQEAgc3RhdGljIHZvaWQgaWRlX2RvX3JlcXVlc3Qg KGlkZV9od2dyb3VwX3QgKmh3Z3JvdXAsIGludCBtYXNrZWRfaXJxKQogCQlkcml2ZS0+ZGV2X2Zs YWdzICY9IH4oSURFX0RGTEFHX1NMRUVQSU5HIHwgSURFX0RGTEFHX1BBUktFRCk7CiAJCWRyaXZl LT5zZXJ2aWNlX3N0YXJ0ID0gamlmZmllczsKIAotCQlpZiAoYmxrX3F1ZXVlX3BsdWdnZWQoZHJp dmUtPnF1ZXVlKSkgewotCQkJcHJpbnRrKEtFUk5fRVJSICJpZGU6IGh1aD8gcXVldWUgd2FzIHBs dWdnZWQhXG4iKTsKLQkJCWJyZWFrOwotCQl9Ci0KIAkJLyoKIAkJICogd2Uga25vdyB0aGF0IHRo ZSBxdWV1ZSBpc24ndCBlbXB0eSwgYnV0IHRoaXMgY2FuIGhhcHBlbgogCQkgKiBpZiB0aGUgcS0+ cHJlcF9ycV9mbigpIGRlY2lkZXMgdG8ga2lsbCBhIHJlcXVlc3QKQEAgLTEwOTAsMTEgKzkwMywx MSBAQCBzdGF0aWMgdm9pZCBpZGVfZG9fcmVxdWVzdCAoaWRlX2h3Z3JvdXBfdCAqaHdncm91cCwg aW50IG1hc2tlZF9pcnEpCiAJCSAqLwogCQlpZiAobWFza2VkX2lycSAhPSBJREVfTk9fSVJRICYm IGh3aWYtPmlycSAhPSBtYXNrZWRfaXJxKQogCQkJZGlzYWJsZV9pcnFfbm9zeW5jKGh3aWYtPmly cSk7Ci0JCXNwaW5fdW5sb2NrKCZpZGVfbG9jayk7CisJCXNwaW5fdW5sb2NrKCZod2dyb3VwLT5s b2NrKTsKIAkJbG9jYWxfaXJxX2VuYWJsZV9pbl9oYXJkaXJxKCk7CiAJCQkvKiBhbGxvdyBvdGhl ciBJUlFzIHdoaWxlIHdlIHN0YXJ0IHRoaXMgcmVxdWVzdCAqLwogCQlzdGFydHN0b3AgPSBzdGFy dF9yZXF1ZXN0KGRyaXZlLCBycSk7Ci0JCXNwaW5fbG9ja19pcnEoJmlkZV9sb2NrKTsKKwkJc3Bp bl9sb2NrX2lycSgmaHdncm91cC0+bG9jayk7CiAJCWlmIChtYXNrZWRfaXJxICE9IElERV9OT19J UlEgJiYgaHdpZi0+aXJxICE9IG1hc2tlZF9pcnEpCiAJCQllbmFibGVfaXJxKGh3aWYtPmlycSk7 CiAJCWlmIChzdGFydHN0b3AgPT0gaWRlX3N0b3BwZWQpCkBAIC0xMTkyLDcgKzEwMDUsNyBAQCB2 b2lkIGlkZV90aW1lcl9leHBpcnkgKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAl1bnNpZ25lZCBsb25n CWZsYWdzOwogCXVuc2lnbmVkIGxvbmcJd2FpdCA9IC0xOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUo JmlkZV9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmh3Z3JvdXAtPmxvY2ssIGZs YWdzKTsKIAogCWlmICgoKGhhbmRsZXIgPSBod2dyb3VwLT5oYW5kbGVyKSA9PSBOVUxMKSB8fAog CSAgICAoaHdncm91cC0+cmVxX2dlbiAhPSBod2dyb3VwLT5yZXFfZ2VuX3RpbWVyKSkgewpAQCAt MTIyNSw3ICsxMDM4LDcgQEAgdm9pZCBpZGVfdGltZXJfZXhwaXJ5ICh1bnNpZ25lZCBsb25nIGRh dGEpCiAJCQkJCWh3Z3JvdXAtPnRpbWVyLmV4cGlyZXMgID0gamlmZmllcyArIHdhaXQ7CiAJCQkJ CWh3Z3JvdXAtPnJlcV9nZW5fdGltZXIgPSBod2dyb3VwLT5yZXFfZ2VuOwogCQkJCQlhZGRfdGlt ZXIoJmh3Z3JvdXAtPnRpbWVyKTsKLQkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xv Y2ssIGZsYWdzKTsKKwkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHdncm91cC0+bG9jaywg ZmxhZ3MpOwogCQkJCQlyZXR1cm47CiAJCQkJfQogCQkJfQpAQCAtMTIzNSw3ICsxMDQ4LDcgQEAg dm9pZCBpZGVfdGltZXJfZXhwaXJ5ICh1bnNpZ25lZCBsb25nIGRhdGEpCiAJCQkgKiB0aGUgaGFu ZGxlcigpIGZ1bmN0aW9uLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvCiAJCQkgKiBnbG9iYWxseSBt YXNrIHRoZSBzcGVjaWZpYyBJUlE6CiAJCQkgKi8KLQkJCXNwaW5fdW5sb2NrKCZpZGVfbG9jayk7 CisJCQlzcGluX3VubG9jaygmaHdncm91cC0+bG9jayk7CiAJCQlod2lmICA9IEhXSUYoZHJpdmUp OwogCQkJLyogZGlzYWJsZV9pcnFfbm9zeW5jID8/ICovCiAJCQlkaXNhYmxlX2lycShod2lmLT5p cnEpOwpAQCAtMTI1OSwxNCArMTA3MiwxNCBAQCB2b2lkIGlkZV90aW1lcl9leHBpcnkgKHVuc2ln bmVkIGxvbmcgZGF0YSkKIAkJCQkJCSAgaHdpZi0+dHBfb3BzLT5yZWFkX3N0YXR1cyhod2lmKSk7 CiAJCQl9CiAJCQlkcml2ZS0+c2VydmljZV90aW1lID0gamlmZmllcyAtIGRyaXZlLT5zZXJ2aWNl X3N0YXJ0OwotCQkJc3Bpbl9sb2NrX2lycSgmaWRlX2xvY2spOworCQkJc3Bpbl9sb2NrX2lycSgm aHdncm91cC0+bG9jayk7CiAJCQllbmFibGVfaXJxKGh3aWYtPmlycSk7CiAJCQlpZiAoc3RhcnRz dG9wID09IGlkZV9zdG9wcGVkKQogCQkJCWh3Z3JvdXAtPmJ1c3kgPSAwOwogCQl9CiAJfQogCWlk ZV9kb19yZXF1ZXN0KGh3Z3JvdXAsIElERV9OT19JUlEpOwotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmlkZV9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHdncm91cC0+ bG9jaywgZmxhZ3MpOwogfQogCiAvKioKQEAgLTEzNTksMTggKzExNzIsMTYgQEAgaXJxcmV0dXJu X3QgaWRlX2ludHIgKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIHsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwogCWlkZV9od2dyb3VwX3QgKmh3Z3JvdXAgPSAoaWRlX2h3Z3JvdXBfdCAqKWRldl9pZDsK LQlpZGVfaHdpZl90ICpod2lmOworCWlkZV9od2lmX3QgKmh3aWYgPSBod2dyb3VwLT5od2lmOwog CWlkZV9kcml2ZV90ICpkcml2ZTsKIAlpZGVfaGFuZGxlcl90ICpoYW5kbGVyOwogCWlkZV9zdGFy dHN0b3BfdCBzdGFydHN0b3A7CisJaXJxcmV0dXJuX3QgaXJxX3JldCA9IElSUV9OT05FOwogCi0J c3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7Ci0JaHdpZiA9IGh3Z3JvdXAtPmh3 aWY7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmh3Z3JvdXAtPmxvY2ssIGZsYWdzKTsKIAotCWlmICgh aWRlX2Fja19pbnRyKGh3aWYpKSB7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9sb2Nr LCBmbGFncyk7Ci0JCXJldHVybiBJUlFfTk9ORTsKLQl9CisJaWYgKCFpZGVfYWNrX2ludHIoaHdp ZikpCisJCWdvdG8gb3V0OwogCiAJaWYgKChoYW5kbGVyID0gaHdncm91cC0+aGFuZGxlcikgPT0g TlVMTCB8fCBod2dyb3VwLT5wb2xsaW5nKSB7CiAJCS8qCkBAIC0xNDA2LDkgKzEyMTcsOSBAQCBp cnFyZXR1cm5fdCBpZGVfaW50ciAoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCQkJKHZvaWQpaHdp Zi0+dHBfb3BzLT5yZWFkX3N0YXR1cyhod2lmKTsKICNlbmRpZiAvKiBDT05GSUdfQkxLX0RFVl9J REVQQ0kgKi8KIAkJfQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpZGVfbG9jaywgZmxhZ3Mp OwotCQlyZXR1cm4gSVJRX05PTkU7CisJCWdvdG8gb3V0OwogCX0KKwogCWRyaXZlID0gaHdncm91 cC0+ZHJpdmU7CiAJaWYgKCFkcml2ZSkgewogCQkvKgpAQCAtMTQxNywxMCArMTIyOCwxMCBAQCBp cnFyZXR1cm5fdCBpZGVfaW50ciAoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCQkgKgogCQkgKiBb Tm90ZSAtIHRoaXMgY2FuIG9jY3VyIGlmIHRoZSBkcml2ZSBpcyBob3QgdW5wbHVnZ2VkXQogCQkg Ki8KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKLQkJcmV0dXJu IElSUV9IQU5ETEVEOworCQlnb3RvIG91dF9oYW5kbGVkOwogCX0KLQlpZiAoIWRyaXZlX2lzX3Jl YWR5KGRyaXZlKSkgeworCisJaWYgKCFkcml2ZV9pc19yZWFkeShkcml2ZSkpCiAJCS8qCiAJCSAq IFRoaXMgaGFwcGVucyByZWd1bGFybHkgd2hlbiB3ZSBzaGFyZSBhIFBDSSBJUlEgd2l0aAogCQkg KiBhbm90aGVyIGRldmljZS4gIFVuZm9ydHVuYXRlbHksIGl0IGNhbiBhbHNvIGhhcHBlbgpAQCAt MTQyOCw5ICsxMjM5LDggQEAgaXJxcmV0dXJuX3QgaWRlX2ludHIgKGludCBpcnEsIHZvaWQgKmRl dl9pZCkKIAkJICogdGhlaXIgc3RhdHVzIHJlZ2lzdGVyIGlzIHVwIHRvIGRhdGUuICBIb3BlZnVs bHkgd2UgaGF2ZQogCQkgKiBlbm91Z2ggYWR2YW5jZSBvdmVyaGVhZCB0aGF0IHRoZSBsYXR0ZXIg aXNuJ3QgYSBwcm9ibGVtLgogCQkgKi8KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xv Y2ssIGZsYWdzKTsKLQkJcmV0dXJuIElSUV9OT05FOwotCX0KKwkJZ290byBvdXQ7CisKIAlpZiAo IWh3Z3JvdXAtPmJ1c3kpIHsKIAkJaHdncm91cC0+YnVzeSA9IDE7CS8qIHBhcmFub2lhICovCiAJ CXByaW50ayhLRVJOX0VSUiAiJXM6IGlkZV9pbnRyOiBod2dyb3VwLT5idXN5IHdhcyAwID8/XG4i LCBkcml2ZS0+bmFtZSk7CkBAIC0xNDM4LDcgKzEyNDgsNyBAQCBpcnFyZXR1cm5fdCBpZGVfaW50 ciAoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCWh3Z3JvdXAtPmhhbmRsZXIgPSBOVUxMOwogCWh3 Z3JvdXAtPnJlcV9nZW4rKzsKIAlkZWxfdGltZXIoJmh3Z3JvdXAtPnRpbWVyKTsKLQlzcGluX3Vu bG9jaygmaWRlX2xvY2spOworCXNwaW5fdW5sb2NrKCZod2dyb3VwLT5sb2NrKTsKIAogCWlmICho d2lmLT5wb3J0X29wcyAmJiBod2lmLT5wb3J0X29wcy0+Y2xlYXJfaXJxKQogCQlod2lmLT5wb3J0 X29wcy0+Y2xlYXJfaXJxKGRyaXZlKTsKQEAgLTE0NDksNyArMTI1OSw3IEBAIGlycXJldHVybl90 IGlkZV9pbnRyIChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJLyogc2VydmljZSB0aGlzIGludGVy cnVwdCwgbWF5IHNldCBoYW5kbGVyIGZvciBuZXh0IGludGVycnVwdCAqLwogCXN0YXJ0c3RvcCA9 IGhhbmRsZXIoZHJpdmUpOwogCi0Jc3Bpbl9sb2NrX2lycSgmaWRlX2xvY2spOworCXNwaW5fbG9j a19pcnEoJmh3Z3JvdXAtPmxvY2spOwogCS8qCiAJICogTm90ZSB0aGF0IGhhbmRsZXIoKSBtYXkg aGF2ZSBzZXQgdGhpbmdzIHVwIGZvciBhbm90aGVyCiAJICogaW50ZXJydXB0IHRvIG9jY3VyIHNv b24sIGJ1dCBpdCBjYW5ub3QgaGFwcGVuIHVudGlsCkBAIC0xNDY3LDggKzEyNzcsMTEgQEAgaXJx cmV0dXJuX3QgaWRlX2ludHIgKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAkJCQkib24gZXhpdFxu IiwgZHJpdmUtPm5hbWUpOwogCQl9CiAJfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9s b2NrLCBmbGFncyk7Ci0JcmV0dXJuIElSUV9IQU5ETEVEOworb3V0X2hhbmRsZWQ6CisJaXJxX3Jl dCA9IElSUV9IQU5ETEVEOworb3V0OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3Z3JvdXAt PmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gaXJxX3JldDsKIH0KIAogLyoqCkBAIC0xNDg4LDE2ICsx MzAxLDE3IEBAIGlycXJldHVybl90IGlkZV9pbnRyIChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAK IHZvaWQgaWRlX2RvX2RyaXZlX2NtZChpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0 ICpycSkKIHsKKwlpZGVfaHdncm91cF90ICpod2dyb3VwID0gZHJpdmUtPmh3aWYtPmh3Z3JvdXA7 CisJc3RydWN0IHJlcXVlc3RfcXVldWUgKnEgPSBkcml2ZS0+cXVldWU7CiAJdW5zaWduZWQgbG9u ZyBmbGFnczsKLQlpZGVfaHdncm91cF90ICpod2dyb3VwID0gSFdHUk9VUChkcml2ZSk7CiAKLQlz cGluX2xvY2tfaXJxc2F2ZSgmaWRlX2xvY2ssIGZsYWdzKTsKIAlod2dyb3VwLT5ycSA9IE5VTEw7 Ci0JX19lbHZfYWRkX3JlcXVlc3QoZHJpdmUtPnF1ZXVlLCBycSwgRUxFVkFUT1JfSU5TRVJUX0ZS T05ULCAwKTsKLQlibGtfc3RhcnRfcXVldWVpbmcoZHJpdmUtPnF1ZXVlKTsKLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZpZGVfbG9jaywgZmxhZ3MpOwotfQogCisJc3Bpbl9sb2NrX2lycXNhdmUo cS0+cXVldWVfbG9jaywgZmxhZ3MpOworCV9fZWx2X2FkZF9yZXF1ZXN0KHEsIHJxLCBFTEVWQVRP Ul9JTlNFUlRfRlJPTlQsIDApOworCWJsa19zdGFydF9xdWV1ZWluZyhxKTsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKHEtPnF1ZXVlX2xvY2ssIGZsYWdzKTsKK30KIEVYUE9SVF9TWU1CT0woaWRl X2RvX2RyaXZlX2NtZCk7CiAKIHZvaWQgaWRlX3BrdGNtZF90Zl9sb2FkKGlkZV9kcml2ZV90ICpk cml2ZSwgdTMyIHRmX2ZsYWdzLCB1MTYgYmNvdW50LCB1OCBkbWEpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2lkZS9pZGUtaW9jdGxzLmMgYi9kcml2ZXJzL2lkZS9pZGUtaW9jdGxzLmMKaW5kZXggZmNk ZTE2Yi4uMjgyMzJjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWlvY3Rscy5jCisrKyBi L2RyaXZlcnMvaWRlL2lkZS1pb2N0bHMuYwpAQCAtMTksNyArMTksNiBAQCBpbnQgaWRlX3NldHRp bmdfaW9jdGwoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAog CQkgICAgICBjb25zdCBzdHJ1Y3QgaWRlX2lvY3RsX2RldnNldCAqcykKIHsKIAljb25zdCBzdHJ1 Y3QgaWRlX2RldnNldCAqZHM7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgZXJyID0gLUVP UE5PVFNVUFA7CiAKIAlmb3IgKDsgKGRzID0gcy0+c2V0dGluZyk7IHMrKykgewpAQCAtMzMsOSAr MzIsNyBAQCBpbnQgaWRlX3NldHRpbmdfaW9jdGwoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3Qg YmxvY2tfZGV2aWNlICpiZGV2LAogCiByZWFkX3ZhbDoKIAltdXRleF9sb2NrKCZpZGVfc2V0dGlu Z19tdHgpOwotCXNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9jaywgZmxhZ3MpOwogCWVyciA9IGRz LT5nZXQoZHJpdmUpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9sb2NrLCBmbGFncyk7 CiAJbXV0ZXhfdW5sb2NrKCZpZGVfc2V0dGluZ19tdHgpOwogCXJldHVybiBlcnIgPj0gMCA/IHB1 dF91c2VyKGVyciwgKGxvbmcgX191c2VyICopYXJnKSA6IGVycjsKIApAQCAtOTgsNyArOTUsNyBA QCBzdGF0aWMgaW50IGlkZV9zZXRfbmljZV9pb2N0bChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2ln bmVkIGxvbmcgYXJnKQogCQlyZXR1cm4gLUVQRVJNOwogCiAJaWYgKCgoYXJnID4+IElERV9OSUNF X0RTQ19PVkVSTEFQKSAmIDEpICYmCi0JICAgIChkcml2ZS0+bWVkaWEgPT0gaWRlX2Rpc2sgfHwg ZHJpdmUtPm1lZGlhID09IGlkZV9mbG9wcHkgfHwKKwkgICAgKGRyaXZlLT5tZWRpYSAhPSBpZGVf dGFwZSB8fAogCSAgICAgKGRyaXZlLT5kZXZfZmxhZ3MgJiBJREVfREZMQUdfU0NTSSkpKQogCQly ZXR1cm4gLUVQRVJNOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtaW9wcy5jIGIvZHJp dmVycy9pZGUvaWRlLWlvcHMuYwppbmRleCBjNDFjM2I5Li5hZDhiZDY1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2lkZS9pZGUtaW9wcy5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1pb3BzLmMKQEAgLTgz NSwxMCArODM1LDEyIEBAIHN0YXRpYyB2b2lkIF9faWRlX3NldF9oYW5kbGVyIChpZGVfZHJpdmVf dCAqZHJpdmUsIGlkZV9oYW5kbGVyX3QgKmhhbmRsZXIsCiB2b2lkIGlkZV9zZXRfaGFuZGxlciAo aWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfaGFuZGxlcl90ICpoYW5kbGVyLAogCQkgICAgICB1bnNp Z25lZCBpbnQgdGltZW91dCwgaWRlX2V4cGlyeV90ICpleHBpcnkpCiB7CisJaWRlX2h3Z3JvdXBf dCAqaHdncm91cCA9IGRyaXZlLT5od2lmLT5od2dyb3VwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmaHdncm91cC0+bG9jaywgZmxhZ3MpOwogCV9faWRlX3NldF9oYW5kbGVyKGRyaXZlLCBo YW5kbGVyLCB0aW1lb3V0LCBleHBpcnkpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlkZV9s b2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHdncm91cC0+bG9jaywgZmxh Z3MpOwogfQogCiBFWFBPUlRfU1lNQk9MKGlkZV9zZXRfaGFuZGxlcik7CkBAIC04NjAsMTAgKzg2 MiwxMSBAQCBFWFBPUlRfU1lNQk9MKGlkZV9zZXRfaGFuZGxlcik7CiB2b2lkIGlkZV9leGVjdXRl X2NvbW1hbmQoaWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBjbWQsIGlkZV9oYW5kbGVyX3QgKmhhbmRs ZXIsCiAJCQkgdW5zaWduZWQgdGltZW91dCwgaWRlX2V4cGlyeV90ICpleHBpcnkpCiB7CisJaWRl X2h3aWZfdCAqaHdpZiA9IGRyaXZlLT5od2lmOworCWlkZV9od2dyb3VwX3QgKmh3Z3JvdXAgPSBo d2lmLT5od2dyb3VwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaWRlX2h3aWZfdCAqaHdpZiA9 IEhXSUYoZHJpdmUpOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CisJ c3Bpbl9sb2NrX2lycXNhdmUoJmh3Z3JvdXAtPmxvY2ssIGZsYWdzKTsKIAlfX2lkZV9zZXRfaGFu ZGxlcihkcml2ZSwgaGFuZGxlciwgdGltZW91dCwgZXhwaXJ5KTsKIAlod2lmLT50cF9vcHMtPmV4 ZWNfY29tbWFuZChod2lmLCBjbWQpOwogCS8qCkBAIC04NzMsMTkgKzg3NiwyMCBAQCB2b2lkIGlk ZV9leGVjdXRlX2NvbW1hbmQoaWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBjbWQsIGlkZV9oYW5kbGVy X3QgKmhhbmRsZXIsCiAJICogRklYTUU6IHdlIGNvdWxkIHNraXAgdGhpcyBkZWxheSB3aXRoIGNh cmUgb24gbm9uIHNoYXJlZCBkZXZpY2VzCiAJICovCiAJbmRlbGF5KDQwMCk7Ci0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZod2dyb3VwLT5sb2NrLCBmbGFncyk7CiB9CiBFWFBPUlRfU1lNQk9MKGlkZV9leGVjdXRlX2Nv bW1hbmQpOwogCiB2b2lkIGlkZV9leGVjdXRlX3BrdF9jbWQoaWRlX2RyaXZlX3QgKmRyaXZlKQog ewogCWlkZV9od2lmX3QgKmh3aWYgPSBkcml2ZS0+aHdpZjsKKwlpZGVfaHdncm91cF90ICpod2dy b3VwID0gaHdpZi0+aHdncm91cDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmh3Z3JvdXAt PmxvY2ssIGZsYWdzKTsKIAlod2lmLT50cF9vcHMtPmV4ZWNfY29tbWFuZChod2lmLCBBVEFfQ01E X1BBQ0tFVCk7CiAJbmRlbGF5KDQwMCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xv Y2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZod2dyb3VwLT5sb2NrLCBmbGFn cyk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpZGVfZXhlY3V0ZV9wa3RfY21kKTsKIApAQCAtMTA3 NiwyMiArMTA4MCwxNiBAQCBzdGF0aWMgdm9pZCBwcmVfcmVzZXQoaWRlX2RyaXZlX3QgKmRyaXZl KQogICovCiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGRvX3Jlc2V0MSAoaWRlX2RyaXZlX3QgKmRy aXZlLCBpbnQgZG9fbm90X3RyeV9hdGFwaSkKIHsKLQl1bnNpZ25lZCBpbnQgdW5pdDsKLQl1bnNp Z25lZCBsb25nIGZsYWdzLCB0aW1lb3V0OwotCWlkZV9od2lmX3QgKmh3aWY7Ci0JaWRlX2h3Z3Jv dXBfdCAqaHdncm91cDsKLQlzdHJ1Y3QgaWRlX2lvX3BvcnRzICppb19wb3J0czsKLQljb25zdCBz dHJ1Y3QgaWRlX3RwX29wcyAqdHBfb3BzOworCWlkZV9od2lmX3QgKmh3aWYgPSBkcml2ZS0+aHdp ZjsKKwlpZGVfaHdncm91cF90ICpod2dyb3VwID0gaHdpZi0+aHdncm91cDsKKwlzdHJ1Y3QgaWRl X2lvX3BvcnRzICppb19wb3J0cyA9ICZod2lmLT5pb19wb3J0czsKKwljb25zdCBzdHJ1Y3QgaWRl X3RwX29wcyAqdHBfb3BzID0gaHdpZi0+dHBfb3BzOwogCWNvbnN0IHN0cnVjdCBpZGVfcG9ydF9v cHMgKnBvcnRfb3BzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIHRpbWVvdXQ7CisJdW5zaWduZWQg aW50IHVuaXQ7CiAJREVGSU5FX1dBSVQod2FpdCk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmaWRl X2xvY2ssIGZsYWdzKTsKLQlod2lmID0gSFdJRihkcml2ZSk7Ci0JaHdncm91cCA9IEhXR1JPVVAo ZHJpdmUpOwotCi0JaW9fcG9ydHMgPSAmaHdpZi0+aW9fcG9ydHM7Ci0KLQl0cF9vcHMgPSBod2lm LT50cF9vcHM7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmh3Z3JvdXAtPmxvY2ssIGZsYWdzKTsKIAog CS8qIFdlIG11c3Qgbm90IHJlc2V0IHdpdGggcnVubmluZyBoYW5kbGVycyAqLwogCUJVR19PTiho d2dyb3VwLT5oYW5kbGVyICE9IE5VTEwpOwpAQCAtMTEwNiw3ICsxMTA0LDcgQEAgc3RhdGljIGlk ZV9zdGFydHN0b3BfdCBkb19yZXNldDEgKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGRvX25vdF90 cnlfYXRhcGkpCiAJCWh3Z3JvdXAtPnBvbGxfdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNU Q0FTRTsKIAkJaHdncm91cC0+cG9sbGluZyA9IDE7CiAJCV9faWRlX3NldF9oYW5kbGVyKGRyaXZl LCAmYXRhcGlfcmVzZXRfcG9sbGZ1bmMsIEhaLzIwLCBOVUxMKTsKLQkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHdn cm91cC0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7CiAJfQogCkBAIC0xMTI5 LDkgKzExMjcsOSBAQCBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGRvX3Jlc2V0MSAoaWRlX2RyaXZl X3QgKmRyaXZlLCBpbnQgZG9fbm90X3RyeV9hdGFwaSkKIAkJaWYgKHRpbWVfYmVmb3JlX2VxKHRp bWVvdXQsIG5vdykpCiAJCQlicmVhazsKIAotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpZGVf bG9jaywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZod2dyb3VwLT5sb2NrLCBm bGFncyk7CiAJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZSh0aW1l b3V0IC0gbm93KTsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CisJCXNw aW5fbG9ja19pcnFzYXZlKCZod2dyb3VwLT5sb2NrLCBmbGFncyk7CiAJfSB3aGlsZSAodGltZW91 dCk7CiAJZmluaXNoX3dhaXQoJmlkZV9wYXJrX3dxLCAmd2FpdCk7CiAKQEAgLTExNDMsNyArMTE0 MSw3IEBAIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgZG9fcmVzZXQxIChpZGVfZHJpdmVfdCAqZHJp dmUsIGludCBkb19ub3RfdHJ5X2F0YXBpKQogCQlwcmVfcmVzZXQoJmh3aWYtPmRyaXZlc1t1bml0 XSk7CiAKIAlpZiAoaW9fcG9ydHMtPmN0bF9hZGRyID09IDApIHsKLQkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHdn cm91cC0+bG9jaywgZmxhZ3MpOwogCQlpZGVfY29tcGxldGVfZHJpdmVfcmVzZXQoZHJpdmUsIC1F TlhJTyk7CiAJCXJldHVybiBpZGVfc3RvcHBlZDsKIAl9CkBAIC0xMTc5LDcgKzExNzcsNyBAQCBz dGF0aWMgaWRlX3N0YXJ0c3RvcF90IGRvX3Jlc2V0MSAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQg ZG9fbm90X3RyeV9hdGFwaSkKIAlpZiAocG9ydF9vcHMgJiYgcG9ydF9vcHMtPnJlc2V0cHJvYykK IAkJcG9ydF9vcHMtPnJlc2V0cHJvYyhkcml2ZSk7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZpZGVfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3Z3JvdXAtPmxv Y2ssIGZsYWdzKTsKIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvaWRlL2lkZS1sZWdhY3kuYyBiL2RyaXZlcnMvaWRlL2lkZS1sZWdhY3kuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzVkY2JmCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9pZGUvaWRlLWxlZ2FjeS5jCkBAIC0wLDAgKzEsNTggQEAKKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pZGUuaD4KKworc3RhdGljIHZvaWQgaWRlX2xlZ2Fj eV9pbml0X29uZShod19yZWdzX3QgKipod3MsIGh3X3JlZ3NfdCAqaHcsCisJCQkJdTggcG9ydF9u bywgY29uc3Qgc3RydWN0IGlkZV9wb3J0X2luZm8gKmQsCisJCQkJdW5zaWduZWQgbG9uZyBjb25m aWcpCit7CisJdW5zaWduZWQgbG9uZyBiYXNlLCBjdGw7CisJaW50IGlycTsKKworCWlmIChwb3J0 X25vID09IDApIHsKKwkJYmFzZSA9IDB4MWYwOworCQljdGwgID0gMHgzZjY7CisJCWlycSAgPSAx NDsKKwl9IGVsc2UgeworCQliYXNlID0gMHgxNzA7CisJCWN0bCAgPSAweDM3NjsKKwkJaXJxICA9 IDE1OworCX0KKworCWlmICghcmVxdWVzdF9yZWdpb24oYmFzZSwgOCwgZC0+bmFtZSkpIHsKKwkJ cHJpbnRrKEtFUk5fRVJSICIlczogSS9PIHJlc291cmNlIDB4JWxYLTB4JWxYIG5vdCBmcmVlLlxu IiwKKwkJCQlkLT5uYW1lLCBiYXNlLCBiYXNlICsgNyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAo IXJlcXVlc3RfcmVnaW9uKGN0bCwgMSwgZC0+bmFtZSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICIl czogSS9PIHJlc291cmNlIDB4JWxYIG5vdCBmcmVlLlxuIiwKKwkJCQlkLT5uYW1lLCBjdGwpOwor CQlyZWxlYXNlX3JlZ2lvbihiYXNlLCA4KTsKKwkJcmV0dXJuOworCX0KKworCWlkZV9zdGRfaW5p dF9wb3J0cyhodywgYmFzZSwgY3RsKTsKKwlody0+aXJxID0gaXJxOworCWh3LT5jaGlwc2V0ID0g ZC0+Y2hpcHNldDsKKwlody0+Y29uZmlnID0gY29uZmlnOworCisJaHdzW3BvcnRfbm9dID0gaHc7 Cit9CisKK2ludCBpZGVfbGVnYWN5X2RldmljZV9hZGQoY29uc3Qgc3RydWN0IGlkZV9wb3J0X2lu Zm8gKmQsIHVuc2lnbmVkIGxvbmcgY29uZmlnKQoreworCWh3X3JlZ3NfdCBod1syXSwgKmh3c1td ID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CisKKwltZW1zZXQoJmh3LCAwLCBzaXplb2Yo aHcpKTsKKworCWlmICgoZC0+aG9zdF9mbGFncyAmIElERV9IRkxBR19RRF8yTkRfUE9SVCkgPT0g MCkKKwkJaWRlX2xlZ2FjeV9pbml0X29uZShod3MsICZod1swXSwgMCwgZCwgY29uZmlnKTsKKwlp ZGVfbGVnYWN5X2luaXRfb25lKGh3cywgJmh3WzFdLCAxLCBkLCBjb25maWcpOworCisJaWYgKGh3 c1swXSA9PSBOVUxMICYmIGh3c1sxXSA9PSBOVUxMICYmCisJICAgIChkLT5ob3N0X2ZsYWdzICYg SURFX0hGTEFHX1NJTkdMRSkpCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0dXJuIGlkZV9ob3N0 X2FkZChkLCBod3MsIE5VTEwpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaWRlX2xlZ2FjeV9kZXZp Y2VfYWRkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1saWIuYyBiL2RyaXZlcnMvaWRl L2lkZS1saWIuYwppbmRleCA5ZmM0Y2ZiLi45ZjZlMzNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lk ZS9pZGUtbGliLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWxpYi5jCkBAIC00Myw3ICs0Myw2IEBA IGNvbnN0IGNoYXIgKmlkZV94ZmVyX3ZlcmJvc2UodTggbW9kZSkKIAogCXJldHVybiBzOwogfQot CiBFWFBPUlRfU1lNQk9MKGlkZV94ZmVyX3ZlcmJvc2UpOwogCiAvKioKQEAgLTg3LDcgKzg2LDcg QEAgc3RhdGljIHU4IGlkZV9yYXRlX2ZpbHRlcihpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IHNwZWVk KQogICoJVGhpcyBpcyB1c2VkIGJ5IG1vc3QgY2hpcHNldCBzdXBwb3J0IG1vZHVsZXMgd2hlbiAi YXV0by10dW5pbmciLgogICovCiAKLXU4IGlkZV9nZXRfYmVzdF9waW9fbW9kZSAoaWRlX2RyaXZl X3QgKmRyaXZlLCB1OCBtb2RlX3dhbnRlZCwgdTggbWF4X21vZGUpCit1OCBpZGVfZ2V0X2Jlc3Rf cGlvX21vZGUoaWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBtb2RlX3dhbnRlZCwgdTggbWF4X21vZGUp CiB7CiAJdTE2ICppZCA9IGRyaXZlLT5pZDsKIAlpbnQgcGlvX21vZGUgPSAtMSwgb3ZlcnJpZGRl biA9IDA7CkBAIC0xMzEsNyArMTMwLDYgQEAgdTggaWRlX2dldF9iZXN0X3Bpb19tb2RlIChpZGVf ZHJpdmVfdCAqZHJpdmUsIHU4IG1vZGVfd2FudGVkLCB1OCBtYXhfbW9kZSkKIAogCXJldHVybiBw aW9fbW9kZTsKIH0KLQogRVhQT1JUX1NZTUJPTF9HUEwoaWRlX2dldF9iZXN0X3Bpb19tb2RlKTsK IAogLyogcmVxX3BpbyA9PSAiMjU1IiBmb3IgYXV0by10dW5lICovCkBAIC0xNjIsNyArMTYwLDYg QEAgdm9pZCBpZGVfc2V0X3BpbyhpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IHJlcV9waW8pCiAKIAko dm9pZClpZGVfc2V0X3Bpb19tb2RlKGRyaXZlLCBYRkVSX1BJT18wICsgcGlvKTsKIH0KLQogRVhQ T1JUX1NZTUJPTF9HUEwoaWRlX3NldF9waW8pOwogCiAvKioKQEAgLTE3Myw3ICsxNzAsNyBAQCBF WFBPUlRfU1lNQk9MX0dQTChpZGVfc2V0X3Bpbyk7CiAgKglFbmFibGUgb3IgZGlzYWJsZSBib3Vu Y2UgYnVmZmVyaW5nIGZvciB0aGUgZGV2aWNlLiBEcml2ZXMgbW92ZQogICoJYmV0d2VlbiBQSU8g YW5kIERNQSBhbmQgdGhhdCBjaGFuZ2VzIHRoZSBydWxlcyB3ZSBuZWVkLgogICovCi0gCisKIHZv aWQgaWRlX3RvZ2dsZV9ib3VuY2UoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgb24pCiB7CiAJdTY0 IGFkZHIgPSBCTEtfQk9VTkNFX0hJR0g7CS8qIGRtYTY0X2FkZHJfdCAqLwpAQCAtMjQzLDE0ICsy NDAsMTMgQEAgaW50IGlkZV9zZXRfZG1hX21vZGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBjb25zdCB1 OCBtb2RlKQogCQlyZXR1cm4gaWRlX2NvbmZpZ19kcml2ZV9zcGVlZChkcml2ZSwgbW9kZSk7CiAJ fQogfQotCiBFWFBPUlRfU1lNQk9MX0dQTChpZGVfc2V0X2RtYV9tb2RlKTsKIAogLyoqCiAgKglp ZGVfc2V0X3hmZXJfcmF0ZQktCXNldCB0cmFuc2ZlciByYXRlCiAgKglAZHJpdmU6IGRyaXZlIHRv IHNldAogICoJQHJhdGU6IHNwZWVkIHRvIGF0dGVtcHQgdG8gc2V0Ci0gKgkKKyAqCiAgKglHZW5l cmFsIGhlbHBlciBmb3Igc2V0dGluZyB0aGUgc3BlZWQgb2YgYW4gSURFIGRldmljZS4gVGhpcwog ICoJZnVuY3Rpb24ga25vd3MgYWJvdXQgdXNlciBlbmZvcmNlZCBsaW1pdHMgZnJvbSB0aGUgY29u ZmlndXJhdGlvbgogICoJd2hpY2ggLT5zZXRfcGlvX21vZGUvLT5zZXRfZG1hX21vZGUgZG9lcyBu b3QuCkBAIC0yNzcsMjEgKzI3MywxNiBAQCBpbnQgaWRlX3NldF94ZmVyX3JhdGUoaWRlX2RyaXZl X3QgKmRyaXZlLCB1OCByYXRlKQogCiBzdGF0aWMgdm9pZCBpZGVfZHVtcF9vcGNvZGUoaWRlX2Ry aXZlX3QgKmRyaXZlKQogewotCXN0cnVjdCByZXF1ZXN0ICpycTsKKwlzdHJ1Y3QgcmVxdWVzdCAq cnEgPSBkcml2ZS0+aHdpZi0+aHdncm91cC0+cnE7CiAJaWRlX3Rhc2tfdCAqdGFzayA9IE5VTEw7 CiAKLQlzcGluX2xvY2soJmlkZV9sb2NrKTsKLQlycSA9IE5VTEw7Ci0JaWYgKEhXR1JPVVAoZHJp dmUpKQotCQlycSA9IEhXR1JPVVAoZHJpdmUpLT5ycTsKLQlzcGluX3VubG9jaygmaWRlX2xvY2sp OwogCWlmICghcnEpCiAJCXJldHVybjsKIAogCWlmIChycS0+Y21kX3R5cGUgPT0gUkVRX1RZUEVf QVRBX1RBU0tGSUxFKQogCQl0YXNrID0gcnEtPnNwZWNpYWw7CiAKLQlwcmludGsoImlkZTogZmFp bGVkIG9wY29kZSB3YXM6ICIpOworCXByaW50ayhLRVJOX0VSUiAiaWRlOiBmYWlsZWQgb3Bjb2Rl IHdhczogIik7CiAJaWYgKHRhc2sgPT0gTlVMTCkKIAkJcHJpbnRrKEtFUk5fQ09OVCAidW5rbm93 blxuIik7CiAJZWxzZQpAQCAtMzI5LDQ0ICszMjAsNTUgQEAgc3RhdGljIHZvaWQgaWRlX2R1bXBf c2VjdG9yKGlkZV9kcml2ZV90ICpkcml2ZSkKIAlkcml2ZS0+aHdpZi0+dHBfb3BzLT50Zl9yZWFk KGRyaXZlLCAmdGFzayk7CiAKIAlpZiAobGJhNDggfHwgKHRmLT5kZXZpY2UgJiBBVEFfTEJBKSkK LQkJcHJpbnRrKCIsIExCQXNlY3Q9JWxsdSIsCisJCXByaW50ayhLRVJOX0NPTlQgIiwgTEJBc2Vj dD0lbGx1IiwKIAkJCSh1bnNpZ25lZCBsb25nIGxvbmcpaWRlX2dldF9sYmFfYWRkcih0ZiwgbGJh NDgpKTsKIAllbHNlCi0JCXByaW50aygiLCBDSFM9JWQvJWQvJWQiLCAodGYtPmxiYWggPDwgOCkg KyB0Zi0+bGJhbSwKLQkJCQkJIHRmLT5kZXZpY2UgJiAweGYsIHRmLT5sYmFsKTsKKwkJcHJpbnRr KEtFUk5fQ09OVCAiLCBDSFM9JWQvJWQvJWQiLCAodGYtPmxiYWggPDwgOCkgKyB0Zi0+bGJhbSwK KwkJCXRmLT5kZXZpY2UgJiAweGYsIHRmLT5sYmFsKTsKIH0KIAogc3RhdGljIHZvaWQgaWRlX2R1 bXBfYXRhX2Vycm9yKGlkZV9kcml2ZV90ICpkcml2ZSwgdTggZXJyKQogewotCXByaW50aygieyAi KTsKLQlpZiAoZXJyICYgQVRBX0FCT1JURUQpCXByaW50aygiRHJpdmVTdGF0dXNFcnJvciAiKTsK KwlwcmludGsoS0VSTl9FUlIgInsgIik7CisJaWYgKGVyciAmIEFUQV9BQk9SVEVEKQorCQlwcmlu dGsoS0VSTl9DT05UICJEcml2ZVN0YXR1c0Vycm9yICIpOwogCWlmIChlcnIgJiBBVEFfSUNSQykK LQkJcHJpbnRrKChlcnIgJiBBVEFfQUJPUlRFRCkgPyAiQmFkQ1JDICIgOiAiQmFkU2VjdG9yICIp OwotCWlmIChlcnIgJiBBVEFfVU5DKQlwcmludGsoIlVuY29ycmVjdGFibGVFcnJvciAiKTsKLQlp ZiAoZXJyICYgQVRBX0lETkYpCXByaW50aygiU2VjdG9ySWROb3RGb3VuZCAiKTsKLQlpZiAoZXJy ICYgQVRBX1RSSzBORikJcHJpbnRrKCJUcmFja1plcm9Ob3RGb3VuZCAiKTsKLQlpZiAoZXJyICYg QVRBX0FNTkYpCXByaW50aygiQWRkck1hcmtOb3RGb3VuZCAiKTsKLQlwcmludGsoIn0iKTsKKwkJ cHJpbnRrKEtFUk5fQ09OVCAiJXMiLAorCQkJKGVyciAmIEFUQV9BQk9SVEVEKSA/ICJCYWRDUkMg IiA6ICJCYWRTZWN0b3IgIik7CisJaWYgKGVyciAmIEFUQV9VTkMpCisJCXByaW50ayhLRVJOX0NP TlQgIlVuY29ycmVjdGFibGVFcnJvciAiKTsKKwlpZiAoZXJyICYgQVRBX0lETkYpCisJCXByaW50 ayhLRVJOX0NPTlQgIlNlY3RvcklkTm90Rm91bmQgIik7CisJaWYgKGVyciAmIEFUQV9UUkswTkYp CisJCXByaW50ayhLRVJOX0NPTlQgIlRyYWNrWmVyb05vdEZvdW5kICIpOworCWlmIChlcnIgJiBB VEFfQU1ORikKKwkJcHJpbnRrKEtFUk5fQ09OVCAiQWRkck1hcmtOb3RGb3VuZCAiKTsKKwlwcmlu dGsoS0VSTl9DT05UICJ9Iik7CiAJaWYgKChlcnIgJiAoQVRBX0JCSyB8IEFUQV9BQk9SVEVEKSkg PT0gQVRBX0JCSyB8fAogCSAgICAoZXJyICYgKEFUQV9VTkMgfCBBVEFfSURORiB8IEFUQV9BTU5G KSkpIHsKIAkJaWRlX2R1bXBfc2VjdG9yKGRyaXZlKTsKIAkJaWYgKEhXR1JPVVAoZHJpdmUpICYm IEhXR1JPVVAoZHJpdmUpLT5ycSkKLQkJCXByaW50aygiLCBzZWN0b3I9JWxsdSIsCisJCQlwcmlu dGsoS0VSTl9DT05UICIsIHNlY3Rvcj0lbGx1IiwKIAkJCSAgICAgICAodW5zaWduZWQgbG9uZyBs b25nKUhXR1JPVVAoZHJpdmUpLT5ycS0+c2VjdG9yKTsKIAl9Ci0JcHJpbnRrKCJcbiIpOworCXBy aW50ayhLRVJOX0NPTlQgIlxuIik7CiB9CiAKIHN0YXRpYyB2b2lkIGlkZV9kdW1wX2F0YXBpX2Vy cm9yKGlkZV9kcml2ZV90ICpkcml2ZSwgdTggZXJyKQogewotCXByaW50aygieyAiKTsKLQlpZiAo ZXJyICYgQVRBUElfSUxJKQlwcmludGsoIklsbGVnYWxMZW5ndGhJbmRpY2F0aW9uICIpOwotCWlm IChlcnIgJiBBVEFQSV9FT00pCXByaW50aygiRW5kT2ZNZWRpYSAiKTsKLQlpZiAoZXJyICYgQVRB X0FCT1JURUQpCXByaW50aygiQWJvcnRlZENvbW1hbmQgIik7Ci0JaWYgKGVyciAmIEFUQV9NQ1Ip CXByaW50aygiTWVkaWFDaGFuZ2VSZXF1ZXN0ZWQgIik7Ci0JaWYgKGVyciAmIEFUQVBJX0xGUykJ cHJpbnRrKCJMYXN0RmFpbGVkU2Vuc2U9MHglMDJ4ICIsCi0JCQkJICAgICAgIChlcnIgJiBBVEFQ SV9MRlMpID4+IDQpOwotCXByaW50aygifVxuIik7CisJcHJpbnRrKEtFUk5fRVJSICJ7ICIpOwor CWlmIChlcnIgJiBBVEFQSV9JTEkpCisJCXByaW50ayhLRVJOX0NPTlQgIklsbGVnYWxMZW5ndGhJ bmRpY2F0aW9uICIpOworCWlmIChlcnIgJiBBVEFQSV9FT00pCisJCXByaW50ayhLRVJOX0NPTlQg IkVuZE9mTWVkaWEgIik7CisJaWYgKGVyciAmIEFUQV9BQk9SVEVEKQorCQlwcmludGsoS0VSTl9D T05UICJBYm9ydGVkQ29tbWFuZCAiKTsKKwlpZiAoZXJyICYgQVRBX01DUikKKwkJcHJpbnRrKEtF Uk5fQ09OVCAiTWVkaWFDaGFuZ2VSZXF1ZXN0ZWQgIik7CisJaWYgKGVyciAmIEFUQVBJX0xGUykK KwkJcHJpbnRrKEtFUk5fQ09OVCAiTGFzdEZhaWxlZFNlbnNlPTB4JTAyeCAiLAorCQkJKGVyciAm IEFUQVBJX0xGUykgPj4gNCk7CisJcHJpbnRrKEtFUk5fQ09OVCAifVxuIik7CiB9CiAKIC8qKgpA QCAtMzgyLDM0ICszODQsMzcgQEAgc3RhdGljIHZvaWQgaWRlX2R1bXBfYXRhcGlfZXJyb3IoaWRl X2RyaXZlX3QgKmRyaXZlLCB1OCBlcnIpCiAKIHU4IGlkZV9kdW1wX3N0YXR1cyhpZGVfZHJpdmVf dCAqZHJpdmUsIGNvbnN0IGNoYXIgKm1zZywgdTggc3RhdCkKIHsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXU4IGVyciA9IDA7CiAKLQlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0JcHJpbnRrKCIl czogJXM6IHN0YXR1cz0weCUwMnggeyAiLCBkcml2ZS0+bmFtZSwgbXNnLCBzdGF0KTsKKwlwcmlu dGsoS0VSTl9FUlIgIiVzOiAlczogc3RhdHVzPTB4JTAyeCB7ICIsIGRyaXZlLT5uYW1lLCBtc2cs IHN0YXQpOwogCWlmIChzdGF0ICYgQVRBX0JVU1kpCi0JCXByaW50aygiQnVzeSAiKTsKKwkJcHJp bnRrKEtFUk5fQ09OVCAiQnVzeSAiKTsKIAllbHNlIHsKLQkJaWYgKHN0YXQgJiBBVEFfRFJEWSkJ cHJpbnRrKCJEcml2ZVJlYWR5ICIpOwotCQlpZiAoc3RhdCAmIEFUQV9ERikJcHJpbnRrKCJEZXZp Y2VGYXVsdCAiKTsKLQkJaWYgKHN0YXQgJiBBVEFfRFNDKQlwcmludGsoIlNlZWtDb21wbGV0ZSAi KTsKLQkJaWYgKHN0YXQgJiBBVEFfRFJRKQlwcmludGsoIkRhdGFSZXF1ZXN0ICIpOwotCQlpZiAo c3RhdCAmIEFUQV9DT1JSKQlwcmludGsoIkNvcnJlY3RlZEVycm9yICIpOwotCQlpZiAoc3RhdCAm IEFUQV9JRFgpCXByaW50aygiSW5kZXggIik7Ci0JCWlmIChzdGF0ICYgQVRBX0VSUikJcHJpbnRr KCJFcnJvciAiKTsKKwkJaWYgKHN0YXQgJiBBVEFfRFJEWSkKKwkJCXByaW50ayhLRVJOX0NPTlQg IkRyaXZlUmVhZHkgIik7CisJCWlmIChzdGF0ICYgQVRBX0RGKQorCQkJcHJpbnRrKEtFUk5fQ09O VCAiRGV2aWNlRmF1bHQgIik7CisJCWlmIChzdGF0ICYgQVRBX0RTQykKKwkJCXByaW50ayhLRVJO X0NPTlQgIlNlZWtDb21wbGV0ZSAiKTsKKwkJaWYgKHN0YXQgJiBBVEFfRFJRKQorCQkJcHJpbnRr KEtFUk5fQ09OVCAiRGF0YVJlcXVlc3QgIik7CisJCWlmIChzdGF0ICYgQVRBX0NPUlIpCisJCQlw cmludGsoS0VSTl9DT05UICJDb3JyZWN0ZWRFcnJvciAiKTsKKwkJaWYgKHN0YXQgJiBBVEFfSURY KQorCQkJcHJpbnRrKEtFUk5fQ09OVCAiSW5kZXggIik7CisJCWlmIChzdGF0ICYgQVRBX0VSUikK KwkJCXByaW50ayhLRVJOX0NPTlQgIkVycm9yICIpOwogCX0KLQlwcmludGsoIn1cbiIpOworCXBy aW50ayhLRVJOX0NPTlQgIn1cbiIpOwogCWlmICgoc3RhdCAmIChBVEFfQlVTWSB8IEFUQV9FUlIp KSA9PSBBVEFfRVJSKSB7CiAJCWVyciA9IGlkZV9yZWFkX2Vycm9yKGRyaXZlKTsKLQkJcHJpbnRr KCIlczogJXM6IGVycm9yPTB4JTAyeCAiLCBkcml2ZS0+bmFtZSwgbXNnLCBlcnIpOworCQlwcmlu dGsoS0VSTl9FUlIgIiVzOiAlczogZXJyb3I9MHglMDJ4ICIsIGRyaXZlLT5uYW1lLCBtc2csIGVy cik7CiAJCWlmIChkcml2ZS0+bWVkaWEgPT0gaWRlX2Rpc2spCiAJCQlpZGVfZHVtcF9hdGFfZXJy b3IoZHJpdmUsIGVycik7CiAJCWVsc2UKIAkJCWlkZV9kdW1wX2F0YXBpX2Vycm9yKGRyaXZlLCBl cnIpOwogCX0KIAlpZGVfZHVtcF9vcGNvZGUoZHJpdmUpOwotCWxvY2FsX2lycV9yZXN0b3JlKGZs YWdzKTsKIAlyZXR1cm4gZXJyOwogfQotCiBFWFBPUlRfU1lNQk9MKGlkZV9kdW1wX3N0YXR1cyk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtcGFyay5jIGIvZHJpdmVycy9pZGUvaWRlLXBh cmsuYwppbmRleCAwM2IwMGU1Li42M2QwMWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUt cGFyay5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1wYXJrLmMKQEAgLTcsMTcgKzcsMTYgQEAgREVD TEFSRV9XQUlUX1FVRVVFX0hFQUQoaWRlX3Bhcmtfd3EpOwogCiBzdGF0aWMgdm9pZCBpc3N1ZV9w YXJrX2NtZChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKIHsKKwlp ZGVfaHdncm91cF90ICpod2dyb3VwID0gZHJpdmUtPmh3aWYtPmh3Z3JvdXA7CiAJc3RydWN0IHJl cXVlc3RfcXVldWUgKnEgPSBkcml2ZS0+cXVldWU7CiAJc3RydWN0IHJlcXVlc3QgKnJxOwogCWlu dCByYzsKIAogCXRpbWVvdXQgKz0gamlmZmllczsKLQlzcGluX2xvY2tfaXJxKCZpZGVfbG9jayk7 CisJc3Bpbl9sb2NrX2lycSgmaHdncm91cC0+bG9jayk7CiAJaWYgKGRyaXZlLT5kZXZfZmxhZ3Mg JiBJREVfREZMQUdfUEFSS0VEKSB7Ci0JCWlkZV9od2dyb3VwX3QgKmh3Z3JvdXAgPSBkcml2ZS0+ aHdpZi0+aHdncm91cDsKLQkJaW50IHJlc2V0X3RpbWVyOworCQlpbnQgcmVzZXRfdGltZXIgPSB0 aW1lX2JlZm9yZSh0aW1lb3V0LCBkcml2ZS0+c2xlZXApOwogCi0JCXJlc2V0X3RpbWVyID0gdGlt ZV9iZWZvcmUodGltZW91dCwgZHJpdmUtPnNsZWVwKTsKIAkJZHJpdmUtPnNsZWVwID0gdGltZW91 dDsKIAkJd2FrZV91cF9hbGwoJmlkZV9wYXJrX3dxKTsKIAkJaWYgKHJlc2V0X3RpbWVyICYmIGh3 Z3JvdXAtPnNsZWVwaW5nICYmCkBAIC0yNiwxMCArMjUsMTAgQEAgc3RhdGljIHZvaWQgaXNzdWVf cGFya19jbWQoaWRlX2RyaXZlX3QgKmRyaXZlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCiAJCQlo d2dyb3VwLT5idXN5ID0gMDsKIAkJCWJsa19zdGFydF9xdWV1ZWluZyhxKTsKIAkJfQotCQlzcGlu X3VubG9ja19pcnEoJmlkZV9sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZod2dyb3VwLT5sb2Nr KTsKIAkJcmV0dXJuOwogCX0KLQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsKKwlzcGluX3Vu bG9ja19pcnEoJmh3Z3JvdXAtPmxvY2spOwogCiAJcnEgPSBibGtfZ2V0X3JlcXVlc3QocSwgUkVB RCwgX19HRlBfV0FJVCk7CiAJcnEtPmNtZFswXSA9IFJFUV9QQVJLX0hFQURTOwpAQCAtNjIsMjAg KzYxLDIxIEBAIHNzaXplX3QgaWRlX3Bhcmtfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkgICAgICBjaGFyICpidWYpCiB7CiAJaWRlX2Ry aXZlX3QgKmRyaXZlID0gdG9faWRlX2RldmljZShkZXYpOworCWlkZV9od2dyb3VwX3QgKmh3Z3Jv dXAgPSBkcml2ZS0+aHdpZi0+aHdncm91cDsKIAl1bnNpZ25lZCBsb25nIG5vdzsKIAl1bnNpZ25l ZCBpbnQgbXNlY3M7CiAKIAlpZiAoZHJpdmUtPmRldl9mbGFncyAmIElERV9ERkxBR19OT19VTkxP QUQpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXNwaW5fbG9ja19pcnEoJmlkZV9sb2NrKTsK KwlzcGluX2xvY2tfaXJxKCZod2dyb3VwLT5sb2NrKTsKIAlub3cgPSBqaWZmaWVzOwogCWlmIChk cml2ZS0+ZGV2X2ZsYWdzICYgSURFX0RGTEFHX1BBUktFRCAmJgogCSAgICB0aW1lX2FmdGVyKGRy aXZlLT5zbGVlcCwgbm93KSkKIAkJbXNlY3MgPSBqaWZmaWVzX3RvX21zZWNzKGRyaXZlLT5zbGVl cCAtIG5vdyk7CiAJZWxzZQogCQltc2VjcyA9IDA7Ci0Jc3Bpbl91bmxvY2tfaXJxKCZpZGVfbG9j ayk7CisJc3Bpbl91bmxvY2tfaXJxKCZod2dyb3VwLT5sb2NrKTsKIAogCXJldHVybiBzbnByaW50 ZihidWYsIDIwLCAiJXVcbiIsIG1zZWNzKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lk ZS1wbS5jIGIvZHJpdmVycy9pZGUvaWRlLXBtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uODI4MmM2MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1wbS5j CkBAIC0wLDAgKzEsMjM1IEBACisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8 bGludXgvaWRlLmg+CisjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4KKworaW50IGdlbmVyaWNfaWRl X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3QgbWVzZykKK3sKKwlpZGVf ZHJpdmVfdCAqZHJpdmUgPSBkZXYtPmRyaXZlcl9kYXRhLCAqcGFpciA9IGlkZV9nZXRfcGFpcl9k ZXYoZHJpdmUpOworCWlkZV9od2lmX3QgKmh3aWYgPSBIV0lGKGRyaXZlKTsKKwlzdHJ1Y3QgcmVx dWVzdCAqcnE7CisJc3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgcnFwbTsKKwlpZGVfdGFza190IGFy Z3M7CisJaW50IHJldDsKKworCS8qIGNhbGwgQUNQSSBfR1RNIG9ubHkgb25jZSAqLworCWlmICgo ZHJpdmUtPmRuICYgMSkgPT0gMCB8fCBwYWlyID09IE5VTEwpCisJCWlkZV9hY3BpX2dldF90aW1p bmcoaHdpZik7CisKKwltZW1zZXQoJnJxcG0sIDAsIHNpemVvZihycXBtKSk7CisJbWVtc2V0KCZh cmdzLCAwLCBzaXplb2YoYXJncykpOworCXJxID0gYmxrX2dldF9yZXF1ZXN0KGRyaXZlLT5xdWV1 ZSwgUkVBRCwgX19HRlBfV0FJVCk7CisJcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfUE1fU1VTUEVO RDsKKwlycS0+c3BlY2lhbCA9ICZhcmdzOworCXJxLT5kYXRhID0gJnJxcG07CisJcnFwbS5wbV9z dGVwID0gSURFX1BNX1NUQVJUX1NVU1BFTkQ7CisJaWYgKG1lc2cuZXZlbnQgPT0gUE1fRVZFTlRf UFJFVEhBVykKKwkJbWVzZy5ldmVudCA9IFBNX0VWRU5UX0ZSRUVaRTsKKwlycXBtLnBtX3N0YXRl ID0gbWVzZy5ldmVudDsKKworCXJldCA9IGJsa19leGVjdXRlX3JxKGRyaXZlLT5xdWV1ZSwgTlVM TCwgcnEsIDApOworCWJsa19wdXRfcmVxdWVzdChycSk7CisKKwkvKiBjYWxsIEFDUEkgX1BTMyBv bmx5IGFmdGVyIGJvdGggZGV2aWNlcyBhcmUgc3VzcGVuZGVkICovCisJaWYgKHJldCA9PSAwICYm ICgoZHJpdmUtPmRuICYgMSkgfHwgcGFpciA9PSBOVUxMKSkKKwkJaWRlX2FjcGlfc2V0X3N0YXRl KGh3aWYsIDApOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGdlbmVyaWNfaWRlX3Jlc3VtZShz dHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJaWRlX2RyaXZlX3QgKmRyaXZlID0gZGV2LT5kcml2ZXJf ZGF0YSwgKnBhaXIgPSBpZGVfZ2V0X3BhaXJfZGV2KGRyaXZlKTsKKwlpZGVfaHdpZl90ICpod2lm ID0gSFdJRihkcml2ZSk7CisJc3RydWN0IHJlcXVlc3QgKnJxOworCXN0cnVjdCByZXF1ZXN0X3Bt X3N0YXRlIHJxcG07CisJaWRlX3Rhc2tfdCBhcmdzOworCWludCBlcnI7CisKKwkvKiBjYWxsIEFD UEkgX1BTMCAvIF9TVE0gb25seSBvbmNlICovCisJaWYgKChkcml2ZS0+ZG4gJiAxKSA9PSAwIHx8 IHBhaXIgPT0gTlVMTCkgeworCQlpZGVfYWNwaV9zZXRfc3RhdGUoaHdpZiwgMSk7CisJCWlkZV9h Y3BpX3B1c2hfdGltaW5nKGh3aWYpOworCX0KKworCWlkZV9hY3BpX2V4ZWNfdGZzKGRyaXZlKTsK KworCW1lbXNldCgmcnFwbSwgMCwgc2l6ZW9mKHJxcG0pKTsKKwltZW1zZXQoJmFyZ3MsIDAsIHNp emVvZihhcmdzKSk7CisJcnEgPSBibGtfZ2V0X3JlcXVlc3QoZHJpdmUtPnF1ZXVlLCBSRUFELCBf X0dGUF9XQUlUKTsKKwlycS0+Y21kX3R5cGUgPSBSRVFfVFlQRV9QTV9SRVNVTUU7CisJcnEtPmNt ZF9mbGFncyB8PSBSRVFfUFJFRU1QVDsKKwlycS0+c3BlY2lhbCA9ICZhcmdzOworCXJxLT5kYXRh ID0gJnJxcG07CisJcnFwbS5wbV9zdGVwID0gSURFX1BNX1NUQVJUX1JFU1VNRTsKKwlycXBtLnBt X3N0YXRlID0gUE1fRVZFTlRfT047CisKKwllcnIgPSBibGtfZXhlY3V0ZV9ycShkcml2ZS0+cXVl dWUsIE5VTEwsIHJxLCAxKTsKKwlibGtfcHV0X3JlcXVlc3QocnEpOworCisJaWYgKGVyciA9PSAw ICYmIGRldi0+ZHJpdmVyKSB7CisJCWlkZV9kcml2ZXJfdCAqZHJ2ID0gdG9faWRlX2RyaXZlcihk ZXYtPmRyaXZlcik7CisKKwkJaWYgKGRydi0+cmVzdW1lKQorCQkJZHJ2LT5yZXN1bWUoZHJpdmUp OworCX0KKworCXJldHVybiBlcnI7Cit9CisKK3ZvaWQgaWRlX2NvbXBsZXRlX3Bvd2VyX3N0ZXAo aWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IHJlcXVl c3RfcG1fc3RhdGUgKnBtID0gcnEtPmRhdGE7CisKKyNpZmRlZiBERUJVR19QTQorCXByaW50ayhL RVJOX0lORk8gIiVzOiBjb21wbGV0ZV9wb3dlcl9zdGVwKHN0ZXA6ICVkKVxuIiwKKwkJZHJpdmUt Pm5hbWUsIHBtLT5wbV9zdGVwKTsKKyNlbmRpZgorCWlmIChkcml2ZS0+bWVkaWEgIT0gaWRlX2Rp c2spCisJCXJldHVybjsKKworCXN3aXRjaCAocG0tPnBtX3N0ZXApIHsKKwljYXNlIElERV9QTV9G TFVTSF9DQUNIRToJLyogU3VzcGVuZCBzdGVwIDEgKGZsdXNoIGNhY2hlKSAqLworCQlpZiAocG0t PnBtX3N0YXRlID09IFBNX0VWRU5UX0ZSRUVaRSkKKwkJCXBtLT5wbV9zdGVwID0gSURFX1BNX0NP TVBMRVRFRDsKKwkJZWxzZQorCQkJcG0tPnBtX3N0ZXAgPSBJREVfUE1fU1RBTkRCWTsKKwkJYnJl YWs7CisJY2FzZSBJREVfUE1fU1RBTkRCWToJCS8qIFN1c3BlbmQgc3RlcCAyIChzdGFuZGJ5KSAq LworCQlwbS0+cG1fc3RlcCA9IElERV9QTV9DT01QTEVURUQ7CisJCWJyZWFrOworCWNhc2UgSURF X1BNX1JFU1RPUkVfUElPOgkvKiBSZXN1bWUgc3RlcCAxIChyZXN0b3JlIFBJTykgKi8KKwkJcG0t PnBtX3N0ZXAgPSBJREVfUE1fSURMRTsKKwkJYnJlYWs7CisJY2FzZSBJREVfUE1fSURMRToJCS8q IFJlc3VtZSBzdGVwIDIgKGlkbGUpKi8KKwkJcG0tPnBtX3N0ZXAgPSBJREVfUE1fUkVTVE9SRV9E TUE7CisJCWJyZWFrOworCX0KK30KKworaWRlX3N0YXJ0c3RvcF90IGlkZV9zdGFydF9wb3dlcl9z dGVwKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQoreworCXN0cnVjdCBy ZXF1ZXN0X3BtX3N0YXRlICpwbSA9IHJxLT5kYXRhOworCWlkZV90YXNrX3QgKmFyZ3MgPSBycS0+ c3BlY2lhbDsKKworCW1lbXNldChhcmdzLCAwLCBzaXplb2YoKmFyZ3MpKTsKKworCXN3aXRjaCAo cG0tPnBtX3N0ZXApIHsKKwljYXNlIElERV9QTV9GTFVTSF9DQUNIRToJLyogU3VzcGVuZCBzdGVw IDEgKGZsdXNoIGNhY2hlKSAqLworCQlpZiAoZHJpdmUtPm1lZGlhICE9IGlkZV9kaXNrKQorCQkJ YnJlYWs7CisJCS8qIE5vdCBzdXBwb3J0ZWQ/IFN3aXRjaCB0byBuZXh0IHN0ZXAgbm93LiAqLwor CQlpZiAoYXRhX2lkX2ZsdXNoX2VuYWJsZWQoZHJpdmUtPmlkKSA9PSAwIHx8CisJCSAgICAoZHJp dmUtPmRldl9mbGFncyAmIElERV9ERkxBR19XQ0FDSEUpID09IDApIHsKKwkJCWlkZV9jb21wbGV0 ZV9wb3dlcl9zdGVwKGRyaXZlLCBycSk7CisJCQlyZXR1cm4gaWRlX3N0b3BwZWQ7CisJCX0KKwkJ aWYgKGF0YV9pZF9mbHVzaF9leHRfZW5hYmxlZChkcml2ZS0+aWQpKQorCQkJYXJncy0+dGYuY29t bWFuZCA9IEFUQV9DTURfRkxVU0hfRVhUOworCQllbHNlCisJCQlhcmdzLT50Zi5jb21tYW5kID0g QVRBX0NNRF9GTFVTSDsKKwkJZ290byBvdXRfZG9fdGY7CisJY2FzZSBJREVfUE1fU1RBTkRCWToJ CS8qIFN1c3BlbmQgc3RlcCAyIChzdGFuZGJ5KSAqLworCQlhcmdzLT50Zi5jb21tYW5kID0gQVRB X0NNRF9TVEFOREJZTk9XMTsKKwkJZ290byBvdXRfZG9fdGY7CisJY2FzZSBJREVfUE1fUkVTVE9S RV9QSU86CS8qIFJlc3VtZSBzdGVwIDEgKHJlc3RvcmUgUElPKSAqLworCQlpZGVfc2V0X21heF9w aW8oZHJpdmUpOworCQkvKgorCQkgKiBza2lwIElERV9QTV9JRExFIGZvciBBVEFQSSBkZXZpY2Vz CisJCSAqLworCQlpZiAoZHJpdmUtPm1lZGlhICE9IGlkZV9kaXNrKQorCQkJcG0tPnBtX3N0ZXAg PSBJREVfUE1fUkVTVE9SRV9ETUE7CisJCWVsc2UKKwkJCWlkZV9jb21wbGV0ZV9wb3dlcl9zdGVw KGRyaXZlLCBycSk7CisJCXJldHVybiBpZGVfc3RvcHBlZDsKKwljYXNlIElERV9QTV9JRExFOgkJ LyogUmVzdW1lIHN0ZXAgMiAoaWRsZSkgKi8KKwkJYXJncy0+dGYuY29tbWFuZCA9IEFUQV9DTURf SURMRUlNTUVESUFURTsKKwkJZ290byBvdXRfZG9fdGY7CisJY2FzZSBJREVfUE1fUkVTVE9SRV9E TUE6CS8qIFJlc3VtZSBzdGVwIDMgKHJlc3RvcmUgRE1BKSAqLworCQkvKgorCQkgKiBSaWdodCBu b3csIGFsbCB3ZSBkbyBpcyBjYWxsIGlkZV9zZXRfZG1hKGRyaXZlKSwKKwkJICogd2UgY291bGQg YmUgc21hcnRlciBhbmQgY2hlY2sgZm9yIGN1cnJlbnQgeGZlcl9zcGVlZAorCQkgKiBpbiBzdHJ1 Y3QgZHJpdmUgZXRjLi4uCisJCSAqLworCQlpZiAoZHJpdmUtPmh3aWYtPmRtYV9vcHMgPT0gTlVM TCkKKwkJCWJyZWFrOworCQkvKgorCQkgKiBUT0RPOiByZXNwZWN0IElERV9ERkxBR19VU0lOR19E TUEKKwkJICovCisJCWlkZV9zZXRfZG1hKGRyaXZlKTsKKwkJYnJlYWs7CisJfQorCisJcG0tPnBt X3N0ZXAgPSBJREVfUE1fQ09NUExFVEVEOworCXJldHVybiBpZGVfc3RvcHBlZDsKKworb3V0X2Rv X3RmOgorCWFyZ3MtPnRmX2ZsYWdzCSA9IElERV9URkxBR19URiB8IElERV9URkxBR19ERVZJQ0U7 CisJYXJncy0+ZGF0YV9waGFzZSA9IFRBU0tGSUxFX05PX0RBVEE7CisJcmV0dXJuIGRvX3J3X3Rh c2tmaWxlKGRyaXZlLCBhcmdzKTsKK30KKworLyoqCisgKglpZGVfY29tcGxldGVfcG1fcmVxdWVz dCAtIGVuZCB0aGUgY3VycmVudCBQb3dlciBNYW5hZ2VtZW50IHJlcXVlc3QKKyAqCUBkcml2ZTog dGFyZ2V0IGRyaXZlCisgKglAcnE6IHJlcXVlc3QKKyAqCisgKglUaGlzIGZ1bmN0aW9uIGNsZWFu cyB1cCB0aGUgY3VycmVudCBQTSByZXF1ZXN0IGFuZCBzdG9wcyB0aGUgcXVldWUKKyAqCWlmIG5l Y2Vzc2FyeS4KKyAqLwordm9pZCBpZGVfY29tcGxldGVfcG1fcmVxdWVzdChpZGVfZHJpdmVfdCAq ZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSA9 IGRyaXZlLT5xdWV1ZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisjaWZkZWYgREVCVUdfUE0K KwlwcmludGsoIiVzOiBjb21wbGV0aW5nIFBNIHJlcXVlc3QsICVzXG4iLCBkcml2ZS0+bmFtZSwK KwkgICAgICAgYmxrX3BtX3N1c3BlbmRfcmVxdWVzdChycSkgPyAic3VzcGVuZCIgOiAicmVzdW1l Iik7CisjZW5kaWYKKwlzcGluX2xvY2tfaXJxc2F2ZShxLT5xdWV1ZV9sb2NrLCBmbGFncyk7CisJ aWYgKGJsa19wbV9zdXNwZW5kX3JlcXVlc3QocnEpKSB7CisJCWJsa19zdG9wX3F1ZXVlKHEpOwor CX0gZWxzZSB7CisJCWRyaXZlLT5kZXZfZmxhZ3MgJj0gfklERV9ERkxBR19CTE9DS0VEOworCQli bGtfc3RhcnRfcXVldWUocSk7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+cXVldWVf bG9jaywgZmxhZ3MpOworCisJZHJpdmUtPmh3aWYtPmh3Z3JvdXAtPnJxID0gTlVMTDsKKworCWlm IChibGtfZW5kX3JlcXVlc3QocnEsIDAsIDApKQorCQlCVUcoKTsKK30KKwordm9pZCBpZGVfY2hl Y2tfcG1fc3RhdGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpCit7CisJ c3RydWN0IHJlcXVlc3RfcG1fc3RhdGUgKnBtID0gcnEtPmRhdGE7CisKKwlpZiAoYmxrX3BtX3N1 c3BlbmRfcmVxdWVzdChycSkgJiYKKwkgICAgcG0tPnBtX3N0ZXAgPT0gSURFX1BNX1NUQVJUX1NV U1BFTkQpCisJCS8qIE1hcmsgZHJpdmUgYmxvY2tlZCB3aGVuIHN0YXJ0aW5nIHRoZSBzdXNwZW5k IHNlcXVlbmNlLiAqLworCQlkcml2ZS0+ZGV2X2ZsYWdzIHw9IElERV9ERkxBR19CTE9DS0VEOwor CWVsc2UgaWYgKGJsa19wbV9yZXN1bWVfcmVxdWVzdChycSkgJiYKKwkJIHBtLT5wbV9zdGVwID09 IElERV9QTV9TVEFSVF9SRVNVTUUpIHsKKwkJLyoKKwkJICogVGhlIGZpcnN0IHRoaW5nIHdlIGRv IG9uIHdha2V1cCBpcyB0byB3YWl0IGZvciBCU1kgYml0IHRvCisJCSAqIGdvIGF3YXkgKHdpdGgg YSBsb29vbmcgdGltZW91dCkgYXMgYSBkcml2ZSBvbiB0aGlzIGh3aWYgbWF5CisJCSAqIGp1c3Qg YmUgUE9TVGluZyBpdHNlbGYuCisJCSAqIFdlIGRvIHRoYXQgYmVmb3JlIGV2ZW4gc2VsZWN0aW5n IGFzIHRoZSAib3RoZXIiIGRldmljZSBvbgorCQkgKiB0aGUgYnVzIG1heSBiZSBicm9rZW4gZW5v dWdoIHRvIHdhbGsgb24gb3VyIHRvZXMgYXQgdGhpcworCQkgKiBwb2ludC4KKwkJICovCisJCWlk ZV9od2lmX3QgKmh3aWYgPSBkcml2ZS0+aHdpZjsKKwkJaW50IHJjOworI2lmZGVmIERFQlVHX1BN CisJCXByaW50aygiJXM6IFdha2V1cCByZXF1ZXN0IGluaXRlZCwgd2FpdGluZyBmb3IgIUJTWS4u LlxuIiwgZHJpdmUtPm5hbWUpOworI2VuZGlmCisJCXJjID0gaWRlX3dhaXRfbm90X2J1c3koaHdp ZiwgMzUwMDApOworCQlpZiAocmMpCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogYnVzIG5v dCByZWFkeSBvbiB3YWtldXBcbiIsIGRyaXZlLT5uYW1lKTsKKwkJU0VMRUNUX0RSSVZFKGRyaXZl KTsKKwkJaHdpZi0+dHBfb3BzLT5zZXRfaXJxKGh3aWYsIDEpOworCQlyYyA9IGlkZV93YWl0X25v dF9idXN5KGh3aWYsIDEwMDAwMCk7CisJCWlmIChyYykKKwkJCXByaW50ayhLRVJOX1dBUk5JTkcg IiVzOiBkcml2ZSBub3QgcmVhZHkgb24gd2FrZXVwXG4iLCBkcml2ZS0+bmFtZSk7CisJfQorfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXByb2JlLmMgYi9kcml2ZXJzL2lkZS9pZGUtcHJv YmUuYwppbmRleCBjNTViZGJkLi5hNjRlYzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUt cHJvYmUuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtcHJvYmUuYwpAQCAtMTEwLDIwICsxMTAsMjIg QEAgc3RhdGljIHZvaWQgaWRlX2Rpc2tfaW5pdF9tdWx0X2NvdW50KGlkZV9kcml2ZV90ICpkcml2 ZSkKICAqCXJlYWQgYW5kIHBhcnNlIHRoZSByZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIGlzIHJ1biB3 aXRoCiAgKglpbnRlcnJ1cHRzIGRpc2FibGVkLiAKICAqLwotIAotc3RhdGljIGlubGluZSB2b2lk IGRvX2lkZW50aWZ5IChpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IGNtZCkKKworc3RhdGljIHZvaWQg ZG9faWRlbnRpZnkoaWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBjbWQpCiB7CiAJaWRlX2h3aWZfdCAq aHdpZiA9IEhXSUYoZHJpdmUpOwogCXUxNiAqaWQgPSBkcml2ZS0+aWQ7CiAJY2hhciAqbSA9IChj aGFyICopJmlkW0FUQV9JRF9QUk9EXTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBic3dh cCA9IDEsIGlzX2NmYTsKIAorCS8qIGxvY2FsIENQVSBvbmx5OyBzb21lIHN5c3RlbXMgbmVlZCB0 aGlzICovCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwogCS8qIHJlYWQgNTEyIGJ5dGVzIG9mIGlk IGluZm8gKi8KIAlod2lmLT50cF9vcHMtPmlucHV0X2RhdGEoZHJpdmUsIE5VTEwsIGlkLCBTRUNU T1JfU0laRSk7CisJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCiAJZHJpdmUtPmRldl9mbGFn cyB8PSBJREVfREZMQUdfSURfUkVBRDsKLQotCWxvY2FsX2lycV9lbmFibGUoKTsKICNpZmRlZiBE RUJVRwogCXByaW50ayhLRVJOX0lORk8gIiVzOiBkdW1waW5nIGlkZW50aWZ5IGRhdGFcbiIsIGRy aXZlLT5uYW1lKTsKIAlpZGVfZHVtcF9pZGVudGlmeSgodTggKilpZCk7CkBAIC0zMDYsMTcgKzMw OCwxMiBAQCBzdGF0aWMgaW50IGFjdHVhbF90cnlfdG9faWRlbnRpZnkgKGlkZV9kcml2ZV90ICpk cml2ZSwgdTggY21kKQogCXMgPSB0cF9vcHMtPnJlYWRfc3RhdHVzKGh3aWYpOwogCiAJaWYgKE9L X1NUQVQocywgQVRBX0RSUSwgQkFEX1JfU1RBVCkpIHsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsK LQotCQkvKiBsb2NhbCBDUFUgb25seTsgc29tZSBzeXN0ZW1zIG5lZWQgdGhpcyAqLwotCQlsb2Nh bF9pcnFfc2F2ZShmbGFncyk7CiAJCS8qIGRyaXZlIHJldHVybmVkIElEICovCiAJCWRvX2lkZW50 aWZ5KGRyaXZlLCBjbWQpOwogCQkvKiBkcml2ZSByZXNwb25kZWQgd2l0aCBJRCAqLwogCQlyYyA9 IDA7CiAJCS8qIGNsZWFyIGRyaXZlIElSUSAqLwogCQkodm9pZCl0cF9vcHMtPnJlYWRfc3RhdHVz KGh3aWYpOwotCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAJfSBlbHNlIHsKIAkJLyogZHJp dmUgcmVmdXNlZCBJRCAqLwogCQlyYyA9IDI7CkBAIC01NTQsOCArNTUxLDggQEAgc3RhdGljIHZv aWQgZW5hYmxlX25lc3QgKGlkZV9kcml2ZV90ICpkcml2ZSkKICAqCQkJMSAgZGV2aWNlIHdhcyBm b3VuZAogICoJCQkgICAobm90ZTogSURFX0RGTEFHX1BSRVNFTlQgbWlnaHQgc3RpbGwgYmUgbm90 IHNldCkKICAqLwotIAotc3RhdGljIGlubGluZSB1OCBwcm9iZV9mb3JfZHJpdmUgKGlkZV9kcml2 ZV90ICpkcml2ZSkKKworc3RhdGljIHU4IHByb2JlX2Zvcl9kcml2ZShpZGVfZHJpdmVfdCAqZHJp dmUpCiB7CiAJY2hhciAqbTsKIApAQCAtNjQyLDcgKzYzOSw3IEBAIHN0YXRpYyBpbnQgaWRlX3Jl Z2lzdGVyX3BvcnQoaWRlX2h3aWZfdCAqaHdpZikKIAlpbnQgcmV0OwogCiAJLyogcmVnaXN0ZXIg d2l0aCBnbG9iYWwgZGV2aWNlIHRyZWUgKi8KLQlzdHJsY3B5KGh3aWYtPmdlbmRldi5idXNfaWQs aHdpZi0+bmFtZSxCVVNfSURfU0laRSk7CisJZGV2X3NldF9uYW1lKCZod2lmLT5nZW5kZXYsIGh3 aWYtPm5hbWUpOwogCWh3aWYtPmdlbmRldi5kcml2ZXJfZGF0YSA9IGh3aWY7CiAJaWYgKGh3aWYt PmdlbmRldi5wYXJlbnQgPT0gTlVMTCkgewogCQlpZiAoaHdpZi0+ZGV2KQpAQCAtODY0LDMxICs4 NjEsNiBAQCBzdGF0aWMgdm9pZCBpZGVfcG9ydF90dW5lX2RldmljZXMoaWRlX2h3aWZfdCAqaHdp ZikKIH0KIAogLyoKLSAqIHNhdmVfbWF0Y2goKSBpcyB1c2VkIHRvIHNpbXBsaWZ5IGxvZ2ljIGlu IGluaXRfaXJxKCkgYmVsb3cuCi0gKgotICogQSBsb29waG9sZSBoZXJlIGlzIHRoYXQgd2UgbWF5 IG5vdCBrbm93IGFib3V0IGEgcGFydGljdWxhcgotICogaHdpZidzIGlycSB1bnRpbCBhZnRlciB0 aGF0IGh3aWYgaXMgYWN0dWFsbHkgcHJvYmVkL2luaXRpYWxpemVkLi4KLSAqIFRoaXMgY291bGQg YmUgYSBwcm9ibGVtIGZvciB0aGUgY2FzZSB3aGVyZSBhbiBod2lmIGlzIG9uIGEKLSAqIGR1YWwg aW50ZXJmYWNlIHRoYXQgcmVxdWlyZXMgc2VyaWFsaXphdGlvbiAoZWcuIGNtZDY0MCkgYW5kIGFu b3RoZXIKLSAqIGh3aWYgdXNpbmcgb25lIG9mIHRoZSBzYW1lIGlycXMgaXMgaW5pdGlhbGl6ZWQg YmVmb3JlaGFuZC4KLSAqCi0gKiBUaGlzIHJvdXRpbmUgZGV0ZWN0cyBhbmQgcmVwb3J0cyBzdWNo IHNpdHVhdGlvbnMsIGJ1dCBkb2VzIG5vdCBmaXggdGhlbS4KLSAqLwotc3RhdGljIHZvaWQgc2F2 ZV9tYXRjaChpZGVfaHdpZl90ICpod2lmLCBpZGVfaHdpZl90ICpuZXcsIGlkZV9od2lmX3QgKipt YXRjaCkKLXsKLQlpZGVfaHdpZl90ICptID0gKm1hdGNoOwotCi0JaWYgKG0gJiYgbS0+aHdncm91 cCAmJiBtLT5od2dyb3VwICE9IG5ldy0+aHdncm91cCkgewotCQlpZiAoIW5ldy0+aHdncm91cCkK LQkJCXJldHVybjsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHBvdGVudGlhbCBJUlEgcHJv YmxlbSB3aXRoICVzIGFuZCAlc1xuIiwKLQkJCWh3aWYtPm5hbWUsIG5ldy0+bmFtZSwgbS0+bmFt ZSk7Ci0JfQotCWlmICghbSB8fCBtLT5pcnEgIT0gaHdpZi0+aXJxKSAvKiBkb24ndCB1bmRvIGEg cHJpb3IgcGVyZmVjdCBtYXRjaCAqLwotCQkqbWF0Y2ggPSBuZXc7Ci19Ci0KLS8qCiAgKiBpbml0 IHJlcXVlc3QgcXVldWUKICAqLwogc3RhdGljIGludCBpZGVfaW5pdF9xdWV1ZShpZGVfZHJpdmVf dCAqZHJpdmUpCkBAIC05MDYsNyArODc4LDggQEAgc3RhdGljIGludCBpZGVfaW5pdF9xdWV1ZShp ZGVfZHJpdmVfdCAqZHJpdmUpCiAJICoJZG8gbm90LgogCSAqLwogCi0JcSA9IGJsa19pbml0X3F1 ZXVlX25vZGUoZG9faWRlX3JlcXVlc3QsICZpZGVfbG9jaywgaHdpZl90b19ub2RlKGh3aWYpKTsK KwlxID0gYmxrX2luaXRfcXVldWVfbm9kZShkb19pZGVfcmVxdWVzdCwgJmh3aWYtPmh3Z3JvdXAt PmxvY2ssCisJCQkJaHdpZl90b19ub2RlKGh3aWYpKTsKIAlpZiAoIXEpCiAJCXJldHVybiAxOwog CkBAIC05NDcsNyArOTIwLDcgQEAgc3RhdGljIHZvaWQgaWRlX2FkZF9kcml2ZV90b19od2dyb3Vw KGlkZV9kcml2ZV90ICpkcml2ZSkKIHsKIAlpZGVfaHdncm91cF90ICpod2dyb3VwID0gZHJpdmUt Pmh3aWYtPmh3Z3JvdXA7CiAKLQlzcGluX2xvY2tfaXJxKCZpZGVfbG9jayk7CisJc3Bpbl9sb2Nr X2lycSgmaHdncm91cC0+bG9jayk7CiAJaWYgKCFod2dyb3VwLT5kcml2ZSkgewogCQkvKiBmaXJz dCBkcml2ZSBmb3IgaHdncm91cC4gKi8KIAkJZHJpdmUtPm5leHQgPSBkcml2ZTsKQEAgLTk1Nyw3 ICs5MzAsNyBAQCBzdGF0aWMgdm9pZCBpZGVfYWRkX2RyaXZlX3RvX2h3Z3JvdXAoaWRlX2RyaXZl X3QgKmRyaXZlKQogCQlkcml2ZS0+bmV4dCA9IGh3Z3JvdXAtPmRyaXZlLT5uZXh0OwogCQlod2dy b3VwLT5kcml2ZS0+bmV4dCA9IGRyaXZlOwogCX0KLQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2Nr KTsKKwlzcGluX3VubG9ja19pcnEoJmh3Z3JvdXAtPmxvY2spOwogfQogCiAvKgpAQCAtMTAwMiw3 ICs5NzUsNyBAQCB2b2lkIGlkZV9yZW1vdmVfcG9ydF9mcm9tX2h3Z3JvdXAoaWRlX2h3aWZfdCAq aHdpZikKIAogCWlkZV9wb3J0c1tod2lmLT5pbmRleF0gPSBOVUxMOwogCi0Jc3Bpbl9sb2NrX2ly cSgmaWRlX2xvY2spOworCXNwaW5fbG9ja19pcnEoJmh3Z3JvdXAtPmxvY2spOwogCS8qCiAJICog UmVtb3ZlIHVzIGZyb20gdGhlIGh3Z3JvdXAsIGFuZCBmcmVlCiAJICogdGhlIGh3Z3JvdXAgaWYg d2Ugd2VyZSB0aGUgb25seSBtZW1iZXIKQEAgLTEwMzAsNyArMTAwMyw3IEBAIHZvaWQgaWRlX3Jl bW92ZV9wb3J0X2Zyb21faHdncm91cChpZGVfaHdpZl90ICpod2lmKQogCQl9CiAJCUJVR19PTiho d2dyb3VwLT5od2lmID09IGh3aWYpOwogCX0KLQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsK KwlzcGluX3VubG9ja19pcnEoJmh3Z3JvdXAtPmxvY2spOwogfQogCiAvKgpAQCAtMTA1MSwyNyAr MTAyNCwxMyBAQCBzdGF0aWMgaW50IGluaXRfaXJxIChpZGVfaHdpZl90ICpod2lmKQogCW11dGV4 X2xvY2soJmlkZV9jZmdfbXR4KTsKIAlod2lmLT5od2dyb3VwID0gTlVMTDsKIAotCS8qCi0JICog R3JvdXAgdXAgd2l0aCBhbnkgb3RoZXIgaHdpZnMgdGhhdCBzaGFyZSBvdXIgaXJxKHMpLgotCSAq LwogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IE1BWF9IV0lGUzsgaW5kZXgrKykgewogCQlpZGVf aHdpZl90ICpoID0gaWRlX3BvcnRzW2luZGV4XTsKIAogCQlpZiAoaCAmJiBoLT5od2dyb3VwKSB7 ICAvKiBzY2FuIG9ubHkgaW5pdGlhbGl6ZWQgcG9ydHMgKi8KLQkJCWlmIChod2lmLT5pcnEgPT0g aC0+aXJxKSB7Ci0JCQkJaHdpZi0+c2hhcmluZ19pcnEgPSBoLT5zaGFyaW5nX2lycSA9IDE7Ci0J CQkJaWYgKGh3aWYtPmNoaXBzZXQgIT0gaWRlX3BjaSB8fAotCQkJCSAgICBoLT5jaGlwc2V0ICE9 IGlkZV9wY2kpIHsKLQkJCQkJc2F2ZV9tYXRjaChod2lmLCBoLCAmbWF0Y2gpOwotCQkJCX0KLQkJ CX0KLQkJCWlmIChod2lmLT5zZXJpYWxpemVkKSB7Ci0JCQkJaWYgKGh3aWYtPm1hdGUgJiYgaHdp Zi0+bWF0ZS0+aXJxID09IGgtPmlycSkKLQkJCQkJc2F2ZV9tYXRjaChod2lmLCBoLCAmbWF0Y2gp OwotCQkJfQotCQkJaWYgKGgtPnNlcmlhbGl6ZWQpIHsKLQkJCQlpZiAoaC0+bWF0ZSAmJiBod2lm LT5pcnEgPT0gaC0+bWF0ZS0+aXJxKQotCQkJCQlzYXZlX21hdGNoKGh3aWYsIGgsICZtYXRjaCk7 CisJCQlpZiAoaHdpZi0+aG9zdC0+aG9zdF9mbGFncyAmIElERV9IRkxBR19TRVJJQUxJWkUpIHsK KwkJCQlpZiAoaHdpZi0+aG9zdCA9PSBoLT5ob3N0KQorCQkJCQltYXRjaCA9IGg7CiAJCQl9CiAJ CX0KIAl9CkBAIC0xMDkyLDE3ICsxMDUxLDE5IEBAIHN0YXRpYyBpbnQgaW5pdF9pcnEgKGlkZV9o d2lmX3QgKmh3aWYpCiAJCSAqIGxpbmtlZCBsaXN0LCB0aGUgZmlyc3QgZW50cnkgaXMgdGhlIGh3 aWYgdGhhdCBvd25zCiAJCSAqIGh3Z3JvdXAtPmhhbmRsZXIgLSBkbyBub3QgY2hhbmdlIHRoYXQu CiAJCSAqLwotCQlzcGluX2xvY2tfaXJxKCZpZGVfbG9jayk7CisJCXNwaW5fbG9ja19pcnEoJmh3 Z3JvdXAtPmxvY2spOwogCQlod2lmLT5uZXh0ID0gaHdncm91cC0+aHdpZi0+bmV4dDsKIAkJaHdn cm91cC0+aHdpZi0+bmV4dCA9IGh3aWY7CiAJCUJVR19PTihod2lmLT5uZXh0ID09IGh3aWYpOwot CQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZod2dyb3Vw LT5sb2NrKTsKIAl9IGVsc2UgewogCQlod2dyb3VwID0ga21hbGxvY19ub2RlKHNpemVvZigqaHdn cm91cCksIEdGUF9LRVJORUx8X19HRlBfWkVSTywKIAkJCQkgICAgICAgaHdpZl90b19ub2RlKGh3 aWYpKTsKIAkJaWYgKGh3Z3JvdXAgPT0gTlVMTCkKIAkJCWdvdG8gb3V0X3VwOwogCisJCXNwaW5f bG9ja19pbml0KCZod2dyb3VwLT5sb2NrKTsKKwogCQlod2lmLT5od2dyb3VwID0gaHdncm91cDsK IAkJaHdncm91cC0+aHdpZiA9IGh3aWYtPm5leHQgPSBod2lmOwogCkBAIC0xMTIyLDggKzEwODMs NyBAQCBzdGF0aWMgaW50IGluaXRfaXJxIChpZGVfaHdpZl90ICpod2lmKQogCQlzYSA9IElSUUZf U0hBUkVEOwogI2VuZGlmIC8qIF9fbWM2ODAwMF9fICovCiAKLQkJaWYgKGh3aWYtPmNoaXBzZXQg PT0gaWRlX3BjaSB8fCBod2lmLT5jaGlwc2V0ID09IGlkZV9jbWQ2NDYgfHwKLQkJICAgIGh3aWYt PmNoaXBzZXQgPT0gaWRlX2FsaTE0eHgpCisJCWlmIChod2lmLT5jaGlwc2V0ID09IGlkZV9wY2kp CiAJCQlzYSA9IElSUUZfU0hBUkVEOwogCiAJCWlmIChpb19wb3J0cy0+Y3RsX2FkZHIpCkBAIC0x MTUwLDggKzExMTAsNyBAQCBzdGF0aWMgaW50IGluaXRfaXJxIChpZGVfaHdpZl90ICpod2lmKQog CQlpb19wb3J0cy0+ZGF0YV9hZGRyLCBod2lmLT5pcnEpOwogI2VuZGlmIC8qIF9fbWM2ODAwMF9f ICovCiAJaWYgKG1hdGNoKQotCQlwcmludGsoS0VSTl9DT05UICIgKCVzZWQgd2l0aCAlcykiLAot CQkJaHdpZi0+c2hhcmluZ19pcnEgPyAic2hhciIgOiAic2VyaWFsaXoiLCBtYXRjaC0+bmFtZSk7 CisJCXByaW50ayhLRVJOX0NPTlQgIiAoc2VyaWFsaXplZCB3aXRoICVzKSIsIG1hdGNoLT5uYW1l KTsKIAlwcmludGsoS0VSTl9DT05UICJcbiIpOwogCiAJbXV0ZXhfdW5sb2NrKCZpZGVfY2ZnX210 eCk7CkBAIC0xMjYzLDIwICsxMjIyLDIxIEBAIHN0YXRpYyB2b2lkIGlkZV9yZW1vdmVfZHJpdmVf ZnJvbV9od2dyb3VwKGlkZV9kcml2ZV90ICpkcml2ZSkKIHN0YXRpYyB2b2lkIGRyaXZlX3JlbGVh c2VfZGV2IChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJaWRlX2RyaXZlX3QgKmRyaXZlID0gY29u dGFpbmVyX29mKGRldiwgaWRlX2RyaXZlX3QsIGdlbmRldik7CisJaWRlX2h3Z3JvdXBfdCAqaHdn cm91cCA9IGRyaXZlLT5od2lmLT5od2dyb3VwOwogCiAJaWRlX3Byb2NfdW5yZWdpc3Rlcl9kZXZp Y2UoZHJpdmUpOwogCi0Jc3Bpbl9sb2NrX2lycSgmaWRlX2xvY2spOworCXNwaW5fbG9ja19pcnEo Jmh3Z3JvdXAtPmxvY2spOwogCWlkZV9yZW1vdmVfZHJpdmVfZnJvbV9od2dyb3VwKGRyaXZlKTsK IAlrZnJlZShkcml2ZS0+aWQpOwogCWRyaXZlLT5pZCA9IE5VTEw7CiAJZHJpdmUtPmRldl9mbGFn cyAmPSB+SURFX0RGTEFHX1BSRVNFTlQ7CiAJLyogTWVzc2VkIHVwIGxvY2tpbmcgLi4uICovCi0J c3Bpbl91bmxvY2tfaXJxKCZpZGVfbG9jayk7CisJc3Bpbl91bmxvY2tfaXJxKCZod2dyb3VwLT5s b2NrKTsKIAlibGtfY2xlYW51cF9xdWV1ZShkcml2ZS0+cXVldWUpOwotCXNwaW5fbG9ja19pcnEo JmlkZV9sb2NrKTsKKwlzcGluX2xvY2tfaXJxKCZod2dyb3VwLT5sb2NrKTsKIAlkcml2ZS0+cXVl dWUgPSBOVUxMOwotCXNwaW5fdW5sb2NrX2lycSgmaWRlX2xvY2spOworCXNwaW5fdW5sb2NrX2ly cSgmaHdncm91cC0+bG9jayk7CiAKIAljb21wbGV0ZSgmZHJpdmUtPmdlbmRldl9yZWxfY29tcCk7 CiB9CkBAIC0xMzUyLDcgKzEzMTIsNyBAQCBzdGF0aWMgdm9pZCBod2lmX3JlZ2lzdGVyX2Rldmlj ZXMoaWRlX2h3aWZfdCAqaHdpZikKIAkJaWYgKChkcml2ZS0+ZGV2X2ZsYWdzICYgSURFX0RGTEFH X1BSRVNFTlQpID09IDApCiAJCQljb250aW51ZTsKIAotCQlzbnByaW50ZihkZXYtPmJ1c19pZCwg QlVTX0lEX1NJWkUsICIldS4ldSIsIGh3aWYtPmluZGV4LCBpKTsKKwkJZGV2X3NldF9uYW1lKGRl diwgIiV1LiV1IiwgaHdpZi0+aW5kZXgsIGkpOwogCQlkZXYtPnBhcmVudCA9ICZod2lmLT5nZW5k ZXY7CiAJCWRldi0+YnVzID0gJmlkZV9idXNfdHlwZTsKIAkJZGV2LT5kcml2ZXJfZGF0YSA9IGRy aXZlOwpAQCAtMTQzNiwxMyArMTM5NiwxMSBAQCBzdGF0aWMgdm9pZCBpZGVfaW5pdF9wb3J0KGlk ZV9od2lmX3QgKmh3aWYsIHVuc2lnbmVkIGludCBwb3J0LAogCX0KIAogCWlmICgoZC0+aG9zdF9m bGFncyAmIElERV9IRkxBR19TRVJJQUxJWkUpIHx8Ci0JICAgICgoZC0+aG9zdF9mbGFncyAmIElE RV9IRkxBR19TRVJJQUxJWkVfRE1BKSAmJiBod2lmLT5kbWFfYmFzZSkpIHsKLQkJaWYgKGh3aWYt Pm1hdGUpCi0JCQlod2lmLT5tYXRlLT5zZXJpYWxpemVkID0gaHdpZi0+c2VyaWFsaXplZCA9IDE7 Ci0JfQorCSAgICAoKGQtPmhvc3RfZmxhZ3MgJiBJREVfSEZMQUdfU0VSSUFMSVpFX0RNQSkgJiYg aHdpZi0+ZG1hX2Jhc2UpKQorCQlod2lmLT5ob3N0LT5ob3N0X2ZsYWdzIHw9IElERV9IRkxBR19T RVJJQUxJWkU7CiAKLQlpZiAoZC0+aG9zdF9mbGFncyAmIElERV9IRkxBR19SUVNJWkVfMjU2KQot CQlod2lmLT5ycXNpemUgPSAyNTY7CisJaWYgKGQtPm1heF9zZWN0b3JzKQorCQlod2lmLT5ycXNp emUgPSBkLT5tYXhfc2VjdG9yczsKIAogCS8qIGNhbGwgY2hpcHNldCBzcGVjaWZpYyByb3V0aW5l IGZvciBlYWNoIGVuYWJsZWQgcG9ydCAqLwogCWlmIChkLT5pbml0X2h3aWYpCkBAIC0xNzk0LDU5 ICsxNzUyLDMgQEAgdm9pZCBpZGVfcG9ydF9zY2FuKGlkZV9od2lmX3QgKmh3aWYpCiAJaWRlX3By b2NfcG9ydF9yZWdpc3Rlcl9kZXZpY2VzKGh3aWYpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoaWRl X3BvcnRfc2Nhbik7Ci0KLXN0YXRpYyB2b2lkIGlkZV9sZWdhY3lfaW5pdF9vbmUoaHdfcmVnc190 ICoqaHdzLCBod19yZWdzX3QgKmh3LAotCQkJCXU4IHBvcnRfbm8sIGNvbnN0IHN0cnVjdCBpZGVf cG9ydF9pbmZvICpkLAotCQkJCXVuc2lnbmVkIGxvbmcgY29uZmlnKQotewotCXVuc2lnbmVkIGxv bmcgYmFzZSwgY3RsOwotCWludCBpcnE7Ci0KLQlpZiAocG9ydF9ubyA9PSAwKSB7Ci0JCWJhc2Ug PSAweDFmMDsKLQkJY3RsICA9IDB4M2Y2OwotCQlpcnEgID0gMTQ7Ci0JfSBlbHNlIHsKLQkJYmFz ZSA9IDB4MTcwOwotCQljdGwgID0gMHgzNzY7Ci0JCWlycSAgPSAxNTsKLQl9Ci0KLQlpZiAoIXJl cXVlc3RfcmVnaW9uKGJhc2UsIDgsIGQtPm5hbWUpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6 IEkvTyByZXNvdXJjZSAweCVsWC0weCVsWCBub3QgZnJlZS5cbiIsCi0JCQkJZC0+bmFtZSwgYmFz ZSwgYmFzZSArIDcpOwotCQlyZXR1cm47Ci0JfQotCi0JaWYgKCFyZXF1ZXN0X3JlZ2lvbihjdGws IDEsIGQtPm5hbWUpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IEkvTyByZXNvdXJjZSAweCVs WCBub3QgZnJlZS5cbiIsCi0JCQkJZC0+bmFtZSwgY3RsKTsKLQkJcmVsZWFzZV9yZWdpb24oYmFz ZSwgOCk7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZGVfc3RkX2luaXRfcG9ydHMoaHcsIGJhc2UsIGN0 bCk7Ci0JaHctPmlycSA9IGlycTsKLQlody0+Y2hpcHNldCA9IGQtPmNoaXBzZXQ7Ci0JaHctPmNv bmZpZyA9IGNvbmZpZzsKLQotCWh3c1twb3J0X25vXSA9IGh3OwotfQotCi1pbnQgaWRlX2xlZ2Fj eV9kZXZpY2VfYWRkKGNvbnN0IHN0cnVjdCBpZGVfcG9ydF9pbmZvICpkLCB1bnNpZ25lZCBsb25n IGNvbmZpZykKLXsKLQlod19yZWdzX3QgaHdbMl0sICpod3NbXSA9IHsgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCB9OwotCi0JbWVtc2V0KCZodywgMCwgc2l6ZW9mKGh3KSk7Ci0KLQlpZiAoKGQtPmhv c3RfZmxhZ3MgJiBJREVfSEZMQUdfUURfMk5EX1BPUlQpID09IDApCi0JCWlkZV9sZWdhY3lfaW5p dF9vbmUoaHdzLCAmaHdbMF0sIDAsIGQsIGNvbmZpZyk7Ci0JaWRlX2xlZ2FjeV9pbml0X29uZSho d3MsICZod1sxXSwgMSwgZCwgY29uZmlnKTsKLQotCWlmIChod3NbMF0gPT0gTlVMTCAmJiBod3Nb MV0gPT0gTlVMTCAmJgotCSAgICAoZC0+aG9zdF9mbGFncyAmIElERV9IRkxBR19TSU5HTEUpKQot CQlyZXR1cm4gLUVOT0VOVDsKLQotCXJldHVybiBpZGVfaG9zdF9hZGQoZCwgaHdzLCBOVUxMKTsK LX0KLUVYUE9SVF9TWU1CT0xfR1BMKGlkZV9sZWdhY3lfZGV2aWNlX2FkZCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2lkZS9pZGUtcHJvYy5jIGIvZHJpdmVycy9pZGUvaWRlLXByb2MuYwppbmRleCBm M2NkZGQxLi5hMTRlMjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtcHJvYy5jCisrKyBi L2RyaXZlcnMvaWRlL2lkZS1wcm9jLmMKQEAgLTQ2LDEwICs0Niw2IEBAIHN0YXRpYyBpbnQgcHJv Y19pZGVfcmVhZF9pbW9kZWwKIAljYXNlIGlkZV9xZDY1eHg6CW5hbWUgPSAicWQ2NXh4IjsJYnJl YWs7CiAJY2FzZSBpZGVfdW1jODY3MjoJbmFtZSA9ICJ1bWM4NjcyIjsJYnJlYWs7CiAJY2FzZSBp ZGVfaHQ2NTYwYjoJbmFtZSA9ICJodDY1NjBiIjsJYnJlYWs7Ci0JY2FzZSBpZGVfcnoxMDAwOglu YW1lID0gInJ6MTAwMCI7CWJyZWFrOwotCWNhc2UgaWRlX3RybTI5MDoJbmFtZSA9ICJ0cm0yOTAi OwlicmVhazsKLQljYXNlIGlkZV9jbWQ2NDY6CW5hbWUgPSAiY21kNjQ2IjsJYnJlYWs7Ci0JY2Fz ZSBpZGVfY3k4MmM2OTM6CW5hbWUgPSAiY3k4MmM2OTMiOwlicmVhazsKIAljYXNlIGlkZV80ZHJp dmVzOgluYW1lID0gIjRkcml2ZXMiOwlicmVhazsKIAljYXNlIGlkZV9wbWFjOgkJbmFtZSA9ICJt YWMtaW8iOwlicmVhazsKIAljYXNlIGlkZV9hdTF4eHg6CW5hbWUgPSAiYXUxeHh4IjsJYnJlYWs7 CkBAIC0xNTUsMTMgKzE1MSw4IEBAIHN0YXRpYyBpbnQgaWRlX3JlYWRfc2V0dGluZyhpZGVfZHJp dmVfdCAqZHJpdmUsCiAJY29uc3Qgc3RydWN0IGlkZV9kZXZzZXQgKmRzID0gc2V0dGluZy0+c2V0 dGluZzsKIAlpbnQgdmFsID0gLUVJTlZBTDsKIAotCWlmIChkcy0+Z2V0KSB7Ci0JCXVuc2lnbmVk IGxvbmcgZmxhZ3M7Ci0KLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7CisJ aWYgKGRzLT5nZXQpCiAJCXZhbCA9IGRzLT5nZXQoZHJpdmUpOwotCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZpZGVfbG9jaywgZmxhZ3MpOwotCX0KIAogCXJldHVybiB2YWw7CiB9CkBAIC01ODMs MzEgKzU3NCwxOSBAQCBFWFBPUlRfU1lNQk9MKGlkZV9wcm9jX3JlZ2lzdGVyX2RyaXZlcik7CiAg KglDbGVhbiB1cCB0aGUgZHJpdmVyIHNwZWNpZmljIC9wcm9jIGZpbGVzIGFuZCBJREUgc2V0dGlu Z3MKICAqCWZvciBhIGdpdmVuIGRyaXZlLgogICoKLSAqCVRha2VzIGlkZV9zZXR0aW5nX210eCBh bmQgaWRlX2xvY2suCi0gKglDYWxsZXIgbXVzdCBob2xkIG5vbmUgb2YgdGhlIGxvY2tzLgorICoJ VGFrZXMgaWRlX3NldHRpbmdfbXR4LgogICovCiAKIHZvaWQgaWRlX3Byb2NfdW5yZWdpc3Rlcl9k cml2ZXIoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfZHJpdmVyX3QgKmRyaXZlcikKIHsKLQl1bnNp Z25lZCBsb25nIGZsYWdzOwotCiAJaWRlX3JlbW92ZV9wcm9jX2VudHJpZXMoZHJpdmUtPnByb2Ms IGRyaXZlci0+cHJvY19lbnRyaWVzKGRyaXZlKSk7CiAKIAltdXRleF9sb2NrKCZpZGVfc2V0dGlu Z19tdHgpOwotCXNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9jaywgZmxhZ3MpOwogCS8qCi0JICog aWRlX3NldHRpbmdfbXR4IHByb3RlY3RzIHRoZSBzZXR0aW5ncyBsaXN0Ci0JICogaWRlX2xvY2sg cHJvdGVjdHMgdGhlIHVzZSBvZiBzZXR0aW5ncwotCSAqCi0JICogc28gd2UgbmVlZCB0byBob2xk IGJvdGgsIGlkZV9zZXR0aW5nc19zZW0gYmVjYXVzZSB3ZSB3YW50IHRvCi0JICogbW9kaWZ5IHRo ZSBzZXR0aW5ncyBsaXN0LCBhbmQgaWRlX2xvY2sgYmVjYXVzZSB3ZSBjYW5ub3QgdGFrZQotCSAq IGEgc2V0dGluZyBvdXQgdGhhdCBpcyBiZWluZyB1c2VkLgotCSAqCi0JICogT1RPSCBib3RoIGlk ZV97cmVhZCx3cml0ZX1fc2V0dGluZyBhcmUgb25seSBldmVyIHVzZWQgdW5kZXIKLQkgKiBpZGVf c2V0dGluZ19tdHguCisJICogaWRlX3NldHRpbmdfbXR4IHByb3RlY3RzIGJvdGggdGhlIHNldHRp bmdzIGxpc3QgYW5kIHRoZSB1c2UKKwkgKiBvZiBzZXR0aW5ncyAod2UgY2Fubm90IHRha2UgYSBz ZXR0aW5nIG91dCB0aGF0IGlzIGJlaW5nIHVzZWQpLgogCSAqLwogCWRyaXZlLT5zZXR0aW5ncyA9 IE5VTEw7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaWRlX2xvY2ssIGZsYWdzKTsKIAltdXRl eF91bmxvY2soJmlkZV9zZXR0aW5nX210eCk7CiB9CiBFWFBPUlRfU1lNQk9MKGlkZV9wcm9jX3Vu cmVnaXN0ZXJfZHJpdmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS5jIGIvZHJpdmVy cy9pZGUvaWRlLmMKaW5kZXggMDRmOGYxMy4uZjBmMDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9p ZGUvaWRlLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLmMKQEAgLTc0LDkgKzc0LDYgQEAgc3RhdGlj IGNvbnN0IHU4IGlkZV9od2lmX3RvX21ham9yW10gPSB7IElERTBfTUFKT1IsIElERTFfTUFKT1Is CiAKIERFRklORV9NVVRFWChpZGVfY2ZnX210eCk7CiAKLV9fY2FjaGVsaW5lX2FsaWduZWRfaW5f c21wIERFRklORV9TUElOTE9DSyhpZGVfbG9jayk7Ci1FWFBPUlRfU1lNQk9MKGlkZV9sb2NrKTsK LQogc3RhdGljIHZvaWQgaWRlX3BvcnRfaW5pdF9kZXZpY2VzX2RhdGEoaWRlX2h3aWZfdCAqKTsK IAogLyoKQEAgLTEzMCw3ICsxMjcsNiBAQCBzdGF0aWMgdm9pZCBpZGVfcG9ydF9pbml0X2Rldmlj ZXNfZGF0YShpZGVfaHdpZl90ICpod2lmKQogCX0KIH0KIAotLyogQ2FsbGVkIHdpdGggaWRlX2xv Y2sgaGVsZC4gKi8KIHN0YXRpYyB2b2lkIF9faWRlX3BvcnRfdW5yZWdpc3Rlcl9kZXZpY2VzKGlk ZV9od2lmX3QgKmh3aWYpCiB7CiAJaW50IGk7CkBAIC0xMzksMTAgKzEzNSw4IEBAIHN0YXRpYyB2 b2lkIF9faWRlX3BvcnRfdW5yZWdpc3Rlcl9kZXZpY2VzKGlkZV9od2lmX3QgKmh3aWYpCiAJCWlk ZV9kcml2ZV90ICpkcml2ZSA9ICZod2lmLT5kcml2ZXNbaV07CiAKIAkJaWYgKGRyaXZlLT5kZXZf ZmxhZ3MgJiBJREVfREZMQUdfUFJFU0VOVCkgewotCQkJc3Bpbl91bmxvY2tfaXJxKCZpZGVfbG9j ayk7CiAJCQlkZXZpY2VfdW5yZWdpc3RlcigmZHJpdmUtPmdlbmRldik7CiAJCQl3YWl0X2Zvcl9j b21wbGV0aW9uKCZkcml2ZS0+Z2VuZGV2X3JlbF9jb21wKTsKLQkJCXNwaW5fbG9ja19pcnEoJmlk ZV9sb2NrKTsKIAkJfQogCX0KIH0KQEAgLTE1MCwxMSArMTQ0LDkgQEAgc3RhdGljIHZvaWQgX19p ZGVfcG9ydF91bnJlZ2lzdGVyX2RldmljZXMoaWRlX2h3aWZfdCAqaHdpZikKIHZvaWQgaWRlX3Bv cnRfdW5yZWdpc3Rlcl9kZXZpY2VzKGlkZV9od2lmX3QgKmh3aWYpCiB7CiAJbXV0ZXhfbG9jaygm aWRlX2NmZ19tdHgpOwotCXNwaW5fbG9ja19pcnEoJmlkZV9sb2NrKTsKIAlfX2lkZV9wb3J0X3Vu cmVnaXN0ZXJfZGV2aWNlcyhod2lmKTsKIAlod2lmLT5wcmVzZW50ID0gMDsKIAlpZGVfcG9ydF9p bml0X2RldmljZXNfZGF0YShod2lmKTsKLQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsKIAlt dXRleF91bmxvY2soJmlkZV9jZmdfbXR4KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlkZV9wb3J0 X3VucmVnaXN0ZXJfZGV2aWNlcyk7CkBAIC0xOTIsMTIgKzE4NCwxMCBAQCB2b2lkIGlkZV91bnJl Z2lzdGVyKGlkZV9od2lmX3QgKmh3aWYpCiAKIAltdXRleF9sb2NrKCZpZGVfY2ZnX210eCk7CiAK LQlzcGluX2xvY2tfaXJxKCZpZGVfbG9jayk7CiAJaWYgKGh3aWYtPnByZXNlbnQpIHsKIAkJX19p ZGVfcG9ydF91bnJlZ2lzdGVyX2RldmljZXMoaHdpZik7CiAJCWh3aWYtPnByZXNlbnQgPSAwOwog CX0KLQlzcGluX3VubG9ja19pcnEoJmlkZV9sb2NrKTsKIAogCWlkZV9wcm9jX3VucmVnaXN0ZXJf cG9ydChod2lmKTsKIApAQCAtMzQwLDYgKzMzMCw3IEBAIHN0YXRpYyBpbnQgc2V0X3Bpb19tb2Rl X2FidXNlKGlkZV9od2lmX3QgKmh3aWYsIHU4IHJlcV9waW8pCiBzdGF0aWMgaW50IHNldF9waW9f bW9kZShpZGVfZHJpdmVfdCAqZHJpdmUsIGludCBhcmcpCiB7CiAJaWRlX2h3aWZfdCAqaHdpZiA9 IGRyaXZlLT5od2lmOworCWlkZV9od2dyb3VwX3QgKmh3Z3JvdXAgPSBod2lmLT5od2dyb3VwOwog CWNvbnN0IHN0cnVjdCBpZGVfcG9ydF9vcHMgKnBvcnRfb3BzID0gaHdpZi0+cG9ydF9vcHM7CiAK IAlpZiAoYXJnIDwgMCB8fCBhcmcgPiAyNTUpCkBAIC0zNTQsOSArMzQ1LDkgQEAgc3RhdGljIGlu dCBzZXRfcGlvX21vZGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgYXJnKQogCQkJdW5zaWduZWQg bG9uZyBmbGFnczsKIAogCQkJLyogdGFrZSBsb2NrIGZvciBJREVfREZMQUdfW05PX11VTk1BU0sv W05PX11JT18zMkJJVCAqLwotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7 CisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaHdncm91cC0+bG9jaywgZmxhZ3MpOwogCQkJcG9ydF9v cHMtPnNldF9waW9fbW9kZShkcml2ZSwgYXJnKTsKLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmlkZV9sb2NrLCBmbGFncyk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZod2dyb3VwLT5s b2NrLCBmbGFncyk7CiAJCX0gZWxzZQogCQkJcG9ydF9vcHMtPnNldF9waW9fbW9kZShkcml2ZSwg YXJnKTsKIAl9IGVsc2UgewpAQCAtMzk3LDgwICszODgsNiBAQCBpZGVfZXh0X2RldnNldF9yd19z eW5jKHVubWFza2lycSwgdW5tYXNraXJxKTsKIGlkZV9leHRfZGV2c2V0X3J3X3N5bmModXNpbmdf ZG1hLCB1c2luZ19kbWEpOwogX19JREVfREVWU0VUKHBpb19tb2RlLCBEU19TWU5DLCBOVUxMLCBz ZXRfcGlvX21vZGUpOwogCi1zdGF0aWMgaW50IGdlbmVyaWNfaWRlX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2LCBwbV9tZXNzYWdlX3QgbWVzZykKLXsKLQlpZGVfZHJpdmVfdCAqZHJpdmUgPSBk ZXYtPmRyaXZlcl9kYXRhLCAqcGFpciA9IGlkZV9nZXRfcGFpcl9kZXYoZHJpdmUpOwotCWlkZV9o d2lmX3QgKmh3aWYgPSBIV0lGKGRyaXZlKTsKLQlzdHJ1Y3QgcmVxdWVzdCAqcnE7Ci0Jc3RydWN0 IHJlcXVlc3RfcG1fc3RhdGUgcnFwbTsKLQlpZGVfdGFza190IGFyZ3M7Ci0JaW50IHJldDsKLQot CS8qIGNhbGwgQUNQSSBfR1RNIG9ubHkgb25jZSAqLwotCWlmICgoZHJpdmUtPmRuICYgMSkgPT0g MCB8fCBwYWlyID09IE5VTEwpCi0JCWlkZV9hY3BpX2dldF90aW1pbmcoaHdpZik7Ci0KLQltZW1z ZXQoJnJxcG0sIDAsIHNpemVvZihycXBtKSk7Ci0JbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJn cykpOwotCXJxID0gYmxrX2dldF9yZXF1ZXN0KGRyaXZlLT5xdWV1ZSwgUkVBRCwgX19HRlBfV0FJ VCk7Ci0JcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfUE1fU1VTUEVORDsKLQlycS0+c3BlY2lhbCA9 ICZhcmdzOwotCXJxLT5kYXRhID0gJnJxcG07Ci0JcnFwbS5wbV9zdGVwID0gSURFX1BNX1NUQVJU X1NVU1BFTkQ7Ci0JaWYgKG1lc2cuZXZlbnQgPT0gUE1fRVZFTlRfUFJFVEhBVykKLQkJbWVzZy5l dmVudCA9IFBNX0VWRU5UX0ZSRUVaRTsKLQlycXBtLnBtX3N0YXRlID0gbWVzZy5ldmVudDsKLQot CXJldCA9IGJsa19leGVjdXRlX3JxKGRyaXZlLT5xdWV1ZSwgTlVMTCwgcnEsIDApOwotCWJsa19w dXRfcmVxdWVzdChycSk7Ci0KLQkvKiBjYWxsIEFDUEkgX1BTMyBvbmx5IGFmdGVyIGJvdGggZGV2 aWNlcyBhcmUgc3VzcGVuZGVkICovCi0JaWYgKHJldCA9PSAwICYmICgoZHJpdmUtPmRuICYgMSkg fHwgcGFpciA9PSBOVUxMKSkKLQkJaWRlX2FjcGlfc2V0X3N0YXRlKGh3aWYsIDApOwotCi0JcmV0 dXJuIHJldDsKLX0KLQotc3RhdGljIGludCBnZW5lcmljX2lkZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQotewotCWlkZV9kcml2ZV90ICpkcml2ZSA9IGRldi0+ZHJpdmVyX2RhdGEsICpwYWly ID0gaWRlX2dldF9wYWlyX2Rldihkcml2ZSk7Ci0JaWRlX2h3aWZfdCAqaHdpZiA9IEhXSUYoZHJp dmUpOwotCXN0cnVjdCByZXF1ZXN0ICpycTsKLQlzdHJ1Y3QgcmVxdWVzdF9wbV9zdGF0ZSBycXBt OwotCWlkZV90YXNrX3QgYXJnczsKLQlpbnQgZXJyOwotCi0JLyogY2FsbCBBQ1BJIF9QUzAgLyBf U1RNIG9ubHkgb25jZSAqLwotCWlmICgoZHJpdmUtPmRuICYgMSkgPT0gMCB8fCBwYWlyID09IE5V TEwpIHsKLQkJaWRlX2FjcGlfc2V0X3N0YXRlKGh3aWYsIDEpOwotCQlpZGVfYWNwaV9wdXNoX3Rp bWluZyhod2lmKTsKLQl9Ci0KLQlpZGVfYWNwaV9leGVjX3Rmcyhkcml2ZSk7Ci0KLQltZW1zZXQo JnJxcG0sIDAsIHNpemVvZihycXBtKSk7Ci0JbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykp OwotCXJxID0gYmxrX2dldF9yZXF1ZXN0KGRyaXZlLT5xdWV1ZSwgUkVBRCwgX19HRlBfV0FJVCk7 Ci0JcnEtPmNtZF90eXBlID0gUkVRX1RZUEVfUE1fUkVTVU1FOwotCXJxLT5jbWRfZmxhZ3MgfD0g UkVRX1BSRUVNUFQ7Ci0JcnEtPnNwZWNpYWwgPSAmYXJnczsKLQlycS0+ZGF0YSA9ICZycXBtOwot CXJxcG0ucG1fc3RlcCA9IElERV9QTV9TVEFSVF9SRVNVTUU7Ci0JcnFwbS5wbV9zdGF0ZSA9IFBN X0VWRU5UX09OOwotCi0JZXJyID0gYmxrX2V4ZWN1dGVfcnEoZHJpdmUtPnF1ZXVlLCBOVUxMLCBy cSwgMSk7Ci0JYmxrX3B1dF9yZXF1ZXN0KHJxKTsKLQotCWlmIChlcnIgPT0gMCAmJiBkZXYtPmRy aXZlcikgewotCQlpZGVfZHJpdmVyX3QgKmRydiA9IHRvX2lkZV9kcml2ZXIoZGV2LT5kcml2ZXIp OwotCi0JCWlmIChkcnYtPnJlc3VtZSkKLQkJCWRydi0+cmVzdW1lKGRyaXZlKTsKLQl9Ci0KLQly ZXR1cm4gZXJyOwotfQotCiAvKioKICAqIGlkZV9kZXZpY2VfZ2V0CS0JZ2V0IGFuIGFkZGl0aW9u YWwgcmVmZXJlbmNlIHRvIGEgaWRlX2RyaXZlX3QKICAqIEBkcml2ZToJZGV2aWNlIHRvIGdldCBh IHJlZmVyZW5jZSB0bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGRjMjAyeHhfb2xkLmMgYi9k cml2ZXJzL2lkZS9wZGMyMDJ4eF9vbGQuYwppbmRleCA3OTk1NTdjLi42MjRlNjJlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2lkZS9wZGMyMDJ4eF9vbGQuYworKysgYi9kcml2ZXJzL2lkZS9wZGMyMDJ4 eF9vbGQuYwpAQCAtMzUwLDE2ICszNTAsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZGVfZG1h X29wcyBwZGMyMDI2eF9kbWFfb3BzID0gewogCS5kbWFfdGltZW91dAkJPSBwZGMyMDJ4eF9kbWFf dGltZW91dCwKIH07CiAKLSNkZWZpbmUgREVDTEFSRV9QREMyMDI2WF9ERVYodWRtYSwgZXh0cmFf ZmxhZ3MpIFwKKyNkZWZpbmUgREVDTEFSRV9QREMyMDI2WF9ERVYodWRtYSwgc2VjdG9ycykgXAog CXsgXAogCQkubmFtZQkJPSBEUlZfTkFNRSwgXAogCQkuaW5pdF9jaGlwc2V0CT0gaW5pdF9jaGlw c2V0X3BkYzIwMnh4LCBcCiAJCS5wb3J0X29wcwk9ICZwZGMyMDI2eF9wb3J0X29wcywgXAogCQku ZG1hX29wcwk9ICZwZGMyMDI2eF9kbWFfb3BzLCBcCi0JCS5ob3N0X2ZsYWdzCT0gSURFX0hGTEFH U19QREMyMDJYWCB8IGV4dHJhX2ZsYWdzLCBcCisJCS5ob3N0X2ZsYWdzCT0gSURFX0hGTEFHU19Q REMyMDJYWCwgXAogCQkucGlvX21hc2sJPSBBVEFfUElPNCwgXAogCQkubXdkbWFfbWFzawk9IEFU QV9NV0RNQTIsIFwKIAkJLnVkbWFfbWFzawk9IHVkbWEsIFwKKwkJLm1heF9zZWN0b3JzCT0gc2Vj dG9ycywgXAogCX0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpZGVfcG9ydF9pbmZvIHBkYzIwMnh4 X2NoaXBzZXRzW10gX19kZXZpbml0ZGF0YSA9IHsKQEAgLTM3Niw4ICszNzcsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGlkZV9wb3J0X2luZm8gcGRjMjAyeHhfY2hpcHNldHNbXSBfX2RldmluaXRk YXRhID0gewogCiAJLyogMTogUERDMjAyNnsyLDN9ICovCiAJREVDTEFSRV9QREMyMDI2WF9ERVYo QVRBX1VETUE0LCAwKSwKLQkvKiAyOiBQREMyMDI2ezUsN30gKi8KLQlERUNMQVJFX1BEQzIwMjZY X0RFVihBVEFfVURNQTUsIElERV9IRkxBR19SUVNJWkVfMjU2KSwKKwkvKiAyOiBQREMyMDI2ezUs N306IFVETUE1LCBsaW1pdCBMQkE0OCByZXF1ZXN0cyB0byAyNTYgc2VjdG9ycyAqLworCURFQ0xB UkVfUERDMjAyNlhfREVWKEFUQV9VRE1BNSwgMjU2KSwKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pZGUvcnoxMDAwLmMgYi9kcml2ZXJzL2lkZS9yejEwMDAuYwppbmRleCA3ZGFmMDEz Li5hNjQxNGE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9yejEwMDAuYworKysgYi9kcml2ZXJz L2lkZS9yejEwMDAuYwpAQCAtMjIsMzQgKzIyLDQ4IEBACiAKICNkZWZpbmUgRFJWX05BTUUgInJ6 MTAwMCIKIAotc3RhdGljIHZvaWQgX19kZXZpbml0IGluaXRfaHdpZl9yejEwMDAgKGlkZV9od2lm X3QgKmh3aWYpCitzdGF0aWMgaW50IF9fZGV2aW5pdCByejEwMDBfZGlzYWJsZV9yZWFkYWhlYWQo c3RydWN0IHBjaV9kZXYgKmRldikKIHsKLQlzdHJ1Y3QgcGNpX2RldiAqZGV2ID0gdG9fcGNpX2Rl dihod2lmLT5kZXYpOwogCXUxNiByZWc7CiAKIAlpZiAoIXBjaV9yZWFkX2NvbmZpZ193b3JkIChk ZXYsIDB4NDAsICZyZWcpICYmCiAJICAgICFwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCAweDQw LCByZWcgJiAweGRmZmYpKSB7CiAJCXByaW50ayhLRVJOX0lORk8gIiVzOiBkaXNhYmxlZCBjaGlw c2V0IHJlYWQtYWhlYWQgIgotCQkJIihidWdneSBSWjEwMDAvUloxMDAxKVxuIiwgaHdpZi0+bmFt ZSk7CisJCQkiKGJ1Z2d5IFJaMTAwMC9SWjEwMDEpXG4iLCBwY2lfbmFtZShkZXYpKTsKKwkJcmV0 dXJuIDA7CiAJfSBlbHNlIHsKLQkJaWYgKGh3aWYtPm1hdGUpCi0JCQlod2lmLT5tYXRlLT5zZXJp YWxpemVkID0gaHdpZi0+c2VyaWFsaXplZCA9IDE7Ci0JCWh3aWYtPmhvc3RfZmxhZ3MgfD0gSURF X0hGTEFHX05PX1VOTUFTS19JUlFTOwogCQlwcmludGsoS0VSTl9JTkZPICIlczogc2VyaWFsaXpl ZCwgZGlzYWJsZWQgdW5tYXNraW5nICIKLQkJCSIoYnVnZ3kgUloxMDAwL1JaMTAwMSlcbiIsIGh3 aWYtPm5hbWUpOworCQkJIihidWdneSBSWjEwMDAvUloxMDAxKVxuIiwgcGNpX25hbWUoZGV2KSk7 CisJCXJldHVybiAxOwogCX0KIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpZGVfcG9ydF9pbmZv IHJ6MTAwMF9jaGlwc2V0IF9fZGV2aW5pdGRhdGEgPSB7CiAJLm5hbWUJCT0gRFJWX05BTUUsCi0J LmluaXRfaHdpZgk9IGluaXRfaHdpZl9yejEwMDAsCi0JLmNoaXBzZXQJPSBpZGVfcnoxMDAwLAog CS5ob3N0X2ZsYWdzCT0gSURFX0hGTEFHX05PX0RNQSwKIH07CiAKIHN0YXRpYyBpbnQgX19kZXZp bml0IHJ6MTAwMF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNp X2RldmljZV9pZCAqaWQpCiB7Ci0JcmV0dXJuIGlkZV9wY2lfaW5pdF9vbmUoZGV2LCAmcnoxMDAw X2NoaXBzZXQsIE5VTEwpOworCXN0cnVjdCBpZGVfcG9ydF9pbmZvIGQgPSByejEwMDBfY2hpcHNl dDsKKwlpbnQgcmM7CisKKwlyYyA9IHBjaV9lbmFibGVfZGV2aWNlKGRldik7CisJaWYgKHJjKQor CQlyZXR1cm4gcmM7CisKKwlpZiAocnoxMDAwX2Rpc2FibGVfcmVhZGFoZWFkKGRldikpIHsKKwkJ ZC5ob3N0X2ZsYWdzIHw9IElERV9IRkxBR19TRVJJQUxJWkU7CisJCWQuaG9zdF9mbGFncyB8PSBJ REVfSEZMQUdfTk9fVU5NQVNLX0lSUVM7CisJfQorCisJcmV0dXJuIGlkZV9wY2lfaW5pdF9vbmUo ZGV2LCAmZCwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIHJ6MTAwMF9yZW1vdmUoc3RydWN0IHBj aV9kZXYgKmRldikKK3sKKwlpZGVfcGNpX3JlbW92ZShkZXYpOworCXBjaV9kaXNhYmxlX2Rldmlj ZShkZXYpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnoxMDAwX3Bj aV90YmxbXSA9IHsKQEAgLTYzLDcgKzc3LDcgQEAgc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ6 MTAwMF9wY2lfZHJpdmVyID0gewogCS5uYW1lCQk9ICJSWjEwMDBfSURFIiwKIAkuaWRfdGFibGUJ PSByejEwMDBfcGNpX3RibCwKIAkucHJvYmUJCT0gcnoxMDAwX2luaXRfb25lLAotCS5yZW1vdmUJ CT0gaWRlX3BjaV9yZW1vdmUsCisJLnJlbW92ZQkJPSByejEwMDBfcmVtb3ZlLAogfTsKIAogc3Rh dGljIGludCBfX2luaXQgcnoxMDAwX2lkZV9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2lkZS90cm0yOTAuYyBiL2RyaXZlcnMvaWRlL3RybTI5MC5jCmluZGV4IDc1ZWE2MTUuLjJhNWVh OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3RybTI5MC5jCisrKyBiL2RyaXZlcnMvaWRlL3Ry bTI5MC5jCkBAIC0zMjgsMTAgKzMyOCwxMCBAQCBzdGF0aWMgc3RydWN0IGlkZV9kbWFfb3BzIHRy bTI5MF9kbWFfb3BzID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCBpZGVfcG9ydF9pbmZvIHRybTI5 MF9jaGlwc2V0IF9fZGV2aW5pdGRhdGEgPSB7CiAJLm5hbWUJCT0gRFJWX05BTUUsCiAJLmluaXRf aHdpZgk9IGluaXRfaHdpZl90cm0yOTAsCi0JLmNoaXBzZXQJPSBpZGVfdHJtMjkwLAogCS5wb3J0 X29wcwk9ICZ0cm0yOTBfcG9ydF9vcHMsCiAJLmRtYV9vcHMJPSAmdHJtMjkwX2RtYV9vcHMsCi0J Lmhvc3RfZmxhZ3MJPSBJREVfSEZMQUdfTk9fQVRBUElfRE1BIHwKKwkuaG9zdF9mbGFncwk9IElE RV9IRkxBR19UUk0yOTAgfAorCQkJICBJREVfSEZMQUdfTk9fQVRBUElfRE1BIHwKICNpZiAwIC8q IHBsYXkgaXQgc2FmZSBmb3Igbm93ICovCiAJCQkgIElERV9IRkxBR19UUlVTVF9CSU9TX0ZPUl9E TUEgfAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS90eDQ5MzhpZGUuYyBiL2RyaXZl cnMvaWRlL3R4NDkzOGlkZS5jCmluZGV4IDkxMjAwNjMuLjEzYjYzZTcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaWRlL3R4NDkzOGlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL3R4NDkzOGlkZS5jCkBAIC0x ODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgdHg0OTM4aWRlX2lucHV0X2RhdGFfc3dhcChpZGVf ZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAogCXdoaWxlIChjb3VudC0tKQog CQkqcHRyKysgPSBjcHVfdG9fbGUxNihfX3Jhd19yZWFkdygodm9pZCBfX2lvbWVtICopcG9ydCkp OwotCV9faWRlX2ZsdXNoX2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZylidWYsIGNvdW50ICog Mik7CisJX19pZGVfZmx1c2hfZGNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWJ1Ziwgcm91bmR1 cChsZW4sIDIpKTsKIH0KIAogc3RhdGljIHZvaWQgdHg0OTM4aWRlX291dHB1dF9kYXRhX3N3YXAo aWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCkBAIC0xOTUsNyArMTk1LDcg QEAgc3RhdGljIHZvaWQgdHg0OTM4aWRlX291dHB1dF9kYXRhX3N3YXAoaWRlX2RyaXZlX3QgKmRy aXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJCV9fcmF3X3dyaXRldyhsZTE2X3RvX2NwdSgqcHRy KSwgKHZvaWQgX19pb21lbSAqKXBvcnQpOwogCQlwdHIrKzsKIAl9Ci0JX19pZGVfZmx1c2hfZGNh Y2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWJ1ZiwgY291bnQgKiAyKTsKKwlfX2lkZV9mbHVzaF9k Y2FjaGVfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpYnVmLCByb3VuZHVwKGxlbiwgMikpOwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGlkZV90cF9vcHMgdHg0OTM4aWRlX3RwX29wcyA9IHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvaWRlL3R4NDkzOWlkZS5jIGIvZHJpdmVycy9pZGUvdHg0OTM5aWRlLmMK aW5kZXggYmFmYjdkMS4uOTdjZDllMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvdHg0OTM5aWRl LmMKKysrIGIvZHJpdmVycy9pZGUvdHg0OTM5aWRlLmMKQEAgLTI1OSw2ICsyNTksMTIgQEAgc3Rh dGljIGludCB0eDQ5MzlpZGVfYnVpbGRfZG1hdGFibGUoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1 Y3QgcmVxdWVzdCAqcnEpCiAJCQliY291bnQgPSAweDEwMDAwIC0gKGN1cl9hZGRyICYgMHhmZmZm KTsKIAkJCWlmIChiY291bnQgPiBjdXJfbGVuKQogCQkJCWJjb3VudCA9IGN1cl9sZW47CisJCQkv KgorCQkJICogVGhpcyB3b3JrYXJvdW5kIGZvciB6ZXJvIGNvdW50IHNlZW1zIHJlcXVpcmVkLgor CQkJICogKHN0YW5kYXJkIGlkZV9idWlsZF9kbWF0YWJsZSBkbyBpdCB0b28pCisJCQkgKi8KKwkJ CWlmICgoYmNvdW50ICYgMHhmZmZmKSA9PSAweDAwMDApCisJCQkJYmNvdW50ID0gMHg4MDAwOwog CQkJKnRhYmxlKysgPSBiY291bnQgJiAweGZmZmY7CiAJCQkqdGFibGUrKyA9IGN1cl9hZGRyOwog CQkJY3VyX2FkZHIgKz0gYmNvdW50OwpAQCAtNTU4LDcgKzU2NCw3IEBAIHN0YXRpYyB2b2lkIHR4 NDkzOWlkZV9pbnB1dF9kYXRhX3N3YXAoaWRlX2RyaXZlX3QgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVz dCAqcnEsCiAKIAl3aGlsZSAoY291bnQtLSkKIAkJKnB0cisrID0gY3B1X3RvX2xlMTYoX19yYXdf cmVhZHcoKHZvaWQgX19pb21lbSAqKXBvcnQpKTsKLQlfX2lkZV9mbHVzaF9kY2FjaGVfcmFuZ2Uo KHVuc2lnbmVkIGxvbmcpYnVmLCBjb3VudCAqIDIpOworCV9faWRlX2ZsdXNoX2RjYWNoZV9yYW5n ZSgodW5zaWduZWQgbG9uZylidWYsIHJvdW5kdXAobGVuLCAyKSk7CiB9CiAKIHN0YXRpYyB2b2lk IHR4NDkzOWlkZV9vdXRwdXRfZGF0YV9zd2FwKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJl cXVlc3QgKnJxLApAQCAtNTcyLDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIHR4NDkzOWlkZV9vdXRw dXRfZGF0YV9zd2FwKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLAogCQlf X3Jhd193cml0ZXcobGUxNl90b19jcHUoKnB0ciksICh2b2lkIF9faW9tZW0gKilwb3J0KTsKIAkJ cHRyKys7CiAJfQotCV9faWRlX2ZsdXNoX2RjYWNoZV9yYW5nZSgodW5zaWduZWQgbG9uZylidWYs IGNvdW50ICogMik7CisJX19pZGVfZmx1c2hfZGNhY2hlX3JhbmdlKCh1bnNpZ25lZCBsb25nKWJ1 Ziwgcm91bmR1cChsZW4sIDIpKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpZGVfdHBfb3Bz IHR4NDkzOWlkZV90cF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS91bWM4NjcyLmMg Yi9kcml2ZXJzL2lkZS91bWM4NjcyLmMKaW5kZXggMWRhMDc2ZS4uZTI5OTc4YyAxMDA2NDQKLS0t IGEvZHJpdmVycy9pZGUvdW1jODY3Mi5jCisrKyBiL2RyaXZlcnMvaWRlL3VtYzg2NzIuYwpAQCAt MTA3LDE4ICsxMDcsMjEgQEAgc3RhdGljIHZvaWQgdW1jX3NldF9zcGVlZHModTggc3BlZWRzW10p CiBzdGF0aWMgdm9pZCB1bWNfc2V0X3Bpb19tb2RlKGlkZV9kcml2ZV90ICpkcml2ZSwgY29uc3Qg dTggcGlvKQogewogCWlkZV9od2lmX3QgKmh3aWYgPSBkcml2ZS0+aHdpZjsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOworCWlkZV9od2dyb3VwX3QgKm1hdGVfaHdncm91cCA9IGh3aWYtPm1hdGUgPyBo d2lmLT5tYXRlLT5od2dyb3VwIDogTlVMTDsKKwl1bnNpZ25lZCBsb25nIHVuaW5pdGlhbGl6ZWRf dmFyKGZsYWdzKTsKIAogCXByaW50aygiJXM6IHNldHRpbmcgdW1jODY3MiB0byBQSU8gbW9kZSVk IChzcGVlZCAlZClcbiIsCiAJCWRyaXZlLT5uYW1lLCBwaW8sIHBpb190b191bWNbcGlvXSk7Ci0J c3Bpbl9sb2NrX2lycXNhdmUoJmlkZV9sb2NrLCBmbGFncyk7Ci0JaWYgKGh3aWYtPm1hdGUgJiYg aHdpZi0+bWF0ZS0+aHdncm91cC0+aGFuZGxlcikgeworCWlmIChtYXRlX2h3Z3JvdXApCisJCXNw aW5fbG9ja19pcnFzYXZlKCZtYXRlX2h3Z3JvdXAtPmxvY2ssIGZsYWdzKTsKKwlpZiAobWF0ZV9o d2dyb3VwICYmIG1hdGVfaHdncm91cC0+aGFuZGxlcikgewogCQlwcmludGsoS0VSTl9FUlIgInVt Yzg2NzI6IG90aGVyIGludGVyZmFjZSBpcyBidXN5OiBleGl0aW5nIHR1bmVfdW1jKClcbiIpOwog CX0gZWxzZSB7CiAJCWN1cnJlbnRfc3BlZWRzW2RyaXZlLT5uYW1lWzJdIC0gJ2EnXSA9IHBpb190 b191bWNbcGlvXTsKIAkJdW1jX3NldF9zcGVlZHMoY3VycmVudF9zcGVlZHMpOwogCX0KLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZpZGVfbG9jaywgZmxhZ3MpOworCWlmIChtYXRlX2h3Z3JvdXAp CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1hdGVfaHdncm91cC0+bG9jaywgZmxhZ3MpOwog fQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGlkZV9wb3J0X29wcyB1bWM4NjcyX3BvcnRfb3BzID0g ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2lkZS1zY3NpLmMgYi9kcml2ZXJzL3Njc2kvaWRl LXNjc2kuYwppbmRleCAyMzcwZmQ4Li5jMjQxNDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kv aWRlLXNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvaWRlLXNjc2kuYwpAQCAtNTc4LDYgKzU3OCw4 IEBAIHN0YXRpYyBpbnQgaWRlc2NzaV9laF9hYm9ydCAoc3RydWN0IHNjc2lfY21uZCAqY21kKQog ewogCWlkZXNjc2lfc2NzaV90ICpzY3NpICA9IHNjc2lob3N0X3RvX2lkZXNjc2koY21kLT5kZXZp Y2UtPmhvc3QpOwogCWlkZV9kcml2ZV90ICAgICpkcml2ZSA9IHNjc2ktPmRyaXZlOworCWlkZV9o d2lmX3QgICAgICpod2lmOworCWlkZV9od2dyb3VwX3QgICpod2dyb3VwOwogCWludAkJYnVzeTsK IAlpbnQgICAgICAgICAgICAgcmV0ICAgPSBGQUlMRUQ7CiAKQEAgLTU5NCwxMyArNTk2LDE2IEBA IHN0YXRpYyBpbnQgaWRlc2NzaV9laF9hYm9ydCAoc3RydWN0IHNjc2lfY21uZCAqY21kKQogCQln b3RvIG5vX2RyaXZlOwogCX0KIAotCS8qIEZpcnN0IGdpdmUgaXQgc29tZSBtb3JlIHRpbWUsIGhv dyBtdWNoIGlzICJyaWdodCIgaXMgaGFyZCB0byBzYXkgOi0oICovCisJaHdpZiA9IGRyaXZlLT5o d2lmOworCWh3Z3JvdXAgPSBod2lmLT5od2dyb3VwOwogCi0JYnVzeSA9IGlkZV93YWl0X25vdF9i dXN5KEhXSUYoZHJpdmUpLCAxMDApOwkvKiBGSVhNRSAtIHVzZXMgbWRlbGF5IHdoaWNoIGNhdXNl cyBsYXRlbmN5PyAqLworCS8qIEZpcnN0IGdpdmUgaXQgc29tZSBtb3JlIHRpbWUsIGhvdyBtdWNo IGlzICJyaWdodCIgaXMgaGFyZCB0byBzYXkgOi0oCisJICAgRklYTUUgLSB1c2VzIG1kZWxheSB3 aGljaCBjYXVzZXMgbGF0ZW5jeT8gKi8KKwlidXN5ID0gaWRlX3dhaXRfbm90X2J1c3koaHdpZiwg MTAwKTsKIAlpZiAodGVzdF9iaXQoSURFU0NTSV9MT0dfQ01ELCAmc2NzaS0+bG9nKSkKIAkJcHJp bnRrIChLRVJOX1dBUk5JTkcgImlkZS1zY3NpOiBkcml2ZSBkaWQlcyBiZWNvbWUgcmVhZHlcbiIs IGJ1c3k/IiBub3QiOiIiKTsKIAotCXNwaW5fbG9ja19pcnEoJmlkZV9sb2NrKTsKKwlzcGluX2xv Y2tfaXJxKCZod2dyb3VwLT5sb2NrKTsKIAogCS8qIElmIHRoZXJlIGlzIG5vIHBjIHJ1bm5pbmcg d2UncmUgZG9uZSAob3VyIGludGVycnVwdCB0b29rIGNhcmUgb2YgaXQpICovCiAJcGMgPSBkcml2 ZS0+cGM7CkBAIC02MjksNyArNjM0LDcgQEAgc3RhdGljIGludCBpZGVzY3NpX2VoX2Fib3J0IChz dHJ1Y3Qgc2NzaV9jbW5kICpjbWQpCiAJfQogCiBpZGVfdW5sb2NrOgotCXNwaW5fdW5sb2NrX2ly cSgmaWRlX2xvY2spOworCXNwaW5fdW5sb2NrX2lycSgmaHdncm91cC0+bG9jayk7CiBub19kcml2 ZToKIAlpZiAodGVzdF9iaXQoSURFU0NTSV9MT0dfQ01ELCAmc2NzaS0+bG9nKSkKIAkJcHJpbnRr IChLRVJOX1dBUk5JTkcgImlkZS1zY3NpOiBhYm9ydCByZXR1cm5zICVzXG4iLCByZXQgPT0gU1VD Q0VTUz8ic3VjY2VzcyI6ImZhaWxlZCIpOwpAQCAtNjQyLDYgKzY0Nyw3IEBAIHN0YXRpYyBpbnQg aWRlc2NzaV9laF9yZXNldCAoc3RydWN0IHNjc2lfY21uZCAqY21kKQogCXN0cnVjdCByZXF1ZXN0 ICpyZXE7CiAJaWRlc2NzaV9zY3NpX3QgKnNjc2kgID0gc2NzaWhvc3RfdG9faWRlc2NzaShjbWQt PmRldmljZS0+aG9zdCk7CiAJaWRlX2RyaXZlX3QgICAgKmRyaXZlID0gc2NzaS0+ZHJpdmU7CisJ aWRlX2h3Z3JvdXBfdCAgKmh3Z3JvdXA7CiAJaW50ICAgICAgICAgICAgIHJlYWR5ID0gMDsKIAlp bnQgICAgICAgICAgICAgcmV0ICAgPSBTVUNDRVNTOwogCkBAIC02NTgsMTQgKzY2NCwxOCBAQCBz dGF0aWMgaW50IGlkZXNjc2lfZWhfcmVzZXQgKHN0cnVjdCBzY3NpX2NtbmQgKmNtZCkKIAkJcmV0 dXJuIEZBSUxFRDsKIAl9CiAKKwlod2dyb3VwID0gZHJpdmUtPmh3aWYtPmh3Z3JvdXA7CisKIAlz cGluX2xvY2tfaXJxKGNtZC0+ZGV2aWNlLT5ob3N0LT5ob3N0X2xvY2spOwotCXNwaW5fbG9jaygm aWRlX2xvY2spOworCXNwaW5fbG9jaygmaHdncm91cC0+bG9jayk7CiAKIAlwYyA9IGRyaXZlLT5w YzsKKwlpZiAocGMpCisJCXJlcSA9IHBjLT5ycTsKIAotCWlmIChwYyA9PSBOVUxMIHx8IChyZXEg PSBwYy0+cnEpICE9IEhXR1JPVVAoZHJpdmUpLT5ycSB8fCAhSFdHUk9VUChkcml2ZSktPmhhbmRs ZXIpIHsKKwlpZiAocGMgPT0gTlVMTCB8fCByZXEgIT0gaHdncm91cC0+cnEgfHwgaHdncm91cC0+ aGFuZGxlciA9PSBOVUxMKSB7CiAJCXByaW50ayAoS0VSTl9XQVJOSU5HICJpZGUtc2NzaTogTm8g YWN0aXZlIHJlcXVlc3QgaW4gaWRlc2NzaV9laF9yZXNldFxuIik7Ci0JCXNwaW5fdW5sb2NrKCZp ZGVfbG9jayk7CisJCXNwaW5fdW5sb2NrKCZod2dyb3VwLT5sb2NrKTsKIAkJc3Bpbl91bmxvY2tf aXJxKGNtZC0+ZGV2aWNlLT5ob3N0LT5ob3N0X2xvY2spOwogCQlyZXR1cm4gRkFJTEVEOwogCX0K QEAgLTY4NSwxMCArNjk1LDEwIEBAIHN0YXRpYyBpbnQgaWRlc2NzaV9laF9yZXNldCAoc3RydWN0 IHNjc2lfY21uZCAqY21kKQogCQkJQlVHKCk7CiAJfQogCi0JSFdHUk9VUChkcml2ZSktPnJxID0g TlVMTDsKLQlIV0dST1VQKGRyaXZlKS0+aGFuZGxlciA9IE5VTEw7Ci0JSFdHUk9VUChkcml2ZSkt PmJ1c3kgPSAxOwkJLyogd2lsbCBzZXQgdGhpcyB0byB6ZXJvIHdoZW4gaWRlIHJlc2V0IGZpbmlz aGVkICovCi0Jc3Bpbl91bmxvY2soJmlkZV9sb2NrKTsKKwlod2dyb3VwLT5ycSA9IE5VTEw7CisJ aHdncm91cC0+aGFuZGxlciA9IE5VTEw7CisJaHdncm91cC0+YnVzeSA9IDE7IC8qIHdpbGwgc2V0 IHRoaXMgdG8gemVybyB3aGVuIGlkZSByZXNldCBmaW5pc2hlZCAqLworCXNwaW5fdW5sb2NrKCZo d2dyb3VwLT5sb2NrKTsKIAogCWlkZV9kb19yZXNldChkcml2ZSk7CiAKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvaWRlLmggYi9pbmNsdWRlL2xpbnV4L2lkZS5oCmluZGV4IDAxMGZiMjYuLmU5 OWM1NmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaWRlLmgKKysrIGIvaW5jbHVkZS9saW51 eC9pZGUuaApAQCAtMTIyLDggKzEyMiw2IEBAIHN0cnVjdCBpZGVfaW9fcG9ydHMgewogI2RlZmlu ZSBNQVhfRFJJVkVTCTIJLyogcGVyIGludGVyZmFjZTsgMiBhc3N1bWVkIGJ5IGxvdHMgb2YgY29k ZSAqLwogI2RlZmluZSBTRUNUT1JfU0laRQk1MTIKIAotI2RlZmluZSBJREVfTEFSR0VfU0VFSyhi MSxiMix0KQkoKChiMSkgPiAoYjIpICsgKHQpKSB8fCAoKGIyKSA+IChiMSkgKyAodCkpKQotCiAv KgogICogVGltZW91dHMgZm9yIHZhcmlvdXMgb3BlcmF0aW9uczoKICAqLwpAQCAtMTcyLDkgKzE3 MCw3IEBAIHR5cGVkZWYgaW50IChpZGVfYWNrX2ludHJfdCkoc3RydWN0IGh3aWZfcyAqKTsKIGVu dW0gewkJaWRlX3Vua25vd24sCWlkZV9nZW5lcmljLAlpZGVfcGNpLAogCQlpZGVfY21kNjQwLAlp ZGVfZHRjMjI3OCwJaWRlX2FsaTE0eHgsCiAJCWlkZV9xZDY1eHgsCWlkZV91bWM4NjcyLAlpZGVf aHQ2NTYwYiwKLQkJaWRlX3J6MTAwMCwJaWRlX3RybTI5MCwKLQkJaWRlX2NtZDY0NiwJaWRlX2N5 ODJjNjkzLAlpZGVfNGRyaXZlcywKLQkJaWRlX3BtYWMsCWlkZV9hY29ybiwKKwkJaWRlXzRkcml2 ZXMsCWlkZV9wbWFjLAlpZGVfYWNvcm4sCiAJCWlkZV9hdTF4eHgsCWlkZV9wYWxtMzcxMAogfTsK IApAQCAtNDk2LDggKzQ5Miw2IEBAIGVudW0gewogCSAqIHdoZW4gbW9yZSB0aGFuIG9uZSBpbnRl cnJ1cHQgaXMgbmVlZGVkLgogCSAqLwogCUlERV9BRkxBR19MSU1JVF9ORlJBTUVTCQk9ICgxIDw8 IDcpLAotCS8qIFNlZWtpbmcgaW4gcHJvZ3Jlc3MuICovCi0JSURFX0FGTEFHX1NFRUtJTkcJCT0g KDEgPDwgOCksCiAJLyogU2F2ZWQgVE9DIGluZm9ybWF0aW9uIGlzIGN1cnJlbnQuICovCiAJSURF X0FGTEFHX1RPQ19WQUxJRAkJPSAoMSA8PCA5KSwKIAkvKiBXZSB0aGluayB0aGF0IHRoZSBkcml2 ZSBkb29yIGlzIGxvY2tlZC4gKi8KQEAgLTg0NSw4ICs4MzksNiBAQCB0eXBlZGVmIHN0cnVjdCBo d2lmX3MgewogCXVuc2lnbmVkCWV4dHJhX3BvcnRzOwkvKiBudW1iZXIgb2YgZXh0cmEgZG1hIHBv cnRzICovCiAKIAl1bnNpZ25lZAlwcmVzZW50ICAgIDogMTsJLyogdGhpcyBpbnRlcmZhY2UgZXhp c3RzICovCi0JdW5zaWduZWQJc2VyaWFsaXplZCA6IDE7CS8qIHNlcmlhbGl6ZWQgYWxsIGNoYW5u ZWwgb3BlcmF0aW9uICovCi0JdW5zaWduZWQJc2hhcmluZ19pcnE6IDE7CS8qIDEgPSBzaGFyaW5n IGlycSB3aXRoIGFub3RoZXIgaHdpZiAqLwogCXVuc2lnbmVkCXNnX21hcHBlZCAgOiAxOwkvKiBz Z190YWJsZSBhbmQgc2dfbmVudHMgYXJlIHJlYWR5ICovCiAKIAlzdHJ1Y3QgZGV2aWNlCQlnZW5k ZXY7CkBAIC05MDksNiArOTAxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgaHdncm91cF9zIHsKIAogCWlu dCByZXFfZ2VuOwogCWludCByZXFfZ2VuX3RpbWVyOworCisJc3BpbmxvY2tfdCBsb2NrOwogfSBp ZGVfaHdncm91cF90OwogCiB0eXBlZGVmIHN0cnVjdCBpZGVfZHJpdmVyX3MgaWRlX2RyaXZlcl90 OwpAQCAtMTEyMiw2ICsxMTE2LDE0IEBAIGVudW0gewogCUlERV9QTV9DT01QTEVURUQsCiB9Owog CitpbnQgZ2VuZXJpY19pZGVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICosIHBtX21lc3NhZ2VfdCk7 CitpbnQgZ2VuZXJpY19pZGVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKik7CisKK3ZvaWQgaWRlX2Nv bXBsZXRlX3Bvd2VyX3N0ZXAoaWRlX2RyaXZlX3QgKiwgc3RydWN0IHJlcXVlc3QgKik7CitpZGVf c3RhcnRzdG9wX3QgaWRlX3N0YXJ0X3Bvd2VyX3N0ZXAoaWRlX2RyaXZlX3QgKiwgc3RydWN0IHJl cXVlc3QgKik7Cit2b2lkIGlkZV9jb21wbGV0ZV9wbV9yZXF1ZXN0KGlkZV9kcml2ZV90ICosIHN0 cnVjdCByZXF1ZXN0ICopOwordm9pZCBpZGVfY2hlY2tfcG1fc3RhdGUoaWRlX2RyaXZlX3QgKiwg c3RydWN0IHJlcXVlc3QgKik7CisKIC8qCiAgKiBTdWJkcml2ZXJzIHN1cHBvcnQuCiAgKgpAQCAt MTM3Niw4ICsxMzc4LDggQEAgZW51bSB7CiAJSURFX0hGTEFHX0xFR0FDWV9JUlFTCQk9ICgxIDw8 IDIxKSwKIAkvKiBmb3JjZSB1c2Ugb2YgbGVnYWN5IElSUXMgKi8KIAlJREVfSEZMQUdfRk9SQ0Vf TEVHQUNZX0lSUVMJPSAoMSA8PCAyMiksCi0JLyogbGltaXQgTEJBNDggcmVxdWVzdHMgdG8gMjU2 IHNlY3RvcnMgKi8KLQlJREVfSEZMQUdfUlFTSVpFXzI1NgkJPSAoMSA8PCAyMyksCisJLyogaG9z dCBpcyBUUk0yOTAgKi8KKwlJREVfSEZMQUdfVFJNMjkwCQk9ICgxIDw8IDIzKSwKIAkvKiB1c2Ug MzItYml0IEkvTyBvcHMgKi8KIAlJREVfSEZMQUdfSU9fMzJCSVQJCT0gKDEgPDwgMjQpLAogCS8q IHVubWFzayBJUlFzICovCkBAIC0xNDE1LDYgKzE0MTcsOSBAQCBzdHJ1Y3QgaWRlX3BvcnRfaW5m byB7CiAKIAlpZGVfcGNpX2VuYWJsZWJpdF90CWVuYWJsZWJpdHNbMl07CiAJaHdpZl9jaGlwc2V0 X3QJCWNoaXBzZXQ7CisKKwl1MTYJCQltYXhfc2VjdG9yczsJLyogaWYgPCB0aGFuIHRoZSBkZWZh dWx0IG9uZSAqLworCiAJdTMyCQkJaG9zdF9mbGFnczsKIAl1OAkJCXBpb19tYXNrOwogCXU4CQkJ c3dkbWFfbWFzazsKQEAgLTE2MTAsMTMgKzE2MTUsMTMgQEAgZXh0ZXJuIHN0cnVjdCBtdXRleCBp ZGVfY2ZnX210eDsKIC8qCiAgKiBTdHJ1Y3R1cmUgbG9ja2luZzoKICAqCi0gKiBpZGVfY2ZnX210 eCBhbmQgaWRlX2xvY2sgdG9nZXRoZXIgcHJvdGVjdCBjaGFuZ2VzIHRvCi0gKiBpZGVfaHdpZl90 LT57bmV4dCxod2dyb3VwfQorICogaWRlX2NmZ19tdHggYW5kIGh3Z3JvdXAtPmxvY2sgdG9nZXRo ZXIgcHJvdGVjdCBjaGFuZ2VzIHRvCisgKiBpZGVfaHdpZl90LT5uZXh0CiAgKiBpZGVfZHJpdmVf dC0+bmV4dAogICoKLSAqIGlkZV9od2dyb3VwX3QtPmJ1c3k6IGlkZV9sb2NrCi0gKiBpZGVfaHdn cm91cF90LT5od2lmOiBpZGVfbG9jawotICogaWRlX2h3aWZfdC0+bWF0ZTogY29uc3RhbnQsIG5v IGxvY2tpbmcKKyAqIGlkZV9od2dyb3VwX3QtPmJ1c3k6IGh3Z3JvdXAtPmxvY2sKKyAqIGlkZV9o d2dyb3VwX3QtPmh3aWY6IGh3Z3JvdXAtPmxvY2sKKyAqIGlkZV9od2lmX3QtPntod2dyb3VwLG1h dGV9OiBjb25zdGFudCwgbm8gbG9ja2luZwogICogaWRlX2RyaXZlX3QtPmh3aWY6IGNvbnN0YW50 LCBubyBsb2NraW5nCiAgKi8KIAoACg==