From: Marek Lindner <mareklindner@neomailbox.ch>
To: b.a.t.m.a.n@lists.open-mesh.org
Subject: Re: [B.A.T.M.A.N.] [PATCH-maint v2] batman-adv: Avoid endless loop in bat-on-bat netdevice check
Date: Tue, 16 Feb 2016 17:19:31 +0800 [thread overview]
Message-ID: <4078590.3aHOALUhCA@voltaire> (raw)
In-Reply-To: <1455225357-15756-1-git-send-email-sven@narfation.org>
[-- Attachment #1: Type: text/plain, Size: 2643 bytes --]
On Thursday, February 11, 2016 22:15:57 Sven Eckelmann wrote:
> From: Andrew Lunn <andrew@lunn.ch>
>
> batman-adv checks in different situation if a new device is already on top
> of a different batman-adv device. This is done by getting the iflink of a
> device and all its parent. It assumes that this iflink is always a parent
> device in an acyclic graph. But this assumption is broken by devices like
> veth which are actually a pair of two devices linked to each other. The
> recursive check would therefore get veth0 when calling dev_get_iflink on
> veth1. And it gets veth0 when calling dev_get_iflink with veth1.
>
> Creating a veth pair and loading batman-adv freezes parts of the system
>
> ip link add veth0 type veth peer name veth1
> modprobe batman-adv
>
> An RCU stall will be detected on the system which cannot be fixed.
>
> INFO: rcu_sched self-detected stall on CPU
> 1: (5264 ticks this GP) idle=3e9/140000000000001/0
> softirq=144683/144686 fqs=5249
> (t=5250 jiffies g=46 c=45 q=43)
> Task dump for CPU 1:
> insmod R running task 0 247 245 0x00000008
> ffffffff8151f140 ffffffff8107888e ffff88000fd141c0 ffffffff8151f140
> 0000000000000000 ffffffff81552df0 ffffffff8107b420 0000000000000001
> ffff88000e3fa700 ffffffff81540b00 ffffffff8107d667 0000000000000001
> Call Trace:
> <IRQ> [<ffffffff8107888e>] ? rcu_dump_cpu_stacks+0x7e/0xd0
> [<ffffffff8107b420>] ? rcu_check_callbacks+0x3f0/0x6b0
> [<ffffffff8107d667>] ? hrtimer_run_queues+0x47/0x180
> [<ffffffff8107cf9d>] ? update_process_times+0x2d/0x50
> [<ffffffff810873fb>] ? tick_handle_periodic+0x1b/0x60
> [<ffffffff810290ae>] ? smp_trace_apic_timer_interrupt+0x5e/0x90
> [<ffffffff813bbae2>] ? apic_timer_interrupt+0x82/0x90
> <EOI> [<ffffffff812c3fd7>] ? __dev_get_by_index+0x37/0x40
> [<ffffffffa0031f3e>] ? batadv_hard_if_event+0xee/0x3a0 [batman_adv]
> [<ffffffff812c5801>] ? register_netdevice_notifier+0x81/0x1a0
> [...]
>
> This can be avoided by checking if two devices are each others parent and
> stopping the check in this situation.
>
> Fixes: 3d48811b27f5 ("batman-adv: prevent using any virtual device created
> on batman-adv as hard-interface") Signed-off-by: Andrew Lunn
> <andrew@lunn.ch>
> [sven@narfation.org: rewritten description, extracted fix]
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
> v2:
> - fix kernel-doc warning
>
> net/batman-adv/hard-interface.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
Applied in revision 2808f92.
Thanks,
Marek
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
prev parent reply other threads:[~2016-02-16 9:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-11 21:15 [B.A.T.M.A.N.] [PATCH-maint v2] batman-adv: Avoid endless loop in bat-on-bat netdevice check Sven Eckelmann
2016-02-12 15:25 ` Andrew Lunn
2016-02-12 15:49 ` Sven Eckelmann
2016-02-16 9:19 ` Marek Lindner [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4078590.3aHOALUhCA@voltaire \
--to=mareklindner@neomailbox.ch \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.