Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4278414pxf; Tue, 23 Mar 2021 07:10:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOETtc5l7eSH9C7+xFIjYOmCF8mloN2ec8GOMS4gLjn7SPJDMCDMtWM7DyJnbRrRnCkd2M X-Received: by 2002:a5d:664e:: with SMTP id f14mr4411692wrw.382.1616508607545; Tue, 23 Mar 2021 07:10:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616508607; cv=none; d=google.com; s=arc-20160816; b=VQLS8s+DllXfykUIuCRLsfD8qai5/3ElKyXeKBUc2YNPdRTpgH00lf2W4s3ehoMVVV lbCzb610zZSzX8BqRR4XAQoDRFmPC6M6a9YizFscbeNUs1V10Skji7Ybf7Zu8uy3MPml KfCx0LVZRtB76y6yzRQyJWdyFbC/No063T0f2RoYC2xiwZVcIxnju9HS80zHn2i4hVRl in5f+43/dh1EnIDE0CJ1XnpI45fd4VOCRLYNkAxH3d0bmc4aMzxTEOyMuCa27/4nwq3m ai4Vyc1wvJsig/DuOL4DXHQRw49rXR5iKlAmhyU9qB/1XRnGFJkKueQ3q6mp4LnWTFKr i5zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:organization:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :ironport-sdr:ironport-sdr; bh=UJhL1S5RLgR4Ti8YJNZw9iNXN5W1OZfYtBwuDILx0ZU=; b=xt9/afTE2S4uw/LmMGU5o/LxpzR0hl56reFpF8gxhFLtCpjeN8B2tmmKRQxmyox2lv hXbDmQqf/6VsSNxaFcMyRf4Gdyk4HPtUDGiu1u5t4lYGZ7eZacY0BHufpPhacvSNJl31 J86LNmZANeiaNfo17jnMKyNU+wqu80Y5UjPw0zGbGWrSDhcYXyrmR8SFzkW2FNkeimNd vI+qYj3Mb5uhX8hmntbD803tToUA6HQXKTimZzbkyMxHppMWhgTSLiIz43l+g8YPjtXT t1ioMgCutp03Pj0ICJtGDJBna77Cmslt0pLRKdoojp+TFQAjswb5hxuIh2FM4Kwo6gCu ItIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p12si12939965edq.288.2021.03.23.07.09.41; Tue, 23 Mar 2021 07:10:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232012AbhCWOHq (ORCPT + 99 others); Tue, 23 Mar 2021 10:07:46 -0400 Received: from mga14.intel.com ([192.55.52.115]:44865 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232160AbhCWOG5 (ORCPT ); Tue, 23 Mar 2021 10:06:57 -0400 IronPort-SDR: +y3/JVDdoIIC31NpJkB7XNAKY5teYlH9d+EnquSRvdiCAmQ0GXJFB21x5iEq8X39uEqUrXINUv iU++ooq6gRmg== X-IronPort-AV: E=McAfee;i="6000,8403,9931"; a="189882968" X-IronPort-AV: E=Sophos;i="5.81,271,1610438400"; d="scan'208";a="189882968" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2021 07:06:56 -0700 IronPort-SDR: xx5MaGxRVyHqmO79WHr0rAI4B69Xc/n2M2G8cNkPVKLu7k30HN1Kd0f3IeX0lmIN6mDh1JW1Yi huciVuHbkGxQ== X-IronPort-AV: E=Sophos;i="5.81,271,1610438400"; d="scan'208";a="513754729" Received: from lahna.fi.intel.com (HELO lahna) ([10.237.72.163]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2021 07:06:50 -0700 Received: by lahna (sSMTP sendmail emulation); Tue, 23 Mar 2021 16:06:47 +0200 Date: Tue, 23 Mar 2021 16:06:47 +0200 From: Mika Westerberg To: Lv Yunlong Cc: andreas.noever@gmail.com, michael.jamet@intel.com, YehezkelShB@gmail.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] thunderbolt: Fix a double put in tb_cfg_read_raw Message-ID: <20210323140647.GV2542@lahna.fi.intel.com> References: <20210323031512.12234-1-lyl2019@mail.ustc.edu.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210323031512.12234-1-lyl2019@mail.ustc.edu.cn> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Mon, Mar 22, 2021 at 08:15:12PM -0700, Lv Yunlong wrote: > In tb_cfg_read_raw, req is allocated by tb_cfg_request_alloc() > with an initial reference. Before calling tb_cfg_request_sync(), > there is no refcount inc operation. tb_cfg_request_sync() > calls tb_cfg_request(..,req,..) and if the callee failed, > the initial reference of req is dropped and req is freed. > > Later in tb_cfg_read_raw before the err check, > tb_cfg_request_put(req) is called again. It may cause error > in race. Hmm, tb_cfg_request() does tb_cfg_request_get() too and in case of error it does tb_cfg_request_put(). So the refcount should be fine. What am I missing? > > My patch puts tb_cfg_request_put(req) after the err check > finished to avoid unexpected result. > > Signed-off-by: Lv Yunlong > --- > drivers/thunderbolt/ctl.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/thunderbolt/ctl.c b/drivers/thunderbolt/ctl.c > index f1aeaff9f368..bb60269c89ab 100644 > --- a/drivers/thunderbolt/ctl.c > +++ b/drivers/thunderbolt/ctl.c > @@ -890,11 +890,11 @@ struct tb_cfg_result tb_cfg_read_raw(struct tb_ctl *ctl, void *buffer, > > res = tb_cfg_request_sync(ctl, req, timeout_msec); > > - tb_cfg_request_put(req); > - > if (res.err != -ETIMEDOUT) > break; > > + tb_cfg_request_put(req); > + > /* Wait a bit (arbitrary time) until we send a retry */ > usleep_range(10, 100); > } > -- > 2.25.1 >