From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from portail2.utbm.fr ([193.48.246.11] helo=portail1.utbm.fr) by canuck.infradead.org with esmtps (Exim 4.54 #1 (Red Hat Linux)) id 1EUfmE-0000dL-9K for linux-mtd@lists.infradead.org; Wed, 26 Oct 2005 03:32:56 -0400 Received: from portail2.utbm.fr (localhost.localdomain [127.0.0.1]) by portail1.utbm.fr (8.12.8/jtpda-5.4) with ESMTP id j9Q7WjGq023643 for ; Wed, 26 Oct 2005 09:32:45 +0200 Received: from vers-webmail.utbm.fr (vers-webmail.utbm.fr [192.168.1.28]) by portail2.utbm.fr (8.12.8/8.12.8) with ESMTP id j9Q7WjGq023637 for ; Wed, 26 Oct 2005 09:32:45 +0200 Message-ID: <1130311964.435f311cf30e9@webmail2.utbm.fr> Date: Wed, 26 Oct 2005 09:32:44 +0200 From: "Pierre.Ricadat@UTBM.fr" To: linux-mtd@lists.infradead.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ113031196418116ef3dc75ae6bf93acbb3c26c7fed" Subject: [PATCH] separate routine to check jffs2_flash_read List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , This message is in MIME format. ---MOQ113031196418116ef3dc75ae6bf93acbb3c26c7fed Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Hi all' here i attach a small patch for that 'todo' in nodelist.c: /* TODO: this is very frequent pattern, make it a separate * routine */ err = jffs2_flash_read(c, ofs, len, &retlen, buffer); ... about the checking of jffs2_flash_read(). I made a new function : jffs2_check_flash_read to - check that jffs2_flash_read returns success - check that it read all and in a case of failure, print error, free the buffer and return error code. -- Pierre Ricadat ---MOQ113031196418116ef3dc75ae6bf93acbb3c26c7fed Content-Type: text/plain; name="jffs2_check_flash_read.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jffs2_check_flash_read.patch" ZGlmZiAtdSAuL210ZC9mcy9qZmZzMi9kZWJ1Zy5jIC4vbXRkX3BpZXJyZS9mcy9qZmZzMi9kZWJ1 Zy5jCi0tLSAuL210ZC9mcy9qZmZzMi9kZWJ1Zy5jICAgICAgMjAwNS0wOS0yMSAyMjoyODozNS4w MDAwMDAwMDAgKzA5MDAKKysrIC4vbXRkX3BpZXJyZS9mcy9qZmZzMi9kZWJ1Zy5jICAgICAgIDIw MDUtMTAtMjQgMTc6MDM6MjUuMDAwMDAwMDAwICswOTAwCkBAIC0xMzEsMTIgKzEzMSw4IEBACiAg ICAgICAgICAgICAgICByZXR1cm47CgogICAgICAgIHJldCA9IGpmZnMyX2ZsYXNoX3JlYWQoYywg b2ZzLCBsZW4sICZyZXRsZW4sIGJ1Zik7Ci0gICAgICAgaWYgKHJldCB8fCAocmV0bGVuICE9IGxl bikpIHsKLSAgICAgICAgICAgICAgIEpGRlMyX1dBUk5JTkcoInJlYWQgJWQgYnl0ZXMgZmFpbGVk IG9yIHNob3J0LiByZXQgJWQsIHJldGxlbiAlemQuXG4iLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxlbiwgcmV0LCByZXRsZW4pOwotICAgICAgICAgICAgICAga2ZyZWUoYnVmKTsK KyAgICAgICBpZiAoIWpmZnMyX2NoZWNrX2ZsYXNoX3JlYWQocmV0LCBvZnMsIGxlbiwgcmV0bGVu LCAmYnVmKSkKICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICB9CgogICAgICAgIHJldCA9 IDA7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQpAQCAtNjIwLDExICs2MTYsOCBA QAogICAgICAgIHByaW50ayhKRkZTMl9EQkdfTVNHX1BSRUZJWCAiIGR1bXAgbm9kZSBhdCBvZmZz ZXQgJSMwOHguXG4iLCBvZnMpOwoKICAgICAgICByZXQgPSBqZmZzMl9mbGFzaF9yZWFkKGMsIG9m cywgbGVuLCAmcmV0bGVuLCAodW5zaWduZWQgY2hhciAqKSZub2RlKTsKLSAgICAgICBpZiAocmV0 IHx8IChyZXRsZW4gIT0gbGVuKSkgewotICAgICAgICAgICAgICAgSkZGUzJfRVJST1IoInJlYWQg JWQgYnl0ZXMgZmFpbGVkIG9yIHNob3J0LiByZXQgJWQsIHJldGxlbiAlemQuXG4iLAotICAgICAg ICAgICAgICAgICAgICAgICBsZW4sIHJldCwgcmV0bGVuKTsKKyAgICAgICBpZiAoIWpmZnMyX2No ZWNrX2ZsYXNoX3JlYWQocmV0LCBvZnMsIGxlbiwgcmV0bGVuLCAodW5zaWduZWQgY2hhciAqKSZu b2RlKSkKICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICB9CgogICAgICAgIHByaW50ayhK RkZTMl9EQkcgIm1hZ2ljOlx0JSMwNHhcbiIsIGplMTZfdG9fY3B1KG5vZGUudS5tYWdpYykpOwog ICAgICAgIHByaW50ayhKRkZTMl9EQkcgIm5vZGV0eXBlOlx0JSMwNHhcbiIsIGplMTZfdG9fY3B1 KG5vZGUudS5ub2RldHlwZSkpOwoKZGlmZiAtdSAuL210ZC9mcy9qZmZzMi9lcmFzZS5jIC4vbXRk X3BpZXJyZS9mcy9qZmZzMi9lcmFzZS5jCi0tLSAuL210ZC9mcy9qZmZzMi9lcmFzZS5jICAgICAg MjAwNS0wOS0yMCAyMzo1MzoxNS4wMDAwMDAwMDAgKzA5MDAKKysrIC4vbXRkX3BpZXJyZS9mcy9q ZmZzMi9lcmFzZS5jICAgICAgIDIwMDUtMTAtMjQgMTc6MTI6NTcuMDAwMDAwMDAwICswOTAwCkBA IC0zMjMsMTQgKzMyMyw4IEBACiAgICAgICAgICAgICAgICAqYmFkX29mZnNldCA9IG9mczsKCiAg ICAgICAgICAgICAgICByZXQgPSBqZmZzMl9mbGFzaF9yZWFkKGMsIG9mcywgcmVhZGxlbiwgJnJl dGxlbiwgZWJ1Zik7Ci0gICAgICAgICAgICAgICBpZiAocmV0KSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgIlJlYWQgb2YgbmV3bHktZXJhc2VkIGJsb2NrIGF0 IDB4JTA4eCBmYWlsZWQ6ICVkLiBQdXR0aW5nIG9uIGJhZF9saXN0XG4iLCBvZnMsIHJldCk7Ci0g ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgIGlmIChyZXRsZW4gIT0gcmVhZGxlbikgewotICAgICAgICAgICAgICAgICAgICAg ICBwcmludGsoS0VSTl9XQVJOSU5HICJTaG9ydCByZWFkIGZyb20gbmV3bHktZXJhc2VkIGJsb2Nr IGF0IDB4JTA4eC4gV2FudGVkICVkLCBnb3QgJXpkXG4iLCBvZnMsIHJlYWRsZW4sIHJldGxlbik7 Ci0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgIGlmICghamZmczJfY2hlY2tfZmxhc2hfcmVhZChyZXQsIG9mcywgcmVhZGxl biwgcmV0bGVuLCAodm9pZCAqKSZlYnVmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHJlYWRsZW47IGkgKz0gc2l6ZW9mKHVu c2lnbmVkIGxvbmcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0J3MgT0suIFdlIGtu b3cgaXQncyBwcm9wZXJseSBhbGlnbmVkICovCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgKmRhdHVtID0gZWJ1ZiArIGk7CgpkaWZmIC11IC4vbXRkL2ZzL2pmZnMyL2djLmMg Li9tdGRfcGllcnJlL2ZzL2pmZnMyL2djLmMKLS0tIC4vbXRkL2ZzL2pmZnMyL2djLmMgMjAwNS0w OS0wNyAxNzozNDo1NC4wMDAwMDAwMDAgKzA5MDAKKysrIC4vbXRkX3BpZXJyZS9mcy9qZmZzMi9n Yy5jICAyMDA1LTEwLTI1IDE0OjQyOjA0LjAwMDAwMDAwMCArMDkwMApAQCAtNTMxLDEwICs1MzEs OCBAQAogICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CgogICAgICAgIHJldCA9IGpmZnMy X2ZsYXNoX3JlYWQoYywgcmVmX29mZnNldChyYXcpLCByYXdsZW4sICZyZXRsZW4sIChjaGFyICop bm9kZSk7Ci0gICAgICAgaWYgKCFyZXQgJiYgcmV0bGVuICE9IHJhd2xlbikKLSAgICAgICAgICAg ICAgIHJldCA9IC1FSU87Ci0gICAgICAgaWYgKHJldCkKLSAgICAgICAgICAgICAgIGdvdG8gb3V0 X25vZGU7CisgICAgICAgaWYgKCFqZmZzMl9jaGVja19mbGFzaF9yZWFkKHJldCwgcmVmX29mZnNl dChyYXcpLCByYXdsZW4sIHJldGxlbiwgKGNoYXIgKikmbm9kZSkpCisgICAgICAgICAgICAgICBy ZXR1cm4gcmV0OwoKICAgICAgICBjcmMgPSBjcmMzMigwLCBub2RlLCBzaXplb2Yoc3RydWN0IGpm ZnMyX3Vua25vd25fbm9kZSktNCk7CiAgICAgICAgaWYgKGplMzJfdG9fY3B1KG5vZGUtPnUuaGRy X2NyYykgIT0gY3JjKSB7CkBAIC04NTMsMTYgKzg1MSw5IEBACiAgICAgICAgICAgICAgICAgICAg ICAgIC8qIFRoaXMgaXMgYW4gb2Jzb2xldGUgbm9kZSBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgZGly ZWN0b3J5LCBhbmQgaXQncyBvZiB0aGUgcmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVuZ3RoLiBXZSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vay4uLiovCiAgICAgICAgICAgICAg ICAgICAgICAgIHJldCA9IGpmZnMyX2ZsYXNoX3JlYWQoYywgcmVmX29mZnNldChyYXcpLCByYXds ZW4sICZyZXRsZW4sIChjaGFyICopcmQpOwotICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0 KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAi amZmczJfZ19jX2RlbGV0aW9uX2RpcmVudCgpOiBSZWFkIGVycm9yICglZCkgcmVhZGluZyBvYnNv bGV0ZSBub2RlIGF0ICUwOHhcbiIsIHJldCwgcmVmX29mZnNldChyYXcpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCFqZmZzMl9jaGVja19mbGFzaF9yZWFkKHJldCwgcmVmX29mZnNldChy YXcpLCByYXdsZW4sIHJldGxlbiwgKGNoYXIgKilyZCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogSWYgd2UgY2FuJ3QgcmVhZCBpdCwgd2UgZG9uJ3QgbmVlZCB0byBjb250aW51 ZSB0byBvYnNvbGV0ZSBpdC4gQ29udGludWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg ICAgICAgICBpZiAocmV0bGVuICE9IHJhd2xlbikgewotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgImpmZnMyX2dfY19kZWxldGlvbl9kaXJlbnQoKTog U2hvcnQgcmVhZCAoJXpkIG5vdCAldSkgcmVhZGluZyBoZWFkZXIgZnJvbSBvYnNvbGV0ZSBub2Rl IGF0ICUwOHhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGxl biwgcmF3bGVuLCByZWZfb2Zmc2V0KHJhdykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgICAgICBpZiAoamUxNl90b19jcHUocmQtPm5vZGV0eXBlKSAhPSBKRkZTMl9OT0RFVFlQRV9E SVJFTlQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CgpkaWZmIC11 IC4vbXRkL2ZzL2pmZnMyL25vZGVsaXN0LmMgLi9tdGRfcGllcnJlL2ZzL2pmZnMyL25vZGVsaXN0 LmMKLS0tIC4vbXRkL2ZzL2pmZnMyL25vZGVsaXN0LmMgICAyMDA1LTA5LTIxIDIyOjI4OjM1LjAw MDAwMDAwMCArMDkwMAorKysgLi9tdGRfcGllcnJlL2ZzL2pmZnMyL25vZGVsaXN0LmMgICAgMjAw NS0xMC0yNCAxNzoxNzoyNC4wMDAwMDAwMDAgKzA5MDAKQEAgLTQ1MSwxOSArNDUxLDkgQEAKICAg ICAgICAgICAgICAgIGlmICh1bmxpa2VseSghYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9NRU07CgotICAgICAgICAgICAgICAgLyogVE9ETzogdGhpcyBpcyB2ZXJ5 IGZyZXF1ZW50IHBhdHRlcm4sIG1ha2UgaXQgYSBzZXBhcmF0ZQotICAgICAgICAgICAgICAgICog cm91dGluZSAqLwogICAgICAgICAgICAgICAgZXJyID0gamZmczJfZmxhc2hfcmVhZChjLCBvZnMs IGxlbiwgJnJldGxlbiwgYnVmZmVyKTsKLSAgICAgICAgICAgICAgIGlmIChlcnIpIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgSkZGUzJfRVJST1IoImNhbiBub3QgcmVhZCAlZCBieXRlcyBmcm9t IDB4JTA4eCwgZXJyb3IgY29kZTogJWQuXG4iLCBsZW4sIG9mcywgZXJyKTsKLSAgICAgICAgICAg ICAgICAgICAgICAgZ290byBmcmVlX291dDsKLSAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgICAgaWYgKHJldGxlbiAhPSBsZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgSkZGUzJf RVJST1IoInNob3J0IHJlYWQgYXQgJSMwOHg6ICVkIGluc3RlYWQgb2YgJWQuXG4iLCBvZnMsIHJl dGxlbiwgbGVuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVJTzsKLSAgICAgICAg ICAgICAgICAgICAgICAgZ290byBmcmVlX291dDsKLSAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgIGlmICghamZmczJfY2hlY2tfZmxhc2hfcmVhZChlcnIsIG9mcywgbGVuLCByZXRsZW4s ICh1bnNpZ25lZCBjaGFyKikmYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGVycjsKICAgICAgICB9CgogICAgICAgIC8qIENvbnRpbnVlIGNhbGN1bGF0aW5nIENSQyAqLwpA QCAtNDk4LDE0ICs0ODgsNiBAQAoKICAgICAgICByZXR1cm4gMDsKCi1mcmVlX291dDoKLSAgICAg ICBpZighcG9pbnRlZCkKLSAgICAgICAgICAgICAgIGtmcmVlKGJ1ZmZlcik7Ci0jaWZuZGVmIF9f RUNPUwotICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIGMtPm10ZC0+dW5wb2ludChjLT5tdGQs IGJ1ZmZlciwgb2ZzLCBsZW4pOwotI2VuZGlmCi0gICAgICAgcmV0dXJuIGVycjsKIH0KCmRpZmYg LXUgLi9tdGQvZnMvamZmczIvb3MtbGludXguaCAuL210ZF9waWVycmUvZnMvamZmczIvb3MtbGlu dXguaAotLS0gLi9tdGQvZnMvamZmczIvb3MtbGludXguaCAgIDIwMDUtMDktMzAgMjI6NTk6MTMu MDAwMDAwMDAwICswOTAwCisrKyAuL210ZF9waWVycmUvZnMvamZmczIvb3MtbGludXguaCAgICAy MDA1LTEwLTI0IDE5OjAzOjM1LjAwMDAwMDAwMCArMDkwMApAQCAtMTIyLDYgKzEyMiw3IEBACiBp bnQgamZmczJfZmxhc2hfd3JpdGV2KHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBjb25zdCBzdHJ1 Y3Qga3ZlYyAqdmVjcywgdW5zaWduZWQgbG9uZyBjb3VudCwgbG9mZl90IHRvLCBzaXplX3QgKnJl dGxlbiwgdWludDMyX3QgaW5vKTsKIGludCBqZmZzMl9mbGFzaF93cml0ZShzdHJ1Y3QgamZmczJf c2JfaW5mbyAqYywgbG9mZl90IG9mcywgc2l6ZV90IGxlbiwgc2l6ZV90ICpyZXRsZW4sIGNvbnN0 IHVfY2hhciAqYnVmKTsKIGludCBqZmZzMl9mbGFzaF9yZWFkKHN0cnVjdCBqZmZzMl9zYl9pbmZv ICpjLCBsb2ZmX3Qgb2ZzLCBzaXplX3QgbGVuLCBzaXplX3QgKnJldGxlbiwgdV9jaGFyICpidWYp OworaW50IGpmZnMyX2NoZWNrX2ZsYXNoX3JlYWQoaW50IGVyciwgdWludDMyX3Qgb2ZzLCBpbnQg bGVuLCBzaXplX3QgcmV0bGVuLCB1X2NoYXIgKmJ1Zik7CiBpbnQgamZmczJfY2hlY2tfb29iX2Vt cHR5KHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamVi LGludCBtb2RlKTsKIGludCBqZmZzMl9jaGVja19uYW5kX2NsZWFubWFya2VyKHN0cnVjdCBqZmZz Ml9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqamViKTsKIGludCBqZmZzMl93 cml0ZV9uYW5kX2NsZWFubWFya2VyKHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZm czJfZXJhc2VibG9jayAqamViKTsKCmRpZmYgLXUgLi9tdGQvZnMvamZmczIvcmVhZC5jIC4vbXRk X3BpZXJyZS9mcy9qZmZzMi9yZWFkLmMKLS0tIC4vbXRkL2ZzL2pmZnMyL3JlYWQuYyAgICAgICAy MDA1LTA3LTIyIDE5OjMyOjA4LjAwMDAwMDAwMCArMDkwMAorKysgLi9tdGRfcGllcnJlL2ZzL2pm ZnMyL3JlYWQuYyAgICAgICAgMjAwNS0xMC0yNCAxNzoxNDo0NS4wMDAwMDAwMDAgKzA5MDAKQEAg LTExNCwxMCArMTE0LDggQEAKICAgICAgICByZXQgPSBqZmZzMl9mbGFzaF9yZWFkKGMsIChyZWZf b2Zmc2V0KGZkLT5yYXcpKSArIHNpemVvZigqcmkpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgamUzMl90b19jcHUocmktPmNzaXplKSwgJnJlYWRsZW4sIHJlYWRidWYpOwoKLSAgICAg ICBpZiAoIXJldCAmJiByZWFkbGVuICE9IGplMzJfdG9fY3B1KHJpLT5jc2l6ZSkpCi0gICAgICAg ICAgICAgICByZXQgPSAtRUlPOwotICAgICAgIGlmIChyZXQpCi0gICAgICAgICAgICAgICBnb3Rv IG91dF9kZWNvbXByYnVmOworICAgICAgIGlmICghamZmczJfY2hlY2tfZmxhc2hfcmVhZChyZXQs IChyZWZfb2Zmc2V0KGZkLT5yYXcpKSArIHNpemVvZigqcmkpLCBqZTMyX3RvX2NwdShyaS0+Y3Np emUpLCByZWFkbGVuLCAodW5zaWduZWQgY2hhciopJnJlYWRidWYpKQorICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKCiAgICAgICAgY3JjID0gY3JjMzIoMCwgcmVhZGJ1ZiwgamUzMl90b19jcHUo cmktPmNzaXplKSk7CiAgICAgICAgaWYgKGNyYyAhPSBqZTMyX3RvX2NwdShyaS0+ZGF0YV9jcmMp KSB7CgpkaWZmIC11IC4vbXRkL2ZzL2pmZnMyL3JlYWRpbm9kZS5jIC4vbXRkX3BpZXJyZS9mcy9q ZmZzMi9yZWFkaW5vZGUuYwotLS0gLi9tdGQvZnMvamZmczIvcmVhZGlub2RlLmMgIDIwMDUtMDkt MjAgMjM6Mjc6MzQuMDAwMDAwMDAwICswOTAwCisrKyAuL210ZF9waWVycmUvZnMvamZmczIvcmVh ZGlub2RlLmMgICAyMDA1LTEwLTI0IDE3OjE1OjExLjAwMDAwMDAwMCArMDkwMApAQCAtNDI3LDE3 ICs0MjcsOCBAQAogICAgICAgIGRiZ19yZWFkaW5vZGUoInJlYWQgbW9yZSAlZCBieXRlc1xuIiwg bGVuKTsKCiAgICAgICAgZXJyID0gamZmczJfZmxhc2hfcmVhZChjLCBvZmZzLCBsZW4sICZyZXRs ZW4sIGJ1ZnN0YXJ0KTsKLSAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICBKRkZTMl9F UlJPUigiY2FuIG5vdCByZWFkICVkIGJ5dGVzIGZyb20gMHglMDh4LCAiCi0gICAgICAgICAgICAg ICAgICAgICAgICJlcnJvciBjb2RlOiAlZC5cbiIsIGxlbiwgb2ZmcywgZXJyKTsKKyAgICAgICBp ZiAoIWpmZnMyX2NoZWNrX2ZsYXNoX3JlYWQoZXJyLCBvZmZzLCBsZW4sIHJldGxlbiwgKHVuc2ln bmVkIGNoYXIqKSZidWZzdGFydCkpCiAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAg IH0KLQotICAgICAgIGlmIChyZXRsZW4gPCBsZW4pIHsKLSAgICAgICAgICAgICAgIEpGRlMyX0VS Uk9SKCJzaG9ydCByZWFkIGF0ICUjMDh4OiAlZCBpbnN0ZWFkIG9mICVkLlxuIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzLCByZXRsZW4sIGxlbik7Ci0gICAgICAgICAgICAg ICByZXR1cm4gLUVJTzsKLSAgICAgICB9CgogICAgICAgICpyZGxlbiA9IHJpZ2h0X2xlbjsKCmRp ZmYgLXUgLi9tdGQvZnMvamZmczIvc2Nhbi5jIC4vbXRkX3BpZXJyZS9mcy9qZmZzMi9zY2FuLmMK LS0tIC4vbXRkL2ZzL2pmZnMyL3NjYW4uYyAgICAgICAyMDA1LTA5LTMwIDIyOjU5OjEzLjAwMDAw MDAwMCArMDkwMAorKysgLi9tdGRfcGllcnJlL2ZzL2pmZnMyL3NjYW4uYyAgICAgICAgMjAwNS0x MC0yNCAxNzoxNTozMC4wMDAwMDAwMDAgKzA5MDAKQEAgLTI3NiwxNCArMjc2LDggQEAKICAgICAg ICBzaXplX3QgcmV0bGVuOwoKICAgICAgICByZXQgPSBqZmZzMl9mbGFzaF9yZWFkKGMsIG9mcywg bGVuLCAmcmV0bGVuLCBidWYpOwotICAgICAgIGlmIChyZXQpIHsKLSAgICAgICAgICAgICAgIEQx KHByaW50ayhLRVJOX1dBUk5JTkcgIm10ZC0+cmVhZCgweCV4IGJ5dGVzIGZyb20gMHgleCkgcmV0 dXJuZWQgJWRcbiIsIGxlbiwgb2ZzLCByZXQpKTsKKyAgICAgICBpZiAoIWpmZnMyX2NoZWNrX2Zs YXNoX3JlYWQocmV0LCBvZnMsIGxlbiwgcmV0bGVuLCAodm9pZCAqKSZidWYpKQogICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKLSAgICAgICB9Ci0gICAgICAgaWYgKHJldGxlbiA8IGxlbikgewot ICAgICAgICAgICAgICAgRDEocHJpbnRrKEtFUk5fV0FSTklORyAiUmVhZCBhdCAweCV4IGdhdmUg b25seSAweCV6eCBieXRlc1xuIiwgb2ZzLCByZXRsZW4pKTsKLSAgICAgICAgICAgICAgIHJldHVy biAtRUlPOwotICAgICAgIH0KICAgICAgICBEMihwcmludGsoS0VSTl9ERUJVRyAiUmVhZCAweCV4 IGJ5dGVzIGZyb20gMHglMDh4IGludG8gYnVmXG4iLCBsZW4sIG9mcykpOwogICAgICAgIEQyKHBy aW50ayhLRVJOX0RFQlVHICIwMDA6ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMngg JTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnggJTAyeCAlMDJ4ICUwMnhcbiIsCiAgICAgICAg ICAgICAgICAgIGJ1ZlswXSwgYnVmWzFdLCBidWZbMl0sIGJ1ZlszXSwgYnVmWzRdLCBidWZbNV0s IGJ1Zls2XSwgYnVmWzddLCBidWZbOF0sIGJ1Zls5XSwgYnVmWzEwXSwgYnVmWzExXSwgYnVmWzEy XSwgYnVmWzEzXSwgYnVmWzE0XSwgYnVmWzE1XSkpOwoKZGlmZiAtdSAuL210ZC9mcy9qZmZzMi93 YnVmLmMgLi9tdGRfcGllcnJlL2ZzL2pmZnMyL3didWYuYwotLS0gLi9tdGQvZnMvamZmczIvd2J1 Zi5jICAgICAgIDIwMDUtMDktMzAgMjI6NTk6MTMuMDAwMDAwMDAwICswOTAwCisrKyAuL210ZF9w aWVycmUvZnMvamZmczIvd2J1Zi5jICAgICAgICAyMDA1LTEwLTI0IDE5OjAzOjAyLjAwMDAwMDAw MCArMDkwMApAQCAtOTIzLDYgKzkyMywyOCBAQAogfQoKIC8qCisgKiAgICAgQ2hlY2sgaWYgamZm czJfZmxhc2hfcmVhZCB3YXMgc3VjY2Vzc2Z1bAorICovCitpbnQgamZmczJfY2hlY2tfZmxhc2hf cmVhZChpbnQgZXJyLCB1aW50MzJfdCBvZnMsIGludCBsZW4sIHNpemVfdCByZXRsZW4sIHVfY2hh ciAqYnVmKQoreworICAgICAgIGludCByZXQgPSAxOworCisgICAgICAgLyogZGlkIHRoZSByZWFk IHN1Y2NlZWQ/ICovCisgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICAgSkZGUzJfRVJS T1IoImNhbiBub3QgcmVhZCAlZCBieXRlcyBmcm9tIDB4JTA4eCwgZXJyb3IgY29kZTogJWQuXG4i LCBsZW4sIG9mcywgZXJyKTsKKyAgICAgICAgICAgICAgIGtmcmVlKGJ1Zik7CisgICAgICAgICAg ICAgICByZXQgPSAwOworICAgICAgIH0KKyAgICAgICAvKiBkaWQgd2UgcmVhZCBhbGw/ICovCisg ICAgICAgaWYgKHJldGxlbiAhPSBsZW4pIHsKKyAgICAgICAgICAgICAgIEpGRlMyX0VSUk9SKCJz aG9ydCByZWFkIGF0IDB4JTA4eDogJWQgaW5zdGVhZCBvZiAlZC5cbiIsIG9mcywgcmV0bGVuLCBs ZW4pOworICAgICAgICAgICAgICAga2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgIHJldCA9IDA7 CisgICAgICAgfQorICAgICAgIHJldHVybiByZXQ7Cit9CisKKy8qCiAgKiAgICAgQ2hlY2ssIGlm IHRoZSBvdXQgb2YgYmFuZCBhcmVhIGlzIGVtcHR5CiAgKi8KIGludCBqZmZzMl9jaGVja19vb2Jf ZW1wdHkoIHN0cnVjdCBqZmZzMl9zYl9pbmZvICpjLCBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAq amViLCBpbnQgbW9kZSkKQEAgLTk0NiwxNyArOTY4LDggQEAKICAgICAgICAgKiB0byB0YWtlIGNh cmUgb2YgdGhlIGNsZWFubWFya2VyIGluIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBibG9jawogICAg ICAgICovCiAgICAgICAgcmV0ID0gamZmczJfZmxhc2hfcmVhZF9vb2IoYywgamViLT5vZmZzZXQs IGxlbiAsICZyZXRsZW4sIGJ1Zik7Ci0gICAgICAgaWYgKHJldCkgewotICAgICAgICAgICAgICAg RDEocHJpbnRrKEtFUk5fV0FSTklORyAiamZmczJfY2hlY2tfb29iX2VtcHR5KCk6IFJlYWQgT09C IGZhaWxlZCAlZCBmb3IgYmxvY2sgYXQgJTA4eFxuIiwgcmV0LCBqZWItPm9mZnNldCkpOwotICAg ICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgfQotCi0gICAgICAgaWYgKHJldGxlbiA8IGxl bikgewotICAgICAgICAgICAgICAgRDEocHJpbnRrKEtFUk5fV0FSTklORyAiamZmczJfY2hlY2tf b29iX2VtcHR5KCk6IFJlYWQgT09CIHJldHVybiBzaG9ydCByZWFkICIKLSAgICAgICAgICAgICAg ICAgICAgICAgICAiKCV6ZCBieXRlcyBub3QgJWQpIGZvciBibG9jayBhdCAlMDh4XG4iLCByZXRs ZW4sIGxlbiwgamViLT5vZmZzZXQpKTsKLSAgICAgICAgICAgICAgIHJldCA9IC1FSU87Ci0gICAg ICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICB9CisgICAgICAgaWYgKCFqZmZzMl9jaGVja19m bGFzaF9yZWFkKHJldCwgamViLT5vZmZzZXQsIGxlbiwgcmV0bGVuLCAodW5zaWduZWQgY2hhciop JmJ1ZikpCisgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAgICAgICAvKiBTcGVjaWFsIGNo ZWNrIGZvciBmaXJzdCBwYWdlICovCiAgICAgICAgZm9yKGkgPSAwOyBpIDwgb29iX3NpemUgOyBp KyspIHsK ---MOQ113031196418116ef3dc75ae6bf93acbb3c26c7fed--