mirror of https://gitee.com/openkylin/linux.git
8036e90f92
Acquiring the rtnl lock while holding usdev_lock could result in a deadlock. For example: usnic_ib_query_port() | mutex_lock(&us_ibdev->usdev_lock) | ib_get_eth_speed() | rtnl_lock() rtnl_lock() | usnic_ib_netdevice_event() | mutex_lock(&us_ibdev->usdev_lock) This commit moves the usdev_lock acquisition after the rtnl lock has been released. This is safe to do because usdev_lock is not protecting anything being accessed in ib_get_eth_speed(). Hence, the correct order of holding locks (rtnl -> usdev_lock) is not violated. Signed-off-by: Parvi Kaustubhi <pkaustub@cisco.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
usnic.h | ||
usnic_abi.h | ||
usnic_common_pkt_hdr.h | ||
usnic_common_util.h | ||
usnic_debugfs.c | ||
usnic_debugfs.h | ||
usnic_fwd.c | ||
usnic_fwd.h | ||
usnic_ib.h | ||
usnic_ib_main.c | ||
usnic_ib_qp_grp.c | ||
usnic_ib_qp_grp.h | ||
usnic_ib_sysfs.c | ||
usnic_ib_sysfs.h | ||
usnic_ib_verbs.c | ||
usnic_ib_verbs.h | ||
usnic_log.h | ||
usnic_transport.c | ||
usnic_transport.h | ||
usnic_uiom.c | ||
usnic_uiom.h | ||
usnic_uiom_interval_tree.c | ||
usnic_uiom_interval_tree.h | ||
usnic_vnic.c | ||
usnic_vnic.h |