From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v1 6/7] xen-blkback: expand map/unmap functions Date: Wed, 27 Mar 2013 12:10:42 +0100 Message-ID: <1364382643-3711-7-git-send-email-roger.pau@citrix.com> References: <1364382643-3711-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1364382643-3711-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: linux-kernel@vger.kernel.org, xen-devel@lists.xen.org Cc: Konrad Rzeszutek Wilk , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org UHJlcGFyYXRvcnkgY2hhbmdlIGZvciBpbXBsZW1lbnRpbmcgaW5kaXJlY3QgZGVzY3JpcHRvcnMu IENoYW5nZQp4ZW5fYmxrYmtfe21hcC91bm1hcH0gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBtYXAv dW5tYXAgYSByYW5kb20gYW1vdW50Cm9mIGdyYW50cyAocHJldmlvdXNseSBpdCB3YXMgbGltaXRl ZCB0bwpCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpLiBBbHNvLCByZW1vdmUgdGhlIHVz YWdlIG9mIHBlbmRpbmdfcmVxCmluIHRoZSBtYXAvdW5tYXAgZnVuY3Rpb25zLCBzbyB3ZSBjYW4g bWFwL3VubWFwIGdyYW50cyB3aXRob3V0IG5lZWRpbmcKdG8gcGFzcyBhIHBlbmRpbmdfcmVxLgoK U2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNj OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiB4ZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwotLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFj ay5jIHwgIDEzMyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlcyBj aGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2svYmxrYmFjay5jCmluZGV4IGExYzlkYWQuLmY4YzgzOGUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jCisrKyBiL2RyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2svYmxrYmFjay5jCkBAIC0xODEsMTAgKzE4MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBz aHJpbmtfZnJlZV9wYWdlcG9vbChzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwgaW50IG51bSkKIAog I2RlZmluZSB2YWRkcihwYWdlKSAoKHVuc2lnbmVkIGxvbmcpcGZuX3RvX2thZGRyKHBhZ2VfdG9f cGZuKHBhZ2UpKSkKIAotI2RlZmluZSBwZW5kaW5nX2hhbmRsZShfcmVxLCBfc2VnKSBcCi0JKF9y ZXEtPmdyYW50X2hhbmRsZXNbX3NlZ10pCi0KLQogc3RhdGljIGludCBkb19ibG9ja19pb19vcChz dHJ1Y3QgeGVuX2Jsa2lmICpibGtpZik7CiBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Jsb2NrX2lv KHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAogCQkJCXN0cnVjdCBibGtpZl9yZXF1ZXN0ICpyZXEs CkBAIC02NDMsNTAgKzYzOSw1NyBAQCBzdHJ1Y3Qgc2VnX2J1ZiB7CiAgKiBVbm1hcCB0aGUgZ3Jh bnQgcmVmZXJlbmNlcywgYW5kIGFsc28gcmVtb3ZlIHRoZSBNMlAgb3Zlci1yaWRlcwogICogdXNl ZCBpbiB0aGUgJ3BlbmRpbmdfcmVxJy4KICAqLwotc3RhdGljIHZvaWQgeGVuX2Jsa2JrX3VubWFw KHN0cnVjdCBwZW5kaW5nX3JlcSAqcmVxKQorc3RhdGljIHZvaWQgeGVuX2Jsa2JrX3VubWFwKHN0 cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50 X2hhbmRsZV90IGhhbmRsZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cGFnZSAqcGFnZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGVyc2lz dGVudF9nbnQgKnBlcnNpc3RlbnRfZ250c1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBudW0pCiB7CiAJc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgdW5tYXBbQkxLSUZf TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKLQlzdHJ1Y3QgcGFnZSAqcGFnZXNbQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKKwlzdHJ1Y3QgcGFnZSAqdW5tYXBfcGFnZXNbQkxLSUZf TUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKIAl1bnNpZ25lZCBpbnQgaSwgaW52Y291bnQgPSAw OwotCWdyYW50X2hhbmRsZV90IGhhbmRsZTsKLQlzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiA9IHJl cS0+YmxraWY7CiAJaW50IHJldDsKIAotCWZvciAoaSA9IDA7IGkgPCByZXEtPm5yX3BhZ2VzOyBp KyspIHsKLQkJaWYgKHJlcS0+cGVyc2lzdGVudF9nbnRzW2ldICE9IE5VTEwpIHsKLQkJCXB1dF9w ZXJzaXN0ZW50X2dudChibGtpZiwgcmVxLT5wZXJzaXN0ZW50X2dudHNbaV0pOworCWZvciAoaSA9 IDA7IGkgPCBudW07IGkrKykgeworCQlpZiAocGVyc2lzdGVudF9nbnRzW2ldICE9IE5VTEwpIHsK KwkJCXB1dF9wZXJzaXN0ZW50X2dudChibGtpZiwgcGVyc2lzdGVudF9nbnRzW2ldKTsKIAkJCWNv bnRpbnVlOwogCQl9Ci0JCWhhbmRsZSA9IHBlbmRpbmdfaGFuZGxlKHJlcSwgaSk7Ci0JCXBhZ2Vz W2ludmNvdW50XSA9IHJlcS0+cGFnZXNbaV07Ci0JCWlmIChoYW5kbGUgPT0gQkxLQkFDS19JTlZB TElEX0hBTkRMRSkKKwkJaWYgKGhhbmRsZXNbaV0gPT0gQkxLQkFDS19JTlZBTElEX0hBTkRMRSkK IAkJCWNvbnRpbnVlOwotCQlnbnR0YWJfc2V0X3VubWFwX29wKCZ1bm1hcFtpbnZjb3VudF0sIHZh ZGRyKHBhZ2VzW2ludmNvdW50XSksCi0JCQkJICAgIEdOVE1BUF9ob3N0X21hcCwgaGFuZGxlKTsK LQkJcGVuZGluZ19oYW5kbGUocmVxLCBpKSA9IEJMS0JBQ0tfSU5WQUxJRF9IQU5ETEU7Ci0JCWlu dmNvdW50Kys7CisJCXVubWFwX3BhZ2VzW2ludmNvdW50XSA9IHBhZ2VzW2ldOworCQlnbnR0YWJf c2V0X3VubWFwX29wKCZ1bm1hcFtpbnZjb3VudF0sIHZhZGRyKHBhZ2VzW2ldKSwKKwkJCQkgICAg R05UTUFQX2hvc3RfbWFwLCBoYW5kbGVzW2ldKTsKKwkJaGFuZGxlc1tpXSA9IEJMS0JBQ0tfSU5W QUxJRF9IQU5ETEU7CisJCWlmICgrK2ludmNvdW50ID09IEJMS0lGX01BWF9TRUdNRU5UU19QRVJf UkVRVUVTVCkgeworCQkJcmV0ID0gZ250dGFiX3VubWFwX3JlZnModW5tYXAsIE5VTEwsIHVubWFw X3BhZ2VzLAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgaW52Y291bnQpOworCQkJQlVHX09O KHJldCk7CisJCQlwdXRfZnJlZV9wYWdlcyhibGtpZiwgdW5tYXBfcGFnZXMsIGludmNvdW50KTsK KwkJCWludmNvdW50ID0gMDsKKwkJfQorCX0KKwlpZiAoaW52Y291bnQpIHsKKwkJcmV0ID0gZ250 dGFiX3VubWFwX3JlZnModW5tYXAsIE5VTEwsIHVubWFwX3BhZ2VzLCBpbnZjb3VudCk7CisJCUJV R19PTihyZXQpOworCQlwdXRfZnJlZV9wYWdlcyhibGtpZiwgdW5tYXBfcGFnZXMsIGludmNvdW50 KTsKIAl9Ci0KLQlyZXQgPSBnbnR0YWJfdW5tYXBfcmVmcyh1bm1hcCwgTlVMTCwgcGFnZXMsIGlu dmNvdW50KTsKLQlCVUdfT04ocmV0KTsKLQlwdXRfZnJlZV9wYWdlcyhibGtpZiwgcGFnZXMsIGlu dmNvdW50KTsKIH0KIAotc3RhdGljIGludCB4ZW5fYmxrYmtfbWFwKHN0cnVjdCBibGtpZl9yZXF1 ZXN0ICpyZXEsCi0JCQkgc3RydWN0IHBlbmRpbmdfcmVxICpwZW5kaW5nX3JlcSwKLQkJCSBzdHJ1 Y3Qgc2VnX2J1ZiBzZWdbXSwKLQkJCSBzdHJ1Y3QgcGFnZSAqcGFnZXNbXSkKK3N0YXRpYyBpbnQg eGVuX2Jsa2JrX21hcChzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZiwgZ3JhbnRfcmVmX3QgZ3JlZnNb XSwKKwkJCSBzdHJ1Y3QgcGVyc2lzdGVudF9nbnQgKnBlcnNpc3RlbnRfZ250c1tdLAorCQkJIGdy YW50X2hhbmRsZV90IGhhbmRsZXNbXSwKKwkJCSBzdHJ1Y3QgcGFnZSAqcGFnZXNbXSwKKwkJCSBp bnQgbnVtLCBib29sIHJvKQogewogCXN0cnVjdCBnbnR0YWJfbWFwX2dyYW50X3JlZiBtYXBbQkxL SUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZXNfdG9fZ250 W0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVF07Ci0Jc3RydWN0IHBlcnNpc3RlbnRfZ250 ICoqcGVyc2lzdGVudF9nbnRzID0gcGVuZGluZ19yZXEtPnBlcnNpc3RlbnRfZ250czsKIAlzdHJ1 Y3QgcGVyc2lzdGVudF9nbnQgKnBlcnNpc3RlbnRfZ250ID0gTlVMTDsKLQlzdHJ1Y3QgeGVuX2Js a2lmICpibGtpZiA9IHBlbmRpbmdfcmVxLT5ibGtpZjsKIAlwaHlzX2FkZHJfdCBhZGRyID0gMDsK IAlpbnQgaSwgajsKLQlpbnQgbnNlZyA9IHJlcS0+dS5ydy5ucl9zZWdtZW50czsKIAlpbnQgc2Vn c190b19tYXAgPSAwOwogCWludCByZXQgPSAwOworCWludCBsYXN0X21hcCA9IDAsIG1hcF91bnRp bCA9IDA7CiAJaW50IHVzZV9wZXJzaXN0ZW50X2dudHM7CiAKIAl1c2VfcGVyc2lzdGVudF9nbnRz ID0gKGJsa2lmLT52YmQuZmVhdHVyZV9nbnRfcGVyc2lzdGVudCk7CkBAIC02OTYsMTMgKzY5OSwx NCBAQCBzdGF0aWMgaW50IHhlbl9ibGtia19tYXAoc3RydWN0IGJsa2lmX3JlcXVlc3QgKnJlcSwK IAkgKiBhc3NpZ24gbWFwWy4uXSB3aXRoIHRoZSBQRk4gb2YgdGhlIHBhZ2UgaW4gb3VyIGRvbWFp biB3aXRoIHRoZQogCSAqIGNvcnJlc3BvbmRpbmcgZ3JhbnQgcmVmZXJlbmNlIGZvciBlYWNoIHBh Z2UuCiAJICovCi0JZm9yIChpID0gMDsgaSA8IG5zZWc7IGkrKykgeworYWdhaW46CisJZm9yIChp ID0gbWFwX3VudGlsOyBpIDwgbnVtOyBpKyspIHsKIAkJdWludDMyX3QgZmxhZ3M7CiAKIAkJaWYg KHVzZV9wZXJzaXN0ZW50X2dudHMpCiAJCQlwZXJzaXN0ZW50X2dudCA9IGdldF9wZXJzaXN0ZW50 X2dudCgKIAkJCQlibGtpZiwKLQkJCQlyZXEtPnUucncuc2VnW2ldLmdyZWYpOworCQkJCWdyZWZz W2ldKTsKIAogCQlpZiAocGVyc2lzdGVudF9nbnQpIHsKIAkJCS8qCkBAIC03MTgsMTMgKzcyMiwx NSBAQCBzdGF0aWMgaW50IHhlbl9ibGtia19tYXAoc3RydWN0IGJsa2lmX3JlcXVlc3QgKnJlcSwK IAkJCXBhZ2VzX3RvX2dudFtzZWdzX3RvX21hcF0gPSBwYWdlc1tpXTsKIAkJCXBlcnNpc3RlbnRf Z250c1tpXSA9IE5VTEw7CiAJCQlmbGFncyA9IEdOVE1BUF9ob3N0X21hcDsKLQkJCWlmICghdXNl X3BlcnNpc3RlbnRfZ250cyAmJgotCQkJICAgIChwZW5kaW5nX3JlcS0+b3BlcmF0aW9uICE9IEJM S0lGX09QX1JFQUQpKQorCQkJaWYgKCF1c2VfcGVyc2lzdGVudF9nbnRzICYmIHJvKQogCQkJCWZs YWdzIHw9IEdOVE1BUF9yZWFkb25seTsKIAkJCWdudHRhYl9zZXRfbWFwX29wKCZtYXBbc2Vnc190 b19tYXArK10sIGFkZHIsCi0JCQkJCSAgZmxhZ3MsIHJlcS0+dS5ydy5zZWdbaV0uZ3JlZiwKKwkJ CQkJICBmbGFncywgZ3JlZnNbaV0sCiAJCQkJCSAgYmxraWYtPmRvbWlkKTsKIAkJfQorCQltYXBf dW50aWwgPSBpICsgMTsKKwkJaWYgKHNlZ3NfdG9fbWFwID09IEJMS0lGX01BWF9TRUdNRU5UU19Q RVJfUkVRVUVTVCkKKwkJCWJyZWFrOwogCX0KIAogCWlmIChzZWdzX3RvX21hcCkgewpAQCAtNzM3 LDIyICs3NDMsMjAgQEAgc3RhdGljIGludCB4ZW5fYmxrYmtfbWFwKHN0cnVjdCBibGtpZl9yZXF1 ZXN0ICpyZXEsCiAJICogc28gdGhhdCB3aGVuIHdlIGFjY2VzcyB2YWRkcihwZW5kaW5nX3JlcSxp KSBpdCBoYXMgdGhlIGNvbnRlbnRzIG9mCiAJICogdGhlIHBhZ2UgZnJvbSB0aGUgb3RoZXIgZG9t YWluLgogCSAqLwotCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnNlZzsgaSsrKSB7CisJZm9yIChp ID0gbGFzdF9tYXAsIGogPSAwOyBpIDwgbWFwX3VudGlsOyBpKyspIHsKIAkJaWYgKCFwZXJzaXN0 ZW50X2dudHNbaV0pIHsKIAkJCS8qIFRoaXMgaXMgYSBuZXdseSBtYXBwZWQgZ3JhbnQgKi8KIAkJ CUJVR19PTihqID49IHNlZ3NfdG9fbWFwKTsKIAkJCWlmICh1bmxpa2VseShtYXBbal0uc3RhdHVz ICE9IDApKSB7CiAJCQkJcHJfZGVidWcoRFJWX1BGWCAiaW52YWxpZCBidWZmZXIgLS0gY291bGQg bm90IHJlbWFwIGl0XG4iKTsKLQkJCQlwZW5kaW5nX2hhbmRsZShwZW5kaW5nX3JlcSwgaSkgPQot CQkJCQlCTEtCQUNLX0lOVkFMSURfSEFORExFOworCQkJCWhhbmRsZXNbaV0gPSBCTEtCQUNLX0lO VkFMSURfSEFORExFOwogCQkJCXJldCB8PSAxOwotCQkJCWorKzsKLQkJCQljb250aW51ZTsKKwkJ CQlnb3RvIG5leHQ7CiAJCQl9Ci0JCQlwZW5kaW5nX2hhbmRsZShwZW5kaW5nX3JlcSwgaSkgPSBt YXBbal0uaGFuZGxlOworCQkJaGFuZGxlc1tpXSA9IG1hcFtqXS5oYW5kbGU7CiAJCX0KIAkJaWYg KHBlcnNpc3RlbnRfZ250c1tpXSkKLQkJCWdvdG8gbmV4dDsKKwkJCWNvbnRpbnVlOwogCQlpZiAo dXNlX3BlcnNpc3RlbnRfZ250cyAmJgogCQkgICAgYmxraWYtPnBlcnNpc3RlbnRfZ250X2MgPCB4 ZW5fYmxraWZfbWF4X3BncmFudHMpIHsKIAkJCS8qCkBAIC03NjcsNyArNzcxLDYgQEAgc3RhdGlj IGludCB4ZW5fYmxrYmtfbWFwKHN0cnVjdCBibGtpZl9yZXF1ZXN0ICpyZXEsCiAJCQkJICogYWxs b2NhdGUgdGhlIHBlcnNpc3RlbnRfZ250IHN0cnVjdAogCQkJCSAqIG1hcCB0aGlzIGdyYW50IG5v bi1wZXJzaXN0ZW5seQogCQkJCSAqLwotCQkJCWorKzsKIAkJCQlnb3RvIG5leHQ7CiAJCQl9CiAJ CQlwZXJzaXN0ZW50X2dudC0+Z250ID0gbWFwW2pdLnJlZjsKQEAgLTc3NiwxNCArNzc5LDEyIEBA IHN0YXRpYyBpbnQgeGVuX2Jsa2JrX21hcChzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqcmVxLAogCQkJ aWYgKGFkZF9wZXJzaXN0ZW50X2dudChibGtpZiwKIAkJCSAgICAgICAgICAgICAgICAgICAgICAg cGVyc2lzdGVudF9nbnQpKSB7CiAJCQkJa2ZyZWUocGVyc2lzdGVudF9nbnQpOwotCQkJCWorKzsK IAkJCQlnb3RvIG5leHQ7CiAJCQl9CiAJCQlwZXJzaXN0ZW50X2dudHNbaV0gPSBwZXJzaXN0ZW50 X2dudDsKIAkJCXByX2RlYnVnKERSVl9QRlggIiBncmFudCAldSBhZGRlZCB0byB0aGUgdHJlZSBv ZiBwZXJzaXN0ZW50IGdyYW50cywgdXNpbmcgJXUvJXVcbiIsCiAJCQkJIHBlcnNpc3RlbnRfZ250 LT5nbnQsIGJsa2lmLT5wZXJzaXN0ZW50X2dudF9jLAogCQkJCSB4ZW5fYmxraWZfbWF4X3BncmFu dHMpOwotCQkJaisrOwogCQkJZ290byBuZXh0OwogCQl9CiAJCWlmICh1c2VfcGVyc2lzdGVudF9n bnRzICYmICFibGtpZi0+dmJkLm92ZXJmbG93X21heF9ncmFudHMpIHsKQEAgLTc5MSwxMCArNzky LDE0IEBAIHN0YXRpYyBpbnQgeGVuX2Jsa2JrX21hcChzdHJ1Y3QgYmxraWZfcmVxdWVzdCAqcmVx LAogCQkJcHJfZGVidWcoRFJWX1BGWCAiIGRvbWFpbiAldSwgZGV2aWNlICUjeCBpcyB1c2luZyBt YXhpbXVtIG51bWJlciBvZiBwZXJzaXN0ZW50IGdyYW50c1xuIiwKIAkJCSAgICAgICAgIGJsa2lm LT5kb21pZCwgYmxraWYtPnZiZC5oYW5kbGUpOwogCQl9Ci0JCWorKzsKIG5leHQ6Ci0JCXNlZ1tp XS5vZmZzZXQgPSAocmVxLT51LnJ3LnNlZ1tpXS5maXJzdF9zZWN0IDw8IDkpOworCQlqKys7CiAJ fQorCXNlZ3NfdG9fbWFwID0gMDsKKwlsYXN0X21hcCA9IG1hcF91bnRpbDsKKwlpZiAobWFwX3Vu dGlsICE9IG51bSkKKwkJZ290byBhZ2FpbjsKKwogCXJldHVybiByZXQ7CiAKIG91dF9vZl9tZW1v cnk6CkBAIC04MDMsNiArODA4LDMxIEBAIG91dF9vZl9tZW1vcnk6CiAJcmV0dXJuIC1FTk9NRU07 CiB9CiAKK3N0YXRpYyBpbnQgeGVuX2Jsa2JrX21hcF9zZWcoc3RydWN0IGJsa2lmX3JlcXVlc3Qg KnJlcSwKKwkJCSAgICAgc3RydWN0IHBlbmRpbmdfcmVxICpwZW5kaW5nX3JlcSwKKwkJCSAgICAg c3RydWN0IHNlZ19idWYgc2VnW10sCisJCQkgICAgIHN0cnVjdCBwYWdlICpwYWdlc1tdKQorewor CWludCBpLCByYzsKKwlncmFudF9yZWZfdCBncmVmc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JF UVVFU1RdOworCisJZm9yIChpID0gMDsgaSA8IHJlcS0+dS5ydy5ucl9zZWdtZW50czsgaSsrKQor CQlncmVmc1tpXSA9IHJlcS0+dS5ydy5zZWdbaV0uZ3JlZjsKKworCXJjID0geGVuX2Jsa2JrX21h cChwZW5kaW5nX3JlcS0+YmxraWYsIGdyZWZzLAorCSAgICAgICAgICAgICAgICAgICBwZW5kaW5n X3JlcS0+cGVyc2lzdGVudF9nbnRzLAorCSAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3JlcS0+ Z3JhbnRfaGFuZGxlcywgcGVuZGluZ19yZXEtPnBhZ2VzLAorCSAgICAgICAgICAgICAgICAgICBy ZXEtPnUucncubnJfc2VnbWVudHMsCisJICAgICAgICAgICAgICAgICAgIChwZW5kaW5nX3JlcS0+ b3BlcmF0aW9uICE9IEJMS0lGX09QX1JFQUQpKTsKKwlpZiAocmMpCisJCXJldHVybiByYzsKKwor CWZvciAoaSA9IDA7IGkgPCByZXEtPnUucncubnJfc2VnbWVudHM7IGkrKykKKwkJc2VnW2ldLm9m ZnNldCA9IChyZXEtPnUucncuc2VnW2ldLmZpcnN0X3NlY3QgPDwgOSk7CisKKwlyZXR1cm4gMDsK K30KKwogc3RhdGljIGludCBkaXNwYXRjaF9kaXNjYXJkX2lvKHN0cnVjdCB4ZW5fYmxraWYgKmJs a2lmLAogCQkJCXN0cnVjdCBibGtpZl9yZXF1ZXN0ICpyZXEpCiB7CkBAIC04ODksNyArOTE5LDEw IEBAIHN0YXRpYyB2b2lkIF9fZW5kX2Jsb2NrX2lvX29wKHN0cnVjdCBwZW5kaW5nX3JlcSAqcGVu ZGluZ19yZXEsIGludCBlcnJvcikKIAkgKiB0aGUgcHJvcGVyIHJlc3BvbnNlIG9uIHRoZSByaW5n LgogCSAqLwogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZwZW5kaW5nX3JlcS0+cGVuZGNudCkp IHsKLQkJeGVuX2Jsa2JrX3VubWFwKHBlbmRpbmdfcmVxKTsKKwkJeGVuX2Jsa2JrX3VubWFwKHBl bmRpbmdfcmVxLT5ibGtpZiwgcGVuZGluZ19yZXEtPmdyYW50X2hhbmRsZXMsCisJCSAgICAgICAg ICAgICAgICBwZW5kaW5nX3JlcS0+cGFnZXMsCisJCSAgICAgICAgICAgICAgICBwZW5kaW5nX3Jl cS0+cGVyc2lzdGVudF9nbnRzLAorCQkgICAgICAgICAgICAgICAgcGVuZGluZ19yZXEtPm5yX3Bh Z2VzKTsKIAkJbWFrZV9yZXNwb25zZShwZW5kaW5nX3JlcS0+YmxraWYsIHBlbmRpbmdfcmVxLT5p ZCwKIAkJCSAgICAgIHBlbmRpbmdfcmVxLT5vcGVyYXRpb24sIHBlbmRpbmdfcmVxLT5zdGF0dXMp OwogCQl4ZW5fYmxraWZfcHV0KHBlbmRpbmdfcmVxLT5ibGtpZik7CkBAIC0xMTExLDcgKzExNDQs NyBAQCBzdGF0aWMgaW50IGRpc3BhdGNoX3J3X2Jsb2NrX2lvKHN0cnVjdCB4ZW5fYmxraWYgKmJs a2lmLAogCSAqIHRoZSBoeXBlcmNhbGwgdG8gdW5tYXAgdGhlIGdyYW50cyAtIHRoYXQgaXMgYWxs IGRvbmUgaW4KIAkgKiB4ZW5fYmxrYmtfdW5tYXAuCiAJICovCi0JaWYgKHhlbl9ibGtia19tYXAo cmVxLCBwZW5kaW5nX3JlcSwgc2VnLCBwYWdlcykpCisJaWYgKHhlbl9ibGtia19tYXBfc2VnKHJl cSwgcGVuZGluZ19yZXEsIHNlZywgcGFnZXMpKQogCQlnb3RvIGZhaWxfZmx1c2g7CiAKIAkvKgpA QCAtMTE3Miw3ICsxMjA1LDkgQEAgc3RhdGljIGludCBkaXNwYXRjaF9yd19ibG9ja19pbyhzdHJ1 Y3QgeGVuX2Jsa2lmICpibGtpZiwKIAlyZXR1cm4gMDsKIAogIGZhaWxfZmx1c2g6Ci0JeGVuX2Js a2JrX3VubWFwKHBlbmRpbmdfcmVxKTsKKwl4ZW5fYmxrYmtfdW5tYXAoYmxraWYsIHBlbmRpbmdf cmVxLT5ncmFudF9oYW5kbGVzLAorCSAgICAgICAgICAgICAgICBwZW5kaW5nX3JlcS0+cGFnZXMs IHBlbmRpbmdfcmVxLT5wZXJzaXN0ZW50X2dudHMsCisJICAgICAgICAgICAgICAgIHBlbmRpbmdf cmVxLT5ucl9wYWdlcyk7CiAgZmFpbF9yZXNwb25zZToKIAkvKiBIYXZlbid0IHN1Ym1pdHRlZCBh bnkgYmlvJ3MgeWV0LiAqLwogCW1ha2VfcmVzcG9uc2UoYmxraWYsIHJlcS0+dS5ydy5pZCwgcmVx LT5vcGVyYXRpb24sIEJMS0lGX1JTUF9FUlJPUik7Ci0tIAoxLjcuNy41IChBcHBsZSBHaXQtMjYp CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK