Skip to content
  • WANG Cong's avatar
    act_police: fix a crash during removal · a03e6fe5
    WANG Cong authored
    The police action is using its own code to initialize tcf hash
    info, which makes us to forgot to initialize a->hinfo correctly.
    Fix this by calling the helper function tcf_hash_create() directly.
    
    This patch fixed the following crash:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
     IP: [<ffffffff810c099f>] __lock_acquire+0xd3/0xf91
     PGD d3c34067 PUD d3e18067 PMD 0
     Oops: 0000 [#1] SMP
     CPU: 2 PID: 853 Comm: tc Not tainted 4.6.0+ #87
     Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
     task: ffff8800d3e28040 ti: ffff8800d3f6c000 task.ti: ffff8800d3f6c000
     RIP: 0010:[<ffffffff810c099f>]  [<ffffffff810c099f>] __lock_acquire+0xd3/0xf91
     RSP: 0000:ffff88011b203c80  EFLAGS: 00010002
     RAX: 0000000000000046 RBX: 0000000000000000 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000028
     RBP: ffff88011b203d40 R08: 0000000000000001 R09: 0000000000000000
     R10: ffff88011b203d58 R11: ffff88011b208000 R12: 0000000000000001
     R13: ffff8800d3e28040 R14: 0000000000000028 R15: 0000000000000000
     FS:  0000000000000000(0000) GS:ffff88011b200000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000028 CR3: 00000000d4be1000 CR4: 00000000000006e0
     Stack:
      ffff8800d3e289c0 0000000000000046 000000001b203d60 ffffffff00000000
      0000000000000000 ffff880000000000 0000000000000000 ffffffff00000000
      ffffffff8187142c ffff88011b203ce8 ffff88011b203ce8 ffffffff8101dbfc
     Call Trace:
      <IRQ>
      [<ffffffff8187142c>] ? __tcf_hash_release+0x77/0xd1
      [<ffffffff8101dbfc>] ? native_sched_clock+0x1a/0x35
      [<ffffffff8101dbfc>] ? native_sched_clock+0x1a/0x35
      [<ffffffff810a9604>] ? sched_clock_local+0x11/0x78
      [<ffffffff810bf6a1>] ? mark_lock+0x24/0x201
      [<ffffffff810c1dbd>] lock_acquire+0x120/0x1b4
      [<ffffffff810c1dbd>] ? lock_acquire+0x120/0x1b4
      [<ffffffff8187142c>] ? __tcf_hash_release+0x77/0xd1
      [<ffffffff81aad89f>] _raw_spin_lock_bh+0x3c/0x72
      [<ffffffff8187142c>] ? __tcf_hash_release+0x77/0xd1
      [<ffffffff8187142c>] __tcf_hash_release+0x77/0xd1
      [<ffffffff81871a27>] tcf_action_destroy+0x49/0x7c
      [<ffffffff81870b1c>] tcf_exts_destroy+0x20/0x2d
      [<ffffffff8189273b>] u32_destroy_key+0x1b/0x4d
      [<ffffffff81892788>] u32_delete_key_freepf_rcu+0x1b/0x1d
      [<ffffffff810de3b8>] rcu_process_callbacks+0x610/0x82e
      [<ffffffff8189276d>] ? u32_destroy_key+0x4d/0x4d
      [<ffffffff81ab0bc1>] __do_softirq+0x191/0x3f4
    
    Fixes: ddf97ccd
    
     ("net_sched: add network namespace support for tc actions")
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a03e6fe5