All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4] sched: automated per session task groups
Date: Sun, 21 Nov 2010 16:44:35 +0100	[thread overview]
Message-ID: <20101121154435.GA25966@redhat.com> (raw)
In-Reply-To: <20101121133919.GA10976@elte.hu>

On 11/21, Ingo Molnar wrote:
>
> Btw., there's a small cleanup in the patch that i picked up (see below), and i also
> edited the commit log a bit - so you might want to pick up the version below.

I didn't read the patch in details, but a couple of nits...

> +static void
> +autogroup_move_group(struct task_struct *p, struct autogroup *ag)
> +{
> +	struct autogroup *prev;
> +	struct task_struct *t;
> +
> +	spin_lock(&p->sighand->siglock);

This needs spin_lock_irq(), ->siglock is irq-safe.

The same for other lockers, but:

> +static inline struct autogroup *autogroup_get(struct task_struct *p)
> +{
> +	struct autogroup *ag;
> +
> +	/* task may be moved after we unlock.. tough */
> +	spin_lock(&p->sighand->siglock);

This is called by fs/proc. In this case nothing protects us from
release_task(), we can hit ->siglock == NULL (or we can race with
exec which changes ->sighand in theory).

This needs lock_task_sighand() (it can fail). Perhaps something
else have the same problem...

If the task is current and it is not exiting, or it is the new
child (sched_autogroup_fork), then it is safe to use ->siglock
directly.

And a pure cosmetic nit,

> +void sched_autogroup_fork(struct signal_struct *sig)
> +{
> +     struct sighand_struct *sighand = current->sighand;
> +
> +     spin_lock(&sighand->siglock);
> +     sig->autogroup = autogroup_kref_get(current->signal->autogroup);
> +     spin_unlock(&sighand->siglock);
> +}

This looks a bit confusing. We do not need current->sighand->siglock
to set sig->autogroup. Nobody except us can see this new signal_struct,
and in any case current->sighand->siglock can't help.

It is needed for autogroup_kref_get(), but we already have autogroup_get().
I'd suggest

	void sched_autogroup_fork(struct signal_struct *sig)
	{
		sig->autogroup = autogroup_get(current);	
	}

Oleg.


  reply	other threads:[~2010-11-21 15:51 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-21 13:37 [PATCH v4] sched: automated per session task groups Ingo Molnar
2010-11-21 13:39 ` Ingo Molnar
2010-11-21 15:44   ` Oleg Nesterov [this message]
2010-11-21 16:35     ` Mike Galbraith
2010-11-21 16:15 ` Mike Galbraith
2010-11-21 18:43 ` Gene Heskett
2010-11-25 16:00 ` Mike Galbraith
2010-11-28 14:24   ` Mike Galbraith
2010-11-28 19:31     ` Linus Torvalds
2010-11-28 20:18       ` Ingo Molnar
2010-11-29 11:53         ` Peter Zijlstra
2010-11-29 12:30           ` Ingo Molnar
2010-11-29 13:45             ` Mike Galbraith
2010-11-29 13:47               ` Ingo Molnar
2010-11-29 14:04                 ` Mike Galbraith
2010-11-29 16:27           ` Linus Torvalds
2010-11-29 16:44             ` Ingo Molnar
2010-11-29 17:37             ` Peter Zijlstra
2010-11-29 18:03               ` Ingo Molnar
2010-11-29 19:06               ` Mike Galbraith
2010-11-29 19:20                 ` Ingo Molnar
2010-11-30  3:39                   ` Paul Turner
2010-11-30  4:14                     ` Mike Galbraith
2010-11-30  4:23                       ` Paul Turner
2010-11-30 13:18                         ` Mike Galbraith
2010-11-30 13:48                           ` Peter Zijlstra
2010-11-30 13:59                             ` Ingo Molnar
2010-11-30 14:13                           ` Ingo Molnar
2010-11-30 16:41                             ` Mike Galbraith
2010-11-30 15:17                           ` Vivek Goyal
2010-11-30 17:13                             ` Mike Galbraith
2010-11-30 19:36                               ` Vivek Goyal
2010-12-01  5:01                                 ` Américo Wang
2010-12-01  6:09                                   ` Mike Galbraith
2010-12-01 11:36                                   ` Peter Zijlstra
2010-12-01 22:12                                   ` Valdis.Kletnieks
2010-12-01  5:57                                 ` Mike Galbraith
2010-12-01 11:33                                   ` Peter Zijlstra
2010-12-01 11:55                                     ` Mike Galbraith
2010-12-01 14:55                                   ` Vivek Goyal
2010-12-01 15:04                                     ` Mike Galbraith
2010-11-30  7:54                   ` Mike Galbraith
2010-11-30 14:18                     ` Ingo Molnar
2010-11-30 14:53                       ` Ingo Molnar
2010-11-30 15:01                         ` Peter Zijlstra
2010-11-30 15:11                           ` Ingo Molnar
2010-11-30 16:28                       ` Mike Galbraith
2010-11-29  5:45       ` Mike Galbraith
2010-12-01  3:39     ` Paul Turner
2010-12-01  3:39     ` Paul Turner
2010-12-01  6:16       ` Mike Galbraith
2010-12-03  5:11         ` Paul Turner
2010-12-03  6:48           ` Mike Galbraith
2010-12-03  8:37             ` Paul Turner
2010-12-04 23:55           ` James Courtier-Dutton
2010-12-05  5:11             ` Paul Turner
2010-12-07 11:32               ` Paul Turner
2010-12-15 12:10                 ` Paul Turner
2010-12-01 11:34       ` Peter Zijlstra
  -- strict thread matches above, loose matches on Subject: below --
2010-11-15  1:13 [RFC/RFT PATCH v3] sched: automated per tty " Mike Galbraith
2010-11-15  8:57 ` Peter Zijlstra
2010-11-15 11:32   ` Mike Galbraith
2010-11-15 11:46     ` Mike Galbraith
2010-11-15 12:57       ` Oleg Nesterov
2010-11-15 21:25         ` Mike Galbraith
2010-11-16 13:04           ` Oleg Nesterov
2010-11-16 14:18             ` Mike Galbraith
2010-11-16 15:03               ` Oleg Nesterov
2010-11-16 15:41                 ` Mike Galbraith
2010-11-16 17:28                   ` Ingo Molnar
2010-11-20 19:35                     ` [PATCH v4] sched: automated per session " Mike Galbraith
2010-12-04 17:39                       ` Colin Walters
2010-12-04 18:33                         ` Linus Torvalds
2010-12-04 20:01                           ` Colin Walters
2010-12-04 22:39                             ` Linus Torvalds
2010-12-04 23:43                               ` Colin Walters
2010-12-05  0:31                                 ` Linus Torvalds
2010-12-05  7:47                                 ` Ray Lee
2010-12-05 19:22                                   ` Colin Walters
2010-12-05 20:47                                     ` Linus Torvalds
2010-12-05 22:47                                       ` Colin Walters
2010-12-05 22:58                                         ` Jesper Juhl
2010-12-05 23:05                                           ` Jesper Juhl
2010-12-07 18:51                                       ` Peter Zijlstra
2010-12-05 10:18                                 ` Con Kolivas
2010-12-05 11:36                                   ` Mike Galbraith
2010-12-05 20:58                                   ` Ingo Molnar
2010-12-04 23:31                             ` david
2010-12-05 11:11                             ` Nikos Chantziaras
2010-12-06  0:28                             ` Valdis.Kletnieks

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=20101121154435.GA25966@redhat.com \
    --to=oleg@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=efault@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=torvalds@linux-foundation.org \
    /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.