Skip to content
Snippets Groups Projects
Select Git revision
  • c15b1ccadb323ea50023e8f1cca2954129a62b51
  • openEuler-1.0-LTS default protected
  • openEuler-22.09
  • OLK-5.10
  • openEuler-22.03-LTS
  • openEuler-22.03-LTS-Ascend
  • master
  • openEuler-22.03-LTS-LoongArch-NW
  • openEuler-22.09-HCK
  • openEuler-20.03-LTS-SP3
  • openEuler-21.09
  • openEuler-21.03
  • openEuler-20.09
  • 4.19.90-2210.5.0
  • 5.10.0-123.0.0
  • 5.10.0-60.63.0
  • 5.10.0-60.62.0
  • 4.19.90-2210.4.0
  • 5.10.0-121.0.0
  • 5.10.0-60.61.0
  • 4.19.90-2210.3.0
  • 5.10.0-60.60.0
  • 5.10.0-120.0.0
  • 5.10.0-60.59.0
  • 5.10.0-119.0.0
  • 4.19.90-2210.2.0
  • 4.19.90-2210.1.0
  • 5.10.0-118.0.0
  • 5.10.0-106.19.0
  • 5.10.0-60.58.0
  • 4.19.90-2209.6.0
  • 5.10.0-106.18.0
  • 5.10.0-106.17.0
33 results

22b970497

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Hannes Frederic Sowa authored and David S. Miller committed
    addrconf_join_solict and addrconf_join_anycast may cause actions which
    need rtnl locked, especially on first address creation.
    
    A new DAD state is introduced which defers processing of the initial
    DAD processing into a workqueue.
    
    To get rtnl lock we need to push the code paths which depend on those
    calls up to workqueues, specifically addrconf_verify and the DAD
    processing.
    
    (v2)
    addrconf_dad_failure needs to be queued up to the workqueue, too. This
    patch introduces a new DAD state and stop the DAD processing in the
    workqueue (this is because of the possible ipv6_del_addr processing
    which removes the solicited multicast address from the device).
    
    addrconf_verify_lock is removed, too. After the transition it is not
    needed any more.
    
    As we are not processing in bottom half anymore we need to be a bit more
    careful about disabling bottom half out when we lock spin_locks which are also
    used in bh.
    
    Relevant backtrace:
    [  541.030090] RTNL: assertion failed at net/core/dev.c (4496)
    [  541.031143] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G           O 3.10.33-1-amd64-vyatta #1
    [  541.031145] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
    [  541.031146]  ffffffff8148a9f0 000000000000002f ffffffff813c98c1 ffff88007c4451f8
    [  541.031148]  0000000000000000 0000000000000000 ffffffff813d3540 ffff88007fc03d18
    [  541.031150]  0000880000000006 ffff88007c445000 ffffffffa0194160 0000000000000000
    [  541.031152] Call Trace:
    [  541.031153]  <IRQ>  [<ffffffff8148a9f0>] ? dump_stack+0xd/0x17
    [  541.031180]  [<ffffffff813c98c1>] ? __dev_set_promiscuity+0x101/0x180
    [  541.031183]  [<ffffffff813d3540>] ? __hw_addr_create_ex+0x60/0xc0
    [  541.031185]  [<ffffffff813cfe1a>] ? __dev_set_rx_mode+0xaa/0xc0
    [  541.031189]  [<ffffffff813d3a81>] ? __dev_mc_add+0x61/0x90
    [  541.031198]  [<ffffffffa01dcf9c>] ? igmp6_group_added+0xfc/0x1a0 [ipv6]
    [  541.031208]  [<ffffffff8111237b>] ? kmem_cache_alloc+0xcb/0xd0
    [  541.031212]  [<ffffffffa01ddcd7>] ? ipv6_dev_mc_inc+0x267/0x300 [ipv6]
    [  541.031216]  [<ffffffffa01c2fae>] ? addrconf_join_solict+0x2e/0x40 [ipv6]
    [  541.031219]  [<ffffffffa01ba2e9>] ? ipv6_dev_ac_inc+0x159/0x1f0 [ipv6]
    [  541.031223]  [<ffffffffa01c0772>] ? addrconf_join_anycast+0x92/0xa0 [ipv6]
    [  541.031226]  [<ffffffffa01c311e>] ? __ipv6_ifa_notify+0x11e/0x1e0 [ipv6]
    [  541.031229]  [<ffffffffa01c3213>] ? ipv6_ifa_notify+0x33/0x50 [ipv6]
    [  541.031233]  [<ffffffffa01c36c8>] ? addrconf_dad_completed+0x28/0x100 [ipv6]
    [  541.031241]  [<ffffffff81075c1d>] ? task_cputime+0x2d/0x50
    [  541.031244]  [<ffffffffa01c38d6>] ? addrconf_dad_timer+0x136/0x150 [ipv6]
    [  541.031247]  [<ffffffffa01c37a0>] ? addrconf_dad_completed+0x100/0x100 [ipv6]
    [  541.031255]  [<ffffffff8105313a>] ? call_timer_fn.isra.22+0x2a/0x90
    [  541.031258]  [<ffffffffa01c37a0>] ? addrconf_dad_completed+0x100/0x100 [ipv6]
    
    Hunks and backtrace stolen from a patch by Stephen Hemminger.
    
    Reported-by: default avatarStephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c15b1cca
    History
    Name Last commit Last update