Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp3467435ybh; Tue, 17 Mar 2020 00:19:09 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvzs3A1d/zgLouWI13uvvqtx9csvOYm9SCvMvr53HdDZVIIB7kkPVH0bfRwGA1waXLhlrcD X-Received: by 2002:a05:6808:8:: with SMTP id u8mr2406067oic.37.1584429549360; Tue, 17 Mar 2020 00:19:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584429549; cv=none; d=google.com; s=arc-20160816; b=VWnrBBK8mJVHj3LmxVVuoqv1gGiaOfdqdDtEZv/VqoMiz+vVQS14PS1JKpNMIcVaP1 2RwIV5TYoqoI3Yjyx9Ze92WXS1+fE6xgnF+4+lLqt3PQ96Y5pYLcbIW5OKpiu/lbDTxM zp36BPbeu7lHl2y8FdMfqBiRhDR93DuDSiGzOUheQWqSNZVz2HD4SgMp8aXGYw3OUzrz XzFo/3LGPSmZe/RVo2SM7lJrqbjHRzvugldlztLJK57BCokANnN8W9lkUf82+7uW1bQb A9G1wFaOAibk7awfErqTqd8n5jdFZzjdIVnp1hbLdx4Z37/o0VDRv6VQCaDQ8XAmEk3j o+wQ== 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=1U9j3PtO2mElKN8AUdXKykOK+OIvnmu7fgDMV7+q8no=; b=Hs30n8M69jOMMtAVpS2CvfbuJS5CTBHSPQ2cRuUPh2xBIWb2QFFWJ9L9GV73DedyG5 FAWYSfmRM/QYg+rQO5gjooA/mAOYlbyFdbNfwZuONBlxsvn911vElLrkoWfxRoRb8ReK a6ic1lGCqbaZrmHWHiZ9IVPVZRggJwFofRu7LNBln3vNQJF1ORppaHqlxvOTHTyGmdnF 7NDfR29X23z8p9EuYJ+I1grUWqQXQifxeA/wJdNIjmGNRMCAJThJzPY7vqE4bbU4s/Vv itroYFRvzoneNM4Vu17JjFlcomlvUk/sjWURxQI5+k0p/kMYMr3560kxU3BSP94l948z OT6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=poJxtgck; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i187si1302915oif.89.2020.03.17.00.18.56; Tue, 17 Mar 2020 00:19:09 -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=@gmail.com header.s=20161025 header.b=poJxtgck; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725871AbgCQHSl (ORCPT + 99 others); Tue, 17 Mar 2020 03:18:41 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:51744 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725536AbgCQHSl (ORCPT ); Tue, 17 Mar 2020 03:18:41 -0400 Received: by mail-wm1-f67.google.com with SMTP id a132so20214247wme.1; Tue, 17 Mar 2020 00:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1U9j3PtO2mElKN8AUdXKykOK+OIvnmu7fgDMV7+q8no=; b=poJxtgckMOoiNoSN0kNxMh0lQ8LEMJ3wsDzvPZPdJZSkX4KhXjFtJsJUq3dHEXHY8r BkcwF0MOpg/lCV92BezqinGwG4qVRhJ6ecb0/MJIgw6U6gz1BYh7sE4/fbqddA0lurGz GEhFhdIP9H5zUB+0LKvv067h3AO/D8aZGh4ASVVjg8l3EGY1rZ8oHYqY0dtCudFbH/7v JyyzcDzwdJmfZ8qbLykvya/EeStp/MtthzBPIF+71Krc6xQKK4nTF71HFjUqqgYR+iBR G9yjxUQXXl6DAo1NxiT64DzW+eod8jtqEGv+h4UZTeZwGK2fnSnF1yUPngDImUBgmiym gw2Q== 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=1U9j3PtO2mElKN8AUdXKykOK+OIvnmu7fgDMV7+q8no=; b=O0XpgLytOcUmuStJ11RqEsi+AjTMEcUI2ptUYEpHJUiFS0ejN1YkZcUVrGAC4ii3ky zYdbLKPW6/+M1nU4dJ9i+tpahPYxgzUxurdbuEljxzokaQZiN1qM33pBV7Y/BsOjQytq +CPy4aqAsK7j8YBriqktZVC6xE0KZjwqKO2lvNF5uyUfhZOhTq8GrADthewBwDXVV19Z +A1mxAzoRnT6LBDpMBVou9tAWssJ+9RflysWX02VEiGhP0bNoB+nJ4khyYzJHwQIR1xh 8cyItlOjURq5/MJdd3KeoNmQfOcrkDNo61hpBSrZD3BISz4MxCa41nZLfaDkscbHkyIU IQDg== X-Gm-Message-State: ANhLgQ1m0GVvZq6rh/KuE+mL4gGjihNnk/I0IZ94VL2hA3W+Y7a1uIGl YpSs/ktj5mtbPJ6bDlZ5+eRkgOJe708Uiy7wtNY= X-Received: by 2002:a1c:f615:: with SMTP id w21mr3575344wmc.152.1584429518588; Tue, 17 Mar 2020 00:18:38 -0700 (PDT) MIME-Version: 1.0 References: <20200316101930.9962-1-zhang.lyra@gmail.com> <20200316101930.9962-4-zhang.lyra@gmail.com> In-Reply-To: From: Chunyan Zhang Date: Tue, 17 Mar 2020 15:18:02 +0800 Message-ID: Subject: Re: [PATCH 3/3] serial: sprd: cleanup the sprd_port when return -EPROBE_DEFER To: Baolin Wang Cc: Greg Kroah-Hartman , Jiri Slaby , "open list:SERIAL DRIVERS" , LKML , Orson Zhai , Chunyan Zhang 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 On Tue, 17 Mar 2020 at 14:22, Baolin Wang wrote: > > On Mon, Mar 16, 2020 at 6:19 PM Chunyan Zhang wrote: > > > > From: Chunyan Zhang > > > > cleanup the sprd_port for the device when its .probe() would be called > > later, and then alloc memory for its sprd_port again. > > > > Signed-off-by: Chunyan Zhang > > --- > > drivers/tty/serial/sprd_serial.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c > > index 914862844790..9917d7240172 100644 > > --- a/drivers/tty/serial/sprd_serial.c > > +++ b/drivers/tty/serial/sprd_serial.c > > @@ -1230,8 +1230,13 @@ static int sprd_probe(struct platform_device *pdev) > > up->has_sysrq = IS_ENABLED(CONFIG_SERIAL_SPRD_CONSOLE); > > > > ret = sprd_clk_init(up); > > - if (ret) > > + if (ret) { > > + if (ret == -EPROBE_DEFER) { > > I think we can remove the condition and devm_kfree() here, just > simplify the code as below? > if (ret) { > sprd_port[index] = NULL; > return ret; > } Humm.. I admit that here's a little confused. Let assume we don't have aliases for serial nodes, and we set both earlycon and console via bootargs, what will happen? We can simplify the code like above and we have to ensure all platforms have serial aliases in their devicetree, then we also can simplify the process of getting port index with of_alias_get_id() only. We can discuss further offline, and also save community resource :) Thanks, Chunyan > > > + devm_kfree(&pdev->dev, sprd_port[index]); > > + sprd_port[index] = NULL; > > + } > > return ret; > > + } > > > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > up->membase = devm_ioremap_resource(&pdev->dev, res); > > -- > > 2.20.1 > > > > > -- > Baolin Wang