From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38A56C2BB1D for ; Fri, 13 Mar 2020 10:44:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DFD6B20724 for ; Fri, 13 Mar 2020 10:44:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=hackerdom.ru header.i=@hackerdom.ru header.b="IdD1WTHM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726539AbgCMKoS (ORCPT ); Fri, 13 Mar 2020 06:44:18 -0400 Received: from mail-ua1-f66.google.com ([209.85.222.66]:37797 "EHLO mail-ua1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726387AbgCMKoR (ORCPT ); Fri, 13 Mar 2020 06:44:17 -0400 Received: by mail-ua1-f66.google.com with SMTP id h32so3336298uah.4 for ; Fri, 13 Mar 2020 03:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hackerdom.ru; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pI5sQZXcgPdQt0OS5NIq5wKyvAT3TmNbaFjVomj5ekU=; b=IdD1WTHMt+a45dOMDauaKH8sRk8IIubcEE+CcUcORy6dUQAKqWwB9EauZOtK2qG0Gm sZYrKNosP/Bj8ipZlTnZcdWiSAIITP6dBQf5/xXqMyHoVuMJRRp/DcWe3jZZ0TsCm2vw zD8Q6sEGuheHzcfNNQGBhVW0ZDF0lxR+y7+4w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pI5sQZXcgPdQt0OS5NIq5wKyvAT3TmNbaFjVomj5ekU=; b=cBiF2sBQsIlIRu7rHbz8caz6hT72WGWXnL376DbB5pU5hMsTdILPQ0VdPdurt1usod bPJAq1eMHiRy4Esb5T3tx6Wl1KNk3D6OV1fv10WTPcuO1W8YK+1XYgwQGZqdtlraHDa8 4wo8mJiLcXGm7B4o2eTpSREyF1UQ78poQb3BG4i/7I4tahkQzbqOoOKwFGzOOv3EMPoQ 979Ccx9e11WF7z40ESL8RQvxmYY/aBaVFTmTg/RzDOChij3IfFngOQYmJYxw5XHa+qJm bmQzt1QE7Io17nhILW3SJaJdLuuem7mhYjTO8BlVwEGYMhzE8g1fdRPuUWMcNkWs3Wsu I7ow== X-Gm-Message-State: ANhLgQ3aFQ68sOOXUqL1MJGO/7pc+vVUaluWNTTh/+X9bXHLrNVXqOKb CIOD2NhQdKDPm+/weJ3vTz+2eJ48RcZTvz9VkTsCMA== X-Google-Smtp-Source: ADFU+vszOqJvdHFBkTP/gkHYgBYHoGBT1yWvY5igBFwckK6aZ0kBMf9sXvmAxd9IwS/+HcrQCXX0sVQ8LK7iaD/OYg8= X-Received: by 2002:a9f:35e6:: with SMTP id u35mr7538983uad.32.1584096254314; Fri, 13 Mar 2020 03:44:14 -0700 (PDT) MIME-Version: 1.0 References: <20200313205415.021b7875@canb.auug.org.au> In-Reply-To: <20200313205415.021b7875@canb.auug.org.au> From: =?UTF-8?B?0JDQu9C10LrRgdCw0L3QtNGAINCR0LXRgNGB0LXQvdC10LI=?= Date: Fri, 13 Mar 2020 15:44:02 +0500 Message-ID: Subject: Re: linux-next: build warning after merge of the net-next tree To: Stephen Rothwell Cc: David Miller , Networking , Linux Next Mailing List , Linux Kernel Mailing List Content-Type: multipart/mixed; boundary="00000000000087786805a0ba26ed" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org --00000000000087786805a0ba26ed Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, This is my patch, sorry for this warning. The fix is to change cpu_to_le32 to cpu_to_le16 in line 1175: ndp32->wLength =3D cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp32) + sizeof(struct usb_cdc_ncm_dpe32)); The full patch is attached Best, Alexander Bersenev =D0=BF=D1=82, 13 =D0=BC=D0=B0=D1=80. 2020 =D0=B3. =D0=B2 14:54, Stephen Rot= hwell : > > Hi all, > > After merging the net-next tree, today's linux-next build (powerpc > allyesconfig) produced this warning: > > In file included from include/linux/byteorder/big_endian.h:5, > from arch/powerpc/include/uapi/asm/byteorder.h:14, > from include/asm-generic/bitops/le.h:6, > from arch/powerpc/include/asm/bitops.h:250, > from include/linux/bitops.h:29, > from include/linux/kernel.h:12, > from include/linux/list.h:9, > from include/linux/module.h:12, > from drivers/net/usb/cdc_ncm.c:41: > drivers/net/usb/cdc_ncm.c: In function 'cdc_ncm_ndp32': > include/uapi/linux/byteorder/big_endian.h:33:26: warning: conversion from= 'unsigned int' to '__le16' {aka 'short unsigned int'} changes value from '= 402653184' to '0' [-Woverflow] > 33 | #define __cpu_to_le32(x) ((__force __le32)__swab32((x))) > | ^ > include/linux/byteorder/generic.h:88:21: note: in expansion of macro '__c= pu_to_le32' > 88 | #define cpu_to_le32 __cpu_to_le32 > | ^~~~~~~~~~~~~ > drivers/net/usb/cdc_ncm.c:1175:19: note: in expansion of macro 'cpu_to_le= 32' > 1175 | ndp32->wLength =3D cpu_to_le32(sizeof(struct usb_cdc_ncm_ndp32) = + sizeof(struct usb_cdc_ncm_dpe32)); > | ^~~~~~~~~~~ > > Introduced by commit > > 0fa81b304a79 ("cdc_ncm: Implement the 32-bit version of NCM Transfer Bl= ock") > > -- > Cheers, > Stephen Rothwell --00000000000087786805a0ba26ed Content-Type: text/x-patch; charset="US-ASCII"; name="0001-cdc_ncm-Implement-the-32-bit-version-of-NCM-Transfer.patch" Content-Disposition: attachment; filename="0001-cdc_ncm-Implement-the-32-bit-version-of-NCM-Transfer.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k7q1zwa90 RnJvbSBkNjNlMzI3OTkxNDc4YTYxMDRmMTIzZDU3NTM4ZmViOTE5NmE3MGNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgQmVyc2VuZXYgPGJheUBoYWNrZXJkb20ucnU+ CkRhdGU6IEZyaSwgNiBNYXIgMjAyMCAwMTowMjozMyArMDUwMApTdWJqZWN0OiBbUEFUQ0hdIGNk Y19uY206IEltcGxlbWVudCB0aGUgMzItYml0IHZlcnNpb24gb2YgTkNNIFRyYW5zZmVyIEJsb2Nr CgpUaGUgTkNNIHNwZWNpZmljYXRpb24gZGVmaW5lcyB0d28gZm9ybWF0cyBvZiB0cmFuc2ZlciBi bG9ja3M6IHdpdGggMTYtYml0CmZpZWxkcyAoTlRCLTE2KSBhbmQgd2l0aCAzMi1iaXQgZmllbGRz IChOVEItMzIpLiBDdXJyZW50bHkgb25seSBOVEItMTYgaXMKaW1wbGVtZW50ZWQuCgpUaGlzIHBh dGNoIGFkZHMgdGhlIHN1cHBvcnQgb2YgTlRCLTMyLiBUaGUgbW90aXZhdGlvbiBiZWhpbmQgdGhp cyBpcyB0aGF0CnNvbWUgZGV2aWNlcyBzdWNoIGFzIEU1Nzg1IG9yIEU1ODg1IGZyb20gdGhlIGN1 cnJlbnQgZ2VuZXJhdGlvbiBvZiBIdWF3ZWkKTFRFIHJvdXRlcnMgZG8gbm90IHN1cHBvcnQgTlRC LTE2LiBUaGUgcHJldmlvdXMgZ2VuZXJhdGlvbnMgb2YgSHVhd2VpCmRldmljZXMgYXJlIGFsc28g dXNlIE5UQi0zMiBieSBkZWZhdWx0LgoKQWxzbyB0aGlzIHBhdGNoIGVuYWJsZXMgTlRCLTMyIGJ5 IGRlZmF1bHQgZm9yIEh1YXdlaSBkZXZpY2VzLgoKRHVyaW5nIHRoZSAyMDE5IFZhbGRpa1NTIG1h ZGUgZml2ZSBhdHRlbXB0cyB0byBjb250YWN0IEh1YXdlaSB0byBhZGQgdGhlCk5UQi0xNiBzdXBw b3J0IHRvIHRoZWlyIHJvdXRlciBmaXJtd2FyZSwgYnV0IHRoZXkgd2VyZSB1bnN1Y2Nlc3NmdWwu CgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgQmVyc2VuZXYgPGJheUBoYWNrZXJkb20ucnU+Ci0t LQogZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYyAgICAgICAgfCA0MTEgKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLQogZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMgfCAgIDgg Ky0KIGluY2x1ZGUvbGludXgvdXNiL2NkY19uY20uaCAgICAgIHwgIDE1ICstCiAzIGZpbGVzIGNo YW5nZWQsIDM0MCBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC91c2IvY2RjX25jbS5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYwppbmRl eCBjMmM4MmU2MzkxYjQuLjg5Mjk2NjliNWU2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNi L2NkY19uY20uYworKysgYi9kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jCkBAIC0xNzUsNyArMTc1 LDExIEBAIHN0YXRpYyB1MzIgY2RjX25jbV9jaGVja190eF9tYXgoc3RydWN0IHVzYm5ldCAqZGV2 LCB1MzIgbmV3X3R4KQogCXUzMiB2YWwsIG1heCwgbWluOwogCiAJLyogY2xhbXAgbmV3X3R4IHRv IHNhbmUgdmFsdWVzICovCi0JbWluID0gY3R4LT5tYXhfZGF0YWdyYW1fc2l6ZSArIGN0eC0+bWF4 X25kcF9zaXplICsgc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9udGgxNik7CisJaWYgKGN0eC0+ aXNfbmRwMTYpCisJCW1pbiA9IGN0eC0+bWF4X2RhdGFncmFtX3NpemUgKyBjdHgtPm1heF9uZHBf c2l6ZSArIHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYpOworCWVsc2UKKwkJbWluID0g Y3R4LT5tYXhfZGF0YWdyYW1fc2l6ZSArIGN0eC0+bWF4X25kcF9zaXplICsgc2l6ZW9mKHN0cnVj dCB1c2JfY2RjX25jbV9udGgzMik7CisKIAltYXggPSBtaW5fdCh1MzIsIENEQ19OQ01fTlRCX01B WF9TSVpFX1RYLCBsZTMyX3RvX2NwdShjdHgtPm5jbV9wYXJtLmR3TnRiT3V0TWF4U2l6ZSkpOwog CiAJLyogc29tZSBkZXZpY2VzIHNldCBkd050Yk91dE1heFNpemUgdG9vIGxvdyBmb3IgdGhlIGFi b3ZlIGRlZmF1bHQgKi8KQEAgLTMwNywxMCArMzExLDE3IEBAIHN0YXRpYyBzc2l6ZV90IG5kcF90 b19lbmRfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyCiAJaWYgKGVuYWJsZSA9PSAoY3R4LT5kcnZmbGFncyAmIENEQ19OQ01fRkxBR19ORFBfVE9f RU5EKSkKIAkJcmV0dXJuIGxlbjsKIAotCWlmIChlbmFibGUgJiYgIWN0eC0+ZGVsYXllZF9uZHAx NikgewotCQljdHgtPmRlbGF5ZWRfbmRwMTYgPSBremFsbG9jKGN0eC0+bWF4X25kcF9zaXplLCBH RlBfS0VSTkVMKTsKLQkJaWYgKCFjdHgtPmRlbGF5ZWRfbmRwMTYpCi0JCQlyZXR1cm4gLUVOT01F TTsKKwlpZiAoZW5hYmxlKSB7CisJCWlmIChjdHgtPmlzX25kcDE2ICYmICFjdHgtPmRlbGF5ZWRf bmRwMTYpIHsKKwkJCWN0eC0+ZGVsYXllZF9uZHAxNiA9IGt6YWxsb2MoY3R4LT5tYXhfbmRwX3Np emUsIEdGUF9LRVJORUwpOworCQkJaWYgKCFjdHgtPmRlbGF5ZWRfbmRwMTYpCisJCQkJcmV0dXJu IC1FTk9NRU07CisJCX0KKwkJaWYgKCFjdHgtPmlzX25kcDE2ICYmICFjdHgtPmRlbGF5ZWRfbmRw MzIpIHsKKwkJCWN0eC0+ZGVsYXllZF9uZHAzMiA9IGt6YWxsb2MoY3R4LT5tYXhfbmRwX3NpemUs IEdGUF9LRVJORUwpOworCQkJaWYgKCFjdHgtPmRlbGF5ZWRfbmRwMzIpCisJCQkJcmV0dXJuIC1F Tk9NRU07CisJCX0KIAl9CiAKIAkvKiBmbHVzaCBwZW5kaW5nIGRhdGEgYmVmb3JlIGNoYW5naW5n IGZsYWcgKi8KQEAgLTUxMiw2ICs1MjMsOSBAQCBzdGF0aWMgaW50IGNkY19uY21faW5pdChzdHJ1 Y3QgdXNibmV0ICpkZXYpCiAJCQlkZXZfZXJyKCZkZXYtPmludGYtPmRldiwgIlNFVF9DUkNfTU9E RSBmYWlsZWRcbiIpOwogCX0KIAorCS8qIHVzZSBuZHAxNiBieSBkZWZhdWx0ICovCisJY3R4LT5p c19uZHAxNiA9IDE7CisKIAkvKiBzZXQgTlRCIGZvcm1hdCwgaWYgYm90aCBmb3JtYXRzIGFyZSBz dXBwb3J0ZWQuCiAJICoKIAkgKiAiVGhlIGhvc3Qgc2hhbGwgb25seSBzZW5kIHRoaXMgY29tbWFu ZCB3aGlsZSB0aGUgTkNNIERhdGEKQEAgLTUxOSwxNCArNTMzLDI3IEBAIHN0YXRpYyBpbnQgY2Rj X25jbV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldikKIAkgKi8KIAlpZiAobGUxNl90b19jcHUoY3R4 LT5uY21fcGFybS5ibU50YkZvcm1hdHNTdXBwb3J0ZWQpICYKIAkJCQkJCVVTQl9DRENfTkNNX05U QjMyX1NVUFBPUlRFRCkgewotCQlkZXZfZGJnKCZkZXYtPmludGYtPmRldiwgIlNldHRpbmcgTlRC IGZvcm1hdCB0byAxNi1iaXRcbiIpOwotCQllcnIgPSB1c2JuZXRfd3JpdGVfY21kKGRldiwgVVNC X0NEQ19TRVRfTlRCX0ZPUk1BVCwKLQkJCQkgICAgICAgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfRElS X09VVAotCQkJCSAgICAgICB8IFVTQl9SRUNJUF9JTlRFUkZBQ0UsCi0JCQkJICAgICAgIFVTQl9D RENfTkNNX05UQjE2X0ZPUk1BVCwKLQkJCQkgICAgICAgaWZhY2Vfbm8sIE5VTEwsIDApOwotCQlp ZiAoZXJyIDwgMCkKKwkJaWYgKGN0eC0+ZHJ2ZmxhZ3MgJiBDRENfTkNNX0ZMQUdfUFJFRkVSX05U QjMyKSB7CisJCQljdHgtPmlzX25kcDE2ID0gMDsKKwkJCWRldl9kYmcoJmRldi0+aW50Zi0+ZGV2 LCAiU2V0dGluZyBOVEIgZm9ybWF0IHRvIDMyLWJpdFxuIik7CisJCQllcnIgPSB1c2JuZXRfd3Jp dGVfY21kKGRldiwgVVNCX0NEQ19TRVRfTlRCX0ZPUk1BVCwKKwkJCQkJICAgICAgIFVTQl9UWVBF X0NMQVNTIHwgVVNCX0RJUl9PVVQKKwkJCQkJICAgICAgIHwgVVNCX1JFQ0lQX0lOVEVSRkFDRSwK KwkJCQkJICAgICAgIFVTQl9DRENfTkNNX05UQjMyX0ZPUk1BVCwKKwkJCQkJICAgICAgIGlmYWNl X25vLCBOVUxMLCAwKTsKKwkJfSBlbHNlIHsKKwkJCWN0eC0+aXNfbmRwMTYgPSAxOworCQkJZGV2 X2RiZygmZGV2LT5pbnRmLT5kZXYsICJTZXR0aW5nIE5UQiBmb3JtYXQgdG8gMTYtYml0XG4iKTsK KwkJCWVyciA9IHVzYm5ldF93cml0ZV9jbWQoZGV2LCBVU0JfQ0RDX1NFVF9OVEJfRk9STUFULAor CQkJCQkgICAgICAgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfRElSX09VVAorCQkJCQkgICAgICAgfCBV U0JfUkVDSVBfSU5URVJGQUNFLAorCQkJCQkgICAgICAgVVNCX0NEQ19OQ01fTlRCMTZfRk9STUFU LAorCQkJCQkgICAgICAgaWZhY2Vfbm8sIE5VTEwsIDApOworCQl9CisJCWlmIChlcnIgPCAwKSB7 CisJCQljdHgtPmlzX25kcDE2ID0gMTsKIAkJCWRldl9lcnIoJmRldi0+aW50Zi0+ZGV2LCAiU0VU X05UQl9GT1JNQVQgZmFpbGVkXG4iKTsKKwkJfQogCX0KIAogCS8qIHNldCBpbml0aWFsIGRldmlj ZSB2YWx1ZXMgKi8KQEAgLTU0OSw3ICs1NzYsMTAgQEAgc3RhdGljIGludCBjZGNfbmNtX2luaXQo c3RydWN0IHVzYm5ldCAqZGV2KQogCQljdHgtPnR4X21heF9kYXRhZ3JhbXMgPSBDRENfTkNNX0RQ VF9EQVRBR1JBTVNfTUFYOwogCiAJLyogc2V0IHVwIG1heGltdW0gTkRQIHNpemUgKi8KLQljdHgt Pm1heF9uZHBfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYpICsgKGN0eC0+ dHhfbWF4X2RhdGFncmFtcyArIDEpICogc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNik7 CisJaWYgKGN0eC0+aXNfbmRwMTYpCisJCWN0eC0+bWF4X25kcF9zaXplID0gc2l6ZW9mKHN0cnVj dCB1c2JfY2RjX25jbV9uZHAxNikgKyAoY3R4LT50eF9tYXhfZGF0YWdyYW1zICsgMSkgKiBzaXpl b2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2KTsKKwllbHNlCisJCWN0eC0+bWF4X25kcF9zaXpl ID0gc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9uZHAzMikgKyAoY3R4LT50eF9tYXhfZGF0YWdy YW1zICsgMSkgKiBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTMyKTsKIAogCS8qIGluaXRp YWwgY29hbGVzY2luZyB0aW1lciBpbnRlcnZhbCAqLwogCWN0eC0+dGltZXJfaW50ZXJ2YWwgPSBD RENfTkNNX1RJTUVSX0lOVEVSVkFMX1VTRUMgKiBOU0VDX1BFUl9VU0VDOwpAQCAtNzM0LDcgKzc2 NCwxMCBAQCBzdGF0aWMgdm9pZCBjZGNfbmNtX2ZyZWUoc3RydWN0IGNkY19uY21fY3R4ICpjdHgp CiAJCWN0eC0+dHhfY3Vycl9za2IgPSBOVUxMOwogCX0KIAotCWtmcmVlKGN0eC0+ZGVsYXllZF9u ZHAxNik7CisJaWYgKGN0eC0+aXNfbmRwMTYpCisJCWtmcmVlKGN0eC0+ZGVsYXllZF9uZHAxNik7 CisJZWxzZQorCQlrZnJlZShjdHgtPmRlbGF5ZWRfbmRwMzIpOwogCiAJa2ZyZWUoY3R4KTsKIH0K QEAgLTc3MiwxMCArODA1LDggQEAgaW50IGNkY19uY21fYmluZF9jb21tb24oc3RydWN0IHVzYm5l dCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgdTggZGF0YV8KIAl1OCAqYnVmOwog CWludCBsZW47CiAJaW50IHRlbXA7Ci0JaW50IGVycjsKIAl1OCBpZmFjZV9ubzsKIAlzdHJ1Y3Qg dXNiX2NkY19wYXJzZWRfaGVhZGVyIGhkcjsKLQlfX2xlMTYgY3Vycl9udGJfZm9ybWF0OwogCiAJ Y3R4ID0ga3phbGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwogCWlmICghY3R4KQpAQCAt ODc5LDMyICs5MTAsNiBAQCBpbnQgY2RjX25jbV9iaW5kX2NvbW1vbihzdHJ1Y3QgdXNibmV0ICpk ZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCB1OCBkYXRhXwogCQlnb3RvIGVycm9yMjsK IAl9CiAKLQkvKgotCSAqIFNvbWUgSHVhd2VpIGRldmljZXMgaGF2ZSBiZWVuIG9ic2VydmVkIHRv IGNvbWUgb3V0IG9mIHJlc2V0IGluIE5EUDMyIG1vZGUuCi0JICogTGV0J3MgY2hlY2sgaWYgdGhp cyBpcyB0aGUgY2FzZSwgYW5kIHNldCB0aGUgZGV2aWNlIHRvIE5EUDE2IG1vZGUgYWdhaW4gaWYK LQkgKiBuZWVkZWQuCi0JKi8KLQlpZiAoY3R4LT5kcnZmbGFncyAmIENEQ19OQ01fRkxBR19SRVNF VF9OVEIxNikgewotCQllcnIgPSB1c2JuZXRfcmVhZF9jbWQoZGV2LCBVU0JfQ0RDX0dFVF9OVEJf Rk9STUFULAotCQkJCSAgICAgIFVTQl9UWVBFX0NMQVNTIHwgVVNCX0RJUl9JTiB8IFVTQl9SRUNJ UF9JTlRFUkZBQ0UsCi0JCQkJICAgICAgMCwgaWZhY2Vfbm8sICZjdXJyX250Yl9mb3JtYXQsIDIp OwotCQlpZiAoZXJyIDwgMCkgewotCQkJZ290byBlcnJvcjI7Ci0JCX0KLQotCQlpZiAoY3Vycl9u dGJfZm9ybWF0ID09IGNwdV90b19sZTE2KFVTQl9DRENfTkNNX05UQjMyX0ZPUk1BVCkpIHsKLQkJ CWRldl9pbmZvKCZpbnRmLT5kZXYsICJyZXNldHRpbmcgTlRCIGZvcm1hdCB0byAxNi1iaXQiKTsK LQkJCWVyciA9IHVzYm5ldF93cml0ZV9jbWQoZGV2LCBVU0JfQ0RDX1NFVF9OVEJfRk9STUFULAot CQkJCQkgICAgICAgVVNCX1RZUEVfQ0xBU1MgfCBVU0JfRElSX09VVAotCQkJCQkgICAgICAgfCBV U0JfUkVDSVBfSU5URVJGQUNFLAotCQkJCQkgICAgICAgVVNCX0NEQ19OQ01fTlRCMTZfRk9STUFU LAotCQkJCQkgICAgICAgaWZhY2Vfbm8sIE5VTEwsIDApOwotCi0JCQlpZiAoZXJyIDwgMCkKLQkJ CQlnb3RvIGVycm9yMjsKLQkJfQotCX0KLQogCWNkY19uY21fZmluZF9lbmRwb2ludHMoZGV2LCBj dHgtPmRhdGEpOwogCWNkY19uY21fZmluZF9lbmRwb2ludHMoZGV2LCBjdHgtPmNvbnRyb2wpOwog CWlmICghZGV2LT5pbiB8fCAhZGV2LT5vdXQgfHwgIWRldi0+c3RhdHVzKSB7CkBAIC05MjksOSAr OTM0LDE1IEBAIGludCBjZGNfbmNtX2JpbmRfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3Ry dWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHU4IGRhdGFfCiAKIAkvKiBBbGxvY2F0ZSB0aGUgZGVs YXllZCBORFAgaWYgbmVlZGVkLiAqLwogCWlmIChjdHgtPmRydmZsYWdzICYgQ0RDX05DTV9GTEFH X05EUF9UT19FTkQpIHsKLQkJY3R4LT5kZWxheWVkX25kcDE2ID0ga3phbGxvYyhjdHgtPm1heF9u ZHBfc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghY3R4LT5kZWxheWVkX25kcDE2KQotCQkJZ290 byBlcnJvcjI7CisJCWlmIChjdHgtPmlzX25kcDE2KSB7CisJCQljdHgtPmRlbGF5ZWRfbmRwMTYg PSBremFsbG9jKGN0eC0+bWF4X25kcF9zaXplLCBHRlBfS0VSTkVMKTsKKwkJCWlmICghY3R4LT5k ZWxheWVkX25kcDE2KQorCQkJCWdvdG8gZXJyb3IyOworCQl9IGVsc2UgeworCQkJY3R4LT5kZWxh eWVkX25kcDMyID0ga3phbGxvYyhjdHgtPm1heF9uZHBfc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCQlp ZiAoIWN0eC0+ZGVsYXllZF9uZHAzMikKKwkJCQlnb3RvIGVycm9yMjsKKwkJfQogCQlkZXZfaW5m bygmaW50Zi0+ZGV2LCAiTkRQIHdpbGwgYmUgcGxhY2VkIGF0IGVuZCBvZiBmcmFtZSBmb3IgdGhp cyBkZXZpY2UuIik7CiAJfQogCkBAIC0xMDU1LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBjZGNf bmNtX2FsaWduX3RhaWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc2l6ZV90IG1vZHVsdXMsIHNpemVf dCByZW1haQogLyogcmV0dXJuIGEgcG9pbnRlciB0byBhIHZhbGlkIHN0cnVjdCB1c2JfY2RjX25j bV9uZHAxNiBvZiB0eXBlIHNpZ24sIHBvc3NpYmx5CiAgKiBhbGxvY2F0aW5nIGEgbmV3IG9uZSB3 aXRoaW4gc2tiCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKmNkY19uY21f bmRwKHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlMzIg c2lnbiwgc2l6ZV90IHJlc2VydmUpCitzdGF0aWMgc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICpj ZGNfbmNtX25kcDE2KHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBfX2xlMzIgc2lnbiwgc2l6ZV90IHJlc2VydmUpCiB7CiAJc3RydWN0IHVzYl9jZGNfbmNtX25k cDE2ICpuZHAxNiA9IE5VTEw7CiAJc3RydWN0IHVzYl9jZGNfbmNtX250aDE2ICpudGgxNiA9ICh2 b2lkICopc2tiLT5kYXRhOwpAQCAtMTExMCwxMiArMTEyMSw3MyBAQCBzdGF0aWMgc3RydWN0IHVz Yl9jZGNfbmNtX25kcDE2ICpjZGNfbmNtX25kcChzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCwgc3Ry dWN0IHNrXwogCXJldHVybiBuZHAxNjsKIH0KIAorc3RhdGljIHN0cnVjdCB1c2JfY2RjX25jbV9u ZHAzMiAqY2RjX25jbV9uZHAzMihzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCwgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgX19sZTMyIHNpZ24sIHNpemVfdCByZXNlcnZlKQoreworCXN0cnVjdCB1c2JfY2Rj X25jbV9uZHAzMiAqbmRwMzIgPSBOVUxMOworCXN0cnVjdCB1c2JfY2RjX25jbV9udGgzMiAqbnRo MzIgPSAodm9pZCAqKXNrYi0+ZGF0YTsKKwlzaXplX3QgbmRwb2Zmc2V0ID0gbGUzMl90b19jcHUo bnRoMzItPmR3TmRwSW5kZXgpOworCisJLyogSWYgTkRQIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUg ZW5kIG9mIHRoZSBOQ00gcGFja2FnZSwgd2UgY2FuJ3QgZm9sbG93IHRoZQorCSAqIE5USDMyIGhl YWRlciBhcyB3ZSB3b3VsZCBub3JtYWxseSBkby4gTkRQIGlzbid0IHdyaXR0ZW4gdG8gdGhlIFNL QiB5ZXQsIGFuZAorCSAqIHRoZSB3TmRwSW5kZXggZmllbGQgaW4gdGhlIGhlYWRlciBpcyBhY3R1 YWxseSBub3QgY29uc2lzdGVudCB3aXRoIHJlYWxpdHkuIEl0IHdpbGwgYmUgbGF0ZXIuCisJICov CisJaWYgKGN0eC0+ZHJ2ZmxhZ3MgJiBDRENfTkNNX0ZMQUdfTkRQX1RPX0VORCkgeworCQlpZiAo Y3R4LT5kZWxheWVkX25kcDMyLT5kd1NpZ25hdHVyZSA9PSBzaWduKQorCQkJcmV0dXJuIGN0eC0+ ZGVsYXllZF9uZHAzMjsKKworCQkvKiBXZSBjYW4gb25seSBwdXNoIGEgc2luZ2xlIE5EUCB0byB0 aGUgZW5kLiBSZXR1cm4KKwkJICogTlVMTCB0byBzZW5kIHdoYXQgd2UndmUgYWxyZWFkeSBnb3Qg YW5kIHF1ZXVlIHRoaXMKKwkJICogc2tiIGZvciBsYXRlci4KKwkJICovCisJCWVsc2UgaWYgKGN0 eC0+ZGVsYXllZF9uZHAzMi0+ZHdTaWduYXR1cmUpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkv KiBmb2xsb3cgdGhlIGNoYWluIG9mIE5EUHMsIGxvb2tpbmcgZm9yIGEgbWF0Y2ggKi8KKwl3aGls ZSAobmRwb2Zmc2V0KSB7CisJCW5kcDMyID0gKHN0cnVjdCB1c2JfY2RjX25jbV9uZHAzMiAqKShz a2ItPmRhdGEgKyBuZHBvZmZzZXQpOworCQlpZiAgKG5kcDMyLT5kd1NpZ25hdHVyZSA9PSBzaWdu KQorCQkJcmV0dXJuIG5kcDMyOworCQluZHBvZmZzZXQgPSBsZTMyX3RvX2NwdShuZHAzMi0+ZHdO ZXh0TmRwSW5kZXgpOworCX0KKworCS8qIGFsaWduIG5ldyBORFAgKi8KKwlpZiAoIShjdHgtPmRy dmZsYWdzICYgQ0RDX05DTV9GTEFHX05EUF9UT19FTkQpKQorCQljZGNfbmNtX2FsaWduX3RhaWwo c2tiLCBjdHgtPnR4X25kcF9tb2R1bHVzLCAwLCBjdHgtPnR4X2N1cnJfc2l6ZSk7CisKKwkvKiB2 ZXJpZnkgdGhhdCB0aGVyZSBpcyByb29tIGZvciB0aGUgTkRQIGFuZCB0aGUgZGF0YWdyYW0gKHJl c2VydmUpICovCisJaWYgKChjdHgtPnR4X2N1cnJfc2l6ZSAtIHNrYi0+bGVuIC0gcmVzZXJ2ZSkg PCBjdHgtPm1heF9uZHBfc2l6ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBsaW5rIHRvIGl0ICov CisJaWYgKG5kcDMyKQorCQluZHAzMi0+ZHdOZXh0TmRwSW5kZXggPSBjcHVfdG9fbGUzMihza2It Pmxlbik7CisJZWxzZQorCQludGgzMi0+ZHdOZHBJbmRleCA9IGNwdV90b19sZTMyKHNrYi0+bGVu KTsKKworCS8qIHB1c2ggYSBuZXcgZW1wdHkgTkRQICovCisJaWYgKCEoY3R4LT5kcnZmbGFncyAm IENEQ19OQ01fRkxBR19ORFBfVE9fRU5EKSkKKwkJbmRwMzIgPSBza2JfcHV0X3plcm8oc2tiLCBj dHgtPm1heF9uZHBfc2l6ZSk7CisJZWxzZQorCQluZHAzMiA9IGN0eC0+ZGVsYXllZF9uZHAzMjsK KworCW5kcDMyLT5kd1NpZ25hdHVyZSA9IHNpZ247CisJbmRwMzItPndMZW5ndGggPSBjcHVfdG9f bGUxNihzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX25kcDMyKSArIHNpemVvZihzdHJ1Y3QgdXNi X2NkY19uY21fZHBlMzIpKTsKKwlyZXR1cm4gbmRwMzI7Cit9CisKIHN0cnVjdCBza19idWZmICoK IGNkY19uY21fZmlsbF90eF9mcmFtZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZm ICpza2IsIF9fbGUzMiBzaWduKQogewogCXN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4ID0gKHN0cnVj dCBjZGNfbmNtX2N0eCAqKWRldi0+ZGF0YVswXTsKLQlzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYg Km50aDE2OwotCXN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbmRwMTY7CisJdW5pb24geworCQlz dHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYgKm50aDE2OworCQlzdHJ1Y3QgdXNiX2NkY19uY21fbnRo MzIgKm50aDMyOworCX0gbnRoOworCXVuaW9uIHsKKwkJc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2 ICpuZHAxNjsKKwkJc3RydWN0IHVzYl9jZGNfbmNtX25kcDMyICpuZHAzMjsKKwl9IG5kcDsKIAlz dHJ1Y3Qgc2tfYnVmZiAqc2tiX291dDsKIAl1MTYgbiA9IDAsIGluZGV4LCBuZHBsZW47CiAJdTgg cmVhZHkyc2VuZCA9IDA7CkBAIC0xMTc5LDExICsxMjUxLDE5IEBAIGNkY19uY21fZmlsbF90eF9m cmFtZShzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGUzMiBzaWdu KQogCQkJfQogCQkJY3R4LT50eF9sb3dfbWVtX3ZhbC0tOwogCQl9Ci0JCS8qIGZpbGwgb3V0IHRo ZSBpbml0aWFsIDE2LWJpdCBOVEIgaGVhZGVyICovCi0JCW50aDE2ID0gc2tiX3B1dF96ZXJvKHNr Yl9vdXQsIHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYpKTsKLQkJbnRoMTYtPmR3U2ln bmF0dXJlID0gY3B1X3RvX2xlMzIoVVNCX0NEQ19OQ01fTlRIMTZfU0lHTik7Ci0JCW50aDE2LT53 SGVhZGVyTGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9udGgx NikpOwotCQludGgxNi0+d1NlcXVlbmNlID0gY3B1X3RvX2xlMTYoY3R4LT50eF9zZXErKyk7CisJ CWlmIChjdHgtPmlzX25kcDE2KSB7CisJCQkvKiBmaWxsIG91dCB0aGUgaW5pdGlhbCAxNi1iaXQg TlRCIGhlYWRlciAqLworCQkJbnRoLm50aDE2ID0gc2tiX3B1dF96ZXJvKHNrYl9vdXQsIHNpemVv ZihzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYpKTsKKwkJCW50aC5udGgxNi0+ZHdTaWduYXR1cmUg PSBjcHVfdG9fbGUzMihVU0JfQ0RDX05DTV9OVEgxNl9TSUdOKTsKKwkJCW50aC5udGgxNi0+d0hl YWRlckxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMTYp KTsKKwkJCW50aC5udGgxNi0+d1NlcXVlbmNlID0gY3B1X3RvX2xlMTYoY3R4LT50eF9zZXErKyk7 CisJCX0gZWxzZSB7CisJCQkvKiBmaWxsIG91dCB0aGUgaW5pdGlhbCAzMi1iaXQgTlRCIGhlYWRl ciAqLworCQkJbnRoLm50aDMyID0gc2tiX3B1dF96ZXJvKHNrYl9vdXQsIHNpemVvZihzdHJ1Y3Qg dXNiX2NkY19uY21fbnRoMzIpKTsKKwkJCW50aC5udGgzMi0+ZHdTaWduYXR1cmUgPSBjcHVfdG9f bGUzMihVU0JfQ0RDX05DTV9OVEgzMl9TSUdOKTsKKwkJCW50aC5udGgzMi0+d0hlYWRlckxlbmd0 aCA9IGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbnRoMzIpKTsKKwkJCW50 aC5udGgzMi0+d1NlcXVlbmNlID0gY3B1X3RvX2xlMTYoY3R4LT50eF9zZXErKyk7CisJCX0KIAog CQkvKiBjb3VudCB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIGluIHRoaXMgTlRCICovCiAJCWN0eC0+ dHhfY3Vycl9mcmFtZV9udW0gPSAwOwpAQCAtMTIwNSwxMyArMTI4NSwxNyBAQCBjZGNfbmNtX2Zp bGxfdHhfZnJhbWUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xl MzIgc2lnbikKIAkJfQogCiAJCS8qIGdldCB0aGUgYXBwcm9wcmlhdGUgTkRQIGZvciB0aGlzIHNr YiAqLwotCQluZHAxNiA9IGNkY19uY21fbmRwKGN0eCwgc2tiX291dCwgc2lnbiwgc2tiLT5sZW4g KyBjdHgtPnR4X21vZHVsdXMgKyBjdHgtPnR4X3JlbWFpbmRlcik7CisJCWlmIChjdHgtPmlzX25k cDE2KQorCQkJbmRwLm5kcDE2ID0gY2RjX25jbV9uZHAxNihjdHgsIHNrYl9vdXQsIHNpZ24sIHNr Yi0+bGVuICsgY3R4LT50eF9tb2R1bHVzICsgY3R4LT50eF9yZW1haW5kZXIpOworCQllbHNlCisJ CQluZHAubmRwMzIgPSBjZGNfbmNtX25kcDMyKGN0eCwgc2tiX291dCwgc2lnbiwgc2tiLT5sZW4g KyBjdHgtPnR4X21vZHVsdXMgKyBjdHgtPnR4X3JlbWFpbmRlcik7CiAKIAkJLyogYWxpZ24gYmVn aW5uaW5nIG9mIG5leHQgZnJhbWUgKi8KIAkJY2RjX25jbV9hbGlnbl90YWlsKHNrYl9vdXQsICBj dHgtPnR4X21vZHVsdXMsIGN0eC0+dHhfcmVtYWluZGVyLCBjdHgtPnR4X2N1cnJfc2l6ZSk7CiAK IAkJLyogY2hlY2sgaWYgd2UgaGFkIGVub3VnaCByb29tIGxlZnQgZm9yIGJvdGggTkRQIGFuZCBm cmFtZSAqLwotCQlpZiAoIW5kcDE2IHx8IHNrYl9vdXQtPmxlbiArIHNrYi0+bGVuICsgZGVsYXll ZF9uZHBfc2l6ZSA+IGN0eC0+dHhfY3Vycl9zaXplKSB7CisJCWlmICgoY3R4LT5pc19uZHAxNiAm JiAhbmRwLm5kcDE2KSB8fCAoIWN0eC0+aXNfbmRwMTYgJiYgIW5kcC5uZHAzMikgfHwKKwkJICAg IHNrYl9vdXQtPmxlbiArIHNrYi0+bGVuICsgZGVsYXllZF9uZHBfc2l6ZSA+IGN0eC0+dHhfY3Vy cl9zaXplKSB7CiAJCQlpZiAobiA9PSAwKSB7CiAJCQkJLyogd29uJ3QgZml0LCBNVFUgcHJvYmxl bT8gKi8KIAkJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwpAQCAtMTIzMywxMyArMTMxNywyMiBA QCBjZGNfbmNtX2ZpbGxfdHhfZnJhbWUoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBfX2xlMzIgc2lnbikKIAkJfQogCiAJCS8qIGNhbGN1bGF0ZSBmcmFtZSBudW1iZXIg d2l0aGluZyB0aGlzIE5EUCAqLwotCQluZHBsZW4gPSBsZTE2X3RvX2NwdShuZHAxNi0+d0xlbmd0 aCk7Ci0JCWluZGV4ID0gKG5kcGxlbiAtIHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYp KSAvIHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYpIC0gMTsKKwkJaWYgKGN0eC0+aXNf bmRwMTYpIHsKKwkJCW5kcGxlbiA9IGxlMTZfdG9fY3B1KG5kcC5uZHAxNi0+d0xlbmd0aCk7CisJ CQlpbmRleCA9IChuZHBsZW4gLSBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2KSkgLyBz aXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2KSAtIDE7CisKKwkJCS8qIE9LLCBhZGQgdGhp cyBza2IgKi8KKwkJCW5kcC5uZHAxNi0+ZHBlMTZbaW5kZXhdLndEYXRhZ3JhbUxlbmd0aCA9IGNw dV90b19sZTE2KHNrYi0+bGVuKTsKKwkJCW5kcC5uZHAxNi0+ZHBlMTZbaW5kZXhdLndEYXRhZ3Jh bUluZGV4ID0gY3B1X3RvX2xlMTYoc2tiX291dC0+bGVuKTsKKwkJCW5kcC5uZHAxNi0+d0xlbmd0 aCA9IGNwdV90b19sZTE2KG5kcGxlbiArIHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMTYp KTsKKwkJfSBlbHNlIHsKKwkJCW5kcGxlbiA9IGxlMTZfdG9fY3B1KG5kcC5uZHAzMi0+d0xlbmd0 aCk7CisJCQlpbmRleCA9IChuZHBsZW4gLSBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX25kcDMy KSkgLyBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTMyKSAtIDE7CiAKLQkJLyogT0ssIGFk ZCB0aGlzIHNrYiAqLwotCQluZHAxNi0+ZHBlMTZbaW5kZXhdLndEYXRhZ3JhbUxlbmd0aCA9IGNw dV90b19sZTE2KHNrYi0+bGVuKTsKLQkJbmRwMTYtPmRwZTE2W2luZGV4XS53RGF0YWdyYW1JbmRl eCA9IGNwdV90b19sZTE2KHNrYl9vdXQtPmxlbik7Ci0JCW5kcDE2LT53TGVuZ3RoID0gY3B1X3Rv X2xlMTYobmRwbGVuICsgc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9kcGUxNikpOworCQkJbmRw Lm5kcDMyLT5kcGUzMltpbmRleF0uZHdEYXRhZ3JhbUxlbmd0aCA9IGNwdV90b19sZTMyKHNrYi0+ bGVuKTsKKwkJCW5kcC5uZHAzMi0+ZHBlMzJbaW5kZXhdLmR3RGF0YWdyYW1JbmRleCA9IGNwdV90 b19sZTMyKHNrYl9vdXQtPmxlbik7CisJCQluZHAubmRwMzItPndMZW5ndGggPSBjcHVfdG9fbGUx NihuZHBsZW4gKyBzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTMyKSk7CisJCX0KIAkJc2ti X3B1dF9kYXRhKHNrYl9vdXQsIHNrYi0+ZGF0YSwgc2tiLT5sZW4pOwogCQljdHgtPnR4X2N1cnJf ZnJhbWVfcGF5bG9hZCArPSBza2ItPmxlbjsJLyogY291bnQgcmVhbCB0eCBwYXlsb2FkIGRhdGEg Ki8KIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKQEAgLTEyODYsMTMgKzEzNzksMjIgQEAgY2Rj X25jbV9maWxsX3R4X2ZyYW1lKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNr YiwgX19sZTMyIHNpZ24pCiAKIAkvKiBJZiByZXF1ZXN0ZWQsIHB1dCBORFAgYXQgZW5kIG9mIGZy YW1lLiAqLwogCWlmIChjdHgtPmRydmZsYWdzICYgQ0RDX05DTV9GTEFHX05EUF9UT19FTkQpIHsK LQkJbnRoMTYgPSAoc3RydWN0IHVzYl9jZGNfbmNtX250aDE2ICopc2tiX291dC0+ZGF0YTsKLQkJ Y2RjX25jbV9hbGlnbl90YWlsKHNrYl9vdXQsIGN0eC0+dHhfbmRwX21vZHVsdXMsIDAsIGN0eC0+ dHhfY3Vycl9zaXplIC0gY3R4LT5tYXhfbmRwX3NpemUpOwotCQludGgxNi0+d05kcEluZGV4ID0g Y3B1X3RvX2xlMTYoc2tiX291dC0+bGVuKTsKLQkJc2tiX3B1dF9kYXRhKHNrYl9vdXQsIGN0eC0+ ZGVsYXllZF9uZHAxNiwgY3R4LT5tYXhfbmRwX3NpemUpOworCQlpZiAoY3R4LT5pc19uZHAxNikg eworCQkJbnRoLm50aDE2ID0gKHN0cnVjdCB1c2JfY2RjX25jbV9udGgxNiAqKXNrYl9vdXQtPmRh dGE7CisJCQljZGNfbmNtX2FsaWduX3RhaWwoc2tiX291dCwgY3R4LT50eF9uZHBfbW9kdWx1cywg MCwgY3R4LT50eF9jdXJyX3NpemUgLSBjdHgtPm1heF9uZHBfc2l6ZSk7CisJCQludGgubnRoMTYt PndOZHBJbmRleCA9IGNwdV90b19sZTE2KHNrYl9vdXQtPmxlbik7CisJCQlza2JfcHV0X2RhdGEo c2tiX291dCwgY3R4LT5kZWxheWVkX25kcDE2LCBjdHgtPm1heF9uZHBfc2l6ZSk7CisKKwkJCS8q IFplcm8gb3V0IGRlbGF5ZWQgTkRQIC0gc2lnbmF0dXJlIGNoZWNraW5nIHdpbGwgbmF0dXJhbGx5 IGZhaWwuICovCisJCQluZHAubmRwMTYgPSBtZW1zZXQoY3R4LT5kZWxheWVkX25kcDE2LCAwLCBj dHgtPm1heF9uZHBfc2l6ZSk7CisJCX0gZWxzZSB7CisJCQludGgubnRoMzIgPSAoc3RydWN0IHVz Yl9jZGNfbmNtX250aDMyICopc2tiX291dC0+ZGF0YTsKKwkJCWNkY19uY21fYWxpZ25fdGFpbChz a2Jfb3V0LCBjdHgtPnR4X25kcF9tb2R1bHVzLCAwLCBjdHgtPnR4X2N1cnJfc2l6ZSAtIGN0eC0+ bWF4X25kcF9zaXplKTsKKwkJCW50aC5udGgzMi0+ZHdOZHBJbmRleCA9IGNwdV90b19sZTMyKHNr Yl9vdXQtPmxlbik7CisJCQlza2JfcHV0X2RhdGEoc2tiX291dCwgY3R4LT5kZWxheWVkX25kcDMy LCBjdHgtPm1heF9uZHBfc2l6ZSk7CiAKLQkJLyogWmVybyBvdXQgZGVsYXllZCBORFAgLSBzaWdu YXR1cmUgY2hlY2tpbmcgd2lsbCBuYXR1cmFsbHkgZmFpbC4gKi8KLQkJbmRwMTYgPSBtZW1zZXQo Y3R4LT5kZWxheWVkX25kcDE2LCAwLCBjdHgtPm1heF9uZHBfc2l6ZSk7CisJCQluZHAubmRwMzIg PSBtZW1zZXQoY3R4LT5kZWxheWVkX25kcDMyLCAwLCBjdHgtPm1heF9uZHBfc2l6ZSk7CisJCX0K IAl9CiAKIAkvKiBJZiBjb2xsZWN0ZWQgZGF0YSBzaXplIGlzIGxlc3Mgb3IgZXF1YWwgY3R4LT5t aW5fdHhfcGt0CkBAIC0xMzE0LDggKzE0MTYsMTMgQEAgY2RjX25jbV9maWxsX3R4X2ZyYW1lKHN0 cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIHNpZ24pCiAJfQog CiAJLyogc2V0IGZpbmFsIGZyYW1lIGxlbmd0aCAqLwotCW50aDE2ID0gKHN0cnVjdCB1c2JfY2Rj X25jbV9udGgxNiAqKXNrYl9vdXQtPmRhdGE7Ci0JbnRoMTYtPndCbG9ja0xlbmd0aCA9IGNwdV90 b19sZTE2KHNrYl9vdXQtPmxlbik7CisJaWYgKGN0eC0+aXNfbmRwMTYpIHsKKwkJbnRoLm50aDE2 ID0gKHN0cnVjdCB1c2JfY2RjX25jbV9udGgxNiAqKXNrYl9vdXQtPmRhdGE7CisJCW50aC5udGgx Ni0+d0Jsb2NrTGVuZ3RoID0gY3B1X3RvX2xlMTYoc2tiX291dC0+bGVuKTsKKwl9IGVsc2Ugewor CQludGgubnRoMzIgPSAoc3RydWN0IHVzYl9jZGNfbmNtX250aDMyICopc2tiX291dC0+ZGF0YTsK KwkJbnRoLm50aDMyLT5kd0Jsb2NrTGVuZ3RoID0gY3B1X3RvX2xlMzIoc2tiX291dC0+bGVuKTsK Kwl9CiAKIAkvKiByZXR1cm4gc2tiICovCiAJY3R4LT50eF9jdXJyX3NrYiA9IE5VTEw7CkBAIC0x Mzk4LDcgKzE1MDUsMTIgQEAgY2RjX25jbV90eF9maXh1cChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0 cnVjdCBza19idWZmICpza2IsIGdmcF90IGZsYWdzKQogCQlnb3RvIGVycm9yOwogCiAJc3Bpbl9s b2NrX2JoKCZjdHgtPm10eCk7Ci0Jc2tiX291dCA9IGNkY19uY21fZmlsbF90eF9mcmFtZShkZXYs IHNrYiwgY3B1X3RvX2xlMzIoVVNCX0NEQ19OQ01fTkRQMTZfTk9DUkNfU0lHTikpOworCisJaWYg KGN0eC0+aXNfbmRwMTYpCisJCXNrYl9vdXQgPSBjZGNfbmNtX2ZpbGxfdHhfZnJhbWUoZGV2LCBz a2IsIGNwdV90b19sZTMyKFVTQl9DRENfTkNNX05EUDE2X05PQ1JDX1NJR04pKTsKKwllbHNlCisJ CXNrYl9vdXQgPSBjZGNfbmNtX2ZpbGxfdHhfZnJhbWUoZGV2LCBza2IsIGNwdV90b19sZTMyKFVT Ql9DRENfTkNNX05EUDMyX05PQ1JDX1NJR04pKTsKKwogCXNwaW5fdW5sb2NrX2JoKCZjdHgtPm10 eCk7CiAJcmV0dXJuIHNrYl9vdXQ7CiAKQEAgLTE0NTksNiArMTU3MSw1NCBAQCBpbnQgY2RjX25j bV9yeF92ZXJpZnlfbnRoMTYoc3RydWN0IGNkY19uY21fY3R4ICpjdHgsIHN0cnVjdCBza19idWZm ICpza2JfaW4pCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChjZGNfbmNtX3J4X3ZlcmlmeV9udGgxNik7 CiAKK2ludCBjZGNfbmNtX3J4X3ZlcmlmeV9udGgzMihzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCwg c3RydWN0IHNrX2J1ZmYgKnNrYl9pbikKK3sKKwlzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZf cHJpdihza2JfaW4tPmRldik7CisJc3RydWN0IHVzYl9jZGNfbmNtX250aDMyICpudGgzMjsKKwlp bnQgbGVuOworCWludCByZXQgPSAtRUlOVkFMOworCisJaWYgKGN0eCA9PSBOVUxMKQorCQlnb3Rv IGVycm9yOworCisJaWYgKHNrYl9pbi0+bGVuIDwgKHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21f bnRoMzIpICsKKwkJCQkJc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9uZHAzMikpKSB7CisJCW5l dGlmX2RiZyhkZXYsIHJ4X2VyciwgZGV2LT5uZXQsICJmcmFtZSB0b28gc2hvcnRcbiIpOworCQln b3RvIGVycm9yOworCX0KKworCW50aDMyID0gKHN0cnVjdCB1c2JfY2RjX25jbV9udGgzMiAqKXNr Yl9pbi0+ZGF0YTsKKworCWlmIChudGgzMi0+ZHdTaWduYXR1cmUgIT0gY3B1X3RvX2xlMzIoVVNC X0NEQ19OQ01fTlRIMzJfU0lHTikpIHsKKwkJbmV0aWZfZGJnKGRldiwgcnhfZXJyLCBkZXYtPm5l dCwKKwkJCSAgImludmFsaWQgTlRIMzIgc2lnbmF0dXJlIDwlIzAxMHg+XG4iLAorCQkJICBsZTMy X3RvX2NwdShudGgzMi0+ZHdTaWduYXR1cmUpKTsKKwkJZ290byBlcnJvcjsKKwl9CisKKwlsZW4g PSBsZTMyX3RvX2NwdShudGgzMi0+ZHdCbG9ja0xlbmd0aCk7CisJaWYgKGxlbiA+IGN0eC0+cnhf bWF4KSB7CisJCW5ldGlmX2RiZyhkZXYsIHJ4X2VyciwgZGV2LT5uZXQsCisJCQkgICJ1bnN1cHBv cnRlZCBOVEIgYmxvY2sgbGVuZ3RoICV1LyV1XG4iLCBsZW4sCisJCQkgIGN0eC0+cnhfbWF4KTsK KwkJZ290byBlcnJvcjsKKwl9CisKKwlpZiAoKGN0eC0+cnhfc2VxICsgMSkgIT0gbGUxNl90b19j cHUobnRoMzItPndTZXF1ZW5jZSkgJiYKKwkgICAgKGN0eC0+cnhfc2VxIHx8IGxlMTZfdG9fY3B1 KG50aDMyLT53U2VxdWVuY2UpKSAmJgorCSAgICAhKChjdHgtPnJ4X3NlcSA9PSAweGZmZmYpICYm ICFsZTE2X3RvX2NwdShudGgzMi0+d1NlcXVlbmNlKSkpIHsKKwkJbmV0aWZfZGJnKGRldiwgcnhf ZXJyLCBkZXYtPm5ldCwKKwkJCSAgInNlcXVlbmNlIG51bWJlciBnbGl0Y2ggcHJldj0lZCBjdXJy PSVkXG4iLAorCQkJICBjdHgtPnJ4X3NlcSwgbGUxNl90b19jcHUobnRoMzItPndTZXF1ZW5jZSkp OworCX0KKwljdHgtPnJ4X3NlcSA9IGxlMTZfdG9fY3B1KG50aDMyLT53U2VxdWVuY2UpOworCisJ cmV0ID0gbGUzMl90b19jcHUobnRoMzItPmR3TmRwSW5kZXgpOworZXJyb3I6CisJcmV0dXJuIHJl dDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfdmVyaWZ5X250aDMyKTsKKwogLyog dmVyaWZ5IE5EUCBoZWFkZXIgYW5kIHJldHVybiBudW1iZXIgb2YgZGF0YWdyYW1zLCBvciBuZWdh dGl2ZSBlcnJvciAqLwogaW50IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZm ICpza2JfaW4sIGludCBuZHBvZmZzZXQpCiB7CkBAIC0xNDk1LDYgKzE2NTUsNDIgQEAgaW50IGNk Y19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBuZHBvZmZz ZXQpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChjZGNfbmNtX3J4X3ZlcmlmeV9uZHAxNik7CiAKKy8q IHZlcmlmeSBORFAgaGVhZGVyIGFuZCByZXR1cm4gbnVtYmVyIG9mIGRhdGFncmFtcywgb3IgbmVn YXRpdmUgZXJyb3IgKi8KK2ludCBjZGNfbmNtX3J4X3ZlcmlmeV9uZHAzMihzdHJ1Y3Qgc2tfYnVm ZiAqc2tiX2luLCBpbnQgbmRwb2Zmc2V0KQoreworCXN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRl dl9wcml2KHNrYl9pbi0+ZGV2KTsKKwlzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMzIgKm5kcDMyOwor CWludCByZXQgPSAtRUlOVkFMOworCisJaWYgKChuZHBvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHVz Yl9jZGNfbmNtX25kcDMyKSkgPiBza2JfaW4tPmxlbikgeworCQluZXRpZl9kYmcoZGV2LCByeF9l cnIsIGRldi0+bmV0LCAiaW52YWxpZCBORFAgb2Zmc2V0ICA8JXU+XG4iLAorCQkJICBuZHBvZmZz ZXQpOworCQlnb3RvIGVycm9yOworCX0KKwluZHAzMiA9IChzdHJ1Y3QgdXNiX2NkY19uY21fbmRw MzIgKikoc2tiX2luLT5kYXRhICsgbmRwb2Zmc2V0KTsKKworCWlmIChsZTE2X3RvX2NwdShuZHAz Mi0+d0xlbmd0aCkgPCBVU0JfQ0RDX05DTV9ORFAzMl9MRU5HVEhfTUlOKSB7CisJCW5ldGlmX2Ri ZyhkZXYsIHJ4X2VyciwgZGV2LT5uZXQsICJpbnZhbGlkIERQVDMyIGxlbmd0aCA8JXU+XG4iLAor CQkJICBsZTE2X3RvX2NwdShuZHAzMi0+d0xlbmd0aCkpOworCQlnb3RvIGVycm9yOworCX0KKwor CXJldCA9ICgobGUxNl90b19jcHUobmRwMzItPndMZW5ndGgpIC0KKwkJCQkJc2l6ZW9mKHN0cnVj dCB1c2JfY2RjX25jbV9uZHAzMikpIC8KKwkJCQkJc2l6ZW9mKHN0cnVjdCB1c2JfY2RjX25jbV9k cGUzMikpOworCXJldC0tOyAvKiB3ZSBwcm9jZXNzIE5EUCBlbnRyaWVzIGV4Y2VwdCBmb3IgdGhl IGxhc3Qgb25lICovCisKKwlpZiAoKHNpemVvZihzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMzIpICsK KwkgICAgIHJldCAqIChzaXplb2Yoc3RydWN0IHVzYl9jZGNfbmNtX2RwZTMyKSkpID4gc2tiX2lu LT5sZW4pIHsKKwkJbmV0aWZfZGJnKGRldiwgcnhfZXJyLCBkZXYtPm5ldCwgIkludmFsaWQgbmZy YW1lcyA9ICVkXG4iLCByZXQpOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworZXJyb3I6CisJcmV0 dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fcnhfdmVyaWZ5X25kcDMyKTsK KwogaW50IGNkY19uY21fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiX2luKQogewogCXN0cnVjdCBza19idWZmICpza2I7CkBAIC0xNTAzLDM0ICsxNjk5LDY2 IEBAIGludCBjZGNfbmNtX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1 ZmYgKnNrYl9pbikKIAlpbnQgbmZyYW1lczsKIAlpbnQgeDsKIAlpbnQgb2Zmc2V0OwotCXN0cnVj dCB1c2JfY2RjX25jbV9uZHAxNiAqbmRwMTY7Ci0Jc3RydWN0IHVzYl9jZGNfbmNtX2RwZTE2ICpk cGUxNjsKKwl1bmlvbiB7CisJCXN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqbmRwMTY7CisJCXN0 cnVjdCB1c2JfY2RjX25jbV9uZHAzMiAqbmRwMzI7CisJfSBuZHA7CisJdW5pb24geworCQlzdHJ1 Y3QgdXNiX2NkY19uY21fZHBlMTYgKmRwZTE2OworCQlzdHJ1Y3QgdXNiX2NkY19uY21fZHBlMzIg KmRwZTMyOworCX0gZHBlOworCiAJaW50IG5kcG9mZnNldDsKIAlpbnQgbG9vcGNvdW50ID0gNTA7 IC8qIGFyYml0cmFyeSBtYXggcHJldmVudGluZyBpbmZpbml0ZSBsb29wICovCiAJdTMyIHBheWxv YWQgPSAwOwogCi0JbmRwb2Zmc2V0ID0gY2RjX25jbV9yeF92ZXJpZnlfbnRoMTYoY3R4LCBza2Jf aW4pOworCWlmIChjdHgtPmlzX25kcDE2KQorCQluZHBvZmZzZXQgPSBjZGNfbmNtX3J4X3Zlcmlm eV9udGgxNihjdHgsIHNrYl9pbik7CisJZWxzZQorCQluZHBvZmZzZXQgPSBjZGNfbmNtX3J4X3Zl cmlmeV9udGgzMihjdHgsIHNrYl9pbik7CisKIAlpZiAobmRwb2Zmc2V0IDwgMCkKIAkJZ290byBl cnJvcjsKIAogbmV4dF9uZHA6Ci0JbmZyYW1lcyA9IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHNr Yl9pbiwgbmRwb2Zmc2V0KTsKLQlpZiAobmZyYW1lcyA8IDApCi0JCWdvdG8gZXJyb3I7CisJaWYg KGN0eC0+aXNfbmRwMTYpIHsKKwkJbmZyYW1lcyA9IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHNr Yl9pbiwgbmRwb2Zmc2V0KTsKKwkJaWYgKG5mcmFtZXMgPCAwKQorCQkJZ290byBlcnJvcjsKIAot CW5kcDE2ID0gKHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiAqKShza2JfaW4tPmRhdGEgKyBuZHBv ZmZzZXQpOworCQluZHAubmRwMTYgPSAoc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2ICopKHNrYl9p bi0+ZGF0YSArIG5kcG9mZnNldCk7CiAKLQlpZiAobmRwMTYtPmR3U2lnbmF0dXJlICE9IGNwdV90 b19sZTMyKFVTQl9DRENfTkNNX05EUDE2X05PQ1JDX1NJR04pKSB7Ci0JCW5ldGlmX2RiZyhkZXYs IHJ4X2VyciwgZGV2LT5uZXQsCi0JCQkgICJpbnZhbGlkIERQVDE2IHNpZ25hdHVyZSA8JSMwMTB4 PlxuIiwKLQkJCSAgbGUzMl90b19jcHUobmRwMTYtPmR3U2lnbmF0dXJlKSk7Ci0JCWdvdG8gZXJy X25kcDsKKwkJaWYgKG5kcC5uZHAxNi0+ZHdTaWduYXR1cmUgIT0gY3B1X3RvX2xlMzIoVVNCX0NE Q19OQ01fTkRQMTZfTk9DUkNfU0lHTikpIHsKKwkJCW5ldGlmX2RiZyhkZXYsIHJ4X2VyciwgZGV2 LT5uZXQsCisJCQkJICAiaW52YWxpZCBEUFQxNiBzaWduYXR1cmUgPCUjMDEweD5cbiIsCisJCQkJ ICBsZTMyX3RvX2NwdShuZHAubmRwMTYtPmR3U2lnbmF0dXJlKSk7CisJCQlnb3RvIGVycl9uZHA7 CisJCX0KKwkJZHBlLmRwZTE2ID0gbmRwLm5kcDE2LT5kcGUxNjsKKwl9IGVsc2UgeworCQluZnJh bWVzID0gY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc2tiX2luLCBuZHBvZmZzZXQpOworCQlpZiAo bmZyYW1lcyA8IDApCisJCQlnb3RvIGVycm9yOworCisJCW5kcC5uZHAzMiA9IChzdHJ1Y3QgdXNi X2NkY19uY21fbmRwMzIgKikoc2tiX2luLT5kYXRhICsgbmRwb2Zmc2V0KTsKKworCQlpZiAobmRw Lm5kcDMyLT5kd1NpZ25hdHVyZSAhPSBjcHVfdG9fbGUzMihVU0JfQ0RDX05DTV9ORFAzMl9OT0NS Q19TSUdOKSkgeworCQkJbmV0aWZfZGJnKGRldiwgcnhfZXJyLCBkZXYtPm5ldCwKKwkJCQkgICJp bnZhbGlkIERQVDMyIHNpZ25hdHVyZSA8JSMwMTB4PlxuIiwKKwkJCQkgIGxlMzJfdG9fY3B1KG5k cC5uZHAzMi0+ZHdTaWduYXR1cmUpKTsKKwkJCWdvdG8gZXJyX25kcDsKKwkJfQorCQlkcGUuZHBl MzIgPSBuZHAubmRwMzItPmRwZTMyOwogCX0KLQlkcGUxNiA9IG5kcDE2LT5kcGUxNjsKIAotCWZv ciAoeCA9IDA7IHggPCBuZnJhbWVzOyB4KyssIGRwZTE2KyspIHsKLQkJb2Zmc2V0ID0gbGUxNl90 b19jcHUoZHBlMTYtPndEYXRhZ3JhbUluZGV4KTsKLQkJbGVuID0gbGUxNl90b19jcHUoZHBlMTYt PndEYXRhZ3JhbUxlbmd0aCk7CisJZm9yICh4ID0gMDsgeCA8IG5mcmFtZXM7IHgrKykgeworCQlp ZiAoY3R4LT5pc19uZHAxNikgeworCQkJb2Zmc2V0ID0gbGUxNl90b19jcHUoZHBlLmRwZTE2LT53 RGF0YWdyYW1JbmRleCk7CisJCQlsZW4gPSBsZTE2X3RvX2NwdShkcGUuZHBlMTYtPndEYXRhZ3Jh bUxlbmd0aCk7CisJCX0gZWxzZSB7CisJCQlvZmZzZXQgPSBsZTMyX3RvX2NwdShkcGUuZHBlMzIt PmR3RGF0YWdyYW1JbmRleCk7CisJCQlsZW4gPSBsZTMyX3RvX2NwdShkcGUuZHBlMzItPmR3RGF0 YWdyYW1MZW5ndGgpOworCQl9CiAKIAkJLyoKIAkJICogQ0RDIE5DTSBjaC4gMy43CkBAIC0xNTYx LDEwICsxNzg5LDE5IEBAIGludCBjZGNfbmNtX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwg c3RydWN0IHNrX2J1ZmYgKnNrYl9pbikKIAkJCXVzYm5ldF9za2JfcmV0dXJuKGRldiwgc2tiKTsK IAkJCXBheWxvYWQgKz0gbGVuOwkvKiBjb3VudCBwYXlsb2FkIGJ5dGVzIGluIHRoaXMgTlRCICov CiAJCX0KKworCQlpZiAoY3R4LT5pc19uZHAxNikKKwkJCWRwZS5kcGUxNisrOworCQllbHNlCisJ CQlkcGUuZHBlMzIrKzsKIAl9CiBlcnJfbmRwOgogCS8qIGFyZSB0aGVyZSBtb3JlIE5EUHMgdG8g cHJvY2Vzcz8gKi8KLQluZHBvZmZzZXQgPSBsZTE2X3RvX2NwdShuZHAxNi0+d05leHROZHBJbmRl eCk7CisJaWYgKGN0eC0+aXNfbmRwMTYpCisJCW5kcG9mZnNldCA9IGxlMTZfdG9fY3B1KG5kcC5u ZHAxNi0+d05leHROZHBJbmRleCk7CisJZWxzZQorCQluZHBvZmZzZXQgPSBsZTMyX3RvX2NwdShu ZHAubmRwMzItPmR3TmV4dE5kcEluZGV4KTsKKwogCWlmIChuZHBvZmZzZXQgJiYgbG9vcGNvdW50 LS0pCiAJCWdvdG8gbmV4dF9uZHA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9odWF3 ZWlfY2RjX25jbS5jIGIvZHJpdmVycy9uZXQvdXNiL2h1YXdlaV9jZGNfbmNtLmMKaW5kZXggZTE1 YTQ3MmM2YTU0Li4wOTlkODQ4MjcwMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9odWF3 ZWlfY2RjX25jbS5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9odWF3ZWlfY2RjX25jbS5jCkBAIC03 NywxMSArNzcsMTEgQEAgc3RhdGljIGludCBodWF3ZWlfY2RjX25jbV9iaW5kKHN0cnVjdCB1c2Ju ZXQgKnVzYm5ldF9kZXYsCiAJICovCiAJZHJ2ZmxhZ3MgfD0gQ0RDX05DTV9GTEFHX05EUF9UT19F TkQ7CiAKLQkvKiBBZGRpdGlvbmFsbHksIGl0IGhhcyBiZWVuIHJlcG9ydGVkIHRoYXQgc29tZSBI dWF3ZWkgRTMzNzJIIGRldmljZXMsIHdpdGgKLQkgKiBmaXJtd2FyZSB2ZXJzaW9uIDIxLjMxOC4w MS4wMC41NDEsIGNvbWUgb3V0IG9mIHJlc2V0IGluIE5UQjMyIGZvcm1hdCBtb2RlLCBoZW5jZQot CSAqIG5lZWRpbmcgdG8gYmUgc2V0IHRvIHRoZSBOVEIxNiBvbmUgYWdhaW4uCisJLyogRm9yIG1h bnkgSHVhd2VpIGRldmljZXMgdGhlIE5UQjMyIG1vZGUgaXMgdGhlIGRlZmF1bHQgYW5kIHRoZSBi ZXN0IG1vZGUKKwkgKiB0aGV5IHdvcmsgd2l0aC4gSHVhd2VpIEU1Nzg1IGFuZCBFNTg4NSBkZXZp Y2VzIHJlZnVzZSB0byB3b3JrIGluIE5UQjE2IG1vZGUgYXQgYWxsLgogCSAqLwotCWRydmZsYWdz IHw9IENEQ19OQ01fRkxBR19SRVNFVF9OVEIxNjsKKwlkcnZmbGFncyB8PSBDRENfTkNNX0ZMQUdf UFJFRkVSX05UQjMyOworCiAJcmV0ID0gY2RjX25jbV9iaW5kX2NvbW1vbih1c2JuZXRfZGV2LCBp bnRmLCAxLCBkcnZmbGFncyk7CiAJaWYgKHJldCkKIAkJZ290byBlcnI7CmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L3VzYi9jZGNfbmNtLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9jZGNfbmNtLmgK aW5kZXggMTY0NmMwNjk4OWRmLi4wY2U0Mzc3NTQ1ZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvdXNiL2NkY19uY20uaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jZGNfbmNtLmgKQEAgLTQ2 LDkgKzQ2LDEyIEBACiAjZGVmaW5lIENEQ19OQ01fREFUQV9BTFRTRVRUSU5HX05DTQkJMQogI2Rl ZmluZSBDRENfTkNNX0RBVEFfQUxUU0VUVElOR19NQklNCQkyCiAKLS8qIENEQyBOQ00gc3ViY2xh c3MgMy4yLjEgKi8KKy8qIENEQyBOQ00gc3ViY2xhc3MgMy4zLjEgKi8KICNkZWZpbmUgVVNCX0NE Q19OQ01fTkRQMTZfTEVOR1RIX01JTgkJMHgxMAogCisvKiBDREMgTkNNIHN1YmNsYXNzIDMuMy4y ICovCisjZGVmaW5lIFVTQl9DRENfTkNNX05EUDMyX0xFTkdUSF9NSU4JCTB4MjAKKwogLyogTWF4 aW11bSBOVEIgbGVuZ3RoICovCiAjZGVmaW5lCUNEQ19OQ01fTlRCX01BWF9TSVpFX1RYCQkJMzI3 NjgJLyogYnl0ZXMgKi8KICNkZWZpbmUJQ0RDX05DTV9OVEJfTUFYX1NJWkVfUlgJCQkzMjc2OAkv KiBieXRlcyAqLwpAQCAtODQsNyArODcsNyBAQAogLyogRHJpdmVyIGZsYWdzICovCiAjZGVmaW5l IENEQ19OQ01fRkxBR19ORFBfVE9fRU5ECQkJMHgwMgkvKiBORFAgaXMgcGxhY2VkIGF0IGVuZCBv ZiBmcmFtZSAqLwogI2RlZmluZSBDRENfTUJJTV9GTEFHX0FWT0lEX0FMVFNFVFRJTkdfVE9HR0xF CTB4MDQJLyogQXZvaWQgYWx0c2V0dGluZyB0b2dnbGUgZHVyaW5nIGluaXQgKi8KLSNkZWZpbmUg Q0RDX05DTV9GTEFHX1JFU0VUX05UQjE2IDB4MDgJLyogc2V0IE5EUDE2IG9uZSBtb3JlIHRpbWUg YWZ0ZXIgYWx0c2V0dGluZyBzd2l0Y2ggKi8KKyNkZWZpbmUgQ0RDX05DTV9GTEFHX1BSRUZFUl9O VEIzMiAweDA4CS8qIHByZWZlciBORFAzMiBvdmVyIE5EUDE2ICovCiAKICNkZWZpbmUgY2RjX25j bV9jb21tX2ludGZfaXNfbWJpbSh4KSAgKCh4KS0+ZGVzYy5iSW50ZXJmYWNlU3ViQ2xhc3MgPT0g VVNCX0NEQ19TVUJDTEFTU19NQklNICYmIFwKIAkJCQkgICAgICAgKHgpLT5kZXNjLmJJbnRlcmZh Y2VQcm90b2NvbCA9PSBVU0JfQ0RDX1BST1RPX05PTkUpCkBAIC0xMTMsNyArMTE2LDExIEBAIHN0 cnVjdCBjZGNfbmNtX2N0eCB7CiAKIAl1MzIgdGltZXJfaW50ZXJ2YWw7CiAJdTMyIG1heF9uZHBf c2l6ZTsKLQlzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKmRlbGF5ZWRfbmRwMTY7CisJdTggaXNf bmRwMTY7CisJdW5pb24geworCQlzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMTYgKmRlbGF5ZWRfbmRw MTY7CisJCXN0cnVjdCB1c2JfY2RjX25jbV9uZHAzMiAqZGVsYXllZF9uZHAzMjsKKwl9OwogCiAJ dTMyIHR4X3RpbWVyX3BlbmRpbmc7CiAJdTMyIHR4X2N1cnJfZnJhbWVfbnVtOwpAQCAtMTUwLDYg KzE1Nyw4IEBAIHZvaWQgY2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qg dXNiX2ludGVyZmFjZSAqaW50Zik7CiBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX25jbV9maWxsX3R4X2Zy YW1lKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIHNpZ24p OwogaW50IGNkY19uY21fcnhfdmVyaWZ5X250aDE2KHN0cnVjdCBjZGNfbmNtX2N0eCAqY3R4LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKTsKIGludCBjZGNfbmNtX3J4X3ZlcmlmeV9uZHAxNihzdHJ1 Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgbmRwb2Zmc2V0KTsKK2ludCBjZGNfbmNtX3J4X3Zlcmlm eV9udGgzMihzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYl9pbik7 CitpbnQgY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50 IG5kcG9mZnNldCk7CiBzdHJ1Y3Qgc2tfYnVmZiAqCiBjZGNfbmNtX3R4X2ZpeHVwKHN0cnVjdCB1 c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgZ2ZwX3QgZmxhZ3MpOwogaW50IGNkY19u Y21fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luKTsK LS0gCjIuMjUuMQoK --00000000000087786805a0ba26ed--