• Shannon Nelson's avatar
    ionic: fix double use of queue-lock · 79a58c06
    Shannon Nelson authored
    Deadlock seen in an instance where the hwstamp configuration
    is changed while the driver is running:
    
    [ 3988.736671]  schedule_preempt_disabled+0xe/0x10
    [ 3988.736676]  __mutex_lock.isra.5+0x276/0x4e0
    [ 3988.736683]  __mutex_lock_slowpath+0x13/0x20
    [ 3988.736687]  ? __mutex_lock_slowpath+0x13/0x20
    [ 3988.736692]  mutex_lock+0x2f/0x40
    [ 3988.736711]  ionic_stop_queues_reconfig+0x16/0x40 [ionic]
    [ 3988.736726]  ionic_reconfigure_queues+0x43e/0xc90 [ionic]
    [ 3988.736738]  ionic_lif_config_hwstamp_rxq_all+0x85/0x90 [ionic]
    [ 3988.736751]  ionic_lif_hwstamp_set_ts_config+0x29c/0x360 [ionic]
    [ 3988.736763]  ionic_lif_hwstamp_set+0x76/0xf0 [ionic]
    [ 3988.736776]  ionic_eth_ioctl+0x33/0x40 [ionic]
    [ 3988.736781]  dev_ifsioc+0x12c/0x420
    [ 3988.736785]  dev_ioctl+0x316/0x720
    
    This can be demonstrated with "ptp4l -m -i <intf>"
    
    To fix this, we pull the use of the queue_lock further up above the
    callers of ionic_reconfigure_queues() and ionic_stop_queues_reconfig().
    
    Fixes: 7ee99fc5 ("ionic: pull hwstamp queue_lock up a level")
    Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    79a58c06
ionic_lif.c 95.4 KB