Received: by 2002:a19:f614:0:0:0:0:0 with SMTP id x20csp59898lfe; Fri, 15 Apr 2022 19:28:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNsP4gwu7ApsVm3DuaB/9Vafw28Nh83K9595TYBT88OrOB9OxUwj7rUZlW3bcguH6xu+57 X-Received: by 2002:aa7:82d9:0:b0:4fa:2c7f:41e with SMTP id f25-20020aa782d9000000b004fa2c7f041emr1676826pfn.1.1650076129538; Fri, 15 Apr 2022 19:28:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650076129; cv=none; d=google.com; s=arc-20160816; b=pxfKsM0xqO0F8hZbyrK221QWAUEh9zMzKHsYRBq34on/pastMwy4kxjPc3I0SuvDdY gFZviay3MCq/4ACJieAoDCAOxZWGvubGMgw4AJsHp3m0CGlNH64KKkhx1mSzVb4R3U8d AfT27EZUzQ2k7rBp5V8pdTjMUukee0T7yc5/5elFs+VoKWURpGOa12TeAZ8yomJdL5E8 8H+36nNj10/smresMMK/lutcHqfJ58e6/v9FfVB1rjKV8kLlN/nb5DVhAaPYouwYYvww NPx16tYKOVQvOhtSLKfZh6HGXuIvkRDC8nr6MBMXvwYgWgYUd0FRuGDmSpi57r950ThD df8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=48DfoG+yJabQSQTND/L60umUj9hF+ZES0fFCS+acd1s=; b=D6RP86UV8i5X1yAOnGVuqyexClkBfC6Xz0VEeurOVFyD9Hcovfkg1g5VxVUdb7zz37 6VqZYKePTmlkfi3yXIcd/aRQ4/aPvXYttFcG/WixEsY2ZSIxf7FJ1aNvmn7gYHMG2RS8 AhoVnaXCcl3v0G1Ue/QZC/0f//eSb1OAk54ccYSqeW0ddQiA8ORZbs1NW8umnCtQVYMN 8PhzKdLiK/eIjZEUtoH+cJDIjziqg0cTWtuV11Guu0sYysLHdP9HgbqMYHD/KFomr4zo hqGMUJItwtbs1qomhFL3yPpUS5PQP+5SswyOmOfK191mK0c49g0ex+cG57C9oJgChSdY nH+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TQKjH0Zj; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id q17-20020a056a00085100b004fa77892f86si3288824pfk.57.2022.04.15.19.28.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Apr 2022 19:28:49 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TQKjH0Zj; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 898291621BD; Fri, 15 Apr 2022 18:40:40 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245279AbiDNNsT (ORCPT + 99 others); Thu, 14 Apr 2022 09:48:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343925AbiDNNaG (ORCPT ); Thu, 14 Apr 2022 09:30:06 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31550A1449; Thu, 14 Apr 2022 06:25:39 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8F6D5612B3; Thu, 14 Apr 2022 13:25:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C74FC385A1; Thu, 14 Apr 2022 13:25:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649942738; bh=05cThSb22/+lIGkr5ns+nVLnLvru2HHP6djIf1hnw0w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TQKjH0ZjfpP/IVglV6mVwja4o4rFTQ+EBX6QC3ai1mTuDlg/SFw7uWIQ7zqtvUWSa Y5RWUsk3OpQCVjDvQskOWNfAhGOSPsvKvaBcO0LUBxRM1kL5FOgqmaoSNgL+yYZAoy GNBUg6KIjfvdws/myUdfso3Y+mxEFLPMm0OsDhbs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Evgeny Novikov , Kirill Shilimanov , Helge Deller , Sasha Levin Subject: [PATCH 4.19 203/338] video: fbdev: w100fb: Reset global state Date: Thu, 14 Apr 2022 15:11:46 +0200 Message-Id: <20220414110844.671745041@linuxfoundation.org> X-Mailer: git-send-email 2.35.2 In-Reply-To: <20220414110838.883074566@linuxfoundation.org> References: <20220414110838.883074566@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Evgeny Novikov [ Upstream commit 8738ddcac644964ae128ccd3d80d48773c8d528e ] w100fb_probe() did not reset the global state to its initial state. This can result in invocation of iounmap() even when there was not the appropriate successful call of ioremap(). For instance, this may be the case if first probe fails after two successful ioremap() while second probe fails when first ioremap() fails. The similar issue is with w100fb_remove(). The patch fixes both bugs. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Evgeny Novikov Co-developed-by: Kirill Shilimanov Signed-off-by: Kirill Shilimanov Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/w100fb.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/video/fbdev/w100fb.c b/drivers/video/fbdev/w100fb.c index 967030176d87..307066113c35 100644 --- a/drivers/video/fbdev/w100fb.c +++ b/drivers/video/fbdev/w100fb.c @@ -773,12 +773,18 @@ int w100fb_probe(struct platform_device *pdev) fb_dealloc_cmap(&info->cmap); kfree(info->pseudo_palette); } - if (remapped_fbuf != NULL) + if (remapped_fbuf != NULL) { iounmap(remapped_fbuf); - if (remapped_regs != NULL) + remapped_fbuf = NULL; + } + if (remapped_regs != NULL) { iounmap(remapped_regs); - if (remapped_base != NULL) + remapped_regs = NULL; + } + if (remapped_base != NULL) { iounmap(remapped_base); + remapped_base = NULL; + } if (info) framebuffer_release(info); return err; @@ -803,8 +809,11 @@ static int w100fb_remove(struct platform_device *pdev) fb_dealloc_cmap(&info->cmap); iounmap(remapped_base); + remapped_base = NULL; iounmap(remapped_regs); + remapped_regs = NULL; iounmap(remapped_fbuf); + remapped_fbuf = NULL; framebuffer_release(info); -- 2.34.1