All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Dmitry Vyukov <dvyukov@google.com>
Cc: tglx@linutronix.de, linux-kernel@vger.kernel.org,
	"Eric W . Biederman" <ebiederm@xmission.com>,
	Frederic Weisbecker <frederic@kernel.org>,
	Marco Elver <elver@google.com>
Subject: Re: [RFC PATCH v2] posix-timers: Support delivery of signals to the current thread
Date: Wed, 25 Jan 2023 13:43:04 +0100	[thread overview]
Message-ID: <20230125124304.GA13746@redhat.com> (raw)
In-Reply-To: <20230112112411.813356-1-dvyukov@google.com>

On 01/12, Dmitry Vyukov wrote:
>
> --- a/kernel/time/posix-timers.c
> +++ b/kernel/time/posix-timers.c
> @@ -336,6 +336,7 @@ void posixtimer_rearm(struct kernel_siginfo *info)
>  int posix_timer_event(struct k_itimer *timr, int si_private)
>  {
>  	enum pid_type type;
> +	struct pid *pid;
>  	int ret;
>  	/*
>  	 * FIXME: if ->sigq is queued we can race with
> @@ -350,8 +351,9 @@ int posix_timer_event(struct k_itimer *timr, int si_private)
>  	 */
>  	timr->sigq->info.si_sys_private = si_private;
>
> +	pid = timr->it_pid ?: task_pid(current);
>  	type = !(timr->it_sigev_notify & SIGEV_THREAD_ID) ? PIDTYPE_TGID : PIDTYPE_PID;

can't resist... somehow the line above looks confusing to me, perhaps you
can change it to

	type = (timr->it_sigev_notify & SIGEV_THREAD_ID) ? PIDTYPE_PID : PIDTYPE_TGID;

> -static struct pid *good_sigevent(sigevent_t * event)
> +static struct pid *good_sigevent(sigevent_t *event, clockid_t which_clock)
>  {
>  	struct pid *pid = task_tgid(current);
>  	struct task_struct *rtn;
>
>  	switch (event->sigev_notify) {
>  	case SIGEV_SIGNAL | SIGEV_THREAD_ID:
> +		/* This will use the current task for signals. */
> +		if (which_clock == CLOCK_PROCESS_CPUTIME_ID &&
> +		    !event->sigev_notify_thread_id)
> +			return NULL;

this doesn't look right, this skips the "sigev_signo" check below.

Other than that I see nothing wrong in this patch, but I forgot everything
about posix timers many years ago ;)

> @@ -527,9 +534,11 @@ static int do_timer_create(clockid_t which_clock, struct sigevent *event,
>
>  	if (event) {
>  		rcu_read_lock();
> -		new_timer->it_pid = get_pid(good_sigevent(event));
> +		pid = good_sigevent(event, which_clock);
> +		if (!IS_ERR(pid))
> +			new_timer->it_pid = get_pid(pid);

Another cosmetic nit, feel free to ignore... If you change good_sigevent()

	case SIGEV_NONE:
-		return pid;
+		return get_pid(pid);

you can remove this "if (!IS_ERR(pid))" code above.

Oleg.


  reply	other threads:[~2023-01-25 12:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-16 17:18 [RFC PATCH] posix-timers: Support delivery of signals to the current thread Dmitry Vyukov
2023-01-11 15:49 ` Dmitry Vyukov
2023-01-11 21:28   ` Thomas Gleixner
2023-01-12 11:24 ` [RFC PATCH v2] " Dmitry Vyukov
2023-01-25 12:43   ` Oleg Nesterov [this message]
2023-01-25 15:17     ` Oleg Nesterov
2023-01-25 15:34       ` Dmitry Vyukov
2023-01-25 16:31         ` Oleg Nesterov
2023-01-25 16:45           ` Oleg Nesterov
2023-01-25 17:07           ` Oleg Nesterov
2023-01-26 10:58             ` Dmitry Vyukov
2023-01-26 10:56           ` Dmitry Vyukov
2023-01-26 10:51   ` [PATCH v3] posix-timers: Prefer " Dmitry Vyukov
2023-01-26 14:46     ` Oleg Nesterov
2023-01-26 15:41     ` [PATCH v4] " Dmitry Vyukov
2023-01-26 17:51       ` Marco Elver
2023-01-26 19:57         ` Thomas Gleixner
2023-01-27  6:58           ` Dmitry Vyukov
2023-01-28 19:56             ` Oleg Nesterov
2023-01-28 20:15               ` Oleg Nesterov
2023-01-30  9:00               ` Dmitry Vyukov
2023-01-30 16:49                 ` Oleg Nesterov
2023-02-02  7:36             ` Dmitry Vyukov
2023-02-20 14:43       ` [PATCH v5] " Dmitry Vyukov
2023-02-22 15:19         ` Oleg Nesterov
2023-03-14  8:25           ` Dmitry Vyukov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230125124304.GA13746@redhat.com \
    --to=oleg@redhat.com \
    --cc=dvyukov@google.com \
    --cc=ebiederm@xmission.com \
    --cc=elver@google.com \
    --cc=frederic@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.