From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 8 May 2019 13:10:44 +0100 Message-Id: <20190508121058.27038-8-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> References: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 07/21] gem_wsim: Factor out common error handling List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoZXJlIGlz IGEgcmVwZWF0ZWQgcGF0dGVybiB3aXRoIGVycm9yIGhhbmRsaW5nIHdoaWNoIGNhbiBiZSBtb3Zl ZCB0byBhCm1hY3JvIHRvIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkgaW4gdGhlIGNvbW1hbmQgcGFy c2luZyBsb29wLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KLS0tCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgfCAyNDQgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODggaW5zZXJ0 aW9ucygrKSwgMTU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2JlbmNobWFya3MvZ2VtX3dz aW0uYyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwppbmRleCA2MDllNjRmM2Q5YzguLmVmOTczMTFh Njg3OSAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jCisrKyBiL2JlbmNobWFya3Mv Z2VtX3dzaW0uYwpAQCAtMjg5LDYgKzI4OSwyNyBAQCBwYXJzZV9kZXBlbmRlbmNpZXModW5zaWdu ZWQgaW50IG5yX3N0ZXBzLCBzdHJ1Y3Qgd19zdGVwICp3LCBjaGFyICpfZGVzYykKIAlyZXR1cm4g MDsKIH0KIAorc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMikp KQord3NpbV9lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKworCWlm ICghdmVyYm9zZSkKKwkJcmV0dXJuOworCisJdmFfc3RhcnQoYXAsIGZtdCk7CisJdmZwcmludGYo c3RkZXJyLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOworfQorCisjZGVmaW5lIGNoZWNrX2FyZyhj b25kLCBmbXQsIC4uLikgXAoreyBcCisJaWYgKGNvbmQpIHsgXAorCQl3c2ltX2VycihmbXQsIF9f VkFfQVJHU19fKTsgXAorCQlyZXR1cm4gTlVMTDsgXAorCX0gXAorfQorCiBzdGF0aWMgc3RydWN0 IHdvcmtsb2FkICoKIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBp bnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiB7CkBAIC0zMTksMTQgKzM0MCw5IEBA IHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0 cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJaWYgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwg Ii4iLCAmZmN0eCkpICE9CiAJCQkJICAgIE5VTEwpIHsKIAkJCQkJdG1wID0gYXRvaShmaWVsZCk7 Ci0JCQkJCWlmICh0bXAgPD0gMCkgewotCQkJCQkJaWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIGRlbGF5IGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJ CQlucl9zdGVwcyk7Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCisJCQkJCWNoZWNrX2Fy Zyh0bXAgPD0gMCwKKwkJCQkJCSAgIkludmFsaWQgZGVsYXkgYXQgc3RlcCAldSFcbiIsCisJCQkJ CQkgIG5yX3N0ZXBzKTsKIAkJCQkJc3RlcC50eXBlID0gREVMQVk7CiAJCQkJCXN0ZXAuZGVsYXkg PSB0bXA7CiAJCQkJCWdvdG8gYWRkX3N0ZXA7CkBAIC0zMzUsMTQgKzM1MSw5IEBAIHBhcnNlX3dv cmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3Jr bG9hZCAqYXBwX3cpCiAJCQkJaWYgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0 eCkpICE9CiAJCQkJICAgIE5VTEwpIHsKIAkJCQkJdG1wID0gYXRvaShmaWVsZCk7Ci0JCQkJCWlm ICh0bXAgPD0gMCkgewotCQkJCQkJaWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIs Ci0JCQkJCQkJCSJJbnZhbGlkIHBlcmlvZCBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQkJbnJfc3Rl cHMpOwotCQkJCQkJcmV0dXJuIE5VTEw7Ci0JCQkJCX0KLQorCQkJCQljaGVja19hcmcodG1wIDw9 IDAsCisJCQkJCQkgICJJbnZhbGlkIHBlcmlvZCBhdCBzdGVwICV1IVxuIiwKKwkJCQkJCSAgbnJf c3RlcHMpOwogCQkJCQlzdGVwLnR5cGUgPSBQRVJJT0Q7CiAJCQkJCXN0ZXAucGVyaW9kID0gdG1w OwogCQkJCQlnb3RvIGFkZF9zdGVwOwpAQCAtMzUyLDI1ICszNjMsMTcgQEAgcGFyc2Vfd29ya2xv YWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2Fk ICphcHBfdykKIAkJCQl3aGlsZSAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4 KSkgIT0KIAkJCQkgICAgTlVMTCkgewogCQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKLQkJCQkJaWYg KHRtcCA8PSAwICYmIG5yID09IDApIHsKLQkJCQkJCWlmICh2ZXJib3NlKQotCQkJCQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQkJCQkiSW52YWxpZCBjb250ZXh0IGF0IHN0ZXAgJXUhXG4iLAotCQkJ CQkJCQlucl9zdGVwcyk7Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCi0JCQkJCWlmIChu ciA9PSAwKSB7CisJCQkJCWNoZWNrX2FyZyhuciA9PSAwICYmIHRtcCA8PSAwLAorCQkJCQkJICAi SW52YWxpZCBjb250ZXh0IGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CisJCQkJ CWNoZWNrX2FyZyhuciA+IDEsCisJCQkJCQkgICJJbnZhbGlkIHByaW9yaXR5IGZvcm1hdCBhdCBz dGVwICV1IVxuIiwKKwkJCQkJCSAgbnJfc3RlcHMpOworCisJCQkJCWlmIChuciA9PSAwKQogCQkJ CQkJc3RlcC5jb250ZXh0ID0gdG1wOwotCQkJCQl9IGVsc2UgaWYgKG5yID09IDEpIHsKKwkJCQkJ ZWxzZQogCQkJCQkJc3RlcC5wcmlvcml0eSA9IHRtcDsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCWlm ICh2ZXJib3NlKQotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQkiSW52YWxpZCBwcmlv cml0eSBmb3JtYXQgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJCXJl dHVybiBOVUxMOwotCQkJCQl9CiAKIAkJCQkJbnIrKzsKIAkJCQl9CkBAIC0zODEsMTUgKzM4NCwx MCBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdz LCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCQkJCWlmICgoZmllbGQgPSBzdHJ0b2tfcihmc3Rh cnQsICIuIiwgJmZjdHgpKSAhPQogCQkJCSAgICBOVUxMKSB7CiAJCQkJCXRtcCA9IGF0b2koZmll bGQpOwotCQkJCQlpZiAodG1wID49IDAgfHwKLQkJCQkJICAgICgoaW50KW5yX3N0ZXBzICsgdG1w KSA8IDApIHsKLQkJCQkJCWlmICh2ZXJib3NlKQotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJCQkiSW52YWxpZCBzeW5jIHRhcmdldCBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQkJbnJfc3Rl cHMpOwotCQkJCQkJcmV0dXJuIE5VTEw7Ci0JCQkJCX0KLQorCQkJCQljaGVja19hcmcodG1wID49 IDAgfHwKKwkJCQkJCSAgKChpbnQpbnJfc3RlcHMgKyB0bXApIDwgMCwKKwkJCQkJCSAgIkludmFs aWQgc3luYyB0YXJnZXQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKIAkJCQkJ c3RlcC50eXBlID0gU1lOQzsKIAkJCQkJc3RlcC50YXJnZXQgPSB0bXA7CiAJCQkJCWdvdG8gYWRk X3N0ZXA7CkBAIC0zOTgsMTQgKzM5Niw5IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAq YXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJaWYg KChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpICE9CiAJCQkJICAgIE5VTEwp IHsKIAkJCQkJdG1wID0gYXRvaShmaWVsZCk7Ci0JCQkJCWlmICh0bXAgPCAwKSB7Ci0JCQkJCQlp ZiAodmVyYm9zZSkKLQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJIkludmFsaWQgdGhy b3R0bGUgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJCXJldHVybiBO VUxMOwotCQkJCQl9Ci0KKwkJCQkJY2hlY2tfYXJnKHRtcCA8IDAsCisJCQkJCQkgICJJbnZhbGlk IHRocm90dGxlIGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CiAJCQkJCXN0ZXAu dHlwZSA9IFRIUk9UVExFOwogCQkJCQlzdGVwLnRocm90dGxlID0gdG1wOwogCQkJCQlnb3RvIGFk ZF9zdGVwOwpAQCAtNDE0LDE0ICs0MDcsOSBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcg KmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCQkJCWlm ICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgpKSAhPQogCQkJCSAgICBOVUxM KSB7CiAJCQkJCXRtcCA9IGF0b2koZmllbGQpOwotCQkJCQlpZiAodG1wIDwgMCkgewotCQkJCQkJ aWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIHFk IHRocm90dGxlIGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVwcyk7Ci0JCQkJCQlyZXR1 cm4gTlVMTDsKLQkJCQkJfQotCisJCQkJCWNoZWNrX2FyZyh0bXAgPCAwLAorCQkJCQkJICAiSW52 YWxpZCBxZCB0aHJvdHRsZSBhdCBzdGVwICV1IVxuIiwKKwkJCQkJCSAgbnJfc3RlcHMpOwogCQkJ CQlzdGVwLnR5cGUgPSBRRF9USFJPVFRMRTsKIAkJCQkJc3RlcC50aHJvdHRsZSA9IHRtcDsKIAkJ CQkJZ290byBhZGRfc3RlcDsKQEAgLTQzMCwxNCArNDE4LDkgQEAgcGFyc2Vfd29ya2xvYWQoc3Ry dWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBf dykKIAkJCQlpZiAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0KIAkJ CQkgICAgTlVMTCkgewogCQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKLQkJCQkJaWYgKHRtcCA+PSAw KSB7Ci0JCQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJ IkludmFsaWQgc3cgZmVuY2Ugc2lnbmFsIGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVw cyk7Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCisJCQkJCWNoZWNrX2FyZyh0bXAgPj0g MCwKKwkJCQkJCSAgIkludmFsaWQgc3cgZmVuY2Ugc2lnbmFsIGF0IHN0ZXAgJXUhXG4iLAorCQkJ CQkJICBucl9zdGVwcyk7CiAJCQkJCXN0ZXAudHlwZSA9IFNXX0ZFTkNFX1NJR05BTDsKIAkJCQkJ c3RlcC50YXJnZXQgPSB0bXA7CiAJCQkJCWdvdG8gYWRkX3N0ZXA7CkBAIC00NTAsMzEgKzQzMywy MCBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdz LCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihm c3RhcnQsICIuIiwgJmZjdHgpKSAhPQogCQkJCSAgICBOVUxMKSB7CiAJCQkJCXRtcCA9IGF0b2ko ZmllbGQpOwotCQkJCQlpZiAodG1wIDw9IDAgJiYgbnIgPT0gMCkgewotCQkJCQkJaWYgKHZlcmJv c2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIGNvbnRleHQgYXQg c3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJCXJldHVybiBOVUxMOwotCQkJ CQl9IGVsc2UgaWYgKHRtcCA8IDAgJiYgbnIgPT0gMSkgewotCQkJCQkJaWYgKHZlcmJvc2UpCi0J CQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIHByZWVtcHRpb24gcGVyaW9k IGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVwcyk7Ci0JCQkJCQlyZXR1cm4gTlVMTDsK LQkJCQkJfQotCi0JCQkJCWlmIChuciA9PSAwKSB7CisJCQkJCWNoZWNrX2FyZyhuciA9PSAwICYm IHRtcCA8PSAwLAorCQkJCQkJICAiSW52YWxpZCBjb250ZXh0IGF0IHN0ZXAgJXUhXG4iLAorCQkJ CQkJICBucl9zdGVwcyk7CisJCQkJCWNoZWNrX2FyZyhuciA9PSAxICYmIHRtcCA8IDAsCisJCQkJ CQkgICJJbnZhbGlkIHByZWVtcHRpb24gcGVyaW9kIGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBu cl9zdGVwcyk7CisJCQkJCWNoZWNrX2FyZyhuciA+IDEsCisJCQkJCQkgICJJbnZhbGlkIHByZWVt cHRpb24gZm9ybWF0IGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CisKKwkJCQkJ aWYgKG5yID09IDApCiAJCQkJCQlzdGVwLmNvbnRleHQgPSB0bXA7Ci0JCQkJCX0gZWxzZSBpZiAo bnIgPT0gMSkgeworCQkJCQllbHNlCiAJCQkJCQlzdGVwLnBlcmlvZCA9IHRtcDsKLQkJCQkJfSBl bHNlIHsKLQkJCQkJCWlmICh2ZXJib3NlKQotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ CQkiSW52YWxpZCBwcmVlbXB0aW9uIGZvcm1hdCBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQkJbnJf c3RlcHMpOwotCQkJCQkJcmV0dXJuIE5VTEw7Ci0JCQkJCX0KIAogCQkJCQlucisrOwogCQkJCX0K QEAgLTQ5MiwxMyArNDY0LDggQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVu c2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIAkJCX0KIAogCQkJdG1w ID0gYXRvaShmaWVsZCk7Ci0JCQlpZiAodG1wIDwgMCkgewotCQkJCWlmICh2ZXJib3NlKQotCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCSJJbnZhbGlkIGN0eCBpZCBhdCBzdGVwICV1IVxuIiwK LQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQlyZXR1cm4gTlVMTDsKLQkJCX0KKwkJCWNoZWNrX2FyZyh0 bXAgPCAwLCAiSW52YWxpZCBjdHggaWQgYXQgc3RlcCAldSFcbiIsCisJCQkJICBucl9zdGVwcyk7 CiAJCQlzdGVwLmNvbnRleHQgPSB0bXA7CiAKIAkJCXZhbGlkKys7CkBAIC01MTksMTMgKzQ4Niw4 IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3Ms IHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJfQogCQkJfQogCi0JCQlpZiAob2xkX3ZhbGlk ID09IHZhbGlkKSB7Ci0JCQkJaWYgKHZlcmJvc2UpCi0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJIkludmFsaWQgZW5naW5lIGlkIGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJbnJfc3RlcHMpOwot CQkJCXJldHVybiBOVUxMOwotCQkJfQorCQkJY2hlY2tfYXJnKG9sZF92YWxpZCA9PSB2YWxpZCwK KwkJCQkgICJJbnZhbGlkIGVuZ2luZSBpZCBhdCBzdGVwICV1IVxuIiwgbnJfc3RlcHMpOwogCQl9 CiAKIAkJaWYgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpICE9IE5VTEwp IHsKQEAgLTUzNSwyNSArNDk3LDE5IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJn LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQlmc3RhcnQg PSBOVUxMOwogCiAJCQl0bXBsID0gc3RydG9sKGZpZWxkLCAmc2VwLCAxMCk7Ci0JCQlpZiAodG1w bCA8PSAwIHx8IHRtcGwgPT0gTE9OR19NSU4gfHwgdG1wbCA9PSBMT05HX01BWCkgewotCQkJCWlm ICh2ZXJib3NlKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCSJJbnZhbGlkIGR1cmF0aW9u IGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJbnJfc3RlcHMpOwotCQkJCXJldHVybiBOVUxMOwotCQkJ fQorCQkJY2hlY2tfYXJnKHRtcGwgPD0gMCB8fCB0bXBsID09IExPTkdfTUlOIHx8CisJCQkJICB0 bXBsID09IExPTkdfTUFYLAorCQkJCSAgIkludmFsaWQgZHVyYXRpb24gYXQgc3RlcCAldSFcbiIs IG5yX3N0ZXBzKTsKIAkJCXN0ZXAuZHVyYXRpb24ubWluID0gdG1wbDsKIAogCQkJaWYgKHNlcCAm JiAqc2VwID09ICctJykgewogCQkJCXRtcGwgPSBzdHJ0b2woc2VwICsgMSwgTlVMTCwgMTApOwot CQkJCWlmICh0bXBsIDw9IDAgfHwgdG1wbCA8PSBzdGVwLmR1cmF0aW9uLm1pbiB8fAotCQkJCSAg ICB0bXBsID09IExPTkdfTUlOIHx8IHRtcGwgPT0gTE9OR19NQVgpIHsKLQkJCQkJaWYgKHZlcmJv c2UpCi0JCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkiSW52YWxpZCBkdXJhdGlvbiByYW5n ZSBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQlucl9zdGVwcyk7Ci0JCQkJCXJldHVybiBOVUxMOwot CQkJCX0KKwkJCQljaGVja19hcmcodG1wbCA8PSAwIHx8CisJCQkJCSAgdG1wbCA8PSBzdGVwLmR1 cmF0aW9uLm1pbiB8fAorCQkJCQkgIHRtcGwgPT0gTE9OR19NSU4gfHwKKwkJCQkJICB0bXBsID09 IExPTkdfTUFYLAorCQkJCQkgICJJbnZhbGlkIGR1cmF0aW9uIHJhbmdlIGF0IHN0ZXAgJXUhXG4i LAorCQkJCQkgIG5yX3N0ZXBzKTsKIAkJCQlzdGVwLmR1cmF0aW9uLm1heCA9IHRtcGw7CiAJCQl9 IGVsc2UgewogCQkJCXN0ZXAuZHVyYXRpb24ubWF4ID0gc3RlcC5kdXJhdGlvbi5taW47CkBAIC01 NjYsMTMgKzUyMiw4IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25l ZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQlmc3RhcnQgPSBOVUxMOwog CiAJCQl0bXAgPSBwYXJzZV9kZXBlbmRlbmNpZXMobnJfc3RlcHMsICZzdGVwLCBmaWVsZCk7Ci0J CQlpZiAodG1wIDwgMCkgewotCQkJCWlmICh2ZXJib3NlKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJCSJJbnZhbGlkIGRlcGVuZGVuY3kgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQlucl9zdGVw cyk7Ci0JCQkJcmV0dXJuIE5VTEw7Ci0JCQl9CisJCQljaGVja19hcmcodG1wIDwgMCwKKwkJCQkg ICJJbnZhbGlkIGRlcGVuZGVuY3kgYXQgc3RlcCAldSFcbiIsIG5yX3N0ZXBzKTsKIAogCQkJdmFs aWQrKzsKIAkJfQpAQCAtNTgwLDI1ICs1MzEsMTYgQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdf YXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIAkJ aWYgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpICE9IE5VTEwpIHsKIAkJ CWZzdGFydCA9IE5VTEw7CiAKLQkJCWlmIChzdHJsZW4oZmllbGQpICE9IDEgfHwKLQkJCSAgICAo ZmllbGRbMF0gIT0gJzAnICYmIGZpZWxkWzBdICE9ICcxJykpIHsKLQkJCQlpZiAodmVyYm9zZSkK LQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkiSW52YWxpZCB3YWl0IGJvb2xlYW4gYXQgc3Rl cCAldSFcbiIsCi0JCQkJCQlucl9zdGVwcyk7Ci0JCQkJcmV0dXJuIE5VTEw7Ci0JCQl9CisJCQlj aGVja19hcmcoc3RybGVuKGZpZWxkKSAhPSAxIHx8CisJCQkJICAoZmllbGRbMF0gIT0gJzAnICYm IGZpZWxkWzBdICE9ICcxJyksCisJCQkJICAiSW52YWxpZCB3YWl0IGJvb2xlYW4gYXQgc3RlcCAl dSFcbiIsCisJCQkJICBucl9zdGVwcyk7CiAJCQlzdGVwLnN5bmMgPSBmaWVsZFswXSAtICcwJzsK IAogCQkJdmFsaWQrKzsKIAkJfQogCi0JCWlmICh2YWxpZCAhPSA1KSB7Ci0JCQlpZiAodmVyYm9z ZSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgcmVjb3JkIGF0IHN0ZXAgJXUhXG4iLAot CQkJCQlucl9zdGVwcyk7Ci0JCQlyZXR1cm4gTlVMTDsKLQkJfQorCQljaGVja19hcmcodmFsaWQg IT0gNSwgIkludmFsaWQgcmVjb3JkIGF0IHN0ZXAgJXUhXG4iLCBucl9zdGVwcyk7CiAKIAkJc3Rl cC50eXBlID0gQkFUQ0g7CiAKQEAgLTY0MywxNSArNTg1LDEwIEBAIGFkZF9zdGVwOgogCWZvciAo aSA9IDA7IGkgPCBucl9zdGVwczsgaSsrKSB7CiAJCWZvciAoaiA9IDA7IGogPCBzdGVwc1tpXS5m ZW5jZV9kZXBzLm5yOyBqKyspIHsKIAkJCXRtcCA9IHN0ZXBzW2ldLmlkeCArIHN0ZXBzW2ldLmZl bmNlX2RlcHMubGlzdFtqXTsKLQkJCWlmICh0bXAgPCAwIHx8IHRtcCA+PSBpIHx8Ci0JCQkgICAg KHN0ZXBzW3RtcF0udHlwZSAhPSBCQVRDSCAmJgotCQkJICAgICBzdGVwc1t0bXBdLnR5cGUgIT0g U1dfRkVOQ0UpKSB7Ci0JCQkJaWYgKHZlcmJvc2UpCi0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJIkludmFsaWQgZGVwZW5kZW5jeSB0YXJnZXQgJXUhXG4iLAotCQkJCQkJaSk7Ci0JCQkJcmV0 dXJuIE5VTEw7Ci0JCQl9CisJCQljaGVja19hcmcodG1wIDwgMCB8fCB0bXAgPj0gaSB8fAorCQkJ CSAgKHN0ZXBzW3RtcF0udHlwZSAhPSBCQVRDSCAmJgorCQkJCSAgIHN0ZXBzW3RtcF0udHlwZSAh PSBTV19GRU5DRSksCisJCQkJICAiSW52YWxpZCBkZXBlbmRlbmN5IHRhcmdldCAldSFcbiIsIGkp OwogCQkJc3RlcHNbdG1wXS5lbWl0X2ZlbmNlID0gLTE7CiAJCX0KIAl9CkBAIC02NjAsMTQgKzU5 Nyw5IEBAIGFkZF9zdGVwOgogCWZvciAoaSA9IDA7IGkgPCBucl9zdGVwczsgaSsrKSB7CiAJCWlm IChzdGVwc1tpXS50eXBlID09IFNXX0ZFTkNFX1NJR05BTCkgewogCQkJdG1wID0gc3RlcHNbaV0u aWR4ICsgc3RlcHNbaV0udGFyZ2V0OwotCQkJaWYgKHRtcCA8IDAgfHwgdG1wID49IGkgfHwKLQkJ CSAgICBzdGVwc1t0bXBdLnR5cGUgIT0gU1dfRkVOQ0UpIHsKLQkJCQlpZiAodmVyYm9zZSkKLQkJ CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkiSW52YWxpZCBzdyBmZW5jZSB0YXJnZXQgJXUhXG4i LAotCQkJCQkJaSk7Ci0JCQkJcmV0dXJuIE5VTEw7Ci0JCQl9CisJCQljaGVja19hcmcodG1wIDwg MCB8fCB0bXAgPj0gaSB8fAorCQkJCSAgc3RlcHNbdG1wXS50eXBlICE9IFNXX0ZFTkNFLAorCQkJ CSAgIkludmFsaWQgc3cgZmVuY2UgdGFyZ2V0ICV1IVxuIiwgaSk7CiAJCX0KIAl9CiAKLS0gCjIu MTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2