From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 55A09E7716B for ; Wed, 4 Dec 2024 12:55:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D847B6B009D; Wed, 4 Dec 2024 07:55:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C985A6B009E; Wed, 4 Dec 2024 07:55:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE6996B00A0; Wed, 4 Dec 2024 07:55:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8E0446B009D for ; Wed, 4 Dec 2024 07:55:18 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 3E80EC0FC9 for ; Wed, 4 Dec 2024 12:54:56 +0000 (UTC) X-FDA: 82857271098.04.70636FE Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf19.hostedemail.com (Postfix) with ESMTP id 3FFC21A0015 for ; Wed, 4 Dec 2024 12:54:38 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IAhxVp0f; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1733316887; a=rsa-sha256; cv=none; b=ntFYx0YDpeH35WIjACeRAdynu5K+BQBeuxx6zcnogdORqKfsGvG+nWS4Hb2sTVgV4n9cp8 JNBYVozc921hQEfGCJvyKbicmjkh37yXykuEmImpj1YiO9tZu9JGf4TESU86q4hj4zU4qe 9Cg8RnGt6oFXEIFEfT+//pInxtURqL8= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IAhxVp0f; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf19.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1733316887; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OXGsdvv3AOb25EXWN4EjEJfR5qBP9EzuVcsjQaH9awM=; b=DEzH1PiJmKFMuise7IThv7FAw6WH8FJdSERxAv++SlzhTMUf36a5o8RNEfv2h0QyRsZGUi YQ2AhUk9hfABcgv9Y4/fwU4p43Z43bkqH+VLDLEbOferh40bUoza14eVVLxUQyuE5YvTnW bIxcteMRpY7EZ7x36/+0Vna4tAgZfOM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733316893; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OXGsdvv3AOb25EXWN4EjEJfR5qBP9EzuVcsjQaH9awM=; b=IAhxVp0fexhZ947AJcGDXY7ludCbn/KFqfedFYeQlyvSfNM9HdtCtYYCXrE1DwUFLuKpEJ t3IW6qBTerM5XRE16JzrGgrQf0RXZjOTrGWCk2dj0SqzW+Ms9iXiG92tGq9PP1jKsIGvfJ AcjQBLdb8BRJZvV9SK4ftPKGMXWrs4k= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-93-lSUD_DFkObKVQNDSbmPpMQ-1; Wed, 04 Dec 2024 07:54:52 -0500 X-MC-Unique: lSUD_DFkObKVQNDSbmPpMQ-1 X-Mimecast-MFC-AGG-ID: lSUD_DFkObKVQNDSbmPpMQ Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-385dcadffebso2594993f8f.0 for ; Wed, 04 Dec 2024 04:54:51 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733316891; x=1733921691; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OXGsdvv3AOb25EXWN4EjEJfR5qBP9EzuVcsjQaH9awM=; b=lEP3B7YdgY49D8ri8s1IQ38aj7r4QgeczafITNWHRbdj7tt8j7g6GlfkojM0sibz0w lF8s7ojl0JQ7nNRvu2eKLpNO6XF5Ku2KLAXoLcIruwXZoal9olOKlXsG18loBcbV+MOa PM3CRwGD7kfZ3Q2qYDHgkZwabSi31Q9xJJnr/e30mIjHf74waT4R/WMe0btOolpxT/t6 Wa+j80TRs4qCCQLh4lwTOPZB+J+cfxYKY0IY1zt5s1ryytYaMARjxDHKoRsCrOHCgIlw 5GWZSfZrxZBDil4e7vTNvbxPGHvXFSEeKCP8UBgGmR7CkxKxjurkkfCvms4nWtpy0RJD KINQ== X-Gm-Message-State: AOJu0YxIAxT+coxujwlkQLEh3WjW5CPC4IJK/G+5jm+5YVsnpUajYIX1 ZAeYbaPHPlbBVTRl+CV+1/Fbzy/qHhTpLAkxGalE0dxrec3JNjIzldlBn/6m8sadF9PMZna7g+v uRjhDcYPFwVz7C153Uv2e52tBKT8aeBS2ccHhErl5hqmgBayU X-Gm-Gg: ASbGncsr0k8BxJ1sVaEmu90n/XM5uHnKdwW5YezQsqtv/plO5qWcwXyyD+otmT7Ume9 HIROSWNIX23f21nfDIsVJgj4/KCfza2Sm1Who/WrawyXXypQrDYQ0mYdqCzJ5gictTEssWbnbcu 94fd51ZVA+D17Sr8+c7UFGJ/BX2dk+XM/kBXMlL8o6DV4fA3wWAX6uZp5Z0YQ4h1MMFjOTMiGHx zzY2B94J91wpUoYki8wI9qxiP8b8Tw+ahl6WMBvtgULl3S5WpcfK49KW7kNm1zyYeptVW08r7DU 8zWWXaD9lortqNGljUdYgNDAa5kgdquR/sY= X-Received: by 2002:a5d:6d08:0:b0:385:f280:d55 with SMTP id ffacd0b85a97d-385fd418db2mr5360103f8f.37.1733316890968; Wed, 04 Dec 2024 04:54:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IHGOcFoEjkEw+PoNC+LLaws3waLwovX9iW85k260HP1nxTmH4H7ZaUgV85wmWvqw6YlLZ08+Q== X-Received: by 2002:a5d:6d08:0:b0:385:f280:d55 with SMTP id ffacd0b85a97d-385fd418db2mr5360063f8f.37.1733316890620; Wed, 04 Dec 2024 04:54:50 -0800 (PST) Received: from localhost (p200300cbc70be10038d68aa111b0a20a.dip0.t-ipconnect.de. [2003:cb:c70b:e100:38d6:8aa1:11b0:a20a]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-385ea9c5952sm11045422f8f.67.2024.12.04.04.54.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2024 04:54:49 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, linux-s390@vger.kernel.org, virtualization@lists.linux.dev, kvm@vger.kernel.org, linux-fsdevel@vger.kernel.org, kexec@lists.infradead.org, David Hildenbrand , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Baoquan He , Vivek Goyal , Dave Young , Thomas Huth , Cornelia Huck , Janosch Frank , Claudio Imbrenda , Eric Farman , Andrew Morton Subject: [PATCH v2 01/12] fs/proc/vmcore: convert vmcore_cb_lock into vmcore_mutex Date: Wed, 4 Dec 2024 13:54:32 +0100 Message-ID: <20241204125444.1734652-2-david@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241204125444.1734652-1-david@redhat.com> References: <20241204125444.1734652-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: aNtf4zRSv8OrOyOWxkiLBc2UOJ_nRNtheKxkMtgbQ2w_1733316891 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 3FFC21A0015 X-Stat-Signature: n6xswhrqmy56tharhmyg7kqto8abgzkq X-HE-Tag: 1733316878-59967 X-HE-Meta: U2FsdGVkX1/99yl3ycnXJVY3j/PM9jK/j876pl4MkbIXmV4vEhLEh7IaJgZnuER18IPAoOyoHtj1m5iCIYJp+cI9FkKdhBFmrePuFrOdIPsk7zo4BOWDo8v8q5UTqfNLU5KTesYcAnyvUSvCMhg6ytG3VWQDu81Wi58AwL1ImvU5p9XuGrJ4CUCmC6GMVA1w73X4a+XrJypKcvZs+KCWiMILA/cpJ5y9fFgllJ2bm0wkNNgJ8/UoFNFjCYYzJOopmyDn/lfuOOHsonfP67bR46TcjDW4t9fkZui0qCdcDoZe0tgd5AbVdaV3dXh8PEWx0lVcH1NVg0+04TBxeCZawYEvvURhDbsKIj6AQw1Ofbc7Bbr2AnA3TfsdDPqS6vwwsAvFC01LZAWA10IJepZb1jg8OlzhODyCKWNUUNOzk9/66FbgEy96svf9zAt9qIiF5Qbill8XtAJTcxBmlCpnindb+heN3jhyigi6kLYNv58OvmOHqfq1yQq7ma8mWVddjoxe5mE/X9p5BmFwo1LWicXZw5XoyHI/mB75ZDBDD5DtOhe7PW9M+6xGTeIu8LhDXfp6or1jpaHbbqiHz5Bj2rgmBiiGPABUxGIeWmrP2niTFPAYpyysJSP0WpzIPGsTsdd3hYVnFsfV2Wcg69Wz4f15WfvADq7opz1/uD3udkzvwOR9UubIkrmqr/dTLq82TZilVxWRV/y2Ro+SWojRXTHf/CCZ2KLg4g/+eUEjfJXqjfnIIJ/XZfXu7PWV6fIDPuucOJXCUt9OZ/dgxiZAEeP0+ZXddUvVqE0Glm9JlaCLnwv8IyC+UUyeRHOCZO6X5MIiSdCJFaPAdo7m5s6/U0qyAubriLsbU3uk2+kToMhFdHcwB76w4+AFF2iDEdp0+tvDDNjPuQPI3JzSyqNLJVYV2mQAE10th+hIsuYVef7qNcl7XXLGAKfi2TDudwiezNHmBgbqYMtXCjg8BYH mgz+beqJ 5MMnxo5/0e3qEinPKhHKW2lMCq1jY4rrpV4TvzQzOb6nAvMXxjWpibmBWVpzNEEDVb4i20jenM5tPX3dMrqDSEgAcPlS++k9CY/B8BVckLcSR2mT/QmfcezmTF/pAxDH3ic7LK744bHXljkO6n2d4Nyjau7i79bJ3R+FO5+W4aqZMpr6AUwgiojJIkXsT7Wkd0uuOnLFSGs8ei+NvGfbTjUCH1k9FXUw7p+74lN2bwpqrWc7aTAL5yXHsAXz4OYkIIJUBt+vLT0zm6DshhwIJV3DJ1/JMbw4wzKc75dB4cgdyZC6DsW2OzmzqBBcCcSQ32PqQ/YKDYoPAKg0+uv5pmPsdc9fa823go55+lx+TvwdGA0b7EYdA6ciw6dn25H4/OI6eHNvH8W1w2d2k6VkmqBEad469tbz27DoKYKtnzYdM4nhWGg4MydVmfM+uo3eXAzxNlG0qHDmohpX+NfTfzwJexLQVKDnUuVvP X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We want to protect vmcore modifications from concurrent opening of the vmcore, and also serialize vmcore modification. (a) We can currently modify the vmcore after it was opened. This can happen if a vmcoredd is added after the vmcore module was initialized and already opened by user space. We want to fix that and prepare for new code wanting to serialize against concurrent opening. (b) To handle it cleanly we need to protect the modifications against concurrent opening. As the modifications end up allocating memory and can sleep, we cannot rely on the spinlock. Let's convert the spinlock into a mutex to prepare for further changes. Signed-off-by: David Hildenbrand --- fs/proc/vmcore.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index b4521b096058..586f84677d2f 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -62,7 +62,8 @@ core_param(novmcoredd, vmcoredd_disabled, bool, 0); /* Device Dump Size */ static size_t vmcoredd_orig_sz; -static DEFINE_SPINLOCK(vmcore_cb_lock); +static DEFINE_MUTEX(vmcore_mutex); + DEFINE_STATIC_SRCU(vmcore_cb_srcu); /* List of registered vmcore callbacks. */ static LIST_HEAD(vmcore_cb_list); @@ -72,7 +73,7 @@ static bool vmcore_opened; void register_vmcore_cb(struct vmcore_cb *cb) { INIT_LIST_HEAD(&cb->next); - spin_lock(&vmcore_cb_lock); + mutex_lock(&vmcore_mutex); list_add_tail(&cb->next, &vmcore_cb_list); /* * Registering a vmcore callback after the vmcore was opened is @@ -80,13 +81,13 @@ void register_vmcore_cb(struct vmcore_cb *cb) */ if (vmcore_opened) pr_warn_once("Unexpected vmcore callback registration\n"); - spin_unlock(&vmcore_cb_lock); + mutex_unlock(&vmcore_mutex); } EXPORT_SYMBOL_GPL(register_vmcore_cb); void unregister_vmcore_cb(struct vmcore_cb *cb) { - spin_lock(&vmcore_cb_lock); + mutex_lock(&vmcore_mutex); list_del_rcu(&cb->next); /* * Unregistering a vmcore callback after the vmcore was opened is @@ -95,7 +96,7 @@ void unregister_vmcore_cb(struct vmcore_cb *cb) */ if (vmcore_opened) pr_warn_once("Unexpected vmcore callback unregistration\n"); - spin_unlock(&vmcore_cb_lock); + mutex_unlock(&vmcore_mutex); synchronize_srcu(&vmcore_cb_srcu); } @@ -120,9 +121,9 @@ static bool pfn_is_ram(unsigned long pfn) static int open_vmcore(struct inode *inode, struct file *file) { - spin_lock(&vmcore_cb_lock); + mutex_lock(&vmcore_mutex); vmcore_opened = true; - spin_unlock(&vmcore_cb_lock); + mutex_unlock(&vmcore_mutex); return 0; } -- 2.47.1