Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751446Ab0ABSZj (ORCPT ); Sat, 2 Jan 2010 13:25:39 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751162Ab0ABSZj (ORCPT ); Sat, 2 Jan 2010 13:25:39 -0500 Received: from mail-fx0-f225.google.com ([209.85.220.225]:48389 "EHLO mail-fx0-f225.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751022Ab0ABSZi (ORCPT ); Sat, 2 Jan 2010 13:25:38 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=lKrjTij4Bzqa4Arr1EGK6QZ9s/4fauMLMc5CqVldfv5AoMiI6P6rnN/tw2Av7p9kvu GXtYJTOh/dp4/j/FGrQGN6TPVq/2hxpt+bgNHc0gec+n675osEzBSgMbi7rO8+aQ600E o3wB5J2FGaZlb6D0RgHD09TQR0UxMWDpM2Z30= MIME-Version: 1.0 Date: Sat, 2 Jan 2010 22:25:35 +0400 Message-ID: <1a297b361001021025t3cb78000i80e22e9f6e33b82b@mail.gmail.com> Subject: staging Patch 03/03: Crystal HD From: Manu Abraham To: Greg KH Cc: linux-kernel@vger.kernel.org Content-Type: multipart/mixed; boundary=0023545bd65848adf4047c329daa Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 87718 Lines: 1150 --0023545bd65848adf4047c329daa Content-Type: text/plain; charset=ISO-8859-1 --0023545bd65848adf4047c329daa Content-Type: text/x-patch; charset=US-ASCII; name="0003--Crystal-HD-Coding-style-cleanups.patch" Content-Disposition: attachment; filename="0003--Crystal-HD-Coding-style-cleanups.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g3yqaequ1 RnJvbSAwNzRjNjViMmZmODI3N2IxZWZmODYzZmE2NGMwM2MyZjkwNDdhNjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51IEFicmFoYW0gPGFicmFoYW0ubWFudUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMiBKYW4gMjAxMCAyMjowNjoxNSArMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFtD cnlzdGFsIEhEXSBDb2Rpbmcgc3R5bGUgY2xlYW51cHMKClNpZ25lZC1vZmYtYnk6IE1hbnUgQWJy YWhhbSA8YWJyYWhhbS5tYW51QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL3N0YWdpbmcvY3J5c3Rh bC1oZC9iY19kdHNfZGVmcy5oICAgICB8ICAxMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19nbG9iX2xueC5oIHwgICAxMCArLQog ZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX3R5cGVzLmggICAgfCAgIDE2ICsrLS0K IGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmMgIHwgICA3NyArKysr KysrKy0tLS0tLS0tCiBkcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5o ICB8ICAgIDYgKy0KIGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9md19pZi5o IHwgICAyMiArKy0tLQogZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2h3LmMg ICAgfCAgIDk3ICsrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1o ZC9jcnlzdGFsaGRfaHcuaCAgICB8ICAgMTAgKy0KIGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhk L2NyeXN0YWxoZF9sbnguYyAgIHwgICA5MSArKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL3N0 YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfbWlzYy5jICB8ICAxMDYgKysrKysrKysrKy0tLS0t LS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX21pc2MuaCAgfCAg IDI5ICsrKy0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDMwNyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNf ZGVmcy5oIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX2RlZnMuaAppbmRleCA0 MDViZDE2Li5jMzRjYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9i Y19kdHNfZGVmcy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19kZWZz LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJiY19kdHNfdHlwZXMuaCIKIAogLyogQklU IE1hc2sgKi8KLSNkZWZpbmUgQkNfQklUKF94KQkJKCAxIDw8IChfeCkgKQorI2RlZmluZSBCQ19C SVQoX3gpCQkoMSA8PCAoX3gpKQogCiB0eXBlZGVmIGVudW0gX0JDX1NUQVRVUyB7CiAJQkNfU1RT X1NVQ0NFU1MJCT0gMCwKQEAgLTE5NSw5ICsxOTUsOSBAQCB0eXBlZGVmIHN0cnVjdCBfQkNfUElC X0VYVF9IMjY0IHsKIAogCS8qIEgyNjRfVkFMSURfUEFOU0NBTiAqLwogCXVpbnQzMl90CXBhbl9z Y2FuX2NvdW50OwotCWludDMyX3QJCXBhbl9zY2FuX2xlZnQgIFszXTsKLQlpbnQzMl90CQlwYW5f c2Nhbl9yaWdodCBbM107Ci0JaW50MzJfdAkJcGFuX3NjYW5fdG9wICAgWzNdOworCWludDMyX3QJ CXBhbl9zY2FuX2xlZnRbM107CisJaW50MzJfdAkJcGFuX3NjYW5fcmlnaHRbM107CisJaW50MzJf dAkJcGFuX3NjYW5fdG9wWzNdOwogCWludDMyX3QJCXBhbl9zY2FuX2JvdHRvbVszXTsKIAogCS8q IEgyNjRfVkFMSURfU1BTX0NST1AgKi8KQEAgLTI0MSw4ICsyNDEsNyBAQCB0eXBlZGVmIHN0cnVj dCBfQkNfUElCX0VYVF9WQzEgewogI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42 NCkgfHwgZGVmaW5lZChfX0xJTlVYX1VTRVJfXykKIC8qIFZhbHVlcyBmb3IgJ3B1bGxkb3duJyBm aWVsZC4gICcwJyBtZWFucyBubyBwdWxsZG93biBpbmZvcm1hdGlvbgogICogd2FzIHByZXNlbnQg Zm9yIHRoaXMgcGljdHVyZS4gKi8KLWVudW0KLXsKK2VudW0gewogCXZkZWNOb1B1bGxkb3duSW5m bwk9IDAsCiAJdmRlY1RvcAkJCT0gMSwKIAl2ZGVjQm90dG9tCQk9IDIsCkBAIC0yNTcsOCArMjU2 LDcgQEAgZW51bQogfTsKIAogLyogVmFsdWVzIGZvciB0aGUgJ2ZyYW1lX3JhdGUnIGZpZWxkLiAq LwotZW51bQoteworZW51bSB7CiAJdmRlY0ZyYW1lUmF0ZVVua25vd24gPSAwLAogCXZkZWNGcmFt ZVJhdGUyM185NywKIAl2ZGVjRnJhbWVSYXRlMjQsCkBAIC0yNzEsOCArMjY5LDcgQEAgZW51bQog fTsKIAogLyogVmFsdWVzIGZvciB0aGUgJ2FzcGVjdF9yYXRpbycgZmllbGQuICovCi1lbnVtCi17 CitlbnVtIHsKIAl2ZGVjQXNwZWN0UmF0aW9Vbmtub3duID0gMCwKIAl2ZGVjQXNwZWN0UmF0aW9T cXVhcmUsCiAJdmRlY0FzcGVjdFJhdGlvMTJfMTEsCkBAIC0yOTQsOCArMjkxLDcgQEAgZW51bQog fTsKIAogLyogVmFsdWVzIGZvciB0aGUgJ2NvbG91cl9wcmltYXJpZXMnIGZpZWxkLiAqLwotZW51 bQoteworZW51bSB7CiAJdmRlY0NvbG91clByaW1hcmllc1Vua25vd24gPSAwLAogCXZkZWNDb2xv dXJQcmltYXJpZXNCVDcwOSwKIAl2ZGVjQ29sb3VyUHJpbWFyaWVzVW5zcGVjaWZpZWQsCkBAIC0z MDcsNDMgKzMwMyw0MiBAQCBlbnVtCiAJdmRlY0NvbG91clByaW1hcmllc0dlbmVyaWNGaWxtLAog fTsKIAotZW51bQotewotCXZkZWNSRVNPTFVUSU9OX0NVU1RPTQk9IDB4MDAwMDAwMDAsIC8vIGN1 c3RvbQotCXZkZWNSRVNPTFVUSU9OXzQ4MGkJPSAweDAwMDAwMDAxLCAvLyA0ODBpCi0JdmRlY1JF U09MVVRJT05fMTA4MGkJPSAweDAwMDAwMDAyLCAvLyAxMDgwaSAoMTkyMHgxMDgwLCA2MGkpCi0J dmRlY1JFU09MVVRJT05fTlRTQwk9IDB4MDAwMDAwMDMsIC8vIE5UU0MgKDcyMHg0ODMsIDYwaSkK LQl2ZGVjUkVTT0xVVElPTl80ODBwCT0gMHgwMDAwMDAwNCwgLy8gNDgwcCAoNzIweDQ4MCwgNjBw KQotCXZkZWNSRVNPTFVUSU9OXzcyMHAJPSAweDAwMDAwMDA1LCAvLyA3MjBwICgxMjgweDcyMCwg NjBwKQotCXZkZWNSRVNPTFVUSU9OX1BBTDEJPSAweDAwMDAwMDA2LCAvLyBQQUxfMSAoNzIweDU3 NiwgNTBpKQotCXZkZWNSRVNPTFVUSU9OXzEwODBpMjUJPSAweDAwMDAwMDA3LCAvLyAxMDgwaTI1 ICgxOTIweDEwODAsIDUwaSkKLQl2ZGVjUkVTT0xVVElPTl83MjBwNTAJPSAweDAwMDAwMDA4LCAv LyA3MjBwNTAgKDEyODB4NzIwLCA1MHApCi0JdmRlY1JFU09MVVRJT05fNTc2cAk9IDB4MDAwMDAw MDksIC8vIDU3NnAgKDcyMHg1NzYsIDUwcCkKLQl2ZGVjUkVTT0xVVElPTl8xMDgwaTI5Xzk3ID0g MHgwMDAwMDAwQSwgLy8gMTA4MGkgKDE5MjB4MTA4MCwgNTkuOTRpKQotCXZkZWNSRVNPTFVUSU9O XzcyMHA1OV85NCAgPSAweDAwMDAwMDBCLCAvLyA3MjBwICgxMjgweDcyMCwgNTkuOTRwKQotCXZk ZWNSRVNPTFVUSU9OX1NEX0RWRAk9IDB4MDAwMDAwMEMsIC8vIFNEIERWRCAoNzIweDQ4MywgNjBp KQotCXZkZWNSRVNPTFVUSU9OXzQ4MHA2NTYJPSAweDAwMDAwMDBELCAvLyA0ODBwICg3MjB4NDgw LCA2MHApLCBvdXRwdXQgYnVzIHdpZHRoIDggYml0LCBjbG9jayA3NC4yNU1Iei4KLQl2ZGVjUkVT T0xVVElPTl8xMDgwcDIzXzk3NiA9IDB4MDAwMDAwMEUsIC8vIDEwODBwMjNfOTc2ICgxOTIweDEw ODAsIDIzLjk3NnApCi0JdmRlY1JFU09MVVRJT05fNzIwcDIzXzk3NiAgPSAweDAwMDAwMDBGLCAv LyA3MjBwMjNfOTc2ICgxMjgweDcyMHAsIDIzLjk3NnApCi0JdmRlY1JFU09MVVRJT05fMjQwcDI5 Xzk3ICAgPSAweDAwMDAwMDEwLCAvLyAyNDBwICgxNDQweDI0MCwgMjkuOTdwICkKLQl2ZGVjUkVT T0xVVElPTl8yNDBwMzAJPSAweDAwMDAwMDExLCAvLyAyNDBwICgxNDQweDI0MCwgMzBwKQotCXZk ZWNSRVNPTFVUSU9OXzI4OHAyNQk9IDB4MDAwMDAwMTIsIC8vIDI4OHAgKDE0NDB4Mjg4cCwgMjVw KQotCXZkZWNSRVNPTFVUSU9OXzEwODBwMjlfOTcgPSAweDAwMDAwMDEzLCAvLyAxMDgwcDI5Xzk3 ICgxOTIweDEwODAsIDI5Ljk3cCkKLQl2ZGVjUkVTT0xVVElPTl8xMDgwcDMwCT0gMHgwMDAwMDAx NCwgLy8gMTA4MHAzMCAoMTkyMHgxMDgwLCAzMHApCi0JdmRlY1JFU09MVVRJT05fMTA4MHAyNAk9 IDB4MDAwMDAwMTUsIC8vIDEwODBwMjQgKDE5MjB4MTA4MCwgMjRwKQotCXZkZWNSRVNPTFVUSU9O XzEwODBwMjUJPSAweDAwMDAwMDE2LCAvLyAxMDgwcDI1ICgxOTIweDEwODAsIDI1cCkKLQl2ZGVj UkVTT0xVVElPTl83MjBwMjQJPSAweDAwMDAwMDE3LCAvLyA3MjBwMjQgKDEyODB4NzIwLCAyNXAp Ci0JdmRlY1JFU09MVVRJT05fNzIwcDI5Xzk3ICA9IDB4MDAwMDAwMTgsIC8vIDcyMHAyOS45NyAo MTI4MHg3MjAsIDI5Ljk3cCkKLQl2ZGVjUkVTT0xVVElPTl80ODBwMjNfOTc2ID0gMHgwMDAwMDAx OSwgLy8gNDgwcDIzLjk3NiAoNzIwKjQ4MCwgMjMuOTc2KQotCXZkZWNSRVNPTFVUSU9OXzQ4MHAy OV85NyAgPSAweDAwMDAwMDFBLCAvLyA0ODBwMjkuOTc2ICg3MjAqNDgwLCAyOS45N3ApCi0JdmRl Y1JFU09MVVRJT05fNTc2cDI1CT0gMHgwMDAwMDAxQiwgLy8gNTc2cDI1ICg3MjAqNTc2LCAyNXAp Ci0JLy9Gb3IgWmVybyBGcmFtZSBSYXRlCi0JdmRlY1JFU09MVVRJT05fNDgwcDAJPSAweDAwMDAw MDFDLCAvLyA0ODBwICg3MjB4NDgwLCAwcCkKLQl2ZGVjUkVTT0xVVElPTl80ODBpMAk9IDB4MDAw MDAwMUQsIC8vIDQ4MGkgKDcyMHg0ODAsIDBpKQotCXZkZWNSRVNPTFVUSU9OXzU3NnAwCT0gMHgw MDAwMDAxRSwgLy8gNTc2cCAoNzIweDU3NiwgMHApCi0JdmRlY1JFU09MVVRJT05fNzIwcDAJPSAw eDAwMDAwMDFGLCAvLyA3MjBwICgxMjgweDcyMCwgMHApCi0JdmRlY1JFU09MVVRJT05fMTA4MHAw CT0gMHgwMDAwMDAyMCwgLy8gMTA4MHAgKDE5MjB4MTA4MCwgMHApCi0JdmRlY1JFU09MVVRJT05f MTA4MGkwCT0gMHgwMDAwMDAyMSwgLy8gMTA4MGkgKDE5MjB4MTA4MCwgMGkpCitlbnVtIHsKKwl2 ZGVjUkVTT0xVVElPTl9DVVNUT00JPSAweDAwMDAwMDAwLCAvKiBjdXN0b20gKi8KKwl2ZGVjUkVT T0xVVElPTl80ODBpCT0gMHgwMDAwMDAwMSwgLyogNDgwaSAqLworCXZkZWNSRVNPTFVUSU9OXzEw ODBpCT0gMHgwMDAwMDAwMiwgLyogMTA4MGkgKDE5MjB4MTA4MCwgNjBpKSAqLworCXZkZWNSRVNP TFVUSU9OX05UU0MJPSAweDAwMDAwMDAzLCAvKiBOVFNDICg3MjB4NDgzLCA2MGkpICovCisJdmRl Y1JFU09MVVRJT05fNDgwcAk9IDB4MDAwMDAwMDQsIC8qIDQ4MHAgKDcyMHg0ODAsIDYwcCkgKi8K Kwl2ZGVjUkVTT0xVVElPTl83MjBwCT0gMHgwMDAwMDAwNSwgLyogNzIwcCAoMTI4MHg3MjAsIDYw cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl9QQUwxCT0gMHgwMDAwMDAwNiwgLyogUEFMXzEgKDcyMHg1 NzYsIDUwaSkgKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgwaTI1CT0gMHgwMDAwMDAwNywgLyogMTA4 MGkyNSAoMTkyMHgxMDgwLCA1MGkpICovCisJdmRlY1JFU09MVVRJT05fNzIwcDUwCT0gMHgwMDAw MDAwOCwgLyogNzIwcDUwICgxMjgweDcyMCwgNTBwKSAqLworCXZkZWNSRVNPTFVUSU9OXzU3NnAJ PSAweDAwMDAwMDA5LCAvKiA1NzZwICg3MjB4NTc2LCA1MHApICovCisJdmRlY1JFU09MVVRJT05f MTA4MGkyOV85NyA9IDB4MDAwMDAwMEEsIC8qIDEwODBpICgxOTIweDEwODAsIDU5Ljk0aSkgKi8K Kwl2ZGVjUkVTT0xVVElPTl83MjBwNTlfOTQgID0gMHgwMDAwMDAwQiwgLyogNzIwcCAoMTI4MHg3 MjAsIDU5Ljk0cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl9TRF9EVkQJPSAweDAwMDAwMDBDLCAvKiBT RCBEVkQgKDcyMHg0ODMsIDYwaSkgKi8KKwl2ZGVjUkVTT0xVVElPTl80ODBwNjU2CT0gMHgwMDAw MDAwRCwgLyogNDgwcCAoNzIweDQ4MCwgNjBwKSwgb3V0cHV0IGJ1cyB3aWR0aCA4IGJpdCwgY2xv Y2sgNzQuMjVNSHogKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgwcDIzXzk3NiA9IDB4MDAwMDAwMEUs IC8qIDEwODBwMjNfOTc2ICgxOTIweDEwODAsIDIzLjk3NnApICovCisJdmRlY1JFU09MVVRJT05f NzIwcDIzXzk3NiAgPSAweDAwMDAwMDBGLCAvKiA3MjBwMjNfOTc2ICgxMjgweDcyMHAsIDIzLjk3 NnApICovCisJdmRlY1JFU09MVVRJT05fMjQwcDI5Xzk3ICAgPSAweDAwMDAwMDEwLCAvKiAyNDBw ICgxNDQweDI0MCwgMjkuOTdwICkgKi8KKwl2ZGVjUkVTT0xVVElPTl8yNDBwMzAJPSAweDAwMDAw MDExLCAvKiAyNDBwICgxNDQweDI0MCwgMzBwKSAqLworCXZkZWNSRVNPTFVUSU9OXzI4OHAyNQk9 IDB4MDAwMDAwMTIsIC8qIDI4OHAgKDE0NDB4Mjg4cCwgMjVwKSAqLworCXZkZWNSRVNPTFVUSU9O XzEwODBwMjlfOTcgPSAweDAwMDAwMDEzLCAvKiAxMDgwcDI5Xzk3ICgxOTIweDEwODAsIDI5Ljk3 cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgwcDMwCT0gMHgwMDAwMDAxNCwgLyogMTA4MHAzMCAo MTkyMHgxMDgwLCAzMHApICovCisJdmRlY1JFU09MVVRJT05fMTA4MHAyNAk9IDB4MDAwMDAwMTUs IC8qIDEwODBwMjQgKDE5MjB4MTA4MCwgMjRwKSAqLworCXZkZWNSRVNPTFVUSU9OXzEwODBwMjUJ PSAweDAwMDAwMDE2LCAvKiAxMDgwcDI1ICgxOTIweDEwODAsIDI1cCkgKi8KKwl2ZGVjUkVTT0xV VElPTl83MjBwMjQJPSAweDAwMDAwMDE3LCAvKiA3MjBwMjQgKDEyODB4NzIwLCAyNXApICovCisJ dmRlY1JFU09MVVRJT05fNzIwcDI5Xzk3ICA9IDB4MDAwMDAwMTgsIC8qIDcyMHAyOS45NyAoMTI4 MHg3MjAsIDI5Ljk3cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl80ODBwMjNfOTc2ID0gMHgwMDAwMDAx OSwgLyogNDgwcDIzLjk3NiAoNzIwKjQ4MCwgMjMuOTc2KSAqLworCXZkZWNSRVNPTFVUSU9OXzQ4 MHAyOV85NyAgPSAweDAwMDAwMDFBLCAvKiA0ODBwMjkuOTc2ICg3MjAqNDgwLCAyOS45N3ApICov CisJdmRlY1JFU09MVVRJT05fNTc2cDI1CT0gMHgwMDAwMDAxQiwgLyogNTc2cDI1ICg3MjAqNTc2 LCAyNXApICovCisJLyogRm9yIFplcm8gRnJhbWUgUmF0ZSAqLworCXZkZWNSRVNPTFVUSU9OXzQ4 MHAwCT0gMHgwMDAwMDAxQywgLyogNDgwcCAoNzIweDQ4MCwgMHApICovCisJdmRlY1JFU09MVVRJ T05fNDgwaTAJPSAweDAwMDAwMDFELCAvKiA0ODBpICg3MjB4NDgwLCAwaSkgKi8KKwl2ZGVjUkVT T0xVVElPTl81NzZwMAk9IDB4MDAwMDAwMUUsIC8qIDU3NnAgKDcyMHg1NzYsIDBwKSAqLworCXZk ZWNSRVNPTFVUSU9OXzcyMHAwCT0gMHgwMDAwMDAxRiwgLyogNzIwcCAoMTI4MHg3MjAsIDBwKSAq LworCXZkZWNSRVNPTFVUSU9OXzEwODBwMAk9IDB4MDAwMDAwMjAsIC8qIDEwODBwICgxOTIweDEw ODAsIDBwKSAqLworCXZkZWNSRVNPTFVUSU9OXzEwODBpMAk9IDB4MDAwMDAwMjEsIC8qIDEwODBp ICgxOTIweDEwODAsIDBpKSAqLwogfTsKIAogLyogQml0IGRlZmluaXRpb25zIGZvciAnZmxhZ3Mn IGZpZWxkICovCkBAIC0zNjMsNyArMzU4LDcgQEAgZW51bQogCiAjZGVmaW5lIFZERUNfRkxBR19Q SUNUVVJFX01FVEFfREFUQV9QUkVTRU5UCSgweDQwMDAwKQogCi0jZW5kaWYgLy8gX1dJTjMyIHx8 IF9XSU42NAorI2VuZGlmIC8qIF9XSU4zMiB8fCBfV0lONjQgKi8KIAogZW51bSBfQkNfT1VUUFVU X0ZPUk1BVCB7CiAJTU9ERTQyMAkJCQk9IDB4MCwKQEAgLTM5MCwxMSArMzg1LDEwIEBAIHR5cGVk ZWYgc3RydWN0IF9CQ19QSUNfSU5GT19CTE9DSyB7CiAJdWludDMyX3QJbl9kcm9wOwkvKiBudW1i ZXIgb2Ygbm9uLXJlZmVyZW5jZSBmcmFtZXMgcmVtYWluaW5nIHRvIGJlIGRyb3BwZWQgKi8KIAog CS8qIFByb3RvY29sLXNwZWNpZmljIGV4dGVuc2lvbnMuICovCi0JdW5pb24KLQl7Ci0JICBCQ19Q SUJfRVhUX0gyNjQJaDI2NDsKLQkgIEJDX1BJQl9FWFRfTVBFRwltcGVnOwotCSAgQkNfUElCX0VY VF9WQzEJIHZjMTsKKwl1bmlvbiB7CisJCUJDX1BJQl9FWFRfSDI2NAloMjY0OworCQlCQ19QSUJf RVhUX01QRUcJbXBlZzsKKwkJQkNfUElCX0VYVF9WQzEJIHZjMTsKIAl9IG90aGVyOwogCiB9IEJD X1BJQ19JTkZPX0JMT0NLLCAqUEJDX1BJQ19JTkZPX0JMT0NLOwpAQCAtNDE5LDE0ICs0MTMsMTQg QEAgZW51bSBfUE9VVF9PUFRJT05BTF9JTl9GTEFHU197CiB9OwogCiAjaWYgZGVmaW5lZChfX0tF Uk5FTF9fKSB8fCBkZWZpbmVkKF9fTElOVVhfVVNFUl9fKQotdHlwZWRlZiBCQ19TVEFUVVMgKCpk dHNfcG91dF9jYWxsYmFjaykodm9pZCAgKnNobmQsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBo ZWlnaHQsIHVpbnQzMl90IHN0cmlkZSwgdm9pZCAqcE91dCk7Cit0eXBlZGVmIEJDX1NUQVRVUygq ZHRzX3BvdXRfY2FsbGJhY2spKHZvaWQgICpzaG5kLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3Qg aGVpZ2h0LCB1aW50MzJfdCBzdHJpZGUsIHZvaWQgKnBPdXQpOwogI2Vsc2UKLXR5cGVkZWYgQkNf U1RBVFVTICgqZHRzX3BvdXRfY2FsbGJhY2spKHZvaWQgICpzaG5kLCB1aW50MzJfdCB3aWR0aCwg dWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBzdHJpZGUsIHN0cnVjdCBfQkNfRFRTX1BST0NfT1VU ICpwT3V0KTsKK3R5cGVkZWYgQkNfU1RBVFVTKCpkdHNfcG91dF9jYWxsYmFjaykodm9pZCAgKnNo bmQsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IHN0cmlkZSwgc3Ry dWN0IF9CQ19EVFNfUFJPQ19PVVQgKnBPdXQpOwogI2VuZGlmCiAKLS8vTGluZSAyMSBDbG9zZWQg Q2FwdGlvbgotLy9Vc2VyIERhdGEKLSNkZWZpbmUgTUFYX1VEX1NJWkUJCTE3OTIJLy8xOTIwIC0g MTI4CisvKiBMaW5lIDIxIENsb3NlZCBDYXB0aW9uICovCisvKiBVc2VyIERhdGEgKi8KKyNkZWZp bmUgTUFYX1VEX1NJWkUJCTE3OTIJLyogMTkyMCAtIDEyOCAqLwogCiB0eXBlZGVmIHN0cnVjdCBf QkNfRFRTX1BST0NfT1VUIHsKIAl1aW50OF90CQkqWWJ1ZmY7CQkJLyogQ2FsbGVyIFN1cHBsaWVk IGJ1ZmZlciBmb3IgWSBkYXRhICovCkBAIC00NDQsOCArNDM4LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg X0JDX0RUU19QUk9DX09VVCB7CiAKIAlCQ19QSUNfSU5GT19CTE9DSyBQaWNJbmZvOwkJLyogUGlj dHVyZSBJbmZvcm1hdGlvbiBCbG9jayBEYXRhICovCiAKLQkvL0xpbmUgMjEgQ2xvc2VkIENhcHRp b24KLQkvL1VzZXIgRGF0YQorCS8qIExpbmUgMjEgQ2xvc2VkIENhcHRpb24gKi8KKwkvKiBVc2Vy IERhdGEgKi8KIAl1aW50MzJfdAlVc2VyRGF0YVN6OwogCXVpbnQ4X3QJCVVzZXJEYXRhW01BWF9V RF9TSVpFXTsKIApAQCAtNDg4LDEwICs0ODIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0JDX0RUU19T VEFUVVMgewogfSBCQ19EVFNfU1RBVFVTOwogCiAjZGVmaW5lIEJDX1NXQVAzMihfdikJCQlcCi0J KCAoKChfdikgJiAweEZGMDAwMDAwKT4+MjQpfAlcCisJKCgoKF92KSAmIDB4RkYwMDAwMDApPj4y NCl8CVwKIAkgICgoKF92KSAmIDB4MDBGRjAwMDApPj44KXwJXAogCSAgKCgoX3YpICYgMHgwMDAw RkYwMCk8PDgpfAlcCi0JICAoKChfdikgJiAweDAwMDAwMEZGKTw8MjQpICkKKwkgICgoKF92KSAm IDB4MDAwMDAwRkYpPDwyNCkpCiAKICNkZWZpbmUgV01fQUdFTlRfVFJBWUlDT05fREVDT0RFUl9P UEVOCTEwMDAxCiAjZGVmaW5lIFdNX0FHRU5UX1RSQVlJQ09OX0RFQ09ERVJfQ0xPU0UJMTAwMDIK QEAgLTUwMSw0ICs0OTUsNCBAQCB0eXBlZGVmIHN0cnVjdCBfQkNfRFRTX1NUQVRVUyB7CiAjZGVm aW5lIFdNX0FHRU5UX1RSQVlJQ09OX0RFQ09ERVJfUEFVU0UJMTAwMDYKIAogCi0jZW5kaWYJLy9f QkNfRFRTX0RFRlNfSF8KKyNlbmRpZgkvKiBfQkNfRFRTX0RFRlNfSF8gKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19nbG9iX2xueC5oIGIvZHJpdmVycy9z dGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX2dsb2JfbG54LmgKaW5kZXggY2QyNGZhZS4uYjMxMjVl MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX2dsb2JfbG54 LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX2dsb2JfbG54LmgKQEAg LTE4OSwxMiArMTg5LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9CQ19ERUNfT1VUX0JVRkZ7CiAJQkNf UElDX0lORk9fQkxPQ0sJUGliSW5mbzsKIAl1aW50MzJfdAkJRmxhZ3M7CiAJdWludDMyX3QJCUJh ZEZyQ250OwotfUJDX0RFQ19PVVRfQlVGRjsKK30gQkNfREVDX09VVF9CVUZGOwogCiB0eXBlZGVm IHN0cnVjdCBfQkNfTk9USUZZX01PREUgewogCXVpbnQzMl90CQlNb2RlOwogCXVpbnQzMl90CQlS c3ZyWzNdOwotfUJDX05PVElGWV9NT0RFOworfSBCQ19OT1RJRllfTU9ERTsKIAogdHlwZWRlZiBz dHJ1Y3QgX0JDX0NMT0NLIHsKIAl1aW50MzJfdAkJY2xrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIHR5 cGVkZWYgc3RydWN0IF9CQ19JT0NUTF9EQVRBIHsKIAkJQkNfRFRTX1NUQVRTCQlkcnZTdGF0Owog CQlCQ19OT1RJRllfTU9ERQkJTm90aWZ5TW9kZTsKIAkJQkNfQ0xPQ0sJCQljbG9ja1ZhbHVlOwot CX11OworCX0gdTsKIAlzdHJ1Y3QgX0JDX0lPQ1RMX0RBVEEJKm5leHQ7CiB9IEJDX0lPQ1RMX0RB VEE7CiAKQEAgLTI0OSwxMSArMjQ5LDExIEBAIHR5cGVkZWYgZW51bSBfQkNfRFJWX0NNRHsKIAog CS8qIE1VU1QgYmUgdGhlIGxhc3Qgb25lLi4gKi8KIAlEUlZfQ01EX0VORCwJCQkvKiBFbmQgb2Yg dGhlIExpc3QuLiAqLwotfUJDX0RSVl9DTUQ7Cit9IEJDX0RSVl9DTUQ7CiAKICNkZWZpbmUgQkNf SU9DX0JBU0UJCSdiJwogI2RlZmluZSBCQ19JT0NfVk9JRAkJX0lPQ19OT05FCi0jZGVmaW5lIEJD X0lPQ19JT1dSKG5yLHR5cGUpCV9JT1dSKEJDX0lPQ19CQVNFLG5yLHR5cGUpCisjZGVmaW5lIEJD X0lPQ19JT1dSKG5yLCB0eXBlKQlfSU9XUihCQ19JT0NfQkFTRSwgbnIsIHR5cGUpCiAjZGVmaW5l IEJDX0lPQ1RMX01CCQlCQ19JT0NUTF9EQVRBCiAKICNkZWZpbmUJQkNNX0lPQ19HRVRfVkVSU0lP TglCQ19JT0NfSU9XUihEUlZfQ01EX1ZFUlNJT04sIEJDX0lPQ1RMX01CKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX3R5cGVzLmggYi9kcml2ZXJzL3N0YWdp bmcvY3J5c3RhbC1oZC9iY19kdHNfdHlwZXMuaAppbmRleCBhMjhjN2FmLi5lMDczZDc0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNfdHlwZXMuaAorKysgYi9k cml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNfdHlwZXMuaApAQCAtMjUsMTAgKzI1LDYg QEAKICNpZm5kZWYgX0JDX0RUU19UWVBFU19IXwogI2RlZmluZSBfQkNfRFRTX1RZUEVTX0hfCiAK LSNpZmRlZiBfX0xJTlVYX1VTRVJfXwkvLyBEb24ndCBpbmNsdWRlIHRoZXNlIGZvciBLRVJORUwu LgotI2luY2x1ZGUgPHN0ZGludC5oPgotI2VuZGlmCi0KICNpZiBkZWZpbmVkKF9XSU42NCkgfHwg ZGVmaW5lZChfV0lOMzIpCiB0eXBlZGVmIHVpbnQzMl90CQlVMzI7CiB0eXBlZGVmIGludDMyX3QJ CQlTMzI7CkBAIC0zOSw3ICszNSw3IEBAIHR5cGVkZWYgY2hhcgkJCVM4OwogI2VuZGlmCiAKICNp Zm5kZWYgUFZPSUQKLXR5cGVkZWYgdm9pZAkqCQlQVk9JRDsKK3R5cGVkZWYgdm9pZAkqUFZPSUQ7 CiAjZW5kaWYKIAogI2lmbmRlZiBCT09MCkBAIC01NiwxMyArNTIsMTMgQEAgdHlwZWRlZiBpbnQJ Qk9PTDsKICNpZiAhKGRlZmluZWQoUE9JTlRFUl8zMikpCiAjZGVmaW5lIFBPSU5URVJfMzIJX19w dHIzMgogI2VuZGlmCi0jZWxzZQkvL19XSU4zMgorI2Vsc2UJLyogX1dJTjMyICovCiAjZGVmaW5l IFBPSU5URVJfMzIKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVk KF9fTElOVVhfVVNFUl9fKQogCi0jaWZkZWYgX19MSU5VWF9VU0VSX18JLy8gRG9uJ3QgaW5jbHVk ZSB0aGVzZSBmb3IgS0VSTkVMLi4KKyNpZmRlZiBfX0xJTlVYX1VTRVJfXwkvKiBEb24ndCBpbmNs dWRlIHRoZXNlIGZvciBLRVJORUwgKi8KIHR5cGVkZWYgdWludDMyX3QJVUxPTkc7CiB0eXBlZGVm IGludDMyX3QJCUxPTkc7CiB0eXBlZGVmIHZvaWQJCSpIQU5ETEU7CkBAIC03NCwxNSArNzAsMTcg QEAgdHlwZWRlZiB1aW50MzJfdAkqTFBEV09SRDsKIHR5cGVkZWYgdW5zaWduZWQgY2hhcgkqUFVD SEFSOwogCiAjaWZuZGVmIFRSVUUKLSNkZWZpbmUgVFJVRQkJMQorCSNkZWZpbmUgVFJVRQkJMQog I2VuZGlmCiAKICNpZm5kZWYgRkFMU0UKLSNkZWZpbmUgRkFMU0UJCTAKKwkjZGVmaW5lIEZBTFNF CQkwCiAjZW5kaWYKIAogI2RlZmluZSBURVhUCisKICNlbHNlCisKIC8qIEZvciBLZXJuZWwgdXNh Z2UuLiAqLwogdHlwZWRlZiBib29sCWJjX2Jvb2xfdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMuYyBiL2RyaXZlcnMvc3RhZ2lu Zy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmMKaW5kZXggNDU3ZjI2Ny4uMzljNjQxZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMuYworKysg Yi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5jCkBAIC04OCw3ICs4 OCw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2Nfbm90aWZ5X21vZGUoc3RydWN0IGNyeXN0 YWxoZF9jbWQgKmN0eCwKIAkJcmV0dXJuIEJDX1NUU19TVUNDRVNTOwogCX0KIAlpZiAoY3R4LT5z dGF0ZSAhPSBCQ19MSU5LX0lOVkFMSUQpIHsKLQkJQkNNTE9HX0VSUigiTGluayBpbnZhbGlkIHN0 YXRlICVkIFxuIixjdHgtPnN0YXRlKTsKKwkJQkNNTE9HX0VSUigiTGluayBpbnZhbGlkIHN0YXRl ICVkIFxuIiwgY3R4LT5zdGF0ZSk7CiAJCXJldHVybiBCQ19TVFNfRVJSX1VTQUdFOwogCX0KIAkv KiBDaGVjayBmb3IgZHVwbGljYXRlIHBsYXliYWNrIHNlc3Npb25zLi4qLwpAQCAtMjM2LDcgKzIz Niw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfY2ZnX3JkKHN0cnVjdCBjcnlzdGFsaGRf Y21kICpjdHgsCiAJaWYgKCFjdHggfHwgIWlkYXRhKQogCQlyZXR1cm4gQkNfU1RTX0lOVl9BUkc7 CiAKLQl0ZW1wID0gKHVpbnQzMl90KilpZGF0YS0+dWRhdGEudS5wY2lDZmcucGNpX2NmZ19zcGFj ZTsKKwl0ZW1wID0gKHVpbnQzMl90ICopIGlkYXRhLT51ZGF0YS51LnBjaUNmZy5wY2lfY2ZnX3Nw YWNlOwogCW9mZiA9IGlkYXRhLT51ZGF0YS51LnBjaUNmZy5PZmZzZXQ7CiAJbGVuID0gaWRhdGEt PnVkYXRhLnUucGNpQ2ZnLlNpemU7CiAKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgQkNfU1RB VFVTIGJjX2Nwcm9jX2NmZ193cihzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LAogCWlmICghY3R4 IHx8ICFpZGF0YSkKIAkJcmV0dXJuIEJDX1NUU19JTlZfQVJHOwogCi0JdGVtcCA9ICh1aW50MzJf dCopaWRhdGEtPnVkYXRhLnUucGNpQ2ZnLnBjaV9jZmdfc3BhY2U7CisJdGVtcCA9ICh1aW50MzJf dCAqKSBpZGF0YS0+dWRhdGEudS5wY2lDZmcucGNpX2NmZ19zcGFjZTsKIAlvZmYgPSBpZGF0YS0+ dWRhdGEudS5wY2lDZmcuT2Zmc2V0OwogCWxlbiA9IGlkYXRhLT51ZGF0YS51LnBjaUNmZy5TaXpl OwogCkBAIC0zMDcsNiArMzA3LDcgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19kb3dubG9h ZF9mdyhzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LAogCiAJc3RzID0gY3J5c3RhbGhkX2Rvd25s b2FkX2Z3KGN0eC0+YWRwLCAodWludDhfdCAqKWlkYXRhLT5hZGRfY2RhdGEsCiAJCQkJICBpZGF0 YS0+YWRkX2NkYXRhX3N6KTsKKwogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1MpIHsKIAkJQkNN TE9HX0VSUigiRmlybXdhcmUgRG93bmxvYWQgRmFpbHVyZSEhIC0gJWRcbiIsIHN0cyk7CiAJfSBl bHNlCkBAIC0zMzQsNyArMzM1LDcgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19kb19md19j bWQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsX2QKIAl1aW50MzJf dCAqY21kOwogCiAJaWYgKCEoY3R4LT5zdGF0ZSAmIEJDX0xJTktfSU5JVCkpIHsKLQkJQkNNTE9H X0VSUigiTGluayBpbnZhbGlkIHN0YXRlICVkIFxuIixjdHgtPnN0YXRlKTsKKwkJQkNNTE9HX0VS UigiTGluayBpbnZhbGlkIHN0YXRlICVkIFxuIiwgY3R4LT5zdGF0ZSk7CiAJCXJldHVybiBCQ19T VFNfRVJSX1VTQUdFOwogCX0KIApAQCAtMzQ3LDcgKzM0OCw3IEBAIHN0YXRpYyBCQ19TVEFUVVMg YmNfY3Byb2NfZG9fZndfY21kKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9p b2N0bF9kCiAJCQljcnlzdGFsaGRfaHdfdW5wYXVzZSgmY3R4LT5od19jdHgpOwogCQl9CiAJfSBl bHNlIGlmIChjbWRbMF0gPT0gZUNNRF9DMDExX0RFQ19DSEFOX0ZMVVNIKSB7Ci0JCUJDTUxPRyhC Q01MT0dfSU5GTywiRmx1c2ggaXNzdWVkXG4iKTsKKwkJQkNNTE9HKEJDTUxPR19JTkZPLCAiRmx1 c2ggaXNzdWVkXG4iKTsKIAkJaWYgKGNtZFszXSkKIAkJCWN0eC0+Y2luX3dhaXRfZXhpdCA9IDE7 CiAJfQpAQCAtMzczLDggKzM3NCw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZG9fZndf Y21kKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9pb2N0bF9kCiBzdGF0aWMg dm9pZCBiY19wcm9jX2luX2NvbXBsZXRpb24oY3J5c3RhbGhkX2Rpb19yZXEgKmRpb19obmQsCiAJ CQkJICB3YWl0X3F1ZXVlX2hlYWRfdCAqZXZlbnQsIEJDX1NUQVRVUyBzdHMpCiB7Ci0JaWYgKCFk aW9faG5kIHx8ICFldmVudCkKLQl7CisJaWYgKCFkaW9faG5kIHx8ICFldmVudCkgewogCQlCQ01M T0dfRVJSKCJJbnZhbGlkIEFyZyEhXG4iKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQyMyw4ICs0MjMs OCBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2h3X3R4ZG1hKHN0cnVjdCBjcnlzdGFsaGRf Y21kICpjdHgsCiAJY3J5c3RhbGhkX2NyZWF0ZV9ldmVudCgmZXZlbnQpOwogCiAJY3R4LT50eF9s aXN0X2lkID0gMDsKLQkvL21zbGVlcF9pbnRlcnJ1cHRpYmxlKDIwMDApOwotCXN0cyA9IGNyeXN0 YWxoZF9od19wb3N0X3R4KCZjdHgtPmh3X2N0eCxkaW8sIGJjX3Byb2NfaW5fY29tcGxldGlvbiwK KwkvKiBtc2xlZXBfaW50ZXJydXB0aWJsZSgyMDAwKTsgKi8KKwlzdHMgPSBjcnlzdGFsaGRfaHdf cG9zdF90eCgmY3R4LT5od19jdHgsIGRpbywgYmNfcHJvY19pbl9jb21wbGV0aW9uLAogCQkJCSAm ZXZlbnQsICZ0eF9saXN0aWQsCiAJCQkJIGlkYXRhLT51ZGF0YS51LlByb2NJbnB1dC5FbmNyeXB0 ZWQpOwogCkBAIC00MzIsMTMgKzQzMiwxMyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2h3 X3R4ZG1hKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsCiAJCXN0cyA9IGJjX2Nwcm9jX2NvZGVp bl9zbGVlcChjdHgpOwogCQlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQogCQkJYnJlYWs7Ci0J CXN0cyA9IGNyeXN0YWxoZF9od19wb3N0X3R4KCZjdHgtPmh3X2N0eCxkaW8sCisJCXN0cyA9IGNy eXN0YWxoZF9od19wb3N0X3R4KCZjdHgtPmh3X2N0eCwgZGlvLAogCQkJCQkgYmNfcHJvY19pbl9j b21wbGV0aW9uLAogCQkJCQkgJmV2ZW50LCAmdHhfbGlzdGlkLAogCQkJCQkgaWRhdGEtPnVkYXRh LnUuUHJvY0lucHV0LkVuY3J5cHRlZCk7CiAJfQogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1Mp IHsKLQkJQkNNTE9HKEJDTUxPR19EQkcsIl9od190eGRtYSByZXR1cm5pbmcgc3RzOiVkXG4iLHN0 cyk7CisJCUJDTUxPRyhCQ01MT0dfREJHLCAiX2h3X3R4ZG1hIHJldHVybmluZyBzdHM6JWRcbiIs IHN0cyk7CiAJCXJldHVybiBzdHM7CiAJfQogCWlmIChjdHgtPmNpbl93YWl0X2V4aXQpCkBAIC00 NTIsMTAgKzQ1MiwxMCBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2h3X3R4ZG1hKHN0cnVj dCBjcnlzdGFsaGRfY21kICpjdHgsCiAJaWYgKCFyYykgewogCQlyZXR1cm4gZGlvLT51aW5mby5j b21wX3N0czsKIAl9IGVsc2UgaWYgKHJjID09IC1FQlVTWSkgewotCQlCQ01MT0coQkNNTE9HX0RC RywiX3R4X3Bvc3QoKSBUL08gXG4iKTsKKwkJQkNNTE9HKEJDTUxPR19EQkcsICJfdHhfcG9zdCgp IFQvTyBcbiIpOwogCQlzdHMgPSBCQ19TVFNfVElNRU9VVDsKIAl9IGVsc2UgaWYgKHJjID09IC1F SU5UUikgewotCQlCQ01MT0coQkNNTE9HX0RCRywiVHggV2FpdCBTaWduYWwgaW50LlxuIik7CisJ CUJDTUxPRyhCQ01MT0dfREJHLCAiVHggV2FpdCBTaWduYWwgaW50LlxuIik7CiAJCXN0cyA9IEJD X1NUU19JT19VU0VSX0FCT1JUOwogCX0gZWxzZSB7CiAJCXN0cyA9IEJDX1NUU19JT19FUlJPUjsK QEAgLTQ3NiwxNCArNDc2LDE0IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfY2hlY2tfaW5i dWZmcyhib29sIHBpbiwgdm9pZCAqdWJ1ZmYsIHVpbnQzMl90IHViX3N6LAogewogCWlmICghdWJ1 ZmYgfHwgIXViX3N6KSB7CiAJCUJDTUxPR19FUlIoIiVzLT5JbnZhbGlkIEFyZyAlcCAleFxuIiwK LQkJCSgocGluKT8iVFgiOiJSWCIpLHVidWZmLHViX3N6KTsKKwkJCSgocGluKSA/ICJUWCIgOiAi UlgiKSwgdWJ1ZmYsIHViX3N6KTsKIAkJcmV0dXJuIEJDX1NUU19JTlZfQVJHOwogCX0KIAogCS8q IENoZWNrIGZvciBhbGlnbm1lbnQgKi8KIAlpZiAoKCh1aW50cHRyX3QpdWJ1ZmYpICYgMHgwMykg ewogCQlCQ01MT0dfRVJSKCIlcy0tPlVuLWFsaWduZWQgYWRkcmVzcyBub3QgaW1wbGVtZW50ZWQg eWV0Li4gJXAgXG4iLAotCQkJCSgocGluKT8iVFgiOiJSWCIpLHVidWZmKTsKKwkJCQkoKHBpbikg PyAiVFgiIDogIlJYIiksIHVidWZmKTsKIAkJcmV0dXJuIEJDX1NUU19OT1RfSU1QTDsKIAl9CiAJ aWYgKHBpbikKQEAgLTUxNywxMyArNTE3LDEzIEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2Nf cHJvY19pbnB1dChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBjcnlzdGFsaGRfaW9jdGxfCiAJ dWJ1ZmYgPSBpZGF0YS0+dWRhdGEudS5Qcm9jSW5wdXQucERtYUJ1ZmY7CiAJdWJfc3ogPSBpZGF0 YS0+dWRhdGEudS5Qcm9jSW5wdXQuQnVmZlN6OwogCi0Jc3RzID0gYmNfY3Byb2NfY2hlY2tfaW5i dWZmcygxLCB1YnVmZiwgdWJfc3osIDAsMCk7CisJc3RzID0gYmNfY3Byb2NfY2hlY2tfaW5idWZm cygxLCB1YnVmZiwgdWJfc3osIDAsIDApOwogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1MpCiAJ CXJldHVybiBzdHM7CiAKLQlzdHMgPSBjcnlzdGFsaGRfbWFwX2RpbyhjdHgtPmFkcCwgdWJ1ZmYs IHViX3N6LDAsMCwxLCZkaW9faG5kKTsKKwlzdHMgPSBjcnlzdGFsaGRfbWFwX2RpbyhjdHgtPmFk cCwgdWJ1ZmYsIHViX3N6LCAwLCAwLCAxLCAmZGlvX2huZCk7CiAJaWYgKHN0cyAhPSBCQ19TVFNf U1VDQ0VTUykgewotCQlCQ01MT0dfRVJSKCJkaW8gbWFwIC0gJWQgXG4iLHN0cyk7CisJCUJDTUxP R19FUlIoImRpbyBtYXAgLSAlZCBcbiIsIHN0cyk7CiAJCXJldHVybiBzdHM7CiAJfQogCkBAIC01 NDMsNyArNTQzLDcgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19hZGRfY2FwX2J1ZmYoc3Ry dWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwKIAl2b2lkICp1YnVmZjsKIAl1aW50MzJfdCB1Yl9zeiwg dXZfb2ZmOwogCWJvb2wgZW5fNDIyOwotCWNyeXN0YWxoZF9kaW9fcmVxICpkaW9faG5kPU5VTEw7 CisJY3J5c3RhbGhkX2Rpb19yZXEgKmRpb19obmQgPSBOVUxMOwogCUJDX1NUQVRVUyBzdHMgPSBC Q19TVFNfU1VDQ0VTUzsKIAogCWlmICghY3R4IHx8ICFpZGF0YSkgewpAQCAtNTU2LDI0ICs1NTYs MjMgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19hZGRfY2FwX2J1ZmYoc3RydWN0IGNyeXN0 YWxoZF9jbWQgKmN0eCwKIAl1dl9vZmYgPSBpZGF0YS0+dWRhdGEudS5SeEJ1ZmZzLlVWYnVmZk9m ZnNldDsKIAllbl80MjIgPSBpZGF0YS0+dWRhdGEudS5SeEJ1ZmZzLmI0MjJNb2RlOwogCi0Jc3Rz ID0gYmNfY3Byb2NfY2hlY2tfaW5idWZmcygwLCB1YnVmZiwgdWJfc3osIHV2X29mZixlbl80MjIp OworCXN0cyA9IGJjX2Nwcm9jX2NoZWNrX2luYnVmZnMoMCwgdWJ1ZmYsIHViX3N6LCB1dl9vZmYs IGVuXzQyMik7CiAJaWYgKHN0cyAhPSBCQ19TVFNfU1VDQ0VTUykKIAkJcmV0dXJuIHN0czsKIAog CXN0cyA9IGNyeXN0YWxoZF9tYXBfZGlvKGN0eC0+YWRwLCB1YnVmZiwgdWJfc3osIHV2X29mZiwK IAkJCSAgICAgIGVuXzQyMiwgMCwgJmRpb19obmQpOwogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NF U1MpIHsKLQkJQkNNTE9HX0VSUigiZGlvIG1hcCAtICVkIFxuIixzdHMpOworCQlCQ01MT0dfRVJS KCJkaW8gbWFwIC0gJWQgXG4iLCBzdHMpOwogCQlyZXR1cm4gc3RzOwogCX0KIAogCWlmICghZGlv X2huZCkKIAkJcmV0dXJuIEJDX1NUU19FUlJPUjsKIAotCXN0cyA9IGNyeXN0YWxoZF9od19hZGRf Y2FwX2J1ZmZlcigmY3R4LT5od19jdHgsZGlvX2huZCwKLQkJCQkJKGN0eC0+c3RhdGUgPT0gQkNf TElOS19SRUFEWSkpOworCXN0cyA9IGNyeXN0YWxoZF9od19hZGRfY2FwX2J1ZmZlcigmY3R4LT5o d19jdHgsIGRpb19obmQsIChjdHgtPnN0YXRlID09IEJDX0xJTktfUkVBRFkpKTsKIAlpZiAoKHN0 cyAhPSBCQ19TVFNfU1VDQ0VTUykgJiYgKHN0cyAhPSBCQ19TVFNfQlVTWSkpIHsKLQkJY3J5c3Rh bGhkX3VubWFwX2RpbyhjdHgtPmFkcCxkaW9faG5kKTsKKwkJY3J5c3RhbGhkX3VubWFwX2Rpbyhj dHgtPmFkcCwgZGlvX2huZCk7CiAJCXJldHVybiBzdHM7CiAJfQogCkBAIC02MDksNyArNjA4LDcg QEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19mZXRjaF9mcmFtZShzdHJ1Y3QgY3J5c3RhbGhk X2NtZCAqY3R4LAogCX0KIAogCWlmICghKGN0eC0+c3RhdGUgJiBCQ19MSU5LX0NBUF9FTikpIHsK LQkJQkNNTE9HKEJDTUxPR19EQkcsIkNhcHR1cmUgbm90IGVuYWJsZWQuLiV4XG4iLCBjdHgtPnN0 YXRlKTsKKwkJQkNNTE9HKEJDTUxPR19EQkcsICJDYXB0dXJlIG5vdCBlbmFibGVkLi4leFxuIiwg Y3R4LT5zdGF0ZSk7CiAJCXJldHVybiBCQ19TVFNfRVJSX1VTQUdFOwogCX0KIApAQCAtNjE3LDEz ICs2MTYsMTIgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19mZXRjaF9mcmFtZShzdHJ1Y3Qg Y3J5c3RhbGhkX2NtZCAqY3R4LAogCiAJc3RzID0gY3J5c3RhbGhkX2h3X2dldF9jYXBfYnVmZmVy KCZjdHgtPmh3X2N0eCwgJmZyYW1lLT5QaWJJbmZvLCAmZGlvKTsKIAlpZiAoc3RzICE9IEJDX1NU U19TVUNDRVNTKQotCQlyZXR1cm4gKChjdHgtPnN0YXRlICYgQkNfTElOS19TVVNQRU5EKSA/Ci0J CQlCQ19TVFNfSU9fVVNFUl9BQk9SVCA6IHN0cyk7CisJCXJldHVybiAoY3R4LT5zdGF0ZSAmIEJD X0xJTktfU1VTUEVORCkgPyBCQ19TVFNfSU9fVVNFUl9BQk9SVCA6IHN0czsKIAogCWZyYW1lLT5G bGFncyA9IGRpby0+dWluZm8uY29tcF9mbGFnczsKIAogCWlmIChmcmFtZS0+RmxhZ3MgJiBDT01Q X0ZMQUdfRk1UX0NIQU5HRSkKLQkJcmV0dXJuIGJjX2Nwcm9jX2ZtdF9jaGFuZ2UoY3R4LGRpbyk7 CisJCXJldHVybiBiY19jcHJvY19mbXRfY2hhbmdlKGN0eCwgZGlvKTsKIAogCWZyYW1lLT5PdXRQ dXRCdWZmcy5ZdXZCdWZmID0gZGlvLT51aW5mby54ZnJfYnVmZjsKIAlmcmFtZS0+T3V0UHV0QnVm ZnMuWXV2QnVmZlN6ID0gZGlvLT51aW5mby54ZnJfbGVuOwpAQCAtNjczLDEyICs2NzEsMTEgQEAg c3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19mbHVzaF9jYXBfYnVmZnMoc3RydWN0IGNyeXN0YWxo ZF9jbWQgKmN0eCwKIAlmcmFtZSA9ICZpZGF0YS0+dWRhdGEudS5EZWNPdXREYXRhOwogCWZvciAo Y291bnQgPSAwOyBjb3VudCA8IEJDX1JYX0xJU1RfQ05UOyBjb3VudCsrKSB7CiAKLQkJc3RzID0g Y3J5c3RhbGhkX2h3X2dldF9jYXBfYnVmZmVyKCZjdHgtPmh3X2N0eCwKLQkJCQkJCSZmcmFtZS0+ UGliSW5mbywmZGlvKTsKKwkJc3RzID0gY3J5c3RhbGhkX2h3X2dldF9jYXBfYnVmZmVyKCZjdHgt Pmh3X2N0eCwgJmZyYW1lLT5QaWJJbmZvLCAmZGlvKTsKIAkJaWYgKHN0cyAhPSBCQ19TVFNfU1VD Q0VTUykKIAkJCWJyZWFrOwogCi0JCWNyeXN0YWxoZF91bm1hcF9kaW8oY3R4LT5hZHAsZGlvKTsK KwkJY3J5c3RhbGhkX3VubWFwX2RpbyhjdHgtPmFkcCwgZGlvKTsKIAl9CiAKIAlyZXR1cm4gY3J5 c3RhbGhkX2h3X3N0b3BfY2FwdHVyZSgmY3R4LT5od19jdHgpOwpAQCAtNzM3LDcgKzczNCw3IEBA IHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfY2hnX2NsayhzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAq Y3R4LAogCX0KIAogCWNsb2NrID0gJmlkYXRhLT51ZGF0YS51LmNsb2NrVmFsdWU7Ci0Jb2xkQ2xr PSBjdHgtPmh3X2N0eC5jb3JlX2Nsb2NrX21oejsKKwlvbGRDbGsgPSBjdHgtPmh3X2N0eC5jb3Jl X2Nsb2NrX21oejsKIAljdHgtPmh3X2N0eC5jb3JlX2Nsb2NrX21oeiA9IGNsb2NrLT5jbGs7CiAK IAlpZiAoY3R4LT5zdGF0ZSAmIEJDX0xJTktfUkVBRFkpIHsKQEAgLTgxMiw3ICs4MDksNyBAQCBC Q19TVEFUVVMgY3J5c3RhbGhkX3N1c3BlbmQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5 c3RhbGhkX2lvY3RsX2RhdGEgKmlkYQogCQlyZXR1cm4gQkNfU1RTX1NVQ0NFU1M7CiAKIAlpZiAo Y3R4LT5zdGF0ZSA9PSBCQ19MSU5LX0lOVkFMSUQpIHsKLQkJQkNNTE9HKEJDTUxPR19EQkcsIiBO b3RoaW5nIFRvIERvIFN1c3BlbmQgU3VjY2Vzc1xuIik7CisJCUJDTUxPRyhCQ01MT0dfREJHLCAi Tm90aGluZyBUbyBEbyBTdXNwZW5kIFN1Y2Nlc3NcbiIpOwogCQlyZXR1cm4gQkNfU1RTX1NVQ0NF U1M7CiAJfQogCkBAIC04MjEsMTMgKzgxOCwxMyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX3N1c3Bl bmQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEgKmlkYQog CWJjX2Nwcm9jX21hcmtfcHdyX3N0YXRlKGN0eCk7CiAKIAlpZiAoY3R4LT5zdGF0ZSAmIEJDX0xJ TktfQ0FQX0VOKSB7Ci0JCXN0cyA9IGJjX2Nwcm9jX2ZsdXNoX2NhcF9idWZmcyhjdHgsaWRhdGEp OworCQlzdHMgPSBiY19jcHJvY19mbHVzaF9jYXBfYnVmZnMoY3R4LCBpZGF0YSk7CiAJCWlmIChz dHMgIT0gQkNfU1RTX1NVQ0NFU1MpCiAJCQlyZXR1cm4gc3RzOwogCX0KIAogCWlmIChjdHgtPnR4 X2xpc3RfaWQpIHsKLQkJc3RzID0gY3J5c3RhbGhkX2h3X2NhbmNlbF90eCgmY3R4LT5od19jdHgs Y3R4LT50eF9saXN0X2lkKTsKKwkJc3RzID0gY3J5c3RhbGhkX2h3X2NhbmNlbF90eCgmY3R4LT5o d19jdHgsIGN0eC0+dHhfbGlzdF9pZCk7CiAJCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1MpCiAJ CQlyZXR1cm4gc3RzOwogCX0KQEAgLTgzNiw3ICs4MzMsNyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhk X3N1c3BlbmQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEg KmlkYQogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1MpCiAJCXJldHVybiBzdHM7CiAKLQlCQ01M T0coQkNNTE9HX0RCRywiIEJDTTcwMDEyIHN1c3BlbmQgc3VjY2Vzc1xuIik7CisJQkNNTE9HKEJD TUxPR19EQkcsICJCQ003MDAxMiBzdXNwZW5kIHN1Y2Nlc3NcbiIpOwogCiAJcmV0dXJuIEJDX1NU U19TVUNDRVNTOwogfQpAQCAtODU5LDcgKzg1Niw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfc3Vz cGVuZChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBjcnlzdGFsaGRfaW9jdGxfZGF0YSAqaWRh CiAgKi8KIEJDX1NUQVRVUyBjcnlzdGFsaGRfcmVzdW1lKHN0cnVjdCBjcnlzdGFsaGRfY21kICpj dHgpCiB7Ci0JQkNNTE9HKEJDTUxPR19EQkcsIiBjcnlzdGFsaGRfcmVzdW1lIFN1Y2Nlc3MgJXhc biIsY3R4LT5zdGF0ZSk7CisJQkNNTE9HKEJDTUxPR19EQkcsICJjcnlzdGFsaGRfcmVzdW1lIFN1 Y2Nlc3MgJXhcbiIsIGN0eC0+c3RhdGUpOwogCiAJYmNfY3Byb2NfbWFya19wd3Jfc3RhdGUoY3R4 KTsKIApAQCAtODkwLDExICs4ODcsMTEgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF91c2VyX29wZW4o c3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwKIAogCXVjID0gYmNfY3Byb2NfZ2V0X3VpZChjdHgp OwogCWlmICghdWMpIHsKLQkJQkNNTE9HKEJDTUxPR19JTkZPLCJObyBmcmVlIHVzZXIgY29udGV4 dC4uLlxuIik7CisJCUJDTUxPRyhCQ01MT0dfSU5GTywgIk5vIGZyZWUgdXNlciBjb250ZXh0Li4u XG4iKTsKIAkJcmV0dXJuIEJDX1NUU19CVVNZOwogCX0KIAotCUJDTUxPRyhCQ01MT0dfSU5GTywg Ik9wZW5pbmcgbmV3IHVzZXJbJXhdIGhhbmRsZVxuIix1Yy0+dWlkKTsKKwlCQ01MT0coQkNNTE9H X0lORk8sICJPcGVuaW5nIG5ldyB1c2VyWyV4XSBoYW5kbGVcbiIsIHVjLT51aWQpOwogCiAJY3J5 c3RhbGhkX2h3X29wZW4oJmN0eC0+aHdfY3R4LCBjdHgtPmFkcCk7CiAKQEAgLTEwMjksNyArMTAy Niw3IEBAIGNyeXN0YWxoZF9jbWRfcHJvYyBjcnlzdGFsaGRfZ2V0X2NtZF9wcm9jKHN0cnVjdCBj cnlzdGFsaGRfY21kICpjdHgsIHVpbnQzMl90IGNtCiAJCWlmIChnX2NyeXN0YWxoZF9jcHJvY190 YmxbaV0uY21kX2lkID09IGNtZCkgewogCQkJaWYgKCh1Yy0+bW9kZSA9PSBEVFNfTU9OSVRPUl9N T0RFKSAmJgogCQkJICAgIChnX2NyeXN0YWxoZF9jcHJvY190YmxbaV0uYmxvY2tfbW9uKSkgewot CQkJCUJDTUxPRyhCQ01MT0dfSU5GTywiQmxvY2tpbmcgY21kICVkIFxuIixjbWQpOworCQkJCUJD TUxPRyhCQ01MT0dfSU5GTywgIkJsb2NraW5nIGNtZCAlZCBcbiIsIGNtZCk7CiAJCQkJYnJlYWs7 CiAJCQl9CiAJCQljcHJvYyA9IGdfY3J5c3RhbGhkX2Nwcm9jX3RibFtpXS5jbWRfcHJvYzsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmggYi9k cml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5oCmluZGV4IGYxZjE1YzYu LjZiMjkwYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxo ZF9jbWRzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMu aApAQCAtNzksOSArNzksOSBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX3N1c3BlbmQoc3RydWN0IGNy eXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEgKmlkYQogQkNfU1RBVFVTIGNy eXN0YWxoZF9yZXN1bWUoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCk7CiBjcnlzdGFsaGRfY21k X3Byb2MgY3J5c3RhbGhkX2dldF9jbWRfcHJvYyhzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCB1 aW50MzJfdCBjbWQsCiAJCQkJICAgICAgc3RydWN0IGNyeXN0YWxoZF91c2VyICp1Yyk7Ci1CQ19T VEFUVVMgY3J5c3RhbGhkX3VzZXJfb3BlbihzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBzdHJ1 Y3QgY3J5c3RhbGhkX3VzZXIqKnVzZXJfY3R4KTsKLUJDX1NUQVRVUyBjcnlzdGFsaGRfdXNlcl9j bG9zZShzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LHN0cnVjdCBjcnlzdGFsaGRfdXNlciAqdWMp OwotQkNfU1RBVFVTIGNyeXN0YWxoZF9zZXR1cF9jbWRfY29udGV4dChzdHJ1Y3QgY3J5c3RhbGhk X2NtZCAqY3R4LHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApOworQkNfU1RBVFVTIGNyeXN0YWxo ZF91c2VyX29wZW4oc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgc3RydWN0IGNyeXN0YWxoZF91 c2VyICoqdXNlcl9jdHgpOworQkNfU1RBVFVTIGNyeXN0YWxoZF91c2VyX2Nsb3NlKHN0cnVjdCBj cnlzdGFsaGRfY21kICpjdHgsIHN0cnVjdCBjcnlzdGFsaGRfdXNlciAqdWMpOworQkNfU1RBVFVT IGNyeXN0YWxoZF9zZXR1cF9jbWRfY29udGV4dChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBz dHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwKTsKIEJDX1NUQVRVUyBjcnlzdGFsaGRfZGVsZXRlX2Nt ZF9jb250ZXh0KHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgpOwogYm9vbCBjcnlzdGFsaGRfY21k X2ludGVycnVwdChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4KTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2Z3X2lmLmggYi9kcml2ZXJzL3N0YWdp bmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfZndfaWYuaAppbmRleCBjYzdjY2UyLi4yNjFjZDE5IDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfZndfaWYuaAor KysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfZndfaWYuaApAQCAtMjgs OCArMjgsOCBAQAogI2RlZmluZSBfQ1JZU1RBTEhEX0ZXX0lGX0hfCiAKIC8qIFRCRDogUHVsbCBp biBvbmx5IHJlcXVpcmVkIGRlZnMgaW50byB0aGlzIGZpbGUuLiAqLwotLy8jaW5jbHVkZSAiNzQx MWQuaCIKLS8vI2luY2x1ZGUgInZkZWNfaW5mby5oIgorCisKIAogLyogVXNlciBEYXRhIEhlYWRl ciAqLwogdHlwZWRlZiBzdHJ1Y3QgdXNlcl9kYXRhIHsKQEAgLTEwMiwxMCArMTAyLDEwIEBAIHR5 cGVkZWYgc3RydWN0IHsKICAqIENvbnRlbnQgb2YgdGhlIGZpbG0gZ3JhaW4gU0VJIG1lc3NhZ2Uu CiAgKi8KIAotLy9tYXhpbXVtIG51bWJlciBvZiBtb2RlbC12YWx1ZXMgYXMgZm9yIFRob21zb24g c3BlYyhzdGFuZGFyZCBzYXlzIDUpCisvKiBtYXhpbXVtIG51bWJlciBvZiBtb2RlbC12YWx1ZXMg YXMgZm9yIFRob21zb24gc3BlYyhzdGFuZGFyZCBzYXlzIDUpICovCiAjZGVmaW5lIE1BWF9GR1Rf TU9ERUxfVkFMVUUJICgzKQogCi0vL21heGltdW0gbnVtYmVyIG9mIGludGVydmFscyhhcyBtYW55 IGFzIDI1NiBpbnRlcnZhbHM/KQorLyogbWF4aW11bSBudW1iZXIgb2YgaW50ZXJ2YWxzKGFzIG1h bnkgYXMgMjU2IGludGVydmFscz8pICovCiAjZGVmaW5lIE1BWF9GR1RfVkFMVUVfSU5URVJWQUwJ KDI1NikKIAogdHlwZWRlZiBzdHJ1Y3QgRkdUX1NFSSB7CkBAIC0xMTcsNyArMTE3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgRkdUX1NFSSB7CiAgICAgdW5zaWduZWQgY2hhciBjYW5jZWxfZmxhZzsJLyog Q2FuY2VsIGZsYWc6IDEgbm8gZmlsbSBncmFpbi4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG1vZGVs X2lkOwkvKiBNb2RlbCBpZC4gKi8KIAotICAgIC8vK3VudXNlZCBTRSBiYXNlZCBvbiBUaG9tc29u IHNwZWMKKyAgICAvKiArdW51c2VkIFNFIGJhc2VkIG9uIFRob21zb24gc3BlYyAqLwogICAgIHVu c2lnbmVkIGNoYXIgY29sb3JfZGVzY19mbGFnOwkvKiBTZXBhcmF0ZSBjb2xvciBkZXNjcml0aW9u IGZsYWcuICovCiAgICAgdW5zaWduZWQgY2hhciBiaXRfZGVwdGhfbHVtYTsJLyogQml0IGRlcHRo IGx1bWEgbWludXMgOC4gKi8KICAgICB1bnNpZ25lZCBjaGFyIGJpdF9kZXB0aF9jaHJvbWE7CS8q IEJpdCBkZXB0aCBjaHJvbWEgbWludXMgOC4gKi8KQEAgLTEyNSw3ICsxMjUsNyBAQCB0eXBlZGVm IHN0cnVjdCBGR1RfU0VJIHsKICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yX3ByaW1hcmllczsJLyog Q29sb3IgcHJpbWFyaWVzLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNmZXJfY2hhcmFjdDsJ LyogVHJhbnNmZXIgY2hhcmFjdGVyaXN0aWNzLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgbWF0cml4 X2NvZWZmOwkJLyo8IE1hdHJpeCBjb2VmZmljaWVudHMuICovCi0gICAgLy8tdW51c2VkIFNFIGJh c2VkIG9uIFRob21zb24gc3BlYworICAgIC8qIC11bnVzZWQgU0UgYmFzZWQgb24gVGhvbXNvbiBz cGVjICovCiAKICAgICB1bnNpZ25lZCBjaGFyIGJsZW5kaW5nX21vZGVfaWQ7CS8qIEJsZW5kaW5n IG1vZGUuICovCiAgICAgdW5zaWduZWQgY2hhciBsb2cyX3NjYWxlX2ZhY3RvcjsJLyogTG9nMiBz Y2FsZSBmYWN0b3IgKDItNykuICovCkBAIC0yNTYsMTIgKzI1NiwxMCBAQCB0eXBlZGVmIHN0cnVj dCB7CiAjZGVmaW5lIGVDTURfQzAxMV9DTURfQkFTRQkgICgweDczNzYzMDAwKQogCiAvKiBob3N0 IGNvbW1hbmRzICovCi10eXBlZGVmIGVudW0KLXsKLQotICAgIGVDTURfVFNfR0VUX05FWFRfUElD CT0gMHg3Mzc2RjEwMCwgLy8gZGVidWcgZ2V0IG5leHQgcGljdHVyZQotICAgIGVDTURfVFNfR0VU X0xBU1RfUElDCT0gMHg3Mzc2RjEwMiwgLy8gZGVidWcgZ2V0IGxhc3QgcGljIHN0YXR1cwotICAg IGVDTURfVFNfUkVBRF9XUklURV9NRU0JPSAweDczNzZGMTA0LCAvLyBkZWJ1ZyByZWFkIHdyaXRl IG1lbW9yeQordHlwZWRlZiBlbnVtIHsKKyAgICBlQ01EX1RTX0dFVF9ORVhUX1BJQwk9IDB4NzM3 NkYxMDAsIC8qIGRlYnVnIGdldCBuZXh0IHBpY3R1cmUgKi8KKyAgICBlQ01EX1RTX0dFVF9MQVNU X1BJQwk9IDB4NzM3NkYxMDIsIC8qIGRlYnVnIGdldCBsYXN0IHBpYyBzdGF0dXMgKi8KKyAgICBl Q01EX1RTX1JFQURfV1JJVEVfTUVNCT0gMHg3Mzc2RjEwNCwgLyogZGVidWcgcmVhZCB3cml0ZSBt ZW1vcnkgKi8KIAogICAgIC8qIE5ldyBBUEkgY29tbWFuZHMgKi8KICAgICAvKiBHZW5lcmFsIGNv bW1hbmRzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFs aGRfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9ody5jCmluZGV4 IDQxMmFmZjMuLjAxODE5ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhk L2NyeXN0YWxoZF9ody5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxo ZF9ody5jCkBAIC0zMCw4ICszMCw4IEBACiAKIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9lbmFibGVf dWFydHMoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCkKIHsKLQliY19kZWNfcmVnX3dyKGFkcCxV YXJ0U2VsZWN0QSxCU1ZTX1VBUlRfU1RSRUFNKTsKLQliY19kZWNfcmVnX3dyKGFkcCxVYXJ0U2Vs ZWN0QixCU1ZTX1VBUlRfREVDX09VVEVSKTsKKwliY19kZWNfcmVnX3dyKGFkcCwgVWFydFNlbGVj dEEsIEJTVlNfVUFSVF9TVFJFQU0pOworCWJjX2RlY19yZWdfd3IoYWRwLCBVYXJ0U2VsZWN0Qiwg QlNWU19VQVJUX0RFQ19PVVRFUik7CiB9CiAKIApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgYm9v bCBjcnlzdGFsaGRfYnJpbmdfb3V0X29mX3JzdChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwKQog CSAqIGRlbGF5IHRvIGFsbG93IFBMTCB0byBsb2NrIENsZWFyIGFsdGVybmF0ZSBjbG9jaywgc3Rv cCBjbG9jayBiaXRzCiAJICovCiAJcnN0X2Nsa19jbnRybC53aG9sZV9yZWcgPSBjcnlzdGFsaGRf cmVnX3JkKGFkcCwgTUlTQ19QRVJTVF9DTE9DS19DVFJMKTsKLQlyc3RfY2xrX2NudHJsLnBsbF9w d3JfZG4gPTA7CisJcnN0X2Nsa19jbnRybC5wbGxfcHdyX2RuID0gMDsKIAljcnlzdGFsaGRfcmVn X3dyKGFkcCwgTUlTQ19QRVJTVF9DTE9DS19DVFJMLCByc3RfY2xrX2NudHJsLndob2xlX3JlZyk7 CiAJbXNsZWVwX2ludGVycnVwdGlibGUoNTApOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj IGJvb2wgY3J5c3RhbGhkX2JyaW5nX291dF9vZl9yc3Qoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFk cCkKIAltc2xlZXBfaW50ZXJydXB0aWJsZSg1MCk7CiAKIAkvKiBEaXNhYmxlIE9UUF9DT05URU5U X01JU0MgdG8gMCB0byBkaXNhYmxlIGFsbCBzZWN1cmUgbW9kZXMgKi8KLQljcnlzdGFsaGRfcmVn X3dyKGFkcCxPVFBfQ09OVEVOVF9NSVNDLCAwKTsKKwljcnlzdGFsaGRfcmVnX3dyKGFkcCwgT1RQ X0NPTlRFTlRfTUlTQywgMCk7CiAKIAkvKiBDbGVhciBiaXQgMjkgb2YgMHg0MDQgKi8KIAl0ZW1w ID0gY3J5c3RhbGhkX3JlZ19yZChhZHAsIFBDSUVfVExfVFJBTlNBQ1RJT05fQ09ORklHVVJBVElP Tik7CkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIHZvaWQgY3J5c3RhbGhkX2VuYWJsZV9pbnRl cnJ1cHRzKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApCiAJaW50cl9tYXNrLm1hc2tfcnhfZXJy ICA9IDE7CiAJaW50cl9tYXNrLm1hc2tfdHhfZG9uZSA9IDE7CiAJaW50cl9tYXNrLm1hc2tfdHhf ZXJyICA9IDE7Ci0JY3J5c3RhbGhkX3JlZ193cihhZHAsSU5UUl9JTlRSX01TS19DTFJfUkVHLGlu dHJfbWFzay53aG9sZV9yZWcpOworCWNyeXN0YWxoZF9yZWdfd3IoYWRwLCBJTlRSX0lOVFJfTVNL X0NMUl9SRUcsIGludHJfbWFzay53aG9sZV9yZWcpOwogCiAJcmV0dXJuOwogfQpAQCAtMzI2LDcg KzMyNiw3IEBAIHN0YXRpYyBib29sIGNyeXN0YWxoZF9zdG9wX2RldmljZShzdHJ1Y3QgY3J5c3Rh bGhkX2FkcCAqYWRwKQogewogCXVpbnQzMl90IHJlZzsKIAotCUJDTUxPRyhCQ01MT0dfSU5GTywi U3RvcHBpbmcgQkNNNzAwMTIgRGV2aWNlXG4iKTsKKwlCQ01MT0coQkNNTE9HX0lORk8sICJTdG9w cGluZyBCQ003MDAxMiBEZXZpY2VcbiIpOwogCS8qIENsZWFyIGFuZCBkaXNhYmxlIGludGVycnVw dHMgKi8KIAljcnlzdGFsaGRfZGlzYWJsZV9pbnRlcnJ1cHRzKGFkcCk7CiAJY3J5c3RhbGhkX2Ns ZWFyX2Vycm9ycyhhZHApOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRpYyBjcnlzdGFsaGRfcnhf ZG1hX3BrdCAqY3J5c3RhbGhkX2h3X2FsbG9jX3J4X3BrdChzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpo dykKIAkJdGVtcC0+cGt0X3RhZyA9IDA7CiAJCXRlbXAtPmZsYWdzID0gMDsKIAl9Ci0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmaHctPmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmh3LT5sb2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gdGVtcDsKIH0KQEAgLTQwOCw3ICs0MDgs NyBAQCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfcnhfcGt0X3JlbF9jYWxsX2JhY2sodm9pZCAqY29u dGV4dCwgdm9pZCAqZGF0YSkKIAljcnlzdGFsaGRfcnhfZG1hX3BrdCAqcGt0ID0gKGNyeXN0YWxo ZF9yeF9kbWFfcGt0ICopZGF0YTsKIAogCWlmICghcGt0IHx8ICFodykgewotCQlCQ01MT0dfRVJS KCJJbnZhbGlkIGFyZyAtICVwICVwXG4iLGh3LHBrdCk7CisJCUJDTUxPR19FUlIoIkludmFsaWQg YXJnIC0gJXAgJXBcbiIsIGh3LCBwa3QpOwogCQlyZXR1cm47CiAJfQogCkBAIC00MzEsNyArNDMx LDcgQEAgc3RhdGljIHZvaWQgY3J5c3RhbGhkX2h3X2RlbGV0ZV9pb3FzKHN0cnVjdCBjcnlzdGFs aGRfaHcgKmh3KQogCWlmICghaHcpCiAJCXJldHVybjsKIAotCUJDTUxPRyhCQ01MT0dfREJHLCJE ZWxldGluZyBJT1FzIFxuIik7CisJQkNNTE9HKEJDTUxPR19EQkcsICJEZWxldGluZyBJT1FzIFxu Iik7CiAJY3J5c3RhbGhkX2h3X2RlbGV0ZV9pb3EoaHctPmFkcCwgaHctPnR4X2FjdHEpOwogCWNy eXN0YWxoZF9od19kZWxldGVfaW9xKGh3LT5hZHAsIGh3LT50eF9mcmVlcSk7CiAJY3J5c3RhbGhk X2h3X2RlbGV0ZV9pb3EoaHctPmFkcCwgaHctPnJ4X2FjdHEpOwpAQCAtNDQwLDkgKzQ0MCwxMSBA QCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfaHdfZGVsZXRlX2lvcXMoc3RydWN0IGNyeXN0YWxoZF9o dyAqaHcpCiB9CiAKICNkZWZpbmUgY3J5c3RhbGhkX2h3X2NyZWF0ZV9pb3Eoc3RzLCBodywgcSwg Y2IpCQkJXAotCXN0cyA9IGNyeXN0YWxoZF9jcmVhdGVfZGlvcShody0+YWRwLCAmcSwgY2IsIGh3 KTsJCVwKK2RvIHsJCQkJCQkJCVwKKwlzdHMgPSBjcnlzdGFsaGRfY3JlYXRlX2Rpb3EoaHctPmFk cCwgJnEsIGNiLCBodyk7CVwKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQkJCQlcCi0JCWdv dG8gaHdfY3JlYXRlX2lvcV9lcnI7CisJCWdvdG8gaHdfY3JlYXRlX2lvcV9lcnI7CQkJCVwKK30g d2hpbGUgKDApCiAKIC8qCiAgKiBDcmVhdGUgSU9Rcy4uCkBAIC01NjcsNyArNTY5LDcgQEAgc3Rh dGljIGJvb2wgY3J5c3RhbGhkX3R4X2xpc3QwX2hhbmRsZXIoc3RydWN0IGNyeXN0YWxoZF9odyAq aHcsIHVpbnQzMl90IGVycl9zdHMKIAlpZiAoIShlcnJfc3RzICYgZXJyX21hc2spKQogCQlyZXR1 cm4gZmFsc2U7CiAKLQlCQ01MT0dfRVJSKCJFcnJvciBvbiBUeC1MMCAleCBcbiIsZXJyX3N0cyk7 CisJQkNNTE9HX0VSUigiRXJyb3Igb24gVHgtTDAgJXggXG4iLCBlcnJfc3RzKTsKIAogCXRtcCA9 IGVycl9tYXNrOwogCkBAIC01OTAsNyArNTkyLDcgQEAgc3RhdGljIGJvb2wgY3J5c3RhbGhkX3R4 X2xpc3QwX2hhbmRsZXIoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcsIHVpbnQzMl90IGVycl9zdHMK IHN0YXRpYyBib29sIGNyeXN0YWxoZF90eF9saXN0MV9oYW5kbGVyKHN0cnVjdCBjcnlzdGFsaGRf aHcgKmh3LCB1aW50MzJfdCBlcnJfc3RzKQogewogCXVpbnQzMl90IGVycl9tYXNrLCB0bXA7Ci0J dW5zaWduZWQgbG9uZyBmbGFncz0wOworCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCiAJZXJy X21hc2sgPSBNSVNDMV9UWF9ETUFfRVJST1JfU1RBVFVTX1RYX0wxX0RFU0NfVFhfQUJPUlRfRVJS T1JTX01BU0sgfAogCQlNSVNDMV9UWF9ETUFfRVJST1JfU1RBVFVTX1RYX0wxX0RNQV9EQVRBX1RY X0FCT1JUX0VSUk9SU19NQVNLIHwKQEAgLTU5OSw3ICs2MDEsNyBAQCBzdGF0aWMgYm9vbCBjcnlz dGFsaGRfdHhfbGlzdDFfaGFuZGxlcihzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodywgdWludDMyX3Qg ZXJyX3N0cwogCWlmICghKGVycl9zdHMgJiBlcnJfbWFzaykpCiAJCXJldHVybiBmYWxzZTsKIAot CUJDTUxPR19FUlIoIkVycm9yIG9uIFR4LUwxICV4IFxuIixlcnJfc3RzKTsKKwlCQ01MT0dfRVJS KCJFcnJvciBvbiBUeC1MMSAleCBcbiIsIGVycl9zdHMpOwogCiAJdG1wID0gZXJyX21hc2s7CiAK QEAgLTY2MSwxMSArNjYzLDEyIEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9od19kdW1wX2Rlc2Mo cGRtYV9kZXNjcmlwdG9yIHBfZG1hX2Rlc2MsCiAKIAkvKiBGSVhNRTogamFyb2Q6IHBlcmhhcHMg YSBtb2RwYXJhbSBkZXNjX2RlYnVnIHRvIGVuYWJsZSB0aGlzLCByYXRoZXIgdGhhbgogCSAqIHNl dHRpbmcgbGwgKGxvZyBsZXZlbCwgSSBwcmVzdW1lKSB0byBub24temVybz8gKi8KLQlpZiAoIWxs KSByZXR1cm47CisJaWYgKCFsbCkKKwkJcmV0dXJuOwogCi0JZm9yIChpeD11bF9kZXNjX2luZGV4 OyBpeDwodWxfZGVzY19pbmRleCtjbnQpOyBpeCsrKSB7Ci0JCUJDTUxPRyhsbCwiJXNbJWRdIEJ1 ZmZbJXg6JXhdIE5leHQ6WyV4OiV4XSBYZmVyU3o6JXggSW50cjoleCxMYXN0OiV4XG4iLAotCQkg ICAgICAgKChwX2RtYV9kZXNjW3VsX2Rlc2NfaW5kZXhdLmRtYV9kaXIpPyJURGVzYyI6IlJEZXNj IiksCisJZm9yIChpeCA9IHVsX2Rlc2NfaW5kZXg7IGl4IDwgKHVsX2Rlc2NfaW5kZXggKyBjbnQp OyBpeCsrKSB7CisJCUJDTUxPRyhsbCwgIiVzWyVkXSBCdWZmWyV4OiV4XSBOZXh0OlsleDoleF0g WGZlclN6OiV4IEludHI6JXgsTGFzdDoleFxuIiwKKwkJICAgICAgICgocF9kbWFfZGVzY1t1bF9k ZXNjX2luZGV4XS5kbWFfZGlyKSA/ICJURGVzYyIgOiAiUkRlc2MiKSwKIAkJICAgICAgIHVsX2Rl c2NfaW5kZXgsCiAJCSAgICAgICBwX2RtYV9kZXNjW3VsX2Rlc2NfaW5kZXhdLmJ1ZmZfYWRkcl9o aWdoLAogCQkgICAgICAgcF9kbWFfZGVzY1t1bF9kZXNjX2luZGV4XS5idWZmX2FkZHJfbG93LApA QCAtNzIxLDExICs3MjQsMTEgQEAgc3RhdGljIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfZmlsbF9k ZXNjKGNyeXN0YWxoZF9kaW9fcmVxICppb3JlcSwKIAkJZGVzY1tpeF0ubmV4dF9kZXNjX2FkZHJf bG93ID0gYWRkcl90ZW1wLmxvd19wYXJ0OwogCQlkZXNjW2l4XS5uZXh0X2Rlc2NfYWRkcl9oaWdo ID0gYWRkcl90ZW1wLmhpZ2hfcGFydDsKIAotCQlpZiAoKGNvdW50K2xlbikgPiB4ZnJfc3opCisJ CWlmICgoY291bnQgKyBsZW4pID4geGZyX3N6KQogCQkJbGVuID0geGZyX3N6IC0gY291bnQ7CiAK IAkJLyogRGVidWcuLiAqLwotCQlpZiAoKCFsZW4pIHx8IChsZW4+Y3J5c3RhbGhkX2dldF9zZ2xl X2xlbihpb3JlcSxzZ19peCkpICkgeworCQlpZiAoKCFsZW4pIHx8IChsZW4gPiBjcnlzdGFsaGRf Z2V0X3NnbGVfbGVuKGlvcmVxLCBzZ19peCkpKSB7CiAJCQlCQ01MT0dfRVJSKCJpbnYtbGVuKCV4 KSBJeCglZCkgY291bnQ6JXggeGZyX3N6OiV4IHNnX2NudDolZFxuIiwKIAkJCQkgICBsZW4sIGl4 LCBjb3VudCwgeGZyX3N6LCBzZ19jbnQpOwogCQkJcmV0dXJuIEJDX1NUU19FUlJPUjsKQEAgLTg3 NywyMCArODgwLDE4IEBAIHN0YXRpYyBCQ19TVEFUVVMgY3J5c3RhbGhkX3N0b3BfdHhfZG1hX2Vu Z2luZShzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAlkbWFfY250cmwgJj0gfkRNQV9TVEFSVF9C SVQ7CiAJY3J5c3RhbGhkX3JlZ193cihody0+YWRwLCBNSVNDMV9UWF9TV19ERVNDX0xJU1RfQ1RS TF9TVFMsIGRtYV9jbnRybCk7CiAKLQlCQ01MT0coQkNNTE9HX0RCRywiQ2xlYXJlZCB0aGUgRE1B IFN0YXJ0IGJpdFxuIik7CisJQkNNTE9HKEJDTUxPR19EQkcsICJDbGVhcmVkIHRoZSBETUEgU3Rh cnQgYml0XG4iKTsKIAogCS8qIFBvbGwgZm9yIDNzZWNvbmRzICgzMCAqIDEwMG1zKSBvbiBib3Ro IHRoZSBsaXN0cy4uKi8KIAl3aGlsZSAoKGwxIHx8IGwyKSAmJiBjbnQpIHsKIAogCQlpZiAobDEp IHsKLQkJCWwxID0gY3J5c3RhbGhkX3JlZ19yZChody0+YWRwLAotCQkJCQkgICAgTUlTQzFfVFhf RklSU1RfREVTQ19MX0FERFJfTElTVDApOworCQkJbDEgPSBjcnlzdGFsaGRfcmVnX3JkKGh3LT5h ZHAsIE1JU0MxX1RYX0ZJUlNUX0RFU0NfTF9BRERSX0xJU1QwKTsKIAkJCWwxICY9IERNQV9TVEFS VF9CSVQ7CiAJCX0KIAogCQlpZiAobDIpIHsKLQkJCWwyID0gY3J5c3RhbGhkX3JlZ19yZChody0+ YWRwLAotCQkJCQkgICAgTUlTQzFfVFhfRklSU1RfREVTQ19MX0FERFJfTElTVDEpOworCQkJbDIg PSBjcnlzdGFsaGRfcmVnX3JkKGh3LT5hZHAsIE1JU0MxX1RYX0ZJUlNUX0RFU0NfTF9BRERSX0xJ U1QxKTsKIAkJCWwyICY9IERNQV9TVEFSVF9CSVQ7CiAJCX0KIApAQCAtOTg0LDggKzk4NSw3IEBA IHN0YXRpYyB1aW50MzJfdCBjcnlzdGFsaGRfZ2V0X2FkZHJfZnJvbV9waWJfUShzdHJ1Y3QgY3J5 c3RhbGhkX2h3ICpodykKIAlyZXR1cm4gYWRkcl9lbnRyeTsKIH0KIAotc3RhdGljIGJvb2wgY3J5 c3RhbGhkX3JlbF9hZGRyX3RvX3BpYl9RKHN0cnVjdCBjcnlzdGFsaGRfaHcqIGh3LAotCQkJCSAg ICAgIHVpbnQzMl90IGFkZHJfdG9fcmVsKQorc3RhdGljIGJvb2wgY3J5c3RhbGhkX3JlbF9hZGRy X3RvX3BpYl9RKHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3LCB1aW50MzJfdCBhZGRyX3RvX3JlbCkK IHsKIAl1aW50MzJfdCBRX2FkZHI7CiAJdWludDMyX3Qgcl9vZmZzZXQsIHdfb2Zmc2V0LCBuX29m ZnNldDsKQEAgLTEyODYsNyArMTI4Niw3IEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9od19maW5h bGl6ZV9wYXVzZShzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAogCWFzcG0gPSBjcnlzdGFsaGRf cmVnX3JkKGh3LT5hZHAsIFBDSUVfRExMX0RBVEFfTElOS19DT05UUk9MKTsKIAlhc3BtIHw9IEFT UE1fTDFfRU5BQkxFOwotLy8gTkFSRU4gQkNNTE9HKEJDTUxPR19JTkZPLCAiYXNwbSBvblxuIik7 CisJLyogTkFSRU4gQkNNTE9HKEJDTUxPR19JTkZPLCAiYXNwbSBvblxuIik7ICovCiAJY3J5c3Rh bGhkX3JlZ193cihody0+YWRwLCBQQ0lFX0RMTF9EQVRBX0xJTktfQ09OVFJPTCwgYXNwbSk7CiB9 CiAKQEAgLTE1MDYsNyArMTUwNiw3IEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9yeF9pc3Ioc3Ry dWN0IGNyeXN0YWxoZF9odyAqaHcsIHVpbnQzMl90IGludHJfc3RzKQogCQkJCWh3LT5zdGF0cy5y eF9lcnJvcnMrKzsKIAkJCQljcnlzdGFsaGRfZ2V0X2Ruc3ooaHcsIGksICZ5X2RuX3N6LCAmdXZf ZG5fc3opOwogCQkJCS8qIEZJWE1FOiBqYXJvZDogdGhpcyBpcyB3aGVyZSBteSBtaW5pIHBjaS1l IGNhcmQgaXMgdHJpcHBpbmcgdXAgKi8KLQkJCQlCQ01MT0coQkNNTE9HX0RCRywibGlzdF9pbmRl eDoleCByeFslZF0gWToleCAiCisJCQkJQkNNTE9HKEJDTUxPR19EQkcsICJsaXN0X2luZGV4OiV4 IHJ4WyVkXSBZOiV4ICIKIAkJCQkgICAgICAgIlVWOiV4IEludDoleCBZRG5TejoleCBVVkRuU3o6 JXhcbiIsCiAJCQkJICAgICAgIGksIGh3LT5zdGF0cy5yeF9lcnJvcnMsIHlfZXJyX3N0cywKIAkJ CQkgICAgICAgdXZfZXJyX3N0cywgaW50cl9zdHMsIHlfZG5fc3osIHV2X2RuX3N6KTsKQEAgLTE1 NTAsNyArMTU1MCw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgY3J5c3RhbGhkX2Z3X2NtZF9wb3N0X3By b2Moc3RydWN0IGNyeXN0YWxoZF9odyAqaHcsCiAJCXN0X3JzcCA9IChEZWNSc3BDaGFubmVsU3Rh cnRWaWRlbyAqKWZ3X2NtZC0+cnNwOwogCQlody0+cGliX2RlbF9RX2FkZHIgPSBzdF9yc3AtPnBp Y0luZm9EZWxpdmVyeVE7CiAJCWh3LT5waWJfcmVsX1FfYWRkciA9IHN0X3JzcC0+cGljSW5mb1Jl bGVhc2VROwotCQlCQ01MT0coQkNNTE9HX0RCRywiRGVsUUFkZHI6JXggUmVsUUFkZHI6JXhcbiIs CisJCUJDTUxPRyhCQ01MT0dfREJHLCAiRGVsUUFkZHI6JXggUmVsUUFkZHI6JXhcbiIsCiAJCSAg ICAgICBody0+cGliX2RlbF9RX2FkZHIsIGh3LT5waWJfcmVsX1FfYWRkcik7CiAJCWJyZWFrOwog CWNhc2UgZUNNRF9DMDExX0lOSVQ6CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBCQ19TVEFUVVMgY3J5 c3RhbGhkX2Rvd25sb2FkX2Z3KHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHZvaWQgKmJ1ZmZl ciwgdWludDMyXwogCWNyeXN0YWxoZF9yZWdfd3IoYWRwLCBEQ0lfQ01ELCByZWdfZGF0YSk7CiAJ bXNsZWVwX2ludGVycnVwdGlibGUoMTApOwogCi0JcmVnX2RhdGEgPTA7CisJcmVnX2RhdGEgPSAw OwogCXJlZ19kYXRhID0gY3J5c3RhbGhkX3JlZ19yZChhZHAsIERDSV9TVEFUVVMpOwogCiAJaWYg KChyZWdfZGF0YSAmIEJDX0JJVCg5KSkgPT0gQkNfQklUKDkpKSB7CkBAIC0xNzE0LDcgKzE3MTQs NyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX2Rvd25sb2FkX2Z3KHN0cnVjdCBjcnlzdGFsaGRfYWRw ICphZHAsIHZvaWQgKmJ1ZmZlciwgdWludDMyXwogCQlyZXR1cm4gQkNfU1RTX0ZXX0FVVEhfRkFJ TEVEOwogCX0KIAotCUJDTUxPRyhCQ01MT0dfSU5GTywiRmlybXdhcmUgRG93bmxvYWRlZCBTdWNj ZXNzZnVsbHlcbiIpOworCUJDTUxPRyhCQ01MT0dfSU5GTywgIkZpcm13YXJlIERvd25sb2FkZWQg U3VjY2Vzc2Z1bGx5XG4iKTsKIAlyZXR1cm4gQkNfU1RTX1NVQ0NFU1M7OwogfQogCkBAIC0xODcx LDggKzE4NzEsOCBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX2h3X29wZW4oc3RydWN0IGNyeXN0YWxo ZF9odyAqaHcsIHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApCiAJbWVtc2V0KGh3LCAwLCBzaXpl b2Yoc3RydWN0IGNyeXN0YWxoZF9odykpOwogCiAJaHctPmFkcCA9IGFkcDsKLQlody0+bG9jayA9 IFNQSU5fTE9DS19VTkxPQ0tFRDsKLQlody0+cnhfbG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsK KwlzcGluX2xvY2tfaW5pdCgmaHctPmxvY2spOworCXNwaW5fbG9ja19pbml0KCZody0+cnhfbG9j ayk7CiAJLyogRklYTUU6IGphcm9kOiB3aGF0IGFyZSB0aGVzZSBtYWdpYyBudW1iZXJzPyE/ICov CiAJaHctPnR4X2lvcV90YWdfc2VlZCA9IDB4NzAwMjMwNzA7CiAJaHctPnJ4X3BrdF90YWdfc2Vl ZCA9IDB4NzAwMjkwNzA7CkBAIC0xOTE2LDEyICsxOTE2LDEzIEBAIEJDX1NUQVRVUyBjcnlzdGFs aGRfaHdfc2V0dXBfZG1hX3JpbmdzKHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3KQogCUJDX1NUQVRV UyBzdHMgPSBCQ19TVFNfU1VDQ0VTUzsKIAljcnlzdGFsaGRfcnhfZG1hX3BrdCAqcnBrdDsKIAot CWlmICghaHcgfHwgIWh3LT5hZHAgKSB7CisJaWYgKCFodyB8fCAhaHctPmFkcCkgewogCQlCQ01M T0dfRVJSKCJJbnZhbGlkIEFyZ3VtZW50c1xuIik7CiAJCXJldHVybiBCQ19TVFNfSU5WX0FSRzsK IAl9CiAKLQlpZiAoKHN0cyA9IGNyeXN0YWxoZF9od19jcmVhdGVfaW9xcyhodykpICE9IEJDX1NU U19TVUNDRVNTKSB7CisJc3RzID0gY3J5c3RhbGhkX2h3X2NyZWF0ZV9pb3FzKGh3KTsKKwlpZiAo c3RzICE9IEJDX1NUU19TVUNDRVNTKSB7CiAJCUJDTUxPR19FUlIoIkZhaWxlZCB0byBjcmVhdGUg SU9Rcy4uXG4iKTsKIAkJcmV0dXJuIHN0czsKIAl9CkBAIC0xOTczLDcgKzE5NzQsNyBAQCBCQ19T VEFUVVMgY3J5c3RhbGhkX2h3X3NldHVwX2RtYV9yaW5ncyhzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpo dykKIAkJcnBrdC0+ZGVzY19tZW0ucGh5X2FkZHIgPSBwaHlfYWRkcjsKIAkJcnBrdC0+ZGVzY19t ZW0uc3ogID0gQkNfTElOS19NQVhfU0dMUyAqIHNpemVvZihkbWFfZGVzY3JpcHRvcik7CiAJCXJw a3QtPnBrdF90YWcgPSBody0+cnhfcGt0X3RhZ19zZWVkICsgaTsKLQkJY3J5c3RhbGhkX2h3X2Zy ZWVfcnhfcGt0KGh3LHJwa3QpOworCQljcnlzdGFsaGRfaHdfZnJlZV9yeF9wa3QoaHcsIHJwa3Qp OwogCX0KIAogCXJldHVybiBCQ19TVFNfU1VDQ0VTUzsKQEAgLTE5ODIsNyArMTk4Myw3IEBAIEJD X1NUQVRVUyBjcnlzdGFsaGRfaHdfc2V0dXBfZG1hX3JpbmdzKHN0cnVjdCBjcnlzdGFsaGRfaHcg Kmh3KQogQkNfU1RBVFVTIGNyeXN0YWxoZF9od19mcmVlX2RtYV9yaW5ncyhzdHJ1Y3QgY3J5c3Rh bGhkX2h3ICpodykKIHsKIAl1bnNpZ25lZCBpbnQgaTsKLQljcnlzdGFsaGRfcnhfZG1hX3BrdCAq cnBrdD1OVUxMOworCWNyeXN0YWxoZF9yeF9kbWFfcGt0ICpycGt0ID0gTlVMTDsKIAogCWlmICgh aHcgfHwgIWh3LT5hZHApIHsKIAkJQkNNTE9HX0VSUigiSW52YWxpZCBBcmd1bWVudHNcbiIpOwpA QCAtMjAwMyw3ICsyMDA0LDcgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9od19mcmVlX2RtYV9yaW5n cyhzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAkJfQogCX0KIAotCUJDTUxPRyhCQ01MT0dfREJH LCJSZWxlYXNpbmcgUlggUGt0IHBvb2xcbiIpOworCUJDTUxPRyhCQ01MT0dfREJHLCAiUmVsZWFz aW5nIFJYIFBrdCBwb29sXG4iKTsKIAlkbyB7CiAJCXJwa3QgPSBjcnlzdGFsaGRfaHdfYWxsb2Nf cnhfcGt0KGh3KTsKIAkJaWYgKCFycGt0KQpAQCAtMjA5NCw3ICsyMDk1LDcgQEAgQkNfU1RBVFVT IGNyeXN0YWxoZF9od19wb3N0X3R4KHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3LCBjcnlzdGFsaGRf ZGlvX3JlcSAqaW9yZXEKIAogCWh3LT50eF9saXN0X3Bvc3RfaW5kZXggPSAoaHctPnR4X2xpc3Rf cG9zdF9pbmRleCArIDEpICUgRE1BX0VOR0lORV9DTlQ7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZody0+bG9jayxmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaHctPmxvY2ss IGZsYWdzKTsKIAogCiAJLyogSW5zZXJ0IGluIEFjdGl2ZSBRLi4qLwpAQCAtMjE2Miw3ICsyMTYz LDcgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9od19hZGRfY2FwX2J1ZmZlcihzdHJ1Y3QgY3J5c3Rh bGhkX2h3ICpodywKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQogCQlyZXR1cm4gc3RzOwog Ci0JcnBrdC0+dXZfcGh5X2FkZHI9MDsKKwlycGt0LT51dl9waHlfYWRkciA9IDA7CiAKIAkvKiBT dG9yZSB0aGUgYWRkcmVzcyBvZiBVViBpbiB0aGUgcnggcGFja2V0IGZvciBwb3N0Ki8KIAlpZiAo dXZfZGVzY19peCkKQEAgLTIyNzksNyArMjI4MCw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdf dW5wYXVzZShzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAogCWFzcG0gPSBjcnlzdGFsaGRfcmVn X3JkKGh3LT5hZHAsIFBDSUVfRExMX0RBVEFfTElOS19DT05UUk9MKTsKIAlhc3BtICY9IH5BU1BN X0wxX0VOQUJMRTsKLS8vIE5BUkVOIEJDTUxPRyhCQ01MT0dfSU5GTywgImFzcG0gb2ZmXG4iKTsK Ky8qIE5BUkVOIEJDTUxPRyhCQ01MT0dfSU5GTywgImFzcG0gb2ZmXG4iKTsgKi8KIAljcnlzdGFs aGRfcmVnX3dyKGh3LT5hZHAsIFBDSUVfRExMX0RBVEFfTElOS19DT05UUk9MLCBhc3BtKTsKIAog CXN0cyA9IGNyeXN0YWxoZF9od19zdGFydF9jYXB0dXJlKGh3KTsKQEAgLTIzMzgsMTQgKzIzMzks MTQgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9od19zZXRfY29yZV9jbG9jayhzdHJ1Y3QgY3J5c3Rh bGhkX2h3ICpodykKIAl9CiAKIAkvKiBGSVhNRTogamFyb2Q6IHdoYT8gKi8KLS8vCW4gPSAoaHct PmNvcmVfY2xvY2tfbWh6ICogMykgLyAyMCArIDE7CisJLypuID0gKGh3LT5jb3JlX2Nsb2NrX21o eiAqIDMpIC8gMjAgKyAxOyAqLwogCW4gPSBody0+Y29yZV9jbG9ja19taHovNTsKIAogCWlmIChu ID09IGh3LT5wcmV2X24pCiAJCXJldHVybiBCQ19TVFNfQ0xLX05PQ0hHOwogCiAJaWYgKGh3LT5w d3JfbG9jayA+IDApIHsKLQkJLy9CQ01MT0coQkNNTE9HX0lORk8sInB3cl9sb2NrIGlzICV1XG4i LCBody0+cHdyX2xvY2spCisJCS8qIEJDTUxPRyhCQ01MT0dfSU5GTywicHdyX2xvY2sgaXMgJXVc biIsIGh3LT5wd3JfbG9jaykgKi8KIAkJcmV0dXJuIEJDX1NUU19DTEtfTk9DSEc7CiAJfQogCkBA IC0yMzY1LDcgKzIzNjYsNyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX2h3X3NldF9jb3JlX2Nsb2Nr KHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3KQogCXJlZyB8PSBuOwogCXJlZyB8PSB2Y29fbWcgPDwg MTI7CiAKLQlCQ01MT0coQkNNTE9HX0lORk8sImNsb2NrIGlzIG1vdmluZyB0byAlZCB3aXRoIG4g JWQgd2l0aCB2Y29fbWcgJWRcbiIsCisJQkNNTE9HKEJDTUxPR19JTkZPLCAiY2xvY2sgaXMgbW92 aW5nIHRvICVkIHdpdGggbiAlZCB3aXRoIHZjb19tZyAlZFxuIiwKIAkgICAgICAgaHctPmNvcmVf Y2xvY2tfbWh6LCBuLCB2Y29fbWcpOwogCiAJLyogQ2hhbmdlIHRoZSBEUkFNIHJlZnJlc2ggcmF0 ZSB0byBhY2NvbW9kYXRlIHRoZSBuZXcgZnJlcXVlbmN5ICovCkBAIC0yMzc4LDE3ICsyMzc5LDE3 IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfc2V0X2NvcmVfY2xvY2soc3RydWN0IGNyeXN0YWxo ZF9odyAqaHcpCiAJaSA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewotCQlyZWcg PSBiY19kZWNfcmVnX3JkKGh3LT5hZHAsRGVjSHRfUGxsQUN0bCk7CisJCXJlZyA9IGJjX2RlY19y ZWdfcmQoaHctPmFkcCwgRGVjSHRfUGxsQUN0bCk7CiAKIAkJaWYgKHJlZyAmIDB4MDAwMjAwMDAp IHsKIAkJCWh3LT5wcmV2X24gPSBuOwogCQkJLyogRklYTUU6IGphcm9kOiBvdXRwdXR0aW5nIGEg cmFuZG9tICJDIiBpcy4uLiBjb25mdXNpbmcuLi4gKi8KLQkJCUJDTUxPRyhCQ01MT0dfSU5GTywi QyIpOworCQkJQkNNTE9HKEJDTUxPR19JTkZPLCAiQyIpOwogCQkJcmV0dXJuIEJDX1NUU19TVUND RVNTOwogCQl9IGVsc2UgewogCQkJbXNsZWVwX2ludGVycnVwdGlibGUoMTApOwogCQl9CiAJfQot CUJDTUxPRyhCQ01MT0dfSU5GTywiY2xrIGNoYW5nZSBmYWlsZWRcbiIpOworCUJDTUxPRyhCQ01M T0dfSU5GTywgImNsayBjaGFuZ2UgZmFpbGVkXG4iKTsKIAlyZXR1cm4gQkNfU1RTX0NMS19OT0NI RzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9o dy5oIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2h3LmgKaW5kZXggMDc2 MTUwZC4uMWM2MzE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5 c3RhbGhkX2h3LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2h3 LmgKQEAgLTEwMyw3ICsxMDMsNyBAQAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIEJDX0ZXSU1HX1NUX0FERFIJMHgwMDAwMDAwMAog LyogRklYTUU6IGphcm9kOiB0aGVyZSdzIGEga2VybmVsIGZ1bmN0aW9uIHRoYXQnbGwgZG8gdGhp cyBmb3IgdXMuLi4gKi8KLSNkZWZpbmUgcm90cjMyXzEoeCxuKQkJKCgoeCkgPj4gbikgfCAoKHgp IDw8ICgzMiAtIG4pKSkKKyNkZWZpbmUgcm90cjMyXzEoeCwgbikJCSgoKHgpID4+IG4pIHwgKCh4 KSA8PCAoMzIgLSBuKSkpCiAjZGVmaW5lIGJzd2FwXzMyXzEoeCkJCSgocm90cjMyXzEoKHgpLCAy NCkgJiAweDAwZmYwMGZmKSB8IChyb3RyMzJfMSgoeCksIDgpICYgMHhmZjAwZmYwMCkpCiAKICNk ZWZpbmUgRGVjSHRfSG9zdFN3UmVzZXQJMHgzNDAwMDAKQEAgLTE2NiwxMCArMTY2LDEwIEBAIHR5 cGVkZWYgdW5pb24gX2xpbmtfbWlzY19wZXJzdF9jbGtfY3RybF8gewogCiB0eXBlZGVmIHVuaW9u IF9saW5rX21pc2NfcGVyc3RfZGVjb2Rlcl9jdHJsXyB7CiAJc3RydWN0IHsKLQkJdWludDMyX3QJ YmNtXzc0MTJfcnN0OjE7CQkJLyogMSAtPiBCQ003NDEyIGlzIGhlbGQgaW4gcmVzZXQuIFJlc2V0 IHZhbHVlIDEuKi8KLQkJdWludDMyX3QJcmVzMDozOwkJCQkJLyogUmVzZXJ2ZWQuTm8gRWZmZWN0 Ki8KLQkJdWludDMyX3QJc3RvcF83NDEyX2NsazoxOwkJLyogMSAtPlN0b3BzIGJyYW5jaCBvZiAy N01IeiBjbGsgdXNlZCB0byBjbGsgQkNNNzQxMiovCi0JCXVpbnQzMl90CXJlczE6Mjc7CQkJCS8q IFJlc2V2ZWQuIE5vIEVmZmVjdCovCQkgCisJCXVpbnQzMl90CWJjbV83NDEyX3JzdDoxOyAvKiAx IC0+IEJDTTc0MTIgaXMgaGVsZCBpbiByZXNldC4gUmVzZXQgdmFsdWUgMS4qLworCQl1aW50MzJf dAlyZXMwOjM7IC8qIFJlc2VydmVkLk5vIEVmZmVjdCovCisJCXVpbnQzMl90CXN0b3BfNzQxMl9j bGs6MTsgLyogMSAtPlN0b3BzIGJyYW5jaCBvZiAyN01IeiBjbGsgdXNlZCB0byBjbGsgQkNNNzQx MiovCisJCXVpbnQzMl90CXJlczE6Mjc7IC8qIFJlc2V2ZWQuIE5vIEVmZmVjdCAqLwogCX07CiAK IAl1aW50MzJfdAl3aG9sZV9yZWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3Rh bC1oZC9jcnlzdGFsaGRfbG54LmMgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFs aGRfbG54LmMKaW5kZXggZDNkNjJkMC4uY2U4OWVjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFn aW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2xueC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlz dGFsLWhkL2NyeXN0YWxoZF9sbnguYwpAQCAtMjgsMTUgKzI4LDExIEBACiAKICNpbmNsdWRlICJj cnlzdGFsaGRfbG54LmgiCiAKLXN0YXRpYyBzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqZ19hZHBfaW5m byA9IE5VTEw7CitzdGF0aWMgc3RydWN0IGNyeXN0YWxoZF9hZHAgKmdfYWRwX2luZm87CiAKLSNp ZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxfVkVSU0lPTigyLDYsMTgpCiBzdGF0aWMgaXJx cmV0dXJuX3QgY2hkX2RlY19pc3IoaW50IGlycSwgdm9pZCAqYXJnKQotI2Vsc2UKLXN0YXRpYyBp cnFyZXR1cm5fdCBjaGRfZGVjX2lzcihpbnQgaXJxLCB2b2lkICphcmcsIHN0cnVjdCBwdF9yZWdz ICpyKQotI2VuZGlmCiB7Ci0Jc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCA9IChzdHJ1Y3QgY3J5 c3RhbGhkX2FkcCopYXJnOworCXN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAgPSAoc3RydWN0IGNy eXN0YWxoZF9hZHAgKikgYXJnOwogCWludCByYyA9IDA7CiAJaWYgKGFkcCkKIAkJcmMgPSBjcnlz dGFsaGRfY21kX2ludGVycnVwdCgmYWRwLT5jbWRzKTsKQEAgLTU5LDcgKzU1LDcgQEAgc3RhdGlj IGludCBjaGRfZGVjX2VuYWJsZV9pbnQoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCkKIAkJYWRw LT5tc2kgPSBwY2lfZW5hYmxlX21zaShhZHAtPnBkZXYpOwogCiAJcmMgPSByZXF1ZXN0X2lycShh ZHAtPnBkZXYtPmlycSwgY2hkX2RlY19pc3IsIElSUUZfU0hBUkVELAotCQkJIGFkcC0+bmFtZSwg KHZvaWQqKWFkcCk7CisJCQkgYWRwLT5uYW1lLCAodm9pZCAqKWFkcCk7CiAJaWYgKHJjKSB7CiAJ CUJDTUxPR19FUlIoIkludGVycnVwdCByZXF1ZXN0IGZhaWxlZC4uIFxuIik7CiAJCXBjaV9kaXNh YmxlX21zaShhZHAtPnBkZXYpOwpAQCAtNzcsOSArNzMsOCBAQCBzdGF0aWMgaW50IGNoZF9kZWNf ZGlzYWJsZV9pbnQoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCkKIAogCWZyZWVfaXJxKGFkcC0+ cGRldi0+aXJxLCBhZHApOwogCi0JaWYgKGFkcC0+bXNpKSB7CisJaWYgKGFkcC0+bXNpKQogCQlw Y2lfZGlzYWJsZV9tc2koYWRwLT5wZGV2KTsKLQl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEwMCw3 ICs5NSw3IEBAIGNyeXN0YWxoZF9pb2N0bF9kYXRhICpjaGRfZGVjX2FsbG9jX2lvZGF0YShzdHJ1 Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCBib29sIGlzcikKIAkJbWVtc2V0KHRlbXAsIDAsIHNpemVv ZigqdGVtcCkpOwogCX0KIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkcC0+bG9jayxmbGFn cyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRwLT5sb2NrLCBmbGFncyk7CiAJcmV0dXJu IHRlbXA7CiB9CiAKQEAgLTExOCw3ICsxMTMsNyBAQCB2b2lkIGNoZF9kZWNfZnJlZV9pb2RhdGEo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEgKmlvZGF0YQog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkcC0+bG9jaywgZmxhZ3MpOwogfQogCi1pbmxpbmUg c3RhdGljIGludCBjcnlzdGFsaGRfdXNlcl9kYXRhKHVuc2lnbmVkIGxvbmcgdWQsdm9pZCAqZHIs IGludCBzaXplLGludCBzZXQpCitzdGF0aWMgaW5saW5lIGludCBjcnlzdGFsaGRfdXNlcl9kYXRh KHVuc2lnbmVkIGxvbmcgdWQsIHZvaWQgKmRyLCBpbnQgc2l6ZSwgaW50IHNldCkKIHsKIAlpbnQg cmM7CiAKQEAgLTE1Myw3ICsxNDgsNyBAQCBzdGF0aWMgaW50IGNoZF9kZWNfZmV0Y2hfY2RhdGEo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEgKgogCiAJaW8t PmFkZF9jZGF0YSA9IHZtYWxsb2MobV9zeik7CiAJaWYgKCFpby0+YWRkX2NkYXRhKSB7Ci0JCUJD TUxPR19FUlIoImthbGxvYyBmYWlsIGZvciBzejoleFxuIixtX3N6KTsKKwkJQkNNTE9HX0VSUigi a2FsbG9jIGZhaWwgZm9yIHN6OiV4XG4iLCBtX3N6KTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQog CkBAIC0yMjIsMTcgKzIxNywxNyBAQCBzdGF0aWMgaW50IGNoZF9kZWNfcHJvY191c2VyX2RhdGEo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwKIAl9CiAKIAlzd2l0Y2ggKGlvLT5jbWQpIHsKLQkJ Y2FzZSBCQ01fSU9DX01FTV9SRDoKLQkJY2FzZSBCQ01fSU9DX01FTV9XUjoKLQkJY2FzZSBCQ01f SU9DX0ZXX0RPV05MT0FEOgotCQkJbV9zeiA9IGlvLT51ZGF0YS51LmRldk1lbS5OdW1Ed29yZHMg KiA0OwotCQkJaWYgKHNldCkKLQkJCQlyYyA9IGNoZF9kZWNfcmVsZWFzZV9jZGF0YShhZHAsIGlv LCB1YSk7Ci0JCQllbHNlCi0JCQkJcmMgPSBjaGRfZGVjX2ZldGNoX2NkYXRhKGFkcCwgaW8sIG1f c3osIHVhKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJYnJlYWs7CisJY2FzZSBCQ01fSU9D X01FTV9SRDoKKwljYXNlIEJDTV9JT0NfTUVNX1dSOgorCWNhc2UgQkNNX0lPQ19GV19ET1dOTE9B RDoKKwkJbV9zeiA9IGlvLT51ZGF0YS51LmRldk1lbS5OdW1Ed29yZHMgKiA0OworCQlpZiAoc2V0 KQorCQkJcmMgPSBjaGRfZGVjX3JlbGVhc2VfY2RhdGEoYWRwLCBpbywgdWEpOworCQllbHNlCisJ CQlyYyA9IGNoZF9kZWNfZmV0Y2hfY2RhdGEoYWRwLCBpbywgbV9zeiwgdWEpOworCQlicmVhazsK KwlkZWZhdWx0OgorCQlicmVhazsKIAl9CiAKIAlyZXR1cm4gcmM7CkBAIC0yNDUsNyArMjQwLDcg QEAgc3RhdGljIGludCBjaGRfZGVjX2FwaV9jbWQoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwg dW5zaWduZWQgbG9uZyB1YSwKIAljcnlzdGFsaGRfaW9jdGxfZGF0YSAqdGVtcDsKIAlCQ19TVEFU VVMgc3RzID0gQkNfU1RTX1NVQ0NFU1M7CiAKLQl0ZW1wID0gY2hkX2RlY19hbGxvY19pb2RhdGEo YWRwLDApOworCXRlbXAgPSBjaGRfZGVjX2FsbG9jX2lvZGF0YShhZHAsIDApOwogCWlmICghdGVt cCkgewogCQlCQ01MT0dfRVJSKCJGYWlsZWQgdG8gZ2V0IGlvZGF0YS4uXG4iKTsKIAkJcmV0dXJu IC1FSU5WQUw7CkBAIC0yNjQsNyArMjU5LDcgQEAgc3RhdGljIGludCBjaGRfZGVjX2FwaV9jbWQo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdW5zaWduZWQgbG9uZyB1YSwKIAl9CiAKIAlpZiAo dGVtcCkgewotCQljaGRfZGVjX2ZyZWVfaW9kYXRhKGFkcCwgdGVtcCwwKTsKKwkJY2hkX2RlY19m cmVlX2lvZGF0YShhZHAsIHRlbXAsIDApOwogCQl0ZW1wID0gTlVMTDsKIAl9CiAKQEAgLTI4NCw3 ICsyNzksNyBAQCBzdGF0aWMgaW50IGNoZF9kZWNfaW9jdGwoc3RydWN0IGlub2RlICppbiwgc3Ry dWN0IGZpbGUgKmZkLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQl1YyA9IChzdHJ1Y3QgY3J5 c3RhbGhkX3VzZXIqKWZkLT5wcml2YXRlX2RhdGE7CisJdWMgPSAoc3RydWN0IGNyeXN0YWxoZF91 c2VyICopZmQtPnByaXZhdGVfZGF0YTsKIAlpZiAoIXVjKSB7CiAJCUJDTUxPR19FUlIoIkZhaWxl ZCB0byBnZXQgdWNcbiIpOwogCQlyZXR1cm4gLUVOT0RBVEE7CkBAIC0zMTMsMTMgKzMwOCwxMyBA QCBzdGF0aWMgaW50IGNoZF9kZWNfb3BlbihzdHJ1Y3QgaW5vZGUgKmluLCBzdHJ1Y3QgZmlsZSAq ZmQpCiAJfQogCiAJaWYgKGFkcC0+Y2ZnX3VzZXJzID49IEJDX0xJTktfTUFYX09QRU5TKSB7Ci0J CUJDTUxPRyhCQ01MT0dfSU5GTywiQWxyZWFkeSBpbiB1c2UuJWRcbiIsYWRwLT5jZmdfdXNlcnMp OworCQlCQ01MT0coQkNNTE9HX0lORk8sICJBbHJlYWR5IGluIHVzZS4lZFxuIiwgYWRwLT5jZmdf dXNlcnMpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KIAogCXN0cyA9IGNyeXN0YWxoZF91c2VyX29w ZW4oJmFkcC0+Y21kcywgJnVjKTsKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKSB7Ci0JCUJD TUxPR19FUlIoImNtZF91c2VyX29wZW4gLSAlZCBcbiIsc3RzKTsKKwkJQkNNTE9HX0VSUigiY21k X3VzZXJfb3BlbiAtICVkIFxuIiwgc3RzKTsKIAkJcmMgPSAtRUJVU1k7CiAJfQogCkBAIC0zNDcs MTQgKzM0MiwxNCBAQCBzdGF0aWMgaW50IGNoZF9kZWNfY2xvc2Uoc3RydWN0IGlub2RlICppbiwg c3RydWN0IGZpbGUgKmZkKQogCQlyZXR1cm4gLUVOT0RBVEE7CiAJfQogCi0JY3J5c3RhbGhkX3Vz ZXJfY2xvc2UoJmFkcC0+Y21kcyx1Yyk7CisJY3J5c3RhbGhkX3VzZXJfY2xvc2UoJmFkcC0+Y21k cywgdWMpOwogCiAJYWRwLT5jZmdfdXNlcnMtLTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBjaGRfZGVjX2ZvcHMgPSB7CitzdGF0aWMgY29uc3Qgc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyBjaGRfZGVjX2ZvcHMgPSB7CiAJLm93bmVyICAgPSBUSElTX01P RFVMRSwKIAkuaW9jdGwgICA9IGNoZF9kZWNfaW9jdGwsCiAJLm9wZW4gICAgPSBjaGRfZGVjX29w ZW4sCkBAIC00NjIsMTEgKzQ1NywxMSBAQCBzdGF0aWMgaW50IGNoZF9wY2lfcmVzZXJ2ZV9tZW0o c3RydWN0IGNyeXN0YWxoZF9hZHAgKnBpbmZvKQogCiAJcmMgPSBwY2lfcmVxdWVzdF9yZWdpb25z KHBpbmZvLT5wZGV2LCBwaW5mby0+bmFtZSk7CiAJaWYgKHJjIDwgMCkgewotCQlCQ01MT0dfRVJS KCJSZWdpb24gcmVxdWVzdCBmYWlsZWQ6ICVkXG4iLHJjKTsKKwkJQkNNTE9HX0VSUigiUmVnaW9u IHJlcXVlc3QgZmFpbGVkOiAlZFxuIiwgcmMpOwogCQlyZXR1cm4gcmM7CiAJfQogCi0JQkNNTE9H KEJDTUxPR19TU1RFUCwiTWFwcGVkIGFkZHI6MHglMDhseCAgaTJvX2FkZHI6MHglMDhseFxuIiwK KwlCQ01MT0coQkNNTE9HX1NTVEVQLCAiTWFwcGVkIGFkZHI6MHglMDhseCAgaTJvX2FkZHI6MHgl MDhseFxuIiwKIAkgICAgICAgKHVuc2lnbmVkIGxvbmcpcGluZm8tPmFkZHIsICh1bnNpZ25lZCBs b25nKXBpbmZvLT5pMm9fYWRkcik7CiAKIAlyZXR1cm4gMDsKQEAgLTQ5NCw3ICs0ODksNyBAQCBz dGF0aWMgdm9pZCBjaGRfZGVjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAKIAlC Q01MT0dfRU5URVI7CiAKLQlwaW5mbyA9IChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCopcGNpX2dldF9k cnZkYXRhKHBkZXYpOworCXBpbmZvID0gKHN0cnVjdCBjcnlzdGFsaGRfYWRwICopIHBjaV9nZXRf ZHJ2ZGF0YShwZGV2KTsKIAlpZiAoIXBpbmZvKSB7CiAJCUJDTUxPR19FUlIoImNvdWxkIG5vdCBn ZXQgYWRwXG4iKTsKIAkJcmV0dXJuOwpAQCAtNTAyLDcgKzQ5Nyw3IEBAIHN0YXRpYyB2b2lkIGNo ZF9kZWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAogCXN0cyA9IGNyeXN0YWxo ZF9kZWxldGVfY21kX2NvbnRleHQoJnBpbmZvLT5jbWRzKTsKIAlpZiAoc3RzICE9IEJDX1NUU19T VUNDRVNTKQotCQlCQ01MT0dfRVJSKCJjbWQgZGVsZXRlIDolZCBcbiIsc3RzKTsKKwkJQkNNTE9H X0VSUigiY21kIGRlbGV0ZSA6JWQgXG4iLCBzdHMpOwogCiAJY2hkX2RlY19yZWxlYXNlX2NoZGV2 KHBpbmZvKTsKIApAQCAtNTU2LDEzICs1NTEsMTMgQEAgc3RhdGljIGludCBjaGRfZGVjX3BjaV9w cm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlwaW5mby0+ZHJ2X2RhdGEgPSBlbnRyeS0+ZHJp dmVyX2RhdGE7CiAKIAkvKiBTZXR1cCBhZGFwdGVyIGxldmVsIGxvY2suLiAqLwotCXBpbmZvLT5s b2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOworCXNwaW5fbG9ja19pbml0KCZwaW5mby0+bG9jayk7 CiAKIAkvKiBzZXR1cCBhcGkgc3R1ZmYuLiAqLwogCWNoZF9kZWNfaW5pdF9jaGRldihwaW5mbyk7 CiAJcmMgPSBjaGRfZGVjX2VuYWJsZV9pbnQocGluZm8pOwogCWlmIChyYykgewotCQlCQ01MT0df RVJSKCJfZW5hYmxlX2ludCBlcnI6JWQgXG4iLHJjKTsKKwkJQkNNTE9HX0VSUigiX2VuYWJsZV9p bnQgZXJyOiVkIFxuIiwgcmMpOwogCQlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiAJCXJldHVy biAtRU5PREVWOwogCX0KQEAgLTU3NSwxNCArNTcwLDE0IEBAIHN0YXRpYyBpbnQgY2hkX2RlY19w Y2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJCXBjaV9zZXRfY29uc2lzdGVudF9kbWFf bWFzayhwZGV2LCBETUFfQklUX01BU0soMzIpKTsKIAkJcGluZm8tPmRtYWJpdHMgPSAzMjsKIAl9 IGVsc2UgewotCQlCQ01MT0dfRVJSKCJVbmFibGVkIHRvIHNldHVwIERNQSAlZFxuIixyYyk7CisJ CUJDTUxPR19FUlIoIlVuYWJsZWQgdG8gc2V0dXAgRE1BICVkXG4iLCByYyk7CiAJCXBjaV9kaXNh YmxlX2RldmljZShwZGV2KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCiAJc3RzID0gY3J5c3Rh bGhkX3NldHVwX2NtZF9jb250ZXh0KCZwaW5mby0+Y21kcywgcGluZm8pOwogCWlmIChzdHMgIT0g QkNfU1RTX1NVQ0NFU1MpIHsKLQkJQkNNTE9HX0VSUigiY21kIHNldHVwIDolZCBcbiIsc3RzKTsK KwkJQkNNTE9HX0VSUigiY21kIHNldHVwIDolZCBcbiIsIHN0cyk7CiAJCXBjaV9kaXNhYmxlX2Rl dmljZShwZGV2KTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpAQCAtNjU3LDcgKzY1Miw3IEBAIGlu dCBjaGRfZGVjX3BjaV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAKIAlyYyA9IGNoZF9k ZWNfZW5hYmxlX2ludChhZHApOwogCWlmIChyYykgewotCQlCQ01MT0dfRVJSKCJfZW5hYmxlX2lu dCBlcnI6JWQgXG4iLHJjKTsKKwkJQkNNTE9HX0VSUigiX2VuYWJsZV9pbnQgZXJyOiVkIFxuIiwg cmMpOwogCQlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiAJCXJldHVybiAtRU5PREVWOwogCX0K QEAgLTY5NiwxNyArNjkxLDE3IEBAIHZvaWQgY2hkX3NldF9sb2dfbGV2ZWwoc3RydWN0IGNyeXN0 YWxoZF9hZHAgKmFkcCwgY2hhciAqYXJnKQogewogCWlmICgoIWFyZykgfHwgKHN0cmxlbihhcmcp IDwgMykpCiAJCWdfbGlua2xvZ19sZXZlbCA9IEJDTUxPR19FUlJPUiB8IEJDTUxPR19EQVRBOwot CWVsc2UgaWYgKCFzdHJuY21wKGFyZywic3N0ZXAiLDUpKQorCWVsc2UgaWYgKCFzdHJuY21wKGFy ZywgInNzdGVwIiwgNSkpCiAJCWdfbGlua2xvZ19sZXZlbCA9IEJDTUxPR19JTkZPIHwgQkNNTE9H X0RBVEEgfCBCQ01MT0dfREJHIHwKIAkJCQkgIEJDTUxPR19TU1RFUCB8IEJDTUxPR19FUlJPUjsK LQllbHNlIGlmICghc3RybmNtcChhcmcsImluZm8iLDQpKQorCWVsc2UgaWYgKCFzdHJuY21wKGFy ZywgImluZm8iLCA0KSkKIAkJZ19saW5rbG9nX2xldmVsID0gQkNNTE9HX0VSUk9SIHwgQkNNTE9H X0RBVEEgfCBCQ01MT0dfSU5GTzsKLQllbHNlIGlmICghc3RybmNtcChhcmcsImRlYnVnIiw1KSkK KwllbHNlIGlmICghc3RybmNtcChhcmcsICJkZWJ1ZyIsIDUpKQogCQlnX2xpbmtsb2dfbGV2ZWwg PSBCQ01MT0dfRVJST1IgfCBCQ01MT0dfREFUQSB8IEJDTUxPR19JTkZPIHwKIAkJCQkgIEJDTUxP R19EQkc7Ci0JZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCJwYmFsbCIsNSkpCisJZWxzZSBpZiAoIXN0 cm5jbXAoYXJnLCAicGJhbGwiLCA1KSkKIAkJZ19saW5rbG9nX2xldmVsID0gMHhGRkZGRkZGRiAm IH4oQkNNTE9HX1NQSU5MT0NLKTsKLQllbHNlIGlmICghc3RybmNtcChhcmcsInNpbGVudCIsNikp CisJZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCAic2lsZW50IiwgNikpCiAJCWdfbGlua2xvZ19sZXZl bCA9IDA7CiAJZWxzZQogCQlnX2xpbmtsb2dfbGV2ZWwgPSAwOwpAQCAtNzIyLDIwICs3MTcsMjAg QEAgaW50IF9faW5pdCBjaGRfZGVjX21vZHVsZV9pbml0KHZvaWQpCiAJaW50IHJjOwogCiAJY2hk X3NldF9sb2dfbGV2ZWwoTlVMTCwgImRlYnVnIik7Ci0JQkNNTE9HKEJDTUxPR19EQVRBLCJMb2Fk aW5nIGNyeXN0YWxoZCAlZC4lZC4lZCBcbiIsCisJQkNNTE9HKEJDTUxPR19EQVRBLCAiTG9hZGlu ZyBjcnlzdGFsaGQgJWQuJWQuJWQgXG4iLAogCSAgICAgICBjcnlzdGFsaGRfa21vZF9tYWpvciwg Y3J5c3RhbGhkX2ttb2RfbWlub3IsIGNyeXN0YWxoZF9rbW9kX3Jldik7CiAKIAlyYyA9IHBjaV9y ZWdpc3Rlcl9kcml2ZXIoJmJjX2NoZF83MDAxMl9kcml2ZXIpOwogCiAJaWYgKHJjIDwgMCkKLQkJ QkNNTE9HX0VSUigiQ291bGQgbm90IGZpbmQgYW55IGRldmljZXMuIGVycjolZCBcbiIscmMpOwor CQlCQ01MT0dfRVJSKCJDb3VsZCBub3QgZmluZCBhbnkgZGV2aWNlcy4gZXJyOiVkIFxuIiwgcmMp OwogCiAJcmV0dXJuIHJjOwogfQogCi12b2lkIF9fZXhpdCBjaGRfZGVjX21vZHVsZV9jbGVhbnVw KCB2b2lkICkKK3ZvaWQgX19leGl0IGNoZF9kZWNfbW9kdWxlX2NsZWFudXAodm9pZCkKIHsKLQlC Q01MT0coQkNNTE9HX0RBVEEsInVubG9hZGluZyBjcnlzdGFsaGQgJWQuJWQuJWQgXG4iLAorCUJD TUxPRyhCQ01MT0dfREFUQSwgInVubG9hZGluZyBjcnlzdGFsaGQgJWQuJWQuJWQgXG4iLAogCSAg ICAgICBjcnlzdGFsaGRfa21vZF9tYWpvciwgY3J5c3RhbGhkX2ttb2RfbWlub3IsIGNyeXN0YWxo ZF9rbW9kX3Jldik7CiAKIAlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmJjX2NoZF83MDAxMl9kcml2 ZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX21p c2MuYyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9taXNjLmMKaW5kZXgg ODJlYTI3Ny4uODc5OGI5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQv Y3J5c3RhbGhkX21pc2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFs aGRfbWlzYy5jCkBAIC0zNSwxNSArMzUsMTMgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBjcnlz dGFsaGRfZHJhbV9yZChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCBtZW0KIAly ZXR1cm4gYmNfZGVjX3JlZ19yZChhZHAsICgweDAwMzgwMDAwIHwgKG1lbV9vZmYgJiAweDAwMDdG RkZGKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY3J5c3RhbGhkX2RyYW1fd3Ioc3RydWN0 IGNyeXN0YWxoZF9hZHAqYWRwLAotCQkJCSAgIHVpbnQzMl90IG1lbV9vZmYsIHVpbnQzMl90IHZh bCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlzdGFsaGRfZHJhbV93cihzdHJ1Y3QgY3J5c3RhbGhk X2FkcCAqYWRwLCB1aW50MzJfdCBtZW1fb2ZmLCB1aW50MzJfdCB2YWwpCiB7CiAJY3J5c3RhbGhk X3JlZ193cihhZHAsIERDSV9EUkFNX0JBU0VfQUREUiwgKG1lbV9vZmYgPj4gMTkpKTsKLQliY19k ZWNfcmVnX3dyKGFkcCwgKDB4MDAzODAwMDAgfCAobWVtX29mZiAmIDB4MDAwN0ZGRkYpKSx2YWwp OworCWJjX2RlY19yZWdfd3IoYWRwLCAoMHgwMDM4MDAwMCB8IChtZW1fb2ZmICYgMHgwMDA3RkZG RikpLCB2YWwpOwogfQogCi1zdGF0aWMgaW5saW5lIEJDX1NUQVRVUyBiY19jaGtfZHJhbV9yYW5n ZShzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLAotCQkJCQkgIHVpbnQzMl90IHN0YXJ0X29mZiwg dWludDMyX3QgY250KQorc3RhdGljIGlubGluZSBCQ19TVEFUVVMgYmNfY2hrX2RyYW1fcmFuZ2Uo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3Qgc3RhcnRfb2ZmLCB1aW50MzJfdCBj bnQpCiB7CiAJcmV0dXJuIEJDX1NUU19TVUNDRVNTOwogfQpAQCAtNTgsMTEgKzU2LDExIEBAIHN0 YXRpYyBjcnlzdGFsaGRfZGlvX3JlcSAqY3J5c3RhbGhkX2FsbG9jX2RpbyhzdHJ1Y3QgY3J5c3Rh bGhkX2FkcCAqYWRwKQogCQlyZXR1cm4gdGVtcDsKIAl9CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgm YWRwLT5sb2NrLGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYWRwLT5sb2NrLCBmbGFncyk7 CiAJdGVtcCA9IGFkcC0+dWFfbWFwX2ZyZWVfaGVhZDsKIAlpZiAodGVtcCkKIAkJYWRwLT51YV9t YXBfZnJlZV9oZWFkID0gYWRwLT51YV9tYXBfZnJlZV9oZWFkLT5uZXh0OwotCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmFkcC0+bG9jayxmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm YWRwLT5sb2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gdGVtcDsKIH0KQEAgLTczLDMwICs3MSwzMCBA QCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfZnJlZV9kaW8oc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFk cCwgY3J5c3RhbGhkX2Rpb19yZXEgKmRpbwogCiAJaWYgKCFhZHAgfHwgIWRpbykKIAkJcmV0dXJu OwotCXNwaW5fbG9ja19pcnFzYXZlKCZhZHAtPmxvY2ssZmxhZ3MpOworCXNwaW5fbG9ja19pcnFz YXZlKCZhZHAtPmxvY2ssIGZsYWdzKTsKIAlkaW8tPnNpZyA9IGNyeXN0YWxoZF9kaW9faW52Owog CWRpby0+cGFnZV9jbnQgPSAwOwogCWRpby0+ZmJfc2l6ZSA9IDA7Ci0JbWVtc2V0KCZkaW8tPnVp bmZvLDAsc2l6ZW9mKGRpby0+dWluZm8pKTsKKwltZW1zZXQoJmRpby0+dWluZm8sIDAsIHNpemVv ZihkaW8tPnVpbmZvKSk7CiAJZGlvLT5uZXh0ID0gYWRwLT51YV9tYXBfZnJlZV9oZWFkOwogCWFk cC0+dWFfbWFwX2ZyZWVfaGVhZCA9IGRpbzsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZHAt PmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkcC0+bG9jaywgZmxhZ3Mp OwogfQogCiBzdGF0aWMgY3J5c3RhbGhkX2VsZW1fdCAqY3J5c3RhbGhkX2FsbG9jX2VsZW0oc3Ry dWN0IGNyeXN0YWxoZF9hZHAgKmFkcCkKIHsKLQl1bnNpZ25lZCBsb25nIGZsYWdzPTA7Ci0JY3J5 c3RhbGhkX2VsZW1fdCAqdGVtcD1OVUxMOworCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOworCWNy eXN0YWxoZF9lbGVtX3QgKnRlbXAgPSBOVUxMOwogCiAJaWYgKCFhZHApCiAJCXJldHVybiB0ZW1w OwotCXNwaW5fbG9ja19pcnFzYXZlKCZhZHAtPmxvY2ssZmxhZ3MpOworCXNwaW5fbG9ja19pcnFz YXZlKCZhZHAtPmxvY2ssIGZsYWdzKTsKIAl0ZW1wID0gYWRwLT5lbGVtX3Bvb2xfaGVhZDsKIAlp ZiAodGVtcCkgewogCQlhZHAtPmVsZW1fcG9vbF9oZWFkID0gYWRwLT5lbGVtX3Bvb2xfaGVhZC0+ Zmxpbms7CiAJCW1lbXNldCh0ZW1wLCAwLCBzaXplb2YoKnRlbXApKTsKIAl9Ci0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmYWRwLT5sb2NrLGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZhZHAtPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiB0ZW1wOwogfQpAQCAtMTA2LDMzICsxMDQs MjUgQEAgc3RhdGljIHZvaWQgY3J5c3RhbGhkX2ZyZWVfZWxlbShzdHJ1Y3QgY3J5c3RhbGhkX2Fk cCAqYWRwLCBjcnlzdGFsaGRfZWxlbV90ICplbGUKIAogCWlmICghYWRwIHx8ICFlbGVtKQogCQly ZXR1cm47Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFkcC0+bG9jayxmbGFncyk7CisJc3Bpbl9sb2Nr X2lycXNhdmUoJmFkcC0+bG9jaywgZmxhZ3MpOwogCWVsZW0tPmZsaW5rID0gYWRwLT5lbGVtX3Bv b2xfaGVhZDsKIAlhZHAtPmVsZW1fcG9vbF9oZWFkID0gZWxlbTsKLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZhZHAtPmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkcC0+ bG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY3J5c3RhbGhkX3NldF9zZyhz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAkJCQkgIHVuc2lnbmVk IGludCBsZW4sIHVuc2lnbmVkIGludCBvZmZzZXQpCiB7Ci0jaWYgTElOVVhfVkVSU0lPTl9DT0RF ID4gS0VSTkVMX1ZFUlNJT04oMiw2LDIzKQogCXNnX3NldF9wYWdlKHNnLCBwYWdlLCBsZW4sIG9m ZnNldCk7Ci0jZWxzZQotCXNnLT5wYWdlICAgICAgID0gcGFnZTsKLQlzZy0+b2Zmc2V0ICAgICA9 IG9mZnNldDsKLQlzZy0+bGVuZ3RoICAgICA9IGxlbjsKICNpZmRlZiBDT05GSUdfWDg2XzY0CiAJ c2ctPmRtYV9sZW5ndGggPSBsZW47CiAjZW5kaWYKLSNlbmRpZgogfQogCiBzdGF0aWMgaW5saW5l IHZvaWQgY3J5c3RhbGhkX2luaXRfc2coc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgdW5zaWduZWQg aW50IGVudHJpZXMpCiB7Ci0vLyBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzExLzI3LzY4Ci0j aWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDIzKQorCS8qIGh0dHA6 Ly9sa21sLm9yZy9sa21sLzIwMDcvMTEvMjcvNjggKi8KIAlzZ19pbml0X3RhYmxlKHNnLCBlbnRy aWVzKTsKLSNlbmRpZgogfQogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09IEV4dGVybiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTE1MSw3ICsxNDEs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY3J5c3RhbGhkX2luaXRfc2coc3RydWN0IHNjYXR0ZXJs aXN0ICpzZywgdW5zaWduZWQgaW50IGVudHJpZQogdWludDMyX3QgYmNfZGVjX3JlZ19yZChzdHJ1 Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCByZWdfb2ZmKQogewogCWlmICghYWRwIHx8 IChyZWdfb2ZmID4gYWRwLT5wY2lfbWVtX2xlbikpIHsKLQkJQkNNTE9HX0VSUigiZGVjX3JkX3Jl Z19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIixyZWdfb2ZmKTsKKwkJQkNNTE9HX0VSUigiZGVj X3JkX3JlZ19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIiwgcmVnX29mZik7CiAJCXJldHVybiAw OwogCX0KIApAQCAtMTc0LDcgKzE2NCw3IEBAIHVpbnQzMl90IGJjX2RlY19yZWdfcmQoc3RydWN0 IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgcmVnX29mZikKIHZvaWQgYmNfZGVjX3JlZ193 cihzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCByZWdfb2ZmLCB1aW50MzJfdCB2 YWwpCiB7CiAJaWYgKCFhZHAgfHwgKHJlZ19vZmYgPiBhZHAtPnBjaV9tZW1fbGVuKSkgewotCQlC Q01MT0dfRVJSKCJkZWNfd3JfcmVnX29mZiBvdXRvZiByYW5nZTogMHglMDh4XG4iLHJlZ19vZmYp OworCQlCQ01MT0dfRVJSKCJkZWNfd3JfcmVnX29mZiBvdXRvZiByYW5nZTogMHglMDh4XG4iLCBy ZWdfb2ZmKTsKIAkJcmV0dXJuOwogCX0KIAl3cml0ZWwodmFsLCBhZHAtPmFkZHIgKyByZWdfb2Zm KTsKQEAgLTE5NCwxMCArMTg0LDEwIEBAIHZvaWQgYmNfZGVjX3JlZ193cihzdHJ1Y3QgY3J5c3Rh bGhkX2FkcCAqYWRwLCB1aW50MzJfdCByZWdfb2ZmLCB1aW50MzJfdCB2YWwpCiAgKiBjb25maWd1 cmF0aW9uIHNwYWNlLgogICoKICAqLwotdWludDMyX3QgY3J5c3RhbGhkX3JlZ19yZChzdHJ1Y3Qg Y3J5c3RhbGhkX2FkcCAqYWRwLHVpbnQzMl90IHJlZ19vZmYpCit1aW50MzJfdCBjcnlzdGFsaGRf cmVnX3JkKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVpbnQzMl90IHJlZ19vZmYpCiB7CiAJ aWYgKCFhZHAgfHwgKHJlZ19vZmYgPiBhZHAtPnBjaV9pMm9fbGVuKSkgewotCQlCQ01MT0dfRVJS KCJsaW5rX3JkX3JlZ19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIixyZWdfb2ZmKTsKKwkJQkNN TE9HX0VSUigibGlua19yZF9yZWdfb2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIsIHJlZ19vZmYp OwogCQlyZXR1cm4gMDsKIAl9CiAJcmV0dXJuIHJlYWRsKGFkcC0+aTJvX2FkZHIgKyByZWdfb2Zm KTsKQEAgLTIyMCw3ICsyMTAsNyBAQCB1aW50MzJfdCBjcnlzdGFsaGRfcmVnX3JkKHN0cnVjdCBj cnlzdGFsaGRfYWRwICphZHAsdWludDMyX3QgcmVnX29mZikKIHZvaWQgY3J5c3RhbGhkX3JlZ193 cihzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCByZWdfb2ZmLCB1aW50MzJfdCB2 YWwpCiB7CiAJaWYgKCFhZHAgfHwgKHJlZ19vZmYgPiBhZHAtPnBjaV9pMm9fbGVuKSkgewotCQlC Q01MT0dfRVJSKCJsaW5rX3dyX3JlZ19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIixyZWdfb2Zm KTsKKwkJQkNNTE9HX0VSUigibGlua193cl9yZWdfb2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIs IHJlZ19vZmYpOwogCQlyZXR1cm47CiAJfQogCXdyaXRlbCh2YWwsIGFkcC0+aTJvX2FkZHIgKyBy ZWdfb2ZmKTsKQEAgLTMwNywxOCArMjk3LDE4IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfcGNpX2Nm Z19yZChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCBvZmYsCiAKIAlzd2l0Y2gg KGxlbikgewogCWNhc2UgMToKLQkJcmMgPSBwY2lfcmVhZF9jb25maWdfYnl0ZShhZHAtPnBkZXYs IG9mZiwgKHU4Kil2YWwpOworCQlyYyA9IHBjaV9yZWFkX2NvbmZpZ19ieXRlKGFkcC0+cGRldiwg b2ZmLCAodTggKil2YWwpOwogCQlicmVhazsKIAljYXNlIDI6Ci0JCXJjID0gcGNpX3JlYWRfY29u ZmlnX3dvcmQoYWRwLT5wZGV2LCBvZmYsICh1MTYqKXZhbCk7CisJCXJjID0gcGNpX3JlYWRfY29u ZmlnX3dvcmQoYWRwLT5wZGV2LCBvZmYsICh1MTYgKil2YWwpOwogCQlicmVhazsKIAljYXNlIDQ6 Ci0JCXJjID0gcGNpX3JlYWRfY29uZmlnX2R3b3JkKGFkcC0+cGRldiwgb2ZmLCAodTMyKil2YWwp OworCQlyYyA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChhZHAtPnBkZXYsIG9mZiwgKHUzMiAqKXZh bCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJjID0gLUVJTlZBTDsKIAkJc3RzID0gQkNfU1RT X0lOVl9BUkc7Ci0JCUJDTUxPR19FUlIoIkludmFsaWQgbGVuOiVkXG4iLGxlbik7CisJCUJDTUxP R19FUlIoIkludmFsaWQgbGVuOiVkXG4iLCBsZW4pOwogCX07CiAKIAlpZiAocmMgJiYgKHN0cyA9 PSBCQ19TVFNfU1VDQ0VTUykpCkBAIC0zNjMsNyArMzUzLDcgQEAgQkNfU1RBVFVTIGNyeXN0YWxo ZF9wY2lfY2ZnX3dyKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVpbnQzMl90IG9mZiwKIAlk ZWZhdWx0OgogCQlyYyA9IC1FSU5WQUw7CiAJCXN0cyA9IEJDX1NUU19JTlZfQVJHOwotCQlCQ01M T0dfRVJSKCJJbnZhbGlkIGxlbjolZFxuIixsZW4pOworCQlCQ01MT0dfRVJSKCJJbnZhbGlkIGxl bjolZFxuIiwgbGVuKTsKIAl9OwogCiAJaWYgKHJjICYmIChzdHMgPT0gQkNfU1RTX1NVQ0NFU1Mp KQpAQCAtNDUyLDcgKzQ0Miw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfY3JlYXRlX2Rpb3Eoc3Ry dWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwKIAlpZiAoIWRpb3EpCiAJCXJldHVybiBCQ19TVFNfSU5T VUZGX1JFUzsKIAotCWRpb3EtPmxvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CisJc3Bpbl9sb2Nr X2luaXQoJmRpb3EtPmxvY2spOwogCWRpb3EtPnNpZyA9IEJDX0xJTktfRElPUV9TSUc7CiAJZGlv cS0+aGVhZCA9IChjcnlzdGFsaGRfZWxlbV90ICopJmRpb3EtPmhlYWQ7CiAJZGlvcS0+dGFpbCA9 IChjcnlzdGFsaGRfZWxlbV90ICopJmRpb3EtPmhlYWQ7CkBAIC01NjIsNyArNTUyLDcgQEAgdm9p ZCAqY3J5c3RhbGhkX2Rpb3FfZmV0Y2goY3J5c3RhbGhkX2Rpb3FfdCAqaW9xKQogCiAJc3Bpbl9s b2NrX2lycXNhdmUoJmlvcS0+bG9jaywgZmxhZ3MpOwogCXRtcCA9IGlvcS0+aGVhZDsKLQlpZiAo dG1wICE9IChjcnlzdGFsaGRfZWxlbV90KikmaW9xLT5oZWFkKSB7CisJaWYgKHRtcCAhPSAoY3J5 c3RhbGhkX2VsZW1fdCAqKSZpb3EtPmhlYWQpIHsKIAkJcmV0ID0gdG1wOwogCQl0bXAtPmZsaW5r LT5ibGluayA9IHRtcC0+Ymxpbms7CiAJCXRtcC0+YmxpbmstPmZsaW5rID0gdG1wLT5mbGluazsK QEAgLTU5OCw5ICs1ODgsOSBAQCB2b2lkICpjcnlzdGFsaGRfZGlvcV9maW5kX2FuZF9mZXRjaChj cnlzdGFsaGRfZGlvcV90ICppb3EsIHVpbnQzMl90IHRhZykKIAkJcmV0dXJuIGRhdGE7CiAJfQog Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvcS0+bG9jayxmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNh dmUoJmlvcS0+bG9jaywgZmxhZ3MpOwogCXRtcCA9IGlvcS0+aGVhZDsKLQl3aGlsZSAodG1wICE9 IChjcnlzdGFsaGRfZWxlbV90KikmaW9xLT5oZWFkKSB7CisJd2hpbGUgKHRtcCAhPSAoY3J5c3Rh bGhkX2VsZW1fdCAqKSZpb3EtPmhlYWQpIHsKIAkJaWYgKHRtcC0+dGFnID09IHRhZykgewogCQkJ cmV0ID0gdG1wOwogCQkJdG1wLT5mbGluay0+YmxpbmsgPSB0bXAtPmJsaW5rOwpAQCAtNjEwLDcg KzYwMCw3IEBAIHZvaWQgKmNyeXN0YWxoZF9kaW9xX2ZpbmRfYW5kX2ZldGNoKGNyeXN0YWxoZF9k aW9xX3QgKmlvcSwgdWludDMyX3QgdGFnKQogCQl9CiAJCXRtcCA9IHRtcC0+Zmxpbms7CiAJfQot CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvcS0+bG9jayxmbGFncyk7CisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmaW9xLT5sb2NrLCBmbGFncyk7CiAKIAlpZiAocmV0KSB7CiAJCWRhdGEgPSBy ZXQtPmRhdGE7CkBAIC02NDgsMTEgKzYzOCwxMSBAQCB2b2lkICpjcnlzdGFsaGRfZGlvcV9mZXRj aF93YWl0KGNyeXN0YWxoZF9kaW9xX3QgKmlvcSwgdWludDMyX3QgdG9fc2VjcywKIAl3aGlsZSAo KGlvcS0+Y291bnQgPT0gMCkgJiYgY291bnQpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm aW9xLT5sb2NrLCBmbGFncyk7CiAKLQkJY3J5c3RhbGhkX3dhaXRfb25fZXZlbnQoJmlvcS0+ZXZl bnQsIChpb3EtPmNvdW50PjApLCAxMDAwLCByYywgMCk7CisJCWNyeXN0YWxoZF93YWl0X29uX2V2 ZW50KCZpb3EtPmV2ZW50LCAoaW9xLT5jb3VudCA+IDApLCAxMDAwLCByYywgMCk7CiAJCWlmIChy YyA9PSAwKSB7CiAJCQlnb3RvIG91dDsKIAkJfSBlbHNlIGlmIChyYyA9PSAtRUlOVFIpIHsKLQkJ CUJDTUxPRyhCQ01MT0dfSU5GTywiQ2FuY2VsbGluZyBmZXRjaCB3YWl0XG4iKTsKKwkJCUJDTUxP RyhCQ01MT0dfSU5GTywgIkNhbmNlbGxpbmcgZmV0Y2ggd2FpdFxuIik7CiAJCQkqc2lnX3BlbmQg PSAxOwogCQkJcmV0dXJuIHRtcDsKIAkJfQpAQCAtNzI1LDcgKzcxNSw3IEBAIEJDX1NUQVRVUyBj cnlzdGFsaGRfbWFwX2RpbyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB2b2lkICp1YnVmZiwK IAlpZiAobnJfcGFnZXMgPiBkaW8tPm1heF9wYWdlcykgewogCQlCQ01MT0dfRVJSKCJtYXhfcGFn ZXMoJWQpIGV4Y2VlZGVkKCVkKSEhXG4iLAogCQkJICAgZGlvLT5tYXhfcGFnZXMsIG5yX3BhZ2Vz KTsKLQkJY3J5c3RhbGhkX3VubWFwX2RpbyhhZHAsZGlvKTsKKwkJY3J5c3RhbGhkX3VubWFwX2Rp byhhZHAsIGRpbyk7CiAJCXJldHVybiBCQ19TVFNfSU5TVUZGX1JFUzsKIAl9CiAKQEAgLTc0Myw4 ICs3MzMsOCBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX21hcF9kaW8oc3RydWN0IGNyeXN0YWxoZF9h ZHAgKmFkcCwgdm9pZCAqdWJ1ZmYsCiAJCWlmIChyZXMpIHsKIAkJCUJDTUxPR19FUlIoImZhaWxl ZCAlZCB0byBjb3B5ICV1IGZpbGwgYnl0ZXMgZnJvbSAlcFxuIiwKIAkJCQkgICByZXMsIGRpby0+ ZmJfc2l6ZSwKLQkJCQkgICAodm9pZCAqKSh1YWRkcitjb3VudC1kaW8tPmZiX3NpemUpKTsKLQkJ CWNyeXN0YWxoZF91bm1hcF9kaW8oYWRwLGRpbyk7CisJCQkJICAgKHZvaWQgKikodWFkZHIgKyBj b3VudC1kaW8tPmZiX3NpemUpKTsKKwkJCWNyeXN0YWxoZF91bm1hcF9kaW8oYWRwLCBkaW8pOwog CQkJcmV0dXJuIEJDX1NUU19JTlNVRkZfUkVTOwogCQl9CiAJfQpAQCAtNzY5LDcgKzc1OSw3IEBA IEJDX1NUQVRVUyBjcnlzdGFsaGRfbWFwX2RpbyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB2 b2lkICp1YnVmZiwKIAljcnlzdGFsaGRfc2V0X3NnKCZkaW8tPnNnWzBdLCBkaW8tPnBhZ2VzWzBd LCAwLCB1YWRkciAmIH5QQUdFX01BU0spOwogCWlmIChucl9wYWdlcyA+IDEpIHsKIAkJZGlvLT5z Z1swXS5sZW5ndGggPSBQQUdFX1NJWkUgLSBkaW8tPnNnWzBdLm9mZnNldDsKLSNpZiAoTElOVVhf VkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDIzKSkgfHwgZGVmaW5lZChDT05GSUdf WDg2XzY0KQorI2lmIGRlZmluZWQoQ09ORklHX1g4Nl82NCkKIAkJZGlvLT5zZ1swXS5kbWFfbGVu Z3RoID0gZGlvLT5zZ1swXS5sZW5ndGg7CiAjZW5kaWYKIAkJY291bnQgLT0gZGlvLT5zZ1swXS5s ZW5ndGg7CkBAIC03ODcsMTkgKzc3NywxOSBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX21hcF9kaW8o c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdm9pZCAqdWJ1ZmYsCiAJfSBlbHNlIHsKIAkJaWYg KGNvdW50IDwgNCkgewogCQkJZGlvLT5zZ1swXS5sZW5ndGggPSBjb3VudDsKLQkJCXNraXBfZmJf c2c9MTsKKwkJCXNraXBfZmJfc2cgPSAxOwogCQl9IGVsc2UgewogCQkJZGlvLT5zZ1swXS5sZW5n dGggPSBjb3VudCAtIGRpby0+ZmJfc2l6ZTsKIAkJfQotI2lmIChMSU5VWF9WRVJTSU9OX0NPREUg PiBLRVJORUxfVkVSU0lPTigyLDYsMjMpKSB8fCBkZWZpbmVkKENPTkZJR19YODZfNjQpCisjaWYg ZGVmaW5lZChDT05GSUdfWDg2XzY0KQogCQlkaW8tPnNnWzBdLmRtYV9sZW5ndGggPSBkaW8tPnNn WzBdLmxlbmd0aDsKICNlbmRpZgogCX0KIAlkaW8tPnNnX2NudCA9IHBjaV9tYXBfc2coYWRwLT5w ZGV2LCBkaW8tPnNnLAogCQkJCSBkaW8tPnBhZ2VfY250LCBkaW8tPmRpcmVjdGlvbik7CiAJaWYg KGRpby0+c2dfY250IDw9IDApIHsKLQkJQkNNTE9HX0VSUigic2cgbWFwICVkLSVkIFxuIixkaW8t PnNnX2NudCwgZGlvLT5wYWdlX2NudCk7Ci0JCWNyeXN0YWxoZF91bm1hcF9kaW8oYWRwLGRpbyk7 CisJCUJDTUxPR19FUlIoInNnIG1hcCAlZC0lZCBcbiIsIGRpby0+c2dfY250LCBkaW8tPnBhZ2Vf Y250KTsKKwkJY3J5c3RhbGhkX3VubWFwX2RpbyhhZHAsIGRpbyk7CiAJCXJldHVybiBCQ19TVFNf RVJST1I7CiAJfQogCWlmIChkaW8tPnNnX2NudCAmJiBza2lwX2ZiX3NnKQpAQCAtODMyLDcgKzgy Miw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfdW5tYXBfZGlvKHN0cnVjdCBjcnlzdGFsaGRfYWRw ICphZHAsIGNyeXN0YWxoZF9kaW9fcmVxICpkaW8pCiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxM OwogCWludCBqID0gMDsKIAotCWlmICghYWRwIHx8ICFkaW8gKSB7CisJaWYgKCFhZHAgfHwgIWRp bykgewogCQlCQ01MT0dfRVJSKCJJbnZhbGlkIGFyZyBcbiIpOwogCQlyZXR1cm4gQkNfU1RTX0lO Vl9BUkc7CiAJfQpAQCAtODkwLDE5ICs4ODAsMTkgQEAgaW50IGNyeXN0YWxoZF9jcmVhdGVfZGlv X3Bvb2woc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgbWF4X3BhZ2VzKQogCWFz eiA9ICAoc2l6ZW9mKCpkaW8tPnBhZ2VzKSAqIG1heF9wYWdlcykgKwogCSAgICAgICAoc2l6ZW9m KCpkaW8tPnNnKSAqIG1heF9wYWdlcykgKyBzaXplb2YoKmRpbyk7CiAKLQlCQ01MT0coQkNNTE9H X0RCRywiSW5pdGlhbGl6aW5nIERpbyBwb29sICVkICVkICV4ICVwXG4iLAorCUJDTUxPRyhCQ01M T0dfREJHLCAiSW5pdGlhbGl6aW5nIERpbyBwb29sICVkICVkICV4ICVwXG4iLAogCSAgICAgICBC Q19MSU5LX1NHX1BPT0xfU1osIG1heF9wYWdlcywgYXN6LCBhZHAtPmZpbGxfYnl0ZV9wb29sKTsK IAogCWZvciAoaSA9IDA7IGkgPCBCQ19MSU5LX1NHX1BPT0xfU1o7IGkrKykgewogCQl0ZW1wID0g KHVpbnQ4X3QgKilremFsbG9jKGFzeiwgR0ZQX0tFUk5FTCk7CiAJCWlmICgodGVtcCkgPT0gTlVM TCkgewotCQkJQkNNTE9HX0VSUigiRmFpbGVkIHRvIGFsbG9jICVkIG1lbVxuIixhc3opOworCQkJ QkNNTE9HX0VSUigiRmFpbGVkIHRvIGFsbG9jICVkIG1lbVxuIiwgYXN6KTsKIAkJCXJldHVybiAt RU5PTUVNOwogCQl9CiAKIAkJZGlvID0gKGNyeXN0YWxoZF9kaW9fcmVxICopdGVtcDsKIAkJdGVt cCArPSBzaXplb2YoKmRpbyk7Ci0JCWRpby0+cGFnZXMgPSAoc3RydWN0IHBhZ2UqKil0ZW1wOwor CQlkaW8tPnBhZ2VzID0gKHN0cnVjdCBwYWdlICoqKXRlbXA7CiAJCXRlbXAgKz0gKHNpemVvZigq ZGlvLT5wYWdlcykgKiBtYXhfcGFnZXMpOwogCQlkaW8tPnNnID0gKHN0cnVjdCBzY2F0dGVybGlz dCAqKXRlbXA7CiAJCWRpby0+bWF4X3BhZ2VzID0gbWF4X3BhZ2VzOwpAQCAtOTU0LDcgKzk0NCw3 IEBAIHZvaWQgY3J5c3RhbGhkX2Rlc3Ryb3lfZGlvX3Bvb2woc3RydWN0IGNyeXN0YWxoZF9hZHAg KmFkcCkKIAkJYWRwLT5maWxsX2J5dGVfcG9vbCA9IE5VTEw7CiAJfQogCi0JQkNNTE9HKEJDTUxP R19EQkcsIlJlbGVhc2VkIGRpbyBwb29sICVkIFxuIixjb3VudCk7CisJQkNNTE9HKEJDTUxPR19E QkcsICJSZWxlYXNlZCBkaW8gcG9vbCAlZCBcbiIsIGNvdW50KTsKIH0KIAogLyoqCkBAIC0xMDEz LDcgKzEwMDMsNyBAQCB2b2lkIGNyeXN0YWxoZF9kZWxldGVfZWxlbV9wb29sKHN0cnVjdCBjcnlz dGFsaGRfYWRwICphZHApCiAJCX0KIAl9IHdoaWxlICh0ZW1wKTsKIAotCUJDTUxPRyhCQ01MT0df REJHLCJyZWxlYXNlZCAlZCBlbGVtXG4iLGRiZ19jbnQpOworCUJDTUxPRyhCQ01MT0dfREJHLCAi cmVsZWFzZWQgJWQgZWxlbVxuIiwgZGJnX2NudCk7CiB9CiAKIC8qPT09PT09PT09PT09PT09PSBE ZWJ1ZyBzdXBwb3J0IHJvdXRpbmVzLi4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwpAQCAtMTAyNSwxMyArMTAxNSwxMyBAQCB2b2lkIGNyeXN0YWxoZF9zaG93X2J1ZmZlcih1aW50 MzJfdCBvZmYsIHVpbnQ4X3QgKmJ1ZmYsIHVpbnQzMl90IGR3Y291bnQpCiAJCWlmIChrID09IDEp CiAJCQlCQ01MT0coQkNNTE9HX0RBVEEsICIweCUwOFggOiAiLCBvZmYpOwogCi0JCUJDTUxPRyhC Q01MT0dfREFUQSwiIDB4JTA4WCAiLCAqKCh1aW50MzJfdCAqKWJ1ZmYpKTsKKwkJQkNNTE9HKEJD TUxPR19EQVRBLCAiIDB4JTA4WCAiLCAqKCh1aW50MzJfdCAqKWJ1ZmYpKTsKIAogCQlidWZmICs9 IHNpemVvZih1aW50MzJfdCk7CiAJCW9mZiAgKz0gc2l6ZW9mKHVpbnQzMl90KTsKIAkJaysrOwog CQlpZiAoKGkgPT0gZHdjb3VudCAtIDEpIHx8IChrID4gNCkpIHsKLQkJCUJDTUxPRyhCQ01MT0df REFUQSwiXG4iKTsKKwkJCUJDTUxPRyhCQ01MT0dfREFUQSwgIlxuIik7CiAJCQlrID0gMTsKIAkJ fQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9t aXNjLmggYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfbWlzYy5oCmluZGV4 IDg2ZWQ5MjIuLmEyYWE2YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhk L2NyeXN0YWxoZF9taXNjLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3Rh bGhkX21pc2MuaApAQCAtMTMyLDE5ICsxMzIsMTkgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9tZW1f d3Ioc3RydWN0IGNyeXN0YWxoZF9hZHAgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdAog CiAvKj09PT09PT09PT1MaW5rICg3MDAxMikgUENJZSBDb25maWcgYWNjZXNzIHJvdXRpbmVzLj09 PT09PT09PT09PT09PT0qLwogQkNfU1RBVFVTIGNyeXN0YWxoZF9wY2lfY2ZnX3JkKHN0cnVjdCBj cnlzdGFsaGRfYWRwICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QgKik7Ci1CQ19TVEFU VVMgY3J5c3RhbGhkX3BjaV9jZmdfd3Ioc3RydWN0IGNyeXN0YWxoZF9hZHAgKiwgdWludDMyX3Qs IHVpbnQzMl90LCB1aW50MzJfdCApOworQkNfU1RBVFVTIGNyeXN0YWxoZF9wY2lfY2ZnX3dyKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpOwogCiAv Kj09PT09PT09PSBMaW51eCBLZXJuZWwgSW50ZXJmYWNlIHJvdXRpbmVzLiA9PT09PT09PT09PT09 PT09PT09PT09PSAqLwogdm9pZCAqYmNfa2Vybl9kbWFfYWxsb2Moc3RydWN0IGNyeXN0YWxoZF9h ZHAgKiwgdWludDMyX3QsIGRtYV9hZGRyX3QgKik7CiB2b2lkIGJjX2tlcm5fZG1hX2ZyZWUoc3Ry dWN0IGNyeXN0YWxoZF9hZHAgKiwgdWludDMyX3QsCiAJCSAgICAgIHZvaWQgKiwgZG1hX2FkZHJf dCk7Ci0jZGVmaW5lIGNyeXN0YWxoZF9jcmVhdGVfZXZlbnQoX2V2KQlpbml0X3dhaXRxdWV1ZV9o ZWFkKCBfZXYpCi0jZGVmaW5lIGNyeXN0YWxoZF9zZXRfZXZlbnQoX2V2KQkJd2FrZV91cF9pbnRl cnJ1cHRpYmxlKCBfZXYpCisjZGVmaW5lIGNyeXN0YWxoZF9jcmVhdGVfZXZlbnQoX2V2KQlpbml0 X3dhaXRxdWV1ZV9oZWFkKF9ldikKKyNkZWZpbmUgY3J5c3RhbGhkX3NldF9ldmVudChfZXYpCQl3 YWtlX3VwX2ludGVycnVwdGlibGUoX2V2KQogI2RlZmluZSBjcnlzdGFsaGRfd2FpdF9vbl9ldmVu dChldiwgY29uZGl0aW9uLCB0aW1lb3V0LCByZXQsIG5vc2lnKQlcCiBkbyB7CQkJCQkJCQkJXAog CURFQ0xBUkVfV0FJVFFVRVVFKGVudHJ5LCBjdXJyZW50KTsJCQkJXAogCXVuc2lnbmVkIGxvbmcg ZW5kID0gamlmZmllcyArICgodGltZW91dCAqIEhaKSAvIDEwMDApOwkJXAotCQlyZXQ9MDsJCQkJ CQkJXAorCQlyZXQgPSAwOwkJCQkJCVwKIAlhZGRfd2FpdF9xdWV1ZShldiwgJmVudHJ5KTsJCQkJ CVwKIAlmb3IgKDs7KSB7CQkJCQkJCVwKIAkJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVS UlVQVElCTEUpOwkJXApAQCAtMTYzLDE0ICsxNjMsMTUgQEAgZG8gewkJCQkJCQkJCVwKIAl9CQkJ CQkJCQlcCiAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwkJCQlcCiAJcmVtb3Zl X3dhaXRfcXVldWUoZXYsICZlbnRyeSk7CQkJCQlcCi19IHdoaWxlKDApCit9IHdoaWxlICgwKQog CiAvKj09PT09PT09PT09PT09PT0gRGlyZWN0IElPIG1hcHBpbmcgcm91dGluZXMgPT09PT09PT09 PT09PT09PT09Ki8KLWV4dGVybiBpbnQgY3J5c3RhbGhkX2NyZWF0ZV9kaW9fcG9vbChzdHJ1Y3Qg Y3J5c3RhbGhkX2FkcCAqLCB1aW50MzJfdCApOworZXh0ZXJuIGludCBjcnlzdGFsaGRfY3JlYXRl X2Rpb19wb29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90KTsKIGV4dGVybiB2b2lk IGNyeXN0YWxoZF9kZXN0cm95X2Rpb19wb29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICopOwotZXh0 ZXJuIEJDX1NUQVRVUyBjcnlzdGFsaGRfbWFwX2RpbyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqLHZv aWQgKiwgdWludDMyX3QsIHVpbnQzMl90LCAKLQkJCQlib29sLCBib29sLGNyeXN0YWxoZF9kaW9f cmVxKiogKTsKLWV4dGVybiBCQ19TVEFUVVMgY3J5c3RhbGhkX3VubWFwX2RpbyhzdHJ1Y3QgY3J5 c3RhbGhkX2FkcCAqLGNyeXN0YWxoZF9kaW9fcmVxKik7CitleHRlcm4gQkNfU1RBVFVTIGNyeXN0 YWxoZF9tYXBfZGlvKHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIHZvaWQgKiwgdWludDMyX3QsCisJ CQkJICAgdWludDMyX3QsIGJvb2wsIGJvb2wsIGNyeXN0YWxoZF9kaW9fcmVxKiopOworCitleHRl cm4gQkNfU1RBVFVTIGNyeXN0YWxoZF91bm1hcF9kaW8oc3RydWN0IGNyeXN0YWxoZF9hZHAgKiwg Y3J5c3RhbGhkX2Rpb19yZXEqKTsKICNkZWZpbmUgY3J5c3RhbGhkX2dldF9zZ2xlX3BhZGRyKF9k aW8sIF9peCkgKGNwdV90b19sZTY0KHNnX2RtYV9hZGRyZXNzKCZfZGlvLT5zZ1tfaXhdKSkpCiAj ZGVmaW5lIGNyeXN0YWxoZF9nZXRfc2dsZV9sZW4oX2RpbywgX2l4KSAoY3B1X3RvX2xlMzIoc2df ZG1hX2xlbigmX2Rpby0+c2dbX2l4XSkpKQogCkBAIC0xNzksMTIgKzE4MCwxMiBAQCBleHRlcm4g QkNfU1RBVFVTIGNyeXN0YWxoZF9jcmVhdGVfZGlvcShzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqLCBj cnlzdGFsaGRfZGlvcV90CiBleHRlcm4gdm9pZCBjcnlzdGFsaGRfZGVsZXRlX2Rpb3Eoc3RydWN0 IGNyeXN0YWxoZF9hZHAgKiwgY3J5c3RhbGhkX2Rpb3FfdCAqKTsKIGV4dGVybiBCQ19TVEFUVVMg Y3J5c3RhbGhkX2Rpb3FfYWRkKGNyeXN0YWxoZF9kaW9xX3QgKmlvcSwgdm9pZCAqZGF0YSwgYm9v bCB3YWtlLCB1aW50MzJfdCB0YWcpOwogZXh0ZXJuIHZvaWQgKmNyeXN0YWxoZF9kaW9xX2ZldGNo KGNyeXN0YWxoZF9kaW9xX3QgKmlvcSk7Ci1leHRlcm4gdm9pZCAqY3J5c3RhbGhkX2Rpb3FfZmlu ZF9hbmRfZmV0Y2goY3J5c3RhbGhkX2Rpb3FfdCAqaW9xLHVpbnQzMl90IHRhZyk7CitleHRlcm4g dm9pZCAqY3J5c3RhbGhkX2Rpb3FfZmluZF9hbmRfZmV0Y2goY3J5c3RhbGhkX2Rpb3FfdCAqaW9x LCB1aW50MzJfdCB0YWcpOwogZXh0ZXJuIHZvaWQgKmNyeXN0YWxoZF9kaW9xX2ZldGNoX3dhaXQo Y3J5c3RhbGhkX2Rpb3FfdCAqaW9xLCB1aW50MzJfdCB0b19zZWNzLCB1aW50MzJfdCAqc2lnX3Bl bmQpOwogCiAjZGVmaW5lIGNyeXN0YWxoZF9kaW9xX2NvdW50KF9pb3EpCSgoX2lvcSkgPyBfaW9x LT5jb3VudCA6IDApCiAKLWV4dGVybiBpbnQgY3J5c3RhbGhkX2NyZWF0ZV9lbGVtX3Bvb2woc3Ry dWN0IGNyeXN0YWxoZF9hZHAgKiwgdWludDMyX3QgKTsKK2V4dGVybiBpbnQgY3J5c3RhbGhkX2Ny ZWF0ZV9lbGVtX3Bvb2woc3RydWN0IGNyeXN0YWxoZF9hZHAgKiwgdWludDMyX3QpOwogZXh0ZXJu IHZvaWQgY3J5c3RhbGhkX2RlbGV0ZV9lbGVtX3Bvb2woc3RydWN0IGNyeXN0YWxoZF9hZHAgKik7 CiAKIApAQCAtMjIwLDkgKzIyMSw5IEBAIGlmIChnX2xpbmtsb2dfbGV2ZWwgJiB0cmFjZSkgewkJ CVwKIAogI2RlZmluZSBCQ01MT0dfRVJSKGZtdCwgYXJncy4uLikJCQkJCVwKIGRvIHsJCQkJCQkJ CQlcCi0JaWYoZ19saW5rbG9nX2xldmVsICYgQkNNTE9HX0VSUk9SKXsJCQkJXAotCSAgcHJpbnRr KCIqRVJSKjolczolZDogImZtdCxfX0ZJTEVfXyxfX0xJTkVfXywgIyNhcmdzKTsJCVwKKwlpZiAo Z19saW5rbG9nX2xldmVsICYgQkNNTE9HX0VSUk9SKSB7CQkJCVwKKwkJcHJpbnRrKCIqRVJSKjol czolZDogImZtdCwgX19GSUxFX18sIF9fTElORV9fLCAjI2FyZ3MpOwlcCiAJfQkJCQkJCQkJXAot fSB3aGlsZSgwKTsKK30gd2hpbGUgKDApOwogCiAjZW5kaWYKLS0gCjEuNS42Cgo= --0023545bd65848adf4047c329daa-- -- 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/