From patchwork Tue Oct 2 11:18:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ondrej Mosnacek X-Patchwork-Id: 10623401 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 57FDC175A for ; Tue, 2 Oct 2018 11:20:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4260628803 for ; Tue, 2 Oct 2018 11:20:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 355F72882C; Tue, 2 Oct 2018 11:20:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from ucol19pa12.eemsg.mail.mil (ucol19pa12.eemsg.mail.mil [214.24.24.85]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA256 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 768B028803 for ; Tue, 2 Oct 2018 11:20:01 +0000 (UTC) X-EEMSG-check-008: 639783446|UCOL19PA12_EEMSG_MP10.csd.disa.mil X-IronPort-AV: E=Sophos;i="5.54,331,1534809600"; d="scan'208";a="639783446" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.2]) by ucol19pa12.eemsg.mail.mil with ESMTP/TLS/DHE-RSA-AES256-SHA256; 02 Oct 2018 11:20:00 +0000 X-IronPort-AV: E=Sophos;i="5.54,331,1534809600"; d="scan'208";a="16420587" IronPort-PHdr: 9a23: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 X-IPAS-Result: A2AvAADyU7Nb/wHyM5BTCBwBAQEEAQEHBAEBgVGCCwNmI0oSKIwJX4s8inqNbxSBXxIYCwgBiFwhNBgBAwEBAQEBAQIBbBwMgjUkAYJmAiQTFCALAwMJAkAICAMBLQQFDBcBBwsFGASDAAGBdA0DAQumFTOEd4UgBRKGXIQVF4FBP4c/AoEuAQ0FAQeFcAKOUo5qCYYPOYMNhlgLF4h+hlsBjBCJCQYCCRaBQjhkcU0jFTuCbIIlF4NGilRtewEBixWCPgEB Received: from tarius.tycho.ncsc.mil ([144.51.242.1]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 02 Oct 2018 11:19:59 +0000 Received: from prometheus.infosec.tycho.ncsc.mil (prometheus.infosec.tycho.ncsc.mil [192.168.25.40]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w92BJC9U012763; Tue, 2 Oct 2018 07:19:27 -0400 Received: from tarius.tycho.ncsc.mil (tarius.infosec.tycho.ncsc.mil [144.51.242.1]) by prometheus.infosec.tycho.ncsc.mil (8.15.2/8.15.2) with ESMTP id w92BJAGi019974 for ; Tue, 2 Oct 2018 07:19:10 -0400 Received: from goalie.tycho.ncsc.mil (goalie.infosec.tycho.ncsc.mil [144.51.242.250]) by tarius.tycho.ncsc.mil (8.14.4/8.14.4) with ESMTP id w92BJ9BF012760 for ; Tue, 2 Oct 2018 07:19:10 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A1ArAAB9U7NblywaGNZTCB4BBgcGgVGCC2ltEiiMaIs8inqNbxSBZgsjhEmEHCE0GAEDAQEBAQEBAhQBAQEBAQYYBkyFclKBFgUjARKDIQGBdBABC6YVM4oXBRKGXIQVF4FBP4c/AoE8DYVwAp08CYYPOYMNhlgLF4h+hlyMEIkJBgIJFoFCgg1NIxWDJ4IlDgmDRopUbY5QAQE X-IPAS-Result: A1ArAAB9U7NblywaGNZTCB4BBgcGgVGCC2ltEiiMaIs8inqNbxSBZgsjhEmEHCE0GAEDAQEBAQEBAhQBAQEBAQYYBkyFclKBFgUjARKDIQGBdBABC6YVM4oXBRKGXIQVF4FBP4c/AoE8DYVwAp08CYYPOYMNhlgLF4h+hlyMEIkJBgIJFoFCgg1NIxWDJ4IlDgmDRopUbY5QAQE X-IronPort-AV: E=Sophos;i="5.54,331,1534824000"; d="scan'208";a="383490" Received: from emsm-gh1-uea10.ncsc.mil ([214.29.60.34]) by goalie.tycho.ncsc.mil with ESMTP; 02 Oct 2018 07:19:08 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AeAADIUrNblywaGNZTCB4BBgcGgVGCC2ltEiiMaJY2jW8UgWYLI4RJhD00GAEDAQEBAQEBAgETAQEBAQEGGAZMDII1JAGDDFKBFgUjARKDIQGBdBABC6YUM4oXBRKGXIQsgUE/hz8CgTwNhXACnTwJhg85gw2GWAsXiH6GXIwQiQkGAgkWgUKCDU0jFYMngiUOCYNGilRtjlABAQ X-IPAS-Result: A0AeAADIUrNblywaGNZTCB4BBgcGgVGCC2ltEiiMaJY2jW8UgWYLI4RJhD00GAEDAQEBAQEBAgETAQEBAQEGGAZMDII1JAGDDFKBFgUjARKDIQGBdBABC6YUM4oXBRKGXIQsgUE/hz8CgTwNhXACnTwJhg85gw2GWAsXiH6GXIwQiQkGAgkWgUKCDU0jFYMngiUOCYNGilRtjlABAQ X-IronPort-AV: E=Sophos;i="5.54,331,1534809600"; d="scan'208";a="16420547" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown Received: from uphb3cpa05.eemsg.mail.mil (HELO USFB19PA19.eemsg.mail.mil) ([214.24.26.44]) by EMSM-GH1-UEA10.NCSC.MIL with ESMTP; 02 Oct 2018 11:19:07 +0000 X-EEMSG-check-005: 0 X-EEMSG-check-006: 000-001;6faf07d8-bead-4740-ace0-5deb20461b28 Authentication-Results: USFB19PA04.eemsg.mail.mil; dkim=none (message not signed) header.i=none; spf=None smtp.pra=omosnace@redhat.com; spf=Pass smtp.mailfrom=omosnace@redhat.com; spf=None smtp.helo=postmaster@mail-wm1-f67.google.com; dmarc=pass (p=none dis=none) d=redhat.com X-EEMSG-check-008: 424362117|USFB19PA04_EEMSG_MP20.csd.disa.mil X-EEMSG-check-001: false X-EEMSG-SBRS: 2.7 X-EEMSG-ORIG-IP: 209.85.128.67 X-EEMSG-check-002: true X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AeAAB9U7Nbf0OAVdFTCBwBAQEEAQEHBAEBgVGCdIEnjAlfizyKeo1vFIFmCxMQhEmEHBkHAQQwGAEDAQEBAQEBAQEBEwEBCQsLCBsMJQyCNSQBgwxSgRUBBQEiARKDIQGBdA0EC5lTPIwGM4oXBQkBCIZchBUXgUE/hz8CgTwNhXACnTwJhg85gw2GWAsXiH6GWwGMEIkJBgIJBw8hgSGCDU0jFYMngiUXg0aKVG2OUAEB X-IPAS-Result: A0AeAAB9U7Nbf0OAVdFTCBwBAQEEAQEHBAEBgVGCdIEnjAlfizyKeo1vFIFmCxMQhEmEHBkHAQQwGAEDAQEBAQEBAQEBEwEBCQsLCBsMJQyCNSQBgwxSgRUBBQEiARKDIQGBdA0EC5lTPIwGM4oXBQkBCIZchBUXgUE/hz8CgTwNhXACnTwJhg85gw2GWAsXiH6GWwGMEIkJBgIJBw8hgSGCDU0jFYMngiUXg0aKVG2OUAEB Received: by mail-wm1-f67.google.com with SMTP id b19-v6so1833174wme.3 for ; Tue, 02 Oct 2018 04:19:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=VwWz4S7dT21UlyVEgnz7lPk7WYGnX0wfE3cBiq9xhuY=; b=Nqn/NeBDpXaQwLjeHhHJOLMZqom/8T0aDb3AqeGOFp/txGBhSP19RnqebHwQQ6lGGc y9s+EhcYj4lt3/pA/S7ksuvQBrchqhQceIybuQbtjENO/HwRdWe6Sb1Hl7O2bm/PcEpj WohmHbxoYdMDgqF+NzT90nL6jMw/24PGBjKsfjGTyYOTH+nnwPgWx42kMGFhXX96oJOh UbfkfpN34E+lGcAShvmXNrJTFVip2M+rlStdevAchFkT6Q7irYIgLb3ZCHbpY/yTAfmU tvgMSZq8mm5QV9fn3z2QlSjozAxJs/aCLiNX5igULajbuolAQSrI4NwKHkG2vr8O/YXn AAZA== X-Gm-Message-State: ABuFfojBJh7hmKRk7sDzo7ZuUZ3bRuUKVGdQ6i1kHGG2soiNRFD01F8d 7JvxkQ8146FMNXAs+U5sF7/nXsY0b/JVLg== X-Google-Smtp-Source: ACcGV62Q2xLNe1QBtiFYiYTRCyvWqxKBOZ2yWnx7qjty8pTcj8DZb8FF7s3qsVg9yuVz3G2qDB7prw== X-Received: by 2002:a1c:1c13:: with SMTP id c19-v6mr1448514wmc.85.1538479141275; Tue, 02 Oct 2018 04:19:01 -0700 (PDT) Received: from localhost.localdomain.com (nat-pool-brq-t.redhat.com. [213.175.37.10]) by smtp.gmail.com with ESMTPSA id u76-v6sm24443764wmd.10.2018.10.02.04.19.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 02 Oct 2018 04:19:00 -0700 (PDT) X-EEMSG-check-009: 444-444 From: Ondrej Mosnacek To: selinux@tycho.nsa.gov, Paul Moore Date: Tue, 2 Oct 2018 13:18:30 +0200 Message-Id: <20181002111830.26342-1-omosnace@redhat.com> X-Mailer: git-send-email 2.17.1 Subject: [PATCH] selinux: fix race when removing selinuxfs entries X-BeenThere: selinux@tycho.nsa.gov X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Security-Enhanced Linux \(SELinux\) mailing list" List-Post: List-Help: Cc: linux-fsdevel@vger.kernel.org, Stephen Smalley , stable@vger.kernel.org, Al Viro MIME-Version: 1.0 Errors-To: selinux-bounces@tycho.nsa.gov Sender: "Selinux" X-Virus-Scanned: ClamAV using ClamSMTP Letting the following set of commands run long enough on a multi-core machine causes soft lockups in the kernel: (cd /sys/fs/selinux/; while true; do find >/dev/null 2>&1; done) & (cd /sys/fs/selinux/; while true; do find >/dev/null 2>&1; done) & (cd /sys/fs/selinux/; while true; do find >/dev/null 2>&1; done) & while true; do load_policy; echo -n .; sleep 0.1; done The problem is that sel_remove_entries() calls d_genocide() to remove the whole contents of certain subdirectories in /sys/fs/selinux/. This function is apparently only intended for removing filesystem entries that are no longer accessible to userspace, because it doesn't follow the rule that any code removing entries from a directory must hold the write lock on the directory's inode RW semaphore (formerly this was a mutex, see 9902af79c01a ("parallel lookups: actual switch to rwsem")). In order to fix this, I had to open-code d_genocide() again, adding the necessary parent inode locking. I based the new implementation on d_walk() (fs/dcache.c), the original code from before ad52184b705c ("selinuxfs: don't open-code d_genocide()"), and with a slight inspiration from debugfs_remove() (fs/debugfs/inode.c). The new code no longer triggers soft lockups with the above reproducer and it also gives no warnings when run with CONFIG_PROVE_LOCKING=y. Note that I am adding Fixes: on the commit that replaced the open-coded version with d_genocide(), but the bug is present also in the original code that dates back to pre-2.6 times... This patch obviously doesn't apply to this older code so pre-4.0 kernels will need a dedicated patch (just adding the parent inode locks should be sufficient there). Link: https://github.com/SELinuxProject/selinux-kernel/issues/42 Fixes: ad52184b705c ("selinuxfs: don't open-code d_genocide()") Cc: # 4.0+ Cc: Stephen Smalley Cc: Al Viro Signed-off-by: Ondrej Mosnacek --- security/selinux/selinuxfs.c | 88 ++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index f3a5a138a096..4ac9b17e24d1 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -1316,10 +1316,92 @@ static const struct file_operations sel_commit_bools_ops = { .llseek = generic_file_llseek, }; -static void sel_remove_entries(struct dentry *de) +/* removes all children of the given dentry (but not itself) */ +static void sel_remove_entries(struct dentry *root) { - d_genocide(de); - shrink_dcache_parent(de); + struct dentry *parent = root; + struct dentry *child; + struct list_head *next; + + spin_lock(&parent->d_lock); + +repeat: + next = parent->d_subdirs.next; + + while (next != &parent->d_subdirs) { + child = list_entry(next, struct dentry, d_child); + next = next->next; + + spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED); + + if (!list_empty(&child->d_subdirs)) { + /* Current entry has children, we need to remove those + * first. We unlock the parent but keep the child locked + * (it will become the new parent). */ + spin_unlock(&parent->d_lock); + + /* we need to re-lock the child (new parent) in a + * special way (see d_walk() in fs/dcache.c) */ + spin_release(&child->d_lock.dep_map, 1, _RET_IP_); + parent = child; + spin_acquire(&parent->d_lock.dep_map, 0, 1, _RET_IP_); + + goto repeat; + } + +resume: + if (child->d_inode) { + /* acquire a reference to the child */ + dget_dlock(child); + + /* drop all locks (someof the callees will try to + * acquire them) */ + spin_unlock(&child->d_lock); + spin_unlock(&parent->d_lock); + + /* IMPORTANT: we need to hold the parent's inode lock + * because some functions (namely dcache_readdir) assume + * holding this lock means children won't be removed */ + inode_lock_nested(parent->d_inode, I_MUTEX_PARENT); + + /* now unlink the child */ + if (d_is_dir(child)) + simple_rmdir(d_inode(parent), child); + else + simple_unlink(d_inode(parent), child); + d_delete(child); + + inode_unlock(parent->d_inode); + + /* drop our extra reference */ + dput(child); + + /* re-lock only the parent */ + spin_lock(&parent->d_lock); + } else + spin_unlock(&child->d_lock); + } + + if (parent != root) { + /* we processed contents of a subdirectory, ascend and continue + * by removing the subdirectory itself (now empty) */ + child = parent; + parent = child->d_parent; + + /* we have to re-lock the child after locking the parent */ + spin_unlock(&child->d_lock); + spin_lock(&parent->d_lock); + spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED); + + /* set next to the next sibling */ + next = child->d_child.next; + goto resume; + } + + spin_unlock(&root->d_lock); + + /* try to clean up the stale entries */ + shrink_dcache_parent(root); } #define BOOL_DIR_NAME "booleans"