From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v2 06/15] igt_kms: Change PIPE_ANY behavior to mean unassigned Date: Wed, 6 Jul 2016 11:55:46 +0200 Message-ID: <1467798955-7324-7-git-send-email-maarten.lankhorst@linux.intel.com> References: <1467798955-7324-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id AD0BE6E600 for ; Wed, 6 Jul 2016 09:56:02 +0000 (UTC) In-Reply-To: <1467798955-7324-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Tm9uZSBvZiB0aGUgdGVzdHMgcmVxdWlyZXMgdGhhdCBhIG91dHB1dCBib3VuZCB0byBQSVBFX0FO WSBpcyBhc3NpZ25lZCwKc28gZG9uJ3QgZG8gaXQuIEZpeCB0aGUgZGlzcGxheSBjb21taXQgdG8g aXRlcmF0ZSBvdmVyIGNydGMncyBpbnN0ZWFkCm9mIG91dHB1dHMgdG8gcHJvcGVybHkgZGlzYWJs ZSBwaXBlcyB3aXRob3V0IG91dHB1dHMuCgpUaGlzIGFsc28gbWVhbnMgdGhhdCBvdXRwdXQtPnZh bGlkIGlzIG9ubHkgc2V0IGFmdGVyIGNvbm5lY3RpbmcgYQpvdXRwdXQgdG8gYSBwaXBlLCBzbyBu byBsb25nZXIgZGVwZW5kIG9uIGl0IGluIGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQKYW5kIHNp bWlsYXIgbWFjcm9zLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ttcy5jIHwgMjQ2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxp Yi9pZ3Rfa21zLmggfCAgMTggKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMo KyksIDEyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2ln dF9rbXMuYwppbmRleCBjZThhYTI0NTUzNDguLjg4Y2FlN2Q1MTc4NyAxMDA2NDQKLS0tIGEvbGli L2lndF9rbXMuYworKysgYi9saWIvaWd0X2ttcy5jCkBAIC04NjksMTggKzg2OSwyMCBAQCBzdGF0 aWMgYm9vbCBfa21zdGVzdF9jb25uZWN0b3JfY29uZmlnKGludCBkcm1fZmQsIHVpbnQzMl90IGNv bm5lY3Rvcl9pZCwKIAkgKi8KIAlfa21zdGVzdF9jb25uZWN0b3JfY29uZmlnX2NydGNfbWFzayhk cm1fZmQsIGNvbm5lY3RvciwgY29uZmlnKTsKIAorCWlmICgha21zdGVzdF9nZXRfY29ubmVjdG9y X2RlZmF1bHRfbW9kZShkcm1fZmQsIGNvbm5lY3RvciwKKwkJCQkJCSZjb25maWctPmRlZmF1bHRf bW9kZSkpCisJCWdvdG8gZXJyMzsKKworCWNvbmZpZy0+Y29ubmVjdG9yID0gY29ubmVjdG9yOwor CiAJY3J0Y19pZHhfbWFzayAmPSBjb25maWctPnZhbGlkX2NydGNfaWR4X21hc2s7CiAJaWYgKCFj cnRjX2lkeF9tYXNrKQotCQlnb3RvIGVycjM7CisJCS8qIEtlZXAgY29uZmlnLT5jb25uZWN0b3Ig Ki8KKwkJZ290byBlcnIyOwogCiAJY29uZmlnLT5waXBlID0gZmZzKGNydGNfaWR4X21hc2spIC0g MTsKIAotCWlmICgha21zdGVzdF9nZXRfY29ubmVjdG9yX2RlZmF1bHRfbW9kZShkcm1fZmQsIGNv bm5lY3RvciwKLQkJCQkJCSZjb25maWctPmRlZmF1bHRfbW9kZSkpCi0JCWdvdG8gZXJyMzsKLQog CWNvbmZpZy0+ZW5jb2RlciA9IF9rbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWdfZmluZF9lbmNvZGVy KGRybV9mZCwgY29ubmVjdG9yLCBjb25maWctPnBpcGUpOwotCWNvbmZpZy0+Y29ubmVjdG9yID0g Y29ubmVjdG9yOwogCWNvbmZpZy0+Y3J0YyA9IGRybU1vZGVHZXRDcnRjKGRybV9mZCwgcmVzb3Vy Y2VzLT5jcnRjc1tjb25maWctPnBpcGVdKTsKIAogCWRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291 cmNlcyk7CkBAIC05NDAsOCArOTQyLDEzIEBAIGJvb2wga21zdGVzdF9wcm9iZV9jb25uZWN0b3Jf Y29uZmlnKGludCBkcm1fZmQsIHVpbnQzMl90IGNvbm5lY3Rvcl9pZCwKIHZvaWQga21zdGVzdF9m cmVlX2Nvbm5lY3Rvcl9jb25maWcoc3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyAqY29u ZmlnKQogewogCWRybU1vZGVGcmVlQ3J0Yyhjb25maWctPmNydGMpOworCWNvbmZpZy0+Y3J0YyA9 IE5VTEw7CisKIAlkcm1Nb2RlRnJlZUVuY29kZXIoY29uZmlnLT5lbmNvZGVyKTsKKwljb25maWct PmVuY29kZXIgPSBOVUxMOworCiAJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29uZmlnLT5jb25uZWN0 b3IpOworCWNvbmZpZy0+Y29ubmVjdG9yID0gTlVMTDsKIH0KIAogLyoqCkBAIC0xMTk3LDggKzEy MDQsNyBAQCBzdGF0aWMgdm9pZCBpZ3Rfb3V0cHV0X3JlZnJlc2goaWd0X291dHB1dF90ICpvdXRw dXQpCiAJLyogd2UgbWFzayBvdXQgdGhlIHBpcGVzIGFscmVhZHkgaW4gdXNlICovCiAJY3J0Y19p ZHhfbWFzayA9IG91dHB1dC0+cGVuZGluZ19jcnRjX2lkeF9tYXNrICYgfmRpc3BsYXktPnBpcGVz X2luX3VzZTsKIAotCWlmIChvdXRwdXQtPnZhbGlkKQotCQlrbXN0ZXN0X2ZyZWVfY29ubmVjdG9y X2NvbmZpZygmb3V0cHV0LT5jb25maWcpOworCWttc3Rlc3RfZnJlZV9jb25uZWN0b3JfY29uZmln KCZvdXRwdXQtPmNvbmZpZyk7CiAKIAlyZXQgPSBrbXN0ZXN0X2dldF9jb25uZWN0b3JfY29uZmln KGRpc3BsYXktPmRybV9mZCwKIAkJCQkJICAgb3V0cHV0LT5pZCwKQEAgLTEyMDksMTkgKzEyMTUs MTkgQEAgc3RhdGljIHZvaWQgaWd0X291dHB1dF9yZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0 KQogCWVsc2UKIAkJb3V0cHV0LT52YWxpZCA9IGZhbHNlOwogCi0JaWYgKCFvdXRwdXQtPnZhbGlk KQotCQlyZXR1cm47Ci0KLQlpZiAob3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9kZSkKLQkJb3V0cHV0 LT5jb25maWcuZGVmYXVsdF9tb2RlID0gb3V0cHV0LT5vdmVycmlkZV9tb2RlOwotCi0JaWYgKCFv dXRwdXQtPm5hbWUpIHsKKwlpZiAoIW91dHB1dC0+bmFtZSAmJiBvdXRwdXQtPmNvbmZpZy5jb25u ZWN0b3IpIHsKIAkJZHJtTW9kZUNvbm5lY3RvciAqYyA9IG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rv cjsKIAogCQlpZ3RfYXNzZXJ0X25lcShhc3ByaW50Zigmb3V0cHV0LT5uYW1lLCAiJXMtJWQiLCBr bXN0ZXN0X2Nvbm5lY3Rvcl90eXBlX3N0cihjLT5jb25uZWN0b3JfdHlwZSksIGMtPmNvbm5lY3Rv cl90eXBlX2lkKSwKIAkJCSAgICAgICAtMSk7CiAJfQogCisJaWYgKCFvdXRwdXQtPnZhbGlkKQor CQlyZXR1cm47CisKKwlpZiAob3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9kZSkKKwkJb3V0cHV0LT5j b25maWcuZGVmYXVsdF9tb2RlID0gb3V0cHV0LT5vdmVycmlkZV9tb2RlOworCiAJTE9HKGRpc3Bs YXksICIlczogU2VsZWN0aW5nIHBpcGUgJXNcbiIsIG91dHB1dC0+bmFtZSwKIAkgICAga21zdGVz dF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwogCkBAIC0xMjU5LDEwICsxMjY1LDEw IEBAIGdldF9jcnRjX3Byb3BlcnR5KGludCBkcm1fZmQsIHVpbnQzMl90IGNydGNfaWQsIGNvbnN0 IGNoYXIgKm5hbWUsCiB9CiAKIHN0YXRpYyB2b2lkCi1pZ3RfY3J0Y19zZXRfcHJvcGVydHkoaWd0 X291dHB1dF90ICpvdXRwdXQsIHVpbnQzMl90IHByb3BfaWQsIHVpbnQ2NF90IHZhbHVlKQoraWd0 X2NydGNfc2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBpcGUsIHVpbnQzMl90IHByb3BfaWQsIHVp bnQ2NF90IHZhbHVlKQogewotCWRybU1vZGVPYmplY3RTZXRQcm9wZXJ0eShvdXRwdXQtPmRpc3Bs YXktPmRybV9mZCwKLQkJb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCwgRFJNX01PREVfT0JK RUNUX0NSVEMsIHByb3BfaWQsIHZhbHVlKTsKKwlkcm1Nb2RlT2JqZWN0U2V0UHJvcGVydHkocGlw ZS0+ZGlzcGxheS0+ZHJtX2ZkLAorCQlwaXBlLT5jcnRjX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQ1JU QywgcHJvcF9pZCwgdmFsdWUpOwogfQogCiAvKgpAQCAtMTMyNSwxNSArMTMzMSwzNyBAQCB2b2lk IGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJ aW50IHAgPSBJR1RfUExBTkVfMjsKIAkJaW50IGosIHR5cGU7CiAJCXVpbnQ4X3Qgbl9wbGFuZXMg PSAwOworCQl1aW50NjRfdCBwcm9wX3ZhbHVlOwogCiAJCXBpcGUtPmNydGNfaWQgPSByZXNvdXJj ZXMtPmNydGNzW2ldOwogCQlwaXBlLT5kaXNwbGF5ID0gZGlzcGxheTsKIAkJcGlwZS0+cGlwZSA9 IGk7CiAKKwkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lk LAorCQkJCSAgICAiYmFja2dyb3VuZF9jb2xvciIsCisJCQkJICAgICZwaXBlLT5iYWNrZ3JvdW5k X3Byb3BlcnR5LAorCQkJCSAgICAmcHJvcF92YWx1ZSwKKwkJCQkgICAgTlVMTCk7CisJCXBpcGUt PmJhY2tncm91bmQgPSAodWludDMyX3QpcHJvcF92YWx1ZTsKKwkJZ2V0X2NydGNfcHJvcGVydHko ZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5jcnRjX2lkLAorCQkJCSAgIkRFR0FNTUFfTFVUIiwKKwkJ CQkgICZwaXBlLT5kZWdhbW1hX3Byb3BlcnR5LAorCQkJCSAgTlVMTCwKKwkJCQkgIE5VTEwpOwor CQlnZXRfY3J0Y19wcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHBpcGUtPmNydGNfaWQsCisJCQkJ ICAiQ1RNIiwKKwkJCQkgICZwaXBlLT5jdG1fcHJvcGVydHksCisJCQkJICBOVUxMLAorCQkJCSAg TlVMTCk7CisJCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgcGlwZS0+Y3J0Y19p ZCwKKwkJCQkgICJHQU1NQV9MVVQiLAorCQkJCSAgJnBpcGUtPmdhbW1hX3Byb3BlcnR5LAorCQkJ CSAgTlVMTCwKKwkJCQkgIE5VTEwpOworCiAJCS8qIGFkZCB0aGUgcGxhbmVzIHRoYXQgY2FuIGJl IHVzZWQgd2l0aCB0aGF0IHBpcGUgKi8KIAkJZm9yIChqID0gMDsgaiA8IHBsYW5lX3Jlc291cmNl cy0+Y291bnRfcGxhbmVzOyBqKyspIHsKIAkJCWRybU1vZGVQbGFuZSAqZHJtX3BsYW5lOwotCQkJ dWludDY0X3QgcHJvcF92YWx1ZTsKIAogCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRp c3BsYXktPmRybV9mZCwKIAkJCQkJCSAgICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7CkBA IC0xNDQwLDQ3ICsxNDY4LDE3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCWlndF9hc3NlcnQoZGlzcGxheS0+b3V0cHV0cyk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsKLQkJaW50IGo7CiAJ CWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07CiAKIAkJLyoKLQkJ ICogV2UncmUgZnJlZSB0byBzZWxlY3QgYW55IHBpcGUgdG8gZHJpdmUgdGhhdCBvdXRwdXQgdW50 aWwKLQkJICogYSBjb25zdHJhaW50IGlzIHNldCB3aXRoIGlndF9vdXRwdXRfc2V0X3BpcGUoKS4K KwkJICogV2UgZG9uJ3QgYXNzaWduIGVhY2ggb3V0cHV0IGEgcGlwZSB1bmxlc3MKKwkJICogYSBw aXBlIGlzIHNldCB3aXRoIGlndF9vdXRwdXRfc2V0X3BpcGUoKS4KIAkJICovCi0JCW91dHB1dC0+ cGVuZGluZ19jcnRjX2lkeF9tYXNrID0gLTFVTDsKKwkJb3V0cHV0LT5wZW5kaW5nX2NydGNfaWR4 X21hc2sgPSAwOwogCQlvdXRwdXQtPmlkID0gcmVzb3VyY2VzLT5jb25uZWN0b3JzW2ldOwogCQlv dXRwdXQtPmRpc3BsYXkgPSBkaXNwbGF5OwogCiAJCWlndF9vdXRwdXRfcmVmcmVzaChvdXRwdXQp OwotCi0JCWZvciAoaiA9IDA7IGogPCBkaXNwbGF5LT5uX3BpcGVzOyBqKyspIHsKLQkJCXVpbnQ2 NF90IHByb3BfdmFsdWU7Ci0JCQlpZ3RfcGlwZV90ICpwaXBlID0gJmRpc3BsYXktPnBpcGVzW2pd OwotCi0JCQlpZiAob3V0cHV0LT5jb25maWcuY3J0YykgewotCQkJCWdldF9jcnRjX3Byb3BlcnR5 KGRpc3BsYXktPmRybV9mZCwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCwKLQkJCQkJCSAg ICJiYWNrZ3JvdW5kX2NvbG9yIiwKLQkJCQkJCSAgICZwaXBlLT5iYWNrZ3JvdW5kX3Byb3BlcnR5 LAotCQkJCQkJICAgJnByb3BfdmFsdWUsCi0JCQkJCQkgICBOVUxMKTsKLQkJCQlwaXBlLT5iYWNr Z3JvdW5kID0gKHVpbnQzMl90KXByb3BfdmFsdWU7Ci0JCQkJZ2V0X2NydGNfcHJvcGVydHkoZGlz cGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLAotCQkJCQkJICAiREVH QU1NQV9MVVQiLAotCQkJCQkJICAmcGlwZS0+ZGVnYW1tYV9wcm9wZXJ0eSwKLQkJCQkJCSAgTlVM TCwKLQkJCQkJCSAgTlVMTCk7Ci0JCQkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2Zk LCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5jcnRjX2lkLAotCQkJCQkJICAiQ1RNIiwKLQkJCQkJCSAg JnBpcGUtPmN0bV9wcm9wZXJ0eSwKLQkJCQkJCSAgTlVMTCwKLQkJCQkJCSAgTlVMTCk7Ci0JCQkJ Z2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNvbmZpZy5jcnRjLT5j cnRjX2lkLAotCQkJCQkJICAiR0FNTUFfTFVUIiwKLQkJCQkJCSAgJnBpcGUtPmdhbW1hX3Byb3Bl cnR5LAotCQkJCQkJICBOVUxMLAotCQkJCQkJICBOVUxMKTsKLQkJCX0KLQkJfQogCX0KIAogCWRy bU1vZGVGcmVlUGxhbmVSZXNvdXJjZXMocGxhbmVfcmVzb3VyY2VzKTsKQEAgLTE1NDUsNyArMTU0 Myw3IEBAIHN0YXRpYyB2b2lkIGlndF9kaXNwbGF5X3JlZnJlc2goaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSkKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7 CiAgICAgICAgICAgICAgICAgaWd0X291dHB1dF90ICphID0gJmRpc3BsYXktPm91dHB1dHNbaV07 CiAKLSAgICAgICAgICAgICAgICBpZiAoYS0+cGVuZGluZ19jcnRjX2lkeF9tYXNrID09IC0xVUwp CisgICAgICAgICAgICAgICAgaWYgKCFhLT5wZW5kaW5nX2NydGNfaWR4X21hc2spCiAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7 IGogPCBkaXNwbGF5LT5uX291dHB1dHM7IGorKykgewpAQCAtMTU1NCw5ICsxNTUyLDYgQEAgc3Rh dGljIHZvaWQgaWd0X2Rpc3BsYXlfcmVmcmVzaChpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQogICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiLT5wZW5k aW5nX2NydGNfaWR4X21hc2sgPT0gLTFVTCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Ci0KICAgICAgICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZihhLT5w ZW5kaW5nX2NydGNfaWR4X21hc2sgIT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiLT5wZW5kaW5nX2NydGNfaWR4X21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiVzIGFuZCAlcyBhcmUgYm90aCB0cnlpbmcgdG8gdXNlIHBpcGUgJXNcbiIs CkBAIC0xNTY1LDI1ICsxNTYwLDkgQEAgc3RhdGljIHZvaWQgaWd0X2Rpc3BsYXlfcmVmcmVzaChp Z3RfZGlzcGxheV90ICpkaXNwbGF5KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0J LyoKLQkgKiBUaGUgcGlwZSBhbGxvY2F0aW9uIGhhcyB0byBiZSBkb25lIGluIHR3byBwaGFzZXM6 Ci0JICogICAtIGZpcnN0LCB0cnkgdG8gc2F0aXNmeSB0aGUgb3V0cHV0cyB3aGVyZSBhIHBpcGUg aGFzIGJlZW4gc3BlY2lmaWVkCi0JICogICAtIHRoZW4sIGFsbG9jYXRlIHRoZSBvdXRwdXRzIHdp dGggUElQRV9BTlkKLQkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBp KyspIHsKIAkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsKIAot CQlpZiAob3V0cHV0LT5wZW5kaW5nX2NydGNfaWR4X21hc2sgPT0gLTFVTCkKLQkJCWNvbnRpbnVl OwotCi0JCWlndF9vdXRwdXRfcmVmcmVzaChvdXRwdXQpOwotCX0KLQlmb3IgKGkgPSAwOyBpIDwg ZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsKLQkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlz cGxheS0+b3V0cHV0c1tpXTsKLQotCQlpZiAob3V0cHV0LT5wZW5kaW5nX2NydGNfaWR4X21hc2sg IT0gLTFVTCkKLQkJCWNvbnRpbnVlOwotCiAJCWlndF9vdXRwdXRfcmVmcmVzaChvdXRwdXQpOwog CX0KIH0KQEAgLTE1OTMsMTIgKzE1NzIsMTEgQEAgc3RhdGljIGlndF9waXBlX3QgKmlndF9vdXRw dXRfZ2V0X2RyaXZpbmdfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKIAlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5OwogCWVudW0gcGlwZSBwaXBlOwogCi0JaWYgKG91 dHB1dC0+cGVuZGluZ19jcnRjX2lkeF9tYXNrID09IC0xVUwpIHsKKwlpZiAoIW91dHB1dC0+cGVu ZGluZ19jcnRjX2lkeF9tYXNrKSB7CiAJCS8qCi0JCSAqIFRoZSB1c2VyIGhhc24ndCBzcGVjaWZp ZWQgYSBwaXBlIHRvIHVzZSwgdGFrZSB0aGUgb25lCi0JCSAqIGNvbmZpZ3VyZWQgYnkgdGhlIGxh c3QgcmVmcmVzaCgpCisJCSAqIFRoZSB1c2VyIGhhc24ndCBzcGVjaWZpZWQgYSBwaXBlIHRvIHVz ZSwgcmV0dXJuIG5vbmUuCiAJCSAqLwotCQlwaXBlID0gb3V0cHV0LT5jb25maWcucGlwZTsKKwkJ cmV0dXJuIE5VTEw7CiAJfSBlbHNlIHsKIAkJLyoKIAkJICogT3RoZXJ3aXNlLCByZXR1cm4gdGhl IHBlbmRpbmcgcGlwZSAoaWUgdGhlIHBpcGUgdGhhdCBzaG91bGQKQEAgLTE2MjgsNiArMTYwNiwy MSBAQCBzdGF0aWMgaWd0X3BsYW5lX3QgKmlndF9waXBlX2dldF9wbGFuZShpZ3RfcGlwZV90ICpw aXBlLCBlbnVtIGlndF9wbGFuZSBwbGFuZSkKIAlyZXR1cm4gJnBpcGUtPnBsYW5lc1tpZHhdOwog fQogCitzdGF0aWMgaWd0X291dHB1dF90ICppZ3RfcGlwZV9nZXRfb3V0cHV0KGlndF9waXBlX3Qg KnBpcGUpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IHBpcGUtPmRpc3BsYXk7CisJaW50 IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsKKwkJaWd0 X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsKKworCQlpZiAob3V0cHV0 LT5wZW5kaW5nX2NydGNfaWR4X21hc2sgPT0gKDEgPDwgcGlwZS0+cGlwZSkpCisJCQlyZXR1cm4g b3V0cHV0OworCX0KKworCXJldHVybiBOVUxMOworfQorCiBib29sIGlndF9waXBlX2dldF9wcm9w ZXJ0eShpZ3RfcGlwZV90ICpwaXBlLCBjb25zdCBjaGFyICpuYW1lLAogCQkJICAgdWludDMyX3Qg KnByb3BfaWQsIHVpbnQ2NF90ICp2YWx1ZSwKIAkJCSAgIGRybU1vZGVQcm9wZXJ0eVB0ciAqcHJv cCkKQEAgLTE3NDEsMTAgKzE3MzQsMTAgQEAgaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1p dChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9vdXRwdXRfdCAqb3V0cHV0LAogICogdGVzdHMgdGhh dCBleHBlY3QgYSBzcGVjaWZpYyBlcnJvciBjb2RlKS4KICAqLwogc3RhdGljIGludCBpZ3RfZHJt X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCi0JCQkJaWd0X291dHB1dF90ICpvdXRw dXQsCisJCQkJaWd0X3BpcGVfdCAqcGlwZSwKIAkJCQlib29sIGZhaWxfb25fZXJyb3IpCiB7Ci0J aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKKwlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsKIAl1aW50MzJfdCBmYl9pZCwgY3J0Y19pZDsKIAlp bnQgcmV0OwogCXVpbnQzMl90IHNyY194OwpAQCAtMTc2MywxMyArMTc1NiwxMiBAQCBzdGF0aWMg aW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKIAkJICAgIXBsYW5l LT5yb3RhdGlvbl9jaGFuZ2VkKTsKIAogCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9pZChwbGFu ZSk7Ci0JY3J0Y19pZCA9IG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7CisJY3J0Y19pZCA9 IHBpcGUtPmNydGNfaWQ7CiAKIAlpZiAoKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXpl X2NoYW5nZWQpICYmIGZiX2lkID09IDApIHsKIAkJTE9HKGRpc3BsYXksCi0JCSAgICAiJXM6IFNl dFBsYW5lIHBpcGUgJXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCi0JCSAgICBpZ3Rfb3V0cHV0 X25hbWUob3V0cHV0KSwKLQkJICAgIGttc3Rlc3RfcGlwZV9uYW1lKG91dHB1dC0+Y29uZmlnLnBp cGUpLAorCQkgICAgIlNldFBsYW5lIHBpcGUgJXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCisJ CSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKIAkJICAgIHBsYW5lLT5pbmRleCk7 CiAKIAkJcmV0ID0gZHJtTW9kZVNldFBsYW5lKGRpc3BsYXktPmRybV9mZCwKQEAgLTE3OTcsMTAg KzE3ODksOSBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpw bGFuZSwKIAkJY3J0Y19oID0gcGxhbmUtPmNydGNfaDsKIAogCQlMT0coZGlzcGxheSwKLQkJICAg ICIlczogU2V0UGxhbmUgJXMuJWQsIGZiICV1LCBzcmMgPSAoJWQsICVkKSAiCisJCSAgICAiU2V0 UGxhbmUgJXMuJWQsIGZiICV1LCBzcmMgPSAoJWQsICVkKSAiCiAJCQkiJXV4JXUgZHN0ID0gKCV1 LCAldSkgJXV4JXVcbiIsCi0JCSAgICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKLQkJICAgIGtt c3Rlc3RfcGlwZV9uYW1lKG91dHB1dC0+Y29uZmlnLnBpcGUpLAorCQkgICAga21zdGVzdF9waXBl X25hbWUocGlwZS0+cGlwZSksCiAJCSAgICBwbGFuZS0+aW5kZXgsCiAJCSAgICBmYl9pZCwKIAkJ ICAgIHNyY194ID4+IDE2LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LApA QCAtMTg0MSwxMSArMTgzMiwxMSBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGln dF9wbGFuZV90ICpwbGFuZSwKICAqIGNvZGUpLgogICovCiBzdGF0aWMgaW50IGlndF9jdXJzb3Jf Y29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqY3Vyc29yLAotCQkJCSAgICBpZ3Rfb3V0cHV0X3Qg Km91dHB1dCwKKwkJCQkgICAgaWd0X3BpcGVfdCAqcGlwZSwKIAkJCQkgICAgYm9vbCBmYWlsX29u X2Vycm9yKQogewotCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7Ci0J dWludDMyX3QgY3J0Y19pZCA9IG91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQ7CisJaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9IHBpcGUtPmRpc3BsYXk7CisJdWludDMyX3QgY3J0Y19pZCA9IHBp cGUtPmNydGNfaWQ7CiAJaW50IHJldDsKIAogCWlmIChjdXJzb3ItPmZiX2NoYW5nZWQpIHsKQEAg LTE4NTMsOSArMTg0NCw4IEBAIHN0YXRpYyBpbnQgaWd0X2N1cnNvcl9jb21taXRfbGVnYWN5KGln dF9wbGFuZV90ICpjdXJzb3IsCiAKIAkJaWYgKGdlbV9oYW5kbGUpIHsKIAkJCUxPRyhkaXNwbGF5 LAotCQkJICAgICIlczogU2V0Q3Vyc29yIHBpcGUgJXMsIGZiICV1ICVkeCVkXG4iLAotCQkJICAg IGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAotCQkJICAgIGttc3Rlc3RfcGlwZV9uYW1lKG91dHB1 dC0+Y29uZmlnLnBpcGUpLAorCQkJICAgICJTZXRDdXJzb3IgcGlwZSAlcywgZmIgJXUgJWR4JWRc biIsCisJCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCiAJCQkgICAgZ2VtX2hh bmRsZSwKIAkJCSAgICBjdXJzb3ItPmNydGNfdywgY3Vyc29yLT5jcnRjX2gpOwogCkBAIC0xODY1 LDkgKzE4NTUsOCBAQCBzdGF0aWMgaW50IGlndF9jdXJzb3JfY29tbWl0X2xlZ2FjeShpZ3RfcGxh bmVfdCAqY3Vyc29yLAogCQkJCQkgICAgICAgY3Vyc29yLT5jcnRjX2gpOwogCQl9IGVsc2Ugewog CQkJTE9HKGRpc3BsYXksCi0JCQkgICAgIiVzOiBTZXRDdXJzb3IgcGlwZSAlcywgZGlzYWJsaW5n XG4iLAotCQkJICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAotCQkJICAgIGttc3Rlc3RfcGlw ZV9uYW1lKG91dHB1dC0+Y29uZmlnLnBpcGUpKTsKKwkJCSAgICAiU2V0Q3Vyc29yIHBpcGUgJXMs IGRpc2FibGluZ1xuIiwKKwkJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSk7CiAK IAkJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ZHJtX2ZkLCBjcnRjX2lkLAogCQkJ CQkgICAgICAgMCwgMCwgMCk7CkBAIC0xODgzLDkgKzE4NzIsOCBAQCBzdGF0aWMgaW50IGlndF9j dXJzb3JfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqY3Vyc29yLAogCQlpbnQgeSA9IGN1cnNv ci0+Y3J0Y195OwogCiAJCUxPRyhkaXNwbGF5LAotCQkgICAgIiVzOiBNb3ZlQ3Vyc29yIHBpcGUg JXMsICglZCwgJWQpXG4iLAotCQkgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCi0JCSAgICBr bXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwKKwkJICAgICJNb3ZlQ3Vyc29y IHBpcGUgJXMsICglZCwgJWQpXG4iLAorCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlw ZSksCiAJCSAgICB4LCB5KTsKIAogCQlyZXQgPSBkcm1Nb2RlTW92ZUN1cnNvcihkaXNwbGF5LT5k cm1fZmQsIGNydGNfaWQsIHgsIHkpOwpAQCAtMTkwMiwxMCArMTg5MCwxMSBAQCBzdGF0aWMgaW50 IGlndF9jdXJzb3JfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqY3Vyc29yLAogICogKHNldG1v ZGUpLgogICovCiBzdGF0aWMgaW50IGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdhY3koaWd0 X3BsYW5lX3QgKnByaW1hcnksCi0JCQkJCSAgIGlndF9vdXRwdXRfdCAqb3V0cHV0LAorCQkJCQkg ICBpZ3RfcGlwZV90ICpwaXBlLAogCQkJCQkgICBib29sIGZhaWxfb25fZXJyb3IpCiB7CiAJc3Ry dWN0IGlndF9kaXNwbGF5ICpkaXNwbGF5ID0gcHJpbWFyeS0+cGlwZS0+ZGlzcGxheTsKKwlpZ3Rf b3V0cHV0X3QgKm91dHB1dCA9IGlndF9waXBlX2dldF9vdXRwdXQocGlwZSk7CiAJZHJtTW9kZU1v ZGVJbmZvICptb2RlOwogCXVpbnQzMl90IGZiX2lkLCBjcnRjX2lkOwogCWludCByZXQ7CkBAIC0x OTIwLDcgKzE5MDksNyBAQCBzdGF0aWMgaW50IGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdh Y3koaWd0X3BsYW5lX3QgKnByaW1hcnksCiAJCSFwcmltYXJ5LT5zaXplX2NoYW5nZWQgJiYgIXBy aW1hcnktPnBhbm5pbmdfY2hhbmdlZCkKIAkJcmV0dXJuIDA7CiAKLQljcnRjX2lkID0gb3V0cHV0 LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKKwljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKIAlmYl9p ZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocHJpbWFyeSk7CiAJaWYgKGZiX2lkKQogCQltb2RlID0g aWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwpAQCAtMTkzMiw3ICsxOTIxLDcgQEAgc3RhdGlj IGludCBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpwcmltYXJ5 LAogCQkgICAgIiVzOiBTZXRDcnRjIHBpcGUgJXMsIGZiICV1LCBwYW5uaW5nICglZCwgJWQpLCAi CiAJCSAgICAibW9kZSAlZHglZFxuIiwKIAkJICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAot CQkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSksCisJCSAgICBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKIAkJICAgIGZiX2lkLAogCQkgICAgcHJpbWFyeS0+ cGFuX3gsIHByaW1hcnktPnBhbl95LAogCQkgICAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNw bGF5KTsKQEAgLTE5NDYsOSArMTkzNSw4IEBAIHN0YXRpYyBpbnQgaWd0X3ByaW1hcnlfcGxhbmVf Y29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAkJCQkgICAgIG1vZGUpOwogCX0g ZWxzZSB7CiAJCUxPRyhkaXNwbGF5LAotCQkgICAgIiVzOiBTZXRDcnRjIHBpcGUgJXMsIGRpc2Fi bGluZ1xuIiwKLQkJICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAotCQkgICAga21zdGVzdF9w aXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOworCQkgICAgIlNldENydGMgcGlwZSAlcywg ZGlzYWJsaW5nXG4iLAorCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSkpOwogCiAJ CXJldCA9IGRybU1vZGVTZXRDcnRjKGRpc3BsYXktPmRybV9mZCwKIAkJCQkgICAgIGNydGNfaWQs CkBAIC0xOTc2LDE3ICsxOTY0LDE3IEBAIHN0YXRpYyBpbnQgaWd0X3ByaW1hcnlfcGxhbmVfY29t bWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKICAqIHdoaWNoIEFQSSBpcyB1c2VkIHRv IGRvIHRoZSBwcm9ncmFtbWluZy4KICAqLwogc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGln dF9wbGFuZV90ICpwbGFuZSwKLQkJCSAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKKwkJCSAgICBp Z3RfcGlwZV90ICpwaXBlLAogCQkJICAgIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzLAogCQkJICAg IGJvb2wgZmFpbF9vbl9lcnJvcikKIHsKIAlpZiAocGxhbmUtPmlzX2N1cnNvciAmJiBzID09IENP TU1JVF9MRUdBQ1kpIHsKLQkJcmV0dXJuIGlndF9jdXJzb3JfY29tbWl0X2xlZ2FjeShwbGFuZSwg b3V0cHV0LCBmYWlsX29uX2Vycm9yKTsKKwkJcmV0dXJuIGlndF9jdXJzb3JfY29tbWl0X2xlZ2Fj eShwbGFuZSwgcGlwZSwgZmFpbF9vbl9lcnJvcik7CiAJfSBlbHNlIGlmIChwbGFuZS0+aXNfcHJp bWFyeSAmJiBzID09IENPTU1JVF9MRUdBQ1kpIHsKLQkJcmV0dXJuIGlndF9wcmltYXJ5X3BsYW5l X2NvbW1pdF9sZWdhY3kocGxhbmUsIG91dHB1dCwKKwkJcmV0dXJuIGlndF9wcmltYXJ5X3BsYW5l X2NvbW1pdF9sZWdhY3kocGxhbmUsIHBpcGUsCiAJCQkJCQkgICAgICAgZmFpbF9vbl9lcnJvcik7 CiAJfSBlbHNlIHsKLQkJCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0 LCBmYWlsX29uX2Vycm9yKTsKKwkJCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwg cGlwZSwgZmFpbF9vbl9lcnJvcik7CiAJfQogfQogCkBAIC0yMDAwLDMxICsxOTg4LDI4IEBAIHN0 YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAgKiBmdXJ0aGVy IHByb2dyYW1taW5nIHdpbGwgdGFrZSBwbGFjZSwgd2hpY2ggbWF5IHJlc3VsdCBpbiBzb21lIGNo YW5nZXMKICAqIHRha2luZyBlZmZlY3QgYW5kIG90aGVycyBub3QgdGFraW5nIGVmZmVjdC4KICAq Lwotc3RhdGljIGludCBpZ3Rfb3V0cHV0X2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKLQkJ CSAgICAgZW51bSBpZ3RfY29tbWl0X3N0eWxlIHMsCi0JCQkgICAgIGJvb2wgZmFpbF9vbl9lcnJv cikKK3N0YXRpYyBpbnQgaWd0X3BpcGVfY29tbWl0KGlndF9waXBlX3QgKnBpcGUsCisJCQkgICBl bnVtIGlndF9jb21taXRfc3R5bGUgcywKKwkJCSAgIGJvb2wgZmFpbF9vbl9lcnJvcikKIHsKLQlp Z3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5OwotCWlndF9waXBlX3QgKnBp cGU7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IHBpcGUtPmRpc3BsYXk7CiAJaW50IGk7CiAJ aW50IHJldDsKIAlib29sIG5lZWRfd2FpdF9mb3JfdmJsYW5rID0gZmFsc2U7CiAKLQlwaXBlID0g aWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7Ci0KIAlpZiAocGlwZS0+YmFja2dy b3VuZF9jaGFuZ2VkKSB7Ci0JCWlndF9jcnRjX3NldF9wcm9wZXJ0eShvdXRwdXQsIHBpcGUtPmJh Y2tncm91bmRfcHJvcGVydHksCisJCWlndF9jcnRjX3NldF9wcm9wZXJ0eShwaXBlLCBwaXBlLT5i YWNrZ3JvdW5kX3Byb3BlcnR5LAogCQkJcGlwZS0+YmFja2dyb3VuZCk7CiAKIAkJcGlwZS0+YmFj a2dyb3VuZF9jaGFuZ2VkID0gZmFsc2U7CiAJfQogCiAJaWYgKHBpcGUtPmNvbG9yX21nbXRfY2hh bmdlZCkgewotCQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkob3V0cHV0LCBwaXBlLT5kZWdhbW1hX3By b3BlcnR5LAorCQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkocGlwZSwgcGlwZS0+ZGVnYW1tYV9wcm9w ZXJ0eSwKIAkJCQkgICAgICBwaXBlLT5kZWdhbW1hX2Jsb2IpOwotCQlpZ3RfY3J0Y19zZXRfcHJv cGVydHkob3V0cHV0LCBwaXBlLT5jdG1fcHJvcGVydHksCisJCWlndF9jcnRjX3NldF9wcm9wZXJ0 eShwaXBlLCBwaXBlLT5jdG1fcHJvcGVydHksCiAJCQkJICAgICAgcGlwZS0+Y3RtX2Jsb2IpOwot CQlpZ3RfY3J0Y19zZXRfcHJvcGVydHkob3V0cHV0LCBwaXBlLT5nYW1tYV9wcm9wZXJ0eSwKKwkJ aWd0X2NydGNfc2V0X3Byb3BlcnR5KHBpcGUsIHBpcGUtPmdhbW1hX3Byb3BlcnR5LAogCQkJCSAg ICAgIHBpcGUtPmdhbW1hX2Jsb2IpOwogCiAJCXBpcGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IGZh bHNlOwpAQCAtMjAzNiw3ICsyMDIxLDcgQEAgc3RhdGljIGludCBpZ3Rfb3V0cHV0X2NvbW1pdChp Z3Rfb3V0cHV0X3QgKm91dHB1dCwKIAkJaWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5w b3NpdGlvbl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpCiAJCQluZWVkX3dhaXRfZm9y X3ZibGFuayA9IHRydWU7CiAKLQkJcmV0ID0gaWd0X3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0cHV0 LCBzLCBmYWlsX29uX2Vycm9yKTsKKwkJcmV0ID0gaWd0X3BsYW5lX2NvbW1pdChwbGFuZSwgcGlw ZSwgcywgZmFpbF9vbl9lcnJvcik7CiAJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3Ip OwogCX0KIApAQCAtMjA2MCw2ICsyMDQ1LDkgQEAgc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVw YXJlX2NydGNfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBkcm1Nb2RlQXRvbWljUmUKIAog CWlndF9waXBlX3QgKnBpcGVfb2JqID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1 dCk7CiAKKwlpZiAoIXBpcGVfb2JqKQorCQlyZXR1cm47CisKIAlpZiAocGlwZV9vYmotPmJhY2tn cm91bmRfY2hhbmdlZCkKIAkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIG91dHB1 dCwgSUdUX0NSVENfQkFDS0dST1VORCwgcGlwZV9vYmotPmJhY2tncm91bmQpOwogCkBAIC0yMTI1 LDYgKzIxMTMsOCBAQCBzdGF0aWMgaW50IGlndF9hdG9taWNfY29tbWl0KGlndF9kaXNwbGF5X3Qg KmRpc3BsYXkpCiAKIAogCQlwaXBlX29iaiA9IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShv dXRwdXQpOworCQlpZiAoIXBpcGVfb2JqKQorCQkJY29udGludWU7CiAKIAkJcGlwZSA9IHBpcGVf b2JqLT5waXBlOwogCkBAIC0yMTY3LDE0ICsyMTU3LDE0IEBAIHN0YXRpYyBpbnQgZG9fZGlzcGxh eV9jb21taXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKIAogCX0KIAotCWZvciAoaSA9IDA7IGkg PCBkaXNwbGF5LT5uX291dHB1dHM7IGkrKykgewotCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9ICZk aXNwbGF5LT5vdXRwdXRzW2ldOworCWZvcl9lYWNoX3BpcGUoZGlzcGxheSwgaSkgeworCQlpZ3Rf cGlwZV90ICpwaXBlX29iaiA9ICZkaXNwbGF5LT5waXBlc1tpXTsKKwkJaWd0X291dHB1dF90ICpv dXRwdXQgPSBpZ3RfcGlwZV9nZXRfb3V0cHV0KHBpcGVfb2JqKTsKIAotCQlpZiAoIW91dHB1dC0+ dmFsaWQpCi0JCQljb250aW51ZTsKKwkJaWYgKG91dHB1dCAmJiBvdXRwdXQtPnZhbGlkKQorCQkJ dmFsaWRfb3V0cysrOwogCi0JCXZhbGlkX291dHMrKzsKLQkJcmV0ID0gaWd0X291dHB1dF9jb21t aXQob3V0cHV0LCBzLCBmYWlsX29uX2Vycm9yKTsKKwkJcmV0ID0gaWd0X3BpcGVfY29tbWl0KHBp cGVfb2JqLCBzLCBmYWlsX29uX2Vycm9yKTsKIAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9l cnJvcik7CiAJfQogCkBAIC0yMjgyLDkgKzIyNzIsOSBAQCB2b2lkIGlndF9vdXRwdXRfc2V0X3Bp cGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKQogewogCWlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7CiAKLQlpZiAocGlwZSA9PSBQSVBFX0FOWSkg eworCWlmIChwaXBlID09IFBJUEVfTk9ORSkgewogCQlMT0coZGlzcGxheSwgIiVzOiBzZXRfcGlw ZShhbnkpXG4iLCBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7Ci0JCW91dHB1dC0+cGVuZGluZ19j cnRjX2lkeF9tYXNrID0gLTFVTDsKKwkJb3V0cHV0LT5wZW5kaW5nX2NydGNfaWR4X21hc2sgPSAw OwogCX0gZWxzZSB7CiAJCUxPRyhkaXNwbGF5LCAiJXM6IHNldF9waXBlKCVzKVxuIiwgaWd0X291 dHB1dF9uYW1lKG91dHB1dCksCiAJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7CkBAIC0y Mjk3LDYgKzIyODcsOCBAQCBpZ3RfcGxhbmVfdCAqaWd0X291dHB1dF9nZXRfcGxhbmUoaWd0X291 dHB1dF90ICpvdXRwdXQsIGVudW0gaWd0X3BsYW5lIHBsYW5lKQogCWlndF9waXBlX3QgKnBpcGU7 CiAKIAlwaXBlID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7CisJaWd0X2Fz c2VydChwaXBlKTsKKwogCXJldHVybiBpZ3RfcGlwZV9nZXRfcGxhbmUocGlwZSwgcGxhbmUpOwog fQogCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAppbmRleCBkYzZi ZTVlNTNiNzQuLjM1MzFkYzIwYjZlMCAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9s aWIvaWd0X2ttcy5oCkBAIC0zMzQsMTcgKzMzNCwzMSBAQCB2b2lkIGlndF9mYl9zZXRfc2l6ZShz dHJ1Y3QgaWd0X2ZiICpmYiwgaWd0X3BsYW5lX3QgKnBsYW5lLAogCiB2b2lkIGlndF93YWl0X2Zv cl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwogCitzdGF0aWMgaW5saW5lIGJv b2wgaWd0X291dHB1dF9pc19jb25uZWN0ZWQoaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJLyog U29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHByb2JlPyAqLworCWlmICghb3V0cHV0LT5jb25m aWcuY29ubmVjdG9yKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAob3V0cHV0LT5jb25maWcuY29u bmVjdG9yLT5jb25uZWN0aW9uID09IERSTV9NT0RFX0NPTk5FQ1RFRCkKKwkJcmV0dXJuIHRydWU7 CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpZ3RfcGlwZV9jb25u ZWN0b3JfdmFsaWQoZW51bSBwaXBlIHBpcGUsCiAJCQkJCSAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1 dCkKIHsKLQlyZXR1cm4gb3V0cHV0LT52YWxpZCAmJiAob3V0cHV0LT5jb25maWcudmFsaWRfY3J0 Y19pZHhfbWFzayAmICgxIDw8IHBpcGUpKTsKKwlyZXR1cm4gaWd0X291dHB1dF9pc19jb25uZWN0 ZWQob3V0cHV0KSAmJgorCSAgICAgICAob3V0cHV0LT5jb25maWcudmFsaWRfY3J0Y19pZHhfbWFz ayAmICgxIDw8IHBpcGUpKTsKIH0KIAogI2RlZmluZSBmb3JfZWFjaF9pZihjb25kaXRpb24pIGlm ICghKGNvbmRpdGlvbikpIHt9IGVsc2UKIAogI2RlZmluZSBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0 cHV0KGRpc3BsYXksIG91dHB1dCkJCVwKIAlmb3IgKGludCBpX18gPSAwOyAgaV9fIDwgKGRpc3Bs YXkpLT5uX291dHB1dHM7IGlfXysrKQlcCi0JCWZvcl9lYWNoX2lmICgoKG91dHB1dCA9ICYoZGlz cGxheSktPm91dHB1dHNbaV9fXSksIG91dHB1dC0+dmFsaWQpKQorCQlmb3JfZWFjaF9pZiAoKChv dXRwdXQgPSAmKGRpc3BsYXkpLT5vdXRwdXRzW2lfX10pLCBcCisJCQkgICAgICBpZ3Rfb3V0cHV0 X2lzX2Nvbm5lY3RlZChvdXRwdXQpKSkKIAogI2RlZmluZSBmb3JfZWFjaF9waXBlKGRpc3BsYXks IHBpcGUpCQkJCQlcCiAJZm9yIChwaXBlID0gMDsgcGlwZSA8IGlndF9kaXNwbGF5X2dldF9uX3Bp cGVzKGRpc3BsYXkpOyBwaXBlKyspCVwKLS0gCjIuNS41CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK