From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Sharma Date: Fri, 10 Sep 2004 16:17:54 +0000 Subject: [PATCH] ia32 support for NX when sigaction->sa_restorer == NULL Message-Id: <4141D3B2.2030106@intel.com> MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------030208010706010906040904" List-Id: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. --------------030208010706010906040904 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit When userland doesn't specify sigaction->sa_restorer, we try to put the restorer code on the stack. But this breaks ia32 binaries with non-executable stacks. We now put the restorer code on a gate page. We still leave the sigreturn code on the stack due to backward compatibility concerns with ia32 gdb. This issue was primarily seen with debian glibc. -Arun --------------030208010706010906040904 Content-Type: text/plain; name="ive-gate-page-3.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ive-gate-page-3.patch" V2hlbiB1c2VybGFuZCBkb2Vzbid0IHNwZWNpZnkgc2lnYWN0aW9uLT5zYV9yZXN0b3Jlciwg d2UgdHJ5IHRvIHB1dAp0aGUgcmVzdG9yZXIgY29kZSBvbiB0aGUgc3RhY2suIEJ1dCB0aGlz IGJyZWFrcyBpYTMyIGJpbmFyaWVzIHdpdGgKbm9uLWV4ZWN1dGFibGUgc3RhY2tzLiBXZSBu b3cgcHV0IHRoZSByZXN0b3JlciBjb2RlIG9uIGEgZ2F0ZSBwYWdlLgoKU2lnbmVkLW9mZi1i eTogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFy dW4gU2hhcm1hIDxhcnVuLnNoYXJtYUBpbnRlbC5jb20+CgogYXJjaC9pYTY0L2lhMzIvYmlu Zm10X2VsZjMyLmMgfCAgIDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogYXJjaC9pYTY0L2lhMzIvaWEzMl9zaWduYWwuYyAgfCAgIDMzICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLQogYXJjaC9pYTY0L2lhMzIvaWEzMl9zdXBwb3J0LmMg fCAgIDI4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGFyY2gvaWE2NC9pYTMyL2lh MzJwcml2LmggICAgIHwgICAxMSArKysrKysrKy0tLQogYXJjaC9pYTY0L21tL2luaXQuYyAg ICAgICAgICAgfCAgICAyICstCiBpbmNsdWRlL2FzbS1pYTY0L2lhMzIuaCAgICAgICB8ICAg IDIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25z KC0pCgpkaWZmIC1wdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNi44Lm9yaS9hcmNoL2lhNjQv aWEzMi9iaW5mbXRfZWxmMzIuYyBsaW51eC0yLjYuOC9hcmNoL2lhNjQvaWEzMi9iaW5mbXRf ZWxmMzIuYwotLS0gbGludXgtMi42Ljgub3JpL2FyY2gvaWE2NC9pYTMyL2JpbmZtdF9lbGYz Mi5jCTIwMDQtMDgtMTYgMTU6MzY6MzAuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYu OC9hcmNoL2lhNjQvaWEzMi9iaW5mbXRfZWxmMzIuYwkyMDA0LTA5LTA5IDE4OjMxOjQ3LjAw MDAwMDAwMCArMDgwMApAQCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgdm9pZCBlbGYzMl9zZXRf cGVyc29uYWxpdHkgKHZvaWQpCiAKIGV4dGVybiBzdHJ1Y3QgcGFnZSAqaWEzMl9zaGFyZWRf cGFnZVtdOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKmlhMzJfZ2R0OworZXh0ZXJuIHN0cnVj dCBwYWdlICppYTMyX2dhdGVfcGFnZTsKIAogc3RydWN0IHBhZ2UgKgogaWEzMl9pbnN0YWxs X3NoYXJlZF9wYWdlIChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9u ZyBhZGRyZXNzLCBpbnQgKnR5cGUpCkBAIC01OSwxMCArNjAsMjUgQEAgaWEzMl9pbnN0YWxs X3NoYXJlZF9wYWdlIChzdHJ1Y3Qgdm1fYXJlYQogCXJldHVybiBwZzsKIH0KIAorc3RydWN0 IHBhZ2UgKgoraWEzMl9pbnN0YWxsX2dhdGVfcGFnZSAoc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50ICp0eXBlKQoreworCXN0cnVjdCBw YWdlICpwZyA9IGlhMzJfZ2F0ZV9wYWdlOworCWdldF9wYWdlKHBnKTsKKwlpZiAodHlwZSkK KwkJKnR5cGUgPSBWTV9GQVVMVF9NSU5PUjsKKwlyZXR1cm4gcGc7Cit9CisKKwogc3RhdGlj IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBpYTMyX3NoYXJlZF9wYWdlX3ZtX29wcyA9 IHsKIAkubm9wYWdlID0gaWEzMl9pbnN0YWxsX3NoYXJlZF9wYWdlCiB9OwogCitzdGF0aWMg c3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGlhMzJfZ2F0ZV9wYWdlX3ZtX29wcyA9IHsK Kwkubm9wYWdlID0gaWEzMl9pbnN0YWxsX2dhdGVfcGFnZQorfTsKKwogdm9pZAogaWE2NF9l bGYzMl9pbml0IChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKQEAgLTkwLDYgKzEwNiwyOSBA QCBpYTY0X2VsZjMyX2luaXQgKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCX0KIAogCS8qCisJ ICogV2hlbiB1c2VyIHN0YWNrIGlzIG5vdCBleGVjdXRhYmxlLCBwdXNoIHNpZ3JldHVybiBj b2RlIHRvIHN0YWNrIG1ha2VzCisJICogc2VnbWVudGF0aW9uIGZhdWx0IHJhaXNlZCB3aGVu IHJldHVybmluZyB0byBrZXJuZWwuIFNvIG5vdyBzaWdyZXR1cm4KKwkgKiBjb2RlIGlzIGxv Y2tlZCBpbiBzcGVjaWZpYyBnYXRlIHBhZ2UsIHdoaWNoIGlzIHBvaW50ZWQgYnkgcHJldGNv ZGUKKwkgKiB3aGVuIHNldHVwX2ZyYW1lX2lhMzIKKwkgKi8KKwl2bWEgPSBrbWVtX2NhY2hl X2FsbG9jKHZtX2FyZWFfY2FjaGVwLCBTTEFCX0tFUk5FTCk7CisJaWYgKHZtYSkgeworCQlt ZW1zZXQodm1hLCAwLCBzaXplb2YoKnZtYSkpOworCQl2bWEtPnZtX21tID0gY3VycmVudC0+ bW07CisJCXZtYS0+dm1fc3RhcnQgPSBJQTMyX0dBVEVfT0ZGU0VUOworCQl2bWEtPnZtX2Vu ZCA9IHZtYS0+dm1fc3RhcnQgKyBQQUdFX1NJWkU7CisJCXZtYS0+dm1fcGFnZV9wcm90ID0g UEFHRV9DT1BZX0VYRUM7CisJCXZtYS0+dm1fZmxhZ3MgPSBWTV9SRUFEIHwgVk1fTUFZUkVB RCB8IFZNX0VYRUMKKwkJCQl8IFZNX01BWUVYRUMgfCBWTV9SRVNFUlZFRDsKKwkJdm1hLT52 bV9vcHMgPSAmaWEzMl9nYXRlX3BhZ2Vfdm1fb3BzOworCQlkb3duX3dyaXRlKCZjdXJyZW50 LT5tbS0+bW1hcF9zZW0pOworCQl7CisJCQlpbnNlcnRfdm1fc3RydWN0KGN1cnJlbnQtPm1t LCB2bWEpOworCQl9CisJCXVwX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCX0K KworCS8qCiAJICogSW5zdGFsbCBMRFQgYXMgYW5vbnltb3VzIG1lbW9yeS4gIFRoaXMgZ2l2 ZXMgdXMgYWxsLXplcm8gc2VnbWVudCBkZXNjcmlwdG9ycwogCSAqIHVudGlsIGEgdGFzayBt b2RpZmllcyB0aGVtIHZpYSBtb2RpZnlfbGR0KCkuCiAJICovCmRpZmYgLXB1ck4gLVggZG9u dGRpZmYgbGludXgtMi42Ljgub3JpL2FyY2gvaWE2NC9pYTMyL2lhMzJwcml2LmggbGludXgt Mi42LjgvYXJjaC9pYTY0L2lhMzIvaWEzMnByaXYuaAotLS0gbGludXgtMi42Ljgub3JpL2Fy Y2gvaWE2NC9pYTMyL2lhMzJwcml2LmgJMjAwNC0wOC0xNiAxNTozNjozMC4wMDAwMDAwMDAg KzA4MDAKKysrIGxpbnV4LTIuNi44L2FyY2gvaWE2NC9pYTMyL2lhMzJwcml2LmgJMjAwNC0w OS0wOSAxOTowMzozNC4wMDAwMDAwMDAgKzA4MDAKQEAgLTE2OCw2ICsxNjgsOSBAQCBzdHJ1 Y3QgaWEzMl91c2VyX2Z4c3Jfc3RydWN0IHsKICNkZWZpbmUgSUEzMl9TQV9IQU5ETEVSKGth KQkoKHVuc2lnbmVkIGxvbmcpIChrYSktPnNhLnNhX2hhbmRsZXIgJiAweGZmZmZmZmZmKQog I2RlZmluZSBJQTMyX1NBX1JFU1RPUkVSKGthKQkoKHVuc2lnbmVkIGxvbmcpIChrYSktPnNh LnNhX2hhbmRsZXIgPj4gMzIpCiAKKyNkZWZpbmUgX19JQTMyX05SX3NpZ3JldHVybiAxMTkK KyNkZWZpbmUgX19JQTMyX05SX3J0X3NpZ3JldHVybiAxNzMKKwogc3RydWN0IHNpZ2FjdGlv bjMyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgc2FfaGFuZGxlcjsJCS8qIFJlYWxseSBhIHBv aW50ZXIsIGJ1dCBuZWVkIHRvIGRlYWwgd2l0aCAzMiBiaXRzICovCiAgICAgICAgdW5zaWdu ZWQgaW50IHNhX2ZsYWdzOwpAQCAtMzI0LDE0ICszMjcsMTYgQEAgc3RydWN0IG9sZF9saW51 eDMyX2RpcmVudCB7CiAKICNkZWZpbmUgSUEzMl9QQUdFX09GRlNFVAkweGMwMDAwMDAwCiAj ZGVmaW5lIElBMzJfU1RBQ0tfVE9QCQlJQTMyX1BBR0VfT0ZGU0VUCisjZGVmaW5lIElBMzJf R0FURV9PRkZTRVQJSUEzMl9QQUdFX09GRlNFVAorI2RlZmluZSBJQTMyX0dBVEVfRU5ECQlJ QTMyX1BBR0VfT0ZGU0VUICsgUEFHRV9TSVpFCiAKIC8qCiAgKiBUaGUgc3lzdGVtIHNlZ21l bnRzIChHRFQsIFRTUywgTERUKSBoYXZlIHRvIGJlIG1hcHBlZCBiZWxvdyA0R0Igc28gdGhl IElBLTMyIGVuZ2luZSBjYW4KICAqIGFjY2VzcyB0aGVtLgogICovCi0jZGVmaW5lIElBMzJf R0RUX09GRlNFVAkJKElBMzJfUEFHRV9PRkZTRVQpCi0jZGVmaW5lIElBMzJfVFNTX09GRlNF VAkJKElBMzJfUEFHRV9PRkZTRVQgKyBQQUdFX1NJWkUpCi0jZGVmaW5lIElBMzJfTERUX09G RlNFVAkJKElBMzJfUEFHRV9PRkZTRVQgKyAyKlBBR0VfU0laRSkKKyNkZWZpbmUgSUEzMl9H RFRfT0ZGU0VUCQkoSUEzMl9QQUdFX09GRlNFVCArIFBBR0VfU0laRSkKKyNkZWZpbmUgSUEz Ml9UU1NfT0ZGU0VUCQkoSUEzMl9QQUdFX09GRlNFVCArIDIqUEFHRV9TSVpFKQorI2RlZmlu ZSBJQTMyX0xEVF9PRkZTRVQJCShJQTMyX1BBR0VfT0ZGU0VUICsgMypQQUdFX1NJWkUpCiAK ICNkZWZpbmUgRUxGX0VYRUNfUEFHRVNJWkUJSUEzMl9QQUdFX1NJWkUKIApkaWZmIC1wdXJO IC1YIGRvbnRkaWZmIGxpbnV4LTIuNi44Lm9yaS9hcmNoL2lhNjQvaWEzMi9pYTMyX3NpZ25h bC5jIGxpbnV4LTIuNi44L2FyY2gvaWE2NC9pYTMyL2lhMzJfc2lnbmFsLmMKLS0tIGxpbnV4 LTIuNi44Lm9yaS9hcmNoL2lhNjQvaWEzMi9pYTMyX3NpZ25hbC5jCTIwMDQtMDYtMTcgMTU6 NTU6MzIuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYuOC9hcmNoL2lhNjQvaWEzMi9p YTMyX3NpZ25hbC5jCTIwMDQtMDktMDkgMTg6MzE6NDcuMDAwMDAwMDAwICswODAwCkBAIC04 NTMsMTQgKzg1MywxOSBAQCBzZXR1cF9mcmFtZV9pYTMyIChpbnQgc2lnLCBzdHJ1Y3Qga19z aWdhCiAJCXVuc2lnbmVkIGludCByZXN0b3JlciA9IElBMzJfU0FfUkVTVE9SRVIoa2EpOwog CQllcnIgfD0gX19wdXRfdXNlcihyZXN0b3JlciwgJmZyYW1lLT5wcmV0Y29kZSk7CiAJfSBl bHNlIHsKLQkJZXJyIHw9IF9fcHV0X3VzZXIoKGxvbmcpZnJhbWUtPnJldGNvZGUsICZmcmFt ZS0+cHJldGNvZGUpOwotCQkvKiBUaGlzIGlzIHBvcGwgJWVheCA7IG1vdmwgJCwlZWF4IDsg aW50ICQweDgwICovCi0JCWVyciB8PSBfX3B1dF91c2VyKDB4Yjg1OCwgKHNob3J0ICopKGZy YW1lLT5yZXRjb2RlKzApKTsKLQkJZXJyIHw9IF9fcHV0X3VzZXIoX19JQTMyX05SX3NpZ3Jl dHVybiAmIDB4ZmZmZiwgKHNob3J0ICopKGZyYW1lLT5yZXRjb2RlKzIpKTsKLQkJZXJyIHw9 IF9fcHV0X3VzZXIoX19JQTMyX05SX3NpZ3JldHVybiA+PiAxNiwgKHNob3J0ICopKGZyYW1l LT5yZXRjb2RlKzQpKTsKLQkJZXJyIHw9IF9fcHV0X3VzZXIoMHg4MGNkLCAoc2hvcnQgKiko ZnJhbWUtPnJldGNvZGUrNikpOworCQkvKiBQb2ludGluZyB0byByZXN0b3JlciBpbiBpYTMy IGdhdGUgcGFnZSAqLworCQllcnIgfD0gX19wdXRfdXNlcihJQTMyX0dBVEVfT0ZGU0VULCAm ZnJhbWUtPnByZXRjb2RlKTsKIAl9CiAKKwkvKiBUaGlzIGlzIHBvcGwgJWVheCA7IG1vdmwg JCwlZWF4IDsgaW50ICQweDgwCisJICogYW5kIHRoZXJlIGZvciBoaXN0b3JpY2FsIHJlYXNv bnMgb25seS4KKwkgKiBTZWUgYXJjaC9pMzg2L2tlcm5lbC9zaWduYWwuYworCSAqLworCisJ ZXJyIHw9IF9fcHV0X3VzZXIoMHhiODU4LCAoc2hvcnQgKikoZnJhbWUtPnJldGNvZGUrMCkp OworCWVyciB8PSBfX3B1dF91c2VyKF9fSUEzMl9OUl9zaWdyZXR1cm4sIChpbnQgKikoZnJh bWUtPnJldGNvZGUrMikpOworCWVyciB8PSBfX3B1dF91c2VyKDB4ODBjZCwgKHNob3J0ICop KGZyYW1lLT5yZXRjb2RlKzYpKTsKKwogCWlmIChlcnIpCiAJCWdvdG8gZ2l2ZV9zaWdzZWd2 OwogCkBAIC05MjQsMTMgKzkyOSwxOSBAQCBzZXR1cF9ydF9mcmFtZV9pYTMyIChpbnQgc2ln LCBzdHJ1Y3Qga19zCiAJCXVuc2lnbmVkIGludCByZXN0b3JlciA9IElBMzJfU0FfUkVTVE9S RVIoa2EpOwogCQllcnIgfD0gX19wdXRfdXNlcihyZXN0b3JlciwgJmZyYW1lLT5wcmV0Y29k ZSk7CiAJfSBlbHNlIHsKLQkJZXJyIHw9IF9fcHV0X3VzZXIoKGxvbmcpZnJhbWUtPnJldGNv ZGUsICZmcmFtZS0+cHJldGNvZGUpOwotCQkvKiBUaGlzIGlzIG1vdmwgJCwlZWF4IDsgaW50 ICQweDgwICovCi0JCWVyciB8PSBfX3B1dF91c2VyKDB4YjgsIChjaGFyICopKGZyYW1lLT5y ZXRjb2RlKzApKTsKLQkJZXJyIHw9IF9fcHV0X3VzZXIoX19JQTMyX05SX3J0X3NpZ3JldHVy biwgKGludCAqKShmcmFtZS0+cmV0Y29kZSsxKSk7Ci0JCWVyciB8PSBfX3B1dF91c2VyKDB4 ODBjZCwgKHNob3J0ICopKGZyYW1lLT5yZXRjb2RlKzUpKTsKKwkJLyogUG9pbnRpbmcgdG8g cnRfcmVzdG9yZXIgaW4gaWEzMiBnYXRlIHBhZ2UgKi8KKwkJZXJyIHw9IF9fcHV0X3VzZXIo SUEzMl9HQVRFX09GRlNFVCArIDgsICZmcmFtZS0+cHJldGNvZGUpOwogCX0KIAorCS8qIFRo aXMgaXMgbW92bCAkLCVlYXggOyBpbnQgJDB4ODAKKwkgKiBhbmQgdGhlcmUgZm9yIGhpc3Rv cmljYWwgcmVhc29ucyBvbmx5LgorCSAqIFNlZSBhcmNoL2kzODYva2VybmVsL3NpZ25hbC5j CisJICovCisKKwllcnIgfD0gX19wdXRfdXNlcigweGI4LCAoY2hhciAqKShmcmFtZS0+cmV0 Y29kZSswKSk7CisJZXJyIHw9IF9fcHV0X3VzZXIoX19JQTMyX05SX3J0X3NpZ3JldHVybiwg KGludCAqKShmcmFtZS0+cmV0Y29kZSsxKSk7CisJZXJyIHw9IF9fcHV0X3VzZXIoMHg4MGNk LCAoc2hvcnQgKikoZnJhbWUtPnJldGNvZGUrNSkpOworCiAJaWYgKGVycikKIAkJZ290byBn aXZlX3NpZ3NlZ3Y7CiAKZGlmZiAtcHVyTiAtWCBkb250ZGlmZiBsaW51eC0yLjYuOC5vcmkv YXJjaC9pYTY0L2lhMzIvaWEzMl9zdXBwb3J0LmMgbGludXgtMi42LjgvYXJjaC9pYTY0L2lh MzIvaWEzMl9zdXBwb3J0LmMKLS0tIGxpbnV4LTIuNi44Lm9yaS9hcmNoL2lhNjQvaWEzMi9p YTMyX3N1cHBvcnQuYwkyMDA0LTA4LTE2IDE1OjM2OjMwLjAwMDAwMDAwMCArMDgwMAorKysg bGludXgtMi42LjgvYXJjaC9pYTY0L2lhMzIvaWEzMl9zdXBwb3J0LmMJMjAwNC0wOS0wOSAx ODozMTo0Ny4wMDAwMDAwMDAgKzA4MDAKQEAgLTMzLDYgKzMzLDcgQEAgc3RydWN0IGV4ZWNf ZG9tYWluIGlhMzJfZXhlY19kb21haW47CiBzdHJ1Y3QgcGFnZSAqaWEzMl9zaGFyZWRfcGFn ZVtOUl9DUFVTXTsKIHVuc2lnbmVkIGxvbmcgKmlhMzJfYm9vdF9nZHQ7CiB1bnNpZ25lZCBs b25nICpjcHVfZ2R0X3RhYmxlW05SX0NQVVNdOworc3RydWN0IHBhZ2UgKmlhMzJfZ2F0ZV9w YWdlOwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZwogbG9hZF9kZXNjICh1MTYgc2VsZWN0b3Ip CkBAIC0xNTUsNyArMTU2LDcgQEAgaWEzMl9nZHRfaW5pdCAodm9pZCkKIC8qCiAgKiBTZXR1 cCBJQTMyIEdEVCBhbmQgVFNTCiAgKi8KLXZvaWQKK3N0YXRpYyB2b2lkCiBpYTMyX2Jvb3Rf Z2R0X2luaXQgKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBsZHRfc2l6ZTsKQEAgLTE2Niwx MiArMTY3LDEyIEBAIGlhMzJfYm9vdF9nZHRfaW5pdCAodm9pZCkKIAogCS8qIENTIGRlc2Ny aXB0b3IgaW4gSUEtMzIgKHNjcmFtYmxlZCkgZm9ybWF0ICovCiAJaWEzMl9ib290X2dkdFtf X1VTRVJfQ1MgPj4gM10KLQkJPSBJQTMyX1NFR19ERVNDUklQVE9SKDAsIChJQTMyX1BBR0Vf T0ZGU0VULTEpID4+IElBMzJfUEFHRV9TSElGVCwKKwkJPSBJQTMyX1NFR19ERVNDUklQVE9S KDAsIChJQTMyX0dBVEVfRU5ELTEpID4+IElBMzJfUEFHRV9TSElGVCwKIAkJCQkgICAgICAw eGIsIDEsIDMsIDEsIDEsIDEsIDEpOwogCiAJLyogRFMgZGVzY3JpcHRvciBpbiBJQS0zMiAo c2NyYW1ibGVkKSBmb3JtYXQgKi8KIAlpYTMyX2Jvb3RfZ2R0W19fVVNFUl9EUyA+PiAzXQot CQk9IElBMzJfU0VHX0RFU0NSSVBUT1IoMCwgKElBMzJfUEFHRV9PRkZTRVQtMSkgPj4gSUEz Ml9QQUdFX1NISUZULAorCQk9IElBMzJfU0VHX0RFU0NSSVBUT1IoMCwgKElBMzJfR0FURV9F TkQtMSkgPj4gSUEzMl9QQUdFX1NISUZULAogCQkJCSAgICAgIDB4MywgMSwgMywgMSwgMSwg MSwgMSk7CiAKIAlsZHRfc2l6ZSA9IFBBR0VfQUxJR04oSUEzMl9MRFRfRU5UUklFUypJQTMy X0xEVF9FTlRSWV9TSVpFKTsKQEAgLTE4MSw2ICsxODIsMjcgQEAgaWEzMl9ib290X2dkdF9p bml0ICh2b2lkKQogCQkJCQkJICAgICAgIDB4MiwgMCwgMywgMSwgMSwgMSwgMCk7CiB9CiAK K3N0YXRpYyB2b2lkCitpYTMyX2dhdGVfcGFnZV9pbml0KHZvaWQpCit7CisJdW5zaWduZWQg bG9uZyAqc3I7CisKKwlpYTMyX2dhdGVfcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7 CisJc3IgPSBwYWdlX2FkZHJlc3MoaWEzMl9nYXRlX3BhZ2UpOworCS8qIFRoaXMgaXMgcG9w bCAlZWF4IDsgbW92bCAkLCVlYXggOyBpbnQgJDB4ODAgKi8KKwkqc3IrKyA9IDB4Yjg1OCB8 IChfX0lBMzJfTlJfc2lncmV0dXJuIDw8IDE2KSB8ICgweDgwY2RVTCA8PCA0OCk7CisKKwkv KiBUaGlzIGlzIG1vdmwgJCwlZWF4IDsgaW50ICQweDgwICovCisJKnNyID0gMHhiOCB8IChf X0lBMzJfTlJfcnRfc2lncmV0dXJuIDw8IDgpIHwgKDB4ODBjZFVMIDw8IDQwKTsKK30KKwor dm9pZAoraWEzMl9tZW1faW5pdCh2b2lkKQoreworCWlhMzJfYm9vdF9nZHRfaW5pdCgpOwor CWlhMzJfZ2F0ZV9wYWdlX2luaXQoKTsKK30KKwogLyoKICAqIEhhbmRsZSBiYWQgSUEzMiBp bnRlcnJ1cHQgdmlhIHN5c2NhbGwKICAqLwpkaWZmIC1wdXJOIC1YIGRvbnRkaWZmIGxpbnV4 LTIuNi44Lm9yaS9hcmNoL2lhNjQvbW0vaW5pdC5jIGxpbnV4LTIuNi44L2FyY2gvaWE2NC9t bS9pbml0LmMKLS0tIGxpbnV4LTIuNi44Lm9yaS9hcmNoL2lhNjQvbW0vaW5pdC5jCTIwMDQt MDgtMTYgMTU6MzY6MzAuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYuOC9hcmNoL2lh NjQvbW0vaW5pdC5jCTIwMDQtMDktMDkgMTg6MzE6NDcuMDAwMDAwMDAwICswODAwCkBAIC01 ODUsNiArNTg1LDYgQEAgbWVtX2luaXQgKHZvaWQpCiAJc2V0dXBfZ2F0ZSgpOwogCiAjaWZk ZWYgQ09ORklHX0lBMzJfU1VQUE9SVAotCWlhMzJfYm9vdF9nZHRfaW5pdCgpOworCWlhMzJf bWVtX2luaXQoKTsKICNlbmRpZgogfQpkaWZmIC1wdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIu Ni44Lm9yaS9pbmNsdWRlL2FzbS1pYTY0L2lhMzIuaCBsaW51eC0yLjYuOC9pbmNsdWRlL2Fz bS1pYTY0L2lhMzIuaAotLS0gbGludXgtMi42Ljgub3JpL2luY2x1ZGUvYXNtLWlhNjQvaWEz Mi5oCTIwMDQtMDgtMTYgMTU6MzY6NDMuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYu OC9pbmNsdWRlL2FzbS1pYTY0L2lhMzIuaAkyMDA0LTA5LTA5IDE4OjMxOjQ3LjAwMDAwMDAw MCArMDgwMApAQCAtMTQsNyArMTQsNyBAQAogIyBpZmRlZiBDT05GSUdfSUEzMl9TVVBQT1JU CiAKIGV4dGVybiB2b2lkIGlhMzJfY3B1X2luaXQgKHZvaWQpOwotZXh0ZXJuIHZvaWQgaWEz Ml9ib290X2dkdF9pbml0ICh2b2lkKTsKK2V4dGVybiB2b2lkIGlhMzJfbWVtX2luaXQgKHZv aWQpOwogZXh0ZXJuIHZvaWQgaWEzMl9nZHRfaW5pdCAodm9pZCk7CiBleHRlcm4gaW50IGlh MzJfZXhjZXB0aW9uIChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBpc3Ip OwogZXh0ZXJuIGludCBpYTMyX2ludGVyY2VwdCAoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVu c2lnbmVkIGxvbmcgaXNyKTsK --------------030208010706010906040904--