From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDA4CC433E0 for ; Sat, 11 Jul 2020 00:53:04 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7E39320674 for ; Sat, 11 Jul 2020 00:53:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=intel-com.20150623.gappssmtp.com header.i=@intel-com.20150623.gappssmtp.com header.b="iPPbSg9Q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E39320674 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 0AD608D0002; Fri, 10 Jul 2020 20:53:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 05DDC8D0001; Fri, 10 Jul 2020 20:53:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EB5088D0002; Fri, 10 Jul 2020 20:53:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0093.hostedemail.com [216.40.44.93]) by kanga.kvack.org (Postfix) with ESMTP id D584C8D0001 for ; Fri, 10 Jul 2020 20:53:03 -0400 (EDT) Received: from smtpin22.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 92456180AD81D for ; Sat, 11 Jul 2020 00:53:03 +0000 (UTC) X-FDA: 77023970646.22.car51_310125226ed2 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin22.hostedemail.com (Postfix) with ESMTP id 660DE18038E67 for ; Sat, 11 Jul 2020 00:53:03 +0000 (UTC) X-HE-Tag: car51_310125226ed2 X-Filterd-Recvd-Size: 4629 Received: from mail-ed1-f66.google.com (mail-ed1-f66.google.com [209.85.208.66]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Sat, 11 Jul 2020 00:53:02 +0000 (UTC) Received: by mail-ed1-f66.google.com with SMTP id e22so5940628edq.8 for ; Fri, 10 Jul 2020 17:53:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1Rls/U/lDsLfT4D3DE5n9+9Nu0A90fUMZ5H2LpZadpY=; b=iPPbSg9QOhO1/J2AGGABUiWYW1G+aZBlYGBwtZRUeuvTEkRismRqyyYYb/b5HtXFzD eT6GM4fHT57mSqaeCJSPWS/lhpqKIIW/IEcSX0sOK4gzky06Dhnp/Ip1OIIpfdUL4I9D zaf7XYwr0+dyWUSgZz/fIP6VpjQimltNJozru9KMByXvX/GmYaTxeawAnzBI049LwHqK QyTtiHGsXlvVd8xwGIQmR9G52VI1TJAAt9K92hcxV/pbQ4SMotmatFqvGtbVlMbDTsbL X0IogtzxzfRftbdheB9eRV8vW+J7XAIlFm6MBfLuy3kRg+Ca6FB45eVJjJ060lXd8Yag +wpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1Rls/U/lDsLfT4D3DE5n9+9Nu0A90fUMZ5H2LpZadpY=; b=YzztG414MNorfIKfAS/y+/lZydY1FjKeE4AVE3UhyIbjmRkZFZJ7JWlt9nJV3u0THR FwC+cbGknuMbR58SxRLNMkM+aArw4IImiwdko9KHOuaUju3FHnGkyYB5Rcrv6Js3hS06 fpbIeltzA5FWp/ThyEdASeOaQUwrymvYX/do0OYyEYgYv0MvsKaMSq/WpBo70YwbJO2d 0gltaXwxEn/i5AfuSGFMMMBTc46Kihd1cUnWZFt4mNxQSv2qpiBXunMY/kbF7t3553iJ GmcqajZ+uEPMb6z3K0ysE4xRemvjRDyD7a3n3sav2ZFcSOPDCMf28+BGOxrVq8U0Ag9O aFIQ== X-Gm-Message-State: AOAM531kwa6XNCtj+sXUQEkLm2NFF/cDuR53p8Ul+OrAfmJXNBZ2G5K6 1iJhg068Dn/XjwGQfTW3d92Pobrr8FuM2UGigL5K4w== X-Google-Smtp-Source: ABdhPJzFhcpJg+WtMu5QLudWk0KLldzkSq/YYsINvRouju8S48SBuHcb7Lqaek9OHZZ2kIe4eSSfayb2v5gUYFCpvG0= X-Received: by 2002:a50:a1e7:: with SMTP id 94mr77926426edk.165.1594428781622; Fri, 10 Jul 2020 17:53:01 -0700 (PDT) MIME-Version: 1.0 References: <158500767138.2088294.17131646259803932461.stgit@dwillia2-desk3.amr.corp.intel.com> <158500773552.2088294.8756587190550753100.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: From: Dan Williams Date: Fri, 10 Jul 2020 17:52:50 -0700 Message-ID: Subject: Re: [PATCH 11/12] device-dax: Add dis-contiguous resource support To: Joao Martins Cc: Linux MM , Vishal L Verma , Dave Hansen , Christoph Hellwig , linux-nvdimm , Linux Kernel Mailing List , jmoyer Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 660DE18038E67 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, May 12, 2020 at 7:37 AM Joao Martins wrote: > > On 3/23/20 11:55 PM, Dan Williams wrote: > > @@ -561,13 +580,26 @@ static int __alloc_dev_dax_range(struct dev_dax *dev_dax, u64 start, > > if (start == U64_MAX) > > return -EINVAL; > > > > + ranges = krealloc(dev_dax->ranges, sizeof(*ranges) > > + * (dev_dax->nr_range + 1), GFP_KERNEL); > > + if (!ranges) > > + return -ENOMEM; > > + > > alloc = __request_region(res, start, size, dev_name(dev), 0); > > - if (!alloc) > > + if (!alloc) { > > + kfree(ranges); > > return -ENOMEM; > > + } > > Noticed this yesterday while looking at alloc_dev_dax_range(). > > Is it correct to free @ranges here on __request_region failure? > > IIUC krealloc() would free dev_dax->ranges if it succeeds, leaving us without > any valid ranges if __request_region failure case indeed frees @ranges. These > @ranges are being used afterwards when we delete the interface and free the > assigned regions. Perhaps we should remove the kfree() above and set > dev_dax->ranges instead before __request_region; or alternatively change the > call order between krealloc and __request_region? FWIW, krealloc checks if the > object being reallocated already meets the requested size, so perhaps there's no > harm with going with the former. Yeah, the kfree is bogus. It can just wait until the device is destroyed to be freed, but only if there is an existing allocation. If this is a new allocation then nothing else will do the kfree.