From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1035711AbdEXUmK (ORCPT ); Wed, 24 May 2017 16:42:10 -0400 Received: from mail-bl2nam02on0042.outbound.protection.outlook.com ([104.47.38.42]:31448 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1032964AbdEXUmF (ORCPT ); Wed, 24 May 2017 16:42:05 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; From: Yazen Ghannam To: CC: Borislav Petkov , Tony Luck , , , Yazen Ghannam Subject: [PATCH 2/3] x86/mce/AMD: Define a list_head for threshold blocks outside the list Date: Wed, 24 May 2017 15:41:46 -0500 Message-ID: <1495658507-7413-2-git-send-email-Yazen.Ghannam@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495658507-7413-1-git-send-email-Yazen.Ghannam@amd.com> References: <1495658507-7413-1-git-send-email-Yazen.Ghannam@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR20CA0046.namprd20.prod.outlook.com (10.171.161.160) To CY4PR1201MB0133.namprd12.prod.outlook.com (10.172.78.15) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR1201MB0133: X-MS-Office365-Filtering-Correlation-Id: a3b80fe1-1a6b-4502-ef4e-08d4a2e55531 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:CY4PR1201MB0133; X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB0133;3:/iU64GDa+16ljQnQpVgMxdEbTCwcCtHa9sdLpFKDkEUWIGuthN/4zePz6okl//oWphWmTEpEqVUaYJ7xABEOvHjtjogkptcos26HaEUSIAO7NJQOM5p5ysHFuvkoBxzIfStSVu5C1cwOj8Cd++yMnCACQEfd7VV5dnBpzCE/eEqorvX7/wmzL02QOuKf8alATETRxwSQiknU1gXI6yRd9PPpOioL37pOoHhk1rG2JRzZUO5iPLIgo0TzkRjDHCQ7ea1mvh1X4g5p2YgLOFk4PIsJoLSR9dGU2y6oHAcdYNp3lwqF1UXYxGz4Pjl7AxY3uzsM1bYCcgXEPnMvkN6ycxl96o6bx/3gtC5y7/Xa13M=;25:V1NLP+Qt6eE84KLGyQYz1LQA/sACEFu/kB21+R99mvvsUgMo/M/VcKpiU6mJKt6E9lkKlpMjIV5b+dzwUlcN0rjGvQAVmriuVbN4WWj4DIQFErQAv3dwywQMKKb2ZF5TLrM3aRyj0j5ja6cwUg1tPSOHGmslXefC2oP8XdONaXPP8ne+wR6FaJY0VVT9oEQDSeA47agIpMAiwlM1swalDTIK5Q5UxdF+rpIoVP4557vu2UAtevjZST1A5BPaIe92t6w4eX1xavLmrj5lT2slPqfVPphreIQVa/pfX4N4o5RtlnYD1LGNyMEiW0CkdEB/kqkoqf/BCUwfbIGbVoNbrgioZQh8KwW6/GkzbnyHmjAOFXArn7TLDrCGxbYmoIPorfOCQsP5J//DgVmE2PLSwmDFp18p9X/Wlr++LwT3ihEi1rGpjHQKtGxJ5vC1o29f2RqAmEJUNJV4MOe09MoVuTiLhZKZYSfs6auRkXUSKx0= X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB0133;31:ci7iXqeep1qySWYBP0B2ikvFEkA3fIpB9SNLCoiWu/CNGbBaKhlRvdM+Ry7jI2WEDuu0RXk3nMmZs/U7IlJ6KGUcovQwj7cXSqqhFpqYR+iFEfWkbG/9gtWLQEif3lM3yMQ2RgsRjippcSyDwhLD8hNIhV8hpIhkYDrwggYy5NkooZHIl18tcu2tZmlf+pd7bv6FpLDqiFFKBX5fXOHgLRqvMkK3rrVwoWEn0E5l0/w=;20:WHtjH43v1pItHEzEL0NsKo8eif3OzM1RMJ0Gj7BHItgZ9sOfD5+lMWVSI+gSrGEwpX53S5/063FWksIbBMPKcBtlMHIDbyORhypkhJU2isLuPCHT9yp1no3xD0agXnL8PU26Id/hN0g2GfZ4CG9FjT5GkViloM/Ccpx+OAiiV7z6TCUCFTPHK9yYD+Afq9eesw0AbgNSeUnhH11jk2LYs/vyOFImWH2Z/IGjUP+jP3JyWdWU1S17cVebBKy980MP1UVLafzUJnH3JUHYTS+nZc3DmoripWNwkMb9gMzfe4DzAX+miREHQtul1o+CgYjtzdnsK7yqM76Kn50SNq8w9t5XyaJMWNB6kgj+d4DFW5j6HmhiL6Mwxn4y6GizoRZNE5Ul+GENCQmDWFf6FNWRX1GUE+v8FCngkNv22Avbb3wR48ODTRuhbqXROmuQ3QGTYVuyKCROPFKyPnOjj0u3B9iOcrS5duKqiqaA2gpDCjzmEmKBHDD/wLDnlHxqi1TN X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041248)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123562025)(6072148);SRVR:CY4PR1201MB0133;BCL:0;PCL:0;RULEID:;SRVR:CY4PR1201MB0133; X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB0133;4:wH48kZTBdadFlmZqNm/f+Tuq6Bmg30is+5Lv8CT380E4DjHf0XiYPnrn9GbgCEqa0pCxUwi5LoPEM00tKByzFPszHIEYByz7yB9CG6sqTBpzSo4e70g6IPHorfw2LUNUxV/2cobnsqOEx+On2MOJ24qz481H2HB1T5aPcrSbga6WlVRJ0lZjKjEsu1MtT2cUVeLDSK4TvkFygIJPIqZQWn7zwUEubHhz8lxfBu/I8qVaacuzTXvBKT19i5peg365CtAmFas7eWkoclFSsNSzbERUrpTylymFmYvcpdeEQEuuogUhGYIDJo5BAV0A6ozCS2Jv5wutBKcnK9K11n0Bb6ltxdb/3pVC3afGUJ7q8/fASN66TQ+e3BxwtJU+UykZmTdQypU2iE9stxtrhuwrsokY86VWVeRcfvXc4PybCJUbLsDv5GuzV0k5f3WV4DtY5yQCrGxCOFvnysBz+6q8BOwg3syuQKSNg1HAGOX3ZV8P1RYNxy9vZYdLXbk15s3som99CfItK+DyxB5nL8ngelJgDzt/Lc1z7tBWvz/unXSQXtJrkxqvPnyEECIOcTjUUmb82U4qIhBKLXzNp1ojH+QyNR9p3RARealpOOgK7fG3U0Y9ddHre1pkB+eWFqsHYYfnS4+8fpcpizMHJ+KpNsQm8uuvJQGrsVZSV0/LgpA+0iLbYTULem0geP3EWz38KinMOe1pkMhtj6THlB9jcpeGeu4SVbjNJ7Ixqq/YRgLjIwyT2lBmWxSXuCbQGwfm/rIy6O5MC3HRicW4ZFHWnGyQ9z8mHz19YmID7y7FaaBByzy4UCket0d1EOPThTo7EkLChY50XwV6PeOmwPbSgg== X-Forefront-PRVS: 031763BCAF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39410400002)(39860400002)(39840400002)(39450400003)(42186005)(72206003)(6116002)(53416004)(54906002)(2950100002)(3846002)(50986999)(76176999)(6916009)(305945005)(2351001)(86362001)(7736002)(6486002)(5003940100001)(53936002)(25786009)(110136004)(38730400002)(47776003)(2906002)(50226002)(8676002)(81166006)(478600001)(66066001)(189998001)(4326008)(50466002)(5660300001)(36756003)(6666003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR1201MB0133;H:yaz-diesel.amd.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR1201MB0133;23:66HBUfVj4AzkYGLBmwOnjvUrMpf+o6Q0o0mFMcb?= =?us-ascii?Q?EoNqQ9oovckL39bjnUdTIxKHvt9dteXU9F5tMkFh0sxfwf39pJaDwQnCUbbS?= =?us-ascii?Q?ZdRRrmQyejCP8bgEDUI6bD5C2UfFNEyxsuDlaVkYK9sovoY0Fh+Mg9wFYSll?= =?us-ascii?Q?2L+VKbHlfFgTQM9/DYfg8loK7KErm6QVRReE76ix8AkydgHdoVE+4k0ED+kk?= =?us-ascii?Q?7MC0KXrDbaZwHTn6CvkNHLbzaKsfzQtRhMz8gjOvNsg5eGfAecf60i0bifM6?= =?us-ascii?Q?drQfaj3kz6FVhG7nfYB7gchPl/ORC/pOvZWGyz6TxQskVJcBNrUDs7aWjDkM?= =?us-ascii?Q?3bQpVguD6i3RfO7rPepfLkUimGRu8Mo3AwfVmWb+7h6AJF5Kyr44+WTfQlf4?= =?us-ascii?Q?iZ6IZrwXkvXhz5cyYNC0d6+8qzr7Aj3voONd22eNxCx/vhKumVEnRoPAPwes?= =?us-ascii?Q?a7GHdmOPNIN3oAPJouWSdsxch3ZVLtF2wV+izIEk55f+Ss2qEgVI4wrN+UGZ?= =?us-ascii?Q?cgjKLNyFPBG9x15gBol522o9g0BKW7O+VlXMwENI8opAqqC4LjbeeFaDxixA?= =?us-ascii?Q?OySDURYgwIB9NwNL3xefxOLvQW7JT7zfxvIhNQPXb0UUd2ZvbCFKLQx/lY2r?= =?us-ascii?Q?+IDDKKK88DQVdMTIXA1+ZclEWrHew2XLImXW/yOY9bBgo9UkmDJLWARjGH3j?= =?us-ascii?Q?KTwzmkRfwxqUsm5MVDCUJkrL7m0+7S8r1krEyS7ti+/NVkIRJKT6FhyF8Irt?= =?us-ascii?Q?jaDHekRlwWgz5YFp7X5CyTpi2u8VCaRT12ETlgxDsByNE2eDLapEKb0lZu8Z?= =?us-ascii?Q?SbbJPrKXa3lynWc8aqvjA3SmbMJwjrvlIBZyQY2lOBtXpPWV2LeLOJAm7r+R?= =?us-ascii?Q?rVIsyv3hB029uOhMwGGG9c9FajNMP6BkEpJ6TDQez4il0/f3wtwgbLRK4P/R?= =?us-ascii?Q?XeEIUsbAB7BEdSMQWU+IFuXLaEsQA0cCXqNThdS4Wym+rWa27o+Y/sOMWMl1?= =?us-ascii?Q?n/NoEeuu7fp8FNsMZoyAsxV9q3IKN30oZqerncymZCgYT3L4XqjzeOn96ROD?= =?us-ascii?Q?jT1nEhcE=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB0133;6:AEZHt9He1qihpPG1C8/Vh6msPw/zLy50b+2wnX4QYX6HHKqBc9zqtSdFpBRWtM3TbQrURzDwtZ8iklgzrHY4AFjl3loiLD7XDaHFIQDzgUyMNgK1hpNpzPLST7mrNBPR96kP1ZML20omwFwbbIm/rddHrX3153rxjIhZZ5kjFfzbCX+UP38uVpHh8pFIYvwuPpVtZpJJkl7reoF/nbVlvYWuFRC8TAZs5p1UigOch6lFUVbiOnMIb4es250Wb1IRxfcHMY9vfMN7s9vFD946tTkfkJAHY8wHJg1DusKj7lGMcZHSaiJOV3DBjAS8zB/zXdsu1GcvGTv9GBjdeGDfEr+k8sdHsc9+NsKkaps5xZJo7rhSZu8dBikNS/1zhrkzZBBD9vdA/s4o7yJJ+HBGgQp/ieP0okXGDmpaDA1tq9wwDyhaPIGa0C3y1ShEklZ3fzQrF5rGZGdY7vVBNqJTrtqxsigcd4/diJL6+nxrbKgt0H1oXGOeAd0AoZM6CPBMRrEPhczJ8pmFU+7kUZkZSEf2obwNsHo8dtWtpbMdSg4=;5:Qy8iaekSH0NBMzY9rtn0UnMkxqqvQS+jdjHG5wR4m6m09veLoQu1KWAW8YVRFxH3V6S10A6ImlDTwxfBxiWzLiN3zXK0yn363OF7GKlgw1/YzpjqA2JwGwnMXd0Pk1p12qglhyP+yig5/uMKFWWTQUSgoSUuzrY3iMFEtLQ1xs8=;24:OZ+sogVYe3VNgijMlSnoBrIoUUzYWC5U46wAxqdbLgALIXbv9DRhxxdv936Wvrq22gZlcTxtWTlt2MbUD/u5w0rWs+mDrwdTajxhjaIhl7c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR1201MB0133;7:UdLC7zvbXY7ZilQ/zP2y3SZNRfVx2Udqn+IGuOGxZiCMDsxebQkjIbyEbLMMWm66uY6qK+cK/6gEtEFgIkyD9UUA8kihlW1eiFu67iHwJXMqjD6Ckar+WfnTQV/N7O4ds1JtHA98Cwuz9ZpX+dKs5Jes854pYHo5PkWCrQIWtm6HZ74ddJaoJ5Fpd3k+imVb2DR9ooMDOt6KWoZMlwa/qYCH7o3mZ4ePAElA1HRmHBvYiaHz1/Nspj7Pj/9roAKAaxN4d446VBwqIhPpS+bvOZMw3C+nYYkGAjhFc9eteoohZT+OnrOfiI8DOdFgZKyD0MYr6sfd6ThYTBWqQoAk5Q==;20:i3YDo2hykJDhuq4cuufyMnzY4jxuVIb2gaiE0ttfdw+zDaxZoYGlOYccEwAOtQP30hQD5yl6AO3iDzWwsNKwtyZ/lqSk+CPitEpLOZarbOcO3bMAsZ6PdxYwaO+CMcpPGUwlOSDvo67PJQXt0KpHZevIyLkMmt+aAxGZVVooHijCVzb/+bWaMWfcHdnZvEPxNtuQrr/sUpioQi8dt6CPqTGRwXMLTNSywlDN295p5vW8scH6XRqiXapmD1EjnW2G X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2017 20:42:02.3055 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1201MB0133 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yazen Ghannam There needs to be a list_head outside of a linked list in order to iterate over it and have access to all its elements. This is because the list_for_each* macros iterate starting from head->next rather than head. Define a list_head for the threshold blocks list in struct threshold_bank since this is the container of the list. Use this list_head as the head instead of the first element in the blocks list. This is needed in a future patch where we read the blocks list in the threshold interrupt handler. Currently, we'll always skip block 0 since it is the head of the list. Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_nb.h | 2 ++ arch/x86/kernel/cpu/mcheck/mce_amd.c | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index da181ad..81334b4 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -55,6 +55,8 @@ struct threshold_bank { struct kobject *kobj; struct threshold_block *blocks; + struct list_head blocks_head; + /* initialized to the number of CPUs on the node sharing this bank */ refcount_t cpus; }; diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index d11f94e..2074b870 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c @@ -1119,15 +1119,15 @@ static int allocate_threshold_blocks(unsigned int cpu, unsigned int bank, threshold_ktype.default_attrs[2] = NULL; } - INIT_LIST_HEAD(&b->miscj); - - if (per_cpu(threshold_banks, cpu)[bank]->blocks) { - list_add(&b->miscj, - &per_cpu(threshold_banks, cpu)[bank]->blocks->miscj); - } else { + if (!per_cpu(threshold_banks, cpu)[bank]->blocks) { + INIT_LIST_HEAD(&per_cpu(threshold_banks, cpu)[bank]->blocks_head); per_cpu(threshold_banks, cpu)[bank]->blocks = b; } + INIT_LIST_HEAD(&b->miscj); + + list_add(&b->miscj, &per_cpu(threshold_banks, cpu)[bank]->blocks_head); + err = kobject_init_and_add(&b->kobj, &threshold_ktype, per_cpu(threshold_banks, cpu)[bank]->kobj, get_name(bank, b)); @@ -1158,7 +1158,7 @@ static int allocate_threshold_blocks(unsigned int cpu, unsigned int bank, static int __threshold_add_blocks(struct threshold_bank *b) { - struct list_head *head = &b->blocks->miscj; + struct list_head *head = &b->blocks_head; struct threshold_block *pos = NULL; struct threshold_block *tmp = NULL; int err = 0; @@ -1256,7 +1256,7 @@ static void deallocate_threshold_block(unsigned int cpu, if (!head) return; - list_for_each_entry_safe(pos, tmp, &head->blocks->miscj, miscj) { + list_for_each_entry_safe(pos, tmp, &head->blocks_head, miscj) { kobject_put(&pos->kobj); list_del(&pos->miscj); kfree(pos); @@ -1273,7 +1273,7 @@ static void __threshold_remove_blocks(struct threshold_bank *b) kobject_del(b->kobj); - list_for_each_entry_safe(pos, tmp, &b->blocks->miscj, miscj) + list_for_each_entry_safe(pos, tmp, &b->blocks_head, miscj) kobject_del(&pos->kobj); } @@ -1307,6 +1307,7 @@ static void threshold_remove_bank(unsigned int cpu, int bank) deallocate_threshold_block(cpu, bank); free_out: + list_del(&b->blocks_head); kobject_del(b->kobj); kobject_put(b->kobj); kfree(b); -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [2/3] x86/mce/AMD: Define a list_head for threshold blocks outside the list From: Yazen Ghannam Message-Id: <1495658507-7413-2-git-send-email-Yazen.Ghannam@amd.com> Date: Wed, 24 May 2017 15:41:46 -0500 To: linux-edac@vger.kernel.org Cc: Borislav Petkov , Tony Luck , x86@kernel.org, linux-kernel@vger.kernel.org, Yazen Ghannam List-ID: RnJvbTogWWF6ZW4gR2hhbm5hbSA8eWF6ZW4uZ2hhbm5hbUBhbWQuY29tPgoKVGhlcmUgbmVlZHMg dG8gYmUgYSBsaXN0X2hlYWQgb3V0c2lkZSBvZiBhIGxpbmtlZCBsaXN0IGluIG9yZGVyIHRvIGl0 ZXJhdGUKb3ZlciBpdCBhbmQgaGF2ZSBhY2Nlc3MgdG8gYWxsIGl0cyBlbGVtZW50cy4gVGhpcyBp cyBiZWNhdXNlIHRoZQpsaXN0X2Zvcl9lYWNoKiBtYWNyb3MgaXRlcmF0ZSBzdGFydGluZyBmcm9t IGhlYWQtPm5leHQgcmF0aGVyIHRoYW4gaGVhZC4KCkRlZmluZSBhIGxpc3RfaGVhZCBmb3IgdGhl IHRocmVzaG9sZCBibG9ja3MgbGlzdCBpbiBzdHJ1Y3QgdGhyZXNob2xkX2JhbmsKc2luY2UgdGhp cyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBsaXN0LiBVc2UgdGhpcyBsaXN0X2hlYWQgYXMgdGhl IGhlYWQKaW5zdGVhZCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgYmxvY2tzIGxpc3QuCgpU aGlzIGlzIG5lZWRlZCBpbiBhIGZ1dHVyZSBwYXRjaCB3aGVyZSB3ZSByZWFkIHRoZSBibG9ja3Mg bGlzdCBpbiB0aGUKdGhyZXNob2xkIGludGVycnVwdCBoYW5kbGVyLiBDdXJyZW50bHksIHdlJ2xs IGFsd2F5cyBza2lwIGJsb2NrIDAgc2luY2UgaXQKaXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QuCgpT aWduZWQtb2ZmLWJ5OiBZYXplbiBHaGFubmFtIDx5YXplbi5naGFubmFtQGFtZC5jb20+Ci0tLQog YXJjaC94ODYvaW5jbHVkZS9hc20vYW1kX25iLmggICAgICAgIHwgIDIgKysKIGFyY2gveDg2L2tl cm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYyB8IDE5ICsrKysrKysrKystLS0tLS0tLS0KIDIgZmls ZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hbWRfbmIuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Ft ZF9uYi5oCmluZGV4IGRhMTgxYWQuLjgxMzM0YjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2FtZF9uYi5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FtZF9uYi5oCkBAIC01 NSw2ICs1NSw4IEBAIHN0cnVjdCB0aHJlc2hvbGRfYmFuayB7CiAJc3RydWN0IGtvYmplY3QJCSpr b2JqOwogCXN0cnVjdCB0aHJlc2hvbGRfYmxvY2sJKmJsb2NrczsKIAorCXN0cnVjdCBsaXN0X2hl YWQJYmxvY2tzX2hlYWQ7CisKIAkvKiBpbml0aWFsaXplZCB0byB0aGUgbnVtYmVyIG9mIENQVXMg b24gdGhlIG5vZGUgc2hhcmluZyB0aGlzIGJhbmsgKi8KIAlyZWZjb3VudF90CQljcHVzOwogfTsK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYyBiL2FyY2gv eDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYwppbmRleCBkMTFmOTRlLi4yMDc0Yjg3MCAx MDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svbWNlX2FtZC5jCisrKyBiL2Fy Y2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYwpAQCAtMTExOSwxNSArMTExOSwxNSBA QCBzdGF0aWMgaW50IGFsbG9jYXRlX3RocmVzaG9sZF9ibG9ja3ModW5zaWduZWQgaW50IGNwdSwg dW5zaWduZWQgaW50IGJhbmssCiAJCXRocmVzaG9sZF9rdHlwZS5kZWZhdWx0X2F0dHJzWzJdID0g TlVMTDsKIAl9CiAKLQlJTklUX0xJU1RfSEVBRCgmYi0+bWlzY2opOwotCi0JaWYgKHBlcl9jcHUo dGhyZXNob2xkX2JhbmtzLCBjcHUpW2JhbmtdLT5ibG9ja3MpIHsKLQkJbGlzdF9hZGQoJmItPm1p c2NqLAotCQkJICZwZXJfY3B1KHRocmVzaG9sZF9iYW5rcywgY3B1KVtiYW5rXS0+YmxvY2tzLT5t aXNjaik7Ci0JfSBlbHNlIHsKKwlpZiAoIXBlcl9jcHUodGhyZXNob2xkX2JhbmtzLCBjcHUpW2Jh bmtdLT5ibG9ja3MpIHsKKwkJSU5JVF9MSVNUX0hFQUQoJnBlcl9jcHUodGhyZXNob2xkX2Jhbmtz LCBjcHUpW2JhbmtdLT5ibG9ja3NfaGVhZCk7CiAJCXBlcl9jcHUodGhyZXNob2xkX2JhbmtzLCBj cHUpW2JhbmtdLT5ibG9ja3MgPSBiOwogCX0KIAorCUlOSVRfTElTVF9IRUFEKCZiLT5taXNjaik7 CisKKwlsaXN0X2FkZCgmYi0+bWlzY2osICZwZXJfY3B1KHRocmVzaG9sZF9iYW5rcywgY3B1KVti YW5rXS0+YmxvY2tzX2hlYWQpOworCiAJZXJyID0ga29iamVjdF9pbml0X2FuZF9hZGQoJmItPmtv YmosICZ0aHJlc2hvbGRfa3R5cGUsCiAJCQkJICAgcGVyX2NwdSh0aHJlc2hvbGRfYmFua3MsIGNw dSlbYmFua10tPmtvYmosCiAJCQkJICAgZ2V0X25hbWUoYmFuaywgYikpOwpAQCAtMTE1OCw3ICsx MTU4LDcgQEAgc3RhdGljIGludCBhbGxvY2F0ZV90aHJlc2hvbGRfYmxvY2tzKHVuc2lnbmVkIGlu dCBjcHUsIHVuc2lnbmVkIGludCBiYW5rLAogCiBzdGF0aWMgaW50IF9fdGhyZXNob2xkX2FkZF9i bG9ja3Moc3RydWN0IHRocmVzaG9sZF9iYW5rICpiKQogewotCXN0cnVjdCBsaXN0X2hlYWQgKmhl YWQgPSAmYi0+YmxvY2tzLT5taXNjajsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJmItPmJs b2Nrc19oZWFkOwogCXN0cnVjdCB0aHJlc2hvbGRfYmxvY2sgKnBvcyA9IE5VTEw7CiAJc3RydWN0 IHRocmVzaG9sZF9ibG9jayAqdG1wID0gTlVMTDsKIAlpbnQgZXJyID0gMDsKQEAgLTEyNTYsNyAr MTI1Niw3IEBAIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfdGhyZXNob2xkX2Jsb2NrKHVuc2lnbmVk IGludCBjcHUsCiAJaWYgKCFoZWFkKQogCQlyZXR1cm47CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUocG9zLCB0bXAsICZoZWFkLT5ibG9ja3MtPm1pc2NqLCBtaXNjaikgeworCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJmhlYWQtPmJsb2Nrc19oZWFkLCBtaXNjaikgewog CQlrb2JqZWN0X3B1dCgmcG9zLT5rb2JqKTsKIAkJbGlzdF9kZWwoJnBvcy0+bWlzY2opOwogCQlr ZnJlZShwb3MpOwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgc3RhdGljIHZvaWQgX190aHJlc2hvbGRf cmVtb3ZlX2Jsb2NrcyhzdHJ1Y3QgdGhyZXNob2xkX2JhbmsgKmIpCiAKIAlrb2JqZWN0X2RlbChi LT5rb2JqKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJmItPmJsb2Nr cy0+bWlzY2osIG1pc2NqKQorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIHRtcCwgJmIt PmJsb2Nrc19oZWFkLCBtaXNjaikKIAkJa29iamVjdF9kZWwoJnBvcy0+a29iaik7CiB9CiAKQEAg LTEzMDcsNiArMTMwNyw3IEBAIHN0YXRpYyB2b2lkIHRocmVzaG9sZF9yZW1vdmVfYmFuayh1bnNp Z25lZCBpbnQgY3B1LCBpbnQgYmFuaykKIAlkZWFsbG9jYXRlX3RocmVzaG9sZF9ibG9jayhjcHUs IGJhbmspOwogCiBmcmVlX291dDoKKwlsaXN0X2RlbCgmYi0+YmxvY2tzX2hlYWQpOwogCWtvYmpl Y3RfZGVsKGItPmtvYmopOwogCWtvYmplY3RfcHV0KGItPmtvYmopOwogCWtmcmVlKGIpOwo=