[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20181017.214705.2139316496548022085.davem@davemloft.net>
Date: Wed, 17 Oct 2018 21:47:05 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: dbanerje@...mai.com
Cc: netdev@...r.kernel.org, nhorman@...driver.com
Subject: Re: [PATCH net-next] netpoll: allow cleanup to be synchronous
From: Debabrata Banerjee <dbanerje@...mai.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.
Powered by blists - more mailing lists