From nobody Mon May 11 00:50:37 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB05BC433F5 for ; Wed, 20 Apr 2022 06:16:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359489AbiDTGTL (ORCPT ); Wed, 20 Apr 2022 02:19:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352763AbiDTGTG (ORCPT ); Wed, 20 Apr 2022 02:19:06 -0400 Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31AC8393ED; Tue, 19 Apr 2022 23:16:22 -0700 (PDT) Received: by mail-pj1-x102d.google.com with SMTP id bx5so998939pjb.3; Tue, 19 Apr 2022 23:16:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2dxv6RubXnlfeYakjpCeec9ZN/h5ACRQKP6ziPSuma8=; b=mfgT9TDjWycX6jagA/wAxWk1CAjj0aRkoTY2GTgubsCHWMPRBXCang1Aeh6p/I7w1a D8JpH+9FLclpmBzPOVqAa5WIxeuQDJnptbKAnpUb10iAyUPovc1mCCh+RTX0sXarI7ea Q903WV8NeYuX7uLnY2QfXia77F/27inTI65yMb8IaVmuvnFUXOrjh4dAHtH0+2AjJ719 hDJNcopvXsITOm004vk/l2D/Re2KkN2XPIXfLIZfaUdpHNKjQp2+KOj1wrow+Br/QwZN 0fxl3TbiddD3Z2pfikWzFaTEWVkFNhP5gdqTjgUqyMbCJ3PQQ2A/KNLZ5B5WxqK8pyGN 5tug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2dxv6RubXnlfeYakjpCeec9ZN/h5ACRQKP6ziPSuma8=; b=Yy9m/8XpymsdfrMgfdh9RylN+GziHCXq1EtlxXN17CJgm7fb29kamjA/MLnHQeeC/u etmPpRqlCrTCO8Ke6khOfFDtBTzm0mwZdnzRIkfsJfq5QBt9OfWLS4Je2iLS962UJQNA QnqGQcXQBA/NZe1LIvOpWCljx2XA8HxogXOxLm5AaPJwlQdTdnTVEEXwSyUoA+enNin2 IploOyWLzBQLeYb4F/xg8JNRPzXLnXJ91/zWRoPij4LWQ1AblRS4zYwgs/AjbK9DrSq/ oyhXuTemHwvsIOQBxm5qARiJvKorQA0zUaI3gzGXvuWwkpD4P2MCZ73Ly1Oh8Gp/f0B1 nM8A== X-Gm-Message-State: AOAM531+m2bnCrTRzsjvhHe8UEj8AUpCrUjn1tTzq/UfSifwK/4haO44 akocnTxhxiEahGB186UlhYA= X-Google-Smtp-Source: ABdhPJzG+wVAFIuExUHG6CpD9iDe9gZtDe1vAMHP4GPC1VJolBlAaA+c1igU59Mkkq+e7NFhq0xrPg== X-Received: by 2002:a17:902:b941:b0:14d:af72:3f23 with SMTP id h1-20020a170902b94100b0014daf723f23mr19596035pls.6.1650435381733; Tue, 19 Apr 2022 23:16:21 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:daec:60d:88f6:798a]) by smtp.gmail.com with ESMTPSA id k22-20020aa790d6000000b0050a765d5d48sm9798778pfk.160.2022.04.19.23.16.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Apr 2022 23:16:20 -0700 (PDT) From: Max Filippov To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, linux-xtensa@linux-xtensa.org, Chris Zankel , Guo Ren , Guo Ren , Max Filippov , Masami Hiramatsu , stable@vger.kernel.org Subject: [PATCH 1/3] xtensa: patch_text: Fixup last cpu should be master Date: Tue, 19 Apr 2022 23:16:09 -0700 Message-Id: <20220420061611.4103443-2-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220420061611.4103443-1-jcmvbkbc@gmail.com> References: <20220420061611.4103443-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Guo Ren These patch_text implementations are using stop_machine_cpuslocked infrastructure with atomic cpu_count. The original idea: When the master CPU patch_text, the others should wait for it. But current implementation is using the first CPU as master, which couldn't guarantee the remaining CPUs are waiting. This patch changes the last CPU as the master to solve the potential risk. Fixes: 64711f9a47d4 ("xtensa: implement jump_label support") Signed-off-by: Guo Ren Signed-off-by: Guo Ren Reviewed-by: Max Filippov Reviewed-by: Masami Hiramatsu Cc: Message-Id: <20220407073323.743224-4-guoren@kernel.org> Signed-off-by: Max Filippov --- arch/xtensa/kernel/jump_label.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/xtensa/kernel/jump_label.c b/arch/xtensa/kernel/jump_labe= l.c index 0dde21e0d3de..ad1841cecdfb 100644 --- a/arch/xtensa/kernel/jump_label.c +++ b/arch/xtensa/kernel/jump_label.c @@ -40,7 +40,7 @@ static int patch_text_stop_machine(void *data) { struct patch *patch =3D data; =20 - if (atomic_inc_return(&patch->cpu_count) =3D=3D 1) { + if (atomic_inc_return(&patch->cpu_count) =3D=3D num_online_cpus()) { local_patch_text(patch->addr, patch->data, patch->sz); atomic_inc(&patch->cpu_count); } else { --=20 2.30.2 From nobody Mon May 11 00:50:37 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1018C433EF for ; Wed, 20 Apr 2022 06:16:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359496AbiDTGTP (ORCPT ); Wed, 20 Apr 2022 02:19:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359480AbiDTGTI (ORCPT ); Wed, 20 Apr 2022 02:19:08 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4870393DB for ; Tue, 19 Apr 2022 23:16:23 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id s14so900970plk.8 for ; Tue, 19 Apr 2022 23:16:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nrmZN1YGOXwt96xOgDckyKdEp0sX0UQnyV38Md8fDGs=; b=bHBqeh+CrW9h20RGBZXkWpQvf8YwJDwRfjQbGqhVknLEACTwHhEFaqmd+4l3Ptfxza EH+vqfFNLManK+QQZpss9gjUc5sa4qLUw58mojbTvaS0INZipA6XoRm/Ya7F4FtG7Wit Uyf2UqDky9RIWj9xOQdq/xcxbvdoPRvCbyR6D81bsw9ihcmPykjPgTGlB3UpVh7UYSXO L0KtEzQD8e3StZ862FvNcchsX569ksD90vwg3fFJCQk/TdPVzP8SnmiTfHqcoTE5+8n8 574kbXlWpTmaISmD9nVClw4EETxiiNS1Gn++gl0sF7IFhWKNnxDA/FJYeilTaX2VXWAp ThDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nrmZN1YGOXwt96xOgDckyKdEp0sX0UQnyV38Md8fDGs=; b=GZeemRLiQZo7i4zfiDaxB4bdvR9X1iSNOHwTaqE7xqrtPS2CHRg8IJMFbGFcLupztm rE8p+U+uwywdLow6LoObK7d1G4VcCz2PBHx0S5a3gOY0wDzHKi8+w4gEVJ+wEWDs8wBd 5HFgQidLNQ/KyUWn3ecYMLVDzoE0YlagdNrmXfD2Gxbf3RZK+vxg4hjhV6mCLS+BX93b Glxyo3mjAXrCJpduTvKqy/gsA2a+iW1aUYKWcoFa6Jm9l6lPFqr4VPY/madXkk0pSIX8 8dpBRXc+4CfyXk4DhCjxIwrsEB3Yc89AwVxGhxAwPeO+YTor1KQQ916M7d1R+qkd4EET hd9g== X-Gm-Message-State: AOAM53331hKhhtk0Ix1mnww30F7RsSmFMMfCmmvIw2Qal9P8SPdH6nU7 LVavA02pjcnHYUany/DLTTc= X-Google-Smtp-Source: ABdhPJzsrUQ6zA4RClsX41beCZK8xWPN5bmsPvGtAMLQAsLGHZDSBcFO1TBTgkG8has8I8lBOqtAkw== X-Received: by 2002:a17:90b:4d86:b0:1d2:cd59:d275 with SMTP id oj6-20020a17090b4d8600b001d2cd59d275mr2589745pjb.119.1650435383187; Tue, 19 Apr 2022 23:16:23 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:daec:60d:88f6:798a]) by smtp.gmail.com with ESMTPSA id k22-20020aa790d6000000b0050a765d5d48sm9798778pfk.160.2022.04.19.23.16.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Apr 2022 23:16:22 -0700 (PDT) From: Max Filippov To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, linux-xtensa@linux-xtensa.org, Chris Zankel , Duoming Zhou , Max Filippov Subject: [PATCH 2/3] arch: xtensa: platforms: Fix deadlock in rs_close() Date: Tue, 19 Apr 2022 23:16:10 -0700 Message-Id: <20220420061611.4103443-3-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220420061611.4103443-1-jcmvbkbc@gmail.com> References: <20220420061611.4103443-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Duoming Zhou There is a deadlock in rs_close(), which is shown below: (Thread 1) | (Thread 2) | rs_open() rs_close() | mod_timer() spin_lock_bh() //(1) | (wait a time) ... | rs_poll() del_timer_sync() | spin_lock() //(2) (wait timer to stop) | ... We hold timer_lock in position (1) of thread 1 and use del_timer_sync() to wait timer to stop, but timer handler also need timer_lock in position (2) of thread 2. As a result, rs_close() will block forever. This patch deletes the redundant timer_lock in order to prevent the deadlock. Because there is no race condition between rs_close, rs_open and rs_poll. Signed-off-by: Duoming Zhou Message-Id: <20220407154430.22387-1-duoming@zju.edu.cn> Signed-off-by: Max Filippov --- arch/xtensa/platforms/iss/console.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/is= s/console.c index 81d7c7e8f7e9..10b79d3c74e0 100644 --- a/arch/xtensa/platforms/iss/console.c +++ b/arch/xtensa/platforms/iss/console.c @@ -36,24 +36,19 @@ static void rs_poll(struct timer_list *); static struct tty_driver *serial_driver; static struct tty_port serial_port; static DEFINE_TIMER(serial_timer, rs_poll); -static DEFINE_SPINLOCK(timer_lock); =20 static int rs_open(struct tty_struct *tty, struct file * filp) { - spin_lock_bh(&timer_lock); if (tty->count =3D=3D 1) mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE); - spin_unlock_bh(&timer_lock); =20 return 0; } =20 static void rs_close(struct tty_struct *tty, struct file * filp) { - spin_lock_bh(&timer_lock); if (tty->count =3D=3D 1) del_timer_sync(&serial_timer); - spin_unlock_bh(&timer_lock); } =20 =20 @@ -73,8 +68,6 @@ static void rs_poll(struct timer_list *unused) int rd =3D 1; unsigned char c; =20 - spin_lock(&timer_lock); - while (simc_poll(0)) { rd =3D simc_read(0, &c, 1); if (rd <=3D 0) @@ -87,7 +80,6 @@ static void rs_poll(struct timer_list *unused) tty_flip_buffer_push(port); if (rd) mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE); - spin_unlock(&timer_lock); } =20 =20 --=20 2.30.2 From nobody Mon May 11 00:50:37 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 44657C433EF for ; Wed, 20 Apr 2022 06:16:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359506AbiDTGTZ (ORCPT ); Wed, 20 Apr 2022 02:19:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359484AbiDTGTJ (ORCPT ); Wed, 20 Apr 2022 02:19:09 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04C1D393DB; Tue, 19 Apr 2022 23:16:25 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id j17so1015633pfi.9; Tue, 19 Apr 2022 23:16:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8XEJp2R4K25ZYHNS7d51S7Y7FdMSq6LIaDwY2H8Jjr4=; b=CqEHDfVth2SZNnvBCwXpvmd6rbXdFGJqBERrT7dtwrUFgTDo60j6hyDZTbDmB1ADXE a3UnFt63E9yNhfqXq5GYE8L7zZzDLX8BJ7EB+A1lW/VMA7R9lMhZgK7EM3mas6+HQ5pg vJmJdR1D0/LRDvYUKOpbX3HX9r1olMPhF+AC2h1lA4XcpI/fL838JEPWQhDTbFoH3Vuf m/yON1qaFowxbhCmM5aaotBekQxCgbq8jF86jjPZRQF+huuovksEjFMphWhp5NRsPaEA AEeFLDjgb0NKAPTqfw9qWz1Npa0SC7sLR07id7TnwYZ+dDzhbCANwxW4PTInmk3O8/fy XiWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8XEJp2R4K25ZYHNS7d51S7Y7FdMSq6LIaDwY2H8Jjr4=; b=dkQg2cQ6rx8ike+hzdgUEmo00U1nLNk1ktRGSQ/NZgaV2ncaFTn2Hik+4TXK/NxY7v wsY+a6ECVEBZEU/sRMhwxDtixHyNKBHKoUkDCu0xBwPGe8uB/rCYfl40M8/LGptgRp5F KB8I9CDNDzA7/HAoulFsuH4HtBA0RulVpgH7svbK4/X/ffMuPWhcTZ2LOWb9dcmi4EiM DIrCkpufHu5HPJXG9eGJAg+mCaPdT8DFYu4RoXEqVvNGp7LvODr5JQQC94XeGTBcIURk X3WiePIA2sJCqBSC8QzuM7GqdfRuz0Gytwe4c5lMI3owlYykKNv1hq8DwBBeFia4QqVY USyw== X-Gm-Message-State: AOAM530JORLMHUipN9D3R+8QcK6NjdXoUQxu5JXkcvRxjS2KtoQcMSnp RUB36e9rjSYSgHMByLF9dqRaPXJ+BEjolw== X-Google-Smtp-Source: ABdhPJx6BmH11OdCkrvs7y7Wlz4oKOOhwV/WA8UZNjUBwJd+BMtI++dJBOS0FIsBOU4yEeWcL8YoFg== X-Received: by 2002:a05:6a00:16c7:b0:4f7:e497:69b8 with SMTP id l7-20020a056a0016c700b004f7e49769b8mr21618014pfc.6.1650435384472; Tue, 19 Apr 2022 23:16:24 -0700 (PDT) Received: from octofox.hsd1.ca.comcast.net ([2601:641:401:1d20:daec:60d:88f6:798a]) by smtp.gmail.com with ESMTPSA id k22-20020aa790d6000000b0050a765d5d48sm9798778pfk.160.2022.04.19.23.16.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Apr 2022 23:16:23 -0700 (PDT) From: Max Filippov To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, linux-xtensa@linux-xtensa.org, Chris Zankel , Max Filippov , stable@vger.kernel.org Subject: [PATCH 3/3] xtensa: fix a7 clobbering in coprocessor context load/store Date: Tue, 19 Apr 2022 23:16:11 -0700 Message-Id: <20220420061611.4103443-4-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220420061611.4103443-1-jcmvbkbc@gmail.com> References: <20220420061611.4103443-1-jcmvbkbc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Fast coprocessor exception handler saves a3..a6, but coprocessor context load/store code uses a4..a7 as temporaries, potentially clobbering a7. 'Potentially' because coprocessor state load/store macros may not use all four temporary registers (and neither FPU nor HiFi macros do). Use a3..a6 as intended. Cc: stable@vger.kernel.org Fixes: c658eac628aa ("[XTENSA] Add support for configurable registers and c= oprocessors") Signed-off-by: Max Filippov --- arch/xtensa/kernel/coprocessor.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/xtensa/kernel/coprocessor.S b/arch/xtensa/kernel/coproces= sor.S index 45cc0ae0af6f..c7b9f12896f2 100644 --- a/arch/xtensa/kernel/coprocessor.S +++ b/arch/xtensa/kernel/coprocessor.S @@ -29,7 +29,7 @@ .if XTENSA_HAVE_COPROCESSOR(x); \ .align 4; \ .Lsave_cp_regs_cp##x: \ - xchal_cp##x##_store a2 a4 a5 a6 a7; \ + xchal_cp##x##_store a2 a3 a4 a5 a6; \ jx a0; \ .endif =20 @@ -46,7 +46,7 @@ .if XTENSA_HAVE_COPROCESSOR(x); \ .align 4; \ .Lload_cp_regs_cp##x: \ - xchal_cp##x##_load a2 a4 a5 a6 a7; \ + xchal_cp##x##_load a2 a3 a4 a5 a6; \ jx a0; \ .endif =20 --=20 2.30.2