Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp903578pxb; Tue, 1 Feb 2022 12:50:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJxdiS+RLiWMTF88U6gSu92FHtRgqOpWlZMUKWKj/IgMOq4rVgxp1QpJpEk5/HIUsGWE1bp/ X-Received: by 2002:a17:90a:16c8:: with SMTP id y8mr4302483pje.97.1643748612564; Tue, 01 Feb 2022 12:50:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643748612; cv=none; d=google.com; s=arc-20160816; b=IvxjoFFAOSmmBmFBVksr4RxRzw4KpnUm0OLbkQYKwd+E39prPu1fLfAa/Go7AScjjg 4sfL/onr03YLFmfKCQiwub+eyma6rBiH4hWc2D9GwMGCMpl2rTNdoySaejGnfYPrG1w8 XzoO2edMVj2qFWVK5ilojXRxxY1CY1rV8NqfpFZjQj9X4VdaiuwL5gXYV1UB4qI92F+M kWjzRxHtYptzwypbGFRiiDwpVUcUBvCXaWFAjnjDm/HU3sCvHP9mei8YeRxgz/BM7nFz eI9ColJZ6NsbErN+GdckR7hm8DKZAS0L2OKVPWnczF+TuUt90H+YWtsGFYXcetAFT75Y 4FDQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3hWiJw8I0v/FhKndgqc2O30e2FmZYwhYniGtWb90tWY=; b=z/O5pqt6tQ95FrGB/GBtGJ9Fz9vRgFe2HMEJWYq68GJuRTc9I0jgPWnq8TjXKlnqZD WvZ4/Up/NsQR/dpHmvvlf58uESQAwkeDft+KBFOpkCfECnjz/eL5ANweX0DWuFl7bECD Bg0MAE81EnKesESJYM5TtPv1NbLCzNdm3FFLpReQTYC2txpvsDGtqmwamWSVi6QM+QeS RDBfga4ymce0kF/RI1l3TCzNDsEXeB6L03aCWKz8edhYmiRhiC0ol3+5lxqnBRl9UKAV BAQZdSCVvzYLADvbnTEZoa6slHtrKPZdXzY4JS+0SQ5blqsyoyxdtJKi5GwTWOvYND6t 8PKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=HHQSy572; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si17134080pll.115.2022.02.01.12.50.01; Tue, 01 Feb 2022 12:50:12 -0800 (PST) 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=@ffwll.ch header.s=google header.b=HHQSy572; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344244AbiAaVIg (ORCPT + 99 others); Mon, 31 Jan 2022 16:08:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379757AbiAaVGv (ORCPT ); Mon, 31 Jan 2022 16:06:51 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C5A6C06176C for ; Mon, 31 Jan 2022 13:06:49 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id o30-20020a05600c511e00b0034f4c3186f4so286916wms.3 for ; Mon, 31 Jan 2022 13:06:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3hWiJw8I0v/FhKndgqc2O30e2FmZYwhYniGtWb90tWY=; b=HHQSy572JqEYwMH+XAImxbYANsnDK/FocLe1VGb5+1HoyTQOlf6pkJdzMLp+bQVtjl 6nGB7Yu3HDEDy7AAoG4b1oLVSDRpa9s5ddsKnU8r6m1P82LiOt+SAZcWqZYeQWPQARgU WXr3wNTQE3KehfvQbrgyI6k9xn3+ZGRP2IBiM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3hWiJw8I0v/FhKndgqc2O30e2FmZYwhYniGtWb90tWY=; b=SToWB4mgAseyyjkytVihtCq9SmD8Ns9OLNl3ZcxfVsNkYUji6/tg1YAO3EIxbc2yUC IpmgQ1Rvdxc7t1m0oC2uw9dwopQI13aP+XCP+qbGHk64H8+umfMRocVTnlswHqmMXI+7 v3JghQxi5yIVs5hZCKNg2C+N1iDYQ1naaUpN711Ke8l0NoG/eIsQb8ewN4Ki7v9WtB0h 45XEGPV9SbpMYhyzgVOetwkpAHFOeWL0CoH69fbypo+Pm8gPyv1J9J/q0t4mMpdMGjBM bK2yKJrGN7VPHzmySWvOLtPMaR97WVzRvMrirX5X4cyffK8K0Tbh6pwSNO37WIVDn7b/ XPzg== X-Gm-Message-State: AOAM531xy3ATRJlDOSpD4SzAKiiHRABqEPGSlHl+gwNewIUl3Qc4ZcEc aOGHkBE7C+7J5MsrBOEAM1njuQ== X-Received: by 2002:a7b:c4c5:: with SMTP id g5mr19646400wmk.139.1643663207885; Mon, 31 Jan 2022 13:06:47 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id b11sm314961wmq.46.2022.01.31.13.06.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Jan 2022 13:06:47 -0800 (PST) From: Daniel Vetter To: DRI Development Cc: Intel Graphics Development , linux-fbdev@vger.kernel.org, LKML , Daniel Vetter , Daniel Vetter , Daniel Vetter , Claudio Suarez , Tetsuo Handa , Thomas Zimmermann , Greg Kroah-Hartman , Du Cheng , Sam Ravnborg , Matthew Wilcox , William Kucharski , Alex Deucher , Zheyu Ma , Zhen Lei , Xiyu Yang Subject: [PATCH 14/21] fbcon: use lock_fb_info in fbcon_open/release Date: Mon, 31 Jan 2022 22:05:45 +0100 Message-Id: <20220131210552.482606-15-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220131210552.482606-1-daniel.vetter@ffwll.ch> References: <20220131210552.482606-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now we get to the real motiviation, because fbmem.c insists that that's the right lock for these. Ofc fbcon.c has a lot more places where it probably should call lock_fb_info(). But looking at fbmem.c at least most of these seem to be protected by console_lock() too, which is probably what papers over any issues. Note that this means we're shuffling around a bit the locking sections for some of the console takeover and unbind paths, but not all: - console binding/unbinding from the console layer never with lock_fb_info - unbind (as opposed to unlink) never bother with lock_fb_info Also the real serialization against set_par and set_pan are still doing by wrapping the entire ioctl code in console_lock(). So this shuffling shouldn't be worse than what we had from a "can you trigger races?" pov, but it's at least clearer. Signed-off-by: Daniel Vetter Cc: Daniel Vetter Cc: Claudio Suarez Cc: Tetsuo Handa Cc: Thomas Zimmermann Cc: Greg Kroah-Hartman Cc: Du Cheng Cc: Sam Ravnborg Cc: Matthew Wilcox Cc: William Kucharski Cc: Alex Deucher Cc: Zheyu Ma Cc: Zhen Lei Cc: Xiyu Yang --- drivers/video/fbdev/core/fbcon.c | 5 +++++ drivers/video/fbdev/core/fbmem.c | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index 5a3391ff038d..496bc5f2133e 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -682,8 +682,10 @@ static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount) static void fbcon_release(struct fb_info *info) { + lock_fb_info(info); if (info->fbops->fb_release) info->fbops->fb_release(info, 0); + unlock_fb_info(info); module_put(info->fbops->owner); } @@ -695,11 +697,14 @@ static int fbcon_open(struct fb_info *info) if (!try_module_get(info->fbops->owner)) return -ENODEV; + lock_fb_info(info); if (info->fbops->fb_open && info->fbops->fb_open(info, 0)) { + unlock_fb_info(info); module_put(info->fbops->owner); return -ENODEV; } + unlock_fb_info(info); ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL); if (!ops) { diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 0fa7ede94fa6..fd51d12f2702 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1653,9 +1653,7 @@ static int do_register_framebuffer(struct fb_info *fb_info) console_lock(); else atomic_inc(&ignore_console_lock_warning); - lock_fb_info(fb_info); ret = fbcon_fb_registered(fb_info); - unlock_fb_info(fb_info); if (!lockless_register_fb) console_unlock(); @@ -1672,9 +1670,7 @@ static void unbind_console(struct fb_info *fb_info) return; console_lock(); - lock_fb_info(fb_info); fbcon_fb_unbind(fb_info); - unlock_fb_info(fb_info); console_unlock(); } -- 2.33.0