Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp2523396pxb; Tue, 21 Sep 2021 01:33:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzstbQxZHmuXwVCgu3Hd1DcNiF2zTVFoPmZqe9md1fiyXyBYXPj98ZfZjWlRqAv8bWlIhkH X-Received: by 2002:a05:6e02:12e1:: with SMTP id l1mr11881639iln.286.1632213224801; Tue, 21 Sep 2021 01:33:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632213224; cv=none; d=google.com; s=arc-20160816; b=xHeli43bMIzeHx1PdYI7oDeaIMMpqZWiW2j+55d+sczFgONuCs4mYZN+diu1QVLmwM SPYyZ5hOd3PylqjZDjMi5t+zkcArcZmIkfCm3QRtr/cmpQGAgnOCybX/PhOt7U2rmnh4 /q7I8yb8FmiFekdXWgEgYUrIKNK1qt6aXVNw7pdCRZNmf4dV6/CRbT+f6qzU/KKlOkNc Z0PW0x/4ZbI6X4DEG/mn1gnZy15wmV5JKE1+Cgh73aW05RMoKVUoycMjqXCk+bnrP9Qu DYrn8gqtor/ADatq+Nd92vCXk7Iaau8iEandhkme9kZm4BSPzpUS5SqaTZ3/bOlgj1SV A4Kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to :dkim-signature:dkim-signature:from; bh=AaU/gPbcWTPTFafa4pRjg6uugKbP7Uqa8J30ZOGD9EU=; b=JAUF+kEDKlH3jzYG/AaMRByMZmXRsfrZqpiFfOUSW7RcU4qRt3v4RCm7FeSforATQt jQj5gEFTEmUosx8Cz2kjzE4JXkDX6Bbq2SJ18PrZNGZXzoeR/uj3QHO0vBFMzr+3a7PG Ao1OUDlnFj5lOz82cn2BRlGiW4Cn3MWZFi6foFJDbmK30cPt7bTqGVhEdU8rAWRKLDKQ Rf5/HQvLpShn6+W6LgNhMwLiOz3bsdpSwF2/Dh4jRezQs+rMv7XbL4lRO6tU6kvK0uq6 NOMVZ0cz0mxqegpeGl+nEGKsndzsHsmBnCxu/UPgu68dpqmOileKLjOFrcV/evotuUS+ oepg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=v5YnLc7A; dkim=neutral (no key) header.i=@linutronix.de; 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=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o3si4009648ilk.81.2021.09.21.01.33.33; Tue, 21 Sep 2021 01:33:44 -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=@linutronix.de header.s=2020 header.b=v5YnLc7A; dkim=neutral (no key) header.i=@linutronix.de; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231222AbhIUIeH (ORCPT + 99 others); Tue, 21 Sep 2021 04:34:07 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:47268 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230497AbhIUIeH (ORCPT ); Tue, 21 Sep 2021 04:34:07 -0400 From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1632213157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=AaU/gPbcWTPTFafa4pRjg6uugKbP7Uqa8J30ZOGD9EU=; b=v5YnLc7AqnUdJz5b9XLuHIl6VO6U/PlOaQTRZ8lHWLAVHD2EDnErVtGwmwCmaaSUjfk6Wx agQAquqZJic3VZuQF78XWd/xE/+AzDZx3Wy4d2poc6tWyJP9BxwBabG6kWXb/s0bLGbqep ES87nY2cSFHi9AKOC8nMR4XVR1qrMeitRRgmxXzEaxc6yNE6NE4KZ1hZQrKpkXCPCJ8am8 dZd6YmM/WYsGjvlMxV1tt5NzLDvRsSooO7M1mF0yRfNz3fBQllHS7dOIg8uJvFGrSLuUUV /Pgy7CivLwaq9lVbG6AeyzceQyulGlDEkHzYIQTr4HFnB7aG3GTnSMsHEWr7PA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1632213157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=AaU/gPbcWTPTFafa4pRjg6uugKbP7Uqa8J30ZOGD9EU=; b=Kt0f3KnieOBogln1dx3PEKUi1rciS0LweQRwFz1xEtG6mmS+Mjmh2QMpGXvyz/sQHGmN38 JtBgxfp88nFTEUAg== To: John Johansen Cc: James Morris , LSM List , LKML , "Paul E. McKenney" , Peter Zijlstra Subject: apparmor: WARNING: suspicious RCU usage Date: Tue, 21 Sep 2021 10:32:37 +0200 Message-ID: <877dfa72hm.ffs@tglx> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Running with CONFIG_PROVE_RCU_LIST triggers the following splat: [ 6.805926] ============================= [ 6.806848] WARNING: suspicious RCU usage [ 6.807738] 5.15.0-rc2+ #24 Tainted: G E [ 6.808860] ----------------------------- [ 6.809734] security/apparmor/include/lib.h:191 RCU-list traversed in non-reader section!! [ 6.811508] other info that might help us debug this: [ 6.811516] rcu_scheduler_active = 2, debug_locks = 1 [ 6.811527] 2 locks held by apparmor_parser/1897: [ 6.811530] #0: ffff88885f139450 (sb_writers#7){.+.+}-{0:0}, at: ksys_write+0x68/0xe0 [ 6.816110] #1: ffff8881000578a0 (&ns->lock){+.+.}-{3:3}, at: aa_replace_profiles+0x16d/0x11e0 [ 6.817418] stack backtrace: [ 6.818086] CPU: 38 PID: 1897 Comm: apparmor_parser Tainted: G E 5.15.0-rc2+ #24 [ 6.819359] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 [ 6.820536] Call Trace: [ 6.820918] dump_stack_lvl+0x57/0x72 [ 6.821499] __lookupn_profile+0x193/0x1a0 [ 6.822461] aa_replace_profiles+0x395/0x11e0 [ 6.823448] policy_update+0x13f/0x240 [ 6.824326] profile_replace+0xb1/0x120 [ 6.825213] vfs_write+0xe4/0x3b0 [ 6.826027] ksys_write+0x68/0xe0 [ 6.826576] do_syscall_64+0x3b/0x90 [ 6.827099] entry_SYSCALL_64_after_hwframe+0x44/0xae which is pretty obvious because aa_replace_profile() invokes: __lookup_replace() __lookup_profile() __strn_find_child() __policy_strn_find() list_for_each_entry_rcu() <- Splat The code is "correct" as this is the writer side and holding ns->lock, but it's incorrect to use list_for_each_entry_rcu() without being in a read side critical section unless it is properly annotated. Same problem in the same function vs. __lookup_parent() and there are more issues of that sort, e.g. vs. __lookup_profile() in aa_remove_profiles(). Thanks, tglx