Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp618989ybz; Fri, 17 Apr 2020 07:10:33 -0700 (PDT) X-Google-Smtp-Source: APiQypIktRBAUGVxga3/UCOzhkkfM7ZdGczyLp2r+TjDDcwfl7uVZqF7QOU1rKDCj71hfdMdn5+1 X-Received: by 2002:a17:907:2098:: with SMTP id pv24mr3251208ejb.22.1587132633639; Fri, 17 Apr 2020 07:10:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587132633; cv=none; d=google.com; s=arc-20160816; b=nynKD1M46LCaLJD071PRAzvrphRsgyPDrmxRGAO5rHgb56IZBOND448T/oOLSLq1JA CbVNxSlNYhBPTig71LU+HWU4gvpi9WAbr5DYiPn37Gi8Ep31J5Hb8eAbm6SBXMpLJUDv z0MGWq0aDaQAaGReconBDqQEl/PseY60x+tj3eCSzltrRtKgfARSaM2Pu660R4ayXNDU 8ZWfqC1Hg7vYtYIf7NxNoTvCP68V6ZGW9s40hEzSvP2J22csrE5s3Wu276fMg3B+9Gzb 0Ep3koNd8daZhdN3MEz1pzNidRz/jIYuASbT82yXIWmTw41gq9i2R6KOvuUbrLq89dla wseg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type :content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:cc:to:subject:from:dkim-signature :dkim-filter; bh=R7Ur/56yFcr7YXkME4bM8JQPVy2Q7jo8CruJdpZeLM4=; b=zRlNnVFAul8nOlD2igXUqZXY4Zzqe+c3VgzUZg/H0ymgGGYXWjIF1n0kZp9LcxkYUP vER+mPlyhkDV4JTsU+DJAB7aizUYRApXTmOyZcQnhtgRY/v1tReM+8QtAxoyISCazR6H Ghp3yt0Awn6OH7jxpV38ZWT71IjFz2RngKaau6Xt6iCW45Ran/Vob7ucs8yJMnPawQc7 jkG8wVUbOy4vztM0MwQndpilnPmq+DS+V2ttMyxf6NxiwN0yqYo+IJMdUNuJIBFd/Ujw Ik66WimeIW7PWPbupqKQWrjKmh+AQrqvxUCRF8v/HyThcXF/vjW9orrhYUhM2zoxzj6i KESA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=GtaNy2YZ; 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=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id yc9si13753496ejb.319.2020.04.17.07.10.09; Fri, 17 Apr 2020 07:10:33 -0700 (PDT) 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=@samsung.com header.s=mail20170921 header.b=GtaNy2YZ; 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=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731221AbgDQOI2 (ORCPT + 99 others); Fri, 17 Apr 2020 10:08:28 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:49898 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731215AbgDQOI1 (ORCPT ); Fri, 17 Apr 2020 10:08:27 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200417140825euoutp01f9c95a0ac470a983560bdcab3c268bfb~GoJq1pOdw1958019580euoutp01z for ; Fri, 17 Apr 2020 14:08:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200417140825euoutp01f9c95a0ac470a983560bdcab3c268bfb~GoJq1pOdw1958019580euoutp01z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1587132505; bh=R7Ur/56yFcr7YXkME4bM8JQPVy2Q7jo8CruJdpZeLM4=; h=From:Subject:To:Cc:Date:In-Reply-To:References:From; b=GtaNy2YZJGC9iO/7POSj8abHzal4DxGsT6o5mxuYAv95apR+wq2xoYB1Y86a4c+IU 4YoF9YpFohRiENRHjavh9X8dNyfBiSZidEQrPyCocx/H4Rvaao5MJqNlw2KNDTRmgg NCMmwassC60ZIRAjwVkOfZCRvw4xGB5k9mwFPVu0= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200417140824eucas1p15c9abdeb569eb28faa603877d192d210~GoJqqhz123049630496eucas1p1I; Fri, 17 Apr 2020 14:08:24 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 0F.5C.61286.858B99E5; Fri, 17 Apr 2020 15:08:24 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20200417140824eucas1p1201a34566f7ad6b5e6a931423af26e0a~GoJqE_BH82643526435eucas1p1m; Fri, 17 Apr 2020 14:08:24 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20200417140824eusmtrp11b76d121f2c30c5f1f325a04ee2368ae~GoJqEc7l82228222282eusmtrp1h; Fri, 17 Apr 2020 14:08:24 +0000 (GMT) X-AuditID: cbfec7f2-ef1ff7000001ef66-8f-5e99b858fa29 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 35.D2.08375.858B99E5; Fri, 17 Apr 2020 15:08:24 +0100 (BST) Received: from [106.120.51.71] (unknown [106.120.51.71]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200417140823eusmtip2881adae30a45d44627b3212c29464aa4~GoJp1PAmi2541125411eusmtip2U; Fri, 17 Apr 2020 14:08:23 +0000 (GMT) From: Bartlomiej Zolnierkiewicz Subject: Re: [PATCH v4] video: fbdev: vesafb: add missed release_region To: Chuhong Yuan Cc: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org Message-ID: <0a42a3d3-fd71-2334-8c19-9455c0971c6f@samsung.com> Date: Fri, 17 Apr 2020 16:08:23 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20200329145839.20076-1-hslester96@gmail.com> Content-Language: en-US Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnleLIzCtJLcpLzFFi42LZduznOd2IHTPjDObtMrC48vU9m8XsQy+Z LU70fWC1uLxrDpsDi8fOWXfZPe53H2fy+LxJLoA5issmJTUnsyy1SN8ugStje8N/5oI2iYr1 XX9ZGhj7hbsYOTkkBEwkzn1ex9jFyMUhJLCCUeLm/NtMEM4XRomLC/6yQDifGSUOHdzDAtNy tLGXGSKxnFFi792NUC1vGSXuHr7JBFLFJmAlMbF9FdBgDg5hAXeJRT+rQMIiAuoSn3ftZAex mQUSJE4vuscCUsIrYCfxaYM0SJhFQFXi0vbDbCC2qECExKcHh1lBbF4BQYmTM5+A3cAJNL3l +QYWiDHiEreezGeCsOUltr+dA3abhEA3u8TV7r1g8yUEXCQ2rg+DuF9Y4tXxLewQtozE6ck9 LBD16xgl/na8gGreziixfPI/Nogqa4k7536xgQxiFtCUWL9LH2Kmo8TmB8EQJp/EjbeCECfw SUzaNp0ZIswr0dEmBDFDTWLDsg1sMFu7dq5knsCoNAvJY7OQPDMLyTOzENYuYGRZxSieWlqc m55abJiXWq5XnJhbXJqXrpecn7uJEZhMTv87/mkH49dLSYcYBTgYlXh4DXpmxgmxJpYVV+Ye YpTgYFYS4T3oBhTiTUmsrEotyo8vKs1JLT7EKM3BoiTOa7zoZayQQHpiSWp2ampBahFMlomD U6qBccqtbaW975I55h35cetRBtPMgJfWE3OsYspvvOafU68bNeNM+BJ5c4Flsd3BnE81eaSn sG+5Z9hjoxX+TTBboPPwKa7MRx1epxfMdDhvMEtG/PAaX88D+e4+dpuytbRYlgfoelj8+Gkf 0T8h8rlT+bzd9a6iOrWcdb8sDp0r3PglN8Hl+s9FSizFGYmGWsxFxYkAitB3tyIDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t/xe7oRO2bGGUxcy21x5et7NovZh14y W5zo+8BqcXnXHDYHFo+ds+6ye9zvPs7k8XmTXABzlJ5NUX5pSapCRn5xia1StKGFkZ6hpYWe kYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7G9ob/zAVtEhXru/6yNDD2C3cxcnJICJhIHG3s Ze5i5OIQEljKKHFj5i/2LkYOoISMxPH1ZRA1whJ/rnWxQdS8ZpSYdHMVI0iCTcBKYmI7iM3B ISzgLrHoZxVIWERAXeLzrp1gY5gFEiSezUuBaO1llNj45ipYnFfATuLTBmmQchYBVYlL2w+z gdiiAhESh3fMApvOKyAocXLmExYQmxNoU8vzDWA2M9D4P/MuMUPY4hK3nsxngrDlJba/ncM8 gVFoFpL2WUhaZiFpmYWkZQEjyypGkdTS4tz03GJDveLE3OLSvHS95PzcTYzA6Nl27OfmHYyX NgYfYhTgYFTi4TXomRknxJpYVlyZe4hRgoNZSYT3oBtQiDclsbIqtSg/vqg0J7X4EKMp0HMT maVEk/OBkZ1XEm9oamhuYWlobmxubGahJM7bIXAwRkggPbEkNTs1tSC1CKaPiYNTqoHR9+LS ZQW8nGsDVh1byb1qf0Djwws1i46sK54wPeP5nzUz9Fdabl+qveJc2G6+pQFq+eW+oV/+JBpt 8NcT1l98X6s7izuq3PzIvRXnPiZlPrxdzsdSs7nq+HYpxafHAtZwcvzcFHlXOq5/0d+VS2x8 n5X6vLMpXTtv6sStG1a+15CZ+drlurRZqRJLcUaioRZzUXEiABoQjDy0AgAA X-CMS-MailID: 20200417140824eucas1p1201a34566f7ad6b5e6a931423af26e0a X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200329145851eucas1p13777aa6188fc6886d150d9834dd0b257 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200329145851eucas1p13777aa6188fc6886d150d9834dd0b257 References: <20200329145839.20076-1-hslester96@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/29/20 4:58 PM, Chuhong Yuan wrote: > The driver forgets to free the I/O region in remove and probe > failure. > Add the missed calls to fix it. > > Since the success of request_region() is optional, add the "region" field > in vesafb_par to represent whether request_region() succeeds. > Then only call release_region() when "region" is not null. > > Signed-off-by: Chuhong Yuan Patch queued for v5.8, thanks. Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > Changes in v4: > - Add a field in vesafb_par to represent whether request_region() succeeds. > - Only call release_region() when request_region() succeeds. > - Adjust the order in the error handler of probe. > - Modify commit message. > > drivers/video/fbdev/vesafb.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c > index a1fe24ea869b..df6de5a9dd4c 100644 > --- a/drivers/video/fbdev/vesafb.c > +++ b/drivers/video/fbdev/vesafb.c > @@ -32,6 +32,7 @@ > struct vesafb_par { > u32 pseudo_palette[256]; > int wc_cookie; > + struct resource *region; > }; > > static struct fb_var_screeninfo vesafb_defined = { > @@ -411,7 +412,7 @@ static int vesafb_probe(struct platform_device *dev) > > /* request failure does not faze us, as vgacon probably has this > * region already (FIXME) */ > - request_region(0x3c0, 32, "vesafb"); > + par->region = request_region(0x3c0, 32, "vesafb"); > > if (mtrr == 3) { > unsigned int temp_size = size_total; > @@ -439,7 +440,7 @@ static int vesafb_probe(struct platform_device *dev) > "vesafb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n", > vesafb_fix.smem_len, vesafb_fix.smem_start); > err = -EIO; > - goto err; > + goto err_release_region; > } > > printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, " > @@ -458,19 +459,22 @@ static int vesafb_probe(struct platform_device *dev) > > if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) { > err = -ENOMEM; > - goto err; > + goto err_release_region; > } > if (register_framebuffer(info)<0) { > err = -EINVAL; > fb_dealloc_cmap(&info->cmap); > - goto err; > + goto err_release_region; > } > fb_info(info, "%s frame buffer device\n", info->fix.id); > return 0; > -err: > +err_release_region: > arch_phys_wc_del(par->wc_cookie); > if (info->screen_base) > iounmap(info->screen_base); > + if (par->region) > + release_region(0x3c0, 32); > +err: > framebuffer_release(info); > release_mem_region(vesafb_fix.smem_start, size_total); > return err; > @@ -481,6 +485,8 @@ static int vesafb_remove(struct platform_device *pdev) > struct fb_info *info = platform_get_drvdata(pdev); > > unregister_framebuffer(info); > + if (((struct vesafb_par *)(info->par))->region) > + release_region(0x3c0, 32); > framebuffer_release(info); > > return 0; >