From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v7 7/9] mm: Keep heap accessible to others while scrubbing Date: Tue, 8 Aug 2017 17:45:05 -0400 Message-ID: <1502228707-31883-8-git-send-email-boris.ostrovsky@oracle.com> References: <1502228707-31883-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1502228707-31883-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org SW5zdGVhZCBvZiBzY3J1YmJpbmcgcGFnZXMgd2hpbGUgaG9sZGluZyBoZWFwIGxvY2sgd2UgY2Fu IG1hcmsKYnVkZHkncyBoZWFkIGFzIGJlaW5nIHNjcnViYmVkIGFuZCBkcm9wIHRoZSBsb2NrIHRl bXBvcmFyaWx5LgpJZiBzb21lb25lIChtb3N0IGxpa2VseSBhbGxvY19oZWFwX3BhZ2VzKCkpIHRy aWVzIHRvIGFjY2Vzcwp0aGlzIGNodW5rIGl0IHdpbGwgc2lnbmFsIHRoZSBzY3J1YmJlciB0byBh Ym9ydCBzY3J1YiBieSBzZXR0aW5nCmhlYWQncyBCVUREWV9TQ1JVQl9BQk9SVCBiaXQuIFRoZSBz Y3J1YmJlciBjaGVja3MgdGhpcyBiaXQgYWZ0ZXIKcHJvY2Vzc2luZyBlYWNoIHBhZ2UgYW5kIHN0 b3BzIGl0cyB3b3JrIGFzIHNvb24gYXMgaXQgc2VlcyBpdC4KClNpZ25lZC1vZmYtYnk6IEJvcmlz IE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Ci0tLQpDaGFuZ2VzIGluIHY3 OgoqIFJlcGxhY2VkIHBhZ2VfaW5mbyB3aXRoIHR5cGVvZihoZWFkLT51LmZyZWUpIGluIGNoZWNr X2FuZF9zdG9wX3NjcnViKCkKKiBSZXBsYWNlZCAxVUwgd2l0aCAxVSBpbiBzY3J1Yl9mcmVlX3Bh Z2VzKCkKKiBGaXhlZCBmb3JtYXR0aW5nIGluIGFzbS0qL21tLmgKCiB4ZW4vY29tbW9uL3BhZ2Vf YWxsb2MuYyAgfCAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCB8ICAyOCArKysrKysrLS0tLS0KIHhlbi9p bmNsdWRlL2FzbS14ODYvbW0uaCB8ICAzMCArKysrKysrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDE0MyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL3BhZ2VfYWxsb2MuYyBiL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCmluZGV4IGI4ODY5ODMu LjcyNmY4NTcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jCisrKyBiL3hlbi9j b21tb24vcGFnZV9hbGxvYy5jCkBAIC02ODcsNiArNjg3LDcgQEAgc3RhdGljIHZvaWQgcGFnZV9s aXN0X2FkZF9zY3J1YihzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWduZWQgaW50IG5vZGUsCiB7 CiAgICAgUEZOX09SREVSKHBnKSA9IG9yZGVyOwogICAgIHBnLT51LmZyZWUuZmlyc3RfZGlydHkg PSBmaXJzdF9kaXJ0eTsKKyAgICBwZy0+dS5mcmVlLnNjcnViX3N0YXRlID0gQlVERFlfTk9UX1ND UlVCQklORzsKIAogICAgIGlmICggZmlyc3RfZGlydHkgIT0gSU5WQUxJRF9ESVJUWV9JRFggKQog ICAgIHsKQEAgLTY5Nyw2ICs2OTgsMjUgQEAgc3RhdGljIHZvaWQgcGFnZV9saXN0X2FkZF9zY3J1 YihzdHJ1Y3QgcGFnZV9pbmZvICpwZywgdW5zaWduZWQgaW50IG5vZGUsCiAgICAgICAgIHBhZ2Vf bGlzdF9hZGQocGcsICZoZWFwKG5vZGUsIHpvbmUsIG9yZGVyKSk7CiB9CiAKK3N0YXRpYyB2b2lk IGNoZWNrX2FuZF9zdG9wX3NjcnViKHN0cnVjdCBwYWdlX2luZm8gKmhlYWQpCit7CisgICAgaWYg KCBoZWFkLT51LmZyZWUuc2NydWJfc3RhdGUgPT0gQlVERFlfU0NSVUJCSU5HICkKKyAgICB7Cisg ICAgICAgIHR5cGVvZihoZWFkLT51LmZyZWUpIHBnZnJlZTsKKworICAgICAgICBoZWFkLT51LmZy ZWUuc2NydWJfc3RhdGUgPSBCVUREWV9TQ1JVQl9BQk9SVDsKKyAgICAgICAgc3Bpbl9sb2NrX2tp Y2soKTsKKyAgICAgICAgZm9yICggOyA7ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogQ2Fu J3QgQUNDRVNTX09OQ0UoKSBhIGJpdGZpZWxkLiAqLworICAgICAgICAgICAgcGdmcmVlLnZhbCA9 IEFDQ0VTU19PTkNFKGhlYWQtPnUuZnJlZS52YWwpOworICAgICAgICAgICAgaWYgKCBwZ2ZyZWUu c2NydWJfc3RhdGUgIT0gQlVERFlfU0NSVUJfQUJPUlQgKQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgY3B1X3JlbGF4KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRp YyBzdHJ1Y3QgcGFnZV9pbmZvICpnZXRfZnJlZV9idWRkeSh1bnNpZ25lZCBpbnQgem9uZV9sbywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgem9u ZV9oaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgb3JkZXIsIHVuc2lnbmVkIGludCBtZW1mbGFncywKQEAgLTc0MSwxNCArNzYxLDE5IEBAIHN0 YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICpnZXRfZnJlZV9idWRkeSh1bnNpZ25lZCBpbnQgem9uZV9s bywKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIChwZyA9IHBhZ2VfbGlzdF9y ZW1vdmVfaGVhZCgmaGVhcChub2RlLCB6b25lLCBqKSkpICkKICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgIGlmICggcGctPnUuZnJlZS5maXJzdF9kaXJ0eSA9PSBJTlZBTElE X0RJUlRZX0lEWCApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGc7CiAgICAgICAg ICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIFdlIGdyYWIgc2luZ2xlIHBh Z2VzIChvcmRlcj0wKSBldmVuIGlmIHRoZXkgYXJlCiAgICAgICAgICAgICAgICAgICAgICAqIHVu c2NydWJiZWQuIEdpdmVuIHRoYXQgc2NydWJiaW5nIG9uZSBwYWdlIGlzIGZhaXJseSBxdWljawog ICAgICAgICAgICAgICAgICAgICAgKiBpdCBpcyBub3Qgd29ydGggYnJlYWtpbmcgaGlnaGVyIG9y ZGVycy4KICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgIGlmICgg KG9yZGVyID09IDApIHx8IHVzZV91bnNjcnViYmVkIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgcGctPnUuZnJlZS5maXJzdF9kaXJ0eSA9PSBJTlZBTElEX0RJUlRZX0lEWCkKKyAgICAgICAg ICAgICAgICAgICAgaWYgKCAob3JkZXIgPT0gMCkgfHwgdXNlX3Vuc2NydWJiZWQgKQorICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19hbmRfc3RvcF9z Y3J1YihwZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGc7CisgICAgICAgICAg ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICBwYWdlX2xpc3RfYWRkX3RhaWwocGcs ICZoZWFwKG5vZGUsIHpvbmUsIGopKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CkBAIC05MjksNiArOTU0LDcgQEAgc3RhdGljIGludCByZXNlcnZlX29mZmxpbmVkX3BhZ2Uoc3Ry dWN0IHBhZ2VfaW5mbyAqaGVhZCkKIAogICAgIGN1cl9oZWFkID0gaGVhZDsKIAorICAgIGNoZWNr X2FuZF9zdG9wX3NjcnViKGhlYWQpOwogICAgIC8qCiAgICAgICogV2UgbWF5IGJyZWFrIHRoZSBi dWRkeSBzbyBsZXQncyBtYXJrIHRoZSBoZWFkIGFzIGNsZWFuLiBUaGVuLCB3aGVuCiAgICAgICog bWVyZ2luZyBjaHVua3MgYmFjayBpbnRvIHRoZSBoZWFwLCB3ZSB3aWxsIHNlZSB3aGV0aGVyIHRo ZSBjaHVuayBoYXMKQEAgLTEwNzksNiArMTEwNSwyOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5v ZGVfdG9fc2NydWIoYm9vbCBnZXRfbm9kZSkKICAgICByZXR1cm4gY2xvc2VzdDsKIH0KIAorc3Ry dWN0IHNjcnViX3dhaXRfc3RhdGUgeworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOworICAgIHVu c2lnbmVkIGludCBmaXJzdF9kaXJ0eTsKKyAgICBib29sIGRyb3A7Cit9OworCitzdGF0aWMgdm9p ZCBzY3J1Yl9jb250aW51ZSh2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzY3J1Yl93YWl0X3N0 YXRlICpzdCA9IGRhdGE7CisKKyAgICBpZiAoIHN0LT5kcm9wICkKKyAgICAgICAgcmV0dXJuOwor CisgICAgaWYgKCBzdC0+cGctPnUuZnJlZS5zY3J1Yl9zdGF0ZSA9PSBCVUREWV9TQ1JVQl9BQk9S VCApCisgICAgeworICAgICAgICAvKiBUaGVyZSBpcyBhIHdhaXRlciBmb3IgdGhpcyBidWRkeS4g UmVsZWFzZSBpdC4gKi8KKyAgICAgICAgc3QtPmRyb3AgPSB0cnVlOworICAgICAgICBzdC0+cGct PnUuZnJlZS5maXJzdF9kaXJ0eSA9IHN0LT5maXJzdF9kaXJ0eTsKKyAgICAgICAgc21wX3dtYigp OworICAgICAgICBzdC0+cGctPnUuZnJlZS5zY3J1Yl9zdGF0ZSA9IEJVRERZX05PVF9TQ1JVQkJJ Tkc7CisgICAgfQorfQorCiBib29sIHNjcnViX2ZyZWVfcGFnZXModm9pZCkKIHsKICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwZzsKQEAgLTExMDEsMjUgKzExNTAsNTMgQEAgYm9vbCBzY3J1Yl9mcmVl X3BhZ2VzKHZvaWQpCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHdoaWxlICggIXBhZ2VfbGlz dF9lbXB0eSgmaGVhcChub2RlLCB6b25lLCBvcmRlcikpICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg aSwgZGlydHlfY250OworICAgICAgICAgICAgICAgIHN0cnVjdCBzY3J1Yl93YWl0X3N0YXRlIHN0 OwogCiAgICAgICAgICAgICAgICAgLyogVW5zY3J1YmJlZCBwYWdlcyBhcmUgYWx3YXlzIGF0IHRo ZSBlbmQgb2YgdGhlIGxpc3QuICovCiAgICAgICAgICAgICAgICAgcGcgPSBwYWdlX2xpc3RfbGFz dCgmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOwogICAgICAgICAgICAgICAgIGlmICggcGctPnUu ZnJlZS5maXJzdF9kaXJ0eSA9PSBJTlZBTElEX0RJUlRZX0lEWCApCiAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgQVNTRVJUKHBnLT51LmZyZWUuc2NydWJfc3Rh dGUgPT0gQlVERFlfTk9UX1NDUlVCQklORyk7CisgICAgICAgICAgICAgICAgcGctPnUuZnJlZS5z Y3J1Yl9zdGF0ZSA9IEJVRERZX1NDUlVCQklORzsKKworICAgICAgICAgICAgICAgIHNwaW5fdW5s b2NrKCZoZWFwX2xvY2spOworCisgICAgICAgICAgICAgICAgZGlydHlfY250ID0gMDsKKwogICAg ICAgICAgICAgICAgIGZvciAoIGkgPSBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5OyBpIDwgKDFVIDw8 IG9yZGVyKTsgaSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYg KCB0ZXN0X2JpdChfUEdDX25lZWRfc2NydWIsICZwZ1tpXS5jb3VudF9pbmZvKSApCiAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNjcnViX29uZV9wYWdlKCZw Z1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAg ICAgICogV2UgY2FuIG1vZGlmeSBjb3VudF9pbmZvIHdpdGhvdXQgaG9sZGluZyBoZWFwCisgICAg ICAgICAgICAgICAgICAgICAgICAgKiBsb2NrIHNpbmNlIHdlIGVmZmVjdGl2ZWx5IGxvY2tlZCB0 aGlzIGJ1ZGR5IGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXR0aW5nIGl0cyBzY3J1 Yl9zdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAg ICAgICAgcGdbaV0uY291bnRfaW5mbyAmPSB+UEdDX25lZWRfc2NydWI7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBub2RlX25lZWRfc2NydWJbbm9kZV0tLTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRpcnR5X2NudCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgY250ICs9IDEwMDsgLyog c2NydWJiZWQgcGFnZXMgYWRkIGhlYXZpZXIgd2VpZ2h0LiAqLwogICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNu dCsrOwogCisgICAgICAgICAgICAgICAgICAgIGlmICggcGctPnUuZnJlZS5zY3J1Yl9zdGF0ZSA9 PSBCVUREWV9TQ1JVQl9BQk9SVCApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIC8qIFNvbWVvbmUgd2FudHMgdGhpcyBjaHVuay4gRHJvcCBldmVyeXRoaW5n LiAqLworCisgICAgICAgICAgICAgICAgICAgICAgICBwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ID0g KGkgPT0gKDFVIDw8IG9yZGVyKSAtIDEpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ TlZBTElEX0RJUlRZX0lEWCA6IGkgKyAxOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNtcF93 bWIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnLT51LmZyZWUuc2NydWJfc3RhdGUgPSBC VUREWV9OT1RfU0NSVUJCSU5HOworCisgICAgICAgICAgICAgICAgICAgICAgICBzcGluX2xvY2so JmhlYXBfbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlX25lZWRfc2NydWJbbm9k ZV0gLT0gZGlydHlfY250OworICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhl YXBfbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9ub2xvY2s7CisgICAg ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAg ICAgICAgICAgKiBTY3J1YiBhIGZldyAoOCkgcGFnZXMgYmVmb3JlIGJlY29taW5nIGVsaWdpYmxl IGZvcgogICAgICAgICAgICAgICAgICAgICAgKiBwcmVlbXB0aW9uLiBCdXQgYWxzbyBjb3VudCBu b24tc2NydWJiaW5nIGxvb3AgaXRlcmF0aW9ucwpAQCAtMTEzMyw2ICsxMjEwLDIzIEBAIGJvb2wg c2NydWJfZnJlZV9wYWdlcyh2b2lkKQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgfQogCisgICAgICAgICAgICAgICAgc3QucGcgPSBwZzsKKyAgICAgICAgICAgICAgICAv KgorICAgICAgICAgICAgICAgICAqIGdldF9mcmVlX2J1ZGR5KCkgZ3JhYnMgYSBidWRkeSB3aXRo IGZpcnN0X2RpcnR5IHNldCB0bworICAgICAgICAgICAgICAgICAqIElOVkFMSURfRElSVFlfSURY IHNvIHdlIGNhbid0IHNldCBwZydzIGZpcnN0X2RpcnR5IGhlcmUuCisgICAgICAgICAgICAgICAg ICogSXQgd2lsbCBiZSBzZXQgZWl0aGVyIGJlbG93IG9yIGluIHRoZSBsb2NrIGNhbGxiYWNrIChp bgorICAgICAgICAgICAgICAgICAqIHNjcnViX2NvbnRpbnVlKCkpLgorICAgICAgICAgICAgICAg ICAqLworICAgICAgICAgICAgICAgIHN0LmZpcnN0X2RpcnR5ID0gKGkgPj0gKDFVIDw8IG9yZGVy KSAtIDEpID8KKyAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9ESVJUWV9JRFggOiBpICsgMTsK KyAgICAgICAgICAgICAgICBzdC5kcm9wID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc3Bpbl9s b2NrX2NiKCZoZWFwX2xvY2ssIHNjcnViX2NvbnRpbnVlLCAmc3QpOworCisgICAgICAgICAgICAg ICAgbm9kZV9uZWVkX3NjcnViW25vZGVdIC09IGRpcnR5X2NudDsKKworICAgICAgICAgICAgICAg IGlmICggc3QuZHJvcCApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OworCiAgICAgICAg ICAgICAgICAgaWYgKCBpID49ICgxVSA8PCBvcmRlcikgLSAxICkKICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgIHBhZ2VfbGlzdF9kZWwocGcsICZoZWFwKG5vZGUsIHpvbmUs IG9yZGVyKSk7CkBAIC0xMTQxLDYgKzEyMzUsOCBAQCBib29sIHNjcnViX2ZyZWVfcGFnZXModm9p ZCkKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHBnLT51LmZyZWUu Zmlyc3RfZGlydHkgPSBpICsgMTsKIAorICAgICAgICAgICAgICAgIHBnLT51LmZyZWUuc2NydWJf c3RhdGUgPSBCVUREWV9OT1RfU0NSVUJCSU5HOworCiAgICAgICAgICAgICAgICAgaWYgKCBwcmVl bXB0IHx8IChub2RlX25lZWRfc2NydWJbbm9kZV0gPT0gMCkgKQogICAgICAgICAgICAgICAgICAg ICBnb3RvIG91dDsKICAgICAgICAgICAgIH0KQEAgLTExNDksNiArMTI0NSw4IEBAIGJvb2wgc2Ny dWJfZnJlZV9wYWdlcyh2b2lkKQogCiAgb3V0OgogICAgIHNwaW5fdW5sb2NrKCZoZWFwX2xvY2sp OworCisgb3V0X25vbG9jazoKICAgICBub2RlX2NsZWFyKG5vZGUsIG5vZGVfc2NydWJiaW5nKTsK ICAgICByZXR1cm4gbm9kZV90b19zY3J1YihmYWxzZSkgIT0gTlVNQV9OT19OT0RFOwogfQpAQCAt MTIzMCw2ICsxMzI4LDggQEAgc3RhdGljIHZvaWQgZnJlZV9oZWFwX3BhZ2VzKAogICAgICAgICAg ICAgICAgICAocGh5c190b19uaWQocGFnZV90b19tYWRkcihwcmVkZWNlc3NvcikpICE9IG5vZGUp ICkKICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgY2hlY2tfYW5kX3N0b3Bf c2NydWIocHJlZGVjZXNzb3IpOworCiAgICAgICAgICAgICBwYWdlX2xpc3RfZGVsKHByZWRlY2Vz c29yLCAmaGVhcChub2RlLCB6b25lLCBvcmRlcikpOwogCiAgICAgICAgICAgICAvKiBLZWVwIHBy ZWRlY2Vzc29yJ3MgZmlyc3RfZGlydHkgaWYgaXQgaXMgYWxyZWFkeSBzZXQuICovCkBAIC0xMjUx LDYgKzEzNTEsOCBAQCBzdGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCiAgICAgICAgICAgICAg ICAgIChwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHN1Y2Nlc3NvcikpICE9IG5vZGUpICkKICAg ICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgY2hlY2tfYW5kX3N0b3Bfc2NydWIo c3VjY2Vzc29yKTsKKwogICAgICAgICAgICAgcGFnZV9saXN0X2RlbChzdWNjZXNzb3IsICZoZWFw KG5vZGUsIHpvbmUsIG9yZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oCmluZGV4IDU3MjMzN2Mu LmQ0MmIwNzAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAorKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL21tLmgKQEAgLTQyLDE4ICs0MiwyNiBAQCBzdHJ1Y3QgcGFnZV9pbmZv CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHR5cGVfaW5mbzsKICAgICAgICAgfSBpbnVzZTsK ICAgICAgICAgLyogUGFnZSBpcyBvbiBhIGZyZWUgbGlzdDogKChjb3VudF9pbmZvICYgUEdDX2Nv dW50X21hc2spID09IDApLiAqLwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogRG8g VExCcyBuZWVkIGZsdXNoaW5nIGZvciBzYWZldHkgYmVmb3JlIG5leHQgcGFnZSB1c2U/ICovCi0g ICAgICAgICAgICBib29sIG5lZWRfdGxiZmx1c2g6MTsKLQotICAgICAgICAgICAgLyoKLSAgICAg ICAgICAgICAqIEluZGV4IG9mIHRoZSBmaXJzdCAqcG9zc2libHkqIHVuc2NydWJiZWQgcGFnZSBp biB0aGUgYnVkZHkuCi0gICAgICAgICAgICAgKiBPbmUgbW9yZSBiaXQgdGhhbiBtYXhpbXVtIHBv c3NpYmxlIG9yZGVyIHRvIGFjY29tbW9kYXRlCi0gICAgICAgICAgICAgKiBJTlZBTElEX0RJUlRZ X0lEWC4KLSAgICAgICAgICAgICAqLworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBzdHJ1 Y3QgeworICAgICAgICAgICAgICAgIC8qIERvIFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5 IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLworICAgICAgICAgICAgICAgIGJvb2wgbmVlZF90bGJm bHVzaDoxOworCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBJbmRleCBv ZiB0aGUgZmlyc3QgKnBvc3NpYmx5KiB1bnNjcnViYmVkIHBhZ2UgaW4gdGhlIGJ1ZGR5LgorICAg ICAgICAgICAgICAgICAqIE9uZSBtb3JlIGJpdCB0aGFuIG1heGltdW0gcG9zc2libGUgb3JkZXIg dG8gYWNjb21tb2RhdGUKKyAgICAgICAgICAgICAgICAgKiBJTlZBTElEX0RJUlRZX0lEWC4KKyAg ICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgSU5WQUxJRF9ESVJUWV9JRFggKCgxVUwgPDwgKE1B WF9PUkRFUiArIDEpKSAtIDEpCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZpcnN0X2RpcnR5 Ok1BWF9PUkRFUiArIDE7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaXJzdF9kaXJ0 eTpNQVhfT1JERVIgKyAxOworCisjZGVmaW5lIEJVRERZX05PVF9TQ1JVQkJJTkcgICAgMAorI2Rl ZmluZSBCVUREWV9TQ1JVQkJJTkcgICAgICAgIDEKKyNkZWZpbmUgQlVERFlfU0NSVUJfQUJPUlQg ICAgICAyCisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzY3J1Yl9zdGF0ZToyOworICAg ICAgICAgICAgfTsKIAorICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWw7CiAgICAgICAgIH0g ZnJlZTsKIAogICAgIH0gdTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAppbmRleCAwN2RjOTYzLi5jOWNmNmMzIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oCkBAIC04NiwxOSArODYsMjcgQEAgc3RydWN0IHBhZ2VfaW5mbwogICAgICAgICB9IHNoOwog CiAgICAgICAgIC8qIFBhZ2UgaXMgb24gYSBmcmVlIGxpc3Q6ICgoY291bnRfaW5mbyAmIFBHQ19j b3VudF9tYXNrKSA9PSAwKS4gKi8KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8qIERv IFRMQnMgbmVlZCBmbHVzaGluZyBmb3Igc2FmZXR5IGJlZm9yZSBuZXh0IHBhZ2UgdXNlPyAqLwot ICAgICAgICAgICAgYm9vbCBuZWVkX3RsYmZsdXNoOjE7Ci0KLSAgICAgICAgICAgIC8qCi0gICAg ICAgICAgICAgKiBJbmRleCBvZiB0aGUgZmlyc3QgKnBvc3NpYmx5KiB1bnNjcnViYmVkIHBhZ2Ug aW4gdGhlIGJ1ZGR5LgotICAgICAgICAgICAgICogT25lIG1vcmUgYml0IHRoYW4gbWF4aW11bSBw b3NzaWJsZSBvcmRlciB0byBhY2NvbW1vZGF0ZQotICAgICAgICAgICAgICogSU5WQUxJRF9ESVJU WV9JRFguCi0gICAgICAgICAgICAgKi8KKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgc3Ry dWN0IHsKKyAgICAgICAgICAgICAgICAvKiBEbyBUTEJzIG5lZWQgZmx1c2hpbmcgZm9yIHNhZmV0 eSBiZWZvcmUgbmV4dCBwYWdlIHVzZT8gKi8KKyAgICAgICAgICAgICAgICBib29sIG5lZWRfdGxi Zmx1c2g6MTsKKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogSW5kZXgg b2YgdGhlIGZpcnN0ICpwb3NzaWJseSogdW5zY3J1YmJlZCBwYWdlIGluIHRoZSBidWRkeS4KKyAg ICAgICAgICAgICAgICAgKiBPbmUgbW9yZSBiaXQgdGhhbiBtYXhpbXVtIHBvc3NpYmxlIG9yZGVy IHRvIGFjY29tbW9kYXRlCisgICAgICAgICAgICAgICAgICogSU5WQUxJRF9ESVJUWV9JRFguCisg ICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIElOVkFMSURfRElSVFlfSURYICgoMVVMIDw8IChN QVhfT1JERVIgKyAxKSkgLSAxKQotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaXJzdF9kaXJ0 eTpNQVhfT1JERVIgKyAxOwotICAgICAgICB9IGZyZWU7CisgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBmaXJzdF9kaXJ0eTpNQVhfT1JERVIgKyAxOwogCisjZGVmaW5lIEJVRERZX05PVF9T Q1JVQkJJTkcgICAgMAorI2RlZmluZSBCVUREWV9TQ1JVQkJJTkcgICAgICAgIDEKKyNkZWZpbmUg QlVERFlfU0NSVUJfQUJPUlQgICAgICAyCisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz Y3J1Yl9zdGF0ZToyOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyB2YWw7CisgICAgICAgIH0gZnJlZTsKICAgICB9IHU7CiAKICAgICB1bmlvbiB7Ci0tIAoxLjgu My4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==