From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Fri, 17 May 2019 12:25:09 +0100 Message-Id: <20190517112526.6738-9-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190517112526.6738-1-tvrtko.ursulin@linux.intel.com> References: <20190517112526.6738-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 08/25] 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 QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgotLS0KIGJlbmNobWFya3MvZ2VtX3dzaW0uYyB8IDI0NCArKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4OCBpbnNlcnRpb25z KCspLCAxNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5j IGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCmluZGV4IGI5MWRiZGVjMmNjZS4uZmNlYjg1MGQwY2Ew IDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1f d3NpbS5jCkBAIC0yODksNiArMjg5LDI3IEBAIHBhcnNlX2RlcGVuZGVuY2llcyh1bnNpZ25lZCBp bnQgbnJfc3RlcHMsIHN0cnVjdCB3X3N0ZXAgKncsIGNoYXIgKl9kZXNjKQogCXJldHVybiAwOwog fQogCitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpCit3 c2ltX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IGFwOworCisJaWYgKCF2 ZXJib3NlKQorCQlyZXR1cm47CisKKwl2YV9zdGFydChhcCwgZm10KTsKKwl2ZnByaW50ZihzdGRl cnIsIGZtdCwgYXApOworCXZhX2VuZChhcCk7Cit9CisKKyNkZWZpbmUgY2hlY2tfYXJnKGNvbmQs IGZtdCwgLi4uKSBcCit7IFwKKwlpZiAoY29uZCkgeyBcCisJCXdzaW1fZXJyKGZtdCwgX19WQV9B UkdTX18pOyBcCisJCXJldHVybiBOVUxMOyBcCisJfSBcCit9CisKIHN0YXRpYyBzdHJ1Y3Qgd29y a2xvYWQgKgogcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBm bGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIHsKQEAgLTMxOSwxNCArMzQwLDkgQEAgcGFy c2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0 IHdvcmtsb2FkICphcHBfdykKIAkJCQlpZiAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIs ICZmY3R4KSkgIT0KIAkJCQkgICAgTlVMTCkgewogCQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKLQkJ CQkJaWYgKHRtcCA8PSAwKSB7Ci0JCQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJCQlmcHJpbnRmKHN0 ZGVyciwKLQkJCQkJCQkJIkludmFsaWQgZGVsYXkgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJCW5y X3N0ZXBzKTsKLQkJCQkJCXJldHVybiBOVUxMOwotCQkJCQl9Ci0KKwkJCQkJY2hlY2tfYXJnKHRt cCA8PSAwLAorCQkJCQkJICAiSW52YWxpZCBkZWxheSBhdCBzdGVwICV1IVxuIiwKKwkJCQkJCSAg bnJfc3RlcHMpOwogCQkJCQlzdGVwLnR5cGUgPSBERUxBWTsKIAkJCQkJc3RlcC5kZWxheSA9IHRt cDsKIAkJCQkJZ290byBhZGRfc3RlcDsKQEAgLTMzNSwxNCArMzUxLDkgQEAgcGFyc2Vfd29ya2xv YWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2Fk ICphcHBfdykKIAkJCQlpZiAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkg IT0KIAkJCQkgICAgTlVMTCkgewogCQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKLQkJCQkJaWYgKHRt cCA8PSAwKSB7Ci0JCQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQkJCQkJIkludmFsaWQgcGVyaW9kIGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVwcyk7 Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCisJCQkJCWNoZWNrX2FyZyh0bXAgPD0gMCwK KwkJCQkJCSAgIkludmFsaWQgcGVyaW9kIGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVw cyk7CiAJCQkJCXN0ZXAudHlwZSA9IFBFUklPRDsKIAkJCQkJc3RlcC5wZXJpb2QgPSB0bXA7CiAJ CQkJCWdvdG8gYWRkX3N0ZXA7CkBAIC0zNTIsMjUgKzM2MywxNyBAQCBwYXJzZV93b3JrbG9hZChz dHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFw cF93KQogCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgpKSAh PQogCQkJCSAgICBOVUxMKSB7CiAJCQkJCXRtcCA9IGF0b2koZmllbGQpOwotCQkJCQlpZiAodG1w IDw9IDAgJiYgbnIgPT0gMCkgewotCQkJCQkJaWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJ CW5yX3N0ZXBzKTsKLQkJCQkJCXJldHVybiBOVUxMOwotCQkJCQl9Ci0KLQkJCQkJaWYgKG5yID09 IDApIHsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDAgJiYgdG1wIDw9IDAsCisJCQkJCQkgICJJbnZh bGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKKwkJCQkJY2hl Y2tfYXJnKG5yID4gMSwKKwkJCQkJCSAgIkludmFsaWQgcHJpb3JpdHkgZm9ybWF0IGF0IHN0ZXAg JXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CisKKwkJCQkJaWYgKG5yID09IDApCiAJCQkJCQlz dGVwLmNvbnRleHQgPSB0bXA7Ci0JCQkJCX0gZWxzZSBpZiAobnIgPT0gMSkgeworCQkJCQllbHNl CiAJCQkJCQlzdGVwLnByaW9yaXR5ID0gdG1wOwotCQkJCQl9IGVsc2UgewotCQkJCQkJaWYgKHZl cmJvc2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCSJJbnZhbGlkIHByaW9yaXR5 IGZvcm1hdCBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQkJbnJfc3RlcHMpOwotCQkJCQkJcmV0dXJu IE5VTEw7Ci0JCQkJCX0KIAogCQkJCQlucisrOwogCQkJCX0KQEAgLTM4MSwxNSArMzg0LDEwIEBA IHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0 cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJaWYgKChmaWVsZCA9IHN0cnRva19yKGZzdGFydCwg Ii4iLCAmZmN0eCkpICE9CiAJCQkJICAgIE5VTEwpIHsKIAkJCQkJdG1wID0gYXRvaShmaWVsZCk7 Ci0JCQkJCWlmICh0bXAgPj0gMCB8fAotCQkJCQkgICAgKChpbnQpbnJfc3RlcHMgKyB0bXApIDwg MCkgewotCQkJCQkJaWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJ CSJJbnZhbGlkIHN5bmMgdGFyZ2V0IGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVwcyk7 Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCisJCQkJCWNoZWNrX2FyZyh0bXAgPj0gMCB8 fAorCQkJCQkJICAoKGludClucl9zdGVwcyArIHRtcCkgPCAwLAorCQkJCQkJICAiSW52YWxpZCBz eW5jIHRhcmdldCBhdCBzdGVwICV1IVxuIiwKKwkJCQkJCSAgbnJfc3RlcHMpOwogCQkJCQlzdGVw LnR5cGUgPSBTWU5DOwogCQkJCQlzdGVwLnRhcmdldCA9IHRtcDsKIAkJCQkJZ290byBhZGRfc3Rl cDsKQEAgLTM5OCwxNCArMzk2LDkgQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcs IHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIAkJCQlpZiAoKGZp ZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0KIAkJCQkgICAgTlVMTCkgewog CQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKLQkJCQkJaWYgKHRtcCA8IDApIHsKLQkJCQkJCWlmICh2 ZXJib3NlKQotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQkiSW52YWxpZCB0aHJvdHRs ZSBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCQkJbnJfc3RlcHMpOwotCQkJCQkJcmV0dXJuIE5VTEw7 Ci0JCQkJCX0KLQorCQkJCQljaGVja19hcmcodG1wIDwgMCwKKwkJCQkJCSAgIkludmFsaWQgdGhy b3R0bGUgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKIAkJCQkJc3RlcC50eXBl ID0gVEhST1RUTEU7CiAJCQkJCXN0ZXAudGhyb3R0bGUgPSB0bXA7CiAJCQkJCWdvdG8gYWRkX3N0 ZXA7CkBAIC00MTQsMTQgKzQwNyw5IEBAIHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJn LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJaWYgKChm aWVsZCA9IHN0cnRva19yKGZzdGFydCwgIi4iLCAmZmN0eCkpICE9CiAJCQkJICAgIE5VTEwpIHsK IAkJCQkJdG1wID0gYXRvaShmaWVsZCk7Ci0JCQkJCWlmICh0bXAgPCAwKSB7Ci0JCQkJCQlpZiAo dmVyYm9zZSkKLQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJIkludmFsaWQgcWQgdGhy b3R0bGUgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJCXJldHVybiBO VUxMOwotCQkJCQl9Ci0KKwkJCQkJY2hlY2tfYXJnKHRtcCA8IDAsCisJCQkJCQkgICJJbnZhbGlk IHFkIHRocm90dGxlIGF0IHN0ZXAgJXUhXG4iLAorCQkJCQkJICBucl9zdGVwcyk7CiAJCQkJCXN0 ZXAudHlwZSA9IFFEX1RIUk9UVExFOwogCQkJCQlzdGVwLnRocm90dGxlID0gdG1wOwogCQkJCQln b3RvIGFkZF9zdGVwOwpAQCAtNDMwLDE0ICs0MTgsOSBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qg d19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQog CQkJCWlmICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgpKSAhPQogCQkJCSAg ICBOVUxMKSB7CiAJCQkJCXRtcCA9IGF0b2koZmllbGQpOwotCQkJCQlpZiAodG1wID49IDApIHsK LQkJCQkJCWlmICh2ZXJib3NlKQotCQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQkiSW52 YWxpZCBzdyBmZW5jZSBzaWduYWwgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsK LQkJCQkJCXJldHVybiBOVUxMOwotCQkJCQl9Ci0KKwkJCQkJY2hlY2tfYXJnKHRtcCA+PSAwLAor CQkJCQkJICAiSW52YWxpZCBzdyBmZW5jZSBzaWduYWwgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkg IG5yX3N0ZXBzKTsKIAkJCQkJc3RlcC50eXBlID0gU1dfRkVOQ0VfU0lHTkFMOwogCQkJCQlzdGVw LnRhcmdldCA9IHRtcDsKIAkJCQkJZ290byBhZGRfc3RlcDsKQEAgLTQ1MCwzMSArNDMzLDIwIEBA IHBhcnNlX3dvcmtsb2FkKHN0cnVjdCB3X2FyZyAqYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0 cnVjdCB3b3JrbG9hZCAqYXBwX3cpCiAJCQkJd2hpbGUgKChmaWVsZCA9IHN0cnRva19yKGZzdGFy dCwgIi4iLCAmZmN0eCkpICE9CiAJCQkJICAgIE5VTEwpIHsKIAkJCQkJdG1wID0gYXRvaShmaWVs ZCk7Ci0JCQkJCWlmICh0bXAgPD0gMCAmJiBuciA9PSAwKSB7Ci0JCQkJCQlpZiAodmVyYm9zZSkK LQkJCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJIkludmFsaWQgY29udGV4dCBhdCBzdGVw ICV1IVxuIiwKLQkJCQkJCQkJbnJfc3RlcHMpOwotCQkJCQkJcmV0dXJuIE5VTEw7Ci0JCQkJCX0g ZWxzZSBpZiAodG1wIDwgMCAmJiBuciA9PSAxKSB7Ci0JCQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQkJIkludmFsaWQgcHJlZW1wdGlvbiBwZXJpb2QgYXQg c3RlcCAldSFcbiIsCi0JCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJCXJldHVybiBOVUxMOwotCQkJ CQl9Ci0KLQkJCQkJaWYgKG5yID09IDApIHsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDAgJiYgdG1w IDw9IDAsCisJCQkJCQkgICJJbnZhbGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkg IG5yX3N0ZXBzKTsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDEgJiYgdG1wIDwgMCwKKwkJCQkJCSAg IkludmFsaWQgcHJlZW1wdGlvbiBwZXJpb2QgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0 ZXBzKTsKKwkJCQkJY2hlY2tfYXJnKG5yID4gMSwKKwkJCQkJCSAgIkludmFsaWQgcHJlZW1wdGlv biBmb3JtYXQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5yX3N0ZXBzKTsKKworCQkJCQlpZiAo bnIgPT0gMCkKIAkJCQkJCXN0ZXAuY29udGV4dCA9IHRtcDsKLQkJCQkJfSBlbHNlIGlmIChuciA9 PSAxKSB7CisJCQkJCWVsc2UKIAkJCQkJCXN0ZXAucGVyaW9kID0gdG1wOwotCQkJCQl9IGVsc2Ug ewotCQkJCQkJaWYgKHZlcmJvc2UpCi0JCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJCSJJ bnZhbGlkIHByZWVtcHRpb24gZm9ybWF0IGF0IHN0ZXAgJXUhXG4iLAotCQkJCQkJCQlucl9zdGVw cyk7Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQogCiAJCQkJCW5yKys7CiAJCQkJfQpAQCAt NDkyLDEzICs0NjQsOCBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcgKmFyZywgdW5zaWdu ZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCQkJfQogCiAJCQl0bXAgPSBh dG9pKGZpZWxkKTsKLQkJCWlmICh0bXAgPCAwKSB7Ci0JCQkJaWYgKHZlcmJvc2UpCi0JCQkJCWZw cmludGYoc3RkZXJyLAotCQkJCQkJIkludmFsaWQgY3R4IGlkIGF0IHN0ZXAgJXUhXG4iLAotCQkJ CQkJbnJfc3RlcHMpOwotCQkJCXJldHVybiBOVUxMOwotCQkJfQorCQkJY2hlY2tfYXJnKHRtcCA8 IDAsICJJbnZhbGlkIGN0eCBpZCBhdCBzdGVwICV1IVxuIiwKKwkJCQkgIG5yX3N0ZXBzKTsKIAkJ CXN0ZXAuY29udGV4dCA9IHRtcDsKIAogCQkJdmFsaWQrKzsKQEAgLTUxOSwxMyArNDg2LDggQEAg cGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGludCBmbGFncywgc3Ry dWN0IHdvcmtsb2FkICphcHBfdykKIAkJCQl9CiAJCQl9CiAKLQkJCWlmIChvbGRfdmFsaWQgPT0g dmFsaWQpIHsKLQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQki SW52YWxpZCBlbmdpbmUgaWQgYXQgc3RlcCAldSFcbiIsCi0JCQkJCQlucl9zdGVwcyk7Ci0JCQkJ cmV0dXJuIE5VTEw7Ci0JCQl9CisJCQljaGVja19hcmcob2xkX3ZhbGlkID09IHZhbGlkLAorCQkJ CSAgIkludmFsaWQgZW5naW5lIGlkIGF0IHN0ZXAgJXUhXG4iLCBucl9zdGVwcyk7CiAJCX0KIAog CQlpZiAoKGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0gTlVMTCkgewpA QCAtNTM1LDI1ICs0OTcsMTkgQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVu c2lnbmVkIGludCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIAkJCWZzdGFydCA9IE5V TEw7CiAKIAkJCXRtcGwgPSBzdHJ0b2woZmllbGQsICZzZXAsIDEwKTsKLQkJCWlmICh0bXBsIDw9 IDAgfHwgdG1wbCA9PSBMT05HX01JTiB8fCB0bXBsID09IExPTkdfTUFYKSB7Ci0JCQkJaWYgKHZl cmJvc2UpCi0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJIkludmFsaWQgZHVyYXRpb24gYXQg c3RlcCAldSFcbiIsCi0JCQkJCQlucl9zdGVwcyk7Ci0JCQkJcmV0dXJuIE5VTEw7Ci0JCQl9CisJ CQljaGVja19hcmcodG1wbCA8PSAwIHx8IHRtcGwgPT0gTE9OR19NSU4gfHwKKwkJCQkgIHRtcGwg PT0gTE9OR19NQVgsCisJCQkJICAiSW52YWxpZCBkdXJhdGlvbiBhdCBzdGVwICV1IVxuIiwgbnJf c3RlcHMpOwogCQkJc3RlcC5kdXJhdGlvbi5taW4gPSB0bXBsOwogCiAJCQlpZiAoc2VwICYmICpz ZXAgPT0gJy0nKSB7CiAJCQkJdG1wbCA9IHN0cnRvbChzZXAgKyAxLCBOVUxMLCAxMCk7Ci0JCQkJ aWYgKHRtcGwgPD0gMCB8fCB0bXBsIDw9IHN0ZXAuZHVyYXRpb24ubWluIHx8Ci0JCQkJICAgIHRt cGwgPT0gTE9OR19NSU4gfHwgdG1wbCA9PSBMT05HX01BWCkgewotCQkJCQlpZiAodmVyYm9zZSkK LQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCSJJbnZhbGlkIGR1cmF0aW9uIHJhbmdlIGF0 IHN0ZXAgJXUhXG4iLAotCQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQkJcmV0dXJuIE5VTEw7Ci0JCQkJ fQorCQkJCWNoZWNrX2FyZyh0bXBsIDw9IDAgfHwKKwkJCQkJICB0bXBsIDw9IHN0ZXAuZHVyYXRp b24ubWluIHx8CisJCQkJCSAgdG1wbCA9PSBMT05HX01JTiB8fAorCQkJCQkgIHRtcGwgPT0gTE9O R19NQVgsCisJCQkJCSAgIkludmFsaWQgZHVyYXRpb24gcmFuZ2UgYXQgc3RlcCAldSFcbiIsCisJ CQkJCSAgbnJfc3RlcHMpOwogCQkJCXN0ZXAuZHVyYXRpb24ubWF4ID0gdG1wbDsKIAkJCX0gZWxz ZSB7CiAJCQkJc3RlcC5kdXJhdGlvbi5tYXggPSBzdGVwLmR1cmF0aW9uLm1pbjsKQEAgLTU2Niwx MyArNTIyLDggQEAgcGFyc2Vfd29ya2xvYWQoc3RydWN0IHdfYXJnICphcmcsIHVuc2lnbmVkIGlu dCBmbGFncywgc3RydWN0IHdvcmtsb2FkICphcHBfdykKIAkJCWZzdGFydCA9IE5VTEw7CiAKIAkJ CXRtcCA9IHBhcnNlX2RlcGVuZGVuY2llcyhucl9zdGVwcywgJnN0ZXAsIGZpZWxkKTsKLQkJCWlm ICh0bXAgPCAwKSB7Ci0JCQkJaWYgKHZlcmJvc2UpCi0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJIkludmFsaWQgZGVwZW5kZW5jeSBhdCBzdGVwICV1IVxuIiwKLQkJCQkJCW5yX3N0ZXBzKTsK LQkJCQlyZXR1cm4gTlVMTDsKLQkJCX0KKwkJCWNoZWNrX2FyZyh0bXAgPCAwLAorCQkJCSAgIklu dmFsaWQgZGVwZW5kZW5jeSBhdCBzdGVwICV1IVxuIiwgbnJfc3RlcHMpOwogCiAJCQl2YWxpZCsr OwogCQl9CkBAIC01ODAsMjUgKzUzMSwxNiBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qgd19hcmcg KmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQogCQlpZiAo KGZpZWxkID0gc3RydG9rX3IoZnN0YXJ0LCAiLiIsICZmY3R4KSkgIT0gTlVMTCkgewogCQkJZnN0 YXJ0ID0gTlVMTDsKIAotCQkJaWYgKHN0cmxlbihmaWVsZCkgIT0gMSB8fAotCQkJICAgIChmaWVs ZFswXSAhPSAnMCcgJiYgZmllbGRbMF0gIT0gJzEnKSkgewotCQkJCWlmICh2ZXJib3NlKQotCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCSJJbnZhbGlkIHdhaXQgYm9vbGVhbiBhdCBzdGVwICV1 IVxuIiwKLQkJCQkJCW5yX3N0ZXBzKTsKLQkJCQlyZXR1cm4gTlVMTDsKLQkJCX0KKwkJCWNoZWNr X2FyZyhzdHJsZW4oZmllbGQpICE9IDEgfHwKKwkJCQkgIChmaWVsZFswXSAhPSAnMCcgJiYgZmll bGRbMF0gIT0gJzEnKSwKKwkJCQkgICJJbnZhbGlkIHdhaXQgYm9vbGVhbiBhdCBzdGVwICV1IVxu IiwKKwkJCQkgIG5yX3N0ZXBzKTsKIAkJCXN0ZXAuc3luYyA9IGZpZWxkWzBdIC0gJzAnOwogCiAJ CQl2YWxpZCsrOwogCQl9CiAKLQkJaWYgKHZhbGlkICE9IDUpIHsKLQkJCWlmICh2ZXJib3NlKQot CQkJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCByZWNvcmQgYXQgc3RlcCAldSFcbiIsCi0JCQkJ CW5yX3N0ZXBzKTsKLQkJCXJldHVybiBOVUxMOwotCQl9CisJCWNoZWNrX2FyZyh2YWxpZCAhPSA1 LCAiSW52YWxpZCByZWNvcmQgYXQgc3RlcCAldSFcbiIsIG5yX3N0ZXBzKTsKIAogCQlzdGVwLnR5 cGUgPSBCQVRDSDsKIApAQCAtNjQzLDE1ICs1ODUsMTAgQEAgYWRkX3N0ZXA6CiAJZm9yIChpID0g MDsgaSA8IG5yX3N0ZXBzOyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IHN0ZXBzW2ldLmZlbmNl X2RlcHMubnI7IGorKykgewogCQkJdG1wID0gc3RlcHNbaV0uaWR4ICsgc3RlcHNbaV0uZmVuY2Vf ZGVwcy5saXN0W2pdOwotCQkJaWYgKHRtcCA8IDAgfHwgdG1wID49IGkgfHwKLQkJCSAgICAoc3Rl cHNbdG1wXS50eXBlICE9IEJBVENIICYmCi0JCQkgICAgIHN0ZXBzW3RtcF0udHlwZSAhPSBTV19G RU5DRSkpIHsKLQkJCQlpZiAodmVyYm9zZSkKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQki SW52YWxpZCBkZXBlbmRlbmN5IHRhcmdldCAldSFcbiIsCi0JCQkJCQlpKTsKLQkJCQlyZXR1cm4g TlVMTDsKLQkJCX0KKwkJCWNoZWNrX2FyZyh0bXAgPCAwIHx8IHRtcCA+PSBpIHx8CisJCQkJICAo c3RlcHNbdG1wXS50eXBlICE9IEJBVENIICYmCisJCQkJICAgc3RlcHNbdG1wXS50eXBlICE9IFNX X0ZFTkNFKSwKKwkJCQkgICJJbnZhbGlkIGRlcGVuZGVuY3kgdGFyZ2V0ICV1IVxuIiwgaSk7CiAJ CQlzdGVwc1t0bXBdLmVtaXRfZmVuY2UgPSAtMTsKIAkJfQogCX0KQEAgLTY2MCwxNCArNTk3LDkg QEAgYWRkX3N0ZXA6CiAJZm9yIChpID0gMDsgaSA8IG5yX3N0ZXBzOyBpKyspIHsKIAkJaWYgKHN0 ZXBzW2ldLnR5cGUgPT0gU1dfRkVOQ0VfU0lHTkFMKSB7CiAJCQl0bXAgPSBzdGVwc1tpXS5pZHgg KyBzdGVwc1tpXS50YXJnZXQ7Ci0JCQlpZiAodG1wIDwgMCB8fCB0bXAgPj0gaSB8fAotCQkJICAg IHN0ZXBzW3RtcF0udHlwZSAhPSBTV19GRU5DRSkgewotCQkJCWlmICh2ZXJib3NlKQotCQkJCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJCSJJbnZhbGlkIHN3IGZlbmNlIHRhcmdldCAldSFcbiIsCi0J CQkJCQlpKTsKLQkJCQlyZXR1cm4gTlVMTDsKLQkJCX0KKwkJCWNoZWNrX2FyZyh0bXAgPCAwIHx8 IHRtcCA+PSBpIHx8CisJCQkJICBzdGVwc1t0bXBdLnR5cGUgIT0gU1dfRkVOQ0UsCisJCQkJICAi SW52YWxpZCBzdyBmZW5jZSB0YXJnZXQgJXUhXG4iLCBpKTsKIAkJfQogCX0KIAotLSAKMi4yMC4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=