From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752345Ab2LAPrd (ORCPT ); Sat, 1 Dec 2012 10:47:33 -0500 Received: from hop-nat-141.emc.com ([168.159.213.141]:31566 "EHLO mexforward.lss.emc.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752086Ab2LAPrb (ORCPT ); Sat, 1 Dec 2012 10:47:31 -0500 From: "Peng, Tao" To: "Myklebust, Trond" , Greg Kroah-Hartman , Ben Hutchings CC: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" , "kernel-team@lists.ubuntu.com" , "Herton Ronaldo Krzesinski" Subject: RE: [PATCH 041/270] pnfsblock: fix partial page buffer wirte Thread-Topic: [PATCH 041/270] pnfsblock: fix partial page buffer wirte Thread-Index: AQHNy/fYx6XCYZQqHkKJpJtQ4mQx3Zf9SwcAgASpyICAAMm5AP//yIijgAGUFHY= Date: Sat, 1 Dec 2012 15:46:41 +0000 Message-ID: <1882637210201641A747464075FFC64903815F@MX101CL02.corp.emc.com> References: <1353949160-26803-1-git-send-email-herton.krzesinski@canonical.com> <1353949160-26803-42-git-send-email-herton.krzesinski@canonical.com> <1353983604.4266.44.camel@deadeye.wl.decadent.org.uk> <20121130014607.GD13478@kroah.com>,<4FA345DA4F4AE44899BD2B03EEEC2FA90B32EE5D@SACEXCMBX04-PRD.hq.netapp.com>,<1882637210201641A747464075FFC649037C07@MX101CL02.corp.emc.com> In-Reply-To: <1882637210201641A747464075FFC649037C07@MX101CL02.corp.emc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.250.132.63] Content-Type: multipart/mixed; boundary="_002_1882637210201641A747464075FFC64903815FMX101CL02corpemcc_" MIME-Version: 1.0 X-EMM-MHVC: 1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_002_1882637210201641A747464075FFC64903815FMX101CL02corpemcc_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Greg and Ben,=0A= =0A= Attached is the patch of upstream commit fe6e1e8d9fad86873eb74a26e80a8f91f9= e870b5 backported to 3.4.20 stable branch (head 0f4475cfaaf80e34ea5496a93ce= 579fe8c6950d5).=0A= =0A= Thanks,=0A= Tao=0A= =0A= ________________________________________=0A= From: Peng, Tao=0A= Sent: Friday, November 30, 2012 11:34 PM=0A= To: Myklebust, Trond; Greg Kroah-Hartman; Ben Hutchings=0A= Cc: linux-kernel@vger.kernel.org; stable@vger.kernel.org; kernel-team@lists= .ubuntu.com; Herton Ronaldo Krzesinski=0A= Subject: RE: [PATCH 041/270] pnfsblock: fix partial page buffer wirte=0A= =0A= Sorry for the late response. I will get it done in the weekend. The only on= e that need backport is bellow patch. The two DIO patches are not necessary= because 3.4 NFS DIO does not support pNFS yet.=0A= =0A= Thanks,=0A= Tao=0A= ________________________________________=0A= From: Myklebust, Trond [Trond.Myklebust@netapp.com]=0A= Sent: Friday, November 30, 2012 9:48 PM=0A= To: Greg Kroah-Hartman; Ben Hutchings=0A= Cc: Peng, Tao; linux-kernel@vger.kernel.org; stable@vger.kernel.org; kernel= -team@lists.ubuntu.com; Herton Ronaldo Krzesinski=0A= Subject: RE: [PATCH 041/270] pnfsblock: fix partial page buffer wirte=0A= =0A= > -----Original Message-----=0A= > From: Greg Kroah-Hartman [mailto:gregkh@linuxfoundation.org]=0A= > Sent: Thursday, November 29, 2012 8:46 PM=0A= > To: Ben Hutchings=0A= > Cc: Peng Tao; Myklebust, Trond; linux-kernel@vger.kernel.org;=0A= > stable@vger.kernel.org; kernel-team@lists.ubuntu.com; Herton Ronaldo=0A= > Krzesinski=0A= > Subject: Re: [PATCH 041/270] pnfsblock: fix partial page buffer wirte=0A= >=0A= > On Tue, Nov 27, 2012 at 02:33:24AM +0000, Ben Hutchings wrote:=0A= > > On Mon, 2012-11-26 at 14:55 -0200, Herton Ronaldo Krzesinski wrote:=0A= > > > 3.5.7u1 -stable review patch. If anyone has any objections, please l= et me=0A= > know.=0A= > > >=0A= > > > ------------------=0A= > > >=0A= > > > From: Peng Tao =0A= > > >=0A= > > > commit fe6e1e8d9fad86873eb74a26e80a8f91f9e870b5 upstream.=0A= > > >=0A= > > > If applications use flock to protect its write range, generic NFS=0A= > > > will not do read-modify-write cycle at page cache level. Therefore=0A= > > > LD should know how to handle non-sector aligned writes. Otherwise=0A= > > > there will be data corruption.=0A= > > >=0A= > > > Signed-off-by: Peng Tao =0A= > > > Signed-off-by: Trond Myklebust =0A= > > > Signed-off-by: Herton Ronaldo Krzesinski=0A= > > > =0A= > > [...]=0A= > >=0A= > > I notice that this fix is missing from 3.4, and will need backporting.= =0A= >=0A= > I don't trust myself with backporting this, as I got it wrong. So if one= of the=0A= > NFS developers wants to do this (same goes for the other NFS patch), I'll= =0A= > gladly take it.=0A= >=0A= =0A= Tao would be the right person to do this since he has access to pNFS blocks= hardware and can test the results.=0A= =0A= Cheers=0A= Trond=0A= =0A= --_002_1882637210201641A747464075FFC64903815FMX101CL02corpemcc_ Content-Type: text/x-patch; name="0001-pnfsblock-fix-partial-page-buffer-wirte.patch" Content-Description: 0001-pnfsblock-fix-partial-page-buffer-wirte.patch Content-Disposition: attachment; filename="0001-pnfsblock-fix-partial-page-buffer-wirte.patch"; size=8939; creation-date="Sat, 01 Dec 2012 15:45:45 GMT"; modification-date="Sat, 01 Dec 2012 15:45:45 GMT" Content-Transfer-Encoding: base64 RnJvbSBiYjUxZjdkZjA2ODhmMTM3OTk4YzM3NDY3MDVhMzQ2YzdkODMyM2MyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZW5nIFRhbyA8YmVyZ3dvbGZAZ21haWwuY29tPgpEYXRlOiBG cmksIDI0IEF1ZyAyMDEyIDAwOjI3OjUxICswODAwClN1YmplY3Q6IFtQQVRDSF0gcG5mc2Jsb2Nr OiBmaXggcGFydGlhbCBwYWdlIGJ1ZmZlciB3aXJ0ZQoKY29tbWl0IGZlNmUxZThkOWZhZDg2ODcz ZWI3NGEyNmU4MGE4ZjkxZjllODcwYjUgdXBzdHJlYW0uCgpJZiBhcHBsaWNhdGlvbnMgdXNlIGZs b2NrIHRvIHByb3RlY3QgaXRzIHdyaXRlIHJhbmdlLCBnZW5lcmljIE5GUwp3aWxsIG5vdCBkbyBy ZWFkLW1vZGlmeS13cml0ZSBjeWNsZSBhdCBwYWdlIGNhY2hlIGxldmVsLiBUaGVyZWZvcmUKTEQg c2hvdWxkIGtub3cgaG93IHRvIGhhbmRsZSBub24tc2VjdG9yIGFsaWduZWQgd3JpdGVzLiBPdGhl cndpc2UKdGhlcmUgd2lsbCBiZSBkYXRhIGNvcnJ1cHRpb24uCgpTaWduZWQtb2ZmLWJ5OiBQZW5n IFRhbyA8dGFvLnBlbmdAZW1jLmNvbT4KU2lnbmVkLW9mZi1ieTogVHJvbmQgTXlrbGVidXN0IDxU cm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4KLS0tCiBmcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2ts YXlvdXQuYyB8ICAxNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGZz L25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5oIHwgICAgMSArCiAyIGZpbGVzIGNoYW5nZWQs IDE2NSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9uZnMv YmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuYyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91 dC5jCmluZGV4IDdmNmEyM2YuLmQxNmRhZTIgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9ibG9ja2xheW91 dC9ibG9ja2xheW91dC5jCisrKyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5jCkBA IC0xNjIsMjUgKzE2MiwzOSBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmxfYWxsb2NfaW5pdF9iaW8o aW50IG5wZywgc2VjdG9yX3QgaXNlY3QsCiAJcmV0dXJuIGJpbzsKIH0KIAotc3RhdGljIHN0cnVj dCBiaW8gKmJsX2FkZF9wYWdlX3RvX2JpbyhzdHJ1Y3QgYmlvICpiaW8sIGludCBucGcsIGludCBy dywKK3N0YXRpYyBzdHJ1Y3QgYmlvICpkb19hZGRfcGFnZV90b19iaW8oc3RydWN0IGJpbyAqYmlv LCBpbnQgbnBnLCBpbnQgcncsCiAJCQkJICAgICAgc2VjdG9yX3QgaXNlY3QsIHN0cnVjdCBwYWdl ICpwYWdlLAogCQkJCSAgICAgIHN0cnVjdCBwbmZzX2Jsb2NrX2V4dGVudCAqYmUsCiAJCQkJICAg ICAgdm9pZCAoKmVuZF9pbykoc3RydWN0IGJpbyAqLCBpbnQgZXJyKSwKLQkJCQkgICAgICBzdHJ1 Y3QgcGFyYWxsZWxfaW8gKnBhcikKKwkJCQkgICAgICBzdHJ1Y3QgcGFyYWxsZWxfaW8gKnBhciwK KwkJCQkgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgbGVuKQogeworCWlzZWN0ID0gaXNl Y3QgKyAob2Zmc2V0ID4+IFNFQ1RPUl9TSElGVCk7CisJZHByaW50aygiJXM6IG5wZyAlZCBydyAl ZCBpc2VjdCAlbGx1IG9mZnNldCAldSBsZW4gJWRcbiIsIF9fZnVuY19fLAorCQlucGcsIHJ3LCAo dW5zaWduZWQgbG9uZyBsb25nKWlzZWN0LCBvZmZzZXQsIGxlbik7CiByZXRyeToKIAlpZiAoIWJp bykgewogCQliaW8gPSBibF9hbGxvY19pbml0X2JpbyhucGcsIGlzZWN0LCBiZSwgZW5kX2lvLCBw YXIpOwogCQlpZiAoIWJpbykKIAkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KLQlpZiAo YmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKSA8IFBBR0VfQ0FDSEVf U0laRSkgeworCWlmIChiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsZW4sIG9mZnNldCkgPCBsZW4p IHsKIAkJYmlvID0gYmxfc3VibWl0X2JpbyhydywgYmlvKTsKIAkJZ290byByZXRyeTsKIAl9CiAJ cmV0dXJuIGJpbzsKIH0KIAorc3RhdGljIHN0cnVjdCBiaW8gKmJsX2FkZF9wYWdlX3RvX2Jpbyhz dHJ1Y3QgYmlvICpiaW8sIGludCBucGcsIGludCBydywKKwkJCQkgICAgICBzZWN0b3JfdCBpc2Vj dCwgc3RydWN0IHBhZ2UgKnBhZ2UsCisJCQkJICAgICAgc3RydWN0IHBuZnNfYmxvY2tfZXh0ZW50 ICpiZSwKKwkJCQkgICAgICB2b2lkICgqZW5kX2lvKShzdHJ1Y3QgYmlvICosIGludCBlcnIpLAor CQkJCSAgICAgIHN0cnVjdCBwYXJhbGxlbF9pbyAqcGFyKQoreworCXJldHVybiBkb19hZGRfcGFn ZV90b19iaW8oYmlvLCBucGcsIHJ3LCBpc2VjdCwgcGFnZSwgYmUsCisJCQkJICBlbmRfaW8sIHBh ciwgMCwgUEFHRV9DQUNIRV9TSVpFKTsKK30KKwogLyogVGhpcyBpcyBiYXNpY2FsbHkgY29waWVk IGZyb20gbXBhZ2VfZW5kX2lvX3JlYWQgKi8KIHN0YXRpYyB2b2lkIGJsX2VuZF9pb19yZWFkKHN0 cnVjdCBiaW8gKmJpbywgaW50IGVycikKIHsKQEAgLTQ0Myw2ICs0NTcsMTA3IEBAIG1hcF9ibG9j ayhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzZWN0b3JfdCBpc2VjdCwgc3RydWN0IHBuZnNfYmxv Y2tfZXh0ZW50ICpiZSkKIAlyZXR1cm47CiB9CiAKK3N0YXRpYyB2b2lkCitibF9yZWFkX3Npbmds ZV9lbmRfaW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgZXJyb3IpCit7CisJc3RydWN0IGJpb192ZWMg KmJ2ZWMgPSBiaW8tPmJpX2lvX3ZlYyArIGJpby0+YmlfdmNudCAtIDE7CisJc3RydWN0IHBhZ2Ug KnBhZ2UgPSBidmVjLT5idl9wYWdlOworCisJLyogT25seSBvbmUgcGFnZSBpbiBidmVjICovCisJ dW5sb2NrX3BhZ2UocGFnZSk7Cit9CisKK3N0YXRpYyBpbnQKK2JsX2RvX3JlYWRwYWdlX3N5bmMo c3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwbmZzX2Jsb2NrX2V4dGVudCAqYmUsCisJCSAgICB1 bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0cnVjdCBiaW8gKmJp bzsKKwlzdHJ1Y3QgcGFnZSAqc2hhZG93X3BhZ2U7CisJc2VjdG9yX3QgaXNlY3Q7CisJY2hhciAq a2FkZHIsICprc2hhZG93X2FkZHI7CisJaW50IHJldCA9IDA7CisKKwlkcHJpbnRrKCIlczogb2Zm c2V0ICV1IGxlbiAldVxuIiwgX19mdW5jX18sIG9mZnNldCwgbGVuKTsKKworCXNoYWRvd19wYWdl ID0gYWxsb2NfcGFnZShHRlBfTk9GUyB8IF9fR0ZQX0hJR0hNRU0pOworCWlmIChzaGFkb3dfcGFn ZSA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9J TywgMSk7CisJaWYgKGJpbyA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlzZWN0ID0g KHBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVfU0VDVE9SX1NISUZUKSArCisJCShvZmZzZXQgLyBT RUNUT1JfU0laRSk7CisKKwliaW8tPmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0 ICsgYmUtPmJlX3Zfb2Zmc2V0OworCWJpby0+YmlfYmRldiA9IGJlLT5iZV9tZGV2OworCWJpby0+ YmlfZW5kX2lvID0gYmxfcmVhZF9zaW5nbGVfZW5kX2lvOworCisJbG9ja19wYWdlKHNoYWRvd19w YWdlKTsKKwlpZiAoYmlvX2FkZF9wYWdlKGJpbywgc2hhZG93X3BhZ2UsCisJCQkgU0VDVE9SX1NJ WkUsIHJvdW5kX2Rvd24ob2Zmc2V0LCBTRUNUT1JfU0laRSkpID09IDApIHsKKwkJdW5sb2NrX3Bh Z2Uoc2hhZG93X3BhZ2UpOworCQliaW9fcHV0KGJpbyk7CisJCXJldHVybiAtRUlPOworCX0KKwor CXN1Ym1pdF9iaW8oUkVBRCwgYmlvKTsKKwl3YWl0X29uX3BhZ2VfbG9ja2VkKHNoYWRvd19wYWdl KTsKKwlpZiAodW5saWtlbHkoIXRlc3RfYml0KEJJT19VUFRPREFURSwgJmJpby0+YmlfZmxhZ3Mp KSkgeworCQlyZXQgPSAtRUlPOworCX0gZWxzZSB7CisJCWthZGRyID0ga21hcF9hdG9taWMocGFn ZSk7CisJCWtzaGFkb3dfYWRkciA9IGttYXBfYXRvbWljKHNoYWRvd19wYWdlKTsKKwkJbWVtY3B5 KGthZGRyICsgb2Zmc2V0LCBrc2hhZG93X2FkZHIgKyBvZmZzZXQsIGxlbik7CisJCWt1bm1hcF9h dG9taWMoa3NoYWRvd19hZGRyKTsKKwkJa3VubWFwX2F0b21pYyhrYWRkcik7CisJfQorCV9fZnJl ZV9wYWdlKHNoYWRvd19wYWdlKTsKKwliaW9fcHV0KGJpbyk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50CitibF9yZWFkX3BhcnRpYWxfcGFnZV9zeW5jKHN0cnVjdCBwYWdlICpwYWdl LCBzdHJ1Y3QgcG5mc19ibG9ja19leHRlbnQgKmJlLAorCQkJICB1bnNpZ25lZCBpbnQgZGlydHlf b2Zmc2V0LCB1bnNpZ25lZCBpbnQgZGlydHlfbGVuLAorCQkJICBib29sIGZ1bGxfcGFnZSkKK3sK KwlpbnQgcmV0ID0gMDsKKwl1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKKworCWlmIChmdWxsX3Bh Z2UpIHsKKwkJc3RhcnQgPSAwOworCQllbmQgPSBQQUdFX0NBQ0hFX1NJWkU7CisJfSBlbHNlIHsK KwkJc3RhcnQgPSByb3VuZF9kb3duKGRpcnR5X29mZnNldCwgU0VDVE9SX1NJWkUpOworCQllbmQg PSByb3VuZF91cChkaXJ0eV9vZmZzZXQgKyBkaXJ0eV9sZW4sIFNFQ1RPUl9TSVpFKTsKKwl9CisK KwlkcHJpbnRrKCIlczogb2Zmc2V0ICV1IGxlbiAlZFxuIiwgX19mdW5jX18sIGRpcnR5X29mZnNl dCwgZGlydHlfbGVuKTsKKwlpZiAoIWJlKSB7CisJCXplcm9fdXNlcl9zZWdtZW50cyhwYWdlLCBz dGFydCwgZGlydHlfb2Zmc2V0LAorCQkJCSAgIGRpcnR5X29mZnNldCArIGRpcnR5X2xlbiwgZW5k KTsKKwkJaWYgKHN0YXJ0ID09IDAgJiYgZW5kID09IFBBR0VfQ0FDSEVfU0laRSAmJgorCQkgICAg dHJ5bG9ja19wYWdlKHBhZ2UpKSB7CisJCQlTZXRQYWdlVXB0b2RhdGUocGFnZSk7CisJCQl1bmxv Y2tfcGFnZShwYWdlKTsKKwkJfQorCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChzdGFydCAhPSBk aXJ0eV9vZmZzZXQpCisJCXJldCA9IGJsX2RvX3JlYWRwYWdlX3N5bmMocGFnZSwgYmUsIHN0YXJ0 LAorCQkJCQkgIGRpcnR5X29mZnNldCAtIHN0YXJ0KTsKKworCWlmICghcmV0ICYmIChkaXJ0eV9v ZmZzZXQgKyBkaXJ0eV9sZW4gPCBlbmQpKQorCQlyZXQgPSBibF9kb19yZWFkcGFnZV9zeW5jKHBh Z2UsIGJlLCBkaXJ0eV9vZmZzZXQgKyBkaXJ0eV9sZW4sCisJCQkJCSAgZW5kIC0gZGlydHlfb2Zm c2V0IC0gZGlydHlfbGVuKTsKKworCXJldHVybiByZXQ7Cit9CisKIC8qIEdpdmVuIGFuIHVubWFw cGVkIHBhZ2UsIHplcm8gaXQgb3IgcmVhZCBpbiBwYWdlIGZvciBDT1csIHBhZ2UgaXMgbG9ja2Vk CiAgKiBieSBjYWxsZXIuCiAgKi8KQEAgLTQ3Niw3ICs1OTEsNiBAQCBpbml0X3BhZ2VfZm9yX3dy aXRlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcG5mc19ibG9ja19leHRlbnQgKmNvd19yZWFk KQogCVNldFBhZ2VVcHRvZGF0ZShwYWdlKTsKIAogY2xlYW51cDoKLQlibF9wdXRfZXh0ZW50KGNv d19yZWFkKTsKIAlpZiAoYmgpCiAJCWZyZWVfYnVmZmVyX2hlYWQoYmgpOwogCWlmIChyZXQpIHsK QEAgLTU0Nyw2ICs2NjEsNyBAQCBibF93cml0ZV9wYWdlbGlzdChzdHJ1Y3QgbmZzX3dyaXRlX2Rh dGEgKndkYXRhLCBpbnQgc3luYykKIAlzdHJ1Y3QgcGFyYWxsZWxfaW8gKnBhcjsKIAlsb2ZmX3Qg b2Zmc2V0ID0gd2RhdGEtPmFyZ3Mub2Zmc2V0OwogCXNpemVfdCBjb3VudCA9IHdkYXRhLT5hcmdz LmNvdW50OworCXVuc2lnbmVkIGludCBwZ19vZmZzZXQsIHBnX2xlbiwgc2F2ZWRfbGVuOwogCXN0 cnVjdCBwYWdlICoqcGFnZXMgPSB3ZGF0YS0+YXJncy5wYWdlczsKIAlzdHJ1Y3QgcGFnZSAqcGFn ZTsKIAlwZ29mZl90IGluZGV4OwpAQCAtNjUxLDEwICs3NjYsMTEgQEAgbmV4dF9wYWdlOgogCQlp ZiAoIWV4dGVudF9sZW5ndGgpIHsKIAkJCS8qIFdlJ3ZlIHVzZWQgdXAgdGhlIHByZXZpb3VzIGV4 dGVudCAqLwogCQkJYmxfcHV0X2V4dGVudChiZSk7CisJCQlibF9wdXRfZXh0ZW50KGNvd19yZWFk KTsKIAkJCWJpbyA9IGJsX3N1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CiAJCQkvKiBHZXQgdGhlIG5l eHQgb25lICovCiAJCQliZSA9IGJsX2ZpbmRfZ2V0X2V4dGVudChCTEtfTFNFRzJFWFQod2RhdGEt PmxzZWcpLAotCQkJCQkgICAgIGlzZWN0LCBOVUxMKTsKKwkJCQkJCWlzZWN0LCAmY293X3JlYWQp OwogCQkJaWYgKCFiZSB8fCAhaXNfd3JpdGFibGUoYmUsIGlzZWN0KSkgewogCQkJCXdkYXRhLT5w bmZzX2Vycm9yID0gLUVJTlZBTDsKIAkJCQlnb3RvIG91dDsKQEAgLTY3MSw3ICs3ODcsMjYgQEAg bmV4dF9wYWdlOgogCQkJZXh0ZW50X2xlbmd0aCA9IGJlLT5iZV9sZW5ndGggLQogCQkJICAgIChp c2VjdCAtIGJlLT5iZV9mX29mZnNldCk7CiAJCX0KLQkJaWYgKGJlLT5iZV9zdGF0ZSA9PSBQTkZT X0JMT0NLX0lOVkFMSURfREFUQSkgeworCisJCWRwcmludGsoIiVzIG9mZnNldCAlbGxkIGNvdW50 ICVadVxuIiwgX19mdW5jX18sIG9mZnNldCwgY291bnQpOworCQlwZ19vZmZzZXQgPSBvZmZzZXQg JiB+UEFHRV9DQUNIRV9NQVNLOworCQlpZiAocGdfb2Zmc2V0ICsgY291bnQgPiBQQUdFX0NBQ0hF X1NJWkUpCisJCQlwZ19sZW4gPSBQQUdFX0NBQ0hFX1NJWkUgLSBwZ19vZmZzZXQ7CisJCWVsc2UK KwkJCXBnX2xlbiA9IGNvdW50OworCisJCXNhdmVkX2xlbiA9IHBnX2xlbjsKKwkJaWYgKGJlLT5i ZV9zdGF0ZSA9PSBQTkZTX0JMT0NLX0lOVkFMSURfREFUQSAmJgorCQkgICAgIWJsX2lzX3NlY3Rv cl9pbml0KGJlLT5iZV9pbnZhbCwgaXNlY3QpKSB7CisJCQlyZXQgPSBibF9yZWFkX3BhcnRpYWxf cGFnZV9zeW5jKHBhZ2VzW2ldLCBjb3dfcmVhZCwKKwkJCQkJCXBnX29mZnNldCwgcGdfbGVuLCB0 cnVlKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlkcHJpbnRrKCIlcyBibF9yZWFkX3BhcnRpYWxfcGFn ZV9zeW5jIGZhaWwgJWRcbiIsCisJCQkJCV9fZnVuY19fLCByZXQpOworCQkJCXdkYXRhLT5wbmZz X2Vycm9yID0gcmV0OworCQkJCWdvdG8gb3V0OworCQkJfQorCiAJCQlyZXQgPSBibF9tYXJrX3Nl Y3RvcnNfaW5pdChiZS0+YmVfaW52YWwsIGlzZWN0LAogCQkJCQkJICAgICAgIFBBR0VfQ0FDSEVf U0VDVE9SUyk7CiAJCQlpZiAodW5saWtlbHkocmV0KSkgewpAQCAtNjgwLDE1ICs4MTUsMzMgQEAg bmV4dF9wYWdlOgogCQkJCXdkYXRhLT5wbmZzX2Vycm9yID0gcmV0OwogCQkJCWdvdG8gb3V0Owog CQkJfQorCisJCQkvKiBFeHBhbmQgdG8gZnVsbCBwYWdlIHdyaXRlICovCisJCQlwZ19vZmZzZXQg PSAwOworCQkJcGdfbGVuID0gUEFHRV9DQUNIRV9TSVpFOworCQl9IGVsc2UgaWYgKChwZ19vZmZz ZXQgJiAoU0VDVE9SX1NJWkUgLSAxKSkgfHwKKwkJCSAgICAocGdfbGVuICYgKFNFQ1RPUl9TSVpF IC0gMSkpKSB7CisJCQkvKiBhaGgsIG5hc3R5IGNhc2UuIFdlIGhhdmUgdG8gZG8gc3luYyBmdWxs IHNlY3RvcgorCQkJICogcmVhZC1tb2RpZnktd3JpdGUgY3ljbGVzLgorCQkJICovCisJCQl1bnNp Z25lZCBpbnQgc2F2ZWRfb2Zmc2V0ID0gcGdfb2Zmc2V0OworCQkJcmV0ID0gYmxfcmVhZF9wYXJ0 aWFsX3BhZ2Vfc3luYyhwYWdlc1tpXSwgYmUsIHBnX29mZnNldCwKKwkJCQkJCQlwZ19sZW4sIGZh bHNlKTsKKwkJCXBnX29mZnNldCA9IHJvdW5kX2Rvd24ocGdfb2Zmc2V0LCBTRUNUT1JfU0laRSk7 CisJCQlwZ19sZW4gPSByb3VuZF91cChzYXZlZF9vZmZzZXQgKyBwZ19sZW4sIFNFQ1RPUl9TSVpF KQorCQkJCSAtIHBnX29mZnNldDsKIAkJfQotCQliaW8gPSBibF9hZGRfcGFnZV90b19iaW8oYmlv LCB3ZGF0YS0+bnBhZ2VzIC0gaSwgV1JJVEUsCisJCWJpbyA9IGRvX2FkZF9wYWdlX3RvX2Jpbyhi aW8sIHdkYXRhLT5ucGFnZXMgLSBpLCBXUklURSwKIAkJCQkJIGlzZWN0LCBwYWdlc1tpXSwgYmUs Ci0JCQkJCSBibF9lbmRfaW9fd3JpdGUsIHBhcik7CisJCQkJCSBibF9lbmRfaW9fd3JpdGUsIHBh ciwKKwkJCQkJIHBnX29mZnNldCwgcGdfbGVuKTsKIAkJaWYgKElTX0VSUihiaW8pKSB7CiAJCQl3 ZGF0YS0+cG5mc19lcnJvciA9IFBUUl9FUlIoYmlvKTsKIAkJCWJpbyA9IE5VTEw7CiAJCQlnb3Rv IG91dDsKIAkJfQorCQlvZmZzZXQgKz0gc2F2ZWRfbGVuOworCQljb3VudCAtPSBzYXZlZF9sZW47 CiAJCWlzZWN0ICs9IFBBR0VfQ0FDSEVfU0VDVE9SUzsKIAkJbGFzdF9pc2VjdCA9IGlzZWN0Owog CQlleHRlbnRfbGVuZ3RoIC09IFBBR0VfQ0FDSEVfU0VDVE9SUzsKQEAgLTcwNiwxNyArODU5LDE2 IEBAIG5leHRfcGFnZToKIAl9CiAKIHdyaXRlX2RvbmU6Ci0Jd2RhdGEtPnJlcy5jb3VudCA9IChs YXN0X2lzZWN0IDw8IFNFQ1RPUl9TSElGVCkgLSAob2Zmc2V0KTsKLQlpZiAoY291bnQgPCB3ZGF0 YS0+cmVzLmNvdW50KSB7Ci0JCXdkYXRhLT5yZXMuY291bnQgPSBjb3VudDsKLQl9CisJd2RhdGEt PnJlcy5jb3VudCA9IHdkYXRhLT5hcmdzLmNvdW50Owogb3V0OgogCWJsX3B1dF9leHRlbnQoYmUp OworCWJsX3B1dF9leHRlbnQoY293X3JlYWQpOwogCWJsX3N1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7 CiAJcHV0X3BhcmFsbGVsKHBhcik7CiAJcmV0dXJuIFBORlNfQVRURU1QVEVEOwogb3V0X21kczoK IAlibF9wdXRfZXh0ZW50KGJlKTsKKwlibF9wdXRfZXh0ZW50KGNvd19yZWFkKTsKIAlrZnJlZShw YXIpOwogCXJldHVybiBQTkZTX05PVF9BVFRFTVBURUQ7CiB9CmRpZmYgLS1naXQgYS9mcy9uZnMv YmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuaCBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91 dC5oCmluZGV4IDAzMzUwNjkuLjM5YmI1MWEgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9ibG9ja2xheW91 dC9ibG9ja2xheW91dC5oCisrKyBiL2ZzL25mcy9ibG9ja2xheW91dC9ibG9ja2xheW91dC5oCkBA IC00MSw2ICs0MSw3IEBACiAKICNkZWZpbmUgUEFHRV9DQUNIRV9TRUNUT1JTIChQQUdFX0NBQ0hF X1NJWkUgPj4gU0VDVE9SX1NISUZUKQogI2RlZmluZSBQQUdFX0NBQ0hFX1NFQ1RPUl9TSElGVCAo UEFHRV9DQUNIRV9TSElGVCAtIFNFQ1RPUl9TSElGVCkKKyNkZWZpbmUgU0VDVE9SX1NJWkUgKDEg PDwgU0VDVE9SX1NISUZUKQogCiBzdHJ1Y3QgYmxvY2tfbW91bnRfaWQgewogCXNwaW5sb2NrX3QJ CQlibV9sb2NrOyAgICAvKiBwcm90ZWN0cyBsaXN0ICovCi0tIAoxLjcuOS41Cgo= --_002_1882637210201641A747464075FFC64903815FMX101CL02corpemcc_--