Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp966318ybi; Fri, 14 Jun 2019 06:25:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqxILj4oZLjXZvcsQ2iTgtx/TtCgRAMTf8MG+JNCUAfoVyf15sok9p9tarQmhPQmel2O0Bzf X-Received: by 2002:a63:5211:: with SMTP id g17mr33387830pgb.405.1560518758702; Fri, 14 Jun 2019 06:25:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560518758; cv=none; d=google.com; s=arc-20160816; b=iKuAPNKsdfEVBzFO4j5QbTpl/8xU0X+PqGotu3pk/k5vWxRJQw67gk8lc5c4xU841i 88Ic7mZm6NLhFAF4dcdlvwzHmVGBMsYrAukiKqvkOeAYpaGplR8dpMMqof6rp+Ltqiuu 2kbXfsSb9Hq32eF9A0CoVstl1VW0RVsnO7ou7/42pwCd3QS3Swa4Kya8tpgTa8iZBv5/ yIIiTx4sLPOwsNE1v3m1Xou3RQnEMfi0wSGvdGb7F+Ep5EI5qtgHaBH5wVx1p1Eon8ds d0kc0Ho47ldeHXSj2zXpPEsYpiRSSKwUkm4/yJJjW2Gby3UrfVoeUVuxIT7e/vhrr0J/ I40Q== 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=tWjSiEtdMO12OoUCtL1vHglcHoug/gXBV+OlmolHQRY=; b=GCSgqKf013fxINEDgSKM4fampqSPBOEsjERNHHfGvLM4jgGbwie+5FG6hwBdEpUZW1 cAA5si1HcEnfq/uwUGsqDaFaExtyz2A9iEhqNtEZYB8ZVmnRsGHh1hwYxYwNyuo+nnhM HFweZf5p8CJd10Sn0FMBXwzrrPAjVbqJgqEJpy9qU1nfU+66wbcn3nwGnb/Jcm+occA6 KjDVtcgz/B6z7xl39MkeZ2Gc0tgwwxcpku8q2yBG4e8yTJ3MCzqxuoK4gb4Qc8OjIbnQ BVEfh/7Zv6ZnETI53lx9tgS1aB5lJcvTbzSLbCtGNSxk7aFyK/e9RqJokX07RKb/Z7DP JgWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=OmQBp9cd; 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 t16si2399321pfh.100.2019.06.14.06.25.41; Fri, 14 Jun 2019 06:25:58 -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=OmQBp9cd; 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 S1728033AbfFNNYE (ORCPT + 99 others); Fri, 14 Jun 2019 09:24:04 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:39856 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727787AbfFNNYE (ORCPT ); Fri, 14 Jun 2019 09:24:04 -0400 Received: by mail-wr1-f66.google.com with SMTP id x4so2536815wrt.6 for ; Fri, 14 Jun 2019 06:24:03 -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=tWjSiEtdMO12OoUCtL1vHglcHoug/gXBV+OlmolHQRY=; b=OmQBp9cdMxiYMKC7DBZXYCLvxIKQrlLPcAjj/mfYJ1TovAdeKZLYNKY8Nf5g7JfmNm H7ynExTFF9qmk5kYuZUrLMFID0DF5jXarU9D9C2Iw7EKKiunk/dv397VC868NTGR7iET rUF7f7HF4Jf09qDukf7bvCLtD49gFKXRtoueEFc9L1+hGSetQizBACUs1NAfBgIWPhzF N/8nuqMafjmaz0F7lB9pcwVGpI+viPDDCg+dHG2WSQc1VLOUPOrsvfxqSO8OhXqnsUh2 6nTy7xTKzd+PFd4PXJv3B4h6APUyN06f8/kkpkPoCNikj16bknsyrhp7YRDqTId2kKBi yXMA== 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=tWjSiEtdMO12OoUCtL1vHglcHoug/gXBV+OlmolHQRY=; b=M69J6SxjwIVCGlLoGn5GukulMnFAANcKCuQct6knvZtV9fMUX80Nzk/xO6q7e7yu9T GZ6712bCY4HtiaTSpx3puFgsgqs6m8cFeoQRhimqzkQrnKwQ6yenlfkPJ1bX798qlpXf EEhacLWoKu6EbtrXY5w982MCepepooJ80Pqs51hmgiCfmDj0DwbWEe5MCj73rM2wvdca tN/REvwrhjpr1EFgLSSj6jyIhN8weOnB+vSOnx28zo74ApCicbJUxKvDPFZdmlouGqqT UljqPMNJigOZ6I305hmc92WlQjyEvfT4G/rDPx4IBygff7HVX3bLg49pz0yQVoidX06G iDPg== X-Gm-Message-State: APjAAAWruizCi8fRVC3M4XGS6ZNphCjdNQqzWRA8Q6TmTqh962XL4008 HfQESqa38JSrsInLvEZ+FXwnuuJmTwEQ6f2fM6kP X-Received: by 2002:adf:9d81:: with SMTP id p1mr15138460wre.294.1560518642613; Fri, 14 Jun 2019 06:24:02 -0700 (PDT) MIME-Version: 1.0 References: <1560507893-42553-1-git-send-email-john.garry@huawei.com> In-Reply-To: From: Bjorn Helgaas Date: Fri, 14 Jun 2019 08:23:51 -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 [try another address for Zhichang; first one bounced] On Fri, Jun 14, 2019 at 8:20 AM Bjorn Helgaas wrote: > > [+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 > >