Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp962921ybi; Fri, 14 Jun 2019 06:22:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqxxe4p73XYqiYS5D5FuX2atjY2Sk+BhyBLTYfuKdr7fJUeJsmNgOslmw9Oy2GvNBQJbN9Yf X-Received: by 2002:a17:902:b594:: with SMTP id a20mr13962890pls.259.1560518560723; Fri, 14 Jun 2019 06:22:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560518560; cv=none; d=google.com; s=arc-20160816; b=IF1OLmb24/zym+hdrDaxrm9Y/IZjFwvJXLVpzeIGVpG3bHVAJ7UDWHTS+Cs3c6+OY7 0V2llf+jqse51nAjCkNqSv/zGfUU+lZTjZWpfRz6wDOeRCatFBIwrtMuYP/q46iKOaqu wvEp7WuCUqHd1dAMp7adUIaPf2NokzdbN/QsXVr6gxaYuAT2v3kDg2jeJIpKDailyuzR asss4HirFTIo2jhXe4EWwO2p1FPb5g92coIMhbfB7QP61caxXacECRi4R0sXVLSkMTm2 tXsUOZ0RsQR/C6UsnFHRgl7P6xAHT9tduDMRP+2HRsI6fI/uMueKQcO//6bKeVT+yQES HZQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=BtIRpYfmmNtV+f4PflSdP0iUXELkvzxOAHQGC9syvTI=; b=v1PKshinJrsrpFBcerLA0nFZCf8KdfAPfqCUZTQz62s35xKM/eEROAmc1s+8jpWOfi Z5zMSbKbRe2iqme7xejMMvDxLDvI1sV+xOzPBdbNlmcTahzVy63lXtDA9aTXk71GQzY/ y+IkRQQFJ0sOL3/pNDK3pisDR2NSb+Im8uEk6t6ZLHgPJVdENB3kv0rpMds56dCjCBaV 5eYkdxfg6LLQ6uS/6zdY6Cbhd0/4xrJ5e7k5AlaIE6W/s7u4o/Vi4xiChs8w40Y2OGzK gACbojuVkAa4iN/hqFYoYzD9XN8x7AXEweyupwIecvATO+4pgWDIaph0pEAFe0LX0Z1O 2CGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Kkl+hSSF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 29si2612570pgy.132.2019.06.14.06.22.24; Fri, 14 Jun 2019 06:22:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Kkl+hSSF; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728033AbfFNNUZ (ORCPT + 99 others); Fri, 14 Jun 2019 09:20:25 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:39386 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727686AbfFNNUZ (ORCPT ); Fri, 14 Jun 2019 09:20:25 -0400 Received: by mail-wr1-f66.google.com with SMTP id x4so2523793wrt.6 for ; Fri, 14 Jun 2019 06:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=BtIRpYfmmNtV+f4PflSdP0iUXELkvzxOAHQGC9syvTI=; b=Kkl+hSSFO4wXIrBgYMmZDjEUm6hvl69U+fUZtsIgxOeG8sCiw3MQW4sZAdO8W790En UNJS3S1FxTkZi5TKG7Kn9bLMXihxGMsvW26AGUZNoHgzffpraZi+DEIuoGnWQ8SYAets QPFCSH0mGHWZQt/1y22XjvHdBFdL1qKWlhNPgs2v2Ir20ykWQKL6nU12/7o2+xrebrVm mVzFlDJghIpFktYQkYBo+HFZjre6CWl87R2kO9W4nm9xjGZqftyhlgQMM0sqnX4ufqnc uXZOa7CMrOxCPEq0LO9hyyMDG4A+1C8utZFo0Ib+kL9wcLym8m2L8xhgY7Gv9nSpOWou Q5IA== 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=BtIRpYfmmNtV+f4PflSdP0iUXELkvzxOAHQGC9syvTI=; b=UHsrPii3tkvv68EpAQilsb9QrF81XL/Zi/Z6yUmlik2Qic0iAJeS9/UkUZqhsqAZl6 28tpFSbpe4rkQpDbMBXi30P9WeLqGYYVEQ6F5K2iGKLO+EzjpZD9N+97ueE+xKZKkn2I sPZFFLeBrDRrnHZJsoiGNR2b1/1v2iRmzS5Pt34pY0Pnlc8jCCFiYPmEonxjC+ggKfmq a5wH8DK1sEs6OQX0AaJrCoX3hOC+A5td3nHEPyZ8/X1lyXqcQxtbABYfrtu65tyYj3RA UzMWNd3dc9mOSe7a85GoHy5XhTUR66BMMT8bl4CK+LJWHLJrQ6uQBDA54z10VdaC3BSE fEsA== X-Gm-Message-State: APjAAAWPsCualAxImyFvimCq2KN19dSwL/1j9x9hq+FSQsF3wQOdHwCs 7lT4O6F8KXdEi5sZgbFC06TcSGyQ7cTNAxXDa8Jb X-Received: by 2002:a05:6000:146:: with SMTP id r6mr51629714wrx.237.1560518422586; Fri, 14 Jun 2019 06:20:22 -0700 (PDT) MIME-Version: 1.0 References: <1560507893-42553-1-git-send-email-john.garry@huawei.com> In-Reply-To: <1560507893-42553-1-git-send-email-john.garry@huawei.com> From: Bjorn Helgaas Date: Fri, 14 Jun 2019 08:20:10 -0500 Message-ID: Subject: Re: [PATCH v2] bus: hisi_lpc: Don't use devm_kzalloc() to allocate logical PIO range To: John Garry Cc: xuwei5@huawei.com, linuxarm@huawei.com, arm@kernel.org, Linux Kernel Mailing List , Joe Perches , Zhichang Yuan Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [+cc Zhichang, logic_pio author] On Fri, Jun 14, 2019 at 5:26 AM John Garry wrote: > > If, after registering a logical PIO range, the driver probe later fails, > the logical PIO range memory will be released automatically. > > This causes an issue, in that the logical PIO range is not unregistered > (that is not supported) and the released range memory may be later > referenced > > Allocate the logical PIO range with kzalloc() to avoid this potential > issue. > > Fixes: adf38bb0b5956 ("HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings") > Signed-off-by: John Garry > --- > > Change to v1: > - add comment, as advised by Joe Perches > > diff --git a/drivers/bus/hisi_lpc.c b/drivers/bus/hisi_lpc.c > index 19d7b6ff2f17..5f0130a693fe 100644 > --- a/drivers/bus/hisi_lpc.c > +++ b/drivers/bus/hisi_lpc.c > @@ -599,7 +599,8 @@ static int hisi_lpc_probe(struct platform_device *pdev) > if (IS_ERR(lpcdev->membase)) > return PTR_ERR(lpcdev->membase); > > - range = devm_kzalloc(dev, sizeof(*range), GFP_KERNEL); > + /* Logical PIO may reference 'range' memory even if the probe fails */ > + range = kzalloc(sizeof(*range), GFP_KERNEL); This doesn't feel like the correct way to fix this. If the probe fails, everything done by the probe should be undone, including the allocation and registration of "range". I don't know what the best mechanism is, but I'm skeptical about this one. > if (!range) > return -ENOMEM; > > @@ -610,6 +611,7 @@ static int hisi_lpc_probe(struct platform_device *pdev) > ret = logic_pio_register_range(range); > if (ret) { > dev_err(dev, "register IO range failed (%d)!\n", ret); > + kfree(range); > return ret; > } > lpcdev->io_host = range; > -- > 2.17.1 >