On Tue, 2012-03-06 at 09:18 +0100, Thomas Gleixner wrote:
quoted
Because read_seqlocks are used in the VDSO area, a raw_read_seqcount_begin()
was created to allow userspace tasks to access read_seqcount().
As the grabbing of the write_lock() is not allowed in VDSO, nor
is even referencing it.
This is completely bogus. The VDSO update write side runs with
interrupts disabled, so it cannot be preempted at all.
quoted
Note, a live lock can still happen if the userspace task that
does the read_seqlock is of higher priority than a user doing
the write_lock, so userspace needs to be careful.
What the hell are you smoking?
Cherries.
I forgot I still had that in my changelog. I wrote this code before I
had your changes. I noticed later that the vdso seqlocks were raw
spinlocks and shouldn't be an issue. As you told me that you had this
fixed, I never bothered to change the log.
Then last night when I hit this bug, I simply cherry picked this fixed
and posted it.
-- Steve