From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arun Sharma Date: Fri, 08 Aug 2003 01:40:17 +0000 Subject: compat_ioctl.c support in 2.6 MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------070100060901040705010705" Message-Id: List-Id: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. --------------070100060901040705010705 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit The attached patch (against 2.6) helps IA-32 applications take advantage of the generic 32 bit (fs/compat_ioctl.c) ioctl handlers. Please apply. -Arun --------------070100060901040705010705 Content-Type: text/plain; name="ioctl32.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ioctl32.patch" SW5kZXg6IGluY2x1ZGUvYXNtLWlhNjQvdWFjY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlu Y2x1ZGUvYXNtLWlhNjQvdWFjY2Vzcy5oCShyZXZpc2lvbiAxMjIwMikKKysrIGluY2x1ZGUv YXNtLWlhNjQvdWFjY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDE4IEBA CiAJX19jdV9sZW47CQkJCQkJCQkJCVwKIH0pCiAKKyNkZWZpbmUgX19jb3B5X2luX3VzZXIo dG8sIGZyb20sIHNpemUpICAgICAgICAgIFwKKyAgICAgICAgX19jb3B5X3VzZXIoKHRvKSwg KGZyb20pLCAoc2l6ZSkpCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZworY29weV9p bl91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCit7 CisgICAgICAgIGlmKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZyb20sIG4pICYm CisgICAgICAgICAgIGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBuKSkpCisgICAgICAg ICAgICAgICAgbiA9IF9fY29weV91c2VyKHRvLCBmcm9tLCBuKTsKKyAgICAgICAgcmV0dXJu IG47Cit9CisKIGV4dGVybiB1bnNpZ25lZCBsb25nIF9fZG9fY2xlYXJfdXNlciAodm9pZCAq LCB1bnNpZ25lZCBsb25nKTsKIAogI2RlZmluZSBfX2NsZWFyX3VzZXIodG8sbikJCQlcCklu ZGV4OiBpbmNsdWRlL2FzbS1pYTY0L2NvbXBhdC5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGluY2x1 ZGUvYXNtLWlhNjQvY29tcGF0LmgJKHJldmlzaW9uIDEyMjAyKQorKysgaW5jbHVkZS9hc20t aWE2NC9jb21wYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBACiBjb21w YXRfYWxsb2NfdXNlcl9zcGFjZSAobG9uZyBsZW4pCiB7CiAJc3RydWN0IHB0X3JlZ3MgKnJl Z3MgPSBpYTY0X3Rhc2tfcmVncyhjdXJyZW50KTsKLQlyZXR1cm4gKHZvaWQgKikgKChyZWdz LT5yMTIgJiAtMTYpIC0gbGVuKTsKKwlyZXR1cm4gKHZvaWQgKikgKCgocmVncy0+cjEyICYg MHhmZmZmZmZmZikgJiAtMTYpIC0gbGVuKTsKIH0KIAogI2VuZGlmIC8qIF9BU01fSUE2NF9D T01QQVRfSCAqLwpJbmRleDogYXJjaC9pYTY0L2lhMzIvaWEzMl9pb2N0bC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGFyY2gvaWE2NC9pYTMyL2lhMzJfaW9jdGwuYwkocmV2aXNpb24gMTIyMDIp CisrKyBhcmNoL2lhNjQvaWEzMi9pYTMyX2lvY3RsLmMJKHdvcmtpbmcgY29weSkKQEAgLTcs MTExICs3LDEzIEBACiAgKglEYXZpZCBNb3NiZXJnZXItVGFuZyA8ZGF2aWRtQGhwbC5ocC5j b20+CiAgKi8KIAotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8bGludXgv ZGlyZW50Lmg+Ci0jaW5jbHVkZSA8bGludXgvZnMuaD4JCS8qIGFyZ2gsIG1zZG9zX2ZzLmgg aXNuJ3Qgc2VsZi1jb250YWluZWQuLi4gKi8KICNpbmNsdWRlIDxsaW51eC9zaWduYWwuaD4J LyogYXJnaCwgbXNkb3NfZnMuaCBpc24ndCBzZWxmLWNvbnRhaW5lZC4uLiAqLwotI2luY2x1 ZGUgPGxpbnV4L2NvbXBhdC5oPgotCiAjaW5jbHVkZSAiaWEzMnByaXYuaCIKLQotI2luY2x1 ZGUgPGxpbnV4L2NvbmZpZy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1 ZGUgPGxpbnV4L3NjaGVkLmg+Ci0jaW5jbHVkZSA8bGludXgvc21wLmg+Ci0jaW5jbHVkZSA8 bGludXgvc21wX2xvY2suaD4KLSNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotI2luY2x1ZGUg PGxpbnV4L2lmLmg+Ci0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4 L2hkcmVnLmg+Ci0jaW5jbHVkZSA8bGludXgvcmFpZC9tZC5oPgotI2luY2x1ZGUgPGxpbnV4 L2tkLmg+Ci0jaW5jbHVkZSA8bGludXgvcm91dGUuaD4KLSNpbmNsdWRlIDxsaW51eC9pbjYu aD4KLSNpbmNsdWRlIDxsaW51eC9pcHY2X3JvdXRlLmg+Ci0jaW5jbHVkZSA8bGludXgvc2ti dWZmLmg+Ci0jaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgotI2luY2x1ZGUgPGxpbnV4L3Z0 Lmg+Ci0jaW5jbHVkZSA8bGludXgvZmlsZS5oPgotI2luY2x1ZGUgPGxpbnV4L2ZkLmg+Ci0j aW5jbHVkZSA8bGludXgvcHBwX2RlZnMuaD4KLSNpbmNsdWRlIDxsaW51eC9pZl9wcHAuaD4K LSNpbmNsdWRlIDxsaW51eC9pZl9wcHBveC5oPgotI2luY2x1ZGUgPGxpbnV4L210aW8uaD4K LSNpbmNsdWRlIDxsaW51eC9jZHJvbS5oPgotI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KLSNp bmNsdWRlIDxsaW51eC9hdXRvX2ZzLmg+Ci0jaW5jbHVkZSA8bGludXgvYXV0b19mczQuaD4K LSNpbmNsdWRlIDxsaW51eC9kZXZmc19mcy5oPgotI2luY2x1ZGUgPGxpbnV4L3R0eS5oPgot I2luY2x1ZGUgPGxpbnV4L3Z0X2tlcm4uaD4KLSNpbmNsdWRlIDxsaW51eC9mYi5oPgotI2lu Y2x1ZGUgPGxpbnV4L2V4dDJfZnMuaD4KLSNpbmNsdWRlIDxsaW51eC92aWRlb2Rldi5oPgot I2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L3Jhdy5oPgot I2luY2x1ZGUgPGxpbnV4L3NtYl9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L2Jsa3BnLmg+Ci0j aW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+Ci0jaW5jbHVkZSA8bGludXgvZWxldmF0b3IuaD4K LSNpbmNsdWRlIDxsaW51eC9ydGMuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNs dWRlIDxsaW51eC9ydGMuaD4KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLSNpbmNsdWRl IDxsaW51eC9zZXJpYWwuaD4KLSNpbmNsdWRlIDxsaW51eC9yZWlzZXJmc19mcy5oPgotI2lu Y2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgotI2luY2x1ZGUgPGxpbnV4L2RpcmVudC5oPgotI2lu Y2x1ZGUgPGxpbnV4L2N0eXBlLmg+Ci0jaW5jbHVkZSA8bGludXgvbmNwX2ZzLmg+Ci0jaW5j bHVkZSA8bmV0L2JsdWV0b290aC9ibHVldG9vdGguaD4KLSNpbmNsdWRlIDxuZXQvYmx1ZXRv b3RoL3JmY29tbS5oPgotCi0jaW5jbHVkZSA8c2NzaS9zY3NpLmg+Ci0vKiBVZ2x5IGhhY2su ICovCi0jdW5kZWYgX19LRVJORUxfXwotI2luY2x1ZGUgPHNjc2kvc2NzaV9pb2N0bC5oPgot I2RlZmluZSBfX0tFUk5FTF9fCi0jaW5jbHVkZSA8c2NzaS9zZy5oPgotCi0jaW5jbHVkZSA8 YXNtL3R5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KLSNpbmNsdWRlIDxsaW51 eC9ldGh0b29sLmg+Ci0jaW5jbHVkZSA8bGludXgvbWlpLmg+Ci0jaW5jbHVkZSA8bGludXgv aWZfYm9uZGluZy5oPgotI2luY2x1ZGUgPGxpbnV4L3dhdGNoZG9nLmg+Ci0KLSNpbmNsdWRl IDxhc20vbW9kdWxlLmg+CisgIAorI2RlZmluZQlJTkNMVURFUworI2luY2x1ZGUgImNvbXBh dF9pb2N0bC5jIgogI2luY2x1ZGUgPGFzbS9pb2N0bDMyLmg+Ci0jaW5jbHVkZSA8bGludXgv c291bmRjYXJkLmg+Ci0jaW5jbHVkZSA8bGludXgvbHAuaD4KIAotI2luY2x1ZGUgPGxpbnV4 L2F0bS5oPgotI2luY2x1ZGUgPGxpbnV4L2F0bWFycC5oPgotI2luY2x1ZGUgPGxpbnV4L2F0 bWNsaXAuaD4KLSNpbmNsdWRlIDxsaW51eC9hdG1kZXYuaD4KLSNpbmNsdWRlIDxsaW51eC9h dG1pb2MuaD4KLSNpbmNsdWRlIDxsaW51eC9hdG1sZWMuaD4KLSNpbmNsdWRlIDxsaW51eC9h dG1tcGMuaD4KLSNpbmNsdWRlIDxsaW51eC9hdG1zdmMuaD4KLSNpbmNsdWRlIDxsaW51eC9h dG1fdGNwLmg+Ci0jaW5jbHVkZSA8bGludXgvc29uZXQuaD4KLSNpbmNsdWRlIDxsaW51eC9h dG1fc3VuaS5oPgotI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KLQotI2luY2x1ZGUgPG5l dC9ibHVldG9vdGgvYmx1ZXRvb3RoLmg+Ci0jaW5jbHVkZSA8bmV0L2JsdWV0b290aC9oY2ku aD4KLQotI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYmRldmlj ZV9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L25iZC5oPgotI2luY2x1ZGUgPGxpbnV4L3JhbmRv bS5oPgotI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgotCi0jaW5jbHVkZSA8Li4vZHJpdmVy cy9jaGFyL2RybS9kcm0uaD4KLSNpbmNsdWRlIDwuLi9kcml2ZXJzL2NoYXIvZHJtL21nYV9k cm0uaD4KLSNpbmNsdWRlIDwuLi9kcml2ZXJzL2NoYXIvZHJtL2k4MTBfZHJtLmg+Ci0KICNk ZWZpbmUgSU9DVExfTlIoYSkJKChhKSAmIH4oX0lPQ19TSVpFTUFTSyA8PCBfSU9DX1NJWkVT SElGVCkpCiAKICNkZWZpbmUgRE9fSU9DVEwoZmQsIGNtZCwgYXJnKSAoewkJCVwKQEAgLTEy OCw2ICszMCw5IEBACiAKIGFzbWxpbmthZ2UgbG9uZyBzeXNfaW9jdGwodW5zaWduZWQgaW50 IGZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAKKyNkZWZpbmUg Q09ERQorI2luY2x1ZGUgImNvbXBhdF9pb2N0bC5jIgorCiAjZGVmaW5lCVZGQVRfSU9DVExf UkVBRERJUl9CT1RIMzIJX0lPUigncicsIDEsIHN0cnVjdCBsaW51eDMyX2RpcmVudFsyXSkK ICNkZWZpbmUJVkZBVF9JT0NUTF9SRUFERElSX1NIT1JUMzIJX0lPUigncicsIDIsIHN0cnVj dCBsaW51eDMyX2RpcmVudFsyXSkKIApAQCAtMTU4LDI5OCArNjMsNiBAQAogCXJldHVybiBy ZXQ7IAogfSAKIAotLyoKLSAqICBUaGUgdHJhbnNmb3JtIGNvZGUgZm9yIHRoZSBTR19JTyBp b2N0bCB3YXMgYnJhemVubHkgbGlmdGVkIGZyb20KLSAqICB0aGUgU3BhcmM2NCBwb3J0IGlu IHRoZSBmaWxlIGBhcmNoL3NwYXJjNjQva2VybmVsL2lvY3RsMzIuYycuCi0gKiAgVGhhbmtz IHRvIEpha3ViIEplbGluZWsgJiBFZGRpZSBDLiBEb3N0LgotICovCi10eXBlZGVmIHN0cnVj dCBzZ19pb19oZHIzMiB7Ci0JaW50IGludGVyZmFjZV9pZDsJLyogW2ldICdTJyBmb3IgU0NT SSBnZW5lcmljIChyZXF1aXJlZCkgKi8KLQlpbnQgZHhmZXJfZGlyZWN0aW9uOwkvKiBbaV0g ZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gICovCi0JY2hhciAgY21kX2xlbjsJCS8qIFtpXSBT Q1NJIGNvbW1hbmQgbGVuZ3RoICggPD0gMTYgYnl0ZXMpICovCi0JY2hhciAgbXhfc2JfbGVu OwkJLyogW2ldIG1heCBsZW5ndGggdG8gd3JpdGUgdG8gc2JwICovCi0Jc2hvcnQgaW92ZWNf Y291bnQ7CS8qIFtpXSAwIGltcGxpZXMgbm8gc2NhdHRlciBnYXRoZXIgKi8KLQlpbnQgZHhm ZXJfbGVuOwkJLyogW2ldIGJ5dGUgY291bnQgb2YgZGF0YSB0cmFuc2ZlciAqLwotCWludCBk eGZlcnA7CQkvKiBbaV0sIFsqaW9dIHBvaW50cyB0byBkYXRhIHRyYW5zZmVyIG1lbW9yeQot CQkJCQkgICAgICBvciBzY2F0dGVyIGdhdGhlciBsaXN0ICovCi0JaW50IGNtZHA7CQkvKiBb aV0sIFsqaV0gcG9pbnRzIHRvIGNvbW1hbmQgdG8gcGVyZm9ybSAqLwotCWludCBzYnA7CQkv KiBbaV0sIFsqb10gcG9pbnRzIHRvIHNlbnNlX2J1ZmZlciBtZW1vcnkgKi8KLQlpbnQgdGlt ZW91dDsJCS8qIFtpXSBNQVhfVUlOVC0+bm8gdGltZW91dCAodW5pdDogbWlsbGlzZWMpICov Ci0JaW50IGZsYWdzOwkJLyogW2ldIDAgLT4gZGVmYXVsdCwgc2VlIFNHX0ZMQUcuLi4gKi8K LQlpbnQgcGFja19pZDsJCS8qIFtpLT5vXSB1bnVzZWQgaW50ZXJuYWxseSAobm9ybWFsbHkp ICovCi0JaW50IHVzcl9wdHI7CQkvKiBbaS0+b10gdW51c2VkIGludGVybmFsbHkgKi8KLQlj aGFyICBzdGF0dXM7CQkvKiBbb10gc2NzaSBzdGF0dXMgKi8KLQljaGFyICBtYXNrZWRfc3Rh dHVzOwkvKiBbb10gc2hpZnRlZCwgbWFza2VkIHNjc2kgc3RhdHVzICovCi0JY2hhciAgbXNn X3N0YXR1czsJLyogW29dIG1lc3NhZ2luZyBsZXZlbCBkYXRhIChvcHRpb25hbCkgKi8KLQlj aGFyICBzYl9sZW5fd3I7CS8qIFtvXSBieXRlIGNvdW50IGFjdHVhbGx5IHdyaXR0ZW4gdG8g c2JwICovCi0Jc2hvcnQgaG9zdF9zdGF0dXM7CS8qIFtvXSBlcnJvcnMgZnJvbSBob3N0IGFk YXB0ZXIgKi8KLQlzaG9ydCBkcml2ZXJfc3RhdHVzOwkvKiBbb10gZXJyb3JzIGZyb20gc29m dHdhcmUgZHJpdmVyICovCi0JaW50IHJlc2lkOwkJLyogW29dIGR4ZmVyX2xlbiAtIGFjdHVh bF90cmFuc2ZlcnJlZCAqLwotCWludCBkdXJhdGlvbjsJCS8qIFtvXSB0aW1lIHRha2VuIGJ5 IGNtZCAodW5pdDogbWlsbGlzZWMpICovCi0JaW50IGluZm87CQkvKiBbb10gYXV4aWxpYXJ5 IGluZm9ybWF0aW9uICovCi19IHNnX2lvX2hkcjMyX3Q7ICAvKiA2NCBieXRlcyBsb25nIChv biBJQTMyKSAqLwotCi1zdGF0aWMgaW50IGFsbG9jX3NnX2lvdmVjKHNnX2lvX2hkcl90ICpz Z3AsIGludCB1cHRyMzIpCi17Ci0Jc3RydWN0IGNvbXBhdF9pb3ZlYyAqdWlvdiA9IChzdHJ1 Y3QgY29tcGF0X2lvdmVjICopIFAodXB0cjMyKTsKLQlzZ19pb3ZlY190ICpraW92OwotCWlu dCBpOwotCi0Jc2dwLT5keGZlcnAgPSBrbWFsbG9jKHNncC0+aW92ZWNfY291bnQgKgotCQkJ ICAgICAgc2l6ZW9mKHNnX2lvdmVjX3QpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXNncC0+ZHhm ZXJwKQotCQlyZXR1cm4gLUVOT01FTTsKLQltZW1zZXQoc2dwLT5keGZlcnAsIDAsCi0JICAg ICAgIHNncC0+aW92ZWNfY291bnQgKiBzaXplb2Yoc2dfaW92ZWNfdCkpOwotCi0Ja2lvdiA9 IChzZ19pb3ZlY190ICopIHNncC0+ZHhmZXJwOwotCWZvciAoaSA9IDA7IGkgPCBzZ3AtPmlv dmVjX2NvdW50OyBpKyspIHsKLQkJaW50IGlvdl9iYXNlMzI7Ci0JCWlmIChfX2dldF91c2Vy KGlvdl9iYXNlMzIsICZ1aW92LT5pb3ZfYmFzZSkgfHwKLQkJICAgIF9fZ2V0X3VzZXIoa2lv di0+aW92X2xlbiwgJnVpb3YtPmlvdl9sZW4pKQotCQkJcmV0dXJuIC1FRkFVTFQ7Ci0KLQkJ a2lvdi0+aW92X2Jhc2UgPSBrbWFsbG9jKGtpb3YtPmlvdl9sZW4sIEdGUF9LRVJORUwpOwot CQlpZiAoIWtpb3YtPmlvdl9iYXNlKQotCQkJcmV0dXJuIC1FTk9NRU07Ci0JCWlmIChjb3B5 X2Zyb21fdXNlcihraW92LT5pb3ZfYmFzZSwKLQkJCQkgICAodm9pZCAqKSBQKGlvdl9iYXNl MzIpLAotCQkJCSAgIGtpb3YtPmlvdl9sZW4pKQotCQkJcmV0dXJuIC1FRkFVTFQ7Ci0KLQkJ dWlvdisrOwotCQlraW92Kys7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQg Y29weV9iYWNrX3NnX2lvdmVjKHNnX2lvX2hkcl90ICpzZ3AsIGludCB1cHRyMzIpCi17Ci0J c3RydWN0IGNvbXBhdF9pb3ZlYyAqdWlvdiA9IChzdHJ1Y3QgY29tcGF0X2lvdmVjICopIFAo dXB0cjMyKTsKLQlzZ19pb3ZlY190ICpraW92ID0gKHNnX2lvdmVjX3QgKikgc2dwLT5keGZl cnA7Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgc2dwLT5pb3ZlY19jb3VudDsgaSsr KSB7Ci0JCWludCBpb3ZfYmFzZTMyOwotCi0JCWlmIChfX2dldF91c2VyKGlvdl9iYXNlMzIs ICZ1aW92LT5pb3ZfYmFzZSkpCi0JCQlyZXR1cm4gLUVGQVVMVDsKLQotCQlpZiAoY29weV90 b191c2VyKCh2b2lkICopIFAoaW92X2Jhc2UzMiksCi0JCQkJIGtpb3YtPmlvdl9iYXNlLAot CQkJCSBraW92LT5pb3ZfbGVuKSkKLQkJCXJldHVybiAtRUZBVUxUOwotCi0JCXVpb3YrKzsK LQkJa2lvdisrOwotCX0KLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBmcmVlX3Nn X2lvdmVjKHNnX2lvX2hkcl90ICpzZ3ApCi17Ci0Jc2dfaW92ZWNfdCAqa2lvdiA9IChzZ19p b3ZlY190ICopIHNncC0+ZHhmZXJwOwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IHNn cC0+aW92ZWNfY291bnQ7IGkrKykgewotCQlpZiAoa2lvdi0+aW92X2Jhc2UpIHsKLQkJCWtm cmVlKGtpb3YtPmlvdl9iYXNlKTsKLQkJCWtpb3YtPmlvdl9iYXNlID0gTlVMTDsKLQkJfQot CQlraW92Kys7Ci0JfQotCWtmcmVlKHNncC0+ZHhmZXJwKTsKLQlzZ3AtPmR4ZmVycCA9IE5V TEw7Ci19Ci0KLXN0YXRpYyBpbnQgc2dfaW9jdGxfdHJhbnModW5zaWduZWQgaW50IGZkLCB1 bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKLXsKLQlzZ19pb19oZHIzMl90 ICpzZ19pbzMyOwotCXNnX2lvX2hkcl90IHNnX2lvNjQ7Ci0JaW50IGR4ZmVycDMyLCBjbWRw MzIsIHNicDMyOwotCW1tX3NlZ21lbnRfdCBvbGRfZnM7Ci0JaW50IGVyciA9IDA7Ci0KLQlz Z19pbzMyID0gKHNnX2lvX2hkcjMyX3QgKilhcmc7Ci0JZXJyID0gX19nZXRfdXNlcihzZ19p bzY0LmludGVyZmFjZV9pZCwgJnNnX2lvMzItPmludGVyZmFjZV9pZCk7Ci0JZXJyIHw9IF9f Z2V0X3VzZXIoc2dfaW82NC5keGZlcl9kaXJlY3Rpb24sICZzZ19pbzMyLT5keGZlcl9kaXJl Y3Rpb24pOwotCWVyciB8PSBfX2dldF91c2VyKHNnX2lvNjQuY21kX2xlbiwgJnNnX2lvMzIt PmNtZF9sZW4pOwotCWVyciB8PSBfX2dldF91c2VyKHNnX2lvNjQubXhfc2JfbGVuLCAmc2df aW8zMi0+bXhfc2JfbGVuKTsKLQllcnIgfD0gX19nZXRfdXNlcihzZ19pbzY0LmlvdmVjX2Nv dW50LCAmc2dfaW8zMi0+aW92ZWNfY291bnQpOwotCWVyciB8PSBfX2dldF91c2VyKHNnX2lv NjQuZHhmZXJfbGVuLCAmc2dfaW8zMi0+ZHhmZXJfbGVuKTsKLQllcnIgfD0gX19nZXRfdXNl cihzZ19pbzY0LnRpbWVvdXQsICZzZ19pbzMyLT50aW1lb3V0KTsKLQllcnIgfD0gX19nZXRf dXNlcihzZ19pbzY0LmZsYWdzLCAmc2dfaW8zMi0+ZmxhZ3MpOwotCWVyciB8PSBfX2dldF91 c2VyKHNnX2lvNjQucGFja19pZCwgJnNnX2lvMzItPnBhY2tfaWQpOwotCi0Jc2dfaW82NC5k eGZlcnAgPSBOVUxMOwotCXNnX2lvNjQuY21kcCA9IE5VTEw7Ci0Jc2dfaW82NC5zYnAgPSBO VUxMOwotCi0JZXJyIHw9IF9fZ2V0X3VzZXIoY21kcDMyLCAmc2dfaW8zMi0+Y21kcCk7Ci0J c2dfaW82NC5jbWRwID0ga21hbGxvYyhzZ19pbzY0LmNtZF9sZW4sIEdGUF9LRVJORUwpOwot CWlmICghc2dfaW82NC5jbWRwKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gb3V0Owot CX0KLQlpZiAoY29weV9mcm9tX3VzZXIoc2dfaW82NC5jbWRwLAotCQkJICAgKHZvaWQgKikg UChjbWRwMzIpLAotCQkJICAgc2dfaW82NC5jbWRfbGVuKSkgewotCQllcnIgPSAtRUZBVUxU OwotCQlnb3RvIG91dDsKLQl9Ci0KLQllcnIgfD0gX19nZXRfdXNlcihzYnAzMiwgJnNnX2lv MzItPnNicCk7Ci0Jc2dfaW82NC5zYnAgPSBrbWFsbG9jKHNnX2lvNjQubXhfc2JfbGVuLCBH RlBfS0VSTkVMKTsKLQlpZiAoIXNnX2lvNjQuc2JwKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0J CWdvdG8gb3V0OwotCX0KLQlpZiAoY29weV9mcm9tX3VzZXIoc2dfaW82NC5zYnAsCi0JCQkg ICAodm9pZCAqKSBQKHNicDMyKSwKLQkJCSAgIHNnX2lvNjQubXhfc2JfbGVuKSkgewotCQll cnIgPSAtRUZBVUxUOwotCQlnb3RvIG91dDsKLQl9Ci0KLQllcnIgfD0gX19nZXRfdXNlcihk eGZlcnAzMiwgJnNnX2lvMzItPmR4ZmVycCk7Ci0JaWYgKHNnX2lvNjQuaW92ZWNfY291bnQp IHsKLQkJaW50IHJldDsKLQotCQlpZiAoKHJldCA9IGFsbG9jX3NnX2lvdmVjKCZzZ19pbzY0 LCBkeGZlcnAzMikpKSB7Ci0JCQllcnIgPSByZXQ7Ci0JCQlnb3RvIG91dDsKLQkJfQotCX0g ZWxzZSB7Ci0JCXNnX2lvNjQuZHhmZXJwID0ga21hbGxvYyhzZ19pbzY0LmR4ZmVyX2xlbiwg R0ZQX0tFUk5FTCk7Ci0JCWlmICghc2dfaW82NC5keGZlcnApIHsKLQkJCWVyciA9IC1FTk9N RU07Ci0JCQlnb3RvIG91dDsKLQkJfQotCQlpZiAoY29weV9mcm9tX3VzZXIoc2dfaW82NC5k eGZlcnAsCi0JCQkJICAgKHZvaWQgKikgUChkeGZlcnAzMiksCi0JCQkJICAgc2dfaW82NC5k eGZlcl9sZW4pKSB7Ci0JCQllcnIgPSAtRUZBVUxUOwotCQkJZ290byBvdXQ7Ci0JCX0KLQl9 Ci0KLQkvKiBVbnVzZWQgaW50ZXJuYWxseSwgZG8gbm90IGV2ZW4gYm90aGVyIHRvIGNvcHkg aXQgb3Zlci4gKi8KLQlzZ19pbzY0LnVzcl9wdHIgPSBOVUxMOwotCi0JaWYgKGVycikKLQkJ cmV0dXJuIC1FRkFVTFQ7Ci0KLQlvbGRfZnMgPSBnZXRfZnMoKTsKLQlzZXRfZnMgKEtFUk5F TF9EUyk7Ci0JZXJyID0gc3lzX2lvY3RsIChmZCwgY21kLCAodW5zaWduZWQgbG9uZykgJnNn X2lvNjQpOwotCXNldF9mcyAob2xkX2ZzKTsKLQotCWlmIChlcnIgPCAwKQotCQlnb3RvIG91 dDsKLQotCWVyciA9IF9fcHV0X3VzZXIoc2dfaW82NC5wYWNrX2lkLCAmc2dfaW8zMi0+cGFj a19pZCk7Ci0JZXJyIHw9IF9fcHV0X3VzZXIoc2dfaW82NC5zdGF0dXMsICZzZ19pbzMyLT5z dGF0dXMpOwotCWVyciB8PSBfX3B1dF91c2VyKHNnX2lvNjQubWFza2VkX3N0YXR1cywgJnNn X2lvMzItPm1hc2tlZF9zdGF0dXMpOwotCWVyciB8PSBfX3B1dF91c2VyKHNnX2lvNjQubXNn X3N0YXR1cywgJnNnX2lvMzItPm1zZ19zdGF0dXMpOwotCWVyciB8PSBfX3B1dF91c2VyKHNn X2lvNjQuc2JfbGVuX3dyLCAmc2dfaW8zMi0+c2JfbGVuX3dyKTsKLQllcnIgfD0gX19wdXRf dXNlcihzZ19pbzY0Lmhvc3Rfc3RhdHVzLCAmc2dfaW8zMi0+aG9zdF9zdGF0dXMpOwotCWVy ciB8PSBfX3B1dF91c2VyKHNnX2lvNjQuZHJpdmVyX3N0YXR1cywgJnNnX2lvMzItPmRyaXZl cl9zdGF0dXMpOwotCWVyciB8PSBfX3B1dF91c2VyKHNnX2lvNjQucmVzaWQsICZzZ19pbzMy LT5yZXNpZCk7Ci0JZXJyIHw9IF9fcHV0X3VzZXIoc2dfaW82NC5kdXJhdGlvbiwgJnNnX2lv MzItPmR1cmF0aW9uKTsKLQllcnIgfD0gX19wdXRfdXNlcihzZ19pbzY0LmluZm8sICZzZ19p bzMyLT5pbmZvKTsKLQllcnIgfD0gY29weV90b191c2VyKCh2b2lkICopUChzYnAzMiksIHNn X2lvNjQuc2JwLCBzZ19pbzY0Lm14X3NiX2xlbik7Ci0JaWYgKHNnX2lvNjQuZHhmZXJwKSB7 Ci0JCWlmIChzZ19pbzY0LmlvdmVjX2NvdW50KQotCQkJZXJyIHw9IGNvcHlfYmFja19zZ19p b3ZlYygmc2dfaW82NCwgZHhmZXJwMzIpOwotCQllbHNlCi0JCQllcnIgfD0gY29weV90b191 c2VyKCh2b2lkICopUChkeGZlcnAzMiksCi0JCQkJCSAgICBzZ19pbzY0LmR4ZmVycCwKLQkJ CQkJICAgIHNnX2lvNjQuZHhmZXJfbGVuKTsKLQl9Ci0JaWYgKGVycikKLQkJZXJyID0gLUVG QVVMVDsKLQotb3V0OgotCWlmIChzZ19pbzY0LmNtZHApCi0JCWtmcmVlKHNnX2lvNjQuY21k cCk7Ci0JaWYgKHNnX2lvNjQuc2JwKQotCQlrZnJlZShzZ19pbzY0LnNicCk7Ci0JaWYgKHNn X2lvNjQuZHhmZXJwKSB7Ci0JCWlmIChzZ19pbzY0LmlvdmVjX2NvdW50KSB7Ci0JCQlmcmVl X3NnX2lvdmVjKCZzZ19pbzY0KTsKLQkJfSBlbHNlIHsKLQkJCWtmcmVlKHNnX2lvNjQuZHhm ZXJwKTsKLQkJfQotCX0KLQlyZXR1cm4gZXJyOwotfQotCi1zdGF0aWMgX19pbmxpbmVfXyB2 b2lkICphbGxvY191c2VyX3NwYWNlKGxvbmcgbGVuKQotewotCXN0cnVjdCBwdF9yZWdzCSpy ZWdzID0gKChzdHJ1Y3QgcHRfcmVncyAqKSgodW5zaWduZWQgbG9uZykgY3VycmVudCArCi0J CQkJCQkgICAgSUE2NF9TVEtfT0ZGU0VUKSkgLSAxOwotCXJldHVybiAodm9pZCAqKXJlZ3Mt PnIxMiAtIGxlbjsgCi19Ci0KLXN0cnVjdCBpZm1hcDMyIHsKLQl1MzIgbWVtX3N0YXJ0Owot CXUzMiBtZW1fZW5kOwotCXVuc2lnbmVkIHNob3J0IGJhc2VfYWRkcjsKLQl1bnNpZ25lZCBj aGFyIGlycTsKLQl1bnNpZ25lZCBjaGFyIGRtYTsKLQl1bnNpZ25lZCBjaGFyIHBvcnQ7Ci19 OwotCi1zdHJ1Y3QgaWZyZXEzMiB7Ci0jZGVmaW5lIElGSFdBRERSTEVOICAgICA2Ci0jZGVm aW5lIElGTkFNU0laICAgICAgICAxNgotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAg ICAgY2hhciAgICBpZnJuX25hbWVbSUZOQU1TSVpdOyAgICAgICAgICAgIC8qIGlmIG5hbWUs IGUuZy4gImVuMCIgKi8KLSAgICAgICAgfSBpZnJfaWZybjsKLSAgICAgICAgdW5pb24gewot ICAgICAgICAgICAgICAgIHN0cnVjdCAgc29ja2FkZHIgaWZydV9hZGRyOwotICAgICAgICAg ICAgICAgIHN0cnVjdCAgc29ja2FkZHIgaWZydV9kc3RhZGRyOwotICAgICAgICAgICAgICAg IHN0cnVjdCAgc29ja2FkZHIgaWZydV9icm9hZGFkZHI7Ci0gICAgICAgICAgICAgICAgc3Ry dWN0ICBzb2NrYWRkciBpZnJ1X25ldG1hc2s7Ci0gICAgICAgICAgICAgICAgc3RydWN0ICBz b2NrYWRkciBpZnJ1X2h3YWRkcjsKLSAgICAgICAgICAgICAgICBzaG9ydCAgIGlmcnVfZmxh Z3M7Ci0gICAgICAgICAgICAgICAgaW50ICAgICBpZnJ1X2l2YWx1ZTsKLSAgICAgICAgICAg ICAgICBpbnQgICAgIGlmcnVfbXR1OwotICAgICAgICAgICAgICAgIHN0cnVjdCAgaWZtYXAz MiBpZnJ1X21hcDsKLSAgICAgICAgICAgICAgICBjaGFyICAgIGlmcnVfc2xhdmVbSUZOQU1T SVpdOyAgIC8qIEp1c3QgZml0cyB0aGUgc2l6ZSAqLwotCQljaGFyCWlmcnVfbmV3bmFtZVtJ Rk5BTVNJWl07Ci0gICAgICAgICAgICAgICAgY29tcGF0X2NhZGRyX3QgaWZydV9kYXRhOwot ICAgICAgICB9IGlmcl9pZnJ1OwotfTsKLQotaW50IHNpb2NkZXZwcml2YXRlX2lvY3RsKHVu c2lnbmVkIGludCBmZCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCi17 Ci0Jc3RydWN0IGlmcmVxICp1X2lmcmVxNjQ7Ci0Jc3RydWN0IGlmcmVxMzIgKnVfaWZyZXEz MiA9IChzdHJ1Y3QgaWZyZXEzMiAqKSBhcmc7Ci0JY2hhciB0bXBfYnVmW0lGTkFNU0laXTsK LQl2b2lkICpkYXRhNjQ7Ci0JdTMyIGRhdGEzMjsKLQotCWlmIChjb3B5X2Zyb21fdXNlcigm dG1wX2J1ZlswXSwgJih1X2lmcmVxMzItPmlmcl9pZnJuLmlmcm5fbmFtZVswXSksCi0JCQkg ICBJRk5BTVNJWikpCi0JCXJldHVybiAtRUZBVUxUOwotCWlmIChfX2dldF91c2VyKGRhdGEz MiwgJnVfaWZyZXEzMi0+aWZyX2lmcnUuaWZydV9kYXRhKSkKLQkJcmV0dXJuIC1FRkFVTFQ7 Ci0JZGF0YTY0ID0gKHZvaWQgKikgUChkYXRhMzIpOwotCi0JdV9pZnJlcTY0ID0gYWxsb2Nf dXNlcl9zcGFjZShzaXplb2YoKnVfaWZyZXE2NCkpOwotCi0JLyogRG9uJ3QgY2hlY2sgdGhl c2UgdXNlciBhY2Nlc3NlcywganVzdCBsZXQgdGhhdCBnZXQgdHJhcHBlZAotCSAqIGluIHRo ZSBpb2N0bCBoYW5kbGVyIGluc3RlYWQuCi0JICovCi0JY29weV90b191c2VyKCZ1X2lmcmVx NjQtPmlmcl9pZnJuLmlmcm5fbmFtZVswXSwgJnRtcF9idWZbMF0sIElGTkFNU0laKTsKLQlf X3B1dF91c2VyKGRhdGE2NCwgJnVfaWZyZXE2NC0+aWZyX2lmcnUuaWZydV9kYXRhKTsKLQot CXJldHVybiBzeXNfaW9jdGwoZmQsIGNtZCwgKHVuc2lnbmVkIGxvbmcpIHVfaWZyZXE2NCk7 Ci19Ci0KIHR5cGVkZWYgaW50ICgqIGlvY3RsMzJfaGFuZGxlcl90KSh1bnNpZ25lZCBpbnQs IHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZywgc3RydWN0IGZpbGUgKik7CiAKICNkZWZp bmUgQ09NUEFUSUJMRV9JT0NUTChjbWQpCQlIQU5ETEVfSU9DVEwoKGNtZCksc3lzX2lvY3Rs KQpAQCAtNDYwLDggKzczLDkgQEAKIAl9OyBzdHJ1Y3QgaW9jdGxfdHJhbnMgaW9jdGxfZW5k WzBdOwogCiBJT0NUTF9UQUJMRV9TVEFSVAotI2luY2x1ZGUgPGxpbnV4L2NvbXBhdF9pb2N0 bC5oPgogSEFORExFX0lPQ1RMKFZGQVRfSU9DVExfUkVBRERJUl9CT1RIMzIsIHZmYXRfaW9j dGwzMikKIEhBTkRMRV9JT0NUTChWRkFUX0lPQ1RMX1JFQURESVJfU0hPUlQzMiwgdmZhdF9p b2N0bDMyKQotSEFORExFX0lPQ1RMKFNHX0lPLHNnX2lvY3RsX3RyYW5zKQorI2RlZmluZSBE RUNMQVJFUworI2luY2x1ZGUgImNvbXBhdF9pb2N0bC5jIgorI2luY2x1ZGUgPGxpbnV4L2Nv bXBhdF9pb2N0bC5oPgogSU9DVExfVEFCTEVfRU5ECkluZGV4OiBhcmNoL2lhNjQvaWEzMi9N YWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcmNoL2lhNjQvaWEzMi9NYWtlZmlsZQkocmV2 aXNpb24gMTIyMDIpCisrKyBhcmNoL2lhNjQvaWEzMi9NYWtlZmlsZQkod29ya2luZyBjb3B5 KQpAQCAtNCwzICs0LDUgQEAKIAogb2JqLXkgOj0gaWEzMl9lbnRyeS5vIHN5c19pYTMyLm8g aWEzMl9pb2N0bC5vIGlhMzJfc2lnbmFsLm8gXAogCSBpYTMyX3N1cHBvcnQubyBpYTMyX3Ry YXBzLm8gYmluZm10X2VsZjMyLm8gaWEzMl9sZHQubworCitDRkxBR1NfaWEzMl9pb2N0bC5v ICs9IC1JZnMvCg== --------------070100060901040705010705--