Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Sun, 6 Jan 2002 07:31:02 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Sun, 6 Jan 2002 07:30:54 -0500 Received: from 154-MADR-X13.libre.retevision.es ([62.83.2.154]:45952 "HELO mumismo.wanadoo.es") by vger.kernel.org with SMTP id ; Sun, 6 Jan 2002 07:30:35 -0500 From: Jordi To: torvalds@transmeta.com Subject: [PATCH]: 2.5.1pre9 change several if (x) BUG to BUG_ON(x) Date: Sun, 6 Jan 2002 13:34:53 +0100 X-Mailer: KMail [version 1.3.1] Cc: linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9" Message-Id: <20020106123453.A27BF801C1@mumismo.wanadoo.es> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Yes, only that, even a trained monkey is able to make this patch, but i think is a good way to make people confortable with BUG_ON I have changed all the BUG to BUG_ON possible except the directories arch include, net, fs and drivers. If you apply this patch i'll change that directories at once. I have no really change anything so it's totally sane apply the patch. --------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9 Content-Type: text/x-diff; charset="iso-8859-1"; name="BUG_ON.patch" Content-Transfer-Encoding: base64 Content-Description: make BUG_ON common in the standard kernel Content-Disposition: attachment; filename="BUG_ON.patch" ZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9pcGMvbXNnLmMgdjIuNS4xL2xpbnV4L2lwYy9tc2cu YwotLS0gbGludXgvaXBjL21zZy5jCUZyaSBTZXAgMTQgMjM6MTc6MDAgMjAwMQorKysgdjIuNS4x L2xpbnV4L2lwYy9tc2cuYwlTYXQgSmFuICA1IDE3OjIzOjU5IDIwMDIKQEAgLTMxNyw4ICszMTcs NyBAQAogCQlyZXQgPSAtRUVYSVNUOwogCX0gZWxzZSB7CiAJCW1zcSA9IG1zZ19sb2NrKGlkKTsK LQkJaWYobXNxPT1OVUxMKQotCQkJQlVHKCk7CisJCUJVR19PTihtc3E9PU5VTEwpOwogCQlpZiAo aXBjcGVybXMoJm1zcS0+cV9wZXJtLCBtc2dmbGcpKQogCQkJcmV0ID0gLUVBQ0NFUzsKIAkJZWxz ZQpAQCAtODMzLDggKzgzMiw3IEBACiAJCX0KIAkJZXJyID0gUFRSX0VSUihtc2cpOwogCQlpZihl cnIgPT0gLUVBR0FJTikgewotCQkJaWYobXNxaWQ9PS0xKQotCQkJCUJVRygpOworCQkJQlVHX09O KG1zcWlkPT0tMSk7CiAJCQlsaXN0X2RlbCgmbXNyX2Qucl9saXN0KTsKIAkJCWlmIChzaWduYWxf cGVuZGluZyhjdXJyZW50KSkKIAkJCQllcnI9LUVJTlRSOwpkaWZmIC11IC0tcmVjdXJzaXZlIGxp bnV4L2lwYy9zZW0uYyB2Mi41LjEvbGludXgvaXBjL3NlbS5jCi0tLSBsaW51eC9pcGMvc2VtLmMJ U3VuIFNlcCAzMCAyMToyNjo0MiAyMDAxCisrKyB2Mi41LjEvbGludXgvaXBjL3NlbS5jCVNhdCBK YW4gIDUgMTc6MjQ6NTIgMjAwMgpAQCAtMTY5LDggKzE2OSw3IEBACiAJCWVyciA9IC1FRVhJU1Q7 CiAJfSBlbHNlIHsKIAkJc21hID0gc2VtX2xvY2soaWQpOwotCQlpZihzbWE9PU5VTEwpCi0JCQlC VUcoKTsKKwkJQlVHX09OKHNtYT09TlVMTCk7CiAJCWlmIChuc2VtcyA+IHNtYS0+c2VtX25zZW1z KQogCQkJZXJyID0gLUVJTlZBTDsKIAkJZWxzZSBpZiAoaXBjcGVybXMoJnNtYS0+c2VtX3Blcm0s IHNlbWZsZykpCkBAIC05MzUsOCArOTM0LDcgQEAKIAogCQl0bXAgPSBzZW1fbG9jayhzZW1pZCk7 CiAJCWlmKHRtcD09TlVMTCkgewotCQkJaWYocXVldWUucHJldiAhPSBOVUxMKQotCQkJCUJVRygp OworCQkJQlVHX09OKHF1ZXVlLnByZXYgIT0gTlVMTCk7CiAJCQljdXJyZW50LT5zZW1zbGVlcGlu ZyA9IE5VTEw7CiAJCQllcnJvciA9IC1FSURSTTsKIAkJCWdvdG8gb3V0X2ZyZWU7CkBAIC0xMDA0 LDggKzEwMDIsNyBAQAogCQljdXJyZW50LT5zZW1zbGVlcGluZyA9IE5VTEw7CiAKIAkJaWYgKHEt PnByZXYpIHsKLQkJCWlmKHNtYT09TlVMTCkKLQkJCQlCVUcoKTsKKwkJCUJVR19PTihzbWE9PU5V TEwpOwogCQkJcmVtb3ZlX2Zyb21fcXVldWUocS0+c21hLHEpOwogCQl9CiAJCWlmKHNtYSE9TlVM TCkKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9pcGMvc2htLmMgdjIuNS4xL2xpbnV4L2lwYy9z aG0uYwotLS0gbGludXgvaXBjL3NobS5jCVNhdCBKYW4gIDUgMTc6MDU6MTEgMjAwMgorKysgdjIu NS4xL2xpbnV4L2lwYy9zaG0uYwlTYXQgSmFuICA1IDE3OjI2OjEwIDIwMDIKQEAgLTk5LDggKzk5 LDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaG1faW5jIChpbnQgaWQpIHsKIAlzdHJ1Y3Qgc2ht aWRfa2VybmVsICpzaHA7CiAKLQlpZighKHNocCA9IHNobV9sb2NrKGlkKSkpCi0JCUJVRygpOwor CUJVR19PTighKHNocCA9IHNobV9sb2NrKGlkKSkpOwogCXNocC0+c2htX2F0aW0gPSBDVVJSRU5U X1RJTUU7CiAJc2hwLT5zaG1fbHByaWQgPSBjdXJyZW50LT5waWQ7CiAJc2hwLT5zaG1fbmF0dGNo Kys7CkBAIC0xNDMsOCArMTQyLDcgQEAKIAogCWRvd24gKCZzaG1faWRzLnNlbSk7CiAJLyogcmVt b3ZlIGZyb20gdGhlIGxpc3Qgb2YgYXR0YWNoZXMgb2YgdGhlIHNobSBzZWdtZW50ICovCi0JaWYo IShzaHAgPSBzaG1fbG9jayhpZCkpKQotCQlCVUcoKTsKKwlCVUdfT04oIShzaHAgPSBzaG1fbG9j ayhpZCkpKTsKIAlzaHAtPnNobV9scHJpZCA9IGN1cnJlbnQtPnBpZDsKIAlzaHAtPnNobV9kdGlt ID0gQ1VSUkVOVF9USU1FOwogCXNocC0+c2htX25hdHRjaC0tOwpAQCAtMjQyLDggKzI0MCw3IEBA CiAJCWVyciA9IC1FRVhJU1Q7CiAJfSBlbHNlIHsKIAkJc2hwID0gc2htX2xvY2soaWQpOwotCQlp ZihzaHA9PU5VTEwpCi0JCQlCVUcoKTsKKwkJQlVHX09OKHNocD09TlVMTCk7CiAJCWlmIChzaHAt PnNobV9zZWdzeiA8IHNpemUpCiAJCQllcnIgPSAtRUlOVkFMOwogCQllbHNlIGlmIChpcGNwZXJt cygmc2hwLT5zaG1fcGVybSwgc2htZmxnKSkKQEAgLTY0OCw4ICs2NDUsNyBAQAogCXVwX3dyaXRl KCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwogCiAJZG93biAoJnNobV9pZHMuc2VtKTsKLQlpZigh KHNocCA9IHNobV9sb2NrKHNobWlkKSkpCi0JCUJVRygpOworCUJVR19PTighKHNocCA9IHNobV9s b2NrKHNobWlkKSkpOwogCXNocC0+c2htX25hdHRjaC0tOwogCWlmKHNocC0+c2htX25hdHRjaCA9 PSAwICYmCiAJICAgc2hwLT5zaG1fZmxhZ3MgJiBTSE1fREVTVCkKZGlmZiAtdSAtLXJlY3Vyc2l2 ZSBsaW51eC9pcGMvdXRpbC5jIHYyLjUuMS9saW51eC9pcGMvdXRpbC5jCi0tLSBsaW51eC9pcGMv dXRpbC5jCU1vbiBBdWcgMTMgMDI6Mzc6NTMgMjAwMQorKysgdjIuNS4xL2xpbnV4L2lwYy91dGls LmMJU2F0IEphbiAgNSAxNzoyNjo0OCAyMDAyCkBAIC0xODUsMTIgKzE4NSwxMCBAQAogewogCXN0 cnVjdCBrZXJuX2lwY19wZXJtKiBwOwogCWludCBsaWQgPSBpZCAlIFNFUV9NVUxUSVBMSUVSOwot CWlmKGxpZCA+PSBpZHMtPnNpemUpCi0JCUJVRygpOworCUJVR19PTihsaWQgPj0gaWRzLT5zaXpl KTsKIAlwID0gaWRzLT5lbnRyaWVzW2xpZF0ucDsKIAlpZHMtPmVudHJpZXNbbGlkXS5wID0gTlVM TDsKLQlpZihwPT1OVUxMKQotCQlCVUcoKTsKKwlCVUdfT04ocD09TlVMTCk7CiAJaWRzLT5pbl91 c2UtLTsKIAogCWlmIChsaWQgPT0gaWRzLT5tYXhfaWQpIHsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBs aW51eC9rZXJuZWwvZGV2aWNlLmMgdjIuNS4xL2xpbnV4L2tlcm5lbC9kZXZpY2UuYwotLS0gbGlu dXgva2VybmVsL2RldmljZS5jCVNhdCBKYW4gIDUgMTc6MDU6MTEgMjAwMgorKysgdjIuNS4xL2xp bnV4L2tlcm5lbC9kZXZpY2UuYwlTYXQgSmFuICA1IDE3OjE1OjQ4IDIwMDIKQEAgLTQ1OCw5ICs0 NTgsOSBAQAogCWlvYnVzLT5wYXJlbnQgPSBOVUxMOwogCXVubG9ja19pb2J1cyhpb2J1cyk7CiAK LQlpZiAoIWxpc3RfZW1wdHkoJmlvYnVzLT5kZXZpY2VzKSB8fAotCSAgICAhbGlzdF9lbXB0eSgm aW9idXMtPmNoaWxkcmVuKSkKLQkJQlVHKCk7CisJQlVHX09OKCFsaXN0X2VtcHR5KCZpb2J1cy0+ ZGV2aWNlcykgfHwKKwkgICAgIWxpc3RfZW1wdHkoJmlvYnVzLT5jaGlsZHJlbikpOworCQogCiAJ LyogZGlzYXZvdyBwYXJlbnQncyBrbm93bGVkZ2UgKi8KIAlpZiAocGFyZW50KSB7CmRpZmYgLXUg LS1yZWN1cnNpdmUgbGludXgva2VybmVsL2V4aXQuYyB2Mi41LjEvbGludXgva2VybmVsL2V4aXQu YwotLS0gbGludXgva2VybmVsL2V4aXQuYwlTYXQgSmFuICA1IDE3OjA1OjExIDIwMDIKKysrIHYy LjUuMS9saW51eC9rZXJuZWwvZXhpdC5jCVNhdCBKYW4gIDUgMTc6MTc6NTcgMjAwMgpAQCAtMzE4 LDcgKzMxOCw3IEBACiAJbW1fcmVsZWFzZSgpOwogCWlmIChtbSkgewogCQlhdG9taWNfaW5jKCZt bS0+bW1fY291bnQpOwotCQlpZiAobW0gIT0gdHNrLT5hY3RpdmVfbW0pIEJVRygpOworCQlCVUdf T04obW0gIT0gdHNrLT5hY3RpdmVfbW0pOwogCQkvKiBtb3JlIGEgbWVtb3J5IGJhcnJpZXIgdGhh biBhIHJlYWwgbG9jayAqLwogCQl0YXNrX2xvY2sodHNrKTsKIAkJdHNrLT5tbSA9IE5VTEw7CmRp ZmYgLXUgLS1yZWN1cnNpdmUgbGludXgva2VybmVsL2ZvcmsuYyB2Mi41LjEvbGludXgva2VybmVs L2ZvcmsuYwotLS0gbGludXgva2VybmVsL2ZvcmsuYwlTYXQgSmFuICA1IDE3OjA1OjExIDIwMDIK KysrIHYyLjUuMS9saW51eC9rZXJuZWwvZm9yay5jCVNhdCBKYW4gIDUgMTc6MTg6MjIgMjAwMgpA QCAtMjQ5LDcgKzI0OSw3IEBACiAgKi8KIGlubGluZSB2b2lkIF9fbW1kcm9wKHN0cnVjdCBtbV9z dHJ1Y3QgKm1tKQogewotCWlmIChtbSA9PSAmaW5pdF9tbSkgQlVHKCk7CisJQlVHX09OKG1tID09 ICZpbml0X21tKTsKIAlwZ2RfZnJlZShtbS0+cGdkKTsKIAlkZXN0cm95X2NvbnRleHQobW0pOwog CWZyZWVfbW0obW0pOwpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9wbS5jIHYyLjUu MS9saW51eC9rZXJuZWwvcG0uYwotLS0gbGludXgva2VybmVsL3BtLmMJU2F0IEphbiAgNSAxNzow NToxMSAyMDAyCisrKyB2Mi41LjEvbGludXgva2VybmVsL3BtLmMJU2F0IEphbiAgNSAxNzoxOToy MiAyMDAyCkBAIC0xNTYsOCArMTU2LDcgQEAKIAlpbnQgc3RhdHVzID0gMDsKIAlpbnQgcHJldl9z dGF0ZSwgbmV4dF9zdGF0ZTsKIAotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVHKCk7CisJQlVH X09OIChpbl9pbnRlcnJ1cHQoKSk7CiAKIAlzd2l0Y2ggKHJxc3QpIHsKIAljYXNlIFBNX1NVU1BF TkQ6CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGludXgva2VybmVsL3ByaW50ay5jIHYyLjUuMS9saW51 eC9rZXJuZWwvcHJpbnRrLmMKLS0tIGxpbnV4L2tlcm5lbC9wcmludGsuYwlTdW4gTm92IDExIDE5 OjIwOjIxIDIwMDEKKysrIHYyLjUuMS9saW51eC9rZXJuZWwvcHJpbnRrLmMJU2F0IEphbiAgNSAx NzoyMDowOSAyMDAyCkBAIC0zMzAsOCArMzMwLDcgQEAKIAl1bnNpZ25lZCBsb25nIGN1cl9pbmRl eCwgc3RhcnRfcHJpbnQ7CiAJc3RhdGljIGludCBtc2dfbGV2ZWwgPSAtMTsKIAotCWlmICgoKGxv bmcpKHN0YXJ0IC0gZW5kKSkgPiAwKQotCQlCVUcoKTsKKwlCVUdfT04oKChsb25nKShzdGFydCAt IGVuZCkpID4gMCk7CiAKIAljdXJfaW5kZXggPSBzdGFydDsKIAlzdGFydF9wcmludCA9IHN0YXJ0 OwpAQCAtNDY4LDggKzQ2Nyw3IEBACiAgKi8KIHZvaWQgYWNxdWlyZV9jb25zb2xlX3NlbSh2b2lk KQogewotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVHKCk7CisJQlVHX09OKGluX2ludGVycnVw dCgpKTsKIAlkb3duKCZjb25zb2xlX3NlbSk7CiAJY29uc29sZV9tYXlfc2NoZWR1bGUgPSAxOwog fQpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9zY2hlZC5jIHYyLjUuMS9saW51eC9r ZXJuZWwvc2NoZWQuYwotLS0gbGludXgva2VybmVsL3NjaGVkLmMJU2F0IEphbiAgNSAxNzowNTox MSAyMDAyCisrKyB2Mi41LjEvbGludXgva2VybmVsL3NjaGVkLmMJU2F0IEphbiAgNSAxNzoyMToz MyAyMDAyCkBAIC01NjUsNyArNTY1LDcgQEAKIAogCXNwaW5fbG9ja19wcmVmZXRjaCgmcnVucXVl dWVfbG9jayk7CiAKLQlpZiAoIWN1cnJlbnQtPmFjdGl2ZV9tbSkgQlVHKCk7CisJQlVHX09OICgh Y3VycmVudC0+YWN0aXZlX21tKTsKIG5lZWRfcmVzY2hlZF9iYWNrOgogCXByZXYgPSBjdXJyZW50 OwogCXRoaXNfY3B1ID0gcHJldi0+cHJvY2Vzc29yOwpAQCAtNjgyLDEyICs2ODIsMTIgQEAKIAkJ c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBuZXh0LT5tbTsKIAkJc3RydWN0IG1tX3N0cnVjdCAqb2xk bW0gPSBwcmV2LT5hY3RpdmVfbW07CiAJCWlmICghbW0pIHsKLQkJCWlmIChuZXh0LT5hY3RpdmVf bW0pIEJVRygpOworCQkJQlVHX09OKG5leHQtPmFjdGl2ZV9tbSk7CiAJCQluZXh0LT5hY3RpdmVf bW0gPSBvbGRtbTsKIAkJCWF0b21pY19pbmMoJm9sZG1tLT5tbV9jb3VudCk7CiAJCQllbnRlcl9s YXp5X3RsYihvbGRtbSwgbmV4dCwgdGhpc19jcHUpOwogCQl9IGVsc2UgewotCQkJaWYgKG5leHQt PmFjdGl2ZV9tbSAhPSBtbSkgQlVHKCk7CisJCQlCVUdfT04gKG5leHQtPmFjdGl2ZV9tbSAhPSBt bSk7CiAJCQlzd2l0Y2hfbW0ob2xkbW0sIG1tLCBuZXh0LCB0aGlzX2NwdSk7CiAJCX0KIApkaWZm IC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9zb2Z0aXJxLmMgdjIuNS4xL2xpbnV4L2tlcm5l bC9zb2Z0aXJxLmMKLS0tIGxpbnV4L2tlcm5lbC9zb2Z0aXJxLmMJU2F0IERlYyAgMSAwMDo1Mzoy OCAyMDAxCisrKyB2Mi41LjEvbGludXgva2VybmVsL3NvZnRpcnEuYwlTYXQgSmFuICA1IDE3OjIy OjUwIDIwMDIKQEAgLTE5MCw4ICsxOTAsNyBAQAogCiAJCWlmICh0YXNrbGV0X3RyeWxvY2sodCkp IHsKIAkJCWlmICghYXRvbWljX3JlYWQoJnQtPmNvdW50KSkgewotCQkJCWlmICghdGVzdF9hbmRf Y2xlYXJfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCi0JCQkJCUJVRygpOwor CQkJCUJVR19PTighdGVzdF9hbmRfY2xlYXJfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5z dGF0ZSkpOwogCQkJCXQtPmZ1bmModC0+ZGF0YSk7CiAJCQkJdGFza2xldF91bmxvY2sodCk7CiAJ CQkJY29udGludWU7CkBAIC0yMjQsOCArMjIzLDcgQEAKIAogCQlpZiAodGFza2xldF90cnlsb2Nr KHQpKSB7CiAJCQlpZiAoIWF0b21pY19yZWFkKCZ0LT5jb3VudCkpIHsKLQkJCQlpZiAoIXRlc3Rf YW5kX2NsZWFyX2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQotCQkJCQlCVUco KTsKKwkJCQlCVUdfT04gKCF0ZXN0X2FuZF9jbGVhcl9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwg JnQtPnN0YXRlKSk7CiAJCQkJdC0+ZnVuYyh0LT5kYXRhKTsKIAkJCQl0YXNrbGV0X3VubG9jayh0 KTsKIAkJCQljb250aW51ZTsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9ib290bWVtLmMg djIuNS4xL2xpbnV4L21tL2Jvb3RtZW0uYwotLS0gbGludXgvbW0vYm9vdG1lbS5jCVR1ZSBOb3Yg MjcgMTg6MjM6MjcgMjAwMQorKysgdjIuNS4xL2xpbnV4L21tL2Jvb3RtZW0uYwlTdW4gSmFuICA2 IDAzOjQyOjU3IDIwMDIKQEAgLTgyLDE4ICs4MiwxMyBAQAogCQkJCQkJCVBBR0VfU0laRS0xKS9Q QUdFX1NJWkU7CiAJdW5zaWduZWQgbG9uZyBlbmQgPSAoYWRkciArIHNpemUgKyBQQUdFX1NJWkUt MSkvUEFHRV9TSVpFOwogCi0JaWYgKCFzaXplKSBCVUcoKTsKKwlCVUdfT04gKCFzaXplKTsKIAot CWlmIChzaWR4IDwgMCkKLQkJQlVHKCk7Ci0JaWYgKGVpZHggPCAwKQotCQlCVUcoKTsKLQlpZiAo c2lkeCA+PSBlaWR4KQotCQlCVUcoKTsKLQlpZiAoKGFkZHIgPj4gUEFHRV9TSElGVCkgPj0gYmRh dGEtPm5vZGVfbG93X3BmbikKLQkJQlVHKCk7Ci0JaWYgKGVuZCA+IGJkYXRhLT5ub2RlX2xvd19w Zm4pCi0JCUJVRygpOworCUJVR19PTihzaWR4IDwgMCk7CisJQlVHX09OIChlaWR4IDwgMCk7CisJ QlVHX09OIChzaWR4ID49IGVpZHgpOworCUJVR19PTiAoKGFkZHIgPj4gUEFHRV9TSElGVCkgPj0g YmRhdGEtPm5vZGVfbG93X3Bmbik7CisJQlVHX09OIChlbmQgPiBiZGF0YS0+bm9kZV9sb3dfcGZu KTsKIAlmb3IgKGkgPSBzaWR4OyBpIDwgZWlkeDsgaSsrKQogCQlpZiAodGVzdF9hbmRfc2V0X2Jp dChpLCBiZGF0YS0+bm9kZV9ib290bWVtX21hcCkpCiAJCQlwcmludGsoImhtLCBwYWdlICUwOGx4 IHJlc2VydmVkIHR3aWNlLlxuIiwgaSpQQUdFX1NJWkUpOwpAQCAtMTExLDkgKzEwNiw4IEBACiAJ dW5zaWduZWQgbG9uZyBlaWR4ID0gKGFkZHIgKyBzaXplIC0gYmRhdGEtPm5vZGVfYm9vdF9zdGFy dCkvUEFHRV9TSVpFOwogCXVuc2lnbmVkIGxvbmcgZW5kID0gKGFkZHIgKyBzaXplKS9QQUdFX1NJ WkU7CiAKLQlpZiAoIXNpemUpIEJVRygpOwotCWlmIChlbmQgPiBiZGF0YS0+bm9kZV9sb3dfcGZu KQotCQlCVUcoKTsKKwlCVUdfT04gKCFzaXplKTsKKwlCVUdfT04gKGVuZCA+IGJkYXRhLT5ub2Rl X2xvd19wZm4pOwogCiAJLyoKIAkgKiBSb3VuZCB1cCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZGRy ZXNzLgpAQCAtMTIyLDggKzExNiw3IEBACiAJc2lkeCA9IHN0YXJ0IC0gKGJkYXRhLT5ub2RlX2Jv b3Rfc3RhcnQvUEFHRV9TSVpFKTsKIAogCWZvciAoaSA9IHNpZHg7IGkgPCBlaWR4OyBpKyspIHsK LQkJaWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoaSwgYmRhdGEtPm5vZGVfYm9vdG1lbV9tYXApKQot CQkJQlVHKCk7CisJCUJVR19PTiAoIXRlc3RfYW5kX2NsZWFyX2JpdChpLCBiZGF0YS0+bm9kZV9i b290bWVtX21hcCkpOwogCX0KIH0KIApAQCAtMTUwLDEwICsxNDMsOSBAQAogCXVuc2lnbmVkIGxv bmcgZWlkeCA9IGJkYXRhLT5ub2RlX2xvd19wZm4gLSAoYmRhdGEtPm5vZGVfYm9vdF9zdGFydCA+ PgogCQkJCQkJCVBBR0VfU0hJRlQpOwogCi0JaWYgKCFzaXplKSBCVUcoKTsKKwlCVUdfT04oIXNp emUpOwogCi0JaWYgKGFsaWduICYgKGFsaWduLTEpKQotCQlCVUcoKTsKKwlCVUdfT04gKGFsaWdu ICYgKGFsaWduLTEpKTsKIAogCS8qCiAJICogV2UgdHJ5IHRvIGFsbG9jYXRlIGJvb3RtZW0gcGFn ZXMgYWJvdmUgJ2dvYWwnCkBAIC0xOTAsOCArMTgyLDcgQEAKIAl9CiAJcmV0dXJuIE5VTEw7CiBm b3VuZDoKLQlpZiAoc3RhcnQgPj0gZWlkeCkKLQkJQlVHKCk7CisJQlVHX09OKHN0YXJ0ID49IGVp ZHgpOwogCiAJLyoKIAkgKiBJcyB0aGUgbmV4dCBwYWdlIG9mIHRoZSBwcmV2aW91cyBhbGxvY2F0 aW9uLWVuZCB0aGUgc3RhcnQKQEAgLTIwMSw4ICsxOTIsOCBAQAogCWlmIChhbGlnbiA8PSBQQUdF X1NJWkUKIAkgICAgJiYgYmRhdGEtPmxhc3Rfb2Zmc2V0ICYmIGJkYXRhLT5sYXN0X3BvcysxID09 IHN0YXJ0KSB7CiAJCW9mZnNldCA9IChiZGF0YS0+bGFzdF9vZmZzZXQrYWxpZ24tMSkgJiB+KGFs aWduLTEpOwotCQlpZiAob2Zmc2V0ID4gUEFHRV9TSVpFKQotCQkJQlVHKCk7CisJCUJVR19PTihv ZmZzZXQgPiBQQUdFX1NJWkUpOworCQkKIAkJcmVtYWluaW5nX3NpemUgPSBQQUdFX1NJWkUtb2Zm c2V0OwogCQlpZiAoc2l6ZSA8IHJlbWFpbmluZ19zaXplKSB7CiAJCQlhcmVhc2l6ZSA9IDA7CkBA IC0yMjgsOCArMjE5LDggQEAKIAkgKiBSZXNlcnZlIHRoZSBhcmVhIG5vdzoKIAkgKi8KIAlmb3Ig KGkgPSBzdGFydDsgaSA8IHN0YXJ0K2FyZWFzaXplOyBpKyspCi0JCWlmICh0ZXN0X2FuZF9zZXRf Yml0KGksIGJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFwKSkKLQkJCUJVRygpOworCQlCVUdfT04odGVz dF9hbmRfc2V0X2JpdChpLCBiZGF0YS0+bm9kZV9ib290bWVtX21hcCkpOworCQogCW1lbXNldChy ZXQsIDAsIHNpemUpOwogCXJldHVybiByZXQ7CiB9CkBAIC0yNDEsNyArMjMyLDcgQEAKIAl1bnNp Z25lZCBsb25nIGksIGNvdW50LCB0b3RhbCA9IDA7CiAJdW5zaWduZWQgbG9uZyBpZHg7CiAKLQlp ZiAoIWJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFwKSBCVUcoKTsKKwlCVUdfT04oIWJkYXRhLT5ub2Rl X2Jvb3RtZW1fbWFwKTsgCiAKIAljb3VudCA9IDA7CiAJaWR4ID0gYmRhdGEtPm5vZGVfbG93X3Bm biAtIChiZGF0YS0+bm9kZV9ib290X3N0YXJ0ID4+IFBBR0VfU0hJRlQpOwpkaWZmIC11IC0tcmVj dXJzaXZlIGxpbnV4L21tL2ZpbGVtYXAuYyB2Mi41LjEvbGludXgvbW0vZmlsZW1hcC5jCi0tLSBs aW51eC9tbS9maWxlbWFwLmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41LjEvbGlu dXgvbW0vZmlsZW1hcC5jCVN1biBKYW4gIDYgMDM6NTQ6MjQgMjAwMgpAQCAtMTE0LDcgKzExNCw3 IEBACiAgKi8KIHZvaWQgX19yZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsK LQlpZiAoUGFnZURpcnR5KHBhZ2UpKSBCVUcoKTsKKwlCVUdfT04oUGFnZURpcnR5KHBhZ2UpKTsK IAlyZW1vdmVfcGFnZV9mcm9tX2lub2RlX3F1ZXVlKHBhZ2UpOwogCXJlbW92ZV9wYWdlX2Zyb21f aGFzaF9xdWV1ZShwYWdlKTsKIH0KQEAgLTY0Nyw4ICs2NDcsNyBAQAogICovCiB2b2lkIGFkZF90 b19wYWdlX2NhY2hlX2xvY2tlZChzdHJ1Y3QgcGFnZSAqIHBhZ2UsIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nLCB1bnNpZ25lZCBsb25nIGluZGV4KQogewotCWlmICghUGFnZUxvY2tlZChw YWdlKSkKLQkJQlVHKCk7CisJQlVHX09OKCFQYWdlTG9ja2VkKHBhZ2UpKTsKIAogCXBhZ2UtPmlu ZGV4ID0gaW5kZXg7CiAJcGFnZV9jYWNoZV9nZXQocGFnZSk7CkBAIC03OTIsOCArNzkxLDggQEAK IHsKIAljbGVhcl9iaXQoUEdfbGF1bmRlciwgJihwYWdlKS0+ZmxhZ3MpOwogCXNtcF9tYl9fYmVm b3JlX2NsZWFyX2JpdCgpOwotCWlmICghdGVzdF9hbmRfY2xlYXJfYml0KFBHX2xvY2tlZCwgJihw YWdlKS0+ZmxhZ3MpKQotCQlCVUcoKTsKKwlCVUdfT04gKCF0ZXN0X2FuZF9jbGVhcl9iaXQoUEdf bG9ja2VkLCAmKHBhZ2UpLT5mbGFncykpOworCiAJc21wX21iX19hZnRlcl9jbGVhcl9iaXQoKTsg CiAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJihwYWdlKS0+d2FpdCkpCiAJd2FrZV91cCgmKHBhZ2Up LT53YWl0KTsKQEAgLTIwOTUsOCArMjA5NCw4IEBACiAKIAlkaXIgPSBwZ2Rfb2Zmc2V0KHZtYS0+ dm1fbW0sIGFkZHJlc3MpOwogCWZsdXNoX2NhY2hlX3JhbmdlKHZtYS0+dm1fbW0sIGVuZCAtIHNp emUsIGVuZCk7Ci0JaWYgKGFkZHJlc3MgPj0gZW5kKQotCQlCVUcoKTsKKwlCVUdfT04oYWRkcmVz cyA+PSBlbmQpOworCQogCWRvIHsKIAkJZXJyb3IgfD0gZmlsZW1hcF9zeW5jX3BtZF9yYW5nZShk aXIsIGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MsIHZtYSwgZmxhZ3MpOwogCQlhZGRyZXNzID0gKGFk ZHJlc3MgKyBQR0RJUl9TSVpFKSAmIFBHRElSX01BU0s7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGlu dXgvbW0vaGlnaG1lbS5jIHYyLjUuMS9saW51eC9tbS9oaWdobWVtLmMKLS0tIGxpbnV4L21tL2hp Z2htZW0uYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS9oaWdo bWVtLmMJU3VuIEphbiAgNiAwMzo1NjoxOSAyMDAyCkBAIC03Miw4ICs3Miw3IEBACiAJCXBrbWFw X2NvdW50W2ldID0gMDsKIAogCQkvKiBzYW5pdHkgY2hlY2sgKi8KLQkJaWYgKHB0ZV9ub25lKHBr bWFwX3BhZ2VfdGFibGVbaV0pKQotCQkJQlVHKCk7CisJCUJVR19PTihwdGVfbm9uZShwa21hcF9w YWdlX3RhYmxlW2ldKSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgbmVlZCBhbiBhdG9taWMgZmV0Y2gt YW5kLWNsZWFyIG9wIGhlcmU7CkBAIC0xNTQsOCArMTUzLDggQEAKIAlpZiAoIXZhZGRyKQogCQl2 YWRkciA9IG1hcF9uZXdfdmlydHVhbChwYWdlKTsKIAlwa21hcF9jb3VudFtQS01BUF9OUih2YWRk cildKys7Ci0JaWYgKHBrbWFwX2NvdW50W1BLTUFQX05SKHZhZGRyKV0gPCAyKQotCQlCVUcoKTsK KwlCVUdfT04ocGttYXBfY291bnRbUEtNQVBfTlIodmFkZHIpXSA8IDIpOworCiAJc3Bpbl91bmxv Y2soJmttYXBfbG9jayk7CiAJcmV0dXJuICh2b2lkKikgdmFkZHI7CiB9CkBAIC0xNjgsOCArMTY3 LDggQEAKIAogCXNwaW5fbG9jaygma21hcF9sb2NrKTsKIAl2YWRkciA9ICh1bnNpZ25lZCBsb25n KSBwYWdlLT52aXJ0dWFsOwotCWlmICghdmFkZHIpCi0JCUJVRygpOworCUJVR19PTighdmFkZHIp OworCQogCW5yID0gUEtNQVBfTlIodmFkZHIpOwogCiAJLyoKQEAgLTIxMiw4ICsyMTEsOCBAQAog CQlyZXR1cm4gMDsKIAogCXBhZ2VfcG9vbCA9IG1lbXBvb2xfY3JlYXRlKFBPT0xfU0laRSwgcGFn ZV9wb29sX2FsbG9jLCBwYWdlX3Bvb2xfZnJlZSwgTlVMTCk7Ci0JaWYgKCFwYWdlX3Bvb2wpCi0J CUJVRygpOworCUJVR19PTighcGFnZV9wb29sKTsKKwkKIAlwcmludGsoImhpZ2htZW0gYm91bmNl IHBvb2wgc2l6ZTogJWQgcGFnZXNcbiIsIFBPT0xfU0laRSk7CiAKIAlyZXR1cm4gMDsKQEAgLTI1 NSw4ICsyNTQsOCBAQAogCQlyZXR1cm4gMDsKIAogCWlzYV9wYWdlX3Bvb2wgPSBtZW1wb29sX2Ny ZWF0ZShJU0FfUE9PTF9TSVpFLCBwYWdlX3Bvb2xfYWxsb2MsIHBhZ2VfcG9vbF9mcmVlLCAodm9p ZCAqKSBfX0dGUF9ETUEpOwotCWlmICghaXNhX3BhZ2VfcG9vbCkKLQkJQlVHKCk7CisJQlVHX09O KCFpc2FfcGFnZV9wb29sKTsKKwkJCiAKIAlwcmludGsoImlzYSBib3VuY2UgcG9vbCBzaXplOiAl ZCBwYWdlc1xuIiwgSVNBX1BPT0xfU0laRSk7CiAJcmV0dXJuIDA7CmRpZmYgLXUgLS1yZWN1cnNp dmUgbGludXgvbW0vbWVtb3J5LmMgdjIuNS4xL2xpbnV4L21tL21lbW9yeS5jCi0tLSBsaW51eC9t bS9tZW1vcnkuYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS9t ZW1vcnkuYwlTdW4gSmFuICA2IDAzOjU4OjUzIDIwMDIKQEAgLTM3MSw4ICszNzEsOCBAQAogCSAq IGV2ZW4gaWYga3N3YXBkIGhhcHBlbmVkIHRvIGJlIGxvb2tpbmcgYXQgdGhpcwogCSAqIHByb2Nl c3Mgd2UgX3dhbnRfIGl0IHRvIGdldCBzdHVjay4KIAkgKi8KLQlpZiAoYWRkcmVzcyA+PSBlbmQp Ci0JCUJVRygpOworCUJVR19PTiAoYWRkcmVzcyA+PSBlbmQpOworCQogCXNwaW5fbG9jaygmbW0t PnBhZ2VfdGFibGVfbG9jayk7CiAJZmx1c2hfY2FjaGVfcmFuZ2UobW0sIGFkZHJlc3MsIGVuZCk7 CiAJdGxiID0gdGxiX2dhdGhlcl9tbXUobW0pOwpAQCAtNTIwLDcgKzUyMCw4IEBACiAJCiAJcGdj b3VudCA9ICh2YSArIGxlbiArIFBBR0VfU0laRSAtIDEpL1BBR0VfU0laRSAtIHZhL1BBR0VfU0la RTsKIAkvKiBtYXBwaW5nIDAgYnl0ZXMgaXMgbm90IHBlcm1pdHRlZCAqLwotCWlmICghcGdjb3Vu dCkgQlVHKCk7CisJQlVHX09OICghcGdjb3VudCk7CisJCiAJZXJyID0gZXhwYW5kX2tpb2J1Zihp b2J1ZiwgcGdjb3VudCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKQEAgLTc2Nyw4ICs3Njgs NyBAQAogCiAJZGlyID0gcGdkX29mZnNldChtbSwgYWRkcmVzcyk7CiAJZmx1c2hfY2FjaGVfcmFu Z2UobW0sIGJlZywgZW5kKTsKLQlpZiAoYWRkcmVzcyA+PSBlbmQpCi0JCUJVRygpOworCUJVR19P TiAoYWRkcmVzcyA+PSBlbmQpOwogCiAJc3Bpbl9sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsK IAlkbyB7CkBAIC04NDksOCArODQ5LDcgQEAKIAlwaHlzX2FkZHIgLT0gZnJvbTsKIAlkaXIgPSBw Z2Rfb2Zmc2V0KG1tLCBmcm9tKTsKIAlmbHVzaF9jYWNoZV9yYW5nZShtbSwgYmVnLCBlbmQpOwot CWlmIChmcm9tID49IGVuZCkKLQkJQlVHKCk7CisJQlVHX09OIChmcm9tID49IGVuZCk7CiAKIAlz cGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCWRvIHsKQEAgLTE0MzQsMTAgKzE0MzMs MTAgQEAKIAogCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1tLCBhZGRyKTsKIAl3cml0ZSA9ICh2 bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpICE9IDA7Ci0JaWYgKGFkZHIgPj0gZW5kKQotCQlCVUco KTsKLQlpZiAoZW5kID4gdm1hLT52bV9lbmQpCi0JCUJVRygpOworCUJVR19PTiAoYWRkciA+PSBl bmQpOworCQorCUJVR19PTiAoZW5kID4gdm1hLT52bV9lbmQpOworCiAJbGVuID0gKGVuZCtQQUdF X1NJWkUtMSkvUEFHRV9TSVpFLWFkZHIvUEFHRV9TSVpFOwogCXJldCA9IGdldF91c2VyX3BhZ2Vz KGN1cnJlbnQsIGN1cnJlbnQtPm1tLCBhZGRyLAogCQkJbGVuLCB3cml0ZSwgMCwgTlVMTCwgTlVM TCk7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGludXgvbW0vbWVtcG9vbC5jIHYyLjUuMS9saW51eC9t bS9tZW1wb29sLmMKLS0tIGxpbnV4L21tL21lbXBvb2wuYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIw MDIKKysrIHYyLjUuMS9saW51eC9tbS9tZW1wb29sLmMJU3VuIEphbiAgNiAwMzo1OTo1MyAyMDAy CkBAIC05OCw4ICs5OCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgbGlzdF9o ZWFkICp0bXA7CiAKLQlpZiAobmV3X21pbl9uciA8PSAwKQotCQlCVUcoKTsKKwlCVUdfT04gKG5l d19taW5fbnIgPD0gMCk7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcG9vbC0+bG9jaywgZmxhZ3Mp OwogCWlmIChuZXdfbWluX25yIDwgcG9vbC0+bWluX25yKSB7CkBAIC0xMDksOCArMTA4LDggQEAK IAkJICovCiAJCXdoaWxlIChwb29sLT5jdXJyX25yID4gcG9vbC0+bWluX25yKSB7CiAJCQl0bXAg PSBwb29sLT5lbGVtZW50cy5uZXh0OwotCQkJaWYgKHRtcCA9PSAmcG9vbC0+ZWxlbWVudHMpCi0J CQkJQlVHKCk7CisJCQlCVUdfT04gKHRtcCA9PSAmcG9vbC0+ZWxlbWVudHMpOworCQkJCiAJCQls aXN0X2RlbCh0bXApOwogCQkJZWxlbWVudCA9IHRtcDsKIAkJCXBvb2wtPmN1cnJfbnItLTsKQEAg LTE2NCw4ICsxNjMsOCBAQAogCQlwb29sLT5mcmVlKGVsZW1lbnQsIHBvb2wtPnBvb2xfZGF0YSk7 CiAJCXBvb2wtPmN1cnJfbnItLTsKIAl9Ci0JaWYgKHBvb2wtPmN1cnJfbnIpCi0JCUJVRygpOwor CSBCVUdfT04gKHBvb2wtPmN1cnJfbnIpOworCSAKIAlrZnJlZShwb29sKTsKIH0KIApkaWZmIC11 IC0tcmVjdXJzaXZlIGxpbnV4L21tL21tYXAuYyB2Mi41LjEvbGludXgvbW0vbW1hcC5jCi0tLSBs aW51eC9tbS9tbWFwLmMJU3VuIE5vdiAgNCAxOToxNzoyMCAyMDAxCisrKyB2Mi41LjEvbGludXgv bW0vbW1hcC5jCVN1biBKYW4gIDYgMDQ6MDE6NDkgMjAwMgpAQCAtMjM1LDggKzIzNSw4IEBACiAJ aSA9IGJyb3dzZV9yYihtbS0+bW1fcmIucmJfbm9kZSk7CiAJaWYgKGkgIT0gbW0tPm1hcF9jb3Vu dCkKIAkJcHJpbnRrKCJtYXBfY291bnQgJWQgcmIgJWRcbiIsIG1tLT5tYXBfY291bnQsIGkpLCBi dWcgPSAxOwotCWlmIChidWcpCi0JCUJVRygpOworCUJVR19PTiAoYnVnKTsKKwkJCiB9CiAjZWxz ZQogI2RlZmluZSB2YWxpZGF0ZV9tbShtbSkgZG8geyB9IHdoaWxlICgwKQpAQCAtNzA1LDggKzcw NSw4IEBACiAJCQkqcHByZXYgPSBOVUxMOwogCQkJaWYgKHJiX3ByZXYpCiAJCQkJKnBwcmV2ID0g cmJfZW50cnkocmJfcHJldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0LCB2bV9yYik7Ci0JCQlpZiAo KHJiX3ByZXYgPyAoKnBwcmV2KS0+dm1fbmV4dCA6IG1tLT5tbWFwKSAhPSB2bWEpCi0JCQkJQlVH KCk7CisJCQlCVUdfT04oKHJiX3ByZXYgPyAoKnBwcmV2KS0+dm1fbmV4dCA6IG1tLT5tbWFwKSAh PSB2bWEpOworCQkJCQogCQkJcmV0dXJuIHZtYTsKIAkJfQogCX0KQEAgLTExMzYsOCArMTEzNiw3 IEBACiAJZmx1c2hfdGxiX21tKG1tKTsKIAogCS8qIFRoaXMgaXMganVzdCBkZWJ1Z2dpbmcgKi8K LQlpZiAobW0tPm1hcF9jb3VudCkKLQkJQlVHKCk7CisJQlVHX09OIChtbS0+bWFwX2NvdW50KTsK IAogCWNsZWFyX3BhZ2VfdGFibGVzKG1tLCBGSVJTVF9VU0VSX1BHRF9OUiwgVVNFUl9QVFJTX1BF Ul9QR0QpOwogfQpAQCAtMTE1Miw4ICsxMTUxLDggQEAKIAlyYl9ub2RlX3QgKiogcmJfbGluaywg KiByYl9wYXJlbnQ7CiAKIAlfX3ZtYSA9IGZpbmRfdm1hX3ByZXBhcmUobW0sIHZtYS0+dm1fc3Rh cnQsICZwcmV2LCAmcmJfbGluaywgJnJiX3BhcmVudCk7Ci0JaWYgKF9fdm1hICYmIF9fdm1hLT52 bV9zdGFydCA8IHZtYS0+dm1fZW5kKQotCQlCVUcoKTsKKwlCVUdfT04oX192bWEgJiYgX192bWEt PnZtX3N0YXJ0IDwgdm1hLT52bV9lbmQpOworCQogCV9fdm1hX2xpbmsobW0sIHZtYSwgcHJldiwg cmJfbGluaywgcmJfcGFyZW50KTsKIAltbS0+bWFwX2NvdW50Kys7CiAJdmFsaWRhdGVfbW0obW0p OwpAQCAtMTE2NSw4ICsxMTY0LDggQEAKIAlyYl9ub2RlX3QgKiogcmJfbGluaywgKiByYl9wYXJl bnQ7CiAKIAlfX3ZtYSA9IGZpbmRfdm1hX3ByZXBhcmUobW0sIHZtYS0+dm1fc3RhcnQsICZwcmV2 LCAmcmJfbGluaywgJnJiX3BhcmVudCk7Ci0JaWYgKF9fdm1hICYmIF9fdm1hLT52bV9zdGFydCA8 IHZtYS0+dm1fZW5kKQotCQlCVUcoKTsKKwlCVUdfT04gKF9fdm1hICYmIF9fdm1hLT52bV9zdGFy dCA8IHZtYS0+dm1fZW5kKTsKKwogCXZtYV9saW5rKG1tLCB2bWEsIHByZXYsIHJiX2xpbmssIHJi X3BhcmVudCk7CiAJdmFsaWRhdGVfbW0obW0pOwogfQpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4 L21tL21wcm90ZWN0LmMgdjIuNS4xL2xpbnV4L21tL21wcm90ZWN0LmMKLS0tIGxpbnV4L21tL21w cm90ZWN0LmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41LjEvbGludXgvbW0vbXBy b3RlY3QuYwlTdW4gSmFuICA2IDA0OjAyOjExIDIwMDIKQEAgLTc5LDggKzc5LDggQEAKIAogCWRp ciA9IHBnZF9vZmZzZXQoY3VycmVudC0+bW0sIHN0YXJ0KTsKIAlmbHVzaF9jYWNoZV9yYW5nZShj dXJyZW50LT5tbSwgYmVnLCBlbmQpOwotCWlmIChzdGFydCA+PSBlbmQpCi0JCUJVRygpOworCUJV R19PTiAoc3RhcnQgPj0gZW5kKTsKKwogCXNwaW5fbG9jaygmY3VycmVudC0+bW0tPnBhZ2VfdGFi bGVfbG9jayk7CiAJZG8gewogCQljaGFuZ2VfcG1kX3JhbmdlKGRpciwgc3RhcnQsIGVuZCAtIHN0 YXJ0LCBuZXdwcm90KTsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9tcmVtYXAuYyB2Mi41 LjEvbGludXgvbW0vbXJlbWFwLmMKLS0tIGxpbnV4L21tL21yZW1hcC5jCVNhdCBKYW4gIDUgMTc6 MDU6MTIgMjAwMgorKysgdjIuNS4xL2xpbnV4L21tL21yZW1hcC5jCVN1biBKYW4gIDYgMDQ6MDI6 MzEgMjAwMgpAQCAtMTQwLDggKzE0MCw4IEBACiAJCQlwcmV2LT52bV9lbmQgPSBuZXdfYWRkciAr IG5ld19sZW47CiAJCQlzcGluX3VubG9jaygmbW0tPnBhZ2VfdGFibGVfbG9jayk7CiAJCQluZXdf dm1hID0gcHJldjsKLQkJCWlmIChuZXh0ICE9IHByZXYtPnZtX25leHQpCi0JCQkJQlVHKCk7CisJ CQlCVUdfT04gKG5leHQgIT0gcHJldi0+dm1fbmV4dCk7CisKIAkJCWlmIChwcmV2LT52bV9lbmQg PT0gbmV4dC0+dm1fc3RhcnQgJiYgY2FuX3ZtYV9tZXJnZShuZXh0LCBwcmV2LT52bV9mbGFncykp IHsKIAkJCQlzcGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCQkJCXByZXYtPnZtX2Vu ZCA9IG5leHQtPnZtX2VuZDsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9wYWdlX2FsbG9j LmMgdjIuNS4xL2xpbnV4L21tL3BhZ2VfYWxsb2MuYwotLS0gbGludXgvbW0vcGFnZV9hbGxvYy5j CVR1ZSBOb3YgMjAgMDE6MzU6NDAgMjAwMQorKysgdjIuNS4xL2xpbnV4L21tL3BhZ2VfYWxsb2Mu YwlTdW4gSmFuICA2IDA0OjA4OjE0IDIwMDIKQEAgLTcwLDIwICs3MCwxMyBAQAogCXN0cnVjdCBw YWdlICpiYXNlOwogCXpvbmVfdCAqem9uZTsKIAotCWlmIChwYWdlLT5idWZmZXJzKQotCQlCVUco KTsKLQlpZiAocGFnZS0+bWFwcGluZykKLQkJQlVHKCk7Ci0JaWYgKCFWQUxJRF9QQUdFKHBhZ2Up KQotCQlCVUcoKTsKLQlpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSkKLQkJQlVHKCk7Ci0JaWYgKFBh Z2VMb2NrZWQocGFnZSkpCi0JCUJVRygpOwotCWlmIChQYWdlTFJVKHBhZ2UpKQotCQlCVUcoKTsK LQlpZiAoUGFnZUFjdGl2ZShwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OKHBhZ2UtPmJ1ZmZlcnMp OworCUJVR19PTihwYWdlLT5tYXBwaW5nKTsKKwlCVUdfT04oIVZBTElEX1BBR0UocGFnZSkpOwor CUJVR19PTiAoUGFnZVN3YXBDYWNoZShwYWdlKSk7CisJQlVHX09OIChQYWdlTG9ja2VkKHBhZ2Up KTsKKwlCVUdfT04gKFBhZ2VMUlUocGFnZSkpOworCUJVR19PTihQYWdlQWN0aXZlKHBhZ2UpKTsK IAlwYWdlLT5mbGFncyAmPSB+KCgxPDxQR19yZWZlcmVuY2VkKSB8ICgxPDxQR19kaXJ0eSkpOwog CiAJaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfRlJFRV9QQUdFUykKQEAgLTk1LDggKzg4LDggQEAK IAltYXNrID0gKH4wVUwpIDw8IG9yZGVyOwogCWJhc2UgPSB6b25lLT56b25lX21lbV9tYXA7CiAJ cGFnZV9pZHggPSBwYWdlIC0gYmFzZTsKLQlpZiAocGFnZV9pZHggJiB+bWFzaykKLQkJQlVHKCk7 CisJQlVHX09OKHBhZ2VfaWR4ICYgfm1hc2spOworCQogCWluZGV4ID0gcGFnZV9pZHggPj4gKDEg KyBvcmRlcik7CiAKIAlhcmVhID0gem9uZS0+ZnJlZV9hcmVhICsgb3JkZXI7CkBAIC0xMDgsOCAr MTAxLDggQEAKIAl3aGlsZSAobWFzayArICgxIDw8IChNQVhfT1JERVItMSkpKSB7CiAJCXN0cnVj dCBwYWdlICpidWRkeTEsICpidWRkeTI7CiAKLQkJaWYgKGFyZWEgPj0gem9uZS0+ZnJlZV9hcmVh ICsgTUFYX09SREVSKQotCQkJQlVHKCk7CisJCUJVR19PTihhcmVhID49IHpvbmUtPmZyZWVfYXJl YSArIE1BWF9PUkRFUik7CisJCQogCQlpZiAoIV9fdGVzdF9hbmRfY2hhbmdlX2JpdChpbmRleCwg YXJlYS0+bWFwKSkKIAkJCS8qCiAJCQkgKiB0aGUgYnVkZHkgcGFnZSBpcyBzdGlsbCBhbGxvY2F0 ZWQuCkBAIC0xMjAsMTAgKzExMyw5IEBACiAJCSAqLwogCQlidWRkeTEgPSBiYXNlICsgKHBhZ2Vf aWR4IF4gLW1hc2spOwogCQlidWRkeTIgPSBiYXNlICsgcGFnZV9pZHg7Ci0JCWlmIChCQURfUkFO R0Uoem9uZSxidWRkeTEpKQotCQkJQlVHKCk7Ci0JCWlmIChCQURfUkFOR0Uoem9uZSxidWRkeTIp KQotCQkJQlVHKCk7CisJCUJVR19PTiAoQkFEX1JBTkdFKHpvbmUsYnVkZHkxKSk7CisJCQorCQlC VUdfT04gKEJBRF9SQU5HRSh6b25lLGJ1ZGR5MikpOwogCiAJCW1lbWxpc3RfZGVsKCZidWRkeTEt Pmxpc3QpOwogCQltYXNrIDw8PSAxOwpAQCAtMTU2LDggKzE0OCw3IEBACiAJdW5zaWduZWQgbG9u ZyBzaXplID0gMSA8PCBoaWdoOwogCiAJd2hpbGUgKGhpZ2ggPiBsb3cpIHsKLQkJaWYgKEJBRF9S QU5HRSh6b25lLHBhZ2UpKQotCQkJQlVHKCk7CisJCUJVR19PTiAoQkFEX1JBTkdFKHpvbmUscGFn ZSkpOwogCQlhcmVhLS07CiAJCWhpZ2gtLTsKIAkJc2l6ZSA+Pj0gMTsKQEAgLTE2Niw4ICsxNTcs NyBAQAogCQlpbmRleCArPSBzaXplOwogCQlwYWdlICs9IHNpemU7CiAJfQotCWlmIChCQURfUkFO R0Uoem9uZSxwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OIChCQURfUkFOR0Uoem9uZSxwYWdlKSk7 CiAJcmV0dXJuIHBhZ2U7CiB9CiAKQEAgLTE4OSw4ICsxNzksOCBAQAogCQkJdW5zaWduZWQgaW50 IGluZGV4OwogCiAJCQlwYWdlID0gbWVtbGlzdF9lbnRyeShjdXJyLCBzdHJ1Y3QgcGFnZSwgbGlz dCk7Ci0JCQlpZiAoQkFEX1JBTkdFKHpvbmUscGFnZSkpCi0JCQkJQlVHKCk7CisJCQlCVUdfT04g KEJBRF9SQU5HRSh6b25lLHBhZ2UpKTsKKwkJCQogCQkJbWVtbGlzdF9kZWwoY3Vycik7CiAJCQlp bmRleCA9IHBhZ2UgLSB6b25lLT56b25lX21lbV9tYXA7CiAJCQlpZiAoY3Vycl9vcmRlciAhPSBN QVhfT1JERVItMSkKQEAgLTIwMSwxMiArMTkxLDkgQEAKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnpvbmUtPmxvY2ssIGZsYWdzKTsKIAogCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7Ci0J CQlpZiAoQkFEX1JBTkdFKHpvbmUscGFnZSkpCi0JCQkJQlVHKCk7Ci0JCQlpZiAoUGFnZUxSVShw YWdlKSkKLQkJCQlCVUcoKTsKLQkJCWlmIChQYWdlQWN0aXZlKHBhZ2UpKQotCQkJCUJVRygpOwor CQkJQlVHX09OIChCQURfUkFOR0Uoem9uZSxwYWdlKSk7CisJCQlCVUdfT04gKFBhZ2VMUlUocGFn ZSkpOworCQkJQlVHX09OIChQYWdlQWN0aXZlKHBhZ2UpKTsKIAkJCXJldHVybiBwYWdlOwkKIAkJ fQogCQljdXJyX29yZGVyKys7CkBAIC0yMzMsOCArMjIwLDcgQEAKIAogCWlmICghKGdmcF9tYXNr ICYgX19HRlBfV0FJVCkpCiAJCWdvdG8gb3V0OwotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVH KCk7CisJQlVHX09OIChpbl9pbnRlcnJ1cHQoKSk7CiAKIAljdXJyZW50LT5hbGxvY2F0aW9uX29y ZGVyID0gb3JkZXI7CiAJY3VycmVudC0+ZmxhZ3MgfD0gUEZfTUVNQUxMT0MgfCBQRl9GUkVFX1BB R0VTOwpAQCAtMjYxLDIyICsyNDcsMTQgQEAKIAkJCQkJc2V0X3BhZ2VfY291bnQodG1wLCAxKTsK IAkJCQkJcGFnZSA9IHRtcDsKIAotCQkJCQlpZiAocGFnZS0+YnVmZmVycykKLQkJCQkJCUJVRygp OwotCQkJCQlpZiAocGFnZS0+bWFwcGluZykKLQkJCQkJCUJVRygpOwotCQkJCQlpZiAoIVZBTElE X1BBR0UocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VTd2FwQ2FjaGUocGFnZSkp Ci0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VMb2NrZWQocGFnZSkpCi0JCQkJCQlCVUcoKTsK LQkJCQkJaWYgKFBhZ2VMUlUocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VBY3Rp dmUocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VEaXJ0eShwYWdlKSkKLQkJCQkJ CUJVRygpOworCQkJCQlCVUdfT04gKHBhZ2UtPmJ1ZmZlcnMpOworCQkJCQlCVUdfT04gKHBhZ2Ut Pm1hcHBpbmcpOworCQkJCQlCVUdfT04gKCFWQUxJRF9QQUdFKHBhZ2UpKTsKKwkJCQkJQlVHX09O IChQYWdlU3dhcENhY2hlKHBhZ2UpKTsKKwkJCQkJQlVHX09OIChQYWdlTG9ja2VkKHBhZ2UpKTsK KwkJCQkJQlVHX09OIChQYWdlTFJVKHBhZ2UpKTsKKwkJCQkJQlVHX09OIChQYWdlQWN0aXZlKHBh Z2UpKTsKKwkJCQkJQlVHX09OIChQYWdlRGlydHkocGFnZSkpOwogCiAJCQkJCWJyZWFrOwogCQkJ CX0KQEAgLTI4OSw4ICsyNjcsNyBAQAogCQkJbGlzdF9kZWwoZW50cnkpOwogCQkJdG1wID0gbGlz dF9lbnRyeShlbnRyeSwgc3RydWN0IHBhZ2UsIGxpc3QpOwogCQkJX19mcmVlX3BhZ2VzX29rKHRt cCwgdG1wLT5pbmRleCk7Ci0JCQlpZiAoIW5yX3BhZ2VzLS0pCi0JCQkJQlVHKCk7CisJCQlCVUdf T04gKCFucl9wYWdlcy0tKTsKIAkJfQogCQljdXJyZW50LT5ucl9sb2NhbF9wYWdlcyA9IDA7CiAJ fQpAQCAtNjQ0LDggKzYyMSw4IEBACiAJdW5zaWduZWQgbG9uZyB0b3RhbHBhZ2VzLCBvZmZzZXQs IHJlYWx0b3RhbHBhZ2VzOwogCWNvbnN0IHVuc2lnbmVkIGxvbmcgem9uZV9yZXF1aXJlZF9hbGln bm1lbnQgPSAxVUwgPDwgKE1BWF9PUkRFUi0xKTsKIAotCWlmICh6b25lX3N0YXJ0X3BhZGRyICYg flBBR0VfTUFTSykKLQkJQlVHKCk7CisJQlVHX09OKHpvbmVfc3RhcnRfcGFkZHIgJiB+UEFHRV9N QVNLKTsKKwkJCiAKIAl0b3RhbHBhZ2VzID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX05SX1pP TkVTOyBpKyspIHsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9zaG1lbS5jIHYyLjUuMS9s aW51eC9tbS9zaG1lbS5jCi0tLSBsaW51eC9tbS9zaG1lbS5jCVdlZCBOb3YgMjEgMTg6NTc6NTcg MjAwMQorKysgdjIuNS4xL2xpbnV4L21tL3NobWVtLmMJU3VuIEphbiAgNiAwNDoxMDoxMyAyMDAy CkBAIC0yOTEsOCArMjkxLDcgQEAKIAkJbGVuID0gbWF4KzE7CiAJfSBlbHNlIHsKIAkJbWF4IC09 IEVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJfUEFHRS8yK1NITUVNX05SX0RJUkVDVDsKLQkJ aWYgKG1heCA+PSBFTlRSSUVTX1BFUl9QQUdFKkVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJf UEFHRS8yKQotCQkJQlVHKCk7CisJCUJVR19PTiAobWF4ID49IEVOVFJJRVNfUEVSX1BBR0UqRU5U UklFU19QRVJfUEFHRSpFTlRSSUVTX1BFUl9QQUdFLzIpOwogCiAJCWJhc2VpZHggPSBtYXggJiB+ KEVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJfUEFHRS0xKTsKIAkJYmFzZSA9IChzd3BfZW50 cnlfdCAqKiopIGluZm8tPmlfaW5kaXJlY3QgKyBFTlRSSUVTX1BFUl9QQUdFLzIgKyBiYXNlaWR4 L0VOVFJJRVNfUEVSX1BBR0UvRU5UUklFU19QRVJfUEFHRSA7CkBAIC00MjYsOCArNDI1LDcgQEAK IAl1bnNpZ25lZCBsb25nIGluZGV4OwogCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiAKLQlpZiAoIVBh Z2VMb2NrZWQocGFnZSkpCi0JCUJVRygpOworCUJVR19PTiAoIVBhZ2VMb2NrZWQocGFnZSkpOwog CWlmICghUGFnZUxhdW5kZXIocGFnZSkpCiAJCXJldHVybiBmYWlsX3dyaXRlcGFnZShwYWdlKTsK IApAQCAtNDQ0LDExICs0NDIsMTAgQEAKIAogCXNwaW5fbG9jaygmaW5mby0+bG9jayk7CiAJZW50 cnkgPSBzaG1lbV9zd3BfZW50cnkoaW5mbywgaW5kZXgsIDApOwotCWlmIChJU19FUlIoZW50cnkp KQkvKiB0aGlzIGhhZCBiZWVuIGFsbG9jYXRlZCBvbiBwYWdlIGFsbG9jYXRpb24gKi8KLQkJQlVH KCk7CisJQlVHX09OIChJU19FUlIoZW50cnkpKTsJLyogdGhpcyBoYWQgYmVlbiBhbGxvY2F0ZWQg b24gcGFnZSBhbGxvY2F0aW9uICovCisJCQogCXNobWVtX3JlY2FsY19pbm9kZShpbm9kZSk7Ci0J aWYgKGVudHJ5LT52YWwpCi0JCUJVRygpOworCUJVR19PTiAoZW50cnktPnZhbCk7CiAKIAkvKiBS ZW1vdmUgaXQgZnJvbSB0aGUgcGFnZSBjYWNoZSAqLwogCXJlbW92ZV9pbm9kZV9wYWdlKHBhZ2Up OwpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L21tL3NsYWIuYyB2Mi41LjEvbGludXgvbW0vc2xh Yi5jCi0tLSBsaW51eC9tbS9zbGFiLmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41 LjEvbGludXgvbW0vc2xhYi5jCVN1biBKYW4gIDYgMDQ6MjA6MDQgMjAwMgpAQCAtNDIzLDggKzQy Myw3IEBACiAKIAlrbWVtX2NhY2hlX2VzdGltYXRlKDAsIGNhY2hlX2NhY2hlLm9ianNpemUsIDAs CiAJCQkmbGVmdF9vdmVyLCAmY2FjaGVfY2FjaGUubnVtKTsKLQlpZiAoIWNhY2hlX2NhY2hlLm51 bSkKLQkJQlVHKCk7CisJQlVHX09OICghY2FjaGVfY2FjaGUubnVtKTsKIAogCWNhY2hlX2NhY2hl LmNvbG91ciA9IGxlZnRfb3Zlci9jYWNoZV9jYWNoZS5jb2xvdXJfb2ZmOwogCWNhY2hlX2NhY2hl LmNvbG91cl9uZXh0ID0gMDsKQEAgLTQ2NSw4ICs0NjQsOCBAQAogCQlzcHJpbnRmKG5hbWUsICJz aXplLSVaZChETUEpIixzaXplcy0+Y3Nfc2l6ZSk7CiAJCXNpemVzLT5jc19kbWFjYWNoZXAgPSBr bWVtX2NhY2hlX2NyZWF0ZShuYW1lLCBzaXplcy0+Y3Nfc2l6ZSwgMCwKIAkJCSAgICAgIFNMQUJf Q0FDSEVfRE1BfFNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCwgTlVMTCk7Ci0JCWlmICghc2l6ZXMt PmNzX2RtYWNhY2hlcCkKLQkJCUJVRygpOworCQlCVUdfT04gKCFzaXplcy0+Y3NfZG1hY2FjaGVw KTsKKwkJCQogCQlzaXplcysrOwogCX0gd2hpbGUgKHNpemVzLT5jc19zaXplKTsKIH0KQEAgLTU2 NSwxMSArNTY0LDExIEBACiAJCQl2b2lkKiBvYmpwID0gc2xhYnAtPnNfbWVtK2NhY2hlcC0+b2Jq c2l6ZSppOwogI2lmIERFQlVHCiAJCQlpZiAoY2FjaGVwLT5mbGFncyAmIFNMQUJfUkVEX1pPTkUp IHsKLQkJCQlpZiAoKigodW5zaWduZWQgbG9uZyopKG9ianApKSAhPSBSRURfTUFHSUMxKQotCQkJ CQlCVUcoKTsKLQkJCQlpZiAoKigodW5zaWduZWQgbG9uZyopKG9ianAgKyBjYWNoZXAtPm9ianNp emUKLQkJCQkJCS1CWVRFU19QRVJfV09SRCkpICE9IFJFRF9NQUdJQzEpCi0JCQkJCUJVRygpOwor CQkJCUJVR19PTigqKCh1bnNpZ25lZCBsb25nKikob2JqcCkpICE9IFJFRF9NQUdJQzEpOworCQkJ CQkgCisJCQkJQlVHX09OKCooKHVuc2lnbmVkIGxvbmcqKShvYmpwICsgY2FjaGVwLT5vYmpzaXpl CisJCQkJCS1CWVRFU19QRVJfV09SRCkpICE9IFJFRF9NQUdJQzEpOworCQkJCQogCQkJCW9ianAg Kz0gQllURVNfUEVSX1dPUkQ7CiAJCQl9CiAjZW5kaWYKQEAgLTU3OSw5ICs1NzgsOSBAQAogCQkJ aWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFRF9aT05FKSB7CiAJCQkJb2JqcCAtPSBCWVRFU19Q RVJfV09SRDsKIAkJCX0JCi0JCQlpZiAoKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1BPSVNPTikgICYm Ci0JCQkJa21lbV9jaGVja19wb2lzb25fb2JqKGNhY2hlcCwgb2JqcCkpCi0JCQkJQlVHKCk7CisJ CQlCVUdfT04gKChjYWNoZXAtPmZsYWdzICYgU0xBQl9QT0lTT04pICAmJgorCQkJCWttZW1fY2hl Y2tfcG9pc29uX29iaihjYWNoZXAsIG9ianApKTsKKwkJCQkKICNlbmRpZgogCQl9CiAJfQpAQCAt NjMxLDE0ICs2MzAsMTQgQEAKIAkvKgogCSAqIFNhbml0eSBjaGVja3MuLi4gdGhlc2UgYXJlIGFs bCBzZXJpb3VzIHVzYWdlIGJ1Z3MuCiAJICovCi0JaWYgKCghbmFtZSkgfHwKKwlCVUdfT04gKCgh bmFtZSkgfHwKIAkJKChzdHJsZW4obmFtZSkgPj0gQ0FDSEVfTkFNRUxFTiAtIDEpKSB8fAogCQlp bl9pbnRlcnJ1cHQoKSB8fAogCQkoc2l6ZSA8IEJZVEVTX1BFUl9XT1JEKSB8fAogCQkoc2l6ZSA+ ICgxPDxNQVhfT0JKX09SREVSKSpQQUdFX1NJWkUpIHx8CiAJCShkdG9yICYmICFjdG9yKSB8fAot CQkob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiBzaXplKSkKLQkJCUJVRygpOworCQkob2Zmc2V0IDwg MCB8fCBvZmZzZXQgPiBzaXplKSk7CisJCiAKICNpZiBERUJVRwogCWlmICgoZmxhZ3MgJiBTTEFC X0RFQlVHX0lOSVRJQUwpICYmICFjdG9yKSB7CkBAIC02NjgsOCArNjY3LDggQEAKIAkgKiBBbHdh eXMgY2hlY2tzIGZsYWdzLCBhIGNhbGxlciBtaWdodCBiZSBleHBlY3RpbmcgZGVidWcKIAkgKiBz dXBwb3J0IHdoaWNoIGlzbid0IGF2YWlsYWJsZS4KIAkgKi8KLQlpZiAoZmxhZ3MgJiB+Q1JFQVRF X01BU0spCi0JCUJVRygpOworCUJVR19PTiAoZmxhZ3MgJiB+Q1JFQVRFX01BU0spOworCQkKIAog CS8qIEdldCBjYWNoZSdzIGRlc2NyaXB0aW9uIG9iai4gKi8KIAljYWNoZXAgPSAoa21lbV9jYWNo ZV90ICopIGttZW1fY2FjaGVfYWxsb2MoJmNhY2hlX2NhY2hlLCBTTEFCX0tFUk5FTCk7CkBAIC04 MTMsOCArODEyLDggQEAKIAkJCWttZW1fY2FjaGVfdCAqcGMgPSBsaXN0X2VudHJ5KHAsIGttZW1f Y2FjaGVfdCwgbmV4dCk7CiAKIAkJCS8qIFRoZSBuYW1lIGZpZWxkIGlzIGNvbnN0YW50IC0gbm8g bG9jayBuZWVkZWQuICovCi0JCQlpZiAoIXN0cmNtcChwYy0+bmFtZSwgbmFtZSkpCi0JCQkJQlVH KCk7CisJCQlCVUdfT04gKCFzdHJjbXAocGMtPm5hbWUsIG5hbWUpKTsKKwkJCQkKIAkJfQogCX0K IApAQCAtODY0LDggKzg2Myw4IEBACiAJZnVuYyhhcmcpOwogCWxvY2FsX2lycV9lbmFibGUoKTsK IAotCWlmIChzbXBfY2FsbF9mdW5jdGlvbihmdW5jLCBhcmcsIDEsIDEpKQotCQlCVUcoKTsKKwlC VUdfT04gKHNtcF9jYWxsX2Z1bmN0aW9uKGZ1bmMsIGFyZywgMSwgMSkpOworCQkKIH0KIHR5cGVk ZWYgc3RydWN0IGNjdXBkYXRlX3N0cnVjdF9zCiB7CkBAIC05MzIsOCArOTMxLDcgQEAKIAogCQlz bGFicCA9IGxpc3RfZW50cnkoY2FjaGVwLT5zbGFic19mcmVlLnByZXYsIHNsYWJfdCwgbGlzdCk7 CiAjaWYgREVCVUcKLQkJaWYgKHNsYWJwLT5pbnVzZSkKLQkJCUJVRygpOworCQlCVUdfT04gKHNs YWJwLT5pbnVzZSk7CiAjZW5kaWYKIAkJbGlzdF9kZWwoJnNsYWJwLT5saXN0KTsKIApAQCAtOTU1 LDggKzk1Myw4IEBACiAgKi8KIGludCBrbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKmNh Y2hlcCkKIHsKLQlpZiAoIWNhY2hlcCB8fCBpbl9pbnRlcnJ1cHQoKSB8fCAhaXNfY2hhaW5lZF9r bWVtX2NhY2hlKGNhY2hlcCkpCi0JCUJVRygpOworCUJVR19PTiAoIWNhY2hlcCB8fCBpbl9pbnRl cnJ1cHQoKSB8fCAhaXNfY2hhaW5lZF9rbWVtX2NhY2hlKGNhY2hlcCkpOworCQkKIAogCXJldHVy biBfX2ttZW1fY2FjaGVfc2hyaW5rKGNhY2hlcCk7CiB9CkBAIC05NzgsOCArOTc2LDcgQEAKICAq LwogaW50IGttZW1fY2FjaGVfZGVzdHJveSAoa21lbV9jYWNoZV90ICogY2FjaGVwKQogewotCWlm ICghY2FjaGVwIHx8IGluX2ludGVycnVwdCgpIHx8IGNhY2hlcC0+Z3Jvd2luZykKLQkJQlVHKCk7 CisJQlVHX09OICghY2FjaGVwIHx8IGluX2ludGVycnVwdCgpIHx8IGNhY2hlcC0+Z3Jvd2luZyk7 CiAKIAkvKiBGaW5kIHRoZSBjYWNoZSBpbiB0aGUgY2hhaW4gb2YgY2FjaGVzLiAqLwogCWRvd24o JmNhY2hlX2NoYWluX3NlbSk7CkBAIC0xMDY3LDExICsxMDY0LDEwIEBACiAJCQkvKiBuZWVkIHRv IHBvaXNvbiB0aGUgb2JqcyAqLwogCQkJa21lbV9wb2lzb25fb2JqKGNhY2hlcCwgb2JqcCk7CiAJ CWlmIChjYWNoZXAtPmZsYWdzICYgU0xBQl9SRURfWk9ORSkgewotCQkJaWYgKCooKHVuc2lnbmVk IGxvbmcqKShvYmpwKSkgIT0gUkVEX01BR0lDMSkKLQkJCQlCVUcoKTsKLQkJCWlmICgqKCh1bnNp Z25lZCBsb25nKikob2JqcCArIGNhY2hlcC0+b2Jqc2l6ZSAtCi0JCQkJCUJZVEVTX1BFUl9XT1JE KSkgIT0gUkVEX01BR0lDMSkKLQkJCQlCVUcoKTsKKwkJCUJVR19PTiAoKigodW5zaWduZWQgbG9u ZyopKG9ianApKSAhPSBSRURfTUFHSUMxKTsKKwkJCQkKKwkJCUJVR19PTiAoKigodW5zaWduZWQg bG9uZyopKG9ianAgKyBjYWNoZXAtPm9ianNpemUgLQorCQkJCQlCWVRFU19QRVJfV09SRCkpICE9 IFJFRF9NQUdJQzEpOwogCQl9CiAjZW5kaWYKIAkJc2xhYl9idWZjdGwoc2xhYnApW2ldID0gaSsx OwpAQCAtMTA5Nyw4ICsxMDkzLDcgQEAKIAkvKiBCZSBsYXp5IGFuZCBvbmx5IGNoZWNrIGZvciB2 YWxpZCBmbGFncyBoZXJlLAogIAkgKiBrZWVwaW5nIGl0IG91dCBvZiB0aGUgY3JpdGljYWwgcGF0 aCBpbiBrbWVtX2NhY2hlX2FsbG9jKCkuCiAJICovCi0JaWYgKGZsYWdzICYgfihTTEFCX0RNQXxT TEFCX0xFVkVMX01BU0t8U0xBQl9OT19HUk9XKSkKLQkJQlVHKCk7CisJQlVHX09OIChmbGFncyAm IH4oU0xBQl9ETUF8U0xBQl9MRVZFTF9NQVNLfFNMQUJfTk9fR1JPVykpOwogCWlmIChmbGFncyAm IFNMQUJfTk9fR1JPVykKIAkJcmV0dXJuIDA7CiAKQEAgLTExMDgsOCArMTEwMyw3IEBACiAJICog aW4ga21lbV9jYWNoZV9hbGxvYygpLiBJZiBhIGNhbGxlciBpcyBzZXJpb3VzbHkgbWlzLWJlaGF2 aW5nIHRoZXkKIAkgKiB3aWxsIGV2ZW50dWFsbHkgYmUgY2F1Z2h0IGhlcmUgKHdoZXJlIGl0IG1h dHRlcnMpLgogCSAqLwotCWlmIChpbl9pbnRlcnJ1cHQoKSAmJiAoZmxhZ3MgJiBTTEFCX0xFVkVM X01BU0spICE9IFNMQUJfQVRPTUlDKQotCQlCVUcoKTsKKwlCVUdfT04oaW5faW50ZXJydXB0KCkg JiYgKGZsYWdzICYgU0xBQl9MRVZFTF9NQVNLKSAhPSBTTEFCX0FUT01JQyk7CiAKIAljdG9yX2Zs YWdzID0gU0xBQl9DVE9SX0NPTlNUUlVDVE9SOwogCWxvY2FsX2ZsYWdzID0gKGZsYWdzICYgU0xB Ql9MRVZFTF9NQVNLKTsKQEAgLTExOTYsMTUgKzExOTAsMTMgQEAKIAlpbnQgaTsKIAl1bnNpZ25l ZCBpbnQgb2JqbnIgPSAob2JqcC1zbGFicC0+c19tZW0pL2NhY2hlcC0+b2Jqc2l6ZTsKIAotCWlm IChvYmpuciA+PSBjYWNoZXAtPm51bSkKLQkJQlVHKCk7Ci0JaWYgKG9ianAgIT0gc2xhYnAtPnNf bWVtICsgb2JqbnIqY2FjaGVwLT5vYmpzaXplKQotCQlCVUcoKTsKKwlCVUdfT04gKG9iam5yID49 IGNhY2hlcC0+bnVtKTsKKwkJCisJQlVHX09OIChvYmpwICE9IHNsYWJwLT5zX21lbSArIG9iam5y KmNhY2hlcC0+b2Jqc2l6ZSk7CiAKIAkvKiBDaGVjayBzbGFiJ3MgZnJlZWxpc3QgdG8gc2VlIGlm IHRoaXMgb2JqIGlzIHRoZXJlLiAqLwogCWZvciAoaSA9IHNsYWJwLT5mcmVlOyBpICE9IEJVRkNU TF9FTkQ7IGkgPSBzbGFiX2J1ZmN0bChzbGFicClbaV0pIHsKLQkJaWYgKGkgPT0gb2JqbnIpCi0J CQlCVUcoKTsKKwkJQlVHX09OIChpID09IG9iam5yKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0x MjEzLDExICsxMjA1LDkgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBrbWVtX2NhY2hlX2FsbG9jX2hl YWQoa21lbV9jYWNoZV90ICpjYWNoZXAsIGludCBmbGFncykKIHsKIAlpZiAoZmxhZ3MgJiBTTEFC X0RNQSkgewotCQlpZiAoIShjYWNoZXAtPmdmcGZsYWdzICYgR0ZQX0RNQSkpCi0JCQlCVUcoKTsK KwkJQlVHX09OICghKGNhY2hlcC0+Z2ZwZmxhZ3MgJiBHRlBfRE1BKSk7CiAJfSBlbHNlIHsKLQkJ aWYgKGNhY2hlcC0+Z2ZwZmxhZ3MgJiBHRlBfRE1BKQotCQkJQlVHKCk7CisJCUJVR19PTiAoY2Fj aGVwLT5nZnBmbGFncyAmIEdGUF9ETUEpOwogCX0KIH0KIApAQCAtMTI0MSwxNiArMTIzMSwxMyBA QAogCX0KICNpZiBERUJVRwogCWlmIChjYWNoZXAtPmZsYWdzICYgU0xBQl9QT0lTT04pCi0JCWlm IChrbWVtX2NoZWNrX3BvaXNvbl9vYmooY2FjaGVwLCBvYmpwKSkKLQkJCUJVRygpOworCQlCVUdf T04gKGttZW1fY2hlY2tfcG9pc29uX29iaihjYWNoZXAsIG9ianApKTsKIAlpZiAoY2FjaGVwLT5m bGFncyAmIFNMQUJfUkVEX1pPTkUpIHsKIAkJLyogU2V0IGFsbG9jIHJlZC16b25lLCBhbmQgY2hl Y2sgb2xkIG9uZS4gKi8KLQkJaWYgKHhjaGcoKHVuc2lnbmVkIGxvbmcgKilvYmpwLCBSRURfTUFH SUMyKSAhPQotCQkJCQkJCSBSRURfTUFHSUMxKQotCQkJQlVHKCk7Ci0JCWlmICh4Y2hnKCh1bnNp Z25lZCBsb25nICopKG9ianArY2FjaGVwLT5vYmpzaXplIC0KLQkJCSAgQllURVNfUEVSX1dPUkQp LCBSRURfTUFHSUMyKSAhPSBSRURfTUFHSUMxKQotCQkJQlVHKCk7CisJCUJVR19PTiAoeGNoZygo dW5zaWduZWQgbG9uZyAqKW9ianAsIFJFRF9NQUdJQzIpICE9CisJCQkJCQkJIFJFRF9NQUdJQzEp OworCQlCVUdfT04gKHhjaGcoKHVuc2lnbmVkIGxvbmcgKikob2JqcCtjYWNoZXAtPm9ianNpemUg LQorCQkJICBCWVRFU19QRVJfV09SRCksIFJFRF9NQUdJQzIpICE9IFJFRF9NQUdJQzEpOwogCQlv YmpwICs9IEJZVEVTX1BFUl9XT1JEOwogCX0KICNlbmRpZgpAQCAtMTQxNywxMyArMTQwNCwxMyBA QAogCiAJaWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFRF9aT05FKSB7CiAJCW9ianAgLT0gQllU RVNfUEVSX1dPUkQ7Ci0JCWlmICh4Y2hnKCh1bnNpZ25lZCBsb25nICopb2JqcCwgUkVEX01BR0lD MSkgIT0gUkVEX01BR0lDMikKKwkJIEJVR19PTih4Y2hnKCh1bnNpZ25lZCBsb25nICopb2JqcCwg UkVEX01BR0lDMSkgIT0gUkVEX01BR0lDMik7CiAJCQkvKiBFaXRoZXIgd3JpdGUgYmVmb3JlIHN0 YXJ0LCBvciBhIGRvdWJsZSBmcmVlLiAqLwotCQkJQlVHKCk7Ci0JCWlmICh4Y2hnKCh1bnNpZ25l ZCBsb25nICopKG9ianArY2FjaGVwLT5vYmpzaXplIC0KLQkJCQlCWVRFU19QRVJfV09SRCksIFJF RF9NQUdJQzEpICE9IFJFRF9NQUdJQzIpCi0JCQkvKiBFaXRoZXIgd3JpdGUgcGFzdCBlbmQsIG9y IGEgZG91YmxlIGZyZWUuICovCi0JCQlCVUcoKTsKKwkJCQorCQlCVUdfT04gKHhjaGcoKHVuc2ln bmVkIGxvbmcgKikob2JqcCtjYWNoZXAtPm9ianNpemUgLQorCQkJCUJZVEVTX1BFUl9XT1JEKSwg UkVEX01BR0lDMSkgIT0gUkVEX01BR0lDMik7CisJCS8qIEVpdGhlciB3cml0ZSBwYXN0IGVuZCwg b3IgYSBkb3VibGUgZnJlZS4gKi8KKwkJCQogCX0KIAlpZiAoY2FjaGVwLT5mbGFncyAmIFNMQUJf UE9JU09OKQogCQlrbWVtX3BvaXNvbl9vYmooY2FjaGVwLCBvYmpwKTsKQEAgLTE1NjEsOCArMTU0 OCw4IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKICNpZiBERUJVRwogCUNIRUNLX1BBR0Uodmly dF90b19wYWdlKG9ianApKTsKLQlpZiAoY2FjaGVwICE9IEdFVF9QQUdFX0NBQ0hFKHZpcnRfdG9f cGFnZShvYmpwKSkpCi0JCUJVRygpOworCQorCUJVR19PTiAoY2FjaGVwICE9IEdFVF9QQUdFX0NB Q0hFKHZpcnRfdG9fcGFnZShvYmpwKSkpOwogI2VuZGlmCiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFn cyk7CkBAIC0xNzYwLDggKzE3NDcsOCBAQAogCQl3aGlsZSAocCAhPSAmc2VhcmNocC0+c2xhYnNf ZnJlZSkgewogCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHAsIHNsYWJfdCwgbGlzdCk7CiAjaWYgREVC VUcKLQkJCWlmIChzbGFicC0+aW51c2UpCi0JCQkJQlVHKCk7CisJCQlCVUdfT04oc2xhYnAtPmlu dXNlKTsKKwkJCQkKICNlbmRpZgogCQkJZnVsbF9mcmVlKys7CiAJCQlwID0gcC0+bmV4dDsKQEAg LTE4MTMsOCArMTgwMCw4IEBACiAJCQlicmVhazsKIAkJc2xhYnAgPSBsaXN0X2VudHJ5KHAsc2xh Yl90LGxpc3QpOwogI2lmIERFQlVHCi0JCWlmIChzbGFicC0+aW51c2UpCi0JCQlCVUcoKTsKKwkJ QlVHX09OIChzbGFicC0+aW51c2UpOworCiAjZW5kaWYKIAkJbGlzdF9kZWwoJnNsYWJwLT5saXN0 KTsKIAkJU1RBVFNfSU5DX1JFQVBFRChiZXN0X2NhY2hlcCk7CkBAIC0xODg1LDIyICsxODcyLDIy IEBACiAJCW51bV9zbGFicyA9IDA7CiAJCWxpc3RfZm9yX2VhY2gocSwmY2FjaGVwLT5zbGFic19m dWxsKSB7CiAJCQlzbGFicCA9IGxpc3RfZW50cnkocSwgc2xhYl90LCBsaXN0KTsKLQkJCWlmIChz bGFicC0+aW51c2UgIT0gY2FjaGVwLT5udW0pCi0JCQkJQlVHKCk7CisJCQkgQlVHX09OKHNsYWJw LT5pbnVzZSAhPSBjYWNoZXAtPm51bSk7CisJCQkgCiAJCQlhY3RpdmVfb2JqcyArPSBjYWNoZXAt Pm51bTsKIAkJCWFjdGl2ZV9zbGFicysrOwogCQl9CiAJCWxpc3RfZm9yX2VhY2gocSwmY2FjaGVw LT5zbGFic19wYXJ0aWFsKSB7CiAJCQlzbGFicCA9IGxpc3RfZW50cnkocSwgc2xhYl90LCBsaXN0 KTsKLQkJCWlmIChzbGFicC0+aW51c2UgPT0gY2FjaGVwLT5udW0gfHwgIXNsYWJwLT5pbnVzZSkK LQkJCQlCVUcoKTsKKwkJCUJVR19PTiAoc2xhYnAtPmludXNlID09IGNhY2hlcC0+bnVtIHx8ICFz bGFicC0+aW51c2UpOworCQkJCiAJCQlhY3RpdmVfb2JqcyArPSBzbGFicC0+aW51c2U7CiAJCQlh Y3RpdmVfc2xhYnMrKzsKIAkJfQogCQlsaXN0X2Zvcl9lYWNoKHEsJmNhY2hlcC0+c2xhYnNfZnJl ZSkgewogCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHEsIHNsYWJfdCwgbGlzdCk7Ci0JCQlpZiAoc2xh YnAtPmludXNlKQotCQkJCUJVRygpOworCQkJQlVHX09OKHNsYWJwLT5pbnVzZSk7CisJCQkKIAkJ CW51bV9zbGFicysrOwogCQl9CiAJCW51bV9zbGFicys9YWN0aXZlX3NsYWJzOwpkaWZmIC11IC0t cmVjdXJzaXZlIGxpbnV4L21tL3N3YXBfc3RhdGUuYyB2Mi41LjEvbGludXgvbW0vc3dhcF9zdGF0 ZS5jCi0tLSBsaW51eC9tbS9zd2FwX3N0YXRlLmMJVGh1IE5vdiAgMSAwMDozMTowMyAyMDAxCisr KyB2Mi41LjEvbGludXgvbW0vc3dhcF9zdGF0ZS5jCVN1biBKYW4gIDYgMDQ6MjU6MTMgMjAwMgpA QCAtNjksOCArNjksOCBAQAogCiBpbnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBh Z2UsIHN3cF9lbnRyeV90IGVudHJ5KQogewotCWlmIChwYWdlLT5tYXBwaW5nKQotCQlCVUcoKTsK KwlCVUdfT04gKHBhZ2UtPm1hcHBpbmcpOworCQogCWlmICghc3dhcF9kdXBsaWNhdGUoZW50cnkp KSB7CiAJCUlOQ19DQUNIRV9JTkZPKG5vZW50X3JhY2UpOwogCQlyZXR1cm4gLUVOT0VOVDsKQEAg LTgxLDEwICs4MSw5IEBACiAJCUlOQ19DQUNIRV9JTkZPKGV4aXN0X3JhY2UpOwogCQlyZXR1cm4g LUVFWElTVDsKIAl9Ci0JaWYgKCFQYWdlTG9ja2VkKHBhZ2UpKQotCQlCVUcoKTsKLQlpZiAoIVBh Z2VTd2FwQ2FjaGUocGFnZSkpCi0JCUJVRygpOworCUJVR19PTighUGFnZUxvY2tlZChwYWdlKSk7 CisJQlVHX09OICghUGFnZVN3YXBDYWNoZShwYWdlKSk7CisJCiAJSU5DX0NBQ0hFX0lORk8oYWRk X3RvdGFsKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTk1LDEwICs5NCw5IEBACiAgKi8KIHZvaWQgX19k ZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQogewotCWlmICghUGFnZUxv Y2tlZChwYWdlKSkKLQkJQlVHKCk7Ci0JaWYgKCFQYWdlU3dhcENhY2hlKHBhZ2UpKQotCQlCVUco KTsKKwlCVUdfT04gKCFQYWdlTG9ja2VkKHBhZ2UpKTsKKwlCVUdfT04gKCFQYWdlU3dhcENhY2hl KHBhZ2UpKTsKKwkKIAlDbGVhclBhZ2VEaXJ0eShwYWdlKTsKIAlfX3JlbW92ZV9pbm9kZV9wYWdl KHBhZ2UpOwogCUlOQ19DQUNIRV9JTkZPKGRlbF90b3RhbCk7CkBAIC0xMTQsOCArMTEyLDcgQEAK IHsKIAlzd3BfZW50cnlfdCBlbnRyeTsKIAotCWlmICghUGFnZUxvY2tlZChwYWdlKSkKLQkJQlVH KCk7CisJQlVHX09OICghUGFnZUxvY2tlZChwYWdlKSk7CiAKIAlibG9ja19mbHVzaHBhZ2UocGFn ZSwgMCk7CiAKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9zd2FwZmlsZS5jIHYyLjUuMS9s aW51eC9tbS9zd2FwZmlsZS5jCi0tLSBsaW51eC9tbS9zd2FwZmlsZS5jCVNhdCBKYW4gIDUgMTc6 MDU6MTIgMjAwMgorKysgdjIuNS4xL2xpbnV4L21tL3N3YXBmaWxlLmMJU3VuIEphbiAgNiAwNDoy Mzo0MyAyMDAyCkBAIC0yNjIsOCArMjYyLDggQEAKIHsKIAlpbnQgcmV0dmFsID0gMDsKIAotCWlm ICghUGFnZUxvY2tlZChwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OICghUGFnZUxvY2tlZChwYWdl KSk7CisJCiAJc3dpdGNoIChwYWdlX2NvdW50KHBhZ2UpKSB7CiAJY2FzZSAzOgogCQlpZiAoIXBh Z2UtPmJ1ZmZlcnMpCkBAIC0yOTIsOCArMjkyLDggQEAKIAlzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVj dCAqIHA7CiAJc3dwX2VudHJ5X3QgZW50cnk7CiAKLQlpZiAoIVBhZ2VMb2NrZWQocGFnZSkpCi0J CUJVRygpOworCUJVR19PTiAoIVBhZ2VMb2NrZWQocGFnZSkpOworCQogCWlmICghUGFnZVN3YXBD YWNoZShwYWdlKSkKIAkJcmV0dXJuIDA7CiAJaWYgKHBhZ2VfY291bnQocGFnZSkgLSAhIXBhZ2Ut PmJ1ZmZlcnMgIT0gMikJLyogMjogdXMgKyBjYWNoZSAqLwpAQCAtNDI4LDggKzQyOCw3IEBACiAJ ZW5kID0gYWRkcmVzcyArIHNpemU7CiAJaWYgKGVuZCA+IFBHRElSX1NJWkUpCiAJCWVuZCA9IFBH RElSX1NJWkU7Ci0JaWYgKGFkZHJlc3MgPj0gZW5kKQotCQlCVUcoKTsKKwlCVUdfT04gKGFkZHJl c3MgPj0gZW5kKTsKIAlkbyB7CiAJCXVudXNlX3BtZCh2bWEsIHBtZCwgYWRkcmVzcywgZW5kIC0g YWRkcmVzcywgb2Zmc2V0LCBlbnRyeSwKIAkJCSAgcGFnZSk7CkBAIC00NDQsOCArNDQzLDcgQEAK IHsKIAl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gdm1hLT52bV9zdGFydCwgZW5kID0gdm1hLT52bV9l bmQ7CiAKLQlpZiAoc3RhcnQgPj0gZW5kKQotCQlCVUcoKTsKKwkgQlVHX09OKHN0YXJ0ID49IGVu ZCk7CiAJZG8gewogCQl1bnVzZV9wZ2Qodm1hLCBwZ2Rpciwgc3RhcnQsIGVuZCAtIHN0YXJ0LCBl bnRyeSwgcGFnZSk7CiAJCXN0YXJ0ID0gKHN0YXJ0ICsgUEdESVJfU0laRSkgJiBQR0RJUl9NQVNL OwpAQCAtNjc0LDggKzY3Miw4IEBACiAJCSAqIE5vdGUgc2htZW1fdW51c2UgYWxyZWFkeSBkZWxl dGVkIGl0cyBmcm9tIHN3YXAgY2FjaGUuCiAJCSAqLwogCQlzd2NvdW50ID0gKnN3YXBfbWFwOwot CQlpZiAoKHN3Y291bnQgPiAwKSAhPSBQYWdlU3dhcENhY2hlKHBhZ2UpKQotCQkJQlVHKCk7CisJ CSBCVUdfT04oKHN3Y291bnQgPiAwKSAhPSBQYWdlU3dhcENhY2hlKHBhZ2UpKTsKKwkJIAogCQlp ZiAoKHN3Y291bnQgPiAxKSAmJiBQYWdlRGlydHkocGFnZSkpIHsKIAkJCXJ3X3N3YXBfcGFnZShX UklURSwgcGFnZSk7CiAJCQlsb2NrX3BhZ2UocGFnZSk7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGlu dXgvbW0vdm1zY2FuLmMgdjIuNS4xL2xpbnV4L21tL3Ztc2Nhbi5jCi0tLSBsaW51eC9tbS92bXNj YW4uYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS92bXNjYW4u YwlTdW4gSmFuICA2IDA0OjI2OjE3IDIwMDIKQEAgLTIzNSw4ICsyMzUsNyBAQAogCXBnZGlyID0g cGdkX29mZnNldChtbSwgYWRkcmVzcyk7CiAKIAllbmQgPSB2bWEtPnZtX2VuZDsKLQlpZiAoYWRk cmVzcyA+PSBlbmQpCi0JCUJVRygpOworCUJVR19PTiAoYWRkcmVzcyA+PSBlbmQpOwogCWRvIHsK IAkJY291bnQgPSBzd2FwX291dF9wZ2QobW0sIHZtYSwgcGdkaXIsIGFkZHJlc3MsIGVuZCwgY291 bnQsIGNsYXNzem9uZSk7CiAJCWlmICghY291bnQpCg== --------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9-- - 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/