From mboxrd@z Thu Jan 1 00:00:00 1970 From: Praveen Kumar Subject: [PATCH v4 01/17] rbtree: changes to inline coding conventions with Linux tree Date: Tue, 4 Jul 2017 01:28:05 +0530 Message-ID: <20170703195821.29845-2-kpraveen.lkml@gmail.com> References: <20170703195821.29845-1-kpraveen.lkml@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170703195821.29845-1-kpraveen.lkml@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, kpraveen.lkml@gmail.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org VGhlIHBhdGNoIGlubGluZXMgdGhlIHJidHJlZSByZWxhdGVkIGZpbGVzIHRvIExpbnV4IGNvZGlu ZyBjb252ZW50aW9ucyB0byBoYXZlCmxpbWl0ZWQgY29uZmxpY3RzIGluIGZ1dHVyZSB3aGlsZSBw b3J0aW5nIGZyb20gTGludXggdHJlZS4KClNpZ25lZC1vZmYtYnk6IFByYXZlZW4gS3VtYXIgPGtw cmF2ZWVuLmxrbWxAZ21haWwuY29tPgotLS0KTmV3IGluIHY0LgotLS0KIHhlbi9jb21tb24vcmJ0 cmVlLmMgICAgICB8IDYzMCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL3JidHJlZS5oIHwgIDM5ICstLQogMiBmaWxlcyBjaGFu Z2VkLCAzMzUgaW5zZXJ0aW9ucygrKSwgMzM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9jb21tb24vcmJ0cmVlLmMgYi94ZW4vY29tbW9uL3JidHJlZS5jCmluZGV4IGQ5MWQ2NTFkNzcu LmQ1ZTNkMDZiODAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vcmJ0cmVlLmMKKysrIGIveGVuL2Nv bW1vbi9yYnRyZWUuYwpAQCAtMjQsMjYxICsyNCwyNjEgQEAKIAogc3RhdGljIHZvaWQgX19yYl9y b3RhdGVfbGVmdChzdHJ1Y3QgcmJfbm9kZSAqbm9kZSwgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCiB7 Ci0gICAgc3RydWN0IHJiX25vZGUgKnJpZ2h0ID0gbm9kZS0+cmJfcmlnaHQ7Ci0gICAgc3RydWN0 IHJiX25vZGUgKnBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLQotICAgIGlmICgobm9kZS0+cmJf cmlnaHQgPSByaWdodC0+cmJfbGVmdCkpCi0gICAgICAgIHJiX3NldF9wYXJlbnQocmlnaHQtPnJi X2xlZnQsIG5vZGUpOwotICAgIHJpZ2h0LT5yYl9sZWZ0ID0gbm9kZTsKLQotICAgIHJiX3NldF9w YXJlbnQocmlnaHQsIHBhcmVudCk7Ci0KLSAgICBpZiAocGFyZW50KQotICAgIHsKLSAgICAgICAg aWYgKG5vZGUgPT0gcGFyZW50LT5yYl9sZWZ0KQotICAgICAgICAgICAgcGFyZW50LT5yYl9sZWZ0 ID0gcmlnaHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcmVudC0+cmJfcmlnaHQgPSBy aWdodDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByb290LT5yYl9ub2RlID0gcmlnaHQ7Ci0g ICAgcmJfc2V0X3BhcmVudChub2RlLCByaWdodCk7CisJc3RydWN0IHJiX25vZGUgKnJpZ2h0ID0g bm9kZS0+cmJfcmlnaHQ7CisJc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IHJiX3BhcmVudChub2Rl KTsKKworCWlmICgobm9kZS0+cmJfcmlnaHQgPSByaWdodC0+cmJfbGVmdCkpCisJCXJiX3NldF9w YXJlbnQocmlnaHQtPnJiX2xlZnQsIG5vZGUpOworCXJpZ2h0LT5yYl9sZWZ0ID0gbm9kZTsKKwor CXJiX3NldF9wYXJlbnQocmlnaHQsIHBhcmVudCk7CisKKwlpZiAocGFyZW50KQorCXsKKwkJaWYg KG5vZGUgPT0gcGFyZW50LT5yYl9sZWZ0KQorCQkJcGFyZW50LT5yYl9sZWZ0ID0gcmlnaHQ7CisJ CWVsc2UKKwkJCXBhcmVudC0+cmJfcmlnaHQgPSByaWdodDsKKwl9CisJZWxzZQorCQlyb290LT5y Yl9ub2RlID0gcmlnaHQ7CisJcmJfc2V0X3BhcmVudChub2RlLCByaWdodCk7CiB9CiAKIHN0YXRp YyB2b2lkIF9fcmJfcm90YXRlX3JpZ2h0KHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJf cm9vdCAqcm9vdCkKIHsKLSAgICBzdHJ1Y3QgcmJfbm9kZSAqbGVmdCA9IG5vZGUtPnJiX2xlZnQ7 Ci0gICAgc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLQotICAgIGlm ICgobm9kZS0+cmJfbGVmdCA9IGxlZnQtPnJiX3JpZ2h0KSkKLSAgICAgICAgcmJfc2V0X3BhcmVu dChsZWZ0LT5yYl9yaWdodCwgbm9kZSk7Ci0gICAgbGVmdC0+cmJfcmlnaHQgPSBub2RlOwotCi0g ICAgcmJfc2V0X3BhcmVudChsZWZ0LCBwYXJlbnQpOwotCi0gICAgaWYgKHBhcmVudCkKLSAgICB7 Ci0gICAgICAgIGlmIChub2RlID09IHBhcmVudC0+cmJfcmlnaHQpCi0gICAgICAgICAgICBwYXJl bnQtPnJiX3JpZ2h0ID0gbGVmdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyZW50LT5y Yl9sZWZ0ID0gbGVmdDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByb290LT5yYl9ub2RlID0g bGVmdDsKLSAgICByYl9zZXRfcGFyZW50KG5vZGUsIGxlZnQpOworCXN0cnVjdCByYl9ub2RlICps ZWZ0ID0gbm9kZS0+cmJfbGVmdDsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gcmJfcGFyZW50 KG5vZGUpOworCisJaWYgKChub2RlLT5yYl9sZWZ0ID0gbGVmdC0+cmJfcmlnaHQpKQorCQlyYl9z ZXRfcGFyZW50KGxlZnQtPnJiX3JpZ2h0LCBub2RlKTsKKwlsZWZ0LT5yYl9yaWdodCA9IG5vZGU7 CisKKwlyYl9zZXRfcGFyZW50KGxlZnQsIHBhcmVudCk7CisKKwlpZiAocGFyZW50KQorCXsKKwkJ aWYgKG5vZGUgPT0gcGFyZW50LT5yYl9yaWdodCkKKwkJCXBhcmVudC0+cmJfcmlnaHQgPSBsZWZ0 OworCQllbHNlCisJCQlwYXJlbnQtPnJiX2xlZnQgPSBsZWZ0OworCX0KKwllbHNlCisJCXJvb3Qt PnJiX25vZGUgPSBsZWZ0OworCXJiX3NldF9wYXJlbnQobm9kZSwgbGVmdCk7CiB9CiAKIHZvaWQg cmJfaW5zZXJ0X2NvbG9yKHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9v dCkKIHsKLSAgICBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LCAqZ3BhcmVudDsKLQotICAgIHdoaWxl ICgocGFyZW50ID0gcmJfcGFyZW50KG5vZGUpKSAmJiByYl9pc19yZWQocGFyZW50KSkKLSAgICB7 Ci0gICAgICAgIGdwYXJlbnQgPSByYl9wYXJlbnQocGFyZW50KTsKLQotICAgICAgICBpZiAocGFy ZW50ID09IGdwYXJlbnQtPnJiX2xlZnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICByZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdW5jbGUgPSBncGFyZW50LT5yYl9y aWdodDsKLSAgICAgICAgICAgICAgICBpZiAodW5jbGUgJiYgcmJfaXNfcmVkKHVuY2xlKSkKLSAg ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayh1bmNsZSk7 Ci0gICAgICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayhwYXJlbnQpOwotICAgICAgICAgICAg ICAgICAgICByYl9zZXRfcmVkKGdwYXJlbnQpOwotICAgICAgICAgICAgICAgICAgICBub2RlID0g Z3BhcmVudDsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocGFyZW50LT5yYl9yaWdodCA9PSBu b2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHN0cnVjdCByYl9u b2RlICp0bXA7Ci0gICAgICAgICAgICAgICAgX19yYl9yb3RhdGVfbGVmdChwYXJlbnQsIHJvb3Qp OwotICAgICAgICAgICAgICAgIHRtcCA9IHBhcmVudDsKLSAgICAgICAgICAgICAgICBwYXJlbnQg PSBub2RlOwotICAgICAgICAgICAgICAgIG5vZGUgPSB0bXA7Ci0gICAgICAgICAgICB9Ci0KLSAg ICAgICAgICAgIHJiX3NldF9ibGFjayhwYXJlbnQpOwotICAgICAgICAgICAgcmJfc2V0X3JlZChn cGFyZW50KTsKLSAgICAgICAgICAgIF9fcmJfcm90YXRlX3JpZ2h0KGdwYXJlbnQsIHJvb3QpOwot ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlZ2lzdGVy IHN0cnVjdCByYl9ub2RlICp1bmNsZSA9IGdwYXJlbnQtPnJiX2xlZnQ7Ci0gICAgICAgICAgICAg ICAgaWYgKHVuY2xlICYmIHJiX2lzX3JlZCh1bmNsZSkpCi0gICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgICByYl9zZXRfYmxhY2sodW5jbGUpOwotICAgICAgICAgICAgICAgICAg ICByYl9zZXRfYmxhY2socGFyZW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmJfc2V0X3JlZChn cGFyZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGdwYXJlbnQ7Ci0gICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot ICAgICAgICAgICAgaWYgKHBhcmVudC0+cmJfbGVmdCA9PSBub2RlKQotICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHN0cnVjdCByYl9ub2RlICp0bXA7Ci0gICAgICAgICAg ICAgICAgX19yYl9yb3RhdGVfcmlnaHQocGFyZW50LCByb290KTsKLSAgICAgICAgICAgICAgICB0 bXAgPSBwYXJlbnQ7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gbm9kZTsKLSAgICAgICAgICAg ICAgICBub2RlID0gdG1wOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByYl9zZXRfYmxh Y2socGFyZW50KTsKLSAgICAgICAgICAgIHJiX3NldF9yZWQoZ3BhcmVudCk7Ci0gICAgICAgICAg ICBfX3JiX3JvdGF0ZV9sZWZ0KGdwYXJlbnQsIHJvb3QpOwotICAgICAgICB9Ci0gICAgfQotCi0g ICAgcmJfc2V0X2JsYWNrKHJvb3QtPnJiX25vZGUpOworCXN0cnVjdCByYl9ub2RlICpwYXJlbnQs ICpncGFyZW50OworCisJd2hpbGUgKChwYXJlbnQgPSByYl9wYXJlbnQobm9kZSkpICYmIHJiX2lz X3JlZChwYXJlbnQpKQorCXsKKwkJZ3BhcmVudCA9IHJiX3BhcmVudChwYXJlbnQpOworCisJCWlm IChwYXJlbnQgPT0gZ3BhcmVudC0+cmJfbGVmdCkKKwkJeworCQkJeworCQkJCXJlZ2lzdGVyIHN0 cnVjdCByYl9ub2RlICp1bmNsZSA9IGdwYXJlbnQtPnJiX3JpZ2h0OworCQkJCWlmICh1bmNsZSAm JiByYl9pc19yZWQodW5jbGUpKQorCQkJCXsKKwkJCQkJcmJfc2V0X2JsYWNrKHVuY2xlKTsKKwkJ CQkJcmJfc2V0X2JsYWNrKHBhcmVudCk7CisJCQkJCXJiX3NldF9yZWQoZ3BhcmVudCk7CisJCQkJ CW5vZGUgPSBncGFyZW50OworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChw YXJlbnQtPnJiX3JpZ2h0ID09IG5vZGUpCisJCQl7CisJCQkJcmVnaXN0ZXIgc3RydWN0IHJiX25v ZGUgKnRtcDsKKwkJCQlfX3JiX3JvdGF0ZV9sZWZ0KHBhcmVudCwgcm9vdCk7CisJCQkJdG1wID0g cGFyZW50OworCQkJCXBhcmVudCA9IG5vZGU7CisJCQkJbm9kZSA9IHRtcDsKKwkJCX0KKworCQkJ cmJfc2V0X2JsYWNrKHBhcmVudCk7CisJCQlyYl9zZXRfcmVkKGdwYXJlbnQpOworCQkJX19yYl9y b3RhdGVfcmlnaHQoZ3BhcmVudCwgcm9vdCk7CisJCX0gZWxzZSB7CisJCQl7CisJCQkJcmVnaXN0 ZXIgc3RydWN0IHJiX25vZGUgKnVuY2xlID0gZ3BhcmVudC0+cmJfbGVmdDsKKwkJCQlpZiAodW5j bGUgJiYgcmJfaXNfcmVkKHVuY2xlKSkKKwkJCQl7CisJCQkJCXJiX3NldF9ibGFjayh1bmNsZSk7 CisJCQkJCXJiX3NldF9ibGFjayhwYXJlbnQpOworCQkJCQlyYl9zZXRfcmVkKGdwYXJlbnQpOwor CQkJCQlub2RlID0gZ3BhcmVudDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCisJCQlp ZiAocGFyZW50LT5yYl9sZWZ0ID09IG5vZGUpCisJCQl7CisJCQkJcmVnaXN0ZXIgc3RydWN0IHJi X25vZGUgKnRtcDsKKwkJCQlfX3JiX3JvdGF0ZV9yaWdodChwYXJlbnQsIHJvb3QpOworCQkJCXRt cCA9IHBhcmVudDsKKwkJCQlwYXJlbnQgPSBub2RlOworCQkJCW5vZGUgPSB0bXA7CisJCQl9CisK KwkJCXJiX3NldF9ibGFjayhwYXJlbnQpOworCQkJcmJfc2V0X3JlZChncGFyZW50KTsKKwkJCV9f cmJfcm90YXRlX2xlZnQoZ3BhcmVudCwgcm9vdCk7CisJCX0KKwl9CisKKwlyYl9zZXRfYmxhY2so cm9vdC0+cmJfbm9kZSk7CiB9CiBFWFBPUlRfU1lNQk9MKHJiX2luc2VydF9jb2xvcik7CiAKIHN0 YXRpYyB2b2lkIF9fcmJfZXJhc2VfY29sb3Ioc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCBy Yl9ub2RlICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYl9y b290ICpyb290KQorCQkJICAgICBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKIHsKLSAgICBzdHJ1Y3Qg cmJfbm9kZSAqb3RoZXI7Ci0KLSAgICB3aGlsZSAoKCFub2RlIHx8IHJiX2lzX2JsYWNrKG5vZGUp KSAmJiBub2RlICE9IHJvb3QtPnJiX25vZGUpCi0gICAgewotICAgICAgICBpZiAocGFyZW50LT5y Yl9sZWZ0ID09IG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG90aGVyID0gcGFyZW50LT5y Yl9yaWdodDsKLSAgICAgICAgICAgIGlmIChyYl9pc19yZWQob3RoZXIpKQotICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayhvdGhlcik7Ci0gICAgICAgICAgICAgICAg cmJfc2V0X3JlZChwYXJlbnQpOwotICAgICAgICAgICAgICAgIF9fcmJfcm90YXRlX2xlZnQocGFy ZW50LCByb290KTsKLSAgICAgICAgICAgICAgICBvdGhlciA9IHBhcmVudC0+cmJfcmlnaHQ7Ci0g ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKCFvdGhlci0+cmJfbGVmdCB8fCByYl9pc19i bGFjayhvdGhlci0+cmJfbGVmdCkpICYmCi0gICAgICAgICAgICAgICAgKCFvdGhlci0+cmJfcmln aHQgfHwgcmJfaXNfYmxhY2sob3RoZXItPnJiX3JpZ2h0KSkpCi0gICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgcmJfc2V0X3JlZChvdGhlcik7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IHBh cmVudDsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSByYl9wYXJlbnQobm9kZSk7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg aWYgKCFvdGhlci0+cmJfcmlnaHQgfHwgcmJfaXNfYmxhY2sob3RoZXItPnJiX3JpZ2h0KSkKLSAg ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJiX3NldF9ibGFjayhvdGhlci0+ cmJfbGVmdCk7Ci0gICAgICAgICAgICAgICAgICAgIHJiX3NldF9yZWQob3RoZXIpOwotICAgICAg ICAgICAgICAgICAgICBfX3JiX3JvdGF0ZV9yaWdodChvdGhlciwgcm9vdCk7Ci0gICAgICAgICAg ICAgICAgICAgIG90aGVyID0gcGFyZW50LT5yYl9yaWdodDsKLSAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgICAgcmJfc2V0X2NvbG9yKG90aGVyLCByYl9jb2xvcihwYXJlbnQpKTsKLSAg ICAgICAgICAgICAgICByYl9zZXRfYmxhY2socGFyZW50KTsKLSAgICAgICAgICAgICAgICByYl9z ZXRfYmxhY2sob3RoZXItPnJiX3JpZ2h0KTsKLSAgICAgICAgICAgICAgICBfX3JiX3JvdGF0ZV9s ZWZ0KHBhcmVudCwgcm9vdCk7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IHJvb3QtPnJiX25vZGU7 Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBvdGhlciA9IHBhcmVudC0+cmJfbGVmdDsK LSAgICAgICAgICAgIGlmIChyYl9pc19yZWQob3RoZXIpKQotICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgIHJiX3NldF9ibGFjayhvdGhlcik7Ci0gICAgICAgICAgICAgICAgcmJfc2V0X3Jl ZChwYXJlbnQpOwotICAgICAgICAgICAgICAgIF9fcmJfcm90YXRlX3JpZ2h0KHBhcmVudCwgcm9v dCk7Ci0gICAgICAgICAgICAgICAgb3RoZXIgPSBwYXJlbnQtPnJiX2xlZnQ7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICBpZiAoKCFvdGhlci0+cmJfbGVmdCB8fCByYl9pc19ibGFjayhvdGhl ci0+cmJfbGVmdCkpICYmCi0gICAgICAgICAgICAgICAgKCFvdGhlci0+cmJfcmlnaHQgfHwgcmJf aXNfYmxhY2sob3RoZXItPnJiX3JpZ2h0KSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg ICAgcmJfc2V0X3JlZChvdGhlcik7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsKLSAg ICAgICAgICAgICAgICBwYXJlbnQgPSByYl9wYXJlbnQobm9kZSk7Ci0gICAgICAgICAgICB9Ci0g ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFvdGhl ci0+cmJfbGVmdCB8fCByYl9pc19ibGFjayhvdGhlci0+cmJfbGVmdCkpCi0gICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAgICByYl9zZXRfYmxhY2sob3RoZXItPnJiX3JpZ2h0KTsK LSAgICAgICAgICAgICAgICAgICAgcmJfc2V0X3JlZChvdGhlcik7Ci0gICAgICAgICAgICAgICAg ICAgIF9fcmJfcm90YXRlX2xlZnQob3RoZXIsIHJvb3QpOwotICAgICAgICAgICAgICAgICAgICBv dGhlciA9IHBhcmVudC0+cmJfbGVmdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgcmJfc2V0X2NvbG9yKG90aGVyLCByYl9jb2xvcihwYXJlbnQpKTsKLSAgICAgICAgICAgICAg ICByYl9zZXRfYmxhY2socGFyZW50KTsKLSAgICAgICAgICAgICAgICByYl9zZXRfYmxhY2sob3Ro ZXItPnJiX2xlZnQpOwotICAgICAgICAgICAgICAgIF9fcmJfcm90YXRlX3JpZ2h0KHBhcmVudCwg cm9vdCk7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IHJvb3QtPnJiX25vZGU7Ci0gICAgICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5v ZGUpCi0gICAgICAgIHJiX3NldF9ibGFjayhub2RlKTsKKwlzdHJ1Y3QgcmJfbm9kZSAqb3RoZXI7 CisKKwl3aGlsZSAoKCFub2RlIHx8IHJiX2lzX2JsYWNrKG5vZGUpKSAmJiBub2RlICE9IHJvb3Qt PnJiX25vZGUpCisJeworCQlpZiAocGFyZW50LT5yYl9sZWZ0ID09IG5vZGUpCisJCXsKKwkJCW90 aGVyID0gcGFyZW50LT5yYl9yaWdodDsKKwkJCWlmIChyYl9pc19yZWQob3RoZXIpKQorCQkJewor CQkJCXJiX3NldF9ibGFjayhvdGhlcik7CisJCQkJcmJfc2V0X3JlZChwYXJlbnQpOworCQkJCV9f cmJfcm90YXRlX2xlZnQocGFyZW50LCByb290KTsKKwkJCQlvdGhlciA9IHBhcmVudC0+cmJfcmln aHQ7CisJCQl9CisJCQlpZiAoKCFvdGhlci0+cmJfbGVmdCB8fCByYl9pc19ibGFjayhvdGhlci0+ cmJfbGVmdCkpICYmCisJCQkgICAgKCFvdGhlci0+cmJfcmlnaHQgfHwgcmJfaXNfYmxhY2sob3Ro ZXItPnJiX3JpZ2h0KSkpCisJCQl7CisJCQkJcmJfc2V0X3JlZChvdGhlcik7CisJCQkJbm9kZSA9 IHBhcmVudDsKKwkJCQlwYXJlbnQgPSByYl9wYXJlbnQobm9kZSk7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJaWYgKCFvdGhlci0+cmJfcmlnaHQgfHwgcmJfaXNfYmxhY2sob3RoZXItPnJiX3Jp Z2h0KSkKKwkJCQl7CisJCQkJCXJiX3NldF9ibGFjayhvdGhlci0+cmJfbGVmdCk7CisJCQkJCXJi X3NldF9yZWQob3RoZXIpOworCQkJCQlfX3JiX3JvdGF0ZV9yaWdodChvdGhlciwgcm9vdCk7CisJ CQkJCW90aGVyID0gcGFyZW50LT5yYl9yaWdodDsKKwkJCQl9CisJCQkJcmJfc2V0X2NvbG9yKG90 aGVyLCByYl9jb2xvcihwYXJlbnQpKTsKKwkJCQlyYl9zZXRfYmxhY2socGFyZW50KTsKKwkJCQly Yl9zZXRfYmxhY2sob3RoZXItPnJiX3JpZ2h0KTsKKwkJCQlfX3JiX3JvdGF0ZV9sZWZ0KHBhcmVu dCwgcm9vdCk7CisJCQkJbm9kZSA9IHJvb3QtPnJiX25vZGU7CisJCQkJYnJlYWs7CisJCQl9CisJ CX0KKwkJZWxzZQorCQl7CisJCQlvdGhlciA9IHBhcmVudC0+cmJfbGVmdDsKKwkJCWlmIChyYl9p c19yZWQob3RoZXIpKQorCQkJeworCQkJCXJiX3NldF9ibGFjayhvdGhlcik7CisJCQkJcmJfc2V0 X3JlZChwYXJlbnQpOworCQkJCV9fcmJfcm90YXRlX3JpZ2h0KHBhcmVudCwgcm9vdCk7CisJCQkJ b3RoZXIgPSBwYXJlbnQtPnJiX2xlZnQ7CisJCQl9CisJCQlpZiAoKCFvdGhlci0+cmJfbGVmdCB8 fCByYl9pc19ibGFjayhvdGhlci0+cmJfbGVmdCkpICYmCisJCQkgICAgKCFvdGhlci0+cmJfcmln aHQgfHwgcmJfaXNfYmxhY2sob3RoZXItPnJiX3JpZ2h0KSkpCisJCQl7CisJCQkJcmJfc2V0X3Jl ZChvdGhlcik7CisJCQkJbm9kZSA9IHBhcmVudDsKKwkJCQlwYXJlbnQgPSByYl9wYXJlbnQobm9k ZSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKCFvdGhlci0+cmJfbGVmdCB8fCByYl9p c19ibGFjayhvdGhlci0+cmJfbGVmdCkpCisJCQkJeworCQkJCQlyYl9zZXRfYmxhY2sob3RoZXIt PnJiX3JpZ2h0KTsKKwkJCQkJcmJfc2V0X3JlZChvdGhlcik7CisJCQkJCV9fcmJfcm90YXRlX2xl ZnQob3RoZXIsIHJvb3QpOworCQkJCQlvdGhlciA9IHBhcmVudC0+cmJfbGVmdDsKKwkJCQl9CisJ CQkJcmJfc2V0X2NvbG9yKG90aGVyLCByYl9jb2xvcihwYXJlbnQpKTsKKwkJCQlyYl9zZXRfYmxh Y2socGFyZW50KTsKKwkJCQlyYl9zZXRfYmxhY2sob3RoZXItPnJiX2xlZnQpOworCQkJCV9fcmJf cm90YXRlX3JpZ2h0KHBhcmVudCwgcm9vdCk7CisJCQkJbm9kZSA9IHJvb3QtPnJiX25vZGU7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJaWYgKG5vZGUpCisJCXJiX3NldF9ibGFjayhub2Rl KTsKIH0KIAogdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqbm9kZSwgc3RydWN0IHJiX3Jv b3QgKnJvb3QpCiB7Ci0gICAgc3RydWN0IHJiX25vZGUgKmNoaWxkLCAqcGFyZW50OwotICAgIGlu dCBjb2xvcjsKLQotICAgIGlmICghbm9kZS0+cmJfbGVmdCkKLSAgICAgICAgY2hpbGQgPSBub2Rl LT5yYl9yaWdodDsKLSAgICBlbHNlIGlmICghbm9kZS0+cmJfcmlnaHQpCi0gICAgICAgIGNoaWxk ID0gbm9kZS0+cmJfbGVmdDsKLSAgICBlbHNlCi0gICAgewotICAgICAgICBzdHJ1Y3QgcmJfbm9k ZSAqb2xkID0gbm9kZSwgKmxlZnQ7Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPnJiX3JpZ2h0Owot ICAgICAgICB3aGlsZSAoKGxlZnQgPSBub2RlLT5yYl9sZWZ0KSAhPSBOVUxMKQotICAgICAgICAg ICAgbm9kZSA9IGxlZnQ7Ci0KLSAgICAgICAgaWYgKHJiX3BhcmVudChvbGQpKSB7Ci0gICAgICAg ICAgICBpZiAocmJfcGFyZW50KG9sZCktPnJiX2xlZnQgPT0gb2xkKQotICAgICAgICAgICAgICAg IHJiX3BhcmVudChvbGQpLT5yYl9sZWZ0ID0gbm9kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICAgICByYl9wYXJlbnQob2xkKS0+cmJfcmlnaHQgPSBub2RlOwotICAgICAgICB9IGVs c2UKLSAgICAgICAgICAgIHJvb3QtPnJiX25vZGUgPSBub2RlOwotCi0gICAgICAgIGNoaWxkID0g bm9kZS0+cmJfcmlnaHQ7Ci0gICAgICAgIHBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLSAgICAg ICAgY29sb3IgPSByYl9jb2xvcihub2RlKTsKLQotICAgICAgICBpZiAocGFyZW50ID09IG9sZCkg ewotICAgICAgICAgICAgcGFyZW50ID0gbm9kZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgIGlmIChjaGlsZCkKLSAgICAgICAgICAgICAgICByYl9zZXRfcGFyZW50KGNoaWxkLCBwYXJl bnQpOwotICAgICAgICAgICAgcGFyZW50LT5yYl9sZWZ0ID0gY2hpbGQ7Ci0gICAgICAgIH0KLQot ICAgICAgICBub2RlLT5yYl9wYXJlbnRfY29sb3IgPSBvbGQtPnJiX3BhcmVudF9jb2xvcjsKLSAg ICAgICAgbm9kZS0+cmJfcmlnaHQgPSBvbGQtPnJiX3JpZ2h0OwotICAgICAgICBub2RlLT5yYl9s ZWZ0ID0gb2xkLT5yYl9sZWZ0OwotCi0gICAgICAgIHJiX3NldF9wYXJlbnQob2xkLT5yYl9sZWZ0 LCBub2RlKTsKLSAgICAgICAgaWYgKG9sZC0+cmJfcmlnaHQpCi0gICAgICAgICAgICByYl9zZXRf cGFyZW50KG9sZC0+cmJfcmlnaHQsIG5vZGUpOwotICAgICAgICBnb3RvIGNvbG9yOwotICAgIH0K LQotICAgIHBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKLSAgICBjb2xvciA9IHJiX2NvbG9yKG5v ZGUpOwotCi0gICAgaWYgKGNoaWxkKQotICAgICAgICByYl9zZXRfcGFyZW50KGNoaWxkLCBwYXJl bnQpOwotICAgIGlmIChwYXJlbnQpCi0gICAgewotICAgICAgICBpZiAocGFyZW50LT5yYl9sZWZ0 ID09IG5vZGUpCi0gICAgICAgICAgICBwYXJlbnQtPnJiX2xlZnQgPSBjaGlsZDsKLSAgICAgICAg ZWxzZQotICAgICAgICAgICAgcGFyZW50LT5yYl9yaWdodCA9IGNoaWxkOwotICAgIH0KLSAgICBl bHNlCi0gICAgICAgIHJvb3QtPnJiX25vZGUgPSBjaGlsZDsKKwlzdHJ1Y3QgcmJfbm9kZSAqY2hp bGQsICpwYXJlbnQ7CisJaW50IGNvbG9yOworCisJaWYgKCFub2RlLT5yYl9sZWZ0KQorCQljaGls ZCA9IG5vZGUtPnJiX3JpZ2h0OworCWVsc2UgaWYgKCFub2RlLT5yYl9yaWdodCkKKwkJY2hpbGQg PSBub2RlLT5yYl9sZWZ0OworCWVsc2UKKwl7CisJCXN0cnVjdCByYl9ub2RlICpvbGQgPSBub2Rl LCAqbGVmdDsKKworCQlub2RlID0gbm9kZS0+cmJfcmlnaHQ7CisJCXdoaWxlICgobGVmdCA9IG5v ZGUtPnJiX2xlZnQpICE9IE5VTEwpCisJCQlub2RlID0gbGVmdDsKKworCQlpZiAocmJfcGFyZW50 KG9sZCkpIHsKKwkJCWlmIChyYl9wYXJlbnQob2xkKS0+cmJfbGVmdCA9PSBvbGQpCisJCQkJcmJf cGFyZW50KG9sZCktPnJiX2xlZnQgPSBub2RlOworCQkJZWxzZQorCQkJCXJiX3BhcmVudChvbGQp LT5yYl9yaWdodCA9IG5vZGU7CisJCX0gZWxzZQorCQkJcm9vdC0+cmJfbm9kZSA9IG5vZGU7CisK KwkJY2hpbGQgPSBub2RlLT5yYl9yaWdodDsKKwkJcGFyZW50ID0gcmJfcGFyZW50KG5vZGUpOwor CQljb2xvciA9IHJiX2NvbG9yKG5vZGUpOworCisJCWlmIChwYXJlbnQgPT0gb2xkKSB7CisJCQlw YXJlbnQgPSBub2RlOworCQl9IGVsc2UgeworCQkJaWYgKGNoaWxkKQorCQkJCXJiX3NldF9wYXJl bnQoY2hpbGQsIHBhcmVudCk7CisJCQlwYXJlbnQtPnJiX2xlZnQgPSBjaGlsZDsKKwkJfQorCisJ CW5vZGUtPnJiX3BhcmVudF9jb2xvciA9IG9sZC0+cmJfcGFyZW50X2NvbG9yOworCQlub2RlLT5y Yl9yaWdodCA9IG9sZC0+cmJfcmlnaHQ7CisJCW5vZGUtPnJiX2xlZnQgPSBvbGQtPnJiX2xlZnQ7 CisKKwkJcmJfc2V0X3BhcmVudChvbGQtPnJiX2xlZnQsIG5vZGUpOworCQlpZiAob2xkLT5yYl9y aWdodCkKKwkJCXJiX3NldF9wYXJlbnQob2xkLT5yYl9yaWdodCwgbm9kZSk7CisJCWdvdG8gY29s b3I7CisJfQorCisJcGFyZW50ID0gcmJfcGFyZW50KG5vZGUpOworCWNvbG9yID0gcmJfY29sb3Io bm9kZSk7CisKKwlpZiAoY2hpbGQpCisJCXJiX3NldF9wYXJlbnQoY2hpbGQsIHBhcmVudCk7CisJ aWYgKHBhcmVudCkKKwl7CisJCWlmIChwYXJlbnQtPnJiX2xlZnQgPT0gbm9kZSkKKwkJCXBhcmVu dC0+cmJfbGVmdCA9IGNoaWxkOworCQllbHNlCisJCQlwYXJlbnQtPnJiX3JpZ2h0ID0gY2hpbGQ7 CisJfQorCWVsc2UKKwkJcm9vdC0+cmJfbm9kZSA9IGNoaWxkOwogCiAgY29sb3I6Ci0gICAgaWYg KGNvbG9yID09IFJCX0JMQUNLKQotICAgICAgICBfX3JiX2VyYXNlX2NvbG9yKGNoaWxkLCBwYXJl bnQsIHJvb3QpOworCWlmIChjb2xvciA9PSBSQl9CTEFDSykKKwkJX19yYl9lcmFzZV9jb2xvcihj aGlsZCwgcGFyZW50LCByb290KTsKIH0KIEVYUE9SVF9TWU1CT0wocmJfZXJhc2UpOwogCkBAIC0y ODcsMTA0ICsyODcsMTA0IEBAIEVYUE9SVF9TWU1CT0wocmJfZXJhc2UpOwogICovCiBzdHJ1Y3Qg cmJfbm9kZSAqcmJfZmlyc3QoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCiB7Ci0gICAgc3Ry dWN0IHJiX25vZGUgKm47Ci0KLSAgICBuID0gcm9vdC0+cmJfbm9kZTsKLSAgICBpZiAoIW4pCi0g ICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlIChuLT5yYl9sZWZ0KQotICAgICAgICBuID0g bi0+cmJfbGVmdDsKLSAgICByZXR1cm4gbjsKKwlzdHJ1Y3QgcmJfbm9kZQkqbjsKKworCW4gPSBy b290LT5yYl9ub2RlOworCWlmICghbikKKwkJcmV0dXJuIE5VTEw7CisJd2hpbGUgKG4tPnJiX2xl ZnQpCisJCW4gPSBuLT5yYl9sZWZ0OworCXJldHVybiBuOwogfQogRVhQT1JUX1NZTUJPTChyYl9m aXJzdCk7CiAKIHN0cnVjdCByYl9ub2RlICpyYl9sYXN0KGNvbnN0IHN0cnVjdCByYl9yb290ICpy b290KQogewotICAgIHN0cnVjdCByYl9ub2RlICpuOwotCi0gICAgbiA9IHJvb3QtPnJiX25vZGU7 Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3aGlsZSAobi0+cmJfcmln aHQpCi0gICAgICAgIG4gPSBuLT5yYl9yaWdodDsKLSAgICByZXR1cm4gbjsKKwlzdHJ1Y3QgcmJf bm9kZQkqbjsKKworCW4gPSByb290LT5yYl9ub2RlOworCWlmICghbikKKwkJcmV0dXJuIE5VTEw7 CisJd2hpbGUgKG4tPnJiX3JpZ2h0KQorCQluID0gbi0+cmJfcmlnaHQ7CisJcmV0dXJuIG47CiB9 CiBFWFBPUlRfU1lNQk9MKHJiX2xhc3QpOwogCiBzdHJ1Y3QgcmJfbm9kZSAqcmJfbmV4dChjb25z dCBzdHJ1Y3QgcmJfbm9kZSAqbm9kZSkKIHsKLSAgICBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50Owot Ci0gICAgaWYgKHJiX3BhcmVudChub2RlKSA9PSBub2RlKQotICAgICAgICByZXR1cm4gTlVMTDsK LQotICAgIC8qIElmIHdlIGhhdmUgYSByaWdodC1oYW5kIGNoaWxkLCBnbyBkb3duIGFuZCB0aGVu IGxlZnQgYXMgZmFyCi0gICAgICAgYXMgd2UgY2FuLiAqLwotICAgIGlmIChub2RlLT5yYl9yaWdo dCkgewotICAgICAgICBub2RlID0gbm9kZS0+cmJfcmlnaHQ7IAotICAgICAgICB3aGlsZSAobm9k ZS0+cmJfbGVmdCkKLSAgICAgICAgICAgIG5vZGU9bm9kZS0+cmJfbGVmdDsKLSAgICAgICAgcmV0 dXJuIChzdHJ1Y3QgcmJfbm9kZSAqKW5vZGU7Ci0gICAgfQotCi0gICAgLyogTm8gcmlnaHQtaGFu ZCBjaGlsZHJlbi4gIEV2ZXJ5dGhpbmcgZG93biBhbmQgbGVmdCBpcwotICAgICAgIHNtYWxsZXIg dGhhbiB1cywgc28gYW55ICduZXh0JyBub2RlIG11c3QgYmUgaW4gdGhlIGdlbmVyYWwKLSAgICAg ICBkaXJlY3Rpb24gb2Ygb3VyIHBhcmVudC4gR28gdXAgdGhlIHRyZWU7IGFueSB0aW1lIHRoZQot ICAgICAgIGFuY2VzdG9yIGlzIGEgcmlnaHQtaGFuZCBjaGlsZCBvZiBpdHMgcGFyZW50LCBrZWVw IGdvaW5nCi0gICAgICAgdXAuIEZpcnN0IHRpbWUgaXQncyBhIGxlZnQtaGFuZCBjaGlsZCBvZiBp dHMgcGFyZW50LCBzYWlkCi0gICAgICAgcGFyZW50IGlzIG91ciAnbmV4dCcgbm9kZS4gKi8KLSAg ICB3aGlsZSAoKHBhcmVudCA9IHJiX3BhcmVudChub2RlKSkgJiYgbm9kZSA9PSBwYXJlbnQtPnJi X3JpZ2h0KQotICAgICAgICBub2RlID0gcGFyZW50OwotCi0gICAgcmV0dXJuIHBhcmVudDsKKwlz dHJ1Y3QgcmJfbm9kZSAqcGFyZW50OworCisJaWYgKHJiX3BhcmVudChub2RlKSA9PSBub2RlKQor CQlyZXR1cm4gTlVMTDsKKworCS8qIElmIHdlIGhhdmUgYSByaWdodC1oYW5kIGNoaWxkLCBnbyBk b3duIGFuZCB0aGVuIGxlZnQgYXMgZmFyCisJICAgYXMgd2UgY2FuLiAqLworCWlmIChub2RlLT5y Yl9yaWdodCkgeworCQlub2RlID0gbm9kZS0+cmJfcmlnaHQ7CisJCXdoaWxlIChub2RlLT5yYl9s ZWZ0KQorCQkJbm9kZT1ub2RlLT5yYl9sZWZ0OworCQlyZXR1cm4gKHN0cnVjdCByYl9ub2RlICop bm9kZTsKKwl9CisKKwkvKiBObyByaWdodC1oYW5kIGNoaWxkcmVuLiAgRXZlcnl0aGluZyBkb3du IGFuZCBsZWZ0IGlzCisJICAgc21hbGxlciB0aGFuIHVzLCBzbyBhbnkgJ25leHQnIG5vZGUgbXVz dCBiZSBpbiB0aGUgZ2VuZXJhbAorCSAgIGRpcmVjdGlvbiBvZiBvdXIgcGFyZW50LiBHbyB1cCB0 aGUgdHJlZTsgYW55IHRpbWUgdGhlCisJICAgYW5jZXN0b3IgaXMgYSByaWdodC1oYW5kIGNoaWxk IG9mIGl0cyBwYXJlbnQsIGtlZXAgZ29pbmcKKwkgICB1cC4gRmlyc3QgdGltZSBpdCdzIGEgbGVm dC1oYW5kIGNoaWxkIG9mIGl0cyBwYXJlbnQsIHNhaWQKKwkgICBwYXJlbnQgaXMgb3VyICduZXh0 JyBub2RlLiAqLworCXdoaWxlICgocGFyZW50ID0gcmJfcGFyZW50KG5vZGUpKSAmJiBub2RlID09 IHBhcmVudC0+cmJfcmlnaHQpCisJCW5vZGUgPSBwYXJlbnQ7CisKKwlyZXR1cm4gcGFyZW50Owog fQogRVhQT1JUX1NZTUJPTChyYl9uZXh0KTsKIAogc3RydWN0IHJiX25vZGUgKnJiX3ByZXYoY29u c3Qgc3RydWN0IHJiX25vZGUgKm5vZGUpCiB7Ci0gICAgc3RydWN0IHJiX25vZGUgKnBhcmVudDsK LQotICAgIGlmIChyYl9wYXJlbnQobm9kZSkgPT0gbm9kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7 Ci0KLSAgICAvKiBJZiB3ZSBoYXZlIGEgbGVmdC1oYW5kIGNoaWxkLCBnbyBkb3duIGFuZCB0aGVu IHJpZ2h0IGFzIGZhcgotICAgICAgIGFzIHdlIGNhbi4gKi8KLSAgICBpZiAobm9kZS0+cmJfbGVm dCkgewotICAgICAgICBub2RlID0gbm9kZS0+cmJfbGVmdDsgCi0gICAgICAgIHdoaWxlIChub2Rl LT5yYl9yaWdodCkKLSAgICAgICAgICAgIG5vZGU9bm9kZS0+cmJfcmlnaHQ7Ci0gICAgICAgIHJl dHVybiAoc3RydWN0IHJiX25vZGUgKilub2RlOwotICAgIH0KLQotICAgIC8qIE5vIGxlZnQtaGFu ZCBjaGlsZHJlbi4gR28gdXAgdGlsbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdoaWNoCi0gICAgICAg aXMgYSByaWdodC1oYW5kIGNoaWxkIG9mIGl0cyBwYXJlbnQgKi8KLSAgICB3aGlsZSAoKHBhcmVu dCA9IHJiX3BhcmVudChub2RlKSkgJiYgbm9kZSA9PSBwYXJlbnQtPnJiX2xlZnQpCi0gICAgICAg IG5vZGUgPSBwYXJlbnQ7Ci0KLSAgICByZXR1cm4gcGFyZW50OworCXN0cnVjdCByYl9ub2RlICpw YXJlbnQ7CisKKwlpZiAocmJfcGFyZW50KG5vZGUpID09IG5vZGUpCisJCXJldHVybiBOVUxMOwor CisJLyogSWYgd2UgaGF2ZSBhIGxlZnQtaGFuZCBjaGlsZCwgZ28gZG93biBhbmQgdGhlbiByaWdo dCBhcyBmYXIKKwkgICBhcyB3ZSBjYW4uICovCisJaWYgKG5vZGUtPnJiX2xlZnQpIHsKKwkJbm9k ZSA9IG5vZGUtPnJiX2xlZnQ7CisJCXdoaWxlIChub2RlLT5yYl9yaWdodCkKKwkJCW5vZGU9bm9k ZS0+cmJfcmlnaHQ7CisJCXJldHVybiAoc3RydWN0IHJiX25vZGUgKilub2RlOworCX0KKworCS8q IE5vIGxlZnQtaGFuZCBjaGlsZHJlbi4gR28gdXAgdGlsbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdo aWNoCisJICAgaXMgYSByaWdodC1oYW5kIGNoaWxkIG9mIGl0cyBwYXJlbnQgKi8KKwl3aGlsZSAo KHBhcmVudCA9IHJiX3BhcmVudChub2RlKSkgJiYgbm9kZSA9PSBwYXJlbnQtPnJiX2xlZnQpCisJ CW5vZGUgPSBwYXJlbnQ7CisKKwlyZXR1cm4gcGFyZW50OwogfQogRVhQT1JUX1NZTUJPTChyYl9w cmV2KTsKIAogdm9pZCByYl9yZXBsYWNlX25vZGUoc3RydWN0IHJiX25vZGUgKnZpY3RpbSwgc3Ry dWN0IHJiX25vZGUgKm5ldywKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYl9yb290ICpy b290KQorCQkgICAgIHN0cnVjdCByYl9yb290ICpyb290KQogewotICAgIHN0cnVjdCByYl9ub2Rl ICpwYXJlbnQgPSByYl9wYXJlbnQodmljdGltKTsKLQotICAgIC8qIFNldCB0aGUgc3Vycm91bmRp bmcgbm9kZXMgdG8gcG9pbnQgdG8gdGhlIHJlcGxhY2VtZW50ICovCi0gICAgaWYgKHBhcmVudCkg ewotICAgICAgICBpZiAodmljdGltID09IHBhcmVudC0+cmJfbGVmdCkKLSAgICAgICAgICAgIHBh cmVudC0+cmJfbGVmdCA9IG5ldzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFyZW50LT5y Yl9yaWdodCA9IG5ldzsKLSAgICB9IGVsc2UgewotICAgICAgICByb290LT5yYl9ub2RlID0gbmV3 OwotICAgIH0KLSAgICBpZiAodmljdGltLT5yYl9sZWZ0KQotICAgICAgICByYl9zZXRfcGFyZW50 KHZpY3RpbS0+cmJfbGVmdCwgbmV3KTsKLSAgICBpZiAodmljdGltLT5yYl9yaWdodCkKLSAgICAg ICAgcmJfc2V0X3BhcmVudCh2aWN0aW0tPnJiX3JpZ2h0LCBuZXcpOwotCi0gICAgLyogQ29weSB0 aGUgcG9pbnRlcnMvY29sb3VyIGZyb20gdGhlIHZpY3RpbSB0byB0aGUgcmVwbGFjZW1lbnQgKi8K LSAgICAqbmV3ID0gKnZpY3RpbTsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gcmJfcGFyZW50 KHZpY3RpbSk7CisKKwkvKiBTZXQgdGhlIHN1cnJvdW5kaW5nIG5vZGVzIHRvIHBvaW50IHRvIHRo ZSByZXBsYWNlbWVudCAqLworCWlmIChwYXJlbnQpIHsKKwkJaWYgKHZpY3RpbSA9PSBwYXJlbnQt PnJiX2xlZnQpCisJCQlwYXJlbnQtPnJiX2xlZnQgPSBuZXc7CisJCWVsc2UKKwkJCXBhcmVudC0+ cmJfcmlnaHQgPSBuZXc7CisJfSBlbHNlIHsKKwkJcm9vdC0+cmJfbm9kZSA9IG5ldzsKKwl9CisJ aWYgKHZpY3RpbS0+cmJfbGVmdCkKKwkJcmJfc2V0X3BhcmVudCh2aWN0aW0tPnJiX2xlZnQsIG5l dyk7CisJaWYgKHZpY3RpbS0+cmJfcmlnaHQpCisJCXJiX3NldF9wYXJlbnQodmljdGltLT5yYl9y aWdodCwgbmV3KTsKKworCS8qIENvcHkgdGhlIHBvaW50ZXJzL2NvbG91ciBmcm9tIHRoZSB2aWN0 aW0gdG8gdGhlIHJlcGxhY2VtZW50ICovCisJKm5ldyA9ICp2aWN0aW07CiB9CiBFWFBPUlRfU1lN Qk9MKHJiX3JlcGxhY2Vfbm9kZSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcmJ0cmVl LmggYi94ZW4vaW5jbHVkZS94ZW4vcmJ0cmVlLmgKaW5kZXggM2ViNTI3ZWIzNy4uMWExM2VhNjZm YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3JidHJlZS5oCisrKyBiL3hlbi9pbmNsdWRl L3hlbi9yYnRyZWUuaApAQCAtMjEsMTYgKzIxLDE3IEBACiAKIHN0cnVjdCByYl9ub2RlCiB7Ci0g ICAgdW5zaWduZWQgbG9uZyAgcmJfcGFyZW50X2NvbG9yOwotI2RlZmluZSBSQl9SRUQgIDAKLSNk ZWZpbmUgUkJfQkxBQ0sgMQotICAgIHN0cnVjdCByYl9ub2RlICpyYl9yaWdodDsKLSAgICBzdHJ1 Y3QgcmJfbm9kZSAqcmJfbGVmdDsKLX07CisJdW5zaWduZWQgbG9uZyAgcmJfcGFyZW50X2NvbG9y OworI2RlZmluZQlSQl9SRUQJCTAKKyNkZWZpbmUJUkJfQkxBQ0sJMQorCXN0cnVjdCByYl9ub2Rl ICpyYl9yaWdodDsKKwlzdHJ1Y3QgcmJfbm9kZSAqcmJfbGVmdDsKK30gX19hdHRyaWJ1dGVfXygo YWxpZ25lZChzaXplb2YobG9uZykpKSk7CisgICAgLyogVGhlIGFsaWdubWVudCBtaWdodCBzZWVt IHBvaW50bGVzcywgYnV0IGFsbGVnZWRseSBDUklTIG5lZWRzIGl0ICovCiAKIHN0cnVjdCByYl9y b290CiB7Ci0gICAgc3RydWN0IHJiX25vZGUgKnJiX25vZGU7CisJc3RydWN0IHJiX25vZGUgKnJi X25vZGU7CiB9OwogCiAjZGVmaW5lIHJiX3BhcmVudChyKSAgICgoc3RydWN0IHJiX25vZGUgKiko KHIpLT5yYl9wYXJlbnRfY29sb3IgJiB+MykpCkBAIC00MiwxOSArNDMsMTkgQEAgc3RydWN0IHJi X3Jvb3QKIAogc3RhdGljIGlubGluZSB2b2lkIHJiX3NldF9wYXJlbnQoc3RydWN0IHJiX25vZGUg KnJiLCBzdHJ1Y3QgcmJfbm9kZSAqcCkKIHsKLSAgICByYi0+cmJfcGFyZW50X2NvbG9yID0gKHJi LT5yYl9wYXJlbnRfY29sb3IgJiAzKSB8ICh1bnNpZ25lZCBsb25nKXA7CisJcmItPnJiX3BhcmVu dF9jb2xvciA9IChyYi0+cmJfcGFyZW50X2NvbG9yICYgMykgfCAodW5zaWduZWQgbG9uZylwOwog fQogc3RhdGljIGlubGluZSB2b2lkIHJiX3NldF9jb2xvcihzdHJ1Y3QgcmJfbm9kZSAqcmIsIGlu dCBjb2xvcikKIHsKLSAgICByYi0+cmJfcGFyZW50X2NvbG9yID0gKHJiLT5yYl9wYXJlbnRfY29s b3IgJiB+MSkgfCBjb2xvcjsKKwlyYi0+cmJfcGFyZW50X2NvbG9yID0gKHJiLT5yYl9wYXJlbnRf Y29sb3IgJiB+MSkgfCBjb2xvcjsKIH0KIAotI2RlZmluZSBSQl9ST09UIChzdHJ1Y3QgcmJfcm9v dCkgeyBOVUxMLCB9Ci0jZGVmaW5lIHJiX2VudHJ5KHB0ciwgdHlwZSwgbWVtYmVyKSBjb250YWlu ZXJfb2YocHRyLCB0eXBlLCBtZW1iZXIpCisjZGVmaW5lIFJCX1JPT1QJKHN0cnVjdCByYl9yb290 KSB7IE5VTEwsIH0KKyNkZWZpbmUJcmJfZW50cnkocHRyLCB0eXBlLCBtZW1iZXIpIGNvbnRhaW5l cl9vZihwdHIsIHR5cGUsIG1lbWJlcikKIAotI2RlZmluZSBSQl9FTVBUWV9ST09UKHJvb3QpICgo cm9vdCktPnJiX25vZGUgPT0gTlVMTCkKLSNkZWZpbmUgUkJfRU1QVFlfTk9ERShub2RlKSAocmJf cGFyZW50KG5vZGUpID09IG5vZGUpCi0jZGVmaW5lIFJCX0NMRUFSX05PREUobm9kZSkgKHJiX3Nl dF9wYXJlbnQobm9kZSwgbm9kZSkpCisjZGVmaW5lIFJCX0VNUFRZX1JPT1Qocm9vdCkJKChyb290 KS0+cmJfbm9kZSA9PSBOVUxMKQorI2RlZmluZSBSQl9FTVBUWV9OT0RFKG5vZGUpCShyYl9wYXJl bnQobm9kZSkgPT0gbm9kZSkKKyNkZWZpbmUgUkJfQ0xFQVJfTk9ERShub2RlKQkocmJfc2V0X3Bh cmVudChub2RlLCBub2RlKSkKIAogZXh0ZXJuIHZvaWQgcmJfaW5zZXJ0X2NvbG9yKHN0cnVjdCBy Yl9ub2RlICosIHN0cnVjdCByYl9yb290ICopOwogZXh0ZXJuIHZvaWQgcmJfZXJhc2Uoc3RydWN0 IHJiX25vZGUgKiwgc3RydWN0IHJiX3Jvb3QgKik7CkBAIC02NywxNSArNjgsMTUgQEAgZXh0ZXJu IHN0cnVjdCByYl9ub2RlICpyYl9sYXN0KGNvbnN0IHN0cnVjdCByYl9yb290ICopOwogCiAvKiBG YXN0IHJlcGxhY2VtZW50IG9mIGEgc2luZ2xlIG5vZGUgd2l0aG91dCByZW1vdmUvcmViYWxhbmNl L2FkZC9yZWJhbGFuY2UgKi8KIGV4dGVybiB2b2lkIHJiX3JlcGxhY2Vfbm9kZShzdHJ1Y3QgcmJf bm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfbm9kZSAqbmV3LCAKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCk7CisJCQkgICAgc3RydWN0IHJiX3Jvb3QgKnJv b3QpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgcmJfbGlua19ub2RlKHN0cnVjdCByYl9ub2RlICog bm9kZSwgc3RydWN0IHJiX25vZGUgKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCByYl9ub2RlICoqIHJiX2xpbmspCisJCQkJc3RydWN0IHJiX25vZGUgKiog cmJfbGluaykKIHsKLSAgICBub2RlLT5yYl9wYXJlbnRfY29sb3IgPSAodW5zaWduZWQgbG9uZyAp cGFyZW50OwotICAgIG5vZGUtPnJiX2xlZnQgPSBub2RlLT5yYl9yaWdodCA9IE5VTEw7CisJbm9k ZS0+cmJfcGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcgKXBhcmVudDsKKwlub2RlLT5yYl9s ZWZ0ID0gbm9kZS0+cmJfcmlnaHQgPSBOVUxMOwogCi0gICAgKnJiX2xpbmsgPSBub2RlOworCSpy Yl9saW5rID0gbm9kZTsKIH0KIAogI2VuZGlmIC8qIF9fUkJUUkVFX0hfXyAqLwotLSAKMi4xMi4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==