From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-1092272-1523155682-2-13595410149839032998 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no ("Email failed DMARC policy for domain") X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, RCVD_IN_DNSWL_MED -2.3, SPF_PASS -0.001, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='140.211.166.137', Host='smtp4.osuosl.org', Country='US', FromHeader='com', MailFrom='org' X-Spam-charsets: cc='UTF-8', plain='utf-8' X-IgnoreVacation: yes ("Email failed DMARC policy for domain") X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: driverdev-devel-bounces@linuxdriverproject.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=fm2; t= 1523155680; b=GlUC59kmOzsN1o9cHsA1JiEIs4FF9PTXFvF3nf7t7cTHDrsI0M tFntCCGIIEXQoi4A+QaAmLV+dveKCo96IAYn+2lKVk7RHGycArQ+fNdIDD88ilUG 6a8k8YKnfurCm1NFCUQYF9v+H1v8Jcpy2vrTir7p9qm9S0G5s0LKvtsojf58SmuQ PZEnCULG5A4SrJHkH76+q2ZrGncclJrasWeipo3EbI6mL8hc/9kOukv6J3QrbP47 dTrFm3uFY9yxmtC1y5f/xPEdWzagkRPCGoGI0fYSOhqBnVX3RuO1zMw7oCv6HQIo +fZykbSh3C8d3a7PoSrvLatJYMOyeVck7cWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:subject:date:message-id :in-reply-to:references:mime-version:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:cc:content-type :content-transfer-encoding:sender; s=fm2; t=1523155680; bh=AP3pO XubOz8YZLEVLwhoPVPisC9L3n83WgUUEOULUhA=; b=ud1+7p5VVP1h2BIKEvqBu +JOGU9ivTzf1C91JLxtQFmEOYB/fge9sFtwlxfqCmJu+fBU9hua0mUJi/rlATAfQ zrHmE/s/GS4/m+84YE6seDzGi9JI9UCK8SdW407gCCxAeFlB1WiMUv34JEUbqjGk k1CjYfnHgYoTIrH+4u/N1DXW/6DnhgeFE3R/AG4RFVa5aIyTHITPZ+NWcdc81+rW 4u4tE7EHJNUkysJZEggEFIah1wGuyhX/AAVizZJzuNAsL19bGp9ysQA7VT7lCb1p wUD0k26mX1QG4ZyYtWrraE/otSiLRi3KPmdGWTk4GbJliknREdCRYzeYVHMyCLkM Q== ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=redhat.com; iprev=pass policy.iprev=140.211.166.137 (smtp4.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=fraxinus.osuosl.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=fail x-ptr-helo=fraxinus.osuosl.org x-ptr-lookup=smtp4.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=redhat.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128; x-vs=clean score=-100 state=0 Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=fail (p=none,has-list-id=yes,d=none) header.from=redhat.com; iprev=pass policy.iprev=140.211.166.137 (smtp4.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=fraxinus.osuosl.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=fail x-ptr-helo=fraxinus.osuosl.org x-ptr-lookup=smtp4.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=redhat.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-CM-Envelope: MS4wfNe1upExrj8Wqb0XIVn9zbdsmeIy+U8ghV1j3J4LT8ekqnGJ+8e7Ee/ZqvSDXHXHpXS+ojUgrtFhalrLuzbydwweWdax5d28APCdTjo9D4Y5Somygne2 UOQ2xgpWbktbqFJ6mmVgDhiiXx3SRaSGItnuCjtZb0/ytiiustiUXEz/tu9tgpoPAR/iOissbfgVr3tZwBpcmHXdi4SJEmK4l/lXBYCPtW38ca+kSFkeALhT NWVEFBB7nJpnSJt5BK4PBg== X-CM-Analysis: v=2.3 cv=JLoVTfCb c=1 sm=1 tr=0 a=584k1XxxM9pnnVd4MmWcNA==:117 a=584k1XxxM9pnnVd4MmWcNA==:17 a=IkcTkHD0fZMA:10 a=Kd1tUaAdevIA:10 a=-uNXE31MpBQA:10 a=jJxKW8Ag-pUA:10 a=Z4Rwk6OoAAAA:8 a=20KFwNOVAAAA:8 a=pGLkceISAAAA:8 a=yMhMjlubAAAA:8 a=QyXUC8HyAAAA:8 a=VwQbUJbxAAAA:8 a=7CQSdrXTAAAA:8 a=1XWaLZrsAAAA:8 a=zd2uoN0lAAAA:8 a=ag1SF4gXAAAA:8 a=R5C9hjxsAAAA:8 a=DDOyTI_5AAAA:8 a=i3X5FwGiAAAA:8 a=Pk8TYAYtXO3CuMwqsbsA:9 a=xPKFq1rNDt8hkzvW:21 a=Wxf_Eip34uRy0iSY:21 a=QEXdDO2ut3YA:10 a=HkZW87K1Qel5hWWM3VKY:22 a=AjGcO6oz07-iQ99wixmX:22 a=a-qgeE7W1pNrGK8U0ZQC:22 a=Yupwre4RP9_Eg_Bd0iYG:22 a=KpS7wOGxO9l4JKx0McS0:22 a=_BcfOz0m4U4ohdxiHPKc:22 a=mmqRlSCDY2ywfjPLJ4af:22 cc=dsc X-ME-CMScore: 0 X-ME-CMCategory: none X-Remote-Delivered-To: driverdev-devel@osuosl.org From: Baoquan He To: linux-kernel@vger.kernel.org Subject: [PATCH v2 1/3] resource: Use list_head to link sibling resource Date: Sun, 8 Apr 2018 10:47:22 +0800 Message-Id: <20180408024724.16812-2-bhe@redhat.com> In-Reply-To: <20180408024724.16812-1-bhe@redhat.com> References: <20180408024724.16812-1-bhe@redhat.com> MIME-Version: 1.0 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.24 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Brijesh Singh , devicetree@vger.kernel.org, David Airlie , linux-pci@vger.kernel.org, Wei Yang , Keith Busch , Yaowei Bai , Frank Rowand , Thomas Gleixner , Lorenzo Pieralisi , Stephen Hemminger , Baoquan He , linux-nvdimm@lists.01.org, Patrik Jakobsson , linux-input@vger.kernel.org, Borislav Petkov , Tom Lendacky , Haiyang Zhang , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Rob Herring , Bjorn Helgaas , Dan Williams , Jonathan Derrick , Greg Kroah-Hartman , Dmitry Torokhov , devel@linuxdriverproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: VGhlIHN0cnVjdCByZXNvdXJjZSB1c2VzIHNpbmdseSBsaW5rZWQgbGlzdCB0byBsaW5rIHNpYmxp bmdzLiBJdCdzIG5vdAplYXN5IHRvIGRvIHJldmVyc2UgaXRlcmF0aW9uIG9uIHNpYmxpbmcgbGlz dC4gU28gcmVwbGFjZSBpdCB3aXRoIGxpc3RfaGVhZC4KCkFuZCB0aGlzIG1ha2VzIGNvZGVzIGlu IGtlcm5lbC9yZXNvdXJjZS5jIG1vcmUgcmVhZGFibGUgYWZ0ZXIgcmVmYWN0b3JpbmcKdGhhbiBw b2ludGVyIG9wZXJhdGlvbi4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51 eC1mb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogQmFvcXVhbiBIZSA8YmhlQHJlZGhhdC5j b20+CkNjOiBQYXRyaWsgSmFrb2Jzc29uIDxwYXRyaWsuci5qYWtvYnNzb25AZ21haWwuY29tPgpD YzogRGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgpDYzogIksuIFkuIFNyaW5pdmFzYW4i IDxreXNAbWljcm9zb2Z0LmNvbT4KQ2M6IEhhaXlhbmcgWmhhbmcgPGhhaXlhbmd6QG1pY3Jvc29m dC5jb20+CkNjOiBTdGVwaGVuIEhlbW1pbmdlciA8c3RoZW1taW5AbWljcm9zb2Z0LmNvbT4KQ2M6 IERtaXRyeSBUb3Jva2hvdiA8ZG1pdHJ5LnRvcm9raG92QGdtYWlsLmNvbT4KQ2M6IERhbiBXaWxs aWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpDYzogUm9iIEhlcnJpbmcgPHJvYmgrZHRA a2VybmVsLm9yZz4KQ2M6IEZyYW5rIFJvd2FuZCA8ZnJvd2FuZC5saXN0QGdtYWlsLmNvbT4KQ2M6 IEtlaXRoIEJ1c2NoIDxrZWl0aC5idXNjaEBpbnRlbC5jb20+CkNjOiBKb25hdGhhbiBEZXJyaWNr IDxqb25hdGhhbi5kZXJyaWNrQGludGVsLmNvbT4KQ2M6IExvcmVuem8gUGllcmFsaXNpIDxsb3Jl bnpvLnBpZXJhbGlzaUBhcm0uY29tPgpDYzogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xl LmNvbT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogQnJpamVz aCBTaW5naCA8YnJpamVzaC5zaW5naEBhbWQuY29tPgpDYzogIkrDqXLDtG1lIEdsaXNzZSIgPGpn bGlzc2VAcmVkaGF0LmNvbT4KQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IFRv bSBMZW5kYWNreSA8dGhvbWFzLmxlbmRhY2t5QGFtZC5jb20+CkNjOiBHcmVnIEtyb2FoLUhhcnRt YW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogWWFvd2VpIEJhaSA8YmFpeWFvd2Vp QGNtc3MuY2hpbmFtb2JpbGUuY29tPgpDYzogV2VpIFlhbmcgPHJpY2hhcmQud2VpeWFuZ0BnbWFp bC5jb20+CkNjOiBkZXZlbEBsaW51eGRyaXZlcnByb2plY3Qub3JnCkNjOiBsaW51eC1pbnB1dEB2 Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LW52ZGltbUBsaXN0cy4wMS5vcmcKQ2M6IGRldmljZXRy ZWVAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCi0tLQogZHJp dmVycy9ncHUvZHJtL2dtYTUwMC9ndHQuYyAgICAgICAgICAgICAgICB8ICAgNSArLQogZHJpdmVy cy9odi92bWJ1c19kcnYuYyAgICAgICAgICAgICAgICAgICAgICB8ICA1MiArKysrLS0tLQogZHJp dmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLW1haW4uYyB8ICAgNCArLQogZHJpdmVy cy9udmRpbW0vZTgyMC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9u dmRpbW0vbmFtZXNwYWNlX2RldnMuYyAgICAgICAgICAgICB8ICAxNCArLQogZHJpdmVycy9udmRp bW0vbmQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogZHJpdmVycy9vZi9hZGRy ZXNzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy9wY2kvaG9zdC92 bWQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9wY2kvcHJvYmUuYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL3BjaS9zZXR1cC1idXMuYyAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBpbmNsdWRlL2xpbnV4L2lvcG9ydC5oICAgICAg ICAgICAgICAgICAgICAgIHwgICA0ICstCiBrZXJuZWwvcmVzb3VyY2UuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMTkzICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEyIGZpbGVz IGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9nbWE1MDAv Z3R0LmMKaW5kZXggMzk0OWIwOTkwOTE2Li5hZGRkM2JjMDA5YWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9nbWE1MDAvZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9ndHQu YwpAQCAtNTY1LDcgKzU2NSw3IEBAIGludCBwc2JfZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IHJlc3VtZSkKIGludCBwc2JfZ3R0X3Jlc3RvcmUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIHsKIAlzdHJ1Y3QgZHJtX3BzYl9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0Jc3RydWN0IHJlc291cmNlICpyID0gZGV2X3ByaXYtPmd0dF9tZW0tPmNoaWxkOwor CXN0cnVjdCByZXNvdXJjZSAqcjsKIAlzdHJ1Y3QgZ3R0X3JhbmdlICpyYW5nZTsKIAl1bnNpZ25l ZCBpbnQgcmVzdG9yZWQgPSAwLCB0b3RhbCA9IDAsIHNpemUgPSAwOwogCkBAIC01NzMsMTQgKzU3 MywxMyBAQCBpbnQgcHNiX2d0dF9yZXN0b3JlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmd0dF9tdXRleCk7CiAJcHNiX2d0dF9pbml0KGRldiwgMSk7CiAK LQl3aGlsZSAociAhPSBOVUxMKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShyLCAmZGV2X3ByaXYt Pmd0dF9tZW0tPmNoaWxkLCBzaWJsaW5nKSB7CiAJCXJhbmdlID0gY29udGFpbmVyX29mKHIsIHN0 cnVjdCBndHRfcmFuZ2UsIHJlc291cmNlKTsKIAkJaWYgKHJhbmdlLT5wYWdlcykgewogCQkJcHNi X2d0dF9pbnNlcnQoZGV2LCByYW5nZSwgMSk7CiAJCQlzaXplICs9IHJhbmdlLT5yZXNvdXJjZS5l bmQgLSByYW5nZS0+cmVzb3VyY2Uuc3RhcnQ7CiAJCQlyZXN0b3JlZCsrOwogCQl9Ci0JCXIgPSBy LT5zaWJsaW5nOwogCQl0b3RhbCsrOwogCX0KIAltdXRleF91bmxvY2soJmRldl9wcml2LT5ndHRf bXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9odi92bWJ1c19kcnYuYyBiL2RyaXZlcnMvaHYv dm1idXNfZHJ2LmMKaW5kZXggYmM2NWM0ZDc5YzFmLi43YmE4YTI1NTIwZDkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaHYvdm1idXNfZHJ2LmMKKysrIGIvZHJpdmVycy9odi92bWJ1c19kcnYuYwpAQCAt MTQxMyw5ICsxNDEzLDggQEAgc3RhdGljIGFjcGlfc3RhdHVzIHZtYnVzX3dhbGtfcmVzb3VyY2Vz KHN0cnVjdCBhY3BpX3Jlc291cmNlICpyZXMsIHZvaWQgKmN0eCkKIHsKIAlyZXNvdXJjZV9zaXpl X3Qgc3RhcnQgPSAwOwogCXJlc291cmNlX3NpemVfdCBlbmQgPSAwOwotCXN0cnVjdCByZXNvdXJj ZSAqbmV3X3JlczsKKwlzdHJ1Y3QgcmVzb3VyY2UgKm5ld19yZXMsICp0bXA7CiAJc3RydWN0IHJl c291cmNlICoqb2xkX3JlcyA9ICZoeXBlcnZfbW1pbzsKLQlzdHJ1Y3QgcmVzb3VyY2UgKipwcmV2 X3JlcyA9IE5VTEw7CiAKIAlzd2l0Y2ggKHJlcy0+dHlwZSkgewogCkBAIC0xNDYyLDQ0ICsxNDYx LDM2IEBAIHN0YXRpYyBhY3BpX3N0YXR1cyB2bWJ1c193YWxrX3Jlc291cmNlcyhzdHJ1Y3QgYWNw aV9yZXNvdXJjZSAqcmVzLCB2b2lkICpjdHgpCiAJLyoKIAkgKiBJZiB0d28gcmFuZ2VzIGFyZSBh ZGphY2VudCwgbWVyZ2UgdGhlbS4KIAkgKi8KLQlkbyB7Ci0JCWlmICghKm9sZF9yZXMpIHsKLQkJ CSpvbGRfcmVzID0gbmV3X3JlczsKLQkJCWJyZWFrOwotCQl9Ci0KLQkJaWYgKCgoKm9sZF9yZXMp LT5lbmQgKyAxKSA9PSBuZXdfcmVzLT5zdGFydCkgewotCQkJKCpvbGRfcmVzKS0+ZW5kID0gbmV3 X3Jlcy0+ZW5kOworCWlmICghKm9sZF9yZXMpIHsKKwkJKm9sZF9yZXMgPSBuZXdfcmVzOworCQly ZXR1cm4gQUVfT0s7CisJfQorCXRtcCA9ICpvbGRfcmVzOworCWxpc3RfZm9yX2VhY2hfZW50cnlf ZnJvbSh0bXAsICZ0bXAtPnBhcmVudC0+Y2hpbGQsIHNpYmxpbmcpIHsKKwkJaWYgKCh0bXAtPmVu ZCArIDEpID09IG5ld19yZXMtPnN0YXJ0KSB7CisJCQl0bXAtPmVuZCA9IG5ld19yZXMtPmVuZDsK IAkJCWtmcmVlKG5ld19yZXMpOwogCQkJYnJlYWs7CiAJCX0KIAotCQlpZiAoKCpvbGRfcmVzKS0+ c3RhcnQgPT0gbmV3X3Jlcy0+ZW5kICsgMSkgewotCQkJKCpvbGRfcmVzKS0+c3RhcnQgPSBuZXdf cmVzLT5zdGFydDsKKwkJaWYgKHRtcC0+c3RhcnQgPT0gbmV3X3Jlcy0+ZW5kICsgMSkgeworCQkJ dG1wLT5zdGFydCA9IG5ld19yZXMtPnN0YXJ0OwogCQkJa2ZyZWUobmV3X3Jlcyk7CiAJCQlicmVh azsKIAkJfQogCi0JCWlmICgoKm9sZF9yZXMpLT5zdGFydCA+IG5ld19yZXMtPmVuZCkgewotCQkJ bmV3X3Jlcy0+c2libGluZyA9ICpvbGRfcmVzOwotCQkJaWYgKHByZXZfcmVzKQotCQkJCSgqcHJl dl9yZXMpLT5zaWJsaW5nID0gbmV3X3JlczsKLQkJCSpvbGRfcmVzID0gbmV3X3JlczsKKwkJaWYg KHRtcC0+c3RhcnQgPiBuZXdfcmVzLT5lbmQpIHsKKwkJCWxpc3RfYWRkKCZuZXdfcmVzLT5zaWJs aW5nLCB0bXAtPnNpYmxpbmcucHJldik7CiAJCQlicmVhazsKIAkJfQotCi0JCXByZXZfcmVzID0g b2xkX3JlczsKLQkJb2xkX3JlcyA9ICYoKm9sZF9yZXMpLT5zaWJsaW5nOwotCi0JfSB3aGlsZSAo MSk7CisJfQogCiAJcmV0dXJuIEFFX09LOwogfQogCiBzdGF0aWMgaW50IHZtYnVzX2FjcGlfcmVt b3ZlKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKQogewotCXN0cnVjdCByZXNvdXJjZSAqY3Vy X3JlczsKLQlzdHJ1Y3QgcmVzb3VyY2UgKm5leHRfcmVzOworCXN0cnVjdCByZXNvdXJjZSAqcmVz OwogCiAJaWYgKGh5cGVydl9tbWlvKSB7CiAJCWlmIChmYl9tbWlvKSB7CkBAIC0xNTA4LDEwICsx NDk5LDkgQEAgc3RhdGljIGludCB2bWJ1c19hY3BpX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2Ug KmRldmljZSkKIAkJCWZiX21taW8gPSBOVUxMOwogCQl9CiAKLQkJZm9yIChjdXJfcmVzID0gaHlw ZXJ2X21taW87IGN1cl9yZXM7IGN1cl9yZXMgPSBuZXh0X3JlcykgewotCQkJbmV4dF9yZXMgPSBj dXJfcmVzLT5zaWJsaW5nOwotCQkJa2ZyZWUoY3VyX3Jlcyk7Ci0JCX0KKwkJcmVzID0gaHlwZXJ2 X21taW87CisJCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShyZXMsICZyZXMtPnBhcmVudC0+Y2hp bGQsIHNpYmxpbmcpCisJCQlrZnJlZShyZXMpOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTU5Nyw3 ICsxNTg3LDggQEAgaW50IHZtYnVzX2FsbG9jYXRlX21taW8oc3RydWN0IHJlc291cmNlICoqbmV3 LCBzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2Vfb2JqLAogCQl9CiAJfQogCi0JZm9yIChpdGVyID0g aHlwZXJ2X21taW87IGl0ZXI7IGl0ZXIgPSBpdGVyLT5zaWJsaW5nKSB7CisJaXRlciA9IGh5cGVy dl9tbWlvOworCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShpdGVyLCAmaXRlci0+cGFyZW50LT5j aGlsZCwgc2libGluZykgewogCQlpZiAoKGl0ZXItPnN0YXJ0ID49IG1heCkgfHwgKGl0ZXItPmVu ZCA8PSBtaW4pKQogCQkJY29udGludWU7CiAKQEAgLTE2NDAsNyArMTYzMSw4IEBAIHZvaWQgdm1i dXNfZnJlZV9tbWlvKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUp CiAJc3RydWN0IHJlc291cmNlICppdGVyOwogCiAJZG93bigmaHlwZXJ2X21taW9fbG9jayk7Ci0J Zm9yIChpdGVyID0gaHlwZXJ2X21taW87IGl0ZXI7IGl0ZXIgPSBpdGVyLT5zaWJsaW5nKSB7CisJ aXRlciA9IGh5cGVydl9tbWlvOworCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShpdGVyLCAmaXRl ci0+cGFyZW50LT5jaGlsZCwgc2libGluZykgewogCQlpZiAoKGl0ZXItPnN0YXJ0ID49IHN0YXJ0 ICsgc2l6ZSkgfHwgKGl0ZXItPmVuZCA8PSBzdGFydCkpCiAJCQljb250aW51ZTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLW1haW4uYyBiL2RyaXZl cnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1tYWluLmMKaW5kZXggZGFlZWI0YzdlM2Iw Li41YzBiZTI3YjMzZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNl L2lmb3JjZS1tYWluLmMKKysrIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNl LW1haW4uYwpAQCAtMzA1LDggKzMwNSw4IEBAIGludCBpZm9yY2VfaW5pdF9kZXZpY2Uoc3RydWN0 IGlmb3JjZSAqaWZvcmNlKQogCWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5lbmQgPSAyMDA7CiAJaWZv cmNlLT5kZXZpY2VfbWVtb3J5LmZsYWdzID0gSU9SRVNPVVJDRV9NRU07CiAJaWZvcmNlLT5kZXZp Y2VfbWVtb3J5LnBhcmVudCA9IE5VTEw7Ci0JaWZvcmNlLT5kZXZpY2VfbWVtb3J5LmNoaWxkID0g TlVMTDsKLQlpZm9yY2UtPmRldmljZV9tZW1vcnkuc2libGluZyA9IE5VTEw7CisJSU5JVF9MSVNU X0hFQUQoJmlmb3JjZS0+ZGV2aWNlX21lbW9yeS5jaGlsZCk7CisJSU5JVF9MSVNUX0hFQUQoJmlm b3JjZS0+ZGV2aWNlX21lbW9yeS5zaWJsaW5nKTsKIAogLyoKICAqIFdhaXQgdW50aWwgZGV2aWNl IHJlYWR5IC0gdW50aWwgaXQgc2VuZHMgaXRzIGZpcnN0IHJlc3BvbnNlLgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9udmRpbW0vZTgyMC5jIGIvZHJpdmVycy9udmRpbW0vZTgyMC5jCmluZGV4IDZmOWE2 ZmZkN2NkZS4uNTEzZTY2MWJiMGQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9lODIwLmMK KysrIGIvZHJpdmVycy9udmRpbW0vZTgyMC5jCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBpbnQg ZTgyMF9wbWVtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCWdvdG8gZXJy OwogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG52ZGltbV9idXMpOwogCi0JZm9yIChwID0g aW9tZW1fcmVzb3VyY2UuY2hpbGQ7IHAgOyBwID0gcC0+c2libGluZykgeworCWxpc3RfZm9yX2Vh Y2hfZW50cnkocCwgJmlvbWVtX3Jlc291cmNlLmNoaWxkLCBzaWJsaW5nKSB7CiAJCXN0cnVjdCBu ZF9yZWdpb25fZGVzYyBuZHJfZGVzYzsKIAogCQlpZiAocC0+ZGVzYyAhPSBJT1JFU19ERVNDX1BF UlNJU1RFTlRfTUVNT1JZX0xFR0FDWSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL25hbWVz cGFjZV9kZXZzLmMgYi9kcml2ZXJzL252ZGltbS9uYW1lc3BhY2VfZGV2cy5jCmluZGV4IDY1OGFk YTQ5N2JlMC4uZDE3NWEzOTFmZWEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9uYW1lc3Bh Y2VfZGV2cy5jCisrKyBiL2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMKQEAgLTYzNyw3 ICs2MzcsMTEgQEAgc3RhdGljIHJlc291cmNlX3NpemVfdCBzY2FuX2FsbG9jYXRlKHN0cnVjdCBu ZF9yZWdpb24gKm5kX3JlZ2lvbiwKICByZXRyeToKIAlmaXJzdCA9IDA7CiAJZm9yX2VhY2hfZHBh X3Jlc291cmNlKG5kZCwgcmVzKSB7Ci0JCXN0cnVjdCByZXNvdXJjZSAqbmV4dCA9IHJlcy0+c2li bGluZywgKm5ld19yZXMgPSBOVUxMOworCQlzdHJ1Y3QgcmVzb3VyY2UgKm5leHQsICpuZXdfcmVz ID0gTlVMTDsKKwkJaWYgKHJlcy0+cGFyZW50ICYmICFsaXN0X2lzX2xhc3QoJnJlcy0+c2libGlu ZywgJnJlcy0+cGFyZW50LT5jaGlsZCkpCisJCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KHJlcywg c2libGluZyk7CisJCWVsc2UKKwkJCW5leHQgPSBOVUxMOwogCQlyZXNvdXJjZV9zaXplX3QgYWxs b2NhdGUsIGF2YWlsYWJsZSA9IDA7CiAJCWVudW0gYWxsb2NfbG9jIGxvYyA9IEFMTE9DX0VSUjsK IAkJY29uc3QgY2hhciAqYWN0aW9uOwpAQCAtNzYzLDcgKzc2Nyw3IEBAIHN0YXRpYyByZXNvdXJj ZV9zaXplX3Qgc2Nhbl9hbGxvY2F0ZShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sCiAJICog YW4gaW5pdGlhbCAicG1lbS1yZXNlcnZlIHBhc3MiLiAgT25seSBkbyBhbiBpbml0aWFsIEJMSyBh bGxvY2F0aW9uCiAJICogd2hlbiBub25lIG9mIHRoZSBEUEEgc3BhY2UgaXMgcmVzZXJ2ZWQuCiAJ ICovCi0JaWYgKChpc19wbWVtIHx8ICFuZGQtPmRwYS5jaGlsZCkgJiYgbiA9PSB0b19hbGxvY2F0 ZSkKKwlpZiAoKGlzX3BtZW0gfHwgbGlzdF9lbXB0eSgmbmRkLT5kcGEuY2hpbGQpKSAmJiBuID09 IHRvX2FsbG9jYXRlKQogCQlyZXR1cm4gaW5pdF9kcGFfYWxsb2NhdGlvbihsYWJlbF9pZCwgbmRf cmVnaW9uLCBuZF9tYXBwaW5nLCBuKTsKIAlyZXR1cm4gbjsKIH0KQEAgLTc3OSw3ICs3ODMsMTEg QEAgc3RhdGljIGludCBtZXJnZV9kcGEoc3RydWN0IG5kX3JlZ2lvbiAqbmRfcmVnaW9uLAogIHJl dHJ5OgogCWZvcl9lYWNoX2RwYV9yZXNvdXJjZShuZGQsIHJlcykgewogCQlpbnQgcmM7Ci0JCXN0 cnVjdCByZXNvdXJjZSAqbmV4dCA9IHJlcy0+c2libGluZzsKKwkJc3RydWN0IHJlc291cmNlICpu ZXh0OworCQlpZiAocmVzLT5wYXJlbnQgJiYgIWxpc3RfaXNfbGFzdCgmcmVzLT5zaWJsaW5nLCAm cmVzLT5wYXJlbnQtPmNoaWxkKSkKKwkJCW5leHQgPSBsaXN0X25leHRfZW50cnkocmVzLCBzaWJs aW5nKTsKKwkJZWxzZQorCQkJbmV4dCA9IE5VTEw7CiAJCXJlc291cmNlX3NpemVfdCBlbmQgPSBy ZXMtPnN0YXJ0ICsgcmVzb3VyY2Vfc2l6ZShyZXMpOwogCiAJCWlmICghbmV4dCB8fCBzdHJjbXAo cmVzLT5uYW1lLCBsYWJlbF9pZC0+aWQpICE9IDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1t L25kLmggYi9kcml2ZXJzL252ZGltbS9uZC5oCmluZGV4IDhkNjM3NWVlMGZkYS4uOWYzY2FkMWY1 OTUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9uZC5oCisrKyBiL2RyaXZlcnMvbnZkaW1t L25kLmgKQEAgLTEwMywxMSArMTAzLDEwIEBAIHVuc2lnbmVkIHNpemVvZl9uYW1lc3BhY2VfbGFi ZWwoc3RydWN0IG52ZGltbV9kcnZkYXRhICpuZGQpOwogCQkodW5zaWduZWQgbG9uZyBsb25nKSAo cmVzID8gcmVzLT5zdGFydCA6IDApLCAjI2FyZykKIAogI2RlZmluZSBmb3JfZWFjaF9kcGFfcmVz b3VyY2UobmRkLCByZXMpIFwKLQlmb3IgKHJlcyA9IChuZGQpLT5kcGEuY2hpbGQ7IHJlczsgcmVz ID0gcmVzLT5zaWJsaW5nKQorCWxpc3RfZm9yX2VhY2hfZW50cnkocmVzLCAmKG5kZCktPmRwYS5j aGlsZCwgc2libGluZykKIAogI2RlZmluZSBmb3JfZWFjaF9kcGFfcmVzb3VyY2Vfc2FmZShuZGQs IHJlcywgbmV4dCkgXAotCWZvciAocmVzID0gKG5kZCktPmRwYS5jaGlsZCwgbmV4dCA9IHJlcyA/ IHJlcy0+c2libGluZyA6IE5VTEw7IFwKLQkJCXJlczsgcmVzID0gbmV4dCwgbmV4dCA9IG5leHQg PyBuZXh0LT5zaWJsaW5nIDogTlVMTCkKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVzLCBu ZXh0LCAmKG5kZCktPmRwYS5jaGlsZCwgc2libGluZykKIAogc3RydWN0IG5kX3BlcmNwdV9sYW5l IHsKIAlpbnQgY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2FkZHJlc3MuYyBiL2RyaXZl cnMvb2YvYWRkcmVzcy5jCmluZGV4IGNlNGQzZDhiODVkZS4uNTVlZThmZWU5YjI1IDEwMDY0NAot LS0gYS9kcml2ZXJzL29mL2FkZHJlc3MuYworKysgYi9kcml2ZXJzL29mL2FkZHJlc3MuYwpAQCAt MzI4LDcgKzMyOCw5IEBAIGludCBvZl9wY2lfcmFuZ2VfdG9fcmVzb3VyY2Uoc3RydWN0IG9mX3Bj aV9yYW5nZSAqcmFuZ2UsCiB7CiAJaW50IGVycjsKIAlyZXMtPmZsYWdzID0gcmFuZ2UtPmZsYWdz OwotCXJlcy0+cGFyZW50ID0gcmVzLT5jaGlsZCA9IHJlcy0+c2libGluZyA9IE5VTEw7CisJcmVz LT5wYXJlbnQgPSBOVUxMOworCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNoaWxkKTsKKwlJTklUX0xJ U1RfSEVBRCgmcmVzLT5zaWJsaW5nKTsKIAlyZXMtPm5hbWUgPSBucC0+ZnVsbF9uYW1lOwogCiAJ aWYgKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX0lPKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9ob3N0L3ZtZC5jIGIvZHJpdmVycy9wY2kvaG9zdC92bWQuYwppbmRleCA5MzBhOGZhMDhiZDYu LmMzMDAwYWY5MDNlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG9zdC92bWQuYworKysgYi9k cml2ZXJzL3BjaS9ob3N0L3ZtZC5jCkBAIC01MjAsMTQgKzUyMCwxNCBAQCBzdGF0aWMgc3RydWN0 IHBjaV9vcHMgdm1kX29wcyA9IHsKIAogc3RhdGljIHZvaWQgdm1kX2F0dGFjaF9yZXNvdXJjZXMo c3RydWN0IHZtZF9kZXYgKnZtZCkKIHsKLQl2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjFd LmNoaWxkID0gJnZtZC0+cmVzb3VyY2VzWzFdOwotCXZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVN QkFSMl0uY2hpbGQgPSAmdm1kLT5yZXNvdXJjZXNbMl07CisJbGlzdF9hZGQoJnZtZC0+cmVzb3Vy Y2VzWzFdLnNpYmxpbmcsICZ2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjFdLmNoaWxkKTsK KwlsaXN0X2FkZCgmdm1kLT5yZXNvdXJjZXNbMl0uc2libGluZywgJnZtZC0+ZGV2LT5yZXNvdXJj ZVtWTURfTUVNQkFSMl0uY2hpbGQpOwogfQogCiBzdGF0aWMgdm9pZCB2bWRfZGV0YWNoX3Jlc291 cmNlcyhzdHJ1Y3Qgdm1kX2RldiAqdm1kKQogewotCXZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVN QkFSMV0uY2hpbGQgPSBOVUxMOwotCXZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVNQkFSMl0uY2hp bGQgPSBOVUxMOworCUlOSVRfTElTVF9IRUFEKCZ2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJB UjFdLmNoaWxkKTsKKwlJTklUX0xJU1RfSEVBRCgmdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1C QVIyXS5jaGlsZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wcm9iZS5jIGIv ZHJpdmVycy9wY2kvcHJvYmUuYwppbmRleCBlZjUzNzc0MzhhMWUuLjA5ZGYwNzc3NmZjYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9wY2kvcHJvYmUuYworKysgYi9kcml2ZXJzL3BjaS9wcm9iZS5jCkBA IC01OCw2ICs1OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmdldF9wY2lfZG9tYWluX2J1 c25fcmVzKGludCBkb21haW5fbnIpCiAJci0+cmVzLnN0YXJ0ID0gMDsKIAlyLT5yZXMuZW5kID0g MHhmZjsKIAlyLT5yZXMuZmxhZ3MgPSBJT1JFU09VUkNFX0JVUyB8IElPUkVTT1VSQ0VfUENJX0ZJ WEVEOworCUlOSVRfTElTVF9IRUFEKCZyLT5yZXMuY2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZy LT5yZXMuc2libGluZyk7CiAKIAlsaXN0X2FkZF90YWlsKCZyLT5saXN0LCAmcGNpX2RvbWFpbl9i dXNuX3Jlc19saXN0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMgYi9k cml2ZXJzL3BjaS9zZXR1cC1idXMuYwppbmRleCAzY2NlMjlhMDY5ZTYuLmY3ZDU0ZTQ5MDNlNCAx MDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvc2V0 dXAtYnVzLmMKQEAgLTIxMTEsNyArMjExMSw3IEBAIGludCBwY2lfcmVhc3NpZ25fYnJpZGdlX3Jl c291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqYnJpZGdlLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCQkJ Y29udGludWU7CiAKIAkJCS8qIElnbm9yZSBCQVJzIHdoaWNoIGFyZSBzdGlsbCBpbiB1c2UgKi8K LQkJCWlmIChyZXMtPmNoaWxkKQorCQkJaWYgKCFsaXN0X2VtcHR5KCZyZXMtPmNoaWxkKSkKIAkJ CQljb250aW51ZTsKIAogCQkJcmV0ID0gYWRkX3RvX2xpc3QoJnNhdmVkLCBicmlkZ2UsIHJlcywg MCwgMCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIGIvaW5jbHVkZS9saW51 eC9pb3BvcnQuaAppbmRleCBkYTBlYmFlYzI1ZjAuLjc0NWYyYWNjMzY3NCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9saW51eC9pb3BvcnQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCkBAIC0y Miw3ICsyMiw4IEBAIHN0cnVjdCByZXNvdXJjZSB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwogCXVuc2lnbmVkIGxvbmcgZGVzYzsKLQlzdHJ1Y3QgcmVzb3VyY2Ug KnBhcmVudCwgKnNpYmxpbmcsICpjaGlsZDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkLCBzaWJs aW5nOworCXN0cnVjdCByZXNvdXJjZSAqcGFyZW50OwogfTsKIAogLyoKQEAgLTIxNSw3ICsyMTYs NiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVzb3VyY2VfY29udGFpbnMoc3RydWN0IHJlc291cmNl ICpyMSwgc3RydWN0IHJlc291cmNlICpyMikKIAlyZXR1cm4gcjEtPnN0YXJ0IDw9IHIyLT5zdGFy dCAmJiByMS0+ZW5kID49IHIyLT5lbmQ7CiB9CiAKLQogLyogQ29udmVuaWVuY2Ugc2hvcnRoYW5k IHdpdGggYWxsb2NhdGlvbiAqLwogI2RlZmluZSByZXF1ZXN0X3JlZ2lvbihzdGFydCxuLG5hbWUp CQlfX3JlcXVlc3RfcmVnaW9uKCZpb3BvcnRfcmVzb3VyY2UsIChzdGFydCksIChuKSwgKG5hbWUp LCAwKQogI2RlZmluZSByZXF1ZXN0X211eGVkX3JlZ2lvbihzdGFydCxuLG5hbWUpCV9fcmVxdWVz dF9yZWdpb24oJmlvcG9ydF9yZXNvdXJjZSwgKHN0YXJ0KSwgKG4pLCAobmFtZSksIElPUkVTT1VS Q0VfTVVYRUQpCmRpZmYgLS1naXQgYS9rZXJuZWwvcmVzb3VyY2UuYyBiL2tlcm5lbC9yZXNvdXJj ZS5jCmluZGV4IGUyNzBiNTA0ODk4OC4uMDViMWVmYTU5NWMyIDEwMDY0NAotLS0gYS9rZXJuZWwv cmVzb3VyY2UuYworKysgYi9rZXJuZWwvcmVzb3VyY2UuYwpAQCAtMzEsNiArMzEsOCBAQCBzdHJ1 Y3QgcmVzb3VyY2UgaW9wb3J0X3Jlc291cmNlID0gewogCS5zdGFydAk9IDAsCiAJLmVuZAk9IElP X1NQQUNFX0xJTUlULAogCS5mbGFncwk9IElPUkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBMSVNU X0hFQURfSU5JVChpb3BvcnRfcmVzb3VyY2Uuc2libGluZyksCisJLmNoaWxkICA9IExJU1RfSEVB RF9JTklUKGlvcG9ydF9yZXNvdXJjZS5jaGlsZCksCiB9OwogRVhQT1JUX1NZTUJPTChpb3BvcnRf cmVzb3VyY2UpOwogCkBAIC0zOSw2ICs0MSw4IEBAIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNv dXJjZSA9IHsKIAkuc3RhcnQJPSAwLAogCS5lbmQJPSAtMSwKIAkuZmxhZ3MJPSBJT1JFU09VUkNF X01FTSwKKwkuc2libGluZyA9IExJU1RfSEVBRF9JTklUKGlvbWVtX3Jlc291cmNlLnNpYmxpbmcp LAorCS5jaGlsZCAgPSBMSVNUX0hFQURfSU5JVChpb21lbV9yZXNvdXJjZS5jaGlsZCksCiB9Owog RVhQT1JUX1NZTUJPTChpb21lbV9yZXNvdXJjZSk7CiAKQEAgLTU3LDIwICs2MSwzMiBAQCBzdGF0 aWMgREVGSU5FX1JXTE9DSyhyZXNvdXJjZV9sb2NrKTsKICAqIGJ5IGJvb3QgbWVtIGFmdGVyIHRo ZSBzeXN0ZW0gaXMgdXAuIFNvIGZvciByZXVzaW5nIHRoZSByZXNvdXJjZSBlbnRyeQogICogd2Ug bmVlZCB0byByZW1lbWJlciB0aGUgcmVzb3VyY2UuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3Vy Y2UgKmJvb3RtZW1fcmVzb3VyY2VfZnJlZTsKK3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIGJvb3Rt ZW1fcmVzb3VyY2VfZnJlZSA9IExJU1RfSEVBRF9JTklUKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSk7 CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGJvb3RtZW1fcmVzb3VyY2VfbG9jayk7CiAKK3N0YXRp YyBzdHJ1Y3QgcmVzb3VyY2UgKnNpYmxpbmcoc3RydWN0IHJlc291cmNlICpyZXMpCit7CisJaWYg KHJlcy0+cGFyZW50ICYmICFsaXN0X2lzX2xhc3QoJnJlcy0+c2libGluZywgJnJlcy0+cGFyZW50 LT5jaGlsZCkpCisJCXJldHVybiBsaXN0X25leHRfZW50cnkocmVzLCBzaWJsaW5nKTsKKwlyZXR1 cm4gTlVMTDsKK30KKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZmlyc3RfY2hpbGQoc3RydWN0 IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKGhl YWQsIHN0cnVjdCByZXNvdXJjZSwgc2libGluZyk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgcmVzb3Vy Y2UgKm5leHRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpwLCBib29sIHNpYmxpbmdfb25seSkK IHsKIAkvKiBDYWxsZXIgd2FudHMgdG8gdHJhdmVyc2UgdGhyb3VnaCBzaWJsaW5ncyBvbmx5ICov CiAJaWYgKHNpYmxpbmdfb25seSkKLQkJcmV0dXJuIHAtPnNpYmxpbmc7CisJCXJldHVybiBzaWJs aW5nKHApOwogCi0JaWYgKHAtPmNoaWxkKQotCQlyZXR1cm4gcC0+Y2hpbGQ7Ci0Jd2hpbGUgKCFw LT5zaWJsaW5nICYmIHAtPnBhcmVudCkKKwlpZiAoIWxpc3RfZW1wdHkoJnAtPmNoaWxkKSkKKwkJ cmV0dXJuIGZpcnN0X2NoaWxkKCZwLT5jaGlsZCk7CisJd2hpbGUgKCFzaWJsaW5nKHApICYmIHAt PnBhcmVudCkKIAkJcCA9IHAtPnBhcmVudDsKLQlyZXR1cm4gcC0+c2libGluZzsKKwlyZXR1cm4g c2libGluZyhwKTsKIH0KIAogc3RhdGljIHZvaWQgKnJfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnYsIGxvZmZfdCAqcG9zKQpAQCAtOTAsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgKnJf c3RhcnQoc3RydWN0IHNlcV9maWxlICptLCBsb2ZmX3QgKnBvcykKIAlzdHJ1Y3QgcmVzb3VyY2Ug KnAgPSBtLT5wcml2YXRlOwogCWxvZmZfdCBsID0gMDsKIAlyZWFkX2xvY2soJnJlc291cmNlX2xv Y2spOwotCWZvciAocCA9IHAtPmNoaWxkOyBwICYmIGwgPCAqcG9zOyBwID0gcl9uZXh0KG0sIHAs ICZsKSkKKwlmb3IgKHAgPSBmaXJzdF9jaGlsZCgmcC0+Y2hpbGQpOyBwICYmIGwgPCAqcG9zOyBw ID0gcl9uZXh0KG0sIHAsICZsKSkKIAkJOwogCXJldHVybiBwOwogfQpAQCAtMTg2LDggKzIwMiw3 IEBAIHN0YXRpYyB2b2lkIGZyZWVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMpCiAKIAlp ZiAoIVBhZ2VTbGFiKHZpcnRfdG9faGVhZF9wYWdlKHJlcykpKSB7CiAJCXNwaW5fbG9jaygmYm9v dG1lbV9yZXNvdXJjZV9sb2NrKTsKLQkJcmVzLT5zaWJsaW5nID0gYm9vdG1lbV9yZXNvdXJjZV9m cmVlOwotCQlib290bWVtX3Jlc291cmNlX2ZyZWUgPSByZXM7CisJCWxpc3RfYWRkKCZyZXMtPnNp YmxpbmcsICZib290bWVtX3Jlc291cmNlX2ZyZWUpOwogCQlzcGluX3VubG9jaygmYm9vdG1lbV9y ZXNvdXJjZV9sb2NrKTsKIAl9IGVsc2UgewogCQlrZnJlZShyZXMpOwpAQCAtMTk5LDEwICsyMTQs OSBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICphbGxvY19yZXNvdXJjZShnZnBfdCBmbGFncykK IAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IE5VTEw7CiAKIAlzcGluX2xvY2soJmJvb3RtZW1fcmVz b3VyY2VfbG9jayk7Ci0JaWYgKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSkgewotCQlyZXMgPSBib290 bWVtX3Jlc291cmNlX2ZyZWU7Ci0JCWJvb3RtZW1fcmVzb3VyY2VfZnJlZSA9IHJlcy0+c2libGlu ZzsKLQl9CisJcmVzID0gZmlyc3RfY2hpbGQoJmJvb3RtZW1fcmVzb3VyY2VfZnJlZSk7CisJaWYg KHJlcykKKwkJbGlzdF9kZWwoJnJlcy0+c2libGluZyk7CiAJc3Bpbl91bmxvY2soJmJvb3RtZW1f cmVzb3VyY2VfbG9jayk7CiAKIAlpZiAocmVzKQpAQCAtMjEwLDYgKzIyNCw4IEBAIHN0YXRpYyBz dHJ1Y3QgcmVzb3VyY2UgKmFsbG9jX3Jlc291cmNlKGdmcF90IGZsYWdzKQogCWVsc2UKIAkJcmVz ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHJlc291cmNlKSwgZmxhZ3MpOwogCisJSU5JVF9MSVNU X0hFQUQoJnJlcy0+Y2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZyZXMtPnNpYmxpbmcpOwogCXJl dHVybiByZXM7CiB9CiAKQEAgLTIxOCw3ICsyMzQsNyBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNl ICogX19yZXF1ZXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291 cgogewogCXJlc291cmNlX3NpemVfdCBzdGFydCA9IG5ldy0+c3RhcnQ7CiAJcmVzb3VyY2Vfc2l6 ZV90IGVuZCA9IG5ldy0+ZW5kOwotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqKnA7CisJc3RydWN0 IHJlc291cmNlICp0bXA7CiAKIAlpZiAoZW5kIDwgc3RhcnQpCiAJCXJldHVybiByb290OwpAQCAt MjI2LDY0ICsyNDIsNjIgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZXNv dXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXIKIAkJcmV0dXJuIHJvb3Q7 CiAJaWYgKGVuZCA+IHJvb3QtPmVuZCkKIAkJcmV0dXJuIHJvb3Q7Ci0JcCA9ICZyb290LT5jaGls ZDsKLQlmb3IgKDs7KSB7Ci0JCXRtcCA9ICpwOwotCQlpZiAoIXRtcCB8fCB0bXAtPnN0YXJ0ID4g ZW5kKSB7Ci0JCQluZXctPnNpYmxpbmcgPSB0bXA7Ci0JCQkqcCA9IG5ldzsKKworCWlmIChsaXN0 X2VtcHR5KCZyb290LT5jaGlsZCkpIHsKKwkJbGlzdF9hZGQoJm5ldy0+c2libGluZywgJnJvb3Qt PmNoaWxkKTsKKwkJbmV3LT5wYXJlbnQgPSByb290OworCQlJTklUX0xJU1RfSEVBRCgmbmV3LT5j aGlsZCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAm cm9vdC0+Y2hpbGQsIHNpYmxpbmcpIHsKKwkJaWYgKHRtcC0+c3RhcnQgPiBlbmQpIHsKKwkJCWxp c3RfYWRkKCZuZXctPnNpYmxpbmcsIHRtcC0+c2libGluZy5wcmV2KTsKIAkJCW5ldy0+cGFyZW50 ID0gcm9vdDsKKwkJCUlOSVRfTElTVF9IRUFEKCZuZXctPmNoaWxkKTsKIAkJCXJldHVybiBOVUxM OwogCQl9Ci0JCXAgPSAmdG1wLT5zaWJsaW5nOwogCQlpZiAodG1wLT5lbmQgPCBzdGFydCkKIAkJ CWNvbnRpbnVlOwogCQlyZXR1cm4gdG1wOwogCX0KKworCWxpc3RfYWRkX3RhaWwoJm5ldy0+c2li bGluZywgJnJvb3QtPmNoaWxkKTsKKwluZXctPnBhcmVudCA9IHJvb3Q7CisJSU5JVF9MSVNUX0hF QUQoJm5ldy0+Y2hpbGQpOworCXJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50IF9fcmVsZWFz ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwgYm9vbCByZWxlYXNlX2NoaWxkKQogewot CXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqKnAsICpjaGQ7CisJc3RydWN0IHJlc291cmNlICp0bXAs ICpuZXh0LCAqY2hkOwogCi0JcCA9ICZvbGQtPnBhcmVudC0+Y2hpbGQ7Ci0JZm9yICg7Oykgewot CQl0bXAgPSAqcDsKLQkJaWYgKCF0bXApCi0JCQlicmVhazsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUodG1wLCBuZXh0LCAmb2xkLT5wYXJlbnQtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlmICh0 bXAgPT0gb2xkKSB7Ci0JCQlpZiAocmVsZWFzZV9jaGlsZCB8fCAhKHRtcC0+Y2hpbGQpKSB7Ci0J CQkJKnAgPSB0bXAtPnNpYmxpbmc7CisJCQlpZiAocmVsZWFzZV9jaGlsZCB8fCBsaXN0X2VtcHR5 KCZ0bXAtPmNoaWxkKSkgeworCQkJCWxpc3RfZGVsKCZ0bXAtPnNpYmxpbmcpOwogCQkJfSBlbHNl IHsKLQkJCQlmb3IgKGNoZCA9IHRtcC0+Y2hpbGQ7OyBjaGQgPSBjaGQtPnNpYmxpbmcpIHsKKwkJ CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoZCwgJnRtcC0+Y2hpbGQsIHNpYmxpbmcpCiAJCQkJCWNo ZC0+cGFyZW50ID0gdG1wLT5wYXJlbnQ7Ci0JCQkJCWlmICghKGNoZC0+c2libGluZykpCi0JCQkJ CQlicmVhazsKLQkJCQl9Ci0JCQkJKnAgPSB0bXAtPmNoaWxkOwotCQkJCWNoZC0+c2libGluZyA9 IHRtcC0+c2libGluZzsKKwkJCQlsaXN0X3NwbGljZSgmdG1wLT5jaGlsZCwgdG1wLT5zaWJsaW5n LnByZXYpOworCQkJCWxpc3RfZGVsKCZ0bXAtPnNpYmxpbmcpOwogCQkJfQorCiAJCQlvbGQtPnBh cmVudCA9IE5VTEw7CiAJCQlyZXR1cm4gMDsKIAkJfQotCQlwID0gJnRtcC0+c2libGluZzsKIAl9 CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKIHN0YXRpYyB2b2lkIF9fcmVsZWFzZV9jaGlsZF9yZXNv dXJjZXMoc3RydWN0IHJlc291cmNlICpyKQogewotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqcDsK KwlzdHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKm5leHQ7CiAJcmVzb3VyY2Vfc2l6ZV90IHNpemU7CiAK LQlwID0gci0+Y2hpbGQ7Ci0Jci0+Y2hpbGQgPSBOVUxMOwotCXdoaWxlIChwKSB7Ci0JCXRtcCA9 IHA7Ci0JCXAgPSBwLT5zaWJsaW5nOwotCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRtcCwg bmV4dCwgJnItPmNoaWxkLCBzaWJsaW5nKSB7CiAJCXRtcC0+cGFyZW50ID0gTlVMTDsKLQkJdG1w LT5zaWJsaW5nID0gTlVMTDsKKwkJSU5JVF9MSVNUX0hFQUQoJnRtcC0+c2libGluZyk7CiAJCV9f cmVsZWFzZV9jaGlsZF9yZXNvdXJjZXModG1wKTsKIAogCQlwcmludGsoS0VSTl9ERUJVRyAicmVs ZWFzZSBjaGlsZCByZXNvdXJjZSAlcFJcbiIsIHRtcCk7CkBAIC0yOTIsNiArMzA2LDggQEAgc3Rh dGljIHZvaWQgX19yZWxlYXNlX2NoaWxkX3Jlc291cmNlcyhzdHJ1Y3QgcmVzb3VyY2UgKnIpCiAJ CXRtcC0+c3RhcnQgPSAwOwogCQl0bXAtPmVuZCA9IHNpemUgLSAxOwogCX0KKworCUlOSVRfTElT VF9IRUFEKCZ0bXAtPmNoaWxkKTsKIH0KIAogdm9pZCByZWxlYXNlX2NoaWxkX3Jlc291cmNlcyhz dHJ1Y3QgcmVzb3VyY2UgKnIpCkBAIC0zNzYsNyArMzkyLDggQEAgc3RhdGljIGludCBmaW5kX25l eHRfaW9tZW1fcmVzKHN0cnVjdCByZXNvdXJjZSAqcmVzLCB1bnNpZ25lZCBsb25nIGRlc2MsCiAK IAlyZWFkX2xvY2soJnJlc291cmNlX2xvY2spOwogCi0JZm9yIChwID0gaW9tZW1fcmVzb3VyY2Uu Y2hpbGQ7IHA7IHAgPSBuZXh0X3Jlc291cmNlKHAsIHNpYmxpbmdfb25seSkpIHsKKwlmb3IgKHAg PSBmaXJzdF9jaGlsZCgmaW9tZW1fcmVzb3VyY2UuY2hpbGQpOyBwOworCQkJcCA9IG5leHRfcmVz b3VyY2UocCwgc2libGluZ19vbmx5KSkgewogCQlpZiAoKHAtPmZsYWdzICYgcmVzLT5mbGFncykg IT0gcmVzLT5mbGFncykKIAkJCWNvbnRpbnVlOwogCQlpZiAoKGRlc2MgIT0gSU9SRVNfREVTQ19O T05FKSAmJiAoZGVzYyAhPSBwLT5kZXNjKSkKQEAgLTU2NCw3ICs1ODEsNyBAQCBpbnQgcmVnaW9u X2ludGVyc2VjdHMocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQg bG9uZyBmbGFncywKIAlzdHJ1Y3QgcmVzb3VyY2UgKnA7CiAKIAlyZWFkX2xvY2soJnJlc291cmNl X2xvY2spOwotCWZvciAocCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyBwIDsgcCA9IHAtPnNpYmxp bmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZpb21lbV9yZXNvdXJjZS5jaGlsZCwgc2li bGluZykgewogCQlib29sIGlzX3R5cGUgPSAoKChwLT5mbGFncyAmIGZsYWdzKSA9PSBmbGFncykg JiYKIAkJCQkoKGRlc2MgPT0gSU9SRVNfREVTQ19OT05FKSB8fAogCQkJCSAoZGVzYyA9PSBwLT5k ZXNjKSkpOwpAQCAtNjE4LDcgKzYzNSw3IEBAIHN0YXRpYyBpbnQgX19maW5kX3Jlc291cmNlKHN0 cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpvbGQsCiAJCQkgcmVzb3VyY2Vf c2l6ZV90ICBzaXplLAogCQkJIHN0cnVjdCByZXNvdXJjZV9jb25zdHJhaW50ICpjb25zdHJhaW50 KQogewotCXN0cnVjdCByZXNvdXJjZSAqdGhpcyA9IHJvb3QtPmNoaWxkOworCXN0cnVjdCByZXNv dXJjZSAqdGhpcyA9IGZpcnN0X2NoaWxkKCZyb290LT5jaGlsZCk7CiAJc3RydWN0IHJlc291cmNl IHRtcCA9ICpuZXcsIGF2YWlsLCBhbGxvYzsKIAogCXRtcC5zdGFydCA9IHJvb3QtPnN0YXJ0OwpA QCAtNjI4LDcgKzY0NSw3IEBAIHN0YXRpYyBpbnQgX19maW5kX3Jlc291cmNlKHN0cnVjdCByZXNv dXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpvbGQsCiAJICovCiAJaWYgKHRoaXMgJiYgdGhp cy0+c3RhcnQgPT0gcm9vdC0+c3RhcnQpIHsKIAkJdG1wLnN0YXJ0ID0gKHRoaXMgPT0gb2xkKSA/ IG9sZC0+c3RhcnQgOiB0aGlzLT5lbmQgKyAxOwotCQl0aGlzID0gdGhpcy0+c2libGluZzsKKwkJ dGhpcyA9IHNpYmxpbmcodGhpcyk7CiAJfQogCWZvcig7OykgewogCQlpZiAodGhpcykKQEAgLTY2 Myw3ICs2ODAsNyBAQCBuZXh0OgkJaWYgKCF0aGlzIHx8IHRoaXMtPmVuZCA9PSByb290LT5lbmQp CiAKIAkJaWYgKHRoaXMgIT0gb2xkKQogCQkJdG1wLnN0YXJ0ID0gdGhpcy0+ZW5kICsgMTsKLQkJ dGhpcyA9IHRoaXMtPnNpYmxpbmc7CisJCXRoaXMgPSBzaWJsaW5nKHRoaXMpOwogCX0KIAlyZXR1 cm4gLUVCVVNZOwogfQpAQCAtNzA3LDcgKzcyNCw3IEBAIHN0YXRpYyBpbnQgcmVhbGxvY2F0ZV9y ZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqb2xkLAogCQln b3RvIG91dDsKIAl9CiAKLQlpZiAob2xkLT5jaGlsZCkgeworCWlmICghbGlzdF9lbXB0eSgmb2xk LT5jaGlsZCkpIHsKIAkJZXJyID0gLUVCVVNZOwogCQlnb3RvIG91dDsKIAl9CkBAIC03ODgsNyAr ODA1LDcgQEAgc3RydWN0IHJlc291cmNlICpsb29rdXBfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNl ICpyb290LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQpCiAJc3RydWN0IHJlc291cmNlICpyZXM7CiAK IAlyZWFkX2xvY2soJnJlc291cmNlX2xvY2spOwotCWZvciAocmVzID0gcm9vdC0+Y2hpbGQ7IHJl czsgcmVzID0gcmVzLT5zaWJsaW5nKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXMsICZyb290 LT5jaGlsZCwgc2libGluZykgewogCQlpZiAocmVzLT5zdGFydCA9PSBzdGFydCkKIAkJCWJyZWFr OwogCX0KQEAgLTgyMSwzMiArODM4LDI3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2lu c2VydF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291CiAJCQli cmVhazsKIAl9CiAKLQlmb3IgKG5leHQgPSBmaXJzdDsgOyBuZXh0ID0gbmV4dC0+c2libGluZykg eworCWZvciAobmV4dCA9IGZpcnN0OyA7IG5leHQgPSBzaWJsaW5nKG5leHQpKSB7CiAJCS8qIFBh cnRpYWwgb3ZlcmxhcD8gQmFkLCBhbmQgdW5maXhhYmxlICovCiAJCWlmIChuZXh0LT5zdGFydCA8 IG5ldy0+c3RhcnQgfHwgbmV4dC0+ZW5kID4gbmV3LT5lbmQpCiAJCQlyZXR1cm4gbmV4dDsKLQkJ aWYgKCFuZXh0LT5zaWJsaW5nKQorCQlpZiAoIXNpYmxpbmcobmV4dCkpCiAJCQlicmVhazsKLQkJ aWYgKG5leHQtPnNpYmxpbmctPnN0YXJ0ID4gbmV3LT5lbmQpCisJCWlmIChzaWJsaW5nKG5leHQp LT5zdGFydCA+IG5ldy0+ZW5kKQogCQkJYnJlYWs7CiAJfQotCiAJbmV3LT5wYXJlbnQgPSBwYXJl bnQ7Ci0JbmV3LT5zaWJsaW5nID0gbmV4dC0+c2libGluZzsKLQluZXctPmNoaWxkID0gZmlyc3Q7 CisJbGlzdF9hZGQoJm5ldy0+c2libGluZywgJm5leHQtPnNpYmxpbmcpOworCUlOSVRfTElTVF9I RUFEKCZuZXctPmNoaWxkKTsKIAotCW5leHQtPnNpYmxpbmcgPSBOVUxMOwotCWZvciAobmV4dCA9 IGZpcnN0OyBuZXh0OyBuZXh0ID0gbmV4dC0+c2libGluZykKKwkvKgorCSAqIEZyb20gZmlyc3Qg dG8gbmV4dCwgdGhleSBhbGwgZmFsbCBpbnRvIG5ldydzIHJlZ2lvbiwgc28gY2hhbmdlIHRoZW0K KwkgKiBhcyBuZXcncyBjaGlsZHJlbi4KKwkgKi8KKwlsaXN0X2N1dF9wb3NpdGlvbigmbmV3LT5j aGlsZCwgZmlyc3QtPnNpYmxpbmcucHJldiwgJm5leHQtPnNpYmxpbmcpOworCWxpc3RfZm9yX2Vh Y2hfZW50cnkobmV4dCwgJm5ldy0+Y2hpbGQsIHNpYmxpbmcpCiAJCW5leHQtPnBhcmVudCA9IG5l dzsKIAotCWlmIChwYXJlbnQtPmNoaWxkID09IGZpcnN0KSB7Ci0JCXBhcmVudC0+Y2hpbGQgPSBu ZXc7Ci0JfSBlbHNlIHsKLQkJbmV4dCA9IHBhcmVudC0+Y2hpbGQ7Ci0JCXdoaWxlIChuZXh0LT5z aWJsaW5nICE9IGZpcnN0KQotCQkJbmV4dCA9IG5leHQtPnNpYmxpbmc7Ci0JCW5leHQtPnNpYmxp bmcgPSBuZXc7Ci0JfQogCXJldHVybiBOVUxMOwogfQogCkBAIC05NjgsMTkgKzk4MCwxNyBAQCBz dGF0aWMgaW50IF9fYWRqdXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcmVzLCByZXNvdXJj ZV9zaXplX3Qgc3RhcnQsCiAJaWYgKChzdGFydCA8IHBhcmVudC0+c3RhcnQpIHx8IChlbmQgPiBw YXJlbnQtPmVuZCkpCiAJCWdvdG8gb3V0OwogCi0JaWYgKHJlcy0+c2libGluZyAmJiAocmVzLT5z aWJsaW5nLT5zdGFydCA8PSBlbmQpKQorCWlmIChzaWJsaW5nKHJlcykgJiYgKHNpYmxpbmcocmVz KS0+c3RhcnQgPD0gZW5kKSkKIAkJZ290byBvdXQ7CiAKLQl0bXAgPSBwYXJlbnQtPmNoaWxkOwot CWlmICh0bXAgIT0gcmVzKSB7Ci0JCXdoaWxlICh0bXAtPnNpYmxpbmcgIT0gcmVzKQotCQkJdG1w ID0gdG1wLT5zaWJsaW5nOworCWlmIChyZXMtPnNpYmxpbmcucHJldiAhPSAmcGFyZW50LT5jaGls ZCkgeworCQl0bXAgPSBsaXN0X3ByZXZfZW50cnkocmVzLCBzaWJsaW5nKTsKIAkJaWYgKHN0YXJ0 IDw9IHRtcC0+ZW5kKQogCQkJZ290byBvdXQ7CiAJfQogCiBza2lwOgotCWZvciAodG1wID0gcmVz LT5jaGlsZDsgdG1wOyB0bXAgPSB0bXAtPnNpYmxpbmcpCisJbGlzdF9mb3JfZWFjaF9lbnRyeSh0 bXAsICZyZXMtPmNoaWxkLCBzaWJsaW5nKQogCQlpZiAoKHRtcC0+c3RhcnQgPCBzdGFydCkgfHwg KHRtcC0+ZW5kID4gZW5kKSkKIAkJCWdvdG8gb3V0OwogCkBAIC0xMjA1LDM0ICsxMjE1LDMyIEBA IEVYUE9SVF9TWU1CT0woX19yZXF1ZXN0X3JlZ2lvbik7CiB2b2lkIF9fcmVsZWFzZV9yZWdpb24o c3RydWN0IHJlc291cmNlICpwYXJlbnQsIHJlc291cmNlX3NpemVfdCBzdGFydCwKIAkJCXJlc291 cmNlX3NpemVfdCBuKQogewotCXN0cnVjdCByZXNvdXJjZSAqKnA7CisJc3RydWN0IHJlc291cmNl ICpyZXM7CiAJcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIAotCXAgPSAmcGFyZW50LT5jaGlsZDsKKwly ZXMgPSBmaXJzdF9jaGlsZCgmcGFyZW50LT5jaGlsZCk7CiAJZW5kID0gc3RhcnQgKyBuIC0gMTsK IAogCXdyaXRlX2xvY2soJnJlc291cmNlX2xvY2spOwogCiAJZm9yICg7OykgewotCQlzdHJ1Y3Qg cmVzb3VyY2UgKnJlcyA9ICpwOwotCiAJCWlmICghcmVzKQogCQkJYnJlYWs7CiAJCWlmIChyZXMt PnN0YXJ0IDw9IHN0YXJ0ICYmIHJlcy0+ZW5kID49IGVuZCkgewogCQkJaWYgKCEocmVzLT5mbGFn cyAmIElPUkVTT1VSQ0VfQlVTWSkpIHsKLQkJCQlwID0gJnJlcy0+Y2hpbGQ7CisJCQkJcmVzID0g Zmlyc3RfY2hpbGQoJnJlcy0+Y2hpbGQpOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJaWYgKHJl cy0+c3RhcnQgIT0gc3RhcnQgfHwgcmVzLT5lbmQgIT0gZW5kKQogCQkJCWJyZWFrOwotCQkJKnAg PSByZXMtPnNpYmxpbmc7CisJCQlsaXN0X2RlbCgmcmVzLT5zaWJsaW5nKTsKIAkJCXdyaXRlX3Vu bG9jaygmcmVzb3VyY2VfbG9jayk7CiAJCQlpZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfTVVY RUQpCiAJCQkJd2FrZV91cCgmbXV4ZWRfcmVzb3VyY2Vfd2FpdCk7CiAJCQlmcmVlX3Jlc291cmNl KHJlcyk7CiAJCQlyZXR1cm47CiAJCX0KLQkJcCA9ICZyZXMtPnNpYmxpbmc7CisJCXJlcyA9IHNp YmxpbmcocmVzKTsKIAl9CiAKIAl3cml0ZV91bmxvY2soJnJlc291cmNlX2xvY2spOwpAQCAtMTI2 Nyw5ICsxMjc1LDcgQEAgRVhQT1JUX1NZTUJPTChfX3JlbGVhc2VfcmVnaW9uKTsKIGludCByZWxl YXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwKIAkJCXJl c291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpCiB7Ci0Jc3RydWN0IHJl c291cmNlICoqcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKLQlzdHJ1Y3QgcmVzb3VyY2UgKm5l d19yZXM7CisJc3RydWN0IHJlc291cmNlICpyZXMsICpuZXdfcmVzOwogCXJlc291cmNlX3NpemVf dCBlbmQ7CiAJaW50IHJldCA9IC1FSU5WQUw7CiAKQEAgLTEyODAsMTYgKzEyODYsMTYgQEAgaW50 IHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LAog CS8qIFRoZSBhbGxvY19yZXNvdXJjZSgpIHJlc3VsdCBnZXRzIGNoZWNrZWQgbGF0ZXIgKi8KIAlu ZXdfcmVzID0gYWxsb2NfcmVzb3VyY2UoR0ZQX0tFUk5FTCk7CiAKLQlwID0gJnBhcmVudC0+Y2hp bGQ7CisJcmVzID0gZmlyc3RfY2hpbGQoJnBhcmVudC0+Y2hpbGQpOwogCXdyaXRlX2xvY2soJnJl c291cmNlX2xvY2spOwogCi0Jd2hpbGUgKChyZXMgPSAqcCkpIHsKKwl3aGlsZSAoKHJlcykpIHsK IAkJaWYgKHJlcy0+c3RhcnQgPj0gZW5kKQogCQkJYnJlYWs7CiAKIAkJLyogbG9vayBmb3IgdGhl IG5leHQgcmVzb3VyY2UgaWYgaXQgZG9lcyBub3QgZml0IGludG8gKi8KIAkJaWYgKHJlcy0+c3Rh cnQgPiBzdGFydCB8fCByZXMtPmVuZCA8IGVuZCkgewotCQkJcCA9ICZyZXMtPnNpYmxpbmc7CisJ CQlyZXMgPSBzaWJsaW5nKHJlcyk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0xMjk3LDE0ICsx MzAzLDE0IEBAIGludCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3QgcmVzb3Vy Y2UgKnBhcmVudCwKIAkJCWJyZWFrOwogCiAJCWlmICghKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNF X0JVU1kpKSB7Ci0JCQlwID0gJnJlcy0+Y2hpbGQ7CisJCQlyZXMgPSBmaXJzdF9jaGlsZCgmcmVz LT5jaGlsZCk7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCS8qIGZvdW5kIHRoZSB0YXJnZXQgcmVz b3VyY2U7IGxldCdzIGFkanVzdCBhY2NvcmRpbmdseSAqLwogCQlpZiAocmVzLT5zdGFydCA9PSBz dGFydCAmJiByZXMtPmVuZCA9PSBlbmQpIHsKIAkJCS8qIGZyZWUgdGhlIHdob2xlIGVudHJ5ICov Ci0JCQkqcCA9IHJlcy0+c2libGluZzsKKwkJCWxpc3RfZGVsKCZyZXMtPnNpYmxpbmcpOwogCQkJ ZnJlZV9yZXNvdXJjZShyZXMpOwogCQkJcmV0ID0gMDsKIAkJfSBlbHNlIGlmIChyZXMtPnN0YXJ0 ID09IHN0YXJ0ICYmIHJlcy0+ZW5kICE9IGVuZCkgewpAQCAtMTMyNywxNCArMTMzMywxMyBAQCBp bnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0IHJlc291cmNlICpwYXJlbnQs CiAJCQluZXdfcmVzLT5mbGFncyA9IHJlcy0+ZmxhZ3M7CiAJCQluZXdfcmVzLT5kZXNjID0gcmVz LT5kZXNjOwogCQkJbmV3X3Jlcy0+cGFyZW50ID0gcmVzLT5wYXJlbnQ7Ci0JCQluZXdfcmVzLT5z aWJsaW5nID0gcmVzLT5zaWJsaW5nOwotCQkJbmV3X3Jlcy0+Y2hpbGQgPSBOVUxMOworCQkJSU5J VF9MSVNUX0hFQUQoJm5ld19yZXMtPmNoaWxkKTsKIAogCQkJcmV0ID0gX19hZGp1c3RfcmVzb3Vy Y2UocmVzLCByZXMtPnN0YXJ0LAogCQkJCQkJc3RhcnQgLSByZXMtPnN0YXJ0KTsKIAkJCWlmIChy ZXQpCiAJCQkJYnJlYWs7Ci0JCQlyZXMtPnNpYmxpbmcgPSBuZXdfcmVzOworCQkJbGlzdF9hZGQo Jm5ld19yZXMtPnNpYmxpbmcsICZyZXMtPnNpYmxpbmcpOwogCQkJbmV3X3JlcyA9IE5VTEw7CiAJ CX0KIApAQCAtMTUxNSw3ICsxNTIwLDcgQEAgc3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9zZXR1 cChjaGFyICpzdHIpCiAJCQlyZXMtPmVuZCA9IGlvX3N0YXJ0ICsgaW9fbnVtIC0gMTsKIAkJCXJl cy0+ZmxhZ3MgfD0gSU9SRVNPVVJDRV9CVVNZOwogCQkJcmVzLT5kZXNjID0gSU9SRVNfREVTQ19O T05FOwotCQkJcmVzLT5jaGlsZCA9IE5VTEw7CisJCQlJTklUX0xJU1RfSEVBRCgmcmVzLT5jaGls ZCk7CiAJCQlpZiAocmVxdWVzdF9yZXNvdXJjZShwYXJlbnQsIHJlcykgPT0gMCkKIAkJCQlyZXNl cnZlZCA9IHgrMTsKIAkJfQpAQCAtMTUzNSw3ICsxNTQwLDcgQEAgaW50IGlvbWVtX21hcF9zYW5p dHlfY2hlY2socmVzb3VyY2Vfc2l6ZV90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAlsb2Zm X3QgbDsKIAogCXJlYWRfbG9jaygmcmVzb3VyY2VfbG9jayk7Ci0JZm9yIChwID0gcC0+Y2hpbGQ7 IHAgOyBwID0gcl9uZXh0KE5VTEwsIHAsICZsKSkgeworCWZvciAocCA9IGZpcnN0X2NoaWxkKCZw LT5jaGlsZCk7IHA7IHAgPSByX25leHQoTlVMTCwgcCwgJmwpKSB7CiAJCS8qCiAJCSAqIFdlIGNh biBwcm9iYWJseSBza2lwIHRoZSByZXNvdXJjZXMgd2l0aG91dAogCQkgKiBJT1JFU09VUkNFX0lP IGF0dHJpYnV0ZT8KQEAgLTE1OTEsNyArMTU5Niw3IEBAIGJvb2wgaW9tZW1faXNfZXhjbHVzaXZl KHU2NCBhZGRyKQogCWFkZHIgPSBhZGRyICYgUEFHRV9NQVNLOwogCiAJcmVhZF9sb2NrKCZyZXNv dXJjZV9sb2NrKTsKLQlmb3IgKHAgPSBwLT5jaGlsZDsgcCA7IHAgPSByX25leHQoTlVMTCwgcCwg JmwpKSB7CisJZm9yIChwID0gZmlyc3RfY2hpbGQoJnAtPmNoaWxkKTsgcDsgcCA9IHJfbmV4dChO VUxMLCBwLCAmbCkpIHsKIAkJLyoKIAkJICogV2UgY2FuIHByb2JhYmx5IHNraXAgdGhlIHJlc291 cmNlcyB3aXRob3V0CiAJCSAqIElPUkVTT1VSQ0VfSU8gYXR0cmlidXRlPwotLSAKMi4xMy42Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkZXZlbCBtYWls aW5nIGxpc3QKZGV2ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2Lmxp bnV4ZHJpdmVycHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK