Thread (12 messages) flat view 12 messages, 4 authors, 2019-11-18

Re: [PATCH v2 1/1] xfrm : lock input tasklet skb queue

From: Joerg Vehlow <hidden>
Date: 2019-10-25 09:38:04
Also in: lkml

Hi,

I always expected this to be applied to the RT patches. That's why
I originally send my patch to to Sebastian, Thomas and Steven (I added
them again now. The website of the rt patches says patches for the
CONFIG_REEMPT_RT patchset should be send to lkml.

I hope one of the rt patch maintainers will reply here.

Jörg

Am 24.10.2019 um 12:31 schrieb Steffen Klassert:
On Tue, Oct 22, 2019 at 05:22:04PM -0700, Tom Rix wrote:
quoted
On PREEMPT_RT_FULL while running netperf, a corruption
of the skb queue causes an oops.

This appears to be caused by a race condition here
         __skb_queue_tail(&trans->queue, skb);
         tasklet_schedule(&trans->tasklet);
Where the queue is changed before the tasklet is locked by
tasklet_schedule.

The fix is to use the skb queue lock.

This is the original work of Joerg Vehlow [off-list ref]
https://lkml.org/lkml/2019/9/9/111
   xfrm_input: Protect queue with lock

   During the skb_queue_splice_init the tasklet could have been preempted
   and __skb_queue_tail called, which led to an inconsistent queue.

ifdefs for CONFIG_PREEMPT_RT_FULL added to reduce runtime effects
on the normal kernel.
Has Herbert commented on your initial patch, please
fix PREEMPT_RT_FULL instead. There are certainly many
more codepaths that take such assumptions. You can not
fix this by distributing a spin_lock_irqsave here
and there.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help