From patchwork Tue Nov 15 21:15:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 20576 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2948293wru; Tue, 15 Nov 2022 13:26:36 -0800 (PST) X-Google-Smtp-Source: AA0mqf60VN0PjLKgTHSI5oZEp/FWwXVxQwU1yvggjSMoS+i4vAl6fhSER7l0zt8wfpYAJdcVpH5t X-Received: by 2002:a17:906:4156:b0:78d:6ba1:74dd with SMTP id l22-20020a170906415600b0078d6ba174ddmr15575985ejk.119.1668547596670; Tue, 15 Nov 2022 13:26:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668547596; cv=none; d=google.com; s=arc-20160816; b=rr1qzUDYartM83FXhQTJQd8jlexNVogeMAo4281E6d7Uup0ImW4LunOqCYJ7USk/vz WZBofCOCxoWzcRTjBgKC8wlgsKCOEsKziz+azxcwG4DQ5MM7uxuAOqS10K6zlUQ2v8h0 m30Tc0Ks1gdEU6MZ4TtRFnBaSBWFNDUO5dac7ycuqdFV1IvcHjavrITtWCYLU1J6t6nJ upfHDZaZPbTVkpNGkKZYSiqbj1GQGyS8/dhyZuw4l1Tia44OoVwrCaXs85AS8ywu/dGy VwlaBc0fS+mewbmbkoCkp+3zjdpSND5zPzTJlO0RVVIuOMpqkHLdHgTdTKRo/b5u5arb GHRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=xgxcZkbimYXHGOtAs7+w0+ywylslf7M/PcurTiDOWx4=; b=E0c9rFW5xHp7tyax+vRZgcIOnqVVGVXi0Phlq+FNyvJhmW6U4nsM51KmiChy70f/Gc gNK3uk/XWDbFRClRjnGl/stKyuy9DXu6H07JoMq6rPHXHqUqhAmU9dFK7m9/AI8AeN6M uij9OUiiGJx+1NrikQMo9/McW8AZTf3A2XVLr9IXD/QICRt+Fwci5+jJ3JB+DUKNUjPI HjFQ/Hze0aNSnz9Z3c1Yzcz9hqpEMoOaxWp79jK+j1GUCHldcCbSLUfuJjFL4hHEPwDI D3ldRmG5OvjTKp/eioSMZqV/odpNzZTGxMsLJqeEoLsrYuLb+ZUY4Ih8JP6H5JeOzbsy ESkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s2-20020a170906168200b0078e29796733si9445220ejd.653.2022.11.15.13.26.12; Tue, 15 Nov 2022 13:26:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230223AbiKOVPq (ORCPT + 99 others); Tue, 15 Nov 2022 16:15:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231378AbiKOVPh (ORCPT ); Tue, 15 Nov 2022 16:15:37 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 53A8DD2C4 for ; Tue, 15 Nov 2022 13:15:37 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ov3HJ-0005Bm-2P; Tue, 15 Nov 2022 22:15:33 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1ov3HH-004WcK-0s; Tue, 15 Nov 2022 22:15:31 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1ov3HH-00Guk2-30; Tue, 15 Nov 2022 22:15:31 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Thierry Reding Cc: Andy Shevchenko , linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 1/4] pwm: Document variables protected by pwm_lock Date: Tue, 15 Nov 2022 22:15:12 +0100 Message-Id: <20221115211515.3750209-2-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> References: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1270; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=mqv6t9UGVbAo+3D4RTnRLJH+fYTyOfUpbMDUQ3lKzxk=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBjdAFWIm6NA6nU04xY7TzqbfgU2WSxJpL3FVVw23km z0yS0eCJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCY3QBVgAKCRDB/BR4rcrsCTxHB/ 9vZtRKS7LBMrGXgzFQUembNvZGGIrWV43Jdms8msbvx3Zzf2T/Doh7Cs63zbJootocGvc0Kb6D+/Zp FtnoFymGBV9PVk7j3qZuvG4TcjSu2VWLBicAWIy3VUcAsb4xcPZoSBVZwHiR6ZP+nHp3BoFanz1Pyr PkHVhG4TtkZa7Mv82kZmjdyyj2MRlUL/HQBostGvNxWe/8fuDVtsZJUtI/rS0BW6eY3wUymSRTTQ/M JMxmDWrOAylJ+OttJEyZD/by9pQ9gZrdl7LkYwgKSKGUCdVM8gUXb0lTpacEN8FwlvAas/8HIb1En3 vQsVPBZG9NgkX1e6y6Utaek0PXbquS X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749598964842536340?= X-GMAIL-MSGID: =?utf-8?q?1749598964842536340?= To simplify validation of the used locking, document for the global pwm mutex what it actually protects against concurrent access. Also note for two functions modifying these that pwm_lock is held by the caller. Signed-off-by: Uwe Kleine-König Reviewed-by: Andy Shevchenko --- drivers/pwm/core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index d333e7422f4a..ebe06efe9de5 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -27,7 +27,10 @@ static DEFINE_MUTEX(pwm_lookup_lock); static LIST_HEAD(pwm_lookup_list); + +/* protects access to pwm_chips, allocated_pwms, and pwm_tree */ static DEFINE_MUTEX(pwm_lock); + static LIST_HEAD(pwm_chips); static DECLARE_BITMAP(allocated_pwms, MAX_PWMS); static RADIX_TREE(pwm_tree, GFP_KERNEL); @@ -37,6 +40,7 @@ static struct pwm_device *pwm_to_device(unsigned int pwm) return radix_tree_lookup(&pwm_tree, pwm); } +/* Called with pwm_lock held */ static int alloc_pwms(unsigned int count) { unsigned int start; @@ -50,6 +54,7 @@ static int alloc_pwms(unsigned int count) return start; } +/* Called with pwm_lock held */ static void free_pwms(struct pwm_chip *chip) { unsigned int i; From patchwork Tue Nov 15 21:15:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 20566 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2947423wru; Tue, 15 Nov 2022 13:24:06 -0800 (PST) X-Google-Smtp-Source: AA0mqf5gZ9njHvalTAKGE6xNlbKuB16KbNqXVCu8tYBYNsvZ/rB0KDKegxuJwDTYDA4PTKv833tg X-Received: by 2002:a05:6402:500e:b0:458:8e63:d667 with SMTP id p14-20020a056402500e00b004588e63d667mr16701780eda.354.1668547446020; Tue, 15 Nov 2022 13:24:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668547446; cv=none; d=google.com; s=arc-20160816; b=jS14LHvuz7lihIGiqP6kccS0PKWP98Q7NQ+r4aRsNdfx/zKvpATWZo05aS3g6Jn4+N LBfX2aO7HlKwP+nnbr4jJL0S9jjksOIT4bqxybuVqF7o7RY8MLA2H4j7ZfvvJ+L1xRfu RVOeF4wbc89WldOwH6zVMvDDaXlmCzejweYgkC6VeWbchxS6ZkWrsJnL1vfcTf32wnKh 0fF+ScnBmCMOeuGjQP1u8EdVYrj55RGWS9RohPRSMkK1XvektR47PSx9gEbWbo4a3JbT JsubtyIIS8A3pmK26VrJH70Vl3gn6Uqm6+4P/JRmVJErqzaO0AV5p7Jh1uJCvYXSIn5q DiPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=bEZe4uk35gUGnFSeK7jgi+/9IESG/t+AlsEUypmj7cQ=; b=g3gqxcPavroIzH5h3XBgLSNT+YKt2S1pFRqrDYSLOh68SUsPpEnuTPVqNP9vzqF1ar hxDBzGYXliQF1a2wW3ScPEI24Oc3On81+gSEK8UvIvoda074tGL8FIb3BkmWpRLqxIYr 5vs+uf47nAv+idDCCLeSSatZTEORniDVLfRyDhWICYN56DTrJAbkuOQcQcjVL+AOIvsY Aah0jJWL3j70faFkyUAW0OGQVs45AIfuTMERtuqC8dp/6LKdphsIjFsH5oyS/OI2XYTO 3fcqVpZoGI3KzWafEvs5zHAR0Tx069L/6Mc4H7+qRqPkiZql4xVo7b1XL2z9wXees8F8 ezXw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dr19-20020a170907721300b007adc3b6dcfdsi12847693ejc.392.2022.11.15.13.23.10; Tue, 15 Nov 2022 13:24:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238668AbiKOVPz (ORCPT + 99 others); Tue, 15 Nov 2022 16:15:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231322AbiKOVPi (ORCPT ); Tue, 15 Nov 2022 16:15:38 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E42251F629 for ; Tue, 15 Nov 2022 13:15:37 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ov3HJ-0005Bs-59; Tue, 15 Nov 2022 22:15:33 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1ov3HH-004WcQ-JF; Tue, 15 Nov 2022 22:15:32 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1ov3HH-00Guk5-Hx; Tue, 15 Nov 2022 22:15:31 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Thierry Reding Cc: Andy Shevchenko , linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 2/4] pwm: Reduce time the pwm_lock mutex is held in pwmchip_add() Date: Tue, 15 Nov 2022 22:15:13 +0100 Message-Id: <20221115211515.3750209-3-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> References: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1578; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=dpJt5HnNSXZ8+WzD/92JFgB2tlYA6ReiXbJGQ+broMY=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBjdAFZYffVpddUHFP/0j2BCHDHCjxTnORkw/q394yr bNLaw4yJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCY3QBWQAKCRDB/BR4rcrsCc00CA CI5ZzMSg+nr+xVoJftlKkC+dqD7kqYbx43HPtg/2g4ff/MKUedpP+d5XKwmsyLBErrAQrC3oZrBQyP S8QBXHn7aeG3cLbZraLy01PSuZIzwHRiZA7WxI9ulI1Qs3jmq1RRwhTzoklH2TWET/bKxiEGq3tJRz ftfoHcMVpUxqwktBpiUTH8bj91u9JGqkBUqHypCgbb3pR+de6hUot7+JLXv4TOshzZqF8nbocRaHDp Dxu++34yCCustwbeczwSmN4M1j9E2Fl8gDQhshl6ZDj2G5KC7xtaG1/m/S1JI+A7d/4g5wBK7+SxV9 YMUW6G4ep9Kb2IqzzllFTK6Z4usA4z X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749598806731218937?= X-GMAIL-MSGID: =?utf-8?q?1749598806731218937?= This simplifies error handling as the need for goto error handling goes away and at the end of the function the code can be simplified as this code isn't used in the error case any more. Signed-off-by: Uwe Kleine-König Reviewed-by: Andy Shevchenko --- drivers/pwm/core.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index ebe06efe9de5..2338119a09d8 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -272,20 +272,21 @@ int pwmchip_add(struct pwm_chip *chip) if (!pwm_ops_check(chip)) return -EINVAL; + chip->pwms = kcalloc(chip->npwm, sizeof(*pwm), GFP_KERNEL); + if (!chip->pwms) + return -ENOMEM; + mutex_lock(&pwm_lock); ret = alloc_pwms(chip->npwm); - if (ret < 0) - goto out; + if (ret < 0) { + mutex_unlock(&pwm_lock); + kfree(chip->pwms); + return ret; + } chip->base = ret; - chip->pwms = kcalloc(chip->npwm, sizeof(*pwm), GFP_KERNEL); - if (!chip->pwms) { - ret = -ENOMEM; - goto out; - } - for (i = 0; i < chip->npwm; i++) { pwm = &chip->pwms[i]; @@ -301,18 +302,14 @@ int pwmchip_add(struct pwm_chip *chip) INIT_LIST_HEAD(&chip->list); list_add(&chip->list, &pwm_chips); - ret = 0; + mutex_unlock(&pwm_lock); if (IS_ENABLED(CONFIG_OF)) of_pwmchip_add(chip); -out: - mutex_unlock(&pwm_lock); - - if (!ret) - pwmchip_sysfs_export(chip); + pwmchip_sysfs_export(chip); - return ret; + return 0; } EXPORT_SYMBOL_GPL(pwmchip_add); From patchwork Tue Nov 15 21:15:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 20570 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2947562wru; Tue, 15 Nov 2022 13:24:32 -0800 (PST) X-Google-Smtp-Source: AA0mqf4WumW/QYfZZnb0O+nz3waiPgmuVvZMjpzi963SkEc8cPD5bczPhDT4tsjdmkkLshvjCVHI X-Received: by 2002:aa7:c95a:0:b0:458:b6dc:2b56 with SMTP id h26-20020aa7c95a000000b00458b6dc2b56mr17055999edt.412.1668547471867; Tue, 15 Nov 2022 13:24:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668547471; cv=none; d=google.com; s=arc-20160816; b=ncMKMRrs5uW3NugmQOhTF/UR06PM0hDw0kYhVHdJaC3isxbv17cKoOxRHzueSnYpZ2 WsrMF0cA1CR4uOsgJ21QJJiDRy2Q7KnxUtU36Idyd5+pzNC37cKMNRhO+60JKmTNuFD6 x/YXZ/3TqGUTkSZgzhbuTdlQ3igjz7W5yv5YJQ/f5i9V0JLZvuBJ8lyGZxF/TT+Csa+2 Inf4604gsIUrate+1ZpTjIZ0YKHGpYBjRm0g43psk7DyDcXH4Dd9D8TuJElOEtimX0CM Ijd/BmxiBFdOjkLmZVXnsy/rOiBz6/oErwbqg77BFEbbz5GV/zxwWcmWbvNfx+ip9q/I /+PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=mz+VPiYyhoxC8IIeKLh1XFv7JZNnh+LEhxOjNVKt7Lw=; b=ACJtb8gRJukTeDURD4srxAeKPCKqwZ+Uw3d0m9VL3oca5vka6K+cxKXc/JM50sOfmg +HZ1byt2FR+RphTQcUMhBILju57PaCsZGwDEKFj/UAgbSFnGHBVBD0GUb4nFXgXkdIFO +T1RfeXWgfjeeTD3P7KfKJB6ffkqv+e3jLqDGgrmZJX7J5/lxO3MMZHaCoN05TfbAaKp rp+NzaKtsS4Rs/29XR02cXRKstQZP1KO3oGjyiySa4rRAxnxyJmnE/DU70FhKsfAhG6w 0zcPtexxwsvg95vt986Zx8sxOARL/ClGi5V9a78QIq3yqY7Hgjgqi7AexnmVQ9GJ0KO3 6/hA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c1-20020a0564021f8100b00452697eda4csi12362817edc.58.2022.11.15.13.24.05; Tue, 15 Nov 2022 13:24:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232084AbiKOVPs (ORCPT + 99 others); Tue, 15 Nov 2022 16:15:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231575AbiKOVPi (ORCPT ); Tue, 15 Nov 2022 16:15:38 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6F251D0F5 for ; Tue, 15 Nov 2022 13:15:37 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ov3HJ-0005Bt-5a; Tue, 15 Nov 2022 22:15:33 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1ov3HH-004WcP-Ih; Tue, 15 Nov 2022 22:15:32 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1ov3HH-00Guk8-Rj; Tue, 15 Nov 2022 22:15:31 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Thierry Reding Cc: Andy Shevchenko , linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 3/4] pwm: Mark free pwm IDs as used in alloc_pwms() Date: Tue, 15 Nov 2022 22:15:14 +0100 Message-Id: <20221115211515.3750209-4-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> References: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1092; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=67Sh+CadgT81I090cww7WtAFSMpXxuv7y697vqIUN84=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBjdAFcha5RDK/Csdijh+RXlJ5/rD0qN+RkV7pgiJNr qNhACfCJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCY3QBXAAKCRDB/BR4rcrsCZwnCA Cc3xvqmi1E8ngVJ7uaHyqdaIhQavFIq9IkQ/T5DOyTwekg8BE8gScSt2W0Ws5YAKMA1P+5k1InVhd0 jCjGtwIMYC3sVBsAUELVBJf/8vsXkBDdmu7TzWkzflxXdfKDMMvOc/kK+FZibS+DK1aDJkeVMATqr6 zEiZFNvX2pup/pRpOWIpBgq7oN6fwSOEla2qYzTLlkMopabsqHZIH3f1VrHfvfCrTuXLsz9aZqFZ10 g8vbQ34H2YuV/I1wRr5HZ5cNfo+CQ6gCdn8wReig2RVVlE7fxZ6Z84Rbpo5nvzbqsakC+Dlr/AsnUD fFShg/hirsxNmggqkl8DPrqoFLxcsi X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749598833714756710?= X-GMAIL-MSGID: =?utf-8?q?1749598833714756710?= alloc_pwms() only identified a free range of IDs and this range was marked as used only later by pwmchip_add(). Instead let alloc_pwms() already do the marking (which makes the function actually allocating the range and so justifies the function name). This way access to the allocated_pwms bitfield is limited to two functions only. Signed-off-by: Uwe Kleine-König Reviewed-by: Andy Shevchenko --- drivers/pwm/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 2338119a09d8..b43b24bd3c9f 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -51,6 +51,8 @@ static int alloc_pwms(unsigned int count) if (start + count > MAX_PWMS) return -ENOSPC; + bitmap_set(allocated_pwms, start, count); + return start; } @@ -297,8 +299,6 @@ int pwmchip_add(struct pwm_chip *chip) radix_tree_insert(&pwm_tree, pwm->pwm, pwm); } - bitmap_set(allocated_pwms, chip->base, chip->npwm); - INIT_LIST_HEAD(&chip->list); list_add(&chip->list, &pwm_chips); From patchwork Tue Nov 15 21:15:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= X-Patchwork-Id: 20564 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2947249wru; Tue, 15 Nov 2022 13:23:39 -0800 (PST) X-Google-Smtp-Source: AA0mqf69ULdnpuYp50lNLZDUmZf7swSg4Di5ae5atbLWagQcukjCn2EEsNFqzG76WjfcPFZ9AKaQ X-Received: by 2002:a17:906:b20f:b0:7a1:1c24:e564 with SMTP id p15-20020a170906b20f00b007a11c24e564mr15202054ejz.629.1668547418938; Tue, 15 Nov 2022 13:23:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668547418; cv=none; d=google.com; s=arc-20160816; b=WbQbs/cqsI5m2N3v2jyMPWAoCKiHvsYf1hLmboxRwpd1czl4dJGNpwfOiCmnL0cN1i CADiILCT8HkQhRPxW00GbirqxHSaxi/QZyPs9gAhIOcxk1S86KoUb1+Q1ESek3nKCVl2 Ctjf/hQ7//27Q1AeLj/RMZQkMdqmcCtP63K6yz0oclItrsIFD9sQxP89DfFfaRosrb4V NAm5MxX0r67yCFENtRefLNDGiH95zoLR2y/JKafNtF8VUm7lKU0lSKzsKR6JMgYpicNO dXSLFxgWZ0N7tH4KfsJZdRommwHSTie7mkKbT9dqg5xsriAu2NZCD4FrYHLmE/sNrOf3 lqbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9LF1NB7lwZxfWP8ifuT3k2VbOjNygXlMV0yvXA27TNA=; b=p74rjsz6l5ECjHgeue9Fdl2nEGrwQVb/R9JuUcJwzL5f1fHWbzloFTbUQwYkpMxhkC Rjo4NNc7KB4Fcj5cEe0HhWFwTS8TsgZG/6WZ2lDftobHCuQm15n/lCWMWuH75oZ4wCnX kkvJCFGppAiNz1l7hKZkeYHjzoyQiPO9sNY/0ih5WdK0ij6HNEM/fGBbIOI/UWcsWYAK qi4xLBppEddis32ulxGwVlSJdrXs/fLgFNOaLpgeYQptDq4fABY1rhAwRkxExlHsS3UN 19QL4fRxYO6dsfVqaQvfFgLntIE65XylzT/qxau+uNlw1P9jLsOlrWdHi34PGEQD1Hct XDNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hs38-20020a1709073ea600b007ac60b83407si12965361ejc.725.2022.11.15.13.23.07; Tue, 15 Nov 2022 13:23:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238576AbiKOVPw (ORCPT + 99 others); Tue, 15 Nov 2022 16:15:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231270AbiKOVPi (ORCPT ); Tue, 15 Nov 2022 16:15:38 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF8AB1E3CF for ; Tue, 15 Nov 2022 13:15:37 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ov3HJ-0005C2-FR; Tue, 15 Nov 2022 22:15:33 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1ov3HH-004WcV-Tr; Tue, 15 Nov 2022 22:15:32 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1ov3HI-00GukD-2s; Tue, 15 Nov 2022 22:15:32 +0100 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= To: Thierry Reding Cc: Andy Shevchenko , linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH 4/4] pwm: Don't initialize list head before calling list_add() Date: Tue, 15 Nov 2022 22:15:15 +0100 Message-Id: <20221115211515.3750209-5-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> References: <20221115211515.3750209-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1012; i=u.kleine-koenig@pengutronix.de; h=from:subject; bh=YW3mBqZ7La41Wb9SLeoLhl8wDMBGwJ2RzU7YOl5SQBE=; b=owEBbQGS/pANAwAKAcH8FHityuwJAcsmYgBjdAFgbOa95Z13KU1LcmxBWu5VVZjas+KtO3JBsMPy r20F8yeJATMEAAEKAB0WIQR+cioWkBis/z50pAvB/BR4rcrsCQUCY3QBYAAKCRDB/BR4rcrsCRwQB/ 938DL+ClTjEMeI52IZYFZL9fNc3sjnhVOmJbLUpSL+Wv++06cCZ6hGinZZ8eeWHQDz816frRz0igny oJVKSvPnO7Ofr6UJLBtVgmlDAELssuh3NgOJ1McbjxlTRvwz3EMfK8hZlWGSEsWVyN5Kb4RCZKogEm x4t2kXSLwlZgQCUC0MNe+ZgKU++fVlU5ZDGX5pydpN0bxPAPCQud4lgnKitu2EZSB+/ODU9YVZAhCg XMPni2CEu9CtncF2CnSSlcrc+srROSJhZ3aXHDwYFSQVANzRwMLwELA0kG8dbKIGIpS1THCY+K6Fi+ HNeeWQYngSsa3XPhuJsYrqVGFMVvyl X-Developer-Key: i=u.kleine-koenig@pengutronix.de; a=openpgp; fpr=0D2511F322BFAB1C1580266BE2DCDD9132669BD6 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749598778045321024?= X-GMAIL-MSGID: =?utf-8?q?1749598778045321024?= list_add() just overwrites the members of the element to add (here: chip->list) without any checks, even in the DEBUG_LIST case. So save the effort to initialize the list. Signed-off-by: Uwe Kleine-König Reviewed-by: Andy Shevchenko --- Hello, this patch I'm not sure about. A quick grep shows there are (only?) 40 more code locations that call INIT_LIST_HEAD just before list_add(). In my understanding INIT_LIST_HEAD is only to initialize lists, but chip->list is not a list, but the data needed to track chip as a list member. Best regards Uwe drivers/pwm/core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index b43b24bd3c9f..61bacd8d9b44 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -299,7 +299,6 @@ int pwmchip_add(struct pwm_chip *chip) radix_tree_insert(&pwm_tree, pwm->pwm, pwm); } - INIT_LIST_HEAD(&chip->list); list_add(&chip->list, &pwm_chips); mutex_unlock(&pwm_lock);