• Ido Schimmel's avatar
    devlink: Wait longer before warning about unset port type · 4c582234
    Ido Schimmel authored
    The commit cited below causes devlink to emit a warning if a type was
    not set on a devlink port for longer than 30 seconds to "prevent
    misbehavior of drivers". This proved to be problematic when
    unregistering the backing netdev. The flow is always:
    
    devlink_port_type_clear()	// schedules the warning
    unregister_netdev()		// blocking
    devlink_port_unregister()	// cancels the warning
    
    The call to unregister_netdev() can block for long periods of time for
    various reasons: RTNL lock is contended, large amounts of configuration
    to unroll following dismantle of the netdev, etc. This results in
    devlink emitting a warning despite the driver behaving correctly.
    
    In emulated environments (of future hardware) which are usually very
    slow, the warning can also be emitted during port creation as more than
    30 seconds can pass between the time the devlink port is registered and
    when its type is set.
    
    In addition, syzbot has hit this warning [1] 1974 times since 07/11/19
    without being able to produce a reproducer. Probably because
    reproduction depends on the load or other bugs (e.g., RTNL not being
    released).
    
    To prevent bogus warnings, increase the timeout to 1 hour.
    
    [1] https://syzkaller.appspot.com/bug?id=e99b59e9c024a666c9f7450dc162a4b74d09d9cb
    
    Fixes: 136bf27f ("devlink: add warning in case driver does not set port type")
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reported-by: syzbot+b0a18ed7b08b735d2f41@syzkaller.appspotmail.com
    Reported-by: default avatarAlex Veber <alexve@mellanox.com>
    Tested-by: default avatarAlex Veber <alexve@mellanox.com>
    Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4c582234
devlink.c 210 KB