Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1265993pxb; Wed, 20 Oct 2021 01:24:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5ahClI/IBS+FOt9ai05kVKTjVujTYBW5ViBd7SN5SqbMG9Mm5XMgtwB+aI1tvHaUaN5BZ X-Received: by 2002:a17:907:961d:: with SMTP id gb29mr46231508ejc.457.1634718257866; Wed, 20 Oct 2021 01:24:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634718257; cv=none; d=google.com; s=arc-20160816; b=fXeVgrBO3+zY/X3cxvk0ctG1OwYGtxVAIiUjDVlx45mJFP1KI6J/yNsYT258OAQsnn ++XBkE70P8O68bVzj0azTO2lmunK5DrhrGrOS4nxoeqc5CfyHPydRCOGNoVCBvAGRg4s XZ5UBjCZD2QK1eifdp8JirxKrIeN02ETFayn+C9XHHQV2YM1pVv+1Mm7DdOXzcWNOU/6 6Gm2UOxmSQl+we+b1oE+BNLPTR6EGr+FGkbZBb/KJ0T+35/pk+YnwuuNTlp0RDiyp6MF BSy+W4TLaxbniGJbw+y9razRd/SzcfFLoiNXfXw4w5LXHN1duxBRqUPpWJ/GF4iSy2Te D7Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:message-id :in-reply-to:subject:cc:to:from:date:dkim-signature:dkim-signature; bh=fF05nAEyjqTbx+MUMonWp9IUBJlR+Dw6z0QwyteEkTw=; b=eZA7W8LfImzgkpOHKzDBQxBfAm0SYfNZ+tsz+4xNA8L6b/sefq5rrfSeIu9VRPWwOJ /OnYN5I95y7NYHz+waIayWzx7S6iVsLBc3Vzu41RA7joWpsiFIvQilKzKoE+gtaeBF2p lV9CguC7Awr0d7Ng4pdqe1EFkGDk0mHQEXA8KVlsdwp4hq680KHK8UQmEOf/LuXo9FiL KQL9No2jKYE6rHF6F0AY5bJ/HSz62ferUmhWVB7wdXLlkAS6HMcsYm0hrIvyrAjXMCbR h/us6HmuhZNgV+zgDFnKMFolBtamZfuTMfrLWl2WGwHcVu+2s6yrQF4A4E3Rb63LN65I HVpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.cz header.s=susede2_rsa header.b=sQPHPToG; dkim=neutral (no key) header.i=@suse.cz header.s=susede2_ed25519; 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 c10si2039157edn.368.2021.10.20.01.23.53; Wed, 20 Oct 2021 01:24:17 -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=@suse.cz header.s=susede2_rsa header.b=sQPHPToG; dkim=neutral (no key) header.i=@suse.cz header.s=susede2_ed25519; 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 S229910AbhJTIVr (ORCPT + 99 others); Wed, 20 Oct 2021 04:21:47 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:57584 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229503AbhJTIVo (ORCPT ); Wed, 20 Oct 2021 04:21:44 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 349451FD47; Wed, 20 Oct 2021 08:19:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1634717968; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fF05nAEyjqTbx+MUMonWp9IUBJlR+Dw6z0QwyteEkTw=; b=sQPHPToG2Fvjnup+4BPVwdAuh2cpg/MRibClRF00pE0aOFX5rilYheDOWuia/OCg/V/Zqr 6REGrweU2AtByO+aaYSQVXNMPeJju96CaKJFs3yacalq0i8KIy1xtdK+k6XVPL8SZYI+Qk 40JHGxGTsVeLpcQkwUsXUKfJpmik9zY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1634717968; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fF05nAEyjqTbx+MUMonWp9IUBJlR+Dw6z0QwyteEkTw=; b=pNe6tBQODotEc2aHu+V64wYMh/dMMgW2yUPDrkGUUEYB33K5zemch5GehR+z1c3tBJETQ5 z80x/CcyVZDgqDDQ== Received: from pobox.suse.cz (pobox.suse.cz [10.100.2.14]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 8E7F6A3B84; Wed, 20 Oct 2021 08:19:27 +0000 (UTC) Date: Wed, 20 Oct 2021 10:19:27 +0200 (CEST) From: Miroslav Benes To: Ming Lei cc: Luis Chamberlain , Benjamin Herrenschmidt , Paul Mackerras , tj@kernel.org, gregkh@linuxfoundation.org, akpm@linux-foundation.org, minchan@kernel.org, jeyu@kernel.org, shuah@kernel.org, bvanassche@acm.org, dan.j.williams@intel.com, joe@perches.com, tglx@linutronix.de, keescook@chromium.org, rostedt@goodmis.org, linux-spdx@vger.kernel.org, linux-doc@vger.kernel.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org Subject: Re: [PATCH v8 11/12] zram: fix crashes with cpu hotplug multistate In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 20 Oct 2021, Ming Lei wrote: > On Wed, Oct 20, 2021 at 08:43:37AM +0200, Miroslav Benes wrote: > > On Tue, 19 Oct 2021, Ming Lei wrote: > > > > > On Tue, Oct 19, 2021 at 08:23:51AM +0200, Miroslav Benes wrote: > > > > > > By you only addressing the deadlock as a requirement on approach a) you are > > > > > > forgetting that there *may* already be present drivers which *do* implement > > > > > > such patterns in the kernel. I worked on addressing the deadlock because > > > > > > I was informed livepatching *did* have that issue as well and so very > > > > > > likely a generic solution to the deadlock could be beneficial to other > > > > > > random drivers. > > > > > > > > > > In-tree zram doesn't have such deadlock, if livepatching has such AA deadlock, > > > > > just fixed it, and seems it has been fixed by 3ec24776bfd0. > > > > > > > > I would not call it a fix. It is a kind of ugly workaround because the > > > > generic infrastructure lacked (lacks) the proper support in my opinion. > > > > Luis is trying to fix that. > > > > > > What is the proper support of the generic infrastructure? I am not > > > familiar with livepatching's model(especially with module unload), you mean > > > livepatching have to do the following way from sysfs: > > > > > > 1) during module exit: > > > > > > mutex_lock(lp_lock); > > > kobject_put(lp_kobj); > > > mutex_unlock(lp_lock); > > > > > > 2) show()/store() method of attributes of lp_kobj > > > > > > mutex_lock(lp_lock) > > > ... > > > mutex_unlock(lp_lock) > > > > Yes, this was exactly the case. We then reworked it a lot (see > > 958ef1e39d24 ("livepatch: Simplify API by removing registration step"), so > > now the call sequence is different. kobject_put() is basically offloaded > > to a workqueue scheduled right from the store() method. Meaning that > > Luis's work would probably not help us currently, but on the other hand > > the issues with AA deadlock were one of the main drivers of the redesign > > (if I remember correctly). There were other reasons too as the changelog > > of the commit describes. > > > > So, from my perspective, if there was a way to easily synchronize between > > a data cleanup from module_exit callback and sysfs/kernfs operations, it > > could spare people many headaches. > > kobject_del() is supposed to do so, but you can't hold a shared lock > which is required in show()/store() method. Once kobject_del() returns, > no pending show()/store() any more. > > The question is that why one shared lock is required for livepatching to > delete the kobject. What are you protecting when you delete one kobject? I think it boils down to the fact that we embed kobject statically to structures which livepatch uses to maintain data. That is discouraged generally, but all the attempts to implement it correctly were utter failures. Miroslav