forked from luck/tmp_suning_uos_patched
fakelb: fix schedule while atomic
This patch changes the spinlock to mutex for the available fakelb phy list. When holding the spinlock the ieee802154_unregister_hw is called which holding the rtnl_mutex, in that case we get a "BUG: sleeping function called from invalid context" error. We simple change the spinlock to mutex which allows to hold the rtnl lock there. Signed-off-by: Alexander Aring <aar@pengutronix.de> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
8a0c9f4909
commit
bdca1fd9a6
|
@ -30,7 +30,7 @@
|
|||
static int numlbs = 2;
|
||||
|
||||
static LIST_HEAD(fakelb_phys);
|
||||
static DEFINE_SPINLOCK(fakelb_phys_lock);
|
||||
static DEFINE_MUTEX(fakelb_phys_lock);
|
||||
|
||||
static LIST_HEAD(fakelb_ifup_phys);
|
||||
static DEFINE_RWLOCK(fakelb_ifup_phys_lock);
|
||||
|
@ -188,9 +188,9 @@ static int fakelb_add_one(struct device *dev)
|
|||
if (err)
|
||||
goto err_reg;
|
||||
|
||||
spin_lock(&fakelb_phys_lock);
|
||||
mutex_lock(&fakelb_phys_lock);
|
||||
list_add_tail(&phy->list, &fakelb_phys);
|
||||
spin_unlock(&fakelb_phys_lock);
|
||||
mutex_unlock(&fakelb_phys_lock);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -222,10 +222,10 @@ static int fakelb_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
|
||||
err_slave:
|
||||
spin_lock(&fakelb_phys_lock);
|
||||
mutex_lock(&fakelb_phys_lock);
|
||||
list_for_each_entry_safe(phy, tmp, &fakelb_phys, list)
|
||||
fakelb_del(phy);
|
||||
spin_unlock(&fakelb_phys_lock);
|
||||
mutex_unlock(&fakelb_phys_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -233,10 +233,10 @@ static int fakelb_remove(struct platform_device *pdev)
|
|||
{
|
||||
struct fakelb_phy *phy, *tmp;
|
||||
|
||||
spin_lock(&fakelb_phys_lock);
|
||||
mutex_lock(&fakelb_phys_lock);
|
||||
list_for_each_entry_safe(phy, tmp, &fakelb_phys, list)
|
||||
fakelb_del(phy);
|
||||
spin_unlock(&fakelb_phys_lock);
|
||||
mutex_unlock(&fakelb_phys_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user