From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH 19/26] drm/dp_mst: Protect drm_dp_mst_port members with connection_mutex Date: Wed, 17 Jul 2019 21:42:42 -0400 Message-ID: <20190718014329.8107-20-lyude@redhat.com> References: <20190718014329.8107-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id B17CC6E2CE for ; Thu, 18 Jul 2019 01:44:52 +0000 (UTC) In-Reply-To: <20190718014329.8107-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Maxime Ripard , Sean Paul , linux-kernel@vger.kernel.org, David Airlie , Juston Li , Harry Wentland List-Id: dri-devel@lists.freedesktop.org WWVzLXlvdSByZWFkIHRoYXQgcmlnaHQuIEN1cnJlbnRseSB0aGVyZSBpcyBsaXRlcmFsbHkgbm8g bG9ja2luZyBpbgpwbGFjZSBmb3IgYW55IG9mIHRoZSBkcm1fZHBfbXN0X3BvcnQgc3RydWN0IG1l bWJlcnMgdGhhdCBjYW4gYmUgbW9kaWZpZWQKaW4gcmVzcG9uc2UgdG8gYSBsaW5rIGFkZHJlc3Mg cmVzcG9uc2UsIG9yIGEgY29ubmVjdGlvbiBzdGF0dXMgcmVzcG9uc2UuCldoaWNoIGxpdGVyYWxs eSBtZWFucyBpZiB3ZSdyZSB1bmx1Y2t5IGVub3VnaCB0byBoYXZlIGFueSBzb3J0IG9mCmhvdHBs dWdnaW5nIGV2ZW50IGhhcHBlbiBiZWZvcmUgd2UncmUgZmluaXNoZWQgd2l0aCByZXByb2Jpbmcg bGluawphZGRyZXNzZXMsIHdlJ2xsIHJhY2UgYW5kIHRoZSBjb250ZW50cyBvZiBzYWlkIHN0cnVj dCBtZW1iZXJzIGJlY29tZXMKdW5kZWZpbmVkLiBGdW4hCgpTbywgZmluYWxseSBhZGQgc29tZSBz aW1wbGUgbG9ja2luZyBwcm90ZWN0aW9ucyB0byBvdXIgTVNUIGhlbHBlcnMgYnkKcHJvdGVjdGlu ZyBhbnkgZHJtX2RwX21zdF9wb3J0IG1lbWJlcnMgd2hpY2ggY2FuIGJlIGNoYW5nZWQgYnkgbGlu awphZGRyZXNzIHJlc3BvbnNlcyBvciBjb25uZWN0aW9uIHN0YXR1cyBub3RpZmljYXRpb25zIHVu ZGVyCmRybV9kZXZpY2UtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXguCgpDYzogSnVzdG9u IExpIDxqdXN0b24ubGlAaW50ZWwuY29tPgpDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwu Y29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K Q2M6IEhhcnJ5IFdlbnRsYW5kIDxod2VudGxhbkBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBMeXVk ZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0 X3RvcG9sb2d5LmMgfCAxNDQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGluY2x1ZGUvZHJt L2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgfCAgMzkgKysrKystLQogMiBmaWxlcyBjaGFuZ2Vk LCAxMzMgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBf bXN0X3RvcG9sb2d5LmMKaW5kZXggZWUyOGIzNzJhZmE0Li5kZmZkODBmMzE1MzcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwpAQCAtMTM1Miw2ICsxMzUyLDcgQEAgc3RhdGlj IHZvaWQgZHJtX2RwX2ZyZWVfbXN0X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYpCiAJCWNvbnRhaW5l cl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0LCBtYWxsb2Nfa3JlZik7CiAKIAlkcm1f ZHBfbXN0X3B1dF9tc3RiX21hbGxvYyhwb3J0LT5wYXJlbnQpOworCW11dGV4X2Rlc3Ryb3koJnBv cnQtPmxvY2spOwogCWtmcmVlKHBvcnQpOwogfQogCkBAIC0xODE4LDYgKzE4MTksMzYgQEAgc3Rh dGljIHZvaWQgYnVpbGRfbXN0X3Byb3BfcGF0aChjb25zdCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFu Y2ggKm1zdGIsCiAJc3RybGNhdChwcm9wcGF0aCwgdGVtcCwgcHJvcHBhdGhfc2l6ZSk7CiB9CiAK K3N0YXRpYyB2b2lkCitkcm1fZHBfbXN0X3BvcnRfYWRkX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggKm1zdGIsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0 KQoreworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gcG9ydC0+bWdyOwor CWNoYXIgcHJvcHBhdGhbMjU1XTsKKwlpbnQgcmV0OworCisJYnVpbGRfbXN0X3Byb3BfcGF0aCht c3RiLCBwb3J0LT5wb3J0X251bSwgcHJvcHBhdGgsIHNpemVvZihwcm9wcGF0aCkpOworCXBvcnQt PmNvbm5lY3RvciA9IG1nci0+Y2JzLT5hZGRfY29ubmVjdG9yKG1nciwgcG9ydCwgcHJvcHBhdGgp OworCWlmICghcG9ydC0+Y29ubmVjdG9yKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJy b3I7CisJfQorCisJaWYgKChwb3J0LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NP TlYgfHwKKwkgICAgIHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSykgJiYKKwkg ICAgcG9ydC0+cG9ydF9udW0gPj0gRFBfTVNUX0xPR0lDQUxfUE9SVF8wKSB7CisJCXBvcnQtPmNh Y2hlZF9lZGlkID0gZHJtX2dldF9lZGlkKHBvcnQtPmNvbm5lY3RvciwKKwkJCQkJCSAmcG9ydC0+ YXV4LmRkYyk7CisJCWRybV9jb25uZWN0b3Jfc2V0X3RpbGVfcHJvcGVydHkocG9ydC0+Y29ubmVj dG9yKTsKKwl9CisKKwltZ3ItPmNicy0+cmVnaXN0ZXJfY29ubmVjdG9yKHBvcnQtPmNvbm5lY3Rv cik7CisJcmV0dXJuOworCitlcnJvcjoKKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgY29u bmVjdG9yIGZvciBwb3J0ICVwOiAlZFxuIiwgcG9ydCwgcmV0KTsKK30KKwogc3RhdGljIHZvaWQK IGRybV9kcF9tc3RfaGFuZGxlX2xpbmtfYWRkcmVzc19wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCAqbXN0YiwKIAkJCQkgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTE4MjUsOCAr MTg1NiwxMiBAQCBkcm1fZHBfbXN0X2hhbmRsZV9saW5rX2FkZHJlc3NfcG9ydChzdHJ1Y3QgZHJt X2RwX21zdF9icmFuY2ggKm1zdGIsCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IgPSBtc3RiLT5tZ3I7CiAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKLQlib29s IGNyZWF0ZWQgPSBmYWxzZTsKLQlpbnQgb2xkX2RkcHMgPSAwOworCXN0cnVjdCBkcm1fZHBfbXN0 X2JyYW5jaCAqY2hpbGRfbXN0YiA9IE5VTEw7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3Rvcl90b19kZXN0cm95ID0gTlVMTDsKKwlpbnQgb2xkX2RkcHMgPSAwLCByZXQ7CisJdTggbmV3 X3BkdCA9IERQX1BFRVJfREVWSUNFX05PTkU7CisJYm9vbCBjcmVhdGVkID0gZmFsc2UsIHNlbmRf bGlua19hZGRyID0gZmFsc2UsCisJICAgICBjcmVhdGVfY29ubmVjdG9yID0gZmFsc2U7CiAKIAlw b3J0ID0gZHJtX2RwX2dldF9wb3J0KG1zdGIsIHBvcnRfbXNnLT5wb3J0X251bWJlcik7CiAJaWYg KCFwb3J0KSB7CkBAIC0xODM1LDYgKzE4NzAsNyBAQCBkcm1fZHBfbXN0X2hhbmRsZV9saW5rX2Fk ZHJlc3NfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCiAJCQlyZXR1cm47CiAJ CWtyZWZfaW5pdCgmcG9ydC0+dG9wb2xvZ3lfa3JlZik7CiAJCWtyZWZfaW5pdCgmcG9ydC0+bWFs bG9jX2tyZWYpOworCQltdXRleF9pbml0KCZwb3J0LT5sb2NrKTsKIAkJcG9ydC0+cGFyZW50ID0g bXN0YjsKIAkJcG9ydC0+cG9ydF9udW0gPSBwb3J0X21zZy0+cG9ydF9udW1iZXI7CiAJCXBvcnQt Pm1nciA9IG1ncjsKQEAgLTE4NDgsMTEgKzE4ODQsMTcgQEAgZHJtX2RwX21zdF9oYW5kbGVfbGlu a19hZGRyZXNzX3BvcnQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAogCQlkcm1fZHBf bXN0X2dldF9tc3RiX21hbGxvYyhtc3RiKTsKIAogCQljcmVhdGVkID0gdHJ1ZTsKLQl9IGVsc2Ug ewotCQlvbGRfZGRwcyA9IHBvcnQtPmRkcHM7CiAJfQogCisJbXV0ZXhfbG9jaygmcG9ydC0+bG9j ayk7CisJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4 LCBOVUxMKTsKKworCWlmICghY3JlYXRlZCkKKwkJb2xkX2RkcHMgPSBwb3J0LT5kZHBzOworCiAJ cG9ydC0+aW5wdXQgPSBwb3J0X21zZy0+aW5wdXRfcG9ydDsKKwlpZiAoIXBvcnQtPmlucHV0KQor CQluZXdfcGR0ID0gcG9ydF9tc2ctPnBlZXJfZGV2aWNlX3R5cGU7CiAJcG9ydC0+bWNzID0gcG9y dF9tc2ctPm1jczsKIAlwb3J0LT5kZHBzID0gcG9ydF9tc2ctPmRkcHM7CiAJcG9ydC0+bGRwcyA9 IHBvcnRfbXNnLT5sZWdhY3lfZGV2aWNlX3BsdWdfc3RhdHVzOwpAQCAtMTg4MCw0NCArMTkyMiw1 OCBAQCBkcm1fZHBfbXN0X2hhbmRsZV9saW5rX2FkZHJlc3NfcG9ydChzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGIsCiAJCX0KIAl9CiAKLQlpZiAoIXBvcnQtPmlucHV0KSB7Ci0JCWludCBy ZXQgPSBkcm1fZHBfcG9ydF9zZXRfcGR0KHBvcnQsCi0JCQkJCSAgICAgIHBvcnRfbXNnLT5wZWVy X2RldmljZV90eXBlKTsKLQkJaWYgKHJldCA9PSAxKSB7Ci0JCQlkcm1fZHBfc2VuZF9saW5rX2Fk ZHJlc3MobWdyLCBwb3J0LT5tc3RiKTsKLQkJfSBlbHNlIGlmIChyZXQgPCAwKSB7Ci0JCQlEUk1f RVJST1IoIkZhaWxlZCB0byBjaGFuZ2UgUERUIG9uIHBvcnQgJXA6ICVkXG4iLAotCQkJCSAgcG9y dCwgcmV0KTsKLQkJCWdvdG8gZmFpbDsKKwlyZXQgPSBkcm1fZHBfcG9ydF9zZXRfcGR0KHBvcnQs IG5ld19wZHQpOworCWlmIChyZXQgPT0gMSkgeworCQlzZW5kX2xpbmtfYWRkciA9IHRydWU7CisJ fSBlbHNlIGlmIChyZXQgPCAwKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNoYW5nZSBQRFQg b24gcG9ydCAlcDogJWRcbiIsCisJCQkgIHBvcnQsIHJldCk7CisJCWdvdG8gZmFpbF91bmxvY2s7 CisJfQorCisJaWYgKHNlbmRfbGlua19hZGRyKSB7CisJCW11dGV4X2xvY2soJm1nci0+bG9jayk7 CisJCWlmIChwb3J0LT5tc3RiKSB7CisJCQljaGlsZF9tc3RiID0gcG9ydC0+bXN0YjsKKwkJCWRy bV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKGNoaWxkX21zdGIpOwogCQl9CisJCW11dGV4X3VubG9j aygmbWdyLT5sb2NrKTsKIAl9CiAKLQlpZiAoY3JlYXRlZCAmJiAhcG9ydC0+aW5wdXQpIHsKLQkJ Y2hhciBwcm9wcGF0aFsyNTVdOworCS8qCisJICogV2UgdW5zZXQgcG9ydC0+Y29ubmVjdG9yIGJl Zm9yZSBkcm9wcGluZyBjb25uZWN0aW9uX211dGV4IHNvIHRoYXQKKwkgKiB0aGVyZSdzIG5vIGNo YW5jZSBhbnkgb2YgdGhlIGF0b21pYyBNU1QgaGVscGVycyBjYW4gYWNjaWRlbnRhbGx5CisJICog YXNzb2NpYXRlIGEgdG8tYmUtZGVzdHJveWVkIGNvbm5lY3RvciB3aXRoIGEgcG9ydC4KKwkgKi8K KwlpZiAocG9ydC0+Y29ubmVjdG9yICYmIHBvcnQtPmlucHV0KSB7CisJCWNvbm5lY3Rvcl90b19k ZXN0cm95ID0gcG9ydC0+Y29ubmVjdG9yOworCQlwb3J0LT5jb25uZWN0b3IgPSBOVUxMOworCX0g ZWxzZSBpZiAoIXBvcnQtPmNvbm5lY3RvciAmJiAhcG9ydC0+aW5wdXQpIHsKKwkJY3JlYXRlX2Nv bm5lY3RvciA9IHRydWU7CisJfQogCi0JCWJ1aWxkX21zdF9wcm9wX3BhdGgobXN0YiwgcG9ydC0+ cG9ydF9udW0sIHByb3BwYXRoLAotCQkJCSAgICBzaXplb2YocHJvcHBhdGgpKTsKLQkJcG9ydC0+ Y29ubmVjdG9yID0gKCptZ3ItPmNicy0+YWRkX2Nvbm5lY3RvcikobWdyLCBwb3J0LAotCQkJCQkJ CSAgICAgcHJvcHBhdGgpOwotCQlpZiAoIXBvcnQtPmNvbm5lY3RvcikKLQkJCWdvdG8gZmFpbDsK Kwlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7 CiAKLQkJaWYgKChwb3J0LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfRFBfTEVHQUNZX0NPTlYgfHwK LQkJICAgICBwb3J0LT5wZHQgPT0gRFBfUEVFUl9ERVZJQ0VfU1NUX1NJTkspICYmCi0JCSAgICBw b3J0LT5wb3J0X251bSA+PSBEUF9NU1RfTE9HSUNBTF9QT1JUXzApIHsKLQkJCXBvcnQtPmNhY2hl ZF9lZGlkID0gZHJtX2dldF9lZGlkKHBvcnQtPmNvbm5lY3RvciwKLQkJCQkJCQkgJnBvcnQtPmF1 eC5kZGMpOwotCQkJZHJtX2Nvbm5lY3Rvcl9zZXRfdGlsZV9wcm9wZXJ0eShwb3J0LT5jb25uZWN0 b3IpOwotCQl9CisJaWYgKGNvbm5lY3Rvcl90b19kZXN0cm95KQorCQltZ3ItPmNicy0+ZGVzdHJv eV9jb25uZWN0b3IobWdyLCBjb25uZWN0b3JfdG9fZGVzdHJveSk7CisJZWxzZSBpZiAoY3JlYXRl X2Nvbm5lY3RvcikKKwkJZHJtX2RwX21zdF9wb3J0X2FkZF9jb25uZWN0b3IobXN0YiwgcG9ydCk7 CisKKwltdXRleF91bmxvY2soJnBvcnQtPmxvY2spOwogCi0JCSgqbWdyLT5jYnMtPnJlZ2lzdGVy X2Nvbm5lY3RvcikocG9ydC0+Y29ubmVjdG9yKTsKKwlpZiAoc2VuZF9saW5rX2FkZHIgJiYgY2hp bGRfbXN0YikgeworCQlkcm1fZHBfc2VuZF9saW5rX2FkZHJlc3MobWdyLCBjaGlsZF9tc3RiKTsK KwkJZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MoY2hpbGRfbXN0Yik7CiAJfQogCiAJLyogcHV0 IHJlZmVyZW5jZSB0byB0aGlzIHBvcnQgKi8KIAlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0 KHBvcnQpOwogCXJldHVybjsKIAotZmFpbDoKK2ZhaWxfdW5sb2NrOgorCWRybV9tb2Rlc2V0X3Vu bG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKKwltdXRleF91bmxvY2so JnBvcnQtPmxvY2spOworCiAJLyogUmVtb3ZlIGl0IGZyb20gdGhlIHBvcnQgbGlzdCAqLwogCW11 dGV4X2xvY2soJm1nci0+bG9jayk7CiAJbGlzdF9kZWwoJnBvcnQtPm5leHQpOwpAQCAtMTkzMyw2 ICsxOTg5LDcgQEAgc3RhdGljIHZvaWQKIGRybV9kcF9tc3RfaGFuZGxlX2Nvbm5fc3RhdChzdHJ1 Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCiAJCQkgICAgc3RydWN0IGRybV9kcF9jb25uZWN0 aW9uX3N0YXR1c19ub3RpZnkgKmNvbm5fc3RhdCkKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbXN0Yi0+bWdyLT5kZXY7CiAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKIAlpbnQg b2xkX2RkcHM7CiAJYm9vbCBkb3dvcmsgPSBmYWxzZTsKQEAgLTE5NDEsNiArMTk5OCw4IEBAIGRy bV9kcF9tc3RfaGFuZGxlX2Nvbm5fc3RhdChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIs CiAJaWYgKCFwb3J0KQogCQlyZXR1cm47CiAKKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVf Y29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5VTEwpOworCiAJb2xkX2RkcHMgPSBwb3J0LT5kZHBz OwogCXBvcnQtPm1jcyA9IGNvbm5fc3RhdC0+bWVzc2FnZV9jYXBhYmlsaXR5X3N0YXR1czsKIAlw b3J0LT5sZHBzID0gY29ubl9zdGF0LT5sZWdhY3lfZGV2aWNlX3BsdWdfc3RhdHVzOwpAQCAtMTk2 Niw2ICsyMDI1LDcgQEAgZHJtX2RwX21zdF9oYW5kbGVfY29ubl9zdGF0KHN0cnVjdCBkcm1fZHBf bXN0X2JyYW5jaCAqbXN0YiwKIAkJfQogCX0KIAorCWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5t b2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKIAlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9w b3J0KHBvcnQpOwogCWlmIChkb3dvcmspCiAJCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZt c3RiLT5tZ3ItPndvcmspOwpAQCAtMjA1OCwyOCArMjExOCwzNCBAQCBkcm1fZHBfZ2V0X21zdF9i cmFuY2hfZGV2aWNlX2J5X2d1aWQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3Is CiBzdGF0aWMgdm9pZCBkcm1fZHBfY2hlY2tfYW5kX3NlbmRfbGlua19hZGRyZXNzKHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQkJCQkgICAgICAgc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoICptc3RiKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtZ3ItPmRldjsK IAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0OwotCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5j aCAqbXN0Yl9jaGlsZDsKKwogCWlmICghbXN0Yi0+bGlua19hZGRyZXNzX3NlbnQpCiAJCWRybV9k cF9zZW5kX2xpbmtfYWRkcmVzcyhtZ3IsIG1zdGIpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShw b3J0LCAmbXN0Yi0+cG9ydHMsIG5leHQpIHsKLQkJaWYgKHBvcnQtPmlucHV0KQotCQkJY29udGlu dWU7CisJCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0Yl9jaGlsZCA9IE5VTEw7CisKKwkJ ZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxM KTsKIAotCQlpZiAoIXBvcnQtPmRkcHMpCisJCWlmIChwb3J0LT5pbnB1dCB8fCAhcG9ydC0+ZGRw cykgeworCQkJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25f bXV0ZXgpOwogCQkJY29udGludWU7CisJCX0KIAogCQlpZiAoIXBvcnQtPmF2YWlsYWJsZV9wYm4p CiAJCQlkcm1fZHBfc2VuZF9lbnVtX3BhdGhfcmVzb3VyY2VzKG1nciwgbXN0YiwgcG9ydCk7CiAK LQkJaWYgKHBvcnQtPm1zdGIpIHsKKwkJaWYgKHBvcnQtPm1zdGIpCiAJCQltc3RiX2NoaWxkID0g ZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0ZWQoCiAJCQkgICAgbWdyLCBwb3J0 LT5tc3RiKTsKLQkJCWlmIChtc3RiX2NoaWxkKSB7Ci0JCQkJZHJtX2RwX2NoZWNrX2FuZF9zZW5k X2xpbmtfYWRkcmVzcyhtZ3IsIG1zdGJfY2hpbGQpOwotCQkJCWRybV9kcF9tc3RfdG9wb2xvZ3lf cHV0X21zdGIobXN0Yl9jaGlsZCk7Ci0JCQl9CisKKwkJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYt Pm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOworCisJCWlmIChtc3RiX2NoaWxkKSB7CisJ CQlkcm1fZHBfY2hlY2tfYW5kX3NlbmRfbGlua19hZGRyZXNzKG1nciwgbXN0Yl9jaGlsZCk7CisJ CQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKG1zdGJfY2hpbGQpOwogCQl9CiAJfQogfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCBiL2luY2x1ZGUvZHJt L2RybV9kcF9tc3RfaGVscGVyLmgKaW5kZXggYWMxYTY4NTc0YTFhLi5hZWQ2OGQ3ZTY0OTIgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtX2RwX21zdF9oZWxwZXIuaApAQCAtNDUsMjMgKzQ1LDM0IEBAIHN0cnVjdCBkcm1fZHBf dmNwaSB7CiAvKioKICAqIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgLSBNU1QgcG9ydAogICogQHBv cnRfbnVtOiBwb3J0IG51bWJlcgotICogQGlucHV0OiBpZiB0aGlzIHBvcnQgaXMgYW4gaW5wdXQg cG9ydC4KLSAqIEBtY3M6IG1lc3NhZ2UgY2FwYWJpbGl0eSBzdGF0dXMgLSBEUCAxLjIgc3BlYy4K LSAqIEBkZHBzOiBEaXNwbGF5UG9ydCBEZXZpY2UgUGx1ZyBTdGF0dXMgLSBEUCAxLjIKLSAqIEBw ZHQ6IFBlZXIgRGV2aWNlIFR5cGUKLSAqIEBsZHBzOiBMZWdhY3kgRGV2aWNlIFBsdWcgU3RhdHVz Ci0gKiBAZHBjZF9yZXY6IERQQ0QgcmV2aXNpb24gb2YgZGV2aWNlIG9uIHRoaXMgcG9ydAotICog QG51bV9zZHBfc3RyZWFtczogTnVtYmVyIG9mIHNpbXVsdGFuZW91cyBzdHJlYW1zCi0gKiBAbnVt X3NkcF9zdHJlYW1fc2lua3M6IE51bWJlciBvZiBzdHJlYW0gc2lua3MKLSAqIEBhdmFpbGFibGVf cGJuOiBBdmFpbGFibGUgYmFuZHdpZHRoIGZvciB0aGlzIHBvcnQuCisgKiBAaW5wdXQ6IGlmIHRo aXMgcG9ydCBpcyBhbiBpbnB1dCBwb3J0LiBQcm90ZWN0ZWQgYnkKKyAqICZkcm1fZGV2aWNlLm1v ZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXguCisgKiBAbWNzOiBtZXNzYWdlIGNhcGFiaWxpdHkg c3RhdHVzIC0gRFAgMS4yIHNwZWMuIFByb3RlY3RlZCBieQorICogJmRybV9kZXZpY2UubW9kZV9j b25maWcuY29ubmVjdGlvbl9tdXRleC4KKyAqIEBkZHBzOiBEaXNwbGF5UG9ydCBEZXZpY2UgUGx1 ZyBTdGF0dXMgLSBEUCAxLjIuIFByb3RlY3RlZCBieQorICogJmRybV9kZXZpY2UubW9kZV9jb25m aWcuY29ubmVjdGlvbl9tdXRleC4KKyAqIEBwZHQ6IFBlZXIgRGV2aWNlIFR5cGUuIFByb3RlY3Rl ZCBieQorICogJmRybV9kZXZpY2UubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleC4KKyAqIEBs ZHBzOiBMZWdhY3kgRGV2aWNlIFBsdWcgU3RhdHVzLiBQcm90ZWN0ZWQgYnkKKyAqICZkcm1fZGV2 aWNlLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXguCisgKiBAZHBjZF9yZXY6IERQQ0QgcmV2 aXNpb24gb2YgZGV2aWNlIG9uIHRoaXMgcG9ydC4gUHJvdGVjdGVkIGJ5CisgKiAmZHJtX2Rldmlj ZS5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LgorICogQG51bV9zZHBfc3RyZWFtczogTnVt YmVyIG9mIHNpbXVsdGFuZW91cyBzdHJlYW1zLiBQcm90ZWN0ZWQgYnkKKyAqICZkcm1fZGV2aWNl Lm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXguCisgKiBAbnVtX3NkcF9zdHJlYW1fc2lua3M6 IE51bWJlciBvZiBzdHJlYW0gc2lua3MuIFByb3RlY3RlZCBieQorICogJmRybV9kZXZpY2UubW9k ZV9jb25maWcuY29ubmVjdGlvbl9tdXRleC4KKyAqIEBhdmFpbGFibGVfcGJuOiBBdmFpbGFibGUg YmFuZHdpZHRoIGZvciB0aGlzIHBvcnQuIFByb3RlY3RlZCBieQorICogJmRybV9kZXZpY2UubW9k ZV9jb25maWcuY29ubmVjdGlvbl9tdXRleC4KICAqIEBuZXh0OiBsaW5rIHRvIG5leHQgcG9ydCBv biB0aGlzIGJyYW5jaCBkZXZpY2UKICAqIEBtc3RiOiBicmFuY2ggZGV2aWNlIG9uIHRoaXMgcG9y dCwgcHJvdGVjdGVkIGJ5CiAgKiAmZHJtX2RwX21zdF90b3BvbG9neV9tZ3IubG9jawogICogQGF1 eDogaTJjIGF1eCB0cmFuc3BvcnQgdG8gdGFsayB0byBkZXZpY2UgY29ubmVjdGVkIHRvIHRoaXMg cG9ydCwgcHJvdGVjdGVkCi0gKiBieSAmZHJtX2RwX21zdF90b3BvbG9neV9tZ3IubG9jaworICog YnkgJmRybV9kZXZpY2UubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleC4KICAqIEBwYXJlbnQ6 IGJyYW5jaCBkZXZpY2UgcGFyZW50IG9mIHRoaXMgcG9ydAogICogQHZjcGk6IFZpcnR1YWwgQ2hh bm5lbCBQYXlsb2FkIGluZm8gZm9yIHRoaXMgcG9ydC4KLSAqIEBjb25uZWN0b3I6IERSTSBjb25u ZWN0b3IgdGhpcyBwb3J0IGlzIGNvbm5lY3RlZCB0by4KKyAqIEBjb25uZWN0b3I6IERSTSBjb25u ZWN0b3IgdGhpcyBwb3J0IGlzIGNvbm5lY3RlZCB0by4gUHJvdGVjdGVkIGJ5IEBsb2NrLgorICog V2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVjdG9yIHJlZ2lzdGVyZWQgZm9yIHRoaXMgcG9y dCwgdGhpcyBpcyBhbHNvCisgKiBwcm90ZWN0ZWQgYnkgJmRybV9kZXZpY2UubW9kZV9jb25maWcu Y29ubmVjdGlvbl9tdXRleC4KICAqIEBtZ3I6IHRvcG9sb2d5IG1hbmFnZXIgdGhpcyBwb3J0IGxp dmVzIHVuZGVyLgogICoKICAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgYW4gTVNUIHBvcnQg ZW5kcG9pbnQgb24gYSBkZXZpY2Ugc29tZXdoZXJlCkBAIC0xMDAsNiArMTExLDEyIEBAIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgewogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJ c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3I7CiAKKwkvKioKKwkgKiBAbG9jazog UHJvdGVjdHMgQGNvbm5lY3Rvci4gSWYgbmVlZGVkLCB0aGlzIGxvY2sgc2hvdWxkIGJlIGdyYWJi ZWQKKwkgKiBiZWZvcmUgJmRybV9kZXZpY2UubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleC4K KwkgKi8KKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwogCS8qKgogCSAqIEBjYWNoZWRfZWRpZDogZm9y IERQIGxvZ2ljYWwgcG9ydHMgLSBtYWtlIHRpbGluZyB3b3JrIGJ5IGVuc3VyaW5nCiAJICogdGhh dCB0aGUgRURJRCBmb3IgYWxsIGNvbm5lY3RvcnMgaXMgcmVhZCBpbW1lZGlhdGVseS4KLS0gCjIu MjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs