Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030905AbWKOTKe (ORCPT ); Wed, 15 Nov 2006 14:10:34 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1030907AbWKOTKd (ORCPT ); Wed, 15 Nov 2006 14:10:33 -0500 Received: from bay0-omc1-s23.bay0.hotmail.com ([65.54.246.95]:43818 "EHLO bay0-omc1-s23.bay0.hotmail.com") by vger.kernel.org with ESMTP id S1030910AbWKOTKb (ORCPT ); Wed, 15 Nov 2006 14:10:31 -0500 Message-ID: X-Originating-IP: [80.178.1.111] X-Originating-Email: [yan_952@hotmail.com] From: "Burman Yan" To: linux-kernel@vger.kernel.org Cc: trivial@kernel.org, dwmw2@infradead.org Subject: [PATCH 2.6.19-rc5] mtd: replace kmalloc+memset with kzalloc Date: Wed, 15 Nov 2006 21:10:29 +0200 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_2949_29a5_3c2e" X-OriginalArrivalTime: 15 Nov 2006 19:10:30.0632 (UTC) FILETIME=[B7BC4680:01C708E9] Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 46194 Lines: 773 This is a multi-part message in MIME format. ------=_NextPart_000_2949_29a5_3c2e Content-Type: text/plain; format=flowed Hi. This patch replaced kmalloc + memset with kzalloc in the mtd related sources. Regards Yan Burman _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ ------=_NextPart_000_2949_29a5_3c2e Content-Type: application/octet-stream; name="kzalloc_mtd.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kzalloc_mtd.patch" UmVwbGFjZSBrbWFsbG9jK21lbXNldCB3aXRoIGt6YWxsb2MgCgpTaWduZWQt b2ZmLWJ5OiBZYW4gQnVybWFuIDx5YW5fOTUyQGhvdG1haWwuY29tPgoKZGlm ZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvYXJjaC9wcGMvcGxhdGZv cm1zL2V2NjQzNjAuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvYXJjaC9w cGMvcGxhdGZvcm1zL2V2NjQzNjAuYwotLS0gbGludXgtMi42LjE5LXJjNV9v cmlnL2FyY2gvcHBjL3BsYXRmb3Jtcy9ldjY0MzYwLmMJMjAwNi0xMS0wOSAx MjoxNjoyMi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVf a3phbGxvYy9hcmNoL3BwYy9wbGF0Zm9ybXMvZXY2NDM2MC5jCTIwMDYtMTEt MTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0zNTgsMTMgKzM1OCwx MiBAQCBldjY0MzYwX3NldHVwX210ZCh2b2lkKQogCiAJcHRibF9lbnRyaWVz ID0gMzsKIAotCWlmICgocHRibCA9IGttYWxsb2MocHRibF9lbnRyaWVzICog c2l6ZW9mKHN0cnVjdCBtdGRfcGFydGl0aW9uKSwKKwlpZiAoKHB0YmwgPSBr emFsbG9jKHB0YmxfZW50cmllcyAqIHNpemVvZihzdHJ1Y3QgbXRkX3BhcnRp dGlvbiksCiAJCUdGUF9LRVJORUwpKSA9PSBOVUxMKSB7CiAKIAkJcHJpbnRr KEtFUk5fV0FSTklORyAiQ2FuJ3QgYWxsb2MgTVREIHBhcnRpdGlvbiB0YWJs ZVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KLQltZW1zZXQocHRibCwg MCwgcHRibF9lbnRyaWVzICogc2l6ZW9mKHN0cnVjdCBtdGRfcGFydGl0aW9u KSk7CiAKIAlwdGJsWzBdLm5hbWUgPSAicmVzZXJ2ZWQiOwogCXB0YmxbMF0u b2Zmc2V0ID0gMDsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9tdGQvYWZzLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2Ry aXZlcnMvbXRkL2Fmcy5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9tdGQvYWZzLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAg KzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210 ZC9hZnMuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApA QCAtMjA3LDExICsyMDcsMTAgQEAgc3RhdGljIGludCBwYXJzZV9hZnNfcGFy dGl0aW9ucyhzdHJ1Y3QgbQogCWlmICghc3opCiAJCXJldHVybiByZXQ7CiAK LQlwYXJ0cyA9IGttYWxsb2Moc3osIEdGUF9LRVJORUwpOworCXBhcnRzID0g a3phbGxvYyhzeiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwYXJ0cykKIAkJcmV0 dXJuIC1FTk9NRU07CiAKLQltZW1zZXQocGFydHMsIDAsIHN6KTsKIAlzdHIg PSAoY2hhciAqKShwYXJ0cyArIGlkeCk7CiAKIAkvKgpkaWZmIC1ydWJwIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9jaGlwcy9hbWRfZmxh c2guYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvY2hp cHMvYW1kX2ZsYXNoLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2 ZXJzL210ZC9jaGlwcy9hbWRfZmxhc2guYwkyMDA2LTExLTA5IDEyOjE2OjIx LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9j L2RyaXZlcnMvbXRkL2NoaXBzL2FtZF9mbGFzaC5jCTIwMDYtMTEtMTEgMjI6 NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC02NDMsMTMgKzY0MywxMiBAQCBz dGF0aWMgc3RydWN0IG10ZF9pbmZvICphbWRfZmxhc2hfcHJvYmUoCiAJaW50 IHJlZ19pZHg7CiAJaW50IG9mZnNldDsKIAotCW10ZCA9IChzdHJ1Y3QgbXRk X2luZm8qKWttYWxsb2Moc2l6ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKKwlt dGQgPSBremFsbG9jKHNpemVvZigqbXRkKSwgR0ZQX0tFUk5FTCk7CiAJaWYg KCFtdGQpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwogCQkgICAgICAgIiVz OiBrbWFsbG9jIGZhaWxlZCBmb3IgaW5mbyBzdHJ1Y3R1cmVcbiIsIG1hcC0+ bmFtZSk7CiAJCXJldHVybiBOVUxMOwogCX0KLQltZW1zZXQobXRkLCAwLCBz aXplb2YoKm10ZCkpOwogCW10ZC0+cHJpdiA9IG1hcDsKIAogCW1lbXNldCgm dGVtcCwgMCwgc2l6ZW9mKHRlbXApKTsKZGlmZiAtcnVicCBsaW51eC0yLjYu MTktcmM1X29yaWcvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAx LmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL2NoaXBz L2NmaV9jbWRzZXRfMDAwMS5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMJMjAwNi0xMS0w OSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1y YzVfa3phbGxvYy9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDEu YwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMzM3 LDEyICszMzcsMTEgQEAgc3RydWN0IG10ZF9pbmZvICpjZmlfY21kc2V0XzAw MDEoc3RydWN0IAogCXN0cnVjdCBtdGRfaW5mbyAqbXRkOwogCWludCBpOwog Ci0JbXRkID0ga21hbGxvYyhzaXplb2YoKm10ZCksIEdGUF9LRVJORUwpOwor CW10ZCA9IGt6YWxsb2Moc2l6ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIW10ZCkgewogCQlwcmludGsoS0VSTl9FUlIgIkZhaWxlZCB0byBhbGxv Y2F0ZSBtZW1vcnkgZm9yIE1URCBkZXZpY2VcbiIpOwogCQlyZXR1cm4gTlVM TDsKIAl9Ci0JbWVtc2V0KG10ZCwgMCwgc2l6ZW9mKCptdGQpKTsKIAltdGQt PnByaXYgPSBtYXA7CiAJbXRkLT50eXBlID0gTVREX05PUkZMQVNIOwogCmRp ZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2No aXBzL2NmaV9jbWRzZXRfMDAwMi5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDIuYwotLS0gbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRz ZXRfMDAwMi5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAw CisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvY2hp cHMvY2ZpX2NtZHNldF8wMDAyLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAw MDAwMDAgKzAyMDAKQEAgLTI1NSwxMiArMjU1LDExIEBAIHN0cnVjdCBtdGRf aW5mbyAqY2ZpX2NtZHNldF8wMDAyKHN0cnVjdCAKIAlzdHJ1Y3QgbXRkX2lu Zm8gKm10ZDsKIAlpbnQgaTsKIAotCW10ZCA9IGttYWxsb2Moc2l6ZW9mKCpt dGQpLCBHRlBfS0VSTkVMKTsKKwltdGQgPSBremFsbG9jKHNpemVvZigqbXRk KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtdGQpIHsKIAkJcHJpbnRrKEtFUk5f V0FSTklORyAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgTVREIGRl dmljZVxuIik7CiAJCXJldHVybiBOVUxMOwogCX0KLQltZW1zZXQobXRkLCAw LCBzaXplb2YoKm10ZCkpOwogCW10ZC0+cHJpdiA9IG1hcDsKIAltdGQtPnR5 cGUgPSBNVERfTk9SRkxBU0g7CiAKZGlmZiAtcnVicCBsaW51eC0yLjYuMTkt cmM1X29yaWcvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDIwLmMg bGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL2NoaXBzL2Nm aV9jbWRzZXRfMDAyMC5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDIwLmMJMjAwNi0xMS0wOSAx MjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVf a3phbGxvYy9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMjAuYwky MDA2LTExLTExIDIyOjQ0OjE4LjAwMDAwMDAwMCArMDIwMApAQCAtMTcyLDcg KzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXRkX2luZm8gKmNmaV9zdGFhX3Nl dHVwKHMKIAlpbnQgaSxqOwogCXVuc2lnbmVkIGxvbmcgZGV2c2l6ZSA9ICgx PDxjZmktPmNmaXEtPkRldlNpemUpICogY2ZpLT5pbnRlcmxlYXZlOwogCi0J bXRkID0ga21hbGxvYyhzaXplb2YoKm10ZCksIEdGUF9LRVJORUwpOworCW10 ZCA9IGt6YWxsb2Moc2l6ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKIAkvL3By aW50ayhLRVJOX0RFQlVHICJudW1iZXIgb2YgQ0ZJIGNoaXBzOiAlZFxuIiwg Y2ZpLT5udW1jaGlwcyk7CiAKIAlpZiAoIW10ZCkgewpAQCAtMTgxLDcgKzE4 MSw2IEBAIHN0YXRpYyBzdHJ1Y3QgbXRkX2luZm8gKmNmaV9zdGFhX3NldHVw KHMKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JbWVtc2V0KG10ZCwgMCwgc2l6 ZW9mKCptdGQpKTsKIAltdGQtPnByaXYgPSBtYXA7CiAJbXRkLT50eXBlID0g TVREX05PUkZMQVNIOwogCW10ZC0+c2l6ZSA9IGRldnNpemUgKiBjZmktPm51 bWNoaXBzOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2 ZXJzL210ZC9jaGlwcy9nZW5fcHJvYmUuYyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvY2hpcHMvZ2VuX3Byb2JlLmMKLS0tIGxpbnV4 LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9jaGlwcy9nZW5fcHJvYmUu YwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGlu dXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL2NoaXBzL2dlbl9w cm9iZS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBA IC0xMTMsMTMgKzExMywxMiBAQCBzdGF0aWMgc3RydWN0IGNmaV9wcml2YXRl ICpnZW5wcm9iZV9pZGVuCiAJfQogCiAJbWFwc2l6ZSA9IChtYXhfY2hpcHMg KyBCSVRTX1BFUl9MT05HLTEpIC8gQklUU19QRVJfTE9ORzsKLQljaGlwX21h cCA9IGttYWxsb2MobWFwc2l6ZSwgR0ZQX0tFUk5FTCk7CisJY2hpcF9tYXAg PSBremFsbG9jKG1hcHNpemUsIEdGUF9LRVJORUwpOwogCWlmICghY2hpcF9t YXApIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGttYWxsb2MgZmFp bGVkIGZvciBDRkkgY2hpcCBtYXBcbiIsIG1hcC0+bmFtZSk7CiAJCWtmcmVl KGNmaS5jZmlxKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQotCW1lbXNldCAoY2hp cF9tYXAsIDAsIG1hcHNpemUpOwogCiAJc2V0X2JpdCgwLCBjaGlwX21hcCk7 IC8qIE1hcmsgZmlyc3QgY2hpcCB2YWxpZCAqLwogCmRpZmYgLXJ1YnAgbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2NoaXBzL2plZGVjLmMg bGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL2NoaXBzL2pl ZGVjLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9j aGlwcy9qZWRlYy5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICsw MjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQv Y2hpcHMvamVkZWMuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCAr MDIwMApAQCAtMTE2LDExICsxMTYsMTAgQEAgc3RhdGljIHN0cnVjdCBtdGRf aW5mbyAqamVkZWNfcHJvYmUoc3RydQogICAgY2hhciBQYXJ0WzIwMF07CiAg ICBtZW1zZXQoJnByaXYsMCxzaXplb2YocHJpdikpOwogCi0gICBNVEQgPSBr bWFsbG9jKHNpemVvZihzdHJ1Y3QgbXRkX2luZm8pICsgc2l6ZW9mKHN0cnVj dCBqZWRlY19wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CisgICBNVEQgPSBremFs bG9jKHNpemVvZihzdHJ1Y3QgbXRkX2luZm8pICsgc2l6ZW9mKHN0cnVjdCBq ZWRlY19wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CiAgICBpZiAoIU1URCkKIAkg ICByZXR1cm4gTlVMTDsKIAotICAgbWVtc2V0KE1URCwgMCwgc2l6ZW9mKHN0 cnVjdCBtdGRfaW5mbykgKyBzaXplb2Yoc3RydWN0IGplZGVjX3ByaXZhdGUp KTsKICAgIHByaXYgPSAoc3RydWN0IGplZGVjX3ByaXZhdGUgKikmTVREWzFd OwogCiAgICBteV9iYW5rX3NpemUgPSBtYXAtPnNpemU7CmRpZmYgLXJ1YnAg bGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2NoaXBzL21hcF9h YnNlbnQuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQv Y2hpcHMvbWFwX2Fic2VudC5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9tdGQvY2hpcHMvbWFwX2Fic2VudC5jCTIwMDYtMTEtMDkgMTI6 MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvY2hpcHMvbWFwX2Fic2VudC5jCTIwMDYtMTEt MTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC00NywxMyArNDcsMTEg QEAgc3RhdGljIHN0cnVjdCBtdGRfaW5mbyAqbWFwX2Fic2VudF9wcm9iZQog ewogCXN0cnVjdCBtdGRfaW5mbyAqbXRkOwogCi0JbXRkID0ga21hbGxvYyhz aXplb2YoKm10ZCksIEdGUF9LRVJORUwpOworCW10ZCA9IGt6YWxsb2Moc2l6 ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW10ZCkgewogCQlyZXR1 cm4gTlVMTDsKIAl9CiAKLQltZW1zZXQobXRkLCAwLCBzaXplb2YoKm10ZCkp OwotCiAJbWFwLT5mbGRydiAJPSAmbWFwX2Fic2VudF9jaGlwZHJ2OwogCW10 ZC0+cHJpdiAJPSBtYXA7CiAJbXRkLT5uYW1lIAk9IG1hcC0+bmFtZTsKZGlm ZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQvY2hp cHMvbWFwX3JhbS5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJz L210ZC9jaGlwcy9tYXBfcmFtLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL210ZC9jaGlwcy9tYXBfcmFtLmMJMjAwNi0xMS0wOSAxMjox NjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3ph bGxvYy9kcml2ZXJzL210ZC9jaGlwcy9tYXBfcmFtLmMJMjAwNi0xMS0xMSAy Mjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTU1LDEyICs1NSwxMCBAQCBz dGF0aWMgc3RydWN0IG10ZF9pbmZvICptYXBfcmFtX3Byb2JlKHN0CiAjZW5k aWYKIAkvKiBPSy4gSXQgc2VlbXMgdG8gYmUgUkFNLiAqLwogCi0JbXRkID0g a21hbGxvYyhzaXplb2YoKm10ZCksIEdGUF9LRVJORUwpOworCW10ZCA9IGt6 YWxsb2Moc2l6ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW10ZCkK IAkJcmV0dXJuIE5VTEw7CiAKLQltZW1zZXQobXRkLCAwLCBzaXplb2YoKm10 ZCkpOwotCiAJbWFwLT5mbGRydiA9ICZtYXByYW1fY2hpcGRydjsKIAltdGQt PnByaXYgPSBtYXA7CiAJbXRkLT5uYW1lID0gbWFwLT5uYW1lOwpkaWZmIC1y dWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9jaGlwcy9t YXBfcm9tLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRk L2NoaXBzL21hcF9yb20uYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2Ry aXZlcnMvbXRkL2NoaXBzL21hcF9yb20uYwkyMDA2LTExLTA5IDEyOjE2OjIx LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9j L2RyaXZlcnMvbXRkL2NoaXBzL21hcF9yb20uYwkyMDA2LTExLTExIDIyOjQ0 OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMzEsMTIgKzMxLDEwIEBAIHN0YXRp YyBzdHJ1Y3QgbXRkX2luZm8gKm1hcF9yb21fcHJvYmUoc3QKIHsKIAlzdHJ1 Y3QgbXRkX2luZm8gKm10ZDsKIAotCW10ZCA9IGttYWxsb2Moc2l6ZW9mKCpt dGQpLCBHRlBfS0VSTkVMKTsKKwltdGQgPSBremFsbG9jKHNpemVvZigqbXRk KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtdGQpCiAJCXJldHVybiBOVUxMOwog Ci0JbWVtc2V0KG10ZCwgMCwgc2l6ZW9mKCptdGQpKTsKLQogCW1hcC0+Zmxk cnYgPSAmbWFwcm9tX2NoaXBkcnY7CiAJbXRkLT5wcml2ID0gbWFwOwogCW10 ZC0+bmFtZSA9IG1hcC0+bmFtZTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTkt cmM1X29yaWcvZHJpdmVycy9tdGQvY2hpcHMvc2hhcnAuYyBsaW51eC0yLjYu MTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvY2hpcHMvc2hhcnAuYwotLS0g bGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2NoaXBzL3NoYXJw LmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxp bnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9jaGlwcy9zaGFy cC5jCTIwMDYtMTEtMTEgMjI6NDQ6MzIuMDAwMDAwMDAwICswMjAwCkBAIC0x MTIsMTggKzExMiwxNiBAQCBzdGF0aWMgc3RydWN0IG10ZF9pbmZvICpzaGFy cF9wcm9iZShzdHJ1CiAJc3RydWN0IHNoYXJwX2luZm8gKnNoYXJwID0gTlVM TDsKIAlpbnQgd2lkdGg7CiAKLQltdGQgPSBrbWFsbG9jKHNpemVvZigqbXRk KSwgR0ZQX0tFUk5FTCk7CisJbXRkID0ga3phbGxvYyhzaXplb2YoKm10ZCks IEdGUF9LRVJORUwpOwogCWlmKCFtdGQpCiAJCXJldHVybiBOVUxMOwogCi0J c2hhcnAgPSBrbWFsbG9jKHNpemVvZigqc2hhcnApLCBHRlBfS0VSTkVMKTsK KwlzaGFycCA9IGt6YWxsb2Moc2l6ZW9mKCpzaGFycCksIEdGUF9LRVJORUwp OwogCWlmKCFzaGFycCkgewogCQlrZnJlZShtdGQpOwogCQlyZXR1cm4gTlVM TDsKIAl9CiAKLQltZW1zZXQobXRkLCAwLCBzaXplb2YoKm10ZCkpOwotCiAJ d2lkdGggPSBzaGFycF9wcm9iZV9tYXAobWFwLG10ZCk7CiAJaWYoIXdpZHRo KXsKIAkJa2ZyZWUobXRkKTsKQEAgLTE0Myw3ICsxNDEsNiBAQCBzdGF0aWMg c3RydWN0IG10ZF9pbmZvICpzaGFycF9wcm9iZShzdHJ1CiAJbXRkLT53cml0 ZXNpemUgPSAxOwogCW10ZC0+bmFtZSA9IG1hcC0+bmFtZTsKIAotCW1lbXNl dChzaGFycCwgMCwgc2l6ZW9mKCpzaGFycCkpOwogCXNoYXJwLT5jaGlwc2hp ZnQgPSAyMzsKIAlzaGFycC0+bnVtY2hpcHMgPSAxOwogCXNoYXJwLT5jaGlw c1swXS5zdGFydCA9IDA7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9v cmlnL2RyaXZlcnMvbXRkL2NtZGxpbmVwYXJ0LmMgbGludXgtMi42LjE5LXJj NV9remFsbG9jL2RyaXZlcnMvbXRkL2NtZGxpbmVwYXJ0LmMKLS0tIGxpbnV4 LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9jbWRsaW5lcGFydC5jCTIw MDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvY21kbGluZXBhcnQuYwky MDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMTYzLDEz ICsxNjMsMTIgQEAgc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uICogbmV3 cGFydChjaAogCQkqbnVtX3BhcnRzID0gdGhpc19wYXJ0ICsgMTsKIAkJYWxs b2Nfc2l6ZSA9ICpudW1fcGFydHMgKiBzaXplb2Yoc3RydWN0IG10ZF9wYXJ0 aXRpb24pICsKIAkJCSAgICAgZXh0cmFfbWVtX3NpemU7Ci0JCXBhcnRzID0g a21hbGxvYyhhbGxvY19zaXplLCBHRlBfS0VSTkVMKTsKKwkJcGFydHMgPSBr emFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpOwogCQlpZiAoIXBhcnRz KQogCQl7CiAJCQlwcmludGsoS0VSTl9FUlIgRVJSUCAib3V0IG9mIG1lbW9y eVxuIik7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQltZW1zZXQocGFydHMs IDAsIGFsbG9jX3NpemUpOwogCQlleHRyYV9tZW0gPSAodW5zaWduZWQgY2hh ciAqKShwYXJ0cyArICpudW1fcGFydHMpOwogCX0KIAkvKiBlbnRlciB0aGlz IHBhcnRpdGlvbiAob2Zmc2V0IHdpbGwgYmUgY2FsY3VsYXRlZCBsYXRlciBp ZiBpdCBpcyB6ZXJvIGF0IHRoaXMgcG9pbnQpICovCmRpZmYgLXJ1YnAgbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sy bXRkLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL2Rl dmljZXMvYmxvY2sybXRkLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9k cml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCTIwMDYtMTEtMDkgMTI6 MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYwkyMDA2LTEx LTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjk1LDEwICsyOTUs OSBAQCBzdGF0aWMgc3RydWN0IGJsb2NrMm10ZF9kZXYgKmFkZF9kZXZpY2Uo CiAJaWYgKCFkZXZuYW1lKQogCQlyZXR1cm4gTlVMTDsKIAotCWRldiA9IGtt YWxsb2Moc2l6ZW9mKHN0cnVjdCBibG9jazJtdGRfZGV2KSwgR0ZQX0tFUk5F TCk7CisJZGV2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGJsb2NrMm10ZF9k ZXYpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWRldikKIAkJcmV0dXJuIE5VTEw7 Ci0JbWVtc2V0KGRldiwgMCwgc2l6ZW9mKCpkZXYpKTsKIAogCS8qIEdldCBh IGhhbmRsZSBvbiB0aGUgZGV2aWNlICovCiAJYmRldiA9IG9wZW5fYmRldl9l eGNsKGRldm5hbWUsIE9fUkRXUiwgTlVMTCk7CmRpZmYgLXJ1YnAgbGludXgt Mi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2RldmljZXMvbXMwMi1udi5j IGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9kZXZpY2Vz L21zMDItbnYuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bXRkL2RldmljZXMvbXMwMi1udi5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJp dmVycy9tdGQvZGV2aWNlcy9tczAyLW52LmMJMjAwNi0xMS0xMSAyMjo0NDow NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEzMSwxMSArMTMxLDEwIEBAIHN0YXRp YyBpbnQgX19pbml0IG1zMDJudl9pbml0X29uZSh1bG9uZyAKIAlpbnQgcmV0 ID0gLUVOT0RFVjsKIAogCS8qIFRoZSBtb2R1bGUgZGVjb2RlcyA4TWlCIG9m IGFkZHJlc3Mgc3BhY2UuICovCi0JbW9kX3JlcyA9IGttYWxsb2Moc2l6ZW9m KCptb2RfcmVzKSwgR0ZQX0tFUk5FTCk7CisJbW9kX3JlcyA9IGt6YWxsb2Mo c2l6ZW9mKCptb2RfcmVzKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtb2RfcmVz KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCW1lbXNldChtb2RfcmVzLCAwLCBz aXplb2YoKm1vZF9yZXMpKTsKIAltb2RfcmVzLT5uYW1lID0gbXMwMm52X25h bWU7CiAJbW9kX3Jlcy0+c3RhcnQgPSBhZGRyOwogCW1vZF9yZXMtPmVuZCA9 IGFkZHIgKyBNUzAyTlZfU0xPVF9TSVpFIC0gMTsKQEAgLTE1MywyNCArMTUy LDIxIEBAIHN0YXRpYyBpbnQgX19pbml0IG1zMDJudl9pbml0X29uZSh1bG9u ZyAKIAl9CiAKIAlyZXQgPSAtRU5PTUVNOwotCW10ZCA9IGttYWxsb2Moc2l6 ZW9mKCptdGQpLCBHRlBfS0VSTkVMKTsKKwltdGQgPSBremFsbG9jKHNpemVv ZigqbXRkKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFtdGQpCiAJCWdvdG8gZXJy X291dF9tb2RfcmVzX3JlbDsKLQltZW1zZXQobXRkLCAwLCBzaXplb2YoKm10 ZCkpOwotCW1wID0ga21hbGxvYyhzaXplb2YoKm1wKSwgR0ZQX0tFUk5FTCk7 CisJbXAgPSBremFsbG9jKHNpemVvZigqbXApLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIW1wKQogCQlnb3RvIGVycl9vdXRfbXRkOwotCW1lbXNldChtcCwgMCwg c2l6ZW9mKCptcCkpOwogCiAJbXRkLT5wcml2ID0gbXA7CiAJbXAtPnJlc291 cmNlLm1vZHVsZSA9IG1vZF9yZXM7CiAKIAkvKiBGaXJtd2FyZSdzIGRpYWdu b3N0aWMgTlZSQU0gYXJlYS4gKi8KLQlkaWFnX3JlcyA9IGttYWxsb2Moc2l6 ZW9mKCpkaWFnX3JlcyksIEdGUF9LRVJORUwpOworCWRpYWdfcmVzID0ga3ph bGxvYyhzaXplb2YoKmRpYWdfcmVzKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFk aWFnX3JlcykKIAkJZ290byBlcnJfb3V0X21wOwogCi0JbWVtc2V0KGRpYWdf cmVzLCAwLCBzaXplb2YoKmRpYWdfcmVzKSk7CiAJZGlhZ19yZXMtPm5hbWUg PSBtczAybnZfcmVzX2RpYWdfcmFtOwogCWRpYWdfcmVzLT5zdGFydCA9IGFk ZHI7CiAJZGlhZ19yZXMtPmVuZCA9IGFkZHIgKyBNUzAyTlZfUkFNIC0gMTsK QEAgLTE4MCwxMSArMTc2LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG1zMDJu dl9pbml0X29uZSh1bG9uZyAKIAltcC0+cmVzb3VyY2UuZGlhZ19yYW0gPSBk aWFnX3JlczsKIAogCS8qIFVzZXItYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9z ZSBOVlJBTSBhcmVhLiAqLwotCXVzZXJfcmVzID0ga21hbGxvYyhzaXplb2Yo KnVzZXJfcmVzKSwgR0ZQX0tFUk5FTCk7CisJdXNlcl9yZXMgPSBremFsbG9j KHNpemVvZigqdXNlcl9yZXMpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXVzZXJf cmVzKQogCQlnb3RvIGVycl9vdXRfZGlhZ19yZXM7CiAKLQltZW1zZXQodXNl cl9yZXMsIDAsIHNpemVvZigqdXNlcl9yZXMpKTsKIAl1c2VyX3Jlcy0+bmFt ZSA9IG1zMDJudl9yZXNfdXNlcl9yYW07CiAJdXNlcl9yZXMtPnN0YXJ0ID0g YWRkciArIE1TMDJOVl9SQU07CiAJdXNlcl9yZXMtPmVuZCA9IGFkZHIgKyBz aXplIC0gMTsKQEAgLTE5NCwxMSArMTg5LDEwIEBAIHN0YXRpYyBpbnQgX19p bml0IG1zMDJudl9pbml0X29uZSh1bG9uZyAKIAltcC0+cmVzb3VyY2UudXNl cl9yYW0gPSB1c2VyX3JlczsKIAogCS8qIENvbnRyb2wgYW5kIHN0YXR1cyBy ZWdpc3Rlci4gKi8KLQljc3JfcmVzID0ga21hbGxvYyhzaXplb2YoKmNzcl9y ZXMpLCBHRlBfS0VSTkVMKTsKKwljc3JfcmVzID0ga3phbGxvYyhzaXplb2Yo KmNzcl9yZXMpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWNzcl9yZXMpCiAJCWdv dG8gZXJyX291dF91c2VyX3JlczsKIAotCW1lbXNldChjc3JfcmVzLCAwLCBz aXplb2YoKmNzcl9yZXMpKTsKIAljc3JfcmVzLT5uYW1lID0gbXMwMm52X3Jl c19jc3I7CiAJY3NyX3Jlcy0+c3RhcnQgPSBhZGRyICsgTVMwMk5WX0NTUjsK IAljc3JfcmVzLT5lbmQgPSBhZGRyICsgTVMwMk5WX0NTUiArIDM7CmRpZmYg LXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2Rldmlj ZXMvcGhyYW0uYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9t dGQvZGV2aWNlcy9waHJhbS5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9tdGQvZGV2aWNlcy9waHJhbS5jCTIwMDYtMTEtMDkgMTI6MTY6 MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxs b2MvZHJpdmVycy9tdGQvZGV2aWNlcy9waHJhbS5jCTIwMDYtMTEtMTEgMjI6 NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0xMjYsMTIgKzEyNiwxMCBAQCBz dGF0aWMgaW50IHJlZ2lzdGVyX2RldmljZShjaGFyICpuYW1lLCB1CiAJc3Ry dWN0IHBocmFtX210ZF9saXN0ICpuZXc7CiAJaW50IHJldCA9IC1FTk9NRU07 CiAKLQluZXcgPSBrbWFsbG9jKHNpemVvZigqbmV3KSwgR0ZQX0tFUk5FTCk7 CisJbmV3ID0ga3phbGxvYyhzaXplb2YoKm5ldyksIEdGUF9LRVJORUwpOwog CWlmICghbmV3KQogCQlnb3RvIG91dDA7CiAKLQltZW1zZXQobmV3LCAwLCBz aXplb2YoKm5ldykpOwotCiAJcmV0ID0gLUVJTzsKIAluZXctPm10ZC5wcml2 ID0gaW9yZW1hcChzdGFydCwgbGVuKTsKIAlpZiAoIW5ldy0+bXRkLnByaXYp IHsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9t dGQvZGV2aWNlcy9zbHJhbS5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9k cml2ZXJzL210ZC9kZXZpY2VzL3NscmFtLmMKLS0tIGxpbnV4LTIuNi4xOS1y YzVfb3JpZy9kcml2ZXJzL210ZC9kZXZpY2VzL3NscmFtLmMJMjAwNi0xMS0w OSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1y YzVfa3phbGxvYy9kcml2ZXJzL210ZC9kZXZpY2VzL3NscmFtLmMJMjAwNi0x MS0xMSAyMjo0NDoxOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTE2OCwxOSArMTY4 LDE2IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZGV2aWNlKGNoYXIgKm5hbWUs IHUKIAkJRSgic2xyYW06IENhbm5vdCBhbGxvY2F0ZSBuZXcgTVREIGRldmlj ZS5cbiIpOwogCQlyZXR1cm4oLUVOT01FTSk7CiAJfQotCSgqY3VybXRkKS0+ bXRkaW5mbyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBtdGRfaW5mbyksIEdG UF9LRVJORUwpOworCSgqY3VybXRkKS0+bXRkaW5mbyA9IGt6YWxsb2Moc2l6 ZW9mKHN0cnVjdCBtdGRfaW5mbyksIEdGUF9LRVJORUwpOwogCSgqY3VybXRk KS0+bmV4dCA9IE5VTEw7CiAKIAlpZiAoKCpjdXJtdGQpLT5tdGRpbmZvKQl7 Ci0JCW1lbXNldCgoY2hhciAqKSgqY3VybXRkKS0+bXRkaW5mbywgMCwgc2l6 ZW9mKHN0cnVjdCBtdGRfaW5mbykpOwogCQkoKmN1cm10ZCktPm10ZGluZm8t PnByaXYgPQotCQkJa21hbGxvYyhzaXplb2Yoc2xyYW1fcHJpdl90KSwgR0ZQ X0tFUk5FTCk7CisJCQlremFsbG9jKHNpemVvZihzbHJhbV9wcml2X3QpLCBH RlBfS0VSTkVMKTsKIAogCQlpZiAoISgqY3VybXRkKS0+bXRkaW5mby0+cHJp dikgewogCQkJa2ZyZWUoKCpjdXJtdGQpLT5tdGRpbmZvKTsKIAkJCSgqY3Vy bXRkKS0+bXRkaW5mbyA9IE5VTEw7Ci0JCX0gZWxzZSB7Ci0JCQltZW1zZXQo KCpjdXJtdGQpLT5tdGRpbmZvLT5wcml2LDAsc2l6ZW9mKHNscmFtX3ByaXZf dCkpOwogCQl9CiAJfQogCmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9v cmlnL2RyaXZlcnMvbXRkL2Z0bC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL210ZC9mdGwuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmln L2RyaXZlcnMvbXRkL2Z0bC5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAw MDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVy cy9tdGQvZnRsLmMJMjAwNi0xMS0xMSAyMjo0NDoxOC4wMDAwMDAwMDAgKzAy MDAKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRpYyB2b2lkIGZ0bF9hZGRf bXRkKHN0cnVjdCBtdGRfYmxrdHIKIHsKIAlwYXJ0aXRpb25fdCAqcGFydGl0 aW9uOwogCi0JcGFydGl0aW9uID0ga21hbGxvYyhzaXplb2YocGFydGl0aW9u X3QpLCBHRlBfS0VSTkVMKTsKKwlwYXJ0aXRpb24gPSBremFsbG9jKHNpemVv ZihwYXJ0aXRpb25fdCksIEdGUF9LRVJORUwpOwogCiAJaWYgKCFwYXJ0aXRp b24pIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiTm8gbWVtb3J5IHRvIHNj YW4gZm9yIEZUTCBvbiAlc1xuIiwKQEAgLTEwNDEsOCArMTA0MSw2IEBAIHN0 YXRpYyB2b2lkIGZ0bF9hZGRfbXRkKHN0cnVjdCBtdGRfYmxrdHIKIAkJcmV0 dXJuOwogCX0KIAotCW1lbXNldChwYXJ0aXRpb24sIDAsIHNpemVvZihwYXJ0 aXRpb25fdCkpOwotCiAJcGFydGl0aW9uLT5tYmQubXRkID0gbXRkOwogCiAJ aWYgKChzY2FuX2hlYWRlcihwYXJ0aXRpb24pID09IDApICYmCmRpZmYgLXJ1 YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL2luZnRsY29y ZS5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9pbmZ0 bGNvcmUuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRk L2luZnRsY29yZS5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICsw MjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQv aW5mdGxjb3JlLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAy MDAKQEAgLTY3LDEzICs2NywxMiBAQCBzdGF0aWMgdm9pZCBpbmZ0bF9hZGRf bXRkKHN0cnVjdCBtdGRfYmxrCiAKIAlERUJVRyhNVERfREVCVUdfTEVWRUwz LCAiSU5GVEw6IGFkZF9tdGQgZm9yICVzXG4iLCBtdGQtPm5hbWUpOwogCi0J aW5mdGwgPSBrbWFsbG9jKHNpemVvZigqaW5mdGwpLCBHRlBfS0VSTkVMKTsK KwlpbmZ0bCA9IGt6YWxsb2Moc2l6ZW9mKCppbmZ0bCksIEdGUF9LRVJORUwp OwogCiAJaWYgKCFpbmZ0bCkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HICJJ TkZUTDogT3V0IG9mIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmVzXG4iKTsK IAkJcmV0dXJuOwogCX0KLQltZW1zZXQoaW5mdGwsIDAsIHNpemVvZigqaW5m dGwpKTsKIAogCWluZnRsLT5tYmQubXRkID0gbXRkOwogCWluZnRsLT5tYmQu ZGV2bnVtID0gLTE7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmln L2RyaXZlcnMvbXRkL21hcHMvY2VpdmEuYyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCi0tLSBsaW51eC0yLjYu MTktcmM1X29yaWcvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCTIwMDYtMTEt MDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTkt cmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCTIwMDYtMTEt MTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0xMjIsMTAgKzEyMiw5 IEBAIHN0YXRpYyBpbnQgX19pbml0IGNscHNfc2V0dXBfbXRkKHN0cnVjdCAK IAkvKgogCSAqIEFsbG9jYXRlIHRoZSBtYXBfaW5mbyBzdHJ1Y3RzIGluIG9u ZSBnby4KIAkgKi8KLQltYXBzID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG1h cF9pbmZvKSAqIG5yLCBHRlBfS0VSTkVMKTsKKwltYXBzID0ga3phbGxvYyhz aXplb2Yoc3RydWN0IG1hcF9pbmZvKSAqIG5yLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIW1hcHMpCiAJCXJldHVybiAtRU5PTUVNOwotCW1lbXNldChtYXBzLCAw LCBzaXplb2Yoc3RydWN0IG1hcF9pbmZvKSAqIG5yKTsKIAkvKgogCSAqIENs YWltIGFuZCB0aGVuIG1hcCB0aGUgbWVtb3J5IHJlZ2lvbnMuCiAJICovCmRp ZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL21h cHMvaW50ZWdyYXRvci1mbGFzaC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL210ZC9tYXBzL2ludGVncmF0b3ItZmxhc2guYwotLS0gbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL21hcHMvaW50ZWdyYXRv ci1mbGFzaC5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAw CisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvbWFw cy9pbnRlZ3JhdG9yLWZsYXNoLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAw MDAwMDAgKzAyMDAKQEAgLTc1LDE0ICs3NSwxMiBAQCBzdGF0aWMgaW50IGFy bWZsYXNoX3Byb2JlKHN0cnVjdCBwbGF0Zm9yCiAJaW50IGVycjsKIAl2b2lk IF9faW9tZW0gKmJhc2U7CiAKLQlpbmZvID0ga21hbGxvYyhzaXplb2Yoc3Ry dWN0IGFybWZsYXNoX2luZm8pLCBHRlBfS0VSTkVMKTsKKwlpbmZvID0ga3ph bGxvYyhzaXplb2Yoc3RydWN0IGFybWZsYXNoX2luZm8pLCBHRlBfS0VSTkVM KTsKIAlpZiAoIWluZm8pIHsKIAkJZXJyID0gLUVOT01FTTsKIAkJZ290byBv dXQ7CiAJfQogCi0JbWVtc2V0KGluZm8sIDAsIHNpemVvZihzdHJ1Y3QgYXJt Zmxhc2hfaW5mbykpOwotCiAJaW5mby0+cGxhdCA9IHBsYXQ7CiAJaWYgKHBs YXQgJiYgcGxhdC0+aW5pdCkgewogCQllcnIgPSBwbGF0LT5pbml0KCk7CmRp ZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL21h cHMvb21hcF9ub3IuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVy cy9tdGQvbWFwcy9vbWFwX25vci5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9tdGQvbWFwcy9vbWFwX25vci5jCTIwMDYtMTEtMDkgMTI6 MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvbWFwcy9vbWFwX25vci5jCTIwMDYtMTEtMTEg MjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC03OCwxMiArNzgsMTAgQEAg c3RhdGljIGludCBfX2RldmluaXQgb21hcGZsYXNoX3Byb2JlKHN0cgogCXN0 cnVjdCByZXNvdXJjZSAqcmVzID0gcGRldi0+cmVzb3VyY2U7CiAJdW5zaWdu ZWQgbG9uZyBzaXplID0gcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMTsKIAot CWluZm8gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgb21hcGZsYXNoX2luZm8p LCBHRlBfS0VSTkVMKTsKKwlpbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0 IG9tYXBmbGFzaF9pbmZvKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFpbmZvKQog CQlyZXR1cm4gLUVOT01FTTsKIAotCW1lbXNldChpbmZvLCAwLCBzaXplb2Yo c3RydWN0IG9tYXBmbGFzaF9pbmZvKSk7Ci0KIAlpZiAoIXJlcXVlc3RfbWVt X3JlZ2lvbihyZXMtPnN0YXJ0LCBzaXplLCAiZmxhc2giKSkgewogCQllcnIg PSAtRUJVU1k7CiAJCWdvdG8gb3V0X2ZyZWVfaW5mbzsKZGlmZiAtcnVicCBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFt dGQuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvbWFw cy9wY21jaWFtdGQuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZl cnMvbXRkL21hcHMvcGNtY2lhbXRkLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4w MDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9k cml2ZXJzL210ZC9tYXBzL3BjbWNpYW10ZC5jCTIwMDYtMTEtMTEgMjI6NDQ6 MDQuMDAwMDAwMDAwICswMjAwCkBAIC03MzUsMTEgKzczNSwxMCBAQCBzdGF0 aWMgaW50IHBjbWNpYW10ZF9wcm9iZShzdHJ1Y3QgcGNtY2lhCiAJc3RydWN0 IHBjbWNpYW10ZF9kZXYgKmRldjsKIAogCS8qIENyZWF0ZSBuZXcgbWVtb3J5 IGNhcmQgZGV2aWNlICovCi0JZGV2ID0ga21hbGxvYyhzaXplb2YoKmRldiks IEdGUF9LRVJORUwpOworCWRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBH RlBfS0VSTkVMKTsKIAlpZiAoIWRldikgcmV0dXJuIC1FTk9NRU07CiAJREVC VUcoMSwgImRldj0weCVwIiwgZGV2KTsKIAotCW1lbXNldChkZXYsIDAsIHNp emVvZigqZGV2KSk7CiAJZGV2LT5wX2RldiA9IGxpbms7CiAJbGluay0+cHJp diA9IGRldjsKIApkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9k cml2ZXJzL210ZC9tYXBzL3BoeXNtYXAuYyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvbWFwcy9waHlzbWFwLmMKLS0tIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9tYXBzL3BoeXNtYXAuYwkyMDA2 LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42 LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL21hcHMvcGh5c21hcC5jCTIw MDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC05MiwxMiAr OTIsMTEgQEAgc3RhdGljIGludCBwaHlzbWFwX2ZsYXNoX3Byb2JlKHN0cnVj dCBwbAogCSAgICAodW5zaWduZWQgbG9uZyBsb25nKWRldi0+cmVzb3VyY2Ut PmVuZCAtIGRldi0+cmVzb3VyY2UtPnN0YXJ0ICsgMSwKIAkgICAgKHVuc2ln bmVkIGxvbmcgbG9uZylkZXYtPnJlc291cmNlLT5zdGFydCk7CiAKLQlpbmZv ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHBoeXNtYXBfZmxhc2hfaW5mbyks IEdGUF9LRVJORUwpOworCWluZm8gPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qg cGh5c21hcF9mbGFzaF9pbmZvKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKGluZm8g PT0gTlVMTCkgewogCQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIGVycl9vdXQ7 CiAJfQotCW1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKIAogCXBs YXRmb3JtX3NldF9kcnZkYXRhKGRldiwgaW5mbyk7CiAKZGlmZiAtcnVicCBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQvbWFwcy9wbGF0LXJh bS5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9tYXBz L3BsYXQtcmFtLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJz L210ZC9tYXBzL3BsYXQtcmFtLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAw MDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2 ZXJzL210ZC9tYXBzL3BsYXQtcmFtLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4w MDAwMDAwMDAgKzAyMDAKQEAgLTE0NywxNCArMTQ3LDEzIEBAIHN0YXRpYyBp bnQgcGxhdHJhbV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm0KIAogCXBkYXRhID0g cGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7CiAKLQlpbmZvID0ga21hbGxvYyhz aXplb2YoKmluZm8pLCBHRlBfS0VSTkVMKTsKKwlpbmZvID0ga3phbGxvYyhz aXplb2YoKmluZm8pLCBHRlBfS0VSTkVMKTsKIAlpZiAoaW5mbyA9PSBOVUxM KSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgIm5vIG1lbW9yeSBmb3IgZmxh c2ggaW5mb1xuIik7CiAJCWVyciA9IC1FTk9NRU07CiAJCWdvdG8gZXhpdF9l cnJvcjsKIAl9CiAKLQltZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7 CiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaW5mbyk7CiAKIAlpbmZv LT5kZXYgPSAmcGRldi0+ZGV2OwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1y YzVfb3JpZy9kcml2ZXJzL210ZC9tYXBzL3NhMTEwMC1mbGFzaC5jIGxpbnV4 LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9tYXBzL3NhMTEwMC1m bGFzaC5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQv bWFwcy9zYTExMDAtZmxhc2guYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAw MDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZl cnMvbXRkL21hcHMvc2ExMTAwLWZsYXNoLmMJMjAwNi0xMS0xMSAyMjo0NDow NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTI3MywxNCArMjczLDEyIEBAIHNhMTEw MF9zZXR1cF9tdGQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAKIAkvKgogCSAq IEFsbG9jYXRlIHRoZSBtYXBfaW5mbyBzdHJ1Y3RzIGluIG9uZSBnby4KIAkg Ki8KLQlpbmZvID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwlpbmZv ID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWluZm8pIHsK IAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CiAJfQogCi0JbWVtc2V0 KGluZm8sIDAsIHNpemUpOwotCiAJaWYgKHBsYXQtPmluaXQpIHsKIAkJcmV0 ID0gcGxhdC0+aW5pdCgpOwogCQlpZiAocmV0KQotLS0gbGludXgtMi42LjE5 LXJjNV9vcmlnL2RyaXZlcnMvbXRkL21hcHMvdHFtODM0eC5jCTIwMDYtMTEt MDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTkt cmM1X2t6YWxsb2MvZHJpdmVycy9tdGQvbWFwcy90cW04MzR4LmMJMjAwNi0x MS0xNSAyMDoyNDoyNi4wMDAwMDAwMDAgKzAyMDAKQEAgLTEzMiwyMCArMTMy LDE2IEBAIHN0YXRpYyBpbnQgX19pbml0IGluaXRfdHFtODM0eF9tdGQodm9p ZCkKIAogCQlwcl9kZWJ1ZygiJXM6IGNoaXAgcHJvYmluZyBjb3VudCAlZFxu IiwgX19GVU5DVElPTl9fLCBpZHgpOwogCi0JCW1hcF9iYW5rc1tpZHhdID0K LQkJCShzdHJ1Y3QgbWFwX2luZm8gKilrbWFsbG9jKHNpemVvZihzdHJ1Y3Qg bWFwX2luZm8pLAotCQkJCQkJICAgR0ZQX0tFUk5FTCk7CisJCW1hcF9iYW5r c1tpZHhdID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG1hcF9pbmZvKSwgR0ZQ X0tFUk5FTCk7CiAJCWlmIChtYXBfYmFua3NbaWR4XSA9PSBOVUxMKSB7CiAJ CQlyZXQgPSAtRU5PTUVNOwogCQkJZ290byBlcnJvcl9tZW07CiAJCX0KLQkJ bWVtc2V0KCh2b2lkICopbWFwX2JhbmtzW2lkeF0sIDAsIHNpemVvZihzdHJ1 Y3QgbWFwX2luZm8pKTsKLQkJbWFwX2JhbmtzW2lkeF0tPm5hbWUgPSAoY2hh ciAqKWttYWxsb2MoMTYsIEdGUF9LRVJORUwpOworCQltYXBfYmFua3NbaWR4 XS0+bmFtZSA9IGt6YWxsb2MoMTYsIEdGUF9LRVJORUwpOwogCQlpZiAobWFw X2JhbmtzW2lkeF0tPm5hbWUgPT0gTlVMTCkgewogCQkJcmV0ID0gLUVOT01F TTsKIAkJCWdvdG8gZXJyb3JfbWVtOwogCQl9Ci0JCW1lbXNldCgodm9pZCAq KW1hcF9iYW5rc1tpZHhdLT5uYW1lLCAwLCAxNik7CiAKIAkJc3ByaW50Ziht YXBfYmFua3NbaWR4XS0+bmFtZSwgIlRRTTgzNHgtJWQiLCBpZHgpOwogCQlt YXBfYmFua3NbaWR4XS0+c2l6ZSA9IGZsYXNoX3NpemU7CmRpZmYgLXJ1YnAg bGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4 bC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9tYXBz L3RxbTh4eGwuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bXRkL21hcHMvdHFtOHh4bC5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAw MDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVy cy9tdGQvbWFwcy90cW04eHhsLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAw MDAwMDAgKzAyMDAKQEAgLTEzNCwxNCArMTM0LDEzIEBAIGludCBfX2luaXQg aW5pdF90cW1fbXRkKHZvaWQpCiAKIAkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6 IGNoaXAgcHJvYmluZyBjb3VudCAlZFxuIiwgX19GVU5DVElPTl9fLCBpZHgp OwogCi0JCW1hcF9iYW5rc1tpZHhdID0gKHN0cnVjdCBtYXBfaW5mbyAqKWtt YWxsb2Moc2l6ZW9mKHN0cnVjdCBtYXBfaW5mbyksIEdGUF9LRVJORUwpOwor CQltYXBfYmFua3NbaWR4XSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBtYXBf aW5mbyksIEdGUF9LRVJORUwpOwogCQlpZihtYXBfYmFua3NbaWR4XSA9PSBO VUxMKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwogCQkJLyogRklYTUU6IFdoYXQg aWYgc29tZSBNVEQgZGV2aWNlcyB3ZXJlIHByb2JlZCBhbHJlYWR5PyAqLwog CQkJZ290byBlcnJvcl9tZW07CiAJCX0KIAotCQltZW1zZXQoKHZvaWQgKilt YXBfYmFua3NbaWR4XSwgMCwgc2l6ZW9mKHN0cnVjdCBtYXBfaW5mbykpOwog CQltYXBfYmFua3NbaWR4XS0+bmFtZSA9IChjaGFyICopa21hbGxvYygxNiwg R0ZQX0tFUk5FTCk7CiAKIAkJaWYgKCFtYXBfYmFua3NbaWR4XS0+bmFtZSkg ewpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210 ZC9tdGRfYmxrZGV2cy5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2 ZXJzL210ZC9tdGRfYmxrZGV2cy5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9tdGQvbXRkX2Jsa2RldnMuYwkyMDA2LTExLTA5IDEyOjE2 OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFs bG9jL2RyaXZlcnMvbXRkL210ZF9ibGtkZXZzLmMJMjAwNi0xMS0xMSAyMjo0 NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTM3MiwxMiArMzcyLDEwIEBAIGlu dCByZWdpc3Rlcl9tdGRfYmxrdHJhbnMoc3RydWN0IG10ZF9ibGsKIAlpZiAo IWJsa3RyYW5zX25vdGlmaWVyLmxpc3QubmV4dCkKIAkJcmVnaXN0ZXJfbXRk X3VzZXIoJmJsa3RyYW5zX25vdGlmaWVyKTsKIAotCXRyLT5ibGtjb3JlX3By aXYgPSBrbWFsbG9jKHNpemVvZigqdHItPmJsa2NvcmVfcHJpdiksIEdGUF9L RVJORUwpOworCXRyLT5ibGtjb3JlX3ByaXYgPSBremFsbG9jKHNpemVvZigq dHItPmJsa2NvcmVfcHJpdiksIEdGUF9LRVJORUwpOwogCWlmICghdHItPmJs a2NvcmVfcHJpdikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQltZW1zZXQodHIt PmJsa2NvcmVfcHJpdiwgMCwgc2l6ZW9mKCp0ci0+YmxrY29yZV9wcml2KSk7 Ci0KIAltdXRleF9sb2NrKCZtdGRfdGFibGVfbXV0ZXgpOwogCiAJcmV0ID0g cmVnaXN0ZXJfYmxrZGV2KHRyLT5tYWpvciwgdHItPm5hbWUpOwpkaWZmIC1y dWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9tdGRibG9j ay5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9tdGRi bG9jay5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQv bXRkYmxvY2suYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIw MAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL210 ZGJsb2NrLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAK QEAgLTI3OCwxMSArMjc4LDEwIEBAIHN0YXRpYyBpbnQgbXRkYmxvY2tfb3Bl bihzdHJ1Y3QgbXRkX2Jsa3QKIAl9CiAKIAkvKiBPSywgaXQncyBub3Qgb3Bl bi4gQ3JlYXRlIGNhY2hlIGluZm8gZm9yIGl0ICovCi0JbXRkYmxrID0ga21h bGxvYyhzaXplb2Yoc3RydWN0IG10ZGJsa19kZXYpLCBHRlBfS0VSTkVMKTsK KwltdGRibGsgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgbXRkYmxrX2Rldiks IEdGUF9LRVJORUwpOwogCWlmICghbXRkYmxrKQogCQlyZXR1cm4gLUVOT01F TTsKIAotCW1lbXNldChtdGRibGssIDAsIHNpemVvZigqbXRkYmxrKSk7CiAJ bXRkYmxrLT5jb3VudCA9IDE7CiAJbXRkYmxrLT5tdGQgPSBtdGQ7CiAKQEAg LTMzOSwxMyArMzM4LDExIEBAIHN0YXRpYyBpbnQgbXRkYmxvY2tfZmx1c2go c3RydWN0IG10ZF9ibGsKIAogc3RhdGljIHZvaWQgbXRkYmxvY2tfYWRkX210 ZChzdHJ1Y3QgbXRkX2Jsa3RyYW5zX29wcyAqdHIsIHN0cnVjdCBtdGRfaW5m byAqbXRkKQogewotCXN0cnVjdCBtdGRfYmxrdHJhbnNfZGV2ICpkZXYgPSBr bWFsbG9jKHNpemVvZigqZGV2KSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IG10 ZF9ibGt0cmFuc19kZXYgKmRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBH RlBfS0VSTkVMKTsKIAogCWlmICghZGV2KQogCQlyZXR1cm47CiAKLQltZW1z ZXQoZGV2LCAwLCBzaXplb2YoKmRldikpOwotCiAJZGV2LT5tdGQgPSBtdGQ7 CiAJZGV2LT5kZXZudW0gPSBtdGQtPmluZGV4OwogCWRldi0+Ymxrc2l6ZSA9 IDUxMjsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVy cy9tdGQvbXRkYmxvY2tfcm8uYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2Mv ZHJpdmVycy9tdGQvbXRkYmxvY2tfcm8uYwotLS0gbGludXgtMi42LjE5LXJj NV9vcmlnL2RyaXZlcnMvbXRkL210ZGJsb2NrX3JvLmMJMjAwNi0xMS0wOSAx MjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVf a3phbGxvYy9kcml2ZXJzL210ZC9tdGRibG9ja19yby5jCTIwMDYtMTEtMTEg MjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0zMywxMyArMzMsMTEgQEAg c3RhdGljIGludCBtdGRibG9ja193cml0ZXNlY3Qoc3RydWN0IG10ZAogCiBz dGF0aWMgdm9pZCBtdGRibG9ja19hZGRfbXRkKHN0cnVjdCBtdGRfYmxrdHJh bnNfb3BzICp0ciwgc3RydWN0IG10ZF9pbmZvICptdGQpCiB7Ci0Jc3RydWN0 IG10ZF9ibGt0cmFuc19kZXYgKmRldiA9IGttYWxsb2Moc2l6ZW9mKCpkZXYp LCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgbXRkX2Jsa3RyYW5zX2RldiAqZGV2 ID0ga3phbGxvYyhzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOwogCiAJaWYg KCFkZXYpCiAJCXJldHVybjsKIAotCW1lbXNldChkZXYsIDAsIHNpemVvZigq ZGV2KSk7Ci0KIAlkZXYtPm10ZCA9IG10ZDsKIAlkZXYtPmRldm51bSA9IG10 ZC0+aW5kZXg7CiAJZGV2LT5ibGtzaXplID0gNTEyOwpkaWZmIC1ydWJwIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9tdGRjaGFyLmMgbGlu dXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL210ZGNoYXIuYwot LS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL210ZGNoYXIu YwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGlu dXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL210ZGNoYXIuYwky MDA2LTExLTExIDIyOjQ0OjE4LjAwMDAwMDAwMCArMDIwMApAQCAtNDMxLDcg KzQzMSw3IEBAIHN0YXRpYyBpbnQgbXRkX2lvY3RsKHN0cnVjdCBpbm9kZSAq aW5vZGUKIAkJaWYoIShmaWxlLT5mX21vZGUgJiAyKSkKIAkJCXJldHVybiAt RVBFUk07CiAKLQkJZXJhc2U9a21hbGxvYyhzaXplb2Yoc3RydWN0IGVyYXNl X2luZm8pLEdGUF9LRVJORUwpOworCQllcmFzZT1remFsbG9jKHNpemVvZihz dHJ1Y3QgZXJhc2VfaW5mbyksR0ZQX0tFUk5FTCk7CiAJCWlmICghZXJhc2Up CiAJCQlyZXQgPSAtRU5PTUVNOwogCQllbHNlIHsKQEAgLTQ0MCw3ICs0NDAs NiBAQCBzdGF0aWMgaW50IG10ZF9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2Rl CiAKIAkJCWluaXRfd2FpdHF1ZXVlX2hlYWQoJndhaXRxKTsKIAotCQkJbWVt c2V0IChlcmFzZSwwLHNpemVvZihzdHJ1Y3QgZXJhc2VfaW5mbykpOwogCQkJ aWYgKGNvcHlfZnJvbV91c2VyKCZlcmFzZS0+YWRkciwgYXJncCwKIAkJCQkg ICAgc2l6ZW9mKHN0cnVjdCBlcmFzZV9pbmZvX3VzZXIpKSkgewogCQkJCWtm cmVlKGVyYXNlKTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9tdGQvbXRkY29uY2F0LmMgbGludXgtMi42LjE5LXJjNV9remFs bG9jL2RyaXZlcnMvbXRkL210ZGNvbmNhdC5jCi0tLSBsaW51eC0yLjYuMTkt cmM1X29yaWcvZHJpdmVycy9tdGQvbXRkY29uY2F0LmMJMjAwNi0xMS0wOSAx MjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVf a3phbGxvYy9kcml2ZXJzL210ZC9tdGRjb25jYXQuYwkyMDA2LTExLTExIDIy OjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtNjk5LDE0ICs2OTksMTMgQEAg c3RydWN0IG10ZF9pbmZvICptdGRfY29uY2F0X2NyZWF0ZShzdHJ1YwogCiAJ LyogYWxsb2NhdGUgdGhlIGRldmljZSBzdHJ1Y3R1cmUgKi8KIAlzaXplID0g U0laRU9GX1NUUlVDVF9NVERfQ09OQ0FUKG51bV9kZXZzKTsKLQljb25jYXQg PSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCWNvbmNhdCA9IGt6YWxs b2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjb25jYXQpIHsKIAkJcHJp bnRrCiAJCSAgICAoIm1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIHdoaWxlIGNy ZWF0aW5nIGNvbmNhdGVuYXRlZCBkZXZpY2UgXCIlc1wiXG4iLAogCQkgICAg IG5hbWUpOwogCQlyZXR1cm4gTlVMTDsKIAl9Ci0JbWVtc2V0KGNvbmNhdCwg MCwgc2l6ZSk7CiAJY29uY2F0LT5zdWJkZXYgPSAoc3RydWN0IG10ZF9pbmZv ICoqKSAoY29uY2F0ICsgMSk7CiAKIAkvKgpkaWZmIC1ydWJwIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9tdGRwYXJ0LmMgbGludXgtMi42 LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL210ZHBhcnQuYwotLS0gbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL210ZHBhcnQuYwkyMDA2 LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42 LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL210ZHBhcnQuYwkyMDA2LTEx LTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMzIzLDE0ICszMjMs MTMgQEAgaW50IGFkZF9tdGRfcGFydGl0aW9ucyhzdHJ1Y3QgbXRkX2luZm8g KgogCWZvciAoaSA9IDA7IGkgPCBuYnBhcnRzOyBpKyspIHsKIAogCQkvKiBh bGxvY2F0ZSB0aGUgcGFydGl0aW9uIHN0cnVjdHVyZSAqLwotCQlzbGF2ZSA9 IGttYWxsb2MgKHNpemVvZigqc2xhdmUpLCBHRlBfS0VSTkVMKTsKKwkJc2xh dmUgPSBremFsbG9jIChzaXplb2YoKnNsYXZlKSwgR0ZQX0tFUk5FTCk7CiAJ CWlmICghc2xhdmUpIHsKIAkJCXByaW50ayAoIm1lbW9yeSBhbGxvY2F0aW9u IGVycm9yIHdoaWxlIGNyZWF0aW5nIHBhcnRpdGlvbnMgZm9yIFwiJXNcIlxu IiwKIAkJCQltYXN0ZXItPm5hbWUpOwogCQkJZGVsX210ZF9wYXJ0aXRpb25z KG1hc3Rlcik7CiAJCQlyZXR1cm4gLUVOT01FTTsKIAkJfQotCQltZW1zZXQo c2xhdmUsIDAsIHNpemVvZigqc2xhdmUpKTsKIAkJbGlzdF9hZGQoJnNsYXZl LT5saXN0LCAmbXRkX3BhcnRpdGlvbnMpOwogCiAJCS8qIHNldCB1cCB0aGUg TVREIG9iamVjdCBmb3IgdGhpcyBwYXJ0aXRpb24gKi8KZGlmZiAtcnVicCBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9tdGQvbmFuZC9kaXNrb25j aGlwLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbXRkL25h bmQvZGlza29uY2hpcC5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9tdGQvbmFuZC9kaXNrb25jaGlwLmMJMjAwNi0xMS0wOSAxMjoxNjoy MS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL210ZC9uYW5kL2Rpc2tvbmNoaXAuYwkyMDA2LTExLTExIDIy OjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMTYzNSwxMyArMTYzNSwxMiBA QCBzdGF0aWMgaW50IF9faW5pdCBkb2NfcHJvYmUodW5zaWduZWQgbG9uCiAK IAlsZW4gPSBzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSArCiAJICAgIHNpemVv ZihzdHJ1Y3QgbmFuZF9jaGlwKSArIHNpemVvZihzdHJ1Y3QgZG9jX3ByaXYp ICsgKDIgKiBzaXplb2Yoc3RydWN0IG5hbmRfYmJ0X2Rlc2NyKSk7Ci0JbXRk ID0ga21hbGxvYyhsZW4sIEdGUF9LRVJORUwpOworCW10ZCA9IGt6YWxsb2Mo bGVuLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW10ZCkgewogCQlwcmludGsoS0VS Tl9FUlIgIkRpc2tPbkNoaXAga21hbGxvYyAoJWQgYnl0ZXMpIGZhaWxlZCFc biIsIGxlbik7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gZmFpbDsKIAl9 Ci0JbWVtc2V0KG10ZCwgMCwgbGVuKTsKIAogCW5hbmQJCQk9IChzdHJ1Y3Qg bmFuZF9jaGlwICopIChtdGQgKyAxKTsKIAlkb2MJCQk9IChzdHJ1Y3QgZG9j X3ByaXYgKikgKG5hbmQgKyAxKTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTkt cmM1X29yaWcvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmJ0LmMK LS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9uYW5kL25h bmRfYmJ0LmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAK KysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9uYW5k L25hbmRfYmJ0LmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAy MDAKQEAgLTk2MSwxNCArOTYxLDEyIEBAIGludCBuYW5kX3NjYW5fYmJ0KHN0 cnVjdCBtdGRfaW5mbyAqbXRkLCAKIAlzdHJ1Y3QgbmFuZF9iYnRfZGVzY3Ig Km1kID0gdGhpcy0+YmJ0X21kOwogCiAJbGVuID0gbXRkLT5zaXplID4+ICh0 aGlzLT5iYnRfZXJhc2Vfc2hpZnQgKyAyKTsKLQkvKiBBbGxvY2F0ZSBtZW1v cnkgKDJiaXQgcGVyIGJsb2NrKSAqLwotCXRoaXMtPmJidCA9IGttYWxsb2Mo bGVuLCBHRlBfS0VSTkVMKTsKKwkvKiBBbGxvY2F0ZSBtZW1vcnkgKDJiaXQg cGVyIGJsb2NrKSBhbmQgY2xlYXIgdGhlIG1lbW9yeSBiYWQgYmxvY2sgdGFi bGUgKi8KKwl0aGlzLT5iYnQgPSBremFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7 CiAJaWYgKCF0aGlzLT5iYnQpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJuYW5k X3NjYW5fYmJ0OiBPdXQgb2YgbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1FTk9N RU07CiAJfQotCS8qIENsZWFyIHRoZSBtZW1vcnkgYmFkIGJsb2NrIHRhYmxl ICovCi0JbWVtc2V0KHRoaXMtPmJidCwgMHgwMCwgbGVuKTsKIAogCS8qIElm IG5vIHByaW1hcnkgdGFibGUgZGVjcmlwdG9yIGlzIGdpdmVuLCBzY2FuIHRo ZSBkZXZpY2UKIAkgKiB0byBidWlsZCBhIG1lbW9yeSBiYXNlZCBiYWQgYmxv Y2sgdGFibGUKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9tdGQvbmFuZC9uYW5kc2ltLmMgbGludXgtMi42LjE5LXJjNV9remFs bG9jL2RyaXZlcnMvbXRkL25hbmQvbmFuZHNpbS5jCi0tLSBsaW51eC0yLjYu MTktcmM1X29yaWcvZHJpdmVycy9tdGQvbmFuZC9uYW5kc2ltLmMJMjAwNi0x MS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4x OS1yYzVfa3phbGxvYy9kcml2ZXJzL210ZC9uYW5kL25hbmRzaW0uYwkyMDA2 LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMTQzNiwxNCAr MTQzNiwxMiBAQCBzdGF0aWMgaW50IF9faW5pdCBuc19pbml0X21vZHVsZSh2 b2lkKQogCX0KIAogCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIG10ZF9p bmZvLCBuYW5kX2NoaXAgYW5kIG5hbmRzaW0gc3RydWN0dXJlcyAqLwotCW5z bXRkID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSArIHNpemVv ZihzdHJ1Y3QgbmFuZF9jaGlwKQorCW5zbXRkID0ga3phbGxvYyhzaXplb2Yo c3RydWN0IG10ZF9pbmZvKSArIHNpemVvZihzdHJ1Y3QgbmFuZF9jaGlwKQog CQkJCSsgc2l6ZW9mKHN0cnVjdCBuYW5kc2ltKSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKCFuc210ZCkgewogCQlOU19FUlIoInVuYWJsZSB0byBhbGxvY2F0ZSBj b3JlIHN0cnVjdHVyZXMuXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQot CW1lbXNldChuc210ZCwgMCwgc2l6ZW9mKHN0cnVjdCBtdGRfaW5mbykgKyBz aXplb2Yoc3RydWN0IG5hbmRfY2hpcCkgKwotCQkJc2l6ZW9mKHN0cnVjdCBu YW5kc2ltKSk7CiAJY2hpcCAgICAgICAgPSAoc3RydWN0IG5hbmRfY2hpcCAq KShuc210ZCArIDEpOwogICAgICAgICBuc210ZC0+cHJpdiA9ICh2b2lkICop Y2hpcDsKIAluYW5kICAgICAgICA9IChzdHJ1Y3QgbmFuZHNpbSAqKShjaGlw ICsgMSk7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZl cnMvbXRkL25mdGxjb3JlLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2Ry aXZlcnMvbXRkL25mdGxjb3JlLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL210ZC9uZnRsY29yZS5jCTIwMDYtMTEtMDkgMTI6MTY6MjEu MDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2Mv ZHJpdmVycy9tdGQvbmZ0bGNvcmUuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAw MDAwMDAwMCArMDIwMApAQCAtNTcsMTMgKzU3LDEyIEBAIHN0YXRpYyB2b2lk IG5mdGxfYWRkX210ZChzdHJ1Y3QgbXRkX2Jsa3QKIAogCURFQlVHKE1URF9E RUJVR19MRVZFTDEsICJORlRMOiBhZGRfbXRkIGZvciAlc1xuIiwgbXRkLT5u YW1lKTsKIAotCW5mdGwgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgTkZUTHJl Y29yZCksIEdGUF9LRVJORUwpOworCW5mdGwgPSBremFsbG9jKHNpemVvZihz dHJ1Y3QgTkZUTHJlY29yZCksIEdGUF9LRVJORUwpOwogCiAJaWYgKCFuZnRs KSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIk5GVEw6IG91dCBvZiBtZW1v cnkgZm9yIGRhdGEgc3RydWN0dXJlc1xuIik7CiAJCXJldHVybjsKIAl9Ci0J bWVtc2V0KG5mdGwsIDAsIHNpemVvZigqbmZ0bCkpOwogCiAJbmZ0bC0+bWJk Lm10ZCA9IG10ZDsKIAluZnRsLT5tYmQuZGV2bnVtID0gLTE7CmRpZmYgLXJ1 YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbXRkL29uZW5hbmQv Z2VuZXJpYy5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210 ZC9vbmVuYW5kL2dlbmVyaWMuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmln L2RyaXZlcnMvbXRkL29uZW5hbmQvZ2VuZXJpYy5jCTIwMDYtMTEtMDkgMTI6 MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9tdGQvb25lbmFuZC9nZW5lcmljLmMJMjAwNi0xMS0x MSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTQ1LDEyICs0NSwxMCBA QCBzdGF0aWMgaW50IF9fZGV2aW5pdCBnZW5lcmljX29uZW5hbmRfcHJvCiAJ dW5zaWduZWQgbG9uZyBzaXplID0gcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsg MTsKIAlpbnQgZXJyOwogCi0JaW5mbyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVj dCBvbmVuYW5kX2luZm8pLCBHRlBfS0VSTkVMKTsKKwlpbmZvID0ga3phbGxv YyhzaXplb2Yoc3RydWN0IG9uZW5hbmRfaW5mbyksIEdGUF9LRVJORUwpOwog CWlmICghaW5mbykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQltZW1zZXQoaW5m bywgMCwgc2l6ZW9mKHN0cnVjdCBvbmVuYW5kX2luZm8pKTsKLQogCWlmICgh cmVxdWVzdF9tZW1fcmVnaW9uKHJlcy0+c3RhcnQsIHNpemUsIGRldi0+ZHJp dmVyLT5uYW1lKSkgewogCQllcnIgPSAtRUJVU1k7CiAJCWdvdG8gb3V0X2Zy ZWVfaW5mbzsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX2JidC5jIGxpbnV4LTIuNi4xOS1y YzVfa3phbGxvYy9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfYmJ0LmMK LS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210ZC9vbmVuYW5k L29uZW5hbmRfYmJ0LmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAg KzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL210 ZC9vbmVuYW5kL29uZW5hbmRfYmJ0LmMJMjAwNi0xMS0xMSAyMjo0NDowNC4w MDAwMDAwMDAgKzAyMDAKQEAgLTE3NywxNCArMTc3LDEyIEBAIGludCBvbmVu YW5kX3NjYW5fYmJ0KHN0cnVjdCBtdGRfaW5mbyAqbXQKIAlpbnQgbGVuLCBy ZXQgPSAwOwogCiAJbGVuID0gbXRkLT5zaXplID4+ICh0aGlzLT5lcmFzZV9z aGlmdCArIDIpOwotCS8qIEFsbG9jYXRlIG1lbW9yeSAoMmJpdCBwZXIgYmxv Y2spICovCi0JYmJtLT5iYnQgPSBrbWFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7 CisJLyogQWxsb2NhdGUgbWVtb3J5ICgyYml0IHBlciBibG9jaykgYW5kIGNs ZWFyIHRoZSBtZW1vcnkgYmFkIGJsb2NrIHRhYmxlICovCisJYmJtLT5iYnQg PSBremFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFiYm0tPmJidCkg ewogCQlwcmludGsoS0VSTl9FUlIgIm9uZW5hbmRfc2Nhbl9iYnQ6IE91dCBv ZiBtZW1vcnlcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JLyogQ2xl YXIgdGhlIG1lbW9yeSBiYWQgYmxvY2sgdGFibGUgKi8KLQltZW1zZXQoYmJt LT5iYnQsIDB4MDAsIGxlbik7CiAKIAkvKiBTZXQgdGhlIGJhZCBibG9jayBw b3NpdGlvbiAqLwogCWJibS0+YmFkYmxvY2twb3MgPSBPTkVOQU5EX0JBREJM T0NLX1BPUzsKQEAgLTIzMCwxNCArMjI4LDEyIEBAIGludCBvbmVuYW5kX2Rl ZmF1bHRfYmJ0KHN0cnVjdCBtdGRfaW5mbyAKIAlzdHJ1Y3Qgb25lbmFuZF9j aGlwICp0aGlzID0gbXRkLT5wcml2OwogCXN0cnVjdCBiYm1faW5mbyAqYmJt OwogCi0JdGhpcy0+YmJtID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGJibV9p bmZvKSwgR0ZQX0tFUk5FTCk7CisJdGhpcy0+YmJtID0ga3phbGxvYyhzaXpl b2Yoc3RydWN0IGJibV9pbmZvKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF0aGlz LT5iYm0pCiAJCXJldHVybiAtRU5PTUVNOwogCiAJYmJtID0gdGhpcy0+YmJt OwogCi0JbWVtc2V0KGJibSwgMCwgc2l6ZW9mKHN0cnVjdCBiYm1faW5mbykp OwotCiAJLyogMUtCIHBhZ2UgaGFzIHNhbWUgY29uZmlndXJhdGlvbiBhcyAy S0IgcGFnZSAqLwogCWlmICghYmJtLT5iYWRibG9ja19wYXR0ZXJuKQogCQli Ym0tPmJhZGJsb2NrX3BhdHRlcm4gPSAmbGFyZ2VwYWdlX21lbW9yeWJhc2Vk OwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL210 ZC9yZWRib290LmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bXRkL3JlZGJvb3QuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZl cnMvbXRkL3JlZGJvb3QuYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAw MCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bXRkL3JlZGJvb3QuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCAr MDIwMApAQCAtMTY1LDE1ICsxNjUsMTMgQEAgc3RhdGljIGludCBwYXJzZV9y ZWRib290X3BhcnRpdGlvbnMoc3RydQogCQl9CiAJfQogI2VuZGlmCi0JcGFy dHMgPSBrbWFsbG9jKHNpemVvZigqcGFydHMpKm5ycGFydHMgKyBudWxsbGVu ICsgbmFtZWxlbiwgR0ZQX0tFUk5FTCk7CisJcGFydHMgPSBremFsbG9jKHNp emVvZigqcGFydHMpKm5ycGFydHMgKyBudWxsbGVuICsgbmFtZWxlbiwgR0ZQ X0tFUk5FTCk7CiAKIAlpZiAoIXBhcnRzKSB7CiAJCXJldCA9IC1FTk9NRU07 CiAJCWdvdG8gb3V0OwogCX0KIAotCW1lbXNldChwYXJ0cywgMCwgc2l6ZW9m KCpwYXJ0cykqbnJwYXJ0cyArIG51bGxsZW4gKyBuYW1lbGVuKTsKLQogCW51 bGxuYW1lID0gKGNoYXIgKikmcGFydHNbbnJwYXJ0c107CiAjaWZkZWYgQ09O RklHX01URF9SRURCT09UX1BBUlRTX1VOQUxMT0NBVEVECiAJaWYgKG51bGxs ZW4gPiAwKSB7Cg== ------=_NextPart_000_2949_29a5_3c2e-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/