Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp595156pxj; Wed, 2 Jun 2021 06:55:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyyGmkzrr2FBHq/mAsQz/Ig8AQoDoRMfFqulicIjpOshMs4urVAHdlBk2IR1uEW/9KdlKfE X-Received: by 2002:a17:906:2306:: with SMTP id l6mr7983260eja.362.1622642101239; Wed, 02 Jun 2021 06:55:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622642101; cv=none; d=google.com; s=arc-20160816; b=Nibr8YwOlDiBGzFRuwZx8rOV0xbt2s7vMtTyd6X+ed5r52Q0KxmEPQ+yRoxeIEuSYb NHJ2snmiumbUD+iXqhI0oIUSZzl0wJVlSo9orfnkcbqFdDHnqhaTHlgM7AQEpwO8uZfq ZrFqyP1Sl1mUnWyhzrzQDsHjOdHLt0mG7ZgRhTRtmKnNDkBAf+AZdPEQVD+mgQyljGes YAlVH5ZfTtb+I/qnqnOSDEFwijbUyv6AR1i7g7sk5PtFT6zkr6aGdbsEvWBwq0StkQL5 zBl/5p/gnUzFz3HOgzee0g/E+vumyOqBoOzZCiYHqKsvMwqa+OdspqPv25JOh9ZkHc/D LdkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=D7CzKbtV2p2C5OzFLrZfXtWnidvLcYX6tkznUpyUzNg=; b=cUaANUsVyOiXSKQsst3R5715Q+I/y0RIRVRqC8ru5OmZK0jHoi8uAj4Br4NcrWL54j leEHs9fxCDgpuwMPmBE3wDo1joyXWKisQyeYjigeuidmAybPfZTT3B8UJ1AUgk8V+qPz bYKH993IGoKPhRaO/0ZPzfzXMXT6/mMHq4S2I0q3FklMpo+0KqI3h2Ydl4u26hiwZw9l j2YBSaCgKHGJCMerpI7hZ1GVmFTI8Nwdjz1bAwxjsBGuYpFmx5CEMS8XWHoJ9O8SV1gC kl8byDE8jFuteXo6h7nSw1CrohZw4bw1Hd5kSF4vsjIx941xTg+SFGaKj6lLhnpOjNzP 111Q== ARC-Authentication-Results: i=1; mx.google.com; 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 h3si1973561edf.461.2021.06.02.06.54.38; Wed, 02 Jun 2021 06:55:01 -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; 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 S229882AbhFBNx5 (ORCPT + 99 others); Wed, 2 Jun 2021 09:53:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:44506 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229852AbhFBNx5 (ORCPT ); Wed, 2 Jun 2021 09:53:57 -0400 Received: from oasis.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 86E99613D6; Wed, 2 Jun 2021 13:52:13 +0000 (UTC) Date: Wed, 2 Jun 2021 09:52:11 -0400 From: Steven Rostedt To: "Zhengyejian (Zetta)" Cc: , , , Zhangjinhao , Anton Vorontsov Subject: Re: [BUG] I found a bug when try to enable record_ftrace Message-ID: <20210602095211.3c16b2da@oasis.local.home> In-Reply-To: <01472d0f-55c1-15ea-9beb-5d64b322bb44@huawei.com> References: <01472d0f-55c1-15ea-9beb-5d64b322bb44@huawei.com> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2 Jun 2021 15:42:23 +0800 "Zhengyejian (Zetta)" wrote: > Hello, > > There may be a deadlock caused by ftrace recursion when try to enable > record_ftrace. > I'd like to known if the patchset > (https://lore.kernel.org/lkml/20201106023235.367190737@goodmis.org/) is > trying to fix it. > > Procedure for reproducing the problem is: > 1) this problem appears both in 5.13-rc4 and 5.10; > > 2) my work environment is: > qemu-arm version 4.0.0 > arm-linux-gnueabi-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 > > 3) then try to enable record_ftrace: > / # mount -t pstore pstore /sys/fs/pstore > / # echo 1 > /sys/kernel/debug/pstore/record_ftrace > > 4) then system appears to be stuck, and use arm-linux-gnueabi-gdb > dump the following call stack: > #0 arch_spin_lock (lock=0x811a0f98) at > /home/zyj/Linux/linux-master/arch/arm/include/asm/spinlock.h:74 > #1 do_raw_spin_lock_flags (flags=, > lock=0x811a0f98) at > /home/zyj/Linux/linux-master/include/linux/spinlock.h:195 > #2 __raw_spin_lock_irqsave (lock=0x811a0f98) at > /home/zyj/Linux/linux-master/include/linux/spinlock_api_smp.h:119 > #3 _raw_spin_lock_irqsave (lock=lock@entry=0x811a0f98) at > /home/zyj/Linux/linux-master/kernel/locking/spinlock.c:159 > #4 0x8046c6e0 in buffer_size_add (prz=prz@entry=0x811a0f80, > a=a@entry=16) at /home/zyj/Linux/linux-master/fs/pstore/ram_core.c:82 > #5 0x8046cc20 in persistent_ram_write (prz=0x811a0f80, > s=0x81137b80, count=16) at > /home/zyj/Linux/linux-master/fs/pstore/ram_core.c:327 > #6 0x8046b438 in ramoops_pstore_write (record=0x81137b90) at > /home/zyj/Linux/linux-master/fs/pstore/ram.c:331 > #7 0x8046add8 in pstore_ftrace_call (ip=2156609456, > parent_ip=2152122068, op=, fregs=) > at /home/zyj/Linux/linux-master/fs/pstore/ftrace.c:54 > #8 0x801dd580 in __ftrace_ops_list_func (ignored=0x0, fregs=0x0, > parent_ip=2152122068, ip=2156609456) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:7003 > #9 ftrace_ops_list_func (ip=2156609456, parent_ip=2152122068, > op=, fregs=0x0) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:7028 > #10 0x801109f8 in ftrace_caller () at > /home/zyj/Linux/linux-master/arch/arm/kernel/entry-ftrace.S:224 > #11 0x808b3fb4 in _raw_spin_unlock_irqrestore > (lock=lock@entry=0x811a0f98, flags=1610612883) at > /home/zyj/Linux/linux-master/kernel/locking/spinlock.c:190 > #12 0x8046c6d4 in buffer_size_add (prz=prz@entry=0x811a0f80, > a=a@entry=16) at /home/zyj/Linux/linux-master/fs/pstore/ram_core.c:95 > #13 0x8046cc20 in persistent_ram_write (prz=0x811a0f80, > s=0x81137cf8, count=16) at > /home/zyj/Linux/linux-master/fs/pstore/ram_core.c:327 > #14 0x8046b438 in ramoops_pstore_write (record=0x81137d08) at > /home/zyj/Linux/linux-master/fs/pstore/ram.c:331 > #15 0x8046add8 in pstore_ftrace_call (ip=2148632188, > parent_ip=2148601660, op=, fregs=) > at /home/zyj/Linux/linux-master/fs/pstore/ftrace.c:54 > #16 0x801dd580 in __ftrace_ops_list_func (ignored=0x0, fregs=0x0, > parent_ip=2148601660, ip=2148632188) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:7003 > #17 ftrace_ops_list_func (ip=2148632188, parent_ip=2148601660, > op=, fregs=0x0) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:7028 > #18 0x801109f8 in ftrace_caller () at > /home/zyj/Linux/linux-master/arch/arm/kernel/entry-ftrace.S:224 > #19 0x80118680 in __set_fixmap (idx=idx@entry=FIX_TEXT_POKE0, > phys=phys@entry=0, prot=prot@entry=0) at > /home/zyj/Linux/linux-master/arch/arm/mm/mmu.c:385 > #20 0x80110f3c in patch_unmap (flags=, > fixmap=129) at /home/zyj/Linux/linux-master/arch/arm/kernel/patch.c:45 > #21 __patch_text_real (addr=addr@entry=0x808b3fb0 > <_raw_spin_unlock_irqrestore+16>, insn=insn@entry=3957420680, > remap=remap@entry=true) > at /home/zyj/Linux/linux-master/arch/arm/kernel/patch.c:104 > #22 0x80110b40 in __patch_text (insn=3957420680, addr=0x808b3fb0 > <_raw_spin_unlock_irqrestore+16>) at > /home/zyj/Linux/linux-master/arch/arm/include/asm/patch.h:10 > #23 ftrace_modify_code (pc=2156609456, old=3904716800, > new=3957420680, validate=true) at > /home/zyj/Linux/linux-master/arch/arm/kernel/ftrace.c:95 > #24 0x80110cf4 in ftrace_make_call (rec=rec@entry=0x81007ce0, > addr=addr@entry=2148600280) at > /home/zyj/Linux/linux-master/arch/arm/kernel/ftrace.c:132 > #25 0x801dda40 in __ftrace_replace_code (rec=rec@entry=0x81007ce0, > enable=enable@entry=true) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:2524 > #26 0x801de17c in ftrace_replace_code (mod_flags=mod_flags@entry=1) > at /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:2554 > #27 0x801de39c in ftrace_modify_all_code (command=5) at > /home/zyj/Linux/linux-master/kernel/trace/ftrace.c:2698 > #28 0x80110ad8 in __ftrace_modify_code (data=) at > /home/zyj/Linux/linux-master/arch/arm/kernel/ftrace.c:39 > #29 0x801d4da4 in multi_cpu_stop (data=data@entry=0x81c69d84) at > /home/zyj/Linux/linux-master/kernel/stop_machine.c:240 > #30 0x801d4a14 in cpu_stopper_thread (cpu=) at > /home/zyj/Linux/linux-master/kernel/stop_machine.c:511 > #31 0x8014de3c in smpboot_thread_fn (data=0x810c1c80) at > /home/zyj/Linux/linux-master/kernel/smpboot.c:165 > #32 0x8014a0dc in kthread (_create=0x810c1d40) at > /home/zyj/Linux/linux-master/kernel/kthread.c:313 > #33 0x80100150 in ret_from_fork () at > /home/zyj/Linux/linux-master/arch/arm/kernel/entry-common.S:158 > Backtrace stopped: previous frame identical to this frame (corrupt > stack?) > > See above #7~#15, there is a recursion in function pstore_ftrace_call(), > and a spin_lock(lock=0x811a0f98) is hold since unlock operation in above > #11 not finished. Then in above #0, trying to acquire same lock cause a > deadlock. > > Enabling 'record_ftrace' seems a basic operation of pstore/ftrace, Does > it mean this feature is not available for a while? I don't use pstore or arm. That is a question for the pstore folks. -- Steve