mirror of
https://github.com/apache/nuttx.git
synced 2025-01-12 23:18:36 +08:00
net:when work_cancel_sync is excuted,it releases net_lock
the modification is to solve the deadlock caused by work cancel not releasing netlock Signed-off-by: wangchen <wangchen41@xiaomi.com>
This commit is contained in:
parent
b791e27a8d
commit
be17bf2f86
1 changed files with 9 additions and 0 deletions
|
@ -67,6 +67,7 @@
|
|||
|
||||
#include "devif/devif.h"
|
||||
#include "igmp/igmp.h"
|
||||
#include "utils/utils.h"
|
||||
|
||||
#ifdef CONFIG_NET_IGMP
|
||||
|
||||
|
@ -212,6 +213,9 @@ FAR struct igmp_group_s *igmp_grpallocfind(FAR struct net_driver_s *dev,
|
|||
void igmp_grpfree(FAR struct net_driver_s *dev,
|
||||
FAR struct igmp_group_s *group)
|
||||
{
|
||||
unsigned int count;
|
||||
int blresult;
|
||||
|
||||
grpinfo("Free: %p flags: %02x\n", group, group->flags);
|
||||
|
||||
/* Cancel the wdog */
|
||||
|
@ -220,7 +224,12 @@ void igmp_grpfree(FAR struct net_driver_s *dev,
|
|||
|
||||
/* Cancel the workqueue */
|
||||
|
||||
blresult = net_breaklock(&count);
|
||||
work_cancel_sync(LPWORK, &group->work);
|
||||
if (blresult >= 0)
|
||||
{
|
||||
net_restorelock(count);
|
||||
}
|
||||
|
||||
/* Remove the group structure from the group list in the device structure */
|
||||
|
||||
|
|
Loading…
Reference in a new issue