From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754211AbcITNJk (ORCPT ); Tue, 20 Sep 2016 09:09:40 -0400 Received: from mail-cys01nam02on0082.outbound.protection.outlook.com ([104.47.37.82]:6080 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753528AbcITNJe (ORCPT ); Tue, 20 Sep 2016 09:09:34 -0400 X-Greylist: delayed 3656 seconds by postgrey-1.27 at vger.kernel.org; Tue, 20 Sep 2016 09:09:34 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Robert.Richter@cavium.com; From: Robert Richter To: Thomas Gleixner , Jason Cooper , Marc Zyngier CC: David Daney , Mark Rutland , , Robert Richter , Subject: [PATCH] irqchip, gicv3: Fix out-of-range cpumask access reported by cpumask_check() Date: Tue, 20 Sep 2016 13:34:19 +0200 Message-ID: <1474371259-18783-1-git-send-email-rrichter@cavium.com> X-Mailer: git-send-email 2.7.0.rc3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [92.229.83.73] X-ClientProxiedBy: DB5PR10CA0008.EURPRD10.PROD.OUTLOOK.COM (10.165.4.146) To CY1PR07MB2348.namprd07.prod.outlook.com (10.166.194.147) X-MS-Office365-Filtering-Correlation-Id: 4a9c87e5-925e-45be-86e3-08d3e14a2460 X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2348;2:HJnQfKlnn4f+dgco1yzbNwoXe3MkOqs0fkdt4QpgC4c4gitSQU1ZBtXIotQOF1sXYZOK8caiidtMyYAxZGm9fi75sCrYN2jzyHhB2tUBCfDeJHrHy6mB7IdGgTTdQiQQ/omaBx5Mf2dhrtSNCqAJoqkVgtIjO3A/GNeKixnCuyuNen0ib5vOidGeLsMg9a8v;3:HGojIZQ2WyS/gHTV7FsDDmzD1I5yc5KY/+jK0coR94RkcB0nXBiA7bpvu7KIKUdLssRs8iwdpa/twt4jSPDrXrCACdXDL9hZidrmjfLnsqXH2q6BZzcLnGfFca0MTOBw;25:rH1+AWdwCsSEd0srhQe2ZV5MFW/J7egzk9aEOV/c1vqAt5LnKifwxETBMtn502BcYtyGs//A/4LVsjiBDDIS0raeQk1xaXZDSZXuFSll8XTOzQ3n2jf5Lx8SfMyuGnnf8LVe9v0GEBuOS1yh95GdLkUt0duDdqyIuI7ceUb7Cs7Ot8n4pJc5Y1OCn7E0bX4bdfAVTAhRBOjAU18aKi4GDBkKbje99ZYCv2hCTjVvHwERwYB1ZYmtmMlVqNnN3LmRfqiym5FRf3BxJzBWd9xlqqYE/S1vSr6qM122DI7tH9xkJpFMmAG/pR1XrkIgyNd1N8CnYYRTlwBiWbmaU69U0+AZEdw1l8xmZuCUbiqAABqWZwZwv0YmLcJiJPBpdLG4YletjJ0bfwiqTU+sRbpFhhBm5GOujhwhv9XLhyclELU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2348; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2348;31:Drm+vZU+T8rvpGRIwSY8KbCZDUG4c9mOi/XpLd6eX5uKSzxDHI9FXee0pXWfDn0Km60lhDWTHLH5bLc7yhXR6e9ITMTOp0UivY/yyI5XX6Zj22m3dCWD6SpIRNcqldhQdmBfnLJh5Z2pswR9P3/mL6N5KrKbZqYCnB+2n2UjTPRsZ4e5wQKG836TkKmVutk8rK5cFkeuLGWQsLRHZLWnYnwlM2j5w/dpRTadw2vnxZI=;20:Z1jp8fakvVGc0p7uMHMLfXf+TzjhZOsyRX+LgcbsD8tw14BI39CoMJbwBZ5xbNWmnlzA47OPK4IU3nJ5r2eLl2TBC8pvYuKRfAUmPPWY+bue7P3TssYR6MiQyskXxf+C/NquODsdzCnhHfNe1paPxrEG6qPB1nwrlex4vvTZs6Uqbgf+ucZO27PoTaeDQ+5FY+bsit4bwkYenxI4b5KmuMeo2NhBzASJtAqUGw/aWGo3+56rFUv9JBFfqYwOtnMZ8GyQLqb4iyM4CPByrFhT9k9es9otYOZO0kErcek1kvvcZGcV49upOg6RxflzBxMwmliJbCi4wyYAP+HG2XkTLRrlsk5SL+InmLOOLuChTSZd1igkzfsmmxF2aUa+2dIeohPIqfM+W806vfub7hcYNvdwZP1uyfb/708DO0NFcTy+WhRJejDtlAByqr4sojCUhevZrmUi4Croa9WqbUKLjLVcn5glQovQtgbuXpAurZ8T5zCnsP9lUtnoX4rF/3fq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:CY1PR07MB2348;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2348; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2348;4:aqFPnvkDMWRlLZ3IO52k2/br9GBIz2pQj7oxIlQUhLtwVgcRUtcWE+yYmHgQdJXW1j7Gwwhd4cqQs1mX5vH6v8PC8KF1A/CEPOt5L2bwFRTJMh0BsuNxr+tdNWmy6BvBQu+onzMSOwZ6mPwFK9SUZbF/jrXZi+9KTKXqHgKgmWMtx5aSka6U5grggGBlxqIM/EYdS97ykJ8b11Aii22tAq1zNtbxYC2IXRRDZ8NX18CGOvy32gyG+o2lxQQQgvJD1DTBzS01fxTQRFohxqkA8Q+WqtzjrEtkWNF2gaZCTnhNJOVkPRA9/xn06Qs1RPFMGjn32ypzPW1sQxQvEB97H+6AbNammzLyl5GuWCtk5HLKYvhcprP5x0rNFLu9keXZ5lhpHg8zObLcEGrdTqBSDw== X-Forefront-PRVS: 0071BFA85B X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(189998001)(8676002)(3846002)(50466002)(575784001)(92566002)(4326007)(97736004)(33646002)(48376002)(50226002)(66066001)(7736002)(68736007)(5001770100001)(36756003)(2906002)(81166006)(230783001)(50986999)(81156014)(101416001)(305945005)(5660300001)(42186005)(47776003)(5003940100001)(7846002)(77096005)(6116002)(105586002)(586003)(19580395003)(19580405001)(106356001)(229853001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2348;H:rric.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR07MB2348;23:8OotFMDV5ZX/x98RQa0exUN/wTdaGkXwjtKiAmlrM?= =?us-ascii?Q?UHHVyuZOtTRFPaClLaH5EICfHUoGXIKUL0jsuru5ffCnoTSXWS8QV5MAGneG?= =?us-ascii?Q?FyRoz6pyCFRa6tXFXt3vDpcbZHdXW51h4PYROF2km+tieyCcdtEMNdL3gjQH?= =?us-ascii?Q?uIPDXjvREXzUJedfCiZHLNdz8lsKslb3Dx/A93TXa0+h5AWg4hE8mUe5fMlT?= =?us-ascii?Q?GglOe/pwTdbIoHMjtM9DAlgBjlzuB/m09sqytNyamf/FZHGo0i3SjQsjqW2t?= =?us-ascii?Q?HY278mUlliOsuPjpN9AHCIHCU9JDA5dGItVvsWm6xXKW/9l8HLZFYUDVteQI?= =?us-ascii?Q?TXmHDt9nElZL9OFZ28I79fxJcE+Wi6xg+E2HyBNQfdqVjn1PWNtsxNe9fB+z?= =?us-ascii?Q?ahoMyTF1m1VCi5NbdksRXIEyo7OQOZiJtN1qFvgbhUhtWU4aEMq5cR9pZ/c0?= =?us-ascii?Q?IBgAM7JOhBvisD1VKZkIwnq+8gO9OWo4ZUAzBOZQ6ZFhaFWOGT/RL4QBy8+h?= =?us-ascii?Q?e5iYXLG9wwXMvX/vLsMPeNZLcAMQuFaPAlAOIn94ooKmTOajrM+3IQIPmqJz?= =?us-ascii?Q?AAnbuMvgAP4ZFdZhybCQQYfZ5iNr2teDgfvFoauMBt1OfzBmgRD9ywLCp1yP?= =?us-ascii?Q?MWjjlffAuByiDpdb9U1wxttcObeoX0ntPMLxEUZlzZ6+Oh8AQhvuNH45iyzt?= =?us-ascii?Q?qf5CU4M2YO1cftV3vx4hDpC2877955SJUBHOtbYjQvG1ObbR1aNl428s97wK?= =?us-ascii?Q?YW2ZOQ3wsF7LaDTS+P9Z68ixeVuAuCRlAQ5aFizdSTnwmWHRCEVPygSAGoJ3?= =?us-ascii?Q?kQ1uMIYpru8zMQaflSWDuarOhgfV29yUy77q+Zy+u89fLUxWytmi8YTpqD5U?= =?us-ascii?Q?yIbAKK2EZGJatJshq1Hy0bx+zXCQ0h6K6zOpJvNL0+DuVww2AbcrWUfo8CzY?= =?us-ascii?Q?4KEJroqNJlK0mOiD9ZRltqWgmbsBMV65hENplmy7c1NyfBWZw0W9Bc6p7P5y?= =?us-ascii?Q?M0nVaGhgxMvRDsCftsBAYeJiF1GkHPvyUoVU0m7cJKBIraoVA4W1Gyj9+dpx?= =?us-ascii?Q?6XCIWM=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2348;6:5ip+rZHtApDE6AzMt6kzKQedbzNmiufT9bHdbPB54ZeewFfd4CkaE2Alq8G4Jy/BuJa8xMXLpCBVDiAn+vu08wBnCOrmqYu+KVLU42vMCYhKS9pgCz4ndnhPXRMvz45NKBC7/71x9vrpYE3yqliPV5cmKxS8yl1Va9A18QVgT0mk/aDBTWP638qNIZXCdhmIVicWlyp7muAeDRoOxDJxpJKk4W8i8mvO6YOzkYSbxD2lpVrZruU8JsbievlNnkMTn274BDKGvhs7kk+tBBluk+r6a7rc0ftvpAh+LvoXSh4=;5:213ojpEgnvEjhYTVwv3Ui1hfcKi5VagX98f+zNN3/ILSi24IPb5LvyTrjaIWzTY/7xoiK1tSWuK4XDooMHArd9EqGmRnhDbpenIARQpSBCTLYMQZn47iyWOGmnVSw897xytBLeEWEs4qjuCqBMZs1Q==;24:YXijxZu/k2fszteLeiJlEDhmdbJM42vdUTC8vAz1skZReov8KSg+oVdt+01pbNXAxbNhcosl0J6K8EW5daaJw0L87rxRQ89clrBwNzqY6Eg=;7:0uo2LB62sI0J6vumIEh4AGMfpeCad1Ze5O7Dnv0DYRAIXBlHtsbei0nvYQHZ+OUqpv/rsuRoOs39iK1mZlRloyDmGL5RQMLj2rgvsvG9RaBdoqQoGa+VQyjMi+0ympJEElKVWKk71G9VCEOcjvcjs6A8XzVg6YTNvVQx4y5WmaY9Pr5lfGkNIeLYed+olIDjMKf6PHu/RKRw0L5DVa4qRfXcoJdU63//oq70MV7bJawEu4eYoaDXxvPkKFEJe7mzly3WiVEXsyHPGSPowU9qj7pdEBh+YQjWp3BNDRvLN3TToQdev7UdjqGhSTaZzq9s SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2016 11:34:52.3881 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2348 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Booting a kernel with DEBUG_PER_CPU_MAPS enabled triggers the follwing warning: WARNING: CPU: 1 PID: 0 at ./include/linux/cpumask.h:121 gic_raise_softirq+0x298/0x308 Reason for this is the code in for_each_cpu() that modifies cpu in gic_compute_target_list() which may cause cpu set to nr_cpumask_bits and cpumask_check() (cpumask_next() of for_each_cpu()) throwing the warning. Change the code to avoid out-of-range access that stops the warning. Note: Though cpumask_check() fails, current for_each_cpu() implementation is save to use cpu out of range. Also, code in gic_raise_softirq() might be reworked at all in a way that a single each-cpu loop is used by squashing it with gic_compute_target_list(). Signed-off-by: Robert Richter --- drivers/irqchip/irq-gic-v3.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index ede5672ab34d..ed46b906cf0a 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -615,6 +615,8 @@ static void gic_raise_softirq(const struct cpumask *mask, unsigned int irq) tlist = gic_compute_target_list(&cpu, mask, cluster_id); gic_send_sgi(cluster_id, tlist, irq); + if (cpu >= nr_cpu_ids) + break; } /* Force the above writes to ICC_SGI1R_EL1 to be executed */ -- 2.7.0.rc3