From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 339A6C43381 for ; Mon, 4 Mar 2019 11:21:46 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 022982070B for ; Mon, 4 Mar 2019 11:21:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="f1rRTQUv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 022982070B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=t5fyq6SKfAfDkdam36oY86fipsDzC8ex9rIl548mZkk=; b=f1rRTQUvBoOnXP mazj7iAXOBfF+stS2iAjpexXblNrxfOs3aN5sLFLUBh4oL6Vi0USNulI8CYZdgjkbBcDDkJA+TYT/ zpLhMqcZZuLrE0xlM/JdS5CLKX+TA2OPD1nU81fmV/trpRSQ8m6b8ZMxbHYiU836CxUbNFNnqxJy7 givgP7J8e3pzpREzxQ/mmHaNjlUWW4ypcq0J+zCT0QRmFbwf04WJSUEnht83xUD+pGRn/C6FCD1Ph 2SGexQXEjP4Vmw7EAzDJEasU6kItr82bkztL12Ra3YtFio7FxrxUuVYPLADdB51YIbrdHxDyF5QiG TAhef2mruA0it0uNlGYQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h0lfD-0008He-DV; Mon, 04 Mar 2019 11:21:43 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h0lfA-0008Gt-2b for linux-mtd@lists.infradead.org; Mon, 04 Mar 2019 11:21:42 +0000 X-Originating-IP: 90.88.147.150 Received: from xps13 (aaubervilliers-681-1-27-150.w90-88.abo.wanadoo.fr [90.88.147.150]) (Authenticated sender: miquel.raynal@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id BA094E0014; Mon, 4 Mar 2019 11:21:31 +0000 (UTC) Date: Mon, 4 Mar 2019 12:21:30 +0100 From: Miquel Raynal To: Schrempf Frieder Subject: Re: [PATCH v4 5/7] mtd: rawnand: Support bad block markers in first, second or last page Message-ID: <20190304122130.4b659bee@xps13> In-Reply-To: <20190218104122.18788-6-frieder.schrempf@kontron.de> References: <20190218104122.18788-1-frieder.schrempf@kontron.de> <20190218104122.18788-6-frieder.schrempf@kontron.de> Organization: Bootlin X-Mailer: Claws Mail 3.17.1 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190304_032140_465879_89228565 X-CRM114-Status: GOOD ( 29.33 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "bbrezillon@kernel.org" , "richard@nod.at" , "linux-kernel@vger.kernel.org" , Marek Vasut , "linux-mtd@lists.infradead.org" , Brian Norris , David Woodhouse Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgU2NocmVtcGYsCgpTY2hyZW1wZiBGcmllZGVyIDxmcmllZGVyLnNjaHJlbXBmQGtvbnRyb24u ZGU+IHdyb3RlIG9uIE1vbiwgMTggRmViCjIwMTkgMTA6NDI6NDUgKzAwMDA6Cgo+IEZyb206IEZy aWVkZXIgU2NocmVtcGYgPGZyaWVkZXIuc2NocmVtcGZAa29udHJvbi5kZT4KPiAKPiBDdXJyZW50 bHkgc3VwcG9ydGVkIGJhZCBibG9jayBtYXJrZXIgcG9zaXRpb25zIHdpdGhpbiB0aGUgYmxvY2sg YXJlOgo+ICogaW4gZmlyc3QgcGFnZSBvbmx5Cj4gKiBpbiBsYXN0IHBhZ2Ugb25seQo+ICogaW4g Zmlyc3Qgb3Igc2Vjb25kIHBhZ2UKPiAKPiBTb21lIEVTTVQgTkFORHMgYXJlIGtub3duIHRvIGhh dmUgYmVlbiBzaGlwcGVkIGJ5IHRoZSBtYW51ZmFjdHVyZXIKPiB3aXRoIGJhZCBibG9jayBtYXJr ZXJzIGluIHRoZSBmaXJzdCBvciBsYXN0IHBhZ2UsIGluc3RlYWQgb2YgdGhlCj4gZmlyc3Qgb3Ig c2Vjb25kIHBhZ2UuCj4gCj4gQWxzbyB0aGUgZGF0YXNoZWV0cyBmb3IgQ3lwcmVzcy9TcGFuc2lv bi9BTUQgTkFORHMgY2xhaW0gdGhhdCB0aGUKPiBmaXJzdCwgc2Vjb25kICphbmQqIGxhc3QgcGFn ZSBuZWVkcyB0byBiZSBjaGVja2VkLgo+IAo+IFRoZXJlZm9yZSB3ZSBtYWtlIGl0IHBvc3NpYmxl IHRvIHNldCBOQU5EX0JCTV9GSVJTVFBBR0UsCj4gTkFORF9CQk1fU0VDT05EUEFHRSBhbmQgTkFO RF9CQk1fTEFTVFBBR0UgaW5kZXBlbmRlbnRseSBpbiBhbnkKPiBjb21iaW5hdGlvbi4KPiAKPiBU byBzaW1wbGlmeSB0aGUgY29kZSwgdGhlIGxvZ2ljIHRvIGV2YWx1YXRlIHRoZSBmbGFncyBpcyBt b3ZlZCB0byBhCj4gYSBuZXcgZnVuY3Rpb24gbmFuZF9iYm1fZ2V0X25leHRfcGFnZSgpLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEZyaWVkZXIgU2NocmVtcGYgPGZyaWVkZXIuc2NocmVtcGZAa29udHJv bi5kZT4KPiBSZXZpZXdlZC1ieTogQm9yaXMgQnJlemlsbG9uIDxiYnJlemlsbG9uQGtlcm5lbC5v cmc+Cj4gLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L2ludGVybmFscy5oIHwgIDEgKwo+ICBk cml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2Jhc2UuYyB8IDYyICsrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfYmJ0LmMgIHwgMjkg KysrKysrKy0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDM3 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbnRl cm5hbHMuaCBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L2ludGVybmFscy5oCj4gaW5kZXggZmJmNmNh MDE1Y2Q3Li45N2FlNjdlMDA5ZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcv aW50ZXJuYWxzLmgKPiArKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9pbnRlcm5hbHMuaAo+IEBA IC03Niw2ICs3Niw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXJfb3Bz IHRvc2hpYmFfbmFuZF9tYW51Zl9vcHM7Cj4gIAo+ICAvKiBDb3JlIGZ1bmN0aW9ucyAqLwo+ICBj b25zdCBzdHJ1Y3QgbmFuZF9tYW51ZmFjdHVyZXIgKm5hbmRfZ2V0X21hbnVmYWN0dXJlcih1OCBp ZCk7Cj4gK2ludCBuYW5kX2JibV9nZXRfbmV4dF9wYWdlKHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAs IGludCBwYWdlKTsKPiAgaW50IG5hbmRfbWFya2JhZF9iYm0oc3RydWN0IG5hbmRfY2hpcCAqY2hp cCwgbG9mZl90IG9mcyk7Cj4gIGludCBuYW5kX2VyYXNlX25hbmQoc3RydWN0IG5hbmRfY2hpcCAq Y2hpcCwgc3RydWN0IGVyYXNlX2luZm8gKmluc3RyLAo+ICAJCSAgICBpbnQgYWxsb3diYnQpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2Jhc2UuYyBiL2RyaXZlcnMv bXRkL25hbmQvcmF3L25hbmRfYmFzZS5jCj4gaW5kZXggOWVmN2I4NmNkYzQyLi43YmMyMGMxZmUy M2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9iYXNlLmMKPiArKysg Yi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kX2Jhc2UuYwo+IEBAIC0yODUsNiArMjg1LDMxIEBA IHN0YXRpYyB2b2lkIG5hbmRfcmVsZWFzZV9kZXZpY2Uoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCkK PiAgCXNwaW5fdW5sb2NrKCZjaGlwLT5jb250cm9sbGVyLT5sb2NrKTsKPiAgfQo+ICAKPiArLyoq Cj4gKyAqIG5hbmRfYmJtX2dldF9uZXh0X3BhZ2UgLSBHZXQgdGhlIG5leHQgcGFnZSBmb3IgYmFk IGJsb2NrIG1hcmtlcnMKPiArICogQGNoaXA6IE5BTkQgY2hpcCBvYmplY3QKPiArICogQGluZGV4 OiBDdXJyZW50IHBhZ2UsIG9ubHkgcGFnZXMgYmV5b25kIHRoaXMgd2lsbCBiZSBjb25zaWRlcmVk CgpXaHkgcGFnZXMgKmJleW9uZCo/IENhbid0IHlvdSBjaGFuZ2UgdGhlIGxvZ2ljIHRvIHVzZSB0 aGUgcGFnZSBmcm9tCndoZXJlIHRvIHN0YXJ0IHNlYXJjaGluZz8gSSBhbSBub3Qgc3VyZSBzdWNo IGEgY2hhbmdlIHdvdWxkIGJlCmNsZWFyZXIgaW4gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgYnV0IEkg ZG9uJ3QgbGlrZSB0aGUgdGVzdHMgYWdhaW5zdAoiLTEiLiBNYXliZSB5b3UgY291bGQganVzdCBj aGVjayBuZWdhdGl2ZSB2YWx1ZXMgaW5zdGVhZC4KCj4gKyAqCj4gKyAqIFJldHVybnMgYW4gaW50 ZWdlciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwYWdlIG9mZnNldCB3aXRoaW4gYSBibG9jaywg Zm9yCj4gKyAqIGEgcGFnZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgYmFkIGJsb2NrIG1hcmtlcnMu IElmIG5vIG1vcmUgcGFnZXMgYXJlCj4gKyAqIGF2YWlsYWJsZSwgLTEgaXMgcmV0dXJuZWQuCj4g KyAqLwo+ICtpbnQgbmFuZF9iYm1fZ2V0X25leHRfcGFnZShzdHJ1Y3QgbmFuZF9jaGlwICpjaGlw LCBpbnQgcGFnZSkKPiArewo+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChj aGlwKTsKPiArCWludCBsYXN0X3BhZ2UgPSAoKG10ZC0+ZXJhc2VzaXplIC0gbXRkLT53cml0ZXNp emUpID4+Cj4gKwkJCSBjaGlwLT5wYWdlX3NoaWZ0KSAmIGNoaXAtPnBhZ2VtYXNrOwo+ICsKPiAr CWlmIChwYWdlIDwgMCAmJiBjaGlwLT5vcHRpb25zICYgTkFORF9CQk1fRklSU1RQQUdFKQo+ICsJ CXJldHVybiAwOwo+ICsJZWxzZSBpZiAocGFnZSA8IDEgJiYgY2hpcC0+b3B0aW9ucyAmIE5BTkRf QkJNX1NFQ09ORFBBR0UpCj4gKwkJcmV0dXJuIDE7Cj4gKwllbHNlIGlmIChwYWdlIDwgbGFzdF9w YWdlICYmIGNoaXAtPm9wdGlvbnMgJiBOQU5EX0JCTV9MQVNUUEFHRSkKPiArCQlyZXR1cm4gbGFz dF9wYWdlOwo+ICsKPiArCXJldHVybiAtMTsKCkkgd291bGQgcHJlZmVyIGEgbmFtZWQgdmFsdWUg KGxpa2UgLUVJTlZBTCkgYW5kIGNoZWNrcyBhZ2FpbnN0IGEKbmVnYXRpdmUgdmFsdWUgKG5vdCAt MSkuCgo+ICt9Cj4gKwo+ICAvKioKPiAgICogbmFuZF9ibG9ja19iYWQgLSBbREVGQVVMVF0gUmVh ZCBiYWQgYmxvY2sgbWFya2VyIGZyb20gdGhlIGNoaXAKPiAgICogQGNoaXA6IE5BTkQgY2hpcCBv YmplY3QKPiBAQCAtMjk0LDE5ICszMTksMTQgQEAgc3RhdGljIHZvaWQgbmFuZF9yZWxlYXNlX2Rl dmljZShzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwKQo+ICAgKi8KPiAgc3RhdGljIGludCBuYW5kX2Js b2NrX2JhZChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLCBsb2ZmX3Qgb2ZzKQo+ICB7Cj4gLQlzdHJ1 Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9fbXRkKGNoaXApOwo+IC0JaW50IHBhZ2UsIHBhZ2Vf ZW5kLCByZXM7Cj4gKwlpbnQgcGFnZV9vZmZzZXQ7Cj4gKwlpbnQgcmVzLCBmaXJzdF9wYWdlID0g KGludCkob2ZzID4+IGNoaXAtPnBhZ2Vfc2hpZnQpICYgY2hpcC0+cGFnZW1hc2s7CgpNYXliZToK CiAgICAgICAgaW50IGZpcnN0X3BhZ2UsIHBhZ2Vfb2Zmc2V0OwogICAgICAgIGludCByZXM7CiAg ICAgICAgdTggYmFkOwoKICAgICAgICBmaXJzdF9wYWdlID0gKGludCkob2ZzID4+IGNoaXAtPnBh Z2Vfc2hpZnQpICYgY2hpcC0+cGFnZW1hc2s7CiAgICAgICAgcGFnZV9vZmZzZXQgPSBuYW5kX2Ji bV9nZXRfbmV4dF9wYWdlKGNoaXAsIC0xKTsKCj4gIAl1OCBiYWQ7Cj4gIAo+IC0JaWYgKGNoaXAt Pm9wdGlvbnMgJiBOQU5EX0JCTV9MQVNUUEFHRSkKPiAtCQlvZnMgKz0gbXRkLT5lcmFzZXNpemUg LSBtdGQtPndyaXRlc2l6ZTsKPiArCXBhZ2Vfb2Zmc2V0ID0gbmFuZF9iYm1fZ2V0X25leHRfcGFn ZShjaGlwLCAtMSk7Cj4gIAo+IC0JcGFnZSA9IChpbnQpKG9mcyA+PiBjaGlwLT5wYWdlX3NoaWZ0 KSAmIGNoaXAtPnBhZ2VtYXNrOwo+IC0JcGFnZV9lbmQgPSBwYWdlICsgKCgoY2hpcC0+b3B0aW9u cyAmIE5BTkRfQkJNX0ZJUlNUUEFHRSkgJiYKPiAtCQkJICAgIChjaGlwLT5vcHRpb25zICYgTkFO RF9CQk1fU0VDT05EUEFHRSkpID8gMiA6IDEpOwo+IC0KPiAtCWZvciAoOyBwYWdlIDwgcGFnZV9l bmQ7IHBhZ2UrKykgewo+IC0JCXJlcyA9IGNoaXAtPmVjYy5yZWFkX29vYihjaGlwLCBwYWdlKTsK PiArCXdoaWxlIChwYWdlX29mZnNldCAhPSAtMSkgewo+ICsJCXJlcyA9IGNoaXAtPmVjYy5yZWFk X29vYihjaGlwLCBmaXJzdF9wYWdlICsgcGFnZV9vZmZzZXQpOwo+ICAJCWlmIChyZXMgPCAwKQo+ ICAJCQlyZXR1cm4gcmVzOwo+ICAKPiBAQCAtMzE4LDYgKzMzOCw4IEBAIHN0YXRpYyBpbnQgbmFu ZF9ibG9ja19iYWQoc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwgbG9mZl90IG9mcykKPiAgCQkJcmVz ID0gaHdlaWdodDgoYmFkKSA8IGNoaXAtPmJhZGJsb2NrYml0czsKPiAgCQlpZiAocmVzKQo+ICAJ CQlyZXR1cm4gcmVzOwo+ICsKPiArCQlwYWdlX29mZnNldCA9IG5hbmRfYmJtX2dldF9uZXh0X3Bh Z2UoY2hpcCwgcGFnZV9vZmZzZXQpOwo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC01Mjgs NyArNTUwLDcgQEAgc3RhdGljIGludCBuYW5kX2RlZmF1bHRfYmxvY2tfbWFya2JhZChzdHJ1Y3Qg bmFuZF9jaGlwICpjaGlwLCBsb2ZmX3Qgb2ZzKQo+ICAJc3RydWN0IG10ZF9pbmZvICptdGQgPSBu YW5kX3RvX210ZChjaGlwKTsKPiAgCXN0cnVjdCBtdGRfb29iX29wcyBvcHM7Cj4gIAl1aW50OF90 IGJ1ZlsyXSA9IHsgMCwgMCB9Owo+IC0JaW50IHJldCA9IDAsIHJlcywgaSA9IDA7Cj4gKwlpbnQg cmV0ID0gMCwgcmVzLCBwYWdlX29mZnNldDsKPiAgCj4gIAltZW1zZXQoJm9wcywgMCwgc2l6ZW9m KG9wcykpOwo+ICAJb3BzLm9vYmJ1ZiA9IGJ1ZjsKPiBAQCAtNTQxLDE4ICs1NjMsMTggQEAgc3Rh dGljIGludCBuYW5kX2RlZmF1bHRfYmxvY2tfbWFya2JhZChzdHJ1Y3QgbmFuZF9jaGlwICpjaGlw LCBsb2ZmX3Qgb2ZzKQo+ICAJfQo+ICAJb3BzLm1vZGUgPSBNVERfT1BTX1BMQUNFX09PQjsKPiAg Cj4gLQkvKiBXcml0ZSB0byBmaXJzdC9sYXN0IHBhZ2UocykgaWYgbmVjZXNzYXJ5ICovCj4gLQlp ZiAoY2hpcC0+b3B0aW9ucyAmIE5BTkRfQkJNX0xBU1RQQUdFKQo+IC0JCW9mcyArPSBtdGQtPmVy YXNlc2l6ZSAtIG10ZC0+d3JpdGVzaXplOwo+IC0JZG8gewo+IC0JCXJlcyA9IG5hbmRfZG9fd3Jp dGVfb29iKGNoaXAsIG9mcywgJm9wcyk7Cj4gKwlwYWdlX29mZnNldCA9IG5hbmRfYmJtX2dldF9u ZXh0X3BhZ2UoY2hpcCwgLTEpOwo+ICsKPiArCXdoaWxlIChwYWdlX29mZnNldCAhPSAtMSkgewo+ ICsJCXJlcyA9IG5hbmRfZG9fd3JpdGVfb29iKGNoaXAsCj4gKwkJCQkJb2ZzICsgcGFnZV9vZmZz ZXQgKiBtdGQtPndyaXRlc2l6ZSwKPiArCQkJCQkmb3BzKTsKPiArCj4gIAkJaWYgKCFyZXQpCj4g IAkJCXJldCA9IHJlczsKPiAgCj4gLQkJaSsrOwo+IC0JCW9mcyArPSBtdGQtPndyaXRlc2l6ZTsK PiAtCX0gd2hpbGUgKChjaGlwLT5vcHRpb25zICYgTkFORF9CQk1fRklSU1RQQUdFKSAmJgo+IC0J CSAoY2hpcC0+b3B0aW9ucyAmIE5BTkRfQkJNX1NFQ09ORFBBR0UpICYmIGkgPCAyKTsKPiArCQlw YWdlX29mZnNldCA9IG5hbmRfYmJtX2dldF9uZXh0X3BhZ2UoY2hpcCwgcGFnZV9vZmZzZXQpOwo+ ICsJfQo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQv bmFuZC9yYXcvbmFuZF9iYnQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRfYmJ0LmMKPiBp bmRleCA3NDYzYWZkZGM3YWMuLjA5NjAzYzUwMjkzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL210 ZC9uYW5kL3Jhdy9uYW5kX2JidC5jCj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZF9i YnQuYwo+IEBAIC00MTUsMTEgKzQxNSwxMiBAQCBzdGF0aWMgdm9pZCByZWFkX2Fic19iYnRzKHN0 cnVjdCBuYW5kX2NoaXAgKnRoaXMsIHVpbnQ4X3QgKmJ1ZiwKPiAgCj4gIC8qIFNjYW4gYSBnaXZl biBibG9jayBwYXJ0aWFsbHkgKi8KPiAgc3RhdGljIGludCBzY2FuX2Jsb2NrX2Zhc3Qoc3RydWN0 IG5hbmRfY2hpcCAqdGhpcywgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICpiZCwKPiAtCQkJICAgbG9m Zl90IG9mZnMsIHVpbnQ4X3QgKmJ1ZiwgaW50IG51bXBhZ2VzKQo+ICsJCQkgICBsb2ZmX3Qgb2Zm cywgdWludDhfdCAqYnVmKQo+ICB7Cj4gIAlzdHJ1Y3QgbXRkX2luZm8gKm10ZCA9IG5hbmRfdG9f bXRkKHRoaXMpOwo+ICsKPiAgCXN0cnVjdCBtdGRfb29iX29wcyBvcHM7Cj4gLQlpbnQgaiwgcmV0 Owo+ICsJaW50IHJldCwgcGFnZV9vZmZzZXQ7Cj4gIAo+ICAJb3BzLm9vYmxlbiA9IG10ZC0+b29i c2l6ZTsKPiAgCW9wcy5vb2JidWYgPSBidWY7Cj4gQEAgLTQyNywxMiArNDI4LDE1IEBAIHN0YXRp YyBpbnQgc2Nhbl9ibG9ja19mYXN0KHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIHN0cnVjdCBuYW5k X2JidF9kZXNjciAqYmQsCj4gIAlvcHMuZGF0YnVmID0gTlVMTDsKPiAgCW9wcy5tb2RlID0gTVRE X09QU19QTEFDRV9PT0I7Cj4gIAo+IC0JZm9yIChqID0gMDsgaiA8IG51bXBhZ2VzOyBqKyspIHsK PiArCXBhZ2Vfb2Zmc2V0ID0gbmFuZF9iYm1fZ2V0X25leHRfcGFnZSh0aGlzLCAtMSk7Cj4gKwo+ ICsJd2hpbGUgKHBhZ2Vfb2Zmc2V0ICE9IC0xKSB7Cj4gIAkJLyoKPiAgCQkgKiBSZWFkIHRoZSBm dWxsIG9vYiB1bnRpbCByZWFkX29vYiBpcyBmaXhlZCB0byBoYW5kbGUgc2luZ2xlCj4gIAkJICog Ynl0ZSByZWFkcyBmb3IgMTYgYml0IGJ1c3dpZHRoLgo+ICAJCSAqLwo+IC0JCXJldCA9IG10ZF9y ZWFkX29vYihtdGQsIG9mZnMsICZvcHMpOwo+ICsJCXJldCA9IG10ZF9yZWFkX29vYihtdGQsIG9m ZnMgKyBwYWdlX29mZnNldCAqIG10ZC0+d3JpdGVzaXplLAoKQ2FuIHlvdSBhZGQgJygnICYgJykn IHBsZWFzZT8KCj4gKwkJCQkgICAmb3BzKTsKPiAgCQkvKiBJZ25vcmUgRUNDIGVycm9ycyB3aGVu IGNoZWNraW5nIGZvciBCQk0gKi8KPiAgCQlpZiAocmV0ICYmICFtdGRfaXNfYml0ZmxpcF9vcl9l Y2NlcnIocmV0KSkKPiAgCQkJcmV0dXJuIHJldDsKPiBAQCAtNDQwLDggKzQ0NCw5IEBAIHN0YXRp YyBpbnQgc2Nhbl9ibG9ja19mYXN0KHN0cnVjdCBuYW5kX2NoaXAgKnRoaXMsIHN0cnVjdCBuYW5k X2JidF9kZXNjciAqYmQsCj4gIAkJaWYgKGNoZWNrX3Nob3J0X3BhdHRlcm4oYnVmLCBiZCkpCj4g IAkJCXJldHVybiAxOwo+ICAKPiAtCQlvZmZzICs9IG10ZC0+d3JpdGVzaXplOwo+ICsJCXBhZ2Vf b2Zmc2V0ID0gbmFuZF9iYm1fZ2V0X25leHRfcGFnZSh0aGlzLCBwYWdlX29mZnNldCk7Cj4gIAl9 Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTQ2MCwxOCArNDY1LDExIEBAIHN0YXRp YyBpbnQgY3JlYXRlX2JidChzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzLCB1aW50OF90ICpidWYsCj4g IAkJICAgICAgc3RydWN0IG5hbmRfYmJ0X2Rlc2NyICpiZCwgaW50IGNoaXApCj4gIHsKPiAgCXN0 cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90b19tdGQodGhpcyk7Cj4gLQlpbnQgaSwgbnVtYmxv Y2tzLCBudW1wYWdlczsKPiAtCWludCBzdGFydGJsb2NrOwo+ICsJaW50IGksIG51bWJsb2Nrcywg c3RhcnRibG9jazsKPiAgCWxvZmZfdCBmcm9tOwo+ICAKPiAgCXByX2luZm8oIlNjYW5uaW5nIGRl dmljZSBmb3IgYmFkIGJsb2Nrc1xuIik7Cj4gIAo+IC0JaWYgKCh0aGlzLT5vcHRpb25zICYgTkFO RF9CQk1fRklSU1RQQUdFKSAmJgo+IC0JICAgICh0aGlzLT5vcHRpb25zICYgTkFORF9CQk1fU0VD T05EUEFHRSkpCj4gLQkJbnVtcGFnZXMgPSAyOwo+IC0JZWxzZQo+IC0JCW51bXBhZ2VzID0gMTsK PiAtCj4gIAlpZiAoY2hpcCA9PSAtMSkgewo+ICAJCW51bWJsb2NrcyA9IG10ZC0+c2l6ZSA+PiB0 aGlzLT5iYnRfZXJhc2Vfc2hpZnQ7Cj4gIAkJc3RhcnRibG9jayA9IDA7Cj4gQEAgLTQ4OCwxNSAr NDg2LDEyIEBAIHN0YXRpYyBpbnQgY3JlYXRlX2JidChzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzLCB1 aW50OF90ICpidWYsCj4gIAkJZnJvbSA9IChsb2ZmX3Qpc3RhcnRibG9jayA8PCB0aGlzLT5iYnRf ZXJhc2Vfc2hpZnQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKHRoaXMtPm9wdGlvbnMgJiBOQU5EX0JCTV9M QVNUUEFHRSkKPiAtCQlmcm9tICs9IG10ZC0+ZXJhc2VzaXplIC0gKG10ZC0+d3JpdGVzaXplICog bnVtcGFnZXMpOwo+IC0KPiAgCWZvciAoaSA9IHN0YXJ0YmxvY2s7IGkgPCBudW1ibG9ja3M7IGkr Kykgewo+ICAJCWludCByZXQ7Cj4gIAo+ICAJCUJVR19PTihiZC0+b3B0aW9ucyAmIE5BTkRfQkJU X05PX09PQik7Cj4gIAo+IC0JCXJldCA9IHNjYW5fYmxvY2tfZmFzdCh0aGlzLCBiZCwgZnJvbSwg YnVmLCBudW1wYWdlcyk7Cj4gKwkJcmV0ID0gc2Nhbl9ibG9ja19mYXN0KHRoaXMsIGJkLCBmcm9t LCBidWYpOwo+ICAJCWlmIChyZXQgPCAwKQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAKCgoKClRoYW5r cywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K