From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Horman Subject: [PATCH net-next v11 5/6] openvswitch: add layer 3 flow/port support Date: Wed, 6 Jul 2016 19:59:55 +0200 Message-ID: <1467827996-32547-6-git-send-email-simon.horman@netronome.com> References: <1467827996-32547-1-git-send-email-simon.horman@netronome.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org To: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Return-path: In-Reply-To: <1467827996-32547-1-git-send-email-simon.horman-wFxRvT7yatFl57MIdRCFDg@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org RnJvbTogTG9yYW5kIEpha2FiIDxsb2pha2FiQGNpc2NvLmNvbT4KCkltcGxlbWVudGF0aW9uIG9m IHRoZSBwb3BfZXRoIGFuZCBwdXNoX2V0aCBhY3Rpb25zIGluIHRoZSBrZXJuZWwsIGFuZApsYXll ciAzIGZsb3cgc3VwcG9ydC4KClRoaXMgZG9lc24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyB5ZXQg YXMgbm8gbGF5ZXIgMiB0dW5uZWwgcG9ydHMgYXJlCnN1cHBvcnRlZCB5ZXQuIFRoZSBvcmlnaW5h bCBwYXRjaCBieSBMb3JhbmQgd2FzIGFnYWluc3QgdGhlIE9wZW4gdlN3aXRjaAp0cmVlIHdoaWNo IGhhcyBMMiBMSVNQIHR1bm5lbHMgYnV0IHRoYXQgaXMgbm90IHN1cHBvcnRlZCBpbiBtYWlubGlu ZSBMaW51eC4KSSAoU2ltb24pIHBsYW4gdG8gZm9sbG93IHVwIHdpdGggc3VwcG9ydCBmb3Igbm9u LVRFQiBHUkUgcG9ydHMgYmFzZWQgb24Kd29yayBieSBUaG9tYXMgTW9yaW4uCgpDYzogVGhvbWFz IE1vcmluIDx0aG9tYXMubW9yaW5Ab3JhbmdlLmNvbT4KU2lnbmVkLW9mZi1ieTogTG9yYW5kIEph a2FiIDxsb2pha2FiQGNpc2NvLmNvbT4KU2lnbmVkLW9mZi1ieTogU2ltb24gSG9ybWFuIDxzaW1v bi5ob3JtYW5AbmV0cm9ub21lLmNvbT4KCi0tLQp2MTEgW1NpbW9uIEhvcm1hbl0KKiBDb25zb2xp ZGF0ZSBzZXR0aW5nIG9mIGV0aC5rZXkgaW4ga2V5X2V4dHJhY3QuCiogTGltaXQgc2NvcGUgb2Yg ZXRoIGluIGtleV9leHRyYWN0KCkKKiBVcGRhdGUgcHVzaF9ldGggdG8gYWNjb3VudCBmb3IgTVBM UwoqIERvIG5vdCBpbmNsdWRlIFZMQU4gc3VwcG9ydCBpbiBwb3BfZXRoCiAgLSBwb3BfZXRoIGlz IG5ldmVyIGNhbGxlZCBmb3IgVkxBTiBwYWNrZXRzIHNvIGRvbid0IGFkZCBzdXBwb3J0IGZvciB0 aGVtCiogVXNlIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUgaW5zdGVhZCBvZiBhZGRpbmcgT1ZTX0tF WV9BVFRSX1BBQ0tFVF9FVEhFUlRZUEUKCnYxMCBbU2ltb24gSG9ybWFuXQoqIE1vdmUgb3V0ZXJt b3N0IFZMQU4gaW50byBza2IgbWV0YWRhdGEgaW4gcG9wX2V0aCBhbmQKICBsZWF2ZSBhbnkgVkxB TiBhcy1pcyBpbiBwdXNoX2V0aC4gVGhlIGVmZmVjdCBpcyB0byBhbGxvdyB0aGUgcHJlc2VuY2UK ICBvZiBhIHZsYW4gdG8gYmUgaW5kZXBlbmRlbnQgb2YgcHVzaGluZyBhbmQgcG9wcGluZyBldGhl cm5ldCBoZWFkZXJzLgoqIE9taXQgdW5uZWNlc3NhcnkgdHlwZSBmaWVsZCBmcm9tIHB1c2hfZXRo IGFjdGlvbgoqIFNxdWFzaCB3aXRoIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyB0byBtYWtlIGEgbW9y ZSBjb21wbGV0ZSBwYXRjaDoKICAib3BlbnZzd2l0Y2g6IGFkZCBsYXllciAzIHN1cHBvcnQgdG8g b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSgpIgogICJvcGVudnN3aXRjaDogZXh0ZW5kIGxheWVyIDMg c3VwcG9ydCB0byBjb3ZlciBub24tSVAgcGFja2V0cyIKCnY5IFtTaW1vbiBIb3JtYW5dCiogUmVi YXNlCiogTWlub3IgY29kaW5nIHN0eWxlIHVwZGF0ZXMKKiBQcm9oaWJpdCBwdXNoL3BvcCBNUExT IG9uIGwzIHBhY2tldHMKKiBUaGVyZSBhcmUgbm8gbGF5ZXIgMyBwb3J0cyBzdXBwb3J0ZWQgYXQg dGhpcyB0aW1lIHNvIG9ubHkKICBzZW5kIGFuZCByZWNlaXZlIGxheWVyIDIgcGFja2V0czogdGhh dCBpcyBkb24ndCBhY3R1YWxseQogIHVzZSB0aGlzIG5ldyBpbmZyYXN0cnVjdHVyZSB5ZXQKKiBF eHBlY3QgdGhhdCB2cG9ydHMgdGhhdCBjYW4gaGFuZGxlIGxheWVyIDMgcGFja2V0cyB3aWxsOiBo YXZlCiAgYSB0eXBlIG90aGVyIHRoYW4gQVJQSFJEX0lQRVRIRVI7IGNhbiBhbHNvIGhhbmRsZSBs YXllciAyIHBhY2tldHM7CiAgYW5kIHRoYXQgcGFja2V0cyBjYW4gYmUgZGlmZmVyZW50aWF0ZWQg YnkgbGF5ZXIgMiBwYWNrZXRzIGhhdmluZwogIHNrYi0+cHJvdG9jb2wgc2V0IHRvIGh0b25zKEVU SF9QX1RFQikKCnYxIC0gdjggW0xvcmFuZCBKYWt1Yl0KLS0tCiBpbmNsdWRlL3VhcGkvbGludXgv b3BlbnZzd2l0Y2guaCAgICAgfCAgMTEgKysKIG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgICAg ICAgICAgICB8ICA0NSArKysrKysrKwogbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgICAgICAg ICAgIHwgIDEzICstLQogbmV0L29wZW52c3dpdGNoL2Zsb3cuYyAgICAgICAgICAgICAgIHwgIDY1 ICsrKysrKystLS0tCiBuZXQvb3BlbnZzd2l0Y2gvZmxvdy5oICAgICAgICAgICAgICAgfCAgIDQg Ky0KIG5ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyAgICAgICB8IDIxMyArKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLQogbmV0L29wZW52c3dpdGNoL3Zwb3J0LWdlbmV2ZS5j ICAgICAgIHwgICAyICstCiBuZXQvb3BlbnZzd2l0Y2gvdnBvcnQtZ3JlLmMgICAgICAgICAgfCAg IDIgKy0KIG5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYyB8ICAgNiArCiBuZXQv b3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMgICAgICAgfCAgMTkgKysrLQogbmV0L29wZW52c3dp dGNoL3Zwb3J0LW5ldGRldi5oICAgICAgIHwgICAyICsKIG5ldC9vcGVudnN3aXRjaC92cG9ydC12 eGxhbi5jICAgICAgICB8ICAgMiArLQogMTIgZmlsZXMgY2hhbmdlZCwgMjc5IGluc2VydGlvbnMo KyksIDEwNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvb3Bl bnZzd2l0Y2guaCBiL2luY2x1ZGUvdWFwaS9saW51eC9vcGVudnN3aXRjaC5oCmluZGV4IDVjZGU1 MDE0MzNlYi4uNmY1MDVlNDg2ZTkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvb3Bl bnZzd2l0Y2guaAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0Y2guaApAQCAtNzA1 LDYgKzcwNSwxNSBAQCBlbnVtIG92c19uYXRfYXR0ciB7CiAKICNkZWZpbmUgT1ZTX05BVF9BVFRS X01BWCAoX19PVlNfTkFUX0FUVFJfTUFYIC0gMSkKIAorLyoKKyAqIHN0cnVjdCBvdnNfYWN0aW9u X3B1c2hfZXRoIC0gJU9WU19BQ1RJT05fQVRUUl9QVVNIX0VUSCBhY3Rpb24gYXJndW1lbnQuCisg KiBAYWRkcmVzc2VzOiBTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIE1BQyBhZGRyZXNzZXMuCisgKiBA ZXRoX3R5cGU6IEV0aGVybmV0IHR5cGUKKyAqLworc3RydWN0IG92c19hY3Rpb25fcHVzaF9ldGgg eworCXN0cnVjdCBvdnNfa2V5X2V0aGVybmV0IGFkZHJlc3NlczsKK307CisKIC8qKgogICogZW51 bSBvdnNfYWN0aW9uX2F0dHIgLSBBY3Rpb24gdHlwZXMuCiAgKgpAQCAtNzY2LDYgKzc3NSw4IEBA IGVudW0gb3ZzX2FjdGlvbl9hdHRyIHsKIAkJCQkgICAgICAgKiBiaXRzLiAqLwogCU9WU19BQ1RJ T05fQVRUUl9DVCwgICAgICAgICAgIC8qIE5lc3RlZCBPVlNfQ1RfQVRUUl8qIC4gKi8KIAlPVlNf QUNUSU9OX0FUVFJfVFJVTkMsICAgICAgICAvKiB1MzIgc3RydWN0IG92c19hY3Rpb25fdHJ1bmMu ICovCisJT1ZTX0FDVElPTl9BVFRSX1BVU0hfRVRILCAgICAgLyogc3RydWN0IG92c19hY3Rpb25f cHVzaF9ldGguICovCisJT1ZTX0FDVElPTl9BVFRSX1BPUF9FVEgsICAgICAgLyogTm8gYXJndW1l bnQuICovCiAKIAlfX09WU19BQ1RJT05fQVRUUl9NQVgsCSAgICAgIC8qIE5vdGhpbmcgcGFzdCB0 aGlzIHdpbGwgYmUgYWNjZXB0ZWQKIAkJCQkgICAgICAgKiBmcm9tIHVzZXJzcGFjZS4gKi8KZGlm ZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0 aW9ucy5jCmluZGV4IDEyZThhODk0MmE0Mi4uMDAwMWY2NTFjOTM0IDEwMDY0NAotLS0gYS9uZXQv b3BlbnZzd2l0Y2gvYWN0aW9ucy5jCisrKyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKQEAg LTMwMSw2ICszMDEsNDMgQEAgc3RhdGljIGludCBzZXRfZXRoX2FkZHIoc3RydWN0IHNrX2J1ZmYg KnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICpmbG93X2tleSwKIAlyZXR1cm4gMDsKIH0KIAorLyog cG9wX2V0aCBkb2VzIG5vdCBzdXBwb3J0IFZMQU4gcGFja2V0cyBhcyB0aGlzIGFjdGlvbiBpcyBu ZXZlciBjYWxsZWQKKyAqIGZvciB0aGVtLgorICovCitzdGF0aWMgaW50IHBvcF9ldGgoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCit7CisJc2tiX3B1bGxfcmNz dW0oc2tiLCBFVEhfSExFTik7CisJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKwlza2ItPm1h Y19sZW4gLT0gRVRIX0hMRU47CisKKwlpbnZhbGlkYXRlX2Zsb3dfa2V5KGtleSk7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgcHVzaF9ldGgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IHN3X2Zsb3dfa2V5ICprZXksCisJCSAgICBjb25zdCBzdHJ1Y3Qgb3ZzX2FjdGlvbl9wdXNoX2V0 aCAqZXRoaCkKK3sKKwlzdHJ1Y3QgZXRoaGRyICpoZHI7CisKKwkvKiBBZGQgdGhlIG5ldyBFdGhl cm5ldCBoZWFkZXIgKi8KKwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgRVRIX0hMRU4pIDwgMCkKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlza2JfcHVzaChza2IsIEVUSF9ITEVOKTsKKwlza2JfcmVzZXRf bWFjX2hlYWRlcihza2IpOworCXNrYi0+bWFjX2xlbiArPSBFVEhfSExFTjsKKworCWhkciA9IGV0 aF9oZHIoc2tiKTsKKwlldGhlcl9hZGRyX2NvcHkoaGRyLT5oX3NvdXJjZSwgZXRoaC0+YWRkcmVz c2VzLmV0aF9zcmMpOworCWV0aGVyX2FkZHJfY29weShoZHItPmhfZGVzdCwgZXRoaC0+YWRkcmVz c2VzLmV0aF9kc3QpOworCWhkci0+aF9wcm90byA9IHNrYi0+cHJvdG9jb2w7CisKKwlza2JfcG9z dHB1c2hfcmNzdW0oc2tiLCBoZHIsIEVUSF9ITEVOKTsKKworCWludmFsaWRhdGVfZmxvd19rZXko a2V5KTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgdXBkYXRlX2lwX2w0X2NoZWNrc3Vt KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcGhkciAqbmgsCiAJCQkJICBfX2JlMzIgYWRk ciwgX19iZTMyIG5ld19hZGRyKQogewpAQCAtMTEyMSw2ICsxMTU4LDE0IEBAIHN0YXRpYyBpbnQg ZG9fZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpz a2IsCiAJCQllcnIgPSBwb3Bfdmxhbihza2IsIGtleSk7CiAJCQlicmVhazsKIAorCQljYXNlIE9W U19BQ1RJT05fQVRUUl9QVVNIX0VUSDoKKwkJCWVyciA9IHB1c2hfZXRoKHNrYiwga2V5LCBubGFf ZGF0YShhKSk7CisJCQlicmVhazsKKworCQljYXNlIE9WU19BQ1RJT05fQVRUUl9QT1BfRVRIOgor CQkJZXJyID0gcG9wX2V0aChza2IsIGtleSk7CisJCQlicmVhazsKKwogCQljYXNlIE9WU19BQ1RJ T05fQVRUUl9SRUNJUkM6CiAJCQllcnIgPSBleGVjdXRlX3JlY2lyYyhkcCwgc2tiLCBrZXksIGEs IHJlbSk7CiAJCQlpZiAobmxhX2lzX2xhc3QoYSwgcmVtKSkgewpkaWZmIC0tZ2l0IGEvbmV0L29w ZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYwppbmRleCA1 MjRjMGZkMzA3OGUuLjI3N2Y0ZjVmZmVhOCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2Rh dGFwYXRoLmMKKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMKQEAgLTU2Miw3ICs1NjIs NiBAQCBzdGF0aWMgaW50IG92c19wYWNrZXRfY21kX2V4ZWN1dGUoc3RydWN0IHNrX2J1ZmYgKnNr Yiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAlzdHJ1Y3Qgc3dfZmxvdyAqZmxvdzsKIAlzdHJ1 Y3Qgc3dfZmxvd19hY3Rpb25zICpzZl9hY3RzOwogCXN0cnVjdCBkYXRhcGF0aCAqZHA7Ci0Jc3Ry dWN0IGV0aGhkciAqZXRoOwogCXN0cnVjdCB2cG9ydCAqaW5wdXRfdnBvcnQ7CiAJdTE2IG1ydSA9 IDA7CiAJaW50IGxlbjsKQEAgLTU4MywxNyArNTgyLDYgQEAgc3RhdGljIGludCBvdnNfcGFja2V0 X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8p CiAKIAlubGFfbWVtY3B5KF9fc2tiX3B1dChwYWNrZXQsIGxlbiksIGFbT1ZTX1BBQ0tFVF9BVFRS X1BBQ0tFVF0sIGxlbik7CiAKLQlza2JfcmVzZXRfbWFjX2hlYWRlcihwYWNrZXQpOwotCWV0aCA9 IGV0aF9oZHIocGFja2V0KTsKLQotCS8qIE5vcm1hbGx5LCBzZXR0aW5nIHRoZSBza2IgJ3Byb3Rv Y29sJyBmaWVsZCB3b3VsZCBiZSBoYW5kbGVkIGJ5IGEKLQkgKiBjYWxsIHRvIGV0aF90eXBlX3Ry YW5zKCksIGJ1dCBpdCBhc3N1bWVzIHRoZXJlJ3MgYSBzZW5kaW5nCi0JICogZGV2aWNlLCB3aGlj aCB3ZSBtYXkgbm90IGhhdmUuICovCi0JaWYgKGV0aF9wcm90b19pc184MDJfMyhldGgtPmhfcHJv dG8pKQotCQlwYWNrZXQtPnByb3RvY29sID0gZXRoLT5oX3Byb3RvOwotCWVsc2UKLQkJcGFja2V0 LT5wcm90b2NvbCA9IGh0b25zKEVUSF9QXzgwMl8yKTsKLQogCS8qIFNldCBwYWNrZXQncyBtcnUg Ki8KIAlpZiAoYVtPVlNfUEFDS0VUX0FUVFJfTVJVXSkgewogCQltcnUgPSBubGFfZ2V0X3UxNihh W09WU19QQUNLRVRfQVRUUl9NUlVdKTsKQEAgLTYyMCw2ICs2MDgsNyBAQCBzdGF0aWMgaW50IG92 c19wYWNrZXRfY21kX2V4ZWN1dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5m byAqaW5mbykKIAlyY3VfYXNzaWduX3BvaW50ZXIoZmxvdy0+c2ZfYWN0cywgYWN0cyk7CiAJcGFj a2V0LT5wcmlvcml0eSA9IGZsb3ctPmtleS5waHkucHJpb3JpdHk7CiAJcGFja2V0LT5tYXJrID0g Zmxvdy0+a2V5LnBoeS5za2JfbWFyazsKKwlwYWNrZXQtPnByb3RvY29sID0gZmxvdy0+a2V5LmV0 aC50eXBlOwogCiAJcmN1X3JlYWRfbG9jaygpOwogCWRwID0gZ2V0X2RwX3JjdShuZXQsIG92c19o ZWFkZXItPmRwX2lmaW5kZXgpOwpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3cuYyBi L25ldC9vcGVudnN3aXRjaC9mbG93LmMKaW5kZXggMGVhMTI4ZWVlYWIyLi44NmYyY2ZiMTlkZTMg MTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMKKysrIGIvbmV0L29wZW52c3dpdGNo L2Zsb3cuYwpAQCAtNDYxLDM1ICs0NjEsMzkgQEAgaW52YWxpZDoKIHN0YXRpYyBpbnQga2V5X2V4 dHJhY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCiB7CiAJ aW50IGVycm9yOwotCXN0cnVjdCBldGhoZHIgKmV0aDsKIAogCS8qIEZsYWdzIGFyZSBhbHdheXMg dXNlZCBhcyBwYXJ0IG9mIHN0YXRzICovCiAJa2V5LT50cC5mbGFncyA9IDA7CiAKIAlza2JfcmVz ZXRfbWFjX2hlYWRlcihza2IpOwogCi0JLyogTGluayBsYXllci4gIFdlIGFyZSBndWFyYW50ZWVk IHRvIGhhdmUgYXQgbGVhc3QgdGhlIDE0IGJ5dGUgRXRoZXJuZXQKLQkgKiBoZWFkZXIgaW4gdGhl IGxpbmVhciBkYXRhIGFyZWEuCi0JICovCi0JZXRoID0gZXRoX2hkcihza2IpOwotCWV0aGVyX2Fk ZHJfY29weShrZXktPmV0aC5zcmMsIGV0aC0+aF9zb3VyY2UpOwotCWV0aGVyX2FkZHJfY29weShr ZXktPmV0aC5kc3QsIGV0aC0+aF9kZXN0KTsKKwkvKiBMaW5rIGxheWVyLiAqLworCWtleS0+ZXRo LnRjaSA9IDA7CisJaWYgKGtleS0+cGh5LmlzX2xheWVyMykgeworCQlpZiAoc2tiX3ZsYW5fdGFn X3ByZXNlbnQoc2tiKSkKKwkJCWtleS0+ZXRoLnRjaSA9IGh0b25zKHNrYi0+dmxhbl90Y2kpOwor CQlrZXktPmV0aC50eXBlID0gc2tiLT5wcm90b2NvbDsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgZXRo aGRyICpldGggPSBldGhfaGRyKHNrYik7CiAKLQlfX3NrYl9wdWxsKHNrYiwgMiAqIEVUSF9BTEVO KTsKLQkvKiBXZSBhcmUgZ29pbmcgdG8gcHVzaCBhbGwgaGVhZGVycyB0aGF0IHdlIHB1bGwsIHNv IG5vIG5lZWQgdG8KLQkgKiB1cGRhdGUgc2tiLT5jc3VtIGhlcmUuCi0JICovCisJCWV0aGVyX2Fk ZHJfY29weShrZXktPmV0aC5zcmMsIGV0aC0+aF9zb3VyY2UpOworCQlldGhlcl9hZGRyX2NvcHko a2V5LT5ldGguZHN0LCBldGgtPmhfZGVzdCk7CiAKLQlrZXktPmV0aC50Y2kgPSAwOwotCWlmIChz a2Jfdmxhbl90YWdfcHJlc2VudChza2IpKQotCQlrZXktPmV0aC50Y2kgPSBodG9ucyhza2ItPnZs YW5fdGNpKTsKLQllbHNlIGlmIChldGgtPmhfcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpKQot CQlpZiAodW5saWtlbHkocGFyc2Vfdmxhbihza2IsIGtleSkpKQotCQkJcmV0dXJuIC1FTk9NRU07 CisJCV9fc2tiX3B1bGwoc2tiLCAyICogRVRIX0FMRU4pOworCQkvKiBXZSBhcmUgZ29pbmcgdG8g cHVzaCBhbGwgaGVhZGVycyB0aGF0IHdlIHB1bGwsIHNvIG5vIG5lZWQgdG8KKwkJICogdXBkYXRl IHNrYi0+Y3N1bSBoZXJlLgorCQkgKi8KIAotCWtleS0+ZXRoLnR5cGUgPSBwYXJzZV9ldGhlcnR5 cGUoc2tiKTsKLQlpZiAodW5saWtlbHkoa2V5LT5ldGgudHlwZSA9PSBodG9ucygwKSkpCi0JCXJl dHVybiAtRU5PTUVNOworCQlpZiAoc2tiX3ZsYW5fdGFnX3ByZXNlbnQoc2tiKSkKKwkJCWtleS0+ ZXRoLnRjaSA9IGh0b25zKHNrYi0+dmxhbl90Y2kpOworCQllbHNlIGlmIChldGgtPmhfcHJvdG8g PT0gaHRvbnMoRVRIX1BfODAyMVEpKQorCQkJaWYgKHVubGlrZWx5KHBhcnNlX3ZsYW4oc2tiLCBr ZXkpKSkKKwkJCQlyZXR1cm4gLUVOT01FTTsKKworCQlrZXktPmV0aC50eXBlID0gcGFyc2VfZXRo ZXJ0eXBlKHNrYik7CisJCWlmICh1bmxpa2VseShrZXktPmV0aC50eXBlID09IGh0b25zKDApKSkK KwkJCXJldHVybiAtRU5PTUVNOworCX0KIAogCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2Ip OwogCXNrYl9yZXNldF9tYWNfbGVuKHNrYik7CkBAIC02OTYsNiArNzAwLDggQEAgaW50IG92c19m bG93X2tleV91cGRhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICpr ZXkpCiBpbnQgb3ZzX2Zsb3dfa2V5X2V4dHJhY3QoY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9pbmZv ICp0dW5faW5mbywKIAkJCSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkg KmtleSkKIHsKKwlpbnQgZXJyOworCiAJLyogRXh0cmFjdCBtZXRhZGF0YSBmcm9tIHBhY2tldC4g Ki8KIAlpZiAodHVuX2luZm8pIHsKIAkJa2V5LT50dW5fcHJvdG8gPSBpcF90dW5uZWxfaW5mb19h Zih0dW5faW5mbyk7CkBAIC03MjMsOSArNzI5LDE3IEBAIGludCBvdnNfZmxvd19rZXlfZXh0cmFj dChjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKnR1bl9pbmZvLAogCWtleS0+cGh5LnNrYl9t YXJrID0gc2tiLT5tYXJrOwogCW92c19jdF9maWxsX2tleShza2IsIGtleSk7CiAJa2V5LT5vdnNf Zmxvd19oYXNoID0gMDsKKwlrZXktPnBoeS5pc19sYXllcjMgPSBza2ItPm1hY19sZW4gPT0gMDsK IAlrZXktPnJlY2lyY19pZCA9IDA7CiAKLQlyZXR1cm4ga2V5X2V4dHJhY3Qoc2tiLCBrZXkpOwor CWVyciA9IGtleV9leHRyYWN0KHNrYiwga2V5KTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVy cjsKKworCWlmICh0dW5faW5mbyAmJiBza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QX1RFQikp CisJCXNrYi0+cHJvdG9jb2wgPSBrZXktPmV0aC50eXBlOworCisJcmV0dXJuIGVycjsKIH0KIAog aW50IG92c19mbG93X2tleV9leHRyYWN0X3VzZXJzcGFjZShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0 IHN0cnVjdCBubGF0dHIgKmF0dHIsCkBAIC03NDEsNSArNzU1LDE0IEBAIGludCBvdnNfZmxvd19r ZXlfZXh0cmFjdF91c2Vyc3BhY2Uoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmxhdHRy ICphdHRyLAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKKwkvKiBrZXlfZXh0cmFjdCBhc3N1 bWVzIHRoYXQgc2tiLT5wcm90b2NvbCBpcyBzZXQtdXAgZm9yCisJICogbGF5ZXIgMyBwYWNrZXRz IHdoaWNoIGlzIHRoZSBjYXNlIGZvciBvdGhlciBjYWxsZXJzLAorCSAqIGluIHBhcnRpY3VsYXIg cGFja2V0cyByZWNpZXZlZCBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgorCSAqIEhlcmUgdGhlIGNv cnJlY3QgdmFsdWUgY2FuIGJlIHNldCBmcm9tIHRoZSBtZXRhZGF0YQorCSAqIGV4dHJhY3RlZCBh Ym92ZS4KKwkgKi8KKwlpZiAoa2V5LT5waHkuaXNfbGF5ZXIzKQorCQlza2ItPnByb3RvY29sID0g a2V5LT5ldGgudHlwZTsKKwogCXJldHVybiBrZXlfZXh0cmFjdChza2IsIGtleSk7CiB9CmRpZmYg LS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5oIGIvbmV0L29wZW52c3dpdGNoL2Zsb3cuaApp bmRleCAwMzM3OGU3NWE2N2MuLjUzOTVlYzBjM2MxMyAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dp dGNoL2Zsb3cuaAorKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5oCkBAIC02Miw2ICs2Miw3IEBA IHN0cnVjdCBzd19mbG93X2tleSB7CiAJCXUzMglwcmlvcml0eTsJLyogUGFja2V0IFFvUyBwcmlv cml0eS4gKi8KIAkJdTMyCXNrYl9tYXJrOwkvKiBTS0IgbWFyay4gKi8KIAkJdTE2CWluX3BvcnQ7 CS8qIElucHV0IHN3aXRjaCBwb3J0IChvciBEUF9NQVhfUE9SVFMpLiAqLworCQlib29sCWlzX2xh eWVyMzsJLyogUGFja2V0IGhhcyBubyBFdGhlcm5ldCBoZWFkZXIgKi8KIAl9IF9fcGFja2VkIHBo eTsgLyogU2FmZSB3aGVuIHJpZ2h0IGFmdGVyICd0dW5fa2V5Jy4gKi8KIAl1OCB0dW5fcHJvdG87 CQkJLyogUHJvdG9jb2wgb2YgZW5jYXBzdWxhdGluZyB0dW5uZWwuICovCiAJdTMyIG92c19mbG93 X2hhc2g7CQkvKiBEYXRhcGF0aCBjb21wdXRlZCBoYXNoIHZhbHVlLiAgKi8KQEAgLTIxOSw4ICsy MjAsNyBAQCB1NjQgb3ZzX2Zsb3dfdXNlZF90aW1lKHVuc2lnbmVkIGxvbmcgZmxvd19qaWZmaWVz KTsKIAogaW50IG92c19mbG93X2tleV91cGRhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IHN3X2Zsb3dfa2V5ICprZXkpOwogaW50IG92c19mbG93X2tleV9leHRyYWN0KGNvbnN0IHN0cnVj dCBpcF90dW5uZWxfaW5mbyAqdHVuX2luZm8sCi0JCQkgc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJ CSBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSk7CisJCQkgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry dWN0IHN3X2Zsb3dfa2V5ICprZXkpOwogLyogRXh0cmFjdCBrZXkgZnJvbSBwYWNrZXQgY29taW5n IGZyb20gdXNlcnNwYWNlLiAqLwogaW50IG92c19mbG93X2tleV9leHRyYWN0X3VzZXJzcGFjZShz dHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkJICAgc3RydWN0 IHNrX2J1ZmYgKnNrYiwKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsu YyBiL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwppbmRleCBjNzhhNmExNDc2ZmIuLmZj OTRmYmUxZGRjMyAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jCisr KyBiL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0 YXRpYyB2b2lkIHVwZGF0ZV9yYW5nZShzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiBzdGF0 aWMgYm9vbCBtYXRjaF92YWxpZGF0ZShjb25zdCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gs CiAJCQkgICB1NjQga2V5X2F0dHJzLCB1NjQgbWFza19hdHRycywgYm9vbCBsb2cpCiB7Ci0JdTY0 IGtleV9leHBlY3RlZCA9IDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSTkVUOworCXU2NCBrZXlfZXhw ZWN0ZWQgPSAwOwogCXU2NCBtYXNrX2FsbG93ZWQgPSBrZXlfYXR0cnM7ICAvKiBBdCBtb3N0IGFs bG93IGFsbCBrZXkgYXR0cmlidXRlcyAqLwogCiAJLyogVGhlIGZvbGxvd2luZyBtYXNrIGF0dHJp YnV0ZXMgYWxsb3dlZCBvbmx5IGlmIHRoZXkKQEAgLTgwOCwxMCArODA4LDM0IEBAIGludCBvdnNf bmxhX3B1dF90dW5uZWxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgaXBfdHVubmVs X2luZm9fYWYodHVuX2luZm8pKTsKIH0KIAorc3RhdGljIGludCBldGhlcnR5cGVfZnJvbV9ubGF0 dHJzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAorCQkJCSB1 NjQgKmF0dHJzLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICoqYSwKKwkJCQkgYm9vbCBpc19tYXNrLCBi b29sIGxvZykKK3sKKwlfX2JlMTYgZXRoX3R5cGU7CisKKwlldGhfdHlwZSA9IG5sYV9nZXRfYmUx NihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKTsKKwlpZiAoaXNfbWFzaykgeworCQkvKiBBbHdh eXMgZXhhY3QgbWF0Y2ggRXRoZXJUeXBlLiAqLworCQlldGhfdHlwZSA9IGh0b25zKDB4ZmZmZik7 CisJfSBlbHNlIGlmICghZXRoX3Byb3RvX2lzXzgwMl8zKGV0aF90eXBlKSkgeworCQlPVlNfTkxF UlIobG9nLCAiRXRoZXJUeXBlICV4IGlzIGxlc3MgdGhhbiBtaW4gJXgiLAorCQkJICBudG9ocyhl dGhfdHlwZSksIEVUSF9QXzgwMl8zX01JTik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCVNX X0ZMT1dfS0VZX1BVVChtYXRjaCwgZXRoLnR5cGUsIGV0aF90eXBlLCBpc19tYXNrKTsKKwkqYXR0 cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FVEhFUlRZUEUpOworCisJcmV0dXJuIDA7Cit9CisK IHN0YXRpYyBpbnQgbWV0YWRhdGFfZnJvbV9ubGF0dHJzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0 IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJCSB1NjQgKmF0dHJzLCBjb25zdCBzdHJ1Y3Qgbmxh dHRyICoqYSwKIAkJCQkgYm9vbCBpc19tYXNrLCBib29sIGxvZykKIHsKKwlib29sIGlzX2xheWVy MyA9IGZhbHNlOworCiAJaWYgKCphdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9EUF9IQVNIKSkg ewogCQl1MzIgaGFzaF92YWwgPSBubGFfZ2V0X3UzMihhW09WU19LRVlfQVRUUl9EUF9IQVNIXSk7 CiAKQEAgLTg5OCwyMCArOTIyLDMzIEBAIHN0YXRpYyBpbnQgbWV0YWRhdGFfZnJvbV9ubGF0dHJz KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJCSAgIHNp emVvZigqY2wpLCBpc19tYXNrKTsKIAkJKmF0dHJzICY9IH4oMVVMTCA8PCBPVlNfS0VZX0FUVFJf Q1RfTEFCRUxTKTsKIAl9Ci0JcmV0dXJuIDA7Ci19CiAKLXN0YXRpYyBpbnQgb3ZzX2tleV9mcm9t X25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCi0J CQkJdTY0IGF0dHJzLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICoqYSwKLQkJCQlib29sIGlzX21hc2ss IGJvb2wgbG9nKQotewotCWludCBlcnI7CisJLyogRm9yIGxheWVyIDMgcGFja2V0cyB0aGUgZXRo ZXJuZXQgdHlwZSBpcyBwcm92aWRlZAorCSAqIGFuZCB0cmVhdGVkIGFzIG1ldGFkYXRhIGJ1dCBu byBNQUMgYWRkcmVzc2VzIGFyZSBwcm92aWRlZC4KKwkgKi8KKwlpZiAoKmF0dHJzICYgKDFVTEwg PDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSkgJiYKKwkgICAgISgqYXR0cnMgJiAoMSA8PCBPVlNf S0VZX0FUVFJfRVRIRVJORVQpKSkgeworCQlpbnQgZXJyOwogCi0JZXJyID0gbWV0YWRhdGFfZnJv bV9ubGF0dHJzKG5ldCwgbWF0Y2gsICZhdHRycywgYSwgaXNfbWFzaywgbG9nKTsKLQlpZiAoZXJy KQotCQlyZXR1cm4gZXJyOworCQllcnIgPSBldGhlcnR5cGVfZnJvbV9ubGF0dHJzKG5ldCwgbWF0 Y2gsIGF0dHJzLCBhLCBpc19tYXNrLAorCQkJCQkgICAgIGxvZyk7CisJCWlmIChlcnIpCisJCQly ZXR1cm4gZXJyOworCisJCWlzX2xheWVyMyA9IHRydWU7CisJfQogCi0JaWYgKGF0dHJzICYgKDEg PDwgT1ZTX0tFWV9BVFRSX0VUSEVSTkVUKSkgeworCS8qIEFsd2F5cyBleGFjdCBtYXRjaCBpc19s YXllcjMgKi8KKwlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIHBoeS5pc19sYXllcjMsIGlzX21hc2sg PyB0cnVlIDogaXNfbGF5ZXIzLAorCQkJaXNfbWFzayk7CisJcmV0dXJuIGlzX2xheWVyMzsKK30K Kworc3RhdGljIGludCBsMl9mcm9tX25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3df Zmxvd19tYXRjaCAqbWF0Y2gsCisJCQkgICB1NjQgKmF0dHJzLCBjb25zdCBzdHJ1Y3QgbmxhdHRy ICoqYSwKKwkJCSAgIGJvb2wgaXNfbWFzaywgYm9vbCBsb2cpCit7CisJaWYgKCphdHRycyAmICgx IDw8IE9WU19LRVlfQVRUUl9FVEhFUk5FVCkpIHsKIAkJY29uc3Qgc3RydWN0IG92c19rZXlfZXRo ZXJuZXQgKmV0aF9rZXk7CiAKIAkJZXRoX2tleSA9IG5sYV9kYXRhKGFbT1ZTX0tFWV9BVFRSX0VU SEVSTkVUXSk7CkBAIC05MTksMTAgKzk1NiwxMCBAQCBzdGF0aWMgaW50IG92c19rZXlfZnJvbV9u bGF0dHJzKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJ CWV0aF9rZXktPmV0aF9zcmMsIEVUSF9BTEVOLCBpc19tYXNrKTsKIAkJU1dfRkxPV19LRVlfTUVN Q1BZKG1hdGNoLCBldGguZHN0LAogCQkJCWV0aF9rZXktPmV0aF9kc3QsIEVUSF9BTEVOLCBpc19t YXNrKTsKLQkJYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FVEhFUk5FVCk7CisJCSphdHRy cyAmPSB+KDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSTkVUKTsKIAl9CiAKLQlpZiAoYXR0cnMgJiAo MSA8PCBPVlNfS0VZX0FUVFJfVkxBTikpIHsKKwlpZiAoKmF0dHJzICYgKDEgPDwgT1ZTX0tFWV9B VFRSX1ZMQU4pKSB7CiAJCV9fYmUxNiB0Y2k7CiAKIAkJdGNpID0gbmxhX2dldF9iZTE2KGFbT1ZT X0tFWV9BVFRSX1ZMQU5dKTsKQEAgLTkzNiwyOCArOTczLDQxIEBAIHN0YXRpYyBpbnQgb3ZzX2tl eV9mcm9tX25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19tYXRjaCAqbWF0 Y2gsCiAJCX0KIAogCQlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIGV0aC50Y2ksIHRjaSwgaXNfbWFz ayk7Ci0JCWF0dHJzICY9IH4oMSA8PCBPVlNfS0VZX0FUVFJfVkxBTik7CisJCSphdHRycyAmPSB+ KDEgPDwgT1ZTX0tFWV9BVFRSX1ZMQU4pOwogCX0KIAotCWlmIChhdHRycyAmICgxIDw8IE9WU19L RVlfQVRUUl9FVEhFUlRZUEUpKSB7Ci0JCV9fYmUxNiBldGhfdHlwZTsKLQotCQlldGhfdHlwZSA9 IG5sYV9nZXRfYmUxNihhW09WU19LRVlfQVRUUl9FVEhFUlRZUEVdKTsKLQkJaWYgKGlzX21hc2sp IHsKLQkJCS8qIEFsd2F5cyBleGFjdCBtYXRjaCBFdGhlclR5cGUuICovCi0JCQlldGhfdHlwZSA9 IGh0b25zKDB4ZmZmZik7Ci0JCX0gZWxzZSBpZiAoIWV0aF9wcm90b19pc184MDJfMyhldGhfdHlw ZSkpIHsKLQkJCU9WU19OTEVSUihsb2csICJFdGhlclR5cGUgJXggaXMgbGVzcyB0aGFuIG1pbiAl eCIsCi0JCQkJICBudG9ocyhldGhfdHlwZSksIEVUSF9QXzgwMl8zX01JTik7Ci0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQorCWlmICgqYXR0cnMgJiAoMSA8PCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBF KSkgeworCQlpbnQgZXJyOwogCi0JCVNXX0ZMT1dfS0VZX1BVVChtYXRjaCwgZXRoLnR5cGUsIGV0 aF90eXBlLCBpc19tYXNrKTsKLQkJYXR0cnMgJj0gfigxIDw8IE9WU19LRVlfQVRUUl9FVEhFUlRZ UEUpOworCQllcnIgPSBldGhlcnR5cGVfZnJvbV9ubGF0dHJzKG5ldCwgbWF0Y2gsIGF0dHJzLCBh LCBpc19tYXNrLAorCQkJCQkgICAgIGxvZyk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOwog CX0gZWxzZSBpZiAoIWlzX21hc2spIHsKIAkJU1dfRkxPV19LRVlfUFVUKG1hdGNoLCBldGgudHlw ZSwgaHRvbnMoRVRIX1BfODAyXzIpLCBpc19tYXNrKTsKIAl9CiAKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBvdnNfa2V5X2Zyb21fbmxhdHRycyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBz d19mbG93X21hdGNoICptYXRjaCwKKwkJCQl1NjQgYXR0cnMsIGNvbnN0IHN0cnVjdCBubGF0dHIg KiphLAorCQkJCWJvb2wgaXNfbWFzaywgYm9vbCBsb2cpCit7CisJaW50IGVycjsKKwlib29sIGlz X2xheWVyMzsKKworCWVyciA9IG1ldGFkYXRhX2Zyb21fbmxhdHRycyhuZXQsIG1hdGNoLCAmYXR0 cnMsIGEsIGlzX21hc2ssIGxvZyk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisJaXNf bGF5ZXIzID0gZXJyICE9IDA7CisKKwlpZiAoIWlzX2xheWVyMykgeworCQllcnIgPSBsMl9mcm9t X25sYXR0cnMobmV0LCBtYXRjaCwgJmF0dHJzLCBhLCBpc19tYXNrLCBsb2cpOworCQlpZiAoZXJy IDwgMCkKKwkJCXJldHVybiBlcnI7CisJfQorCiAJaWYgKGF0dHJzICYgKDEgPDwgT1ZTX0tFWV9B VFRSX0lQVjQpKSB7CiAJCWNvbnN0IHN0cnVjdCBvdnNfa2V5X2lwdjQgKmlwdjRfa2V5OwogCkBA IC0xNDA3LDcgKzE0NTcsMTEgQEAgaW50IG92c19ubGFfZ2V0X2Zsb3dfbWV0YWRhdGEoc3RydWN0 IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCW1lbXNldCgma2V5LT5jdCwg MCwgc2l6ZW9mKGtleS0+Y3QpKTsKIAlrZXktPnBoeS5pbl9wb3J0ID0gRFBfTUFYX1BPUlRTOwog Ci0JcmV0dXJuIG1ldGFkYXRhX2Zyb21fbmxhdHRycyhuZXQsICZtYXRjaCwgJmF0dHJzLCBhLCBm YWxzZSwgbG9nKTsKKwllcnIgPSBtZXRhZGF0YV9mcm9tX25sYXR0cnMobmV0LCAmbWF0Y2gsICZh dHRycywgYSwgZmFsc2UsIGxvZyk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwly ZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfX292c19ubGFfcHV0X2tleShjb25zdCBzdHJ1Y3Qg c3dfZmxvd19rZXkgKnN3a2V5LApAQCAtMTQxNSw3ICsxNDY5LDcgQEAgc3RhdGljIGludCBfX292 c19ubGFfcHV0X2tleShjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKnN3a2V5LAogCQkJICAgICBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBvdnNfa2V5X2V0aGVybmV0ICpldGhfa2V5 OwotCXN0cnVjdCBubGF0dHIgKm5sYSwgKmVuY2FwOworCXN0cnVjdCBubGF0dHIgKm5sYSwgKmVu Y2FwID0gTlVMTDsKIAogCWlmIChubGFfcHV0X3UzMihza2IsIE9WU19LRVlfQVRUUl9SRUNJUkNf SUQsIG91dHB1dC0+cmVjaXJjX2lkKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CkBAIC0xNDU2 LDM4ICsxNTEwLDQwIEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29uc3Qgc3RydWN0 IHN3X2Zsb3dfa2V5ICpzd2tleSwKIAlpZiAob3ZzX2N0X3B1dF9rZXkob3V0cHV0LCBza2IpKQog CQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAotCW5sYSA9IG5sYV9yZXNlcnZlKHNrYiwgT1ZTX0tF WV9BVFRSX0VUSEVSTkVULCBzaXplb2YoKmV0aF9rZXkpKTsKLQlpZiAoIW5sYSkKLQkJZ290byBu bGFfcHV0X2ZhaWx1cmU7CisJaWYgKCFzd2tleS0+cGh5LmlzX2xheWVyMykgeworCQlubGEgPSBu bGFfcmVzZXJ2ZShza2IsIE9WU19LRVlfQVRUUl9FVEhFUk5FVCwgc2l6ZW9mKCpldGhfa2V5KSk7 CisJCWlmICghbmxhKQorCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKLQlldGhfa2V5ID0gbmxh X2RhdGEobmxhKTsKLQlldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ZXRoX3NyYywgb3V0cHV0LT5l dGguc3JjKTsKLQlldGhlcl9hZGRyX2NvcHkoZXRoX2tleS0+ZXRoX2RzdCwgb3V0cHV0LT5ldGgu ZHN0KTsKKwkJZXRoX2tleSA9IG5sYV9kYXRhKG5sYSk7CisJCWV0aGVyX2FkZHJfY29weShldGhf a2V5LT5ldGhfc3JjLCBvdXRwdXQtPmV0aC5zcmMpOworCQlldGhlcl9hZGRyX2NvcHkoZXRoX2tl eS0+ZXRoX2RzdCwgb3V0cHV0LT5ldGguZHN0KTsKIAotCWlmIChzd2tleS0+ZXRoLnRjaSB8fCBz d2tleS0+ZXRoLnR5cGUgPT0gaHRvbnMoRVRIX1BfODAyMVEpKSB7Ci0JCV9fYmUxNiBldGhfdHlw ZTsKLQkJZXRoX3R5cGUgPSAhaXNfbWFzayA/IGh0b25zKEVUSF9QXzgwMjFRKSA6IGh0b25zKDB4 ZmZmZik7Ci0JCWlmIChubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBFLCBl dGhfdHlwZSkgfHwKLQkJICAgIG5sYV9wdXRfYmUxNihza2IsIE9WU19LRVlfQVRUUl9WTEFOLCBv dXRwdXQtPmV0aC50Y2kpKQotCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7Ci0JCWVuY2FwID0gbmxh X25lc3Rfc3RhcnQoc2tiLCBPVlNfS0VZX0FUVFJfRU5DQVApOwotCQlpZiAoIXN3a2V5LT5ldGgu dGNpKQotCQkJZ290byB1bmVuY2FwOwotCX0gZWxzZQotCQllbmNhcCA9IE5VTEw7Ci0KLQlpZiAo c3drZXktPmV0aC50eXBlID09IGh0b25zKEVUSF9QXzgwMl8yKSkgewotCQkvKgotCQkgKiBFdGhl cnR5cGUgODAyLjIgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIG5ldGxpbmsgd2l0aCBvbWl0dGVkCi0J CSAqIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUgaW4gdGhlIGZsb3cga2V5IGF0dHJpYnV0ZSwgYW5k Ci0JCSAqIDB4ZmZmZiBpbiB0aGUgbWFzayBhdHRyaWJ1dGUuICBFdGhlcnR5cGUgY2FuIGFsc28K LQkJICogYmUgd2lsZGNhcmRlZC4KLQkJICovCi0JCWlmIChpc19tYXNrICYmIG91dHB1dC0+ZXRo LnR5cGUpCi0JCQlpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSwK LQkJCQkJCW91dHB1dC0+ZXRoLnR5cGUpKQorCQlpZiAoc3drZXktPmV0aC50Y2kgfHwgc3drZXkt PmV0aC50eXBlID09IGh0b25zKEVUSF9QXzgwMjFRKSkgeworCQkJX19iZTE2IGV0aF90eXBlOwor CQkJZXRoX3R5cGUgPSAhaXNfbWFzayA/IGh0b25zKEVUSF9QXzgwMjFRKSA6IGh0b25zKDB4ZmZm Zik7CisJCQlpZiAobmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSwgZXRo X3R5cGUpIHx8CisJCQkgICAgbmxhX3B1dF9iZTE2KHNrYiwgT1ZTX0tFWV9BVFRSX1ZMQU4sCisJ CQkJCSBvdXRwdXQtPmV0aC50Y2kpKQogCQkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwotCQlnb3Rv IHVuZW5jYXA7CisJCQllbmNhcCA9IG5sYV9uZXN0X3N0YXJ0KHNrYiwgT1ZTX0tFWV9BVFRSX0VO Q0FQKTsKKwkJCWlmICghc3drZXktPmV0aC50Y2kpCisJCQkJZ290byB1bmVuY2FwOworCQl9CisK KwkJaWYgKHN3a2V5LT5ldGgudHlwZSA9PSBodG9ucyhFVEhfUF84MDJfMikpIHsKKwkJCS8qCisJ CQkgKiBFdGhlcnR5cGUgODAyLjIgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIG5ldGxpbmsKKwkJCSAq IHdpdGggb21pdHRlZCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBFIGluIHRoZSBmbG93CisJCQkgKiBr ZXkgYXR0cmlidXRlLCBhbmQgMHhmZmZmIGluIHRoZSBtYXNrIGF0dHJpYnV0ZS4KKwkJCSAqIEV0 aGVydHlwZSBjYW4gYWxzbyBiZSB3aWxkY2FyZGVkLgorCQkJICovCisJCQlpZiAoaXNfbWFzayAm JiBvdXRwdXQtPmV0aC50eXBlKQorCQkJCWlmIChubGFfcHV0X2JlMTYoc2tiLCBPVlNfS0VZX0FU VFJfRVRIRVJUWVBFLAorCQkJCQkJIG91dHB1dC0+ZXRoLnR5cGUpKQorCQkJCQlnb3RvIG5sYV9w dXRfZmFpbHVyZTsKKwkJCWdvdG8gdW5lbmNhcDsKKwkJfQogCX0KIAogCWlmIChubGFfcHV0X2Jl MTYoc2tiLCBPVlNfS0VZX0FUVFJfRVRIRVJUWVBFLCBvdXRwdXQtPmV0aC50eXBlKSkKQEAgLTIw MTAsOCArMjA2Niw4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlX21hc2tlZCh1OCAqZGF0YSwgaW50 IGxlbikKIAogc3RhdGljIGludCB2YWxpZGF0ZV9zZXQoY29uc3Qgc3RydWN0IG5sYXR0ciAqYSwK IAkJCWNvbnN0IHN0cnVjdCBzd19mbG93X2tleSAqZmxvd19rZXksCi0JCQlzdHJ1Y3Qgc3dfZmxv d19hY3Rpb25zICoqc2ZhLAotCQkJYm9vbCAqc2tpcF9jb3B5LCBfX2JlMTYgZXRoX3R5cGUsIGJv b2wgbWFza2VkLCBib29sIGxvZykKKwkJCXN0cnVjdCBzd19mbG93X2FjdGlvbnMgKipzZmEsIGJv b2wgKnNraXBfY29weSwKKwkJCV9fYmUxNiBldGhfdHlwZSwgYm9vbCBtYXNrZWQsIGJvb2wgbG9n LCBib29sIGlzX2xheWVyMykKIHsKIAljb25zdCBzdHJ1Y3QgbmxhdHRyICpvdnNfa2V5ID0gbmxh X2RhdGEoYSk7CiAJaW50IGtleV90eXBlID0gbmxhX3R5cGUob3ZzX2tleSk7CkBAIC0yMDQxLDcg KzIwOTcsMTEgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9zZXQoY29uc3Qgc3RydWN0IG5sYXR0ciAq YSwKIAljYXNlIE9WU19LRVlfQVRUUl9TS0JfTUFSSzoKIAljYXNlIE9WU19LRVlfQVRUUl9DVF9N QVJLOgogCWNhc2UgT1ZTX0tFWV9BVFRSX0NUX0xBQkVMUzoKKwkJYnJlYWs7CisKIAljYXNlIE9W U19LRVlfQVRUUl9FVEhFUk5FVDoKKwkJaWYgKGlzX2xheWVyMykKKwkJCXJldHVybiAtRUlOVkFM OwogCQlicmVhazsKIAogCWNhc2UgT1ZTX0tFWV9BVFRSX1RVTk5FTDoKQEAgLTIyMDgsNiArMjI2 OCw3IEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX2NvcHlfYWN0aW9ucyhzdHJ1Y3QgbmV0ICpuZXQs IGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQkJICBpbnQgZGVwdGgsIHN0cnVjdCBzd19m bG93X2FjdGlvbnMgKipzZmEsCiAJCQkJICBfX2JlMTYgZXRoX3R5cGUsIF9fYmUxNiB2bGFuX3Rj aSwgYm9vbCBsb2cpCiB7CisJYm9vbCBpc19sYXllcjMgPSBrZXktPnBoeS5pc19sYXllcjM7CiAJ Y29uc3Qgc3RydWN0IG5sYXR0ciAqYTsKIAlpbnQgcmVtLCBlcnI7CiAKQEAgLTIyMzAsNiArMjI5 MSw4IEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX2NvcHlfYWN0aW9ucyhzdHJ1Y3QgbmV0ICpuZXQs IGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQlbT1ZTX0FDVElPTl9BVFRSX0hBU0hdID0g c2l6ZW9mKHN0cnVjdCBvdnNfYWN0aW9uX2hhc2gpLAogCQkJW09WU19BQ1RJT05fQVRUUl9DVF0g PSAodTMyKS0xLAogCQkJW09WU19BQ1RJT05fQVRUUl9UUlVOQ10gPSBzaXplb2Yoc3RydWN0IG92 c19hY3Rpb25fdHJ1bmMpLAorCQkJW09WU19BQ1RJT05fQVRUUl9QVVNIX0VUSF0gPSBzaXplb2Yo c3RydWN0IG92c19hY3Rpb25fcHVzaF9ldGgpLAorCQkJW09WU19BQ1RJT05fQVRUUl9QT1BfRVRI XSA9IDAsCiAJCX07CiAJCWNvbnN0IHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfdmxhbiAqdmxhbjsK IAkJaW50IHR5cGUgPSBubGFfdHlwZShhKTsKQEAgLTIyNzgsMTAgKzIzNDEsMTQgQEAgc3RhdGlj IGludCBfX292c19ubGFfY29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0 IG5sYXR0ciAqYXR0ciwKIAkJfQogCiAJCWNhc2UgT1ZTX0FDVElPTl9BVFRSX1BPUF9WTEFOOgor CQkJaWYgKGlzX2xheWVyMykKKwkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCXZsYW5fdGNpID0gaHRv bnMoMCk7CiAJCQlicmVhazsKIAogCQljYXNlIE9WU19BQ1RJT05fQVRUUl9QVVNIX1ZMQU46CisJ CQlpZiAoaXNfbGF5ZXIzKQorCQkJCXJldHVybiAtRUlOVkFMOwogCQkJdmxhbiA9IG5sYV9kYXRh KGEpOwogCQkJaWYgKHZsYW4tPnZsYW5fdHBpZCAhPSBodG9ucyhFVEhfUF84MDIxUSkpCiAJCQkJ cmV0dXJuIC1FSU5WQUw7CkBAIC0yMzMxLDE0ICsyMzk4LDE2IEBAIHN0YXRpYyBpbnQgX19vdnNf bmxhX2NvcHlfYWN0aW9ucyhzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0 dHIsCiAKIAkJY2FzZSBPVlNfQUNUSU9OX0FUVFJfU0VUOgogCQkJZXJyID0gdmFsaWRhdGVfc2V0 KGEsIGtleSwgc2ZhLAotCQkJCQkgICAmc2tpcF9jb3B5LCBldGhfdHlwZSwgZmFsc2UsIGxvZyk7 CisJCQkJCSAgICZza2lwX2NvcHksIGV0aF90eXBlLCBmYWxzZSwgbG9nLAorCQkJCQkgICBpc19s YXllcjMpOwogCQkJaWYgKGVycikKIAkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJY2Fz ZSBPVlNfQUNUSU9OX0FUVFJfU0VUX01BU0tFRDoKIAkJCWVyciA9IHZhbGlkYXRlX3NldChhLCBr ZXksIHNmYSwKLQkJCQkJICAgJnNraXBfY29weSwgZXRoX3R5cGUsIHRydWUsIGxvZyk7CisJCQkJ CSAgICZza2lwX2NvcHksIGV0aF90eXBlLCB0cnVlLCBsb2csCisJCQkJCSAgIGlzX2xheWVyMyk7 CiAJCQlpZiAoZXJyKQogCQkJCXJldHVybiBlcnI7CiAJCQlicmVhazsKQEAgLTIzNTgsNiArMjQy NywyMiBAQCBzdGF0aWMgaW50IF9fb3ZzX25sYV9jb3B5X2FjdGlvbnMoc3RydWN0IG5ldCAqbmV0 LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJc2tpcF9jb3B5ID0gdHJ1ZTsKIAkJCWJy ZWFrOwogCisJCWNhc2UgT1ZTX0FDVElPTl9BVFRSX1BPUF9FVEg6CisJCQlpZiAoaXNfbGF5ZXIz KQorCQkJCXJldHVybiAtRUlOVkFMOworCQkJaWYgKHZsYW5fdGNpICYgaHRvbnMoVkxBTl9UQUdf UFJFU0VOVCkpCisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQlpc19sYXllcjMgPSB0cnVlOworCQkJ YnJlYWs7CisKKwkJY2FzZSBPVlNfQUNUSU9OX0FUVFJfUFVTSF9FVEg6CisJCQkvKiBGb3Igbm93 IGRpc2FsbG93IHB1c2hpbmcgYW4gRXRoZXJuZXQgaGVhZGVyIGlmIG9uZQorCQkJICogaXMgYWxy ZWFkeSBwcmVzZW50ICovCisJCQlpZiAoIWlzX2xheWVyMykKKwkJCQlyZXR1cm4gLUVJTlZBTDsK KwkJCWlzX2xheWVyMyA9IGZhbHNlOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCU9WU19O TEVSUihsb2csICJVbmtub3duIEFjdGlvbiB0eXBlICVkIiwgdHlwZSk7CiAJCQlyZXR1cm4gLUVJ TlZBTDsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC1nZW5ldmUuYyBiL25ldC9v cGVudnN3aXRjaC92cG9ydC1nZW5ldmUuYwppbmRleCAxYTFmY2VjODg2OTUuLjdhMDZlMTlmNTI3 OSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LWdlbmV2ZS5jCisrKyBiL25ldC9v cGVudnN3aXRjaC92cG9ydC1nZW5ldmUuYwpAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBzdHJ1 Y3QgdnBvcnRfb3BzIG92c19nZW5ldmVfdnBvcnRfb3BzID0gewogCS5jcmVhdGUJCT0gZ2VuZXZl X2NyZWF0ZSwKIAkuZGVzdHJveQk9IG92c19uZXRkZXZfdHVubmVsX2Rlc3Ryb3ksCiAJLmdldF9v cHRpb25zCT0gZ2VuZXZlX2dldF9vcHRpb25zLAotCS5zZW5kCQk9IGRldl9xdWV1ZV94bWl0LAor CS5zZW5kCQk9IG92c19uZXRkZXZfc2VuZCwKIH07CiAKIHN0YXRpYyBpbnQgX19pbml0IG92c19n ZW5ldmVfdG5sX2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC92cG9ydC1n cmUuYyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC1ncmUuYwppbmRleCA3Zjg4OTdmMzNhNjcuLmJj YmM5MWI4YjA3NyAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LWdyZS5jCisrKyBi L25ldC9vcGVudnN3aXRjaC92cG9ydC1ncmUuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgc3Ry dWN0IHZwb3J0ICpncmVfY3JlYXRlKGNvbnN0IHN0cnVjdCB2cG9ydF9wYXJtcyAqcGFybXMpCiBz dGF0aWMgc3RydWN0IHZwb3J0X29wcyBvdnNfZ3JlX3Zwb3J0X29wcyA9IHsKIAkudHlwZQkJPSBP VlNfVlBPUlRfVFlQRV9HUkUsCiAJLmNyZWF0ZQkJPSBncmVfY3JlYXRlLAotCS5zZW5kCQk9IGRl dl9xdWV1ZV94bWl0LAorCS5zZW5kCQk9IG92c19uZXRkZXZfc2VuZCwKIAkuZGVzdHJveQk9IG92 c19uZXRkZXZfdHVubmVsX2Rlc3Ryb3ksCiB9OwogCmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0 Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMgYi9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxf ZGV2LmMKaW5kZXggMzJkOGU5NGQ5YmZmLi5hZGMzNjQxNjE2MjYgMTAwNjQ0Ci0tLSBhL25ldC9v cGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvdnBv cnQtaW50ZXJuYWxfZGV2LmMKQEAgLTI1Nyw2ICsyNTcsMTIgQEAgc3RhdGljIG5ldGRldl90eF90 IGludGVybmFsX2Rldl9yZWN2KHN0cnVjdCBza19idWZmICpza2IpCiAJc3RydWN0IG5ldF9kZXZp Y2UgKm5ldGRldiA9IHNrYi0+ZGV2OwogCXN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICpzdGF0czsK IAorCS8qIE9ubHkgc2VuZC9yZWNlaXZlIEwyIHBhY2tldHMgKi8KKwlpZiAoIXNrYi0+bWFjX2xl bikgeworCQlrZnJlZV9za2Ioc2tiKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCiAJaWYgKHVu bGlrZWx5KCEobmV0ZGV2LT5mbGFncyAmIElGRl9VUCkpKSB7CiAJCWtmcmVlX3NrYihza2IpOwog CQluZXRkZXYtPnN0YXRzLnJ4X2Ryb3BwZWQrKzsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRj aC92cG9ydC1uZXRkZXYuYyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYwppbmRleCA0 ZTM5NzIzNDRhYTYuLjczM2U3OTE0ZjZiZCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL3Zw b3J0LW5ldGRldi5jCisrKyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYwpAQCAtNTcs OCArNTcsMTAgQEAgc3RhdGljIHZvaWQgbmV0ZGV2X3BvcnRfcmVjZWl2ZShzdHJ1Y3Qgc2tfYnVm ZiAqc2tiKQogCWlmICh1bmxpa2VseSghc2tiKSkKIAkJcmV0dXJuOwogCi0Jc2tiX3B1c2goc2ti LCBFVEhfSExFTik7Ci0Jc2tiX3Bvc3RwdXNoX3Jjc3VtKHNrYiwgc2tiLT5kYXRhLCBFVEhfSExF Tik7CisJaWYgKHZwb3J0LT5kZXYtPnR5cGUgPT0gQVJQSFJEX0VUSEVSKSB7CisJCXNrYl9wdXNo KHNrYiwgRVRIX0hMRU4pOworCQlza2JfcG9zdHB1c2hfcmNzdW0oc2tiLCBza2ItPmRhdGEsIEVU SF9ITEVOKTsKKwl9CiAJb3ZzX3Zwb3J0X3JlY2VpdmUodnBvcnQsIHNrYiwgc2tiX3R1bm5lbF9p bmZvKHNrYikpOwogCXJldHVybjsKIGVycm9yOgpAQCAtMTk0LDYgKzE5NiwxNyBAQCB2b2lkIG92 c19uZXRkZXZfdHVubmVsX2Rlc3Ryb3koc3RydWN0IHZwb3J0ICp2cG9ydCkKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKG92c19uZXRkZXZfdHVubmVsX2Rlc3Ryb3kpOwogCitpbnQgb3ZzX25ldGRldl9z ZW5kKHN0cnVjdCBza19idWZmICpza2IpCit7CisJLyogT25seSBzZW5kIEwyIHBhY2tldHMgKi8K KwlpZiAoc2tiLT5tYWNfbGVuKQorCQlyZXR1cm4gZGV2X3F1ZXVlX3htaXQoc2tiKTsKKworCWtm cmVlX3NrYihza2IpOworCXJldHVybiAtRUlOVkFMOworfQorRVhQT1JUX1NZTUJPTF9HUEwob3Zz X25ldGRldl9zZW5kKTsKKwogLyogUmV0dXJucyBudWxsIGlmIHRoaXMgZGV2aWNlIGlzIG5vdCBh dHRhY2hlZCB0byBhIGRhdGFwYXRoLiAqLwogc3RydWN0IHZwb3J0ICpvdnNfbmV0ZGV2X2dldF92 cG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpAQCAtMjA4LDcgKzIyMSw3IEBAIHN0YXRp YyBzdHJ1Y3QgdnBvcnRfb3BzIG92c19uZXRkZXZfdnBvcnRfb3BzID0gewogCS50eXBlCQk9IE9W U19WUE9SVF9UWVBFX05FVERFViwKIAkuY3JlYXRlCQk9IG5ldGRldl9jcmVhdGUsCiAJLmRlc3Ry b3kJPSBuZXRkZXZfZGVzdHJveSwKLQkuc2VuZAkJPSBkZXZfcXVldWVfeG1pdCwKKwkuc2VuZAkJ PSBvdnNfbmV0ZGV2X3NlbmQsCiB9OwogCiBpbnQgX19pbml0IG92c19uZXRkZXZfaW5pdCh2b2lk KQpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5oIGIvbmV0L29wZW52 c3dpdGNoL3Zwb3J0LW5ldGRldi5oCmluZGV4IDE5ZTI5YzEyYWRjYy4uNjM3YjE0YTk5NjNjIDEw MDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmgKKysrIGIvbmV0L29wZW52 c3dpdGNoL3Zwb3J0LW5ldGRldi5oCkBAIC0zMyw0ICszMyw2IEBAIGludCBfX2luaXQgb3ZzX25l dGRldl9pbml0KHZvaWQpOwogdm9pZCBvdnNfbmV0ZGV2X2V4aXQodm9pZCk7CiAKIHZvaWQgb3Zz X25ldGRldl90dW5uZWxfZGVzdHJveShzdHJ1Y3QgdnBvcnQgKnZwb3J0KTsKKworaW50IG92c19u ZXRkZXZfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKICNlbmRpZiAvKiB2cG9ydF9uZXRkZXYu aCAqLwpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LXZ4bGFuLmMgYi9uZXQvb3Bl bnZzd2l0Y2gvdnBvcnQtdnhsYW4uYwppbmRleCA1ZWI3Njk0MzQ4YjUuLjEzZjExYWQ3ZTM1YSAx MDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LXZ4bGFuLmMKKysrIGIvbmV0L29wZW52 c3dpdGNoL3Zwb3J0LXZ4bGFuLmMKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgc3RydWN0IHZw b3J0X29wcyBvdnNfdnhsYW5fbmV0ZGV2X3Zwb3J0X29wcyA9IHsKIAkuY3JlYXRlCQkJPSB2eGxh bl9jcmVhdGUsCiAJLmRlc3Ryb3kJCT0gb3ZzX25ldGRldl90dW5uZWxfZGVzdHJveSwKIAkuZ2V0 X29wdGlvbnMJCT0gdnhsYW5fZ2V0X29wdGlvbnMsCi0JLnNlbmQJCQk9IGRldl9xdWV1ZV94bWl0 LAorCS5zZW5kCQkJPSBvdnNfbmV0ZGV2X3NlbmQsCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBv dnNfdnhsYW5fdG5sX2luaXQodm9pZCkKLS0gCjIuNy4wLnJjMy4yMDcuZzBhYzUzNDQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldiBtYWlsaW5nIGxp c3QKZGV2QG9wZW52c3dpdGNoLm9yZwpodHRwOi8vb3BlbnZzd2l0Y2gub3JnL21haWxtYW4vbGlz dGluZm8vZGV2Cg==