From patchwork Wed Mar 24 15:43:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 409107 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=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT 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 CE1C2C433E0 for ; Wed, 24 Mar 2021 15:44:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A6D3D61A17 for ; Wed, 24 Mar 2021 15:44:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236762AbhCXPn7 (ORCPT ); Wed, 24 Mar 2021 11:43:59 -0400 Received: from esa6.hc3370-68.iphmx.com ([216.71.155.175]:23293 "EHLO esa6.hc3370-68.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236732AbhCXPnu (ORCPT ); Wed, 24 Mar 2021 11:43:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1616600630; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=3SSMjXLR2Pw8e0lwOcBT/8UcWH1S4+UdZqxdNTeo0c4=; b=RNvZf9jDRuQ17+xvTqzg1YrXLFr7jP/PtAjr8uadddN6o0eyYLbNZ14m h3TM3vXUTeWnnEIBKT/c91ljP8vkmlJMIvSnvVtoJmictpcdwKfllRES8 sb/IiPhjNt6waOWdsrllHSiKjdLSet0hUNwFVXGUs2RNAsne9OyPMFOrI c=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: T2L+nUH0GVj4TT8m8wtOGnV8vZLqkRcN/TSm4y4PfQ4ZjqVvdavR16HW6mBzsmafsLUnyiA+ow 64bEwZ1Rl+2jnhaJiCY7djrDk8ysavXvq95v5CsLZi4LHZ/S6HUST+l7mjZY5pnzfLML2P982j hmNerLpJNyl8SCOyjVTmP2au3eYza3fBfdmGcMMAdZwaCL4jLpWCKDGcBBhxqywG64hnHpVI2R NWx3mEN4m26GvGWUNAoArM04uBGVeDlw/9QAesvImrfAbXyBsiIQr+pSn9mzhjVaMMxVcZ4m02 we8= X-SBRS: 5.2 X-MesageID: 40188095 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:XDgRN6zPgOrBtE6uKU/KKrPx/uskLtp033Aq2lEZdDV8btGYm8 eynP4SyB/zj3IrVGs9nM2bUZPsfVr3//dOgbU5F7GkQQXgpS+UPJhvhLGSpwHINg/f0qpm1a lme7VjE9GYNzJHpOvz/QXQKbkd6fad9qTAv4nj5lNMaS0vVK169Qd+DW+gYyhLbS1LH4AwGp bZxucvnUvCRV0tYs62BmYIUoH4zrWmqLvcbQMbHBli0QGSjFqTg4LSKQSS3RsVTlp0sNUf2F XC+jaZ2oyT98uV5zWZ/G/V4pRQlrLau6Z+Lf3JsOc5AHHBjg6pYa5oRrGNuiskydvflGoCoZ 33jDoLe+h19nPNbkG5yCGdpDXI4XIVxFLJjX+enHf5rsTySFsBerR8rLMcSDT1wQ4EnrhHoc V29lPcjbV7J1f8uR64wN7yWxRjhiOP0AEfuN9WtVNze88jcrNLxLZvmn99IdM7Mw/RzpsoK+ VqBNG03octTXqqK0rUuWRi27WXLw0ONybDRkADv/qc2CRNkEZ4yFMFxNcekm1ozuNEd6V5 X-IronPort-AV: E=Sophos;i="5.81,275,1610427600"; d="scan'208";a="40188095" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JvftgZFiTf8F2z9JvoYNbVzO8LCL3AFYEok7Yb23FH8KbpczKO76MYtBVQFpVlJSOkYC5Q/Z2ofeCYVj27QW53CrfmD7vz/QzB5IawQxyKA9RiY089Iz1eOsjougRKbnOQssRRmYqheOT4olJyobIUxpa8FiV+0vqLp48QK2LrNxbrAoE7TTDAVo26WKRcloogBoqwnalGH8lh+jvqtq4CaKAEMIlU939bXVbhVKoERPL3I1oO42VXlxdIt0lePiILI5/9xRfaZWiC6a7AeCmZwk924gbx5kxThRNlJt0K3fMtU9SJ42LyZ/e87nMNyUK7OZxO33dYggOnYgQ/XKSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ub0sbUt19Z455MEMout2SS1YkpeYLQCcmLvqKsToEuA=; b=MyDkuMZLSkGhDK06hHHTWn5cz3gGZ4b95y5N6B2Cwn1Cml1KmIfp5pe5oavF+gJ+J+j1QKE3ovtWnzugAHJPaGFajM5ljibwZ0Bu2KZDtoLRFuhvmE8yxnRKcv4fGetehFNe3Lbi33HpdRRHTp+y8gncVcQcfK39oo/56sMRBgQwhUUCJUWq+jGad180dgOcmy22qlfXk8mhmbkZXtNAZo6M8O1DmMBWa0HwM56RkVQgryynbknmZ/AAXVzPjD6QRhBojgvxLxGw/FQQx+9gMwssMLZ6TAFPOUsVMYeuJVkk7sfmOi/6x13z4kbAQTV217puHNGiPGIyyDfNB6KmLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ub0sbUt19Z455MEMout2SS1YkpeYLQCcmLvqKsToEuA=; b=XpNVOtT44B455bjm1RoXko+cMLriNYY2UYyTc2L8fAmNH7IGhou7hBEOqor8U+xtE3wYjH5He5DvswcBt6DQOJrpu9Qo9UM9PW8uxYfDeMuR3xbEY9H4/Mak0CHmuB2JoPHBQQg1gT/o2YvXIUwrItYC8Z1XUHJgLuqZxwnIAdA= From: Roger Pau Monne To: CC: , Roger Pau Monne , Mika Westerberg , Andy Shevchenko , Linus Walleij , Subject: [PATCH v2 2/2] intel/pinctrl: check capability offset is between MMIO region Date: Wed, 24 Mar 2021 16:43:12 +0100 Message-ID: <20210324154312.61878-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210324154312.61878-1-roger.pau@citrix.com> References: <20210324154312.61878-1-roger.pau@citrix.com> X-ClientProxiedBy: MR1P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::17) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2a898119-3a44-4b47-231b-08d8eedb9bca X-MS-TrafficTypeDiagnostic: DM4PR03MB6062: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:240; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iUSZn4Z/mitWANUDBIi1vmCnml/K7B9YOrGUHjxHbd6+EhtYZH4qAS2lKP1aHQpgNdjySrCCjexep0+3uISBq0M6YJUQ5mjM5H/e4L4DJvXxQLLotrNNNL5/rWcEqZZuNf0vBrrJ9KbWI1AqHx7EFgQVOmxI1yy9MPg0KTd4HIGdrnHH5CUfPjCMR5jTERUTqUu8D5O41E3TFpekY4bL/F3S8xwls6EyGaCwb/EIpdus/vX/2IDHfYc/LOqypLbY/vQVXNYzwHS1DOI4gnyCIqiWzIT2c0z8ctUftt1Q/hoDOSU5uJcPRsbdsHcTRNmxjt2rQZyLYMIW1dsMxjor5IdhEHQypRdS4R1Z0+01o8LXTebWDlB+78alkI2FIJXSpNhmz0mmCbGC1+bcAdMcYJKKe8V8tkjMHyYLiZp8gRIb5XgC6APu1nRWov6PWPxcvWg0SSZyf1o7xBT8pg/HBVQBeMGcgiFBXoLUohRVyeXcVybF9FJl4eyF29vPb/UkDdlOIAng3kpZQ4+TQzkbYGqZu70D5aArPOVpr9DqiVmTkfWCIiOnM5O55fLGJwSryiy4QaRJgRhynT/S+U29tA//ktGDal/9Fkxs427AjULUU6ejlFf9UmDkxfifLcZjnO7PRBiP9cjyLYka90PgeDcixXBuvvDREbOk3AqZAV4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS7PR03MB5608.namprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(39860400002)(136003)(346002)(376002)(54906003)(6916009)(478600001)(956004)(16526019)(186003)(26005)(83380400001)(86362001)(2616005)(1076003)(4326008)(38100700001)(2906002)(36756003)(316002)(5660300002)(8936002)(66556008)(8676002)(66476007)(6496006)(6666004)(66946007)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?dCvH3pGoDWFZUqSdZm1TSFpkagu?= =?utf-8?q?kE5wvCWLIhl72ID/Bg/QucIUkPQAo0+uqS5GFAp40cJh44ZSwVhrwMTr?= =?utf-8?q?YH/1B8uY45p55IO4IESvUU9PM4kCageE5+SS6PEEeJRUnA0/yDNPAXqz?= =?utf-8?q?5cArX6MzWIjgemK2HFOQrUkj6Uzv5z31VcKwUgX5RLf+w1o56SlYxgD1?= =?utf-8?q?qwPb7pjpQB/YC2rsIhcihgzZAyfi6Ak5EwgsiDUu3D6b6oVtWRtdn1kB?= =?utf-8?q?bywuK7ijlQ/whP1E7mVdNlRjbfUHBB6MAPB2wSbf2hFvKfL9SFKhfvI/?= =?utf-8?q?2bf81brRweaywca5yxnRw6Tl1cJTObN9F0uqimzbqajjPsKM4WMd8n3A?= =?utf-8?q?bxurkMtyKZWpIbASCu0N5rpGqVicJ5SP+VrL+qMGt5UIuoWdQqSIjtI+?= =?utf-8?q?J3vfGCCFuJo4rpN0AQsmL7AaaU3Jx3i21fKmJihcIda7Oiz9xWDonHiQ?= =?utf-8?q?4PW20EDpOnnXMu96YbNL2qQzyV1XavXGNFJmz6cKmSugrVDSk27wnL4/?= =?utf-8?q?61vafzqZogf33lECDu63ReNyxXNckwinAFx160mtdlIDtRUnBRJ++jTH?= =?utf-8?q?MbYOLk6Dp9kjBaIiUau8tdTDQ2wsyoaR8P3Bud0DSRr9wJVDUmlhe9PG?= =?utf-8?q?39crZPoTBe73Iwa26km+xa14lM3B/znF+Zpf9RhYM3c97luwck4s6tw1?= =?utf-8?q?lbjR5E8/urbJWcuEIn+D19RLQjRjzKi+VUXsW052V55DI8zhfyahtmmh?= =?utf-8?q?+W8wKTiST4L4ZQYrOLmjjKQRdg1qvsdBmC0/MP+dj6g6IkHD6ZCuPDTg?= =?utf-8?q?bLrNyySttHGlVqAYOPZpZGSM3UnKD9dVXc5jCFstbNopqAWrlB2yGaf+?= =?utf-8?q?7cV/M8A35pvbPwaBbJfUBLe0VHYkHOONu1gw6Ah2t6j4BhRxuyAdaP0w?= =?utf-8?q?DHGVkak5G+L4bu7SeDOIPJ8VkQqC9ZX8Xa0DJ9Tqubj4u90z0KkE+GUq?= =?utf-8?q?viY8CxlPL9/aWm28y74LutuQjXm3wbha/W3oeNuMPnGICL3ImDKD+Yvu?= =?utf-8?q?2wr01MmdCqv+fMSjO6bHA23EPu8YMeQtVh8G8iEHthxZBdsyY4wvJOmV?= =?utf-8?q?OAttiXvOHO/8kd16S0c1OxC6nUhdcO7jiCRZI6ydalzvV5DdVdOTzEWZ?= =?utf-8?q?W/xkLaSCcacSJkXZDV8zWZ9QGEHeLXD+pxBZJcdg69vzxg2ayUYti+7z?= =?utf-8?q?SFHEQLdcNMXFybbfc3LTpHCQsR8hFGWHZ58qW5J/vGt7eOWHMF0RgXQs?= =?utf-8?q?cu7+XYs4g4m3Qu5ysx7uEwGeIlBQpUbdOznoXMfXCTRGP3Rw9X3YAKXc?= =?utf-8?q?FsKf25ax3E0z2qTdUm4jjFIEUvnYo?= X-MS-Exchange-CrossTenant-Network-Message-Id: 2a898119-3a44-4b47-231b-08d8eedb9bca X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2021 15:43:45.3771 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wZG1u4rKV0LIawGl3is2QIotERP5/BRvYVqhwhxiS1snYI20Y6IfoSAmgvN9cb6zhruhzZZzSz/xonNArgbHKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR03MB6062 X-OriginatorOrg: citrix.com Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org When parsing the capability list make sure the offset is between the MMIO region mapped in 'regs', or else the kernel hits a page fault. Adding the check is harmless, and prevents buggy or broken systems from crashing the kernel if the capability linked list is somehow broken. Fixes: 91d898e51e60 ('pinctrl: intel: Convert capability list to features') Signed-off-by: Roger Pau Monné --- Changes since v1: - Adjust commit message. --- Cc: Mika Westerberg Cc: Andy Shevchenko Cc: Linus Walleij Cc: linux-gpio@vger.kernel.org --- drivers/pinctrl/intel/pinctrl-intel.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index 59d13342caf6..d45a6994b2a3 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c @@ -1481,16 +1481,22 @@ static int intel_pinctrl_probe(struct platform_device *pdev, for (i = 0; i < pctrl->ncommunities; i++) { struct intel_community *community = &pctrl->communities[i]; + struct resource *res; void __iomem *regs; + size_t size; u32 offset; u32 value; *community = pctrl->soc->communities[i]; - regs = devm_platform_ioremap_resource(pdev, community->barno); + regs = devm_platform_get_and_ioremap_resource(pdev, + community->barno, + &res); if (IS_ERR(regs)) return PTR_ERR(regs); + size = res->end - res->start; + /* Determine community features based on the revision */ value = readl(regs + REVID); if (value == ~0u) @@ -1521,6 +1527,12 @@ static int intel_pinctrl_probe(struct platform_device *pdev, break; } offset = (value & CAPLIST_NEXT_MASK) >> CAPLIST_NEXT_SHIFT; + if (offset >= size) { + dev_err(&pdev->dev, + "wrong capability offset: %#x\n", + offset); + return -ENOENT; + } } while (offset); dev_dbg(&pdev->dev, "Community%d features: %#08x\n", i, community->features);