Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp1013788pxb; Wed, 6 Apr 2022 06:44:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxg+CkzYL8D08PVtgzwBcPdofsTR1wx1NqJlyp3qFj7En2jLyHtjmW1u7mtHC/0bkaY5P0Y X-Received: by 2002:a17:903:1205:b0:151:8ae9:93ea with SMTP id l5-20020a170903120500b001518ae993eamr8646332plh.37.1649252663901; Wed, 06 Apr 2022 06:44:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649252663; cv=none; d=google.com; s=arc-20160816; b=O6Z1r6UVCUtcyJRF0GNt5Y2fxoLXz5hQz3V21u0Zw2thjOtbM3joYtpffmdQrqrSHL Alk6VnPrqoA9da25DMDxQTNhaldXQ03QIoij5Sto5c5U4GZEe2aVA2ImqHRwzJUjL06G cz+NIhpIttExrpgKRQRw7cdtHhoysEVTw4YmQ7w44rh/9WUm1nFsbhzQlUN31Xl5IzIJ ziDg9OCbVGuCjxKjbAbPuC3yUJ9zgXHd63vcA309RB9fRZ5r3hGV12f+JyB0letVW4OM NnxTyIMum6Fszdq+tcoRE5fhstB1I99XWNDREAXQto1BnGUTG3OFmWnOdfRl9KS2AoQ4 eWlQ== 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=Rd3cusIlIuLEAJExg6/4uJHWFJMh1qiW8r4VZKhX5/4=; b=e912H+7dUtfMTQ0rm9z28d1ARgH4X+VkTGKViPvsEtPmslY670fsbhxIRNt32ng6EH ykOg/wLfs7qCeUZxkOLbSvFsntfwVXJelLAsonVXkM2/2ZHuK8s5GXTLIKVRKd4d0tej sd18ejpOlEt/iWnODIsxEChv+ovFAK32U2Y2lWDx2AoprV37x6cBa0UensYG1nBKpep1 emx9uFqOWawnX1aJtTdMVpMXxi7jOk4bQ15vQMEn3yjvXMJsminNc1CmeesJU92ip7F0 lgJbsNiYE+cf9lKbD+dpfnPF05ulbjLd7FGi4PF5Q1IQ2rORm2XLS6Lk2PxD2JvyPMGa x4bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wu67r7vT; 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 f5-20020a655905000000b003816043ee3bsi16867407pgu.48.2022.04.06.06.44.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 06:44:23 -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=wu67r7vT; 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 8E80545BA75; Wed, 6 Apr 2022 04:31:40 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232009AbiDET7c (ORCPT + 99 others); Tue, 5 Apr 2022 15:59:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243776AbiDEKhl (ORCPT ); Tue, 5 Apr 2022 06:37:41 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2EFB55762; Tue, 5 Apr 2022 03:22:58 -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 ams.source.kernel.org (Postfix) with ESMTPS id 7027CB81C8A; Tue, 5 Apr 2022 10:22:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6161C385A0; Tue, 5 Apr 2022 10:22:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649154176; bh=/hJvC2gf0i2zGMllIvwBp0yhdrPxL94SQLzsN5wb/G8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wu67r7vTlQZ9ZakBGAB5g6b/AJK1d/87pIphFvjV23I9M9geKzOxLl2TOyx+GNi7p q9ugbzY2ub5e9jxWSTcdz6Og/0edl/Fa3bBkofnlXQp3E8WnwI1Lj6w15XEPoi5ax+ zvom8HK82NB71c3VJHa1XGqzLFU/laiqy+UzOyyo= 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 5.10 484/599] video: fbdev: w100fb: Reset global state Date: Tue, 5 Apr 2022 09:32:58 +0200 Message-Id: <20220405070313.232308607@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070258.802373272@linuxfoundation.org> References: <20220405070258.802373272@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 d96ab28f8ce4..4e641a780726 100644 --- a/drivers/video/fbdev/w100fb.c +++ b/drivers/video/fbdev/w100fb.c @@ -770,12 +770,18 @@ static 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; @@ -795,8 +801,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