On 28 January 2016 at 16:03, pravin shelar <pshe...@ovn.org> wrote:
> On Thu, Jan 28, 2016 at 3:08 PM, Joe Stringer <j...@ovn.org> wrote:
>> On 27 January 2016 at 16:01, pravin shelar <pshe...@ovn.org> wrote:
>>> On Tue, Jan 26, 2016 at 5:57 PM, Joe Stringer <j...@ovn.org> wrote:
>>>> Fixes the following kernel oops on kernels < 3.17 when IPv6 fragments
>>>> are expired without reassembling the frame.
>>>>
>>>> BUG: unable to handle kernel paging request at 00000006845d69a8
>>>> IP: [<ffffffff8172c09e>] _raw_spin_lock+0xe/0x50
>>>> ...
>>>> Call Trace:
>>>>  <IRQ>
>>>>  [<ffffffff816a32d3>] inet_frag_kill+0x63/0x100
>>>>  [<ffffffff816ead93>] ip6_expire_frag_queue+0x63/0x110
>>>>  [<ffffffffa01130e6>] nf_ct_frag6_expire+0x26/0x30 [openvswitch]
>>>>  [<ffffffff810744f6>] call_timer_fn+0x36/0x100
>>>>  [<ffffffffa01130c0>] ? nf_ct_net_init+0x20/0x20 [openvswitch]
>>>>  [<ffffffff8107548f>] run_timer_softirq+0x1ef/0x2f0
>>>>  [<ffffffff8106cccc>] __do_softirq+0xec/0x2c0
>>>>  [<ffffffff8106d215>] irq_exit+0x105/0x110
>>>>  [<ffffffff81737095>] smp_apic_timer_interrupt+0x45/0x60
>>>>  [<ffffffff81735a1d>] apic_timer_interrupt+0x6d/0x80
>>>>  <EOI>
>>>>  [<ffffffff8104f596>] ? native_safe_halt+0x6/0x10
>>>>  [<ffffffff8101cb2f>] default_idle+0x1f/0xc0
>>>>  [<ffffffff8101d406>] arch_cpu_idle+0x26/0x30
>>>>  [<ffffffff810bf3a5>] cpu_startup_entry+0xc5/0x290
>>>>  [<ffffffff817122e7>] rest_init+0x77/0x80
>>>>  [<ffffffff81d34f70>] start_kernel+0x438/0x443
>>>>
>>> I am not sure what exactly is the issue. Can you expand the commit msg
>>> and add upstream commit ref which fixes the issue?
>>
>> Prior to a series of commits in 3.17 like the following, the model
>> used to manage and expire fragments was different. We already backport
>> several of these functions (See datapath/compat/inet_fragment.c) to do
>> things like allocate/evict/destroy frags and frag queues. In the IPv4
>> code, we use these. In most of the IPv6 cases, we already reuse these
>> also. However, for timed frag expiration we instead call the upstream
>> version of the function, which proceeds to use the upstream versions
>> of the functions we backport in inet_fragment.c. There is some
>> discrepancy between the offsets used in these upstream compiled
>> versions vs. the backport versions, so if you mix/match them then it
>> leads to these kinds of dereference errors.
>>
>> b13d3cbfb8e8 ("inet: frag: move eviction of queues to work queue")
>> ab1c724f6330 ("inet: frag: use seqlock for hash rebuild")
>>
>> I can fold this description into the commit message.
>
> Looks good.
>
> Acked-by: Pravin B Shelar <pshe...@ovn.org>

Thanks, I applied this to master and branch-2.5.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to