From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B67A37AA77 for ; Fri, 22 May 2026 12:06:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451580; cv=none; b=qR/1uT/lTtmPuXwXoYW2pa+LdiOhNiSakbKUwc6fQJyEe32+rrAvFEtJCqWVw5Z6SbzEOjlZbhDER0qhxg4lrUQtyyxzOXyqibLBQPRu4lXxn8RJZIjJlqvODCBlOshrFaJHGGAtu+frdDiRVTAPK4/uXWnzhAe9HyLli/8eRYI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779451580; c=relaxed/simple; bh=FppQQVw5yTybXwPhH5azHFBkpJZgaZ3kn5gzSSVbpxA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=hxIBhHXyxHNE1Frl3QmaEl8My/Qqdv98m3UuU0Gic/VPngTeqTZoKoJN7Dsr5j7s0VvG7YsZqxWnGB4NoeR7YpuXNOQ5TqKKOGejx5GDae/zDptlGNkOLi2YmDh7khEWtCztVuDXIAvLMDOMA16IvAf21c14CMDpTZqFgPcn0NU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Y4Ldrqsg; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Y4Ldrqsg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A39B1F000E9; Fri, 22 May 2026 12:06:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779451577; bh=pQzQXIeWjqMa7IdV0rzy8ubj80MUX330eW83hx0Vygo=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=Y4LdrqsgyjpT87kj8en2m2OcJ4MCvQzbnjFl5kqoHqXQhCZMvoVcOI9mDiQecygNC 5E55GshJMV5eDnF9crkZ+vbliyzKiJmE4lYikj2/u0LCIWaiDY61FKeezxoA0XknZ1 JcPfAiVuCUWgTkbRBKGa5p73Z0lkx4W+jkfhYKjXOQmbPuuCkcPXEb3kymEypPdYFj Ow/FvA16OBgS7XV66KVay95kY8s7lzmR/5JEFmJsBmO+VUI6i4KmN01jZ4e/GCLGiH uJv1QEm3dk7UCLyLov6Kox4Urf+ORRT/yorXDCp4lmwAR17Sw4MJNiv51Pw7b/45/E VVJdXXsYN2SrA== Message-ID: <69bd69b1-97f7-41e2-934b-bed28dc2fef7@kernel.org> Date: Fri, 22 May 2026 14:06:14 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 2/8] powerpc/signal64: Untangle setup_tm_sigcontexts() and user_access_begin() To: David Laight Cc: Michael Ellerman , Nicholas Piggin , Madhavan Srinivasan , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org References: <7c83fe5a596514a02fde37da987a48d638d0d097.1779441786.git.chleroy@kernel.org> <20260522121237.3089276f@pumpkin> Content-Language: fr-FR From: "Christophe Leroy (CS GROUP)" In-Reply-To: <20260522121237.3089276f@pumpkin> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Le 22/05/2026 à 13:12, David Laight a écrit : > On Fri, 22 May 2026 11:56:02 +0200 > "Christophe Leroy (CS GROUP)" wrote: > >> Call setup_tm_sigcontexts() before opening user access to avoid >> having to close and open again. >> >> Signed-off-by: Christophe Leroy (CS GROUP) >> --- >> arch/powerpc/kernel/signal_64.c | 22 +++++++++------------- >> 1 file changed, 9 insertions(+), 13 deletions(-) >> >> diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c >> index 86bb5bb4c143..3849af21e1d8 100644 >> --- a/arch/powerpc/kernel/signal_64.c >> +++ b/arch/powerpc/kernel/signal_64.c >> @@ -873,6 +873,15 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, >> if (!MSR_TM_ACTIVE(msr)) >> prepare_setup_sigcontext(tsk); >> >> +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM >> + if (MSR_TM_ACTIVE(msr)) > > Can't that be done without the ugly #ifdef? > I assume MSR_TM_ACTIVE() will be zero - so it will all get optimised away. Yes but struct rt_sigframe field uc_transact only exists when CONFIG_PPC_TRANSACTIONAL_MEM is defined. And that would also require a stub setup_tm_sigcontexts() Chistophe > > -- David > >> + err |= setup_tm_sigcontexts(&frame->uc.uc_mcontext, >> + &frame->uc_transact.uc_mcontext, >> + tsk, ksig->sig, NULL, >> + (unsigned long)ksig->ka.sa.sa_handler, >> + msr); >> + >> +#endif >> if (!user_write_access_begin(frame, sizeof(*frame))) >> goto badframe; >> >> @@ -889,19 +898,6 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, >> * ucontext_t (for transactional state) with its uc_link ptr. >> */ >> unsafe_put_user(&frame->uc_transact, &frame->uc.uc_link, badframe_block); >> - >> - user_write_access_end(); >> - >> - err |= setup_tm_sigcontexts(&frame->uc.uc_mcontext, >> - &frame->uc_transact.uc_mcontext, >> - tsk, ksig->sig, NULL, >> - (unsigned long)ksig->ka.sa.sa_handler, >> - msr); >> - >> - if (!user_write_access_begin(&frame->uc.uc_sigmask, >> - sizeof(frame->uc.uc_sigmask))) >> - goto badframe; >> - >> #endif >> } else { >> unsafe_put_user(0, &frame->uc.uc_link, badframe_block); >