From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Yang Subject: [PATCH net-next] NSH(Network Service Header) implementation Date: Mon, 6 Jun 2016 17:34:46 +0800 Message-ID: <1465205686-96724-1-git-send-email-yi.y.yang@intel.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: 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 SUVURiBkZWZpbmVkIE5TSChOZXR3b3JrIFNlcnZpY2UgSGVhZGVyKSBmb3IgU2VydmljZQpGdW5j dGlvbiBDaGFpbmluZywgdGhpcyBpcyBhbiBJRVRGIGRyYWZ0CgpodHRwczovL3Rvb2xzLmlldGYu b3JnL2h0bWwvZHJhZnQtaWV0Zi1zZmMtbnNoLTA1CgpJdCB3aWxsIGJlIGEgSUVURiBzdGFuZGFy ZCBzaG9ydGx5LCB0aGlzIHBhdGNoIGltcGxlbWVudGVkCk5TSCBmb3IgT3BlbiB2U3dpdGNoLgoK U2lnbmVkLW9mZi1ieTogSm9obnNvbiBMaSA8am9obnNvbi5saUBpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFlpIFlhbmcgPHlpLnkueWFuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9uZXQvdnhs YW4uYyAgICAgICAgICAgICAgfCAgIDcgKysKIGluY2x1ZGUvbmV0L25zaC5oICAgICAgICAgICAg ICAgIHwgMTE3ICsrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvbGludXgvb3Bl bnZzd2l0Y2guaCB8ICAzMiArKysrKysrCiBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jICAgICAg ICB8ICA2OCArKysrKysrKysrKysrCiBuZXQvb3BlbnZzd2l0Y2gvZmxvdy5jICAgICAgICAgICB8 ICA0NSArKysrKysrKy0KIG5ldC9vcGVudnN3aXRjaC9mbG93LmggICAgICAgICAgIHwgIDE1ICsr KwogbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jICAgfCAyMDIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBuZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMg ICB8ICAgMyArLQogbmV0L29wZW52c3dpdGNoL3Zwb3J0LXZ4bGFuLmMgICAgfCAgMTUgKysrCiA5 IGZpbGVzIGNoYW5nZWQsIDUwMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0L25zaC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv dnhsYW4uYyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKaW5kZXggZjk5OWRiMi4uN2ExMGZlOTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMKKysrIGIvZHJpdmVycy9uZXQvdnhsYW4uYwpA QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPG5ldC9uZXRucy9nZW5lcmljLmg+CiAjaW5jbHVk ZSA8bmV0L3Z4bGFuLmg+CiAjaW5jbHVkZSA8bmV0L3Byb3RvY29sLmg+CisjaW5jbHVkZSA8bmV0 L25zaC5oPgogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKICNpbmNsdWRlIDxuZXQvaXB2 Ni5oPgpAQCAtMTIyNSw2ICsxMjI2LDkgQEAgc3RhdGljIGJvb2wgdnhsYW5fcGFyc2VfZ3BlX2hk cihzdHJ1Y3QgdnhsYW5oZHIgKnVucGFyc2VkLAogCWNhc2UgVlhMQU5fR1BFX05QX0VUSEVSTkVU OgogCQkqcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9URUIpOwogCQlicmVhazsKKwljYXNlIFZYTEFO X0dQRV9OUF9OU0g6CisJCSpwcm90b2NvbCA9IGh0b25zKEVUSF9QX05TSCk7CisJCWJyZWFrOwog CWRlZmF1bHQ6CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xNzYwLDYgKzE3NjQsOSBAQCBzdGF0 aWMgaW50IHZ4bGFuX2J1aWxkX2dwZV9oZHIoc3RydWN0IHZ4bGFuaGRyICp2eGgsIHUzMiB2eGZs YWdzLAogCWNhc2UgaHRvbnMoRVRIX1BfVEVCKToKIAkJZ3BlLT5uZXh0X3Byb3RvY29sID0gVlhM QU5fR1BFX05QX0VUSEVSTkVUOwogCQlyZXR1cm4gMDsKKwljYXNlIGh0b25zKEVUSF9QX05TSCk6 CisJCWdwZS0+bmV4dF9wcm90b2NvbCA9IFZYTEFOX0dQRV9OUF9OU0g7CisJCXJldHVybiAwOwog CX0KIAlyZXR1cm4gLUVQRk5PU1VQUE9SVDsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25z aC5oIGIvaW5jbHVkZS9uZXQvbnNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uOThhMzQyZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0L25zaC5oCkBAIC0wLDAg KzEsMTE3IEBACisjaWZuZGVmIF9fTkVUX05TSF9ICisjZGVmaW5lIF9fTkVUX05TSF9IIDEKKwor I2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKworLyoKKyAqIE5ldHdvcmsgU2VydmljZSBIZWFk ZXI6CisgKiArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKworICogfFZlcnxPfEN8UnxSfFJ8UnxSfFJ8ICAgIExlbmd0aCAgIHwg ICBNRCBUeXBlICAgfCAgTmV4dCBQcm90byAgIHwKKyAqICstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgKiB8ICAgICAgICAg ICAgICAgIFNlcnZpY2UgUGF0aCBJRCAgICAgICAgICAgICAgICB8IFNlcnZpY2UgSW5kZXggfAor ICogKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8CisgKiB+ICAgICAgICAgICAgICAgTWFuZGF0b3J5L09w dGlvbmFsIENvbnRleHQgSGVhZGVyICAgICAgICAgICAgICAgfgorICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rCisgKiBWZXIgPSBUaGUgdmVyc2lvbiBmaWVsZCBpcyB1c2VkIHRvIGVuc3VyZSBiYWNr d2FyZCBjb21wYXRpYmlsaXR5CisgKiAgICAgICBnb2luZyBmb3J3YXJkIHdpdGggZnV0dXJlIE5T SCB1cGRhdGVzLiAgSXQgTVVTVCBiZSBzZXQgdG8gMHgwCisgKiAgICAgICBieSB0aGUgc2VuZGVy LCBpbiB0aGlzIGZpcnN0IHJldmlzaW9uIG9mIE5TSC4KKyAqCisgKiBPID0gT0FNLiB3aGVuIHNl dCB0byAweDEgaW5kaWNhdGVzIHRoYXQgdGhpcyBwYWNrZXQgaXMgYW4gb3BlcmF0aW9ucworICog ICAgIGFuZCBtYW5hZ2VtZW50IChPQU0pIHBhY2tldC4gIFRoZSByZWNlaXZpbmcgU0ZGIGFuZCBT RnMgbm9kZXMKKyAqICAgICBNVVNUIGV4YW1pbmUgdGhlIHBheWxvYWQgYW5kIHRha2UgYXBwcm9w cmlhdGUgYWN0aW9uLgorICoKKyAqIEMgPSBjb250ZXh0LiBJbmRpY2F0ZXMgdGhhdCBhIGNyaXRp Y2FsIG1ldGFkYXRhIFRMViBpcyBwcmVzZW50LgorICoKKyAqIExlbmd0aCA6IHRvdGFsIGxlbmd0 aCwgaW4gNC1ieXRlIHdvcmRzLCBvZiBOU0ggaW5jbHVkaW5nIHRoZSBCYXNlCisgKiAgICAgICAg ICBIZWFkZXIsIHRoZSBTZXJ2aWNlIFBhdGggSGVhZGVyIGFuZCB0aGUgb3B0aW9uYWwgdmFyaWFi bGUKKyAqICAgICAgICAgIFRMVnMuCisgKiBNRCBUeXBlOiBpbmRpY2F0ZXMgdGhlIGZvcm1hdCBv ZiBOU0ggYmV5b25kIHRoZSBtYW5kYXRvcnkgQmFzZSBIZWFkZXIKKyAqICAgICAgICAgIGFuZCB0 aGUgU2VydmljZSBQYXRoIEhlYWRlci4KKyAqCisgKiBOZXh0IFByb3RvY29sOiBpbmRpY2F0ZXMg dGhlIHByb3RvY29sIHR5cGUgb2YgdGhlIG9yaWdpbmFsIHBhY2tldC4gQQorICogICAgICAgICAg bmV3IElBTkEgcmVnaXN0cnkgd2lsbCBiZSBjcmVhdGVkIGZvciBwcm90b2NvbCB0eXBlLgorICoK KyAqIFNlcnZpY2UgUGF0aCBJZGVudGlmaWVyIChTUEkpOiBpZGVudGlmaWVzIGEgc2VydmljZSBw YXRoLgorICogICAgICAgICAgUGFydGljaXBhdGluZyBub2RlcyBNVVNUIHVzZSB0aGlzIGlkZW50 aWZpZXIgZm9yIFNlcnZpY2UKKyAqICAgICAgICAgIEZ1bmN0aW9uIFBhdGggc2VsZWN0aW9uLgor ICoKKyAqIFNlcnZpY2UgSW5kZXggKFNJKTogcHJvdmlkZXMgbG9jYXRpb24gd2l0aGluIHRoZSBT RlAuCisgKgorICogWzBdIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXNm Yy1uc2gtMDEKKyAqLworc3RydWN0IG5zaF9iYXNlIHsKKyNpZiBkZWZpbmVkKF9fTElUVExFX0VO RElBTl9CSVRGSUVMRCkKKwlfX3U4ICAgIHJlc2VydmVkX2ZsYWdzMTo0OworCV9fdTggICAgY29u dGV4dF9mbGFnOjE7CisJX191OCAgICBvYW1fZmxhZzoxOworCV9fdTggICAgdmVyc2lvbjoyOwor CisJX191OCAgICBsZW5ndGg6NjsKKwlfX3U4ICAgIHJlc2VydmVkX2ZsYWdzMjoyOworI2VsaWYg ZGVmaW5lZChfX0JJR19FTkRJQU5fQklURklFTEQpCisJX191OCAgICB2ZXJzaW9uOjI7CisJX191 OCAgICBvYW1fZmxhZzoxOworCV9fdTggICAgY29udGV4dF9mbGFnOjE7CisJX191OCAgICByZXNl cnZlZF9mbGFnczE6NDsKKworCV9fdTggICAgcmVzZXJ2ZWRfZmxhZ3MyOjI7CisJX191OCAgICBs ZW5ndGg6NjsKKyNlbHNlCisjZXJyb3IgIlBsZWFzZSBmaXggPGFzbS9ieXRlb3JkZXIuaD4iCisj ZW5kaWYKKwlfX3U4ICAgIG1kX3R5cGU7CisJX191OCAgICBuZXh0X3Byb3RvOworCXVuaW9uIHsK KwkJc3RydWN0IHsKKwkJCV9fdTggICAgc3ZjX3BhdGhbM107CisJCQlfX3U4ICAgIHN2Y19pZHg7 CisJCX07CisJCV9fYmUzMiBwYXRoX2hkcjsKKwl9OworfTsKKworLyoqCisgKiBzdHJ1Y3QgbnNo X21kMV9jdHggLSBLZWVwcyB0cmFjayBvZiBOU0ggY29udGV4dCBkYXRhCisgKiBAbnNoYzwxLTQ+ OiBOU0ggQ29udGV4dHMuCisgKi8KK3N0cnVjdCBuc2hfbWQxX2N0eCB7CisJX19iZTMyIG5zaGMx OworCV9fYmUzMiBuc2hjMjsKKwlfX2JlMzIgbnNoYzM7CisJX19iZTMyIG5zaGM0OworfTsKKwor LyoqCisgKiBzdHJ1Y3QgbnNoZHIgLSBOZXR3b3JrIFNlcnZpY2UgaGVhZGVyCisgKiBAYmFzZTog TmV0d29yayBTZXJ2aWNlIEJhc2UgSGVhZGVyLgorICogQGN0eDogTmV0d29yayBTZXJ2aWNlIENv bnRleHQgSGVhZGVyLgorICovCitzdHJ1Y3QgbnNoX2hkciB7CisJc3RydWN0IG5zaF9iYXNlIGJh c2U7CisJX19iZTMyIGN0eFswXTsgLyogTWFuZGF0b3J5L29wdGlvbmFsIENvbnRleHQgSGVhZGVy ICovCit9OworCisjZGVmaW5lIE5TSF9EU1RfUE9SVCAgICA0NzkwICAgLyogVURQIFBvcnQgZm9y IE5TSCBvbiBWWExBTiAqLworI2RlZmluZSBFVEhfUF9OU0ggICAgICAgIDB4ODk0RiAgIC8qIEV0 aGVydHlwZSBmb3IgTlNIICovCisKKy8qIE5TSCBCYXNlIEhlYWRlciBOZXh0IFByb3RvY29sICov CisjZGVmaW5lIE5TSF9QX0lQVjQgICAgICAgIDB4MDEKKyNkZWZpbmUgTlNIX1BfSVBWNiAgICAg ICAgMHgwMgorI2RlZmluZSBOU0hfUF9FVEhFUk5FVCAgICAweDAzCisKKy8qIE1EIFR5cGUgUmVn aXN0cnkgKi8KKyNkZWZpbmUgTlNIX01fVFlQRTEgICAgIDB4MDEKKyNkZWZpbmUgTlNIX01fRVhQ MSAgICAgIDB4RkUKKyNkZWZpbmUgTlNIX01fRVhQMiAgICAgIDB4RkYKKworLyogVXNlZCBmb3Ig bWFza2luZyBuc3AgYW5kIG5zaSB2YWx1ZXMgaW4gZmllbGQgbnNwIGJlbG93ICovCisjZGVmaW5l IE5TSF9NX05TUCAgIDB4MDBGRkZGRkYKKyNkZWZpbmUgTlNIX01fTlNJICAgMHhGRjAwMDAwMAor CisvKiBzaXplb2Yoc3RydWN0IG5zaF9oZHIpICsgc2l6ZW9mKHN0cnVjdCBuc2hfbWQxX2N0eCkg Ki8KKyNkZWZpbmUgTlNIX01fVFlQRTFfTEVOICAgICAyNAorI2RlZmluZSBOU0hfTEVOX01BWAkg ICAgMjU2CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L29wZW52c3dp dGNoLmggYi9pbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0Y2guaAppbmRleCBiYjBkNTE1Li4z NWI1YjIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0Y2guaAorKysg Yi9pbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0Y2guaApAQCAtMjYzLDYgKzI2Myw3IEBAIGVu dW0gb3ZzX3Zwb3J0X2F0dHIgewogZW51bSB7CiAJT1ZTX1ZYTEFOX0VYVF9VTlNQRUMsCiAJT1ZT X1ZYTEFOX0VYVF9HQlAsCS8qIEZsYWcgb3IgX191MzIgKi8KKwlPVlNfVlhMQU5fRVhUX0dQRSwJ LyogRmxhZywgR2VuZXJpYyBQcm90b2NvbCBFeHRlbnNpb24gKi8KIAlfX09WU19WWExBTl9FWFRf TUFYLAogfTsKIApAQCAtMzE3LDYgKzMxOCw3IEBAIGVudW0gb3ZzX2tleV9hdHRyIHsKIAlPVlNf S0VZX0FUVFJfTkQsICAgICAgICAvKiBzdHJ1Y3Qgb3ZzX2tleV9uZCAqLwogCU9WU19LRVlfQVRU Ul9TS0JfTUFSSywgIC8qIHUzMiBza2IgbWFyayAqLwogCU9WU19LRVlfQVRUUl9UVU5ORUwsICAg IC8qIE5lc3RlZCBzZXQgb2Ygb3ZzX3R1bm5lbCBhdHRyaWJ1dGVzICovCisJT1ZTX0tFWV9BVFRS X05TSCwJLyogTmVzdGVkIHNldCBvZiBvdnNfbnNoIGF0dHJpYnV0ZXMgKi8KIAlPVlNfS0VZX0FU VFJfU0NUUCwgICAgICAvKiBzdHJ1Y3Qgb3ZzX2tleV9zY3RwICovCiAJT1ZTX0tFWV9BVFRSX1RD UF9GTEFHUywJLyogYmUxNiBUQ1AgZmxhZ3MuICovCiAJT1ZTX0tFWV9BVFRSX0RQX0hBU0gsICAg ICAgLyogdTMyIGhhc2ggdmFsdWUuIFZhbHVlIDAgaW5kaWNhdGVzIHRoZSBoYXNoCkBAIC0zNTks NiArMzYxLDIxIEBAIGVudW0gb3ZzX3R1bm5lbF9rZXlfYXR0ciB7CiAKICNkZWZpbmUgT1ZTX1RV Tk5FTF9LRVlfQVRUUl9NQVggKF9fT1ZTX1RVTk5FTF9LRVlfQVRUUl9NQVggLSAxKQogCitlbnVt IG92c19uc2hfa2V5X2F0dHIgeworCU9WU19OU0hfS0VZX0FUVFJfRkxBR1MsCQkJLyogdTggTlNI IGhlYWRlciBmbGFncyAqLworCU9WU19OU0hfS0VZX0FUVFJfTURfVFlQRSwJCS8qIHU4IE1ldGFk YXRhIFR5cGUgKi8KKwlPVlNfTlNIX0tFWV9BVFRSX05FWFRfUFJPVE8sCQkvKiB1OCBOZXh0IFBy b3RvY29sICovCisJT1ZTX05TSF9LRVlfQVRUUl9OU0ksCQkJLyogdTggU2VydmljZSBJbmRleCAq LworCU9WU19OU0hfS0VZX0FUVFJfTlNQLAkJCS8qIGJlMzIgU2VydmljZSBQYXRoIElEICovCisJ T1ZTX05TSF9LRVlfQVRUUl9OU0hDMSwJCQkvKiBiZTMyIE5TSCBDb250ZXh0IEhlYWRlciAxICov CisJT1ZTX05TSF9LRVlfQVRUUl9OU0hDMiwJCQkvKiBiZTMyIE5TSCBDb250ZXh0IEhlYWRlciAy ICovCisJT1ZTX05TSF9LRVlfQVRUUl9OU0hDMywJCQkvKiBiZTMyIE5TSCBDb250ZXh0IEhlYWRl ciAzICovCisJT1ZTX05TSF9LRVlfQVRUUl9OU0hDNCwJCQkvKiBiZTMyIE5TSCBDb250ZXh0IEhl YWRlciA0ICovCisJX19PVlNfTlNIX0tFWV9BVFRSX01BWAorfTsKKworI2RlZmluZSBPVlNfTlNI X0tFWV9BVFRSX01BWCAoX19PVlNfTlNIX0tFWV9BVFRSX01BWCAtIDEpCisKIC8qKgogICogZW51 bSBvdnNfZnJhZ190eXBlIC0gSVB2NCBhbmQgSVB2NiBmcmFnbWVudCB0eXBlCiAgKiBAT1ZTX0ZS QUdfVFlQRV9OT05FOiBQYWNrZXQgaXMgbm90IGEgZnJhZ21lbnQuCkBAIC02MDksNiArNjI2LDE3 IEBAIHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfdmxhbiB7CiAJX19iZTE2IHZsYW5fdGNpOwkvKiA4 MDIuMVEgVENJIChWTEFOIElEIGFuZCBwcmlvcml0eSkuICovCiB9OwogCisvKioKKyAqIHN0cnVj dCBvdnNfYWN0aW9uX3B1c2hfbnNoIC0gJU9WU19BQ1RJT05fQVRUUl9QVVNIX05TSCBhY3Rpb24g YXJndW1lbnQuCisgKiBAbGVuOiBsZW5ndGggb2YgTlNIIGhlYWRlci4gRGlmZmVycyBzaW5jZSBk aWZmZXJlbnQgbWV0YWRhdGEgdHlwZS4KKyAqIEBoZWFkZXI6IFJBVyB2YWx1ZSBmb3IgdGhlIE5T SCBoZWFkZXIuCisgKi8KKyNkZWZpbmUgTlNIX0hFQURFUl9MRU5fTUFYCTI1Ngorc3RydWN0IG92 c19hY3Rpb25fcHVzaF9uc2ggeworCXVpbnQxNl90IGxlbjsKKwl1aW50OF90IGhlYWRlcltOU0hf SEVBREVSX0xFTl9NQVhdOyAvKiBOU0ggaGVhZGVyICovCit9OworCiAvKiBEYXRhIHBhdGggaGFz aCBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBEYXRhcGF0aCBoYXNoLgogICoKICAqIFRoZSBhbGdv cml0aG0gdHlwZSBvbmx5IHNwZWNpZmllcyB0aGUgZmllbGRzIGluIGEgZmxvdwpAQCAtNzMwLDYg Kzc1OCw4IEBAIGVudW0gb3ZzX25hdF9hdHRyIHsKICAqIGlzIG5vIE1QTFMgbGFiZWwgc3RhY2ss IGFzIGRldGVybWluZWQgYnkgZXRoZXJ0eXBlLCBubyBhY3Rpb24gaXMgdGFrZW4uCiAgKiBAT1ZT X0FDVElPTl9BVFRSX0NUOiBUcmFjayB0aGUgY29ubmVjdGlvbi4gUG9wdWxhdGUgdGhlIGNvbm50 cmFjay1yZWxhdGVkCiAgKiBlbnRyaWVzIGluIHRoZSBmbG93IGtleS4KKyAqIEBPVlNfQUNUSU9O X0FUVFJfUFVTSF9OU0g6IFB1c2ggYSBOZXR3b3JrIFNlcnZpY2UgSGVhZGVyIGludG8gdGhlIHBh Y2tldHMuCisgKiBAT1ZTX0FDVElPTl9BVFRSX1BPUF9OU0g6IFN0cmlwIHRoZSBOZXR3b3JrIFNl cnZpY2UgSGVhZGVyIGZyb20gcGFja2V0cy4KICAqCiAgKiBPbmx5IGEgc2luZ2xlIGhlYWRlciBj YW4gYmUgc2V0IHdpdGggYSBzaW5nbGUgJU9WU19BQ1RJT05fQVRUUl9TRVQuICBOb3QgYWxsCiAg KiBmaWVsZHMgd2l0aGluIGEgaGVhZGVyIGFyZSBtb2RpZmlhYmxlLCBlLmcuIHRoZSBJUHY0IHBy b3RvY29sIGFuZCBmcmFnbWVudApAQCAtNzU2LDYgKzc4Niw4IEBAIGVudW0gb3ZzX2FjdGlvbl9h dHRyIHsKIAkJCQkgICAgICAgKiBUaGUgZGF0YSBtdXN0IGJlIHplcm8gZm9yIHRoZSB1bm1hc2tl ZAogCQkJCSAgICAgICAqIGJpdHMuICovCiAJT1ZTX0FDVElPTl9BVFRSX0NULCAgICAgICAgICAg LyogTmVzdGVkIE9WU19DVF9BVFRSXyogLiAqLworCU9WU19BQ1RJT05fQVRUUl9QVVNIX05TSCwg ICAgIC8qIHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfbnNoLiAqLworCU9WU19BQ1RJT05fQVRUUl9Q T1BfTlNILCAgICAgIC8qIE5vIGFyZ3VtZW50LiAqLwogCiAJX19PVlNfQUNUSU9OX0FUVFJfTUFY LAkgICAgICAvKiBOb3RoaW5nIHBhc3QgdGhpcyB3aWxsIGJlIGFjY2VwdGVkCiAJCQkJICAgICAg ICogZnJvbSB1c2Vyc3BhY2UuICovCmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9u cy5jIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwppbmRleCA5YTNlYjdhLi4zOGU3ODdjIDEw MDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCisrKyBiL25ldC9vcGVudnN3aXRj aC9hY3Rpb25zLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbjYuaD4KICNp bmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KICNpbmNsdWRlIDxsaW51eC9pZl92bGFuLmg+CisjaW5j bHVkZSA8bGludXgvaWZfZXRoZXIuaD4KIAogI2luY2x1ZGUgPG5ldC9kc3QuaD4KICNpbmNsdWRl IDxuZXQvaXAuaD4KQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxuZXQvZHNmaWVsZC5oPgog I2luY2x1ZGUgPG5ldC9tcGxzLmg+CiAjaW5jbHVkZSA8bmV0L3NjdHAvY2hlY2tzdW0uaD4KKyNp bmNsdWRlIDxuZXQvbnNoLmg+CiAKICNpbmNsdWRlICJkYXRhcGF0aC5oIgogI2luY2x1ZGUgImZs b3cuaCIKQEAgLTI1OSw2ICsyNjEsNjQgQEAgc3RhdGljIGludCBwdXNoX3ZsYW4oc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksCiAJCQkgICAgIG50b2hzKHZsYW4t PnZsYW5fdGNpKSAmIH5WTEFOX1RBR19QUkVTRU5UKTsKIH0KIAorc3RhdGljIGludCBwb3BfbnNo KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KQoreworCXN0cnVj dCBuc2hfaGRyICpuc2hfaGRyID0gTlVMTDsKKwl1MTYgbGVuZ3RoID0gMDsKKworCW5zaF9oZHIg PSAoc3RydWN0IG5zaF9oZHIgKikoc2tiLT5kYXRhKTsKKwlsZW5ndGggID0gbnNoX2hkci0+YmFz ZS5sZW5ndGggPDwgMjsKKworCXN3aXRjaCAobnNoX2hkci0+YmFzZS5uZXh0X3Byb3RvKSB7CisJ Y2FzZSBOU0hfUF9JUFY0OgorCQlza2ItPnByb3RvY29sID0gaHRvbnMoRVRIX1BfSVApOworCQlr ZXktPmV0aC50eXBlID0gaHRvbnMoRVRIX1BfSVApOworCQlicmVhazsKKwljYXNlIE5TSF9QX0lQ VjY6CisJCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUFY2KTsKKwkJa2V5LT5ldGgudHlw ZSA9IGh0b25zKEVUSF9QX0lQVjYpOworCQlicmVhazsKKwljYXNlIE5TSF9QX0VUSEVSTkVUOgor CQlza2ItPnByb3RvY29sID0gaHRvbnMoRVRIX1BfVEVCKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJX19za2JfcHVsbChza2IsIGxlbmd0aCk7CisJc2ti X3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKwlza2JfcmVzZXRfbWFjX2xlbihza2IpOworCisJbWVt c2V0KCZrZXktPm5zaCwgMCwgc2l6ZW9mKGtleS0+bnNoKSk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBwdXNoX25zaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19r ZXkgKmtleSwKKwkJICAgIGNvbnN0IHN0cnVjdCBvdnNfYWN0aW9uX3B1c2hfbnNoICpuc2gpCit7 CisJaWYgKG5zaC0+bGVuID4gMCAmJiBuc2gtPmxlbiA8PSAyNTYpIHsKKwkJc3RydWN0IG5zaF9o ZHIgKm5zaF9oZHIgPSBOVUxMOworCisJCWlmIChza2JfY293X2hlYWQoc2tiLCBuc2gtPmxlbikg PCAwKQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJc2tiX3B1c2goc2tiLCBuc2gtPmxlbik7CisJ CW5zaF9oZHIgPSAoc3RydWN0IG5zaF9oZHIgKikoc2tiLT5kYXRhKTsKKwkJbWVtY3B5KG5zaF9o ZHIsIG5zaC0+aGVhZGVyLCBuc2gtPmxlbik7CisKKwkJaWYgKCFza2ItPmlubmVyX3Byb3RvY29s KQorCQkJc2tiX3NldF9pbm5lcl9wcm90b2NvbChza2IsIHNrYi0+cHJvdG9jb2wpOworCisJCXNr Yi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9OU0gpOyAvKiAweDg5NEYgKi8KKwkJa2V5LT5ldGgu dHlwZSA9IGh0b25zKEVUSF9QX05TSCk7CisJfSBlbHNlIHsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKIC8qICdzcmMnIGlzIGFscmVhZHkgcHJvcGVybHkgbWFza2Vk LiAqLwogc3RhdGljIHZvaWQgZXRoZXJfYWRkcl9jb3B5X21hc2tlZCh1OCAqZHN0XywgY29uc3Qg dTggKnNyY18sIGNvbnN0IHU4ICptYXNrXykKIHsKQEAgLTEwODMsNiArMTE0MywxNCBAQCBzdGF0 aWMgaW50IGRvX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLAogCQkJZXJyID0gcG9wX3ZsYW4oc2tiLCBrZXkpOwogCQkJYnJlYWs7CiAKKwkJ Y2FzZSBPVlNfQUNUSU9OX0FUVFJfUFVTSF9OU0g6CisJCQllcnIgPSBwdXNoX25zaChza2IsIGtl eSwgbmxhX2RhdGEoYSkpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPVlNfQUNUSU9OX0FUVFJfUE9Q X05TSDoKKwkJCWVyciA9IHBvcF9uc2goc2tiLCBrZXkpOworCQkJYnJlYWs7CisKIAkJY2FzZSBP VlNfQUNUSU9OX0FUVFJfUkVDSVJDOgogCQkJZXJyID0gZXhlY3V0ZV9yZWNpcmMoZHAsIHNrYiwg a2V5LCBhLCByZW0pOwogCQkJaWYgKG5sYV9pc19sYXN0KGEsIHJlbSkpIHsKZGlmZiAtLWdpdCBh L25ldC9vcGVudnN3aXRjaC9mbG93LmMgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5jCmluZGV4IDBl YTEyOGUuLjU3MDE2MTIgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93LmMKKysrIGIv bmV0L29wZW52c3dpdGNoL2Zsb3cuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPG5ldC9p cHY2Lmg+CiAjaW5jbHVkZSA8bmV0L21wbHMuaD4KICNpbmNsdWRlIDxuZXQvbmRpc2MuaD4KKyNp bmNsdWRlIDxuZXQvbnNoLmg+CiAKICNpbmNsdWRlICJjb25udHJhY2suaCIKICNpbmNsdWRlICJk YXRhcGF0aC5oIgpAQCAtMzAyLDYgKzMwMywzNiBAQCBzdGF0aWMgYm9vbCBpY21wNmhkcl9vayhz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQkJCSAgc2l6ZW9mKHN0cnVjdCBpY21wNmhkcikpOwogfQog CisvKioKKyAqIEJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgTUQgVHlwZSBlcXVhbHMgMS4K KyAqLworc3RhdGljIGludCBwYXJzZV9uc2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHN3 X2Zsb3dfa2V5ICprZXkpCit7CisJc3RydWN0IG5zaF9oZHIgKm5zaF9oZHIgPSAoc3RydWN0IG5z aF9oZHIgKilza2JfbWFjX2hlYWRlcihza2IpOworCXN0cnVjdCBuc2hfbWQxX2N0eCAqY3R4ID0g TlVMTDsKKwlpbnQgbGVuZ3RoID0gMDsKKworCWxlbmd0aCA9IG5zaF9oZHItPmJhc2UubGVuZ3Ro IDw8IDI7CisJaWYgKGxlbmd0aCA+IE5TSF9MRU5fTUFYKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWlmIChuc2hfaGRyLT5iYXNlLm1kX3R5cGUgIT0gTlNIX01fVFlQRTEpCisJCXJldHVybiAtRUlO VkFMOworCisJY3R4ID0gKHN0cnVjdCBuc2hfbWQxX2N0eCAqKShuc2hfaGRyLT5jdHgpOworCWtl eS0+bnNoLm1kX3R5cGUgPSBuc2hfaGRyLT5iYXNlLm1kX3R5cGU7CisJa2V5LT5uc2gubmV4dF9w cm90byA9IG5zaF9oZHItPmJhc2UubmV4dF9wcm90bzsKKwlrZXktPm5zaC5uc2kgPSBuc2hfaGRy LT5iYXNlLnN2Y19pZHg7CisJa2V5LT5uc2gubnNwID0gbnNoX2hkci0+YmFzZS5wYXRoX2hkciA8 PCA4OworCWtleS0+bnNoLm5zaGMxID0gY3R4LT5uc2hjMTsKKwlrZXktPm5zaC5uc2hjMiA9IGN0 eC0+bnNoYzI7CisJa2V5LT5uc2gubnNoYzMgPSBjdHgtPm5zaGMzOworCWtleS0+bnNoLm5zaGM0 ID0gY3R4LT5uc2hjNDsKKworCV9fc2tiX3B1bGwoc2tiLCBsZW5ndGgpOworCXJldHVybiBsZW5n dGg7Cit9CisKIHN0YXRpYyBpbnQgcGFyc2VfdmxhbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3Qgc3dfZmxvd19rZXkgKmtleSkKIHsKIAlzdHJ1Y3QgcXRhZ19wcmVmaXggewpAQCAtNDYwLDcg KzQ5MSw3IEBAIGludmFsaWQ6CiAgKi8KIHN0YXRpYyBpbnQga2V5X2V4dHJhY3Qoc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpCiB7Ci0JaW50IGVycm9yOworCWlu dCBlcnJvciwgbnNoX2xlbiA9IDA7CiAJc3RydWN0IGV0aGhkciAqZXRoOwogCiAJLyogRmxhZ3Mg YXJlIGFsd2F5cyB1c2VkIGFzIHBhcnQgb2Ygc3RhdHMgKi8KQEAgLTQ5NSw2ICs1MjYsMTQgQEAg c3RhdGljIGludCBrZXlfZXh0cmFjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxv d19rZXkgKmtleSkKIAlza2JfcmVzZXRfbWFjX2xlbihza2IpOwogCV9fc2tiX3B1c2goc2tiLCBz a2ItPmRhdGEgLSBza2JfbWFjX2hlYWRlcihza2IpKTsKIAorCS8qIE5ldHdvcmsgU2VydmljZSBI ZWFkZXIgKi8KKwltZW1zZXQoJmtleS0+bnNoLCAwLCBzaXplb2Yoa2V5LT5uc2gpKTsKKwlpZiAo c2tiLT5wcm90b2NvbCA9PSBodG9ucyhFVEhfUF9OU0gpKSB7CisJCW5zaF9sZW4gPSBwYXJzZV9u c2goc2tiLCBrZXkpOworCQlpZiAodW5saWtlbHkobnNoX2xlbiA8PSAwKSkKKwkJCXJldHVybiAt RUlOVkFMOworCX0KKwogCS8qIE5ldHdvcmsgbGF5ZXIuICovCiAJaWYgKGtleS0+ZXRoLnR5cGUg PT0gaHRvbnMoRVRIX1BfSVApKSB7CiAJCXN0cnVjdCBpcGhkciAqbmg7CkBAIC02ODUsNiArNzI0 LDEwIEBAIHN0YXRpYyBpbnQga2V5X2V4dHJhY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IHN3X2Zsb3dfa2V5ICprZXkpCiAJCQl9CiAJCX0KIAl9CisKKwlpZiAobnNoX2xlbiA+IDApCisJ CV9fc2tiX3B1c2goc2tiLCBuc2hfbGVuKTsKKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQg YS9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5oIGIvbmV0L29wZW52c3dpdGNoL2Zsb3cuaAppbmRleCAw MzM3OGU3Li41ODRmZDc4IDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZmxvdy5oCisrKyBi L25ldC9vcGVudnN3aXRjaC9mbG93LmgKQEAgLTU0LDEwICs1NCwyNSBAQCBzdHJ1Y3Qgb3ZzX3R1 bm5lbF9pbmZvIHsKIAkob2Zmc2V0b2Yoc3RydWN0IHN3X2Zsb3dfa2V5LCByZWNpcmNfaWQpICsJ XAogCUZJRUxEX1NJWkVPRihzdHJ1Y3Qgc3dfZmxvd19rZXksIHJlY2lyY19pZCkpCiAKKy8qIE5l dHdvcmsgU2VydmljZSBIZWFkZXIsIE1EIFR5cGUgSSBvbmx5IGZvciB0aGUgbW9tZW50LgorICov CitzdHJ1Y3Qgb3ZzX25zaF9rZXkgeworCXU4ICBmbGFnczsKKwl1OCAgbWRfdHlwZTsgICAgLyog TlNIIG1ldGFkYXRhIHR5cGUgKi8KKwl1OCAgbmV4dF9wcm90bzsgLyogTlNIIG5leHQgcHJvdG9j b2wgKi8KKwl1OCAgbnNpOyAgICAgICAgLyogTlNIIGluZGV4ICovCisJdTMyIG5zcDsgICAgICAg IC8qIE5TSCBwYXRoIGlkICovCisJdTMyIG5zaGMxOyAgICAgIC8qIE5TSCBjb250ZXh0IEMxLUM0 ICovCisJdTMyIG5zaGMyOworCXUzMiBuc2hjMzsKKwl1MzIgbnNoYzQ7Cit9IF9fcGFja2VkIF9f YWxpZ25lZCg0KTsgLyogTWluaW1pemUgcGFkZGluZy4gKi8KKwogc3RydWN0IHN3X2Zsb3dfa2V5 IHsKIAl1OCB0dW5fb3B0c1tJUF9UVU5ORUxfT1BUU19NQVhdOwogCXU4IHR1bl9vcHRzX2xlbjsK IAlzdHJ1Y3QgaXBfdHVubmVsX2tleSB0dW5fa2V5OwkvKiBFbmNhcHN1bGF0aW5nIHR1bm5lbCBr ZXkuICovCisJc3RydWN0IG92c19uc2hfa2V5IG5zaDsgICAgICAgICAvKiBuZXR3b3JrIHNlcnZp Y2UgaGVhZGVyICovCiAJc3RydWN0IHsKIAkJdTMyCXByaW9yaXR5OwkvKiBQYWNrZXQgUW9TIHBy aW9yaXR5LiAqLwogCQl1MzIJc2tiX21hcms7CS8qIFNLQiBtYXJrLiAqLwpkaWZmIC0tZ2l0IGEv bmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIGIvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0 bGluay5jCmluZGV4IDBiYjY1MGYuLmY4MGZmNjYgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRj aC9mbG93X25ldGxpbmsuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKQEAg LTE0NSw2ICsxNDUsMTMgQEAgc3RhdGljIGJvb2wgbWF0Y2hfdmFsaWRhdGUoY29uc3Qgc3RydWN0 IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkgICAgICAgfCAoMSA8PCBPVlNfS0VZX0FUVFJfSU5f UE9SVCkKIAkJICAgICAgIHwgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSkpOwogCisJLyog TmV0d29yayBTZXJ2aWNlIEhlYWRlciAqLworCWlmIChtYXRjaC0+a2V5LT5uc2gubWRfdHlwZSkg eworCQlrZXlfZXhwZWN0ZWQgfD0gMSA8PCBPVlNfS0VZX0FUVFJfTlNIOworCQlpZiAobWF0Y2gt Pm1hc2spCisJCQltYXNrX2FsbG93ZWQgfD0gMSA8PCBPVlNfS0VZX0FUVFJfTlNIOworCX0KKwog CS8qIENoZWNrIGtleSBhdHRyaWJ1dGVzLiAqLwogCWlmIChtYXRjaC0+a2V5LT5ldGgudHlwZSA9 PSBodG9ucyhFVEhfUF9BUlApCiAJCQl8fCBtYXRjaC0+a2V5LT5ldGgudHlwZSA9PSBodG9ucyhF VEhfUF9SQVJQKSkgewpAQCAtMjc3LDEyICsyODQsMjUgQEAgc2l6ZV90IG92c190dW5fa2V5X2F0 dHJfc2l6ZSh2b2lkKQogCQkrIG5sYV90b3RhbF9zaXplKDIpOyAgIC8qIE9WU19UVU5ORUxfS0VZ X0FUVFJfVFBfRFNUICovCiB9CiAKK3NpemVfdCBvdnNfbnNoX2tleV9hdHRyX3NpemUodm9pZCkK K3sKKwlyZXR1cm4gICAgbmxhX3RvdGFsX3NpemUoMSkgICAgLyogT1ZTX05TSF9LRVlfQVRUUl9G TEFHUyAqLworCQkrIG5sYV90b3RhbF9zaXplKDEpICAgIC8qIE9WU19OU0hfS0VZX0FUVFJfTURf VFlQRSAqLworCQkrIG5sYV90b3RhbF9zaXplKDEpICAgIC8qIE9WU19OU0hfS0VZX0FUVFJfTkVY VF9QUk9UTyAqLworCQkrIG5sYV90b3RhbF9zaXplKDEpICAgIC8qIE9WU19OU0hfS0VZX0FUVFJf TlNJICovCisJCSsgbmxhX3RvdGFsX3NpemUoNCkgICAgLyogT1ZTX05TSF9LRVlfQVRUUl9OU1Ag Ki8KKwkJKyBubGFfdG90YWxfc2l6ZSg0KSAgICAvKiBPVlNfTlNIX0tFWV9BVFRSX05TSEMxICov CisJCSsgbmxhX3RvdGFsX3NpemUoNCkgICAgLyogT1ZTX05TSF9LRVlfQVRUUl9OU0hDMiAqLwor CQkrIG5sYV90b3RhbF9zaXplKDQpICAgIC8qIE9WU19OU0hfS0VZX0FUVFJfTlNIQzMgKi8KKwkJ KyBubGFfdG90YWxfc2l6ZSg0KTsgICAvKiBPVlNfTlNIX0tFWV9BVFRSX05TSEM0ICovCit9CisK IHNpemVfdCBvdnNfa2V5X2F0dHJfc2l6ZSh2b2lkKQogewogCS8qIFdoZW5ldmVyIGFkZGluZyBu ZXcgT1ZTX0tFWV8gRklFTERTLCB3ZSBzaG91bGQgY29uc2lkZXIKIAkgKiB1cGRhdGluZyB0aGlz IGZ1bmN0aW9uLgogCSAqLwotCUJVSUxEX0JVR19PTihPVlNfS0VZX0FUVFJfVFVOTkVMX0lORk8g IT0gMjYpOworCUJVSUxEX0JVR19PTihPVlNfS0VZX0FUVFJfVFVOTkVMX0lORk8gIT0gMjcpOwog CiAJcmV0dXJuICAgIG5sYV90b3RhbF9zaXplKDQpICAgLyogT1ZTX0tFWV9BVFRSX1BSSU9SSVRZ ICovCiAJCSsgbmxhX3RvdGFsX3NpemUoMCkgICAvKiBPVlNfS0VZX0FUVFJfVFVOTkVMICovCkBA IC0yOTgsNiArMzE4LDggQEAgc2l6ZV90IG92c19rZXlfYXR0cl9zaXplKHZvaWQpCiAJCSsgbmxh X3RvdGFsX3NpemUoMTIpICAvKiBPVlNfS0VZX0FUVFJfRVRIRVJORVQgKi8KIAkJKyBubGFfdG90 YWxfc2l6ZSgyKSAgIC8qIE9WU19LRVlfQVRUUl9FVEhFUlRZUEUgKi8KIAkJKyBubGFfdG90YWxf c2l6ZSg0KSAgIC8qIE9WU19LRVlfQVRUUl9WTEFOICovCisJCSsgbmxhX3RvdGFsX3NpemUoMCkg ICAvKiBPVlNfS0VZX0FUVFJfTlNIICovCisJCSsgb3ZzX25zaF9rZXlfYXR0cl9zaXplKCkKIAkJ KyBubGFfdG90YWxfc2l6ZSgwKSAgIC8qIE9WU19LRVlfQVRUUl9FTkNBUCAqLwogCQkrIG5sYV90 b3RhbF9zaXplKDIpICAgLyogT1ZTX0tFWV9BVFRSX0VUSEVSVFlQRSAqLwogCQkrIG5sYV90b3Rh bF9zaXplKDQwKSAgLyogT1ZTX0tFWV9BVFRSX0lQVjYgKi8KQEAgLTMyNyw2ICszNDksMTggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBvdnNfbGVuX3RibCBvdnNfdHVubmVsX2tleV9sZW5zW09WU19U VU5ORUxfS0VZX0FUVFJfTUFYICsgMV0KIAlbT1ZTX1RVTk5FTF9LRVlfQVRUUl9JUFY2X0RTVF0g ICAgICA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpIH0sCiB9OwogCitzdGF0aWMg Y29uc3Qgc3RydWN0IG92c19sZW5fdGJsIG92c19uc2hfa2V5X2xlbnNbT1ZTX05TSF9LRVlfQVRU Ul9NQVggKyAxXSA9IHsKKwlbT1ZTX05TSF9LRVlfQVRUUl9GTEFHU10gICAgICAgICAgICA9IHsg LmxlbiA9IDEgfSwKKwlbT1ZTX05TSF9LRVlfQVRUUl9NRF9UWVBFXSAgICAgICAgICA9IHsgLmxl biA9IDEgfSwKKwlbT1ZTX05TSF9LRVlfQVRUUl9ORVhUX1BST1RPXSAgICAgICA9IHsgLmxlbiA9 IDEgfSwKKwlbT1ZTX05TSF9LRVlfQVRUUl9OU0ldICAgICAgICAgICAgICA9IHsgLmxlbiA9IDEg fSwKKwlbT1ZTX05TSF9LRVlfQVRUUl9OU1BdICAgICAgICAgICAgICA9IHsgLmxlbiA9IDQgfSwK KwlbT1ZTX05TSF9LRVlfQVRUUl9OU0hDMV0gICAgICAgICAgICA9IHsgLmxlbiA9IDQgfSwKKwlb T1ZTX05TSF9LRVlfQVRUUl9OU0hDMl0gICAgICAgICAgICA9IHsgLmxlbiA9IDQgfSwKKwlbT1ZT X05TSF9LRVlfQVRUUl9OU0hDM10gICAgICAgICAgICA9IHsgLmxlbiA9IDQgfSwKKwlbT1ZTX05T SF9LRVlfQVRUUl9OU0hDNF0gICAgICAgICAgICA9IHsgLmxlbiA9IDQgfSwKK307CisKIC8qIFRo ZSBzaXplIG9mIHRoZSBhcmd1bWVudCBmb3IgZWFjaCAlT1ZTX0tFWV9BVFRSXyogTmV0bGluayBh dHRyaWJ1dGUuICAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBvdnNfbGVuX3RibCBvdnNfa2V5X2xl bnNbT1ZTX0tFWV9BVFRSX01BWCArIDFdID0gewogCVtPVlNfS0VZX0FUVFJfRU5DQVBdCSA9IHsg LmxlbiA9IE9WU19BVFRSX05FU1RFRCB9LApAQCAtMzM1LDYgKzM2OSw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb3ZzX2xlbl90Ymwgb3ZzX2tleV9sZW5zW09WU19LRVlfQVRUUl9NQVggKyAxXSA9 IHsKIAlbT1ZTX0tFWV9BVFRSX1NLQl9NQVJLXQkgPSB7IC5sZW4gPSBzaXplb2YodTMyKSB9LAog CVtPVlNfS0VZX0FUVFJfRVRIRVJORVRdCSA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tl eV9ldGhlcm5ldCkgfSwKIAlbT1ZTX0tFWV9BVFRSX1ZMQU5dCSA9IHsgLmxlbiA9IHNpemVvZihf X2JlMTYpIH0sCisJW09WU19LRVlfQVRUUl9OU0hdCSA9IHsgLmxlbiA9IE9WU19BVFRSX05FU1RF RCwKKwkJCQkgICAgIC5uZXh0ID0gb3ZzX25zaF9rZXlfbGVucywgfSwKIAlbT1ZTX0tFWV9BVFRS X0VUSEVSVFlQRV0gPSB7IC5sZW4gPSBzaXplb2YoX19iZTE2KSB9LAogCVtPVlNfS0VZX0FUVFJf SVBWNF0JID0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCBvdnNfa2V5X2lwdjQpIH0sCiAJW09WU19L RVlfQVRUUl9JUFY2XQkgPSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IG92c19rZXlfaXB2NikgfSwK QEAgLTkwMSw2ICs5MzcsMTUxIEBAIHN0YXRpYyBpbnQgbWV0YWRhdGFfZnJvbV9ubGF0dHJzKHN0 cnVjdCBuZXQgKm5ldCwgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCXJldHVybiAwOwog fQogCitzdGF0aWMgaW50IG5zaF9mcm9tX25sYXR0cihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRy LAorCQkJICAgc3RydWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLCBib29sIGlzX21hc2ssCisJCQkg ICBib29sIGxvZykKK3sKKwlzdHJ1Y3QgbmxhdHRyICphOworCWludCByZW07CisKKwlubGFfZm9y X2VhY2hfbmVzdGVkKGEsIGF0dHIsIHJlbSkgeworCQlpbnQgdHlwZSA9IG5sYV90eXBlKGEpOwor CisJCWlmICh0eXBlID4gT1ZTX05TSF9LRVlfQVRUUl9NQVgpIHsKKwkJCU9WU19OTEVSUihsb2cs ICJOU0ggYXR0ciAlZCBvdXQgb2YgcmFuZ2UgbWF4ICVkIiwKKwkJCQkgIHR5cGUsIE9WU19OU0hf S0VZX0FUVFJfTUFYKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJaWYgKCFjaGVja19h dHRyX2xlbihubGFfbGVuKGEpLAorCQkJCSAgICBvdnNfbnNoX2tleV9sZW5zW3R5cGVdLmxlbikp IHsKKwkJCU9WU19OTEVSUihsb2csICJOU0ggYXR0ciAlZCBoYXMgdW5leHBlY3RlZCBsZW4gJWQi LAorCQkJCSAgdHlwZSwgbmxhX2xlbihhKSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJ CXN3aXRjaCAodHlwZSkgeworCQljYXNlIE9WU19OU0hfS0VZX0FUVFJfRkxBR1M6CisJCQlTV19G TE9XX0tFWV9QVVQobWF0Y2gsIG5zaC5mbGFncywKKwkJCQkJbmxhX2dldF91OChhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJY2FzZSBPVlNfTlNIX0tFWV9BVFRSX01EX1RZUEU6CisJCQlTV19G TE9XX0tFWV9QVVQobWF0Y2gsIG5zaC5tZF90eXBlLAorCQkJCQlubGFfZ2V0X3U4KGEpLCBpc19t YXNrKTsKKwkJCWJyZWFrOworCQljYXNlIE9WU19OU0hfS0VZX0FUVFJfTkVYVF9QUk9UTzoKKwkJ CVNXX0ZMT1dfS0VZX1BVVChtYXRjaCwgbnNoLm5leHRfcHJvdG8sCisJCQkJCW5sYV9nZXRfdTgo YSksIGlzX21hc2spOworCQkJYnJlYWs7CisJCWNhc2UgT1ZTX05TSF9LRVlfQVRUUl9OU0k6CisJ CQlTV19GTE9XX0tFWV9QVVQobWF0Y2gsIG5zaC5uc2ksCisJCQkJCW5sYV9nZXRfdTgoYSksIGlz X21hc2spOworCQkJYnJlYWs7CisJCWNhc2UgT1ZTX05TSF9LRVlfQVRUUl9OU1A6CisJCQlTV19G TE9XX0tFWV9QVVQobWF0Y2gsIG5zaC5uc3AsCisJCQkJCW5sYV9nZXRfYmUzMihhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJY2FzZSBPVlNfTlNIX0tFWV9BVFRSX05TSEMxOgorCQkJU1dfRkxP V19LRVlfUFVUKG1hdGNoLCBuc2gubnNoYzEsCisJCQkJCW5sYV9nZXRfYmUzMihhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJY2FzZSBPVlNfTlNIX0tFWV9BVFRSX05TSEMyOgorCQkJU1dfRkxP V19LRVlfUFVUKG1hdGNoLCBuc2gubnNoYzIsCisJCQkJCW5sYV9nZXRfYmUzMihhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJY2FzZSBPVlNfTlNIX0tFWV9BVFRSX05TSEMzOgorCQkJU1dfRkxP V19LRVlfUFVUKG1hdGNoLCBuc2gubnNoYzMsCisJCQkJCW5sYV9nZXRfYmUzMihhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJY2FzZSBPVlNfTlNIX0tFWV9BVFRSX05TSEM0OgorCQkJU1dfRkxP V19LRVlfUFVUKG1hdGNoLCBuc2gubnNoYzQsCisJCQkJCW5sYV9nZXRfYmUzMihhKSwgaXNfbWFz ayk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCU9WU19OTEVSUihsb2csICJVbmtub3duIE5T SCBhdHRyaWJ1dGUgJWQiLAorCQkJCSAgdHlwZSk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQor CX0KKworCWlmIChyZW0gPiAwKSB7CisJCU9WU19OTEVSUihsb2csICJOU0ggYXR0cmlidXRlIGhh cyAlZCB1bmtub3duIGJ5dGVzLiIsCisJCQkgIHJlbSk7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCWlmICghaXNfbWFzaykgeworCQlpZiAoIW1hdGNoLT5rZXktPm5zaC5tZF90eXBlKSB7CisJ CQlPVlNfTkxFUlIobG9nLCAiTlNIIEhlYWRlciBNRCBUeXBlIGlzIHplcm8iKTsKKwkJCXJldHVy biAtRUlOVkFMOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgX19uc2hf dG9fbmxhdHRyKHN0cnVjdCBza19idWZmICpza2IsCisJCQkgICBjb25zdCBzdHJ1Y3Qgb3ZzX25z aF9rZXkgKm91dHB1dCkKK3sKKwlpZiAob3V0cHV0LT5tZF90eXBlKSB7CisJCWlmIChvdXRwdXQt PmZsYWdzICYmCisJCSAgICBubGFfcHV0X3U4KHNrYiwgT1ZTX05TSF9LRVlfQVRUUl9GTEFHUywK KwkJCSAgICAgICBvdXRwdXQtPmZsYWdzKSkKKwkJCXJldHVybiAtRU1TR1NJWkU7CisJCWlmIChu bGFfcHV0X3U4KHNrYiwgT1ZTX05TSF9LRVlfQVRUUl9NRF9UWVBFLAorCQkJICAgICAgIG91dHB1 dC0+bWRfdHlwZSkpCisJCQlyZXR1cm4gLUVNU0dTSVpFOworCQlpZiAob3V0cHV0LT5uZXh0X3By b3RvICYmCisJCSAgICBubGFfcHV0X3U4KHNrYiwgT1ZTX05TSF9LRVlfQVRUUl9ORVhUX1BST1RP LAorCQkJICAgICAgIG91dHB1dC0+bmV4dF9wcm90bykpCisJCQlyZXR1cm4gLUVNU0dTSVpFOwor CQlpZiAob3V0cHV0LT5uc2kgJiYKKwkJICAgIG5sYV9wdXRfdTgoc2tiLCBPVlNfTlNIX0tFWV9B VFRSX05TSSwKKwkJCSAgICAgICBvdXRwdXQtPm5zaSkpCisJCQlyZXR1cm4gLUVNU0dTSVpFOwor CQlpZiAob3V0cHV0LT5uc3AgJiYKKwkJICAgIG5sYV9wdXRfYmUzMihza2IsIE9WU19OU0hfS0VZ X0FUVFJfTlNQLAorCQkJCSBvdXRwdXQtPm5zcCkpCisJCQlyZXR1cm4gLUVNU0dTSVpFOworCQlp ZiAob3V0cHV0LT5uc2hjMSAmJgorCQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgT1ZTX05TSF9LRVlf QVRUUl9OU0hDMSwKKwkJCQkgb3V0cHV0LT5uc2hjMSkpCisJCQlyZXR1cm4gLUVNU0dTSVpFOwor CQlpZiAob3V0cHV0LT5uc2hjMiAmJgorCQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgT1ZTX05TSF9L RVlfQVRUUl9OU0hDMiwKKwkJCQkgb3V0cHV0LT5uc2hjMikpCisJCQlyZXR1cm4gLUVNU0dTSVpF OworCQlpZiAob3V0cHV0LT5uc2hjMyAmJgorCQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgT1ZTX05T SF9LRVlfQVRUUl9OU0hDMywKKwkJCQkgb3V0cHV0LT5uc2hjMykpCisJCQlyZXR1cm4gLUVNU0dT SVpFOworCQlpZiAob3V0cHV0LT5uc2hjNCAmJgorCQkgICAgbmxhX3B1dF9iZTMyKHNrYiwgT1ZT X05TSF9LRVlfQVRUUl9OU0hDNCwKKwkJCQkgb3V0cHV0LT5uc2hjNCkpCisJCQlyZXR1cm4gLUVN U0dTSVpFOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG5zaF90b19ubGF0dHIo c3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCSBjb25zdCBzdHJ1Y3Qgb3ZzX25zaF9rZXkgKm91dHB1 dCkKK3sKKwlzdHJ1Y3QgbmxhdHRyICpubGE7CisJaW50IGVycjsKKworCW5sYSA9IG5sYV9uZXN0 X3N0YXJ0KHNrYiwgT1ZTX0tFWV9BVFRSX05TSCk7CisJaWYgKCFubGEpCisJCXJldHVybiAtRU1T R1NJWkU7CisKKwllcnIgPSBfX25zaF90b19ubGF0dHIoc2tiLCBvdXRwdXQpOworCWlmIChlcnIp CisJCXJldHVybiBlcnI7CisKKwlubGFfbmVzdF9lbmQoc2tiLCBubGEpOworCXJldHVybiAwOwor fQorCiBzdGF0aWMgaW50IG92c19rZXlfZnJvbV9ubGF0dHJzKHN0cnVjdCBuZXQgKm5ldCwgc3Ry dWN0IHN3X2Zsb3dfbWF0Y2ggKm1hdGNoLAogCQkJCXU2NCBhdHRycywgY29uc3Qgc3RydWN0IG5s YXR0ciAqKmEsCiAJCQkJYm9vbCBpc19tYXNrLCBib29sIGxvZykKQEAgLTkxMSw2ICsxMDkyLDE0 IEBAIHN0YXRpYyBpbnQgb3ZzX2tleV9mcm9tX25sYXR0cnMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1 Y3Qgc3dfZmxvd19tYXRjaCAqbWF0Y2gsCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAorCWlm IChhdHRycyAmICgxIDw8IE9WU19LRVlfQVRUUl9OU0gpKSB7CisJCWlmIChuc2hfZnJvbV9ubGF0 dHIoYVtPVlNfS0VZX0FUVFJfTlNIXSwgbWF0Y2gsCisJCQkJICAgIGlzX21hc2ssIGxvZykgPCAw KSB7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQlhdHRycyAmPSB+KDEgPDwgT1ZTX0tFWV9B VFRSX05TSCk7CisJfQorCiAJaWYgKGF0dHJzICYgKDEgPDwgT1ZTX0tFWV9BVFRSX0VUSEVSTkVU KSkgewogCQljb25zdCBzdHJ1Y3Qgb3ZzX2tleV9ldGhlcm5ldCAqZXRoX2tleTsKIApAQCAtMTQz Nyw2ICsxNjI2LDExIEBAIHN0YXRpYyBpbnQgX19vdnNfbmxhX3B1dF9rZXkoY29uc3Qgc3RydWN0 IHN3X2Zsb3dfa2V5ICpzd2tleSwKIAkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCX0KIAorCWlm ICgoc3drZXktPm5zaC5tZF90eXBlKSkgeworCQlpZiAobnNoX3RvX25sYXR0cihza2IsICZvdXRw dXQtPm5zaCkpCisJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKKwl9CisKIAlpZiAoc3drZXktPnBo eS5pbl9wb3J0ID09IERQX01BWF9QT1JUUykgewogCQlpZiAoaXNfbWFzayAmJiAob3V0cHV0LT5w aHkuaW5fcG9ydCA9PSAweGZmZmYpKQogCQkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgT1ZTX0tFWV9B VFRSX0lOX1BPUlQsIDB4ZmZmZmZmZmYpKQpAQCAtMjIyOSw2ICsyNDIzLDggQEAgc3RhdGljIGlu dCBfX292c19ubGFfY29weV9hY3Rpb25zKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5s YXR0ciAqYXR0ciwKIAkJCVtPVlNfQUNUSU9OX0FUVFJfU0FNUExFXSA9ICh1MzIpLTEsCiAJCQlb T1ZTX0FDVElPTl9BVFRSX0hBU0hdID0gc2l6ZW9mKHN0cnVjdCBvdnNfYWN0aW9uX2hhc2gpLAog CQkJW09WU19BQ1RJT05fQVRUUl9DVF0gPSAodTMyKS0xLAorCQkJW09WU19BQ1RJT05fQVRUUl9Q VVNIX05TSF0gPSBzaXplb2Yoc3RydWN0IG92c19hY3Rpb25fcHVzaF9uc2gpLAorCQkJW09WU19B Q1RJT05fQVRUUl9QT1BfTlNIXSA9IDAsCiAJCX07CiAJCWNvbnN0IHN0cnVjdCBvdnNfYWN0aW9u X3B1c2hfdmxhbiAqdmxhbjsKIAkJaW50IHR5cGUgPSBubGFfdHlwZShhKTsKQEAgLTIyODEsNiAr MjQ3NywxMCBAQCBzdGF0aWMgaW50IF9fb3ZzX25sYV9jb3B5X2FjdGlvbnMoc3RydWN0IG5ldCAq bmV0LCBjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJdmxhbl90Y2kgPSB2bGFuLT52bGFu X3RjaTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT1ZTX0FDVElPTl9BVFRSX1BVU0hfTlNIOgorCQlj YXNlIE9WU19BQ1RJT05fQVRUUl9QT1BfTlNIOgorCQkJYnJlYWs7CisKIAkJY2FzZSBPVlNfQUNU SU9OX0FUVFJfUkVDSVJDOgogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRj aC92cG9ydC1uZXRkZXYuYyBiL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYwppbmRleCA0 ZTM5NzIzLi5iMGYyMTZhIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2 LmMKKysrIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5jCkBAIC05Nyw3ICs5Nyw4IEBA IHN0cnVjdCB2cG9ydCAqb3ZzX25ldGRldl9saW5rKHN0cnVjdCB2cG9ydCAqdnBvcnQsIGNvbnN0 IGNoYXIgKm5hbWUpCiAJfQogCiAJaWYgKHZwb3J0LT5kZXYtPmZsYWdzICYgSUZGX0xPT1BCQUNL IHx8Ci0JICAgIHZwb3J0LT5kZXYtPnR5cGUgIT0gQVJQSFJEX0VUSEVSIHx8CisJICAgICh2cG9y dC0+ZGV2LT50eXBlICE9IEFSUEhSRF9FVEhFUiAmJgorCSAgICAgdnBvcnQtPmRldi0+dHlwZSAh PSBBUlBIUkRfTk9ORSkgfHwKIAkgICAgb3ZzX2lzX2ludGVybmFsX2Rldih2cG9ydC0+ZGV2KSkg ewogCQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIGVycm9yX3B1dDsKZGlmZiAtLWdpdCBhL25ldC9v cGVudnN3aXRjaC92cG9ydC12eGxhbi5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LXZ4bGFuLmMK aW5kZXggNWViNzY5NC4uM2QwNjBjNCAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0 LXZ4bGFuLmMKKysrIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LXZ4bGFuLmMKQEAgLTUyLDYgKzUy LDE4IEBAIHN0YXRpYyBpbnQgdnhsYW5fZ2V0X29wdGlvbnMoY29uc3Qgc3RydWN0IHZwb3J0ICp2 cG9ydCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCXJldHVybiAtRU1TR1NJWkU7CiAKIAkJbmxh X25lc3RfZW5kKHNrYiwgZXh0cyk7CisJfSBlbHNlIGlmICh2eGxhbi0+ZmxhZ3MgJiBWWExBTl9G X0dQRSkgeworCQlzdHJ1Y3QgbmxhdHRyICpleHRzOworCisJCWV4dHMgPSBubGFfbmVzdF9zdGFy dChza2IsIE9WU19UVU5ORUxfQVRUUl9FWFRFTlNJT04pOworCQlpZiAoIWV4dHMpCisJCQlyZXR1 cm4gLUVNU0dTSVpFOworCisJCWlmICh2eGxhbi0+ZmxhZ3MgJiBWWExBTl9GX0dQRSAmJgorCQkg ICAgbmxhX3B1dF9mbGFnKHNrYiwgT1ZTX1ZYTEFOX0VYVF9HUEUpKQorCQkJcmV0dXJuIC1FTVNH U0laRTsKKworCQlubGFfbmVzdF9lbmQoc2tiLCBleHRzKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAg LTU5LDYgKzcxLDcgQEAgc3RhdGljIGludCB2eGxhbl9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qg dnBvcnQgKnZwb3J0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IG5sYV9wb2xpY3kgZXh0c19wb2xpY3lbT1ZTX1ZYTEFOX0VYVF9NQVggKyAxXSA9IHsKIAlbT1ZT X1ZYTEFOX0VYVF9HQlBdCT0geyAudHlwZSA9IE5MQV9GTEFHLCB9LAorCVtPVlNfVlhMQU5fRVhU X0dQRV0JPSB7IC50eXBlID0gTkxBX0ZMQUcsIH0sCiB9OwogCiBzdGF0aWMgaW50IHZ4bGFuX2Nv bmZpZ3VyZV9leHRzKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBubGF0dHIgKmF0dHIsCkBA IC03Niw2ICs4OSw4IEBAIHN0YXRpYyBpbnQgdnhsYW5fY29uZmlndXJlX2V4dHMoc3RydWN0IHZw b3J0ICp2cG9ydCwgc3RydWN0IG5sYXR0ciAqYXR0ciwKIAogCWlmIChleHRzW09WU19WWExBTl9F WFRfR0JQXSkKIAkJY29uZi0+ZmxhZ3MgfD0gVlhMQU5fRl9HQlA7CisJZWxzZSBpZiAoZXh0c1tP VlNfVlhMQU5fRVhUX0dQRV0pCisJCWNvbmYtPmZsYWdzIHw9IFZYTEFOX0ZfR1BFOwogCiAJcmV0 dXJuIDA7CiB9Ci0tIAoxLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZGV2IG1haWxpbmcgbGlzdApkZXZAb3BlbnZzd2l0Y2gub3JnCmh0dHA6Ly9v cGVudnN3aXRjaC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXYK