From patchwork Tue Oct 18 10:19:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Berg X-Patchwork-Id: 1691445 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=JlJiPdTV; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=sipsolutions.net header.i=@sipsolutions.net header.a=rsa-sha256 header.s=mail header.b=mV+3g1y1; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Ms8xh6NQXz1ygT for ; Tue, 18 Oct 2022 21:20:08 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=KuwTvrMOEUGGebE33ldPuBCM2aBoIMJ1IQEqe6ZQ8lc=; b=JlJiPdTV0BOW2z YLIRvavYWfzePXETTqJUhnqTXROYF18HpampMFDnDZ4uR/r98PyWiWafz4ijvfXkq7aIZH7TL7694 4DK2MmPVozHwR5nUpi3U7ABtinXwDfEHKtO5CtaGanQcxnUPya5yWHnIyC7PzhBHybP5X3KhnpNua Q76R5kjwDQ2vXncVkknxgVkadI9Dp6S9ST7opf2IxQtscZUBNVSoSfCvZGyKWRS+5UP1cQSzJFjaA hESNXKEeG9tkk4SPLaJJPETbLeO3CWThPKAKEzDi0ee3x5r2FRKiSfE3pzmeOpC0tJ5lE/SmWDGc4 aGmfizSwZutOtnEKgrzQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1okjhW-005XaI-30; Tue, 18 Oct 2022 10:19:58 +0000 Received: from s3.sipsolutions.net ([2a01:4f8:191:4433::2] helo=sipsolutions.net) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1okjhU-005XZZ-Ee for linux-um@lists.infradead.org; Tue, 18 Oct 2022 10:19:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sipsolutions.net; s=mail; h=Content-Transfer-Encoding:MIME-Version: Message-Id:Date:Subject:Cc:To:From:Content-Type:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-To:Resent-Cc: Resent-Message-ID:In-Reply-To:References; bh=00LOc5QqSlCsIh1FXKxERka0YT/AKiorL6pYQ2RmX7U=; t=1666088396; x=1667297996; b=mV+3g1y1aLbHajPgDjVYJNJpejiaL/RF47qt+e1wH/hQjWYjSJJVI7J924PHj/tGnXN8AOn5Gr4 ldGT5akOxLfZZwiyXJvXzV85QObxL/wWJZcofUqJtn04Cj2To/dG0g9RE2sJsUDIrrO9CiMHU2fUo VHNrIuC/L/CrsztL5XyACH3HMs/v7inKuoKJCqc1ZrzibOjTUzf3Rf2xNqwUtre+oRHoMMYFn1yD5 +1GNqkkC1rpTuTjfO9Ax7rhLWsE/H+oQEN0RpjvRMrjetnosiaoDiABonKTKhYwS0Ivxd7U0HG0eR /98f12fHugwf9m9QZqMipEHVLPJaW19UgF7A==; Received: by sipsolutions.net with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.96) (envelope-from ) id 1okjhQ-00A7jK-2W; Tue, 18 Oct 2022 12:19:52 +0200 From: Johannes Berg To: linux-um@lists.infradead.org Cc: Matthew Wilcox , Johannes Berg Subject: [PATCH v2] um: protect VMA iteration Date: Tue, 18 Oct 2022 12:19:48 +0200 Message-Id: <20221018121948.d7dd382b6c1f.I7b85b7dd326d2d078dabdd4ae40c35dc4ee1f3bc@changeid> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221018_031956_520742_88841917 X-CRM114-Status: UNSURE ( 6.82 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Johannes Berg Due to changes in the iteration, there are now lockdep checks indicating that we're missing locking here. Fix that. Signed-off-by: Johannes Berg --- arch/um/kernel/tlb.c | 4 ++++ 1 file changed, 4 insertions(+) Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-um@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-um" Errors-To: linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Johannes Berg Due to changes in the iteration, there are now lockdep checks indicating that we're missing locking here. Fix that. Signed-off-by: Johannes Berg --- arch/um/kernel/tlb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c index ad449173a1a1..2a5e266c3ed4 100644 --- a/arch/um/kernel/tlb.c +++ b/arch/um/kernel/tlb.c @@ -587,8 +587,10 @@ void flush_tlb_mm(struct mm_struct *mm) struct vm_area_struct *vma; VMA_ITERATOR(vmi, mm, 0); + mmap_read_lock(); for_each_vma(vmi, vma) fix_range(mm, vma->vm_start, vma->vm_end, 0); + mmap_read_unlock(); } void force_flush_all(void) @@ -597,6 +599,8 @@ void force_flush_all(void) struct vm_area_struct *vma; VMA_ITERATOR(vmi, mm, 0); + mmap_read_lock(); for_each_vma(vmi, vma) fix_range(mm, vma->vm_start, vma->vm_end, 1); + mmap_read_unlock(); }