Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751811Ab0ABUR7 (ORCPT ); Sat, 2 Jan 2010 15:17:59 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751446Ab0ABUR6 (ORCPT ); Sat, 2 Jan 2010 15:17:58 -0500 Received: from mail-fx0-f225.google.com ([209.85.220.225]:52834 "EHLO mail-fx0-f225.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751191Ab0ABUR6 (ORCPT ); Sat, 2 Jan 2010 15:17:58 -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=uuNj4ZKxWaKIYlOqI+CIFczzl2XeUGHjR+t6OL6alHhHkH14XoBMYaI+c0Xq8cp8bE D8YAdgKyDNLr7KXgdFgnC08Dmmzfph3HI/f9/1d3bC2QlWVNhZRsCN1aVUEn8E1u8+ei vSbUNkdAfUqamQimN/wtJjKQpPR9gEcXySayk= MIME-Version: 1.0 Date: Sun, 3 Jan 2010 00:17:55 +0400 Message-ID: <1a297b361001021217k676a1348udf9e9d5890b903df@mail.gmail.com> Subject: staging Patch 03/04: Crystal HD From: Manu Abraham To: Greg KH Cc: linux-kernel@vger.kernel.org Content-Type: multipart/mixed; boundary=00151747c366f94bab047c342ed7 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 87714 Lines: 1150 --00151747c366f94bab047c342ed7 Content-Type: text/plain; charset=ISO-8859-1 --00151747c366f94bab047c342ed7 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_g3yub6s01 RnJvbSAwNzRjNjViMmZmODI3N2IxZWZmODYzZmE2NGMwM2MyZjkwNDdhNjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51IEFicmFoYW0gPG1hbnVAbWFudS0wNC5ueHAtZGV2PgpE YXRlOiBTYXQsIDIgSmFuIDIwMTAgMjI6MDY6MTUgKzA0MDAKU3ViamVjdDogW1BBVENIXSBbQ3J5 c3RhbCBIRF0gQ29kaW5nIHN0eWxlIGNsZWFudXBzCgpTaWduZWQtb2ZmLWJ5OiBNYW51IEFicmFo YW0gPGFicmFoYW0ubWFudUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwt aGQvYmNfZHRzX2RlZnMuaCAgICAgfCAgMTI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNfZ2xvYl9sbnguaCB8ICAgMTAgKy0KIGRy aXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c190eXBlcy5oICAgIHwgICAxNiArKy0tCiBk cml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5jICB8ICAgNzcgKysrKysr KystLS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMuaCAg fCAgICA2ICstCiBkcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfZndfaWYuaCB8 ICAgMjIgKystLS0KIGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9ody5jICAg IHwgICA5NyArKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQv Y3J5c3RhbGhkX2h3LmggICAgfCAgIDEwICstCiBkcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9j cnlzdGFsaGRfbG54LmMgICB8ICAgOTEgKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9zdGFn aW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX21pc2MuYyAgfCAgMTA2ICsrKysrKysrKystLS0tLS0t LS0tLS0KIGRyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9taXNjLmggIHwgICAy OSArKystLS0KIDExIGZpbGVzIGNoYW5nZWQsIDI4MSBpbnNlcnRpb25zKCspLCAzMDcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX2Rl ZnMuaCBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19kZWZzLmgKaW5kZXggNDA1 YmQxNi4uYzM0Y2MwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNf ZHRzX2RlZnMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNfZGVmcy5o CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiYmNfZHRzX3R5cGVzLmgiCiAKIC8qIEJJVCBN YXNrICovCi0jZGVmaW5lIEJDX0JJVChfeCkJCSggMSA8PCAoX3gpICkKKyNkZWZpbmUgQkNfQklU KF94KQkJKDEgPDwgKF94KSkKIAogdHlwZWRlZiBlbnVtIF9CQ19TVEFUVVMgewogCUJDX1NUU19T VUNDRVNTCQk9IDAsCkBAIC0xOTUsOSArMTk1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX0JDX1BJQl9F WFRfSDI2NCB7CiAKIAkvKiBIMjY0X1ZBTElEX1BBTlNDQU4gKi8KIAl1aW50MzJfdAlwYW5fc2Nh bl9jb3VudDsKLQlpbnQzMl90CQlwYW5fc2Nhbl9sZWZ0ICBbM107Ci0JaW50MzJfdAkJcGFuX3Nj YW5fcmlnaHQgWzNdOwotCWludDMyX3QJCXBhbl9zY2FuX3RvcCAgIFszXTsKKwlpbnQzMl90CQlw YW5fc2Nhbl9sZWZ0WzNdOworCWludDMyX3QJCXBhbl9zY2FuX3JpZ2h0WzNdOworCWludDMyX3QJ CXBhbl9zY2FuX3RvcFszXTsKIAlpbnQzMl90CQlwYW5fc2Nhbl9ib3R0b21bM107CiAKIAkvKiBI MjY0X1ZBTElEX1NQU19DUk9QICovCkBAIC0yNDEsOCArMjQxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X0JDX1BJQl9FWFRfVkMxIHsKICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQp IHx8IGRlZmluZWQoX19MSU5VWF9VU0VSX18pCiAvKiBWYWx1ZXMgZm9yICdwdWxsZG93bicgZmll bGQuICAnMCcgbWVhbnMgbm8gcHVsbGRvd24gaW5mb3JtYXRpb24KICAqIHdhcyBwcmVzZW50IGZv ciB0aGlzIHBpY3R1cmUuICovCi1lbnVtCi17CitlbnVtIHsKIAl2ZGVjTm9QdWxsZG93bkluZm8J PSAwLAogCXZkZWNUb3AJCQk9IDEsCiAJdmRlY0JvdHRvbQkJPSAyLApAQCAtMjU3LDggKzI1Niw3 IEBAIGVudW0KIH07CiAKIC8qIFZhbHVlcyBmb3IgdGhlICdmcmFtZV9yYXRlJyBmaWVsZC4gKi8K LWVudW0KLXsKK2VudW0gewogCXZkZWNGcmFtZVJhdGVVbmtub3duID0gMCwKIAl2ZGVjRnJhbWVS YXRlMjNfOTcsCiAJdmRlY0ZyYW1lUmF0ZTI0LApAQCAtMjcxLDggKzI2OSw3IEBAIGVudW0KIH07 CiAKIC8qIFZhbHVlcyBmb3IgdGhlICdhc3BlY3RfcmF0aW8nIGZpZWxkLiAqLwotZW51bQotewor ZW51bSB7CiAJdmRlY0FzcGVjdFJhdGlvVW5rbm93biA9IDAsCiAJdmRlY0FzcGVjdFJhdGlvU3F1 YXJlLAogCXZkZWNBc3BlY3RSYXRpbzEyXzExLApAQCAtMjk0LDggKzI5MSw3IEBAIGVudW0KIH07 CiAKIC8qIFZhbHVlcyBmb3IgdGhlICdjb2xvdXJfcHJpbWFyaWVzJyBmaWVsZC4gKi8KLWVudW0K LXsKK2VudW0gewogCXZkZWNDb2xvdXJQcmltYXJpZXNVbmtub3duID0gMCwKIAl2ZGVjQ29sb3Vy UHJpbWFyaWVzQlQ3MDksCiAJdmRlY0NvbG91clByaW1hcmllc1Vuc3BlY2lmaWVkLApAQCAtMzA3 LDQzICszMDMsNDIgQEAgZW51bQogCXZkZWNDb2xvdXJQcmltYXJpZXNHZW5lcmljRmlsbSwKIH07 CiAKLWVudW0KLXsKLQl2ZGVjUkVTT0xVVElPTl9DVVNUT00JPSAweDAwMDAwMDAwLCAvLyBjdXN0 b20KLQl2ZGVjUkVTT0xVVElPTl80ODBpCT0gMHgwMDAwMDAwMSwgLy8gNDgwaQotCXZkZWNSRVNP TFVUSU9OXzEwODBpCT0gMHgwMDAwMDAwMiwgLy8gMTA4MGkgKDE5MjB4MTA4MCwgNjBpKQotCXZk ZWNSRVNPTFVUSU9OX05UU0MJPSAweDAwMDAwMDAzLCAvLyBOVFNDICg3MjB4NDgzLCA2MGkpCi0J dmRlY1JFU09MVVRJT05fNDgwcAk9IDB4MDAwMDAwMDQsIC8vIDQ4MHAgKDcyMHg0ODAsIDYwcCkK LQl2ZGVjUkVTT0xVVElPTl83MjBwCT0gMHgwMDAwMDAwNSwgLy8gNzIwcCAoMTI4MHg3MjAsIDYw cCkKLQl2ZGVjUkVTT0xVVElPTl9QQUwxCT0gMHgwMDAwMDAwNiwgLy8gUEFMXzEgKDcyMHg1NzYs IDUwaSkKLQl2ZGVjUkVTT0xVVElPTl8xMDgwaTI1CT0gMHgwMDAwMDAwNywgLy8gMTA4MGkyNSAo MTkyMHgxMDgwLCA1MGkpCi0JdmRlY1JFU09MVVRJT05fNzIwcDUwCT0gMHgwMDAwMDAwOCwgLy8g NzIwcDUwICgxMjgweDcyMCwgNTBwKQotCXZkZWNSRVNPTFVUSU9OXzU3NnAJPSAweDAwMDAwMDA5 LCAvLyA1NzZwICg3MjB4NTc2LCA1MHApCi0JdmRlY1JFU09MVVRJT05fMTA4MGkyOV85NyA9IDB4 MDAwMDAwMEEsIC8vIDEwODBpICgxOTIweDEwODAsIDU5Ljk0aSkKLQl2ZGVjUkVTT0xVVElPTl83 MjBwNTlfOTQgID0gMHgwMDAwMDAwQiwgLy8gNzIwcCAoMTI4MHg3MjAsIDU5Ljk0cCkKLQl2ZGVj UkVTT0xVVElPTl9TRF9EVkQJPSAweDAwMDAwMDBDLCAvLyBTRCBEVkQgKDcyMHg0ODMsIDYwaSkK LQl2ZGVjUkVTT0xVVElPTl80ODBwNjU2CT0gMHgwMDAwMDAwRCwgLy8gNDgwcCAoNzIweDQ4MCwg NjBwKSwgb3V0cHV0IGJ1cyB3aWR0aCA4IGJpdCwgY2xvY2sgNzQuMjVNSHouCi0JdmRlY1JFU09M VVRJT05fMTA4MHAyM185NzYgPSAweDAwMDAwMDBFLCAvLyAxMDgwcDIzXzk3NiAoMTkyMHgxMDgw LCAyMy45NzZwKQotCXZkZWNSRVNPTFVUSU9OXzcyMHAyM185NzYgID0gMHgwMDAwMDAwRiwgLy8g NzIwcDIzXzk3NiAoMTI4MHg3MjBwLCAyMy45NzZwKQotCXZkZWNSRVNPTFVUSU9OXzI0MHAyOV85 NyAgID0gMHgwMDAwMDAxMCwgLy8gMjQwcCAoMTQ0MHgyNDAsIDI5Ljk3cCApCi0JdmRlY1JFU09M VVRJT05fMjQwcDMwCT0gMHgwMDAwMDAxMSwgLy8gMjQwcCAoMTQ0MHgyNDAsIDMwcCkKLQl2ZGVj UkVTT0xVVElPTl8yODhwMjUJPSAweDAwMDAwMDEyLCAvLyAyODhwICgxNDQweDI4OHAsIDI1cCkK LQl2ZGVjUkVTT0xVVElPTl8xMDgwcDI5Xzk3ID0gMHgwMDAwMDAxMywgLy8gMTA4MHAyOV85NyAo MTkyMHgxMDgwLCAyOS45N3ApCi0JdmRlY1JFU09MVVRJT05fMTA4MHAzMAk9IDB4MDAwMDAwMTQs IC8vIDEwODBwMzAgKDE5MjB4MTA4MCwgMzBwKQotCXZkZWNSRVNPTFVUSU9OXzEwODBwMjQJPSAw eDAwMDAwMDE1LCAvLyAxMDgwcDI0ICgxOTIweDEwODAsIDI0cCkKLQl2ZGVjUkVTT0xVVElPTl8x MDgwcDI1CT0gMHgwMDAwMDAxNiwgLy8gMTA4MHAyNSAoMTkyMHgxMDgwLCAyNXApCi0JdmRlY1JF U09MVVRJT05fNzIwcDI0CT0gMHgwMDAwMDAxNywgLy8gNzIwcDI0ICgxMjgweDcyMCwgMjVwKQot CXZkZWNSRVNPTFVUSU9OXzcyMHAyOV85NyAgPSAweDAwMDAwMDE4LCAvLyA3MjBwMjkuOTcgKDEy ODB4NzIwLCAyOS45N3ApCi0JdmRlY1JFU09MVVRJT05fNDgwcDIzXzk3NiA9IDB4MDAwMDAwMTks IC8vIDQ4MHAyMy45NzYgKDcyMCo0ODAsIDIzLjk3NikKLQl2ZGVjUkVTT0xVVElPTl80ODBwMjlf OTcgID0gMHgwMDAwMDAxQSwgLy8gNDgwcDI5Ljk3NiAoNzIwKjQ4MCwgMjkuOTdwKQotCXZkZWNS RVNPTFVUSU9OXzU3NnAyNQk9IDB4MDAwMDAwMUIsIC8vIDU3NnAyNSAoNzIwKjU3NiwgMjVwKQot CS8vRm9yIFplcm8gRnJhbWUgUmF0ZQotCXZkZWNSRVNPTFVUSU9OXzQ4MHAwCT0gMHgwMDAwMDAx QywgLy8gNDgwcCAoNzIweDQ4MCwgMHApCi0JdmRlY1JFU09MVVRJT05fNDgwaTAJPSAweDAwMDAw MDFELCAvLyA0ODBpICg3MjB4NDgwLCAwaSkKLQl2ZGVjUkVTT0xVVElPTl81NzZwMAk9IDB4MDAw MDAwMUUsIC8vIDU3NnAgKDcyMHg1NzYsIDBwKQotCXZkZWNSRVNPTFVUSU9OXzcyMHAwCT0gMHgw MDAwMDAxRiwgLy8gNzIwcCAoMTI4MHg3MjAsIDBwKQotCXZkZWNSRVNPTFVUSU9OXzEwODBwMAk9 IDB4MDAwMDAwMjAsIC8vIDEwODBwICgxOTIweDEwODAsIDBwKQotCXZkZWNSRVNPTFVUSU9OXzEw ODBpMAk9IDB4MDAwMDAwMjEsIC8vIDEwODBpICgxOTIweDEwODAsIDBpKQorZW51bSB7CisJdmRl Y1JFU09MVVRJT05fQ1VTVE9NCT0gMHgwMDAwMDAwMCwgLyogY3VzdG9tICovCisJdmRlY1JFU09M VVRJT05fNDgwaQk9IDB4MDAwMDAwMDEsIC8qIDQ4MGkgKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgw aQk9IDB4MDAwMDAwMDIsIC8qIDEwODBpICgxOTIweDEwODAsIDYwaSkgKi8KKwl2ZGVjUkVTT0xV VElPTl9OVFNDCT0gMHgwMDAwMDAwMywgLyogTlRTQyAoNzIweDQ4MywgNjBpKSAqLworCXZkZWNS RVNPTFVUSU9OXzQ4MHAJPSAweDAwMDAwMDA0LCAvKiA0ODBwICg3MjB4NDgwLCA2MHApICovCisJ dmRlY1JFU09MVVRJT05fNzIwcAk9IDB4MDAwMDAwMDUsIC8qIDcyMHAgKDEyODB4NzIwLCA2MHAp ICovCisJdmRlY1JFU09MVVRJT05fUEFMMQk9IDB4MDAwMDAwMDYsIC8qIFBBTF8xICg3MjB4NTc2 LCA1MGkpICovCisJdmRlY1JFU09MVVRJT05fMTA4MGkyNQk9IDB4MDAwMDAwMDcsIC8qIDEwODBp MjUgKDE5MjB4MTA4MCwgNTBpKSAqLworCXZkZWNSRVNPTFVUSU9OXzcyMHA1MAk9IDB4MDAwMDAw MDgsIC8qIDcyMHA1MCAoMTI4MHg3MjAsIDUwcCkgKi8KKwl2ZGVjUkVTT0xVVElPTl81NzZwCT0g MHgwMDAwMDAwOSwgLyogNTc2cCAoNzIweDU3NiwgNTBwKSAqLworCXZkZWNSRVNPTFVUSU9OXzEw ODBpMjlfOTcgPSAweDAwMDAwMDBBLCAvKiAxMDgwaSAoMTkyMHgxMDgwLCA1OS45NGkpICovCisJ dmRlY1JFU09MVVRJT05fNzIwcDU5Xzk0ICA9IDB4MDAwMDAwMEIsIC8qIDcyMHAgKDEyODB4NzIw LCA1OS45NHApICovCisJdmRlY1JFU09MVVRJT05fU0RfRFZECT0gMHgwMDAwMDAwQywgLyogU0Qg RFZEICg3MjB4NDgzLCA2MGkpICovCisJdmRlY1JFU09MVVRJT05fNDgwcDY1Ngk9IDB4MDAwMDAw MEQsIC8qIDQ4MHAgKDcyMHg0ODAsIDYwcCksIG91dHB1dCBidXMgd2lkdGggOCBiaXQsIGNsb2Nr IDc0LjI1TUh6ICovCisJdmRlY1JFU09MVVRJT05fMTA4MHAyM185NzYgPSAweDAwMDAwMDBFLCAv KiAxMDgwcDIzXzk3NiAoMTkyMHgxMDgwLCAyMy45NzZwKSAqLworCXZkZWNSRVNPTFVUSU9OXzcy MHAyM185NzYgID0gMHgwMDAwMDAwRiwgLyogNzIwcDIzXzk3NiAoMTI4MHg3MjBwLCAyMy45NzZw KSAqLworCXZkZWNSRVNPTFVUSU9OXzI0MHAyOV85NyAgID0gMHgwMDAwMDAxMCwgLyogMjQwcCAo MTQ0MHgyNDAsIDI5Ljk3cCApICovCisJdmRlY1JFU09MVVRJT05fMjQwcDMwCT0gMHgwMDAwMDAx MSwgLyogMjQwcCAoMTQ0MHgyNDAsIDMwcCkgKi8KKwl2ZGVjUkVTT0xVVElPTl8yODhwMjUJPSAw eDAwMDAwMDEyLCAvKiAyODhwICgxNDQweDI4OHAsIDI1cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl8x MDgwcDI5Xzk3ID0gMHgwMDAwMDAxMywgLyogMTA4MHAyOV85NyAoMTkyMHgxMDgwLCAyOS45N3Ap ICovCisJdmRlY1JFU09MVVRJT05fMTA4MHAzMAk9IDB4MDAwMDAwMTQsIC8qIDEwODBwMzAgKDE5 MjB4MTA4MCwgMzBwKSAqLworCXZkZWNSRVNPTFVUSU9OXzEwODBwMjQJPSAweDAwMDAwMDE1LCAv KiAxMDgwcDI0ICgxOTIweDEwODAsIDI0cCkgKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgwcDI1CT0g MHgwMDAwMDAxNiwgLyogMTA4MHAyNSAoMTkyMHgxMDgwLCAyNXApICovCisJdmRlY1JFU09MVVRJ T05fNzIwcDI0CT0gMHgwMDAwMDAxNywgLyogNzIwcDI0ICgxMjgweDcyMCwgMjVwKSAqLworCXZk ZWNSRVNPTFVUSU9OXzcyMHAyOV85NyAgPSAweDAwMDAwMDE4LCAvKiA3MjBwMjkuOTcgKDEyODB4 NzIwLCAyOS45N3ApICovCisJdmRlY1JFU09MVVRJT05fNDgwcDIzXzk3NiA9IDB4MDAwMDAwMTks IC8qIDQ4MHAyMy45NzYgKDcyMCo0ODAsIDIzLjk3NikgKi8KKwl2ZGVjUkVTT0xVVElPTl80ODBw MjlfOTcgID0gMHgwMDAwMDAxQSwgLyogNDgwcDI5Ljk3NiAoNzIwKjQ4MCwgMjkuOTdwKSAqLwor CXZkZWNSRVNPTFVUSU9OXzU3NnAyNQk9IDB4MDAwMDAwMUIsIC8qIDU3NnAyNSAoNzIwKjU3Niwg MjVwKSAqLworCS8qIEZvciBaZXJvIEZyYW1lIFJhdGUgKi8KKwl2ZGVjUkVTT0xVVElPTl80ODBw MAk9IDB4MDAwMDAwMUMsIC8qIDQ4MHAgKDcyMHg0ODAsIDBwKSAqLworCXZkZWNSRVNPTFVUSU9O XzQ4MGkwCT0gMHgwMDAwMDAxRCwgLyogNDgwaSAoNzIweDQ4MCwgMGkpICovCisJdmRlY1JFU09M VVRJT05fNTc2cDAJPSAweDAwMDAwMDFFLCAvKiA1NzZwICg3MjB4NTc2LCAwcCkgKi8KKwl2ZGVj UkVTT0xVVElPTl83MjBwMAk9IDB4MDAwMDAwMUYsIC8qIDcyMHAgKDEyODB4NzIwLCAwcCkgKi8K Kwl2ZGVjUkVTT0xVVElPTl8xMDgwcDAJPSAweDAwMDAwMDIwLCAvKiAxMDgwcCAoMTkyMHgxMDgw LCAwcCkgKi8KKwl2ZGVjUkVTT0xVVElPTl8xMDgwaTAJPSAweDAwMDAwMDIxLCAvKiAxMDgwaSAo MTkyMHgxMDgwLCAwaSkgKi8KIH07CiAKIC8qIEJpdCBkZWZpbml0aW9ucyBmb3IgJ2ZsYWdzJyBm aWVsZCAqLwpAQCAtMzYzLDcgKzM1OCw3IEBAIGVudW0KIAogI2RlZmluZSBWREVDX0ZMQUdfUElD VFVSRV9NRVRBX0RBVEFfUFJFU0VOVAkoMHg0MDAwMCkKIAotI2VuZGlmIC8vIF9XSU4zMiB8fCBf V0lONjQKKyNlbmRpZiAvKiBfV0lOMzIgfHwgX1dJTjY0ICovCiAKIGVudW0gX0JDX09VVFBVVF9G T1JNQVQgewogCU1PREU0MjAJCQkJPSAweDAsCkBAIC0zOTAsMTEgKzM4NSwxMCBAQCB0eXBlZGVm IHN0cnVjdCBfQkNfUElDX0lORk9fQkxPQ0sgewogCXVpbnQzMl90CW5fZHJvcDsJLyogbnVtYmVy IG9mIG5vbi1yZWZlcmVuY2UgZnJhbWVzIHJlbWFpbmluZyB0byBiZSBkcm9wcGVkICovCiAKIAkv KiBQcm90b2NvbC1zcGVjaWZpYyBleHRlbnNpb25zLiAqLwotCXVuaW9uCi0JewotCSAgQkNfUElC X0VYVF9IMjY0CWgyNjQ7Ci0JICBCQ19QSUJfRVhUX01QRUcJbXBlZzsKLQkgIEJDX1BJQl9FWFRf VkMxCSB2YzE7CisJdW5pb24geworCQlCQ19QSUJfRVhUX0gyNjQJaDI2NDsKKwkJQkNfUElCX0VY VF9NUEVHCW1wZWc7CisJCUJDX1BJQl9FWFRfVkMxCSB2YzE7CiAJfSBvdGhlcjsKIAogfSBCQ19Q SUNfSU5GT19CTE9DSywgKlBCQ19QSUNfSU5GT19CTE9DSzsKQEAgLTQxOSwxNCArNDEzLDE0IEBA IGVudW0gX1BPVVRfT1BUSU9OQUxfSU5fRkxBR1NfewogfTsKIAogI2lmIGRlZmluZWQoX19LRVJO RUxfXykgfHwgZGVmaW5lZChfX0xJTlVYX1VTRVJfXykKLXR5cGVkZWYgQkNfU1RBVFVTICgqZHRz X3BvdXRfY2FsbGJhY2spKHZvaWQgICpzaG5kLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVp Z2h0LCB1aW50MzJfdCBzdHJpZGUsIHZvaWQgKnBPdXQpOwordHlwZWRlZiBCQ19TVEFUVVMoKmR0 c19wb3V0X2NhbGxiYWNrKSh2b2lkICAqc2huZCwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhl aWdodCwgdWludDMyX3Qgc3RyaWRlLCB2b2lkICpwT3V0KTsKICNlbHNlCi10eXBlZGVmIEJDX1NU QVRVUyAoKmR0c19wb3V0X2NhbGxiYWNrKSh2b2lkICAqc2huZCwgdWludDMyX3Qgd2lkdGgsIHVp bnQzMl90IGhlaWdodCwgdWludDMyX3Qgc3RyaWRlLCBzdHJ1Y3QgX0JDX0RUU19QUk9DX09VVCAq cE91dCk7Cit0eXBlZGVmIEJDX1NUQVRVUygqZHRzX3BvdXRfY2FsbGJhY2spKHZvaWQgICpzaG5k LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBzdHJpZGUsIHN0cnVj dCBfQkNfRFRTX1BST0NfT1VUICpwT3V0KTsKICNlbmRpZgogCi0vL0xpbmUgMjEgQ2xvc2VkIENh cHRpb24KLS8vVXNlciBEYXRhCi0jZGVmaW5lIE1BWF9VRF9TSVpFCQkxNzkyCS8vMTkyMCAtIDEy OAorLyogTGluZSAyMSBDbG9zZWQgQ2FwdGlvbiAqLworLyogVXNlciBEYXRhICovCisjZGVmaW5l IE1BWF9VRF9TSVpFCQkxNzkyCS8qIDE5MjAgLSAxMjggKi8KIAogdHlwZWRlZiBzdHJ1Y3QgX0JD X0RUU19QUk9DX09VVCB7CiAJdWludDhfdAkJKllidWZmOwkJCS8qIENhbGxlciBTdXBwbGllZCBi dWZmZXIgZm9yIFkgZGF0YSAqLwpAQCAtNDQ0LDggKzQzOCw4IEBAIHR5cGVkZWYgc3RydWN0IF9C Q19EVFNfUFJPQ19PVVQgewogCiAJQkNfUElDX0lORk9fQkxPQ0sgUGljSW5mbzsJCS8qIFBpY3R1 cmUgSW5mb3JtYXRpb24gQmxvY2sgRGF0YSAqLwogCi0JLy9MaW5lIDIxIENsb3NlZCBDYXB0aW9u Ci0JLy9Vc2VyIERhdGEKKwkvKiBMaW5lIDIxIENsb3NlZCBDYXB0aW9uICovCisJLyogVXNlciBE YXRhICovCiAJdWludDMyX3QJVXNlckRhdGFTejsKIAl1aW50OF90CQlVc2VyRGF0YVtNQVhfVURf U0laRV07CiAKQEAgLTQ4OCwxMCArNDgyLDEwIEBAIHR5cGVkZWYgc3RydWN0IF9CQ19EVFNfU1RB VFVTIHsKIH0gQkNfRFRTX1NUQVRVUzsKIAogI2RlZmluZSBCQ19TV0FQMzIoX3YpCQkJXAotCSgg KCgoX3YpICYgMHhGRjAwMDAwMCk+PjI0KXwJXAorCSgoKChfdikgJiAweEZGMDAwMDAwKT4+MjQp fAlcCiAJICAoKChfdikgJiAweDAwRkYwMDAwKT4+OCl8CVwKIAkgICgoKF92KSAmIDB4MDAwMEZG MDApPDw4KXwJXAotCSAgKCgoX3YpICYgMHgwMDAwMDBGRik8PDI0KSApCisJICAoKChfdikgJiAw eDAwMDAwMEZGKTw8MjQpKQogCiAjZGVmaW5lIFdNX0FHRU5UX1RSQVlJQ09OX0RFQ09ERVJfT1BF TgkxMDAwMQogI2RlZmluZSBXTV9BR0VOVF9UUkFZSUNPTl9ERUNPREVSX0NMT1NFCTEwMDAyCkBA IC01MDEsNCArNDk1LDQgQEAgdHlwZWRlZiBzdHJ1Y3QgX0JDX0RUU19TVEFUVVMgewogI2RlZmlu ZSBXTV9BR0VOVF9UUkFZSUNPTl9ERUNPREVSX1BBVVNFCTEwMDA2CiAKIAotI2VuZGlmCS8vX0JD X0RUU19ERUZTX0hfCisjZW5kaWYJLyogX0JDX0RUU19ERUZTX0hfICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9iY19kdHNfZ2xvYl9sbnguaCBiL2RyaXZlcnMvc3Rh Z2luZy9jcnlzdGFsLWhkL2JjX2R0c19nbG9iX2xueC5oCmluZGV4IGNkMjRmYWUuLmIzMTI1ZTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19nbG9iX2xueC5o CisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c19nbG9iX2xueC5oCkBAIC0x ODksMTIgKzE4OSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfQkNfREVDX09VVF9CVUZGewogCUJDX1BJ Q19JTkZPX0JMT0NLCVBpYkluZm87CiAJdWludDMyX3QJCUZsYWdzOwogCXVpbnQzMl90CQlCYWRG ckNudDsKLX1CQ19ERUNfT1VUX0JVRkY7Cit9IEJDX0RFQ19PVVRfQlVGRjsKIAogdHlwZWRlZiBz dHJ1Y3QgX0JDX05PVElGWV9NT0RFIHsKIAl1aW50MzJfdAkJTW9kZTsKIAl1aW50MzJfdAkJUnN2 clszXTsKLX1CQ19OT1RJRllfTU9ERTsKK30gQkNfTk9USUZZX01PREU7CiAKIHR5cGVkZWYgc3Ry dWN0IF9CQ19DTE9DSyB7CiAJdWludDMyX3QJCWNsazsKQEAgLTIyMCw3ICsyMjAsNyBAQCB0eXBl ZGVmIHN0cnVjdCBfQkNfSU9DVExfREFUQSB7CiAJCUJDX0RUU19TVEFUUwkJZHJ2U3RhdDsKIAkJ QkNfTk9USUZZX01PREUJCU5vdGlmeU1vZGU7CiAJCUJDX0NMT0NLCQkJY2xvY2tWYWx1ZTsKLQl9 dTsKKwl9IHU7CiAJc3RydWN0IF9CQ19JT0NUTF9EQVRBCSpuZXh0OwogfSBCQ19JT0NUTF9EQVRB OwogCkBAIC0yNDksMTEgKzI0OSwxMSBAQCB0eXBlZGVmIGVudW0gX0JDX0RSVl9DTUR7CiAKIAkv KiBNVVNUIGJlIHRoZSBsYXN0IG9uZS4uICovCiAJRFJWX0NNRF9FTkQsCQkJLyogRW5kIG9mIHRo ZSBMaXN0Li4gKi8KLX1CQ19EUlZfQ01EOworfSBCQ19EUlZfQ01EOwogCiAjZGVmaW5lIEJDX0lP Q19CQVNFCQknYicKICNkZWZpbmUgQkNfSU9DX1ZPSUQJCV9JT0NfTk9ORQotI2RlZmluZSBCQ19J T0NfSU9XUihucix0eXBlKQlfSU9XUihCQ19JT0NfQkFTRSxucix0eXBlKQorI2RlZmluZSBCQ19J T0NfSU9XUihuciwgdHlwZSkJX0lPV1IoQkNfSU9DX0JBU0UsIG5yLCB0eXBlKQogI2RlZmluZSBC Q19JT0NUTF9NQgkJQkNfSU9DVExfREFUQQogCiAjZGVmaW5lCUJDTV9JT0NfR0VUX1ZFUlNJT04J QkNfSU9DX0lPV1IoRFJWX0NNRF9WRVJTSU9OLCBCQ19JT0NUTF9NQikKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2JjX2R0c190eXBlcy5oIGIvZHJpdmVycy9zdGFnaW5n L2NyeXN0YWwtaGQvYmNfZHRzX3R5cGVzLmgKaW5kZXggYTI4YzdhZi4uZTA3M2Q3NCAxMDA2NDQK LS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX3R5cGVzLmgKKysrIGIvZHJp dmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvYmNfZHRzX3R5cGVzLmgKQEAgLTI1LDEwICsyNSw2IEBA CiAjaWZuZGVmIF9CQ19EVFNfVFlQRVNfSF8KICNkZWZpbmUgX0JDX0RUU19UWVBFU19IXwogCi0j aWZkZWYgX19MSU5VWF9VU0VSX18JLy8gRG9uJ3QgaW5jbHVkZSB0aGVzZSBmb3IgS0VSTkVMLi4K LSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChfV0lONjQpIHx8IGRl ZmluZWQoX1dJTjMyKQogdHlwZWRlZiB1aW50MzJfdAkJVTMyOwogdHlwZWRlZiBpbnQzMl90CQkJ UzMyOwpAQCAtMzksNyArMzUsNyBAQCB0eXBlZGVmIGNoYXIJCQlTODsKICNlbmRpZgogCiAjaWZu ZGVmIFBWT0lECi10eXBlZGVmIHZvaWQJKgkJUFZPSUQ7Cit0eXBlZGVmIHZvaWQJKlBWT0lEOwog I2VuZGlmCiAKICNpZm5kZWYgQk9PTApAQCAtNTYsMTMgKzUyLDEzIEBAIHR5cGVkZWYgaW50CUJP T0w7CiAjaWYgIShkZWZpbmVkKFBPSU5URVJfMzIpKQogI2RlZmluZSBQT0lOVEVSXzMyCV9fcHRy MzIKICNlbmRpZgotI2Vsc2UJLy9fV0lOMzIKKyNlbHNlCS8qIF9XSU4zMiAqLwogI2RlZmluZSBQ T0lOVEVSXzMyCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChf X0xJTlVYX1VTRVJfXykKIAotI2lmZGVmIF9fTElOVVhfVVNFUl9fCS8vIERvbid0IGluY2x1ZGUg dGhlc2UgZm9yIEtFUk5FTC4uCisjaWZkZWYgX19MSU5VWF9VU0VSX18JLyogRG9uJ3QgaW5jbHVk ZSB0aGVzZSBmb3IgS0VSTkVMICovCiB0eXBlZGVmIHVpbnQzMl90CVVMT05HOwogdHlwZWRlZiBp bnQzMl90CQlMT05HOwogdHlwZWRlZiB2b2lkCQkqSEFORExFOwpAQCAtNzQsMTUgKzcwLDE3IEBA IHR5cGVkZWYgdWludDMyX3QJKkxQRFdPUkQ7CiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIJKlBVQ0hB UjsKIAogI2lmbmRlZiBUUlVFCi0jZGVmaW5lIFRSVUUJCTEKKwkjZGVmaW5lIFRSVUUJCTEKICNl bmRpZgogCiAjaWZuZGVmIEZBTFNFCi0jZGVmaW5lIEZBTFNFCQkwCisJI2RlZmluZSBGQUxTRQkJ MAogI2VuZGlmCiAKICNkZWZpbmUgVEVYVAorCiAjZWxzZQorCiAvKiBGb3IgS2VybmVsIHVzYWdl Li4gKi8KIHR5cGVkZWYgYm9vbAliY19ib29sX3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmMgYi9kcml2ZXJzL3N0YWdpbmcv Y3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5jCmluZGV4IDQ1N2YyNjcuLjM5YzY0MWQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmMKKysrIGIv ZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMuYwpAQCAtODgsNyArODgs NyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX25vdGlmeV9tb2RlKHN0cnVjdCBjcnlzdGFs aGRfY21kICpjdHgsCiAJCXJldHVybiBCQ19TVFNfU1VDQ0VTUzsKIAl9CiAJaWYgKGN0eC0+c3Rh dGUgIT0gQkNfTElOS19JTlZBTElEKSB7Ci0JCUJDTUxPR19FUlIoIkxpbmsgaW52YWxpZCBzdGF0 ZSAlZCBcbiIsY3R4LT5zdGF0ZSk7CisJCUJDTUxPR19FUlIoIkxpbmsgaW52YWxpZCBzdGF0ZSAl ZCBcbiIsIGN0eC0+c3RhdGUpOwogCQlyZXR1cm4gQkNfU1RTX0VSUl9VU0FHRTsKIAl9CiAJLyog Q2hlY2sgZm9yIGR1cGxpY2F0ZSBwbGF5YmFjayBzZXNzaW9ucy4uKi8KQEAgLTIzNiw3ICsyMzYs NyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2NmZ19yZChzdHJ1Y3QgY3J5c3RhbGhkX2Nt ZCAqY3R4LAogCWlmICghY3R4IHx8ICFpZGF0YSkKIAkJcmV0dXJuIEJDX1NUU19JTlZfQVJHOwog Ci0JdGVtcCA9ICh1aW50MzJfdCopaWRhdGEtPnVkYXRhLnUucGNpQ2ZnLnBjaV9jZmdfc3BhY2U7 CisJdGVtcCA9ICh1aW50MzJfdCAqKSBpZGF0YS0+dWRhdGEudS5wY2lDZmcucGNpX2NmZ19zcGFj ZTsKIAlvZmYgPSBpZGF0YS0+dWRhdGEudS5wY2lDZmcuT2Zmc2V0OwogCWxlbiA9IGlkYXRhLT51 ZGF0YS51LnBjaUNmZy5TaXplOwogCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIEJDX1NUQVRV UyBiY19jcHJvY19jZmdfd3Ioc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwKIAlpZiAoIWN0eCB8 fCAhaWRhdGEpCiAJCXJldHVybiBCQ19TVFNfSU5WX0FSRzsKIAotCXRlbXAgPSAodWludDMyX3Qq KWlkYXRhLT51ZGF0YS51LnBjaUNmZy5wY2lfY2ZnX3NwYWNlOworCXRlbXAgPSAodWludDMyX3Qg KikgaWRhdGEtPnVkYXRhLnUucGNpQ2ZnLnBjaV9jZmdfc3BhY2U7CiAJb2ZmID0gaWRhdGEtPnVk YXRhLnUucGNpQ2ZnLk9mZnNldDsKIAlsZW4gPSBpZGF0YS0+dWRhdGEudS5wY2lDZmcuU2l6ZTsK IApAQCAtMzA3LDYgKzMwNyw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZG93bmxvYWRf Zncoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwKIAogCXN0cyA9IGNyeXN0YWxoZF9kb3dubG9h ZF9mdyhjdHgtPmFkcCwgKHVpbnQ4X3QgKilpZGF0YS0+YWRkX2NkYXRhLAogCQkJCSAgaWRhdGEt PmFkZF9jZGF0YV9zeik7CisKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKSB7CiAJCUJDTUxP R19FUlIoIkZpcm13YXJlIERvd25sb2FkIEZhaWx1cmUhISAtICVkXG4iLCBzdHMpOwogCX0gZWxz ZQpAQCAtMzM0LDcgKzMzNSw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZG9fZndfY21k KHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9pb2N0bF9kCiAJdWludDMyX3Qg KmNtZDsKIAogCWlmICghKGN0eC0+c3RhdGUgJiBCQ19MSU5LX0lOSVQpKSB7Ci0JCUJDTUxPR19F UlIoIkxpbmsgaW52YWxpZCBzdGF0ZSAlZCBcbiIsY3R4LT5zdGF0ZSk7CisJCUJDTUxPR19FUlIo IkxpbmsgaW52YWxpZCBzdGF0ZSAlZCBcbiIsIGN0eC0+c3RhdGUpOwogCQlyZXR1cm4gQkNfU1RT X0VSUl9VU0FHRTsKIAl9CiAKQEAgLTM0Nyw3ICszNDgsNyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJj X2Nwcm9jX2RvX2Z3X2NtZChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBjcnlzdGFsaGRfaW9j dGxfZAogCQkJY3J5c3RhbGhkX2h3X3VucGF1c2UoJmN0eC0+aHdfY3R4KTsKIAkJfQogCX0gZWxz ZSBpZiAoY21kWzBdID09IGVDTURfQzAxMV9ERUNfQ0hBTl9GTFVTSCkgewotCQlCQ01MT0coQkNN TE9HX0lORk8sIkZsdXNoIGlzc3VlZFxuIik7CisJCUJDTUxPRyhCQ01MT0dfSU5GTywgIkZsdXNo IGlzc3VlZFxuIik7CiAJCWlmIChjbWRbM10pCiAJCQljdHgtPmNpbl93YWl0X2V4aXQgPSAxOwog CX0KQEAgLTM3Myw4ICszNzQsNyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2RvX2Z3X2Nt ZChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBjcnlzdGFsaGRfaW9jdGxfZAogc3RhdGljIHZv aWQgYmNfcHJvY19pbl9jb21wbGV0aW9uKGNyeXN0YWxoZF9kaW9fcmVxICpkaW9faG5kLAogCQkJ CSAgd2FpdF9xdWV1ZV9oZWFkX3QgKmV2ZW50LCBCQ19TVEFUVVMgc3RzKQogewotCWlmICghZGlv X2huZCB8fCAhZXZlbnQpCi0JeworCWlmICghZGlvX2huZCB8fCAhZXZlbnQpIHsKIAkJQkNNTE9H X0VSUigiSW52YWxpZCBBcmchIVxuIik7CiAJCXJldHVybjsKIAl9CkBAIC00MjMsOCArNDIzLDgg QEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19od190eGRtYShzdHJ1Y3QgY3J5c3RhbGhkX2Nt ZCAqY3R4LAogCWNyeXN0YWxoZF9jcmVhdGVfZXZlbnQoJmV2ZW50KTsKIAogCWN0eC0+dHhfbGlz dF9pZCA9IDA7Ci0JLy9tc2xlZXBfaW50ZXJydXB0aWJsZSgyMDAwKTsKLQlzdHMgPSBjcnlzdGFs aGRfaHdfcG9zdF90eCgmY3R4LT5od19jdHgsZGlvLCBiY19wcm9jX2luX2NvbXBsZXRpb24sCisJ LyogbXNsZWVwX2ludGVycnVwdGlibGUoMjAwMCk7ICovCisJc3RzID0gY3J5c3RhbGhkX2h3X3Bv c3RfdHgoJmN0eC0+aHdfY3R4LCBkaW8sIGJjX3Byb2NfaW5fY29tcGxldGlvbiwKIAkJCQkgJmV2 ZW50LCAmdHhfbGlzdGlkLAogCQkJCSBpZGF0YS0+dWRhdGEudS5Qcm9jSW5wdXQuRW5jcnlwdGVk KTsKIApAQCAtNDMyLDEzICs0MzIsMTMgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19od190 eGRtYShzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LAogCQlzdHMgPSBiY19jcHJvY19jb2RlaW5f c2xlZXAoY3R4KTsKIAkJaWYgKHN0cyAhPSBCQ19TVFNfU1VDQ0VTUykKIAkJCWJyZWFrOwotCQlz dHMgPSBjcnlzdGFsaGRfaHdfcG9zdF90eCgmY3R4LT5od19jdHgsZGlvLAorCQlzdHMgPSBjcnlz dGFsaGRfaHdfcG9zdF90eCgmY3R4LT5od19jdHgsIGRpbywKIAkJCQkJIGJjX3Byb2NfaW5fY29t cGxldGlvbiwKIAkJCQkJICZldmVudCwgJnR4X2xpc3RpZCwKIAkJCQkJIGlkYXRhLT51ZGF0YS51 LlByb2NJbnB1dC5FbmNyeXB0ZWQpOwogCX0KIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKSB7 Ci0JCUJDTUxPRyhCQ01MT0dfREJHLCJfaHdfdHhkbWEgcmV0dXJuaW5nIHN0czolZFxuIixzdHMp OworCQlCQ01MT0coQkNNTE9HX0RCRywgIl9od190eGRtYSByZXR1cm5pbmcgc3RzOiVkXG4iLCBz dHMpOwogCQlyZXR1cm4gc3RzOwogCX0KIAlpZiAoY3R4LT5jaW5fd2FpdF9leGl0KQpAQCAtNDUy LDEwICs0NTIsMTAgQEAgc3RhdGljIEJDX1NUQVRVUyBiY19jcHJvY19od190eGRtYShzdHJ1Y3Qg Y3J5c3RhbGhkX2NtZCAqY3R4LAogCWlmICghcmMpIHsKIAkJcmV0dXJuIGRpby0+dWluZm8uY29t cF9zdHM7CiAJfSBlbHNlIGlmIChyYyA9PSAtRUJVU1kpIHsKLQkJQkNNTE9HKEJDTUxPR19EQkcs Il90eF9wb3N0KCkgVC9PIFxuIik7CisJCUJDTUxPRyhCQ01MT0dfREJHLCAiX3R4X3Bvc3QoKSBU L08gXG4iKTsKIAkJc3RzID0gQkNfU1RTX1RJTUVPVVQ7CiAJfSBlbHNlIGlmIChyYyA9PSAtRUlO VFIpIHsKLQkJQkNNTE9HKEJDTUxPR19EQkcsIlR4IFdhaXQgU2lnbmFsIGludC5cbiIpOworCQlC Q01MT0coQkNNTE9HX0RCRywgIlR4IFdhaXQgU2lnbmFsIGludC5cbiIpOwogCQlzdHMgPSBCQ19T VFNfSU9fVVNFUl9BQk9SVDsKIAl9IGVsc2UgewogCQlzdHMgPSBCQ19TVFNfSU9fRVJST1I7CkBA IC00NzYsMTQgKzQ3NiwxNCBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2NoZWNrX2luYnVm ZnMoYm9vbCBwaW4sIHZvaWQgKnVidWZmLCB1aW50MzJfdCB1Yl9zeiwKIHsKIAlpZiAoIXVidWZm IHx8ICF1Yl9zeikgewogCQlCQ01MT0dfRVJSKCIlcy0+SW52YWxpZCBBcmcgJXAgJXhcbiIsCi0J CQkoKHBpbik/IlRYIjoiUlgiKSx1YnVmZix1Yl9zeik7CisJCQkoKHBpbikgPyAiVFgiIDogIlJY IiksIHVidWZmLCB1Yl9zeik7CiAJCXJldHVybiBCQ19TVFNfSU5WX0FSRzsKIAl9CiAKIAkvKiBD aGVjayBmb3IgYWxpZ25tZW50ICovCiAJaWYgKCgodWludHB0cl90KXVidWZmKSAmIDB4MDMpIHsK IAkJQkNNTE9HX0VSUigiJXMtLT5Vbi1hbGlnbmVkIGFkZHJlc3Mgbm90IGltcGxlbWVudGVkIHll dC4uICVwIFxuIiwKLQkJCQkoKHBpbik/IlRYIjoiUlgiKSx1YnVmZik7CisJCQkJKChwaW4pID8g IlRYIiA6ICJSWCIpLCB1YnVmZik7CiAJCXJldHVybiBCQ19TVFNfTk9UX0lNUEw7CiAJfQogCWlm IChwaW4pCkBAIC01MTcsMTMgKzUxNywxMyBAQCBzdGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX3By b2NfaW5wdXQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsXwogCXVi dWZmID0gaWRhdGEtPnVkYXRhLnUuUHJvY0lucHV0LnBEbWFCdWZmOwogCXViX3N6ID0gaWRhdGEt PnVkYXRhLnUuUHJvY0lucHV0LkJ1ZmZTejsKIAotCXN0cyA9IGJjX2Nwcm9jX2NoZWNrX2luYnVm ZnMoMSwgdWJ1ZmYsIHViX3N6LCAwLDApOworCXN0cyA9IGJjX2Nwcm9jX2NoZWNrX2luYnVmZnMo MSwgdWJ1ZmYsIHViX3N6LCAwLCAwKTsKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQogCQly ZXR1cm4gc3RzOwogCi0Jc3RzID0gY3J5c3RhbGhkX21hcF9kaW8oY3R4LT5hZHAsIHVidWZmLCB1 Yl9zeiwwLDAsMSwmZGlvX2huZCk7CisJc3RzID0gY3J5c3RhbGhkX21hcF9kaW8oY3R4LT5hZHAs IHVidWZmLCB1Yl9zeiwgMCwgMCwgMSwgJmRpb19obmQpOwogCWlmIChzdHMgIT0gQkNfU1RTX1NV Q0NFU1MpIHsKLQkJQkNNTE9HX0VSUigiZGlvIG1hcCAtICVkIFxuIixzdHMpOworCQlCQ01MT0df RVJSKCJkaW8gbWFwIC0gJWQgXG4iLCBzdHMpOwogCQlyZXR1cm4gc3RzOwogCX0KIApAQCAtNTQz LDcgKzU0Myw3IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfYWRkX2NhcF9idWZmKHN0cnVj dCBjcnlzdGFsaGRfY21kICpjdHgsCiAJdm9pZCAqdWJ1ZmY7CiAJdWludDMyX3QgdWJfc3osIHV2 X29mZjsKIAlib29sIGVuXzQyMjsKLQljcnlzdGFsaGRfZGlvX3JlcSAqZGlvX2huZD1OVUxMOwor CWNyeXN0YWxoZF9kaW9fcmVxICpkaW9faG5kID0gTlVMTDsKIAlCQ19TVEFUVVMgc3RzID0gQkNf U1RTX1NVQ0NFU1M7CiAKIAlpZiAoIWN0eCB8fCAhaWRhdGEpIHsKQEAgLTU1NiwyNCArNTU2LDIz IEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfYWRkX2NhcF9idWZmKHN0cnVjdCBjcnlzdGFs aGRfY21kICpjdHgsCiAJdXZfb2ZmID0gaWRhdGEtPnVkYXRhLnUuUnhCdWZmcy5VVmJ1ZmZPZmZz ZXQ7CiAJZW5fNDIyID0gaWRhdGEtPnVkYXRhLnUuUnhCdWZmcy5iNDIyTW9kZTsKIAotCXN0cyA9 IGJjX2Nwcm9jX2NoZWNrX2luYnVmZnMoMCwgdWJ1ZmYsIHViX3N6LCB1dl9vZmYsZW5fNDIyKTsK KwlzdHMgPSBiY19jcHJvY19jaGVja19pbmJ1ZmZzKDAsIHVidWZmLCB1Yl9zeiwgdXZfb2ZmLCBl bl80MjIpOwogCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NFU1MpCiAJCXJldHVybiBzdHM7CiAKIAlz dHMgPSBjcnlzdGFsaGRfbWFwX2RpbyhjdHgtPmFkcCwgdWJ1ZmYsIHViX3N6LCB1dl9vZmYsCiAJ CQkgICAgICBlbl80MjIsIDAsICZkaW9faG5kKTsKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNT KSB7Ci0JCUJDTUxPR19FUlIoImRpbyBtYXAgLSAlZCBcbiIsc3RzKTsKKwkJQkNNTE9HX0VSUigi ZGlvIG1hcCAtICVkIFxuIiwgc3RzKTsKIAkJcmV0dXJuIHN0czsKIAl9CiAKIAlpZiAoIWRpb19o bmQpCiAJCXJldHVybiBCQ19TVFNfRVJST1I7CiAKLQlzdHMgPSBjcnlzdGFsaGRfaHdfYWRkX2Nh cF9idWZmZXIoJmN0eC0+aHdfY3R4LGRpb19obmQsCi0JCQkJCShjdHgtPnN0YXRlID09IEJDX0xJ TktfUkVBRFkpKTsKKwlzdHMgPSBjcnlzdGFsaGRfaHdfYWRkX2NhcF9idWZmZXIoJmN0eC0+aHdf Y3R4LCBkaW9faG5kLCAoY3R4LT5zdGF0ZSA9PSBCQ19MSU5LX1JFQURZKSk7CiAJaWYgKChzdHMg IT0gQkNfU1RTX1NVQ0NFU1MpICYmIChzdHMgIT0gQkNfU1RTX0JVU1kpKSB7Ci0JCWNyeXN0YWxo ZF91bm1hcF9kaW8oY3R4LT5hZHAsZGlvX2huZCk7CisJCWNyeXN0YWxoZF91bm1hcF9kaW8oY3R4 LT5hZHAsIGRpb19obmQpOwogCQlyZXR1cm4gc3RzOwogCX0KIApAQCAtNjA5LDcgKzYwOCw3IEBA IHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZmV0Y2hfZnJhbWUoc3RydWN0IGNyeXN0YWxoZF9j bWQgKmN0eCwKIAl9CiAKIAlpZiAoIShjdHgtPnN0YXRlICYgQkNfTElOS19DQVBfRU4pKSB7Ci0J CUJDTUxPRyhCQ01MT0dfREJHLCJDYXB0dXJlIG5vdCBlbmFibGVkLi4leFxuIiwgY3R4LT5zdGF0 ZSk7CisJCUJDTUxPRyhCQ01MT0dfREJHLCAiQ2FwdHVyZSBub3QgZW5hYmxlZC4uJXhcbiIsIGN0 eC0+c3RhdGUpOwogCQlyZXR1cm4gQkNfU1RTX0VSUl9VU0FHRTsKIAl9CiAKQEAgLTYxNywxMyAr NjE2LDEyIEBAIHN0YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZmV0Y2hfZnJhbWUoc3RydWN0IGNy eXN0YWxoZF9jbWQgKmN0eCwKIAogCXN0cyA9IGNyeXN0YWxoZF9od19nZXRfY2FwX2J1ZmZlcigm Y3R4LT5od19jdHgsICZmcmFtZS0+UGliSW5mbywgJmRpbyk7CiAJaWYgKHN0cyAhPSBCQ19TVFNf U1VDQ0VTUykKLQkJcmV0dXJuICgoY3R4LT5zdGF0ZSAmIEJDX0xJTktfU1VTUEVORCkgPwotCQkJ QkNfU1RTX0lPX1VTRVJfQUJPUlQgOiBzdHMpOworCQlyZXR1cm4gKGN0eC0+c3RhdGUgJiBCQ19M SU5LX1NVU1BFTkQpID8gQkNfU1RTX0lPX1VTRVJfQUJPUlQgOiBzdHM7CiAKIAlmcmFtZS0+Rmxh Z3MgPSBkaW8tPnVpbmZvLmNvbXBfZmxhZ3M7CiAKIAlpZiAoZnJhbWUtPkZsYWdzICYgQ09NUF9G TEFHX0ZNVF9DSEFOR0UpCi0JCXJldHVybiBiY19jcHJvY19mbXRfY2hhbmdlKGN0eCxkaW8pOwor CQlyZXR1cm4gYmNfY3Byb2NfZm10X2NoYW5nZShjdHgsIGRpbyk7CiAKIAlmcmFtZS0+T3V0UHV0 QnVmZnMuWXV2QnVmZiA9IGRpby0+dWluZm8ueGZyX2J1ZmY7CiAJZnJhbWUtPk91dFB1dEJ1ZmZz Lll1dkJ1ZmZTeiA9IGRpby0+dWluZm8ueGZyX2xlbjsKQEAgLTY3MywxMiArNjcxLDExIEBAIHN0 YXRpYyBCQ19TVEFUVVMgYmNfY3Byb2NfZmx1c2hfY2FwX2J1ZmZzKHN0cnVjdCBjcnlzdGFsaGRf Y21kICpjdHgsCiAJZnJhbWUgPSAmaWRhdGEtPnVkYXRhLnUuRGVjT3V0RGF0YTsKIAlmb3IgKGNv dW50ID0gMDsgY291bnQgPCBCQ19SWF9MSVNUX0NOVDsgY291bnQrKykgewogCi0JCXN0cyA9IGNy eXN0YWxoZF9od19nZXRfY2FwX2J1ZmZlcigmY3R4LT5od19jdHgsCi0JCQkJCQkmZnJhbWUtPlBp YkluZm8sJmRpbyk7CisJCXN0cyA9IGNyeXN0YWxoZF9od19nZXRfY2FwX2J1ZmZlcigmY3R4LT5o d19jdHgsICZmcmFtZS0+UGliSW5mbywgJmRpbyk7CiAJCWlmIChzdHMgIT0gQkNfU1RTX1NVQ0NF U1MpCiAJCQlicmVhazsKIAotCQljcnlzdGFsaGRfdW5tYXBfZGlvKGN0eC0+YWRwLGRpbyk7CisJ CWNyeXN0YWxoZF91bm1hcF9kaW8oY3R4LT5hZHAsIGRpbyk7CiAJfQogCiAJcmV0dXJuIGNyeXN0 YWxoZF9od19zdG9wX2NhcHR1cmUoJmN0eC0+aHdfY3R4KTsKQEAgLTczNyw3ICs3MzQsNyBAQCBz dGF0aWMgQkNfU1RBVFVTIGJjX2Nwcm9jX2NoZ19jbGsoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0 eCwKIAl9CiAKIAljbG9jayA9ICZpZGF0YS0+dWRhdGEudS5jbG9ja1ZhbHVlOwotCW9sZENsaz0g Y3R4LT5od19jdHguY29yZV9jbG9ja19taHo7CisJb2xkQ2xrID0gY3R4LT5od19jdHguY29yZV9j bG9ja19taHo7CiAJY3R4LT5od19jdHguY29yZV9jbG9ja19taHogPSBjbG9jay0+Y2xrOwogCiAJ aWYgKGN0eC0+c3RhdGUgJiBCQ19MSU5LX1JFQURZKSB7CkBAIC04MTIsNyArODA5LDcgQEAgQkNf U1RBVFVTIGNyeXN0YWxoZF9zdXNwZW5kKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0 YWxoZF9pb2N0bF9kYXRhICppZGEKIAkJcmV0dXJuIEJDX1NUU19TVUNDRVNTOwogCiAJaWYgKGN0 eC0+c3RhdGUgPT0gQkNfTElOS19JTlZBTElEKSB7Ci0JCUJDTUxPRyhCQ01MT0dfREJHLCIgTm90 aGluZyBUbyBEbyBTdXNwZW5kIFN1Y2Nlc3NcbiIpOworCQlCQ01MT0coQkNNTE9HX0RCRywgIk5v dGhpbmcgVG8gRG8gU3VzcGVuZCBTdWNjZXNzXG4iKTsKIAkJcmV0dXJuIEJDX1NUU19TVUNDRVNT OwogCX0KIApAQCAtODIxLDEzICs4MTgsMTMgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9zdXNwZW5k KHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9pb2N0bF9kYXRhICppZGEKIAli Y19jcHJvY19tYXJrX3B3cl9zdGF0ZShjdHgpOwogCiAJaWYgKGN0eC0+c3RhdGUgJiBCQ19MSU5L X0NBUF9FTikgewotCQlzdHMgPSBiY19jcHJvY19mbHVzaF9jYXBfYnVmZnMoY3R4LGlkYXRhKTsK KwkJc3RzID0gYmNfY3Byb2NfZmx1c2hfY2FwX2J1ZmZzKGN0eCwgaWRhdGEpOwogCQlpZiAoc3Rz ICE9IEJDX1NUU19TVUNDRVNTKQogCQkJcmV0dXJuIHN0czsKIAl9CiAKIAlpZiAoY3R4LT50eF9s aXN0X2lkKSB7Ci0JCXN0cyA9IGNyeXN0YWxoZF9od19jYW5jZWxfdHgoJmN0eC0+aHdfY3R4LGN0 eC0+dHhfbGlzdF9pZCk7CisJCXN0cyA9IGNyeXN0YWxoZF9od19jYW5jZWxfdHgoJmN0eC0+aHdf Y3R4LCBjdHgtPnR4X2xpc3RfaWQpOwogCQlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQogCQkJ cmV0dXJuIHN0czsKIAl9CkBAIC04MzYsNyArODMzLDcgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9z dXNwZW5kKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9pb2N0bF9kYXRhICpp ZGEKIAlpZiAoc3RzICE9IEJDX1NUU19TVUNDRVNTKQogCQlyZXR1cm4gc3RzOwogCi0JQkNNTE9H KEJDTUxPR19EQkcsIiBCQ003MDAxMiBzdXNwZW5kIHN1Y2Nlc3NcbiIpOworCUJDTUxPRyhCQ01M T0dfREJHLCAiQkNNNzAwMTIgc3VzcGVuZCBzdWNjZXNzXG4iKTsKIAogCXJldHVybiBCQ19TVFNf U1VDQ0VTUzsKIH0KQEAgLTg1OSw3ICs4NTYsNyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX3N1c3Bl bmQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgY3J5c3RhbGhkX2lvY3RsX2RhdGEgKmlkYQog ICovCiBCQ19TVEFUVVMgY3J5c3RhbGhkX3Jlc3VtZShzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4 KQogewotCUJDTUxPRyhCQ01MT0dfREJHLCIgY3J5c3RhbGhkX3Jlc3VtZSBTdWNjZXNzICV4XG4i LGN0eC0+c3RhdGUpOworCUJDTUxPRyhCQ01MT0dfREJHLCAiY3J5c3RhbGhkX3Jlc3VtZSBTdWNj ZXNzICV4XG4iLCBjdHgtPnN0YXRlKTsKIAogCWJjX2Nwcm9jX21hcmtfcHdyX3N0YXRlKGN0eCk7 CiAKQEAgLTg5MCwxMSArODg3LDExIEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfdXNlcl9vcGVuKHN0 cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsCiAKIAl1YyA9IGJjX2Nwcm9jX2dldF91aWQoY3R4KTsK IAlpZiAoIXVjKSB7Ci0JCUJDTUxPRyhCQ01MT0dfSU5GTywiTm8gZnJlZSB1c2VyIGNvbnRleHQu Li5cbiIpOworCQlCQ01MT0coQkNNTE9HX0lORk8sICJObyBmcmVlIHVzZXIgY29udGV4dC4uLlxu Iik7CiAJCXJldHVybiBCQ19TVFNfQlVTWTsKIAl9CiAKLQlCQ01MT0coQkNNTE9HX0lORk8sICJP cGVuaW5nIG5ldyB1c2VyWyV4XSBoYW5kbGVcbiIsdWMtPnVpZCk7CisJQkNNTE9HKEJDTUxPR19J TkZPLCAiT3BlbmluZyBuZXcgdXNlclsleF0gaGFuZGxlXG4iLCB1Yy0+dWlkKTsKIAogCWNyeXN0 YWxoZF9od19vcGVuKCZjdHgtPmh3X2N0eCwgY3R4LT5hZHApOwogCkBAIC0xMDI5LDcgKzEwMjYs NyBAQCBjcnlzdGFsaGRfY21kX3Byb2MgY3J5c3RhbGhkX2dldF9jbWRfcHJvYyhzdHJ1Y3QgY3J5 c3RhbGhkX2NtZCAqY3R4LCB1aW50MzJfdCBjbQogCQlpZiAoZ19jcnlzdGFsaGRfY3Byb2NfdGJs W2ldLmNtZF9pZCA9PSBjbWQpIHsKIAkJCWlmICgodWMtPm1vZGUgPT0gRFRTX01PTklUT1JfTU9E RSkgJiYKIAkJCSAgICAoZ19jcnlzdGFsaGRfY3Byb2NfdGJsW2ldLmJsb2NrX21vbikpIHsKLQkJ CQlCQ01MT0coQkNNTE9HX0lORk8sIkJsb2NraW5nIGNtZCAlZCBcbiIsY21kKTsKKwkJCQlCQ01M T0coQkNNTE9HX0lORk8sICJCbG9ja2luZyBjbWQgJWQgXG4iLCBjbWQpOwogCQkJCWJyZWFrOwog CQkJfQogCQkJY3Byb2MgPSBnX2NyeXN0YWxoZF9jcHJvY190YmxbaV0uY21kX3Byb2M7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfY21kcy5oIGIvZHJp dmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2NtZHMuaAppbmRleCBmMWYxNWM2Li42 YjI5MGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRf Y21kcy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9jbWRzLmgK QEAgLTc5LDkgKzc5LDkgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9zdXNwZW5kKHN0cnVjdCBjcnlz dGFsaGRfY21kICpjdHgsIGNyeXN0YWxoZF9pb2N0bF9kYXRhICppZGEKIEJDX1NUQVRVUyBjcnlz dGFsaGRfcmVzdW1lKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgpOwogY3J5c3RhbGhkX2NtZF9w cm9jIGNyeXN0YWxoZF9nZXRfY21kX3Byb2Moc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgdWlu dDMyX3QgY21kLAogCQkJCSAgICAgIHN0cnVjdCBjcnlzdGFsaGRfdXNlciAqdWMpOwotQkNfU1RB VFVTIGNyeXN0YWxoZF91c2VyX29wZW4oc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgc3RydWN0 IGNyeXN0YWxoZF91c2VyKip1c2VyX2N0eCk7Ci1CQ19TVEFUVVMgY3J5c3RhbGhkX3VzZXJfY2xv c2Uoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCxzdHJ1Y3QgY3J5c3RhbGhkX3VzZXIgKnVjKTsK LUJDX1NUQVRVUyBjcnlzdGFsaGRfc2V0dXBfY21kX2NvbnRleHQoc3RydWN0IGNyeXN0YWxoZF9j bWQgKmN0eCxzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwKTsKK0JDX1NUQVRVUyBjcnlzdGFsaGRf dXNlcl9vcGVuKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIHN0cnVjdCBjcnlzdGFsaGRfdXNl ciAqKnVzZXJfY3R4KTsKK0JDX1NUQVRVUyBjcnlzdGFsaGRfdXNlcl9jbG9zZShzdHJ1Y3QgY3J5 c3RhbGhkX2NtZCAqY3R4LCBzdHJ1Y3QgY3J5c3RhbGhkX3VzZXIgKnVjKTsKK0JDX1NUQVRVUyBj cnlzdGFsaGRfc2V0dXBfY21kX2NvbnRleHQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgc3Ry dWN0IGNyeXN0YWxoZF9hZHAgKmFkcCk7CiBCQ19TVEFUVVMgY3J5c3RhbGhkX2RlbGV0ZV9jbWRf Y29udGV4dChzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4KTsKIGJvb2wgY3J5c3RhbGhkX2NtZF9p bnRlcnJ1cHQoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9md19pZi5oIGIvZHJpdmVycy9zdGFnaW5n L2NyeXN0YWwtaGQvY3J5c3RhbGhkX2Z3X2lmLmgKaW5kZXggY2M3Y2NlMi4uMjYxY2QxOSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2Z3X2lmLmgKKysr IGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX2Z3X2lmLmgKQEAgLTI4LDgg KzI4LDggQEAKICNkZWZpbmUgX0NSWVNUQUxIRF9GV19JRl9IXwogCiAvKiBUQkQ6IFB1bGwgaW4g b25seSByZXF1aXJlZCBkZWZzIGludG8gdGhpcyBmaWxlLi4gKi8KLS8vI2luY2x1ZGUgIjc0MTFk LmgiCi0vLyNpbmNsdWRlICJ2ZGVjX2luZm8uaCIKKworCiAKIC8qIFVzZXIgRGF0YSBIZWFkZXIg Ki8KIHR5cGVkZWYgc3RydWN0IHVzZXJfZGF0YSB7CkBAIC0xMDIsMTAgKzEwMiwxMCBAQCB0eXBl ZGVmIHN0cnVjdCB7CiAgKiBDb250ZW50IG9mIHRoZSBmaWxtIGdyYWluIFNFSSBtZXNzYWdlLgog ICovCiAKLS8vbWF4aW11bSBudW1iZXIgb2YgbW9kZWwtdmFsdWVzIGFzIGZvciBUaG9tc29uIHNw ZWMoc3RhbmRhcmQgc2F5cyA1KQorLyogbWF4aW11bSBudW1iZXIgb2YgbW9kZWwtdmFsdWVzIGFz IGZvciBUaG9tc29uIHNwZWMoc3RhbmRhcmQgc2F5cyA1KSAqLwogI2RlZmluZSBNQVhfRkdUX01P REVMX1ZBTFVFCSAoMykKIAotLy9tYXhpbXVtIG51bWJlciBvZiBpbnRlcnZhbHMoYXMgbWFueSBh cyAyNTYgaW50ZXJ2YWxzPykKKy8qIG1heGltdW0gbnVtYmVyIG9mIGludGVydmFscyhhcyBtYW55 IGFzIDI1NiBpbnRlcnZhbHM/KSAqLwogI2RlZmluZSBNQVhfRkdUX1ZBTFVFX0lOVEVSVkFMCSgy NTYpCiAKIHR5cGVkZWYgc3RydWN0IEZHVF9TRUkgewpAQCAtMTE3LDcgKzExNyw3IEBAIHR5cGVk ZWYgc3RydWN0IEZHVF9TRUkgewogICAgIHVuc2lnbmVkIGNoYXIgY2FuY2VsX2ZsYWc7CS8qIENh bmNlbCBmbGFnOiAxIG5vIGZpbG0gZ3JhaW4uICovCiAgICAgdW5zaWduZWQgY2hhciBtb2RlbF9p ZDsJLyogTW9kZWwgaWQuICovCiAKLSAgICAvLyt1bnVzZWQgU0UgYmFzZWQgb24gVGhvbXNvbiBz cGVjCisgICAgLyogK3VudXNlZCBTRSBiYXNlZCBvbiBUaG9tc29uIHNwZWMgKi8KICAgICB1bnNp Z25lZCBjaGFyIGNvbG9yX2Rlc2NfZmxhZzsJLyogU2VwYXJhdGUgY29sb3IgZGVzY3JpdGlvbiBm bGFnLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgYml0X2RlcHRoX2x1bWE7CS8qIEJpdCBkZXB0aCBs dW1hIG1pbnVzIDguICovCiAgICAgdW5zaWduZWQgY2hhciBiaXRfZGVwdGhfY2hyb21hOwkvKiBC aXQgZGVwdGggY2hyb21hIG1pbnVzIDguICovCkBAIC0xMjUsNyArMTI1LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgRkdUX1NFSSB7CiAgICAgdW5zaWduZWQgY2hhciBjb2xvcl9wcmltYXJpZXM7CS8qIENv bG9yIHByaW1hcmllcy4gKi8KICAgICB1bnNpZ25lZCBjaGFyIHRyYW5zZmVyX2NoYXJhY3Q7CS8q IFRyYW5zZmVyIGNoYXJhY3RlcmlzdGljcy4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG1hdHJpeF9j b2VmZjsJCS8qPCBNYXRyaXggY29lZmZpY2llbnRzLiAqLwotICAgIC8vLXVudXNlZCBTRSBiYXNl ZCBvbiBUaG9tc29uIHNwZWMKKyAgICAvKiAtdW51c2VkIFNFIGJhc2VkIG9uIFRob21zb24gc3Bl YyAqLwogCiAgICAgdW5zaWduZWQgY2hhciBibGVuZGluZ19tb2RlX2lkOwkvKiBCbGVuZGluZyBt b2RlLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgbG9nMl9zY2FsZV9mYWN0b3I7CS8qIExvZzIgc2Nh bGUgZmFjdG9yICgyLTcpLiAqLwpAQCAtMjU2LDEyICsyNTYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg ewogI2RlZmluZSBlQ01EX0MwMTFfQ01EX0JBU0UJICAoMHg3Mzc2MzAwMCkKIAogLyogaG9zdCBj b21tYW5kcyAqLwotdHlwZWRlZiBlbnVtCi17Ci0KLSAgICBlQ01EX1RTX0dFVF9ORVhUX1BJQwk9 IDB4NzM3NkYxMDAsIC8vIGRlYnVnIGdldCBuZXh0IHBpY3R1cmUKLSAgICBlQ01EX1RTX0dFVF9M QVNUX1BJQwk9IDB4NzM3NkYxMDIsIC8vIGRlYnVnIGdldCBsYXN0IHBpYyBzdGF0dXMKLSAgICBl Q01EX1RTX1JFQURfV1JJVEVfTUVNCT0gMHg3Mzc2RjEwNCwgLy8gZGVidWcgcmVhZCB3cml0ZSBt ZW1vcnkKK3R5cGVkZWYgZW51bSB7CisgICAgZUNNRF9UU19HRVRfTkVYVF9QSUMJPSAweDczNzZG MTAwLCAvKiBkZWJ1ZyBnZXQgbmV4dCBwaWN0dXJlICovCisgICAgZUNNRF9UU19HRVRfTEFTVF9Q SUMJPSAweDczNzZGMTAyLCAvKiBkZWJ1ZyBnZXQgbGFzdCBwaWMgc3RhdHVzICovCisgICAgZUNN RF9UU19SRUFEX1dSSVRFX01FTQk9IDB4NzM3NkYxMDQsIC8qIGRlYnVnIHJlYWQgd3JpdGUgbWVt b3J5ICovCiAKICAgICAvKiBOZXcgQVBJIGNvbW1hbmRzICovCiAgICAgLyogR2VuZXJhbCBjb21t YW5kcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhk X2h3LmMgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfaHcuYwppbmRleCA0 MTJhZmYzLi4wMTgxOWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9j cnlzdGFsaGRfaHcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRf aHcuYwpAQCAtMzAsOCArMzAsOCBAQAogCiBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfZW5hYmxlX3Vh cnRzKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApCiB7Ci0JYmNfZGVjX3JlZ193cihhZHAsVWFy dFNlbGVjdEEsQlNWU19VQVJUX1NUUkVBTSk7Ci0JYmNfZGVjX3JlZ193cihhZHAsVWFydFNlbGVj dEIsQlNWU19VQVJUX0RFQ19PVVRFUik7CisJYmNfZGVjX3JlZ193cihhZHAsIFVhcnRTZWxlY3RB LCBCU1ZTX1VBUlRfU1RSRUFNKTsKKwliY19kZWNfcmVnX3dyKGFkcCwgVWFydFNlbGVjdEIsIEJT VlNfVUFSVF9ERUNfT1VURVIpOwogfQogCiAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGJvb2wg Y3J5c3RhbGhkX2JyaW5nX291dF9vZl9yc3Qoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCkKIAkg KiBkZWxheSB0byBhbGxvdyBQTEwgdG8gbG9jayBDbGVhciBhbHRlcm5hdGUgY2xvY2ssIHN0b3Ag Y2xvY2sgYml0cwogCSAqLwogCXJzdF9jbGtfY250cmwud2hvbGVfcmVnID0gY3J5c3RhbGhkX3Jl Z19yZChhZHAsIE1JU0NfUEVSU1RfQ0xPQ0tfQ1RSTCk7Ci0JcnN0X2Nsa19jbnRybC5wbGxfcHdy X2RuID0wOworCXJzdF9jbGtfY250cmwucGxsX3B3cl9kbiA9IDA7CiAJY3J5c3RhbGhkX3JlZ193 cihhZHAsIE1JU0NfUEVSU1RfQ0xPQ0tfQ1RSTCwgcnN0X2Nsa19jbnRybC53aG9sZV9yZWcpOwog CW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDUwKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBi b29sIGNyeXN0YWxoZF9icmluZ19vdXRfb2ZfcnN0KHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAp CiAJbXNsZWVwX2ludGVycnVwdGlibGUoNTApOwogCiAJLyogRGlzYWJsZSBPVFBfQ09OVEVOVF9N SVNDIHRvIDAgdG8gZGlzYWJsZSBhbGwgc2VjdXJlIG1vZGVzICovCi0JY3J5c3RhbGhkX3JlZ193 cihhZHAsT1RQX0NPTlRFTlRfTUlTQywgMCk7CisJY3J5c3RhbGhkX3JlZ193cihhZHAsIE9UUF9D T05URU5UX01JU0MsIDApOwogCiAJLyogQ2xlYXIgYml0IDI5IG9mIDB4NDA0ICovCiAJdGVtcCA9 IGNyeXN0YWxoZF9yZWdfcmQoYWRwLCBQQ0lFX1RMX1RSQU5TQUNUSU9OX0NPTkZJR1VSQVRJT04p OwpAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9lbmFibGVfaW50ZXJy dXB0cyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwKQogCWludHJfbWFzay5tYXNrX3J4X2VyciAg PSAxOwogCWludHJfbWFzay5tYXNrX3R4X2RvbmUgPSAxOwogCWludHJfbWFzay5tYXNrX3R4X2Vy ciAgPSAxOwotCWNyeXN0YWxoZF9yZWdfd3IoYWRwLElOVFJfSU5UUl9NU0tfQ0xSX1JFRyxpbnRy X21hc2sud2hvbGVfcmVnKTsKKwljcnlzdGFsaGRfcmVnX3dyKGFkcCwgSU5UUl9JTlRSX01TS19D TFJfUkVHLCBpbnRyX21hc2sud2hvbGVfcmVnKTsKIAogCXJldHVybjsKIH0KQEAgLTMyNiw3ICsz MjYsNyBAQCBzdGF0aWMgYm9vbCBjcnlzdGFsaGRfc3RvcF9kZXZpY2Uoc3RydWN0IGNyeXN0YWxo ZF9hZHAgKmFkcCkKIHsKIAl1aW50MzJfdCByZWc7CiAKLQlCQ01MT0coQkNNTE9HX0lORk8sIlN0 b3BwaW5nIEJDTTcwMDEyIERldmljZVxuIik7CisJQkNNTE9HKEJDTUxPR19JTkZPLCAiU3RvcHBp bmcgQkNNNzAwMTIgRGV2aWNlXG4iKTsKIAkvKiBDbGVhciBhbmQgZGlzYWJsZSBpbnRlcnJ1cHRz ICovCiAJY3J5c3RhbGhkX2Rpc2FibGVfaW50ZXJydXB0cyhhZHApOwogCWNyeXN0YWxoZF9jbGVh cl9lcnJvcnMoYWRwKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgY3J5c3RhbGhkX3J4X2Rt YV9wa3QgKmNyeXN0YWxoZF9od19hbGxvY19yeF9wa3Qoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcp CiAJCXRlbXAtPnBrdF90YWcgPSAwOwogCQl0ZW1wLT5mbGFncyA9IDA7CiAJfQotCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmh3LT5sb2NrLGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZody0+bG9jaywgZmxhZ3MpOwogCiAJcmV0dXJuIHRlbXA7CiB9CkBAIC00MDgsNyArNDA4LDcg QEAgc3RhdGljIHZvaWQgY3J5c3RhbGhkX3J4X3BrdF9yZWxfY2FsbF9iYWNrKHZvaWQgKmNvbnRl eHQsIHZvaWQgKmRhdGEpCiAJY3J5c3RhbGhkX3J4X2RtYV9wa3QgKnBrdCA9IChjcnlzdGFsaGRf cnhfZG1hX3BrdCAqKWRhdGE7CiAKIAlpZiAoIXBrdCB8fCAhaHcpIHsKLQkJQkNNTE9HX0VSUigi SW52YWxpZCBhcmcgLSAlcCAlcFxuIixodyxwa3QpOworCQlCQ01MT0dfRVJSKCJJbnZhbGlkIGFy ZyAtICVwICVwXG4iLCBodywgcGt0KTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDMxLDcgKzQzMSw3 IEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9od19kZWxldGVfaW9xcyhzdHJ1Y3QgY3J5c3RhbGhk X2h3ICpodykKIAlpZiAoIWh3KQogCQlyZXR1cm47CiAKLQlCQ01MT0coQkNNTE9HX0RCRywiRGVs ZXRpbmcgSU9RcyBcbiIpOworCUJDTUxPRyhCQ01MT0dfREJHLCAiRGVsZXRpbmcgSU9RcyBcbiIp OwogCWNyeXN0YWxoZF9od19kZWxldGVfaW9xKGh3LT5hZHAsIGh3LT50eF9hY3RxKTsKIAljcnlz dGFsaGRfaHdfZGVsZXRlX2lvcShody0+YWRwLCBody0+dHhfZnJlZXEpOwogCWNyeXN0YWxoZF9o d19kZWxldGVfaW9xKGh3LT5hZHAsIGh3LT5yeF9hY3RxKTsKQEAgLTQ0MCw5ICs0NDAsMTEgQEAg c3RhdGljIHZvaWQgY3J5c3RhbGhkX2h3X2RlbGV0ZV9pb3FzKHN0cnVjdCBjcnlzdGFsaGRfaHcg Kmh3KQogfQogCiAjZGVmaW5lIGNyeXN0YWxoZF9od19jcmVhdGVfaW9xKHN0cywgaHcsIHEsIGNi KQkJCVwKLQlzdHMgPSBjcnlzdGFsaGRfY3JlYXRlX2Rpb3EoaHctPmFkcCwgJnEsIGNiLCBodyk7 CQlcCitkbyB7CQkJCQkJCQlcCisJc3RzID0gY3J5c3RhbGhkX2NyZWF0ZV9kaW9xKGh3LT5hZHAs ICZxLCBjYiwgaHcpOwlcCiAJaWYgKHN0cyAhPSBCQ19TVFNfU1VDQ0VTUykJCQkJXAotCQlnb3Rv IGh3X2NyZWF0ZV9pb3FfZXJyOworCQlnb3RvIGh3X2NyZWF0ZV9pb3FfZXJyOwkJCQlcCit9IHdo aWxlICgwKQogCiAvKgogICogQ3JlYXRlIElPUXMuLgpAQCAtNTY3LDcgKzU2OSw3IEBAIHN0YXRp YyBib29sIGNyeXN0YWxoZF90eF9saXN0MF9oYW5kbGVyKHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3 LCB1aW50MzJfdCBlcnJfc3RzCiAJaWYgKCEoZXJyX3N0cyAmIGVycl9tYXNrKSkKIAkJcmV0dXJu IGZhbHNlOwogCi0JQkNNTE9HX0VSUigiRXJyb3Igb24gVHgtTDAgJXggXG4iLGVycl9zdHMpOwor CUJDTUxPR19FUlIoIkVycm9yIG9uIFR4LUwwICV4IFxuIiwgZXJyX3N0cyk7CiAKIAl0bXAgPSBl cnJfbWFzazsKIApAQCAtNTkwLDcgKzU5Miw3IEBAIHN0YXRpYyBib29sIGNyeXN0YWxoZF90eF9s aXN0MF9oYW5kbGVyKHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3LCB1aW50MzJfdCBlcnJfc3RzCiBz dGF0aWMgYm9vbCBjcnlzdGFsaGRfdHhfbGlzdDFfaGFuZGxlcihzdHJ1Y3QgY3J5c3RhbGhkX2h3 ICpodywgdWludDMyX3QgZXJyX3N0cykKIHsKIAl1aW50MzJfdCBlcnJfbWFzaywgdG1wOwotCXVu c2lnbmVkIGxvbmcgZmxhZ3M9MDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKIAogCWVycl9t YXNrID0gTUlTQzFfVFhfRE1BX0VSUk9SX1NUQVRVU19UWF9MMV9ERVNDX1RYX0FCT1JUX0VSUk9S U19NQVNLIHwKIAkJTUlTQzFfVFhfRE1BX0VSUk9SX1NUQVRVU19UWF9MMV9ETUFfREFUQV9UWF9B Qk9SVF9FUlJPUlNfTUFTSyB8CkBAIC01OTksNyArNjAxLDcgQEAgc3RhdGljIGJvb2wgY3J5c3Rh bGhkX3R4X2xpc3QxX2hhbmRsZXIoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcsIHVpbnQzMl90IGVy cl9zdHMKIAlpZiAoIShlcnJfc3RzICYgZXJyX21hc2spKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlC Q01MT0dfRVJSKCJFcnJvciBvbiBUeC1MMSAleCBcbiIsZXJyX3N0cyk7CisJQkNNTE9HX0VSUigi RXJyb3Igb24gVHgtTDEgJXggXG4iLCBlcnJfc3RzKTsKIAogCXRtcCA9IGVycl9tYXNrOwogCkBA IC02NjEsMTEgKzY2MywxMiBAQCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfaHdfZHVtcF9kZXNjKHBk bWFfZGVzY3JpcHRvciBwX2RtYV9kZXNjLAogCiAJLyogRklYTUU6IGphcm9kOiBwZXJoYXBzIGEg bW9kcGFyYW0gZGVzY19kZWJ1ZyB0byBlbmFibGUgdGhpcywgcmF0aGVyIHRoYW4KIAkgKiBzZXR0 aW5nIGxsIChsb2cgbGV2ZWwsIEkgcHJlc3VtZSkgdG8gbm9uLXplcm8/ICovCi0JaWYgKCFsbCkg cmV0dXJuOworCWlmICghbGwpCisJCXJldHVybjsKIAotCWZvciAoaXg9dWxfZGVzY19pbmRleDsg aXg8KHVsX2Rlc2NfaW5kZXgrY250KTsgaXgrKykgewotCQlCQ01MT0cobGwsIiVzWyVkXSBCdWZm WyV4OiV4XSBOZXh0OlsleDoleF0gWGZlclN6OiV4IEludHI6JXgsTGFzdDoleFxuIiwKLQkJICAg ICAgICgocF9kbWFfZGVzY1t1bF9kZXNjX2luZGV4XS5kbWFfZGlyKT8iVERlc2MiOiJSRGVzYyIp LAorCWZvciAoaXggPSB1bF9kZXNjX2luZGV4OyBpeCA8ICh1bF9kZXNjX2luZGV4ICsgY250KTsg aXgrKykgeworCQlCQ01MT0cobGwsICIlc1slZF0gQnVmZlsleDoleF0gTmV4dDpbJXg6JXhdIFhm ZXJTejoleCBJbnRyOiV4LExhc3Q6JXhcbiIsCisJCSAgICAgICAoKHBfZG1hX2Rlc2NbdWxfZGVz Y19pbmRleF0uZG1hX2RpcikgPyAiVERlc2MiIDogIlJEZXNjIiksCiAJCSAgICAgICB1bF9kZXNj X2luZGV4LAogCQkgICAgICAgcF9kbWFfZGVzY1t1bF9kZXNjX2luZGV4XS5idWZmX2FkZHJfaGln aCwKIAkJICAgICAgIHBfZG1hX2Rlc2NbdWxfZGVzY19pbmRleF0uYnVmZl9hZGRyX2xvdywKQEAg LTcyMSwxMSArNzI0LDExIEBAIHN0YXRpYyBCQ19TVEFUVVMgY3J5c3RhbGhkX2h3X2ZpbGxfZGVz YyhjcnlzdGFsaGRfZGlvX3JlcSAqaW9yZXEsCiAJCWRlc2NbaXhdLm5leHRfZGVzY19hZGRyX2xv dyA9IGFkZHJfdGVtcC5sb3dfcGFydDsKIAkJZGVzY1tpeF0ubmV4dF9kZXNjX2FkZHJfaGlnaCA9 IGFkZHJfdGVtcC5oaWdoX3BhcnQ7CiAKLQkJaWYgKChjb3VudCtsZW4pID4geGZyX3N6KQorCQlp ZiAoKGNvdW50ICsgbGVuKSA+IHhmcl9zeikKIAkJCWxlbiA9IHhmcl9zeiAtIGNvdW50OwogCiAJ CS8qIERlYnVnLi4gKi8KLQkJaWYgKCghbGVuKSB8fCAobGVuPmNyeXN0YWxoZF9nZXRfc2dsZV9s ZW4oaW9yZXEsc2dfaXgpKSApIHsKKwkJaWYgKCghbGVuKSB8fCAobGVuID4gY3J5c3RhbGhkX2dl dF9zZ2xlX2xlbihpb3JlcSwgc2dfaXgpKSkgewogCQkJQkNNTE9HX0VSUigiaW52LWxlbigleCkg SXgoJWQpIGNvdW50OiV4IHhmcl9zejoleCBzZ19jbnQ6JWRcbiIsCiAJCQkJICAgbGVuLCBpeCwg Y291bnQsIHhmcl9zeiwgc2dfY250KTsKIAkJCXJldHVybiBCQ19TVFNfRVJST1I7CkBAIC04Nzcs MjAgKzg4MCwxOCBAQCBzdGF0aWMgQkNfU1RBVFVTIGNyeXN0YWxoZF9zdG9wX3R4X2RtYV9lbmdp bmUoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcpCiAJZG1hX2NudHJsICY9IH5ETUFfU1RBUlRfQklU OwogCWNyeXN0YWxoZF9yZWdfd3IoaHctPmFkcCwgTUlTQzFfVFhfU1dfREVTQ19MSVNUX0NUUkxf U1RTLCBkbWFfY250cmwpOwogCi0JQkNNTE9HKEJDTUxPR19EQkcsIkNsZWFyZWQgdGhlIERNQSBT dGFydCBiaXRcbiIpOworCUJDTUxPRyhCQ01MT0dfREJHLCAiQ2xlYXJlZCB0aGUgRE1BIFN0YXJ0 IGJpdFxuIik7CiAKIAkvKiBQb2xsIGZvciAzc2Vjb25kcyAoMzAgKiAxMDBtcykgb24gYm90aCB0 aGUgbGlzdHMuLiovCiAJd2hpbGUgKChsMSB8fCBsMikgJiYgY250KSB7CiAKIAkJaWYgKGwxKSB7 Ci0JCQlsMSA9IGNyeXN0YWxoZF9yZWdfcmQoaHctPmFkcCwKLQkJCQkJICAgIE1JU0MxX1RYX0ZJ UlNUX0RFU0NfTF9BRERSX0xJU1QwKTsKKwkJCWwxID0gY3J5c3RhbGhkX3JlZ19yZChody0+YWRw LCBNSVNDMV9UWF9GSVJTVF9ERVNDX0xfQUREUl9MSVNUMCk7CiAJCQlsMSAmPSBETUFfU1RBUlRf QklUOwogCQl9CiAKIAkJaWYgKGwyKSB7Ci0JCQlsMiA9IGNyeXN0YWxoZF9yZWdfcmQoaHctPmFk cCwKLQkJCQkJICAgIE1JU0MxX1RYX0ZJUlNUX0RFU0NfTF9BRERSX0xJU1QxKTsKKwkJCWwyID0g Y3J5c3RhbGhkX3JlZ19yZChody0+YWRwLCBNSVNDMV9UWF9GSVJTVF9ERVNDX0xfQUREUl9MSVNU MSk7CiAJCQlsMiAmPSBETUFfU1RBUlRfQklUOwogCQl9CiAKQEAgLTk4NCw4ICs5ODUsNyBAQCBz dGF0aWMgdWludDMyX3QgY3J5c3RhbGhkX2dldF9hZGRyX2Zyb21fcGliX1Eoc3RydWN0IGNyeXN0 YWxoZF9odyAqaHcpCiAJcmV0dXJuIGFkZHJfZW50cnk7CiB9CiAKLXN0YXRpYyBib29sIGNyeXN0 YWxoZF9yZWxfYWRkcl90b19waWJfUShzdHJ1Y3QgY3J5c3RhbGhkX2h3KiBodywKLQkJCQkgICAg ICB1aW50MzJfdCBhZGRyX3RvX3JlbCkKK3N0YXRpYyBib29sIGNyeXN0YWxoZF9yZWxfYWRkcl90 b19waWJfUShzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodywgdWludDMyX3QgYWRkcl90b19yZWwpCiB7 CiAJdWludDMyX3QgUV9hZGRyOwogCXVpbnQzMl90IHJfb2Zmc2V0LCB3X29mZnNldCwgbl9vZmZz ZXQ7CkBAIC0xMjg2LDcgKzEyODYsNyBAQCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfaHdfZmluYWxp emVfcGF1c2Uoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcpCiAKIAlhc3BtID0gY3J5c3RhbGhkX3Jl Z19yZChody0+YWRwLCBQQ0lFX0RMTF9EQVRBX0xJTktfQ09OVFJPTCk7CiAJYXNwbSB8PSBBU1BN X0wxX0VOQUJMRTsKLS8vIE5BUkVOIEJDTUxPRyhCQ01MT0dfSU5GTywgImFzcG0gb25cbiIpOwor CS8qIE5BUkVOIEJDTUxPRyhCQ01MT0dfSU5GTywgImFzcG0gb25cbiIpOyAqLwogCWNyeXN0YWxo ZF9yZWdfd3IoaHctPmFkcCwgUENJRV9ETExfREFUQV9MSU5LX0NPTlRST0wsIGFzcG0pOwogfQog CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBzdGF0aWMgdm9pZCBjcnlzdGFsaGRfcnhfaXNyKHN0cnVj dCBjcnlzdGFsaGRfaHcgKmh3LCB1aW50MzJfdCBpbnRyX3N0cykKIAkJCQlody0+c3RhdHMucnhf ZXJyb3JzKys7CiAJCQkJY3J5c3RhbGhkX2dldF9kbnN6KGh3LCBpLCAmeV9kbl9zeiwgJnV2X2Ru X3N6KTsKIAkJCQkvKiBGSVhNRTogamFyb2Q6IHRoaXMgaXMgd2hlcmUgbXkgbWluaSBwY2ktZSBj YXJkIGlzIHRyaXBwaW5nIHVwICovCi0JCQkJQkNNTE9HKEJDTUxPR19EQkcsImxpc3RfaW5kZXg6 JXggcnhbJWRdIFk6JXggIgorCQkJCUJDTUxPRyhCQ01MT0dfREJHLCAibGlzdF9pbmRleDoleCBy eFslZF0gWToleCAiCiAJCQkJICAgICAgICJVVjoleCBJbnQ6JXggWURuU3o6JXggVVZEblN6OiV4 XG4iLAogCQkJCSAgICAgICBpLCBody0+c3RhdHMucnhfZXJyb3JzLCB5X2Vycl9zdHMsCiAJCQkJ ICAgICAgIHV2X2Vycl9zdHMsIGludHJfc3RzLCB5X2RuX3N6LCB1dl9kbl9zeik7CkBAIC0xNTUw LDcgKzE1NTAsNyBAQCBzdGF0aWMgQkNfU1RBVFVTIGNyeXN0YWxoZF9md19jbWRfcG9zdF9wcm9j KHN0cnVjdCBjcnlzdGFsaGRfaHcgKmh3LAogCQlzdF9yc3AgPSAoRGVjUnNwQ2hhbm5lbFN0YXJ0 VmlkZW8gKilmd19jbWQtPnJzcDsKIAkJaHctPnBpYl9kZWxfUV9hZGRyID0gc3RfcnNwLT5waWNJ bmZvRGVsaXZlcnlROwogCQlody0+cGliX3JlbF9RX2FkZHIgPSBzdF9yc3AtPnBpY0luZm9SZWxl YXNlUTsKLQkJQkNNTE9HKEJDTUxPR19EQkcsIkRlbFFBZGRyOiV4IFJlbFFBZGRyOiV4XG4iLAor CQlCQ01MT0coQkNNTE9HX0RCRywgIkRlbFFBZGRyOiV4IFJlbFFBZGRyOiV4XG4iLAogCQkgICAg ICAgaHctPnBpYl9kZWxfUV9hZGRyLCBody0+cGliX3JlbF9RX2FkZHIpOwogCQlicmVhazsKIAlj YXNlIGVDTURfQzAxMV9JTklUOgpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgQkNfU1RBVFVTIGNyeXN0 YWxoZF9kb3dubG9hZF9mdyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB2b2lkICpidWZmZXIs IHVpbnQzMl8KIAljcnlzdGFsaGRfcmVnX3dyKGFkcCwgRENJX0NNRCwgcmVnX2RhdGEpOwogCW1z bGVlcF9pbnRlcnJ1cHRpYmxlKDEwKTsKIAotCXJlZ19kYXRhID0wOworCXJlZ19kYXRhID0gMDsK IAlyZWdfZGF0YSA9IGNyeXN0YWxoZF9yZWdfcmQoYWRwLCBEQ0lfU1RBVFVTKTsKIAogCWlmICgo cmVnX2RhdGEgJiBCQ19CSVQoOSkpID09IEJDX0JJVCg5KSkgewpAQCAtMTcxNCw3ICsxNzE0LDcg QEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9kb3dubG9hZF9mdyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAq YWRwLCB2b2lkICpidWZmZXIsIHVpbnQzMl8KIAkJcmV0dXJuIEJDX1NUU19GV19BVVRIX0ZBSUxF RDsKIAl9CiAKLQlCQ01MT0coQkNNTE9HX0lORk8sIkZpcm13YXJlIERvd25sb2FkZWQgU3VjY2Vz c2Z1bGx5XG4iKTsKKwlCQ01MT0coQkNNTE9HX0lORk8sICJGaXJtd2FyZSBEb3dubG9hZGVkIFN1 Y2Nlc3NmdWxseVxuIik7CiAJcmV0dXJuIEJDX1NUU19TVUNDRVNTOzsKIH0KIApAQCAtMTg3MSw4 ICsxODcxLDggQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9od19vcGVuKHN0cnVjdCBjcnlzdGFsaGRf aHcgKmh3LCBzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwKQogCW1lbXNldChodywgMCwgc2l6ZW9m KHN0cnVjdCBjcnlzdGFsaGRfaHcpKTsKIAogCWh3LT5hZHAgPSBhZHA7Ci0JaHctPmxvY2sgPSBT UElOX0xPQ0tfVU5MT0NLRUQ7Ci0JaHctPnJ4X2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CisJ c3Bpbl9sb2NrX2luaXQoJmh3LT5sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmaHctPnJ4X2xvY2sp OwogCS8qIEZJWE1FOiBqYXJvZDogd2hhdCBhcmUgdGhlc2UgbWFnaWMgbnVtYmVycz8hPyAqLwog CWh3LT50eF9pb3FfdGFnX3NlZWQgPSAweDcwMDIzMDcwOwogCWh3LT5yeF9wa3RfdGFnX3NlZWQg PSAweDcwMDI5MDcwOwpAQCAtMTkxNiwxMiArMTkxNiwxMyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhk X2h3X3NldHVwX2RtYV9yaW5ncyhzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAlCQ19TVEFUVVMg c3RzID0gQkNfU1RTX1NVQ0NFU1M7CiAJY3J5c3RhbGhkX3J4X2RtYV9wa3QgKnJwa3Q7CiAKLQlp ZiAoIWh3IHx8ICFody0+YWRwICkgeworCWlmICghaHcgfHwgIWh3LT5hZHApIHsKIAkJQkNNTE9H X0VSUigiSW52YWxpZCBBcmd1bWVudHNcbiIpOwogCQlyZXR1cm4gQkNfU1RTX0lOVl9BUkc7CiAJ fQogCi0JaWYgKChzdHMgPSBjcnlzdGFsaGRfaHdfY3JlYXRlX2lvcXMoaHcpKSAhPSBCQ19TVFNf U1VDQ0VTUykgeworCXN0cyA9IGNyeXN0YWxoZF9od19jcmVhdGVfaW9xcyhodyk7CisJaWYgKHN0 cyAhPSBCQ19TVFNfU1VDQ0VTUykgewogCQlCQ01MT0dfRVJSKCJGYWlsZWQgdG8gY3JlYXRlIElP UXMuLlxuIik7CiAJCXJldHVybiBzdHM7CiAJfQpAQCAtMTk3Myw3ICsxOTc0LDcgQEAgQkNfU1RB VFVTIGNyeXN0YWxoZF9od19zZXR1cF9kbWFfcmluZ3Moc3RydWN0IGNyeXN0YWxoZF9odyAqaHcp CiAJCXJwa3QtPmRlc2NfbWVtLnBoeV9hZGRyID0gcGh5X2FkZHI7CiAJCXJwa3QtPmRlc2NfbWVt LnN6ICA9IEJDX0xJTktfTUFYX1NHTFMgKiBzaXplb2YoZG1hX2Rlc2NyaXB0b3IpOwogCQlycGt0 LT5wa3RfdGFnID0gaHctPnJ4X3BrdF90YWdfc2VlZCArIGk7Ci0JCWNyeXN0YWxoZF9od19mcmVl X3J4X3BrdChodyxycGt0KTsKKwkJY3J5c3RhbGhkX2h3X2ZyZWVfcnhfcGt0KGh3LCBycGt0KTsK IAl9CiAKIAlyZXR1cm4gQkNfU1RTX1NVQ0NFU1M7CkBAIC0xOTgyLDcgKzE5ODMsNyBAQCBCQ19T VEFUVVMgY3J5c3RhbGhkX2h3X3NldHVwX2RtYV9yaW5ncyhzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpo dykKIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfZnJlZV9kbWFfcmluZ3Moc3RydWN0IGNyeXN0YWxo ZF9odyAqaHcpCiB7CiAJdW5zaWduZWQgaW50IGk7Ci0JY3J5c3RhbGhkX3J4X2RtYV9wa3QgKnJw a3Q9TlVMTDsKKwljcnlzdGFsaGRfcnhfZG1hX3BrdCAqcnBrdCA9IE5VTEw7CiAKIAlpZiAoIWh3 IHx8ICFody0+YWRwKSB7CiAJCUJDTUxPR19FUlIoIkludmFsaWQgQXJndW1lbnRzXG4iKTsKQEAg LTIwMDMsNyArMjAwNCw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfZnJlZV9kbWFfcmluZ3Mo c3RydWN0IGNyeXN0YWxoZF9odyAqaHcpCiAJCX0KIAl9CiAKLQlCQ01MT0coQkNNTE9HX0RCRywi UmVsZWFzaW5nIFJYIFBrdCBwb29sXG4iKTsKKwlCQ01MT0coQkNNTE9HX0RCRywgIlJlbGVhc2lu ZyBSWCBQa3QgcG9vbFxuIik7CiAJZG8gewogCQlycGt0ID0gY3J5c3RhbGhkX2h3X2FsbG9jX3J4 X3BrdChodyk7CiAJCWlmICghcnBrdCkKQEAgLTIwOTQsNyArMjA5NSw3IEBAIEJDX1NUQVRVUyBj cnlzdGFsaGRfaHdfcG9zdF90eChzdHJ1Y3QgY3J5c3RhbGhkX2h3ICpodywgY3J5c3RhbGhkX2Rp b19yZXEgKmlvcmVxCiAKIAlody0+dHhfbGlzdF9wb3N0X2luZGV4ID0gKGh3LT50eF9saXN0X3Bv c3RfaW5kZXggKyAxKSAlIERNQV9FTkdJTkVfQ05UOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmaHctPmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmh3LT5sb2NrLCBm bGFncyk7CiAKIAogCS8qIEluc2VydCBpbiBBY3RpdmUgUS4uKi8KQEAgLTIxNjIsNyArMjE2Myw3 IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfYWRkX2NhcF9idWZmZXIoc3RydWN0IGNyeXN0YWxo ZF9odyAqaHcsCiAJaWYgKHN0cyAhPSBCQ19TVFNfU1VDQ0VTUykKIAkJcmV0dXJuIHN0czsKIAot CXJwa3QtPnV2X3BoeV9hZGRyPTA7CisJcnBrdC0+dXZfcGh5X2FkZHIgPSAwOwogCiAJLyogU3Rv cmUgdGhlIGFkZHJlc3Mgb2YgVVYgaW4gdGhlIHJ4IHBhY2tldCBmb3IgcG9zdCovCiAJaWYgKHV2 X2Rlc2NfaXgpCkBAIC0yMjc5LDcgKzIyODAsNyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX2h3X3Vu cGF1c2Uoc3RydWN0IGNyeXN0YWxoZF9odyAqaHcpCiAKIAlhc3BtID0gY3J5c3RhbGhkX3JlZ19y ZChody0+YWRwLCBQQ0lFX0RMTF9EQVRBX0xJTktfQ09OVFJPTCk7CiAJYXNwbSAmPSB+QVNQTV9M MV9FTkFCTEU7Ci0vLyBOQVJFTiBCQ01MT0coQkNNTE9HX0lORk8sICJhc3BtIG9mZlxuIik7Cisv KiBOQVJFTiBCQ01MT0coQkNNTE9HX0lORk8sICJhc3BtIG9mZlxuIik7ICovCiAJY3J5c3RhbGhk X3JlZ193cihody0+YWRwLCBQQ0lFX0RMTF9EQVRBX0xJTktfQ09OVFJPTCwgYXNwbSk7CiAKIAlz dHMgPSBjcnlzdGFsaGRfaHdfc3RhcnRfY2FwdHVyZShodyk7CkBAIC0yMzM4LDE0ICsyMzM5LDE0 IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfaHdfc2V0X2NvcmVfY2xvY2soc3RydWN0IGNyeXN0YWxo ZF9odyAqaHcpCiAJfQogCiAJLyogRklYTUU6IGphcm9kOiB3aGE/ICovCi0vLwluID0gKGh3LT5j b3JlX2Nsb2NrX21oeiAqIDMpIC8gMjAgKyAxOworCS8qbiA9IChody0+Y29yZV9jbG9ja19taHog KiAzKSAvIDIwICsgMTsgKi8KIAluID0gaHctPmNvcmVfY2xvY2tfbWh6LzU7CiAKIAlpZiAobiA9 PSBody0+cHJldl9uKQogCQlyZXR1cm4gQkNfU1RTX0NMS19OT0NIRzsKIAogCWlmIChody0+cHdy X2xvY2sgPiAwKSB7Ci0JCS8vQkNNTE9HKEJDTUxPR19JTkZPLCJwd3JfbG9jayBpcyAldVxuIiwg aHctPnB3cl9sb2NrKQorCQkvKiBCQ01MT0coQkNNTE9HX0lORk8sInB3cl9sb2NrIGlzICV1XG4i LCBody0+cHdyX2xvY2spICovCiAJCXJldHVybiBCQ19TVFNfQ0xLX05PQ0hHOwogCX0KIApAQCAt MjM2NSw3ICsyMzY2LDcgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9od19zZXRfY29yZV9jbG9jayhz dHJ1Y3QgY3J5c3RhbGhkX2h3ICpodykKIAlyZWcgfD0gbjsKIAlyZWcgfD0gdmNvX21nIDw8IDEy OwogCi0JQkNNTE9HKEJDTUxPR19JTkZPLCJjbG9jayBpcyBtb3ZpbmcgdG8gJWQgd2l0aCBuICVk IHdpdGggdmNvX21nICVkXG4iLAorCUJDTUxPRyhCQ01MT0dfSU5GTywgImNsb2NrIGlzIG1vdmlu ZyB0byAlZCB3aXRoIG4gJWQgd2l0aCB2Y29fbWcgJWRcbiIsCiAJICAgICAgIGh3LT5jb3JlX2Ns b2NrX21oeiwgbiwgdmNvX21nKTsKIAogCS8qIENoYW5nZSB0aGUgRFJBTSByZWZyZXNoIHJhdGUg dG8gYWNjb21vZGF0ZSB0aGUgbmV3IGZyZXF1ZW5jeSAqLwpAQCAtMjM3OCwxNyArMjM3OSwxNyBA QCBCQ19TVEFUVVMgY3J5c3RhbGhkX2h3X3NldF9jb3JlX2Nsb2NrKHN0cnVjdCBjcnlzdGFsaGRf aHcgKmh3KQogCWkgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKLQkJcmVnID0g YmNfZGVjX3JlZ19yZChody0+YWRwLERlY0h0X1BsbEFDdGwpOworCQlyZWcgPSBiY19kZWNfcmVn X3JkKGh3LT5hZHAsIERlY0h0X1BsbEFDdGwpOwogCiAJCWlmIChyZWcgJiAweDAwMDIwMDAwKSB7 CiAJCQlody0+cHJldl9uID0gbjsKIAkJCS8qIEZJWE1FOiBqYXJvZDogb3V0cHV0dGluZyBhIHJh bmRvbSAiQyIgaXMuLi4gY29uZnVzaW5nLi4uICovCi0JCQlCQ01MT0coQkNNTE9HX0lORk8sIkMi KTsKKwkJCUJDTUxPRyhCQ01MT0dfSU5GTywgIkMiKTsKIAkJCXJldHVybiBCQ19TVFNfU1VDQ0VT UzsKIAkJfSBlbHNlIHsKIAkJCW1zbGVlcF9pbnRlcnJ1cHRpYmxlKDEwKTsKIAkJfQogCX0KLQlC Q01MT0coQkNNTE9HX0lORk8sImNsayBjaGFuZ2UgZmFpbGVkXG4iKTsKKwlCQ01MT0coQkNNTE9H X0lORk8sICJjbGsgY2hhbmdlIGZhaWxlZFxuIik7CiAJcmV0dXJuIEJDX1NUU19DTEtfTk9DSEc7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfaHcu aCBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9ody5oCmluZGV4IDA3NjE1 MGQuLjFjNjMxOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0 YWxoZF9ody5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9ody5o CkBAIC0xMDMsNyArMTAzLDcgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogI2RlZmluZSBCQ19GV0lNR19TVF9BRERSCTB4MDAwMDAwMDAKIC8q IEZJWE1FOiBqYXJvZDogdGhlcmUncyBhIGtlcm5lbCBmdW5jdGlvbiB0aGF0J2xsIGRvIHRoaXMg Zm9yIHVzLi4uICovCi0jZGVmaW5lIHJvdHIzMl8xKHgsbikJCSgoKHgpID4+IG4pIHwgKCh4KSA8 PCAoMzIgLSBuKSkpCisjZGVmaW5lIHJvdHIzMl8xKHgsIG4pCQkoKCh4KSA+PiBuKSB8ICgoeCkg PDwgKDMyIC0gbikpKQogI2RlZmluZSBic3dhcF8zMl8xKHgpCQkoKHJvdHIzMl8xKCh4KSwgMjQp ICYgMHgwMGZmMDBmZikgfCAocm90cjMyXzEoKHgpLCA4KSAmIDB4ZmYwMGZmMDApKQogCiAjZGVm aW5lIERlY0h0X0hvc3RTd1Jlc2V0CTB4MzQwMDAwCkBAIC0xNjYsMTAgKzE2NiwxMCBAQCB0eXBl ZGVmIHVuaW9uIF9saW5rX21pc2NfcGVyc3RfY2xrX2N0cmxfIHsKIAogdHlwZWRlZiB1bmlvbiBf bGlua19taXNjX3BlcnN0X2RlY29kZXJfY3RybF8gewogCXN0cnVjdCB7Ci0JCXVpbnQzMl90CWJj bV83NDEyX3JzdDoxOwkJCS8qIDEgLT4gQkNNNzQxMiBpcyBoZWxkIGluIHJlc2V0LiBSZXNldCB2 YWx1ZSAxLiovCi0JCXVpbnQzMl90CXJlczA6MzsJCQkJCS8qIFJlc2VydmVkLk5vIEVmZmVjdCov Ci0JCXVpbnQzMl90CXN0b3BfNzQxMl9jbGs6MTsJCS8qIDEgLT5TdG9wcyBicmFuY2ggb2YgMjdN SHogY2xrIHVzZWQgdG8gY2xrIEJDTTc0MTIqLwotCQl1aW50MzJfdAlyZXMxOjI3OwkJCQkvKiBS ZXNldmVkLiBObyBFZmZlY3QqLwkJIAorCQl1aW50MzJfdAliY21fNzQxMl9yc3Q6MTsgLyogMSAt PiBCQ003NDEyIGlzIGhlbGQgaW4gcmVzZXQuIFJlc2V0IHZhbHVlIDEuKi8KKwkJdWludDMyX3QJ cmVzMDozOyAvKiBSZXNlcnZlZC5ObyBFZmZlY3QqLworCQl1aW50MzJfdAlzdG9wXzc0MTJfY2xr OjE7IC8qIDEgLT5TdG9wcyBicmFuY2ggb2YgMjdNSHogY2xrIHVzZWQgdG8gY2xrIEJDTTc0MTIq LworCQl1aW50MzJfdAlyZXMxOjI3OyAvKiBSZXNldmVkLiBObyBFZmZlY3QgKi8KIAl9OwogCiAJ dWludDMyX3QJd2hvbGVfcmVnOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwt aGQvY3J5c3RhbGhkX2xueC5jIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhk X2xueC5jCmluZGV4IGQzZDYyZDAuLmNlODllYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9sbnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3Rh bC1oZC9jcnlzdGFsaGRfbG54LmMKQEAgLTI4LDE1ICsyOCwxMSBAQAogCiAjaW5jbHVkZSAiY3J5 c3RhbGhkX2xueC5oIgogCi1zdGF0aWMgc3RydWN0IGNyeXN0YWxoZF9hZHAgKmdfYWRwX2luZm8g PSBOVUxMOworc3RhdGljIHN0cnVjdCBjcnlzdGFsaGRfYWRwICpnX2FkcF9pbmZvOwogCi0jaWYg TElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDE4KQogc3RhdGljIGlycXJl dHVybl90IGNoZF9kZWNfaXNyKGludCBpcnEsIHZvaWQgKmFyZykKLSNlbHNlCi1zdGF0aWMgaXJx cmV0dXJuX3QgY2hkX2RlY19pc3IoaW50IGlycSwgdm9pZCAqYXJnLCBzdHJ1Y3QgcHRfcmVncyAq cikKLSNlbmRpZgogewotCXN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAgPSAoc3RydWN0IGNyeXN0 YWxoZF9hZHAqKWFyZzsKKwlzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwID0gKHN0cnVjdCBjcnlz dGFsaGRfYWRwICopIGFyZzsKIAlpbnQgcmMgPSAwOwogCWlmIChhZHApCiAJCXJjID0gY3J5c3Rh bGhkX2NtZF9pbnRlcnJ1cHQoJmFkcC0+Y21kcyk7CkBAIC01OSw3ICs1NSw3IEBAIHN0YXRpYyBp bnQgY2hkX2RlY19lbmFibGVfaW50KHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApCiAJCWFkcC0+ bXNpID0gcGNpX2VuYWJsZV9tc2koYWRwLT5wZGV2KTsKIAogCXJjID0gcmVxdWVzdF9pcnEoYWRw LT5wZGV2LT5pcnEsIGNoZF9kZWNfaXNyLCBJUlFGX1NIQVJFRCwKLQkJCSBhZHAtPm5hbWUsICh2 b2lkKilhZHApOworCQkJIGFkcC0+bmFtZSwgKHZvaWQgKilhZHApOwogCWlmIChyYykgewogCQlC Q01MT0dfRVJSKCJJbnRlcnJ1cHQgcmVxdWVzdCBmYWlsZWQuLiBcbiIpOwogCQlwY2lfZGlzYWJs ZV9tc2koYWRwLT5wZGV2KTsKQEAgLTc3LDkgKzczLDggQEAgc3RhdGljIGludCBjaGRfZGVjX2Rp c2FibGVfaW50KHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHApCiAKIAlmcmVlX2lycShhZHAtPnBk ZXYtPmlycSwgYWRwKTsKIAotCWlmIChhZHAtPm1zaSkgeworCWlmIChhZHAtPm1zaSkKIAkJcGNp X2Rpc2FibGVfbXNpKGFkcC0+cGRldik7Ci0JfQogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMDAsNyAr OTUsNyBAQCBjcnlzdGFsaGRfaW9jdGxfZGF0YSAqY2hkX2RlY19hbGxvY19pb2RhdGEoc3RydWN0 IGNyeXN0YWxoZF9hZHAgKmFkcCwgYm9vbCBpc3IpCiAJCW1lbXNldCh0ZW1wLCAwLCBzaXplb2Yo KnRlbXApKTsKIAl9CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZHAtPmxvY2ssZmxhZ3Mp OworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFkcC0+bG9jaywgZmxhZ3MpOwogCXJldHVybiB0 ZW1wOwogfQogCkBAIC0xMTgsNyArMTEzLDcgQEAgdm9pZCBjaGRfZGVjX2ZyZWVfaW9kYXRhKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIGNyeXN0YWxoZF9pb2N0bF9kYXRhICppb2RhdGEKIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZhZHAtPmxvY2ssIGZsYWdzKTsKIH0KIAotaW5saW5lIHN0 YXRpYyBpbnQgY3J5c3RhbGhkX3VzZXJfZGF0YSh1bnNpZ25lZCBsb25nIHVkLHZvaWQgKmRyLCBp bnQgc2l6ZSxpbnQgc2V0KQorc3RhdGljIGlubGluZSBpbnQgY3J5c3RhbGhkX3VzZXJfZGF0YSh1 bnNpZ25lZCBsb25nIHVkLCB2b2lkICpkciwgaW50IHNpemUsIGludCBzZXQpCiB7CiAJaW50IHJj OwogCkBAIC0xNTMsNyArMTQ4LDcgQEAgc3RhdGljIGludCBjaGRfZGVjX2ZldGNoX2NkYXRhKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIGNyeXN0YWxoZF9pb2N0bF9kYXRhICoKIAogCWlvLT5h ZGRfY2RhdGEgPSB2bWFsbG9jKG1fc3opOwogCWlmICghaW8tPmFkZF9jZGF0YSkgewotCQlCQ01M T0dfRVJSKCJrYWxsb2MgZmFpbCBmb3Igc3o6JXhcbiIsbV9zeik7CisJCUJDTUxPR19FUlIoImth bGxvYyBmYWlsIGZvciBzejoleFxuIiwgbV9zeik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApA QCAtMjIyLDE3ICsyMTcsMTcgQEAgc3RhdGljIGludCBjaGRfZGVjX3Byb2NfdXNlcl9kYXRhKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsCiAJfQogCiAJc3dpdGNoIChpby0+Y21kKSB7Ci0JCWNh c2UgQkNNX0lPQ19NRU1fUkQ6Ci0JCWNhc2UgQkNNX0lPQ19NRU1fV1I6Ci0JCWNhc2UgQkNNX0lP Q19GV19ET1dOTE9BRDoKLQkJCW1fc3ogPSBpby0+dWRhdGEudS5kZXZNZW0uTnVtRHdvcmRzICog NDsKLQkJCWlmIChzZXQpCi0JCQkJcmMgPSBjaGRfZGVjX3JlbGVhc2VfY2RhdGEoYWRwLCBpbywg dWEpOwotCQkJZWxzZQotCQkJCXJjID0gY2hkX2RlY19mZXRjaF9jZGF0YShhZHAsIGlvLCBtX3N6 LCB1YSk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOworCWNhc2UgQkNNX0lPQ19N RU1fUkQ6CisJY2FzZSBCQ01fSU9DX01FTV9XUjoKKwljYXNlIEJDTV9JT0NfRldfRE9XTkxPQUQ6 CisJCW1fc3ogPSBpby0+dWRhdGEudS5kZXZNZW0uTnVtRHdvcmRzICogNDsKKwkJaWYgKHNldCkK KwkJCXJjID0gY2hkX2RlY19yZWxlYXNlX2NkYXRhKGFkcCwgaW8sIHVhKTsKKwkJZWxzZQorCQkJ cmMgPSBjaGRfZGVjX2ZldGNoX2NkYXRhKGFkcCwgaW8sIG1fc3osIHVhKTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIHJjOwpAQCAtMjQ1LDcgKzI0MCw3IEBA IHN0YXRpYyBpbnQgY2hkX2RlY19hcGlfY21kKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVu c2lnbmVkIGxvbmcgdWEsCiAJY3J5c3RhbGhkX2lvY3RsX2RhdGEgKnRlbXA7CiAJQkNfU1RBVFVT IHN0cyA9IEJDX1NUU19TVUNDRVNTOwogCi0JdGVtcCA9IGNoZF9kZWNfYWxsb2NfaW9kYXRhKGFk cCwwKTsKKwl0ZW1wID0gY2hkX2RlY19hbGxvY19pb2RhdGEoYWRwLCAwKTsKIAlpZiAoIXRlbXAp IHsKIAkJQkNNTE9HX0VSUigiRmFpbGVkIHRvIGdldCBpb2RhdGEuLlxuIik7CiAJCXJldHVybiAt RUlOVkFMOwpAQCAtMjY0LDcgKzI1OSw3IEBAIHN0YXRpYyBpbnQgY2hkX2RlY19hcGlfY21kKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVuc2lnbmVkIGxvbmcgdWEsCiAJfQogCiAJaWYgKHRl bXApIHsKLQkJY2hkX2RlY19mcmVlX2lvZGF0YShhZHAsIHRlbXAsMCk7CisJCWNoZF9kZWNfZnJl ZV9pb2RhdGEoYWRwLCB0ZW1wLCAwKTsKIAkJdGVtcCA9IE5VTEw7CiAJfQogCkBAIC0yODQsNyAr Mjc5LDcgQEAgc3RhdGljIGludCBjaGRfZGVjX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW4sIHN0cnVj dCBmaWxlICpmZCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JdWMgPSAoc3RydWN0IGNyeXN0 YWxoZF91c2VyKilmZC0+cHJpdmF0ZV9kYXRhOworCXVjID0gKHN0cnVjdCBjcnlzdGFsaGRfdXNl ciAqKWZkLT5wcml2YXRlX2RhdGE7CiAJaWYgKCF1YykgewogCQlCQ01MT0dfRVJSKCJGYWlsZWQg dG8gZ2V0IHVjXG4iKTsKIAkJcmV0dXJuIC1FTk9EQVRBOwpAQCAtMzEzLDEzICszMDgsMTMgQEAg c3RhdGljIGludCBjaGRfZGVjX29wZW4oc3RydWN0IGlub2RlICppbiwgc3RydWN0IGZpbGUgKmZk KQogCX0KIAogCWlmIChhZHAtPmNmZ191c2VycyA+PSBCQ19MSU5LX01BWF9PUEVOUykgewotCQlC Q01MT0coQkNNTE9HX0lORk8sIkFscmVhZHkgaW4gdXNlLiVkXG4iLGFkcC0+Y2ZnX3VzZXJzKTsK KwkJQkNNTE9HKEJDTUxPR19JTkZPLCAiQWxyZWFkeSBpbiB1c2UuJWRcbiIsIGFkcC0+Y2ZnX3Vz ZXJzKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAKIAlzdHMgPSBjcnlzdGFsaGRfdXNlcl9vcGVu KCZhZHAtPmNtZHMsICZ1Yyk7CiAJaWYgKHN0cyAhPSBCQ19TVFNfU1VDQ0VTUykgewotCQlCQ01M T0dfRVJSKCJjbWRfdXNlcl9vcGVuIC0gJWQgXG4iLHN0cyk7CisJCUJDTUxPR19FUlIoImNtZF91 c2VyX29wZW4gLSAlZCBcbiIsIHN0cyk7CiAJCXJjID0gLUVCVVNZOwogCX0KIApAQCAtMzQ3LDE0 ICszNDIsMTQgQEAgc3RhdGljIGludCBjaGRfZGVjX2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW4sIHN0 cnVjdCBmaWxlICpmZCkKIAkJcmV0dXJuIC1FTk9EQVRBOwogCX0KIAotCWNyeXN0YWxoZF91c2Vy X2Nsb3NlKCZhZHAtPmNtZHMsdWMpOworCWNyeXN0YWxoZF91c2VyX2Nsb3NlKCZhZHAtPmNtZHMs IHVjKTsKIAogCWFkcC0+Y2ZnX3VzZXJzLS07CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgY2hkX2RlY19mb3BzID0geworc3RhdGljIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgY2hkX2RlY19mb3BzID0gewogCS5vd25lciAgID0gVEhJU19NT0RV TEUsCiAJLmlvY3RsICAgPSBjaGRfZGVjX2lvY3RsLAogCS5vcGVuICAgID0gY2hkX2RlY19vcGVu LApAQCAtNDYyLDExICs0NTcsMTEgQEAgc3RhdGljIGludCBjaGRfcGNpX3Jlc2VydmVfbWVtKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICpwaW5mbykKIAogCXJjID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhw aW5mby0+cGRldiwgcGluZm8tPm5hbWUpOwogCWlmIChyYyA8IDApIHsKLQkJQkNNTE9HX0VSUigi UmVnaW9uIHJlcXVlc3QgZmFpbGVkOiAlZFxuIixyYyk7CisJCUJDTUxPR19FUlIoIlJlZ2lvbiBy ZXF1ZXN0IGZhaWxlZDogJWRcbiIsIHJjKTsKIAkJcmV0dXJuIHJjOwogCX0KIAotCUJDTUxPRyhC Q01MT0dfU1NURVAsIk1hcHBlZCBhZGRyOjB4JTA4bHggIGkyb19hZGRyOjB4JTA4bHhcbiIsCisJ QkNNTE9HKEJDTUxPR19TU1RFUCwgIk1hcHBlZCBhZGRyOjB4JTA4bHggIGkyb19hZGRyOjB4JTA4 bHhcbiIsCiAJICAgICAgICh1bnNpZ25lZCBsb25nKXBpbmZvLT5hZGRyLCAodW5zaWduZWQgbG9u ZylwaW5mby0+aTJvX2FkZHIpOwogCiAJcmV0dXJuIDA7CkBAIC00OTQsNyArNDg5LDcgQEAgc3Rh dGljIHZvaWQgY2hkX2RlY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCiAJQkNN TE9HX0VOVEVSOwogCi0JcGluZm8gPSAoc3RydWN0IGNyeXN0YWxoZF9hZHAqKXBjaV9nZXRfZHJ2 ZGF0YShwZGV2KTsKKwlwaW5mbyA9IChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqKSBwY2lfZ2V0X2Ry dmRhdGEocGRldik7CiAJaWYgKCFwaW5mbykgewogCQlCQ01MT0dfRVJSKCJjb3VsZCBub3QgZ2V0 IGFkcFxuIik7CiAJCXJldHVybjsKQEAgLTUwMiw3ICs0OTcsNyBAQCBzdGF0aWMgdm9pZCBjaGRf ZGVjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAKIAlzdHMgPSBjcnlzdGFsaGRf ZGVsZXRlX2NtZF9jb250ZXh0KCZwaW5mby0+Y21kcyk7CiAJaWYgKHN0cyAhPSBCQ19TVFNfU1VD Q0VTUykKLQkJQkNNTE9HX0VSUigiY21kIGRlbGV0ZSA6JWQgXG4iLHN0cyk7CisJCUJDTUxPR19F UlIoImNtZCBkZWxldGUgOiVkIFxuIiwgc3RzKTsKIAogCWNoZF9kZWNfcmVsZWFzZV9jaGRldihw aW5mbyk7CiAKQEAgLTU1NiwxMyArNTUxLDEzIEBAIHN0YXRpYyBpbnQgY2hkX2RlY19wY2lfcHJv YmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJcGluZm8tPmRydl9kYXRhID0gZW50cnktPmRyaXZl cl9kYXRhOwogCiAJLyogU2V0dXAgYWRhcHRlciBsZXZlbCBsb2NrLi4gKi8KLQlwaW5mby0+bG9j ayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsKKwlzcGluX2xvY2tfaW5pdCgmcGluZm8tPmxvY2spOwog CiAJLyogc2V0dXAgYXBpIHN0dWZmLi4gKi8KIAljaGRfZGVjX2luaXRfY2hkZXYocGluZm8pOwog CXJjID0gY2hkX2RlY19lbmFibGVfaW50KHBpbmZvKTsKIAlpZiAocmMpIHsKLQkJQkNNTE9HX0VS UigiX2VuYWJsZV9pbnQgZXJyOiVkIFxuIixyYyk7CisJCUJDTUxPR19FUlIoIl9lbmFibGVfaW50 IGVycjolZCBcbiIsIHJjKTsKIAkJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwogCQlyZXR1cm4g LUVOT0RFVjsKIAl9CkBAIC01NzUsMTQgKzU3MCwxNCBAQCBzdGF0aWMgaW50IGNoZF9kZWNfcGNp X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCQlwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21h c2socGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CiAJCXBpbmZvLT5kbWFiaXRzID0gMzI7CiAJfSBl bHNlIHsKLQkJQkNNTE9HX0VSUigiVW5hYmxlZCB0byBzZXR1cCBETUEgJWRcbiIscmMpOworCQlC Q01MT0dfRVJSKCJVbmFibGVkIHRvIHNldHVwIERNQSAlZFxuIiwgcmMpOwogCQlwY2lfZGlzYWJs ZV9kZXZpY2UocGRldik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KIAogCXN0cyA9IGNyeXN0YWxo ZF9zZXR1cF9jbWRfY29udGV4dCgmcGluZm8tPmNtZHMsIHBpbmZvKTsKIAlpZiAoc3RzICE9IEJD X1NUU19TVUNDRVNTKSB7Ci0JCUJDTUxPR19FUlIoImNtZCBzZXR1cCA6JWQgXG4iLHN0cyk7CisJ CUJDTUxPR19FUlIoImNtZCBzZXR1cCA6JWQgXG4iLCBzdHMpOwogCQlwY2lfZGlzYWJsZV9kZXZp Y2UocGRldik7CiAJCXJldHVybiAtRU5PREVWOwogCX0KQEAgLTY1Nyw3ICs2NTIsNyBAQCBpbnQg Y2hkX2RlY19wY2lfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCiAJcmMgPSBjaGRfZGVj X2VuYWJsZV9pbnQoYWRwKTsKIAlpZiAocmMpIHsKLQkJQkNNTE9HX0VSUigiX2VuYWJsZV9pbnQg ZXJyOiVkIFxuIixyYyk7CisJCUJDTUxPR19FUlIoIl9lbmFibGVfaW50IGVycjolZCBcbiIsIHJj KTsKIAkJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CkBA IC02OTYsMTcgKzY5MSwxNyBAQCB2b2lkIGNoZF9zZXRfbG9nX2xldmVsKHN0cnVjdCBjcnlzdGFs aGRfYWRwICphZHAsIGNoYXIgKmFyZykKIHsKIAlpZiAoKCFhcmcpIHx8IChzdHJsZW4oYXJnKSA8 IDMpKQogCQlnX2xpbmtsb2dfbGV2ZWwgPSBCQ01MT0dfRVJST1IgfCBCQ01MT0dfREFUQTsKLQll bHNlIGlmICghc3RybmNtcChhcmcsInNzdGVwIiw1KSkKKwllbHNlIGlmICghc3RybmNtcChhcmcs ICJzc3RlcCIsIDUpKQogCQlnX2xpbmtsb2dfbGV2ZWwgPSBCQ01MT0dfSU5GTyB8IEJDTUxPR19E QVRBIHwgQkNNTE9HX0RCRyB8CiAJCQkJICBCQ01MT0dfU1NURVAgfCBCQ01MT0dfRVJST1I7Ci0J ZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCJpbmZvIiw0KSkKKwllbHNlIGlmICghc3RybmNtcChhcmcs ICJpbmZvIiwgNCkpCiAJCWdfbGlua2xvZ19sZXZlbCA9IEJDTUxPR19FUlJPUiB8IEJDTUxPR19E QVRBIHwgQkNNTE9HX0lORk87Ci0JZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCJkZWJ1ZyIsNSkpCisJ ZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCAiZGVidWciLCA1KSkKIAkJZ19saW5rbG9nX2xldmVsID0g QkNNTE9HX0VSUk9SIHwgQkNNTE9HX0RBVEEgfCBCQ01MT0dfSU5GTyB8CiAJCQkJICBCQ01MT0df REJHOwotCWVsc2UgaWYgKCFzdHJuY21wKGFyZywicGJhbGwiLDUpKQorCWVsc2UgaWYgKCFzdHJu Y21wKGFyZywgInBiYWxsIiwgNSkpCiAJCWdfbGlua2xvZ19sZXZlbCA9IDB4RkZGRkZGRkYgJiB+ KEJDTUxPR19TUElOTE9DSyk7Ci0JZWxzZSBpZiAoIXN0cm5jbXAoYXJnLCJzaWxlbnQiLDYpKQor CWVsc2UgaWYgKCFzdHJuY21wKGFyZywgInNpbGVudCIsIDYpKQogCQlnX2xpbmtsb2dfbGV2ZWwg PSAwOwogCWVsc2UKIAkJZ19saW5rbG9nX2xldmVsID0gMDsKQEAgLTcyMiwyMCArNzE3LDIwIEBA IGludCBfX2luaXQgY2hkX2RlY19tb2R1bGVfaW5pdCh2b2lkKQogCWludCByYzsKIAogCWNoZF9z ZXRfbG9nX2xldmVsKE5VTEwsICJkZWJ1ZyIpOwotCUJDTUxPRyhCQ01MT0dfREFUQSwiTG9hZGlu ZyBjcnlzdGFsaGQgJWQuJWQuJWQgXG4iLAorCUJDTUxPRyhCQ01MT0dfREFUQSwgIkxvYWRpbmcg Y3J5c3RhbGhkICVkLiVkLiVkIFxuIiwKIAkgICAgICAgY3J5c3RhbGhkX2ttb2RfbWFqb3IsIGNy eXN0YWxoZF9rbW9kX21pbm9yLCBjcnlzdGFsaGRfa21vZF9yZXYpOwogCiAJcmMgPSBwY2lfcmVn aXN0ZXJfZHJpdmVyKCZiY19jaGRfNzAwMTJfZHJpdmVyKTsKIAogCWlmIChyYyA8IDApCi0JCUJD TUxPR19FUlIoIkNvdWxkIG5vdCBmaW5kIGFueSBkZXZpY2VzLiBlcnI6JWQgXG4iLHJjKTsKKwkJ QkNNTE9HX0VSUigiQ291bGQgbm90IGZpbmQgYW55IGRldmljZXMuIGVycjolZCBcbiIsIHJjKTsK IAogCXJldHVybiByYzsKIH0KIAotdm9pZCBfX2V4aXQgY2hkX2RlY19tb2R1bGVfY2xlYW51cCgg dm9pZCApCit2b2lkIF9fZXhpdCBjaGRfZGVjX21vZHVsZV9jbGVhbnVwKHZvaWQpCiB7Ci0JQkNN TE9HKEJDTUxPR19EQVRBLCJ1bmxvYWRpbmcgY3J5c3RhbGhkICVkLiVkLiVkIFxuIiwKKwlCQ01M T0coQkNNTE9HX0RBVEEsICJ1bmxvYWRpbmcgY3J5c3RhbGhkICVkLiVkLiVkIFxuIiwKIAkgICAg ICAgY3J5c3RhbGhkX2ttb2RfbWFqb3IsIGNyeXN0YWxoZF9rbW9kX21pbm9yLCBjcnlzdGFsaGRf a21vZF9yZXYpOwogCiAJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZiY19jaGRfNzAwMTJfZHJpdmVy KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxoZF9taXNj LmMgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfbWlzYy5jCmluZGV4IDgy ZWEyNzcuLjg3OThiOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2Ny eXN0YWxoZF9taXNjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhk X21pc2MuYwpAQCAtMzUsMTUgKzM1LDEzIEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgY3J5c3Rh bGhkX2RyYW1fcmQoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgbWVtCiAJcmV0 dXJuIGJjX2RlY19yZWdfcmQoYWRwLCAoMHgwMDM4MDAwMCB8IChtZW1fb2ZmICYgMHgwMDA3RkZG RikpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNyeXN0YWxoZF9kcmFtX3dyKHN0cnVjdCBj cnlzdGFsaGRfYWRwKmFkcCwKLQkJCQkgICB1aW50MzJfdCBtZW1fb2ZmLCB1aW50MzJfdCB2YWwp CitzdGF0aWMgaW5saW5lIHZvaWQgY3J5c3RhbGhkX2RyYW1fd3Ioc3RydWN0IGNyeXN0YWxoZF9h ZHAgKmFkcCwgdWludDMyX3QgbWVtX29mZiwgdWludDMyX3QgdmFsKQogewogCWNyeXN0YWxoZF9y ZWdfd3IoYWRwLCBEQ0lfRFJBTV9CQVNFX0FERFIsIChtZW1fb2ZmID4+IDE5KSk7Ci0JYmNfZGVj X3JlZ193cihhZHAsICgweDAwMzgwMDAwIHwgKG1lbV9vZmYgJiAweDAwMDdGRkZGKSksdmFsKTsK KwliY19kZWNfcmVnX3dyKGFkcCwgKDB4MDAzODAwMDAgfCAobWVtX29mZiAmIDB4MDAwN0ZGRkYp KSwgdmFsKTsKIH0KIAotc3RhdGljIGlubGluZSBCQ19TVEFUVVMgYmNfY2hrX2RyYW1fcmFuZ2Uo c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwKLQkJCQkJICB1aW50MzJfdCBzdGFydF9vZmYsIHVp bnQzMl90IGNudCkKK3N0YXRpYyBpbmxpbmUgQkNfU1RBVFVTIGJjX2Noa19kcmFtX3JhbmdlKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVpbnQzMl90IHN0YXJ0X29mZiwgdWludDMyX3QgY250 KQogewogCXJldHVybiBCQ19TVFNfU1VDQ0VTUzsKIH0KQEAgLTU4LDExICs1NiwxMSBAQCBzdGF0 aWMgY3J5c3RhbGhkX2Rpb19yZXEgKmNyeXN0YWxoZF9hbGxvY19kaW8oc3RydWN0IGNyeXN0YWxo ZF9hZHAgKmFkcCkKIAkJcmV0dXJuIHRlbXA7CiAJfQogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmFk cC0+bG9jayxmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmFkcC0+bG9jaywgZmxhZ3MpOwog CXRlbXAgPSBhZHAtPnVhX21hcF9mcmVlX2hlYWQ7CiAJaWYgKHRlbXApCiAJCWFkcC0+dWFfbWFw X2ZyZWVfaGVhZCA9IGFkcC0+dWFfbWFwX2ZyZWVfaGVhZC0+bmV4dDsKLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZhZHAtPmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFk cC0+bG9jaywgZmxhZ3MpOwogCiAJcmV0dXJuIHRlbXA7CiB9CkBAIC03MywzMCArNzEsMzAgQEAg c3RhdGljIHZvaWQgY3J5c3RhbGhkX2ZyZWVfZGlvKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAs IGNyeXN0YWxoZF9kaW9fcmVxICpkaW8KIAogCWlmICghYWRwIHx8ICFkaW8pCiAJCXJldHVybjsK LQlzcGluX2xvY2tfaXJxc2F2ZSgmYWRwLT5sb2NrLGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmYWRwLT5sb2NrLCBmbGFncyk7CiAJZGlvLT5zaWcgPSBjcnlzdGFsaGRfZGlvX2ludjsKIAlk aW8tPnBhZ2VfY250ID0gMDsKIAlkaW8tPmZiX3NpemUgPSAwOwotCW1lbXNldCgmZGlvLT51aW5m bywwLHNpemVvZihkaW8tPnVpbmZvKSk7CisJbWVtc2V0KCZkaW8tPnVpbmZvLCAwLCBzaXplb2Yo ZGlvLT51aW5mbykpOwogCWRpby0+bmV4dCA9IGFkcC0+dWFfbWFwX2ZyZWVfaGVhZDsKIAlhZHAt PnVhX21hcF9mcmVlX2hlYWQgPSBkaW87Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWRwLT5s b2NrLGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZHAtPmxvY2ssIGZsYWdzKTsK IH0KIAogc3RhdGljIGNyeXN0YWxoZF9lbGVtX3QgKmNyeXN0YWxoZF9hbGxvY19lbGVtKHN0cnVj dCBjcnlzdGFsaGRfYWRwICphZHApCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFncz0wOwotCWNyeXN0 YWxoZF9lbGVtX3QgKnRlbXA9TlVMTDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKKwljcnlz dGFsaGRfZWxlbV90ICp0ZW1wID0gTlVMTDsKIAogCWlmICghYWRwKQogCQlyZXR1cm4gdGVtcDsK LQlzcGluX2xvY2tfaXJxc2F2ZSgmYWRwLT5sb2NrLGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmYWRwLT5sb2NrLCBmbGFncyk7CiAJdGVtcCA9IGFkcC0+ZWxlbV9wb29sX2hlYWQ7CiAJaWYg KHRlbXApIHsKIAkJYWRwLT5lbGVtX3Bvb2xfaGVhZCA9IGFkcC0+ZWxlbV9wb29sX2hlYWQtPmZs aW5rOwogCQltZW1zZXQodGVtcCwgMCwgc2l6ZW9mKCp0ZW1wKSk7CiAJfQotCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmFkcC0+bG9jayxmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm YWRwLT5sb2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gdGVtcDsKIH0KQEAgLTEwNiwzMyArMTA0LDI1 IEBAIHN0YXRpYyB2b2lkIGNyeXN0YWxoZF9mcmVlX2VsZW0oc3RydWN0IGNyeXN0YWxoZF9hZHAg KmFkcCwgY3J5c3RhbGhkX2VsZW1fdCAqZWxlCiAKIAlpZiAoIWFkcCB8fCAhZWxlbSkKIAkJcmV0 dXJuOwotCXNwaW5fbG9ja19pcnFzYXZlKCZhZHAtPmxvY2ssZmxhZ3MpOworCXNwaW5fbG9ja19p cnFzYXZlKCZhZHAtPmxvY2ssIGZsYWdzKTsKIAllbGVtLT5mbGluayA9IGFkcC0+ZWxlbV9wb29s X2hlYWQ7CiAJYWRwLT5lbGVtX3Bvb2xfaGVhZCA9IGVsZW07Ci0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmYWRwLT5sb2NrLGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhZHAtPmxv Y2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGNyeXN0YWxoZF9zZXRfc2coc3Ry dWN0IHNjYXR0ZXJsaXN0ICpzZywgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJCQkJICB1bnNpZ25lZCBp bnQgbGVuLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQogewotI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+ IEtFUk5FTF9WRVJTSU9OKDIsNiwyMykKIAlzZ19zZXRfcGFnZShzZywgcGFnZSwgbGVuLCBvZmZz ZXQpOwotI2Vsc2UKLQlzZy0+cGFnZSAgICAgICA9IHBhZ2U7Ci0Jc2ctPm9mZnNldCAgICAgPSBv ZmZzZXQ7Ci0Jc2ctPmxlbmd0aCAgICAgPSBsZW47CiAjaWZkZWYgQ09ORklHX1g4Nl82NAogCXNn LT5kbWFfbGVuZ3RoID0gbGVuOwogI2VuZGlmCi0jZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkIGNyeXN0YWxoZF9pbml0X3NnKHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIHVuc2lnbmVkIGlu dCBlbnRyaWVzKQogewotLy8gaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNy8xMS8yNy82OAotI2lm IExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwyMykKKwkvKiBodHRwOi8v bGttbC5vcmcvbGttbC8yMDA3LzExLzI3LzY4ICovCiAJc2dfaW5pdF90YWJsZShzZywgZW50cmll cyk7Ci0jZW5kaWYKIH0KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSBFeHRlcm4gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xNTEsNyArMTQxLDcg QEAgc3RhdGljIGlubGluZSB2b2lkIGNyeXN0YWxoZF9pbml0X3NnKHN0cnVjdCBzY2F0dGVybGlz dCAqc2csIHVuc2lnbmVkIGludCBlbnRyaWUKIHVpbnQzMl90IGJjX2RlY19yZWdfcmQoc3RydWN0 IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgcmVnX29mZikKIHsKIAlpZiAoIWFkcCB8fCAo cmVnX29mZiA+IGFkcC0+cGNpX21lbV9sZW4pKSB7Ci0JCUJDTUxPR19FUlIoImRlY19yZF9yZWdf b2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIscmVnX29mZik7CisJCUJDTUxPR19FUlIoImRlY19y ZF9yZWdfb2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIsIHJlZ19vZmYpOwogCQlyZXR1cm4gMDsK IAl9CiAKQEAgLTE3NCw3ICsxNjQsNyBAQCB1aW50MzJfdCBiY19kZWNfcmVnX3JkKHN0cnVjdCBj cnlzdGFsaGRfYWRwICphZHAsIHVpbnQzMl90IHJlZ19vZmYpCiB2b2lkIGJjX2RlY19yZWdfd3Io c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgcmVnX29mZiwgdWludDMyX3QgdmFs KQogewogCWlmICghYWRwIHx8IChyZWdfb2ZmID4gYWRwLT5wY2lfbWVtX2xlbikpIHsKLQkJQkNN TE9HX0VSUigiZGVjX3dyX3JlZ19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIixyZWdfb2ZmKTsK KwkJQkNNTE9HX0VSUigiZGVjX3dyX3JlZ19vZmYgb3V0b2YgcmFuZ2U6IDB4JTA4eFxuIiwgcmVn X29mZik7CiAJCXJldHVybjsKIAl9CiAJd3JpdGVsKHZhbCwgYWRwLT5hZGRyICsgcmVnX29mZik7 CkBAIC0xOTQsMTAgKzE4NCwxMCBAQCB2b2lkIGJjX2RlY19yZWdfd3Ioc3RydWN0IGNyeXN0YWxo ZF9hZHAgKmFkcCwgdWludDMyX3QgcmVnX29mZiwgdWludDMyX3QgdmFsKQogICogY29uZmlndXJh dGlvbiBzcGFjZS4KICAqCiAgKi8KLXVpbnQzMl90IGNyeXN0YWxoZF9yZWdfcmQoc3RydWN0IGNy eXN0YWxoZF9hZHAgKmFkcCx1aW50MzJfdCByZWdfb2ZmKQordWludDMyX3QgY3J5c3RhbGhkX3Jl Z19yZChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCByZWdfb2ZmKQogewogCWlm ICghYWRwIHx8IChyZWdfb2ZmID4gYWRwLT5wY2lfaTJvX2xlbikpIHsKLQkJQkNNTE9HX0VSUigi bGlua19yZF9yZWdfb2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIscmVnX29mZik7CisJCUJDTUxP R19FUlIoImxpbmtfcmRfcmVnX29mZiBvdXRvZiByYW5nZTogMHglMDh4XG4iLCByZWdfb2ZmKTsK IAkJcmV0dXJuIDA7CiAJfQogCXJldHVybiByZWFkbChhZHAtPmkyb19hZGRyICsgcmVnX29mZik7 CkBAIC0yMjAsNyArMjEwLDcgQEAgdWludDMyX3QgY3J5c3RhbGhkX3JlZ19yZChzdHJ1Y3QgY3J5 c3RhbGhkX2FkcCAqYWRwLHVpbnQzMl90IHJlZ19vZmYpCiB2b2lkIGNyeXN0YWxoZF9yZWdfd3Io c3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3QgcmVnX29mZiwgdWludDMyX3QgdmFs KQogewogCWlmICghYWRwIHx8IChyZWdfb2ZmID4gYWRwLT5wY2lfaTJvX2xlbikpIHsKLQkJQkNN TE9HX0VSUigibGlua193cl9yZWdfb2ZmIG91dG9mIHJhbmdlOiAweCUwOHhcbiIscmVnX29mZik7 CisJCUJDTUxPR19FUlIoImxpbmtfd3JfcmVnX29mZiBvdXRvZiByYW5nZTogMHglMDh4XG4iLCBy ZWdfb2ZmKTsKIAkJcmV0dXJuOwogCX0KIAl3cml0ZWwodmFsLCBhZHAtPmkyb19hZGRyICsgcmVn X29mZik7CkBAIC0zMDcsMTggKzI5NywxOCBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX3BjaV9jZmdf cmQoc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdWludDMyX3Qgb2ZmLAogCiAJc3dpdGNoIChs ZW4pIHsKIAljYXNlIDE6Ci0JCXJjID0gcGNpX3JlYWRfY29uZmlnX2J5dGUoYWRwLT5wZGV2LCBv ZmYsICh1OCopdmFsKTsKKwkJcmMgPSBwY2lfcmVhZF9jb25maWdfYnl0ZShhZHAtPnBkZXYsIG9m ZiwgKHU4ICopdmFsKTsKIAkJYnJlYWs7CiAJY2FzZSAyOgotCQlyYyA9IHBjaV9yZWFkX2NvbmZp Z193b3JkKGFkcC0+cGRldiwgb2ZmLCAodTE2Kil2YWwpOworCQlyYyA9IHBjaV9yZWFkX2NvbmZp Z193b3JkKGFkcC0+cGRldiwgb2ZmLCAodTE2ICopdmFsKTsKIAkJYnJlYWs7CiAJY2FzZSA0Ogot CQlyYyA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZChhZHAtPnBkZXYsIG9mZiwgKHUzMiopdmFsKTsK KwkJcmMgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQoYWRwLT5wZGV2LCBvZmYsICh1MzIgKil2YWwp OwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlyYyA9IC1FSU5WQUw7CiAJCXN0cyA9IEJDX1NUU19J TlZfQVJHOwotCQlCQ01MT0dfRVJSKCJJbnZhbGlkIGxlbjolZFxuIixsZW4pOworCQlCQ01MT0df RVJSKCJJbnZhbGlkIGxlbjolZFxuIiwgbGVuKTsKIAl9OwogCiAJaWYgKHJjICYmIChzdHMgPT0g QkNfU1RTX1NVQ0NFU1MpKQpAQCAtMzYzLDcgKzM1Myw3IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRf cGNpX2NmZ193cihzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqYWRwLCB1aW50MzJfdCBvZmYsCiAJZGVm YXVsdDoKIAkJcmMgPSAtRUlOVkFMOwogCQlzdHMgPSBCQ19TVFNfSU5WX0FSRzsKLQkJQkNNTE9H X0VSUigiSW52YWxpZCBsZW46JWRcbiIsbGVuKTsKKwkJQkNNTE9HX0VSUigiSW52YWxpZCBsZW46 JWRcbiIsIGxlbik7CiAJfTsKIAogCWlmIChyYyAmJiAoc3RzID09IEJDX1NUU19TVUNDRVNTKSkK QEAgLTQ1Miw3ICs0NDIsNyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX2NyZWF0ZV9kaW9xKHN0cnVj dCBjcnlzdGFsaGRfYWRwICphZHAsCiAJaWYgKCFkaW9xKQogCQlyZXR1cm4gQkNfU1RTX0lOU1VG Rl9SRVM7CiAKLQlkaW9xLT5sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOworCXNwaW5fbG9ja19p bml0KCZkaW9xLT5sb2NrKTsKIAlkaW9xLT5zaWcgPSBCQ19MSU5LX0RJT1FfU0lHOwogCWRpb3Et PmhlYWQgPSAoY3J5c3RhbGhkX2VsZW1fdCAqKSZkaW9xLT5oZWFkOwogCWRpb3EtPnRhaWwgPSAo Y3J5c3RhbGhkX2VsZW1fdCAqKSZkaW9xLT5oZWFkOwpAQCAtNTYyLDcgKzU1Miw3IEBAIHZvaWQg KmNyeXN0YWxoZF9kaW9xX2ZldGNoKGNyeXN0YWxoZF9kaW9xX3QgKmlvcSkKIAogCXNwaW5fbG9j a19pcnFzYXZlKCZpb3EtPmxvY2ssIGZsYWdzKTsKIAl0bXAgPSBpb3EtPmhlYWQ7Ci0JaWYgKHRt cCAhPSAoY3J5c3RhbGhkX2VsZW1fdCopJmlvcS0+aGVhZCkgeworCWlmICh0bXAgIT0gKGNyeXN0 YWxoZF9lbGVtX3QgKikmaW9xLT5oZWFkKSB7CiAJCXJldCA9IHRtcDsKIAkJdG1wLT5mbGluay0+ YmxpbmsgPSB0bXAtPmJsaW5rOwogCQl0bXAtPmJsaW5rLT5mbGluayA9IHRtcC0+Zmxpbms7CkBA IC01OTgsOSArNTg4LDkgQEAgdm9pZCAqY3J5c3RhbGhkX2Rpb3FfZmluZF9hbmRfZmV0Y2goY3J5 c3RhbGhkX2Rpb3FfdCAqaW9xLCB1aW50MzJfdCB0YWcpCiAJCXJldHVybiBkYXRhOwogCX0KIAot CXNwaW5fbG9ja19pcnFzYXZlKCZpb3EtPmxvY2ssZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZl KCZpb3EtPmxvY2ssIGZsYWdzKTsKIAl0bXAgPSBpb3EtPmhlYWQ7Ci0Jd2hpbGUgKHRtcCAhPSAo Y3J5c3RhbGhkX2VsZW1fdCopJmlvcS0+aGVhZCkgeworCXdoaWxlICh0bXAgIT0gKGNyeXN0YWxo ZF9lbGVtX3QgKikmaW9xLT5oZWFkKSB7CiAJCWlmICh0bXAtPnRhZyA9PSB0YWcpIHsKIAkJCXJl dCA9IHRtcDsKIAkJCXRtcC0+ZmxpbmstPmJsaW5rID0gdG1wLT5ibGluazsKQEAgLTYxMCw3ICs2 MDAsNyBAQCB2b2lkICpjcnlzdGFsaGRfZGlvcV9maW5kX2FuZF9mZXRjaChjcnlzdGFsaGRfZGlv cV90ICppb3EsIHVpbnQzMl90IHRhZykKIAkJfQogCQl0bXAgPSB0bXAtPmZsaW5rOwogCX0KLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZpb3EtPmxvY2ssZmxhZ3MpOworCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmlvcS0+bG9jaywgZmxhZ3MpOwogCiAJaWYgKHJldCkgewogCQlkYXRhID0gcmV0 LT5kYXRhOwpAQCAtNjQ4LDExICs2MzgsMTEgQEAgdm9pZCAqY3J5c3RhbGhkX2Rpb3FfZmV0Y2hf d2FpdChjcnlzdGFsaGRfZGlvcV90ICppb3EsIHVpbnQzMl90IHRvX3NlY3MsCiAJd2hpbGUgKChp b3EtPmNvdW50ID09IDApICYmIGNvdW50KSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlv cS0+bG9jaywgZmxhZ3MpOwogCi0JCWNyeXN0YWxoZF93YWl0X29uX2V2ZW50KCZpb3EtPmV2ZW50 LCAoaW9xLT5jb3VudD4wKSwgMTAwMCwgcmMsIDApOworCQljcnlzdGFsaGRfd2FpdF9vbl9ldmVu dCgmaW9xLT5ldmVudCwgKGlvcS0+Y291bnQgPiAwKSwgMTAwMCwgcmMsIDApOwogCQlpZiAocmMg PT0gMCkgewogCQkJZ290byBvdXQ7CiAJCX0gZWxzZSBpZiAocmMgPT0gLUVJTlRSKSB7Ci0JCQlC Q01MT0coQkNNTE9HX0lORk8sIkNhbmNlbGxpbmcgZmV0Y2ggd2FpdFxuIik7CisJCQlCQ01MT0co QkNNTE9HX0lORk8sICJDYW5jZWxsaW5nIGZldGNoIHdhaXRcbiIpOwogCQkJKnNpZ19wZW5kID0g MTsKIAkJCXJldHVybiB0bXA7CiAJCX0KQEAgLTcyNSw3ICs3MTUsNyBAQCBCQ19TVEFUVVMgY3J5 c3RhbGhkX21hcF9kaW8oc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdm9pZCAqdWJ1ZmYsCiAJ aWYgKG5yX3BhZ2VzID4gZGlvLT5tYXhfcGFnZXMpIHsKIAkJQkNNTE9HX0VSUigibWF4X3BhZ2Vz KCVkKSBleGNlZWRlZCglZCkhIVxuIiwKIAkJCSAgIGRpby0+bWF4X3BhZ2VzLCBucl9wYWdlcyk7 Ci0JCWNyeXN0YWxoZF91bm1hcF9kaW8oYWRwLGRpbyk7CisJCWNyeXN0YWxoZF91bm1hcF9kaW8o YWRwLCBkaW8pOwogCQlyZXR1cm4gQkNfU1RTX0lOU1VGRl9SRVM7CiAJfQogCkBAIC03NDMsOCAr NzMzLDggQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9tYXBfZGlvKHN0cnVjdCBjcnlzdGFsaGRfYWRw ICphZHAsIHZvaWQgKnVidWZmLAogCQlpZiAocmVzKSB7CiAJCQlCQ01MT0dfRVJSKCJmYWlsZWQg JWQgdG8gY29weSAldSBmaWxsIGJ5dGVzIGZyb20gJXBcbiIsCiAJCQkJICAgcmVzLCBkaW8tPmZi X3NpemUsCi0JCQkJICAgKHZvaWQgKikodWFkZHIrY291bnQtZGlvLT5mYl9zaXplKSk7Ci0JCQlj cnlzdGFsaGRfdW5tYXBfZGlvKGFkcCxkaW8pOworCQkJCSAgICh2b2lkICopKHVhZGRyICsgY291 bnQtZGlvLT5mYl9zaXplKSk7CisJCQljcnlzdGFsaGRfdW5tYXBfZGlvKGFkcCwgZGlvKTsKIAkJ CXJldHVybiBCQ19TVFNfSU5TVUZGX1JFUzsKIAkJfQogCX0KQEAgLTc2OSw3ICs3NTksNyBAQCBC Q19TVEFUVVMgY3J5c3RhbGhkX21hcF9kaW8oc3RydWN0IGNyeXN0YWxoZF9hZHAgKmFkcCwgdm9p ZCAqdWJ1ZmYsCiAJY3J5c3RhbGhkX3NldF9zZygmZGlvLT5zZ1swXSwgZGlvLT5wYWdlc1swXSwg MCwgdWFkZHIgJiB+UEFHRV9NQVNLKTsKIAlpZiAobnJfcGFnZXMgPiAxKSB7CiAJCWRpby0+c2db MF0ubGVuZ3RoID0gUEFHRV9TSVpFIC0gZGlvLT5zZ1swXS5vZmZzZXQ7Ci0jaWYgKExJTlVYX1ZF UlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwyMykpIHx8IGRlZmluZWQoQ09ORklHX1g4 Nl82NCkKKyNpZiBkZWZpbmVkKENPTkZJR19YODZfNjQpCiAJCWRpby0+c2dbMF0uZG1hX2xlbmd0 aCA9IGRpby0+c2dbMF0ubGVuZ3RoOwogI2VuZGlmCiAJCWNvdW50IC09IGRpby0+c2dbMF0ubGVu Z3RoOwpAQCAtNzg3LDE5ICs3NzcsMTkgQEAgQkNfU1RBVFVTIGNyeXN0YWxoZF9tYXBfZGlvKHN0 cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHZvaWQgKnVidWZmLAogCX0gZWxzZSB7CiAJCWlmIChj b3VudCA8IDQpIHsKIAkJCWRpby0+c2dbMF0ubGVuZ3RoID0gY291bnQ7Ci0JCQlza2lwX2ZiX3Nn PTE7CisJCQlza2lwX2ZiX3NnID0gMTsKIAkJfSBlbHNlIHsKIAkJCWRpby0+c2dbMF0ubGVuZ3Ro ID0gY291bnQgLSBkaW8tPmZiX3NpemU7CiAJCX0KLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID4g S0VSTkVMX1ZFUlNJT04oMiw2LDIzKSkgfHwgZGVmaW5lZChDT05GSUdfWDg2XzY0KQorI2lmIGRl ZmluZWQoQ09ORklHX1g4Nl82NCkKIAkJZGlvLT5zZ1swXS5kbWFfbGVuZ3RoID0gZGlvLT5zZ1sw XS5sZW5ndGg7CiAjZW5kaWYKIAl9CiAJZGlvLT5zZ19jbnQgPSBwY2lfbWFwX3NnKGFkcC0+cGRl diwgZGlvLT5zZywKIAkJCQkgZGlvLT5wYWdlX2NudCwgZGlvLT5kaXJlY3Rpb24pOwogCWlmIChk aW8tPnNnX2NudCA8PSAwKSB7Ci0JCUJDTUxPR19FUlIoInNnIG1hcCAlZC0lZCBcbiIsZGlvLT5z Z19jbnQsIGRpby0+cGFnZV9jbnQpOwotCQljcnlzdGFsaGRfdW5tYXBfZGlvKGFkcCxkaW8pOwor CQlCQ01MT0dfRVJSKCJzZyBtYXAgJWQtJWQgXG4iLCBkaW8tPnNnX2NudCwgZGlvLT5wYWdlX2Nu dCk7CisJCWNyeXN0YWxoZF91bm1hcF9kaW8oYWRwLCBkaW8pOwogCQlyZXR1cm4gQkNfU1RTX0VS Uk9SOwogCX0KIAlpZiAoZGlvLT5zZ19jbnQgJiYgc2tpcF9mYl9zZykKQEAgLTgzMiw3ICs4MjIs NyBAQCBCQ19TVEFUVVMgY3J5c3RhbGhkX3VubWFwX2RpbyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAq YWRwLCBjcnlzdGFsaGRfZGlvX3JlcSAqZGlvKQogCXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDsK IAlpbnQgaiA9IDA7CiAKLQlpZiAoIWFkcCB8fCAhZGlvICkgeworCWlmICghYWRwIHx8ICFkaW8p IHsKIAkJQkNNTE9HX0VSUigiSW52YWxpZCBhcmcgXG4iKTsKIAkJcmV0dXJuIEJDX1NUU19JTlZf QVJHOwogCX0KQEAgLTg5MCwxOSArODgwLDE5IEBAIGludCBjcnlzdGFsaGRfY3JlYXRlX2Rpb19w b29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICphZHAsIHVpbnQzMl90IG1heF9wYWdlcykKIAlhc3og PSAgKHNpemVvZigqZGlvLT5wYWdlcykgKiBtYXhfcGFnZXMpICsKIAkgICAgICAgKHNpemVvZigq ZGlvLT5zZykgKiBtYXhfcGFnZXMpICsgc2l6ZW9mKCpkaW8pOwogCi0JQkNNTE9HKEJDTUxPR19E QkcsIkluaXRpYWxpemluZyBEaW8gcG9vbCAlZCAlZCAleCAlcFxuIiwKKwlCQ01MT0coQkNNTE9H X0RCRywgIkluaXRpYWxpemluZyBEaW8gcG9vbCAlZCAlZCAleCAlcFxuIiwKIAkgICAgICAgQkNf TElOS19TR19QT09MX1NaLCBtYXhfcGFnZXMsIGFzeiwgYWRwLT5maWxsX2J5dGVfcG9vbCk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgQkNfTElOS19TR19QT09MX1NaOyBpKyspIHsKIAkJdGVtcCA9ICh1 aW50OF90ICopa3phbGxvYyhhc3osIEdGUF9LRVJORUwpOwogCQlpZiAoKHRlbXApID09IE5VTEwp IHsKLQkJCUJDTUxPR19FUlIoIkZhaWxlZCB0byBhbGxvYyAlZCBtZW1cbiIsYXN6KTsKKwkJCUJD TUxPR19FUlIoIkZhaWxlZCB0byBhbGxvYyAlZCBtZW1cbiIsIGFzeik7CiAJCQlyZXR1cm4gLUVO T01FTTsKIAkJfQogCiAJCWRpbyA9IChjcnlzdGFsaGRfZGlvX3JlcSAqKXRlbXA7CiAJCXRlbXAg Kz0gc2l6ZW9mKCpkaW8pOwotCQlkaW8tPnBhZ2VzID0gKHN0cnVjdCBwYWdlKiopdGVtcDsKKwkJ ZGlvLT5wYWdlcyA9IChzdHJ1Y3QgcGFnZSAqKil0ZW1wOwogCQl0ZW1wICs9IChzaXplb2YoKmRp by0+cGFnZXMpICogbWF4X3BhZ2VzKTsKIAkJZGlvLT5zZyA9IChzdHJ1Y3Qgc2NhdHRlcmxpc3Qg Kil0ZW1wOwogCQlkaW8tPm1heF9wYWdlcyA9IG1heF9wYWdlczsKQEAgLTk1NCw3ICs5NDQsNyBA QCB2b2lkIGNyeXN0YWxoZF9kZXN0cm95X2Rpb19wb29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICph ZHApCiAJCWFkcC0+ZmlsbF9ieXRlX3Bvb2wgPSBOVUxMOwogCX0KIAotCUJDTUxPRyhCQ01MT0df REJHLCJSZWxlYXNlZCBkaW8gcG9vbCAlZCBcbiIsY291bnQpOworCUJDTUxPRyhCQ01MT0dfREJH LCAiUmVsZWFzZWQgZGlvIHBvb2wgJWQgXG4iLCBjb3VudCk7CiB9CiAKIC8qKgpAQCAtMTAxMyw3 ICsxMDAzLDcgQEAgdm9pZCBjcnlzdGFsaGRfZGVsZXRlX2VsZW1fcG9vbChzdHJ1Y3QgY3J5c3Rh bGhkX2FkcCAqYWRwKQogCQl9CiAJfSB3aGlsZSAodGVtcCk7CiAKLQlCQ01MT0coQkNNTE9HX0RC RywicmVsZWFzZWQgJWQgZWxlbVxuIixkYmdfY250KTsKKwlCQ01MT0coQkNNTE9HX0RCRywgInJl bGVhc2VkICVkIGVsZW1cbiIsIGRiZ19jbnQpOwogfQogCiAvKj09PT09PT09PT09PT09PT0gRGVi dWcgc3VwcG9ydCByb3V0aW5lcy4uID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K QEAgLTEwMjUsMTMgKzEwMTUsMTMgQEAgdm9pZCBjcnlzdGFsaGRfc2hvd19idWZmZXIodWludDMy X3Qgb2ZmLCB1aW50OF90ICpidWZmLCB1aW50MzJfdCBkd2NvdW50KQogCQlpZiAoayA9PSAxKQog CQkJQkNNTE9HKEJDTUxPR19EQVRBLCAiMHglMDhYIDogIiwgb2ZmKTsKIAotCQlCQ01MT0coQkNN TE9HX0RBVEEsIiAweCUwOFggIiwgKigodWludDMyX3QgKilidWZmKSk7CisJCUJDTUxPRyhCQ01M T0dfREFUQSwgIiAweCUwOFggIiwgKigodWludDMyX3QgKilidWZmKSk7CiAKIAkJYnVmZiArPSBz aXplb2YodWludDMyX3QpOwogCQlvZmYgICs9IHNpemVvZih1aW50MzJfdCk7CiAJCWsrKzsKIAkJ aWYgKChpID09IGR3Y291bnQgLSAxKSB8fCAoayA+IDQpKSB7Ci0JCQlCQ01MT0coQkNNTE9HX0RB VEEsIlxuIik7CisJCQlCQ01MT0coQkNNTE9HX0RBVEEsICJcbiIpOwogCQkJayA9IDE7CiAJCX0K IAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9jcnlzdGFsaGRfbWlz Yy5oIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWwtaGQvY3J5c3RhbGhkX21pc2MuaAppbmRleCA4 NmVkOTIyLi5hMmFhNmFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbC1oZC9j cnlzdGFsaGRfbWlzYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsLWhkL2NyeXN0YWxo ZF9taXNjLmgKQEAgLTEzMiwxOSArMTMyLDE5IEBAIEJDX1NUQVRVUyBjcnlzdGFsaGRfbWVtX3dy KHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QKIAog Lyo9PT09PT09PT09TGluayAoNzAwMTIpIFBDSWUgQ29uZmlnIGFjY2VzcyByb3V0aW5lcy49PT09 PT09PT09PT09PT09Ki8KIEJDX1NUQVRVUyBjcnlzdGFsaGRfcGNpX2NmZ19yZChzdHJ1Y3QgY3J5 c3RhbGhkX2FkcCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90ICopOwotQkNfU1RBVFVT IGNyeXN0YWxoZF9wY2lfY2ZnX3dyKHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90LCB1 aW50MzJfdCwgdWludDMyX3QgKTsKK0JDX1NUQVRVUyBjcnlzdGFsaGRfcGNpX2NmZ193cihzdHJ1 Y3QgY3J5c3RhbGhkX2FkcCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KTsKIAogLyo9 PT09PT09PT0gTGludXggS2VybmVsIEludGVyZmFjZSByb3V0aW5lcy4gPT09PT09PT09PT09PT09 PT09PT09PT0gKi8KIHZvaWQgKmJjX2tlcm5fZG1hX2FsbG9jKHN0cnVjdCBjcnlzdGFsaGRfYWRw ICosIHVpbnQzMl90LCBkbWFfYWRkcl90ICopOwogdm9pZCBiY19rZXJuX2RtYV9mcmVlKHN0cnVj dCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90LAogCQkgICAgICB2b2lkICosIGRtYV9hZGRyX3Qp OwotI2RlZmluZSBjcnlzdGFsaGRfY3JlYXRlX2V2ZW50KF9ldikJaW5pdF93YWl0cXVldWVfaGVh ZCggX2V2KQotI2RlZmluZSBjcnlzdGFsaGRfc2V0X2V2ZW50KF9ldikJCXdha2VfdXBfaW50ZXJy dXB0aWJsZSggX2V2KQorI2RlZmluZSBjcnlzdGFsaGRfY3JlYXRlX2V2ZW50KF9ldikJaW5pdF93 YWl0cXVldWVfaGVhZChfZXYpCisjZGVmaW5lIGNyeXN0YWxoZF9zZXRfZXZlbnQoX2V2KQkJd2Fr ZV91cF9pbnRlcnJ1cHRpYmxlKF9ldikKICNkZWZpbmUgY3J5c3RhbGhkX3dhaXRfb25fZXZlbnQo ZXYsIGNvbmRpdGlvbiwgdGltZW91dCwgcmV0LCBub3NpZykJXAogZG8gewkJCQkJCQkJCVwKIAlE RUNMQVJFX1dBSVRRVUVVRShlbnRyeSwgY3VycmVudCk7CQkJCVwKIAl1bnNpZ25lZCBsb25nIGVu ZCA9IGppZmZpZXMgKyAoKHRpbWVvdXQgKiBIWikgLyAxMDAwKTsJCVwKLQkJcmV0PTA7CQkJCQkJ CVwKKwkJcmV0ID0gMDsJCQkJCQlcCiAJYWRkX3dhaXRfcXVldWUoZXYsICZlbnRyeSk7CQkJCQlc CiAJZm9yICg7OykgewkJCQkJCQlcCiAJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJV UFRJQkxFKTsJCVwKQEAgLTE2MywxNCArMTYzLDE1IEBAIGRvIHsJCQkJCQkJCQlcCiAJfQkJCQkJ CQkJXAogCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsJCQkJXAogCXJlbW92ZV93 YWl0X3F1ZXVlKGV2LCAmZW50cnkpOwkJCQkJXAotfSB3aGlsZSgwKQorfSB3aGlsZSAoMCkKIAog Lyo9PT09PT09PT09PT09PT09IERpcmVjdCBJTyBtYXBwaW5nIHJvdXRpbmVzID09PT09PT09PT09 PT09PT09PSovCi1leHRlcm4gaW50IGNyeXN0YWxoZF9jcmVhdGVfZGlvX3Bvb2woc3RydWN0IGNy eXN0YWxoZF9hZHAgKiwgdWludDMyX3QgKTsKK2V4dGVybiBpbnQgY3J5c3RhbGhkX2NyZWF0ZV9k aW9fcG9vbChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqLCB1aW50MzJfdCk7CiBleHRlcm4gdm9pZCBj cnlzdGFsaGRfZGVzdHJveV9kaW9fcG9vbChzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqKTsKLWV4dGVy biBCQ19TVEFUVVMgY3J5c3RhbGhkX21hcF9kaW8oc3RydWN0IGNyeXN0YWxoZF9hZHAgKix2b2lk ICosIHVpbnQzMl90LCB1aW50MzJfdCwgCi0JCQkJYm9vbCwgYm9vbCxjcnlzdGFsaGRfZGlvX3Jl cSoqICk7Ci1leHRlcm4gQkNfU1RBVFVTIGNyeXN0YWxoZF91bm1hcF9kaW8oc3RydWN0IGNyeXN0 YWxoZF9hZHAgKixjcnlzdGFsaGRfZGlvX3JlcSopOworZXh0ZXJuIEJDX1NUQVRVUyBjcnlzdGFs aGRfbWFwX2RpbyhzdHJ1Y3QgY3J5c3RhbGhkX2FkcCAqLCB2b2lkICosIHVpbnQzMl90LAorCQkJ CSAgIHVpbnQzMl90LCBib29sLCBib29sLCBjcnlzdGFsaGRfZGlvX3JlcSoqKTsKKworZXh0ZXJu IEJDX1NUQVRVUyBjcnlzdGFsaGRfdW5tYXBfZGlvKHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIGNy eXN0YWxoZF9kaW9fcmVxKik7CiAjZGVmaW5lIGNyeXN0YWxoZF9nZXRfc2dsZV9wYWRkcihfZGlv LCBfaXgpIChjcHVfdG9fbGU2NChzZ19kbWFfYWRkcmVzcygmX2Rpby0+c2dbX2l4XSkpKQogI2Rl ZmluZSBjcnlzdGFsaGRfZ2V0X3NnbGVfbGVuKF9kaW8sIF9peCkgKGNwdV90b19sZTMyKHNnX2Rt YV9sZW4oJl9kaW8tPnNnW19peF0pKSkKIApAQCAtMTc5LDEyICsxODAsMTIgQEAgZXh0ZXJuIEJD X1NUQVRVUyBjcnlzdGFsaGRfY3JlYXRlX2Rpb3Eoc3RydWN0IGNyeXN0YWxoZF9hZHAgKiwgY3J5 c3RhbGhkX2Rpb3FfdAogZXh0ZXJuIHZvaWQgY3J5c3RhbGhkX2RlbGV0ZV9kaW9xKHN0cnVjdCBj cnlzdGFsaGRfYWRwICosIGNyeXN0YWxoZF9kaW9xX3QgKik7CiBleHRlcm4gQkNfU1RBVFVTIGNy eXN0YWxoZF9kaW9xX2FkZChjcnlzdGFsaGRfZGlvcV90ICppb3EsIHZvaWQgKmRhdGEsIGJvb2wg d2FrZSwgdWludDMyX3QgdGFnKTsKIGV4dGVybiB2b2lkICpjcnlzdGFsaGRfZGlvcV9mZXRjaChj cnlzdGFsaGRfZGlvcV90ICppb3EpOwotZXh0ZXJuIHZvaWQgKmNyeXN0YWxoZF9kaW9xX2ZpbmRf YW5kX2ZldGNoKGNyeXN0YWxoZF9kaW9xX3QgKmlvcSx1aW50MzJfdCB0YWcpOworZXh0ZXJuIHZv aWQgKmNyeXN0YWxoZF9kaW9xX2ZpbmRfYW5kX2ZldGNoKGNyeXN0YWxoZF9kaW9xX3QgKmlvcSwg dWludDMyX3QgdGFnKTsKIGV4dGVybiB2b2lkICpjcnlzdGFsaGRfZGlvcV9mZXRjaF93YWl0KGNy eXN0YWxoZF9kaW9xX3QgKmlvcSwgdWludDMyX3QgdG9fc2VjcywgdWludDMyX3QgKnNpZ19wZW5k KTsKIAogI2RlZmluZSBjcnlzdGFsaGRfZGlvcV9jb3VudChfaW9xKQkoKF9pb3EpID8gX2lvcS0+ Y291bnQgOiAwKQogCi1leHRlcm4gaW50IGNyeXN0YWxoZF9jcmVhdGVfZWxlbV9wb29sKHN0cnVj dCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90ICk7CitleHRlcm4gaW50IGNyeXN0YWxoZF9jcmVh dGVfZWxlbV9wb29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICosIHVpbnQzMl90KTsKIGV4dGVybiB2 b2lkIGNyeXN0YWxoZF9kZWxldGVfZWxlbV9wb29sKHN0cnVjdCBjcnlzdGFsaGRfYWRwICopOwog CiAKQEAgLTIyMCw5ICsyMjEsOSBAQCBpZiAoZ19saW5rbG9nX2xldmVsICYgdHJhY2UpIHsJCQlc CiAKICNkZWZpbmUgQkNNTE9HX0VSUihmbXQsIGFyZ3MuLi4pCQkJCQlcCiBkbyB7CQkJCQkJCQkJ XAotCWlmKGdfbGlua2xvZ19sZXZlbCAmIEJDTUxPR19FUlJPUil7CQkJCVwKLQkgIHByaW50aygi KkVSUio6JXM6JWQ6ICJmbXQsX19GSUxFX18sX19MSU5FX18sICMjYXJncyk7CQlcCisJaWYgKGdf bGlua2xvZ19sZXZlbCAmIEJDTUxPR19FUlJPUikgewkJCQlcCisJCXByaW50aygiKkVSUio6JXM6 JWQ6ICJmbXQsIF9fRklMRV9fLCBfX0xJTkVfXywgIyNhcmdzKTsJXAogCX0JCQkJCQkJCVwKLX0g d2hpbGUoMCk7Cit9IHdoaWxlICgwKTsKIAogI2VuZGlmCi0tIAoxLjUuNgoK --00151747c366f94bab047c342ed7-- -- 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/