All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Herton R. Krzesinski" <herton@redhat.com>
To: Manfred Spraul <manfred@colorfullife.com>
Cc: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>,
	akpm@linux-foundation.org, arnd@arndb.de,
	catalin.marinas@arm.com, malat@debian.org,
	joel@joelfernandes.org, gustavo@embeddedor.com,
	linux-kernel@vger.kernel.org, jay.vosburgh@canonical.com,
	ioanna.alifieraki@gmail.com
Subject: Re: [PATCH] Revert "ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()"
Date: Tue, 17 Dec 2019 18:17:45 -0300	[thread overview]
Message-ID: <20191217211745.GT7463@unknown> (raw)
In-Reply-To: <d66d41fe-212f-effd-905a-5966a96ddb6e@colorfullife.com>

On Mon, Dec 16, 2019 at 08:04:53PM +0100, Manfred Spraul wrote:
> Hi Ioanna,
> 
> On 12/11/19 8:13 PM, Ioanna Alifieraki wrote:
> > This reverts commit a97955844807e327df11aa33869009d14d6b7de0.
> > 
> > Commit a97955844807 ("ipc,sem: remove uneeded sem_undo_list lock usage
> > in exit_sem()") removes a lock that is needed.
> 
> Yes, you are right, the lock is needed.
> 
> The documentation is already correct:
> 
> sem_undo_list.list_proc: undo_list->lock for write.
> 
> [...]
> > Removing elements from list_id is safe for both exit_sem() and freeary()
> > due to sem_lock().  Removing elements from list_proc is not safe;
> 
> Correct, removing elements is not safe.
> 
> Removing one element would be ok, as we hold sem_lock.
> 
> But if there are two elements, then we don't hold sem_lock for the 2nd
> element, and thus the list is corrupted.

I think that's what I overlooked/missed back then, sorry for the bug.

> 
> > [1] https://bugzilla.redhat.com/show_bug.cgi?id=1694779
> > 
> > Fixes: a97955844807 ("ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()")
> > Signed-off-by: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
> Acked-by: Manfred Spraul <manfred@colorfullife.com>

Acked-by: Herton R. Krzesinski <herton@redhat.com>

> > ---
> >   ipc/sem.c | 6 ++----
> >   1 file changed, 2 insertions(+), 4 deletions(-)
> > 
> > diff --git a/ipc/sem.c b/ipc/sem.c
> > index ec97a7072413..fe12ea8dd2b3 100644
> > --- a/ipc/sem.c
> > +++ b/ipc/sem.c
> > @@ -2368,11 +2368,9 @@ void exit_sem(struct task_struct *tsk)
> >   		ipc_assert_locked_object(&sma->sem_perm);
> >   		list_del(&un->list_id);
> > -		/* we are the last process using this ulp, acquiring ulp->lock
> > -		 * isn't required. Besides that, we are also protected against
> > -		 * IPC_RMID as we hold sma->sem_perm lock now
> > -		 */
> > +		spin_lock(&ulp->lock);
> >   		list_del_rcu(&un->list_proc);
> > +		spin_unlock(&ulp->lock);
> >   		/* perform adjustments registered in un */
> >   		for (i = 0; i < sma->sem_nsems; i++) {
> 
> 

-- 
[]'s
Herton


  reply	other threads:[~2019-12-17 21:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-11 19:13 [PATCH] Revert "ipc,sem: remove uneeded sem_undo_list lock usage in exit_sem()" Ioanna Alifieraki
2019-12-16 19:04 ` Manfred Spraul
2019-12-17 21:17   ` Herton R. Krzesinski [this message]
2019-12-18 19:25     ` Manfred Spraul
     [not found]       ` <CAOLeGd3BY+pd7e2hnqAfwKZgfoEM22de1uhDdYC5H46DipgjDA@mail.gmail.com>
2020-02-14  3:30         ` Andrew Morton

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=20191217211745.GT7463@unknown \
    --to=herton@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=gustavo@embeddedor.com \
    --cc=ioanna-maria.alifieraki@canonical.com \
    --cc=ioanna.alifieraki@gmail.com \
    --cc=jay.vosburgh@canonical.com \
    --cc=joel@joelfernandes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=malat@debian.org \
    --cc=manfred@colorfullife.com \
    /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.