From patchwork Sat Jun 24 17:57:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YE Chengfeng X-Patchwork-Id: 696327 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C932EB64DA for ; Sat, 24 Jun 2023 17:57:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233016AbjFXR5h (ORCPT ); Sat, 24 Jun 2023 13:57:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229824AbjFXR5g (ORCPT ); Sat, 24 Jun 2023 13:57:36 -0400 Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01on2102.outbound.protection.outlook.com [40.107.113.102]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5FD71BE7; Sat, 24 Jun 2023 10:57:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hXeESJaY2VjC5LpJa2OC59eQWVt4sfyySDpTQ+qly4G9m2I9butuSxeW6iZaK/3Ww3HM/olfb/dwvmeYjsR8b0b38594IRktzlcd6enpEOqhaHln3qexVJwuKOyL6n4HtvG5vhou1nGNk2xSFsomRdW0yHvm6LdSgiP19y2FyX9p4xisn8bdxD5c0mQeaaxKT9h7a2iqdogvGs6laww4KT7oPPK+/oqwTP48qgcwzB41FnapvLVhCkil5iOdaulMekQXNpZHO9kZkZzO/5mQL7bXDWgJyy3AQwsOLYgb+siSz4REIM5o3Fk3XhmETIHJt+l7mb5rL9OUs5loK5Ub6Q== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tE6pdX/Qj3NUgPOcEN/3Zw3NprSQzXUYxc/P39eEbww=; b=LSNLTjGAbw2UTGdYEohXhg4tjq2CR58JZSynqT5JgcJfu6y6ot0cy/kAb300hxnfyVbzYooGcUH+1Q8qNrwjL1kQChxLgpInE9dVsGaYyBCcq5DCQ9/U+hJyHuuJuzfzQId6UFG/2a7ct1osb9hyEbNDw+w+kt4Pp5p5lEFTRhlUp5hZCXqz1VoLbyWuqp/+Lu7nrVTudEfq6NNjalBVMUg7X8ouWZZ61xnahNnV8cfOM5KvRsNFs6gxqVEu5QvYuwU1Zv7MxnsHzz6C22PhhvHlzoUhphVBX0lmaGiF1p2bk0661fCZuqHTeSddN88/8WKVEA4Tl/PMgeQAtV0eRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=connect.ust.hk; dmarc=pass action=none header.from=connect.ust.hk; dkim=pass header.d=connect.ust.hk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=connect.ust.hk; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tE6pdX/Qj3NUgPOcEN/3Zw3NprSQzXUYxc/P39eEbww=; b=2t+iVZDXJxCnCm6yCkB+MnUIeL9pi+cgHNlDAJFaZ1J8zMM2dZ3n5S8OwdyLKIjuoEmaI0AgyXFX55NmZ0NvXxjWmjpxuXxdEsrXH+wP25qE3cThJnTBbLBy5RR4mf3BYehGJSh4MrVizRL5aPvRQGmRg4Weg6SSRhFboJVniM8= Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:b7::8) by TYWP286MB3079.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2a2::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.26; Sat, 24 Jun 2023 17:57:31 +0000 Received: from TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b429:5aa3:12f1:6b8]) by TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM ([fe80::b429:5aa3:12f1:6b8%4]) with mapi id 15.20.6521.026; Sat, 24 Jun 2023 17:57:31 +0000 From: YE Chengfeng To: "andi.shyti@kernel.org" CC: "linux-i2c@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH] i2c: img-scb: Fix img_i2c_isr deadlock issue Thread-Topic: [PATCH] i2c: img-scb: Fix img_i2c_isr deadlock issue Thread-Index: AQHZpsQP/YQh8VnFn0SL502Cj6ksVw== Date: Sat, 24 Jun 2023 17:57:31 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=connect.ust.hk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYCP286MB1188:EE_|TYWP286MB3079:EE_ x-ms-office365-filtering-correlation-id: bc231109-7130-40b0-0fa8-08db74dc7b86 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YM4yE3Jhr9qU1xBSlD7PQFyAL9WTLrvUmO+MRQaekjjDOUzQeRXgIMC9uQeYs6U9wiSTftf9UsNZCL/rGoHC/YhF7bwIsqAORu5ZKZFMzxmBBgfxnRef9CfnLHXaTP/Orhxyux7OJSJJp0iIc7Dx/sIXm+DHu3ZT6UUEJi0N/xOKCZEJt1e5qwCicZljw4KDEphYwz0CNgv6zDKxSDoYvYQAKpO2fOuBU+KcgStq73JZPbAXZyHOpiKzwyv8c/i3z3fBWlO4rHHTPIPE+VneWhtjWBMXY/Ix59OglPYQoyQHM3gUZtffgX0shiz/twcF1nE0PhMHtXgoIdBu4C5aQTmajdkxhpi6AnlfVg1cA4uhUhnYSi9+lgy9ROLaxMCzYzZqfY0YzeCAC+kkSYV4zea8Ktc3WEIajGUQ7PxOv4rN7Od5ubW+3BAWI4qmMr/lEPsGG3ybBESf+iEMpdOcwJ69IAFBxkB7We1h4wDwMnHsTErs3e8eZiAGLSQEUw1s97CD5/V6BVOR2kFPkqrR4m868PPrbORQwXY552UwuwpxyVhowD+VhUd2QxYYccwn0jyE03V1Z2AKyEvRdwSSeGpz9YgJ+TsM0U2M1UO4i1XJE1FQHwqTRBNQZJcNo2Kmh/Gr5jrjP6Z03A1vb7IucA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(4636009)(39860400002)(396003)(376002)(366004)(136003)(346002)(451199021)(71200400001)(478600001)(7696005)(54906003)(91956017)(76116006)(4326008)(38070700005)(83380400001)(33656002)(86362001)(2906002)(55016003)(66556008)(6916009)(26005)(186003)(9686003)(66946007)(6506007)(8936002)(122000001)(8676002)(52536014)(38100700002)(66476007)(316002)(41300700001)(64756008)(66446008)(786003)(5660300002)(70780200001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?eucgb2312_cn?b?Y0ZzZFRvTkxQRTdzaGFlWU15?= =?eucgb2312_cn?b?Q0NoVjgzRE5RS0F3TUczUVBnMlI1SkFZR0VpdCtNQXJ1NEdXOFpwSXlUUHF3RVQv?= =?eucgb2312_cn?b?SE1ZNGkxUS9GS2dKeUk2MjhRTjdhWTRBT3RSRlBUeFRkcWZXb21hUU9LNldQeDF0?= =?eucgb2312_cn?b?YnJZNC9nNDBQWkFXTW11VHNiOEozaXVsNXhQT2VBZzM0SGl0YTllMVZyNWpwRHdu?= =?eucgb2312_cn?b?aFpkKzZZeVNBV2RsTEZGTnoyTHFrNUNtM2QzV3o1bjZmcU93SzlSNjNHMHk4UU5E?= =?eucgb2312_cn?b?dDBoRHd1VXg5SFluRTlkL3FFaXhOZHo4dE1YQTBYQys5Y05MTXdaMG9ITGNqM1k3?= =?eucgb2312_cn?b?NWZzd0pRbVk4bWh1eGlMRXllek85ekkySHNjZUtnMFU5b1YxNS9kZmRSdWJRS2FZ?= =?eucgb2312_cn?b?VjhJaWNha0Z4Q2lORnEvWGwxTlNsMG55dDQ3RHh3MTNpN0JlRFV6alNPT0t2blRE?= =?eucgb2312_cn?b?ajcyaitMK1FDWURHZWgvN2NVWFBGczRsVEh5K1d2VnF5bWh2Y2xjSE5nSjdydXdk?= =?eucgb2312_cn?b?STBDNlhhZzJRRmZ2UEdtYlc1NWNoN1A0ZmlaRjhwQ1JFbUgwM1BhREdNbW5uSjg5?= =?eucgb2312_cn?b?K1V2bzFrYlgyb3NCbGhWalBtWjR5KzI2VmFqd21kYjgzZjBobFFGWFk3SUtSejNp?= =?eucgb2312_cn?b?eURVbTBEMndpM3U4UElrcWtmeG9sU2FYd04wdDdGWllSNHNzVmVuSWpzUi9aRXBs?= =?eucgb2312_cn?b?RHlIRnJqL3JBTUZKQldNdVZMK3BRZTJUWERqOEgvZjdaYmFvV2UrbXhLcW5qNGNR?= =?eucgb2312_cn?b?MTRGMXhOa1ViekRhWUxwdXdCd1JRdkFzTlRzblgxbnBoaHNxUE1QRHMrNDNuYWhM?= =?eucgb2312_cn?b?UTN2TjV0SzlqWnpUbmMrdmM0M3B1SjQ5YjQ5VkFUTFF2SGM1clV2enZWaEtFRW5o?= =?eucgb2312_cn?b?bWw4aEhOYURuNlBXU1dLYXBDT1ZxN3F2cXlVbTRleGhXWnh6QUFMUzJISERBbE1O?= =?eucgb2312_cn?b?UkRPMXJVU05LSmluZExDTGdOVmlqZE96Um5pMWkxd1JiRHpuRnZyUytyVjFSVTU4?= =?eucgb2312_cn?b?dCtuMGpMcFg4cTBUYmVZekZwbEpkc21aWEZZOUc0OXVDWU9nZnMvZHdaVUlmeWRw?= =?eucgb2312_cn?b?a2duakRta3pLVENMQVJQM1l4QTlLSnNWRC9wenlqOThoK29ydlk0T2hYY0grcko5?= =?eucgb2312_cn?b?amxkNHhuYWJ3ckpjcmFHQjhjN0VuTi9vQUdsWHRnSFphamlhamJqVlpyb2tHcnhE?= =?eucgb2312_cn?b?S3BFNGFtUnBFanFiQUllMUhZWjNXTWl0eVMrcFZHSzBOZWNGMUE2SkFYSUQ3a0FR?= =?eucgb2312_cn?b?YVk5S2M2bS9HbkUwaGQvb2RKajVUMGJpOW44b3VwU3cxdEY1MS9BQncydmZBNmFM?= =?eucgb2312_cn?b?eURVTnNuZlZZdXU5ZEhTSTNjVzZ0M2p1SnF3UGtmalBFdy8zQytPRXNUT29zaWk0?= =?eucgb2312_cn?b?OHR4ZlpJV1VNM29uS3lYcTlFWUNnS1ZzWFRUdmhZL3lhWUNzV1JFa0pwc09NeitL?= =?eucgb2312_cn?b?NVNmQ2FyUkh5aGJkc3dFL09TcFBsak1QTHI1ZDFQN1VyMzFBU0Vyck1zaEtwL0d1?= =?eucgb2312_cn?b?cnJHTmdHTm10Vnl4VzNsRC9LVE9zc0hUdXcwSU5zOTV6Qk5NeGFlcWE4U0RhSzEz?= =?eucgb2312_cn?b?ZU4rNkpRc2VOWEJWV2VralJtOTJzTnR1NzNiTHc1QWNzQnhJTHpURWZrTzFHYnRU?= =?eucgb2312_cn?b?RDlPOVM1UDY0UUcvbXF1dDZyaFlXaUNNR2hxQ0J1MHN5bTV0M21OUHB3SWN2TStz?= =?eucgb2312_cn?b?YXlMUEVEK09LbzdNU2VBUlYwek9lWlpxNGVQU212VTNYQnNJMUw3dlNZYitIclZq?= =?eucgb2312_cn?b?MExPZ0tmc08vZk44Ui9GSUtCRit0SjZzRVI0UGkwQnViTkdRM1FJQkJwc3RSSHNm?= =?eucgb2312_cn?b?RHZXdWF6Yy81RSt3aVA2M2dtU1JOR3lHMyt6R0xObWRVbHBZV3BUbmhUV0l1UVJi?= =?eucgb2312_cn?b?ZTZ1S0FOSFkxY3U5VGlTckY0TGdnS2xJNnd2aGVhNWMveWtPc1hVTjBGQjdWdmRj?= =?eucgb2312_cn?b?YWQwUDgyeXVFQ1NGWDJpR0xrYU4xQXF4TnRTcWxvQml6Tjd1L3NvQ2JuNWdtNGtR?= =?eucgb2312_cn?b?OU9adDBMN1AzVERjNEFOTkZ0U1FMSUhpVT0=?= MIME-Version: 1.0 X-OriginatorOrg: connect.ust.hk X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYCP286MB1188.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: bc231109-7130-40b0-0fa8-08db74dc7b86 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2023 17:57:31.7044 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 6c1d4152-39d0-44ca-88d9-b8d6ddca0708 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 52fz5XPzPLlGnKNdNrigz4hA4yNati02oUaICuspDkbyaMBO+Veg/oHxoTQH9QSQvPPE8VvPqe3CybLzQvH7Cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB3079 Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org The softirq img_i2c_isr and timer img_i2c_check_timer could deadlock on the &i2c->lock when img_i2c_isr is preempted by the timer while holding the lock &i2c->lock with spin_lock. Deadlock scenario: img_i2c_isr -> spin_lock(&i2c->lock); -> img_i2c_check_timer -> spin_lock_irqsave(&i2c->lock, flags); To prevent this deadlock scenario, use spin_lock_bh to disable the bottom half interrupt. Signed-off-by: Chengfeng Ye --- drivers/i2c/busses/i2c-img-scb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c index 39c479f96eb5..a2b957c3898b 100644 --- a/drivers/i2c/busses/i2c-img-scb.c +++ b/drivers/i2c/busses/i2c-img-scb.c @@ -935,7 +935,7 @@ static irqreturn_t img_i2c_isr(int irq, void *dev_id) img_i2c_wr_rd_fence(i2c); } - spin_lock(&i2c->lock); + spin_lock_bh(&i2c->lock); /* Keep track of line status bits received */ i2c->line_status &= ~LINESTAT_INPUT_DATA; @@ -998,7 +998,7 @@ static irqreturn_t img_i2c_isr(int irq, void *dev_id) /* Enable interrupts (int_enable may be altered by changing mode) */ img_i2c_writel(i2c, SCB_INT_MASK_REG, i2c->int_enable); - spin_unlock(&i2c->lock); + spin_unlock_bh(&i2c->lock); return IRQ_HANDLED; }