Date: Tue, 3 Aug 2010 13:34:47 +0400 From: pluknet <pluknet@gmail.com> To: FreeBSD Current <freebsd-current@freebsd.org> Subject: [patch] big whitespace cleanup in sys/kern/* Message-ID: <AANLkTi=E%2Bzg5rNSv0Dg6uG%2Baxxvz=vrRVdug0JiNhbHG@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
--00c09f93d63c341395048ce80794 Content-Type: text/plain; charset=ISO-8859-1 Hi. I looked into sys/kern/* files to fix a bunch of common w/s style issues (221): - leading space before label; - leading space(s) before <tab>; - space(s) instead of <tab>(s); - space(s) in blank like. I tried to be conservative and didn't touch semi-contrib files and those with its own style. Here is a diff I'd like someone look into and check in if there will no objections. -- wbr, pluknet --00c09f93d63c341395048ce80794 Content-Type: application/octet-stream; name="ws_kern.diff" Content-Disposition: attachment; filename="ws_kern.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcejq73j0 SW5kZXg6IGtlcm5famFpbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5famFpbC5jCShyZXZpc2lvbiAy MTA3NjgpCisrKyBrZXJuX2phaWwuYwkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsxMDQzLDcg QEAKIAkJaWYgKG5hbWVbMF0gIT0gJ1wwJykgewogCQkJbmFtZWxlbiA9CiAJCQkgICAgKHBwciA9 PSAmcHJpc29uMCkgPyAwIDogc3RybGVuKHBwci0+cHJfbmFtZSkgKyAxOwotIG5hbWVfYWdhaW46 CituYW1lX2FnYWluOgogCQkJZGVhZHByID0gTlVMTDsKIAkJCUZPUkVBQ0hfUFJJU09OX0NISUxE KHBwciwgdHByKSB7CiAJCQkJaWYgKHRwciAhPSBwciAmJiB0cHItPnByX3JlZiA+IDAgJiYKQEAg LTExMzQsNyArMTEzNCw3IEBACiAJCWlmIChqaWQgPT0gMCkgewogCQkJLyogRmluZCB0aGUgbmV4 dCBmcmVlIGppZC4gKi8KIAkJCWppZCA9IGxhc3RwcmlkICsgMTsKLSBmaW5kbmV4dDoKK2ZpbmRu ZXh0OgogCQkJaWYgKGppZCA9PSBKQUlMX01BWCkKIAkJCQlqaWQgPSAxOwogCQkJVEFJTFFfRk9S RUFDSCh0cHIsICZhbGxwcmlzb24sIHByX2xpc3QpIHsKQEAgLTE3NDYsMjAgKzE3NDYsMjAgQEAK IAl0ZC0+dGRfcmV0dmFsWzBdID0gcHItPnByX2lkOwogCWdvdG8gZG9uZV9lcnJtc2c7CiAKLSBk b25lX2RlcmVmX2xvY2tlZDoKK2RvbmVfZGVyZWZfbG9ja2VkOgogCXByaXNvbl9kZXJlZihwciwg Y3JlYXRlZAogCSAgICA/IFBEX0xPQ0tFRCB8IFBEX0xJU1RfWExPQ0tFRAogCSAgICA6IFBEX0RF UkVGIHwgUERfTE9DS0VEIHwgUERfTElTVF9YTE9DS0VEKTsKIAlnb3RvIGRvbmVfcmVsZXJvb3Q7 Ci0gZG9uZV91bmxvY2tfbGlzdDoKK2RvbmVfdW5sb2NrX2xpc3Q6CiAJc3hfeHVubG9jaygmYWxs cHJpc29uX2xvY2spOwotIGRvbmVfcmVsZXJvb3Q6Citkb25lX3JlbGVyb290OgogCWlmIChyb290 ICE9IE5VTEwpIHsKIAkJdmZzbG9ja2VkID0gVkZTX0xPQ0tfR0lBTlQocm9vdC0+dl9tb3VudCk7 CiAJCXZyZWxlKHJvb3QpOwogCQlWRlNfVU5MT0NLX0dJQU5UKHZmc2xvY2tlZCk7CiAJfQotIGRv bmVfZXJybXNnOgorZG9uZV9lcnJtc2c6CiAJaWYgKGVycm9yKSB7CiAJCXZmc19nZXRvcHQob3B0 cywgImVycm1zZyIsICh2b2lkICoqKSZlcnJtc2csICZlcnJtc2dfbGVuKTsKIAkJaWYgKGVycm1z Z19sZW4gPiAwKSB7CkBAIC0xNzc2LDcgKzE3NzYsNyBAQAogCQkJfQogCQl9CiAJfQotIGRvbmVf ZnJlZToKK2RvbmVfZnJlZToKICNpZmRlZiBJTkVUCiAJZnJlZShpcDQsIE1fUFJJU09OKTsKICNl bmRpZgpAQCAtMTkwNiw3ICsxOTA2LDcgQEAKIAllcnJvciA9IEVOT0VOVDsKIAlnb3RvIGRvbmVf dW5sb2NrX2xpc3Q7CiAKLSBmb3VuZF9wcmlzb246Citmb3VuZF9wcmlzb246CiAJLyogR2V0IHRo ZSBwYXJhbWV0ZXJzIG9mIHRoZSBwcmlzb24uICovCiAJcHItPnByX3JlZisrOwogCWxvY2tlZCA9 IFBEX0xPQ0tFRDsKQEAgLTIwNjQsMTMgKzIwNjQsMTMgQEAKIAl9CiAJZ290byBkb25lX2Vycm1z ZzsKIAotIGRvbmVfZGVyZWY6Citkb25lX2RlcmVmOgogCXByaXNvbl9kZXJlZihwciwgbG9ja2Vk IHwgUERfREVSRUYgfCBQRF9MSVNUX1NMT0NLRUQpOwogCWdvdG8gZG9uZV9lcnJtc2c7CiAKLSBk b25lX3VubG9ja19saXN0OgorZG9uZV91bmxvY2tfbGlzdDoKIAlzeF9zdW5sb2NrKCZhbGxwcmlz b25fbG9jayk7Ci0gZG9uZV9lcnJtc2c6Citkb25lX2Vycm1zZzoKIAlpZiAoZXJyb3IgJiYgZXJy bXNnX3BvcyA+PSAwKSB7CiAJCXZmc19nZXRvcHQob3B0cywgImVycm1zZyIsICh2b2lkICoqKSZl cnJtc2csICZlcnJtc2dfbGVuKTsKIAkJZXJybXNnX3BvcyA9IDIgKiBlcnJtc2dfcG9zICsgMTsK QEAgLTIyODgsMTEgKzIyODgsMTEgQEAKIAljcmZyZWUob2xkY3JlZCk7CiAJcHJpc29uX2RlcmVm KHBwciwgUERfREVSRUYgfCBQRF9ERVVSRUYpOwogCXJldHVybiAoMCk7Ci0gZV91bmxvY2s6Citl X3VubG9jazoKIAlWT1BfVU5MT0NLKHByLT5wcl9yb290LCAwKTsKLSBlX3VubG9ja19naWFudDoK K2VfdW5sb2NrX2dpYW50OgogCVZGU19VTkxPQ0tfR0lBTlQodmZzbG9ja2VkKTsKLSBlX3JldmVy dF9vc2Q6CitlX3JldmVydF9vc2Q6CiAJLyogVGVsbCBtb2R1bGVzIHRoaXMgdGhyZWFkIGlzIHN0 aWxsIGluIGl0cyBvbGQgamFpbCBhZnRlciBhbGwuICovCiAJKHZvaWQpb3NkX2phaWxfY2FsbChw cHIsIFBSX01FVEhPRF9BVFRBQ0gsIHRkKTsKIAlwcmlzb25fZGVyZWYocHIsIFBEX0RFUkVGIHwg UERfREVVUkVGKTsKQEAgLTIzNTMsNyArMjM1Myw3IEBACiAKIAlzeF9hc3NlcnQoJmFsbHByaXNv bl9sb2NrLCBTWF9MT0NLRUQpOwogCW15bGVuID0gKG15cHIgPT0gJnByaXNvbjApID8gMCA6IHN0 cmxlbihteXByLT5wcl9uYW1lKSArIDE7Ci0gYWdhaW46CithZ2FpbjoKIAlkZWFkcHIgPSBOVUxM OwogCUZPUkVBQ0hfUFJJU09OX0RFU0NFTkRBTlQobXlwciwgcHIsIGRlc2NlbmQpIHsKIAkJaWYg KCFzdHJjbXAocHItPnByX25hbWUgKyBteWxlbiwgbmFtZSkpIHsKQEAgLTM5NTIsNyArMzk1Miw3 IEBACiAJc3hfc2xvY2soJmFsbHByaXNvbl9sb2NrKTsKIAlGT1JFQUNIX1BSSVNPTl9ERVNDRU5E QU5UKHByLCBjcHIsIGRlc2NlbmQpIHsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F VDYpCi0gYWdhaW46CithZ2FpbjoKICNlbmRpZgogCQltdHhfbG9jaygmY3ByLT5wcl9tdHgpOwog I2lmZGVmIElORVQKSW5kZXg6IGtlcm5fY29uZi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fY29uZi5j CShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX2NvbmYuYwkod29ya2luZyBjb3B5KQpAQCAtNDAy LDcgKzQwMiw3IEBACiAJZGV2X3JlbHRocmVhZChkZXYpOwogCXJldHVybiAocmV0dmFsKTsKIH0K LSAgCisKIHN0YXRpYyBpbnQKIGdpYW50X3JlYWQoc3RydWN0IGNkZXYgKmRldiwgc3RydWN0IHVp byAqdWlvLCBpbnQgaW9mbGFnKQogewpJbmRleDogc3Vicl9ldmVudGhhbmRsZXIuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzdWJyX2V2ZW50aGFuZGxlci5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBzdWJyX2V2 ZW50aGFuZGxlci5jCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiB7CiAgICAgc3Ry dWN0IGV2ZW50aGFuZGxlcl9saXN0CQkqbmV3X2xpc3Q7CiAgICAgc3RydWN0IGV2ZW50aGFuZGxl cl9lbnRyeQkJKmVwOwotICAgIAorCiAgICAgS0FTU0VSVChldmVudGhhbmRsZXJfbGlzdHNfaW5p dHRlZCwgKCJldmVudGhhbmRsZXIgcmVnaXN0ZXJlZCB0b28gZWFybHkiKSk7CiAgICAgS0FTU0VS VChlcG4gIT0gTlVMTCwgKCIlczogY2Fubm90IHJlZ2lzdGVyIE5VTEwgZXZlbnQiLCBfX2Z1bmNf XykpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAKIAkJICAgICAgdm9pZCAqZnVuYywgdm9pZCAqYXJn LCBpbnQgcHJpb3JpdHkpCiB7CiAgICAgc3RydWN0IGV2ZW50aGFuZGxlcl9lbnRyeV9nZW5lcmlj CSplZzsKLSAgICAKKwogICAgIC8qIGFsbG9jYXRlIGFuIGVudHJ5IGZvciB0aGlzIGhhbmRsZXIs IHBvcHVsYXRlIGl0ICovCiAgICAgZWcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldmVudGhhbmRs ZXJfZW50cnlfZ2VuZXJpYyksIE1fRVZFTlRIQU5ETEVSLAogCU1fV0FJVE9LIHwgTV9aRVJPKTsK QEAgLTE2Niw3ICsxNjYsNyBAQAogICAgIHZvaWQgKmZ1bmMsIHZvaWQgKmFyZywgaW50IHByaW9y aXR5LCB2aW1hZ2VfaXRlcmF0b3JfZnVuY190IGl0ZXJmdW5jKQogewogICAgIHN0cnVjdCBldmVu dGhhbmRsZXJfZW50cnlfZ2VuZXJpY192aW1hZ2UJKmVnOwotICAgIAorCiAgICAgLyogYWxsb2Nh dGUgYW4gZW50cnkgZm9yIHRoaXMgaGFuZGxlciwgcG9wdWxhdGUgaXQgKi8KICAgICBlZyA9IG1h bGxvYyhzaXplb2Yoc3RydWN0IGV2ZW50aGFuZGxlcl9lbnRyeV9nZW5lcmljX3ZpbWFnZSksCiAJ TV9FVkVOVEhBTkRMRVIsIE1fV0FJVE9LIHwgTV9aRVJPKTsKQEAgLTI0NiwxNCArMjQ2LDE0IEBA CiAKICAgICBpZiAoIWV2ZW50aGFuZGxlcl9saXN0c19pbml0dGVkKQogCXJldHVybihOVUxMKTsK LSAgICAKKwogICAgIC8qIHNjYW4gbG9va2luZyBmb3IgdGhlIHJlcXVlc3RlZCBsaXN0ICovCiAg ICAgbXR4X2xvY2soJmV2ZW50aGFuZGxlcl9tdXRleCk7CiAgICAgbGlzdCA9IF9ldmVudGhhbmRs ZXJfZmluZF9saXN0KG5hbWUpOwogICAgIGlmIChsaXN0ICE9IE5VTEwpCiAJRUhMX0xPQ0sobGlz dCk7CiAgICAgbXR4X3VubG9jaygmZXZlbnRoYW5kbGVyX211dGV4KTsKLSAgICAKKwogICAgIHJl dHVybihsaXN0KTsKIH0KIApJbmRleDogc3lzdl9tc2cuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXN2X21z Zy5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBzeXN2X21zZy5jCSh3b3JraW5nIGNvcHkpCkBAIC0y MjIsNyArMjIyLDcgQEAKIAlpID0gODsKIAl3aGlsZSAoaSA8IDEwMjQgJiYgaSAhPSBtc2dpbmZv Lm1zZ3NzeikKIAkJaSA8PD0gMTsKLSAgICAJaWYgKGkgIT0gbXNnaW5mby5tc2dzc3opIHsKKwlp ZiAoaSAhPSBtc2dpbmZvLm1zZ3NzeikgewogCQlEUFJJTlRGKCgibXNnaW5mby5tc2dzc3o9JWQg KDB4JXgpXG4iLCBtc2dpbmZvLm1zZ3NzeiwKIAkJICAgIG1zZ2luZm8ubXNnc3N6KSk7CiAJCXBh bmljKCJtc2dpbmZvLm1zZ3NzeiBub3QgYSBzbWFsbCBwb3dlciBvZiAyIik7CkBAIC0yNTUsNyAr MjU1LDcgQEAKICNpZmRlZiBNQUMKIAkJbWFjX3N5c3Ztc2dfaW5pdCgmbXNnaGRyc1tpXSk7CiAj ZW5kaWYKLSAgICAJfQorCX0KIAlmcmVlX21zZ2hkcnMgPSAmbXNnaGRyc1swXTsKIAogCWlmICht c3FpZHMgPT0gTlVMTCkKSW5kZXg6IGtlcm5fdGltZS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fdGlt ZS5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3RpbWUuYwkod29ya2luZyBjb3B5KQpAQCAt MTAyOCw3ICsxMDI4LDcgQEAKIAkJCWl0LT5pdF9zaWdldi5zaWdldl9zaWdubyA9IFNJR0FMUk07 CiAJCQlicmVhazsKIAkJY2FzZSBDTE9DS19WSVJUVUFMOgotIAkJCWl0LT5pdF9zaWdldi5zaWdl dl9zaWdubyA9IFNJR1ZUQUxSTTsKKwkJCWl0LT5pdF9zaWdldi5zaWdldl9zaWdubyA9IFNJR1ZU QUxSTTsKIAkJCWJyZWFrOwogCQljYXNlIENMT0NLX1BST0Y6CiAJCQlpdC0+aXRfc2lnZXYuc2ln ZXZfc2lnbm8gPSBTSUdQUk9GOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAKIAkJdGltZXNwZWNzdWIo JnRzLCAmY3RzKTsKIAkJVElNRVNQRUNfVE9fVElNRVZBTCgmdHYsICZ0cyk7CiAJCWNhbGxvdXRf cmVzZXQoJml0LT5pdF9jYWxsb3V0LCB0dnRvaHooJnR2KSwgcmVhbHRpbWVyX2V4cGlyZSwKLSAJ CQlpdCk7CisJCQlpdCk7CiAJfQogfQogCkluZGV4OiBzdWJyX2tvYmouYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzdWJyX2tvYmouYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl9rb2JqLmMJKHdvcmtpbmcg Y29weSkKQEAgLTMxMiw3ICszMTIsNyBAQAoga29ial9pbml0KGtvYmpfdCBvYmosIGtvYmpfY2xh c3NfdCBjbHMpCiB7CiAJS09CSl9BU1NFUlQoTUFfTk9UT1dORUQpOwotICByZXRyeToKK3JldHJ5 OgogCUtPQkpfTE9DSygpOwogCiAJLyoKSW5kZXg6IHVpcGNfbXF1ZXVlLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdWlwY19tcXVldWUuYwkocmV2aXNpb24gMjEwNzY4KQorKysgdWlwY19tcXVldWUuYwkod29y a2luZyBjb3B5KQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAKIAlpbnQgZXJyb3I7CiAKIAlpZiAoYXAt PmFfdnAtPnZfdHlwZSA9PSBWRElSKQotICAgICAgICAgICAgICAgIHJldHVybiAoRVBFUk0pOwor CQlyZXR1cm4gKEVQRVJNKTsKIAlwbiA9IFZUT04oYXAtPmFfdnApOwogCXN4X3hsb2NrKCZtcWZz LT5taV9sb2NrKTsKIAllcnJvciA9IGRvX3VubGluayhwbiwgYXAtPmFfY25wLT5jbl9jcmVkKTsK QEAgLTEzNzgsNyArMTM3OCw3IEBACiAJCXRtcF9uY29va2llcyA9IGFwLT5hX25jb29raWVzOwog CQkqYXAtPmFfbmNvb2tpZXMgPSAwOwogCQlhcC0+YV9uY29va2llcyA9IE5VTEw7Ci0gICAgICAg IH0KKwl9CiAKIAllcnJvciA9IDA7CiAJb2Zmc2V0ID0gMDsKQEAgLTE0MTIsMTMgKzE0MTIsMTMg QEAKIAkJCQlwbi0+bW5fdHlwZSk7CiAJCX0KIAkJaWYgKGVudHJ5LmRfcmVjbGVuID4gdWlvLT51 aW9fcmVzaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkJCWJyZWFrOwogCQlp ZiAob2Zmc2V0ID49IHVpby0+dWlvX29mZnNldCkgewogCQkJZXJyb3IgPSB2ZnNfcmVhZF9kaXJl bnQoYXAsICZlbnRyeSwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJv cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgIG9mZnNldCArPSBlbnRyeS5kX3JlY2xlbjsKKwkJCWlmIChl cnJvcikKKwkJCQlicmVhazsKKwkJfQorCQlvZmZzZXQgKz0gZW50cnkuZF9yZWNsZW47CiAJfQog CXN4X3h1bmxvY2soJm1pLT5taV9sb2NrKTsKIApAQCAtMTk1Miw3ICsxOTUyLDcgQEAKIAl9CiAK IAllcnJvciA9IGNvcHlpbnN0cih1cGF0aCwgcGF0aCwgTVFGU19OQU1FTEVOICsgMSwgTlVMTCk7 Ci0gICAgICAgIGlmIChlcnJvcikKKwlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwogCiAJ LyoKQEAgLTIwNjAsNyArMjA2MCw3IEBACiAJaW50IGVycm9yLCBsZW47CiAKIAllcnJvciA9IGNv cHlpbnN0cih1YXAtPnBhdGgsIHBhdGgsIE1RRlNfTkFNRUxFTiArIDEsIE5VTEwpOwotICAgICAg ICBpZiAoZXJyb3IpCisJaWYgKGVycm9yKQogCQlyZXR1cm4gKGVycm9yKTsKIAogCWxlbiA9IHN0 cmxlbihwYXRoKTsKQEAgLTIzMjQsNyArMjMyNCw3IEBACiB7CiAJc3RydWN0IGZpbGVkZXNjICpm ZHA7CiAJc3RydWN0IG1xdWV1ZSAqbXE7Ci0gCisKIAlmZHAgPSB0ZC0+dGRfcHJvYy0+cF9mZDsK IAlGSUxFREVTQ19MT0NLX0FTU0VSVChmZHApOwogCkBAIC0yNDEyLDcgKzI0MTIsNyBAQAogCQl9 IGVsc2UgewogCQkJbXEtPm1xX2ZsYWdzIHw9IE1RX1JTRUw7CiAJCQlzZWxyZWNvcmQodGQsICZt cS0+bXFfcnNlbCk7Ci0gCQl9CisJCX0KIAl9CiAJaWYgKGV2ZW50cyAmIFBPTExPVVQpIHsKIAkJ aWYgKG1xLT5tcV9jdXJtc2dzIDwgbXEtPm1xX21heG1zZykKSW5kZXg6IHZmc192bm9wcy5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHZmc192bm9wcy5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2ZnNfdm5vcHMu Ywkod29ya2luZyBjb3B5KQpAQCAtNzg4LDcgKzc4OCw3IEBACiAJc2ItPnN0X2N0aW0gPSB2YXAt PnZhX2N0aW1lOwogCXNiLT5zdF9iaXJ0aHRpbSA9IHZhcC0+dmFfYmlydGh0aW1lOwogCi0gICAg ICAgIC8qCisJLyoKIAkgKiBBY2NvcmRpbmcgdG8gd3d3Lm9wZW5ncm91cC5vcmcsIHRoZSBtZWFu aW5nIG9mIHN0X2Jsa3NpemUgaXMgCiAJICogICAiYSBmaWxlc3lzdGVtLXNwZWNpZmljIHByZWZl cnJlZCBJL08gYmxvY2sgc2l6ZSBmb3IgdGhpcyAKIAkgKiAgICBvYmplY3QuICBJbiBzb21lIGZp bGVzeXN0ZW0gdHlwZXMsIHRoaXMgbWF5IHZhcnkgZnJvbSBmaWxlCkBAIC0xMDI4LDcgKzEwMjgs NyBAQAogCXN0cnVjdCBtb3VudCAqbXA7CiAJaW50IGVycm9yOwogCi0gcmV0cnk6CityZXRyeToK IAlpZiAodnAgIT0gTlVMTCkgewogCQlpZiAoKGVycm9yID0gVk9QX0dFVFdSSVRFTU9VTlQodnAs IG1wcCkpICE9IDApIHsKIAkJCSptcHAgPSBOVUxMOwpJbmRleDoga2Vybl90aHJlYWQuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBrZXJuX3RocmVhZC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3RocmVh ZC5jCSh3b3JraW5nIGNvcHkpCkBAIC04NTIsNyArODUyLDcgQEAKIAlQUk9DX1NMT0NLX0FTU0VS VChwLCBNQV9PV05FRCk7CiAJd2FrZXVwX3N3YXBwZXIgPSAwOwogCWlmICghUF9TSE9VTERTVE9Q KHApKSB7Ci0gICAgICAgICAgICAgICAgRk9SRUFDSF9USFJFQURfSU5fUFJPQyhwLCB0ZCkgewor CQlGT1JFQUNIX1RIUkVBRF9JTl9QUk9DKHAsIHRkKSB7CiAJCQl0aHJlYWRfbG9jayh0ZCk7CiAJ CQlpZiAoVERfSVNfU1VTUEVOREVEKHRkKSkgewogCQkJCXdha2V1cF9zd2FwcGVyIHw9IHRocmVh ZF91bnN1c3BlbmRfb25lKHRkKTsKQEAgLTg5OCw3ICs4OTgsNyBAQAogCSAqIHRvIGNvbnRpbnVl IGhvd2V2ZXIgYXMgdGhpcyBpcyBhIGJhZCBwbGFjZSB0byBzdG9wLgogCSAqLwogCWlmICgocC0+ cF9udW10aHJlYWRzICE9IDEpICYmICghUF9TSE9VTERTVE9QKHApKSkgewotICAgICAgICAgICAg ICAgIEZPUkVBQ0hfVEhSRUFEX0lOX1BST0MocCwgdGQpIHsKKwkJRk9SRUFDSF9USFJFQURfSU5f UFJPQyhwLCB0ZCkgewogCQkJdGhyZWFkX2xvY2sodGQpOwogCQkJaWYgKFREX0lTX1NVU1BFTkRF RCh0ZCkpIHsKIAkJCQl3YWtldXBfc3dhcHBlciB8PSB0aHJlYWRfdW5zdXNwZW5kX29uZSh0ZCk7 CkluZGV4OiBzdWJyX3NtcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1YnJfc21wLmMJKHJldmlzaW9uIDIx MDc2OCkKKysrIHN1YnJfc21wLmMJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBAQAog CQkvKiBzcGluIG9uIGVudHJ5IHJlbmRlenZvdXMgKi8KIAkJYXRvbWljX2FkZF9pbnQoJnNtcF9y dl93YWl0ZXJzWzFdLCAxKTsKIAkJd2hpbGUgKHNtcF9ydl93YWl0ZXJzWzFdIDwgc21wX3J2X25j cHVzKQotICAgICAgICAgICAgICAgIAljcHVfc3BpbndhaXQoKTsKKwkJCWNwdV9zcGlud2FpdCgp OwogCX0KIAogCS8qIGFjdGlvbiBmdW5jdGlvbiAqLwpAQCAtMzY3LDcgKzM2Nyw3IEBACiAJLyog c3BpbiBvbiBleGl0IHJlbmRlenZvdXMgKi8KIAlhdG9taWNfYWRkX2ludCgmc21wX3J2X3dhaXRl cnNbMl0sIDEpOwogCWlmIChsb2NhbF90ZWFyZG93bl9mdW5jID09IHNtcF9ub19yZW5kZXZvdXNf YmFycmllcikKLSAgICAgICAgICAgICAgICByZXR1cm47CisJCXJldHVybjsKIAl3aGlsZSAoc21w X3J2X3dhaXRlcnNbMl0gPCBzbXBfcnZfbmNwdXMpCiAJCWNwdV9zcGlud2FpdCgpOwogCkluZGV4 OiBzdWJyX2tkYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1YnJfa2RiLmMJKHJldmlzaW9uIDIxMDc2OCkK KysrIHN1YnJfa2RiLmMJKHdvcmtpbmcgY29weSkKQEAgLTQxMiw4ICs0MTIsOCBAQAogI2lmIGRl ZmluZWQoU01QKSAmJiBkZWZpbmVkKEtEQl9TVE9QUEVEUENCKQogCXN0cnVjdCBwY3B1ICpwYzsK ICNlbmRpZgotIAotCWlmICh0aHIgPT0gY3VydGhyZWFkKSAKKworCWlmICh0aHIgPT0gY3VydGhy ZWFkKQogCQlyZXR1cm4gKCZrZGJfcGNiKTsKIAogI2lmIGRlZmluZWQoU01QKSAmJiBkZWZpbmVk KEtEQl9TVE9QUEVEUENCKQpJbmRleDogc2NoZWRfdWxlLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2NoZWRf dWxlLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHNjaGVkX3VsZS5jCSh3b3JraW5nIGNvcHkpCkBA IC0xNjgyLDcgKzE2ODIsNyBAQAogCiAJdGQtPnRkX2Jhc2VfdXNlcl9wcmkgPSBwcmlvOwogCWlm ICh0ZC0+dGRfZmxhZ3MgJiBUREZfVUJPUlJPV0lORyAmJiB0ZC0+dGRfdXNlcl9wcmkgPD0gcHJp bykKLSAgICAgICAgICAgICAgICByZXR1cm47CisJCXJldHVybjsKIAlvbGRwcmlvID0gdGQtPnRk X3VzZXJfcHJpOwogCXRkLT50ZF91c2VyX3ByaSA9IHByaW87CiB9CkBAIC0yMDg5LDcgKzIwODks NyBAQAogCQl0ZC0+dGRfYmFzZV9wcmkgPSB0ZC0+dGRfdXNlcl9wcmk7CiAJCXRkcV9zZXRsb3dw cmkoVERRX1NFTEYoKSwgdGQpOwogCQl0aHJlYWRfdW5sb2NrKHRkKTsKLSAgICAgICAgfQorCX0K IH0KIAogLyoKSW5kZXg6IGtlcm5fdW10eC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fdW10eC5jCShy ZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3VtdHguYwkod29ya2luZyBjb3B5KQpAQCAtMTA0MSw3 ICsxMDQxLDcgQEAKIAl1bXR4cV91bmxvY2soJnVxLT51cV9rZXkpOwogCWlmIChjb21wYXQzMiA9 PSAwKQogCQl0bXAgPSBmdXdvcmQoYWRkcik7Ci0gICAgICAgIGVsc2UKKwllbHNlCiAJCXRtcCA9 ICh1bnNpZ25lZCBpbnQpZnV3b3JkMzIoYWRkcik7CiAJaWYgKHRtcCAhPSBpZCkgewogCQl1bXR4 cV9sb2NrKCZ1cS0+dXFfa2V5KTsKSW5kZXg6IGxpbmtfZWxmX29iai5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGxpbmtfZWxmX29iai5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBsaW5rX2VsZl9vYmouYwkod29y a2luZyBjb3B5KQpAQCAtMTM3NiwxNSArMTM3NiwxNSBAQAogbGlua19lbGZfc3ltdGFiX2dldChs aW5rZXJfZmlsZV90IGxmLCBjb25zdCBFbGZfU3ltICoqc3ltdGFiKQogewogICAgIGVsZl9maWxl X3QgZWYgPSAoZWxmX2ZpbGVfdClsZjsKLSAgICAKKwogICAgICpzeW10YWIgPSBlZi0+ZGRic3lt dGFiOwotICAgIAorCiAgICAgaWYgKCpzeW10YWIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuICgw KTsKIAogICAgIHJldHVybiAoZWYtPmRkYnN5bWNudCk7CiB9Ci0gICAgCisKIHN0YXRpYyBsb25n CiBsaW5rX2VsZl9zdHJ0YWJfZ2V0KGxpbmtlcl9maWxlX3QgbGYsIGNhZGRyX3QgKnN0cnRhYikK IHsKSW5kZXg6IHVpcGNfc3lzY2FsbHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX3N5c2NhbGxzLmMJ KHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfc3lzY2FsbHMuYwkod29ya2luZyBjb3B5KQpAQCAt MjMyMSw5ICsyMzIxLDkgQEAKIAkgKiByZWZlcmVuY2UgY291bnQuICBPdGhlcndpc2UsIGlmIHRo ZSBwcm90b2NvbCBjYWxscyBzb2ZyZWUoKSwKIAkgKiB0aGUgc29ja2V0IHdpbGwgYmUgcmVsZWFz ZWQgZHVlIHRvIGEgemVybyByZWZjb3VudC4KIAkgKi8KLSAgICAgICAgU09DS19MT0NLKHNvKTsK LSAgICAgICAgc29yZWYoc28pOyAgICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIGRlc2NyaXB0 b3IgcmVmZXJlbmNlICovCi0gICAgICAgIFNPQ0tfVU5MT0NLKHNvKTsKKwlTT0NLX0xPQ0soc28p OworCXNvcmVmKHNvKTsJCQkvKiBmaWxlIGRlc2NyaXB0b3IgcmVmZXJlbmNlICovCisJU09DS19V TkxPQ0soc28pOwogCiAJQUNDRVBUX0xPQ0soKTsKIApAQCAtMjY1OCw3ICsyNjU4LDcgQEAKIAl9 CiAJYXVpby51aW9faW92ID0gaW92OwogCWF1aW8udWlvX2lvdmNudCA9IHVhcC0+aW92bGVuOwot ICAJYXVpby51aW9fc2VnZmxnID0gVUlPX1VTRVJTUEFDRTsKKwlhdWlvLnVpb19zZWdmbGcgPSBV SU9fVVNFUlNQQUNFOwogCWF1aW8udWlvX3J3ID0gVUlPX1JFQUQ7CiAJYXVpby51aW9fdGQgPSB0 ZDsKIAlhdWlvLnVpb19vZmZzZXQgPSAwOwkJCS8qIFhYWCAqLwpJbmRleDoga2Vybl9zd2l0Y2gu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBrZXJuX3N3aXRjaC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJu X3N3aXRjaC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTYgKzExNSwxNiBAQAogewogCXN0cnVj dCBzeXNjdGxfb2lkICpwOwogCXVpbnRwdHJfdCBjb3VudGVyOwotICAgICAgICBpbnQgZXJyb3I7 CisJaW50IGVycm9yOwogCWludCB2YWw7CiAJaW50IGk7CiAKLSAgICAgICAgdmFsID0gMDsKLSAg ICAgICAgZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRwLCAmdmFsLCAwLCByZXEpOwotICAg ICAgICBpZiAoZXJyb3IgIT0gMCB8fCByZXEtPm5ld3B0ciA9PSBOVUxMKQotICAgICAgICAgICAg ICAgIHJldHVybiAoZXJyb3IpOwotICAgICAgICBpZiAodmFsID09IDApCi0gICAgICAgICAgICAg ICAgcmV0dXJuICgwKTsKKwl2YWwgPSAwOworCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lk cCwgJnZhbCwgMCwgcmVxKTsKKwlpZiAoZXJyb3IgIT0gMCB8fCByZXEtPm5ld3B0ciA9PSBOVUxM KQorCQlyZXR1cm4gKGVycm9yKTsKKwlpZiAodmFsID09IDApCisJCXJldHVybiAoMCk7CiAJLyoK IAkgKiBUcmF2ZXJzZSB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZiBfa2Vybl9zY2hlZF9zdGF0cyBh bmQgcmVzZXQgZWFjaAogCSAqIHRvIDAuICBTa2lwIHRoZSByZXNldCBlbnRyeS4KSW5kZXg6IHZm c19iaW8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSB2ZnNfYmlvLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHZm c19iaW8uYwkod29ya2luZyBjb3B5KQpAQCAtMzE3OSw5ICszMTc5LDkgQEAKIAl9CiB9CiAKLSAv KgotICAqIENhbGwgYmFjayBmdW5jdGlvbiBmcm9tIHN0cnVjdCBiaW8gYmFjayB1cCB0byBzdHJ1 Y3QgYnVmLgotICAqLworLyoKKyAqIENhbGwgYmFjayBmdW5jdGlvbiBmcm9tIHN0cnVjdCBiaW8g YmFjayB1cCB0byBzdHJ1Y3QgYnVmLgorICovCiBzdGF0aWMgdm9pZAogYnVmZG9uZWJpbyhzdHJ1 Y3QgYmlvICpiaXApCiB7CkluZGV4OiBrZXJuX3NpZy5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fc2ln LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIGtlcm5fc2lnLmMJKHdvcmtpbmcgY29weSkKQEAgLTI3 MTksNyArMjcxOSw3IEBACiAJCVBST0NfU0xPQ0socCk7CiAJfQogfQotIAorCiAvKgogICogVGFr ZSB0aGUgYWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHNpZ25hbAogICogZnJvbSB0aGUgY3VycmVu dCBzZXQgb2YgcGVuZGluZyBzaWduYWxzLgpAQCAtMjk5MCw3ICsyOTkwLDcgQEAKICNpZiBkZWZp bmVkKENPTVBSRVNTX1VTRVJfQ09SRVMpCiBpbnQgY29tcHJlc3NfdXNlcl9jb3JlcyA9IDE7CiBT WVNDVExfSU5UKF9rZXJuLCBPSURfQVVUTywgY29tcHJlc3NfdXNlcl9jb3JlcywgQ1RMRkxBR19S VywKLSAgICAgICAgJmNvbXByZXNzX3VzZXJfY29yZXMsIDAsICIiKTsKKyAgICAmY29tcHJlc3Nf dXNlcl9jb3JlcywgMCwgIiIpOwogCiBpbnQgY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID0g LTE7IC8qIGRlZmF1bHQgbGV2ZWwgKi8KIFNZU0NUTF9JTlQoX2tlcm4sIE9JRF9BVVRPLCBjb21w cmVzc191c2VyX2NvcmVzX2d6bGV2ZWwsIENUTEZMQUdfUlcsCkBAIC0zMDUyLDkgKzMwNTIsOSBA QAogCQkJCQkJICAgICJmb3IgY29yZWZpbGUgaG9zdG5hbWVcbiIsCiAJCQkJCQkgICAgKGxvbmcp cGlkLCBuYW1lLAogCQkJCQkJICAgICh1X2xvbmcpdWlkKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbm9tZW07Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisJCQkJCQlnb3RvIG5vbWVtOworCQkJCQl9CisJCQkJfQogCQkJCWdldGNyZWRob3N0bmFt ZSh0ZC0+dGRfdWNyZWQsIGhvc3RuYW1lLAogCQkJCSAgICBNQVhIT1NUTkFNRUxFTik7CiAJCQkJ c2J1Zl9wcmludGYoJnNiLCAiJXMiLCBob3N0bmFtZSk7CkBAIC0zMTIzLDcgKzMxMjMsNyBAQAog CQkJCX0KIAkJCQlsb2coTE9HX0VSUiwKIAkJCQkgICAgInBpZCAlZCAoJXMpLCB1aWQgKCV1KTog IFBhdGggYCVzJyBmYWlsZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im9uIGluaXRpYWwgb3BlbiB0ZXN0LCBlcnJvciA9ICVkXG4iLAorCQkJCSAgICAib24gaW5pdGlh bCBvcGVuIHRlc3QsIGVycm9yID0gJWRcbiIsCiAJCQkJICAgIHBpZCwgbmFtZSwgdWlkLCB0ZW1w LCBlcnJvcik7CiAJCQkJZnJlZSh0ZW1wLCBNX1RFTVApOwogCQkJCXJldHVybiAoTlVMTCk7CkBA IC0zMTM2LDggKzMxMzYsOCBAQAogCQkJaWYgKGVycm9yKSB7CiAJCQkJbG9nKExPR19FUlIsCiAJ CQkJICAgICJwaWQgJWQgKCVzKSwgdWlkICgldSk6ICBQYXRoIGAlcycgZmFpbGVkICIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBjbG9zZSBhZnRlciBpbml0aWFsIG9w ZW4gdGVzdCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yID0g JWRcbiIsCisJCQkJICAgICJvbiBjbG9zZSBhZnRlciBpbml0aWFsIG9wZW4gdGVzdCwgIgorCQkJ CSAgICAiZXJyb3IgPSAlZFxuIiwKIAkJCQkgICAgcGlkLCBuYW1lLCB1aWQsIHRlbXAsIGVycm9y KTsKIAkJCQlmcmVlKHRlbXAsIE1fVEVNUCk7CiAJCQkJcmV0dXJuIChOVUxMKTsKSW5kZXg6IHVp cGNfdXNycmVxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gdWlwY191c3JyZXEuYwkocmV2aXNpb24gMjEwNzY4 KQorKysgdWlwY191c3JyZXEuYwkod29ya2luZyBjb3B5KQpAQCAtMTkzNSw5ICsxOTM1LDkgQEAK IAlpZiAoY29udHJvbCAhPSBOVUxMKQogCQlmb3IgKG4gPSBjb250cm9sLCBuX3ByZXYgPSBOVUxM OyBuICE9IE5VTEw7KSB7CiAJCQljbSA9IG10b2Qobiwgc3RydWN0IGNtc2doZHIgKik7Ci0gICAg CQkJaWYgKGNtLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKwkJCWlmIChjbS0+Y21zZ19s ZXZlbCA9PSBTT0xfU09DS0VUICYmCiAJCQkgICAgY20tPmNtc2dfdHlwZSA9PSBTQ01fQ1JFRFMp IHsKLSAgICAJCQkJaWYgKG5fcHJldiA9PSBOVUxMKQorCQkJCWlmIChuX3ByZXYgPT0gTlVMTCkK IAkJCQkJY29udHJvbCA9IG4tPm1fbmV4dDsKIAkJCQllbHNlCiAJCQkJCW5fcHJldi0+bV9uZXh0 ID0gbi0+bV9uZXh0OwpAQCAtMjI5MywxMSArMjI5MywxMSBAQAogewogCXN0cnVjdCB1bnBjYiAq dW5wOwogCi0gICAgICAgIGlmICghaGF2ZV9hZGRyKSB7Ci0gICAgICAgICAgICAgICAgZGJfcHJp bnRmKCJ1c2FnZTogc2hvdyB1bnBjYiA8YWRkcj5cbiIpOwotICAgICAgICAgICAgICAgIHJldHVy bjsKLSAgICAgICAgfQotICAgICAgICB1bnAgPSAoc3RydWN0IHVucGNiICopYWRkcjsKKwlpZiAo IWhhdmVfYWRkcikgeworCQlkYl9wcmludGYoInVzYWdlOiBzaG93IHVucGNiIDxhZGRyPlxuIik7 CisJCXJldHVybjsKKwl9CisJdW5wID0gKHN0cnVjdCB1bnBjYiAqKWFkZHI7CiAKIAlkYl9wcmlu dGYoInVucF9zb2NrZXQ6ICVwICAgdW5wX3Zub2RlOiAlcFxuIiwgdW5wLT51bnBfc29ja2V0LAog CSAgICB1bnAtPnVucF92bm9kZSk7CkluZGV4OiB2ZnNfZGVmYXVsdC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHZmc19kZWZhdWx0LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHZmc19kZWZhdWx0LmMJKHdvcmtp bmcgY29weSkKQEAgLTYyNSw4ICs2MjUsOCBAQAogCS8qCiAJICogTUFSSy9TQ0FOIGluaXRpYWxp emF0aW9uIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzLgogCSAqLwotICAgICAgICBUQUlMUV9GT1JF QUNIKGJwLCAmYm8tPmJvX2RpcnR5LmJ2X2hkLCBiX2JvYnVmcykgewotICAgICAgICAgICAgICAg IGJwLT5iX3ZmbGFncyAmPSB+QlZfU0NBTk5FRDsKKwlUQUlMUV9GT1JFQUNIKGJwLCAmYm8tPmJv X2RpcnR5LmJ2X2hkLCBiX2JvYnVmcykgeworCQlicC0+Yl92ZmxhZ3MgJj0gfkJWX1NDQU5ORUQ7 CiAJCWJwLT5iX2Vycm9yID0gMDsKIAl9CiAKSW5kZXg6IGluaXRfbWFpbi5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGluaXRfbWFpbi5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBpbml0X21haW4uYwkod29ya2lu ZyBjb3B5KQpAQCAtNzEwLDcgKzcxMCw3IEBACiAJCQlvcHRpb25zID0gMTsKIAkJfQogI2lmZGVm IG5vdHlldAotICAgICAgICAgICAgICAgIGlmIChib290aG93dG8gJiBSQl9GQVNUQk9PVCkgewor CQlpZiAoYm9vdGhvd3RvICYgUkJfRkFTVEJPT1QpIHsKIAkJCSh2b2lkKXN1Ynl0ZSgtLXVjcCwg J2YnKTsKIAkJCW9wdGlvbnMgPSAxOwogCQl9CkluZGV4OiB1aXBjX3NvY2tldC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHVpcGNfc29ja2V0LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfc29ja2V0LmMJ KHdvcmtpbmcgY29weSkKQEAgLTEzODUsMTcgKzEzODUsMTcgQEAKIAllbHNlCiAJCXNiLT5zYl9t YiA9IG5leHRyZWNvcmQ7CiAKLSAgICAgICAgLyoKKwkvKgogICAgICAgICAgKiBOb3cgdXBkYXRl IGFueSBkZXBlbmRlbnQgc29ja2V0IGJ1ZmZlciBmaWVsZHMgdG8gcmVmbGVjdCB0aGUgbmV3CiAg ICAgICAgICAqIHN0YXRlLiAgVGhpcyBpcyBhbiBleHBhbmRlZCBpbmxpbmUgb2YgU0JfRU1QVFlf RklYVVAoKSwgd2l0aCB0aGUKIAkgKiBhZGRpdGlvbiBvZiBhIHNlY29uZCBjbGF1c2UgdGhhdCB0 YWtlcyBjYXJlIG9mIHRoZSBjYXNlIHdoZXJlCiAJICogc2JfbWIgaGFzIGJlZW4gdXBkYXRlZCwg YnV0IHJlbWFpbnMgdGhlIGxhc3QgcmVjb3JkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHNi LT5zYl9tYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgc2ItPnNiX21idGFpbCA9IE5VTEw7 Ci0gICAgICAgICAgICAgICAgc2ItPnNiX2xhc3RyZWNvcmQgPSBOVUxMOwotICAgICAgICB9IGVs c2UgaWYgKHNiLT5zYl9tYi0+bV9uZXh0cGt0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgc2It PnNiX2xhc3RyZWNvcmQgPSBzYi0+c2JfbWI7CisJaWYgKHNiLT5zYl9tYiA9PSBOVUxMKSB7CisJ CXNiLT5zYl9tYnRhaWwgPSBOVUxMOworCQlzYi0+c2JfbGFzdHJlY29yZCA9IE5VTEw7CisJfSBl bHNlIGlmIChzYi0+c2JfbWItPm1fbmV4dHBrdCA9PSBOVUxMKQorCQlzYi0+c2JfbGFzdHJlY29y ZCA9IHNiLT5zYl9tYjsKIH0KIAogCkBAIC0xNzUxLDggKzE3NTEsOCBAQAogCQkJCQkqbXAgPSBt X2NvcHltKG0sIDAsIGxlbiwgY29weV9mbGFnKTsKIAkJCQkJaWYgKGNvcHlfZmxhZyA9PSBNX1dB SVQpCiAJCQkJCQlTT0NLQlVGX0xPQ0soJnNvLT5zb19yY3YpOwotIAkJCQkJaWYgKCptcCA9PSBO VUxMKSB7Ci0gCQkJCQkJLyoKKwkJCQkJaWYgKCptcCA9PSBOVUxMKSB7CisJCQkJCQkvKgogIAkJ CQkJCSAqIG1fY29weW0oKSBjb3VsZG4ndAogCQkJCQkJICogYWxsb2NhdGUgYW4gbWJ1Zi4gIEFk anVzdAogCQkJCQkJICogdWlvX3Jlc2lkIGJhY2sgKGl0IHdhcwpAQCAtMTc2MCw5ICsxNzYwLDkg QEAKIAkJCQkJCSAqIGJ5dGVzLCB3aGljaCB3ZSBkaWRuJ3QgZW5kCiAJCQkJCQkgKiB1cCAiY29w eWluZyIgb3ZlcikuCiAgCQkJCQkJICovCi0gCQkJCQkJdWlvLT51aW9fcmVzaWQgKz0gbGVuOwot IAkJCQkJCWJyZWFrOwotIAkJCQkJfQorCQkJCQkJdWlvLT51aW9fcmVzaWQgKz0gbGVuOworCQkJ CQkJYnJlYWs7CisJCQkJCX0KIAkJCQl9CiAJCQkJbS0+bV9kYXRhICs9IGxlbjsKIAkJCQltLT5t X2xlbiAtPSBsZW47CkluZGV4OiBrZXJuX2NvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrZXJuX2NvbnMu YwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9jb25zLmMJKHdvcmtpbmcgY29weSkKQEAgLTEx Miw3ICsxMTIsNyBAQAogCSAqIG9uY2Ugd2UgYXJlIHVwIGFuZCBnb2luZy4KIAkgKiAKIAkgKi8K LSAgICAgICAgY25fbXV0ZSA9ICgoYm9vdGhvd3RvICYgKFJCX01VVEUKKwljbl9tdXRlID0gKChi b290aG93dG8gJiAoUkJfTVVURQogCQkJfFJCX1NJTkdMRQogCQkJfFJCX1ZFUkJPU0UKIAkJCXxS Ql9BU0tOQU1FKSkgPT0gUkJfTVVURSk7CkluZGV4OiBpbWdhY3RfZWxmLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gaW1nYWN0X2VsZi5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBpbWdhY3RfZWxmLmMJKHdvcmtp bmcgY29weSkKQEAgLTY0NSwxMSArNjQ1LDExIEBACiAJCQkvKiBMb2FkYWJsZSBzZWdtZW50ICov CiAJCQlwcm90ID0gMDsKIAkJCWlmIChwaGRyW2ldLnBfZmxhZ3MgJiBQRl9YKQotICAJCQkJcHJv dCB8PSBWTV9QUk9UX0VYRUNVVEU7CisJCQkJcHJvdCB8PSBWTV9QUk9UX0VYRUNVVEU7CiAJCQlp ZiAocGhkcltpXS5wX2ZsYWdzICYgUEZfVykKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9XUklURTsK KwkJCQlwcm90IHw9IFZNX1BST1RfV1JJVEU7CiAJCQlpZiAocGhkcltpXS5wX2ZsYWdzICYgUEZf UikKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFEOworCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFE OwogCiAJCQlpZiAoKGVycm9yID0gX19lbGZOKGxvYWRfc2VjdGlvbikodm1zcGFjZSwKIAkJCSAg ICBpbWdwLT5vYmplY3QsIHBoZHJbaV0ucF9vZmZzZXQsCkBAIC02NjIsNyArNjYyLDcgQEAKIAkJ CSAqIGZpcnN0IHNlZ21lbnQuCiAJCQkgKi8KIAkJCWlmIChudW1zZWdzID09IDApCi0gIAkJCQli YXNlX2FkZHIgPSB0cnVuY19wYWdlKHBoZHJbaV0ucF92YWRkciArCisJCQkJYmFzZV9hZGRyID0g dHJ1bmNfcGFnZShwaGRyW2ldLnBfdmFkZHIgKwogCQkJCSAgICByYmFzZSk7CiAJCQludW1zZWdz Kys7CiAJCX0KQEAgLTc5MywxMSArNzkzLDExIEBACiAJCQkJYnJlYWs7CiAJCQlwcm90ID0gMDsK IAkJCWlmIChwaGRyW2ldLnBfZmxhZ3MgJiBQRl9YKQotICAJCQkJcHJvdCB8PSBWTV9QUk9UX0VY RUNVVEU7CisJCQkJcHJvdCB8PSBWTV9QUk9UX0VYRUNVVEU7CiAJCQlpZiAocGhkcltpXS5wX2Zs YWdzICYgUEZfVykKLSAgCQkJCXByb3QgfD0gVk1fUFJPVF9XUklURTsKKwkJCQlwcm90IHw9IFZN X1BST1RfV1JJVEU7CiAJCQlpZiAocGhkcltpXS5wX2ZsYWdzICYgUEZfUikKLSAgCQkJCXByb3Qg fD0gVk1fUFJPVF9SRUFEOworCQkJCXByb3QgfD0gVk1fUFJPVF9SRUFEOwogCiAjaWYgZGVmaW5l ZChfX2lhNjRfXykgJiYgX19FTEZfV09SRF9TSVpFID09IDMyICYmIGRlZmluZWQoSUEzMl9NRV9I QVJERVIpCiAJCQkvKgpAQCAtMTA1NSwyNCArMTA1NSwyNCBAQAogCWhkciA9IE5VTEw7CiAKICNp ZmRlZiBDT01QUkVTU19VU0VSX0NPUkVTCi0gICAgICAgIGlmIChkb2luZ19jb21wcmVzcykgewot ICAgICAgICAgICAgICAgIHAgPSBnem9wZW5fZmxhZ3M7Ci0gICAgICAgICAgICAgICAgKnArKyA9 ICd3JzsKLSAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID49 IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsIDw9 IDkpCi0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gJzAnICsgY29tcHJlc3NfdXNlcl9j b3Jlc19nemxldmVsOwotICAgICAgICAgICAgICAgICpwID0gMDsKLSAgICAgICAgICAgICAgICBn emZpbGUgPSBnel9vcGVuKCIiLCBnem9wZW5fZmxhZ3MsIHZwKTsKLSAgICAgICAgICAgICAgICBp ZiAoZ3pmaWxlID09IFpfTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBF RkFVTFQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgIGNvcmVfYnVmID0gbWFsbG9jKENPUkVfQlVGX1NJWkUsIE1f VEVNUCwgTV9XQUlUT0sgfCBNX1pFUk8pOwotICAgICAgICAgICAgICAgIGlmICghY29yZV9idWYp IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRU5PTUVNOwotICAgICAgICAgICAg ICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorCWlm IChkb2luZ19jb21wcmVzcykgeworCQlwID0gZ3pvcGVuX2ZsYWdzOworCQkqcCsrID0gJ3cnOwor CQlpZiAoY29tcHJlc3NfdXNlcl9jb3Jlc19nemxldmVsID49IDAgJiYKKwkJICAgIGNvbXByZXNz X3VzZXJfY29yZXNfZ3psZXZlbCA8PSA5KQorCQkJKnArKyA9ICcwJyArIGNvbXByZXNzX3VzZXJf Y29yZXNfZ3psZXZlbDsKKwkJKnAgPSAwOworCQlnemZpbGUgPSBnel9vcGVuKCIiLCBnem9wZW5f ZmxhZ3MsIHZwKTsKKwkJaWYgKGd6ZmlsZSA9PSBaX05VTEwpIHsKKwkJCWVycm9yID0gRUZBVUxU OworCQkJZ290byBkb25lOworCQl9CisJCWNvcmVfYnVmID0gbWFsbG9jKENPUkVfQlVGX1NJWkUs IE1fVEVNUCwgTV9XQUlUT0sgfCBNX1pFUk8pOworCQlpZiAoIWNvcmVfYnVmKSB7CisJCQllcnJv ciA9IEVOT01FTTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCX0KICNlbmRpZgogCiAJLyogU2l6ZSB0 aGUgcHJvZ3JhbSBzZWdtZW50cy4gKi8KSW5kZXg6IHN1YnJfc3RhY2suYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzdWJyX3N0YWNrLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHN1YnJfc3RhY2suYwkod29ya2lu ZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBACiAJCSpuYW1lID0gc3ltdmFsLm5hbWU7CiAJCXJl dHVybiAoMCk7CiAJfQotIG91dDoKK291dDoKIAkqb2Zmc2V0ID0gMDsKIAkqbmFtZSA9ICI/PyI7 CiAJcmV0dXJuIChFTk9FTlQpOwpJbmRleDogc3Vicl90cmFwLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3Vi cl90cmFwLmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHN1YnJfdHJhcC5jCSh3b3JraW5nIGNvcHkp CkBAIC05Miw3ICs5Miw3IEBACiAJc3RydWN0IHByb2MgKnAgPSB0ZC0+dGRfcHJvYzsKIAogCUNU UjMoS1RSX1NZU0MsICJ1c2VycmV0OiB0aHJlYWQgJXAgKHBpZCAlZCwgJXMpIiwgdGQsIHAtPnBf cGlkLAotICAgICAgICAgICAgdGQtPnRkX25hbWUpOworCSAgICB0ZC0+dGRfbmFtZSk7CiAjaWYg MAogI2lmZGVmIERJQUdOT1NUSUMKIAkvKiBDaGVjayB0aGF0IHdlIGNhbGxlZCBzaWdub3RpZnko KSBlbm91Z2guICovCkBAIC0xNDksNyArMTQ5LDcgQEAKIAlwID0gdGQtPnRkX3Byb2M7CiAKIAlD VFIzKEtUUl9TWVNDLCAiYXN0OiB0aHJlYWQgJXAgKHBpZCAlZCwgJXMpIiwgdGQsIHAtPnBfcGlk LAotICAgICAgICAgICAgcC0+cF9jb21tKTsKKwkgICAgcC0+cF9jb21tKTsKIAlLQVNTRVJUKFRS QVBGX1VTRVJNT0RFKGZyYW1lcCksICgiYXN0IGluIGtlcm5lbCBtb2RlIikpOwogCVdJVE5FU1Nf V0FSTihXQVJOX1BBTklDLCBOVUxMLCAiUmV0dXJuaW5nIHRvIHVzZXIgbW9kZSIpOwogCW10eF9h c3NlcnQoJkdpYW50LCBNQV9OT1RPV05FRCk7CkBAIC0zMzYsNyArMzM2LDcgQEAKIAkJQ1RSNChL VFJfU1lTQywgInN5c2NhbGw6IHA9JXAgZXJyb3I9JWQgcmV0dXJuICUjbHggJSNseCIsCiAJCSAg ICBwLCBlcnJvciwgdGQtPnRkX3JldHZhbFswXSwgdGQtPnRkX3JldHZhbFsxXSk7CiAJfQotIHJl dHZhbDoKK3JldHZhbDoKIAlpZiAodHJhY2VkKSB7CiAJCVBST0NfTE9DSyhwKTsKIAkJdGQtPnRk X2RiZ2ZsYWdzICY9IH5UREJfU0NFOwpJbmRleDogc2NoZWRfNGJzZC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHNjaGVkXzRic2QuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc2NoZWRfNGJzZC5jCSh3b3JraW5n IGNvcHkpCkBAIC0xMzYsOSArMTM2LDkgQEAKICNlbmRpZgogCiBzdGF0aWMgc3RydWN0IGtwcm9j X2Rlc2Mgc2NoZWRfa3AgPSB7Ci0gICAgICAgICJzY2hlZGNwdSIsCi0gICAgICAgIHNjaGVkY3B1 X3RocmVhZCwKLSAgICAgICAgTlVMTAorCSJzY2hlZGNwdSIsCisJc2NoZWRjcHVfdGhyZWFkLAor CU5VTEwKIH07CiBTWVNJTklUKHNjaGVkY3B1LCBTSV9TVUJfUlVOX1NDSEVEVUxFUiwgU0lfT1JE RVJfRklSU1QsIGtwcm9jX3N0YXJ0LAogICAgICZzY2hlZF9rcCk7CkBAIC0xNzcsNyArMTc3LDcg QEAKIAogCW5ld192YWwgPSBzY2hlZF9xdWFudHVtICogdGljazsKIAllcnJvciA9IHN5c2N0bF9o YW5kbGVfaW50KG9pZHAsICZuZXdfdmFsLCAwLCByZXEpOwotICAgICAgICBpZiAoZXJyb3IgIT0g MCB8fCByZXEtPm5ld3B0ciA9PSBOVUxMKQorCWlmIChlcnJvciAhPSAwIHx8IHJlcS0+bmV3cHRy ID09IE5VTEwpCiAJCXJldHVybiAoZXJyb3IpOwogCWlmIChuZXdfdmFsIDwgdGljaykKIAkJcmV0 dXJuIChFSU5WQUwpOwpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCUtBU1NFUlQoKG5ld3RkLT50ZF9p bmhpYml0b3JzID09IDApLAogCQkJKCJ0cnlpbmcgdG8gcnVuIGluaGliaXRlZCB0aHJlYWQiKSk7 CiAJCW5ld3RkLT50ZF9mbGFncyB8PSBUREZfRElEUlVOOwotICAgICAgICAJVERfU0VUX1JVTk5J TkcobmV3dGQpOworCQlURF9TRVRfUlVOTklORyhuZXd0ZCk7CiAJCWlmICgobmV3dGQtPnRkX2Zs YWdzICYgVERGX05PTE9BRCkgPT0gMCkKIAkJCXNjaGVkX2xvYWRfYWRkKCk7CiAJfSBlbHNlIHsK SW5kZXg6IGtlcm5fbGlua2VyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2Vybl9saW5rZXIuYwkocmV2aXNp b24gMjEwNzY4KQorKysga2Vybl9saW5rZXIuYwkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUs NyBAQAogI2lmZGVmIEtMRF9ERUJVRwogaW50IGtsZF9kZWJ1ZyA9IDA7CiBTWVNDVExfSU5UKF9k ZWJ1ZywgT0lEX0FVVE8sIGtsZF9kZWJ1ZywgQ1RMRkxBR19SVywKLSAgICAgICAgJmtsZF9kZWJ1 ZywgMCwgIlNldCB2YXJpb3VzIGxldmVscyBvZiBLTEQgZGVidWciKTsKKyAgICAma2xkX2RlYnVn LCAwLCAiU2V0IHZhcmlvdXMgbGV2ZWxzIG9mIEtMRCBkZWJ1ZyIpOwogI2VuZGlmCiAKICNkZWZp bmUJS0xEX0xPQ0soKQkJc3hfeGxvY2soJmtsZF9zeCkKSW5kZXg6IGtlcm5fY3B1LmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0ga2Vybl9jcHUuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9jcHUuYwkod29y a2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBACiAJREVWTUVUSE9EKGRldmljZV9hdHRhY2gs CWNwdWZyZXFfYXR0YWNoKSwKIAlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJY3B1ZnJlcV9kZXRh Y2gpLAogCi0gICAgICAgIERFVk1FVEhPRChjcHVmcmVxX3NldCwJCWNmX3NldF9tZXRob2QpLAot ICAgICAgICBERVZNRVRIT0QoY3B1ZnJlcV9nZXQsCQljZl9nZXRfbWV0aG9kKSwKLSAgICAgICAg REVWTUVUSE9EKGNwdWZyZXFfbGV2ZWxzLAljZl9sZXZlbHNfbWV0aG9kKSwKKwlERVZNRVRIT0Qo Y3B1ZnJlcV9zZXQsCQljZl9zZXRfbWV0aG9kKSwKKwlERVZNRVRIT0QoY3B1ZnJlcV9nZXQsCQlj Zl9nZXRfbWV0aG9kKSwKKwlERVZNRVRIT0QoY3B1ZnJlcV9sZXZlbHMsCWNmX2xldmVsc19tZXRo b2QpLAogCXswLCAwfQogfTsKIHN0YXRpYyBkcml2ZXJfdCBjcHVmcmVxX2RyaXZlciA9IHsKSW5k ZXg6IHN5c3Zfc2htLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzdl9zaG0uYwkocmV2aXNpb24gMjEwNzY4 KQorKysgc3lzdl9zaG0uYwkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBACiAJCXJl dHVybiAoRU5PU1lTKTsKIAltdHhfbG9jaygmR2lhbnQpOwogCXNobW1hcF9zID0gcC0+cF92bXNw YWNlLT52bV9zaG07Ci0gCWlmIChzaG1tYXBfcyA9PSBOVUxMKSB7CisJaWYgKHNobW1hcF9zID09 IE5VTEwpIHsKIAkJZXJyb3IgPSBFSU5WQUw7CiAJCWdvdG8gZG9uZTI7CiAJfQpJbmRleDogc3Vi cl9tc2didWYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzdWJyX21zZ2J1Zi5jCShyZXZpc2lvbiAyMTA3Njgp CisrKyBzdWJyX21zZ2J1Zi5jCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBACiAJbWJw LT5tc2dfc2VxbW9kID0gU0VRTU9EKHNpemUpOwogCW1icC0+bXNnX3dzZXEgPSBNU0dCVUZfU0VR Tk9STShtYnAsIG1icC0+bXNnX3dzZXEpOwogCW1icC0+bXNnX3JzZXEgPSBNU0dCVUZfU0VRTk9S TShtYnAsIG1icC0+bXNnX3JzZXEpOwotICAgICAgICBtYnAtPm1zZ19wdHIgPSBwdHI7CisJbWJw LT5tc2dfcHRyID0gcHRyOwogCWNrc3VtID0gbXNnYnVmX2Nrc3VtKG1icCk7CiAJaWYgKGNrc3Vt ICE9IG1icC0+bXNnX2Nrc3VtKSB7CiAJCWlmIChib290dmVyYm9zZSkgewpJbmRleDogc3Vicl9t b2R1bGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBzdWJyX21vZHVsZS5jCShyZXZpc2lvbiAyMTA3NjgpCisr KyBzdWJyX21vZHVsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgY2Fk ZHJfdAljdXJwOwogICAgIHVpbnQzMl90CSpoZHI7CiAgICAgaW50CQluZXh0OwotICAgIAorCiAg ICAgaWYgKHByZWxvYWRfbWV0YWRhdGEgIT0gTlVMTCkgewogCQogCWN1cnAgPSBwcmVsb2FkX21l dGFkYXRhOwpAQCAtMTE1LDcgKzExNSw3IEBACiAgICAgY2FkZHJfdAljdXJwOwogICAgIHVpbnQz Ml90CSpoZHI7CiAgICAgaW50CQluZXh0OwotICAgIAorCiAgICAgaWYgKHByZWxvYWRfbWV0YWRh dGEgIT0gTlVMTCkgewogCQogCS8qIFBpY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYgbGFzdCB0aW1l ICovCkBAIC0yMDIsNyArMjAyLDcgQEAKICAgICB1aW50MzJfdAkqaGRyOwogICAgIGludAkJbmV4 dDsKICAgICBpbnQJCWNsZWFyaW5nOwotICAgIAorCiAgICAgaWYgKHByZWxvYWRfbWV0YWRhdGEg IT0gTlVMTCkgewogCQogCWNsZWFyaW5nID0gMDsKQEAgLTIzOCw3ICsyMzgsNyBAQAogICAgIHVp bnQzMl90CSpoZHI7CiAgICAgdm1fb2Zmc2V0X3QJKnB0cjsKICAgICBpbnQJCW5leHQ7Ci0gICAg CisKICAgICBpZiAocHJlbG9hZF9tZXRhZGF0YSAhPSBOVUxMKSB7CiAJCiAJY3VycCA9IHByZWxv YWRfbWV0YWRhdGE7CkluZGV4OiB0dHkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0dHkuYwkocmV2aXNpb24g MjEwNzY4KQorKysgdHR5LmMJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCwxMCArNDY4LDEwIEBACiAJ CQlpZiAoZXJyb3IpCiAJCQkJZ290byBkb25lOwogCQl9Ci0gCi0gCQl0cC0+dF9mbGFncyB8PSBU Rl9CVVNZX09VVDsKKworCQl0cC0+dF9mbGFncyB8PSBURl9CVVNZX09VVDsKIAkJZXJyb3IgPSB0 dHlkaXNjX3dyaXRlKHRwLCB1aW8sIGlvZmxhZyk7Ci0gCQl0cC0+dF9mbGFncyAmPSB+VEZfQlVT WV9PVVQ7CisJCXRwLT50X2ZsYWdzICY9IH5URl9CVVNZX09VVDsKIAkJY3Zfc2lnbmFsKCZ0cC0+ dF9vdXRzZXJ3YWl0KTsKIAl9CiAKSW5kZXg6IHZmc19tb3VudC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHZm c19tb3VudC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2ZnNfbW91bnQuYwkod29ya2luZyBjb3B5 KQpAQCAtOTg1LDcgKzk4NSw3IEBACiAJICogWFhYIFRoZSBmaW5hbCByZWNpcGllbnRzIG9mIFZG U19NT1VOVCBqdXN0IG92ZXJ3cml0ZSB0aGUgbmRwIHRoZXkKIAkgKiBnZXQuICBObyBmcmVlaW5n IG9mIGNuX3BuYnVmLgogCSAqLwotICAgICAgICBlcnJvciA9IFZGU19NT1VOVChtcCk7CisJZXJy b3IgPSBWRlNfTU9VTlQobXApOwogCiAJLyoKIAkgKiBQcm9jZXNzIHRoZSBleHBvcnQgb3B0aW9u IG9ubHkgaWYgd2UgYXJlCkluZGV4OiBsaW5rX2VsZi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbmtfZWxm LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIGxpbmtfZWxmLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1 MDUsOSArMTUwNSw5IEBACiBsaW5rX2VsZl9zeW10YWJfZ2V0KGxpbmtlcl9maWxlX3QgbGYsIGNv bnN0IEVsZl9TeW0gKipzeW10YWIpCiB7CiAgICAgZWxmX2ZpbGVfdCBlZiA9IChlbGZfZmlsZV90 KWxmOwotICAgIAorCiAgICAgKnN5bXRhYiA9IGVmLT5kZGJzeW10YWI7Ci0gICAgCisKICAgICBp ZiAoKnN5bXRhYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gKDApOwogCkluZGV4OiBrZXJuX21h bGxvYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fbWFsbG9jLmMJKHJldmlzaW9uIDIxMDc2OCkKKysr IGtlcm5fbWFsbG9jLmMJKHdvcmtpbmcgY29weSkKQEAgLTYyNyw3ICs2MjcsNyBAQAogCXVpbnQ4 X3QgaW5keDsKIAl1X2xvbmcgbWVtX3NpemU7CiAJaW50IGk7Ci0gCisKIAltdHhfaW5pdCgmbWFs bG9jX210eCwgIm1hbGxvYyIsIE5VTEwsIE1UWF9ERUYpOwogCiAJLyoKSW5kZXg6IGtlcm5fZ3pp by5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGtlcm5fZ3ppby5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJu X2d6aW8uYwkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBACiAgICAgICAgIGxvZyhM T0dfRVJSLCAiZ3pfb3BlbjogbW9kZSBpcyBub3QgdyAoJWMpXG4iLCBzLT5tb2RlKTsKICAgICAg ICAgcmV0dXJuIGRlc3Ryb3kocyksIChnekZpbGUpWl9OVUxMOwogICAgIH0KLSAgICAKKwogICAg IGVyciA9IGRlZmxhdGVJbml0MigmKHMtPnN0cmVhbSksIGxldmVsLAogICAgICAgICAgICAgICAg ICAgICAgICBaX0RFRkxBVEVELCAtTUFYX1dCSVRTLCBERUZfTUVNX0xFVkVMLCBzdHJhdGVneSk7 CiAgICAgLyogd2luZG93Qml0cyBpcyBwYXNzZWQgPCAwIHRvIHN1cHByZXNzIHpsaWIgaGVhZGVy ICovCkBAIC0xNzMsNyArMTczLDcgQEAKICAgICB9CiAgICAgcy0+b3V0b2ZmICs9IEdaX0hFQURF Ul9MRU47CiAgICAgcy0+c3RhcnRwb3MgPSAxMEw7Ci0gICAgCisKICAgICByZXR1cm4gKGd6Rmls ZSlzOwogfQogCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICogYWxsIHRoZSBhdmFpbGFi bGUgc3BhY2UgaW4gdGhlIG91dHB1dCBidWZmZXI6IAogICAgICAgICAgKi8KICAgICAgICAgZG9u ZSA9IChzLT5zdHJlYW0uYXZhaWxfb3V0ICE9IDAgfHwgcy0+el9lcnIgPT0gWl9TVFJFQU1fRU5E KTsKLSAKKwogICAgICAgICBpZiAocy0+el9lcnIgIT0gWl9PSyAmJiBzLT56X2VyciAhPSBaX1NU UkVBTV9FTkQpIGJyZWFrOwogICAgIH0KICAgICBzLT5vdXRvZmYgPSBjdXJvZmY7CkBAIC0zOTcs NyArMzk3LDcgQEAKICAgICBNQUxMT0MocHRyLCB2b2lkICosIGl0ZW1zICogc2l6ZSwgTV9URU1Q LCBNX05PV0FJVCB8IE1fWkVSTyk7CiAgICAgcmV0dXJuIHB0cjsKIH0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKwogc3RhdGljIHZvaWQKIGd6X2ZyZWUodm9pZCAqb3Bh cXVlIF9fdW51c2VkLCB2b2lkICpwdHIpCiB7CkluZGV4OiBrZXJuX2ZhaWwuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBrZXJuX2ZhaWwuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9mYWlsLmMJKHdvcmtp bmcgY29weSkKQEAgLTM0MSw3ICszNDEsNyBAQAogCiAJRlBfVU5MT0NLKCk7CiAKLSBlbmQ6Citl bmQ6CiAjaWZkZWYgSVdBUk5JTkcKIAlpZiAoZXJyb3IpCiAJCUlXQVJOSU5HKCJGYWlsZWQgdG8g c2V0ICVzICglcykgdG8gJXMiLApAQCAtMzkwLDcgKzM5MCw3IEBACiAJCWJ1ZltyZXEtPm5ld2xl bl0gPSAnXDAnOwogCiAJCWVycm9yID0gZmFpbF9wb2ludF9zZXQoZnAsIGJ1Zik7Ci0gICAgICAg IH0KKwl9CiAKIG91dDoKIAlpZiAoYnVmKQpJbmRleDoga2Vybl9ldmVudC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGtlcm5fZXZlbnQuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9ldmVudC5jCSh3b3Jr aW5nIGNvcHkpCkBAIC02NTgsNyArNjU4LDcgQEAKIAkJfQogCQlicmVhazsKIAotICAgICAgICBj YXNlIEVWRU5UX1BST0NFU1M6CisJY2FzZSBFVkVOVF9QUk9DRVNTOgogCQkqa2V2ID0ga24tPmtu X2tldmVudDsKIAkJa2V2LT5mZmxhZ3MgPSBrbi0+a25fc2ZmbGFnczsKIAkJa2V2LT5kYXRhID0g a24tPmtuX3NkYXRhOwpJbmRleDogdWlwY19zZW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX3NlbS5j CShyZXZpc2lvbiAyMTA3NjgpCisrKyB1aXBjX3NlbS5jCSh3b3JraW5nIGNvcHkpCkBAIC05ODMs MTYgKzk4MywxNiBAQAogc3RhdGljIGludAogc2VtX21vZGxvYWQoc3RydWN0IG1vZHVsZSAqbW9k dWxlLCBpbnQgY21kLCB2b2lkICphcmcpCiB7Ci0gICAgICAgIGludCBlcnJvciA9IDA7CisJaW50 IGVycm9yID0gMDsKIAotICAgICAgICBzd2l0Y2ggKGNtZCkgewotICAgICAgICBjYXNlIE1PRF9M T0FEOgorCXN3aXRjaCAoY21kKSB7CisJY2FzZSBNT0RfTE9BRDoKIAkJZXJyb3IgPSBrc2VtX21v ZHVsZV9pbml0KCk7CiAJCWlmIChlcnJvcikKIAkJCWtzZW1fbW9kdWxlX2Rlc3Ryb3koKTsKLSAg ICAgICAgICAgICAgICBicmVhazsKKwkJYnJlYWs7CiAKLSAgICAgICAgY2FzZSBNT0RfVU5MT0FE OgorCWNhc2UgTU9EX1VOTE9BRDoKIAkJbXR4X2xvY2soJmtzZW1fY291bnRfbG9jayk7CiAJCWlm IChuc2VtcyAhPSAwKSB7CiAJCQllcnJvciA9IEVPUE5PVFNVUFA7CkBAIC0xMDAyLDIxICsxMDAy LDIxIEBACiAJCWtzZW1fZGVhZCA9IDE7CiAJCW10eF91bmxvY2soJmtzZW1fY291bnRfbG9jayk7 CiAJCWtzZW1fbW9kdWxlX2Rlc3Ryb3koKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKwkJYnJl YWs7CiAKLSAgICAgICAgY2FzZSBNT0RfU0hVVERPV046Ci0gICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7Ci0gICAg ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChlcnJvcik7CisJ Y2FzZSBNT0RfU0hVVERPV046CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWVycm9yID0gRUlOVkFM OworCQlicmVhazsKKwl9CisJcmV0dXJuIChlcnJvcik7CiB9CiAKIHN0YXRpYyBtb2R1bGVkYXRh X3Qgc2VtX21vZCA9IHsKLSAgICAgICAgInNlbSIsCi0gICAgICAgICZzZW1fbW9kbG9hZCwKLSAg ICAgICAgTlVMTAorCSJzZW0iLAorCSZzZW1fbW9kbG9hZCwKKwlOVUxMCiB9OwogCiBERUNMQVJF X01PRFVMRShzZW0sIHNlbV9tb2QsIFNJX1NVQl9TWVNWX1NFTSwgU0lfT1JERVJfRklSU1QpOwpJ bmRleDoga2Vybl9zeC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fc3guYwkocmV2aXNpb24gMjEwNzY4 KQorKysga2Vybl9zeC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNyArMTg1LDcgQEAKIAl1aW50 cHRyX3QgeCA9IHN4LT5zeF9sb2NrOwogCiAgICAgICAgICpvd25lciA9IChzdHJ1Y3QgdGhyZWFk ICopU1hfT1dORVIoeCk7Ci0gICAgICAgIHJldHVybiAoKHggJiBTWF9MT0NLX1NIQVJFRCkgIT0g MCA/IChTWF9TSEFSRVJTKHgpICE9IDApIDoKKwlyZXR1cm4gKCh4ICYgU1hfTE9DS19TSEFSRUQp ICE9IDAgPyAoU1hfU0hBUkVSUyh4KSAhPSAwKSA6CiAJICAgICgqb3duZXIgIT0gTlVMTCkpOwog fQogI2VuZGlmCkluZGV4OiBidXNfaWYubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBidXNfaWYubQkocmV2aXNp b24gMjEwNzY4KQorKysgYnVzX2lmLm0JKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDggQEAK ICAqIEBwYXJhbSBfY2hpbGQJdGhlIGNoaWxkIGRldmljZSB3aGljaCBmYWlsZWQgdG8gcHJvYmUK ICAqLyAgIAogTUVUSE9EIHZvaWQgcHJvYmVfbm9tYXRjaCB7Ci0gICAgICAgIGRldmljZV90IF9k ZXY7Ci0gICAgICAgIGRldmljZV90IF9jaGlsZDsKKwlkZXZpY2VfdCBfZGV2OworCWRldmljZV90 IF9jaGlsZDsKIH07CiAKIC8qKgpJbmRleDogc3Vicl9wb3dlci5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN1 YnJfcG93ZXIuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl9wb3dlci5jCSh3b3JraW5nIGNv cHkpCkBAIC0xMDMsNyArMTAzLDcgQEAKIHBvd2VyX3Byb2ZpbGVfc2V0X3N0YXRlKGludCBzdGF0 ZSkgCiB7CiAJaW50CQljaGFuZ2VkOwotICAgIAorCiAJaWYgKHN0YXRlICE9IHBvd2VyX3Byb2Zp bGVfc3RhdGUpIHsKIAkJcG93ZXJfcHJvZmlsZV9zdGF0ZSA9IHN0YXRlOwogCQljaGFuZ2VkID0g MTsKSW5kZXg6IGtlcm5fcHJvdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtlcm5fcHJvdC5jCShyZXZpc2lv biAyMTA3NjgpCisrKyBrZXJuX3Byb3QuYwkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3 IEBACiAKICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldHBwaWRfYXJncyB7Ci0g ICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAjZW5kaWYKIC8qIEFS R1NVU0VEICovCkBAIC0xMjcsNyArMTI3LDcgQEAKICAqLwogI2lmbmRlZiBfU1lTX1NZU1BST1RP X0hfCiBzdHJ1Y3QgZ2V0cGdycF9hcmdzIHsKLSAgICAgICAgaW50ICAgICBkdW1teTsKKwlpbnQg ICAgIGR1bW15OwogfTsKICNlbmRpZgogaW50CkBAIC0yMDUsNyArMjA1LDcgQEAKIAogI2lmbmRl ZiBfU1lTX1NZU1BST1RPX0hfCiBzdHJ1Y3QgZ2V0dWlkX2FyZ3MgewotICAgICAgICBpbnQgICAg IGR1bW15OworCWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpAQCAt MjIyLDcgKzIyMiw3IEBACiAKICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldGV1 aWRfYXJncyB7Ci0gICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAj ZW5kaWYKIC8qIEFSR1NVU0VEICovCkBAIC0yMzYsNyArMjM2LDcgQEAKIAogI2lmbmRlZiBfU1lT X1NZU1BST1RPX0hfCiBzdHJ1Y3QgZ2V0Z2lkX2FyZ3MgewotICAgICAgICBpbnQgICAgIGR1bW15 OworCWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpAQCAtMjU4LDcg KzI1OCw3IEBACiAgKi8KICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwogc3RydWN0IGdldGVnaWRf YXJncyB7Ci0gICAgICAgIGludCAgICAgZHVtbXk7CisJaW50ICAgICBkdW1teTsKIH07CiAjZW5k aWYKIC8qIEFSR1NVU0VEICovCkBAIC0zMjIsNyArMzIyLDcgQEAKIAogI2lmbmRlZiBfU1lTX1NZ U1BST1RPX0hfCiBzdHJ1Y3Qgc2V0c2lkX2FyZ3MgewotICAgICAgICBpbnQgICAgIGR1bW15Owor CWludCAgICAgZHVtbXk7CiB9OwogI2VuZGlmCiAvKiBBUkdTVVNFRCAqLwpJbmRleDoga2Vybl9k ZXNjcmlwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0ga2Vybl9kZXNjcmlwLmMJKHJldmlzaW9uIDIxMDc2OCkK KysrIGtlcm5fZGVzY3JpcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsOCArMjE4LDggQEAKIHN0 YXRpYyBpbnQKIGZkaXN1c2VkKHN0cnVjdCBmaWxlZGVzYyAqZmRwLCBpbnQgZmQpCiB7Ci0gICAg ICAgIEtBU1NFUlQoZmQgPj0gMCAmJiBmZCA8IGZkcC0+ZmRfbmZpbGVzLAotICAgICAgICAgICAg KCJmaWxlIGRlc2NyaXB0b3IgJWQgb3V0IG9mIHJhbmdlICgwLCAlZCkiLCBmZCwgZmRwLT5mZF9u ZmlsZXMpKTsKKwlLQVNTRVJUKGZkID49IDAgJiYgZmQgPCBmZHAtPmZkX25maWxlcywKKwkgICAg KCJmaWxlIGRlc2NyaXB0b3IgJWQgb3V0IG9mIHJhbmdlICgwLCAlZCkiLCBmZCwgZmRwLT5mZF9u ZmlsZXMpKTsKIAlyZXR1cm4gKChmZHAtPmZkX21hcFtORFNMT1QoZmQpXSAmIE5EQklUKGZkKSkg IT0gMCk7CiB9CiAKQEAgLTM2OSwxMyArMzY5LDEzIEBACiAJCX0KIAkJYXJnID0gKGludHB0cl90 KSZmbDsKIAkJYnJlYWs7Ci0gICAgICAgIGNhc2UgRl9HRVRMSzoKLSAgICAgICAgY2FzZSBGX1NF VExLOgotICAgICAgICBjYXNlIEZfU0VUTEtXOgorCWNhc2UgRl9HRVRMSzoKKwljYXNlIEZfU0VU TEs6CisJY2FzZSBGX1NFVExLVzoKIAljYXNlIEZfU0VUTEtfUkVNT1RFOgogICAgICAgICAgICAg ICAgIGVycm9yID0gY29weWluKCh2b2lkICopKGludHB0cl90KXVhcC0+YXJnLCAmZmwsIHNpemVv ZihmbCkpOwotICAgICAgICAgICAgICAgIGFyZyA9IChpbnRwdHJfdCkmZmw7Ci0gICAgICAgICAg ICAgICAgYnJlYWs7CisJCWFyZyA9IChpbnRwdHJfdCkmZmw7CisJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCWFyZyA9IHVhcC0+YXJnOwogCQlicmVhazsKSW5kZXg6IGtlcm5fbG9jay5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGtlcm5fbG9jay5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX2xvY2suYwkod29y a2luZyBjb3B5KQpAQCAtMzcxLDggKzM3MSw4IEBACiAKIAlNUEFTUygoZmxhZ3MgJiB+TEtfSU5J VF9NQVNLKSA9PSAwKTsKIAlBU1NFUlRfQVRPTUlDX0xPQURfUFRSKGxrLT5sa19sb2NrLAotICAg ICAgICAgICAgKCIlczogbG9ja21nciBub3QgYWxpZ25lZCBmb3IgJXM6ICVwIiwgX19mdW5jX18s IHdtZXNnLAotICAgICAgICAgICAgJmxrLT5sa19sb2NrKSk7CisJICAgICgiJXM6IGxvY2ttZ3Ig bm90IGFsaWduZWQgZm9yICVzOiAlcCIsIF9fZnVuY19fLCB3bWVzZywKKwkgICAgJmxrLT5sa19s b2NrKSk7CiAKIAlpZmxhZ3MgPSBMT19TTEVFUEFCTEUgfCBMT19VUEdSQURBQkxFOwogCWlmIChm bGFncyAmIExLX0NBTlJFQ1VSU0UpCkluZGV4OiB1aXBjX2Nvdy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHVp cGNfY293LmMJKHJldmlzaW9uIDIxMDc2OCkKKysrIHVpcGNfY293LmMJKHdvcmtpbmcgY29weSkK QEAgLTExNiw5ICsxMTYsOSBAQAogCWlmICh2bV9mYXVsdF9xdWljaygoY2FkZHJfdCl1dmEsIFZN X1BST1RfUkVBRCkgPCAwKQogCQlyZXR1cm4gKDApOwogCi0gICAgICAgLyogCi0JKiB2ZXJpZnkg cGFnZSBpcyBtYXBwZWQgJiBub3QgYWxyZWFkeSB3aXJlZCBmb3IgaS9vCi0JKi8KKwkvKiAKKwkg KiB2ZXJpZnkgcGFnZSBpcyBtYXBwZWQgJiBub3QgYWxyZWFkeSB3aXJlZCBmb3IgaS9vCisJICov CiAJcHAgPSBwbWFwX2V4dHJhY3RfYW5kX2hvbGQobWFwLT5wbWFwLCB1dmEsIFZNX1BST1RfUkVB RCk7CiAJaWYgKHBwID09IE5VTEwpIHsKIAkJc29jb3dfc3RhdHMuZmFpbF9ub3RfbWFwcGVkKys7 CkluZGV4OiB1aXBjX21idWYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1aXBjX21idWYuYwkocmV2aXNpb24g MjEwNzY4KQorKysgdWlwY19tYnVmLmMJKHdvcmtpbmcgY29weSkKQEAgLTExMDMsNyArMTEwMyw3 IEBACiAJfQogCW0tPm1fbmV4dCA9IG47CiAJcmV0dXJuIChtKTsKLSBiYWQ6CitiYWQ6CiAJbV9m cmVlbShuKTsKIAlNU0ZhaWwrKzsKIAlyZXR1cm4gKE5VTEwpOwpAQCAtMjA5OCwxNiArMjA5OCwx NiBAQAogbWJwcm9mX2Nscl9oYW5kbGVyKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB7CiAJaW50IGNs ZWFyLCBlcnJvcjsKLSAKKwogCWNsZWFyID0gMDsKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50 KG9pZHAsICZjbGVhciwgMCwgcmVxKTsKIAlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQogCQly ZXR1cm4gKGVycm9yKTsKLSAKKwogCWlmIChjbGVhcikgewogCQliemVybygmbWJwcm9mLCBzaXpl b2YobWJwcm9mKSk7CiAJfQotIAorCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKSW5kZXg6IGtlcm5f YWxxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0ga2Vybl9hbHEuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vy bl9hbHEuYwkod29ya2luZyBjb3B5KQpAQCAtNDE0LDkgKzQxNCw5IEBACiB9CiAKIHN0YXRpYyBz dHJ1Y3Qga3Byb2NfZGVzYyBhbGRfa3AgPSB7Ci0gICAgICAgICJBTFEgRGFlbW9uIiwKLSAgICAg ICAgYWxkX2RhZW1vbiwKLSAgICAgICAgJmFsZF9wcm9jCisJIkFMUSBEYWVtb24iLAorCWFsZF9k YWVtb24sCisJJmFsZF9wcm9jCiB9OwogCiBTWVNJTklUKGFsZHRocmVhZCwgU0lfU1VCX0tUSFJF QURfSURMRSwgU0lfT1JERVJfQU5ZLCBrcHJvY19zdGFydCwgJmFsZF9rcCk7CkluZGV4OiBpbWdh Y3RfYW91dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGltZ2FjdF9hb3V0LmMJKHJldmlzaW9uIDIxMDc2OCkK KysrIGltZ2FjdF9hb3V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQAogCWlm ICgoKGFfb3V0LT5hX21hZ2ljID4+IDE2KSAmIDB4ZmYpICE9IDB4ODYgJiYKIAkgICAgKChhX291 dC0+YV9tYWdpYyA+PiAxNikgJiAweGZmKSAhPSAwICYmCiAJICAgICgoKChpbnQpbnRvaGwoYV9v dXQtPmFfbWFnaWMpKSA+PiAxNikgJiAweGZmKSAhPSAweDg2KQotICAgICAgICAgICAgICAgIHJl dHVybiAtMTsKKwkJcmV0dXJuIC0xOwogCiAJLyoKIAkgKiBTZXQgZmlsZS92aXJ0dWFsIG9mZnNl dCBiYXNlZCBvbiBhLm91dCB2YXJpYW50LgpJbmRleDoga2Vybl9zeXNjdGwuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBrZXJuX3N5c2N0bC5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyBrZXJuX3N5c2N0bC5jCSh3 b3JraW5nIGNvcHkpCkBAIC0xMTk5LDggKzExOTksOCBAQAoga2VybmVsX3N5c2N0bGJ5bmFtZShz dHJ1Y3QgdGhyZWFkICp0ZCwgY2hhciAqbmFtZSwgdm9pZCAqb2xkLCBzaXplX3QgKm9sZGxlbnAs CiAgICAgdm9pZCAqbmV3LCBzaXplX3QgbmV3bGVuLCBzaXplX3QgKnJldHZhbCwgaW50IGZsYWdz KQogewotICAgICAgICBpbnQgb2lkW0NUTF9NQVhOQU1FXTsKLSAgICAgICAgc2l6ZV90IG9pZGxl biwgcGxlbjsKKwlpbnQgb2lkW0NUTF9NQVhOQU1FXTsKKwlzaXplX3Qgb2lkbGVuLCBwbGVuOwog CWludCBlcnJvcjsKIAogCW9pZFswXSA9IDA7CQkvKiBzeXNjdGwgaW50ZXJuYWwgbWFnaWMgKi8K QEAgLTE0NDIsNyArMTQ0Miw3IEBACiAJCXJldHVybiAoRUlOVkFMKTsKIAogIAllcnJvciA9IGNv cHlpbih1YXAtPm5hbWUsICZuYW1lLCB1YXAtPm5hbWVsZW4gKiBzaXplb2YoaW50KSk7Ci0gCWlm IChlcnJvcikKKwlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwogCiAJZXJyb3IgPSB1c2Vy bGFuZF9zeXNjdGwodGQsIG5hbWUsIHVhcC0+bmFtZWxlbiwKSW5kZXg6IGtlcm5fbW9kdWxlLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0ga2Vybl9tb2R1bGUuYwkocmV2aXNpb24gMjEwNzY4KQorKysga2Vybl9t b2R1bGUuYwkod29ya2luZyBjb3B5KQpAQCAtMjM0LDE0ICsyMzQsMTQgQEAKIG1vZHVsZV90CiBt b2R1bGVfbG9va3VwYnlpZChpbnQgbW9kaWQpCiB7Ci0gICAgICAgIG1vZHVsZV90IG1vZDsKKwlt b2R1bGVfdCBtb2Q7CiAKLSAgICAgICAgTU9EX0xPQ0tfQVNTRVJUOworCU1PRF9MT0NLX0FTU0VS VDsKIAotICAgICAgICBUQUlMUV9GT1JFQUNIKG1vZCwgJm1vZHVsZXMsIGxpbmspCi0gICAgICAg ICAgICAgICAgaWYgKG1vZC0+aWQgPT0gbW9kaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4obW9kKTsKLSAgICAgICAgcmV0dXJuIChOVUxMKTsKKwlUQUlMUV9GT1JFQUNIKG1vZCwg Jm1vZHVsZXMsIGxpbmspCisJCWlmIChtb2QtPmlkID09IG1vZGlkKQorCQkJcmV0dXJuKG1vZCk7 CisJcmV0dXJuIChOVUxMKTsKIH0KIAogaW50CkluZGV4OiBzdWJyX3dpdG5lc3MuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzdWJyX3dpdG5lc3MuYwkocmV2aXNpb24gMjEwNzY4KQorKysgc3Vicl93aXRuZXNz LmMJKHdvcmtpbmcgY29weSkKQEAgLTkxNCwxNiArOTE0LDE2IEBACiB7CiAJaW50IGk7CiAKLSAJ Zm9yIChpID0gMDsgaSA8IGluZGVudDsgaSsrKQotIAkJcHJudCgiICIpOworCWZvciAoaSA9IDA7 IGkgPCBpbmRlbnQ7IGkrKykKKwkJcHJudCgiICIpOwogCXBybnQoIiVzICh0eXBlOiAlcywgZGVw dGg6ICVkLCBhY3RpdmUgcmVmczogJWQpIiwKIAkgICAgIHctPndfbmFtZSwgdy0+d19jbGFzcy0+ bGNfbmFtZSwKIAkgICAgIHctPndfZGRiX2xldmVsLCB3LT53X3JlZmNvdW50KTsKLSAJaWYgKHct PndfZGlzcGxheWVkKSB7Ci0gCQlwcm50KCIgLS0gKGFscmVhZHkgZGlzcGxheWVkKVxuIik7Ci0g CQlyZXR1cm47Ci0gCX0KLSAJdy0+d19kaXNwbGF5ZWQgPSAxOworCWlmICh3LT53X2Rpc3BsYXll ZCkgeworCQlwcm50KCIgLS0gKGFscmVhZHkgZGlzcGxheWVkKVxuIik7CisJCXJldHVybjsKKwl9 CisJdy0+d19kaXNwbGF5ZWQgPSAxOwogCWlmICh3LT53X2ZpbGUgIT0gTlVMTCAmJiB3LT53X2xp bmUgIT0gMCkKIAkJcHJudCgiIC0tIGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgdy0+d19maWxl LAogCQkgICAgdy0+d19saW5lKTsKQEAgLTI0NzksMTAgKzI0NzksMTAgQEAKIAkJCSAgICB0bXBf dzEtPndfbmFtZSwgdG1wX3cxLT53X2NsYXNzLT5sY19uYW1lLCAKIAkJCSAgICB0bXBfdzItPndf bmFtZSwgdG1wX3cyLT53X2NsYXNzLT5sY19uYW1lKTsKICNpZiAwCi0gCQkJc2J1Zl9wcmludGYo c2IsCisJCQlzYnVmX3ByaW50ZihzYiwKIAkJCSJ3X3JtYXRyaXhbJXNdWyVzXSA9PSAleCwgd19y bWF0cml4WyVzXVslc10gPT0gJXhcbiIsCi0gCQkJICAgIHRtcF93MS0+bmFtZSwgdG1wX3cyLT53 X25hbWUsIHdfcm1hdHJpeDEsCi0gCQkJICAgIHRtcF93Mi0+bmFtZSwgdG1wX3cxLT53X25hbWUs IHdfcm1hdHJpeDIpOworCQkJICAgIHRtcF93MS0+bmFtZSwgdG1wX3cyLT53X25hbWUsIHdfcm1h dHJpeDEsCisJCQkgICAgdG1wX3cyLT5uYW1lLCB0bXBfdzEtPndfbmFtZSwgd19ybWF0cml4Mik7 CiAjZW5kaWYKIAkJCWlmIChkYXRhMSkgewogCQkJCXNidWZfcHJpbnRmKHNiLApJbmRleDogdmZz X3N1YnIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSB2ZnNfc3Vici5jCShyZXZpc2lvbiAyMTA3NjgpCisrKyB2 ZnNfc3Vici5jCSh3b3JraW5nIGNvcHkpCkBAIC04MjEsNyArODIxLDcgQEAKIH07CiBTWVNJTklU KHZubHJ1LCBTSV9TVUJfS1RIUkVBRF9VUERBVEUsIFNJX09SREVSX0ZJUlNULCBrcHJvY19zdGFy dCwKICAgICAmdm5scnVfa3ApOwotIAorCiAvKgogICogUm91dGluZXMgaGF2aW5nIHRvIGRvIHdp dGggdGhlIG1hbmFnZW1lbnQgb2YgdGhlIHZub2RlIHRhYmxlLgogICovCg== --00c09f93d63c341395048ce80794--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=E%2Bzg5rNSv0Dg6uG%2Baxxvz=vrRVdug0JiNhbHG>