Patch "fakelb: fix schedule while atomic" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
fakelb: fix schedule while atomic
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
fakelb-fix-schedule-while-atomic.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
bdca1fd9a6df745857e23c6056494b7fe062b4e6Mon Sep 17 00:00:00 2001
From: Alexander Aring <[email protected]>
Date: Thu, 1 Sep 2016 11:24:57 +0200
Subject: fakelb: fix schedule while atomic
From: Alexander Aring <[email protected]>
commit bdca1fd9a6df745857e23c6056494b7fe062b4e6 upstream.
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.
--- drivers/net/ieee802154/fakelb.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/net/ieee802154/fakelb.c +7 -7
@@ -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);
@@ -180,9 +180,9 @@ static int fakelb_add_one(struct deviceif (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 ;
@@ -214,10 +214,10 @@ static int fakelb_probe(struct platform_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; }
@@ -225,10 +225,10 @@ static int fakelb_remove(struct platform {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 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/fakelb-fix-schedule-while-atomic.patch