back port 2.5.65-mm4 ext3 patch to 2.4.20

hugang (hugang@soulinfo.com)
Mon, 24 Mar 2003 20:55:02 +0800


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-29492-1048510738-0001-2
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello:

This patch base on Andrew Morton's 2.5.65-mm4.

-- 
Hu Gang / Steve
Email        : huagng@soulinfo.com, linuxbest@sina.com
GPG FinePrint: 4099 3F1D AE01 1817 68F7  D499 A6C2 C418 86C8 610E
Registered Linux User 204016

--=_courier-29492-1048510738-0001-2 Content-Type: application/octet-stream; name="2_4_20_ext3_orlov_no_blk.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="2_4_20_ext3_orlov_no_blk.patch"

ZGlmZiAtcnUgLi9mcy9leHQzL2lhbGxvYy5jIC9ob21lL2h1Z2FuZy9kZXZlL2N2cy9sb2NhbC9r ZXJuZWwvZXh0M18yNC9mcy9leHQzL2lhbGxvYy5jCi0tLSAuL2ZzL2V4dDMvaWFsbG9jLmMJTW9u IE1hciAyNCAyMDoyNzo1OCAyMDAzCisrKyAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2Vy bmVsL2V4dDNfMjQvZnMvZXh0My9pYWxsb2MuYwlTdW4gRGVjICAxIDEyOjQzOjU1IDIwMDIKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxsaW51 eC9sb2Nrcy5oPgogI2luY2x1ZGUgPGxpbnV4L3F1b3Rhb3BzLmg+CisjaW5jbHVkZSA8bGludXgv cmFuZG9tLmg+CiAKICNpbmNsdWRlIDxhc20vYml0b3BzLmg+CiAjaW5jbHVkZSA8YXNtL2J5dGVv cmRlci5oPgpAQCAtMjYyLDkgKzI2MywxMSBAQAogCQlpZiAoZ2RwKSB7CiAJCQlnZHAtPmJnX2Zy ZWVfaW5vZGVzX2NvdW50ID0gY3B1X3RvX2xlMTYoCiAJCQkJbGUxNl90b19jcHUoZ2RwLT5iZ19m cmVlX2lub2Rlc19jb3VudCkgKyAxKTsKLQkJCWlmIChpc19kaXJlY3RvcnkpCisJCQlpZiAoaXNf ZGlyZWN0b3J5KSB7CiAJCQkJZ2RwLT5iZ191c2VkX2RpcnNfY291bnQgPSBjcHVfdG9fbGUxNigK IAkJCQkgIGxlMTZfdG9fY3B1KGdkcC0+YmdfdXNlZF9kaXJzX2NvdW50KSAtIDEpOworCQkJCUVY VDNfU0Ioc2IpLT5zX2Rpcl9jb3VudC0tOworCQkJfQogCQl9CiAJCUJVRkZFUl9UUkFDRShiaDIs ICJjYWxsIGV4dDNfam91cm5hbF9kaXJ0eV9tZXRhZGF0YSIpOwogCQllcnIgPSBleHQzX2pvdXJu YWxfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBiaDIpOwpAQCAtMjkzLDIwICsyOTYsMjI4IEBACiAg KiB0aGUgZ3JvdXBzIHdpdGggYWJvdmUtYXZlcmFnZSBmcmVlIHNwYWNlLCB0aGF0IGdyb3VwIHdp dGggdGhlIGZld2VzdAogICogZGlyZWN0b3JpZXMgYWxyZWFkeSBpcyBjaG9zZW4uCiAgKgorICog Rm9yIG90aGVyIGlub2Rlcywgc2VhcmNoIGZvcndhcmQgZnJvbSB0aGUgcGFyZW50IGRpcmVjdG9y eVwncyBibG9jaworICogZ3JvdXAgdG8gZmluZCBhIGZyZWUgaW5vZGUuCisgKi8KK3N0YXRpYyBp bnQgZmluZF9ncm91cF9kaXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGlub2RlICpw YXJlbnQpCit7CisJc3RydWN0IGV4dDNfc3VwZXJfYmxvY2sgKiBlcyA9IEVYVDNfU0Ioc2IpLT5z X2VzOworCWludCBuZ3JvdXBzID0gRVhUM19TQihzYiktPnNfZ3JvdXBzX2NvdW50OworCWludCBh dmVmcmVlaSA9IGxlMzJfdG9fY3B1KGVzLT5zX2ZyZWVfaW5vZGVzX2NvdW50KSAvIG5ncm91cHM7 CisJc3RydWN0IGV4dDNfZ3JvdXBfZGVzYyAqZGVzYywgKmJlc3RfZGVzYyA9IE5VTEw7CisJc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaCwgKmJlc3RfYmggPSBOVUxMOworCWludCBncm91cCwgYmVzdF9n cm91cCA9IC0xOworCisJZm9yIChncm91cCA9IDA7IGdyb3VwIDwgbmdyb3VwczsgZ3JvdXArKykg eworCQlkZXNjID0gZXh0M19nZXRfZ3JvdXBfZGVzYyAoc2IsIGdyb3VwLCAmYmgpOworCQlpZiAo IWRlc2MgfHwgIWRlc2MtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KQorCQkJY29udGludWU7CisJCWlm IChsZTE2X3RvX2NwdShkZXNjLT5iZ19mcmVlX2lub2Rlc19jb3VudCkgPCBhdmVmcmVlaSkKKwkJ CWNvbnRpbnVlOworCQlpZiAoIWJlc3RfZGVzYyB8fCAKKwkJICAgIChsZTE2X3RvX2NwdShkZXNj LT5iZ19mcmVlX2Jsb2Nrc19jb3VudCkgPgorCQkgICAgIGxlMTZfdG9fY3B1KGJlc3RfZGVzYy0+ YmdfZnJlZV9ibG9ja3NfY291bnQpKSkgeworCQkJYmVzdF9ncm91cCA9IGdyb3VwOworCQkJYmVz dF9kZXNjID0gZGVzYzsKKwkJCWJlc3RfYmggPSBiaDsKKwkJfQorCX0KKwlpZiAoIWJlc3RfZGVz YykKKwkJcmV0dXJuIC0xOworCXJldHVybiBiZXN0X2dyb3VwOworfQorCisvKiAKKyAqIE9ybG92 J3MgYWxsb2NhdG9yIGZvciBkaXJlY3Rvcmllcy4KKyAqIAorICogV2UgYWx3YXlzIHRyeSB0byBz cHJlYWQgZmlyc3QtbGV2ZWwgZGlyZWN0b3JpZXMuCisgKiAKKyAqIElmIHRoZXJlIGFyZSBibG9j a2dyb3VwcyB3aXRoIGJvdGggZnJlZSBpbm9kZXMgYW5kIGZyZWUgYmxvY2tzIGNvdW50cworICog bm90IHdvcnNlIHRoYW4gYXZlcmFnZSB3ZSByZXR1cm4gb25lIHdpdGggc21hbGxlc3QgZGlyZWN0 b3J5IGNvdW50LgorICogT3RoZXJ3aXNlIHdlIHNpbXBseSByZXR1cm4gYSByYW5kb20gZ3JvdXAu CisgKiAKKyAqIEZvciB0aGUgcmVzdCBydWxlcyBsb29rIHNvOgorICogCisgKiBJdCdzIE9LIHRv IHB1dCBkaXJlY3RvcnkgaW50byBhIGdyb3VwIHVubGVzcyAKKyAqIGl0IGhhcyB0b28gbWFueSBk aXJlY3RvcmllcyBhbHJlYWR5IChtYXhfZGlycykgb3IKKyAqIGl0IGhhcyB0b28gZmV3IGZyZWUg aW5vZGVzIGxlZnQgKG1pbl9pbm9kZXMpIG9yCisgKiBpdCBoYXMgdG9vIGZldyBmcmVlIGJsb2Nr cyBsZWZ0IChtaW5fYmxvY2tzKSBvcgorICogaXQncyBhbHJlYWR5IHJ1bm5pbmcgdG9vIGxhcmdl IGRlYnQgKG1heF9kZWJ0KS4KKyAqIFBhcmVudCdzIGdyb3VwIGlzIHByZWZlcmVkLCBpZiBpdCBk b2Vzbid0IHNhdGlzZnkgdGhlc2UKKyAqIGNvbmRpdGlvbnMgd2Ugc2VhcmNoIGN5Y2xpY2FsbHkg dGhyb3VnaCB0aGUgcmVzdC4gSWYgbm9uZQorICogb2YgdGhlIGdyb3VwcyBsb29rIGdvb2Qgd2Ug anVzdCBsb29rIGZvciBhIGdyb3VwIHdpdGggbW9yZQorICogZnJlZSBpbm9kZXMgdGhhbiBhdmVy YWdlIChzdGFydGluZyBhdCBwYXJlbnQncyBncm91cCkuCisgKgorICogRGVidCBpcyBpbmNyZW1l bnRlZCBlYWNoIHRpbWUgd2UgYWxsb2NhdGUgYSBkaXJlY3RvcnkgYW5kIGRlY3JlbWVudGVkCisg KiB3aGVuIHdlIGFsbG9jYXRlIGFuIGlub2RlLCB3aXRoaW4gMC0tMjU1LgorICovCisKKyNkZWZp bmUgSU5PREVfQ09TVCA2NAorI2RlZmluZSBCTE9DS19DT1NUIDI1NgorCitzdGF0aWMgaW50IGZp bmRfZ3JvdXBfb3Jsb3Yoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY29uc3Qgc3RydWN0IGlub2Rl ICpwYXJlbnQpCit7CisJaW50IHBhcmVudF9ncm91cCA9IEVYVDNfSShwYXJlbnQpLT5pX2Jsb2Nr X2dyb3VwOworCXN0cnVjdCBleHQzX3NiX2luZm8gKnNiaSA9IEVYVDNfU0Ioc2IpOworCXN0cnVj dCBleHQzX3N1cGVyX2Jsb2NrICplcyA9IHNiaS0+c19lczsKKwlpbnQgbmdyb3VwcyA9IHNiaS0+ c19ncm91cHNfY291bnQ7CisJaW50IGlub2Rlc19wZXJfZ3JvdXAgPSBFWFQzX0lOT0RFU19QRVJf R1JPVVAoc2IpOworCWludCBhdmVmcmVlaSA9IGxlMzJfdG9fY3B1KGVzLT5zX2ZyZWVfaW5vZGVz X2NvdW50KSAvIG5ncm91cHM7CisJaW50IGF2ZWZyZWViID0gbGUzMl90b19jcHUoZXMtPnNfZnJl ZV9ibG9ja3NfY291bnQpIC8gbmdyb3VwczsKKwlpbnQgYmxvY2tzX3Blcl9kaXI7CisJaW50IG5k aXJzID0gc2JpLT5zX2Rpcl9jb3VudDsKKwlpbnQgbWF4X2RlYnQsIG1heF9kaXJzLCBtaW5fYmxv Y2tzLCBtaW5faW5vZGVzOworCWludCBncm91cCA9IC0xLCBpOworCXN0cnVjdCBleHQzX2dyb3Vw X2Rlc2MgKmRlc2M7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKKworCWlmICgocGFyZW50ID09 IHNiLT5zX3Jvb3QtPmRfaW5vZGUpIHx8CisJICAgIChwYXJlbnQtPmlfZmxhZ3MgJiBFWFQzX1RP UERJUl9GTCkpIHsKKwkJc3RydWN0IGV4dDNfZ3JvdXBfZGVzYyAqYmVzdF9kZXNjID0gTlVMTDsK KwkJc3RydWN0IGJ1ZmZlcl9oZWFkICpiZXN0X2JoID0gTlVMTDsKKwkJaW50IGJlc3RfbmRpciA9 IGlub2Rlc19wZXJfZ3JvdXA7CisJCWludCBiZXN0X2dyb3VwID0gLTE7CisJCQorCQlnZXRfcmFu ZG9tX2J5dGVzKCZncm91cCwgc2l6ZW9mKGdyb3VwKSk7CisJCXBhcmVudF9ncm91cCA9ICh1bnNp Z25lZClncm91cCAlIG5ncm91cHM7CisJCWZvciAoaSA9IDA7IGkgPCBuZ3JvdXBzOyBpKyspIHsK KwkJCWdyb3VwID0gKHBhcmVudF9ncm91cCArIGkpICUgbmdyb3VwczsKKwkJCWRlc2MgPSBleHQz X2dldF9ncm91cF9kZXNjIChzYiwgZ3JvdXAsICZiaCk7CisJCQlpZiAoIWRlc2MgfHwgIWRlc2Mt PmJnX2ZyZWVfaW5vZGVzX2NvdW50KQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGxlMTZfdG9fY3B1 KGRlc2MtPmJnX3VzZWRfZGlyc19jb3VudCkgPj0gYmVzdF9uZGlyKQorCQkJCWNvbnRpbnVlOwor CQkJaWYgKGxlMTZfdG9fY3B1KGRlc2MtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KSA8IGF2ZWZyZWVp KQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGxlMTZfdG9fY3B1KGRlc2MtPmJnX2ZyZWVfYmxvY2tz X2NvdW50KSA8IGF2ZWZyZWViKQorCQkJCWNvbnRpbnVlOworCQkJYmVzdF9ncm91cCA9IGdyb3Vw OworCQkJYmVzdF9uZGlyID0gbGUxNl90b19jcHUoZGVzYy0+YmdfdXNlZF9kaXJzX2NvdW50KTsK KwkJCWJlc3RfZGVzYyA9IGRlc2M7CisJCQliZXN0X2JoID0gYmg7CisJCX0KKwkJaWYgKGJlc3Rf Z3JvdXAgPj0gMCkgeworCQkJZGVzYyA9IGJlc3RfZGVzYzsKKwkJCWJoID0gYmVzdF9iaDsKKwkJ CWdyb3VwID0gYmVzdF9ncm91cDsKKwkJCWdvdG8gZm91bmQ7CisJCX0KKwkJZ290byBmYWxsYmFj azsKKwl9CisKKwlibG9ja3NfcGVyX2RpciA9IChsZTMyX3RvX2NwdShlcy0+c19ibG9ja3NfY291 bnQpIC0KKwkJCSAgbGUzMl90b19jcHUoZXMtPnNfZnJlZV9ibG9ja3NfY291bnQpKSAvIG5kaXJz OworCisJbWF4X2RpcnMgPSBuZGlycyAvIG5ncm91cHMgKyBpbm9kZXNfcGVyX2dyb3VwIC8gMTY7 CisJbWluX2lub2RlcyA9IGF2ZWZyZWVpIC0gaW5vZGVzX3Blcl9ncm91cCAvIDQ7CisJbWluX2Js b2NrcyA9IGF2ZWZyZWViIC0gRVhUM19CTE9DS1NfUEVSX0dST1VQKHNiKSAvIDQ7CisKKwltYXhf ZGVidCA9IEVYVDNfQkxPQ0tTX1BFUl9HUk9VUChzYikgLyBtYXgoYmxvY2tzX3Blcl9kaXIsIEJM T0NLX0NPU1QpOworCWlmIChtYXhfZGVidCAqIElOT0RFX0NPU1QgPiBpbm9kZXNfcGVyX2dyb3Vw KQorCQltYXhfZGVidCA9IGlub2Rlc19wZXJfZ3JvdXAgLyBJTk9ERV9DT1NUOworCWlmIChtYXhf ZGVidCA+IDI1NSkKKwkJbWF4X2RlYnQgPSAyNTU7CisJaWYgKG1heF9kZWJ0ID09IDApCisJCW1h eF9kZWJ0ID0gMTsKKworCWZvciAoaSA9IDA7IGkgPCBuZ3JvdXBzOyBpKyspIHsKKwkJZ3JvdXAg PSAocGFyZW50X2dyb3VwICsgaSkgJSBuZ3JvdXBzOworCQlkZXNjID0gZXh0M19nZXRfZ3JvdXBf ZGVzYyAoc2IsIGdyb3VwLCAmYmgpOworCQlpZiAoIWRlc2MgfHwgIWRlc2MtPmJnX2ZyZWVfaW5v ZGVzX2NvdW50KQorCQkJY29udGludWU7CisJCWlmIChzYmktPnNfZGVidHNbZ3JvdXBdID49IG1h eF9kZWJ0KQorCQkJY29udGludWU7CisJCWlmIChsZTE2X3RvX2NwdShkZXNjLT5iZ191c2VkX2Rp cnNfY291bnQpID49IG1heF9kaXJzKQorCQkJY29udGludWU7CisJCWlmIChsZTE2X3RvX2NwdShk ZXNjLT5iZ19mcmVlX2lub2Rlc19jb3VudCkgPCBtaW5faW5vZGVzKQorCQkJY29udGludWU7CisJ CWlmIChsZTE2X3RvX2NwdShkZXNjLT5iZ19mcmVlX2Jsb2Nrc19jb3VudCkgPCBtaW5fYmxvY2tz KQorCQkJY29udGludWU7CisJCWdvdG8gZm91bmQ7CisJfQorCisgZmFsbGJhY2s6CisJZm9yIChp ID0gMDsgaSA8IG5ncm91cHM7IGkrKykgeworCQlncm91cCA9IChwYXJlbnRfZ3JvdXAgKyBpKSAl IG5ncm91cHM7CisJCWRlc2MgPSBleHQzX2dldF9ncm91cF9kZXNjIChzYiwgZ3JvdXAsICZiaCk7 CisJCWlmICghZGVzYyB8fCAhZGVzYy0+YmdfZnJlZV9pbm9kZXNfY291bnQpCisJCQljb250aW51 ZTsKKwkJaWYgKGxlMTZfdG9fY3B1KGRlc2MtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KSA+PSBhdmVm cmVlaSkKKwkJCWdvdG8gZm91bmQ7CisJfQorCisJcmV0dXJuIC0xOworIGZvdW5kOgorCXJldHVy biBncm91cDsKK30KKworc3RhdGljIGludCBmaW5kX2dyb3VwX290aGVyKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsIHN0cnVjdCBpbm9kZSAqcGFyZW50KQoreworCWludCBwYXJlbnRfZ3JvdXAgPSBF WFQzX0kocGFyZW50KS0+aV9ibG9ja19ncm91cDsKKwlpbnQgbmdyb3VwcyA9IEVYVDNfU0Ioc2Ip LT5zX2dyb3Vwc19jb3VudDsKKwlzdHJ1Y3QgZXh0M19ncm91cF9kZXNjICpkZXNjOworCXN0cnVj dCBidWZmZXJfaGVhZCAqYmg7CisJaW50IGdyb3VwLCBpOworCQorCS8qCisJICogVHJ5IHRvIHBs YWNlIHRoZSBpbm9kZSBpbiBpdHMgcGFyZW50IGRpcmVjdG9yeQorCSAqLworCWdyb3VwID0gcGFy ZW50X2dyb3VwOworCWRlc2MgPSBleHQzX2dldF9ncm91cF9kZXNjIChzYiwgZ3JvdXAsICZiaCk7 CisJaWYgKGRlc2MgJiYgbGUxNl90b19jcHUoZGVzYy0+YmdfZnJlZV9pbm9kZXNfY291bnQpKQor CQlnb3RvIGZvdW5kOworCisJLyoKKwkgKiBVc2UgYSBxdWFkcmF0aWMgaGFzaCB0byBmaW5kIGEg Z3JvdXAgd2l0aCBhCisJICogZnJlZSBpbm9kZQorCSAqLworCWZvciAoaSA9IDE7IGkgPCBuZ3Jv dXBzOyBpIDw8PSAxKSB7CisJCWdyb3VwICs9IGk7CisJCWlmIChncm91cCA+PSBuZ3JvdXBzKQor CQkJZ3JvdXAgLT0gbmdyb3VwczsKKwkJZGVzYyA9IGV4dDNfZ2V0X2dyb3VwX2Rlc2MgKHNiLCBn cm91cCwgJmJoKTsKKwkJaWYgKGRlc2MgJiYgbGUxNl90b19jcHUoZGVzYy0+YmdfZnJlZV9pbm9k ZXNfY291bnQpKQorCQkJZ290byBmb3VuZDsKKwl9CisKKwkvKgorCSAqIFRoYXQgZmFpbGVkOiB0 cnkgbGluZWFyIHNlYXJjaCBmb3IgYSBmcmVlIGlub2RlCisJICovCisJZ3JvdXAgPSBwYXJlbnRf Z3JvdXAgKyAxOworCWZvciAoaSA9IDI7IGkgPCBuZ3JvdXBzOyBpKyspIHsKKwkJaWYgKCsrZ3Jv dXAgPj0gbmdyb3VwcykKKwkJCWdyb3VwID0gMDsKKwkJZGVzYyA9IGV4dDNfZ2V0X2dyb3VwX2Rl c2MgKHNiLCBncm91cCwgJmJoKTsKKwkJaWYgKGRlc2MgJiYgbGUxNl90b19jcHUoZGVzYy0+Ymdf ZnJlZV9pbm9kZXNfY291bnQpKQorCQkJZ290byBmb3VuZDsKKwl9CisJCisJcmV0dXJuIC0xOwor CQorIGZvdW5kOgorCXJldHVybiBncm91cDsKK30KKworLyoKKyAqIFRoZXJlIGFyZSB0d28gcG9s aWNpZXMgZm9yIGFsbG9jYXRpbmcgYW4gaW5vZGUuICBJZiB0aGUgbmV3IGlub2RlIGlzCisgKiBh IGRpcmVjdG9yeSwgdGhlbiBhIGZvcndhcmQgc2VhcmNoIGlzIG1hZGUgZm9yIGEgYmxvY2sgZ3Jv dXAgd2l0aCBib3RoCisgKiBmcmVlIHNwYWNlIGFuZCBhIGxvdyBkaXJlY3RvcnktdG8taW5vZGUg cmF0aW87IGlmIHRoYXQgZmFpbHMsIHRoZW4gb2YKKyAqIHRoZSBncm91cHMgd2l0aCBhYm92ZS1h dmVyYWdlIGZyZWUgc3BhY2UsIHRoYXQgZ3JvdXAgd2l0aCB0aGUgZmV3ZXN0CisgKiBkaXJlY3Rv cmllcyBhbHJlYWR5IGlzIGNob3Nlbi4KKyAqCiAgKiBGb3Igb3RoZXIgaW5vZGVzLCBzZWFyY2gg Zm9yd2FyZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5J3MgYmxvY2sKICAqIGdyb3VwIHRvIGZp bmQgYSBmcmVlIGlub2RlLgogICovCi1zdHJ1Y3QgaW5vZGUgKiBleHQzX25ld19pbm9kZSAoaGFu ZGxlX3QgKmhhbmRsZSwKLQkJCQljb25zdCBzdHJ1Y3QgaW5vZGUgKiBkaXIsIGludCBtb2RlKQor c3RydWN0IGlub2RlICogZXh0M19uZXdfaW5vZGUgKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBp bm9kZSAqIGRpciwgaW50IG1vZGUpCiB7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICogc2I7CiAJc3Ry dWN0IGJ1ZmZlcl9oZWFkICogYmg7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgyOwotCWludCBp LCBqLCBhdmVmcmVlaTsKLQlzdHJ1Y3QgaW5vZGUgKiBpbm9kZTsKKwlpbnQgZ3JvdXA7CisJaW5v X3QgaW5vOwogCWludCBiaXRtYXBfbnI7CisJc3RydWN0IGlub2RlICogaW5vZGU7CiAJc3RydWN0 IGV4dDNfZ3JvdXBfZGVzYyAqIGdkcDsKLQlzdHJ1Y3QgZXh0M19ncm91cF9kZXNjICogdG1wOwog CXN0cnVjdCBleHQzX3N1cGVyX2Jsb2NrICogZXM7CiAJaW50IGVyciA9IDA7CiAKQEAgLTMyMyw5 NCArNTM0LDM2IEBACiAJbG9ja19zdXBlciAoc2IpOwogCWVzID0gc2ItPnUuZXh0M19zYi5zX2Vz OwogcmVwZWF0OgotCWdkcCA9IE5VTEw7Ci0JaSA9IDA7Ci0KIAlpZiAoU19JU0RJUihtb2RlKSkg ewotCQlhdmVmcmVlaSA9IGxlMzJfdG9fY3B1KGVzLT5zX2ZyZWVfaW5vZGVzX2NvdW50KSAvCi0J CQlzYi0+dS5leHQzX3NiLnNfZ3JvdXBzX2NvdW50OwotCQlpZiAoIWdkcCkgewotCQkJZm9yIChq ID0gMDsgaiA8IHNiLT51LmV4dDNfc2Iuc19ncm91cHNfY291bnQ7IGorKykgewotCQkJCXN0cnVj dCBidWZmZXJfaGVhZCAqdGVtcF9idWZmZXI7Ci0JCQkJdG1wID0gZXh0M19nZXRfZ3JvdXBfZGVz YyAoc2IsIGosICZ0ZW1wX2J1ZmZlcik7Ci0JCQkJaWYgKHRtcCAmJgotCQkJCSAgICBsZTE2X3Rv X2NwdSh0bXAtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KSAmJgotCQkJCSAgICBsZTE2X3RvX2NwdSh0 bXAtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KSA+PQotCQkJCQkJCWF2ZWZyZWVpKSB7Ci0JCQkJCWlm ICghZ2RwIHx8IChsZTE2X3RvX2NwdSh0bXAtPmJnX2ZyZWVfYmxvY2tzX2NvdW50KSA+Ci0JCQkJ CQlsZTE2X3RvX2NwdShnZHAtPmJnX2ZyZWVfYmxvY2tzX2NvdW50KSkpIHsKLQkJCQkJCWkgPSBq OwotCQkJCQkJZ2RwID0gdG1wOwotCQkJCQkJYmgyID0gdGVtcF9idWZmZXI7Ci0JCQkJCX0KLQkJ CQl9Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgewotCQkvKgotCQkgKiBUcnkgdG8gcGxhY2UgdGhlIGlu b2RlIGluIGl0cyBwYXJlbnQgZGlyZWN0b3J5Ci0JCSAqLwotCQlpID0gZGlyLT51LmV4dDNfaS5p X2Jsb2NrX2dyb3VwOwotCQl0bXAgPSBleHQzX2dldF9ncm91cF9kZXNjIChzYiwgaSwgJmJoMik7 Ci0JCWlmICh0bXAgJiYgbGUxNl90b19jcHUodG1wLT5iZ19mcmVlX2lub2Rlc19jb3VudCkpCi0J CQlnZHAgPSB0bXA7CisJCWlmICh0ZXN0X29wdCAoc2IsIE9MREFMTE9DKSkKKwkJCWdyb3VwID0g ZmluZF9ncm91cF9kaXIoc2IsIGRpcik7CiAJCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFVzZSBh IHF1YWRyYXRpYyBoYXNoIHRvIGZpbmQgYSBncm91cCB3aXRoIGEKLQkJCSAqIGZyZWUgaW5vZGUK LQkJCSAqLwotCQkJZm9yIChqID0gMTsgaiA8IHNiLT51LmV4dDNfc2Iuc19ncm91cHNfY291bnQ7 IGogPDw9IDEpIHsKLQkJCQlpICs9IGo7Ci0JCQkJaWYgKGkgPj0gc2ItPnUuZXh0M19zYi5zX2dy b3Vwc19jb3VudCkKLQkJCQkJaSAtPSBzYi0+dS5leHQzX3NiLnNfZ3JvdXBzX2NvdW50OwotCQkJ CXRtcCA9IGV4dDNfZ2V0X2dyb3VwX2Rlc2MgKHNiLCBpLCAmYmgyKTsKLQkJCQlpZiAodG1wICYm Ci0JCQkJICAgIGxlMTZfdG9fY3B1KHRtcC0+YmdfZnJlZV9pbm9kZXNfY291bnQpKSB7Ci0JCQkJ CWdkcCA9IHRtcDsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWlmICghZ2RwKSB7 Ci0JCQkvKgotCQkJICogVGhhdCBmYWlsZWQ6IHRyeSBsaW5lYXIgc2VhcmNoIGZvciBhIGZyZWUg aW5vZGUKLQkJCSAqLwotCQkJaSA9IGRpci0+dS5leHQzX2kuaV9ibG9ja19ncm91cCArIDE7Ci0J CQlmb3IgKGogPSAyOyBqIDwgc2ItPnUuZXh0M19zYi5zX2dyb3Vwc19jb3VudDsgaisrKSB7Ci0J CQkJaWYgKCsraSA+PSBzYi0+dS5leHQzX3NiLnNfZ3JvdXBzX2NvdW50KQotCQkJCQlpID0gMDsK LQkJCQl0bXAgPSBleHQzX2dldF9ncm91cF9kZXNjIChzYiwgaSwgJmJoMik7Ci0JCQkJaWYgKHRt cCAmJgotCQkJCSAgICBsZTE2X3RvX2NwdSh0bXAtPmJnX2ZyZWVfaW5vZGVzX2NvdW50KSkgewot CQkJCQlnZHAgPSB0bXA7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJCX0KLQkJfQotCX0KKwkJCWdy b3VwID0gZmluZF9ncm91cF9vcmxvdihzYiwgZGlyKTsKKwl9IGVsc2UgCisJCWdyb3VwID0gZmlu ZF9ncm91cF9vdGhlcihzYiwgZGlyKTsKIAogCWVyciA9IC1FTk9TUEM7Ci0JaWYgKCFnZHApCisJ aWYgKGdyb3VwID09IC0xKQogCQlnb3RvIG91dDsKIAogCWVyciA9IC1FSU87Ci0JYml0bWFwX25y ID0gbG9hZF9pbm9kZV9iaXRtYXAgKHNiLCBpKTsKKwliaXRtYXBfbnIgPSBsb2FkX2lub2RlX2Jp dG1hcCAoc2IsIGdyb3VwKTsKIAlpZiAoYml0bWFwX25yIDwgMCkKIAkJZ290byBmYWlsOwogCisJ Z2RwID0gZXh0M19nZXRfZ3JvdXBfZGVzYyAoc2IsIGdyb3VwLCAmYmgyKTsKIAliaCA9IHNiLT51 LmV4dDNfc2Iuc19pbm9kZV9iaXRtYXBbYml0bWFwX25yXTsKIAotCWlmICgoaiA9IGV4dDNfZmlu ZF9maXJzdF96ZXJvX2JpdCAoKHVuc2lnbmVkIGxvbmcgKikgYmgtPmJfZGF0YSwKKwlpZiAoKGlu byA9IGV4dDNfZmluZF9maXJzdF96ZXJvX2JpdCAoKHVuc2lnbmVkIGxvbmcgKikgYmgtPmJfZGF0 YSwKIAkJCQkgICAgICBFWFQzX0lOT0RFU19QRVJfR1JPVVAoc2IpKSkgPAogCSAgICBFWFQzX0lO T0RFU19QRVJfR1JPVVAoc2IpKSB7CiAJCUJVRkZFUl9UUkFDRShiaCwgImdldF93cml0ZV9hY2Nl c3MiKTsKIAkJZXJyID0gZXh0M19qb3VybmFsX2dldF93cml0ZV9hY2Nlc3MoaGFuZGxlLCBiaCk7 CiAJCWlmIChlcnIpIGdvdG8gZmFpbDsKIAkJCi0JCWlmIChleHQzX3NldF9iaXQgKGosIGJoLT5i X2RhdGEpKSB7CisJCWlmIChleHQzX3NldF9iaXQgKGlubywgYmgtPmJfZGF0YSkpIHsKIAkJCWV4 dDNfZXJyb3IgKHNiLCAiZXh0M19uZXdfaW5vZGUiLAotCQkJCSAgICAgICJiaXQgYWxyZWFkeSBz ZXQgZm9yIGlub2RlICVkIiwgaik7CisJCQkJICAgICAgImJpdCBhbHJlYWR5IHNldCBmb3IgaW5v ZGUgJWx1IiwgaW5vKTsKIAkJCWdvdG8gcmVwZWF0OwogCQl9CiAJCUJVRkZFUl9UUkFDRShiaCwg ImNhbGwgZXh0M19qb3VybmFsX2RpcnR5X21ldGFkYXRhIik7CkBAIC00MjAsNyArNTczLDcgQEAK IAkJaWYgKGxlMTZfdG9fY3B1KGdkcC0+YmdfZnJlZV9pbm9kZXNfY291bnQpICE9IDApIHsKIAkJ CWV4dDNfZXJyb3IgKHNiLCAiZXh0M19uZXdfaW5vZGUiLAogCQkJCSAgICAiRnJlZSBpbm9kZXMg Y291bnQgY29ycnVwdGVkIGluIGdyb3VwICVkIiwKLQkJCQkgICAgaSk7CisJCQkJICAgIGdyb3Vw KTsKIAkJCS8qIElzIGl0IHJlYWxseSBFTk9TUEM/ICovCiAJCQllcnIgPSAtRU5PU1BDOwogCQkJ aWYgKHNiLT5zX2ZsYWdzICYgTVNfUkRPTkxZKQpAQCAtNDM2LDExICs1ODksMTEgQEAKIAkJfQog CQlnb3RvIHJlcGVhdDsKIAl9Ci0JaiArPSBpICogRVhUM19JTk9ERVNfUEVSX0dST1VQKHNiKSAr IDE7Ci0JaWYgKGogPCBFWFQzX0ZJUlNUX0lOTyhzYikgfHwgaiA+IGxlMzJfdG9fY3B1KGVzLT5z X2lub2Rlc19jb3VudCkpIHsKKwkJaW5vICs9IGdyb3VwICogRVhUM19JTk9ERVNfUEVSX0dST1VQ KHNiKSArIDE7CisJCWlmIChpbm8gPCBFWFQzX0ZJUlNUX0lOTyhzYikgfHwgaW5vID4gbGUzMl90 b19jcHUoZXMtPnNfaW5vZGVzX2NvdW50KSkgewogCQlleHQzX2Vycm9yIChzYiwgImV4dDNfbmV3 X2lub2RlIiwKIAkJCSAgICAicmVzZXJ2ZWQgaW5vZGUgb3IgaW5vZGUgPiBpbm9kZXMgY291bnQg LSAiCi0JCQkgICAgImJsb2NrX2dyb3VwID0gJWQsaW5vZGU9JWQiLCBpLCBqKTsKKwkJCSAgICAi YmxvY2tfZ3JvdXAgPSAlZCxpbm9kZT0lbHUiLCBncm91cCwgaW5vKTsKIAkJZXJyID0gLUVJTzsK IAkJZ290byBmYWlsOwogCX0KQEAgLTQ1MCw5ICs2MDMsMTEgQEAKIAlpZiAoZXJyKSBnb3RvIGZh aWw7CiAJZ2RwLT5iZ19mcmVlX2lub2Rlc19jb3VudCA9CiAJCWNwdV90b19sZTE2KGxlMTZfdG9f Y3B1KGdkcC0+YmdfZnJlZV9pbm9kZXNfY291bnQpIC0gMSk7Ci0JaWYgKFNfSVNESVIobW9kZSkp CisJaWYgKFNfSVNESVIobW9kZSkpIHsKIAkJZ2RwLT5iZ191c2VkX2RpcnNfY291bnQgPQogCQkJ Y3B1X3RvX2xlMTYobGUxNl90b19jcHUoZ2RwLT5iZ191c2VkX2RpcnNfY291bnQpICsgMSk7CisJ CXNiLT51LmV4dDNfc2Iuc19kaXJfY291bnQrKzsKKwl9CiAJQlVGRkVSX1RSQUNFKGJoMiwgImNh bGwgZXh0M19qb3VybmFsX2RpcnR5X21ldGFkYXRhIik7CiAJZXJyID0gZXh0M19qb3VybmFsX2Rp cnR5X21ldGFkYXRhKGhhbmRsZSwgYmgyKTsKIAlpZiAoZXJyKSBnb3RvIGZhaWw7CkBAIC00Nzgs NyArNjMzLDcgQEAKIAkJaW5vZGUtPmlfZ2lkID0gY3VycmVudC0+ZnNnaWQ7CiAJaW5vZGUtPmlf bW9kZSA9IG1vZGU7CiAKLQlpbm9kZS0+aV9pbm8gPSBqOworCWlub2RlLT5pX2lubyA9IGlubzsK IAkvKiBUaGlzIGlzIHRoZSBvcHRpbWFsIElPIHNpemUgKGZvciBzdGF0KSwgbm90IHRoZSBmcyBi bG9jayBzaXplICovCiAJaW5vZGUtPmlfYmxrc2l6ZSA9IFBBR0VfU0laRTsKIAlpbm9kZS0+aV9i bG9ja3MgPSAwOwpAQCAtNDk4LDcgKzY1Myw3IEBACiAjaWZkZWYgRVhUM19QUkVBTExPQ0FURQog CWlub2RlLT51LmV4dDNfaS5pX3ByZWFsbG9jX2NvdW50ID0gMDsKICNlbmRpZgotCWlub2RlLT51 LmV4dDNfaS5pX2Jsb2NrX2dyb3VwID0gaTsKKwlpbm9kZS0+dS5leHQzX2kuaV9ibG9ja19ncm91 cCA9IGdyb3VwOwogCQogCWlmIChpbm9kZS0+dS5leHQzX2kuaV9mbGFncyAmIEVYVDNfU1lOQ19G TCkKIAkJaW5vZGUtPmlfZmxhZ3MgfD0gU19TWU5DOwpAQCAtNjIwLDYgKzc3NSwyMSBAQAogI2Vs c2UKIAlyZXR1cm4gbGUzMl90b19jcHUoc2ItPnUuZXh0M19zYi5zX2VzLT5zX2ZyZWVfaW5vZGVz X2NvdW50KTsKICNlbmRpZgorfQorCisvKiBDYWxsZWQgYXQgbW91bnQtdGltZSwgc3VwZXItYmxv Y2sgaXMgbG9ja2VkICovCit1bnNpZ25lZCBsb25nIGV4dDNfY291bnRfZGlycyAoc3RydWN0IHN1 cGVyX2Jsb2NrICogc2IpCit7CisgICB1bnNpZ25lZCBsb25nIGNvdW50ID0gMDsKKyAgIGludCBp OworCisgICBmb3IgKGkgPSAwOyBpIDwgRVhUM19TQihzYiktPnNfZ3JvdXBzX2NvdW50OyBpKysp IHsKKyAgICAgICBzdHJ1Y3QgZXh0M19ncm91cF9kZXNjICpnZHAgPSBleHQzX2dldF9ncm91cF9k ZXNjIChzYiwgaSwgTlVMTCk7CisgICAgICAgaWYgKCFnZHApCisgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgIGNvdW50ICs9IGxlMTZfdG9fY3B1KGdkcC0+YmdfdXNlZF9kaXJzX2NvdW50KTsK KyAgIH0KKyAgIHJldHVybiBjb3VudDsKIH0KIAogI2lmZGVmIENPTkZJR19FWFQzX0NIRUNLCmRp ZmYgLXJ1IC4vZnMvZXh0My9pbm9kZS5jIC9ob21lL2h1Z2FuZy9kZXZlL2N2cy9sb2NhbC9rZXJu ZWwvZXh0M18yNC9mcy9leHQzL2lub2RlLmMKLS0tIC4vZnMvZXh0My9pbm9kZS5jCU1vbiBNYXIg MjQgMjA6Mjc6NTggMjAwMworKysgL2hvbWUvaHVnYW5nL2RldmUvY3ZzL2xvY2FsL2tlcm5lbC9l eHQzXzI0L2ZzL2V4dDMvaW5vZGUuYwlNb24gTWFyIDI0IDE4OjM0OjMxIDIwMDMKQEAgLTE2OSw3 ICsxNjksNiBAQAogCSAgICBpbm9kZS0+aV9pbm8gPT0gRVhUM19BQ0xfREFUQV9JTk8pCiAJCWdv dG8gbm9fZGVsZXRlOwogCi0JbG9ja19rZXJuZWwoKTsKIAloYW5kbGUgPSBzdGFydF90cmFuc2Fj dGlvbihpbm9kZSk7CiAJaWYgKElTX0VSUihoYW5kbGUpKSB7CiAJCS8qIElmIHdlJ3JlIGdvaW5n IHRvIHNraXAgdGhlIG5vcm1hbCBjbGVhbnVwLCB3ZSBzdGlsbApAQCAtMTc4LDcgKzE3Nyw2IEBA CiAJCWV4dDNfb3JwaGFuX2RlbChOVUxMLCBpbm9kZSk7CiAKIAkJZXh0M19zdGRfZXJyb3IoaW5v ZGUtPmlfc2IsIFBUUl9FUlIoaGFuZGxlKSk7Ci0JCXVubG9ja19rZXJuZWwoKTsKIAkJZ290byBu b19kZWxldGU7CiAJfQogCQpAQCAtMjExLDcgKzIwOSw2IEBACiAJZWxzZQogCQlleHQzX2ZyZWVf aW5vZGUoaGFuZGxlLCBpbm9kZSk7CiAJZXh0M19qb3VybmFsX3N0b3AoaGFuZGxlLCBpbm9kZSk7 Ci0JdW5sb2NrX2tlcm5lbCgpOwogCXJldHVybjsKIG5vX2RlbGV0ZToKIAljbGVhcl9pbm9kZShp bm9kZSk7CS8qIFdlIG11c3QgZ3VhcmFudGVlIGNsZWFyaW5nIG9mIGlub2RlLi4uICovCkBAIC0y MjAsNyArMjE3LDYgQEAKIHZvaWQgZXh0M19kaXNjYXJkX3ByZWFsbG9jIChzdHJ1Y3QgaW5vZGUg KiBpbm9kZSkKIHsKICNpZmRlZiBFWFQzX1BSRUFMTE9DQVRFCi0JbG9ja19rZXJuZWwoKTsKIAkv KiBXcml0ZXI6IC0+aV9wcmVhbGxvYyogKi8KIAlpZiAoaW5vZGUtPnUuZXh0M19pLmlfcHJlYWxs b2NfY291bnQpIHsKIAkJdW5zaWduZWQgc2hvcnQgdG90YWwgPSBpbm9kZS0+dS5leHQzX2kuaV9w cmVhbGxvY19jb3VudDsKQEAgLTIzMCw3ICsyMjYsNiBAQAogCQkvKiBXcml0ZXI6IGVuZCAqLwog CQlleHQzX2ZyZWVfYmxvY2tzIChpbm9kZSwgYmxvY2ssIHRvdGFsKTsKIAl9Ci0JdW5sb2NrX2tl cm5lbCgpOwogI2VuZGlmCiB9CiAKQEAgLTczNSw3ICs3MzAsNiBAQAogCWlmIChkZXB0aCA9PSAw KQogCQlnb3RvIG91dDsKIAotCWxvY2tfa2VybmVsKCk7CiByZXJlYWQ6CiAJcGFydGlhbCA9IGV4 dDNfZ2V0X2JyYW5jaChpbm9kZSwgZGVwdGgsIG9mZnNldHMsIGNoYWluLCAmZXJyKTsKIApAQCAt NzYwLDcgKzc1NCw2IEBACiAJCQlwYXJ0aWFsLS07CiAJCX0KIAkJQlVGRkVSX1RSQUNFKGJoX3Jl c3VsdCwgInJldHVybmVkIik7Ci0JCXVubG9ja19rZXJuZWwoKTsKIG91dDoKIAkJcmV0dXJuIGVy cjsKIAl9CkBAIC04NjcsNyArODYwLDYgQEAKIAkJCSAgIEZvciBub3csIHJlZ3VsYXIgZmlsZSB3 cml0ZXMgdXNlCiAJCQkgICBleHQzX2dldF9ibG9jayBpbnN0ZWFkLCBzbyBpdCdzIG5vdCBhCiAJ CQkgICBwcm9ibGVtLiAqLwotCQkJbG9ja19rZXJuZWwoKTsKIAkJCWxvY2tfYnVmZmVyKGJoKTsK IAkJCUJVRkZFUl9UUkFDRShiaCwgImNhbGwgZ2V0X2NyZWF0ZV9hY2Nlc3MiKTsKIAkJCWZhdGFs ID0gZXh0M19qb3VybmFsX2dldF9jcmVhdGVfYWNjZXNzKGhhbmRsZSwgYmgpOwpAQCAtODgwLDcg Kzg3Miw2IEBACiAJCQlCVUZGRVJfVFJBQ0UoYmgsICJjYWxsIGV4dDNfam91cm5hbF9kaXJ0eV9t ZXRhZGF0YSIpOwogCQkJZXJyID0gZXh0M19qb3VybmFsX2RpcnR5X21ldGFkYXRhKGhhbmRsZSwg YmgpOwogCQkJaWYgKCFmYXRhbCkgZmF0YWwgPSBlcnI7Ci0JCQl1bmxvY2tfa2VybmVsKCk7CiAJ CX0gZWxzZSB7CiAJCQlCVUZGRVJfVFJBQ0UoYmgsICJub3QgYSBuZXcgYnVmZmVyIik7CiAJCX0K QEAgLTEwMTksMTUgKzEwMTAsMTIgQEAKIAlpbnQgcmV0LCBuZWVkZWRfYmxvY2tzID0gZXh0M193 cml0ZXBhZ2VfdHJhbnNfYmxvY2tzKGlub2RlKTsKIAloYW5kbGVfdCAqaGFuZGxlOwogCi0JbG9j a19rZXJuZWwoKTsKIAloYW5kbGUgPSBleHQzX2pvdXJuYWxfc3RhcnQoaW5vZGUsIG5lZWRlZF9i bG9ja3MpOwogCWlmIChJU19FUlIoaGFuZGxlKSkgewogCQlyZXQgPSBQVFJfRVJSKGhhbmRsZSk7 CiAJCWdvdG8gb3V0OwogCX0KLQl1bmxvY2tfa2VybmVsKCk7CiAJcmV0ID0gYmxvY2tfcHJlcGFy ZV93cml0ZShwYWdlLCBmcm9tLCB0bywgZXh0M19nZXRfYmxvY2spOwotCWxvY2tfa2VybmVsKCk7 CiAJaWYgKHJldCAhPSAwKQogCQlnb3RvIHByZXBhcmVfd3JpdGVfZmFpbGVkOwogCkBAIC0xMDQ5 LDcgKzEwMzcsNiBAQAogCWlmIChyZXQpCiAJCWV4dDNfam91cm5hbF9zdG9wKGhhbmRsZSwgaW5v ZGUpOwogb3V0OgotCXVubG9ja19rZXJuZWwoKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMTAz LDcgKzEwOTAsNiBAQAogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0 OwogCWludCByZXQgPSAwLCByZXQyOwogCi0JbG9ja19rZXJuZWwoKTsKIAlpZiAoZXh0M19zaG91 bGRfam91cm5hbF9kYXRhKGlub2RlKSkgewogCQkvKgogCQkgKiBIZXJlIHdlIGR1cGxpY2F0ZSB0 aGUgZ2VuZXJpY19jb21taXRfd3JpdGUoKSBmdW5jdGlvbmFsaXR5CkBAIC0xMTQ1LDcgKzExMzEs NiBAQAogCQkJcmV0ID0gcmV0MjsKIAl9CiAJcmV0MiA9IGV4dDNfam91cm5hbF9zdG9wKGhhbmRs ZSwgaW5vZGUpOwotCXVubG9ja19rZXJuZWwoKTsKIAlpZiAoIXJldCkKIAkJcmV0ID0gcmV0MjsK IAlyZXR1cm4gcmV0OwpAQCAtMTI3NSw3ICsxMjYwLDYgQEAKIAkgKiBmb3IgYSBkaWZmZXJlbnQg ZmlsZXN5c3RlbS4gIE9uZSAqY291bGQqIGxvb2sgZm9yIGEKIAkgKiBuZXN0ZWQgdHJhbnNhY3Rp b24gb3Bwb3J0dW5pdHkuCiAJICovCi0JbG9ja19rZXJuZWwoKTsKIAlpZiAoZXh0M19qb3VybmFs X2N1cnJlbnRfaGFuZGxlKCkpCiAJCWdvdG8gb3V0X2ZhaWw7CiAKQEAgLTEyOTMsOCArMTI3Nyw2 IEBACiAJb3JkZXJfZGF0YSA9IGV4dDNfc2hvdWxkX29yZGVyX2RhdGEoaW5vZGUpIHx8CiAJCQll eHQzX3Nob3VsZF9qb3VybmFsX2RhdGEoaW5vZGUpOwogCi0JdW5sb2NrX2tlcm5lbCgpOwotCiAJ cGFnZV9idWZmZXJzID0gTlVMTDsJLyogUHVyZWx5IHRvIHByZXZlbnQgY29tcGlsZXIgd2Fybmlu ZyAqLwogCiAJLyogYmdldCgpIGFsbCB0aGUgYnVmZmVycyAqLwpAQCAtMTMxNyw3ICsxMjk5LDYg QEAKIAkgKi8KIAogCWhhbmRsZSA9IGV4dDNfam91cm5hbF9jdXJyZW50X2hhbmRsZSgpOwotCWxv Y2tfa2VybmVsKCk7CiAKIAkvKiBBbmQgYXR0YWNoIHRoZW0gdG8gdGhlIGN1cnJlbnQgdHJhbnNh Y3Rpb24gKi8KIAlpZiAob3JkZXJfZGF0YSkgewpAQCAtMTMzMCwxMiArMTMxMSwxMCBAQAogCWVy ciA9IGV4dDNfam91cm5hbF9zdG9wKGhhbmRsZSwgaW5vZGUpOwogCWlmICghcmV0KQogCQlyZXQg PSBlcnI7Ci0JdW5sb2NrX2tlcm5lbCgpOwogCXJldHVybiByZXQ7CiAKIG91dF9mYWlsOgogCQot CXVubG9ja19rZXJuZWwoKTsKIAlTZXRQYWdlRGlydHkocGFnZSk7CiAJVW5sb2NrUGFnZShwYWdl KTsKIAlyZXR1cm4gcmV0OwpAQCAtMjU1Miw3ICsyNTMxLDYgQEAKIAloYW5kbGVfdCAqY3VycmVu dF9oYW5kbGUgPSBleHQzX2pvdXJuYWxfY3VycmVudF9oYW5kbGUoKTsKIAloYW5kbGVfdCAqaGFu ZGxlOwogCi0JbG9ja19rZXJuZWwoKTsKIAloYW5kbGUgPSBleHQzX2pvdXJuYWxfc3RhcnQoaW5v ZGUsIDEpOwogCWlmIChJU19FUlIoaGFuZGxlKSkKIAkJZ290byBvdXQ7CkBAIC0yNTY4LDcgKzI1 NDYsNyBAQAogCX0KIAlleHQzX2pvdXJuYWxfc3RvcChoYW5kbGUsIGlub2RlKTsKIG91dDoKLQl1 bmxvY2tfa2VybmVsKCk7CisJcmV0dXJuOwogfQogCiAjaWZkZWYgQUtQTQpkaWZmIC1ydSAuL2Zz L2V4dDMvc3VwZXIuYyAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNfMjQv ZnMvZXh0My9zdXBlci5jCi0tLSAuL2ZzL2V4dDMvc3VwZXIuYwlNb24gTWFyIDI0IDIwOjI3OjU4 IDIwMDMKKysrIC9ob21lL2h1Z2FuZy9kZXZlL2N2cy9sb2NhbC9rZXJuZWwvZXh0M18yNC9mcy9l eHQzL3N1cGVyLmMJTW9uIE1hciAyNCAxODozMzowOCAyMDAzCkBAIC00MTYsNiArNDE2LDcgQEAK IAlmb3IgKGkgPSAwOyBpIDwgc2JpLT5zX2dkYl9jb3VudDsgaSsrKQogCQlicmVsc2Uoc2JpLT5z X2dyb3VwX2Rlc2NbaV0pOwogCWtmcmVlKHNiaS0+c19ncm91cF9kZXNjKTsKKwlrZnJlZShzYmkt PnNfZGVidHMpOwogCWZvciAoaSA9IDA7IGkgPCBFWFQzX01BWF9HUk9VUF9MT0FERUQ7IGkrKykK IAkJYnJlbHNlKHNiaS0+c19pbm9kZV9iaXRtYXBbaV0pOwogCWZvciAoaSA9IDA7IGkgPCBFWFQz X01BWF9HUk9VUF9MT0FERUQ7IGkrKykKQEAgLTU4Miw2ICs1ODMsMTAgQEAKIAkJCWlmICh3YW50 X251bWVyaWModmFsdWUsICJzYiIsIHNiX2Jsb2NrKSkKIAkJCQlyZXR1cm4gMDsKIAkJfQorCQll bHNlIGlmICghc3RyY21wICh0aGlzX2NoYXIsICJvbGRhbGxvYyIpKQorCQkJc2V0X29wdCAoc2Jp LT5zX21vdW50X29wdCwgT0xEQUxMT0MpOworCQllbHNlIGlmICghc3RyY21wICh0aGlzX2NoYXIs ICJvcmxvdiIpKQorCQkJY2xlYXJfb3B0IChzYmktPnNfbW91bnRfb3B0LCBPTERBTExPQyk7CiAj aWZkZWYgQ09ORklHX0pCRF9ERUJVRwogCQllbHNlIGlmICghc3RyY21wICh0aGlzX2NoYXIsICJy by1hZnRlciIpKSB7CiAJCQl1bnNpZ25lZCBsb25nIHY7CkBAIC0xMDk4LDYgKzExMDMsMTMgQEAK IAkJcHJpbnRrIChLRVJOX0VSUiAiRVhUMy1mczogbm90IGVub3VnaCBtZW1vcnlcbiIpOwogCQln b3RvIGZhaWxlZF9tb3VudDsKIAl9CisJc2JpLT5zX2RlYnRzID0ga21hbGxvYyhzYmktPnNfZ3Jv dXBzX2NvdW50ICogc2l6ZW9mKCpzYmktPnNfZGVidHMpLAorCQkJR0ZQX0tFUk5FTCk7CisJaWYg KCFzYmktPnNfZGVidHMpIHsKKwkJcHJpbnRrICgiRVhUMy1mczogbm90IGVub3VnaCBtZW1vcnlc biIpOworCQlnb3RvIGZhaWxlZF9tb3VudDI7CisJfQorCW1lbXNldChzYmktPnNfZGVidHMsIDAs IHNiaS0+c19ncm91cHNfY291bnQgKiBzaXplb2YoKnNiaS0+c19kZWJ0cykpOwogCWZvciAoaSA9 IDA7IGkgPCBkYl9jb3VudDsgaSsrKSB7CiAJCXNiaS0+c19ncm91cF9kZXNjW2ldID0gc2JfYnJl YWQoc2IsIGxvZ2ljX3NiX2Jsb2NrICsgaSArIDEpOwogCQlpZiAoIXNiaS0+c19ncm91cF9kZXNj W2ldKSB7CkBAIC0xMTIwLDYgKzExMzIsNyBAQAogCXNiaS0+c19sb2FkZWRfaW5vZGVfYml0bWFw cyA9IDA7CiAJc2JpLT5zX2xvYWRlZF9ibG9ja19iaXRtYXBzID0gMDsKIAlzYmktPnNfZ2RiX2Nv dW50ID0gZGJfY291bnQ7CisJc2JpLT5zX2Rpcl9jb3VudCA9IGV4dDNfY291bnRfZGlycyhzYik7 CiAJZ2V0X3JhbmRvbV9ieXRlcygmc2JpLT5zX25leHRfZ2VuZXJhdGlvbiwgc2l6ZW9mKHUzMikp OwogCS8qCiAJICogc2V0IHVwIGVub3VnaCBzbyB0aGF0IGl0IGNhbiByZWFkIGFuIGlub2RlCkBA IC0xMjIzLDYgKzEyMzYsOCBAQAogZmFpbGVkX21vdW50MzoKIAlqb3VybmFsX2Rlc3Ryb3koc2Jp LT5zX2pvdXJuYWwpOwogZmFpbGVkX21vdW50MjoKKwlpZiAoc2JpLT5zX2RlYnRzKQorCQlrZnJl ZShzYmktPnNfZGVidHMpOwogCWZvciAoaSA9IDA7IGkgPCBkYl9jb3VudDsgaSsrKQogCQlicmVs c2Uoc2JpLT5zX2dyb3VwX2Rlc2NbaV0pOwogCWtmcmVlKHNiaS0+c19ncm91cF9kZXNjKTsKQEAg LTE1NjIsOSArMTU3Nyw3IEBACiAKIAlqb3VybmFsID0gRVhUM19TQihzYiktPnNfam91cm5hbDsK IAlzYi0+c19kaXJ0ID0gMDsKLQlsb2NrX2tlcm5lbCgpOwkvKiBpbXBvcnRhbnQ6IGxvY2sgZG93 biBqX3J1bm5pbmdfdHJhbnNhY3Rpb24gKi8KIAlyZXQgPSBleHQzX2pvdXJuYWxfZm9yY2VfY29t bWl0KGpvdXJuYWwpOwotCXVubG9ja19rZXJuZWwoKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0x NjA1LDcgKzE2MTgsNiBAQAogewogCXNiLT5zX2RpcnQgPSAwOwogCi0JbG9ja19rZXJuZWwoKTsJ CS8qIDIuNC41IGZvcmdvdCB0byBkbyB0aGlzIGZvciB1cyAqLwogCWlmICghKHNiLT5zX2ZsYWdz ICYgTVNfUkRPTkxZKSkgewogCQlqb3VybmFsX3QgKmpvdXJuYWwgPSBFWFQzX1NCKHNiKS0+c19q b3VybmFsOwogCkBAIC0xNjE5LDcgKzE2MzEsNiBAQAogCQlFWFQzX0NMRUFSX0lOQ09NUEFUX0ZF QVRVUkUoc2IsIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9SRUNPVkVSKTsKIAkJZXh0M19jb21taXRf c3VwZXIoc2IsIEVYVDNfU0Ioc2IpLT5zX2VzLCAxKTsKIAl9Ci0JdW5sb2NrX2tlcm5lbCgpOwog fQogCiAvKgpAQCAtMTYyOSwxNCArMTY0MCwxMiBAQAogdm9pZCBleHQzX3VubG9ja2ZzKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IpCiB7CiAJaWYgKCEoc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpKSB7 Ci0JCWxvY2tfa2VybmVsKCk7CiAJCWxvY2tfc3VwZXIoc2IpOwogCQkvKiBSZXNlciB0aGUgbmVl ZHNfcmVjb3ZlcnkgZmxhZyBiZWZvcmUgdGhlIGZzIGlzIHVubG9ja2VkLiAqLwogCQlFWFQzX1NF VF9JTkNPTVBBVF9GRUFUVVJFKHNiLCBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfUkVDT1ZFUik7CiAJ CWV4dDNfY29tbWl0X3N1cGVyKHNiLCBFWFQzX1NCKHNiKS0+c19lcywgMSk7CiAJCXVubG9ja19z dXBlcihzYik7CiAJCWpvdXJuYWxfdW5sb2NrX3VwZGF0ZXMoRVhUM19TQihzYiktPnNfam91cm5h bCk7Ci0JCXVubG9ja19rZXJuZWwoKTsKIAl9CiB9CiAKZGlmZiAtcnUgLi9mcy9qYmQvY29tbWl0 LmMgL2hvbWUvaHVnYW5nL2RldmUvY3ZzL2xvY2FsL2tlcm5lbC9leHQzXzI0L2ZzL2piZC9jb21t aXQuYwotLS0gLi9mcy9qYmQvY29tbWl0LmMJTW9uIE1hciAyNCAyMDoyODowMCAyMDAzCisrKyAv aG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNfMjQvZnMvamJkL2NvbW1pdC5j CU1vbiBNYXIgMjQgMTg6NDk6MzEgMjAwMwpAQCAtMTksNiArMTksOCBAQAogI2luY2x1ZGUgPGxp bnV4L2Vycm5vLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2xv Y2tzLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+ CiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KIAogZXh0ZXJuIHNwaW5sb2NrX3Qgam91cm5h bF9kYXRhbGlzdF9sb2NrOwpAQCAtMzQsNiArMzYsNDkgQEAKIH0KIAogLyoKKyAqIFdoZW4gYW4g ZXh0My1vcmRlcmVkIGZpbGUgaXMgdHJ1bmNhdGVkLCBpdCBpcyBwb3NzaWJsZSB0aGF0IG1hbnkg cGFnZXMgYXJlCisgKiBub3Qgc3VjZXNzZnVsbHkgZnJlZWQsIGJlY2F1c2UgdGhleSBhcmUgYXR0 YWNoZWQgdG8gYSBjb21taXR0aW5nIHRyYW5zYWN0aW9uLgorICogQWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGNvbW1pdHMsIHRoZXNlIHBhZ2VzIGFyZSBsZWZ0IG9uIHRoZSBMUlUsIHdpdGggbm8KKyAq IC0+bWFwcGluZywgYW5kIHdpdGggYXR0YWNoZWQgYnVmZmVycy4gIFRoZXNlIHBhZ2VzIGFyZSB0 cml2aWFsbHkgcmVjbGFpbWFibGUKKyAqIGJ5IHRoZSBWTSwgYnV0IHRoZWlyIGFwcGFyZW50IGFi c2VuY2UgdXBzZXRzIHRoZSBWTSBhY2NvdW50aW5nLCBhbmQgaXQgbWFrZXMKKyAqIHRoZSBudW1i ZXJzIGluIC9wcm9jL21lbWluZm8gbG9vayBvZGQuCisgKgorICogU28gaGVyZSwgd2UgaGF2ZSBh IGJ1ZmZlciB3aGljaCBoYXMganVzdCBjb21lIG9mZiB0aGUgZm9yZ2V0IGxpc3QuICBMb29rIHRv CisgKiBzZWUgaWYgd2UgY2FuIHN0cmlwIGFsbCBidWZmZXJzIGZyb20gdGhlIGJhY2tpbmcgcGFn ZS4KKyAqCisgKiBDYWxsZWQgdW5kZXIgbG9ja19qb3VybmFsKCksIGFuZCBwb3NzaWJseSB1bmRl ciBqb3VybmFsX2RhdGFsaXN0X2xvY2suICBUaGUKKyAqIGNhbGxlciBwcm92aWRlZCB1cyB3aXRo IGEgcmVmIGFnYWluc3QgdGhlIGJ1ZmZlciwgYW5kIHdlIGRyb3AgdGhhdCBoZXJlLgorICovCitz dGF0aWMgdm9pZCByZWxlYXNlX2J1ZmZlcl9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCit7 CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisKKwlpZiAoYnVmZmVyX2RpcnR5KGJoKSkKKwkJZ290byBu b3BlOworCWlmIChhdG9taWNfcmVhZCgmYmgtPmJfY291bnQpICE9IDEpCisJCWdvdG8gbm9wZTsK KwlwYWdlID0gYmgtPmJfcGFnZTsKKwlpZiAoIXBhZ2UpCisJCWdvdG8gbm9wZTsKKwlpZiAocGFn ZS0+bWFwcGluZykKKwkJZ290byBub3BlOworCisJLyogT0ssIGl0J3MgYSB0cnVuY2F0ZWQgcGFn ZSAqLworCWlmIChUcnlMb2NrUGFnZShwYWdlKSkKKwkJZ290byBub3BlOworCisJcGFnZV9jYWNo ZV9nZXQocGFnZSk7CisJX19icmVsc2UoYmgpOworCXRyeV90b19mcmVlX2J1ZmZlcnMocGFnZSwg R0ZQX05PRlMpOworCXVubG9ja19wYWdlKHBhZ2UpOworCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdl KTsKKwlyZXR1cm47CisKK25vcGU6CisJX19icmVsc2UoYmgpOworfQorCisvKgogICogam91cm5h bF9jb21taXRfdHJhbnNhY3Rpb24KICAqCiAgKiBUaGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgY29t bWl0dGluZyBhIHRyYW5zYWN0aW9uIHRvIHRoZSBsb2cuICBUaGlzCkBAIC0yMTEsNyArMjU2LDcg QEAKIAkJCQlqaC0+Yl90cmFuc2FjdGlvbiA9IE5VTEw7CiAJCQkJX19qb3VybmFsX3JlbW92ZV9q b3VybmFsX2hlYWQoYmgpOwogCQkJCXJlZmlsZV9idWZmZXIoYmgpOwotCQkJCV9fYnJlbHNlKGJo KTsKKwkJCQlyZWxlYXNlX2J1ZmZlcl9wYWdlKGJoKTsKIAkJCX0KIAkJfQogCQlpZiAoYnVmcyA9 PSBBUlJBWV9TSVpFKHdidWYpKSB7CkBAIC03MDksNyArNzU0LDkgQEAKIAkJCV9fam91cm5hbF91 bmZpbGVfYnVmZmVyKGpoKTsKIAkJCWpoLT5iX3RyYW5zYWN0aW9uID0gMDsKIAkJCV9fam91cm5h bF9yZW1vdmVfam91cm5hbF9oZWFkKGJoKTsKLQkJCV9fYnJlbHNlKGJoKTsKKwkJCXNwaW5fdW5s b2NrKCZqb3VybmFsX2RhdGFsaXN0X2xvY2spOworCQkJcmVsZWFzZV9idWZmZXJfcGFnZShiaCk7 CisJCQljb250aW51ZTsKIAkJfQogCQlzcGluX3VubG9jaygmam91cm5hbF9kYXRhbGlzdF9sb2Nr KTsKIAl9CmRpZmYgLXJ1IC4vZnMvamJkL2pvdXJuYWwuYyAvaG9tZS9odWdhbmcvZGV2ZS9jdnMv bG9jYWwva2VybmVsL2V4dDNfMjQvZnMvamJkL2pvdXJuYWwuYwotLS0gLi9mcy9qYmQvam91cm5h bC5jCU1vbiBNYXIgMjQgMjA6Mjg6MDAgMjAwMworKysgL2hvbWUvaHVnYW5nL2RldmUvY3ZzL2xv Y2FsL2tlcm5lbC9leHQzXzI0L2ZzL2piZC9qb3VybmFsLmMJTW9uIE1hciAyNCAxODozMzowOSAy MDAzCkBAIC01MzksOSArNTM5LDExIEBACiAgKi8KIHRpZF90IGxvZ19zdGFydF9jb21taXQgKGpv dXJuYWxfdCAqam91cm5hbCwgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24pCiB7Ci0JdGlkX3Qg dGFyZ2V0ID0gam91cm5hbC0+al9jb21taXRfcmVxdWVzdDsKKwl0aWRfdCB0YXJnZXQ7CiAKIAls b2NrX2tlcm5lbCgpOyAvKiBQcm90ZWN0IGpvdXJuYWwtPmpfcnVubmluZ190cmFuc2FjdGlvbiAq LworCisJdGFyZ2V0ID0gam91cm5hbC0+al9jb21taXRfcmVxdWVzdDsKIAkKIAkvKgogCSAqIEEg TlVMTCB0cmFuc2FjdGlvbiBhc2tzIHVzIHRvIGNvbW1pdCB0aGUgY3VycmVudGx5IHJ1bm5pbmcK QEAgLTk0MywxMCArOTQ1LDEyIEBACiAJICogYW55IGZ1dHVyZSBjb21taXQgd2lsbCBoYXZlIHRv IGJlIGNhcmVmdWwgdG8gdXBkYXRlIHRoZQogCSAqIHN1cGVyYmxvY2sgYWdhaW4gdG8gcmUtcmVj b3JkIHRoZSB0cnVlIHN0YXJ0IG9mIHRoZSBsb2cuICovCiAKKwlsb2NrX2tlcm5lbCgpOwogCWlm IChzYi0+c19zdGFydCkKIAkJam91cm5hbC0+al9mbGFncyAmPSB+SkZTX0ZMVVNIRUQ7CiAJZWxz ZQogCQlqb3VybmFsLT5qX2ZsYWdzIHw9IEpGU19GTFVTSEVEOworCXVubG9ja19rZXJuZWwoKTsK IH0KIAogCkBAIC0xNDIyLDEwICsxNDI2LDEyIEBACiAJcHJpbnRrIChLRVJOX0VSUiAiQWJvcnRp bmcgam91cm5hbCBvbiBkZXZpY2UgJXMuXG4iLAogCQlqb3VybmFsX2Rldl9uYW1lKGpvdXJuYWwp KTsKIAorCWxvY2tfa2VybmVsKCk7CiAJam91cm5hbC0+al9mbGFncyB8PSBKRlNfQUJPUlQ7CiAJ dHJhbnNhY3Rpb24gPSBqb3VybmFsLT5qX3J1bm5pbmdfdHJhbnNhY3Rpb247CiAJaWYgKHRyYW5z YWN0aW9uKQogCQlsb2dfc3RhcnRfY29tbWl0KGpvdXJuYWwsIHRyYW5zYWN0aW9uKTsKKwl1bmxv Y2tfa2VybmVsKCk7CiB9CiAKIC8qIFNvZnQgYWJvcnQ6IHJlY29yZCB0aGUgYWJvcnQgZXJyb3Ig c3RhdHVzIGluIHRoZSBqb3VybmFsIHN1cGVyYmxvY2ssCkBAIC0xNDM1LDYgKzE0NDEsNyBAQAog CWlmIChqb3VybmFsLT5qX2ZsYWdzICYgSkZTX0FCT1JUKQogCQlyZXR1cm47CiAKKwlsb2NrX2tl cm5lbCgpOwogCWlmICgham91cm5hbC0+al9lcnJubykKIAkJam91cm5hbC0+al9lcnJubyA9IGVy cm5vOwogCkBAIC0xNDQyLDYgKzE0NDksNyBAQAogCiAJaWYgKGVycm5vKQogCQlqb3VybmFsX3Vw ZGF0ZV9zdXBlcmJsb2NrKGpvdXJuYWwsIDEpOworCXVubG9ja19rZXJuZWwoKTsKIH0KIAogLyog RnVsbCB2ZXJzaW9uIGZvciBleHRlcm5hbCB1c2UgKi8KQEAgLTE0NTcsMTAgKzE0NjUsMTIgQEAK IAlpbnQgZXJyOwogCiAJbG9ja19qb3VybmFsKGpvdXJuYWwpOworCWxvY2tfa2VybmVsKCk7CiAJ aWYgKGpvdXJuYWwtPmpfZmxhZ3MgJiBKRlNfQUJPUlQpCiAJCWVyciA9IC1FUk9GUzsKIAllbHNl CiAJCWVyciA9IGpvdXJuYWwtPmpfZXJybm87CisJdW5sb2NrX2tlcm5lbCgpOwogCXVubG9ja19q b3VybmFsKGpvdXJuYWwpOwogCXJldHVybiBlcnI7CiB9CkBAIC0xNDcwLDEwICsxNDgwLDEyIEBA CiAJaW50IGVyciA9IDA7CiAKIAlsb2NrX2pvdXJuYWwoam91cm5hbCk7CisJbG9ja19rZXJuZWwo KTsKIAlpZiAoam91cm5hbC0+al9mbGFncyAmIEpGU19BQk9SVCkKIAkJZXJyID0gLUVST0ZTOwog CWVsc2UKIAkJam91cm5hbC0+al9lcnJubyA9IDA7CisJdW5sb2NrX2tlcm5lbCgpOwogCXVubG9j a19qb3VybmFsKGpvdXJuYWwpOwogCXJldHVybiBlcnI7CiB9CkBAIC0xNDgxLDggKzE0OTMsMTAg QEAKIHZvaWQgam91cm5hbF9hY2tfZXJyIChqb3VybmFsX3QgKmpvdXJuYWwpCiB7CiAJbG9ja19q b3VybmFsKGpvdXJuYWwpOworCWxvY2tfa2VybmVsKCk7CiAJaWYgKGpvdXJuYWwtPmpfZXJybm8p CiAJCWpvdXJuYWwtPmpfZmxhZ3MgfD0gSkZTX0FDS19FUlI7CisJdW5sb2NrX2tlcm5lbCgpOwog CXVubG9ja19qb3VybmFsKGpvdXJuYWwpOwogfQogCkBAIC0xODY3LDYgKzE4ODEsMjkgQEAKIAog I2VuZGlmCiAKK2ttZW1fY2FjaGVfdCAqamJkX2hhbmRsZV9jYWNoZTsKKworc3RhdGljIGludCBf X2luaXQgam91cm5hbF9pbml0X2hhbmRsZV9jYWNoZSh2b2lkKQoreworCWpiZF9oYW5kbGVfY2Fj aGUgPSBrbWVtX2NhY2hlX2NyZWF0ZSgiam91cm5hbF9oYW5kbGUiLAorCQkJCXNpemVvZihoYW5k bGVfdCksCisJCQkJMCwJCS8qIG9mZnNldCAqLworCQkJCTAsCQkvKiBmbGFncyAqLworCQkJCU5V TEwsCQkvKiBjdG9yICovCisJCQkJTlVMTCk7CQkvKiBkdG9yICovCisJaWYgKGpiZF9oYW5kbGVf Y2FjaGUgPT0gTlVMTCkgeworCQlwcmludGsoS0VSTl9FTUVSRyAiSkJEOiBmYWlsZWQgdG8gY3Jl YXRlIGhhbmRsZSBjYWNoZVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgam91cm5hbF9kZXN0cm95X2hhbmRsZV9jYWNoZSh2b2lkKQorewor CWlmIChqYmRfaGFuZGxlX2NhY2hlKQorCQlrbWVtX2NhY2hlX2Rlc3Ryb3koamJkX2hhbmRsZV9j YWNoZSk7Cit9CisKIC8qCiAgKiBNb2R1bGUgc3RhcnR1cCBhbmQgc2h1dGRvd24KICAqLwpAQCAt MTg3OCw2ICsxOTE1LDggQEAKIAlyZXQgPSBqb3VybmFsX2luaXRfcmV2b2tlX2NhY2hlcygpOwog CWlmIChyZXQgPT0gMCkKIAkJcmV0ID0gam91cm5hbF9pbml0X2pvdXJuYWxfaGVhZF9jYWNoZSgp OworCWlmIChyZXQgPT0gMCkKKwkJcmV0ID0gam91cm5hbF9pbml0X2hhbmRsZV9jYWNoZSgpOwog CXJldHVybiByZXQ7CiB9CiAKQEAgLTE4ODUsNiArMTkyNCw3IEBACiB7CiAJam91cm5hbF9kZXN0 cm95X3Jldm9rZV9jYWNoZXMoKTsKIAlqb3VybmFsX2Rlc3Ryb3lfam91cm5hbF9oZWFkX2NhY2hl KCk7CisJam91cm5hbF9kZXN0cm95X2hhbmRsZV9jYWNoZSgpOwogfQogCiBzdGF0aWMgaW50IF9f aW5pdCBqb3VybmFsX2luaXQodm9pZCkKZGlmZiAtcnUgLi9mcy9qYmQvdHJhbnNhY3Rpb24uYyAv aG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNfMjQvZnMvamJkL3RyYW5zYWN0 aW9uLmMKLS0tIC4vZnMvamJkL3RyYW5zYWN0aW9uLmMJTW9uIE1hciAyNCAyMDoyODowMCAyMDAz CisrKyAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNfMjQvZnMvamJkL3Ry YW5zYWN0aW9uLmMJTW9uIE1hciAyNCAxODozMzowOSAyMDAzCkBAIC0yMTIsMTAgKzIxMiwxMCBA QAogLyogQWxsb2NhdGUgYSBuZXcgaGFuZGxlLiAgVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgaW4g YSBzbGFiLi4uICovCiBzdGF0aWMgaGFuZGxlX3QgKm5ld19oYW5kbGUoaW50IG5ibG9ja3MpCiB7 Ci0JaGFuZGxlX3QgKmhhbmRsZSA9IGpiZF9rbWFsbG9jKHNpemVvZiAoaGFuZGxlX3QpLCBHRlBf Tk9GUyk7CisJaGFuZGxlX3QgKmhhbmRsZSA9IGpiZF9hbGxvY19oYW5kbGUoR0ZQX05PRlMpOwog CWlmICghaGFuZGxlKQogCQlyZXR1cm4gTlVMTDsKLQltZW1zZXQoaGFuZGxlLCAwLCBzaXplb2Yg KGhhbmRsZV90KSk7CisJbWVtc2V0KGhhbmRsZSwgMCwgc2l6ZW9mKCpoYW5kbGUpKTsKIAloYW5k bGUtPmhfYnVmZmVyX2NyZWRpdHMgPSBuYmxvY2tzOwogCWhhbmRsZS0+aF9yZWYgPSAxOwogCUlO SVRfTElTVF9IRUFEKCZoYW5kbGUtPmhfamNiKTsKQEAgLTI1NiwxMyArMjU2LDE0IEBACiAKIAlj dXJyZW50LT5qb3VybmFsX2luZm8gPSBoYW5kbGU7CiAKKwlsb2NrX2tlcm5lbCgpOwogCWVyciA9 IHN0YXJ0X3RoaXNfaGFuZGxlKGpvdXJuYWwsIGhhbmRsZSk7CisJdW5sb2NrX2tlcm5lbCgpOwog CWlmIChlcnIgPCAwKSB7Ci0JCWtmcmVlKGhhbmRsZSk7CisJCWpiZF9mcmVlX2hhbmRsZShoYW5k bGUpOwogCQljdXJyZW50LT5qb3VybmFsX2luZm8gPSBOVUxMOwotCQlyZXR1cm4gRVJSX1BUUihl cnIpOworCQloYW5kbGUgPSBFUlJfUFRSKGVycik7CiAJfQotCiAJcmV0dXJuIGhhbmRsZTsKIH0K IApAQCAtNDA5LDE5ICs0MTAsMjAgQEAKIAkJCSAgInRyYW5zYWN0aW9uIG5vdCBydW5uaW5nXG4i LCBoYW5kbGUsIG5ibG9ja3MpOwogCQlnb3RvIGVycm9yX291dDsKIAl9Ci0JCisKKwlsb2NrX2tl cm5lbCgpOwkKIAl3YW50ZWQgPSB0cmFuc2FjdGlvbi0+dF9vdXRzdGFuZGluZ19jcmVkaXRzICsg bmJsb2NrczsKIAkKIAlpZiAod2FudGVkID4gam91cm5hbC0+al9tYXhfdHJhbnNhY3Rpb25fYnVm ZmVycykgewogCQlqYmRfZGVidWcoMywgImRlbmllZCBoYW5kbGUgJXAgJWQgYmxvY2tzOiAiCiAJ CQkgICJ0cmFuc2FjdGlvbiB0b28gbGFyZ2VcbiIsIGhhbmRsZSwgbmJsb2Nrcyk7Ci0JCWdvdG8g ZXJyb3Jfb3V0OworCQlnb3RvIHVubG9jazsKIAl9CiAKIAlpZiAod2FudGVkID4gbG9nX3NwYWNl X2xlZnQoam91cm5hbCkpIHsKIAkJamJkX2RlYnVnKDMsICJkZW5pZWQgaGFuZGxlICVwICVkIGJs b2NrczogIgogCQkJICAiaW5zdWZmaWNpZW50IGxvZyBzcGFjZVxuIiwgaGFuZGxlLCBuYmxvY2tz KTsKLQkJZ290byBlcnJvcl9vdXQ7CisJCWdvdG8gdW5sb2NrOwogCX0KIAkKIAloYW5kbGUtPmhf YnVmZmVyX2NyZWRpdHMgKz0gbmJsb2NrczsKQEAgLTQyOSw3ICs0MzEsOCBAQAogCXJlc3VsdCA9 IDA7CiAKIAlqYmRfZGVidWcoMywgImV4dGVuZGVkIGhhbmRsZSAlcCBieSAlZFxuIiwgaGFuZGxl LCBuYmxvY2tzKTsKLQkKK3VubG9jazoKKwl1bmxvY2tfa2VybmVsKCk7CiBlcnJvcl9vdXQ6CiAJ dW5sb2NrX2pvdXJuYWwgKGpvdXJuYWwpOwogCXJldHVybiByZXN1bHQ7CkBAIC00NjQsNiArNDY3 LDcgQEAKIAlKX0FTU0VSVCAodHJhbnNhY3Rpb24tPnRfdXBkYXRlcyA+IDApOwogCUpfQVNTRVJU IChqb3VybmFsX2N1cnJlbnRfaGFuZGxlKCkgPT0gaGFuZGxlKTsKIAorCWxvY2tfa2VybmVsKCk7 CiAJdHJhbnNhY3Rpb24tPnRfb3V0c3RhbmRpbmdfY3JlZGl0cyAtPSBoYW5kbGUtPmhfYnVmZmVy X2NyZWRpdHM7CiAJdHJhbnNhY3Rpb24tPnRfdXBkYXRlcy0tOwogCkBAIC00NzUsNiArNDc5LDcg QEAKIAogCWhhbmRsZS0+aF9idWZmZXJfY3JlZGl0cyA9IG5ibG9ja3M7CiAJcmV0ID0gc3RhcnRf dGhpc19oYW5kbGUoam91cm5hbCwgaGFuZGxlKTsKKwl1bmxvY2tfa2VybmVsKCk7CiAJcmV0dXJu IHJldDsKIH0KIApAQCAtNDkyLDcgKzQ5NywxMCBAQAogdm9pZCBqb3VybmFsX2xvY2tfdXBkYXRl cyAoam91cm5hbF90ICpqb3VybmFsKQogewogCWxvY2tfam91cm5hbChqb3VybmFsKTsKKworCWxv Y2tfa2VybmVsKCk7CiAJKytqb3VybmFsLT5qX2JhcnJpZXJfY291bnQ7CisJdW5sb2NrX2tlcm5l bCgpOwogCiAJLyogV2FpdCB1bnRpbCB0aGVyZSBhcmUgbm8gcnVubmluZyB1cGRhdGVzICovCiAJ d2hpbGUgKDEpIHsKQEAgLTUyOSw3ICs1MzcsOSBAQAogCUpfQVNTRVJUIChqb3VybmFsLT5qX2Jh cnJpZXJfY291bnQgIT0gMCk7CiAJCiAJdXAoJmpvdXJuYWwtPmpfYmFycmllcik7CisJbG9ja19r ZXJuZWwoKTsKIAktLWpvdXJuYWwtPmpfYmFycmllcl9jb3VudDsKKwl1bmxvY2tfa2VybmVsKCk7 CiAJd2FrZV91cCgmam91cm5hbC0+al93YWl0X3RyYW5zYWN0aW9uX2xvY2tlZCk7CiAJdW5sb2Nr X2pvdXJuYWwoam91cm5hbCk7CiB9CkBAIC03NjcsNyArNzc3LDkgQEAKIAkgKiBsb2cgdGhyZWFk IGFsc28gbWFuaXB1bGF0ZXMuICBNYWtlIHN1cmUgdGhhdCB0aGUgYnVmZmVyCiAJICogY29tcGxl dGVzIGFueSBvdXRzdGFuZGluZyBJTyBiZWZvcmUgcHJvY2VlZGluZy4gKi8KIAlsb2NrX2pvdXJu YWwoam91cm5hbCk7CisJbG9ja19rZXJuZWwoKTsKIAlyYyA9IGRvX2dldF93cml0ZV9hY2Nlc3Mo aGFuZGxlLCBqaCwgMCk7CisJdW5sb2NrX2tlcm5lbCgpOwogCWpvdXJuYWxfdW5sb2NrX2pvdXJu YWxfaGVhZChqaCk7CiAJdW5sb2NrX2pvdXJuYWwoam91cm5hbCk7CiAJcmV0dXJuIHJjOwpAQCAt ODM4LDggKzg1MCwxMCBAQAogCSAqIHdoaWNoIGhpdHMgYW4gYXNzZXJ0aW9uIGVycm9yLgogCSAq LwogCUpCVUZGRVJfVFJBQ0UoamgsICJjYW5jZWxsaW5nIHJldm9rZSIpOworCWxvY2tfa2VybmVs KCk7CiAJam91cm5hbF9jYW5jZWxfcmV2b2tlKGhhbmRsZSwgamgpOwogCWpvdXJuYWxfdW5sb2Nr X2pvdXJuYWxfaGVhZChqaCk7CisJdW5sb2NrX2tlcm5lbCgpOwogb3V0OgogCXVubG9ja19qb3Vy bmFsKGpvdXJuYWwpOwogCXJldHVybiBlcnI7CkBAIC04ODQsNiArODk4LDcgQEAKIAkvKiBEbyB0 aGlzIGZpcnN0IC0tLSBpdCBjYW4gZHJvcCB0aGUgam91cm5hbCBsb2NrLCBzbyB3ZSB3YW50IHRv CiAJICogbWFrZSBzdXJlIHRoYXQgb2J0YWluaW5nIHRoZSBjb21taXR0ZWRfZGF0YSBpcyBkb25l CiAJICogYXRvbWljYWxseSB3cnQuIGNvbXBsZXRpb24gb2YgYW55IG91dHN0YW5kaW5nIGNvbW1p dHMuICovCisJbG9ja19rZXJuZWwoKTsKIAllcnIgPSBkb19nZXRfd3JpdGVfYWNjZXNzIChoYW5k bGUsIGpoLCAxKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKQEAgLTkwNiw2ICs5MjEsNyBAQAog CX0KIAogb3V0OgorCXVubG9ja19rZXJuZWwoKTsKIAlpZiAoIWVycikKIAkJSl9BU1NFUlRfSkgo amgsIGpoLT5iX2NvbW1pdHRlZF9kYXRhKTsKIAlqb3VybmFsX3VubG9ja19qb3VybmFsX2hlYWQo amgpOwpAQCAtMTEyOCw3ICsxMTQ0LDYgQEAKIAkJLyogQW5kIHRoaXMgY2FzZSBpcyBpbGxlZ2Fs OiB3ZSBjYW4ndCByZXVzZSBhbm90aGVyCiAJCSAqIHRyYW5zYWN0aW9uJ3MgZGF0YSBidWZmZXIs IGV2ZXIuICovCiAJCS8qIEZJWE1FOiB3cml0ZXBhZ2UoKSBzaG91bGQgYmUgam91cm5hbGxlZCAq LwotCQlKX0FTU0VSVF9KSChqaCwgamgtPmJfamxpc3QgIT0gQkpfU3luY0RhdGEpOwogCQlnb3Rv IGRvbmVfbG9ja2VkOwogCX0KIApAQCAtMTM1Myw4ICsxMzY4LDEwIEBACiAJCQkgIHZvaWQgKCpm dW5jKShzdHJ1Y3Qgam91cm5hbF9jYWxsYmFjayAqamNiLCBpbnQgZXJyb3IpLAogCQkJICBzdHJ1 Y3Qgam91cm5hbF9jYWxsYmFjayAqamNiKQogeworCWxvY2tfa2VybmVsKCk7CiAJbGlzdF9hZGRf dGFpbCgmamNiLT5qY2JfbGlzdCwgJmhhbmRsZS0+aF9qY2IpOwogCWpjYi0+amNiX2Z1bmMgPSBm dW5jOworCXVubG9ja19rZXJuZWwoKTsKIH0KIAogLyoKQEAgLTE0MTMsNiArMTQzMCw3IEBACiAJ fQogCiAJY3VycmVudC0+am91cm5hbF9pbmZvID0gTlVMTDsKKwlsb2NrX2tlcm5lbCgpOwogCXRy YW5zYWN0aW9uLT50X291dHN0YW5kaW5nX2NyZWRpdHMgLT0gaGFuZGxlLT5oX2J1ZmZlcl9jcmVk aXRzOwogCXRyYW5zYWN0aW9uLT50X3VwZGF0ZXMtLTsKIAlpZiAoIXRyYW5zYWN0aW9uLT50X3Vw ZGF0ZXMpIHsKQEAgLTE0NTEsNyArMTQ2OSw4IEBACiAJCWlmIChoYW5kbGUtPmhfc3luYyAmJiAh KGN1cnJlbnQtPmZsYWdzICYgUEZfTUVNQUxMT0MpKQogCQkJbG9nX3dhaXRfY29tbWl0KGpvdXJu YWwsIHRpZCk7CiAJfQotCWtmcmVlKGhhbmRsZSk7CisJdW5sb2NrX2tlcm5lbCgpOworCWpiZF9m cmVlX2hhbmRsZShoYW5kbGUpOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAtcnUgLi9pbmNsdWRl L2xpbnV4L2V4dDNfZnMuaCAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNf MjQvaW5jbHVkZS9saW51eC9leHQzX2ZzLmgKLS0tIC4vaW5jbHVkZS9saW51eC9leHQzX2ZzLmgJ TW9uIE1hciAyNCAyMDoyODowOSAyMDAzCisrKyAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwv a2VybmVsL2V4dDNfMjQvaW5jbHVkZS9saW51eC9leHQzX2ZzLmgJTW9uIE1hciAyNCAxODowODow OCAyMDAzCkBAIC0yMDMsMTEgKzIwMywxMSBAQAogI2RlZmluZSBFWFQzX0lOREVYX0ZMCQkJMHgw MDAwMTAwMCAvKiBoYXNoLWluZGV4ZWQgZGlyZWN0b3J5ICovCiAjZGVmaW5lIEVYVDNfSU1BR0lD X0ZMCQkJMHgwMDAwMjAwMCAvKiBBRlMgZGlyZWN0b3J5ICovCiAjZGVmaW5lIEVYVDNfSk9VUk5B TF9EQVRBX0ZMCQkweDAwMDA0MDAwIC8qIGZpbGUgZGF0YSBzaG91bGQgYmUgam91cm5hbGVkICov CisjZGVmaW5lIEVYVDNfVE9QRElSX0ZMICAgICAgICAgMHgwMDAyMDAwMCAvKiBUb3Agb2YgZGly ZWN0b3J5IGhpZXJhcmNoaWVzKi8KICNkZWZpbmUgRVhUM19SRVNFUlZFRF9GTAkJMHg4MDAwMDAw MCAvKiByZXNlcnZlZCBmb3IgZXh0MyBsaWIgKi8KIAotI2RlZmluZSBFWFQzX0ZMX1VTRVJfVklT SUJMRQkJMHgwMDAwNUZGRiAvKiBVc2VyIHZpc2libGUgZmxhZ3MgKi8KLSNkZWZpbmUgRVhUM19G TF9VU0VSX01PRElGSUFCTEUJCTB4MDAwMDAwRkYgLyogVXNlciBtb2RpZmlhYmxlIGZsYWdzICov Ci0KKyNkZWZpbmUgRVhUM19GTF9VU0VSX1ZJU0lCTEUgICAgICAgMHgwMDAzREZGRiAvKiBVc2Vy IHZpc2libGUgZmxhZ3MgKi8KKyNkZWZpbmUgRVhUM19GTF9VU0VSX01PRElGSUFCTEUgICAgICAg IDB4MDAwMzgwRkYgLyogVXNlciBtb2RpZmlhYmxlIGZsYWdzICovCiAvKgogICogSW5vZGUgZHlu YW1pYyBzdGF0ZSBmbGFncwogICovCkBAIC0zMjUsNiArMzI1LDcgQEAKICAqIE1vdW50IGZsYWdz CiAgKi8KICNkZWZpbmUgRVhUM19NT1VOVF9DSEVDSwkJMHgwMDAxCS8qIERvIG1vdW50LXRpbWUg Y2hlY2tzICovCisjZGVmaW5lIEVYVDNfTU9VTlRfT0xEQUxMT0MgICAgICAgIDB4MDAwMiAgLyog RG9uJ3QgdXNlIHRoZSBuZXcgT3Jsb3YgYWxsb2NhdG9yICovCiAjZGVmaW5lIEVYVDNfTU9VTlRf R1JQSUQJCTB4MDAwNAkvKiBDcmVhdGUgZmlsZXMgd2l0aCBkaXJlY3RvcnkncyBncm91cCAqLwog I2RlZmluZSBFWFQzX01PVU5UX0RFQlVHCQkweDAwMDgJLyogU29tZSBkZWJ1Z2dpbmcgbWVzc2Fn ZXMgKi8KICNkZWZpbmUgRVhUM19NT1VOVF9FUlJPUlNfQ09OVAkJMHgwMDEwCS8qIENvbnRpbnVl IG9uIGVycm9ycyAqLwpAQCAtNjA3LDYgKzYwOCw3IEBACiBleHRlcm4gdm9pZCBleHQzX2ZyZWVf YmxvY2tzIChoYW5kbGVfdCAqLCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZywKIAkJCSAg ICAgIHVuc2lnbmVkIGxvbmcpOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXh0M19jb3VudF9mcmVl X2Jsb2NrcyAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXh0 M19jb3VudF9kaXJzIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiBleHRlcm4gdm9pZCBleHQzX2No ZWNrX2Jsb2Nrc19iaXRtYXAgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGV4dGVybiBzdHJ1Y3Qg ZXh0M19ncm91cF9kZXNjICogZXh0M19nZXRfZ3JvdXBfZGVzYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sg KiBzYiwKIAkJCQkJCSAgICB1bnNpZ25lZCBpbnQgYmxvY2tfZ3JvdXAsCkBAIC02MjAsNyArNjIy LDcgQEAKIGV4dGVybiBpbnQgZXh0M19zeW5jX2ZpbGUgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBk ZW50cnkgKiwgaW50KTsKIAogLyogaWFsbG9jLmMgKi8KLWV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBl eHQzX25ld19pbm9kZSAoaGFuZGxlX3QgKiwgY29uc3Qgc3RydWN0IGlub2RlICosIGludCk7Citl eHRlcm4gc3RydWN0IGlub2RlICogZXh0M19uZXdfaW5vZGUgKGhhbmRsZV90ICosIHN0cnVjdCBp bm9kZSAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgZXh0M19mcmVlX2lub2RlIChoYW5kbGVfdCAqLCBz dHJ1Y3QgaW5vZGUgKik7CiBleHRlcm4gc3RydWN0IGlub2RlICogZXh0M19vcnBoYW5fZ2V0IChz dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXh0M19j b3VudF9mcmVlX2lub2RlcyAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpkaWZmIC1ydSAuL2luY2x1 ZGUvbGludXgvZXh0M19mc19zYi5oIC9ob21lL2h1Z2FuZy9kZXZlL2N2cy9sb2NhbC9rZXJuZWwv ZXh0M18yNC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaAotLS0gLi9pbmNsdWRlL2xpbnV4L2V4 dDNfZnNfc2IuaAlUdWUgRmViIDI2IDAzOjM4OjEzIDIwMDIKKysrIC9ob21lL2h1Z2FuZy9kZXZl L2N2cy9sb2NhbC9rZXJuZWwvZXh0M18yNC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaAlNb24g TWFyIDI0IDE4OjA3OjIwIDIwMDMKQEAgLTYyLDYgKzYyLDggQEAKIAlpbnQgc19pbm9kZV9zaXpl OwogCWludCBzX2ZpcnN0X2lubzsKIAl1MzIgc19uZXh0X2dlbmVyYXRpb247CisJdW5zaWduZWQg bG9uZyBzX2Rpcl9jb3VudDsKKwl1OCAqc19kZWJ0czsKIAogCS8qIEpvdXJuYWxpbmcgKi8KIAlz dHJ1Y3QgaW5vZGUgKiBzX2pvdXJuYWxfaW5vZGU7CmRpZmYgLXJ1IC4vaW5jbHVkZS9saW51eC9q YmQuaCAvaG9tZS9odWdhbmcvZGV2ZS9jdnMvbG9jYWwva2VybmVsL2V4dDNfMjQvaW5jbHVkZS9s aW51eC9qYmQuaAotLS0gLi9pbmNsdWRlL2xpbnV4L2piZC5oCU1vbiBNYXIgMjQgMjA6Mjg6MDkg MjAwMworKysgL2hvbWUvaHVnYW5nL2RldmUvY3ZzL2xvY2FsL2tlcm5lbC9leHQzXzI0L2luY2x1 ZGUvbGludXgvamJkLmgJTW9uIE1hciAyNCAxODoyMzoxMiAyMDAzCkBAIC0xNyw3ICsxNyw3IEBA CiAjZGVmaW5lIF9MSU5VWF9KQkRfSAogCiAjaWYgZGVmaW5lZChDT05GSUdfSkJEKSB8fCBkZWZp bmVkKENPTkZJR19KQkRfTU9EVUxFKSB8fCAhZGVmaW5lZChfX0tFUk5FTF9fKQotCisjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgogLyogQWxsb3cgdGhpcyBmaWxlIHRvIGJlIGluY2x1ZGVkIGRpcmVj dGx5IGludG8gZTJmc3Byb2dzICovCiAjaWZuZGVmIF9fS0VSTkVMX18KICNpbmNsdWRlICJqZnNf Y29tcGF0LmgiCkBAIC03MTIsNiArNzEyLDIxIEBACiBleHRlcm4gdm9pZAlqb3VybmFsX3JlbW92 ZV9qb3VybmFsX2hlYWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiBleHRlcm4gdm9pZAlfX2pv dXJuYWxfcmVtb3ZlX2pvdXJuYWxfaGVhZChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKIGV4dGVy biB2b2lkCWpvdXJuYWxfdW5sb2NrX2pvdXJuYWxfaGVhZChzdHJ1Y3Qgam91cm5hbF9oZWFkICpq aCk7CisKKy8qCisgKiBoYW5kbGUgbWFuYWdlbWVudAorICovCitleHRlcm4ga21lbV9jYWNoZV90 ICpqYmRfaGFuZGxlX2NhY2hlOworCitzdGF0aWMgaW5saW5lIGhhbmRsZV90ICpqYmRfYWxsb2Nf aGFuZGxlKGludCBnZnBfZmxhZ3MpCit7CisJcmV0dXJuIGttZW1fY2FjaGVfYWxsb2MoamJkX2hh bmRsZV9jYWNoZSwgZ2ZwX2ZsYWdzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGpiZF9mcmVl X2hhbmRsZShoYW5kbGVfdCAqaGFuZGxlKQoreworCWttZW1fY2FjaGVfZnJlZShqYmRfaGFuZGxl X2NhY2hlLCBoYW5kbGUpOworfQogCiAvKiBQcmltYXJ5IHJldm9rZSBzdXBwb3J0ICovCiAjZGVm aW5lIEpPVVJOQUxfUkVWT0tFX0RFRkFVTFRfSEFTSCAyNTYK

--=_courier-29492-1048510738-0001-2--