From: Debabrata Banerjee <dbane...@akamai.com>
Date: Fri, 12 Oct 2018 12:59:29 -0400

> @@ -826,7 +826,10 @@ static void netpoll_async_cleanup(struct work_struct 
> *work)
>  
>  void __netpoll_free_async(struct netpoll *np)
>  {
> -     schedule_work(&np->cleanup_work);
> +     if (rtnl_is_locked())
> +             __netpoll_cleanup(np);
> +     else
> +             schedule_work(&np->cleanup_work);
>  }

rtnl_is_locked() says only that the RTNL mutex is held by someone.

It does not necessarily say that it is held by the current execution
context.

Which means you could erronesly run this synchronously when another
thread has the RTNL mutex held, not you.

I'm not applying this, sorry.

Reply via email to