Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp3312090imw; Mon, 11 Jul 2022 06:21:35 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s2P4Y0Br77dIL27J5nK03TQoXqRYUMCSvsfZa5clw+8yq4Bmrfsb1jkCWSPa0fV4UECQ3Q X-Received: by 2002:a05:6a00:2449:b0:528:3a29:e79d with SMTP id d9-20020a056a00244900b005283a29e79dmr18685784pfj.39.1657545694872; Mon, 11 Jul 2022 06:21:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657545694; cv=none; d=google.com; s=arc-20160816; b=Z8wHIS3RjGQ7YxvqDh3QHl28GTVvX06kZuUaB8jvLENWVVvv/BIn5coEZ3nh9fVY59 1bc6Zf9L89TNbbzPbz+sfCh6WHkVWgvWEGab89pbXjw4BQCOOrd9iiAW6v50x9otm/mL ZA8s7zxsb4UQPdRBEf2Gbts57aLGVnSrBADfSgPrgK2NACBLo18RJtRkV41meP/D/uCE hpf83du0qD1VX7U8LwLflPdBnCTBQ6NilmS0H4csPHQbv9JGL3CLG+RKq0bLqIGzyiPc 6qseHAHggL83z7b8LSp7Y7kPNkSCMxCbn2MQNHXQDo2KuV5ugmTblz1w7nJkIa1/mtcE 2urw== 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=d3w648xSE+rcJKTvNdyXERDjQNCJb3jaHtEQzPygYFY=; b=L/bB+83DDb5rh/m54R7L4nQLsTAmZdH+EDUD0xKmewAI2XA7M58UHhP7W/1GTQ/Uut zFErkKqadWgm+SjjzymmqkksCaGGDT97u61APr6/XOQeNcty8o3qPB0sYGcffuRf8zt+ wwUjR3ePiGhVBBGuZX3njX8wmuVgGSfL8/viXDi7ufM7VB+Rc/3p74HfxE6nWYnu5IqR XWQLmaGOB7BYQBC/87d9SYj/rRH5hoHOxlma0ZCmEsce/lMicGvYqbMf7t1c13rzCs6o yN+xKkM7n+ckuEPGsYcXMV/Mw0Z4CxuYZ9URk9YJPNvT+gSM21zf+VipjpVJNHZkshvf TNfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=iX4ZaqHu; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p7-20020a056a000b4700b005254e98b56csi11196473pfo.153.2022.07.11.06.21.22; Mon, 11 Jul 2022 06:21:34 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=iX4ZaqHu; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230028AbiGKNQZ (ORCPT + 99 others); Mon, 11 Jul 2022 09:16:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229966AbiGKNQY (ORCPT ); Mon, 11 Jul 2022 09:16:24 -0400 Received: from mail-oa1-x2d.google.com (mail-oa1-x2d.google.com [IPv6:2001:4860:4864:20::2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E25953F335; Mon, 11 Jul 2022 06:16:21 -0700 (PDT) Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-10c0119dd16so6631543fac.6; Mon, 11 Jul 2022 06:16:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d3w648xSE+rcJKTvNdyXERDjQNCJb3jaHtEQzPygYFY=; b=iX4ZaqHu72v0xD/rGJLs5RBCMorkup6Zpug1ld/RhBeeDwfdDOCfSAx1pqWGit6Pw0 1NSiKv14MkaDc/07mOyOkc52bTekpdbzZjsUp0+aTTADL/NXO/mRXtuymP0l6iJDSQP4 fdaEqFQAQAGMBpUus7TqrV+DjIfzYjK/0ckyFONHPI44EuwvgTfD/x74fveRRbauW+Ts dK63F0Fy4xh5lbmLcsUWqAgV7Scdfq4B28UNu1no6KQEgq3n5ul80Ce090W9rrOHzpcH 69YwITAaobSKbZDKcMO6QXqQY0biuv0y2Gu/1eyT/ZzugX9BAiH4eEcuGfW+IImSwfR0 Q8ww== 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=d3w648xSE+rcJKTvNdyXERDjQNCJb3jaHtEQzPygYFY=; b=Xj5iq8ecbotCgfceFakb9lPhQSDZ+YBb0542OtjD/Fcwf3UFgIzkjAc6l+eU0Y8Jlz ismxOSh9h+K+gCgu0Id13IhYufZt3iVzxhN0AIBIxeUIQbhG9FKExHvJSZe5IzpYvTox tNuajjtSUVy6XKSfF2vLWxw4+3wkid4aLNT3ZV1I4rad2Fk4uYkx6pI4A07u+2wtew8q AltnBCrL0rsvf8QvQNZRuj+Y1Kl7PUCxo4SHhS6AxgTwT8Fx0I2rMXgq5aPFn+93ny06 +eBqJwS1PWihmMIw4cjrNZ7OmYER5GgYOzweH7Df9tm6LD+ttPYu+zYWlmxxxwRx836L Tnhg== X-Gm-Message-State: AJIora+rMxLN1P5ufetwazgw3DeKfknZzWZPYsCs+HtzDPBu0YEHNdgU RUOU7IFVwG/Rd108l8er1p7A9mcP/LK5odLtyUU= X-Received: by 2002:a05:6870:c093:b0:10c:4f6f:d0ab with SMTP id c19-20020a056870c09300b0010c4f6fd0abmr7254468oad.194.1657545380424; Mon, 11 Jul 2022 06:16:20 -0700 (PDT) MIME-Version: 1.0 References: <20220711005319.2619-1-liubo03@inspur.com> In-Reply-To: <20220711005319.2619-1-liubo03@inspur.com> From: Sergey Ryazanov Date: Mon, 11 Jul 2022 16:16:08 +0300 Message-ID: Subject: Re: [PATCH v2 1/1] net: wwan: call ida_free when device_register fails To: Bo Liu Cc: Loic Poulain , Johannes Berg , David Miller , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, open list Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 Hello Bo, generally the patch looks good to me, but it needs improvement in the wwan_create_dev() part. Sorry that I missed this part in the previous review. See details below. On Mon, Jul 11, 2022 at 3:54 AM Bo Liu wrote: > > when device_register() fails, we should call ida_free(). > > Fixes: 9a44c1cc6388 ("net: Add a WWAN subsystem") > Signed-off-by: Bo Liu > --- > Changes from v1: > -Add a Fixes tag pointing to the commit > > drivers/net/wwan/wwan_core.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c > index b8c7843730ed..0f653e320b2b 100644 > --- a/drivers/net/wwan/wwan_core.c > +++ b/drivers/net/wwan/wwan_core.c > @@ -228,8 +228,7 @@ static struct wwan_device *wwan_create_dev(struct device *parent) > wwandev = kzalloc(sizeof(*wwandev), GFP_KERNEL); > if (!wwandev) { > wwandev = ERR_PTR(-ENOMEM); > - ida_free(&wwan_dev_ids, id); > - goto done_unlock; > + goto error_free_ida; > } > > wwandev->dev.parent = parent; > @@ -242,7 +241,7 @@ static struct wwan_device *wwan_create_dev(struct device *parent) > if (err) { > put_device(&wwandev->dev); > wwandev = ERR_PTR(err); > - goto done_unlock; > + goto error_free_ida; > } > > #ifdef CONFIG_WWAN_DEBUGFS > @@ -251,6 +250,8 @@ static struct wwan_device *wwan_create_dev(struct device *parent) > wwan_debugfs_dir); > #endif > > +error_free_ida: > + ida_free(&wwan_dev_ids, id); > done_unlock: > mutex_unlock(&wwan_register_lock); > This hunk misses the case of a successful device registration. After patching, the code will look like this: err = device_register(&wwandev->dev); if (err) { put_device(&wwandev->dev); wwandev = ERR_PTR(err); goto error_free_ida; } wwandev->debugfs_dir = debugfs_create_dir(kobject_name(&wwandev->dev.kobj), wwan_debugfs_dir); error_free_ida: ida_free(&wwan_dev_ids, id); done_unlock: mutex_unlock(&wwan_register_lock); As you can see, even if the device will be registered successfully, the allocated id will be unconditionally freed. The easiest way to fix this is to add "goto done_unlock" right after the debugfs directory creation call. So the hunk should become something like this: @@ -249,8 +248,12 @@ static struct wwan_device *wwan_create_dev(struct device *parent) wwandev->debugfs_dir = debugfs_create_dir(kobject_name(&wwandev->dev.kobj), wwan_debugfs_dir); #endif + goto done_unlock; + +error_free_ida: + ida_free(&wwan_dev_ids, id); done_unlock: mutex_unlock(&wwan_register_lock); -- Sergey