From owner-freebsd-net@FreeBSD.ORG Thu Nov 15 06:18:33 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F1239B82; Thu, 15 Nov 2012 06:18:32 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-ob0-f182.google.com (mail-ob0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id 888E38FC12; Thu, 15 Nov 2012 06:18:32 +0000 (UTC) Received: by mail-ob0-f182.google.com with SMTP id 16so1656611obc.13 for ; Wed, 14 Nov 2012 22:18:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=4CcpiinliKUIH0pZHxGMUjpYQKH32I9qfbto6cmhCeA=; b=JtJ+RMLddkv4ck1uGfr99lxlTIFaGFa+5tzXMyPTQvQlmjCbnqsYl0u1cyMVpkCios EkoJIYqt/50HSwzhDbhoDrQKnzcY+G1VWlNiPAZP0z3GQ8Gi46HKnzXHtWu6rqEnnA1z /qRCThNafKAIIXr+4P4uDWrI4K9mE5cpr3TrucLLaodpyRkExRm9SubgySP2tn7Er9+/ Ul+ncDroaxwZb+gCcS1bmcUoQJE6+FKsJ6uIWgVfI95BMzEPGmLZpC2hkOEBXcIOcjdh ngnuYT146O7ukr5kHmmjS50SWulG8QdimXqCazHAJWF6PRjxIiTciV9I+6DWWltJlPL8 hLFA== MIME-Version: 1.0 Received: by 10.60.11.197 with SMTP id s5mr104246oeb.29.1352960312126; Wed, 14 Nov 2012 22:18:32 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.76.27.65 with HTTP; Wed, 14 Nov 2012 22:18:31 -0800 (PST) In-Reply-To: <201210291115.23845.zec@fer.hr> References: <201210291115.23845.zec@fer.hr> Date: Wed, 14 Nov 2012 22:18:31 -0800 X-Google-Sender-Auth: sJMFxyn6ZdMsU2s-vEvBpK8LauI Message-ID: Subject: Re: VIMAGE crashes on 9.x with hotplug net80211 devices From: Adrian Chadd To: Marko Zec Content-Type: multipart/mixed; boundary=e89a8fb202eaccab6a04ce829ea2 Cc: freebsd-net@freebsd.org, Hans Petter Selasky , freebsd-hackers@freebsd.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Nov 2012 06:18:33 -0000 --e89a8fb202eaccab6a04ce829ea2 Content-Type: text/plain; charset=ISO-8859-1 Hi, Here's what I have thus far. Please ignore the device_printf() change. This works for me, both for hotplug cardbus wireless devices as well as (inadvertently!) a USB bluetooth device. What do you think? Adrian --e89a8fb202eaccab6a04ce829ea2 Content-Type: application/octet-stream; name="20121114-vimage-1.diff" Content-Disposition: attachment; filename="20121114-vimage-1.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h9jhpwt20 SW5kZXg6IHN5cy9rZXJuL3N1YnJfYnVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2tlcm4vc3Vicl9i dXMuYwkocmV2aXNpb24gMjQxNDkxKQorKysgc3lzL2tlcm4vc3Vicl9idXMuYwkod29ya2luZyBj b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRl IDxzeXMvbW9kdWxlLmg+CiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CisjaW5jbHVkZSA8c3lzL3Bj cHUuaD4KICNpbmNsdWRlIDxzeXMvcG9sbC5oPgogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjaW5j bHVkZSA8c3lzL2NvbmR2YXIuaD4KQEAgLTUzLDYgKzU0LDggQEAKICNpbmNsdWRlIDxzeXMvYnVz Lmg+CiAjaW5jbHVkZSA8c3lzL2ludGVycnVwdC5oPgogCisjaW5jbHVkZSA8bmV0L3ZuZXQuaD4K KwogI2luY2x1ZGUgPG1hY2hpbmUvc3RkYXJnLmg+CiAKICNpbmNsdWRlIDx2bS91bWEuaD4KQEAg LTIzMTAsNiArMjMxMyw3IEBACiAJdmFfbGlzdCBhcDsKIAlpbnQgcmV0dmFsOwogCisJcHJpbnRm KCJbJWxsZF0gIiwgKGxvbmcgbG9uZyBpbnQpIGN1cnRocmVhZC0+dGRfdGlkKTsKIAlyZXR2YWwg PSBkZXZpY2VfcHJpbnRfcHJldHR5bmFtZShkZXYpOwogCXZhX3N0YXJ0KGFwLCBmbXQpOwogCXJl dHZhbCArPSB2cHJpbnRmKGZtdCwgYXApOwpAQCAtMjcxNiw3ICsyNzIwLDcgQEAKIGludAogZGV2 aWNlX3Byb2JlX2FuZF9hdHRhY2goZGV2aWNlX3QgZGV2KQogewotCWludCBlcnJvcjsKKwlpbnQg ZXJyb3IsIGlzX2RlZmF1bHRfdm5ldDsKIAogCUdJQU5UX1JFUVVJUkVEOwogCkBAIC0yNzI1LDcg KzI3MjksMTggQEAKIAkJcmV0dXJuICgwKTsKIAllbHNlIGlmIChlcnJvciAhPSAwKQogCQlyZXR1 cm4gKGVycm9yKTsKLQlyZXR1cm4gKGRldmljZV9hdHRhY2goZGV2KSk7CisKKwkvKgorCSAqIE9u bHkgc2V0IHRoZSBkZWZhdWx0IHZuZXQgdG8gdm5ldDAgaWYgdGhlIGN1cnJlbnQKKwkgKiB2bmV0 IGlzbid0IHZuZXQwLgorCSAqLworCWlzX2RlZmF1bHRfdm5ldCA9ICEhIElTX0RFRkFVTFRfVk5F VChjdXJ2bmV0KTsKKwlpZiAoISBpc19kZWZhdWx0X3ZuZXQpCisJCUNVUlZORVRfU0VUX1FVSUVU KHZuZXQwKTsKKwllcnJvciA9IGRldmljZV9hdHRhY2goZGV2KTsKKwlpZiAoISBpc19kZWZhdWx0 X3ZuZXQpCisJCUNVUlZORVRfUkVTVE9SRSgpOworCXJldHVybiBlcnJvcjsKIH0KIAogLyoqCklu ZGV4OiBzeXMva2Vybi9zdWJyX3dpdG5lc3MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vybi9zdWJy X3dpdG5lc3MuYwkocmV2aXNpb24gMjQxNDkxKQorKysgc3lzL2tlcm4vc3Vicl93aXRuZXNzLmMJ KHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksMjggQEAKIAlyZXR1cm4gKGEtPmZyb20gPT0g Yi0+ZnJvbSAmJiBhLT50byA9PSBiLT50byk7CiB9CiAKKy8qCisgKiBXaGV0aGVyIHRvIHBhbmlj IG9yIG5vdCB3aGVuIGEgd2l0bmVzcyBjb25kaXRpb24gb2NjdXJzLgorICovCitzdGF0aWMgaW50 IHdpdG5lc3NfZG9wYW5pYyA9IDE7CisKKy8qCisgKiBIYW5kbGUgd2hldGhlciB0byBwYW5pYyBv ciBtZXJlbHkgcHJpbnQgYW4gaW5mb3JtYXRpdmUgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQK K3dpdG5lc3NfcGFuaWMoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwor CXZhX3N0YXJ0KGFwLCBmbXQpOworCXZwcmludGYoZm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKwor CS8qIFhYWCBpdCdkIGJlIG5pY2UgdG8gbWFpbnRhaW4gdGhlIGNvcnJlY3QgcGFuaWNzdHIgKi8K KwlpZiAod2l0bmVzc19kb3BhbmljKQorCQlwYW5pYygid2l0bmVzc1xuIik7Cit9CisKIHN0YXRp YyBpbnQJX2lzaXRteXgoc3RydWN0IHdpdG5lc3MgKncxLCBzdHJ1Y3Qgd2l0bmVzcyAqdzIsIGlu dCBybWFzaywKIAkJICAgIGNvbnN0IGNoYXIgKmZuYW1lKTsKICNpZmRlZiBLREIKQEAgLTQwNSw2 ICs0MjcsOSBAQAogVFVOQUJMRV9JTlQoImRlYnVnLndpdG5lc3Mua2RiIiwgJndpdG5lc3Nfa2Ri KTsKIFNZU0NUTF9JTlQoX2RlYnVnX3dpdG5lc3MsIE9JRF9BVVRPLCBrZGIsIENUTEZMQUdfUlcs ICZ3aXRuZXNzX2tkYiwgMCwgIiIpOwogCitUVU5BQkxFX0lOVCgiZGVidWcud2l0bmVzcy5wYW5p YyIsICZ3aXRuZXNzX2RvcGFuaWMpOworU1lTQ1RMX0lOVChfZGVidWdfd2l0bmVzcywgT0lEX0FV VE8sIHBhbmljLCBDVExGTEFHX1JXLCAmd2l0bmVzc19kb3BhbmljLCAwLCAiIik7CisKIC8qCiAg KiBXaGVuIEtEQiBpcyBlbmFibGVkIGFuZCB3aXRuZXNzX3RyYWNlIGlzIDEsIGl0IHdpbGwgY2F1 c2UgdGhlIHN5c3RlbQogICogdG8gcHJpbnQgYSBzdGFjayB0cmFjZToKQEAgLTcyMiwxOCArNzQ3 LDYgQEAKICAqLwogc3RhdGljIGludCB3aXRuZXNzX3NwaW5fd2FybiA9IDA7CiAKLS8qIFRyaW0g dXNlbGVzcyBnYXJiYWdlIGZyb20gZmlsZW5hbWVzLiAqLwotc3RhdGljIGNvbnN0IGNoYXIgKgot Zml4dXBfZmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZSkKLXsKLQotCWlmIChmaWxlID09IE5VTEwp Ci0JCXJldHVybiAoTlVMTCk7Ci0Jd2hpbGUgKHN0cm5jbXAoZmlsZSwgIi4uLyIsIDMpID09IDAp Ci0JCWZpbGUgKz0gMzsKLQlyZXR1cm4gKGZpbGUpOwotfQotCiAvKgogICogVGhlIFdJVE5FU1Mt ZW5hYmxlZCBkaWFnbm9zdGljIGNvZGUuICBOb3RlIHRoYXQgdGhlIHdpdG5lc3MgY29kZSBkb2Vz CiAgKiBhc3N1bWUgdGhhdCB0aGUgZWFybHkgYm9vdCBpcyBzaW5nbGUtdGhyZWFkZWQgYXQgbGVh c3QgdW50aWwgYWZ0ZXIgdGhpcwpAQCAtODI0LDE1ICs4MzcsMTUgQEAKIAljbGFzcyA9IExPQ0tf Q0xBU1MobG9jayk7CiAJaWYgKChsb2NrLT5sb19mbGFncyAmIExPX1JFQ1VSU0FCTEUpICE9IDAg JiYKIAkgICAgKGNsYXNzLT5sY19mbGFncyAmIExDX1JFQ1VSU0FCTEUpID09IDApCi0JCXBhbmlj KCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgcmVjdXJzYWJsZSIsIF9fZnVuY19fLAorCQl3 aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgcmVjdXJzYWJsZSIsIF9f ZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwogCWlmICgobG9j ay0+bG9fZmxhZ3MgJiBMT19TTEVFUEFCTEUpICE9IDAgJiYKIAkgICAgKGNsYXNzLT5sY19mbGFn cyAmIExDX1NMRUVQQUJMRSkgPT0gMCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgY2FuIG5v dCBiZSBzbGVlcGFibGUiLCBfX2Z1bmNfXywKKwkJd2l0bmVzc19wYW5pYygiJXM6IGxvY2sgKCVz KSAlcyBjYW4gbm90IGJlIHNsZWVwYWJsZSIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25h bWUsIGxvY2stPmxvX25hbWUpOwogCWlmICgobG9jay0+bG9fZmxhZ3MgJiBMT19VUEdSQURBQkxF KSAhPSAwICYmCiAJICAgIChjbGFzcy0+bGNfZmxhZ3MgJiBMQ19VUEdSQURBQkxFKSA9PSAwKQot CQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBjYW4gbm90IGJlIHVwZ3JhZGFibGUiLCBfX2Z1bmNf XywKKwkJd2l0bmVzc19wYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBjYW4gbm90IGJlIHVwZ3JhZGFi bGUiLCBfX2Z1bmNfXywKIAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsKIAog CS8qCkBAIC04NDksNyArODYyLDcgQEAKIAkJcGVuZGluZ19sb2Nrc1twZW5kaW5nX2NudF0ud2hf bG9jayA9IGxvY2s7CiAJCXBlbmRpbmdfbG9ja3NbcGVuZGluZ19jbnQrK10ud2hfdHlwZSA9IHR5 cGU7CiAJCWlmIChwZW5kaW5nX2NudCA+IFdJVE5FU1NfUEVORExJU1QpCi0JCQlwYW5pYygiJXM6 IHBlbmRpbmcgbG9ja3MgbGlzdCBpcyB0b28gc21hbGwsIGJ1bXAgaXRcbiIsCisJCQl3aXRuZXNz X3BhbmljKCIlczogcGVuZGluZyBsb2NrcyBsaXN0IGlzIHRvbyBzbWFsbCwgYnVtcCBpdFxuIiwK IAkJCSAgICBfX2Z1bmNfXyk7CiAJfSBlbHNlCiAJCWxvY2stPmxvX3dpdG5lc3MgPSBlbnJvbGwo dHlwZSwgY2xhc3MpOwpAQCAtODY0LDcgKzg3Nyw3IEBACiAJY2xhc3MgPSBMT0NLX0NMQVNTKGxv Y2spOwogCiAJaWYgKHdpdG5lc3NfY29sZCkKLQkJcGFuaWMoImxvY2sgKCVzKSAlcyBkZXN0cm95 ZWQgd2hpbGUgd2l0bmVzc19jb2xkIiwKKwkJd2l0bmVzc19wYW5pYygibG9jayAoJXMpICVzIGRl c3Ryb3llZCB3aGlsZSB3aXRuZXNzX2NvbGQiLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2st PmxvX25hbWUpOwogCiAJLyogWFhYOiBuZWVkIHRvIHZlcmlmeSB0aGF0IG5vIG9uZSBob2xkcyB0 aGUgbG9jayAqLwpAQCAtOTM5LDcgKzk1Miw3IEBACiAgCX0KICAJdy0+d19kaXNwbGF5ZWQgPSAx OwogCWlmICh3LT53X2ZpbGUgIT0gTlVMTCAmJiB3LT53X2xpbmUgIT0gMCkKLQkJcHJudCgiIC0t IGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgZml4dXBfZmlsZW5hbWUody0+d19maWxlKSwKKwkJ cHJudCgiIC0tIGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgdy0+d19maWxlLAogCQkgICAgdy0+ d19saW5lKTsKIAllbHNlCiAJCXBybnQoIiAtLSBuZXZlciBhY3F1aXJlZFxuIik7CkBAIC0xMDE1 LDYgKzEwMjgsMTggQEAKIH0KICNlbmRpZiAvKiBEREIgKi8KIAorLyogVHJpbSB1c2VsZXNzIGdh cmJhZ2UgZnJvbSBmaWxlbmFtZXMuICovCitzdGF0aWMgY29uc3QgY2hhciAqCitmaXh1cF9maWxl bmFtZShjb25zdCBjaGFyICpmaWxlKQoreworCisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcmV0dXJu IChOVUxMKTsKKwl3aGlsZSAoc3RybmNtcChmaWxlLCAiLi4vIiwgMykgPT0gMCkKKwkJZmlsZSAr PSAzOworCXJldHVybiAoZmlsZSk7Cit9CisKIGludAogd2l0bmVzc19kZWZpbmVvcmRlcihzdHJ1 Y3QgbG9ja19vYmplY3QgKmxvY2sxLCBzdHJ1Y3QgbG9ja19vYmplY3QgKmxvY2syKQogewpAQCAt MTA3NSw5ICsxMTAwLDggQEAKIAkJICogYWxsIHNwaW4gbG9ja3MuCiAJCSAqLwogCQlpZiAodGQt PnRkX2NyaXRuZXN0ICE9IDAgJiYgIWtkYl9hY3RpdmUpCi0JCQlwYW5pYygiYmxvY2thYmxlIHNs ZWVwIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+ bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNz X3BhbmljKCJibG9ja2FibGUgc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQiLAorCQkJICAgIGNs YXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7 CiAKIAkJLyoKIAkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgbG9jayBhY3F1aXJlZCB0aGVuIGp1 c3QgcmV0dXJuIGFzCkBAIC0xMTE1LDIwICsxMTM5LDE4IEBACiAJCWlmICgobG9jazEtPmxpX2Zs YWdzICYgTElfRVhDTFVTSVZFKSAhPSAwICYmCiAJCSAgICAoZmxhZ3MgJiBMT1BfRVhDTFVTSVZF KSA9PSAwKSB7CiAJCQlwcmludGYoInNoYXJlZCBsb2NrIG9mICglcykgJXMgQCAlczolZFxuIiwK LQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxl bmFtZShmaWxlKSwgbGluZSk7CisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUs IGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJCXByaW50Zigid2hpbGUgZXhjbHVzaXZl bHkgbG9ja2VkIGZyb20gJXM6JWRcbiIsCiAJCQkgICAgZml4dXBfZmlsZW5hbWUobG9jazEtPmxp X2ZpbGUpLCBsb2NrMS0+bGlfbGluZSk7Ci0JCQlwYW5pYygic2hhcmUtPmV4Y2wiKTsKKwkJCXdp dG5lc3NfcGFuaWMoInNoYXJlLT5leGNsIik7CiAJCX0KIAkJaWYgKChsb2NrMS0+bGlfZmxhZ3Mg JiBMSV9FWENMVVNJVkUpID09IDAgJiYKIAkJICAgIChmbGFncyAmIExPUF9FWENMVVNJVkUpICE9 IDApIHsKIAkJCXByaW50ZigiZXhjbHVzaXZlIGxvY2sgb2YgKCVzKSAlcyBAICVzOiVkXG4iLAot CQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVu YW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwg Zml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJcHJpbnRmKCJ3aGlsZSBzaGFyZSBsb2Nr ZWQgZnJvbSAlczolZFxuIiwKIAkJCSAgICBmaXh1cF9maWxlbmFtZShsb2NrMS0+bGlfZmlsZSks IGxvY2sxLT5saV9saW5lKTsKLQkJCXBhbmljKCJleGNsLT5zaGFyZSIpOworCQkJd2l0bmVzc19w YW5pYygiZXhjbC0+c2hhcmUiKTsKIAkJfQogCQlyZXR1cm47CiAJfQpAQCAtMTE4MCwxMiArMTIw MiwxMSBAQAogCQkJICAgICJhY3F1aXJpbmcgZHVwbGljYXRlIGxvY2sgb2Ygc2FtZSB0eXBlOiBc IiVzXCJcbiIsIAogCQkJICAgIHctPndfbmFtZSk7CiAJCQlwcmludGYoIiAxc3QgJXMgQCAlczol ZFxuIiwgcGxvY2stPmxpX2xvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmlsZW5hbWUocGxv Y2stPmxpX2ZpbGUpLCBwbG9jay0+bGlfbGluZSk7Ci0JCQlwcmludGYoIiAybmQgJXMgQCAlczol ZFxuIiwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7 CisJCQkgICAgICAgZml4dXBfZmlsZW5hbWUocGxvY2stPmxpX2ZpbGUpLCBwbG9jay0+bGlfbGlu ZSk7CisJCQlwcmludGYoIiAybmQgJXMgQCAlczolZFxuIiwgbG9jay0+bG9fbmFtZSwgZml4dXBf ZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJd2l0bmVzc19kZWJ1Z2dlcigxKTsKLQkJfSBlbHNl Ci0JCQltdHhfdW5sb2NrX3NwaW4oJndfbXR4KTsKKwkJICAgIH0gZWxzZQorCQkJICAgIG10eF91 bmxvY2tfc3Bpbigmd19tdHgpOwogCQlyZXR1cm47CiAJfQogCW10eF9hc3NlcnQoJndfbXR4LCBN QV9PV05FRCk7CkBAIC0xMzIzLDI0ICsxMzQ0LDE5IEBACiAJCQlpZiAoaSA8IDApIHsKIAkJCQlw cmludGYoIiAxc3QgJXAgJXMgKCVzKSBAICVzOiVkXG4iLAogCQkJCSAgICBsb2NrMS0+bGlfbG9j aywgbG9jazEtPmxpX2xvY2stPmxvX25hbWUsCi0JCQkJICAgIHcxLT53X25hbWUsIGZpeHVwX2Zp bGVuYW1lKGxvY2sxLT5saV9maWxlKSwKLQkJCQkgICAgbG9jazEtPmxpX2xpbmUpOworCQkJCSAg ICB3MS0+d19uYW1lLCBmaXh1cF9maWxlbmFtZShsb2NrMS0+bGlfZmlsZSksIGxvY2sxLT5saV9s aW5lKTsKIAkJCQlwcmludGYoIiAybmQgJXAgJXMgKCVzKSBAICVzOiVkXG4iLCBsb2NrLAotCQkJ CSAgICBsb2NrLT5sb19uYW1lLCB3LT53X25hbWUsCi0JCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZp bGUpLCBsaW5lKTsKKwkJCQkgICAgbG9jay0+bG9fbmFtZSwgdy0+d19uYW1lLCBmaXh1cF9maWxl bmFtZShmaWxlKSwgbGluZSk7CiAJCQl9IGVsc2UgewogCQkJCXByaW50ZigiIDFzdCAlcCAlcyAo JXMpIEAgJXM6JWRcbiIsCiAJCQkJICAgIGxvY2syLT5saV9sb2NrLCBsb2NrMi0+bGlfbG9jay0+ bG9fbmFtZSwKIAkJCQkgICAgbG9jazItPmxpX2xvY2stPmxvX3dpdG5lc3MtPndfbmFtZSwKLQkJ CQkgICAgZml4dXBfZmlsZW5hbWUobG9jazItPmxpX2ZpbGUpLAotCQkJCSAgICBsb2NrMi0+bGlf bGluZSk7CisJCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGxvY2syLT5saV9maWxlKSwgbG9jazItPmxp X2xpbmUpOwogCQkJCXByaW50ZigiIDJuZCAlcCAlcyAoJXMpIEAgJXM6JWRcbiIsCiAJCQkJICAg IGxvY2sxLT5saV9sb2NrLCBsb2NrMS0+bGlfbG9jay0+bG9fbmFtZSwKLQkJCQkgICAgdzEtPndf bmFtZSwgZml4dXBfZmlsZW5hbWUobG9jazEtPmxpX2ZpbGUpLAotCQkJCSAgICBsb2NrMS0+bGlf bGluZSk7CisJCQkJICAgIHcxLT53X25hbWUsIGZpeHVwX2ZpbGVuYW1lKGxvY2sxLT5saV9maWxl KSwgbG9jazEtPmxpX2xpbmUpOwogCQkJCXByaW50ZigiIDNyZCAlcCAlcyAoJXMpIEAgJXM6JWRc biIsIGxvY2ssCi0JCQkJICAgIGxvY2stPmxvX25hbWUsIHctPndfbmFtZSwKLQkJCQkgICAgZml4 dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJCSAgICBsb2NrLT5sb19uYW1lLCB3LT53X25h bWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJCX0KIAkJCXdpdG5lc3NfZGVidWdn ZXIoMSk7CiAJCQlyZXR1cm47CkBAIC0xNDM1LDI5ICsxNDUxLDI0IEBACiAJY2xhc3MgPSBMT0NL X0NMQVNTKGxvY2spOwogCWlmICh3aXRuZXNzX3dhdGNoKSB7CiAJCWlmICgobG9jay0+bG9fZmxh Z3MgJiBMT19VUEdSQURBQkxFKSA9PSAwKQotCQkJcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXVwZ3Jh ZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2Nr LT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5l c3NfcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXVwZ3JhZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQi LAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShm aWxlKSwgbGluZSk7CiAJCWlmICgoY2xhc3MtPmxjX2ZsYWdzICYgTENfU0xFRVBMT0NLKSA9PSAw KQotCQkJcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXNsZWVwIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwK LQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxl bmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIG5vbi1zbGVl cCBsb2NrICglcykgJXMgQCAlczolZCIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxv X25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAl9CiAJaW5zdGFuY2UgPSBmaW5k X2luc3RhbmNlKGN1cnRocmVhZC0+dGRfc2xlZXBsb2NrcywgbG9jayk7CiAJaWYgKGluc3RhbmNl ID09IE5VTEwpCi0JCXBhbmljKCJ1cGdyYWRlIG9mIHVubG9ja2VkIGxvY2sgKCVzKSAlcyBAICVz OiVkIiwKLQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkgICAgZml4dXBf ZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIHVubG9j a2VkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKKwkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5s b19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJaWYgKHdpdG5lc3Nfd2F0Y2gp IHsKIAkJaWYgKChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9FWENMVVNJVkUpICE9IDApCi0JCQlw YW5pYygidXBncmFkZSBvZiBleGNsdXNpdmUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAg IGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZp bGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoInVwZ3JhZGUgb2YgZXhjbHVzaXZlIGxvY2sg KCVzKSAlcyBAICVzOiVkIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwg Zml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAm IExJX1JFQ1VSU0VNQVNLKSAhPSAwKQotCQkJcGFuaWMoInVwZ3JhZGUgb2YgcmVjdXJzZWQgbG9j ayAoJXMpICVzIHI9JWQgQCAlczolZCIsCisJCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIHJl Y3Vyc2VkIGxvY2sgKCVzKSAlcyByPSVkIEAgJXM6JWQiLAogCQkJICAgIGNsYXNzLT5sY19uYW1l LCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VN QVNLLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBpbnN0YW5j ZS0+bGlfZmxhZ3MgJiBMSV9SRUNVUlNFTUFTSywgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUp OwogCX0KIAlpbnN0YW5jZS0+bGlfZmxhZ3MgfD0gTElfRVhDTFVTSVZFOwogfQpAQCAtMTQ3NSwy OSArMTQ4NiwyNCBAQAogCWNsYXNzID0gTE9DS19DTEFTUyhsb2NrKTsKIAlpZiAod2l0bmVzc193 YXRjaCkgewogCQlpZiAoKGxvY2stPmxvX2ZsYWdzICYgTE9fVVBHUkFEQUJMRSkgPT0gMCkKLQkJ cGFuaWMoImRvd25ncmFkZSBvZiBub24tdXBncmFkYWJsZSBsb2NrICglcykgJXMgQCAlczolZCIs Ci0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmls ZW5hbWUoZmlsZSksIGxpbmUpOworCQl3aXRuZXNzX3BhbmljKCJkb3duZ3JhZGUgb2Ygbm9uLXVw Z3JhZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBs b2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWlmICgoY2xhc3Mt PmxjX2ZsYWdzICYgTENfU0xFRVBMT0NLKSA9PSAwKQotCQkJcGFuaWMoImRvd25ncmFkZSBvZiBu b24tc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBs b2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdp dG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiBub24tc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQi LAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShm aWxlKSwgbGluZSk7CiAJfQogCWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShjdXJ0aHJlYWQtPnRk X3NsZWVwbG9ja3MsIGxvY2spOwogCWlmIChpbnN0YW5jZSA9PSBOVUxMKQotCQlwYW5pYygiZG93 bmdyYWRlIG9mIHVubG9ja2VkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJICAgIGNsYXNzLT5s Y19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkgICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUp OworCQl3aXRuZXNzX3BhbmljKCJkb3duZ3JhZGUgb2YgdW5sb2NrZWQgbG9jayAoJXMpICVzIEAg JXM6JWQiLAorCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVu YW1lKGZpbGUpLCBsaW5lKTsKIAlpZiAod2l0bmVzc193YXRjaCkgewogCQlpZiAoKGluc3RhbmNl LT5saV9mbGFncyAmIExJX0VYQ0xVU0lWRSkgPT0gMCkKLQkJCXBhbmljKCJkb3duZ3JhZGUgb2Yg c2hhcmVkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9j ay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRu ZXNzX3BhbmljKCJkb3duZ3JhZGUgb2Ygc2hhcmVkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKKwkJ CSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSks IGxpbmUpOwogCQlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLKSAhPSAw KQotCQkJcGFuaWMoImRvd25ncmFkZSBvZiByZWN1cnNlZCBsb2NrICglcykgJXMgcj0lZCBAICVz OiVkIiwKKwkJCXdpdG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiByZWN1cnNlZCBsb2NrICglcykg JXMgcj0lZCBAICVzOiVkIiwKIAkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwK LQkJCSAgICBpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9SRUNVUlNFTUFTSywKLQkJCSAgICBmaXh1 cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQkgICAgaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElf UkVDVVJTRU1BU0ssIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAl9CiAJaW5zdGFuY2Ut PmxpX2ZsYWdzICY9IH5MSV9FWENMVVNJVkU7CiB9CkBAIC0xNTA2LDExICsxNTEyLDExIEBACiB3 aXRuZXNzX3VubG9jayhzdHJ1Y3QgbG9ja19vYmplY3QgKmxvY2ssIGludCBmbGFncywgY29uc3Qg Y2hhciAqZmlsZSwgaW50IGxpbmUpCiB7CiAJc3RydWN0IGxvY2tfbGlzdF9lbnRyeSAqKmxvY2tf bGlzdCwgKmxsZTsKLQlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5zdGFuY2U7CisJc3RydWN0IGxv Y2tfaW5zdGFuY2UgKmluc3RhbmNlID0gTlVMTDsKIAlzdHJ1Y3QgbG9ja19jbGFzcyAqY2xhc3M7 CiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJcmVnaXN0ZXJfdCBzOwotCWludCBpLCBqOworCWludCBp ID0gMCwgajsKIAogCWlmICh3aXRuZXNzX2NvbGQgfHwgbG9jay0+bG9fd2l0bmVzcyA9PSBOVUxM IHx8IHBhbmljc3RyICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTE1MzcsNyArMTU0Myw3IEBACiAJ ICogZXZlbnR1YWwgcmVnaXN0ZXIgbG9ja3MgYW5kIHJlbW92ZSB0aGVtLgogCSAqLwogCWlmICh3 aXRuZXNzX3dhdGNoID4gMCkKLQkJcGFuaWMoImxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIEAgJXM6 JWQiLCBjbGFzcy0+bGNfbmFtZSwKKwkJd2l0bmVzc19wYW5pYygibG9jayAoJXMpICVzIG5vdCBs b2NrZWQgQCAlczolZCIsIGNsYXNzLT5sY19uYW1lLAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4 dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCWVsc2UKIAkJcmV0dXJuOwpAQCAtMTU1MCwxNiAr MTU1NiwxNSBAQAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxp bmUpOwogCQlwcmludGYoIndoaWxlIGV4Y2x1c2l2ZWx5IGxvY2tlZCBmcm9tICVzOiVkXG4iLAog CQkgICAgZml4dXBfZmlsZW5hbWUoaW5zdGFuY2UtPmxpX2ZpbGUpLCBpbnN0YW5jZS0+bGlfbGlu ZSk7Ci0JCXBhbmljKCJleGNsLT51c2hhcmUiKTsKKwkJd2l0bmVzc19wYW5pYygiZXhjbC0+dXNo YXJlIik7CiAJfQogCWlmICgoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfRVhDTFVTSVZFKSA9PSAw ICYmIHdpdG5lc3Nfd2F0Y2ggPiAwICYmCiAJICAgIChmbGFncyAmIExPUF9FWENMVVNJVkUpICE9 IDApIHsKIAkJcHJpbnRmKCJleGNsdXNpdmUgdW5sb2NrIG9mICglcykgJXMgQCAlczolZFxuIiwg Y2xhc3MtPmxjX25hbWUsCiAJCSAgICBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxl KSwgbGluZSk7Ci0JCXByaW50Zigid2hpbGUgc2hhcmUgbG9ja2VkIGZyb20gJXM6JWRcbiIsCi0J CSAgICBmaXh1cF9maWxlbmFtZShpbnN0YW5jZS0+bGlfZmlsZSksCisJCXByaW50Zigid2hpbGUg c2hhcmUgbG9ja2VkIGZyb20gJXM6JWRcbiIsIGZpeHVwX2ZpbGVuYW1lKGluc3RhbmNlLT5saV9m aWxlKSwKIAkJICAgIGluc3RhbmNlLT5saV9saW5lKTsKLQkJcGFuaWMoInNoYXJlLT51ZXhjbCIp OworCQl3aXRuZXNzX3BhbmljKCJzaGFyZS0+dWV4Y2wiKTsKIAl9CiAJLyogSWYgd2UgYXJlIHJl Y3Vyc2VkLCB1bnJlY3Vyc2UuICovCiAJaWYgKChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9SRUNV UlNFTUFTSykgPiAwKSB7CkBAIC0xNTczLDcgKzE1NzgsNyBAQAogCWlmICgoaW5zdGFuY2UtPmxp X2ZsYWdzICYgTElfTk9SRUxFQVNFKSAhPSAwICYmIHdpdG5lc3Nfd2F0Y2ggPiAwKSB7CiAJCXBy aW50ZigiZm9yYmlkZGVuIHVubG9jayBvZiAoJXMpICVzIEAgJXM6JWRcbiIsIGNsYXNzLT5sY19u YW1lLAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwot CQlwYW5pYygibG9jayBtYXJrZWQgbm9yZWxlYXNlIik7CisJCXdpdG5lc3NfcGFuaWMoImxvY2sg bWFya2VkIG5vcmVsZWFzZSIpOwogCX0KIAogCS8qIE90aGVyd2lzZSwgcmVtb3ZlIHRoaXMgaXRl bSBmcm9tIHRoZSBsaXN0LiAqLwpAQCAtMTYyOCw3ICsxNjMzLDcgQEAKIAkJCQl3aXRuZXNzX2xp c3RfbG9jaygmbGxlLT5sbF9jaGlsZHJlbltpXSwgcHJpbnRmKTsKIAkJCQkKIAkJCX0KLQkJcGFu aWMoIlRocmVhZCAlcCBjYW5ub3QgZXhpdCB3aGlsZSBob2xkaW5nIHNsZWVwbG9ja3NcbiIsIHRk KTsKKwkJd2l0bmVzc19wYW5pYygiVGhyZWFkICVwIGNhbm5vdCBleGl0IHdoaWxlIGhvbGRpbmcg c2xlZXBsb2Nrc1xuIiwgdGQpOwogCX0KIAl3aXRuZXNzX2xvY2tfbGlzdF9mcmVlKGxsZSk7CiB9 CkBAIC0xNzA5LDcgKzE3MTQsNyBAQAogCX0gZWxzZQogCQlzY2hlZF91bnBpbigpOwogCWlmIChm bGFncyAmIFdBUk5fUEFOSUMgJiYgbikKLQkJcGFuaWMoIiVzIiwgX19mdW5jX18pOworCQl3aXRu ZXNzX3BhbmljKCIlcyIsIF9fZnVuY19fKTsKIAllbHNlCiAJCXdpdG5lc3NfZGVidWdnZXIobik7 CiAJcmV0dXJuIChuKTsKQEAgLTE3NTUsNyArMTc2MCw3IEBACiAJfSBlbHNlIGlmICgobG9ja19j bGFzcy0+bGNfZmxhZ3MgJiBMQ19TTEVFUExPQ0spKQogCQl0eXBlbGlzdCA9ICZ3X3NsZWVwOwog CWVsc2UKLQkJcGFuaWMoImxvY2sgY2xhc3MgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4iLAorCQl3 aXRuZXNzX3BhbmljKCJsb2NrIGNsYXNzICVzIGlzIG5vdCBzbGVlcCBvciBzcGluIiwKIAkJICAg IGxvY2tfY2xhc3MtPmxjX25hbWUpOwogCiAJbXR4X2xvY2tfc3Bpbigmd19tdHgpOwpAQCAtMTc4 Niw3ICsxNzkxLDcgQEAKIAl3LT53X3JlZmNvdW50Kys7CiAJbXR4X3VubG9ja19zcGluKCZ3X210 eCk7CiAJaWYgKGxvY2tfY2xhc3MgIT0gdy0+d19jbGFzcykKLQkJcGFuaWMoCisJCXdpdG5lc3Nf cGFuaWMoCiAJCQkibG9jayAoJXMpICVzIGRvZXMgbm90IG1hdGNoIGVhcmxpZXIgKCVzKSBsb2Nr IiwKIAkJCWRlc2NyaXB0aW9uLCBsb2NrX2NsYXNzLT5sY19uYW1lLAogCQkJdy0+d19jbGFzcy0+ bGNfbmFtZSk7CkBAIC0xOTIwLDcgKzE5MjUsNyBAQAogCWlmICghd2l0bmVzc19sb2NrX3R5cGVf ZXF1YWwocGFyZW50LCBjaGlsZCkpIHsKIAkJaWYgKHdpdG5lc3NfY29sZCA9PSAwKQogCQkJbXR4 X3VubG9ja19zcGluKCZ3X210eCk7Ci0JCXBhbmljKCIlczogcGFyZW50IFwiJXNcIiAoJXMpIGFu ZCBjaGlsZCBcIiVzXCIgKCVzKSBhcmUgbm90ICIKKwkJd2l0bmVzc19wYW5pYygiJXM6IHBhcmVu dCBcIiVzXCIgKCVzKSBhbmQgY2hpbGQgXCIlc1wiICglcykgYXJlIG5vdCAiCiAJCSAgICAidGhl IHNhbWUgbG9jayB0eXBlIiwgX19mdW5jX18sIHBhcmVudC0+d19uYW1lLAogCQkgICAgcGFyZW50 LT53X2NsYXNzLT5sY19uYW1lLCBjaGlsZC0+d19uYW1lLAogCQkgICAgY2hpbGQtPndfY2xhc3Mt PmxjX25hbWUpOwpAQCAtMjEwMiw4ICsyMTA3LDggQEAKIAlpZiAobG9jay0+bG9fd2l0bmVzcy0+ d19uYW1lICE9IGxvY2stPmxvX25hbWUpCiAJCXBybnQoIiAoJXMpIiwgbG9jay0+bG9fd2l0bmVz cy0+d19uYW1lKTsKIAlwcm50KCIgciA9ICVkICglcCkgbG9ja2VkIEAgJXM6JWRcbiIsCi0JICAg IGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLLCBsb2NrLAotCSAgICBmaXh1cF9m aWxlbmFtZShpbnN0YW5jZS0+bGlfZmlsZSksIGluc3RhbmNlLT5saV9saW5lKTsKKwkgICAgaW5z dGFuY2UtPmxpX2ZsYWdzICYgTElfUkVDVVJTRU1BU0ssIGxvY2ssIGZpeHVwX2ZpbGVuYW1lKGlu c3RhbmNlLT5saV9maWxlKSwKKwkgICAgaW5zdGFuY2UtPmxpX2xpbmUpOwogfQogCiAjaWZkZWYg RERCCkBAIC0yMTc0LDEzICsyMTc5LDYgQEAKIAlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5zdGFu Y2U7CiAJc3RydWN0IGxvY2tfY2xhc3MgKmNsYXNzOwogCi0JLyoKLQkgKiBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgaW5kZXBlbmRlbnRseSBpbiBsb2NraW5nIGNvZGUgdG8gZGVhbCB3aXRoCi0JICog R2lhbnQsIFNDSEVEVUxFUl9TVE9QUEVEKCkgY2hlY2sgY2FuIGJlIHJlbW92ZWQgaGVyZSBhZnRl ciBHaWFudAotCSAqIGlzIGdvbmUuCi0JICovCi0JaWYgKFNDSEVEVUxFUl9TVE9QUEVEKCkpCi0J CXJldHVybjsKIAlLQVNTRVJUKHdpdG5lc3NfY29sZCA9PSAwLCAoIiVzOiB3aXRuZXNzX2NvbGQi LCBfX2Z1bmNfXykpOwogCWlmIChsb2NrLT5sb193aXRuZXNzID09IE5VTEwgfHwgd2l0bmVzc193 YXRjaCA9PSAtMSB8fCBwYW5pY3N0ciAhPSBOVUxMKQogCQlyZXR1cm47CkBAIC0yMTk0LDcgKzIx OTIsNyBAQAogCX0KIAlpbnN0YW5jZSA9IGZpbmRfaW5zdGFuY2UobG9ja19saXN0LCBsb2NrKTsK IAlpZiAoaW5zdGFuY2UgPT0gTlVMTCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxv Y2tlZCIsIF9fZnVuY19fLAorCQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIG5vdCBs b2NrZWQiLCBfX2Z1bmNfXywKIAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsK IAkqZmlsZXAgPSBpbnN0YW5jZS0+bGlfZmlsZTsKIAkqbGluZXAgPSBpbnN0YW5jZS0+bGlfbGlu ZTsKQEAgLTIyMDcsMTMgKzIyMDUsNiBAQAogCXN0cnVjdCBsb2NrX2luc3RhbmNlICppbnN0YW5j ZTsKIAlzdHJ1Y3QgbG9ja19jbGFzcyAqY2xhc3M7CiAKLQkvKgotCSAqIFRoaXMgZnVuY3Rpb24g aXMgdXNlZCBpbmRlcGVuZGVudGx5IGluIGxvY2tpbmcgY29kZSB0byBkZWFsIHdpdGgKLQkgKiBH aWFudCwgU0NIRURVTEVSX1NUT1BQRUQoKSBjaGVjayBjYW4gYmUgcmVtb3ZlZCBoZXJlIGFmdGVy IEdpYW50Ci0JICogaXMgZ29uZS4KLQkgKi8KLQlpZiAoU0NIRURVTEVSX1NUT1BQRUQoKSkKLQkJ cmV0dXJuOwogCUtBU1NFUlQod2l0bmVzc19jb2xkID09IDAsICgiJXM6IHdpdG5lc3NfY29sZCIs IF9fZnVuY19fKSk7CiAJaWYgKGxvY2stPmxvX3dpdG5lc3MgPT0gTlVMTCB8fCB3aXRuZXNzX3dh dGNoID09IC0xIHx8IHBhbmljc3RyICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTIyMjcsNyArMjIx OCw3IEBACiAJfQogCWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShsb2NrX2xpc3QsIGxvY2spOwog CWlmIChpbnN0YW5jZSA9PSBOVUxMKQotCQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBub3QgbG9j a2VkIiwgX19mdW5jX18sCisJCXdpdG5lc3NfcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxv Y2tlZCIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwog CWxvY2stPmxvX3dpdG5lc3MtPndfZmlsZSA9IGZpbGU7CiAJbG9jay0+bG9fd2l0bmVzcy0+d19s aW5lID0gbGluZTsKQEAgLTIyMzksNyArMjIzMCw3IEBACiB3aXRuZXNzX2Fzc2VydChzdHJ1Y3Qg bG9ja19vYmplY3QgKmxvY2ssIGludCBmbGFncywgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUp CiB7CiAjaWZkZWYgSU5WQVJJQU5UX1NVUFBPUlQKLQlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5z dGFuY2U7CisJc3RydWN0IGxvY2tfaW5zdGFuY2UgKmluc3RhbmNlID0gTlVMTDsKIAlzdHJ1Y3Qg bG9ja19jbGFzcyAqY2xhc3M7CiAKIAlpZiAobG9jay0+bG9fd2l0bmVzcyA9PSBOVUxMIHx8IHdp dG5lc3Nfd2F0Y2ggPCAxIHx8IHBhbmljc3RyICE9IE5VTEwpCkBAIC0yMjUwLDE1ICsyMjQxLDE0 IEBACiAJZWxzZSBpZiAoKGNsYXNzLT5sY19mbGFncyAmIExDX1NQSU5MT0NLKSAhPSAwKQogCQlp bnN0YW5jZSA9IGZpbmRfaW5zdGFuY2UoUENQVV9HRVQoc3BpbmxvY2tzKSwgbG9jayk7CiAJZWxz ZSB7Ci0JCXBhbmljKCJMb2NrICglcykgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4hIiwKKwkJd2l0 bmVzc19wYW5pYygiTG9jayAoJXMpICVzIGlzIG5vdCBzbGVlcCBvciBzcGluISIsCiAJCSAgICBj bGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSk7CiAJfQogCXN3aXRjaCAoZmxhZ3MpIHsKIAlj YXNlIExBX1VOTE9DS0VEOgogCQlpZiAoaW5zdGFuY2UgIT0gTlVMTCkKLQkJCXBhbmljKCJMb2Nr ICglcykgJXMgbG9ja2VkIEAgJXM6JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+ bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNz X3BhbmljKCJMb2NrICglcykgJXMgbG9ja2VkIEAgJXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNf bmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlicmVh azsKIAljYXNlIExBX0xPQ0tFRDoKIAljYXNlIExBX0xPQ0tFRCB8IExBX1JFQ1VSU0VEOgpAQCAt MjI3MCwzNSArMjI2MCwyOSBAQAogCWNhc2UgTEFfWExPQ0tFRCB8IExBX1JFQ1VSU0VEOgogCWNh c2UgTEFfWExPQ0tFRCB8IExBX05PVFJFQ1VSU0VEOgogCQlpZiAoaW5zdGFuY2UgPT0gTlVMTCkg ewotCQkJcGFuaWMoIkxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIEAgJXM6JWQuIiwKLQkJCSAgICBj bGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxl KSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMgbm90IGxvY2tlZCBAICVz OiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVu YW1lKGZpbGUpLCBsaW5lKTsKIAkJCWJyZWFrOwogCQl9CiAJCWlmICgoZmxhZ3MgJiBMQV9YTE9D S0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfRVhDTFVTSVZFKSA9 PSAwKQotCQkJcGFuaWMoIkxvY2sgKCVzKSAlcyBub3QgZXhjbHVzaXZlbHkgbG9ja2VkIEAgJXM6 JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1 cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMg bm90IGV4Y2x1c2l2ZWx5IGxvY2tlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUs IGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChmbGFn cyAmIExBX1NMT0NLRUQpICE9IDAgJiYKIAkJICAgIChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9F WENMVVNJVkUpICE9IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIGV4Y2x1c2l2ZWx5IGxvY2tl ZCBAICVzOiVkLiIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkg ICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJd2l0bmVzc19wYW5pYygiTG9jayAo JXMpICVzIGV4Y2x1c2l2ZWx5IGxvY2tlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25h bWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChm bGFncyAmIExBX1JFQ1VSU0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYg TElfUkVDVVJTRU1BU0spID09IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIG5vdCByZWN1cnNl ZCBAICVzOiVkLiIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkg ICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJd2l0bmVzc19wYW5pYygiTG9jayAo JXMpICVzIG5vdCByZWN1cnNlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxv Y2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChmbGFncyAm IExBX05PVFJFQ1VSU0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElf UkVDVVJTRU1BU0spICE9IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIHJlY3Vyc2VkIEAgJXM6 JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1 cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMg cmVjdXJzZWQgQCAlczolZC4iLAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1l LCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXBh bmljKCJJbnZhbGlkIGxvY2sgYXNzZXJ0aW9uIGF0ICVzOiVkLiIsCi0JCSAgICBmaXh1cF9maWxl bmFtZShmaWxlKSwgbGluZSk7CisJCXdpdG5lc3NfcGFuaWMoIkludmFsaWQgbG9jayBhc3NlcnRp b24gYXQgJXM6JWQuIiwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCiAJfQogI2VuZGlm CS8qIElOVkFSSUFOVF9TVVBQT1JUICovCkBAIC0yMzIzLDcgKzIzMDcsNyBAQAogCX0KIAlpbnN0 YW5jZSA9IGZpbmRfaW5zdGFuY2UobG9ja19saXN0LCBsb2NrKTsKIAlpZiAoaW5zdGFuY2UgPT0g TlVMTCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxvY2tlZCIsIF9fZnVuY19fLAor CQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIG5vdCBsb2NrZWQiLCBfX2Z1bmNfXywK IAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsKIAogCWlmIChzZXQpCkluZGV4 OiBzeXMvbmV0L2lmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldC9pZi5jCShyZXZpc2lvbiAyNDE0 OTEpCisrKyBzeXMvbmV0L2lmLmMJKHdvcmtpbmcgY29weSkKQEAgLTgyMSw3ICs4MjEsOSBAQAog aWZfZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQogewogCisJQ1VSVk5FVF9TRVRfUVVJRVQoaWZw LT5pZl92bmV0KTsKIAlpZl9kZXRhY2hfaW50ZXJuYWwoaWZwLCAwKTsKKwlDVVJWTkVUX1JFU1RP UkUoKTsKIH0KIAogc3RhdGljIHZvaWQK --e89a8fb202eaccab6a04ce829ea2--