lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAFTL4hwfNyQPMfpca-=Ou7WoPjB6sE_7BVAcQrVDkBjjPVmPRw@mail.gmail.com> Date: Thu, 14 Aug 2014 15:34:18 +0200 From: Frederic Weisbecker <fweisbec@...il.com> To: Rik van Riel <riel@...hat.com> Cc: Oleg Nesterov <oleg@...hat.com>, LKML <linux-kernel@...r.kernel.org>, Peter Zijlstra <peterz@...radead.org>, Hidetoshi Seto <seto.hidetoshi@...fujitsu.com>, Frank Mayhar <fmayhar@...gle.com>, Frederic Weisbecker <fweisbec@...hat.com>, Andrew Morton <akpm@...ux-foundation.org>, Sanjay Rao <srao@...hat.com>, Larry Woodman <lwoodman@...hat.com> Subject: Re: [PATCH RFC] time,signal: protect resource use statistics with seqlock 2014-08-14 3:57 GMT+02:00 Rik van Riel <riel@...hat.com>: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 08/13/2014 08:43 PM, Frederic Weisbecker wrote: >> On Wed, Aug 13, 2014 at 05:03:24PM -0400, Rik van Riel wrote: >>> --- a/kernel/time/posix-cpu-timers.c +++ >>> b/kernel/time/posix-cpu-timers.c @@ -272,22 +272,8 @@ static int >>> posix_cpu_clock_get_task(struct task_struct *tsk, if >>> (same_thread_group(tsk, current)) err = >>> cpu_clock_sample(which_clock, tsk, &rtn); } else { - unsigned >>> long flags; - struct sighand_struct *sighand; - - /* - * >>> while_each_thread() is not yet entirely RCU safe, - * keep >>> locking the group while sampling process - * clock for now. - >>> */ - sighand = lock_task_sighand(tsk, &flags); - if (!sighand) >>> - return err; - if (tsk == current || >>> thread_group_leader(tsk)) err = >>> cpu_clock_sample_group(which_clock, tsk, &rtn); - - >>> unlock_task_sighand(tsk, &flags); } >> >> I'm worried about such lockless solution based on RCU or read >> seqcount because we lose the guarantee that an update is >> immediately visible by all subsequent readers. >> >> Say CPU 0 updates the thread time and both CPU 1 and CPU 2 right >> after that call clock_gettime(), with the spinlock we were >> guaranteed to see the new update. Now with a pure seqlock read >> approach, we guarantee a read sequence coherency but we don't >> guarantee the freshest update result. >> >> So that looks like a source of non monotonic results. > > Which update are you worried about, specifically? > > The seq_write_lock to update the usage stat in p->signal will lock out > the seqlock read side used to check those results. > > Is there another kind of thing read by cpu_clock_sample_group that you > believe is not excluded by the seq_lock? I mean the read side doesn't use a lock with seqlocks. It's only made of barriers and sequence numbers to ensure the reader doesn't read some half-complete update. But other than that it can as well see the update n - 1 since barriers don't enforce latest results. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists