In message: [linux-yocto][v5.4/standard/preempt-rt/base][PATCH] signal: Prevent double-free of user struct on 17/08/2020 Yongxin Liu wrote:
> From: Matt Fleming <m...@codeblueprint.co.uk> > > commit 9567db2ebe566a93485e1a27d8759969d0002d7a in linux-rt-devel. Normally I'd pick this up when the 5.4 rt stable was updated .. but that has been happening a bit slowly lately. So I've gone ahead and merged the change. SRCREV bumps will happen with my next round of 5.4-stable updates Bruce > > The way user struct reference counting works changed significantly with, > > fda31c50292a ("signal: avoid double atomic counter increments for user > accounting") > > Now user structs are only freed once the last pending signal is > dequeued. Make sigqueue_free_current() follow this new convention to > avoid freeing the user struct multiple times and triggering this > warning: > > refcount_t: underflow; use-after-free. > WARNING: CPU: 0 PID: 6794 at lib/refcount.c:288 > refcount_dec_not_one+0x45/0x50 > Call Trace: > refcount_dec_and_lock_irqsave+0x16/0x60 > free_uid+0x31/0xa0 > __dequeue_signal+0x17c/0x190 > dequeue_signal+0x5a/0x1b0 > do_sigtimedwait+0x208/0x250 > __x64_sys_rt_sigtimedwait+0x6f/0xd0 > do_syscall_64+0x72/0x200 > entry_SYSCALL_64_after_hwframe+0x49/0xbe > > Signed-off-by: Matt Fleming <m...@codeblueprint.co.uk> > Reported-by: Daniel Wagner <w...@monom.org> > Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de> > Signed-off-by: Yongxin Liu <yongxin....@windriver.com> > --- > kernel/signal.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/signal.c b/kernel/signal.c > index 96d80e60e72e..710e079abf01 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -496,8 +496,8 @@ static void sigqueue_free_current(struct sigqueue *q) > > up = q->user; > if (rt_prio(current->normal_prio) && !put_task_cache(current, q)) { > - atomic_dec(&up->sigpending); > - free_uid(up); > + if (atomic_dec_and_test(&up->sigpending)) > + free_uid(up); > } else > __sigqueue_free(q); > } > -- > 2.14.4 >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#8972): https://lists.yoctoproject.org/g/linux-yocto/message/8972 Mute This Topic: https://lists.yoctoproject.org/mt/76240226/21656 Group Owner: linux-yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-