Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp604384pxb; Tue, 15 Feb 2022 23:30:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJznYJdFuSc+YJNBfN1vWdfpZ2+VH9nO5NEleg88XNuqvsE4pAOaXfvvRAx685X+TrA1rapz X-Received: by 2002:a63:a1a:0:b0:34d:a4a9:a8b9 with SMTP id 26-20020a630a1a000000b0034da4a9a8b9mr1265370pgk.176.1644996654975; Tue, 15 Feb 2022 23:30:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644996654; cv=none; d=google.com; s=arc-20160816; b=aOJsN8rQ/GZEu0rA0fYeGjVD0ERKIh979tWWzJ+eJIvpG5fQYG/k8faJCBa1JVZFz6 6LUwX0cws6AoVXMchPph146COqZZaZbuMd1ESdvjhXGm3YKCwWbFgYp44JeJAaVSbxp3 eozwn9qP7snoGmzH7TpgH/G//jLsq4GeQtsI0QjHkwjDvMuV9QfE970WE4IH0ZBUttJX z7qNVf8bMIJIPOMh58zP1wRIVGm4dhfo3cfUqC2/42kvCa8XBaGPu3uOlIaU0u54Qu09 20h2NgbxTDyN2sNR7bzNlyXoLbmo7jOOcGq/BAnD2f//qFgh4hgcz7oObNahDljB78oT 56rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=xUX2gGb4q9RgsXc3hYoQEWgo8mO0FjMCfMCTy48wb2A=; b=vPe2xDCwRi1Aqng4mk8RDEOwtqWluF+/zL/1w1JDZf3Jn2cUR7w7evEHvEjxn0LiJW /y2Yv8wJczAl5Uw0H+JE+PEdm6406BC/DHw9Rb+WDnO9OVXktgfsDqF0sTtLwwfFvH6w +hShpH9IpabgOal6vseFX2mdovSO9dRfX3uDGS9v2+6JkESzDVV8V7W29Re6xE+yu90o Tnvr7Kl66Pfo7n9Lis7uMLsaihf7iGsyq6uZQKv89/7pK93EWYHTuEopF/DvGK4vNRzY 2qBtt1/4vhQBujBiv8wAADcS0ANZ6xx5284xroWhVRXi+ZdcP5gm8AVtEsNRklV2/XbG AvjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Fq9iZVWr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id pj14si6961752pjb.63.2022.02.15.23.30.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Feb 2022 23:30:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Fq9iZVWr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 41CCB1CEB0F; Tue, 15 Feb 2022 22:58:26 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344640AbiBPFo3 (ORCPT + 99 others); Wed, 16 Feb 2022 00:44:29 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:59642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344632AbiBPFo3 (ORCPT ); Wed, 16 Feb 2022 00:44:29 -0500 Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4EF6CF3AC for ; Tue, 15 Feb 2022 21:44:17 -0800 (PST) Received: by mail-yb1-xb2b.google.com with SMTP id bt13so2843622ybb.2 for ; Tue, 15 Feb 2022 21:44:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xUX2gGb4q9RgsXc3hYoQEWgo8mO0FjMCfMCTy48wb2A=; b=Fq9iZVWr63JMbE4z8EIABfFdWg0dyQriiZLYFIKOJZ6xrinA11J6PENKZGLYRg04QL oyqWm6vyEnuBsdPe51WISG/16IpBQLP79ADh0Eci4SHAJddUNiBArnIoPAl9JcgFs5/o KXdfG0r657HQHrSc3ZGRAyXOWBAdJqB8bpq1Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xUX2gGb4q9RgsXc3hYoQEWgo8mO0FjMCfMCTy48wb2A=; b=3a5XHmZi+sd1L7FnOE1JuuID02e6RaAnIujY1bqg52N8/WGYbKJDT6TqOtamDzcCbS rcf5dTjy2SsifSgQKfxYzbt9KibxfyF/BEf85cVjTdpszZ9eZfvJy9fd1KLMHIqwg3oT 7ldqcSUSnRBSNlJTYlLvXYI+UU0Yzb+TcUpCtCh2QBCyZ7A+koyNj7d7Oo5TAH3IouWS Y1F4YALRmUK825vYoIHNWk7FiaHS8bRl9HDzL+lRMXmr2dwx7fJnBvWbLLJ0XjE2fijH bh3DSpp9izY0MccnnzxKLTmIJprHLsqXvw4cXPvFzE86ZXmcsyzeCAePfZG2fLiw9VRB 5Tpg== X-Gm-Message-State: AOAM533zEDBIEgmXCSSRrnfFfR9vWPs56DT8Kqldrk7dYKirPZ1APL6w NJ+X2NP+W1DX5/u+fg+xUegu9ujs7slsRnlxPE3RlhE0dgw= X-Received: by 2002:a05:6902:108:b0:621:165e:5c1e with SMTP id o8-20020a056902010800b00621165e5c1emr931384ybh.204.1644990256845; Tue, 15 Feb 2022 21:44:16 -0800 (PST) MIME-Version: 1.0 References: <20220216043639.3839185-1-tzungbi@google.com> <20220216043639.3839185-2-tzungbi@google.com> In-Reply-To: <20220216043639.3839185-2-tzungbi@google.com> From: Prashant Malani Date: Tue, 15 Feb 2022 21:44:05 -0800 Message-ID: Subject: Re: [PATCH v4 1/5] platform/chrome: cros_ec: fix error handling in cros_ec_register() To: Tzung-Bi Shih Cc: bleung@chromium.org, groeck@chromium.org, chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 On Tue, Feb 15, 2022 at 8:36 PM Tzung-Bi Shih wrote: > > Fix cros_ec_register() to unregister platform devices if > blocking_notifier_chain_register() fails. > > Also use the single exit path to handle the platform device > unregistration. > > Fixes: 42cd0ab476e2 ("platform/chrome: cros_ec: Query EC protocol version if EC transitions between RO/RW") > Signed-off-by: Tzung-Bi Shih Reviewed-by: Prashant Malani > --- > Changes from v3: > (https://patchwork.kernel.org/project/chrome-platform/patch/20220209095703.517608-2-tzungbi@google.com/) > - Simplify by initializing the variables at the beginning. > > Changes from v2: > (https://patchwork.kernel.org/project/chrome-platform/patch/20220209045035.380615-2-tzungbi@google.com/) > - Fix grammar error in commit message. > - Change the code that don't rely on zeroed memory. > - Remove unnecessary `if` checks before calling platform_device_unregister(). > > Changes from v1: > (https://lore.kernel.org/lkml/20220125101527.1812887-1-tzungbi@google.com/T/#u) > - Use imperative mood in commit message. > - Use IS_ERR_OR_NULL() in 1st patch. > > drivers/platform/chrome/cros_ec.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/platform/chrome/cros_ec.c b/drivers/platform/chrome/cros_ec.c > index fc5aa1525d13..ff2a24b0c611 100644 > --- a/drivers/platform/chrome/cros_ec.c > +++ b/drivers/platform/chrome/cros_ec.c > @@ -189,6 +189,8 @@ int cros_ec_register(struct cros_ec_device *ec_dev) > ec_dev->max_request = sizeof(struct ec_params_hello); > ec_dev->max_response = sizeof(struct ec_response_get_protocol_info); > ec_dev->max_passthru = 0; > + ec_dev->ec = NULL; > + ec_dev->pd = NULL; > > ec_dev->din = devm_kzalloc(dev, ec_dev->din_size, GFP_KERNEL); > if (!ec_dev->din) > @@ -245,18 +247,16 @@ int cros_ec_register(struct cros_ec_device *ec_dev) > if (IS_ERR(ec_dev->pd)) { > dev_err(ec_dev->dev, > "Failed to create CrOS PD platform device\n"); > - platform_device_unregister(ec_dev->ec); > - return PTR_ERR(ec_dev->pd); > + err = PTR_ERR(ec_dev->pd); > + goto exit; > } > } > > if (IS_ENABLED(CONFIG_OF) && dev->of_node) { > err = devm_of_platform_populate(dev); > if (err) { > - platform_device_unregister(ec_dev->pd); > - platform_device_unregister(ec_dev->ec); > dev_err(dev, "Failed to register sub-devices\n"); > - return err; > + goto exit; > } > } > > @@ -278,7 +278,7 @@ int cros_ec_register(struct cros_ec_device *ec_dev) > err = blocking_notifier_chain_register(&ec_dev->event_notifier, > &ec_dev->notifier_ready); > if (err) > - return err; > + goto exit; > } > > dev_info(dev, "Chrome EC device registered\n"); > @@ -291,6 +291,10 @@ int cros_ec_register(struct cros_ec_device *ec_dev) > cros_ec_irq_thread(0, ec_dev); > > return 0; > +exit: > + platform_device_unregister(ec_dev->ec); > + platform_device_unregister(ec_dev->pd); > + return err; > } > EXPORT_SYMBOL(cros_ec_register); > > -- > 2.35.1.265.g69c8d7142f-goog >