Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Mon, 28 Oct 2002 23:01:15 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Mon, 28 Oct 2002 23:01:15 -0500 Received: from e3.ny.us.ibm.com ([32.97.182.103]:11940 "EHLO e3.ny.us.ibm.com") by vger.kernel.org with ESMTP id ; Mon, 28 Oct 2002 23:01:02 -0500 Date: Mon, 28 Oct 2002 20:01:10 -0800 From: Hanna Linder To: torvalds@transmeta.com cc: Davide Libenzi , Jamie Lokier , Linux Kernel Mailing List , lse-tech@lists.sourceforge.net, ahu@ds9a.nl Subject: [PATCH] Updated sys_epoll now with man pages Message-ID: <144220000.1035864069@w-hlinder> In-Reply-To: References: X-Mailer: Mulberry/2.1.0 (Linux/x86) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==========568488336==========" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 80980 Lines: 1092 --==========568488336========== Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline --On Monday, October 28, 2002 18:44:50 -0800 Davide Libenzi wrote: > Bert and Hanna are working on man pages right now with the aim of adding > those notes ... The source for the man pages is included and the viewable versions are on Davide's web site here: http://www.xmailserver.org/linux-patches/epoll.txt http://www.xmailserver.org/linux-patches/epoll_create.txt http://www.xmailserver.org/linux-patches/epoll_ctl.txt http://www.xmailserver.org/linux-patches/epoll_wait.txt They describe how to use epoll, under what circumstances it will be best used or not to use it and other man page tidbits. Also note there is an updated version of sys_epoll with the latest input received from the mailing lists. That is attached as well (for easy merging) ;) Bert and Davide did all the work. I just did a little cleanup. Please include the man pages if^H^Hwhen you take the patches. Thanks. Hanna --==========568488336========== Content-Type: application/octet-stream; name="epoll.2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="epoll.2"; size=3601 LlwiCi5cIiAgZXBvbGwgYnkgRGF2aWRlIExpYmVuemkgKCBlZmZpY2llbnQgZXZlbnQgbm90aWZp Y2F0aW9uIHJldHJpZXZhbCApCi5cIiAgQ29weXJpZ2h0IChDKSAyMDAyICBEYXZpZGUgTGliZW56 aQouXCIKLlwiICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQouXCIgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci5cIiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLlwi ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgouXCIKLlwiICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLlwi ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgouXCIgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLlwiICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgouXCIKLlwiICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQouXCIgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi5cIiAgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVT QQouXCIKLlwiICBEYXZpZGUgTGliZW56aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+Ci5cIgou XCIKLlRIIEVQT0xMIDIgIjIzIE9jdG9iZXIgMjAwMiIgTGludXggIkxpbnV4IFByb2dyYW1tZXIn cyBNYW51YWwiCi5TSCBOQU1FCmVwb2xsIFwtIGVkZ2UgdHJpZ2dlcmVkIGFzeW5jaHJvbm91cyBJ L08gZmFjaWxpdHkKLlNIIFNZTk9QU0lTCi5CICNpbmNsdWRlIDxwb2xsLmg+Ci5icgouQiAjaW5j bHVkZSA8ZXZlbnRwb2xsLmg+Ci5TSCBERVNDUklQVElPTgpFZGdlIGJhc2VkIHZhcmlhbnQgb2Yg Ci5CUiBwb2xsICgyKQp3aGljaCBzY2FsZXMgd2VsbCB0byBsYXJnZSBudW1iZXJzIG9mIHdhdGNo ZWQgZmRzLiBUbyBzZXQgdXAgYW5kIGNvbnRyb2wgYW4KZXBvbGwgc2V0LCB0aHJlZSBjYWxscyBh cmUgcHJvdmlkZWQ6IAouQlIgZXBvbGxfY3JlYXRlICgyKSAsCi5CUiBlcG9sbF9UVEwgKDIpICwK LkJSIGVwb2xsX3dhaXQgKDIpIC4KCkFuIGVwb2xsIHNldCBpcyBjb25uZWN0ZWQgdG8gYSBmaWxl IGRlc2NyaXB0b3IsIHdoaWNoIGlzIGNyZWF0ZWQgYnkKLkJSIGVwb2xsX2NyZWF0ZSAoMikgLgpJ bnRlcmVzdCBmb3IgY2VydGFpbiBmaWxlIGRlc2NyaXB0b3JzIGlzIHRoZW4gcmVnaXN0ZXJlZCB1 c2luZyAKLkJSIGVwb2xsX2N0bCgyKSAuCkZpbmFsbHksIHRoZSBhY3R1YWwgd2FpdCBpcyB0aGVu IHN0YXJ0ZWQgYnkgCi5CUiBlcG9sbF93YWl0ICgyKSAuCgouU0ggTk9URVMKZXBvbGwgc2hvdWxk IG5vdCBiZSByZWdhcmRlZCBhcyBhIGZhc3RlciB2ZXJzaW9uIG9mIAouQlIgcG9sbCAoMikKYmVj YXVzZSBpdHMgc2VtYW50aWNzIGFyZSBmdW5kYW1lbnRhbGx5IGRpZmZlcmVudC4gV2hlcmVhcyAK cG9sbCBhbmQgCi5CUiBzZWxlY3QgKDIpCnJldHVybiBpbW1lZGlhdGVseSBpZiBhbnkgb2YgdGhl aXIgZmRzIGFyZSBhdmFpbGFibGUgZm9yIHJlYWRpbmcsCndyaXRpbmcgb3IgaGF2ZSBhbiBleGNl cHRpb25hbCBjb25kaXRpb24sIGVwb2xsIG9ubHkgcmV0dXJucyBpZiBhCmNvbmRpdGlvbiBjaGFu Z2VzLiAKCkJlY2F1c2Ugb2YgdGhpcywgZXBvbGwgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIG5v bi1ibG9ja2luZwpmaWxlIGRlc2NyaXB0b3JzIG90aGVyd2lzZSB0aGVyZSBpcyBhIHJpc2sgb2Yg cmFjZSBjb25kaXRpb25zLiBUaGUKd2F5IHRvIHVzZSBlcG9sbCBpczoKLlNSCi5UUCAKLkIgaQp3 aXRoIG5vbi1ibG9ja2luZyBmaWxlIGRlc2NyaXB0b3JzCi5UUCAKLkIgaWkKYnkgZ29pbmcgdG8g d2FpdCBmb3IgYW4gZXZlbnQgb25seSBhZnRlcgouQlIgcmVhZCAoMikKb3IgCi5CUiB3cml0ZSAo MikKcmV0dXJuIEVBR0FJTgouU0UKLlNIIEVYQU1QTEUKSW4gdGhpcyBleGFtcGxlLCBsaXN0ZW5l ciBpcyBhIG5vbi1ibG9ja2luZyBzb2NrZXQgb24gd2hpY2gKLkJSIGxpc3RlbiAoMikKaGFzIGJl ZW4gY2FsbGVkLiBGdXJ0aGVybW9yZSwgdGhlIGZ1bmN0aW9uIGRvX3VzZV9mZCgpIGltbWVkaWF0 ZWx5IAp0cmllcyB0bwouQlIgcmVhZCAoMikKZnJvbSB0aGUgZmQuIElmIGl0IGRvZXMgbm90IGRv IHNvLCB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIHdpdGggdGhlIHJpc2sgb2YKbG9zaW5nIGFu IGV2ZW50IGJlZm9yZSBpbnRlcmVzdCBpbiBpdCB3YXMgcmVnaXN0ZXJlZC4gVGhpcyByZWFkIG1h eSB3ZWxsCnJldHVybiBFQUdBSU4sIHdoaWNoIHNob3VsZCBiZSBhIGNhdXNlIGZvciBjYWxsaW5n IGVwb2xsX3dhaXQoKS4KCi5uZgpmb3IoOzspIHsKICAgIG5mZHMgPSBlcG9sbF93YWl0KGtkcGZk LCAmcGZkcywgLTEpOwoKICAgIGZvcihuID0gMDsgbiA8IG5mZHM7ICsrbikgewogICAgICAgIGlm KGZkID0gcGZkc1tuXS5mZCkgPT0gcykgewogICAgICAgICAgICBjbGllbnQgPSBhY2NlcHQobGlz dGVuZXIsIChzdHJ1Y3Qgc29ja2FkZHIqKSZsb2NhbCwgJmFkZHJsZW4pOwogICAgICAgICAgICBp ZihjbGllbnQgPCAwKXsKICAgICAgICAgICAgICAgIHBlcnJvcigiYWNjZXB0Iik7CiAgICAgICAg ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXRub25ibG9ja2lu ZyhjbGllbnQpOwogICAgICAgICAgICBpZiAoZXBvbGxfY3RsKGtkcGZkLCBFUF9DVExfQURELCBj bGllbnQsIFBPTExJTikgPCAwKSB7CiAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVw b2xsIHNldCBpbnNlcnRpb24gZXJyb3I6IGZkPSVkXG4iLCBjbGllbnQpOwogICAgICAgICAgICAg ICAgcmV0dXJuIC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZkID0gY2xpZW50OwogICAg ICAgIH0KCiAgICAgICAgZG9fdXNlX2ZkKGZkKTsKICAgIH0KfQouZmkKCkZvciBwZXJmb3JtYW5j ZSByZWFzb25zIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCB0aGUgZmlsZSBkZXNjcmlwdG9yIGluc2lk ZSB0aGUKZXBvbGwgaW50ZXJmYWNlICggCi5CIEVQX0NUTF9BREQKICkgb25jZSBieSBzcGVjaWZ5 aW5nIChQT0xMSU4gfCBQT0xMT1VUKSB3aXRob3V0IGhhdmluZyB0byBjb250aW51b3VzbHkgc3dp dGNoCmJldHdlZW4gUE9MTElOIGFuZCBQT0xMT1VUIGNhbGxpbmcKLkJSIGVwb2xsX2N0bCAoMikK d2l0aAouQlIgRVBfQ1RMX0FERCAuCi5TSCBDT05GT1JNSU5HIFRPCi5CUiBlcG9sbCAoMikKaXMg YSBuZXcgQVBJIGludHJvZHVjZWQgaW4gTGludXgga2VybmVsCi5CUiAyLjUuNDQgLgouU0ggIlNF RSBBTFNPIgouQlIgZXBvbGxfY3JlYXRlICgyKQouQlIgZXBvbGxfY3RsICgyKQouQlIgZXBvbGxf d2FpdCAoMikKCg== --==========568488336========== Content-Type: application/octet-stream; name="epoll_create.2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="epoll_create.2"; size=1969 LlwiCi5cIiAgZXBvbGwgYnkgRGF2aWRlIExpYmVuemkgKCBlZmZpY2llbnQgZXZlbnQgbm90aWZp Y2F0aW9uIHJldHJpZXZhbCApCi5cIiAgQ29weXJpZ2h0IChDKSAyMDAyICBEYXZpZGUgTGliZW56 aQouXCIKLlwiICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQouXCIgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci5cIiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLlwi ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgouXCIKLlwiICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLlwi ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgouXCIgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLlwiICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgouXCIKLlwiICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQouXCIgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi5cIiAgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVT QQouXCIKLlwiICBEYXZpZGUgTGliZW56aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+Ci5cIgou XCIKLlRIIEVQT0xMX0NSRUFURSAyICIyMyBPY3RvYmVyIDIwMDIiIExpbnV4ICJMaW51eCBQcm9n cmFtbWVyJ3MgTWFudWFsIgouU0ggTkFNRQplcG9sbF9jcmVhdGUgXC0gb3BlbiBhbgouQiBlcG9s bApmaWxlIGRlc2NyaXB0b3IKLlNIIFNZTk9QU0lTCi5CICNpbmNsdWRlIDxldmVudHBvbGwuaD4K LnNwCi5CUiAiaW50IGVwb2xsX2NyZWF0ZShpbnQgIiBtYXhmZHMgKQouU0ggREVTQ1JJUFRJT04K T3BlbiBhbgouQiBlcG9sbApmaWxlIGRlc2NyaXB0b3IgYnkgcmVxdWVzdGluZyB0aGUga2VybmVs IHRvIGFsbG9jYXRlCmFuIGV2ZW50IGJhY2tpbmcgc3RvcmUgZm9yCi5JIG1heGZkcwpkZXNjcmlw dG9ycy4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIHVzZWQKZm9yIGFsbCB0 aGUgc3Vic2VxdWVudCBjYWxscyB0byB0aGUKLkIgZXBvbGwKaW50ZXJmYWNlLiBUaGUgZmlsZSBk ZXNjcmlwdG9yIHJldHVybmVkIGJ5Ci5CUiBlcG9sbF9jcmVhdGUgKDIpCm11c3QgYmUgY2xvc2Vk IGJ5IHVzaW5nCi5CUiBjbG9zZSAoMikuCi5TSCAiUkVUVVJOIFZBTFVFIgpPbiBzdWNjZXNzLAou QlIgZXBvbGxfY3JlYXRlICgyKQpyZXR1cm5zIGEgcG9zaXRpdmUgaW50ZWdlciBpZGVudGlmeWlu ZyB0aGUgZGVzY3JpcHRvci4KT24gZXJyb3IsIGl0IHJldHVybnMgLTEgYW5kCi5JIGVycm5vCmlz IHNldCBhcHByb3ByaWF0ZWx5LgouU0ggRVJST1JTCi5UUAouQiBFSU5WQUwKVGhlIHNpemUgb2Yg dGhlIHJlcXVlc3RlZCBldmVudCBiYWNraW5nIHN0b3JlLAouSVIgbWF4ZmRzICwKZXhjZWVkZWQK LkJSIE1BWF9GRFNfSU5fRVZFTlRQT0xMIC4KLlRQCi5CIEVOT01FTQpUaGVyZSB3YXMgaW5zdWZm aWNpZW50IG1lbW9yeSB0byBjcmVhdGUgdGhlIGtlcm5lbCBvYmplY3QuCi5TSCBDT05GT1JNSU5H IFRPCi5CUiBlcG9sbF9jcmVhdGUgKDIpCmlzIGEgbmV3IEFQSSBpbnRyb2R1Y2VkIGluIExpbnV4 IGtlcm5lbAouQlIgMi41LjQ0IC4KLlNIICJTRUUgQUxTTyIKLkJSIGVwb2xsX2N0bCAoMikKLkJS IGVwb2xsX3dhaXQgKDIpCi5CUiBjbG9zZSAoMikKCg== --==========568488336========== Content-Type: application/octet-stream; name="epoll_ctl.2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="epoll_ctl.2"; size=2757 LlwiCi5cIiAgZXBvbGwgYnkgRGF2aWRlIExpYmVuemkgKCBlZmZpY2llbnQgZXZlbnQgbm90aWZp Y2F0aW9uIHJldHJpZXZhbCApCi5cIiAgQ29weXJpZ2h0IChDKSAyMDAyICBEYXZpZGUgTGliZW56 aQouXCIKLlwiICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQouXCIgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci5cIiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLlwi ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgouXCIKLlwiICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLlwi ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgouXCIgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLlwiICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgouXCIKLlwiICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQouXCIgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi5cIiAgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVT QQouXCIKLlwiICBEYXZpZGUgTGliZW56aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+Ci5cIgou XCIKLlRIIEVQT0xMX0NUTCAyICIyMyBPY3RvYmVyIDIwMDIiIExpbnV4ICJMaW51eCBQcm9ncmFt bWVyJ3MgTWFudWFsIgouU0ggTkFNRQplcG9sbF9jdGwgXC0gY29udHJvbGxlciBpbnRlcmZhY2Ug Zm9yIGFuCi5CIGVwb2xsCmRlc2NyaXB0b3IKLlNIIFNZTk9QU0lTCi5CICNpbmNsdWRlIDxwb2xs Lmg+Ci5icgouQiAjaW5jbHVkZSA8ZXZlbnRwb2xsLmg+Ci5zcAouQlIgImludCBlcG9sbF9jdGwo aW50ICIgZXBmZCAiLCBpbnQgIiBvcCAiLCBpbnQgIiBmZCAiLCB1bnNpZ25lZCBpbnQgIiBldmVu dHMgKQouU0ggREVTQ1JJUFRJT04KQ29udHJvbCBhbgouQiBlcG9sbApkZXNjcmlwdG9yLAouSVIg ZXBmZCAsCmJ5IHJlcXVlc3RpbmcgdGhlIG9wZXJhdGlvbgouSVIgb3AKYmUgcGVyZm9ybWVkIG9u IHRoZSB0YXJnZXQgZmlsZSBkZXNjcmlwdG9yLAouSVIgZmQgLgpUaGUKLklSIGV2ZW50cwpwYXJh bWV0ZXIgcmVwcmVzZW50cyB0aGUgZXZlbnQgbWFzayAoc2VlCi5CUiBwb2xsICgyKSkKcmVxdWVz dGVkIGZvciB0aGUgdGFyZ2V0IGZpbGUgZGVzY3JpcHRvcgouSVIgZmQgLAp3aGljaCBtdXN0IHJl ZmVyIHRvIGEgc29ja2V0IG9yIGEgcGlwZS4gRmlsZXMgYW5kIHRlcm1pbmFscyBhcmUgbm90CnN1 cHBvcnRlZCBieSBlcG9sbCBhcyBvZiBMaW51eCAyLjUuNDQuIAoKT25seSBub24tYmxvY2tpbmcg c29ja2V0cyBjYW4gc2Vuc2libHkgYmUgYWRkZWQgdG8gZXBvbGwgb3RoZXJ3aXNlCmV2ZW50cyBt aWdodCBnZXQgbG9zdC4gU2VlCi5CUiBlcG9sbCAoMikKZm9yIGRldGFpbHMuCgpWYWxpZCB2YWx1 ZXMgZm9yIHRoZQouSVIgb3AKcGFyYW1ldGVyIGFyZSA6Ci5TUgouVFAKLkIgRVBfQ1RMX0FERApB ZGQgdGhlIHRhcmdldCBmaWxlIGRlc2NyaXB0b3IKLkkgZmQKdG8gdGhlCi5CIGVwb2xsCmRlc2Ny aXB0b3IKLkkgZXBmZAp3aXRoIGV2ZW50IG1hc2sKLklSIGV2ZW50cyAuCi5UUAouQiBFUF9DVExf TU9ECkNoYW5nZSB0aGUgZXZlbnQgbWFzayBvZiB0aGUgdGFyZ2V0IGZpbGUgZGVzY3JpcHRvcgou SSBmZAp0bwouSVIgZXZlbnRzIC4KLlRQCi5CIEVQX0NUTF9ERUwKUmVtb3ZlIHRoZSB0YXJnZXQg ZmlsZSBkZXNjcmlwdG9yCi5JIGZkCmZyb20gdGhlCi5CIGVwb2xsCmZpbGUgZGVzY3JpcHRvciwK LklSIGVwZmQgLgouU0UKLlNIICJSRVRVUk4gVkFMVUUiCk9uIHN1Y2Nlc3MsIAouQlIgZXBvbGxf Y3RsICgyKQpyZXR1cm5zIHplcm8uICBPbiBlcnJvciwgaXQgcmV0dXJucyBcLTEgYW5kCi5JIGVy cm5vCmlzIHNldCBhcHByb3ByaWF0ZWx5LgouU0ggRVJST1JTCi5UUAouQiBFQkFERgpUaGUKLkkg ZXBmZApmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLgouVFAK LkIgRUlOVkFMClRoZSBzdXBwbGllZCBmaWxlIGRlc2NyaXB0b3IsCi5JUiBlcGZkICwKaXMgbm90 IGFuCi5CIGVwb2xsCmZpbGUgZGVzY3JpcHRvciwgb3IgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24K Lkkgb3AKaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGludGVyZmFjZS4KLlRQCi5CIEVOT01FTQpU aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBoYW5kbGUgdGhlIHJlcXVlc3RlZAouSSBv cApjb250cm9sbGVyIG9wZXJhdGlvbi4KLlRQCi5CIEUyQklHClRoZSBtYXhpbXVtIGZpbGUgZGVz Y3JpcHRvcnMgc3RvcmFnZSBmb3IKLkkgZXBmZApoYXMgYmVlbiByZWFjaGVkLgouU0ggQ09ORk9S TUlORyBUTwouQlIgZXBvbGxfY3RsICgyKQppcyBhIG5ldyBBUEkgaW50cm9kdWNlZCBpbiBMaW51 eCBrZXJuZWwKLkJSIDIuNS40NCAuCi5TSCAiU0VFIEFMU08iCi5CUiBlcG9sbF9jcmVhdGUgKDIp Ci5CUiBlcG9sbF93YWl0ICgyKQoK --==========568488336========== Content-Type: application/octet-stream; name="epoll_wait.2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="epoll_wait.2"; size=2500 LlwiCi5cIiAgZXBvbGwgYnkgRGF2aWRlIExpYmVuemkgKCBlZmZpY2llbnQgZXZlbnQgbm90aWZp Y2F0aW9uIHJldHJpZXZhbCApCi5cIiAgQ29weXJpZ2h0IChDKSAyMDAyICBEYXZpZGUgTGliZW56 aQouXCIKLlwiICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQouXCIgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci5cIiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLlwi ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgouXCIKLlwiICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLlwi ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgouXCIgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLlwiICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgouXCIKLlwiICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQouXCIgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi5cIiAgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVT QQouXCIKLlwiICBEYXZpZGUgTGliZW56aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+Ci5cIgou XCIKLlRIIEVQT0xMX1dBSVQgMiAiMjMgT2N0b2JlciAyMDAyIiBMaW51eCAiTGludXggUHJvZ3Jh bW1lcidzIE1hbnVhbCIKLlNIIE5BTUUKZXBvbGxfd2FpdCBcLSB3YWl0IGZvciBhbiBJL08gZXZl bnQgb24gYW4KLkIgZXBvbGwKZmlsZSBkZXNjcmlwdG9yCi5TSCBTWU5PUFNJUwouQiAjaW5jbHVk ZSA8cG9sbC5oPgouYnIKLkIgI2luY2x1ZGUgPGV2ZW50cG9sbC5oPgouc3AKLkJSICJpbnQgZXBv bGxfd2FpdChpbnQgIiBlcGZkICIsIHN0cnVjdCBwb2xsZmQgY29uc3QqKiAiIGV2ZW50cyAiLCBp bnQgIiB0aW1lb3V0KQouU0ggREVTQ1JJUFRJT04KV2FpdCBmb3IgZXZlbnRzIG9uIHRoZQouQiBl cG9sbApmaWxlIGRlc2NyaXB0b3IKLkkgZXBmZApmb3IgYSBtYXhpbXVtIHRpbWUgb2YKLkkgdGlt ZW91dAptaWxsaXNlY29uZHMuIFRoZSBwb2ludGVyCi5JIGV2ZW50cwp3aWxsIGNvbnRhaW4gdGhl IG1lbW9yeSBhcmVhIHdoZXJlIGV2ZW50cyAoc2VlCi5CUiBwb2xsICgyKSkKd2lsbCBiZSBhdmFp bGFibGUgZm9yIHRoZSBjYWxsZXIuClNwZWNpZnlpbmcgYQouSSB0aW1lb3V0Cm9mIFwtMSB3aWxs IG1ha2UKLkJSIGVwb2xsX3dhaXQgKDIpCndhaXQgaW5kZWZpbml0ZWx5LiBUaGUgcmV0dXJuZWQg bWVtb3J5IGFyZWEgd2lsbCBiZSByZWFkLW9ubHkKZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuCi5T SCAiUkVUVVJOIFZBTFVFIgpPbiBzdWNjZXNzLCAKLkJSIGVwb2xsX3dhaXQgKDIpCnJldHVybnMg dGhlIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIHJlYWR5IGZvciB0aGUgcmVxdWVzdGVkIEkv Tywgb3IgemVybwppZiBubyBmaWxlIGRlc2NyaXB0b3IgYmVjYW1lIHJlYWR5IGR1cmluZyB0aGUg cmVxdWVzdGVkCi5JIHRpbWVvdXQKbWlsbGlzZWNvbmRzLiAgT24gZXJyb3IsIGl0IHJldHVybnMg XC0xIGFuZAouSSBlcnJubwppcyBzZXQgYXBwcm9wcmlhdGVseS4KLlNIIEVSUk9SUwouVFAKLkIg RUJBREYKLkkgZXBmZAppcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuCi5UUAouQiBFSU5W QUwKVGhlIHN1cHBsaWVkIGZpbGUgZGVzY3JpcHRvciwKLklSIGVwZmQgLAppcyBub3QgYW4KLkIg ZXBvbGwKZmlsZSBkZXNjcmlwdG9yLgouU0ggQ09ORk9STUlORyBUTwouQlIgZXBvbGxfd2FpdCAo MikKaXMgYSBuZXcgQVBJIGludHJvZHVjZWQgaW4gTGludXgga2VybmVsCi5CUiAyLjUuNDQgLgou U0ggTk9URVMKVGhlCi5CUiBlcG9sbF93YWl0ICgyKQptdXN0IGJlIHVzZWQgd2l0aCBjYXJlIGlu IG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50cy4gQmVjYXVzZSBvZiB0aGUKb3B0aW1pemVkIHdh eQouQlIgZXBvbGxfd2FpdCAoMikKcmV0dXJucyBldmVudHMgdG8gdXNlciBzcGFjZSAoaS5lLiwg d2l0aG91dCBhbnkga2VybmVsLXRvLXVzZXIgbWVtb3J5CnRyYW5zZmVycyksIGl0IGlzIHN1Z2dl c3RlZCB0aGF0IG9ubHkgb25lIHRocmVhZCBjYWxsCi5CUiBlcG9sbF93YWl0ICgyKQphbmQgdGhl biBkaXN0cmlidXRlIGFueSByZXR1cm5lZCBldmVudHMgdG8gb3RoZXIgdGhyZWFkcy4KLlNIICJT RUUgQUxTTyIKLkJSIGVwb2xsX2NyZWF0ZSAoMikKLkJSIGVwb2xsX2N0bCAoMikKCg== --==========568488336========== Content-Type: application/octet-stream; name="sys_epoll-2.5.44-last.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sys_epoll-2.5.44-last.diff"; size=47394 ZGlmZiAtTnJ1IGxpbnV4LTIuNS40NC52YW5pbGxhL2FyY2gvaTM4Ni9rZXJuZWwvZW50cnkuUyBs aW51eC0yLjUuNDQuZXBvbGwvYXJjaC9pMzg2L2tlcm5lbC9lbnRyeS5TCi0tLSBsaW51eC0yLjUu NDQudmFuaWxsYS9hcmNoL2kzODYva2VybmVsL2VudHJ5LlMJRnJpIE9jdCAxOCAyMTowMToxOSAy MDAyCisrKyBsaW51eC0yLjUuNDQuZXBvbGwvYXJjaC9pMzg2L2tlcm5lbC9lbnRyeS5TCVNhdCBP Y3QgMTkgMjE6MTY6MTkgMjAwMgpAQCAtNzM3LDYgKzczNywxMCBAQAogCS5sb25nIHN5c19mcmVl X2h1Z2VwYWdlcwogCS5sb25nIHN5c19leGl0X2dyb3VwCiAJLmxvbmcgc3lzX2xvb2t1cF9kY29v a2llCisJLmxvbmcgc3lzX2Vwb2xsX2NyZWF0ZQorCS5sb25nIHN5c19lcG9sbF9jdGwJLyogMjU1 ICovCisJLmxvbmcgc3lzX2Vwb2xsX3dhaXQKKwogCiAJLnJlcHQgTlJfc3lzY2FsbHMtKC4tc3lz X2NhbGxfdGFibGUpLzQKIAkJLmxvbmcgc3lzX25pX3N5c2NhbGwKZGlmZiAtTnJ1IGxpbnV4LTIu NS40NC52YW5pbGxhL2RyaXZlcnMvY2hhci9NYWtlZmlsZSBsaW51eC0yLjUuNDQuZXBvbGwvZHJp dmVycy9jaGFyL01ha2VmaWxlCi0tLSBsaW51eC0yLjUuNDQudmFuaWxsYS9kcml2ZXJzL2NoYXIv TWFrZWZpbGUJRnJpIE9jdCAxOCAyMTowMjozMiAyMDAyCisrKyBsaW51eC0yLjUuNDQuZXBvbGwv ZHJpdmVycy9jaGFyL01ha2VmaWxlCVR1ZSBPY3QgMjIgMTA6MDg6NDAgMjAwMgpAQCAtNywxNCAr NywxNCBAQAogIwogRk9OVE1BUEZJTEUgPSBjcDQzNy51bmkKIAotb2JqLXkJICs9IG1lbS5vIHR0 eV9pby5vIG5fdHR5Lm8gdHR5X2lvY3RsLm8gcHR5Lm8gbWlzYy5vIHJhbmRvbS5vCitvYmoteQkg Kz0gbWVtLm8gdHR5X2lvLm8gbl90dHkubyB0dHlfaW9jdGwubyBwdHkubyBtaXNjLm8gcmFuZG9t Lm8gZXZlbnRwb2xsLm8KIAogIyBBbGwgb2YgdGhlIChwb3RlbnRpYWwpIG9iamVjdHMgdGhhdCBl eHBvcnQgc3ltYm9scy4KICMgVGhpcyBsaXN0IGNvbWVzIGZyb20gJ2dyZXAgLWwgRVhQT1JUX1NZ TUJPTCAqLltoY10nLgogCiBleHBvcnQtb2JqcyAgICAgOj0JYnVzbW91c2UubyB2dC5vIGdlbmVy aWNfc2VyaWFsLm8gaXAybWFpbi5vIFwKIAkJCWl0ZV9ncGlvLm8ga2V5Ym9hcmQubyBtaXNjLm8g bnZyYW0ubyByYW5kb20ubyBydGMubyBcCi0JCQlzZWxlY3Rpb24ubyBzb255cGkubyBzeXNycS5v IHR0eV9pby5vIHR0eV9pb2N0bC5vCisJCQlzZWxlY3Rpb24ubyBzb255cGkubyBzeXNycS5vIHR0 eV9pby5vIHR0eV9pb2N0bC5vIGV2ZW50cG9sbC5vCiAKIG9iai0kKENPTkZJR19WVCkgKz0gdnRf aW9jdGwubyB2Y19zY3JlZW4ubyBjb25zb2xlbWFwLm8gY29uc29sZW1hcF9kZWZ0YmwubyBzZWxl Y3Rpb24ubyBrZXlib2FyZC5vCiBvYmotJChDT05GSUdfSFdfQ09OU09MRSkgKz0gdnQubyBkZWZr ZXltYXAubwpkaWZmIC1OcnUgbGludXgtMi41LjQ0LnZhbmlsbGEvZHJpdmVycy9jaGFyL2V2ZW50 cG9sbC5jIGxpbnV4LTIuNS40NC5lcG9sbC9kcml2ZXJzL2NoYXIvZXZlbnRwb2xsLmMKLS0tIGxp bnV4LTIuNS40NC52YW5pbGxhL2RyaXZlcnMvY2hhci9ldmVudHBvbGwuYwlXZWQgRGVjIDMxIDE2 OjAwOjAwIDE5NjkKKysrIGxpbnV4LTIuNS40NC5lcG9sbC9kcml2ZXJzL2NoYXIvZXZlbnRwb2xs LmMJTW9uIE9jdCAyOCAxODo0MTozNCAyMDAyCkBAIC0wLDAgKzEsMTE0NyBAQAorLyoKKyAqICBk cml2ZXJzL2NoYXIvZXZlbnRwb2xsLmMgKCBFZmZpY2VudCBldmVudCBwb2xsaW5nIGltcGxlbWVu dGF0aW9uICkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEsLi4uLDIwMDIgIERhdmlkZSBMaWJlbnpp CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICog IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIERhdmlkZSBMaWJl bnppIDxkYXZpZGVsQHhtYWlsc2VydmVyLm9yZz4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Cisj aW5jbHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgorI2luY2x1 ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51 eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3Bv bGwuaD4KKyNpbmNsdWRlIDxsaW51eC9taXNjZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmFu ZG9tLmg+CisjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KKyNpbmNsdWRlIDxsaW51eC93cmFw cGVyLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5o PgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgor I2luY2x1ZGUgPGxpbnV4L2ZjYmxpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgorI2lu Y2x1ZGUgPGFzbS9iaXRvcHMuaD4KKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUg PGFzbS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vbW1hbi5o PgorI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKyNpbmNsdWRlIDxsaW51eC9ldmVudHBvbGwuaD4K KworCisKKyNkZWZpbmUgRVZFTlRQT0xMRlNfTUFHSUMgMHgwMzExMTk2NSAvKiBNeSBiaXJ0aGRh eSBzaG91bGQgd29yayBmb3IgdGhpcyA6KSAqLworCisjZGVmaW5lIERFQlVHX0VQT0xMIDAKKwor I2lmIERFQlVHX0VQT0xMID4gMAorI2RlZmluZSBEUFJJTlRLKHgpIHByaW50ayB4CisjZGVmaW5l IEROUFJJTlRLKG4sIHgpIGRvIHsgaWYgKChuKSA8PSBERUJVR19FUE9MTCkgcHJpbnRrIHg7IH0g d2hpbGUgKDApCisjZWxzZSAvKiAjaWYgREVCVUdfRVBPTEwgPiAwICovCisjZGVmaW5lIERQUklO VEsoeCkgKHZvaWQpIDAKKyNkZWZpbmUgRE5QUklOVEsobiwgeCkgKHZvaWQpIDAKKyNlbmRpZiAv KiAjaWYgREVCVUdfRVBPTEwgPiAwICovCisKKyNkZWZpbmUgREVCVUdfRFBJIDAKKworI2lmIERF QlVHX0RQSSAhPSAwCisjZGVmaW5lIERQSV9TTEFCX0RFQlVHIChTTEFCX0RFQlVHX0ZSRUUgfCBT TEFCX1JFRF9aT05FIC8qIHwgU0xBQl9QT0lTT04gKi8pCisjZWxzZSAvKiAjaWYgREVCVUdfRFBJ ICE9IDAgKi8KKyNkZWZpbmUgRFBJX1NMQUJfREVCVUcgMAorI2VuZGlmIC8qICNpZiBERUJVR19E UEkgIT0gMCAqLworCisjZGVmaW5lIElOSVRJQUxfSEFTSF9CSVRTIDcKKyNkZWZpbmUgTUFYX0hB U0hfQklUUyAxOAorI2RlZmluZSBSRVNJWkVfTEVOR1RIIDIKKworI2RlZmluZSBEUElfTUVNX0FM TE9DKCkJKHN0cnVjdCBlcGl0ZW0gKikga21lbV9jYWNoZV9hbGxvYyhkcGlfY2FjaGUsIFNMQUJf S0VSTkVMKQorI2RlZmluZSBEUElfTUVNX0ZSRUUocCkga21lbV9jYWNoZV9mcmVlKGRwaV9jYWNo ZSwgcCkKKyNkZWZpbmUgSVNfRklMRV9FUE9MTChmKSAoKGYpLT5mX29wID09ICZldmVudHBvbGxf Zm9wcykKKworCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGV2ZW50X3ZlcnNpb25fdDsK Kworc3RydWN0IGV2ZW50cG9sbCB7CisJc3RydWN0IHJ3X3NlbWFwaG9yZSBhY3NlbTsKKwlyd2xv Y2tfdCBsb2NrOworCXdhaXRfcXVldWVfaGVhZF90IHdxOworCXdhaXRfcXVldWVfaGVhZF90IHBv bGxfd2FpdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoOworCXVuc2lnbmVkIGludCBoYml0czsK Kwl1bnNpZ25lZCBpbnQgaG1hc2s7CisJYXRvbWljX3QgaGVudHM7CisJYXRvbWljX3QgcmVzaXpl OworCWludCBudW1wYWdlczsKKwljaGFyICoqcGFnZXM7CisJY2hhciAqcGFnZXMwW01BWF9FVkVO VFBPTExfUEFHRVNdOworCWNoYXIgKnBhZ2VzMVtNQVhfRVZFTlRQT0xMX1BBR0VTXTsKKwl1bnNp Z25lZCBsb25nIHZtYWJhc2U7CisJYXRvbWljX3QgbW1hcHBlZDsKKwlpbnQgZXZlbnRjbnQ7CisJ ZXZlbnRfdmVyc2lvbl90IHZlcjsKK307CisKK3N0cnVjdCBlcGl0ZW0geworCXN0cnVjdCBsaXN0 X2hlYWQgbGxpbms7CisJc3RydWN0IGV2ZW50cG9sbCAqZXA7CisJc3RydWN0IGZpbGUgKmZpbGU7 CisJc3RydWN0IHBvbGxmZCBwZmQ7CisJaW50IGluZGV4OworCWV2ZW50X3ZlcnNpb25fdCB2ZXI7 Cit9OworCisKKworCitzdGF0aWMgaW50IGVwX2dldGZkKGludCAqZWZkLCBzdHJ1Y3QgaW5vZGUg KiplaW5vZGUsIHN0cnVjdCBmaWxlICoqZWZpbGUpOworc3RhdGljIGludCBlcF9hbGxvY19wYWdl cyhjaGFyICoqcGFnZXMsIGludCBudW1wYWdlcyk7CitzdGF0aWMgaW50IGVwX2ZyZWVfcGFnZXMo Y2hhciAqKnBhZ2VzLCBpbnQgbnVtcGFnZXMpOworc3RhdGljIGludCBlcF9pbml0KHN0cnVjdCBl dmVudHBvbGwgKmVwKTsKK3N0YXRpYyB2b2lkIGVwX2ZyZWUoc3RydWN0IGV2ZW50cG9sbCAqZXAp Oworc3RhdGljIHN0cnVjdCBlcGl0ZW0gKmVwX2ZpbmRfbmwoc3RydWN0IGV2ZW50cG9sbCAqZXAs IGludCBmZCk7CitzdGF0aWMgc3RydWN0IGVwaXRlbSAqZXBfZmluZChzdHJ1Y3QgZXZlbnRwb2xs ICplcCwgaW50IGZkKTsKK3N0YXRpYyBpbnQgZXBfaGFzaHJlc2l6ZShzdHJ1Y3QgZXZlbnRwb2xs ICplcCwgdW5zaWduZWQgbG9uZyAqa2ZsYWdzKTsKK3N0YXRpYyBpbnQgZXBfaW5zZXJ0KHN0cnVj dCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgcG9sbGZkICpwZmQpOworc3RhdGljIGludCBlcF9yZW1v dmUoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmRwaSk7CitzdGF0aWMgdm9p ZCBub3RpZnlfcHJvYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9u ZyAqbG9jYWwsIGxvbmcgKmV2ZW50KTsKK3N0YXRpYyBpbnQgb3Blbl9ldmVudHBvbGwoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOworc3RhdGljIGludCBjbG9zZV9ldmVu dHBvbGwoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOworc3RhdGljIHVu c2lnbmVkIGludCBwb2xsX2V2ZW50cG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAq d2FpdCk7CitzdGF0aWMgaW50IHdyaXRlX2V2ZW50cG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29u c3QgY2hhciAqYnVmZmVyLCBzaXplX3QgY291bnQsCisJCQkJCQkgICBsb2ZmX3QgKnBwb3MpOwor c3RhdGljIGludCBlcF9wb2xsKHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXZwb2xsICpk dnApOworc3RhdGljIGludCBlcF9kb19hbGxvY19wYWdlcyhzdHJ1Y3QgZXZlbnRwb2xsICplcCwg aW50IG51bXBhZ2VzKTsKK3N0YXRpYyBpbnQgaW9jdGxfZXZlbnRwb2xsKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAorCQkJCQkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5z aWduZWQgbG9uZyBhcmcpOworc3RhdGljIHZvaWQgZXZlbnRwb2xsX21tX29wZW4oc3RydWN0IHZt X2FyZWFfc3RydWN0ICogdm1hKTsKK3N0YXRpYyB2b2lkIGV2ZW50cG9sbF9tbV9jbG9zZShzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEpOworc3RhdGljIGludCBtbWFwX2V2ZW50cG9sbChzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworc3RhdGljIGludCBl dmVudHBvbGxmc19kZWxldGVfZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CitzdGF0aWMg c3RydWN0IGlub2RlICpnZXRfZXZlbnRwb2xsX2lub2RlKHZvaWQpOworc3RhdGljIHN0cnVjdCBz dXBlcl9ibG9jayAqZXZlbnRwb2xsZnNfZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpm c190eXBlLAorCQkJCQkJCQkJCQkgIGludCBmbGFncywgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRh dGEpOworCisKKworCitzdGF0aWMga21lbV9jYWNoZV90ICpkcGlfY2FjaGU7CitzdGF0aWMgc3Ry dWN0IHZmc21vdW50ICpldmVudHBvbGxfbW50OworCitzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBldmVudHBvbGxfZm9wcyA9IHsKKwkud3JpdGUJCT0gd3JpdGVfZXZlbnRwb2xsLAorCS5p b2N0bAkJPSBpb2N0bF9ldmVudHBvbGwsCisJLm1tYXAJCT0gbW1hcF9ldmVudHBvbGwsCisJLm9w ZW4JCT0gb3Blbl9ldmVudHBvbGwsCisJLnJlbGVhc2UJPSBjbG9zZV9ldmVudHBvbGwsCisJLnBv bGwJCT0gcG9sbF9ldmVudHBvbGwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19z dHJ1Y3QgZXZlbnRwb2xsX21tYXBfb3BzID0geworCS5vcGVuCQk9IGV2ZW50cG9sbF9tbV9vcGVu LAorCS5jbG9zZQkJPSBldmVudHBvbGxfbW1fY2xvc2UsCit9OworCitzdGF0aWMgc3RydWN0IG1p c2NkZXZpY2UgZXZlbnRwb2xsX21pc2NkZXYgPSB7CisJRVZFTlRQT0xMX01JTk9SLCAiZXZlbnRw b2xsIiwgJmV2ZW50cG9sbF9mb3BzCit9OworCitzdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5 cGUgZXZlbnRwb2xsX2ZzX3R5cGUgPSB7CisJLm5hbWUJCT0gImV2ZW50cG9sbGZzIiwKKwkuZ2V0 X3NiCQk9IGV2ZW50cG9sbGZzX2dldF9zYiwKKwkua2lsbF9zYgk9IGtpbGxfYW5vbl9zdXBlciwK K307CisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgZXZlbnRwb2xsZnNfZGVudHJ5 X29wZXJhdGlvbnMgPSB7CisJLmRfZGVsZXRlCT0gZXZlbnRwb2xsZnNfZGVsZXRlX2RlbnRyeSwK K307CisKKworCithc21saW5rYWdlIGludCBzeXNfZXBvbGxfY3JlYXRlKGludCBtYXhmZHMpCit7 CisJaW50IGVycm9yID0gLUVJTlZBTCwgZmQ7CisJdW5zaWduZWQgbG9uZyBhZGRyOworCXN0cnVj dCBpbm9kZSAqaW5vZGU7CisJc3RydWN0IGZpbGUgKmZpbGU7CisJc3RydWN0IGV2ZW50cG9sbCAq ZXA7CisKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogc3lzX2Vwb2xs X2NyZWF0ZSglZClcbiIsCisJCQkJIGN1cnJlbnQsIG1heGZkcykpOworCisJaWYgKG1heGZkcyA+ IE1BWF9GRFNfSU5fRVZFTlRQT0xMKQorCQlnb3RvIGVleGl0XzE7CisJZXJyb3IgPSBlcF9nZXRm ZCgmZmQsICZpbm9kZSwgJmZpbGUpOworCWlmIChlcnJvcikKKwkJZ290byBlZXhpdF8xOworCWVy cm9yID0gb3Blbl9ldmVudHBvbGwoaW5vZGUsIGZpbGUpOworCWlmIChlcnJvcikKKwkJZ290byBl ZXhpdF8yOworCWVwID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCWVycm9yID0gZXBfZG9fYWxsb2Nf cGFnZXMoZXAsIEVQX0ZEU19QQUdFUyhtYXhmZHMgKyAxKSk7CisJaWYgKGVycm9yKQorCQlnb3Rv IGVleGl0XzI7CisJZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKwlhZGRyID0g ZG9fbW1hcF9wZ29mZihmaWxlLCAwLCBFUF9NQVBfU0laRShtYXhmZHMgKyAxKSwgUFJPVF9SRUFE LAorCQkJCQkJIE1BUF9QUklWQVRFLCAwKTsKKwl1cF93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBf c2VtKTsKKwllcnJvciA9IFBUUl9FUlIoKHZvaWQgKikgYWRkcik7CisJaWYgKElTX0VSUigodm9p ZCAqKSBhZGRyKSkKKwkJZ290byBlZXhpdF8yOworCisJRE5QUklOVEsoMywgKEtFUk5fSU5GTyAi WyVwXSBldmVudHBvbGw6IHN5c19lcG9sbF9jcmVhdGUoJWQpID0gJWRcbiIsCisJCQkJIGN1cnJl bnQsIG1heGZkcywgZmQpKTsKKworCXJldHVybiBmZDsKKworZWV4aXRfMjoKKwlzeXNfY2xvc2Uo ZmQpOworZWV4aXRfMToKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDog c3lzX2Vwb2xsX2NyZWF0ZSglZCkgPSAlZFxuIiwKKwkJCQkgY3VycmVudCwgbWF4ZmRzLCBlcnJv cikpOworCXJldHVybiBlcnJvcjsKK30KK0VYUE9SVF9TWU1CT0woc3lzX2Vwb2xsX2NyZWF0ZSk7 CisKKworYXNtbGlua2FnZSBpbnQgc3lzX2Vwb2xsX2N0bChpbnQgZXBmZCwgaW50IG9wLCBpbnQg ZmQsIHVuc2lnbmVkIGludCBldmVudHMpCit7CisJaW50IGVycm9yID0gLUVCQURGOworCXN0cnVj dCBmaWxlICpmaWxlOworCXN0cnVjdCBldmVudHBvbGwgKmVwOworCXN0cnVjdCBlcGl0ZW0gKmRw aTsKKwlzdHJ1Y3QgcG9sbGZkIHBmZDsKKworCUROUFJJTlRLKDMsIChLRVJOX0lORk8gIlslcF0g ZXZlbnRwb2xsOiBzeXNfZXBvbGxfY3RsKCVkLCAlZCwgJWQsICV1KVxuIiwKKwkJCQkgY3VycmVu dCwgZXBmZCwgb3AsIGZkLCBldmVudHMpKTsKKworCWZpbGUgPSBmZ2V0KGVwZmQpOworCWlmICgh ZmlsZSkKKwkJZ290byBlZXhpdF8xOworCWVycm9yID0gLUVJTlZBTDsKKwlpZiAoIUlTX0ZJTEVf RVBPTEwoZmlsZSkpCisJCWdvdG8gZWV4aXRfMjsKKworCWVwID0gZmlsZS0+cHJpdmF0ZV9kYXRh OworCisJZG93bl93cml0ZSgmZXAtPmFjc2VtKTsKKworCXBmZC5mZCA9IGZkOworCXBmZC5ldmVu dHMgPSBldmVudHMgfCBQT0xMRVJSIHwgUE9MTEhVUDsKKwlwZmQucmV2ZW50cyA9IDA7CisKKwlk cGkgPSBlcF9maW5kKGVwLCBmZCk7CisKKwllcnJvciA9IC1FSU5WQUw7CisJc3dpdGNoIChvcCkg eworCWNhc2UgRVBfQ1RMX0FERDoKKwkJaWYgKCFkcGkpCisJCQllcnJvciA9IGVwX2luc2VydChl cCwgJnBmZCk7CisJCWVsc2UKKwkJCWVycm9yID0gLUVFWElTVDsKKwkJYnJlYWs7CisJY2FzZSBF UF9DVExfREVMOgorCQlpZiAoZHBpKQorCQkJZXJyb3IgPSBlcF9yZW1vdmUoZXAsIGRwaSk7CisJ CWVsc2UKKwkJCWVycm9yID0gLUVOT0VOVDsKKwkJYnJlYWs7CisJY2FzZSBFUF9DVExfTU9EOgor CQlpZiAoZHBpKSB7CisJCQlkcGktPnBmZC5ldmVudHMgPSBldmVudHM7CisJCQllcnJvciA9IDA7 CisJCX0gZWxzZQorCQkJZXJyb3IgPSAtRU5PRU5UOworCQlicmVhazsKKwl9CisKKwlETlBSSU5U SygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogc3lzX2Vwb2xsX2N0bCglZCwgJWQsICVk LCAldSkgPSAlZFxuIiwKKwkJCQkgY3VycmVudCwgZXBmZCwgb3AsIGZkLCBldmVudHMsIGVycm9y KSk7CisKKwl1cF93cml0ZSgmZXAtPmFjc2VtKTsKKworZWV4aXRfMjoKKwlmcHV0KGZpbGUpOwor ZWV4aXRfMToKKwlyZXR1cm4gZXJyb3I7Cit9CitFWFBPUlRfU1lNQk9MKHN5c19lcG9sbF9jdGwp OworCisKK2FzbWxpbmthZ2UgaW50IHN5c19lcG9sbF93YWl0KGludCBlcGZkLCBzdHJ1Y3QgcG9s bGZkIGNvbnN0ICoqZXZlbnRzLCBpbnQgdGltZW91dCkKK3sKKwlpbnQgZXJyb3IgPSAtRUJBREY7 CisJdm9pZCAqZWFkZHI7CisJc3RydWN0IGZpbGUgKmZpbGU7CisJc3RydWN0IGV2ZW50cG9sbCAq ZXA7CisJc3RydWN0IGV2cG9sbCBkdnA7CisKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBd IGV2ZW50cG9sbDogc3lzX2Vwb2xsX3dhaXQoJWQsICVwLCAlZClcbiIsCisJCQkJIGN1cnJlbnQs IGVwZmQsIGV2ZW50cywgdGltZW91dCkpOworCisJZmlsZSA9IGZnZXQoZXBmZCk7CisJaWYgKCFm aWxlKQorCQlnb3RvIGVleGl0XzE7CisJZXJyb3IgPSAtRUlOVkFMOworCWlmICghSVNfRklMRV9F UE9MTChmaWxlKSkKKwkJZ290byBlZXhpdF8yOworCisJZXAgPSBmaWxlLT5wcml2YXRlX2RhdGE7 CisKKwllcnJvciA9IC1FSU5WQUw7CisJaWYgKCFhdG9taWNfcmVhZCgmZXAtPm1tYXBwZWQpKQor CQlnb3RvIGVleGl0XzI7CisKKwlkdnAuZXBfdGltZW91dCA9IHRpbWVvdXQ7CisJZXJyb3IgPSBl cF9wb2xsKGVwLCAmZHZwKTsKKwlpZiAoZXJyb3IgPiAwKSB7CisJCWVhZGRyID0gKHZvaWQgKikg KGVwLT52bWFiYXNlICsgZHZwLmVwX3Jlc29mZik7CisJCWlmIChjb3B5X3RvX3VzZXIoZXZlbnRz LCAmZWFkZHIsIHNpemVvZihzdHJ1Y3QgcG9sbGZkICopKSkKKwkJCWVycm9yID0gLUVGQVVMVDsK Kwl9CisKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogc3lzX2Vwb2xs X3dhaXQoJWQsICVwLCAlZCkgPSAlZFxuIiwKKwkJCQkgY3VycmVudCwgZXBmZCwgZXZlbnRzLCB0 aW1lb3V0LCBlcnJvcikpOworCitlZXhpdF8yOgorCWZwdXQoZmlsZSk7CitlZXhpdF8xOgorCXJl dHVybiBlcnJvcjsKK30KK0VYUE9SVF9TWU1CT0woc3lzX2Vwb2xsX3dhaXQpOworCisKK3N0YXRp YyBpbnQgZXBfZ2V0ZmQoaW50ICplZmQsIHN0cnVjdCBpbm9kZSAqKmVpbm9kZSwgc3RydWN0IGZp bGUgKiplZmlsZSkKK3sKKwlzdHJ1Y3QgcXN0ciB0aGlzOworCWNoYXIgbmFtZVszMl07CisJc3Ry dWN0IGRlbnRyeSAqZGVudHJ5OworCXN0cnVjdCBpbm9kZSAqaW5vZGU7CisJc3RydWN0IGZpbGUg KmZpbGU7CisJaW50IGVycm9yLCBmZDsKKworCWVycm9yID0gLUVORklMRTsKKwlmaWxlID0gZ2V0 X2VtcHR5X2ZpbHAoKTsKKwlpZiAoIWZpbGUpCisJCWdvdG8gZWV4aXRfMTsKKworCWlub2RlID0g Z2V0X2V2ZW50cG9sbF9pbm9kZSgpOworCWVycm9yID0gUFRSX0VSUihpbm9kZSk7CisJaWYgKElT X0VSUihpbm9kZSkpCisJCWdvdG8gZWV4aXRfMjsKKworCWVycm9yID0gZ2V0X3VudXNlZF9mZCgp OworCWlmIChlcnJvciA8IDApCisJCWdvdG8gZWV4aXRfMzsKKwlmZCA9IGVycm9yOworCisJZXJy b3IgPSAtRU5PTUVNOworCXNwcmludGYobmFtZSwgIlslbHVdIiwgaW5vZGUtPmlfaW5vKTsKKwl0 aGlzLm5hbWUgPSBuYW1lOworCXRoaXMubGVuID0gc3RybGVuKG5hbWUpOworCXRoaXMuaGFzaCA9 IGlub2RlLT5pX2lubzsKKwlkZW50cnkgPSBkX2FsbG9jKGV2ZW50cG9sbF9tbnQtPm1udF9zYi0+ c19yb290LCAmdGhpcyk7CisJaWYgKCFkZW50cnkpCisJCWdvdG8gZWV4aXRfNDsKKwlkZW50cnkt PmRfb3AgPSAmZXZlbnRwb2xsZnNfZGVudHJ5X29wZXJhdGlvbnM7CisJZF9hZGQoZGVudHJ5LCBp bm9kZSk7CisJZmlsZS0+Zl92ZnNtbnQgPSBtbnRnZXQobW50Z2V0KGV2ZW50cG9sbF9tbnQpKTsK KwlmaWxlLT5mX2RlbnRyeSA9IGRnZXQoZGVudHJ5KTsKKworCWZpbGUtPmZfcG9zID0gMDsKKwlm aWxlLT5mX2ZsYWdzID0gT19SRFdSOworCWZpbGUtPmZfb3AgPSAmZXZlbnRwb2xsX2ZvcHM7CisJ ZmlsZS0+Zl9tb2RlID0gRk1PREVfUkVBRCB8IEZNT0RFX1dSSVRFOworCWZpbGUtPmZfdmVyc2lv biA9IDA7CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKKworCWZkX2luc3RhbGwoZmQsIGZp bGUpOworCisJKmVmZCA9IGZkOworCSplaW5vZGUgPSBpbm9kZTsKKwkqZWZpbGUgPSBmaWxlOwor CXJldHVybiAwOworCitlZXhpdF80OgorCXB1dF91bnVzZWRfZmQoZmQpOworZWV4aXRfMzoKKwlp cHV0KGlub2RlKTsKK2VleGl0XzI6CisJcHV0X2ZpbHAoZmlsZSk7CitlZXhpdF8xOgorCXJldHVy biBlcnJvcjsJCit9CisKKworc3RhdGljIGludCBlcF9hbGxvY19wYWdlcyhjaGFyICoqcGFnZXMs IGludCBudW1wYWdlcykKK3sKKwlpbnQgaWk7CisKKwlmb3IgKGlpID0gMDsgaWkgPCBudW1wYWdl czsgaWkrKykgeworCQlwYWdlc1tpaV0gPSAoY2hhciAqKSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9L RVJORUwsIDApOworCQlpZiAoIXBhZ2VzW2lpXSkgeworCQkJZm9yICgtLWlpOyBpaSA+PSAwOyBp aS0tKSB7CisJCQkJQ2xlYXJQYWdlUmVzZXJ2ZWQodmlydF90b19wYWdlKHBhZ2VzW2lpXSkpOwor CQkJCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpIHBhZ2VzW2lpXSwgMCk7CisJCQl9CisJCQly ZXR1cm4gLUVOT01FTTsKKwkJfQorCQlTZXRQYWdlUmVzZXJ2ZWQodmlydF90b19wYWdlKHBhZ2Vz W2lpXSkpOworCX0KKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IGVwX2ZyZWVfcGFnZXMo Y2hhciAqKnBhZ2VzLCBpbnQgbnVtcGFnZXMpCit7CisJaW50IGlpOworCisJZm9yIChpaSA9IDA7 IGlpIDwgbnVtcGFnZXM7IGlpKyspIHsKKwkJQ2xlYXJQYWdlUmVzZXJ2ZWQodmlydF90b19wYWdl KHBhZ2VzW2lpXSkpOworCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKSBwYWdlc1tpaV0sIDAp OworCX0KKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IGVwX2luaXQoc3RydWN0IGV2ZW50 cG9sbCAqZXApCit7CisJaW50IGlpLCBoZW50cmllczsKKworCWluaXRfcndzZW0oJmVwLT5hY3Nl bSk7CisJcndsb2NrX2luaXQoJmVwLT5sb2NrKTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZlcC0+ d3EpOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmVwLT5wb2xsX3dhaXQpOworCWVwLT5oYml0cyA9 IElOSVRJQUxfSEFTSF9CSVRTOworCWVwLT5obWFzayA9ICgxIDw8IGVwLT5oYml0cykgLSAxOwor CWF0b21pY19zZXQoJmVwLT5oZW50cywgMCk7CisJYXRvbWljX3NldCgmZXAtPnJlc2l6ZSwgMCk7 CisJYXRvbWljX3NldCgmZXAtPm1tYXBwZWQsIDApOworCWVwLT5udW1wYWdlcyA9IDA7CisJZXAt PnZtYWJhc2UgPSAwOworCWVwLT5wYWdlcyA9IGVwLT5wYWdlczA7CisJZXAtPmV2ZW50Y250ID0g MDsKKwllcC0+dmVyID0gMTsKKworCWhlbnRyaWVzID0gZXAtPmhtYXNrICsgMTsKKwlpZiAoIShl cC0+aGFzaCA9IChzdHJ1Y3QgbGlzdF9oZWFkICopIHZtYWxsb2MoaGVudHJpZXMgKiBzaXplb2Yo c3RydWN0IGxpc3RfaGVhZCkpKSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKGlpID0gMDsg aWkgPCBoZW50cmllczsgaWkrKykKKwkJSU5JVF9MSVNUX0hFQUQoJmVwLT5oYXNoW2lpXSk7CisK KwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgdm9pZCBlcF9mcmVlKHN0cnVjdCBldmVudHBvbGwg KmVwKQoreworCWludCBpaTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsbms7CisKKwlmb3IgKGlpID0g MDsgaWkgPD0gZXAtPmhtYXNrOyBpaSsrKSB7CisJCXdoaWxlICgobG5rID0gbGlzdF9maXJzdCgm ZXAtPmhhc2hbaWldKSkpIHsKKwkJCXN0cnVjdCBlcGl0ZW0gKmRwaSA9IGxpc3RfZW50cnkobG5r LCBzdHJ1Y3QgZXBpdGVtLCBsbGluayk7CisKKwkJCWZpbGVfbm90aWZ5X2RlbGNiKGRwaS0+Zmls ZSwgbm90aWZ5X3Byb2MpOworCQkJbGlzdF9kZWwobG5rKTsKKwkJCURQSV9NRU1fRlJFRShkcGkp OworCQl9CisJfQorCXZmcmVlKGVwLT5oYXNoKTsKKwlpZiAoZXAtPm51bXBhZ2VzID4gMCkgewor CQllcF9mcmVlX3BhZ2VzKGVwLT5wYWdlczAsIGVwLT5udW1wYWdlcyk7CisJCWVwX2ZyZWVfcGFn ZXMoZXAtPnBhZ2VzMSwgZXAtPm51bXBhZ2VzKTsKKwl9Cit9CisKKworc3RhdGljIHN0cnVjdCBl cGl0ZW0gKmVwX2ZpbmRfbmwoc3RydWN0IGV2ZW50cG9sbCAqZXAsIGludCBmZCkKK3sKKwlzdHJ1 Y3QgZXBpdGVtICpkcGkgPSBOVUxMOworCXN0cnVjdCBsaXN0X2hlYWQgKmxzdGhlYWQsICpsbms7 CisKKwlsc3RoZWFkID0gJmVwLT5oYXNoW2ZkICYgZXAtPmhtYXNrXTsKKwlsaXN0X2Zvcl9lYWNo KGxuaywgbHN0aGVhZCkgeworCQlkcGkgPSBsaXN0X2VudHJ5KGxuaywgc3RydWN0IGVwaXRlbSwg bGxpbmspOworCisJCWlmIChkcGktPnBmZC5mZCA9PSBmZCkgYnJlYWs7CisJCWRwaSA9IE5VTEw7 CisJfQorCisJRE5QUklOVEsoMywgKEtFUk5fSU5GTyAiWyVwXSBldmVudHBvbGw6IGVwX2ZpbmQo JWQpIC0+ICVwXG4iLCBjdXJyZW50LCBmZCwgZHBpKSk7CisKKwlyZXR1cm4gZHBpOworfQorCisK K3N0YXRpYyBzdHJ1Y3QgZXBpdGVtICplcF9maW5kKHN0cnVjdCBldmVudHBvbGwgKmVwLCBpbnQg ZmQpCit7CisJc3RydWN0IGVwaXRlbSAqZHBpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwly ZWFkX2xvY2tfaXJxc2F2ZSgmZXAtPmxvY2ssIGZsYWdzKTsKKworCWRwaSA9IGVwX2ZpbmRfbmwo ZXAsIGZkKTsKKworCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7CisK KwlyZXR1cm4gZHBpOworfQorCisKK3N0YXRpYyBpbnQgZXBfaGFzaHJlc2l6ZShzdHJ1Y3QgZXZl bnRwb2xsICplcCwgdW5zaWduZWQgbG9uZyAqa2ZsYWdzKQoreworCXN0cnVjdCBsaXN0X2hlYWQg Kmhhc2gsICpvbGRoYXNoOworCXVuc2lnbmVkIGludCBoYml0cyA9IGVwLT5oYml0cyArIDE7CisJ dW5zaWduZWQgaW50IGhtYXNrID0gKDEgPDwgaGJpdHMpIC0gMTsKKwlpbnQgaWksIHJlcywgaGVu dHJpZXMgPSBobWFzayArIDE7CisJdW5zaWduZWQgbG9uZyBmbGFncyA9ICprZmxhZ3M7CisKKwlE TlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogZXBfaGFzaHJlc2l6ZSglcCkg Yml0cz0ldVxuIiwgY3VycmVudCwgZXAsIGhiaXRzKSk7CisKKwl3cml0ZV91bmxvY2tfaXJxcmVz dG9yZSgmZXAtPmxvY2ssIGZsYWdzKTsKKworCXJlcyA9IC1FTk9NRU07CisJaWYgKCEoaGFzaCA9 IChzdHJ1Y3QgbGlzdF9oZWFkICopIHZtYWxsb2MoaGVudHJpZXMgKiBzaXplb2Yoc3RydWN0IGxp c3RfaGVhZCkpKSkgeworCQl3cml0ZV9sb2NrX2lycXNhdmUoJmVwLT5sb2NrLCBmbGFncyk7CisJ CWdvdG8gZWV4aXRfMTsKKwl9CisKKwlmb3IgKGlpID0gMDsgaWkgPCBoZW50cmllczsgaWkrKykK KwkJSU5JVF9MSVNUX0hFQUQoJmhhc2hbaWldKTsKKworCXdyaXRlX2xvY2tfaXJxc2F2ZSgmZXAt PmxvY2ssIGZsYWdzKTsKKworCW9sZGhhc2ggPSBlcC0+aGFzaDsKKwlmb3IgKGlpID0gMDsgaWkg PD0gZXAtPmhtYXNrOyBpaSsrKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKm9sZGhlYWQgPSAmb2xk aGFzaFtpaV0sICpsbms7CisKKwkJd2hpbGUgKChsbmsgPSBsaXN0X2ZpcnN0KG9sZGhlYWQpKSkg eworCQkJc3RydWN0IGVwaXRlbSAqZHBpID0gbGlzdF9lbnRyeShsbmssIHN0cnVjdCBlcGl0ZW0s IGxsaW5rKTsKKworCQkJbGlzdF9kZWwobG5rKTsKKwkJCWxpc3RfYWRkKGxuaywgJmhhc2hbZHBp LT5wZmQuZmQgJiBobWFza10pOworCQl9CisJfQorCisJZXAtPmhhc2ggPSBoYXNoOworCWVwLT5o Yml0cyA9IGhiaXRzOworCWVwLT5obWFzayA9IGhtYXNrOworCisJd3JpdGVfdW5sb2NrX2lycXJl c3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7CisJdmZyZWUob2xkaGFzaCk7CisJd3JpdGVfbG9ja19p cnFzYXZlKCZlcC0+bG9jaywgZmxhZ3MpOworCisJcmVzID0gMDsKK2VleGl0XzE6CisJKmtmbGFn cyA9IGZsYWdzOworCWF0b21pY19kZWMoJmVwLT5yZXNpemUpOworCXJldHVybiByZXM7Cit9CisK Kworc3RhdGljIGludCBlcF9pbnNlcnQoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBwb2xs ZmQgKnBmZCkKK3sKKwlpbnQgZXJyb3I7CisJc3RydWN0IGVwaXRlbSAqZHBpOworCXN0cnVjdCBm aWxlICpmaWxlOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoYXRvbWljX3JlYWQoJmVw LT5oZW50cykgPj0gKGVwLT5udW1wYWdlcyAqIFBPTExGRF9YX1BBR0UpKQorCQlyZXR1cm4gLUUy QklHOworCisJZmlsZSA9IGZnZXQocGZkLT5mZCk7CisJaWYgKCFmaWxlKQorCQlyZXR1cm4gLUVC QURGOworCisJZXJyb3IgPSAtRU5PTUVNOworCWlmICghKGRwaSA9IERQSV9NRU1fQUxMT0MoKSkp CisJCWdvdG8gZWV4aXRfMTsKKworCUlOSVRfTElTVF9IRUFEKCZkcGktPmxsaW5rKTsKKwlkcGkt PmVwID0gZXA7CisJZHBpLT5maWxlID0gZmlsZTsKKwlkcGktPnBmZCA9ICpwZmQ7CisJZHBpLT5p bmRleCA9IC0xOworCWRwaS0+dmVyID0gZXAtPnZlciAtIDE7CisKKwl3cml0ZV9sb2NrX2lycXNh dmUoJmVwLT5sb2NrLCBmbGFncyk7CisKKwlsaXN0X2FkZCgmZHBpLT5sbGluaywgJmVwLT5oYXNo W3BmZC0+ZmQgJiBlcC0+aG1hc2tdKTsKKwlhdG9taWNfaW5jKCZlcC0+aGVudHMpOworCisJaWYg KCFhdG9taWNfcmVhZCgmZXAtPnJlc2l6ZSkgJiYKKwkJKGF0b21pY19yZWFkKCZlcC0+aGVudHMp ID4+IGVwLT5oYml0cykgPiBSRVNJWkVfTEVOR1RIICYmCisJCWVwLT5oYml0cyA8IE1BWF9IQVNI X0JJVFMpIHsKKwkJYXRvbWljX2luYygmZXAtPnJlc2l6ZSk7CisJCWVwX2hhc2hyZXNpemUoZXAs ICZmbGFncyk7CisJfQorCisJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFn cyk7CisKKwlmaWxlX25vdGlmeV9hZGRjYihmaWxlLCBub3RpZnlfcHJvYywgZHBpKTsKKworCURO UFJJTlRLKDMsIChLRVJOX0lORk8gIlslcF0gZXZlbnRwb2xsOiBlcF9pbnNlcnQoJXAsICVkKVxu IiwgY3VycmVudCwgZXAsIHBmZC0+ZmQpKTsKKworCWVycm9yID0gMDsKK2VleGl0XzE6CisJZnB1 dChmaWxlKTsKKworCXJldHVybiBlcnJvcjsKK30KKworCitzdGF0aWMgaW50IGVwX3JlbW92ZShz dHJ1Y3QgZXZlbnRwb2xsICplcCwgc3RydWN0IGVwaXRlbSAqZHBpKQoreworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisJc3RydWN0IHBvbGxmZCAqcGZkLCAqbHBmZDsKKwlzdHJ1Y3QgZXBpdGVtICps ZHBpOworCisJZmlsZV9ub3RpZnlfZGVsY2IoZHBpLT5maWxlLCBub3RpZnlfcHJvYyk7CisKKwl3 cml0ZV9sb2NrX2lycXNhdmUoJmVwLT5sb2NrLCBmbGFncyk7CisKKwlsaXN0X2RlbCgmZHBpLT5s bGluayk7CisJYXRvbWljX2RlYygmZXAtPmhlbnRzKTsKKworCWlmIChkcGktPmluZGV4ID49IDAg JiYgZHBpLT52ZXIgPT0gZXAtPnZlciAmJiBkcGktPmluZGV4IDwgZXAtPmV2ZW50Y250KSB7CisJ CXBmZCA9IChzdHJ1Y3QgcG9sbGZkICopIChlcC0+cGFnZXNbRVZFTlRfUEFHRV9JTkRFWChkcGkt PmluZGV4KV0gKworCQkJCQkJCQkgRVZFTlRfUEFHRV9PRkZTRVQoZHBpLT5pbmRleCkpOworCQlp ZiAocGZkLT5mZCA9PSBkcGktPnBmZC5mZCAmJiBkcGktPmluZGV4IDwgLS1lcC0+ZXZlbnRjbnQp IHsKKwkJCWxwZmQgPSAoc3RydWN0IHBvbGxmZCAqKSAoZXAtPnBhZ2VzW0VWRU5UX1BBR0VfSU5E RVgoZXAtPmV2ZW50Y250KV0gKworCQkJCQkJCQkJICBFVkVOVF9QQUdFX09GRlNFVChlcC0+ZXZl bnRjbnQpKTsKKwkJCSpwZmQgPSAqbHBmZDsKKworCQkJaWYgKChsZHBpID0gZXBfZmluZF9ubChl cCwgcGZkLT5mZCkpKSBsZHBpLT5pbmRleCA9IGRwaS0+aW5kZXg7CisJCX0KKwl9CisKKwl3cml0 ZV91bmxvY2tfaXJxcmVzdG9yZSgmZXAtPmxvY2ssIGZsYWdzKTsKKworCUROUFJJTlRLKDMsIChL RVJOX0lORk8gIlslcF0gZXZlbnRwb2xsOiBlcF9yZW1vdmUoJXAsICVkKVxuIiwKKwkJCQkgY3Vy cmVudCwgZXAsIGRwaS0+cGZkLmZkKSk7CisKKwlEUElfTUVNX0ZSRUUoZHBpKTsKKworCXJldHVy biAwOworfQorCisKK3N0YXRpYyB2b2lkIG5vdGlmeV9wcm9jKHN0cnVjdCBmaWxlICpmaWxlLCB2 b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nICpsb2NhbCwgbG9uZyAqZXZlbnQpCit7CisJc3RydWN0 IGVwaXRlbSAqZHBpID0gZGF0YTsKKwlzdHJ1Y3QgZXZlbnRwb2xsICplcCA9IGRwaS0+ZXA7CisJ c3RydWN0IHBvbGxmZCAqcGZkOworCisJRE5QUklOVEsoMywgKEtFUk5fSU5GTyAiWyVwXSBldmVu dHBvbGw6IG5vdGlmeSglcCwgJXAsICVsZCwgJWxkKSBlcD0lcFxuIiwKKwkJCQkgY3VycmVudCwg ZmlsZSwgZGF0YSwgZXZlbnRbMF0sIGV2ZW50WzFdLCBlcCkpOworCisJd3JpdGVfbG9jaygmZXAt PmxvY2spOworCWlmICghKGRwaS0+cGZkLmV2ZW50cyAmIGV2ZW50WzFdKSkKKwkJZ290byBvdXQ7 CisKKwlpZiAoZHBpLT5pbmRleCA8IDAgfHwgZHBpLT52ZXIgIT0gZXAtPnZlcikgeworCQlpZiAo ZXAtPmV2ZW50Y250ID49IChlcC0+bnVtcGFnZXMgKiBQT0xMRkRfWF9QQUdFKSkKKwkJCWdvdG8g b3V0OworCQlkcGktPmluZGV4ID0gZXAtPmV2ZW50Y250Kys7CisJCWRwaS0+dmVyID0gZXAtPnZl cjsKKwkJcGZkID0gKHN0cnVjdCBwb2xsZmQgKikgKGVwLT5wYWdlc1tFVkVOVF9QQUdFX0lOREVY KGRwaS0+aW5kZXgpXSArCisJCQkJCQkJCSBFVkVOVF9QQUdFX09GRlNFVChkcGktPmluZGV4KSk7 CisJCSpwZmQgPSBkcGktPnBmZDsKKwl9IGVsc2UgeworCQlwZmQgPSAoc3RydWN0IHBvbGxmZCAq KSAoZXAtPnBhZ2VzW0VWRU5UX1BBR0VfSU5ERVgoZHBpLT5pbmRleCldICsKKwkJCQkJCQkJIEVW RU5UX1BBR0VfT0ZGU0VUKGRwaS0+aW5kZXgpKTsKKwkJaWYgKHBmZC0+ZmQgIT0gZHBpLT5wZmQu ZmQpIHsKKwkJCWlmIChlcC0+ZXZlbnRjbnQgPj0gKGVwLT5udW1wYWdlcyAqIFBPTExGRF9YX1BB R0UpKQorCQkJCWdvdG8gb3V0OworCQkJZHBpLT5pbmRleCA9IGVwLT5ldmVudGNudCsrOworCQkJ cGZkID0gKHN0cnVjdCBwb2xsZmQgKikgKGVwLT5wYWdlc1tFVkVOVF9QQUdFX0lOREVYKGRwaS0+ aW5kZXgpXSArCisJCQkJCQkJCQkgRVZFTlRfUEFHRV9PRkZTRVQoZHBpLT5pbmRleCkpOworCQkJ KnBmZCA9IGRwaS0+cGZkOworCQl9CisJfQorCisJcGZkLT5yZXZlbnRzIHw9IChwZmQtPmV2ZW50 cyAmIGV2ZW50WzFdKTsKKworCWlmICh3YWl0cXVldWVfYWN0aXZlKCZlcC0+d3EpKQorCQl3YWtl X3VwKCZlcC0+d3EpOworCWlmICh3YWl0cXVldWVfYWN0aXZlKCZlcC0+cG9sbF93YWl0KSkKKwkJ d2FrZV91cCgmZXAtPnBvbGxfd2FpdCk7CitvdXQ6CisJd3JpdGVfdW5sb2NrKCZlcC0+bG9jayk7 Cit9CisKKworc3RhdGljIGludCBvcGVuX2V2ZW50cG9sbChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlpbnQgcmVzOworCXN0cnVjdCBldmVudHBvbGwgKmVwOwor CisJaWYgKCEoZXAgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZXZlbnRwb2xsKSwgR0ZQX0tFUk5F TCkpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1lbXNldChlcCwgMCwgc2l6ZW9mKCplcCkpOwor CWlmICgocmVzID0gZXBfaW5pdChlcCkpKSB7CisJCWtmcmVlKGVwKTsKKwkJcmV0dXJuIHJlczsK Kwl9CisKKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBlcDsKKworCUROUFJJTlRLKDMsIChLRVJOX0lO Rk8gIlslcF0gZXZlbnRwb2xsOiBvcGVuKCkgZXA9JXBcbiIsIGN1cnJlbnQsIGVwKSk7CisJcmV0 dXJuIDA7Cit9CisKKworc3RhdGljIGludCBjbG9zZV9ldmVudHBvbGwoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGV2ZW50cG9sbCAqZXAgPSBmaWxl LT5wcml2YXRlX2RhdGE7CisKKwlpZiAoZXApIHsKKwkJZXBfZnJlZShlcCk7CisJCWtmcmVlKGVw KTsKKwl9CisKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogY2xvc2Uo KSBlcD0lcFxuIiwgY3VycmVudCwgZXApKTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgdW5z aWduZWQgaW50IHBvbGxfZXZlbnRwb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3 YWl0KQoreworCXN0cnVjdCBldmVudHBvbGwgKmVwID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCisJ cG9sbF93YWl0KGZpbGUsICZlcC0+cG9sbF93YWl0LCB3YWl0KTsKKwlpZiAoZXAtPmV2ZW50Y250 KQorCQlyZXR1cm4gUE9MTElOIHwgUE9MTFJETk9STTsKKworCXJldHVybiAwOworfQorCisKK3N0 YXRpYyBpbnQgd3JpdGVfZXZlbnRwb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpi dWZmZXIsIHNpemVfdCBjb3VudCwKKwkJCQkJCSAgIGxvZmZfdCAqcHBvcykKK3sKKwlpbnQgcmNv dW50OworCXN0cnVjdCBldmVudHBvbGwgKmVwID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVj dCBlcGl0ZW0gKmRwaTsKKwlzdHJ1Y3QgcG9sbGZkIHBmZDsKKworCUROUFJJTlRLKDMsIChLRVJO X0lORk8gIlslcF0gZXZlbnRwb2xsOiB3cml0ZSglcCwgJWQpXG4iLCBjdXJyZW50LCBlcCwgY291 bnQpKTsKKworCXJjb3VudCA9IC1FSU5WQUw7CisJaWYgKGNvdW50ICUgc2l6ZW9mKHN0cnVjdCBw b2xsZmQpKQorCQlnb3RvIGVleGl0XzE7CisKKwlpZiAoKHJjb3VudCA9IHZlcmlmeV9hcmVhKFZF UklGWV9SRUFELCBidWZmZXIsIGNvdW50KSkpCisJCWdvdG8gZWV4aXRfMTsKKworCWRvd25fd3Jp dGUoJmVwLT5hY3NlbSk7CisKKwlyY291bnQgPSAwOworCisJd2hpbGUgKGNvdW50ID4gMCkgewor CQlpZiAoX19jb3B5X2Zyb21fdXNlcigmcGZkLCBidWZmZXIsIHNpemVvZihwZmQpKSkgeworCQkJ cmNvdW50ID0gLUVGQVVMVDsKKwkJCWdvdG8gZWV4aXRfMjsKKwkJfQorCisJCWRwaSA9IGVwX2Zp bmQoZXAsIHBmZC5mZCk7CisKKwkJaWYgKHBmZC5mZCA+PSBjdXJyZW50LT5maWxlcy0+bWF4X2Zk cyB8fCAhY3VycmVudC0+ZmlsZXMtPmZkW3BmZC5mZF0pCisJCQlwZmQuZXZlbnRzID0gUE9MTFJF TU9WRTsKKwkJaWYgKHBmZC5ldmVudHMgJiBQT0xMUkVNT1ZFKSB7CisJCQlpZiAoZHBpKSB7CisJ CQkJZXBfcmVtb3ZlKGVwLCBkcGkpOworCQkJCXJjb3VudCArPSBzaXplb2YocGZkKTsKKwkJCX0K KwkJfQorCQllbHNlIGlmIChkcGkpIHsKKwkJCWRwaS0+cGZkLmV2ZW50cyA9IHBmZC5ldmVudHM7 CisJCQlyY291bnQgKz0gc2l6ZW9mKHBmZCk7CisJCX0gZWxzZSB7CisJCQlwZmQucmV2ZW50cyA9 IDA7CisJCQlpZiAoIWVwX2luc2VydChlcCwgJnBmZCkpCisJCQkJcmNvdW50ICs9IHNpemVvZihw ZmQpOworCQl9CisKKwkJYnVmZmVyICs9IHNpemVvZihwZmQpOworCQljb3VudCAtPSBzaXplb2Yo cGZkKTsKKwl9CisKK2VleGl0XzI6CisJdXBfd3JpdGUoJmVwLT5hY3NlbSk7CitlZXhpdF8xOgor CUROUFJJTlRLKDMsIChLRVJOX0lORk8gIlslcF0gZXZlbnRwb2xsOiB3cml0ZSglcCwgJWQpID0g JWRcbiIsCisJCQkJIGN1cnJlbnQsIGVwLCBjb3VudCwgcmNvdW50KSk7CisKKwlyZXR1cm4gcmNv dW50OworfQorCisKK3N0YXRpYyBpbnQgZXBfcG9sbChzdHJ1Y3QgZXZlbnRwb2xsICplcCwgc3Ry dWN0IGV2cG9sbCAqZHZwKQoreworCWludCByZXMgPSAwOworCWxvbmcgdGltZW91dDsKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCXdhaXRfcXVldWVfdCB3YWl0OworCisJaWYgKCFhdG9taWNfcmVh ZCgmZXAtPm1tYXBwZWQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXdyaXRlX2xvY2tfaXJxc2F2 ZSgmZXAtPmxvY2ssIGZsYWdzKTsKKworCXJlcyA9IDA7CisJaWYgKCFlcC0+ZXZlbnRjbnQpIHsK KwkJaW5pdF93YWl0cXVldWVfZW50cnkoJndhaXQsIGN1cnJlbnQpOworCQlhZGRfd2FpdF9xdWV1 ZSgmZXAtPndxLCAmd2FpdCk7CisJCXRpbWVvdXQgPSBkdnAtPmVwX3RpbWVvdXQgPT0gLTEgfHwg ZHZwLT5lcF90aW1lb3V0ID4gTUFYX1NDSEVEVUxFX1RJTUVPVVQgLyBIWiA/CisJCQlNQVhfU0NI RURVTEVfVElNRU9VVDogKGR2cC0+ZXBfdGltZW91dCAqIEhaKSAvIDEwMDA7IAorCQlmb3IgKDs7 KSB7CisJCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOworCQkJaWYgKGVw LT5ldmVudGNudCB8fCAhdGltZW91dCkKKwkJCQlicmVhazsKKwkJCWlmIChzaWduYWxfcGVuZGlu ZyhjdXJyZW50KSkgeworCQkJCXJlcyA9IC1FSU5UUjsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJ d3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7CisJCQl0aW1lb3V0ID0g c2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KTsKKwkJCXdyaXRlX2xvY2tfaXJxc2F2ZSgmZXAtPmxv Y2ssIGZsYWdzKTsKKwkJfQorCQlyZW1vdmVfd2FpdF9xdWV1ZSgmZXAtPndxLCAmd2FpdCk7CisK KwkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKKwl9CisKKwlpZiAoIXJlcyAmJiBl cC0+ZXZlbnRjbnQpIHsKKwkJcmVzID0gZXAtPmV2ZW50Y250OworCQllcC0+ZXZlbnRjbnQgPSAw OworCQkrK2VwLT52ZXI7CisJCWlmIChlcC0+cGFnZXMgPT0gZXAtPnBhZ2VzMCkgeworCQkJZXAt PnBhZ2VzID0gZXAtPnBhZ2VzMTsKKwkJCWR2cC0+ZXBfcmVzb2ZmID0gMDsKKwkJfSBlbHNlIHsK KwkJCWVwLT5wYWdlcyA9IGVwLT5wYWdlczA7CisJCQlkdnAtPmVwX3Jlc29mZiA9IGVwLT5udW1w YWdlcyAqIFBBR0VfU0laRTsKKwkJfQorCX0KKworCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZl cC0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHJlczsKK30KKworCitzdGF0aWMgaW50IGVwX2Rv X2FsbG9jX3BhZ2VzKHN0cnVjdCBldmVudHBvbGwgKmVwLCBpbnQgbnVtcGFnZXMpCit7CisJaW50 IHJlcywgcGdhbGxvYywgcGdjcHk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwljaGFyICoqcGFn ZXMsICoqcGFnZXMwLCAqKnBhZ2VzMTsKKworCWlmIChhdG9taWNfcmVhZCgmZXAtPm1tYXBwZWQp KQorCQlyZXR1cm4gLUVCVVNZOworCWlmIChudW1wYWdlcyA+IE1BWF9FVkVOVFBPTExfUEFHRVMp CisJCXJldHVybiAtRUlOVkFMOworCisJcGdhbGxvYyA9IG51bXBhZ2VzIC0gZXAtPm51bXBhZ2Vz OworCWlmICgocGFnZXMgPSAoY2hhciAqKikgdm1hbGxvYygyICogKHBnYWxsb2MgKyAxKSAqIHNp emVvZihjaGFyICopKSkgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisJcGFnZXMwID0gJnBh Z2VzWzBdOworCXBhZ2VzMSA9ICZwYWdlc1twZ2FsbG9jICsgMV07CisKKwlpZiAoKHJlcyA9IGVw X2FsbG9jX3BhZ2VzKHBhZ2VzMCwgcGdhbGxvYykpKQorCQlnb3RvIGVleGl0XzE7CisKKwlpZiAo KHJlcyA9IGVwX2FsbG9jX3BhZ2VzKHBhZ2VzMSwgcGdhbGxvYykpKSB7CisJCWVwX2ZyZWVfcGFn ZXMocGFnZXMwLCBwZ2FsbG9jKTsKKwkJZ290byBlZXhpdF8xOworCX0KKworCXdyaXRlX2xvY2tf aXJxc2F2ZSgmZXAtPmxvY2ssIGZsYWdzKTsKKwlwZ2NweSA9IChlcC0+bnVtcGFnZXMgKyBwZ2Fs bG9jKSA+IG51bXBhZ2VzID8gbnVtcGFnZXMgLSBlcC0+bnVtcGFnZXM6IHBnYWxsb2M7CisJaWYg KHBnY3B5ID4gMCkgeworCQltZW1jcHkoJmVwLT5wYWdlczBbZXAtPm51bXBhZ2VzXSwgcGFnZXMw LCBwZ2NweSAqIHNpemVvZihjaGFyICopKTsKKwkJbWVtY3B5KCZlcC0+cGFnZXMxW2VwLT5udW1w YWdlc10sIHBhZ2VzMSwgcGdjcHkgKiBzaXplb2YoY2hhciAqKSk7CisJCWVwLT5udW1wYWdlcyAr PSBwZ2NweTsKKwl9CisJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7 CisKKwlpZiAocGdjcHkgPCBwZ2FsbG9jKSB7CisJCWlmIChwZ2NweSA8IDApCisJCQlwZ2NweSA9 IDA7CisJCWVwX2ZyZWVfcGFnZXMoJnBhZ2VzMFtwZ2NweV0sIHBnYWxsb2MgLSBwZ2NweSk7CisJ CWVwX2ZyZWVfcGFnZXMoJnBhZ2VzMVtwZ2NweV0sIHBnYWxsb2MgLSBwZ2NweSk7CisJfQorCitl ZXhpdF8xOgorCXZmcmVlKHBhZ2VzKTsKKwlyZXR1cm4gcmVzOworfQorCisKK3N0YXRpYyBpbnQg aW9jdGxfZXZlbnRwb2xsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAor CQkJCQkJICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJaW50IHJl czsKKwlzdHJ1Y3QgZXZlbnRwb2xsICplcCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qg ZXBpdGVtICpkcGk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgcG9sbGZkIHBmZDsK KwlzdHJ1Y3QgZXZwb2xsIGR2cDsKKworCXN3aXRjaCAoY21kKSB7CisJY2FzZSBFUF9BTExPQzoK KwkJcmVzID0gZXBfZG9fYWxsb2NfcGFnZXMoZXAsIEVQX0ZEU19QQUdFUyhhcmcpKTsKKworCQlE TlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogaW9jdGwoJXAsIEVQX0FMTE9D LCAlbHUpID09ICVkXG4iLAorCQkJCQkgY3VycmVudCwgZXAsIGFyZywgcmVzKSk7CisJCXJldHVy biByZXM7CisKKwljYXNlIEVQX0ZSRUU6CisJCWlmIChhdG9taWNfcmVhZCgmZXAtPm1tYXBwZWQp KQorCQkJcmV0dXJuIC1FQlVTWTsKKworCQlyZXMgPSAtRUlOVkFMOworCQl3cml0ZV9sb2NrX2ly cXNhdmUoJmVwLT5sb2NrLCBmbGFncyk7CisJCWlmIChlcC0+bnVtcGFnZXMgPiAwKSB7CisJCQll cF9mcmVlX3BhZ2VzKGVwLT5wYWdlczAsIGVwLT5udW1wYWdlcyk7CisJCQllcF9mcmVlX3BhZ2Vz KGVwLT5wYWdlczEsIGVwLT5udW1wYWdlcyk7CisJCQllcC0+bnVtcGFnZXMgPSAwOworCQkJZXAt PnBhZ2VzID0gZXAtPnBhZ2VzMDsKKwkJCXJlcyA9IDA7CisJCX0KKwkJd3JpdGVfdW5sb2NrX2ly cXJlc3RvcmUoJmVwLT5sb2NrLCBmbGFncyk7CisKKwkJRE5QUklOVEsoMywgKEtFUk5fSU5GTyAi WyVwXSBldmVudHBvbGw6IGlvY3RsKCVwLCBFUF9GUkVFKSA9PSAlZFxuIiwKKwkJCQkJIGN1cnJl bnQsIGVwLCByZXMpKTsKKwkJcmV0dXJuIHJlczsKKworCWNhc2UgRVBfUE9MTDoKKwkJaWYgKGNv cHlfZnJvbV91c2VyKCZkdnAsICh2b2lkICopIGFyZywgc2l6ZW9mKHN0cnVjdCBldnBvbGwpKSkK KwkJCXJldHVybiAtRUZBVUxUOworCisJCUROUFJJTlRLKDMsIChLRVJOX0lORk8gIlslcF0gZXZl bnRwb2xsOiBpb2N0bCglcCwgRVBfUE9MTCwgJWQpXG4iLAorCQkJCQkgY3VycmVudCwgZXAsIGR2 cC5lcF90aW1lb3V0KSk7CisKKwkJcmVzID0gZXBfcG9sbChlcCwgJmR2cCk7CisKKwkJRE5QUklO VEsoMywgKEtFUk5fSU5GTyAiWyVwXSBldmVudHBvbGw6IGlvY3RsKCVwLCBFUF9QT0xMLCAlZCkg PT0gJWRcbiIsCisJCQkJCSBjdXJyZW50LCBlcCwgZHZwLmVwX3RpbWVvdXQsIHJlcykpOworCisJ CWlmIChyZXMgPiAwICYmIGNvcHlfdG9fdXNlcigodm9pZCAqKSBhcmcsICZkdnAsIHNpemVvZihz dHJ1Y3QgZXZwb2xsKSkpCisJCQlyZXMgPSAtRUZBVUxUOworCisJCXJldHVybiByZXM7CisKKwlj YXNlIEVQX0lTUE9MTEVEOgorCQlpZiAoY29weV9mcm9tX3VzZXIoJnBmZCwgKHZvaWQgKikgYXJn LCBzaXplb2Yoc3RydWN0IHBvbGxmZCkpKQorCQkJcmV0dXJuIDA7CisKKwkJcmVhZF9sb2NrX2ly cXNhdmUoJmVwLT5sb2NrLCBmbGFncyk7CisKKwkJcmVzID0gMDsKKwkJaWYgKCEoZHBpID0gZXBf ZmluZF9ubChlcCwgcGZkLmZkKSkpCisJCQlnb3RvIGlzX25vdF9wb2xsZWQ7CisKKwkJcGZkID0g ZHBpLT5wZmQ7CisJCXJlcyA9IDE7CisKKwlpc19ub3RfcG9sbGVkOgorCQlyZWFkX3VubG9ja19p cnFyZXN0b3JlKCZlcC0+bG9jaywgZmxhZ3MpOworCisJCWlmIChyZXMpCisJCQljb3B5X3RvX3Vz ZXIoKHZvaWQgKikgYXJnLCAmcGZkLCBzaXplb2Yoc3RydWN0IHBvbGxmZCkpOworCisJCUROUFJJ TlRLKDMsIChLRVJOX0lORk8gIlslcF0gZXZlbnRwb2xsOiBpb2N0bCglcCwgRVBfSVNQT0xMRUQs ICVkKSA9PSAlZFxuIiwKKwkJCQkJIGN1cnJlbnQsIGVwLCBwZmQuZmQsIHJlcykpOworCQlyZXR1 cm4gcmVzOworCX0KKworCXJldHVybiAtRUlOVkFMOworfQorCisKK3N0YXRpYyB2b2lkIGV2ZW50 cG9sbF9tbV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSkKK3sKKwlzdHJ1Y3QgZmls ZSAqZmlsZSA9IHZtYS0+dm1fZmlsZTsKKwlzdHJ1Y3QgZXZlbnRwb2xsICplcCA9IGZpbGUtPnBy aXZhdGVfZGF0YTsKKworCWlmIChlcCkgYXRvbWljX2luYygmZXAtPm1tYXBwZWQpOworCisJRE5Q UklOVEsoMywgKEtFUk5fSU5GTyAiWyVwXSBldmVudHBvbGw6IG1tX29wZW4oJXApXG4iLCBjdXJy ZW50LCBlcCkpOworfQorCisKK3N0YXRpYyB2b2lkIGV2ZW50cG9sbF9tbV9jbG9zZShzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKiB2bWEpCit7CisJc3RydWN0IGZpbGUgKmZpbGUgPSB2bWEtPnZtX2Zp bGU7CisJc3RydWN0IGV2ZW50cG9sbCAqZXAgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlpZiAo ZXAgJiYgYXRvbWljX2RlY19hbmRfdGVzdCgmZXAtPm1tYXBwZWQpKQorCQllcC0+dm1hYmFzZSA9 IDA7CisKKwlETlBSSU5USygzLCAoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogbW1fY2xvc2Uo JXApXG4iLCBjdXJyZW50LCBlcCkpOworfQorCisKK3N0YXRpYyBpbnQgbW1hcF9ldmVudHBvbGwo c3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVj dCBldmVudHBvbGwgKmVwID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXVuc2lnbmVkIGxvbmcgc3Rh cnQ7CisJaW50IGlpLCByZXMsIG51bXBhZ2VzOworCXNpemVfdCBtYXBzaXplOworCisJRE5QUklO VEsoMywgKEtFUk5fSU5GTyAiWyVwXSBldmVudHBvbGw6IG1tYXAoJXAsICVseCwgJWx4KVxuIiwK KwkJCQkgY3VycmVudCwgZXAsIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fcGdvZmYgPDwgUEFHRV9T SElGVCkpOworCisJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9XUklURSkKKwkJcmV0dXJuIC1FQUND RVM7CisJaWYgKCh2bWEtPnZtX3Bnb2ZmIDw8IFBBR0VfU0hJRlQpICE9IDApCisJCXJldHVybiAt RUlOVkFMOworCisJbWFwc2l6ZSA9IFBBR0VfQUxJR04odm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0 YXJ0KTsKKwludW1wYWdlcyA9IG1hcHNpemUgPj4gUEFHRV9TSElGVDsKKworCXJlcyA9IC1FSU5W QUw7CisJaWYgKG51bXBhZ2VzICE9ICgyICogZXAtPm51bXBhZ2VzKSkKKwkJZ290byBlZXhpdF8x OworCisJc3RhcnQgPSB2bWEtPnZtX3N0YXJ0OworCWZvciAoaWkgPSAwOyBpaSA8IGVwLT5udW1w YWdlczsgaWkrKykgeworCQlpZiAoKHJlcyA9IHJlbWFwX3BhZ2VfcmFuZ2Uodm1hLCBzdGFydCwg X19wYShlcC0+cGFnZXMwW2lpXSksCisJCQkJCQkJCQlQQUdFX1NJWkUsIHZtYS0+dm1fcGFnZV9w cm90KSkpCisgICAgCQlnb3RvIGVleGl0XzE7CisJCXN0YXJ0ICs9IFBBR0VfU0laRTsKKwl9CisJ Zm9yIChpaSA9IDA7IGlpIDwgZXAtPm51bXBhZ2VzOyBpaSsrKSB7CisJCWlmICgocmVzID0gcmVt YXBfcGFnZV9yYW5nZSh2bWEsIHN0YXJ0LCBfX3BhKGVwLT5wYWdlczFbaWldKSwKKwkJCQkJCQkJ CVBBR0VfU0laRSwgdm1hLT52bV9wYWdlX3Byb3QpKSkKKyAgICAJCWdvdG8gZWV4aXRfMTsKKwkJ c3RhcnQgKz0gUEFHRV9TSVpFOworCX0KKwl2bWEtPnZtX29wcyA9ICZldmVudHBvbGxfbW1hcF9v cHM7CisJZXAtPnZtYWJhc2UgPSB2bWEtPnZtX3N0YXJ0OworCWF0b21pY19zZXQoJmVwLT5tbWFw cGVkLCAxKTsKKwlyZXMgPSAwOworZWV4aXRfMToKKworCUROUFJJTlRLKDMsIChLRVJOX0lORk8g IlslcF0gZXZlbnRwb2xsOiBtbWFwKCVwLCAlbHgsICVseCkgPT0gJWRcbiIsCisJCQkJIGN1cnJl bnQsIGVwLCB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX3Bnb2ZmIDw8IFBBR0VfU0hJRlQsIHJlcykp OworCXJldHVybiByZXM7Cit9CisKKworc3RhdGljIGludCBldmVudHBvbGxmc19kZWxldGVfZGVu dHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKK3sKKworCXJldHVybiAxOworfQorCisKK3N0YXRp YyBzdHJ1Y3QgaW5vZGUgKmdldF9ldmVudHBvbGxfaW5vZGUodm9pZCkKK3sKKwlpbnQgZXJyb3Ig PSAtRU5PTUVNOworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBuZXdfaW5vZGUoZXZlbnRwb2xsX21u dC0+bW50X3NiKTsKKworCWlmICghaW5vZGUpCisJCWdvdG8gZWV4aXRfMTsKKworCWlub2RlLT5p X2ZvcCA9ICZldmVudHBvbGxfZm9wczsKKworCS8qCisJICogTWFyayB0aGUgaW5vZGUgZGlydHkg ZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmcsCisJICogdGhhdCB3YXkgaXQgd2lsbCBuZXZlciBiZSBt b3ZlZCB0byB0aGUgZGlydHkKKwkgKiBsaXN0IGJlY2F1c2UgIm1hcmtfaW5vZGVfZGlydHkoKSIg d2lsbCB0aGluaworCSAqIHRoYXQgaXQgYWxyZWFkeSBfaXNfIG9uIHRoZSBkaXJ0eSBsaXN0Lgor CSAqLworCWlub2RlLT5pX3N0YXRlID0gSV9ESVJUWTsKKwlpbm9kZS0+aV9tb2RlID0gU19JUlVT UiB8IFNfSVdVU1I7CisJaW5vZGUtPmlfdWlkID0gY3VycmVudC0+ZnN1aWQ7CisJaW5vZGUtPmlf Z2lkID0gY3VycmVudC0+ZnNnaWQ7CisJaW5vZGUtPmlfYXRpbWUgPSBpbm9kZS0+aV9tdGltZSA9 IGlub2RlLT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FOworCWlub2RlLT5pX2Jsa3NpemUgPSBQQUdF X1NJWkU7CisJcmV0dXJuIGlub2RlOworCitlZXhpdF8xOgorCXJldHVybiBFUlJfUFRSKGVycm9y KTsKK30KKworCitzdGF0aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpldmVudHBvbGxmc19nZXRfc2Io c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQkJCQkJCQkJCSAgaW50IGZsYWdz LCBjaGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKK3sKKworCXJldHVybiBnZXRfc2JfcHNldWRv KGZzX3R5cGUsICJldmVudHBvbGw6IiwgTlVMTCwgRVZFTlRQT0xMRlNfTUFHSUMpOworfQorCisK K3N0YXRpYyBpbnQgX19pbml0IGV2ZW50cG9sbF9pbml0KHZvaWQpCit7CisJaW50IGVycm9yOwor CisJZXJyb3IgPSAtRU5PTUVNOworCWRwaV9jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJldmVu dHBvbGwiLAorCQkJCQkJCQkgIHNpemVvZihzdHJ1Y3QgZXBpdGVtKSwKKwkJCQkJCQkJICBfX2Fs aWdub2ZfXyhzdHJ1Y3QgZXBpdGVtKSwKKwkJCQkJCQkJICBEUElfU0xBQl9ERUJVRywgTlVMTCwg TlVMTCk7CisJaWYgKCFkcGlfY2FjaGUpCisJCWdvdG8gZWV4aXRfMTsKKworCWVycm9yID0gcmVn aXN0ZXJfZmlsZXN5c3RlbSgmZXZlbnRwb2xsX2ZzX3R5cGUpOworCWlmIChlcnJvcikKKwkJZ290 byBlZXhpdF8yOworCisJZXZlbnRwb2xsX21udCA9IGtlcm5fbW91bnQoJmV2ZW50cG9sbF9mc190 eXBlKTsKKwllcnJvciA9IFBUUl9FUlIoZXZlbnRwb2xsX21udCk7CisJaWYgKElTX0VSUihldmVu dHBvbGxfbW50KSkKKwkJZ290byBlZXhpdF8zOworCisJZXJyb3IgPSBtaXNjX3JlZ2lzdGVyKCZl dmVudHBvbGxfbWlzY2Rldik7CisJaWYgKGVycm9yKQorCQlnb3RvIGVleGl0XzQ7CisKKwlwcmlu dGsoS0VSTl9JTkZPICJbJXBdIGV2ZW50cG9sbDogZHJpdmVyIGluc3RhbGxlZC5cbiIsIGN1cnJl bnQpOworCisJcmV0dXJuIGVycm9yOworCitlZXhpdF80OgorCW1udHB1dChldmVudHBvbGxfbW50 KTsKK2VleGl0XzM6CisJdW5yZWdpc3Rlcl9maWxlc3lzdGVtKCZldmVudHBvbGxfZnNfdHlwZSk7 CitlZXhpdF8yOgorCWttZW1fY2FjaGVfZGVzdHJveShkcGlfY2FjaGUpOworZWV4aXRfMToKKwor CXJldHVybiBlcnJvcjsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGV2ZW50cG9sbF9leGl0KHZv aWQpCit7CisJdW5yZWdpc3Rlcl9maWxlc3lzdGVtKCZldmVudHBvbGxfZnNfdHlwZSk7CisJbW50 cHV0KGV2ZW50cG9sbF9tbnQpOworCW1pc2NfZGVyZWdpc3RlcigmZXZlbnRwb2xsX21pc2NkZXYp OworCWttZW1fY2FjaGVfZGVzdHJveShkcGlfY2FjaGUpOworfQorCittb2R1bGVfaW5pdChldmVu dHBvbGxfaW5pdCk7Cittb2R1bGVfZXhpdChldmVudHBvbGxfZXhpdCk7CisKK01PRFVMRV9MSUNF TlNFKCJHUEwiKTsKKworCmRpZmYgLU5ydSBsaW51eC0yLjUuNDQudmFuaWxsYS9mcy9NYWtlZmls ZSBsaW51eC0yLjUuNDQuZXBvbGwvZnMvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNS40NC52YW5pbGxh L2ZzL01ha2VmaWxlCUZyaSBPY3QgMTggMjE6MDE6NTcgMjAwMgorKysgbGludXgtMi41LjQ0LmVw b2xsL2ZzL01ha2VmaWxlCVNhdCBPY3QgMTkgMTI6MDU6NDggMjAwMgpAQCAtNiwxNCArNiwxNCBA QAogIyAKIAogZXhwb3J0LW9ianMgOj0Jb3Blbi5vIGRjYWNoZS5vIGJ1ZmZlci5vIGJpby5vIGlu b2RlLm8gZHF1b3QubyBtcGFnZS5vIGFpby5vIFwKLSAgICAgICAgICAgICAgICBmY250bC5vIHJl YWRfd3JpdGUubyBkY29va2llcy5vCisgICAgICAgICAgICAgICAgZmNudGwubyByZWFkX3dyaXRl Lm8gZGNvb2tpZXMubyBmY2JsaXN0Lm8KIAogb2JqLXkgOj0Jb3Blbi5vIHJlYWRfd3JpdGUubyBk ZXZpY2VzLm8gZmlsZV90YWJsZS5vIGJ1ZmZlci5vIFwKIAkJYmlvLm8gc3VwZXIubyBibG9ja19k ZXYubyBjaGFyX2Rldi5vIHN0YXQubyBleGVjLm8gcGlwZS5vIFwKIAkJbmFtZWkubyBmY250bC5v IGlvY3RsLm8gcmVhZGRpci5vIHNlbGVjdC5vIGZpZm8ubyBsb2Nrcy5vIFwKIAkJZGNhY2hlLm8g aW5vZGUubyBhdHRyLm8gYmFkX2lub2RlLm8gZmlsZS5vIGRub3RpZnkubyBcCiAJCWZpbGVzeXN0 ZW1zLm8gbmFtZXNwYWNlLm8gc2VxX2ZpbGUubyB4YXR0ci5vIGxpYmZzLm8gXAotCQlmcy13cml0 ZWJhY2subyBtcGFnZS5vIGRpcmVjdC1pby5vIGFpby5vCisJCWZzLXdyaXRlYmFjay5vIG1wYWdl Lm8gZGlyZWN0LWlvLm8gYWlvLm8gZmNibGlzdC5vCiAKIGlmbmVxICgkKENPTkZJR19ORlNEKSxu KQogaWZuZXEgKCQoQ09ORklHX05GU0QpLCkKZGlmZiAtTnJ1IGxpbnV4LTIuNS40NC52YW5pbGxh L2ZzL2ZjYmxpc3QuYyBsaW51eC0yLjUuNDQuZXBvbGwvZnMvZmNibGlzdC5jCi0tLSBsaW51eC0y LjUuNDQudmFuaWxsYS9mcy9mY2JsaXN0LmMJV2VkIERlYyAzMSAxNjowMDowMCAxOTY5CisrKyBs aW51eC0yLjUuNDQuZXBvbGwvZnMvZmNibGlzdC5jCVN1biBPY3QgMjcgMTU6MjM6MDcgMjAwMgpA QCAtMCwwICsxLDEzNSBAQAorLyoKKyAqICBsaW51eC9mcy9mY2JsaXN0LmMgKCBGaWxlIGV2ZW50 IGNhbGxiYWNrcyBoYW5kbGluZyApCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxLC4uLiwyMDAyICBE YXZpZGUgTGliZW56aQorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq ICBEYXZpZGUgTGliZW56aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+CisgKgorICovCisKKyNp bmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNs dWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgv c2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdm1hbGxv Yy5oPgorI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRlIDxhc20vYml0b3BzLmg+Cisj aW5jbHVkZSA8bGludXgvZmNibGlzdC5oPgorCisKK2xvbmcgaW9uX2JhbmRfdGFibGVbTlNJR1BP TExdID0geworCUlPTl9JTiwJCS8qIFBPTExfSU4gKi8KKwlJT05fT1VULAkvKiBQT0xMX09VVCAq LworCUlPTl9JTiwJCS8qIFBPTExfTVNHICovCisJSU9OX0VSUiwJLyogUE9MTF9FUlIgKi8KKwkw LAkJCS8qIFBPTExfUFJJICovCisJSU9OX0hVUAkJLyogUE9MTF9IVVAgKi8KK307CitFWFBPUlRf U1lNQk9MKGlvbl9iYW5kX3RhYmxlKTsKKworbG9uZyBwb2xsX2JhbmRfdGFibGVbTlNJR1BPTExd ID0geworCVBPTExJTiB8IFBPTExSRE5PUk0sCQkJLyogUE9MTF9JTiAqLworCVBPTExPVVQgfCBQ T0xMV1JOT1JNIHwgUE9MTFdSQkFORCwJLyogUE9MTF9PVVQgKi8KKwlQT0xMSU4gfCBQT0xMUkRO T1JNIHwgUE9MTE1TRywJCS8qIFBPTExfTVNHICovCisJUE9MTEVSUiwJCQkJLyogUE9MTF9FUlIg Ki8KKwlQT0xMUFJJIHwgUE9MTFJEQkFORCwJCQkvKiBQT0xMX1BSSSAqLworCVBPTExIVVAgfCBQ T0xMRVJSCQkJLyogUE9MTF9IVVAgKi8KK307CitFWFBPUlRfU1lNQk9MKHBvbGxfYmFuZF90YWJs ZSk7CisKKwordm9pZCBmaWxlX25vdGlmeV9ldmVudChzdHJ1Y3QgZmlsZSAqZmlsZXAsIGxvbmcg KmV2ZW50KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGxpc3RfaGVhZCAqbG5r LCAqbHN0aGVhZDsKKworCWZjYmxpc3RfcmVhZF9sb2NrKGZpbGVwLCBmbGFncyk7CisKKwlsc3Ro ZWFkID0gJmZpbGVwLT5mX2NibGlzdDsKKwlsaXN0X2Zvcl9lYWNoKGxuaywgbHN0aGVhZCkgewor CQlzdHJ1Y3QgZmNiX3N0cnVjdCAqZmNicCA9IGxpc3RfZW50cnkobG5rLCBzdHJ1Y3QgZmNiX3N0 cnVjdCwgbGxpbmspOworCisJCWZjYnAtPmNicHJvYyhmaWxlcCwgZmNicC0+ZGF0YSwgZmNicC0+ bG9jYWwsIGV2ZW50KTsKKwl9CisKKwlmY2JsaXN0X3JlYWRfdW5sb2NrKGZpbGVwLCBmbGFncyk7 Cit9CitFWFBPUlRfU1lNQk9MKGZpbGVfbm90aWZ5X2V2ZW50KTsKKworCitpbnQgZmlsZV9ub3Rp ZnlfYWRkY2Ioc3RydWN0IGZpbGUgKmZpbGVwLAorCQkJCQkgIHZvaWQgKCpjYnByb2MpKHN0cnVj dCBmaWxlICosIHZvaWQgKiwgdW5zaWduZWQgbG9uZyAqLCBsb25nICopLCB2b2lkICpkYXRhKQor eworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGZjYl9zdHJ1Y3QgKmZjYnA7CisKKwlp ZiAoIShmY2JwID0gKHN0cnVjdCBmY2Jfc3RydWN0ICopIGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBm Y2Jfc3RydWN0KSwgR0ZQX0tFUk5FTCkpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1lbXNldChm Y2JwLCAwLCBzaXplb2Yoc3RydWN0IGZjYl9zdHJ1Y3QpKTsKKwlmY2JwLT5jYnByb2MgPSBjYnBy b2M7CisJZmNicC0+ZGF0YSA9IGRhdGE7CisKKwlmY2JsaXN0X3dyaXRlX2xvY2soZmlsZXAsIGZs YWdzKTsKKwlsaXN0X2FkZF90YWlsKCZmY2JwLT5sbGluaywgJmZpbGVwLT5mX2NibGlzdCk7CisJ ZmNibGlzdF93cml0ZV91bmxvY2soZmlsZXAsIGZsYWdzKTsKKworCXJldHVybiAwOworfQorRVhQ T1JUX1NZTUJPTChmaWxlX25vdGlmeV9hZGRjYik7CisKKworaW50IGZpbGVfbm90aWZ5X2RlbGNi KHN0cnVjdCBmaWxlICpmaWxlcCwKKwkJCQkJICB2b2lkICgqY2Jwcm9jKShzdHJ1Y3QgZmlsZSAq LCB2b2lkICosIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKSkKK3sKKwl1bnNpZ25lZCBsb25nIGZs YWdzOworCXN0cnVjdCBsaXN0X2hlYWQgKmxuaywgKmxzdGhlYWQ7CisKKwlmY2JsaXN0X3dyaXRl X2xvY2soZmlsZXAsIGZsYWdzKTsKKworCWxzdGhlYWQgPSAmZmlsZXAtPmZfY2JsaXN0OworCWxp c3RfZm9yX2VhY2gobG5rLCBsc3RoZWFkKSB7CisJCXN0cnVjdCBmY2Jfc3RydWN0ICpmY2JwID0g bGlzdF9lbnRyeShsbmssIHN0cnVjdCBmY2Jfc3RydWN0LCBsbGluayk7CisKKwkJaWYgKGZjYnAt PmNicHJvYyA9PSBjYnByb2MpIHsKKwkJCWxpc3RfZGVsKGxuayk7CisJCQlmY2JsaXN0X3dyaXRl X3VubG9jayhmaWxlcCwgZmxhZ3MpOworCQkJa2ZyZWUoZmNicCk7CisJCQlyZXR1cm4gMDsKKwkJ fQorCX0KKworCWZjYmxpc3Rfd3JpdGVfdW5sb2NrKGZpbGVwLCBmbGFncyk7CisKKwlyZXR1cm4g LUVOT0VOVDsKK30KK0VYUE9SVF9TWU1CT0woZmlsZV9ub3RpZnlfZGVsY2IpOworCisKK3ZvaWQg ZmlsZV9ub3RpZnlfY2xlYW51cChzdHJ1Y3QgZmlsZSAqZmlsZXApCit7CisJdW5zaWduZWQgbG9u ZyBmbGFnczsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsbmssICpsc3RoZWFkOworCisJZmNibGlzdF93 cml0ZV9sb2NrKGZpbGVwLCBmbGFncyk7CisKKwlsc3RoZWFkID0gJmZpbGVwLT5mX2NibGlzdDsK Kwl3aGlsZSAoKGxuayA9IGxpc3RfZmlyc3QobHN0aGVhZCkpKSB7CisJCXN0cnVjdCBmY2Jfc3Ry dWN0ICpmY2JwID0gbGlzdF9lbnRyeShsbmssIHN0cnVjdCBmY2Jfc3RydWN0LCBsbGluayk7CisK KwkJbGlzdF9kZWwobG5rKTsKKwkJZmNibGlzdF93cml0ZV91bmxvY2soZmlsZXAsIGZsYWdzKTsK KwkJa2ZyZWUoZmNicCk7CisJCWZjYmxpc3Rfd3JpdGVfbG9jayhmaWxlcCwgZmxhZ3MpOworCX0K KworCWZjYmxpc3Rfd3JpdGVfdW5sb2NrKGZpbGVwLCBmbGFncyk7Cit9CitFWFBPUlRfU1lNQk9M KGZpbGVfbm90aWZ5X2NsZWFudXApOworCmRpZmYgLU5ydSBsaW51eC0yLjUuNDQudmFuaWxsYS9m cy9maWxlX3RhYmxlLmMgbGludXgtMi41LjQ0LmVwb2xsL2ZzL2ZpbGVfdGFibGUuYwotLS0gbGlu dXgtMi41LjQ0LnZhbmlsbGEvZnMvZmlsZV90YWJsZS5jCUZyaSBPY3QgMTggMjE6MDE6MDggMjAw MgorKysgbGludXgtMi41LjQ0LmVwb2xsL2ZzL2ZpbGVfdGFibGUuYwlTYXQgT2N0IDE5IDEyOjAx OjMzIDIwMDIKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiAjaW5j bHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KKyNpbmNsdWRlIDxs aW51eC9mY2JsaXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CkBAIC01OCw2ICs1OSw3IEBA CiAJCWYtPmZfZ2lkID0gY3VycmVudC0+ZnNnaWQ7CiAJCWYtPmZfb3duZXIubG9jayA9IFJXX0xP Q0tfVU5MT0NLRUQ7CiAJCWxpc3RfYWRkKCZmLT5mX2xpc3QsICZhbm9uX2xpc3QpOworCQlmaWxl X25vdGlmeV9pbml0KGYpOwogCQlmaWxlX2xpc3RfdW5sb2NrKCk7CiAJCXJldHVybiBmOwogCX0K QEAgLTEwMiw2ICsxMDQsNyBAQAogCWZpbHAtPmZfdWlkICAgID0gY3VycmVudC0+ZnN1aWQ7CiAJ ZmlscC0+Zl9naWQgICAgPSBjdXJyZW50LT5mc2dpZDsKIAlmaWxwLT5mX29wICAgICA9IGRlbnRy eS0+ZF9pbm9kZS0+aV9mb3A7CisJZmlsZV9ub3RpZnlfaW5pdChmaWxwKTsKIAlpZiAoZmlscC0+ Zl9vcC0+b3BlbikKIAkJcmV0dXJuIGZpbHAtPmZfb3AtPm9wZW4oZGVudHJ5LT5kX2lub2RlLCBm aWxwKTsKIAllbHNlCkBAIC0xMjMsNiArMTI2LDcgQEAKIAlzdHJ1Y3QgdmZzbW91bnQgKiBtbnQg PSBmaWxlLT5mX3Zmc21udDsKIAlzdHJ1Y3QgaW5vZGUgKiBpbm9kZSA9IGRlbnRyeS0+ZF9pbm9k ZTsKIAorCWZpbGVfbm90aWZ5X2NsZWFudXAoZmlsZSk7CiAJbG9ja3NfcmVtb3ZlX2Zsb2NrKGZp bGUpOwogCiAJaWYgKGZpbGUtPmZfb3AgJiYgZmlsZS0+Zl9vcC0+cmVsZWFzZSkKZGlmZiAtTnJ1 IGxpbnV4LTIuNS40NC52YW5pbGxhL2ZzL3BpcGUuYyBsaW51eC0yLjUuNDQuZXBvbGwvZnMvcGlw ZS5jCi0tLSBsaW51eC0yLjUuNDQudmFuaWxsYS9mcy9waXBlLmMJRnJpIE9jdCAxOCAyMTowMTo1 NiAyMDAyCisrKyBsaW51eC0yLjUuNDQuZXBvbGwvZnMvcGlwZS5jCVNhdCBPY3QgMTkgMTI6MzI6 MzQgMjAwMgpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxp bnV4L2ZjYmxpc3QuaD4KIAogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8YXNt L2lvY3Rscy5oPgpAQCAtNDcsNyArNDgsNyBAQAogcGlwZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxw LCBjaGFyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQogewogCXN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxwLT5mX2RlbnRyeS0+ZF9pbm9kZTsKLQlpbnQgZG9fd2FrZXVwOworCWlu dCBkb193YWtldXAsIHBmdWxsOwogCXNzaXplX3QgcmV0OwogCiAJLyogcHJlYWQgaXMgbm90IGFs bG93ZWQgb24gcGlwZXMuICovCkBAIC02Myw2ICs2NCw3IEBACiAJZG93bihQSVBFX1NFTSgqaW5v ZGUpKTsKIAlmb3IgKDs7KSB7CiAJCWludCBzaXplID0gUElQRV9MRU4oKmlub2RlKTsKKwkJcGZ1 bGwgPSBQSVBFX0ZVTEwoKmlub2RlKTsKIAkJaWYgKHNpemUpIHsKIAkJCWNoYXIgKnBpcGVidWYg PSBQSVBFX0JBU0UoKmlub2RlKSArIFBJUEVfU1RBUlQoKmlub2RlKTsKIAkJCXNzaXplX3QgY2hh cnMgPSBQSVBFX01BWF9SQ0hVTksoKmlub2RlKTsKQEAgLTEwOCwxMiArMTEwLDE4IEBACiAJCQlp ZiAoIXJldCkgcmV0ID0gLUVSRVNUQVJUU1lTOwogCQkJYnJlYWs7CiAJCX0KKwkJLyogU2VuZCBu b3RpZmljYXRpb24gbWVzc2FnZSAqLworCQlpZiAocGZ1bGwgJiYgIVBJUEVfRlVMTCgqaW5vZGUp ICYmIFBJUEVfV1JJVEVGSUxFKCppbm9kZSkpCisJCQlmaWxlX3NlbmRfbm90aWZ5KFBJUEVfV1JJ VEVGSUxFKCppbm9kZSksIElPTl9PVVQsIFBPTExPVVQgfCBQT0xMV1JOT1JNIHwgUE9MTFdSQkFO RCk7CiAJCWlmIChkb193YWtldXApIHsKIAkJCXdha2VfdXBfaW50ZXJydXB0aWJsZShQSVBFX1dB SVQoKmlub2RlKSk7CiAgCQkJa2lsbF9mYXN5bmMoUElQRV9GQVNZTkNfV1JJVEVSUygqaW5vZGUp LCBTSUdJTywgUE9MTF9PVVQpOwogCQl9CiAJCXBpcGVfd2FpdChpbm9kZSk7CiAJfQorCS8qIFNl bmQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgKi8KKwlpZiAocGZ1bGwgJiYgIVBJUEVfRlVMTCgqaW5v ZGUpICYmIFBJUEVfV1JJVEVGSUxFKCppbm9kZSkpCisJCWZpbGVfc2VuZF9ub3RpZnkoUElQRV9X UklURUZJTEUoKmlub2RlKSwgSU9OX09VVCwgUE9MTE9VVCB8IFBPTExXUk5PUk0gfCBQT0xMV1JC QU5EKTsKIAl1cChQSVBFX1NFTSgqaW5vZGUpKTsKIAkvKiBTaWduYWwgd3JpdGVycyBhc3luY2hy b25vdXNseSB0aGF0IHRoZXJlIGlzIG1vcmUgcm9vbS4gICovCiAJaWYgKGRvX3dha2V1cCkgewpA QCAtMTMxLDcgKzEzOSw3IEBACiAJc3RydWN0IGlub2RlICppbm9kZSA9IGZpbHAtPmZfZGVudHJ5 LT5kX2lub2RlOwogCXNzaXplX3QgcmV0OwogCXNpemVfdCBtaW47Ci0JaW50IGRvX3dha2V1cDsK KwlpbnQgZG9fd2FrZXVwLCBwZW1wdHk7CiAKIAkvKiBwd3JpdGUgaXMgbm90IGFsbG93ZWQgb24g cGlwZXMuICovCiAJaWYgKHVubGlrZWx5KHBwb3MgIT0gJmZpbHAtPmZfcG9zKSkKQEAgLTE0OSw2 ICsxNTcsNyBAQAogCWRvd24oUElQRV9TRU0oKmlub2RlKSk7CiAJZm9yICg7OykgewogCQlpbnQg ZnJlZTsKKwkJcGVtcHR5ID0gUElQRV9FTVBUWSgqaW5vZGUpOwogCQlpZiAoIVBJUEVfUkVBREVS UygqaW5vZGUpKSB7CiAJCQlzZW5kX3NpZyhTSUdQSVBFLCBjdXJyZW50LCAwKTsKIAkJCWlmICgh cmV0KSByZXQgPSAtRVBJUEU7CkBAIC0xOTQsNiArMjAzLDkgQEAKIAkJCWlmICghcmV0KSByZXQg PSAtRVJFU1RBUlRTWVM7CiAJCQlicmVhazsKIAkJfQorCQkvKiBTZW5kIG5vdGlmaWNhdGlvbiBt ZXNzYWdlICovCisJCWlmIChwZW1wdHkgJiYgIVBJUEVfRU1QVFkoKmlub2RlKSAmJiBQSVBFX1JF QURGSUxFKCppbm9kZSkpCisJCQlmaWxlX3NlbmRfbm90aWZ5KFBJUEVfUkVBREZJTEUoKmlub2Rl KSwgSU9OX0lOLCBQT0xMSU4gfCBQT0xMUkROT1JNKTsKIAkJaWYgKGRvX3dha2V1cCkgewogCQkJ d2FrZV91cF9pbnRlcnJ1cHRpYmxlX3N5bmMoUElQRV9XQUlUKCppbm9kZSkpOwogCQkJa2lsbF9m YXN5bmMoUElQRV9GQVNZTkNfUkVBREVSUygqaW5vZGUpLCBTSUdJTywgUE9MTF9JTik7CkBAIC0y MDMsNiArMjE1LDkgQEAKIAkJcGlwZV93YWl0KGlub2RlKTsKIAkJUElQRV9XQUlUSU5HX1dSSVRF UlMoKmlub2RlKS0tOwogCX0KKwkvKiBTZW5kIG5vdGlmaWNhdGlvbiBtZXNzYWdlICovCisJaWYg KHBlbXB0eSAmJiAhUElQRV9FTVBUWSgqaW5vZGUpICYmIFBJUEVfUkVBREZJTEUoKmlub2RlKSkK KwkJZmlsZV9zZW5kX25vdGlmeShQSVBFX1JFQURGSUxFKCppbm9kZSksIElPTl9JTiwgUE9MTElO IHwgUE9MTFJETk9STSk7CiAJdXAoUElQRV9TRU0oKmlub2RlKSk7CiAJaWYgKGRvX3dha2V1cCkg ewogCQl3YWtlX3VwX2ludGVycnVwdGlibGUoUElQRV9XQUlUKCppbm9kZSkpOwpAQCAtMjY2LDkg KzI4MSwyMiBAQAogc3RhdGljIGludAogcGlwZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCBkZWNyLCBpbnQgZGVjdykKIHsKKwlzdHJ1Y3QgZmlsZSAqcmRmaWxlLCAqd3JmaWxlOwog CWRvd24oUElQRV9TRU0oKmlub2RlKSk7CiAJUElQRV9SRUFERVJTKCppbm9kZSkgLT0gZGVjcjsK IAlQSVBFX1dSSVRFUlMoKmlub2RlKSAtPSBkZWN3OworCXJkZmlsZSA9IFBJUEVfUkVBREZJTEUo Kmlub2RlKTsKKwl3cmZpbGUgPSBQSVBFX1dSSVRFRklMRSgqaW5vZGUpOworIAlpZiAoZGVjciAm JiAhUElQRV9SRUFERVJTKCppbm9kZSkpIHsKKwkJUElQRV9SRUFERklMRSgqaW5vZGUpID0gTlVM TDsKKwkJaWYgKHdyZmlsZSkKKwkJCWZpbGVfc2VuZF9ub3RpZnkod3JmaWxlLCBJT05fSFVQLCBQ T0xMSFVQKTsKKwl9CisJaWYgKGRlY3cgJiYgIVBJUEVfV1JJVEVSUygqaW5vZGUpKSB7CisJCVBJ UEVfV1JJVEVGSUxFKCppbm9kZSkgPSBOVUxMOworCQlpZiAocmRmaWxlKQorCQkJZmlsZV9zZW5k X25vdGlmeShyZGZpbGUsIElPTl9IVVAsIFBPTExIVVApOworCX0KIAlpZiAoIVBJUEVfUkVBREVS UygqaW5vZGUpICYmICFQSVBFX1dSSVRFUlMoKmlub2RlKSkgewogCQlzdHJ1Y3QgcGlwZV9pbm9k ZV9pbmZvICppbmZvID0gaW5vZGUtPmlfcGlwZTsKIAkJaW5vZGUtPmlfcGlwZSA9IE5VTEw7CkBA IC00ODgsNiArNTE2LDcgQEAKIAlQSVBFX1JFQURFUlMoKmlub2RlKSA9IFBJUEVfV1JJVEVSUygq aW5vZGUpID0gMDsKIAlQSVBFX1dBSVRJTkdfV1JJVEVSUygqaW5vZGUpID0gMDsKIAlQSVBFX1JD T1VOVEVSKCppbm9kZSkgPSBQSVBFX1dDT1VOVEVSKCppbm9kZSkgPSAxOworCVBJUEVfUkVBREZJ TEUoKmlub2RlKSA9IFBJUEVfV1JJVEVGSUxFKCppbm9kZSkgPSBOVUxMOwogCSpQSVBFX0ZBU1lO Q19SRUFERVJTKCppbm9kZSkgPSAqUElQRV9GQVNZTkNfV1JJVEVSUygqaW5vZGUpID0gTlVMTDsK IAogCXJldHVybiBpbm9kZTsKQEAgLTU5NSw2ICs2MjQsOSBAQAogCWYyLT5mX29wID0gJndyaXRl X3BpcGVfZm9wczsKIAlmMi0+Zl9tb2RlID0gMjsKIAlmMi0+Zl92ZXJzaW9uID0gMDsKKworCVBJ UEVfUkVBREZJTEUoKmlub2RlKSA9IGYxOworCVBJUEVfV1JJVEVGSUxFKCppbm9kZSkgPSBmMjsK IAogCWZkX2luc3RhbGwoaSwgZjEpOwogCWZkX2luc3RhbGwoaiwgZjIpOwpkaWZmIC1OcnUgbGlu dXgtMi41LjQ0LnZhbmlsbGEvaW5jbHVkZS9hc20taTM4Ni9wb2xsLmggbGludXgtMi41LjQ0LmVw b2xsL2luY2x1ZGUvYXNtLWkzODYvcG9sbC5oCi0tLSBsaW51eC0yLjUuNDQudmFuaWxsYS9pbmNs dWRlL2FzbS1pMzg2L3BvbGwuaAlGcmkgT2N0IDE4IDIxOjAxOjUyIDIwMDIKKysrIGxpbnV4LTIu NS40NC5lcG9sbC9pbmNsdWRlL2FzbS1pMzg2L3BvbGwuaAlTYXQgT2N0IDE5IDEyOjAxOjMzIDIw MDIKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUgUE9MTFdSTk9STQkweDAxMDAKICNkZWZpbmUg UE9MTFdSQkFORAkweDAyMDAKICNkZWZpbmUgUE9MTE1TRwkJMHgwNDAwCisjZGVmaW5lIFBPTExS RU1PVkUJMHgxMDAwCiAKIHN0cnVjdCBwb2xsZmQgewogCWludCBmZDsKZGlmZiAtTnJ1IGxpbnV4 LTIuNS40NC52YW5pbGxhL2luY2x1ZGUvYXNtLWkzODYvdW5pc3RkLmggbGludXgtMi41LjQ0LmVw b2xsL2luY2x1ZGUvYXNtLWkzODYvdW5pc3RkLmgKLS0tIGxpbnV4LTIuNS40NC52YW5pbGxhL2lu Y2x1ZGUvYXNtLWkzODYvdW5pc3RkLmgJRnJpIE9jdCAxOCAyMTowMjowMCAyMDAyCisrKyBsaW51 eC0yLjUuNDQuZXBvbGwvaW5jbHVkZS9hc20taTM4Ni91bmlzdGQuaAlTYXQgT2N0IDE5IDIwOjIz OjMzIDIwMDIKQEAgLTI1OCw2ICsyNTgsOSBAQAogI2RlZmluZSBfX05SX2ZyZWVfaHVnZXBhZ2Vz CTI1MQogI2RlZmluZSBfX05SX2V4aXRfZ3JvdXAJCTI1MgogI2RlZmluZSBfX05SX2xvb2t1cF9k Y29va2llCTI1MworI2RlZmluZSBfX05SX3N5c19lcG9sbF9jcmVhdGUJMjU0CisjZGVmaW5lIF9f TlJfc3lzX2Vwb2xsX2N0bAkyNTUKKyNkZWZpbmUgX19OUl9zeXNfZXBvbGxfd2FpdAkyNTYKICAg CiAKIC8qIHVzZXItdmlzaWJsZSBlcnJvciBudW1iZXJzIGFyZSBpbiB0aGUgcmFuZ2UgLTEgLSAt MTI0OiBzZWUgPGFzbS1pMzg2L2Vycm5vLmg+ICovCmRpZmYgLU5ydSBsaW51eC0yLjUuNDQudmFu aWxsYS9pbmNsdWRlL2xpbnV4L2V2ZW50cG9sbC5oIGxpbnV4LTIuNS40NC5lcG9sbC9pbmNsdWRl L2xpbnV4L2V2ZW50cG9sbC5oCi0tLSBsaW51eC0yLjUuNDQudmFuaWxsYS9pbmNsdWRlL2xpbnV4 L2V2ZW50cG9sbC5oCVdlZCBEZWMgMzEgMTY6MDA6MDAgMTk2OQorKysgbGludXgtMi41LjQ0LmVw b2xsL2luY2x1ZGUvbGludXgvZXZlbnRwb2xsLmgJU3VuIE9jdCAyNyAxNToyMzozNyAyMDAyCkBA IC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgaW5jbHVkZS9saW51eC9ldmVudHBvbGwuaCAoIEVmZmlj ZW50IGV2ZW50IHBvbGxpbmcgaW1wbGVtZW50YXRpb24gKQorICogIENvcHlyaWdodCAoQykgMjAw MSwuLi4sMjAwMiAgRGF2aWRlIExpYmVuemkKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKiAgRGF2aWRlIExpYmVuemkgPGRhdmlkZWxAeG1haWxzZXJ2ZXIub3JnPgor ICoKKyAqLworCisjaWZuZGVmIF9MSU5VWF9FVkVOVFBPTExfSAorI2RlZmluZSBfTElOVVhfRVZF TlRQT0xMX0gKKworCisjZGVmaW5lIEVWRU5UUE9MTF9NSU5PUgkxMjQKKyNkZWZpbmUgUE9MTEZE X1hfUEFHRSAoUEFHRV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKQorI2RlZmluZSBNQVhf RkRTX0lOX0VWRU5UUE9MTCAoMTAyNCAqIDEyOCkKKyNkZWZpbmUgTUFYX0VWRU5UUE9MTF9QQUdF UyAoTUFYX0ZEU19JTl9FVkVOVFBPTEwgLyBQT0xMRkRfWF9QQUdFKQorI2RlZmluZSBFVkVOVF9Q QUdFX0lOREVYKG4pICgobikgLyBQT0xMRkRfWF9QQUdFKQorI2RlZmluZSBFVkVOVF9QQUdFX1JF TShuKSAoKG4pICUgUE9MTEZEX1hfUEFHRSkKKyNkZWZpbmUgRVZFTlRfUEFHRV9PRkZTRVQobikg KCgobikgJSBQT0xMRkRfWF9QQUdFKSAqIHNpemVvZihzdHJ1Y3QgcG9sbGZkKSkKKyNkZWZpbmUg RVBfRkRTX1BBR0VTKG4pICgoKG4pICsgUE9MTEZEX1hfUEFHRSAtIDEpIC8gUE9MTEZEX1hfUEFH RSkKKyNkZWZpbmUgRVBfTUFQX1NJWkUobikgKEVQX0ZEU19QQUdFUyhuKSAqIFBBR0VfU0laRSAq IDIpCisKKworc3RydWN0IGV2cG9sbCB7CisJaW50IGVwX3RpbWVvdXQ7CisJdW5zaWduZWQgbG9u ZyBlcF9yZXNvZmY7Cit9OworCisjZGVmaW5lIEVQX0FMTE9DIF9JT1IoJ1AnLCAxLCBpbnQpCisj ZGVmaW5lIEVQX1BPTEwgX0lPV1IoJ1AnLCAyLCBzdHJ1Y3QgZXZwb2xsKQorI2RlZmluZSBFUF9G UkVFIF9JTygnUCcsIDMpCisjZGVmaW5lIEVQX0lTUE9MTEVEIF9JT1dSKCdQJywgNCwgc3RydWN0 IHBvbGxmZCkKKworI2RlZmluZSBFUF9DVExfQUREIDEKKyNkZWZpbmUgRVBfQ1RMX0RFTCAyCisj ZGVmaW5lIEVQX0NUTF9NT0QgMworCisKK2FzbWxpbmthZ2UgaW50IHN5c19lcG9sbF9jcmVhdGUo aW50IG1heGZkcyk7Cithc21saW5rYWdlIGludCBzeXNfZXBvbGxfY3RsKGludCBlcGZkLCBpbnQg b3AsIGludCBmZCwgdW5zaWduZWQgaW50IGV2ZW50cyk7Cithc21saW5rYWdlIGludCBzeXNfZXBv bGxfd2FpdChpbnQgZXBmZCwgc3RydWN0IHBvbGxmZCBjb25zdCAqKmV2ZW50cywgaW50IHRpbWVv dXQpOworCisKKworI2VuZGlmCisKZGlmZiAtTnJ1IGxpbnV4LTIuNS40NC52YW5pbGxhL2luY2x1 ZGUvbGludXgvZmNibGlzdC5oIGxpbnV4LTIuNS40NC5lcG9sbC9pbmNsdWRlL2xpbnV4L2ZjYmxp c3QuaAotLS0gbGludXgtMi41LjQ0LnZhbmlsbGEvaW5jbHVkZS9saW51eC9mY2JsaXN0LmgJV2Vk IERlYyAzMSAxNjowMDowMCAxOTY5CisrKyBsaW51eC0yLjUuNDQuZXBvbGwvaW5jbHVkZS9saW51 eC9mY2JsaXN0LmgJU3VuIE9jdCAyNyAxNToyMzoyMSAyMDAyCkBAIC0wLDAgKzEsNzMgQEAKKy8q CisgKiAgaW5jbHVkZS9saW51eC9mY2JsaXN0LmggKCBGaWxlIGV2ZW50IGNhbGxiYWNrcyBoYW5k bGluZyApCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxLC4uLiwyMDAyICBEYXZpZGUgTGliZW56aQor ICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBEYXZpZGUgTGliZW56 aSA8ZGF2aWRlbEB4bWFpbHNlcnZlci5vcmc+CisgKgorICovCisKKyNpZm5kZWYgX19MSU5VWF9G Q0JMSVNUX0gKKyNkZWZpbmUgX19MSU5VWF9GQ0JMSVNUX0gKKworI2luY2x1ZGUgPGxpbnV4L2Nv bmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZmlsZS5oPgorCisK KworLyogZmlsZSBjYWxsYmFjayBub3RpZmljYXRpb24gZXZlbnRzICovCisjZGVmaW5lIElPTl9J TgkJMQorI2RlZmluZSBJT05fT1VUCQkyCisjZGVmaW5lIElPTl9IVVAJCTMKKyNkZWZpbmUgSU9O X0VSUgkJNAorCisjZGVmaW5lIEZDQl9MT0NBTF9TSVpFCTQKKworI2RlZmluZSBmY2JsaXN0X3Jl YWRfbG9jayhmcCwgZmwpCQlyZWFkX2xvY2tfaXJxc2F2ZSgmKGZwKS0+Zl9jYmxvY2ssIGZsKQor I2RlZmluZSBmY2JsaXN0X3JlYWRfdW5sb2NrKGZwLCBmbCkJCXJlYWRfdW5sb2NrX2lycXJlc3Rv cmUoJihmcCktPmZfY2Jsb2NrLCBmbCkKKyNkZWZpbmUgZmNibGlzdF93cml0ZV9sb2NrKGZwLCBm bCkJCXdyaXRlX2xvY2tfaXJxc2F2ZSgmKGZwKS0+Zl9jYmxvY2ssIGZsKQorI2RlZmluZSBmY2Js aXN0X3dyaXRlX3VubG9jayhmcCwgZmwpCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCYoZnApLT5m X2NibG9jaywgZmwpCisKK3N0cnVjdCBmY2Jfc3RydWN0IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxs aW5rOworCXZvaWQgKCpjYnByb2MpKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgdW5zaWduZWQgbG9u ZyAqLCBsb25nICopOworCXZvaWQgKmRhdGE7CisJdW5zaWduZWQgbG9uZyBsb2NhbFtGQ0JfTE9D QUxfU0laRV07Cit9OworCisKK2V4dGVybiBsb25nIGlvbl9iYW5kX3RhYmxlW107CitleHRlcm4g bG9uZyBwb2xsX2JhbmRfdGFibGVbXTsKKworCit2b2lkIGZpbGVfbm90aWZ5X2V2ZW50KHN0cnVj dCBmaWxlICpmaWxlcCwgbG9uZyAqZXZlbnQpOworCitpbnQgZmlsZV9ub3RpZnlfYWRkY2Ioc3Ry dWN0IGZpbGUgKmZpbGVwLAorCQkJCQkgIHZvaWQgKCpjYnByb2MpKHN0cnVjdCBmaWxlICosIHZv aWQgKiwgdW5zaWduZWQgbG9uZyAqLCBsb25nICopLCB2b2lkICpkYXRhKTsKKworaW50IGZpbGVf bm90aWZ5X2RlbGNiKHN0cnVjdCBmaWxlICpmaWxlcCwKKwkJCQkJICB2b2lkICgqY2Jwcm9jKShz dHJ1Y3QgZmlsZSAqLCB2b2lkICosIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKSk7CisKK3ZvaWQg ZmlsZV9ub3RpZnlfY2xlYW51cChzdHJ1Y3QgZmlsZSAqZmlsZXApOworCisKK3N0YXRpYyBpbmxp bmUgdm9pZCBmaWxlX25vdGlmeV9pbml0KHN0cnVjdCBmaWxlICpmaWxlcCkKK3sKKwlyd2xvY2tf aW5pdCgmZmlsZXAtPmZfY2Jsb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmZmlsZXAtPmZfY2JsaXN0 KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGVfc2VuZF9ub3RpZnkoc3RydWN0IGZpbGUg KmZpbGVwLCBsb25nIGlvZXZ0LCBsb25nIHBsZXZ0KSB7CisJbG9uZyBldmVudFtdID0geyBpb2V2 dCwgcGxldnQsIC0xIH07CisKKwlmaWxlX25vdGlmeV9ldmVudChmaWxlcCwgZXZlbnQpOworfQor CisjZW5kaWYKZGlmZiAtTnJ1IGxpbnV4LTIuNS40NC52YW5pbGxhL2luY2x1ZGUvbGludXgvZnMu aCBsaW51eC0yLjUuNDQuZXBvbGwvaW5jbHVkZS9saW51eC9mcy5oCi0tLSBsaW51eC0yLjUuNDQu dmFuaWxsYS9pbmNsdWRlL2xpbnV4L2ZzLmgJRnJpIE9jdCAxOCAyMTowMToxOCAyMDAyCisrKyBs aW51eC0yLjUuNDQuZXBvbGwvaW5jbHVkZS9saW51eC9mcy5oCVNhdCBPY3QgMTkgMTI6MDE6MzMg MjAwMgpAQCAtNTA2LDYgKzUwNiwxMCBAQAogCiAJLyogbmVlZGVkIGZvciB0dHkgZHJpdmVyLCBh bmQgbWF5YmUgb3RoZXJzICovCiAJdm9pZAkJCSpwcml2YXRlX2RhdGE7CisKKwkvKiBmaWxlIGNh bGxiYWNrIGxpc3QgKi8KKwlyd2xvY2tfdCBmX2NibG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGZf Y2JsaXN0OwogfTsKIGV4dGVybiBzcGlubG9ja190IGZpbGVzX2xvY2s7CiAjZGVmaW5lIGZpbGVf bGlzdF9sb2NrKCkgc3Bpbl9sb2NrKCZmaWxlc19sb2NrKTsKZGlmZiAtTnJ1IGxpbnV4LTIuNS40 NC52YW5pbGxhL2luY2x1ZGUvbGludXgvbGlzdC5oIGxpbnV4LTIuNS40NC5lcG9sbC9pbmNsdWRl L2xpbnV4L2xpc3QuaAotLS0gbGludXgtMi41LjQ0LnZhbmlsbGEvaW5jbHVkZS9saW51eC9saXN0 LmgJRnJpIE9jdCAxOCAyMTowMTowNyAyMDAyCisrKyBsaW51eC0yLjUuNDQuZXBvbGwvaW5jbHVk ZS9saW51eC9saXN0LmgJU2F0IE9jdCAxOSAxMjowMTozMyAyMDAyCkBAIC0zMTksNiArMzE5LDEx IEBACiAJZm9yIChwb3MgPSAoaGVhZCktPm5leHQsIG4gPSBwb3MtPm5leHQ7IHBvcyAhPSAoaGVh ZCk7IFwKIAkJcG9zID0gbiwgKHsgcmVhZF9iYXJyaWVyX2RlcGVuZHMoKTsgMDt9KSwgbiA9IHBv cy0+bmV4dCkKIAorI2RlZmluZSBsaXN0X2ZpcnN0KGhlYWQpCSgoKGhlYWQpLT5uZXh0ICE9ICho ZWFkKSkgPyAoaGVhZCktPm5leHQ6IChzdHJ1Y3QgbGlzdF9oZWFkICopIDApCisjZGVmaW5lIGxp c3RfbGFzdChoZWFkKQkoKChoZWFkKS0+cHJldiAhPSAoaGVhZCkpID8gKGhlYWQpLT5wcmV2OiAo c3RydWN0IGxpc3RfaGVhZCAqKSAwKQorI2RlZmluZSBsaXN0X25leHQocG9zLCBoZWFkKQkoKChw b3MpLT5uZXh0ICE9IChoZWFkKSkgPyAocG9zKS0+bmV4dDogKHN0cnVjdCBsaXN0X2hlYWQgKikg MCkKKyNkZWZpbmUgbGlzdF9wcmV2KHBvcywgaGVhZCkJKCgocG9zKS0+cHJldiAhPSAoaGVhZCkp ID8gKHBvcyktPnByZXY6IChzdHJ1Y3QgbGlzdF9oZWFkICopIDApCisKICNlbmRpZiAvKiBfX0tF Uk5FTF9fIHx8IF9MVk1fSF9JTkNMVURFICovCiAKICNlbmRpZgpkaWZmIC1OcnUgbGludXgtMi41 LjQ0LnZhbmlsbGEvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCBsaW51eC0yLjUuNDQuZXBvbGwv aW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaAotLS0gbGludXgtMi41LjQ0LnZhbmlsbGEvaW5jbHVk ZS9saW51eC9waXBlX2ZzX2kuaAlGcmkgT2N0IDE4IDIxOjAyOjI0IDIwMDIKKysrIGxpbnV4LTIu NS40NC5lcG9sbC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oCVNhdCBPY3QgMTkgMTI6MDE6MzMg MjAwMgpAQCAtMTIsNiArMTIsOCBAQAogCXVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAJ dW5zaWduZWQgaW50IHJfY291bnRlcjsKIAl1bnNpZ25lZCBpbnQgd19jb3VudGVyOworCXN0cnVj dCBmaWxlICpyZGZpbGU7CisJc3RydWN0IGZpbGUgKndyZmlsZTsKIAlzdHJ1Y3QgZmFzeW5jX3N0 cnVjdCAqZmFzeW5jX3JlYWRlcnM7CiAJc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY193cml0 ZXJzOwogfTsKQEAgLTMwLDYgKzMyLDggQEAKICNkZWZpbmUgUElQRV9XQUlUSU5HX1dSSVRFUlMo aW5vZGUpCSgoaW5vZGUpLmlfcGlwZS0+d2FpdGluZ193cml0ZXJzKQogI2RlZmluZSBQSVBFX1JD T1VOVEVSKGlub2RlKQkoKGlub2RlKS5pX3BpcGUtPnJfY291bnRlcikKICNkZWZpbmUgUElQRV9X Q09VTlRFUihpbm9kZSkJKChpbm9kZSkuaV9waXBlLT53X2NvdW50ZXIpCisjZGVmaW5lIFBJUEVf UkVBREZJTEUoaW5vZGUpCSgoaW5vZGUpLmlfcGlwZS0+cmRmaWxlKQorI2RlZmluZSBQSVBFX1dS SVRFRklMRShpbm9kZSkJKChpbm9kZSkuaV9waXBlLT53cmZpbGUpCiAjZGVmaW5lIFBJUEVfRkFT WU5DX1JFQURFUlMoaW5vZGUpICAgICAoJigoaW5vZGUpLmlfcGlwZS0+ZmFzeW5jX3JlYWRlcnMp KQogI2RlZmluZSBQSVBFX0ZBU1lOQ19XUklURVJTKGlub2RlKSAgICAgKCYoKGlub2RlKS5pX3Bp cGUtPmZhc3luY193cml0ZXJzKSkKIApkaWZmIC1OcnUgbGludXgtMi41LjQ0LnZhbmlsbGEvaW5j bHVkZS9saW51eC9zeXMuaCBsaW51eC0yLjUuNDQuZXBvbGwvaW5jbHVkZS9saW51eC9zeXMuaAot LS0gbGludXgtMi41LjQ0LnZhbmlsbGEvaW5jbHVkZS9saW51eC9zeXMuaAlGcmkgT2N0IDE4IDIx OjAxOjQ5IDIwMDIKKysrIGxpbnV4LTIuNS40NC5lcG9sbC9pbmNsdWRlL2xpbnV4L3N5cy5oCVN1 biBPY3QgMjAgMTU6MTM6MDYgMjAwMgpAQCAtNCw3ICs0LDcgQEAKIC8qCiAgKiBzeXN0ZW0gY2Fs bCBlbnRyeSBwb2ludHMgLi4uIGJ1dCBub3QgYWxsIGFyZSBkZWZpbmVkCiAgKi8KLSNkZWZpbmUg TlJfc3lzY2FsbHMgMjU2CisjZGVmaW5lIE5SX3N5c2NhbGxzIDI2MAogCiAvKgogICogVGhlc2Ug YXJlIHN5c3RlbSBjYWxscyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBhdCBzb21lIHRpbWUKZGlmZiAt TnJ1IGxpbnV4LTIuNS40NC52YW5pbGxhL2luY2x1ZGUvbmV0L3NvY2suaCBsaW51eC0yLjUuNDQu ZXBvbGwvaW5jbHVkZS9uZXQvc29jay5oCi0tLSBsaW51eC0yLjUuNDQudmFuaWxsYS9pbmNsdWRl L25ldC9zb2NrLmgJRnJpIE9jdCAxOCAyMTowMjoyNyAyMDAyCisrKyBsaW51eC0yLjUuNDQuZXBv bGwvaW5jbHVkZS9uZXQvc29jay5oCVR1ZSBPY3QgMjIgMTU6NTc6MzggMjAwMgpAQCAtNTIsNiAr NTIsOSBAQAogI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KICNpbmNsdWRlIDxuZXQvZHN0Lmg+CiAj aW5jbHVkZSA8bmV0L3NjbS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGlu dXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZjYmxpc3QuaD4KIAogLyoKICAqIFRoaXMgc3Ry dWN0dXJlIHJlYWxseSBuZWVkcyB0byBiZSBjbGVhbmVkIHVwLgpAQCAtNzY2LDggKzc2OSwxMyBA QAogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2tfd2FrZV9hc3luYyhzdHJ1Y3Qgc29jayAqc2ssIGlu dCBob3csIGludCBiYW5kKQogewotCWlmIChzay0+c29ja2V0ICYmIHNrLT5zb2NrZXQtPmZhc3lu Y19saXN0KQotCQlzb2NrX3dha2VfYXN5bmMoc2stPnNvY2tldCwgaG93LCBiYW5kKTsKKwlpZiAo c2stPnNvY2tldCkgeworCQlpZiAoc2stPnNvY2tldC0+ZmlsZSkKKwkJCWZpbGVfc2VuZF9ub3Rp Znkoc2stPnNvY2tldC0+ZmlsZSwgaW9uX2JhbmRfdGFibGVbYmFuZCAtIFBPTExfSU5dLAorCQkJ CQlwb2xsX2JhbmRfdGFibGVbYmFuZCAtIFBPTExfSU5dKTsKKwkJaWYgKHNrLT5zb2NrZXQtPmZh c3luY19saXN0KQorCQkJc29ja193YWtlX2FzeW5jKHNrLT5zb2NrZXQsIGhvdywgYmFuZCk7CisJ fQogfQogCiAjZGVmaW5lIFNPQ0tfTUlOX1NOREJVRiAyMDQ4CmRpZmYgLU5ydSBsaW51eC0yLjUu NDQudmFuaWxsYS9uZXQvaXB2NC90Y3AuYyBsaW51eC0yLjUuNDQuZXBvbGwvbmV0L2lwdjQvdGNw LmMKLS0tIGxpbnV4LTIuNS40NC52YW5pbGxhL25ldC9pcHY0L3RjcC5jCUZyaSBPY3QgMTggMjE6 MDE6MTkgMjAwMgorKysgbGludXgtMi41LjQ0LmVwb2xsL25ldC9pcHY0L3RjcC5jCVNhdCBPY3Qg MTkgMTI6MDE6MzMgMjAwMgpAQCAtNDc2LDggKzQ3Niw4IEBACiAJCWlmIChzay0+c2xlZXAgJiYg d2FpdHF1ZXVlX2FjdGl2ZShzay0+c2xlZXApKQogCQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKHNr LT5zbGVlcCk7CiAKLQkJaWYgKHNvY2stPmZhc3luY19saXN0ICYmICEoc2stPnNodXRkb3duICYg U0VORF9TSFVURE9XTikpCi0JCQlzb2NrX3dha2VfYXN5bmMoc29jaywgMiwgUE9MTF9PVVQpOwor CQlpZiAoIShzay0+c2h1dGRvd24gJiBTRU5EX1NIVVRET1dOKSkKKwkJCXNrX3dha2VfYXN5bmMo c2ssIDIsIFBPTExfT1VUKTsKIAl9CiB9CiAK --==========568488336==========-- - 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/