Subject: Re: Kernel crash while using tc script

From: Daniel Borkmann <[email-masked]>
Date: Tue, 19 May 2015 23:43:14 +0200

On 05/19/2015 10:11 PM, Vijay Subramanian wrote:
> Hi,
>
> It seems latest net-next kernel crashes while unloading modules.
> Please see simple script below to reproduce the crash.
>
> ===============================
>
> #!/bin/bash
>
> while true; do
>
> # modules will be loaded automatically
>
> tc qdisc add dev eth1 root handle 1: prio
>
> tc filter add dev eth1 parent 1: u32 match u32 0 0  flowid 1
>
>
> tc qdisc del dev eth1 root
>
> rmmod cls_u32
>
> rmmod sch_prio
>
>
> done
>
> =========================
>
> It seems there is some refcounting or locking issue issue. I am unable
> to easily post the dump but sometimes it points to crashes in various
> functions in prio_class_ops  (sch_prio.c), such as prio_walk(),
> prio_dump_class etc. Probably, sch_prio call back functions are
> invoked when they should not be.
>
> I bisected this down to following commit:
>
> commit 78fd1d0ab072d4d9b5f0b7c14a1516665170b565
> Author: Thomas Graf <[email-masked]>
> Date:   Tue Oct 21 22:05:38 2014 +0200
> netlink: Re-add locking to netlink_lookup() and seq walker
>
> If there are suggestions for me to try or you need more info, let me know.

Hmm, seems rather like the synchronize_net() removal in netlink_release()
must have uncovered a bug elsewhere.