Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933016AbWKLRYP (ORCPT ); Sun, 12 Nov 2006 12:24:15 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S933019AbWKLRYP (ORCPT ); Sun, 12 Nov 2006 12:24:15 -0500 Received: from bay0-omc2-s9.bay0.hotmail.com ([65.54.246.145]:11763 "EHLO bay0-omc2-s9.bay0.hotmail.com") by vger.kernel.org with ESMTP id S933016AbWKLRYO (ORCPT ); Sun, 12 Nov 2006 12:24:14 -0500 Message-ID: X-Originating-IP: [80.178.43.168] X-Originating-Email: [yan_952@hotmail.com] From: "Burman Yan" To: trivial@kernel.org Cc: linux-kernel@vger.kernel.org Subject: [PATH] Replace kmalloc+memset with kzalloc 3/17 Date: Sun, 12 Nov 2006 19:24:11 +0200 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_5559_6de3_518e" X-OriginalArrivalTime: 12 Nov 2006 17:24:13.0586 (UTC) FILETIME=[5F7B0720:01C7067F] Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 55007 Lines: 914 This is a multi-part message in MIME format. ------=_NextPart_000_5559_6de3_518e Content-Type: text/plain; format=flowed Part 3 of the kmalloc+memset to kzalloc patch 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_5559_6de3_518e Content-Type: application/octet-stream; name="kzalloc_driver_net.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kzalloc_driver_net.patch" UmVwbGFjZSBrbWFsbG9jK21lbXNldCB3aXRoIGt6YWxsb2MgClBhdGNoIDMv MTcKClNpZ25lZC1vZmYtYnk6IFlhbiBCdXJtYW4gPHlhbl85NTJAaG90bWFp bC5jb20+CgpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2 ZXJzL25ldC9iNDQuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVy cy9uZXQvYjQ0LmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJz L25ldC9iNDQuYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIw MAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2I0 NC5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0x NTE2LDE0ICsxNTE2LDEzIEBAIHN0YXRpYyB2b2lkIGI0NF9zZXR1cF9wc2V1 ZG9fbWFnaWNwKHN0cnUKIAl1OCAqcHdvbF9wYXR0ZXJuOwogCXU4IHB3b2xf bWFza1tCNDRfUE1BU0tfU0laRV07CiAKLQlwd29sX3BhdHRlcm4gPSBrbWFs bG9jKEI0NF9QQVRURVJOX1NJWkUsIEdGUF9LRVJORUwpOworCS8qIElwdjQg bWFnaWMgcGFja2V0IHBhdHRlcm4gLSBwYXR0ZXJuIDAuKi8KKwlwd29sX3Bh dHRlcm4gPSBremFsbG9jKEI0NF9QQVRURVJOX1NJWkUsIEdGUF9LRVJORUwp OwogCWlmICghcHdvbF9wYXR0ZXJuKSB7CiAJCXByaW50ayhLRVJOX0VSUiBQ RlggIk1lbW9yeSBub3QgYXZhaWxhYmxlIGZvciBXT0xcbiIpOwogCQlyZXR1 cm47CiAJfQogCi0JLyogSXB2NCBtYWdpYyBwYWNrZXQgcGF0dGVybiAtIHBh dHRlcm4gMC4qLwotCW1lbXNldChwd29sX3BhdHRlcm4sIDAsIEI0NF9QQVRU RVJOX1NJWkUpOwogCW1lbXNldChwd29sX21hc2ssIDAsIEI0NF9QTUFTS19T SVpFKTsKIAlwbGVuMCA9IGI0NF9tYWdpY19wYXR0ZXJuKGJwLT5kZXYtPmRl dl9hZGRyLCBwd29sX3BhdHRlcm4sIHB3b2xfbWFzaywKIAkJCQkgIEI0NF9F VEhJUFY0VURQX0hMRU4pOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVf b3JpZy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFp bi5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvYm9u ZGluZy9ib25kX21haW4uYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAw MCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bmV0L2JvbmRpbmcvYm9uZF9tYWluLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4w MDAwMDAwMDAgKzAyMDAKQEAgLTEzMzYsMTMgKzEzMzYsMTIgQEAgaW50IGJv bmRfZW5zbGF2ZShzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZAogCQlnb3RvIGVy cl91bmRvX2ZsYWdzOwogCX0KIAotCW5ld19zbGF2ZSA9IGttYWxsb2Moc2l6 ZW9mKHN0cnVjdCBzbGF2ZSksIEdGUF9LRVJORUwpOworCW5ld19zbGF2ZSA9 IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbGF2ZSksIEdGUF9LRVJORUwpOwog CWlmICghbmV3X3NsYXZlKSB7CiAJCXJlcyA9IC1FTk9NRU07CiAJCWdvdG8g ZXJyX3VuZG9fZmxhZ3M7CiAJfQogCi0JbWVtc2V0KG5ld19zbGF2ZSwgMCwg c2l6ZW9mKHN0cnVjdCBzbGF2ZSkpOwogCiAJLyogc2F2ZSBzbGF2ZSdzIG9y aWdpbmFsIGZsYWdzIGJlZm9yZSBjYWxsaW5nCiAJICogbmV0ZGV2X3NldF9t YXN0ZXIgYW5kIGRldl9vcGVuCmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJj NV9vcmlnL2RyaXZlcnMvbmV0L2JzZF9jb21wLmMgbGludXgtMi42LjE5LXJj NV9remFsbG9jL2RyaXZlcnMvbmV0L2JzZF9jb21wLmMKLS0tIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9ic2RfY29tcC5jCTIwMDYtMTEt MDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTkt cmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvYnNkX2NvbXAuYwkyMDA2LTExLTEx IDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMzk1LDE0ICszOTUsMTMg QEAgc3RhdGljIHZvaWQgKmJzZF9hbGxvYyAodW5zaWduZWQgY2hhciAqbwog ICogQWxsb2NhdGUgdGhlIG1haW4gY29udHJvbCBzdHJ1Y3R1cmUgZm9yIHRo aXMgaW5zdGFuY2UuCiAgKi8KICAgICBtYXhtYXhjb2RlID0gTUFYQ09ERShi aXRzKTsKLSAgICBkYiAgICAgICAgID0gKHN0cnVjdCBic2RfZGIgKikga21h bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgYnNkX2RiKSwKKyAgICBkYiAgICAgICAg ID0gKHN0cnVjdCBic2RfZGIgKikga3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg YnNkX2RiKSwKIAkJCQkJICAgIEdGUF9LRVJORUwpOwogICAgIGlmICghZGIp CiAgICAgICB7CiAJcmV0dXJuIE5VTEw7CiAgICAgICB9CiAKLSAgICBtZW1z ZXQgKGRiLCAwLCBzaXplb2Yoc3RydWN0IGJzZF9kYikpOwogLyoKICAqIEFs bG9jYXRlIHNwYWNlIGZvciB0aGUgZGljdGlvbmFyeS4gVGhpcyBtYXkgYmUg bW9yZSB0aGFuIG9uZSBwYWdlIGluCiAgKiBsZW5ndGguCmRpZmYgLXJ1YnAg bGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2NoZWxzaW8vbXY4 OHgyMDF4LmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0 L2NoZWxzaW8vbXY4OHgyMDF4LmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL25ldC9jaGVsc2lvL212ODh4MjAxeC5jCTIwMDYtMTEtMDkg MTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1 X2t6YWxsb2MvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4eDIwMXguYwkyMDA2 LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjA1LDExICsy MDUsMTAgQEAgc3RhdGljIHN0cnVjdCBjcGh5ICptdjg4eDIwMXhfcGh5X2Ny ZWF0ZQogCQkJCQkgc3RydWN0IG1kaW9fb3BzICptZGlvX29wcykKIHsKIAl1 MzIgdmFsOwotCXN0cnVjdCBjcGh5ICpjcGh5ID0ga21hbGxvYyhzaXplb2Yo KmNwaHkpLCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgY3BoeSAqY3BoeSA9IGt6 YWxsb2Moc2l6ZW9mKCpjcGh5KSwgR0ZQX0tFUk5FTCk7CiAKIAlpZiAoIWNw aHkpCiAJCXJldHVybiBOVUxMOwotCW1lbXNldChjcGh5LCAwLCBzaXplb2Yo KmNwaHkpKTsKIAljcGh5X2luaXQoY3BoeSwgYWRhcHRlciwgcGh5X2FkZHIs ICZtdjg4eDIwMXhfb3BzLCBtZGlvX29wcyk7CiAKIAkvKiBDb21tYW5kcyB0 aGUgUEhZIHRvIGVuYWJsZSBYRlAncyBjbG9jay4gKi8KZGlmZiAtcnVicCBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvY2hlbHNpby9zZ2Uu YyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvY2hlbHNp by9zZ2UuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0 L2NoZWxzaW8vc2dlLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAg KzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25l dC9jaGVsc2lvL3NnZS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAw ICswMjAwCkBAIC0zMzUsMTAgKzMzNSw5IEBAIHN0YXRpYyBpbnQgYWxsb2Nf cnhfcmVzb3VyY2VzKHN0cnVjdCBzZ2UKIAkJCWdvdG8gZXJyX25vX21lbTsK IAkJbWVtc2V0KHEtPmVudHJpZXMsIDAsIHNpemUpOwogCQlzaXplID0gc2l6 ZW9mKHN0cnVjdCBmcmVlbFFfY2UpICogcS0+c2l6ZTsKLQkJcS0+Y2VudHJp ZXMgPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCQlxLT5jZW50cmll cyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghcS0+Y2Vu dHJpZXMpCiAJCQlnb3RvIGVycl9ub19tZW07Ci0JCW1lbXNldChxLT5jZW50 cmllcywgMCwgc2l6ZSk7CiAJfQogCiAJLyoKQEAgLTQ2MywxMCArNDYyLDkg QEAgc3RhdGljIGludCBhbGxvY190eF9yZXNvdXJjZXMoc3RydWN0IHNnZQog CQkJZ290byBlcnJfbm9fbWVtOwogCQltZW1zZXQocS0+ZW50cmllcywgMCwg c2l6ZSk7CiAJCXNpemUgPSBzaXplb2Yoc3RydWN0IGNtZFFfY2UpICogcS0+ c2l6ZTsKLQkJcS0+Y2VudHJpZXMgPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJO RUwpOworCQlxLT5jZW50cmllcyA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5F TCk7CiAJCWlmICghcS0+Y2VudHJpZXMpCiAJCQlnb3RvIGVycl9ub19tZW07 Ci0JCW1lbXNldChxLT5jZW50cmllcywgMCwgc2l6ZSk7CiAJfQogCiAJLyoK QEAgLTE2NDcsMTEgKzE2NDUsMTAgQEAgc3RhdGljIHZvaWQgZXNwaWJ1Z193 b3JrYXJvdW5kKHZvaWQgKmRhdAogc3RydWN0IHNnZSAqIF9fZGV2aW5pdCB0 MV9zZ2VfY3JlYXRlKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLAogCQkJCSAg ICAgc3RydWN0IHNnZV9wYXJhbXMgKnApCiB7Ci0Jc3RydWN0IHNnZSAqc2dl ID0ga21hbGxvYyhzaXplb2YoKnNnZSksIEdGUF9LRVJORUwpOworCXN0cnVj dCBzZ2UgKnNnZSA9IGt6YWxsb2Moc2l6ZW9mKCpzZ2UpLCBHRlBfS0VSTkVM KTsKIAogCWlmICghc2dlKQogCQlyZXR1cm4gTlVMTDsKLQltZW1zZXQoc2dl LCAwLCBzaXplb2YoKnNnZSkpOwogCiAJc2dlLT5hZGFwdGVyID0gYWRhcHRl cjsKIAlzZ2UtPm5ldGRldiA9IGFkYXB0ZXItPnBvcnRbMF0uZGV2OwpkaWZm IC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9lMTAw MC9lMTAwMF9ldGh0b29sLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2Ry aXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYwotLS0gbGludXgtMi42 LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wu YwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGlu dXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAw X2V0aHRvb2wuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIw MApAQCAtMTA1MywxMSArMTA1MywxMCBAQCBlMTAwMF9zZXR1cF9kZXNjX3Jp bmdzKHN0cnVjdCBlMTAwMF9hZGFwCiAJCXR4ZHItPmNvdW50ID0gRTEwMDBf REVGQVVMVF9UWEQ7CiAKIAlzaXplID0gdHhkci0+Y291bnQgKiBzaXplb2Yo c3RydWN0IGUxMDAwX2J1ZmZlcik7Ci0JaWYgKCEodHhkci0+YnVmZmVyX2lu Zm8gPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpKSkgeworCWlmICghKHR4 ZHItPmJ1ZmZlcl9pbmZvID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKSkp IHsKIAkJcmV0X3ZhbCA9IDE7CiAJCWdvdG8gZXJyX25vbWVtOwogCX0KLQlt ZW1zZXQodHhkci0+YnVmZmVyX2luZm8sIDAsIHNpemUpOwogCiAJdHhkci0+ c2l6ZSA9IHR4ZHItPmNvdW50ICogc2l6ZW9mKHN0cnVjdCBlMTAwMF90eF9k ZXNjKTsKIAlFMTAwMF9ST1VORFVQKHR4ZHItPnNpemUsIDQwOTYpOwpAQCAt MTEwOSwxMSArMTEwOCwxMCBAQCBlMTAwMF9zZXR1cF9kZXNjX3JpbmdzKHN0 cnVjdCBlMTAwMF9hZGFwCiAJCXJ4ZHItPmNvdW50ID0gRTEwMDBfREVGQVVM VF9SWEQ7CiAKIAlzaXplID0gcnhkci0+Y291bnQgKiBzaXplb2Yoc3RydWN0 IGUxMDAwX2J1ZmZlcik7Ci0JaWYgKCEocnhkci0+YnVmZmVyX2luZm8gPSBr bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpKSkgeworCWlmICghKHJ4ZHItPmJ1 ZmZlcl9pbmZvID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKSkpIHsKIAkJ cmV0X3ZhbCA9IDQ7CiAJCWdvdG8gZXJyX25vbWVtOwogCX0KLQltZW1zZXQo cnhkci0+YnVmZmVyX2luZm8sIDAsIHNpemUpOwogCiAJcnhkci0+c2l6ZSA9 IHJ4ZHItPmNvdW50ICogc2l6ZW9mKHN0cnVjdCBlMTAwMF9yeF9kZXNjKTsK IAlpZiAoIShyeGRyLT5kZXNjID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQocGRl diwgcnhkci0+c2l6ZSwgJnJ4ZHItPmRtYSkpKSB7CmRpZmYgLXJ1YnAgbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21h aW4uYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvZTEw MDAvZTEwMDBfbWFpbi5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCTIwMDYtMTEtMDkgMTI6MTY6 MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxs b2MvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCTIwMDYtMTEtMTEg MjI6NDQ6MjYuMDAwMDAwMDAwICswMjAwCkBAIC0xMjI4LDI4ICsxMjI4LDI1 IEBAIGUxMDAwX2FsbG9jX3F1ZXVlcyhzdHJ1Y3QgZTEwMDBfYWRhcHRlciAK IAlpbnQgc2l6ZTsKIAogCXNpemUgPSBzaXplb2Yoc3RydWN0IGUxMDAwX3R4 X3JpbmcpICogYWRhcHRlci0+bnVtX3R4X3F1ZXVlczsKLQlhZGFwdGVyLT50 eF9yaW5nID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwlhZGFwdGVy LT50eF9yaW5nID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKIAlpZiAo IWFkYXB0ZXItPnR4X3JpbmcpCiAJCXJldHVybiAtRU5PTUVNOwotCW1lbXNl dChhZGFwdGVyLT50eF9yaW5nLCAwLCBzaXplKTsKIAogCXNpemUgPSBzaXpl b2Yoc3RydWN0IGUxMDAwX3J4X3JpbmcpICogYWRhcHRlci0+bnVtX3J4X3F1 ZXVlczsKLQlhZGFwdGVyLT5yeF9yaW5nID0ga21hbGxvYyhzaXplLCBHRlBf S0VSTkVMKTsKKwlhZGFwdGVyLT5yeF9yaW5nID0ga3phbGxvYyhzaXplLCBH RlBfS0VSTkVMKTsKIAlpZiAoIWFkYXB0ZXItPnJ4X3JpbmcpIHsKIAkJa2Zy ZWUoYWRhcHRlci0+dHhfcmluZyk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0K LQltZW1zZXQoYWRhcHRlci0+cnhfcmluZywgMCwgc2l6ZSk7CiAKICNpZmRl ZiBDT05GSUdfRTEwMDBfTkFQSQogCXNpemUgPSBzaXplb2Yoc3RydWN0IG5l dF9kZXZpY2UpICogYWRhcHRlci0+bnVtX3J4X3F1ZXVlczsKLQlhZGFwdGVy LT5wb2xsaW5nX25ldGRldiA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7 CisJYWRhcHRlci0+cG9sbGluZ19uZXRkZXYgPSBremFsbG9jKHNpemUsIEdG UF9LRVJORUwpOwogCWlmICghYWRhcHRlci0+cG9sbGluZ19uZXRkZXYpIHsK IAkJa2ZyZWUoYWRhcHRlci0+dHhfcmluZyk7CiAJCWtmcmVlKGFkYXB0ZXIt PnJ4X3JpbmcpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JbWVtc2V0KGFk YXB0ZXItPnBvbGxpbmdfbmV0ZGV2LCAwLCBzaXplKTsKICNlbmRpZgogCiAJ cmV0dXJuIEUxMDAwX1NVQ0NFU1M7CkBAIC0xNjI2LDE3ICsxNjIzLDE2IEBA IGUxMDAwX3NldHVwX3J4X3Jlc291cmNlcyhzdHJ1Y3QgZTEwMDBfYWQKIAlt ZW1zZXQocnhkci0+YnVmZmVyX2luZm8sIDAsIHNpemUpOwogCiAJc2l6ZSA9 IHNpemVvZihzdHJ1Y3QgZTEwMDBfcHNfcGFnZSkgKiByeGRyLT5jb3VudDsK LQlyeGRyLT5wc19wYWdlID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsK KwlyeGRyLT5wc19wYWdlID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsK IAlpZiAoIXJ4ZHItPnBzX3BhZ2UpIHsKIAkJdmZyZWUocnhkci0+YnVmZmVy X2luZm8pOwogCQlEUFJJTlRLKFBST0JFLCBFUlIsCiAJCSJVbmFibGUgdG8g YWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVjZWl2ZSBkZXNjcmlwdG9yIHJp bmdcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JbWVtc2V0KHJ4ZHIt PnBzX3BhZ2UsIDAsIHNpemUpOwogCiAJc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg ZTEwMDBfcHNfcGFnZV9kbWEpICogcnhkci0+Y291bnQ7Ci0Jcnhkci0+cHNf cGFnZV9kbWEgPSBrbWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCXJ4ZHIt PnBzX3BhZ2VfZG1hID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIXJ4ZHItPnBzX3BhZ2VfZG1hKSB7CiAJCXZmcmVlKHJ4ZHItPmJ1ZmZl cl9pbmZvKTsKIAkJa2ZyZWUocnhkci0+cHNfcGFnZSk7CkBAIC0xNjQ0LDcg KzE2NDAsNiBAQCBlMTAwMF9zZXR1cF9yeF9yZXNvdXJjZXMoc3RydWN0IGUx MDAwX2FkCiAJCSJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUg cmVjZWl2ZSBkZXNjcmlwdG9yIHJpbmdcbiIpOwogCQlyZXR1cm4gLUVOT01F TTsKIAl9Ci0JbWVtc2V0KHJ4ZHItPnBzX3BhZ2VfZG1hLCAwLCBzaXplKTsK IAogCWlmIChhZGFwdGVyLT5ody5tYWNfdHlwZSA8PSBlMTAwMF84MjU0N19y ZXZfMikKIAkJZGVzY19sZW4gPSBzaXplb2Yoc3RydWN0IGUxMDAwX3J4X2Rl c2MpOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJz L25ldC9lMTAwLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bmV0L2UxMDAuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bmV0L2UxMDAuYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIw MAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2Ux MDAuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAt MTkzMCw5ICsxOTMwLDggQEAgc3RhdGljIGludCBlMTAwX3J4X2FsbG9jX2xp c3Qoc3RydWN0IG5pYwogCW5pYy0+cnhfdG9fdXNlID0gbmljLT5yeF90b19j bGVhbiA9IE5VTEw7CiAJbmljLT5ydV9ydW5uaW5nID0gUlVfVU5JTklUSUFM SVpFRDsKIAotCWlmKCEobmljLT5yeHMgPSBrbWFsbG9jKHNpemVvZihzdHJ1 Y3QgcngpICogY291bnQsIEdGUF9BVE9NSUMpKSkKKwlpZighKG5pYy0+cnhz ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHJ4KSAqIGNvdW50LCBHRlBfQVRP TUlDKSkpCiAJCXJldHVybiAtRU5PTUVNOwotCW1lbXNldChuaWMtPnJ4cywg MCwgc2l6ZW9mKHN0cnVjdCByeCkgKiBjb3VudCk7CiAKIAlmb3IocnggPSBu aWMtPnJ4cywgaSA9IDA7IGkgPCBjb3VudDsgcngrKywgaSsrKSB7CiAJCXJ4 LT5uZXh0ID0gKGkgKyAxIDwgY291bnQpID8gcnggKyAxIDogbmljLT5yeHM7 CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0 L2VxbC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9l cWwuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2Vx bC5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBs aW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvZXFsLmMJMjAw Ni0xMS0xMSAyMjo0NDoxOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTQxOCw3ICs0 MTgsNyBAQCBzdGF0aWMgaW50IGVxbF9lbnNsYXZlKHN0cnVjdCBuZXRfZGV2 aWNlCiAJCQkvKiBzbGF2ZSBpcyBub3QgYSBtYXN0ZXIgJiBub3QgYWxyZWFk eSBhIHNsYXZlOiAqLwogCQkJaWYgKCFlcWxfaXNfbWFzdGVyKHNsYXZlX2Rl dikgJiYKIAkJCSAgICAhZXFsX2lzX3NsYXZlKHNsYXZlX2RldikpIHsKLQkJ CQlzbGF2ZV90ICpzID0ga21hbGxvYyhzaXplb2YoKnMpLCBHRlBfS0VSTkVM KTsKKwkJCQlzbGF2ZV90ICpzID0ga3phbGxvYyhzaXplb2YoKnMpLCBHRlBf S0VSTkVMKTsKIAkJCQllcXVhbGl6ZXJfdCAqZXFsID0gbmV0ZGV2X3ByaXYo bWFzdGVyX2Rldik7CiAJCQkJaW50IHJldDsKIApAQCAtNDI3LDcgKzQyNyw2 IEBAIHN0YXRpYyBpbnQgZXFsX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UK IAkJCQkJcmV0dXJuIC1FTk9NRU07CiAJCQkJfQogCi0JCQkJbWVtc2V0KHMs IDAsIHNpemVvZigqcykpOwogCQkJCXMtPmRldiA9IHNsYXZlX2RldjsKIAkJ CQlzLT5wcmlvcml0eSA9IHNycS5wcmlvcml0eTsKIAkJCQlzLT5wcmlvcml0 eV9icHMgPSBzcnEucHJpb3JpdHk7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5 LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jIGxpbnV4LTIuNi4x OS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9mb3JjZWRldGguYwotLS0gbGlu dXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCTIw MDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMJMjAw Ni0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTQzODMsMTgg KzQzODMsMTMgQEAgc3RhdGljIGludCBfX2RldmluaXQgbnZfcHJvYmUoc3Ry dWN0IHBjaQogCQkJZ290byBvdXRfdW5tYXA7CiAJCW5wLT50eF9yaW5nLmV4 ID0gJm5wLT5yeF9yaW5nLmV4W25wLT5yeF9yaW5nX3NpemVdOwogCX0KLQlu cC0+cnhfc2tidWZmID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHNrX2J1ZmYq KSAqIG5wLT5yeF9yaW5nX3NpemUsIEdGUF9LRVJORUwpOwotCW5wLT5yeF9k bWEgPSBrbWFsbG9jKHNpemVvZihkbWFfYWRkcl90KSAqIG5wLT5yeF9yaW5n X3NpemUsIEdGUF9LRVJORUwpOwotCW5wLT50eF9za2J1ZmYgPSBrbWFsbG9j KHNpemVvZihzdHJ1Y3Qgc2tfYnVmZiopICogbnAtPnR4X3Jpbmdfc2l6ZSwg R0ZQX0tFUk5FTCk7Ci0JbnAtPnR4X2RtYSA9IGttYWxsb2Moc2l6ZW9mKGRt YV9hZGRyX3QpICogbnAtPnR4X3Jpbmdfc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0J bnAtPnR4X2RtYV9sZW4gPSBrbWFsbG9jKHNpemVvZih1bnNpZ25lZCBpbnQp ICogbnAtPnR4X3Jpbmdfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJbnAtPnJ4X3Nr YnVmZiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBza19idWZmKikgKiBucC0+ cnhfcmluZ19zaXplLCBHRlBfS0VSTkVMKTsKKwlucC0+cnhfZG1hID0ga3ph bGxvYyhzaXplb2YoZG1hX2FkZHJfdCkgKiBucC0+cnhfcmluZ19zaXplLCBH RlBfS0VSTkVMKTsKKwlucC0+dHhfc2tidWZmID0ga3phbGxvYyhzaXplb2Yo c3RydWN0IHNrX2J1ZmYqKSAqIG5wLT50eF9yaW5nX3NpemUsIEdGUF9LRVJO RUwpOworCW5wLT50eF9kbWEgPSBremFsbG9jKHNpemVvZihkbWFfYWRkcl90 KSAqIG5wLT50eF9yaW5nX3NpemUsIEdGUF9LRVJORUwpOworCW5wLT50eF9k bWFfbGVuID0ga3phbGxvYyhzaXplb2YodW5zaWduZWQgaW50KSAqIG5wLT50 eF9yaW5nX3NpemUsIEdGUF9LRVJORUwpOwogCWlmICghbnAtPnJ4X3NrYnVm ZiB8fCAhbnAtPnJ4X2RtYSB8fCAhbnAtPnR4X3NrYnVmZiB8fCAhbnAtPnR4 X2RtYSB8fCAhbnAtPnR4X2RtYV9sZW4pCiAJCWdvdG8gb3V0X2ZyZWVyaW5n OwotCW1lbXNldChucC0+cnhfc2tidWZmLCAwLCBzaXplb2Yoc3RydWN0IHNr X2J1ZmYqKSAqIG5wLT5yeF9yaW5nX3NpemUpOwotCW1lbXNldChucC0+cnhf ZG1hLCAwLCBzaXplb2YoZG1hX2FkZHJfdCkgKiBucC0+cnhfcmluZ19zaXpl KTsKLQltZW1zZXQobnAtPnR4X3NrYnVmZiwgMCwgc2l6ZW9mKHN0cnVjdCBz a19idWZmKikgKiBucC0+dHhfcmluZ19zaXplKTsKLQltZW1zZXQobnAtPnR4 X2RtYSwgMCwgc2l6ZW9mKGRtYV9hZGRyX3QpICogbnAtPnR4X3Jpbmdfc2l6 ZSk7Ci0JbWVtc2V0KG5wLT50eF9kbWFfbGVuLCAwLCBzaXplb2YodW5zaWdu ZWQgaW50KSAqIG5wLT50eF9yaW5nX3NpemUpOwogCiAJZGV2LT5vcGVuID0g bnZfb3BlbjsKIAlkZXYtPnN0b3AgPSBudl9jbG9zZTsKZGlmZiAtcnVicCBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvaGFtcmFkaW8vZG1h c2NjLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2hh bXJhZGlvL2RtYXNjYy5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9uZXQvaGFtcmFkaW8vZG1hc2NjLmMJMjAwNi0xMS0wOSAxMjoxNjoy MS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL25ldC9oYW1yYWRpby9kbWFzY2MuYwkyMDA2LTExLTExIDIy OjQ0OjE4LjAwMDAwMDAwMCArMDIwMApAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0 YXRpYyBpbnQgX19pbml0IHNldHVwX2FkYXB0ZXIoaW50IGNhcmQKIAljaGFy ICpjaGlwbmFtZXNbXSA9IENISVBOQU1FUzsKIAogCS8qIEFsbG9jYXRlIG1l bW9yeSAqLwotCWluZm8gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2NjX2lu Zm8pLCBHRlBfS0VSTkVMIHwgR0ZQX0RNQSk7CisJaW5mbyA9IGt6YWxsb2Mo c2l6ZW9mKHN0cnVjdCBzY2NfaW5mbyksIEdGUF9LRVJORUwgfCBHRlBfRE1B KTsKIAlpZiAoIWluZm8pIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJkbWFzY2M6 ICIKIAkJICAgICAgICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciAl cyBhdCAlIzN4XG4iLApAQCAtNDY5LDggKzQ2OSw2IEBAIHN0YXRpYyBpbnQg X19pbml0IHNldHVwX2FkYXB0ZXIoaW50IGNhcmQKIAl9CiAKIAkvKiBJbml0 aWFsaXplIHdoYXQgaXMgbmVjZXNzYXJ5IGZvciB3cml0ZV9zY2MgYW5kIHdy aXRlX3NjY19kYXRhICovCi0JbWVtc2V0KGluZm8sIDAsIHNpemVvZihzdHJ1 Y3Qgc2NjX2luZm8pKTsKLQogCWluZm8tPmRldlswXSA9IGFsbG9jX25ldGRl digwLCAiIiwgZGV2X3NldHVwKTsKIAlpZiAoIWluZm8tPmRldlswXSkgewog CQlwcmludGsoS0VSTl9FUlIgImRtYXNjYzogIgpkaWZmIC1ydWJwIGxpbnV4 LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9pcmRhL2lyZGEtdXNiLmMg bGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2lyZGEvaXJk YS11c2IuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0 L2lyZGEvaXJkYS11c2IuYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAw MCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bmV0L2lyZGEvaXJkYS11c2IuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAw MDAwMCArMDIwMApAQCAtMTU3MCwxMCArMTU3MCw5IEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IGlyZGFfY2xhc3NfZGVzYyAqaXIKIAlzdHJ1Y3QgaXJkYV9j bGFzc19kZXNjICpkZXNjOwogCWludCByZXQ7CiAKLQlkZXNjID0ga21hbGxv YyhzaXplb2YgKCpkZXNjKSwgR0ZQX0tFUk5FTCk7CisJZGVzYyA9IGt6YWxs b2Moc2l6ZW9mICgqZGVzYyksIEdGUF9LRVJORUwpOwogCWlmIChkZXNjID09 IE5VTEwpIAogCQlyZXR1cm4gTlVMTDsKLQltZW1zZXQoZGVzYywgMCwgc2l6 ZW9mKCpkZXNjKSk7CiAKIAkvKiBVU0ItSXJEQSBjbGFzcyBzcGVjIDEuMDoK IAkgKgk2LjEuMzogU3RhbmRhcmQgIkdldCBEZXNjcmlwdG9yIiBEZXZpY2Ug UmVxdWVzdCBpcyBub3QKQEAgLTE3NDcsMTIgKzE3NDYsMTAgQEAgc3RhdGlj IGludCBpcmRhX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludAogCS8qIERvbid0 IGNoYW5nZSB0aGlzIGJ1ZmZlciBzaXplIGFuZCBhbGxvY2F0aW9uIHdpdGhv dXQgZG9pbmcKIAkgKiBzb21lIGhlYXZ5IGFuZCBjb21wbGV0ZSB0ZXN0aW5n LiBEb24ndCBhc2sgd2h5IDotKAogCSAqIEplYW4gSUkgKi8KLQlzZWxmLT5z cGVlZF9idWZmID0gKGNoYXIgKikga21hbGxvYyhJUkRBX1VTQl9TUEVFRF9N VFUsIEdGUF9LRVJORUwpOworCXNlbGYtPnNwZWVkX2J1ZmYgPSAoY2hhciAq KSBremFsbG9jKElSREFfVVNCX1NQRUVEX01UVSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKHNlbGYtPnNwZWVkX2J1ZmYgPT0gTlVMTCkgCiAJCWdvdG8gZXJyX291 dF8zOwogCi0JbWVtc2V0KHNlbGYtPnNwZWVkX2J1ZmYsIDAsIElSREFfVVNC X1NQRUVEX01UVSk7Ci0KIAlyZXQgPSBpcmRhX3VzYl9vcGVuKHNlbGYpOwog CWlmIChyZXQpIAogCQlnb3RvIGVycl9vdXRfNDsKZGlmZiAtcnVicCBsaW51 eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvaXJkYS9pcnBvcnQuYyBs aW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvaXJkYS9pcnBv cnQuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2ly ZGEvaXJwb3J0LmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAy MDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9p cmRhL2lycG9ydC5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICsw MjAwCkBAIC0xNjQsMTQgKzE2NCwxMyBAQCBpcnBvcnRfb3BlbihpbnQgaSwg dW5zaWduZWQgaW50IGlvYmFzZSwgCiAJCiAJLyogQWxsb2NhdGUgbWVtb3J5 IGlmIG5lZWRlZCAqLwogCWlmIChzZWxmLT50eF9idWZmLnRydWVzaXplID4g MCkgewotCQlzZWxmLT50eF9idWZmLmhlYWQgPSAoX191OCAqKSBrbWFsbG9j KHNlbGYtPnR4X2J1ZmYudHJ1ZXNpemUsIAorCQlzZWxmLT50eF9idWZmLmhl YWQgPSAoX191OCAqKSBremFsbG9jKHNlbGYtPnR4X2J1ZmYudHJ1ZXNpemUs IAogCQkJCQkJICAgICAgR0ZQX0tFUk5FTCk7CiAJCWlmIChzZWxmLT50eF9i dWZmLmhlYWQgPT0gTlVMTCkgewogCQkJSVJEQV9FUlJPUigiJXMoKSwgY2Fu J3QgYWxsb2NhdGUgbWVtb3J5IGZvciAiCiAJCQkJICAgInRyYW5zbWl0IGJ1 ZmZlciFcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCQlnb3RvIGVycl9vdXQ0Owog CQl9Ci0JCW1lbXNldChzZWxmLT50eF9idWZmLmhlYWQsIDAsIHNlbGYtPnR4 X2J1ZmYudHJ1ZXNpemUpOwogCX0JCiAJc2VsZi0+dHhfYnVmZi5kYXRhID0g c2VsZi0+dHhfYnVmZi5oZWFkOwogCmRpZmYgLXJ1YnAgbGludXgtMi42LjE5 LXJjNV9vcmlnL2RyaXZlcnMvbmV0L2lyZGEvaXJ0dHktc2lyLmMgbGludXgt Mi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2lyZGEvaXJ0dHktc2ly LmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9pcmRh L2lydHR5LXNpci5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICsw MjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQv aXJkYS9pcnR0eS1zaXIuYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAw MCArMDIwMApAQCAtNTA1LDEwICs1MDUsOSBAQCBzdGF0aWMgaW50IGlydHR5 X29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgCiAJfQogCiAJLyogYWxsb2NhdGUg cHJpdmF0ZSBkZXZpY2UgaW5mbyBibG9jayAqLwotCXByaXYgPSBrbWFsbG9j KHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCXByaXYgPSBremFsbG9j KHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwogCWlmICghcHJpdikKIAkJ Z290byBvdXRfcHV0OwotCW1lbXNldChwcml2LCAwLCBzaXplb2YoKnByaXYp KTsKIAogCXByaXYtPm1hZ2ljID0gSVJUVFlfTUFHSUM7CiAJcHJpdi0+dHR5 ID0gdHR5OwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2 ZXJzL25ldC9pc2VyaWVzX3ZldGguYyBsaW51eC0yLjYuMTktcmM1X2t6YWxs b2MvZHJpdmVycy9uZXQvaXNlcmllc192ZXRoLmMKLS0tIGxpbnV4LTIuNi4x OS1yYzVfb3JpZy9kcml2ZXJzL25ldC9pc2VyaWVzX3ZldGguYwkyMDA2LTEx LTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5 LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L2lzZXJpZXNfdmV0aC5jCTIwMDYt MTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC04MjAsMTAgKzgy MCw5IEBAIHN0YXRpYyBpbnQgdmV0aF9pbml0X2Nvbm5lY3Rpb24odTggcmxw KQogCSAgICAgfHwgISBIdkxwQ29uZmlnX2RvTHBzQ29tbXVuaWNhdGVPblZp cnR1YWxMYW4odGhpc19scCwgcmxwKSApCiAJCXJldHVybiAwOwogCi0JY254 ID0ga21hbGxvYyhzaXplb2YoKmNueCksIEdGUF9LRVJORUwpOworCWNueCA9 IGt6YWxsb2Moc2l6ZW9mKCpjbngpLCBHRlBfS0VSTkVMKTsKIAlpZiAoISBj bngpCiAJCXJldHVybiAtRU5PTUVNOwotCW1lbXNldChjbngsIDAsIHNpemVv ZigqY254KSk7CiAKIAljbngtPnJlbW90ZV9scCA9IHJscDsKIAlzcGluX2xv Y2tfaW5pdCgmY254LT5sb2NrKTsKQEAgLTg1MCwxNCArODQ5LDEzIEBAIHN0 YXRpYyBpbnQgdmV0aF9pbml0X2Nvbm5lY3Rpb24odTggcmxwKQogCWlmIChy YyAhPSAwKQogCQlyZXR1cm4gcmM7CiAKLQltc2dzID0ga21hbGxvYyhWRVRI X05VTUJVRkZFUlMgKiBzaXplb2Yoc3RydWN0IHZldGhfbXNnKSwgR0ZQX0tF Uk5FTCk7CisJbXNncyA9IGt6YWxsb2MoVkVUSF9OVU1CVUZGRVJTICogc2l6 ZW9mKHN0cnVjdCB2ZXRoX21zZyksIEdGUF9LRVJORUwpOwogCWlmICghIG1z Z3MpIHsKIAkJdmV0aF9lcnJvcigiQ2FuJ3QgYWxsb2NhdGUgYnVmZmVycyBm b3IgTFBBUiAlZC5cbiIsIHJscCk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0K IAogCWNueC0+bXNncyA9IG1zZ3M7Ci0JbWVtc2V0KG1zZ3MsIDAsIFZFVEhf TlVNQlVGRkVSUyAqIHNpemVvZihzdHJ1Y3QgdmV0aF9tc2cpKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBWRVRIX05VTUJVRkZFUlM7IGkrKykgewogCQltc2dz W2ldLnRva2VuID0gaTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9uZXQvbGFuY2UuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxs b2MvZHJpdmVycy9uZXQvbGFuY2UuYwotLS0gbGludXgtMi42LjE5LXJjNV9v cmlnL2RyaXZlcnMvbmV0L2xhbmNlLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4w MDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9k cml2ZXJzL25ldC9sYW5jZS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAw MDAwICswMjAwCkBAIC01MzIsMTEgKzUzMiwxMCBAQCBzdGF0aWMgaW50IF9f aW5pdCBsYW5jZV9wcm9iZTEoc3RydWN0IG5lCiAJZGV2LT5iYXNlX2FkZHIg PSBpb2FkZHI7CiAJLyogTWFrZSBjZXJ0YWluIHRoZSBkYXRhIHN0cnVjdHVy ZXMgdXNlZCBieSB0aGUgTEFOQ0UgYXJlIGFsaWduZWQgYW5kIERNQWJsZS4g Ki8KIAotCWxwID0ga21hbGxvYyhzaXplb2YoKmxwKSwgR0ZQX0RNQSB8IEdG UF9LRVJORUwpOworCWxwID0ga3phbGxvYyhzaXplb2YoKmxwKSwgR0ZQX0RN QSB8IEdGUF9LRVJORUwpOwogCWlmKGxwPT1OVUxMKQogCQlyZXR1cm4gLUVO T0RFVjsKIAlpZiAobGFuY2VfZGVidWcgPiA2KSBwcmludGsoIiAoIzB4JTA1 bHgpIiwgKHVuc2lnbmVkIGxvbmcpbHApOwotCW1lbXNldChscCwgMCwgc2l6 ZW9mKCpscCkpOwogCWRldi0+cHJpdiA9IGxwOwogCWxwLT5uYW1lID0gY2hp cG5hbWU7CiAJbHAtPnJ4X2J1ZmZzID0gKHVuc2lnbmVkIGxvbmcpa21hbGxv YyhQS1RfQlVGX1NaKlJYX1JJTkdfU0laRSwKZGlmZiAtcnVicCBsaW51eC0y LjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvbWlwc25ldC5jIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9taXBzbmV0LmMKLS0tIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9taXBzbmV0LmMJMjAw Ni0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9taXBzbmV0LmMJMjAwNi0x MS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTMyMiwxMiArMzIy LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IG1pcHNuZXRfaW5pdF9tb2R1bGUo dm8KIAkJZ290byBvdXQ7CiAJfQogCi0gICAgICAgIGlmICghKHBsZGV2ID0g a21hbGxvYyAoc2l6ZW9mICgqcGxkZXYpLCBHRlBfS0VSTkVMKSkpIHsKKyAg ICAgICAgaWYgKCEocGxkZXYgPSBremFsbG9jIChzaXplb2YgKCpwbGRldiks IEdGUF9LRVJORUwpKSkgewogCQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG91 dF91bnJlZ2lzdGVyX2RyaXZlcjsKIAl9CiAKLQltZW1zZXQgKHBsZGV2LCAw LCBzaXplb2YgKCpwbGRldikpOwogCXBsZGV2LT5uYW1lCQk9IG1pcHNuZXRf c3RyaW5nOwogCXBsZGV2LT5pZAkJPSAwOwogCXBsZGV2LT5kZXYucmVsZWFz ZQk9IG1pcHNuZXRfcGxhdGZvcm1fcmVsZWFzZTsKZGlmZiAtcnVicCBsaW51 eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvcGNtY2lhL2NvbTIwMDIw X2NzLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3Bj bWNpYS9jb20yMDAyMF9jcy5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9uZXQvcGNtY2lhL2NvbTIwMDIwX2NzLmMJMjAwNi0xMS0wOSAx MjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVf a3phbGxvYy9kcml2ZXJzL25ldC9wY21jaWEvY29tMjAwMjBfY3MuYwkyMDA2 LTExLTExIDIyOjQ0OjE4LjAwMDAwMDAwMCArMDIwMApAQCAtMTQ3LDcgKzE0 Nyw3IEBAIHN0YXRpYyBpbnQgY29tMjAwMjBfcHJvYmUoc3RydWN0IHBjbWNp YV8KICAgICBERUJVRygwLCAiY29tMjAwMjBfYXR0YWNoKClcbiIpOwogCiAg ICAgLyogQ3JlYXRlIG5ldyBuZXR3b3JrIGRldmljZSAqLwotICAgIGluZm8g PSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgY29tMjAwMjBfZGV2X3QpLCBHRlBf S0VSTkVMKTsKKyAgICBpbmZvID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNv bTIwMDIwX2Rldl90KSwgR0ZQX0tFUk5FTCk7CiAgICAgaWYgKCFpbmZvKQog CWdvdG8gZmFpbF9hbGxvY19pbmZvOwogCkBAIC0xNTUsNyArMTU1LDYgQEAg c3RhdGljIGludCBjb20yMDAyMF9wcm9iZShzdHJ1Y3QgcGNtY2lhXwogICAg IGlmICghZGV2KQogCWdvdG8gZmFpbF9hbGxvY19kZXY7CiAKLSAgICBtZW1z ZXQoaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBjb20yMDAyMF9kZXZfdCkpOwog ICAgIGxwID0gZGV2LT5wcml2OwogICAgIGxwLT50aW1lb3V0ID0gdGltZW91 dDsKICAgICBscC0+YmFja3BsYW5lID0gYmFja3BsYW5lOwpkaWZmIC1ydWJw IGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9wY21jaWEvaWJt dHJfY3MuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQv cGNtY2lhL2libXRyX2NzLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9k cml2ZXJzL25ldC9wY21jaWEvaWJtdHJfY3MuYwkyMDA2LTExLTA5IDEyOjE2 OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFs bG9jL2RyaXZlcnMvbmV0L3BjbWNpYS9pYm10cl9jcy5jCTIwMDYtMTEtMTEg MjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0xNDYsOSArMTQ2LDggQEAg c3RhdGljIGludCBpYm10cl9hdHRhY2goc3RydWN0IHBjbWNpYV9kZQogICAg IERFQlVHKDAsICJpYm10cl9hdHRhY2goKVxuIik7CiAKICAgICAvKiBDcmVh dGUgbmV3IHRva2VuLXJpbmcgZGV2aWNlICovCi0gICAgaW5mbyA9IGttYWxs b2Moc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7IAorICAgIGluZm8gPSBr emFsbG9jKHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOyAKICAgICBpZiAo IWluZm8pIHJldHVybiAtRU5PTUVNOwotICAgIG1lbXNldChpbmZvLDAsc2l6 ZW9mKCppbmZvKSk7CiAgICAgZGV2ID0gYWxsb2NfdHJkZXYoc2l6ZW9mKHN0 cnVjdCB0b2tfaW5mbykpOwogICAgIGlmICghZGV2KSB7CiAJa2ZyZWUoaW5m byk7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bmV0L3BwcF9hc3luYy5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2 ZXJzL25ldC9wcHBfYXN5bmMuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmln L2RyaXZlcnMvbmV0L3BwcF9hc3luYy5jCTIwMDYtMTEtMDkgMTI6MTY6MjEu MDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2Mv ZHJpdmVycy9uZXQvcHBwX2FzeW5jLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4w MDAwMDAwMDAgKzAyMDAKQEAgLTE1OSwxMiArMTU5LDExIEBAIHBwcF9hc3lu Y3R0eV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkKIAlpbnQgZXJyOwog CiAJZXJyID0gLUVOT01FTTsKLQlhcCA9IGttYWxsb2Moc2l6ZW9mKCphcCks IEdGUF9LRVJORUwpOworCWFwID0ga3phbGxvYyhzaXplb2YoKmFwKSwgR0ZQ X0tFUk5FTCk7CiAJaWYgKGFwID09IDApCiAJCWdvdG8gb3V0OwogCiAJLyog aW5pdGlhbGl6ZSB0aGUgYXN5bmNwcHAgc3RydWN0dXJlICovCi0JbWVtc2V0 KGFwLCAwLCBzaXplb2YoKmFwKSk7CiAJYXAtPnR0eSA9IHR0eTsKIAlhcC0+ bXJ1ID0gUFBQX01SVTsKIAlzcGluX2xvY2tfaW5pdCgmYXAtPnhtaXRfbG9j ayk7CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bmV0L3BwcF9kZWZsYXRlLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2Ry aXZlcnMvbmV0L3BwcF9kZWZsYXRlLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVf b3JpZy9kcml2ZXJzL25ldC9wcHBfZGVmbGF0ZS5jCTIwMDYtMTEtMDkgMTI6 MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6 YWxsb2MvZHJpdmVycy9uZXQvcHBwX2RlZmxhdGUuYwkyMDA2LTExLTExIDIy OjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMTIxLDEyICsxMjEsMTEgQEAg c3RhdGljIHZvaWQgKnpfY29tcF9hbGxvYyh1bnNpZ25lZCBjaGFyIAogCWlm ICh3X3NpemUgPCBERUZMQVRFX01JTl9TSVpFIHx8IHdfc2l6ZSA+IERFRkxB VEVfTUFYX1NJWkUpCiAJCXJldHVybiBOVUxMOwogCi0Jc3RhdGUgPSAoc3Ry dWN0IHBwcF9kZWZsYXRlX3N0YXRlICopIGttYWxsb2Moc2l6ZW9mKCpzdGF0 ZSksCisJc3RhdGUgPSAoc3RydWN0IHBwcF9kZWZsYXRlX3N0YXRlICopIGt6 YWxsb2Moc2l6ZW9mKCpzdGF0ZSksCiAJCQkJCQkgICAgIEdGUF9LRVJORUwp OwogCWlmIChzdGF0ZSA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKIAotCW1l bXNldCAoc3RhdGUsIDAsIHNpemVvZiAoc3RydWN0IHBwcF9kZWZsYXRlX3N0 YXRlKSk7CiAJc3RhdGUtPnN0cm0ubmV4dF9pbiAgID0gTlVMTDsKIAlzdGF0 ZS0+d19zaXplICAgICAgICAgPSB3X3NpemU7CiAJc3RhdGUtPnN0cm0ud29y a3NwYWNlID0gdm1hbGxvYyh6bGliX2RlZmxhdGVfd29ya3NwYWNlc2l6ZSgp KTsKQEAgLTM0MSwxMSArMzQwLDEwIEBAIHN0YXRpYyB2b2lkICp6X2RlY29t cF9hbGxvYyh1bnNpZ25lZCBjaGEKIAlpZiAod19zaXplIDwgREVGTEFURV9N SU5fU0laRSB8fCB3X3NpemUgPiBERUZMQVRFX01BWF9TSVpFKQogCQlyZXR1 cm4gTlVMTDsKIAotCXN0YXRlID0gKHN0cnVjdCBwcHBfZGVmbGF0ZV9zdGF0 ZSAqKSBrbWFsbG9jKHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlz dGF0ZSA9IChzdHJ1Y3QgcHBwX2RlZmxhdGVfc3RhdGUgKikga3phbGxvYyhz aXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0YXRlID09IE5V TEwpCiAJCXJldHVybiBOVUxMOwogCi0JbWVtc2V0IChzdGF0ZSwgMCwgc2l6 ZW9mIChzdHJ1Y3QgcHBwX2RlZmxhdGVfc3RhdGUpKTsKIAlzdGF0ZS0+d19z aXplICAgICAgICAgPSB3X3NpemU7CiAJc3RhdGUtPnN0cm0ubmV4dF9vdXQg ID0gTlVMTDsKIAlzdGF0ZS0+c3RybS53b3Jrc3BhY2UgPSBrbWFsbG9jKHps aWJfaW5mbGF0ZV93b3Jrc3BhY2VzaXplKCksCmRpZmYgLXJ1YnAgbGludXgt Mi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L3BwcF9tcHBlLmMgbGludXgt Mi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3BwcF9tcHBlLmMKLS0t IGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9wcHBfbXBwZS5j CTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51 eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvcHBwX21wcGUuYwky MDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjAwLDEy ICsyMDAsMTAgQEAgc3RhdGljIHZvaWQgKm1wcGVfYWxsb2ModW5zaWduZWQg Y2hhciAqbwogCSAgICB8fCBvcHRpb25zWzBdICE9IENJX01QUEUgfHwgb3B0 aW9uc1sxXSAhPSBDSUxFTl9NUFBFKQogCQlnb3RvIG91dDsKIAotCXN0YXRl ID0gKHN0cnVjdCBwcHBfbXBwZV9zdGF0ZSAqKSBrbWFsbG9jKHNpemVvZigq c3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlzdGF0ZSA9IChzdHJ1Y3QgcHBwX21w cGVfc3RhdGUgKikga3phbGxvYyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5F TCk7CiAJaWYgKHN0YXRlID09IE5VTEwpCiAJCWdvdG8gb3V0OwogCi0JbWVt c2V0KHN0YXRlLCAwLCBzaXplb2YoKnN0YXRlKSk7Ci0KIAlzdGF0ZS0+YXJj NCA9IGNyeXB0b19hbGxvY19ibGtjaXBoZXIoImVjYihhcmM0KSIsIDAsIENS WVBUT19BTEdfQVNZTkMpOwogCWlmIChJU19FUlIoc3RhdGUtPmFyYzQpKSB7 CiAJCXN0YXRlLT5hcmM0ID0gTlVMTDsKZGlmZiAtcnVicCBsaW51eC0yLjYu MTktcmM1X29yaWcvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYwot LS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L3BwcF9zeW5j dHR5LmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysr IGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC9wcHBfc3lu Y3R0eS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBA IC0yMDcsMTMgKzIwNywxMiBAQCBwcHBfc3luY19vcGVuKHN0cnVjdCB0dHlf c3RydWN0ICp0dHkpCiAJc3RydWN0IHN5bmNwcHAgKmFwOwogCWludCBlcnI7 CiAKLQlhcCA9IGttYWxsb2Moc2l6ZW9mKCphcCksIEdGUF9LRVJORUwpOwor CWFwID0ga3phbGxvYyhzaXplb2YoKmFwKSwgR0ZQX0tFUk5FTCk7CiAJZXJy ID0gLUVOT01FTTsKIAlpZiAoYXAgPT0gMCkKIAkJZ290byBvdXQ7CiAKIAkv KiBpbml0aWFsaXplIHRoZSBzeW5jcHBwIHN0cnVjdHVyZSAqLwotCW1lbXNl dChhcCwgMCwgc2l6ZW9mKCphcCkpOwogCWFwLT50dHkgPSB0dHk7CiAJYXAt Pm1ydSA9IFBQUF9NUlU7CiAJc3Bpbl9sb2NrX2luaXQoJmFwLT54bWl0X2xv Y2spOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJz L25ldC9zMmlvLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bmV0L3MyaW8uYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMv bmV0L3MyaW8uYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIw MAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3My aW8uYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAt MzY0NywyNCArMzY0NywyMSBAQCBzdGF0aWMgaW50IHMyaW9fZW5hYmxlX21z aV94KG5pY190ICpuaWMpCiAJdTE2IG1zaV9jb250cm9sOyAvKiBUZW1wIHZh cmlhYmxlICovCiAJaW50IHJldCwgaSwgaiwgbXNpeF9pbmR4ID0gMTsKIAot CW5pYy0+ZW50cmllcyA9IGttYWxsb2MoTUFYX1JFUVVFU1RFRF9NU0lfWCAq IHNpemVvZihzdHJ1Y3QgbXNpeF9lbnRyeSksCisJbmljLT5lbnRyaWVzID0g a3phbGxvYyhNQVhfUkVRVUVTVEVEX01TSV9YICogc2l6ZW9mKHN0cnVjdCBt c2l4X2VudHJ5KSwKIAkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAobmlj LT5lbnRyaWVzID09IE5VTEwpIHsKIAkJREJHX1BSSU5UKEVSUl9EQkcsICIl czogTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18p OwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JbWVtc2V0KG5pYy0+ZW50cmll cywgMCwgTUFYX1JFUVVFU1RFRF9NU0lfWCAqIHNpemVvZihzdHJ1Y3QgbXNp eF9lbnRyeSkpOwogCiAJbmljLT5zMmlvX2VudHJpZXMgPQotCQlrbWFsbG9j KE1BWF9SRVFVRVNURURfTVNJX1ggKiBzaXplb2Yoc3RydWN0IHMyaW9fbXNp eF9lbnRyeSksCisJCWt6YWxsb2MoTUFYX1JFUVVFU1RFRF9NU0lfWCAqIHNp emVvZihzdHJ1Y3QgczJpb19tc2l4X2VudHJ5KSwKIAkJCQkgICBHRlBfS0VS TkVMKTsKIAlpZiAobmljLT5zMmlvX2VudHJpZXMgPT0gTlVMTCkgewogCQlE QkdfUFJJTlQoRVJSX0RCRywgIiVzOiBNZW1vcnkgYWxsb2NhdGlvbiBmYWls ZWRcbiIsIF9fRlVOQ1RJT05fXyk7CiAJCWtmcmVlKG5pYy0+ZW50cmllcyk7 CiAJCXJldHVybiAtRU5PTUVNOwogCX0KLQltZW1zZXQobmljLT5zMmlvX2Vu dHJpZXMsIDAsCi0JICAgICAgIE1BWF9SRVFVRVNURURfTVNJX1ggKiBzaXpl b2Yoc3RydWN0IHMyaW9fbXNpeF9lbnRyeSkpOwogCiAJZm9yIChpPTA7IGk8 IE1BWF9SRVFVRVNURURfTVNJX1g7IGkrKykgewogCQluaWMtPmVudHJpZXNb aV0uZW50cnkgPSBpOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL25ldC9zYjEyNTAtbWFjLmMgbGludXgtMi42LjE5LXJjNV9r emFsbG9jL2RyaXZlcnMvbmV0L3NiMTI1MC1tYWMuYwotLS0gbGludXgtMi42 LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L3NiMTI1MC1tYWMuYwkyMDA2LTEx LTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5 LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3NiMTI1MC1tYWMuYwkyMDA2LTEx LTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtNzU2LDkgKzc1Niw3 IEBAIHN0YXRpYyB2b2lkIHNiZG1hX2luaXRjdHgoc2JtYWNkbWFfdCAqZCwK IAkgKi8KIAogCWQtPnNiZG1hX2N0eHRhYmxlID0gKHN0cnVjdCBza19idWZm ICoqKQotCQlrbWFsbG9jKGQtPnNiZG1hX21heGRlc2NyKnNpemVvZihzdHJ1 Y3Qgc2tfYnVmZiAqKSwgR0ZQX0tFUk5FTCk7Ci0KLQltZW1zZXQoZC0+c2Jk bWFfY3R4dGFibGUsMCxkLT5zYmRtYV9tYXhkZXNjcipzaXplb2Yoc3RydWN0 IHNrX2J1ZmYgKikpOworCQlremFsbG9jKGQtPnNiZG1hX21heGRlc2NyKnNp emVvZihzdHJ1Y3Qgc2tfYnVmZiAqKSwgR0ZQX0tFUk5FTCk7CiAKICNpZmRl ZiBDT05GSUdfU0JNQUNfQ09BTEVTQ0UKIAkvKgpkaWZmIC1ydWJwIGxpbnV4 LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9zaGFwZXIuYyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvc2hhcGVyLmMKLS0tIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC9zaGFwZXIuYwkyMDA2 LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42 LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3NoYXBlci5jCTIwMDYtMTEt MTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC02MDAsMTAgKzYwMCw5 IEBAIHN0YXRpYyBpbnQgX19pbml0IHNoYXBlcl9pbml0KHZvaWQpCiAJCXJl dHVybiAtRU5PREVWOwogCiAJYWxsb2Nfc2l6ZSA9IHNpemVvZigqZGV2KSAq IHNoYXBlcnM7Ci0JZGV2cyA9IGttYWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tF Uk5FTCk7CisJZGV2cyA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFkZXZzKQogCQlyZXR1cm4gLUVOT01FTTsKLQltZW1zZXQo ZGV2cywgMCwgYWxsb2Nfc2l6ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgc2hh cGVyczsgaSsrKSB7CiAKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9uZXQvc2xpcC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL25ldC9zbGlwLmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL25ldC9zbGlwLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAw MDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2 ZXJzL25ldC9zbGlwLmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAg KzAyMDAKQEAgLTEzNDMsMTUgKzEzNDMsMTMgQEAgc3RhdGljIGludCBfX2lu aXQgc2xpcF9pbml0KHZvaWQpCiAJcHJpbnRrKEtFUk5fSU5GTyAiU0xJUCBs aW5lZmlsbC9rZWVwYWxpdmUgb3B0aW9uLlxuIik7CiAjZW5kaWYKIAotCXNs aXBfZGV2cyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlICop KnNsaXBfbWF4ZGV2LCBHRlBfS0VSTkVMKTsKKwkvKiBDbGVhciB0aGUgcG9p bnRlciBhcnJheSwgd2UgYWxsb2NhdGUgZGV2aWNlcyB3aGVuIHdlIG5lZWQg dGhlbSAqLworCXNsaXBfZGV2cyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBu ZXRfZGV2aWNlICopKnNsaXBfbWF4ZGV2LCBHRlBfS0VSTkVMKTsKIAlpZiAo IXNsaXBfZGV2cykgewogCQlwcmludGsoS0VSTl9FUlIgIlNMSVA6IENhbid0 IGFsbG9jYXRlIHNsaXAgZGV2aWNlcyBhcnJheSEgIFVhYXJnaCEgKC0+IE5v IFNMSVAgYXZhaWxhYmxlKVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0K IAotCS8qIENsZWFyIHRoZSBwb2ludGVyIGFycmF5LCB3ZSBhbGxvY2F0ZSBk ZXZpY2VzIHdoZW4gd2UgbmVlZCB0aGVtICovCi0JbWVtc2V0KHNsaXBfZGV2 cywgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlICopKnNsaXBfbWF4ZGV2 KTsKLQogCS8qIEZpbGwgaW4gb3VyIGxpbmUgcHJvdG9jb2wgZGlzY2lwbGlu ZSwgYW5kIHJlZ2lzdGVyIGl0ICovCiAJaWYgKChzdGF0dXMgPSB0dHlfcmVn aXN0ZXJfbGRpc2MoTl9TTElQLCAmc2xfbGRpc2MpKSAhPSAwKSAgewogCQlw cmludGsoS0VSTl9FUlIgIlNMSVA6IGNhbid0IHJlZ2lzdGVyIGxpbmUgZGlz Y2lwbGluZSAoZXJyID0gJWQpXG4iLCBzdGF0dXMpOwpkaWZmIC1ydWJwIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC90ZzMuYyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvdGczLmMKLS0tIGxpbnV4 LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC90ZzMuYwkyMDA2LTExLTA5 IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJj NV9remFsbG9jL2RyaXZlcnMvbmV0L3RnMy5jCTIwMDYtMTEtMTEgMjI6NDQ6 MTguMDAwMDAwMDAwICswMjAwCkBAIC00NDE2LDcgKzQ0MTYsNyBAQCBzdGF0 aWMgdm9pZCB0ZzNfZnJlZV9jb25zaXN0ZW50KHN0cnVjdCB0CiAgKi8KIHN0 YXRpYyBpbnQgdGczX2FsbG9jX2NvbnNpc3RlbnQoc3RydWN0IHRnMyAqdHAp CiB7Ci0JdHAtPnJ4X3N0ZF9idWZmZXJzID0ga21hbGxvYygoc2l6ZW9mKHN0 cnVjdCByaW5nX2luZm8pICoKKwl0cC0+cnhfc3RkX2J1ZmZlcnMgPSBremFs bG9jKChzaXplb2Yoc3RydWN0IHJpbmdfaW5mbykgKgogCQkJCSAgICAgIChU RzNfUlhfUklOR19TSVpFICsKIAkJCQkgICAgICAgVEczX1JYX0pVTUJPX1JJ TkdfU0laRSkpICsKIAkJCQkgICAgIChzaXplb2Yoc3RydWN0IHR4X3Jpbmdf aW5mbykgKgpAQCAtNDQyNSwxMyArNDQyNSw2IEBAIHN0YXRpYyBpbnQgdGcz X2FsbG9jX2NvbnNpc3RlbnQoc3RydWN0IHQKIAlpZiAoIXRwLT5yeF9zdGRf YnVmZmVycykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQltZW1zZXQodHAtPnJ4 X3N0ZF9idWZmZXJzLCAwLAotCSAgICAgICAoc2l6ZW9mKHN0cnVjdCByaW5n X2luZm8pICoKLQkJKFRHM19SWF9SSU5HX1NJWkUgKwotCQkgVEczX1JYX0pV TUJPX1JJTkdfU0laRSkpICsKLQkgICAgICAgKHNpemVvZihzdHJ1Y3QgdHhf cmluZ19pbmZvKSAqCi0JCVRHM19UWF9SSU5HX1NJWkUpKTsKLQogCXRwLT5y eF9qdW1ib19idWZmZXJzID0gJnRwLT5yeF9zdGRfYnVmZmVyc1tURzNfUlhf UklOR19TSVpFXTsKIAl0cC0+dHhfYnVmZmVycyA9IChzdHJ1Y3QgdHhfcmlu Z19pbmZvICopCiAJCSZ0cC0+cnhfanVtYm9fYnVmZmVyc1tURzNfUlhfSlVN Qk9fUklOR19TSVpFXTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMgbGludXgtMi42LjE5LXJj NV9remFsbG9jL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCi0tLSBsaW51 eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMJ MjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4 LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHku YwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMTA3 MiwxMCArMTA3Miw5IEBAIHN0YXRpYyBpbnQgdmVsb2NpdHlfaW5pdF9yZF9y aW5nKHN0cnVjdCAKIAl1bnNpZ25lZCBpbnQgcnNpemUgPSBzaXplb2Yoc3Ry dWN0IHZlbG9jaXR5X3JkX2luZm8pICoKIAkJCQkJdnB0ci0+b3B0aW9ucy5u dW1yeDsKIAotCXZwdHItPnJkX2luZm8gPSBrbWFsbG9jKHJzaXplLCBHRlBf S0VSTkVMKTsKKwl2cHRyLT5yZF9pbmZvID0ga3phbGxvYyhyc2l6ZSwgR0ZQ X0tFUk5FTCk7CiAJaWYodnB0ci0+cmRfaW5mbyA9PSBOVUxMKQogCQlnb3Rv IG91dDsKLQltZW1zZXQodnB0ci0+cmRfaW5mbywgMCwgcnNpemUpOwogCiAJ dnB0ci0+cmRfZmlsbGVkID0gdnB0ci0+cmRfZGlydHkgPSB2cHRyLT5yZF9j dXJyID0gMDsKIApAQCAtMTE0NiwxNCArMTE0NSwxMyBAQCBzdGF0aWMgaW50 IHZlbG9jaXR5X2luaXRfdGRfcmluZyhzdHJ1Y3QgCiAJZm9yIChqID0gMDsg aiA8IHZwdHItPm51bV90eHE7IGorKykgewogCQljdXJyID0gdnB0ci0+dGRf cG9vbF9kbWFbal07CiAKLQkJdnB0ci0+dGRfaW5mb3Nbal0gPSBrbWFsbG9j KHRzaXplLCBHRlBfS0VSTkVMKTsKKwkJdnB0ci0+dGRfaW5mb3Nbal0gPSBr emFsbG9jKHRzaXplLCBHRlBfS0VSTkVMKTsKIAkJaWYodnB0ci0+dGRfaW5m b3Nbal0gPT0gTlVMTCkKIAkJewogCQkJd2hpbGUoLS1qID49IDApCiAJCQkJ a2ZyZWUodnB0ci0+dGRfaW5mb3Nbal0pOwogCQkJcmV0dXJuIC1FTk9NRU07 CiAJCX0KLQkJbWVtc2V0KHZwdHItPnRkX2luZm9zW2pdLCAwLCB0c2l6ZSk7 CiAKIAkJZm9yIChpID0gMDsgaSA8IHZwdHItPm9wdGlvbnMubnVtdHg7IGkr KywgY3VyciArPSBzaXplb2Yoc3RydWN0IHR4X2Rlc2MpKSB7CiAJCQl0ZCA9 ICYodnB0ci0+dGRfcmluZ3Nbal1baV0pOwpkaWZmIC1ydWJwIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vYzEwMS5jIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vYzEwMS5jCi0tLSBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2FuL2MxMDEuYwky MDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgt Mi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3dhbi9jMTAxLmMJMjAw Ni0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTMxNSwxMiAr MzE1LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IGMxMDFfcnVuKHVuc2lnbmVk IGxvbmcKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCi0JY2FyZCA9IGttYWxs b2Moc2l6ZW9mKGNhcmRfdCksIEdGUF9LRVJORUwpOworCWNhcmQgPSBremFs bG9jKHNpemVvZihjYXJkX3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoY2FyZCA9 PSBOVUxMKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiYzEwMTogdW5hYmxlIHRv IGFsbG9jYXRlIG1lbW9yeVxuIik7CiAJCXJldHVybiAtRU5PQlVGUzsKIAl9 Ci0JbWVtc2V0KGNhcmQsIDAsIHNpemVvZihjYXJkX3QpKTsKIAogCWNhcmQt PmRldiA9IGFsbG9jX2hkbGNkZXYoY2FyZCk7CiAJaWYgKCFjYXJkLT5kZXYp IHsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9u ZXQvd2FuL2Nvc2EuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVy cy9uZXQvd2FuL2Nvc2EuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2Ry aXZlcnMvbmV0L3dhbi9jb3NhLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAw MDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2 ZXJzL25ldC93YW4vY29zYS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAw MDAwICswMjAwCkBAIC01NzQsMTMgKzU3NCwxMiBAQCBzdGF0aWMgaW50IGNv c2FfcHJvYmUoaW50IGJhc2UsIGludCBpcnEsCiAJc3ByaW50Zihjb3NhLT5u YW1lLCAiY29zYSVkIiwgY29zYS0+bnVtKTsKIAogCS8qIEluaXRpYWxpemUg dGhlIHBlci1jaGFubmVsIGRhdGEgKi8KLQljb3NhLT5jaGFuID0ga21hbGxv YyhzaXplb2Yoc3RydWN0IGNoYW5uZWxfZGF0YSkqY29zYS0+bmNoYW5uZWxz LAorCWNvc2EtPmNoYW4gPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgY2hhbm5l bF9kYXRhKSpjb3NhLT5uY2hhbm5lbHMsCiAJCQkgICAgIEdGUF9LRVJORUwp OwogCWlmICghY29zYS0+Y2hhbikgewogCSAgICAgICAgZXJyID0gLUVOT01F TTsKIAkJZ290byBlcnJfb3V0MzsKIAl9Ci0JbWVtc2V0KGNvc2EtPmNoYW4s IDAsIHNpemVvZihzdHJ1Y3QgY2hhbm5lbF9kYXRhKSpjb3NhLT5uY2hhbm5l bHMpOwogCWZvciAoaT0wOyBpPGNvc2EtPm5jaGFubmVsczsgaSsrKSB7CiAJ CWNvc2EtPmNoYW5baV0uY29zYSA9IGNvc2E7CiAJCWNvc2EtPmNoYW5baV0u bnVtID0gaTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9uZXQvd2FuL2N5Y3hfbWFpbi5jIGxpbnV4LTIuNi4xOS1yYzVfa3ph bGxvYy9kcml2ZXJzL25ldC93YW4vY3ljeF9tYWluLmMKLS0tIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vY3ljeF9tYWluLmMJMjAw Ni0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vY3ljeF9tYWluLmMJ MjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTExMywx MyArMTEzLDExIEBAIHN0YXRpYyBpbnQgX19pbml0IGN5Y3hfaW5pdCh2b2lk KQogCS8qIFZlcmlmeSBudW1iZXIgb2YgY2FyZHMgYW5kIGFsbG9jYXRlIGFk YXB0ZXIgZGF0YSBzcGFjZSAqLwogCWN5Y3hfbmNhcmRzID0gbWluX3QoaW50 LCBjeWN4X25jYXJkcywgQ1lDWF9NQVhfQ0FSRFMpOwogCWN5Y3hfbmNhcmRz ID0gbWF4X3QoaW50LCBjeWN4X25jYXJkcywgMSk7Ci0JY3ljeF9jYXJkX2Fy cmF5ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGN5Y3hfZGV2aWNlKSAqIGN5 Y3hfbmNhcmRzLAorCWN5Y3hfY2FyZF9hcnJheSA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBjeWN4X2RldmljZSkgKiBjeWN4X25jYXJkcywKIAkJCQkgIEdG UF9LRVJORUwpOwogCWlmICghY3ljeF9jYXJkX2FycmF5KQogCQlnb3RvIG91 dDsKIAotCW1lbXNldChjeWN4X2NhcmRfYXJyYXksIDAsIHNpemVvZihzdHJ1 Y3QgY3ljeF9kZXZpY2UpICogY3ljeF9uY2FyZHMpOwotCiAJLyogUmVnaXN0 ZXIgYWRhcHRlcnMgd2l0aCBXQU4gcm91dGVyICovCiAJZm9yIChjbnQgPSAw OyBjbnQgPCBjeWN4X25jYXJkczsgKytjbnQpIHsKIAkJc3RydWN0IGN5Y3hf ZGV2aWNlICpjYXJkID0gJmN5Y3hfY2FyZF9hcnJheVtjbnRdOwpkaWZmIC1y dWJwIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vY3lj eF94MjUuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQv d2FuL2N5Y3hfeDI1LmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2 ZXJzL25ldC93YW4vY3ljeF94MjUuYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAw MDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2Ry aXZlcnMvbmV0L3dhbi9jeWN4X3gyNS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQu MDAwMDAwMDAwICswMjAwCkBAIC0zNzYsMTEgKzM3NiwxMCBAQCBzdGF0aWMg aW50IGN5Y3hfd2FuX25ld19pZihzdHJ1Y3Qgd2FuX2RlCiAJfQogCiAJLyog YWxsb2NhdGUgYW5kIGluaXRpYWxpemUgcHJpdmF0ZSBkYXRhICovCi0JY2hh biA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBjeWN4X3gyNV9jaGFubmVsKSwg R0ZQX0tFUk5FTCk7CisJY2hhbiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBj eWN4X3gyNV9jaGFubmVsKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjaGFuKQog CQlyZXR1cm4gLUVOT01FTTsKIAotCW1lbXNldChjaGFuLCAwLCBzaXplb2Yo KmNoYW4pKTsKIAlzdHJjcHkoY2hhbi0+bmFtZSwgY29uZi0+bmFtZSk7CiAJ Y2hhbi0+Y2FyZCA9IGNhcmQ7CiAJY2hhbi0+bGluayA9IGNvbmYtPnBvcnQ7 CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0 L3dhbi9kc2NjNC5jIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJz L25ldC93YW4vZHNjYzQuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2Ry aXZlcnMvbmV0L3dhbi9kc2NjNC5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJp dmVycy9uZXQvd2FuL2RzY2M0LmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAw MDAwMDAgKzAyMDAKQEAgLTg5MCwxMiArODkwLDExIEBAIHN0YXRpYyBpbnQg ZHNjYzRfZm91bmQxKHN0cnVjdCBwY2lfZGV2ICoKIAlzdHJ1Y3QgZHNjYzRf ZGV2X3ByaXYgKnJvb3Q7CiAJaW50IGksIHJldCA9IC1FTk9NRU07CiAKLQly b290ID0ga21hbGxvYyhkZXZfcGVyX2NhcmQqc2l6ZW9mKCpyb290KSwgR0ZQ X0tFUk5FTCk7CisJcm9vdCA9IGt6YWxsb2MoZGV2X3Blcl9jYXJkKnNpemVv Zigqcm9vdCksIEdGUF9LRVJORUwpOwogCWlmICghcm9vdCkgewogCQlwcmlu dGsoS0VSTl9FUlIgIiVzOiBjYW4ndCBhbGxvY2F0ZSBkYXRhXG4iLCBEUlZf TkFNRSk7CiAJCWdvdG8gZXJyX291dDsKIAl9Ci0JbWVtc2V0KHJvb3QsIDAs IGRldl9wZXJfY2FyZCpzaXplb2YoKnJvb3QpKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBkZXZfcGVyX2NhcmQ7IGkrKykgewogCQlyb290W2ldLmRldiA9IGFs bG9jX2hkbGNkZXYocm9vdCArIGkpOwpAQCAtOTAzLDEyICs5MDIsMTEgQEAg c3RhdGljIGludCBkc2NjNF9mb3VuZDEoc3RydWN0IHBjaV9kZXYgKgogCQkJ Z290byBlcnJfZnJlZV9kZXY7CiAJfQogCi0JcHByaXYgPSBrbWFsbG9jKHNp emVvZigqcHByaXYpLCBHRlBfS0VSTkVMKTsKKwlwcHJpdiA9IGt6YWxsb2Mo c2l6ZW9mKCpwcHJpdiksIEdGUF9LRVJORUwpOwogCWlmICghcHByaXYpIHsK IAkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FuJ3QgYWxsb2NhdGUgcHJpdmF0 ZSBkYXRhXG4iLCBEUlZfTkFNRSk7CiAJCWdvdG8gZXJyX2ZyZWVfZGV2Owog CX0KLQltZW1zZXQocHByaXYsIDAsIHNpemVvZihzdHJ1Y3QgZHNjYzRfcGNp X3ByaXYpKTsKIAogCXBwcml2LT5yb290ID0gcm9vdDsKIAlzcGluX2xvY2tf aW5pdCgmcHByaXYtPmxvY2spOwpkaWZmIC1ydWJwIGxpbnV4LTIuNi4xOS1y YzVfb3JpZy9kcml2ZXJzL25ldC93YW4vZmFyc3luYy5jIGxpbnV4LTIuNi4x OS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vZmFyc3luYy5jCi0tLSBs aW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2FuL2ZhcnN5bmMu YwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGlu dXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3dhbi9mYXJzeW5j LmMJMjAwNi0xMS0xMSAyMjo0NDowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTI0 NzYsMTMgKzI0NzYsMTIgQEAgZnN0X2FkZF9vbmUoc3RydWN0IHBjaV9kZXYg KnBkZXYsIGNvbnN0IAogCX0KIAogCS8qIEFsbG9jYXRlIGRyaXZlciBwcml2 YXRlIGRhdGEgKi8KLQljYXJkID0ga21hbGxvYyhzaXplb2YgKHN0cnVjdCBm c3RfY2FyZF9pbmZvKSwgR0ZQX0tFUk5FTCk7CisJY2FyZCA9IGt6YWxsb2Mo c2l6ZW9mIChzdHJ1Y3QgZnN0X2NhcmRfaW5mbyksIEdGUF9LRVJORUwpOwog CWlmIChjYXJkID09IE5VTEwpIHsKIAkJcHJpbnRrX2VycigiRmFyU3luYyBj YXJkIGZvdW5kIGJ1dCBpbnN1ZmZpY2llbnQgbWVtb3J5IGZvciIKIAkJCSAg ICIgZHJpdmVyIHN0b3JhZ2VcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9 Ci0JbWVtc2V0KGNhcmQsIDAsIHNpemVvZiAoc3RydWN0IGZzdF9jYXJkX2lu Zm8pKTsKIAogCS8qIFRyeSB0byBlbmFibGUgdGhlIGRldmljZSAqLwogCWlm ICgoZXJyID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldikpICE9IDApIHsKZGlm ZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2Fu L2hkbGNfZnIuYyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9u ZXQvd2FuL2hkbGNfZnIuYwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2Ry aXZlcnMvbmV0L3dhbi9oZGxjX2ZyLmMJMjAwNi0xMS0wOSAxMjoxNjoyMS4w MDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxvYy9k cml2ZXJzL25ldC93YW4vaGRsY19mci5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQu MDAwMDAwMDAwICswMjAwCkBAIC0yMTIsMTQgKzIxMiwxMyBAQCBzdGF0aWMg cHZjX2RldmljZSogYWRkX3B2YyhzdHJ1Y3QgbmV0X2RlCiAJCXB2Y19wID0g JigqcHZjX3ApLT5uZXh0OwogCX0KIAotCXB2YyA9IGttYWxsb2Moc2l6ZW9m KHB2Y19kZXZpY2UpLCBHRlBfQVRPTUlDKTsKKwlwdmMgPSBremFsbG9jKHNp emVvZihwdmNfZGV2aWNlKSwgR0ZQX0FUT01JQyk7CiAjaWZkZWYgREVCVUdf UFZDCiAJcHJpbnRrKEtFUk5fREVCVUcgImFkZF9wdmM6IGFsbG9jYXRlZCBw dmMgJXAsIGZyYWQgJXBcbiIsIHB2YywgZGV2KTsKICNlbmRpZgogCWlmICgh cHZjKQogCQlyZXR1cm4gTlVMTDsKIAotCW1lbXNldChwdmMsIDAsIHNpemVv ZihwdmNfZGV2aWNlKSk7CiAJcHZjLT5kbGNpID0gZGxjaTsKIAlwdmMtPmZy YWQgPSBkZXY7CiAJcHZjLT5uZXh0ID0gKnB2Y19wOwkvKiBQdXQgaXQgaW4g dGhlIGNoYWluICovCmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmln L2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYyBsaW51eC0yLjYuMTkt cmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvd2FuL2hvc3Rlc3Nfc3YxMS5jCi0t LSBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2FuL2hvc3Rl c3Nfc3YxMS5jCTIwMDYtMTEtMDkgMTI6MTY6MjEuMDAwMDAwMDAwICswMjAw CisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvd2Fu L2hvc3Rlc3Nfc3YxMS5jCTIwMDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAw ICswMjAwCkBAIC0yMzEsMTEgKzIzMSwxMCBAQCBzdGF0aWMgc3RydWN0IHN2 MTFfZGV2aWNlICpzdjExX2luaXQoaW50CiAJCXJldHVybiBOVUxMOwogCX0K IAkKLQlzdj0oc3RydWN0IHN2MTFfZGV2aWNlICopa21hbGxvYyhzaXplb2Yo c3RydWN0IHN2MTFfZGV2aWNlKSwgR0ZQX0tFUk5FTCk7CisJc3Y9KHN0cnVj dCBzdjExX2RldmljZSAqKWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzdjExX2Rl dmljZSksIEdGUF9LRVJORUwpOwogCWlmKCFzdikKIAkJZ290byBmYWlsMzsK IAkJCQotCW1lbXNldChzdiwgMCwgc2l6ZW9mKCpzdikpOwogCXN2LT5pZl9w dHI9JnN2LT5uZXRkZXY7CiAJCiAJc3YtPm5ldGRldi5kZXYgPSBhbGxvY19u ZXRkZXYoMCwgImhkbGMlZCIsIHN2MTFfc2V0dXApOwpkaWZmIC1ydWJwIGxp bnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vbjIuYyBsaW51 eC0yLjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvd2FuL24yLmMKLS0t IGxpbnV4LTIuNi4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vbjIuYwky MDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgt Mi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3dhbi9uMi5jCTIwMDYt MTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0zNTEsMTIgKzM1 MSwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBuMl9ydW4odW5zaWduZWQgbG9u ZyBpCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAotCWNhcmQgPSBrbWFsbG9j KHNpemVvZihjYXJkX3QpLCBHRlBfS0VSTkVMKTsKKwljYXJkID0ga3phbGxv YyhzaXplb2YoY2FyZF90KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKGNhcmQgPT0g TlVMTCkgewogCQlwcmludGsoS0VSTl9FUlIgIm4yOiB1bmFibGUgdG8gYWxs b2NhdGUgbWVtb3J5XG4iKTsKIAkJcmV0dXJuIC1FTk9CVUZTOwogCX0KLQlt ZW1zZXQoY2FyZCwgMCwgc2l6ZW9mKGNhcmRfdCkpOwogCiAJY2FyZC0+cG9y dHNbMF0uZGV2ID0gYWxsb2NfaGRsY2RldigmY2FyZC0+cG9ydHNbMF0pOwog CWNhcmQtPnBvcnRzWzFdLmRldiA9IGFsbG9jX2hkbGNkZXYoJmNhcmQtPnBv cnRzWzFdKTsKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJp dmVycy9uZXQvd2FuL3BjMzAwX2Rydi5jIGxpbnV4LTIuNi4xOS1yYzVfa3ph bGxvYy9kcml2ZXJzL25ldC93YW4vcGMzMDBfZHJ2LmMKLS0tIGxpbnV4LTIu Ni4xOS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vcGMzMDBfZHJ2LmMJMjAw Ni0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIu Ni4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vcGMzMDBfZHJ2LmMJ MjAwNi0xMS0xMSAyMjo0NDoxOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTM0NTUs NyArMzQ1NSw3IEBAIGNwY19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRl diwgY29uc3QKIAlpZiAoKGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYp KSA8IDApCiAJCXJldHVybiBlcnI7CiAKLQljYXJkID0gKHBjMzAwX3QgKikg a21hbGxvYyhzaXplb2YocGMzMDBfdCksIEdGUF9LRVJORUwpOworCWNhcmQg PSAocGMzMDBfdCAqKSBremFsbG9jKHNpemVvZihwYzMwMF90KSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKGNhcmQgPT0gTlVMTCkgewogCQlwcmludGsoIlBDMzAw IGZvdW5kIGF0IFJBTSAweCUwMTZsbHgsICIKIAkJICAgICAgICJidXQgY291 bGQgbm90IGFsbG9jYXRlIGNhcmQgc3RydWN0dXJlLlxuIiwKQEAgLTM0NjMs NyArMzQ2Myw2IEBAIGNwY19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRl diwgY29uc3QKIAkJZXJyID0gLUVOT01FTTsKIAkJZ290byBlcnJfZGlzYWJs ZV9kZXY7CiAJfQotCW1lbXNldChjYXJkLCAwLCBzaXplb2YocGMzMDBfdCkp OwogCiAJZXJyID0gLUVOT0RFVjsKIApkaWZmIC1ydWJwIGxpbnV4LTIuNi4x OS1yYzVfb3JpZy9kcml2ZXJzL25ldC93YW4vcGNpMjAwc3luLmMgbGludXgt Mi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3dhbi9wY2kyMDBzeW4u YwotLS0gbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L3dhbi9w Y2kyMDBzeW4uYwkyMDA2LTExLTA5IDEyOjE2OjIxLjAwMDAwMDAwMCArMDIw MAorKysgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMvbmV0L3dh bi9wY2kyMDBzeW4uYwkyMDA2LTExLTExIDIyOjQ0OjA0LjAwMDAwMDAwMCAr MDIwMApAQCAtMzE0LDE0ICszMTQsMTMgQEAgc3RhdGljIGludCBfX2Rldmlu aXQgcGNpMjAwX3BjaV9pbml0X29uZQogCQlyZXR1cm4gaTsKIAl9CiAKLQlj YXJkID0ga21hbGxvYyhzaXplb2YoY2FyZF90KSwgR0ZQX0tFUk5FTCk7CisJ Y2FyZCA9IGt6YWxsb2Moc2l6ZW9mKGNhcmRfdCksIEdGUF9LRVJORUwpOwog CWlmIChjYXJkID09IE5VTEwpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJwY2ky MDBzeW46IHVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnlcbiIpOwogCQlwY2lf cmVsZWFzZV9yZWdpb25zKHBkZXYpOwogCQlwY2lfZGlzYWJsZV9kZXZpY2Uo cGRldik7CiAJCXJldHVybiAtRU5PQlVGUzsKIAl9Ci0JbWVtc2V0KGNhcmQs IDAsIHNpemVvZihjYXJkX3QpKTsKIAlwY2lfc2V0X2RydmRhdGEocGRldiwg Y2FyZCk7CiAJY2FyZC0+cG9ydHNbMF0uZGV2ID0gYWxsb2NfaGRsY2Rldigm Y2FyZC0+cG9ydHNbMF0pOwogCWNhcmQtPnBvcnRzWzFdLmRldiA9IGFsbG9j X2hkbGNkZXYoJmNhcmQtPnBvcnRzWzFdKTsKZGlmZiAtcnVicCBsaW51eC0y LjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2FuL3NkbGEuYyBsaW51eC0y LjYuMTktcmM1X2t6YWxsb2MvZHJpdmVycy9uZXQvd2FuL3NkbGEuYwotLS0g bGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0L3dhbi9zZGxhLmMJ MjAwNi0xMS0wOSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4 LTIuNi4xOS1yYzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vc2RsYS5jCTIw MDYtMTEtMTEgMjI6NDQ6MDQuMDAwMDAwMDAwICswMjAwCkBAIC0xMTk2LDEw ICsxMTk2LDkgQEAgc3RhdGljIGludCBzZGxhX3hmZXIoc3RydWN0IG5ldF9k ZXZpY2UgKgogCQkKIAlpZiAocmVhZCkKIAl7CQotCQl0ZW1wID0ga21hbGxv YyhtZW0ubGVuLCBHRlBfS0VSTkVMKTsKKwkJdGVtcCA9IGt6YWxsb2MobWVt LmxlbiwgR0ZQX0tFUk5FTCk7CiAJCWlmICghdGVtcCkKIAkJCXJldHVybigt RU5PTUVNKTsKLQkJbWVtc2V0KHRlbXAsIDAsIG1lbS5sZW4pOwogCQlzZGxh X3JlYWQoZGV2LCBtZW0uYWRkciwgdGVtcCwgbWVtLmxlbik7CiAJCWlmKGNv cHlfdG9fdXNlcihtZW0uZGF0YSwgdGVtcCwgbWVtLmxlbikpCiAJCXsKZGlm ZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2Fu L3NlYWxldmVsLmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZlcnMv bmV0L3dhbi9zZWFsZXZlbC5jCi0tLSBsaW51eC0yLjYuMTktcmM1X29yaWcv ZHJpdmVycy9uZXQvd2FuL3NlYWxldmVsLmMJMjAwNi0xMS0wOSAxMjoxNjoy MS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1yYzVfa3phbGxv Yy9kcml2ZXJzL25ldC93YW4vc2VhbGV2ZWwuYwkyMDA2LTExLTExIDIyOjQ0 OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjcwLDExICsyNzAsMTAgQEAgc3Rh dGljIF9faW5pdCBzdHJ1Y3Qgc2x2bF9ib2FyZCAqc2x2bF9pbgogCQlyZXR1 cm4gTlVMTDsKIAl9CiAJCi0JYiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBz bHZsX2JvYXJkKSwgR0ZQX0tFUk5FTCk7CisJYiA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBzbHZsX2JvYXJkKSwgR0ZQX0tFUk5FTCk7CiAJaWYoIWIpCiAJ CWdvdG8gZmFpbDM7CiAKLQltZW1zZXQoYiwgMCwgc2l6ZW9mKCpiKSk7CiAJ aWYgKCEoYi0+ZGV2WzBdPSBzbHZsX2FsbG9jKGlvYmFzZSwgaXJxKSkpCiAJ CWdvdG8gZmFpbDI7CiAKZGlmZiAtcnVicCBsaW51eC0yLjYuMTktcmM1X29y aWcvZHJpdmVycy9uZXQvd2FuL3dhbnhsLmMgbGludXgtMi42LjE5LXJjNV9r emFsbG9jL2RyaXZlcnMvbmV0L3dhbi93YW54bC5jCi0tLSBsaW51eC0yLjYu MTktcmM1X29yaWcvZHJpdmVycy9uZXQvd2FuL3dhbnhsLmMJMjAwNi0xMS0w OSAxMjoxNjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xOS1y YzVfa3phbGxvYy9kcml2ZXJzL25ldC93YW4vd2FueGwuYwkyMDA2LTExLTEx IDIyOjQ0OjE4LjAwMDAwMDAwMCArMDIwMApAQCAtNTk5LDcgKzU5OSw3IEBA IHN0YXRpYyBpbnQgX19kZXZpbml0IHdhbnhsX3BjaV9pbml0X29uZSgKIAl9 CiAKIAlhbGxvY19zaXplID0gc2l6ZW9mKGNhcmRfdCkgKyBwb3J0cyAqIHNp emVvZihwb3J0X3QpOwotCWNhcmQgPSBrbWFsbG9jKGFsbG9jX3NpemUsIEdG UF9LRVJORUwpOworCWNhcmQgPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9L RVJORUwpOwogCWlmIChjYXJkID09IE5VTEwpIHsKIAkJcHJpbnRrKEtFUk5f RVJSICJ3YW5YTCAlczogdW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeVxuIiwK IAkJICAgICAgIHBjaV9uYW1lKHBkZXYpKTsKQEAgLTYwNyw3ICs2MDcsNiBA QCBzdGF0aWMgaW50IF9fZGV2aW5pdCB3YW54bF9wY2lfaW5pdF9vbmUoCiAJ CXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKIAkJcmV0dXJuIC1FTk9CVUZT OwogCX0KLQltZW1zZXQoY2FyZCwgMCwgYWxsb2Nfc2l6ZSk7CiAKIAlwY2lf c2V0X2RydmRhdGEocGRldiwgY2FyZCk7CiAJY2FyZC0+cGRldiA9IHBkZXY7 CmRpZmYgLXJ1YnAgbGludXgtMi42LjE5LXJjNV9vcmlnL2RyaXZlcnMvbmV0 L3dhbi94MjVfYXN5LmMgbGludXgtMi42LjE5LXJjNV9remFsbG9jL2RyaXZl cnMvbmV0L3dhbi94MjVfYXN5LmMKLS0tIGxpbnV4LTIuNi4xOS1yYzVfb3Jp Zy9kcml2ZXJzL25ldC93YW4veDI1X2FzeS5jCTIwMDYtMTEtMDkgMTI6MTY6 MjEuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTktcmM1X2t6YWxs b2MvZHJpdmVycy9uZXQvd2FuL3gyNV9hc3kuYwkyMDA2LTExLTExIDIyOjQ0 OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtNzg2LDE0ICs3ODYsMTMgQEAgc3Rh dGljIGludCBfX2luaXQgaW5pdF94MjVfYXN5KHZvaWQpCiAJcHJpbnRrKEtF Uk5fSU5GTyAiWC4yNSBhc3luYzogdmVyc2lvbiAwLjAwIEFMUEhBICIKIAkJ CSIoZHluYW1pYyBjaGFubmVscywgbWF4PSVkKS5cbiIsIHgyNV9hc3lfbWF4 ZGV2ICk7CiAKLQl4MjVfYXN5X2RldnMgPSBrbWFsbG9jKHNpemVvZihzdHJ1 Y3QgbmV0X2RldmljZSAqKSp4MjVfYXN5X21heGRldiwgCisJeDI1X2FzeV9k ZXZzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG5ldF9kZXZpY2UgKikqeDI1 X2FzeV9tYXhkZXYsIAogCQkJICAgICAgIEdGUF9LRVJORUwpOwogCWlmICgh eDI1X2FzeV9kZXZzKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIlgyNSBh c3luYzogQ2FuJ3QgYWxsb2NhdGUgeDI1X2FzeV9jdHJsc1tdICIKIAkJCQki YXJyYXkhIFVhYXJnaCEgKC0+IE5vIFguMjUgYXZhaWxhYmxlKVxuIik7CiAJ CXJldHVybiAtRU5PTUVNOwogCX0KLQltZW1zZXQoeDI1X2FzeV9kZXZzLCAw LCBzaXplb2Yoc3RydWN0IG5ldF9kZXZpY2UgKikqeDI1X2FzeV9tYXhkZXYp OyAKIAogCXJldHVybiB0dHlfcmVnaXN0ZXJfbGRpc2MoTl9YMjUsICZ4MjVf bGRpc2MpOwogfQo= ------=_NextPart_000_5559_6de3_518e-- - 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/