Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1280594pxb; Fri, 21 Jan 2022 14:13:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJxgb1iz03qQo/GJMfuZMpVraRDLR0+wisStLlPRA6lhabIb9jSX1OFma2mmtHcjvS1kOS3A X-Received: by 2002:a63:171a:: with SMTP id x26mr4280216pgl.447.1642803215059; Fri, 21 Jan 2022 14:13:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642803215; cv=none; d=google.com; s=arc-20160816; b=efVxIeDwLWGaGqZWpi31O+K3FdVq5ty/Jq/QdqhAfXeZYAnx0tSWbY6KUR8F91skMv NGd2rOw3nTgAfCdd1EwqqMBXsYhNVnqAyHfi6LKE8eV/8Q3k9/9U1+A5C11vSFj9KMxg KYKVn+Q3VPuhARmZxjM4Pryq1XOGVMzCne8L0/O0H9cYyXAd5TZJx2ExbTLCNvMlk38W bUqI2qIHHz7RcVoNwVIdwSwNyCkrzPo7KCM8dEn7R5Y77+G4C+gQOa8A20N7H1MXMyTM MEt8Hv5UfkOq4pRJIF+0gYELrXQGlD/Euh5qK+GUfKb0e8xBCrS5akmwpLFuJL+fOCu5 08hA== 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=2KRtOHbY+iEJq9HfSDY0hl4UcUFuJy+kf9sLEgb7rvM=; b=yg8q1mQCMBAxKTTOvsFwtENjx/fdG9h1xeJJUlv2GgkYsxBLHNGTZaV5HqcbQz4+5p 8yIZU4+MO9X+LZp6N+LgNl6yTpDdnreVFQNcky8z56F+5nXEQHG2kKea9rGqfp62Okcx ncqhEd8FI9ZPRftFer0IdZ86Nqv2/YY8yWuXxEJHvSG1Zm+o/Fvs9iPRCwaw4nR7U6tg iG6YXzOc7kszIt25i5IybBcLaFFSu7I91LNX3V2yUiM7Kzb4BkzBvMATu9MNQsrzJigI nRVN3QX9LR5i5O+Ae4kvjd3EdExxY5AKdMpBkW+HYK2UChtm+QsR6s9IqQFIvqsSrIJi hz4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ionos.com header.s=google header.b=i3Y73nif; 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=pass (p=NONE sp=NONE dis=NONE) header.from=ionos.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u8si7109777pgm.303.2022.01.21.14.13.23; Fri, 21 Jan 2022 14:13:34 -0800 (PST) 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; dkim=pass header.i=@ionos.com header.s=google header.b=i3Y73nif; 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=pass (p=NONE sp=NONE dis=NONE) header.from=ionos.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344451AbiATOHI (ORCPT + 99 others); Thu, 20 Jan 2022 09:07:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241860AbiATOHH (ORCPT ); Thu, 20 Jan 2022 09:07:07 -0500 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76E3EC061574 for ; Thu, 20 Jan 2022 06:07:07 -0800 (PST) Received: by mail-ed1-x529.google.com with SMTP id j2so29098280edj.8 for ; Thu, 20 Jan 2022 06:07:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2KRtOHbY+iEJq9HfSDY0hl4UcUFuJy+kf9sLEgb7rvM=; b=i3Y73nifEBrIutvODwIjryyqWMK2H7NX0bRs8MPMVYVgK0gIPQ7wQ29lGTmxUheND5 yw2IrD8FlsD9d7onvZQ9Y8WTSxKQd2M6IFU571t4CemhNuNWTPaFcvdhxOtwmibnpTIb E7PAV39X7nCQhVe3HRe+isYdleonuwvjYVR+Df3h6gLoCLOTI1a8Yy8VY/GO79wb9cV3 DeNORziXKIWAXEdYYdwflnq9eVqPusqhLf9+hZSVkV+8iRMVvfEP8xC6+TP+5q3jTlZl ioxf1t7ri3IPwXMeSpvXfyMVVj+xDpeZPhpAJKv3GI8PKmMy24wQrnbtFdqCm2wUoSqL J62w== 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=2KRtOHbY+iEJq9HfSDY0hl4UcUFuJy+kf9sLEgb7rvM=; b=JWQ8zz6RWeUEMEXmOAj9uYn8HzV2rWGqoW6m1aYer6GduiXslpvskuUdKJdXMuUvYY BfbpLz8XmnDVC1hgQCVBNhtbSGOKgdP+ih9SPFdf2V5A1SCOIM03PqcNCFLNzvRbwbJi jYoDWxChEVhDb4Q3jxgxLg5jrdLtyYBR6BfER9bZ3dxus4qEjeZO3Wz2of8wEvfcWX47 f9fOExlD+LByXNKu6BBD2e7K4xDcRjFVnEuIySeRrAr9VBOyhARZisZdMV8KHmc+G7QS 5HH2oB6jns6J+YX5DwIqCHplU1SK2WF0kBXzODpH1aaezAaOp+7tK3my37/X7ByY6ORl qsUA== X-Gm-Message-State: AOAM530T1iQ3bD3Z/D2QPiSeeAVuJ8L/Qv4fDhIJ8VToLpYfdnx53A8U 77I+EXk7go/q4BR5JthSzWloDTZaXwj8PisHY23RYg== X-Received: by 2002:a05:6402:195:: with SMTP id r21mr35564718edv.174.1642687625993; Thu, 20 Jan 2022 06:07:05 -0800 (PST) MIME-Version: 1.0 References: <20220120103714.32108-1-linmq006@gmail.com> In-Reply-To: <20220120103714.32108-1-linmq006@gmail.com> From: Jinpu Wang Date: Thu, 20 Jan 2022 15:06:55 +0100 Message-ID: Subject: Re: [PATCH] RDMA/rtrs: Fix double free in alloc_clt To: Miaoqian Lin Cc: "Md. Haris Iqbal" , Jason Gunthorpe , Danil Kipnis , linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 20, 2022 at 11:37 AM Miaoqian Lin wrote: > > Callback function rtrs_clt_dev_release() in put_device() > calls kfree(clt); to free memory. We shouldn't call kfree(clt) again. > right, there is a bug, but the fix is not right. > Fixes: 6a98d71daea1 ("RDMA/rtrs: client: main functionality") > Signed-off-by: Miaoqian Lin > --- > drivers/infiniband/ulp/rtrs/rtrs-clt.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > index 7c3f98e57889..61723f48fbd4 100644 > --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c > +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > @@ -2741,7 +2741,7 @@ static struct rtrs_clt_sess *alloc_clt(const char *sessname, size_t paths_num, > err = device_register(&clt->dev); > if (err) { > put_device(&clt->dev); > - goto err; > + goto err_free_cpu; > } > > clt->kobj_paths = kobject_create_and_add("paths", &clt->dev.kobj); > @@ -2764,6 +2764,9 @@ static struct rtrs_clt_sess *alloc_clt(const char *sessname, size_t paths_num, > err: > free_percpu(clt->pcpu_path); > kfree(clt); > + clt->pcpu_path = NULL; > +err_free_cpu: > + free_percpu(clt->pcpu_path); this still lead to use after free, because clt could be free already. the right fix should move the free_percpu() to the release call back before kfree(clt); > return ERR_PTR(err); > } > > -- > 2.17.1 >