[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55079677-9139-2f68-fe4c-053020b6f33f@kernel.org>
Date: Fri, 25 Aug 2023 15:16:07 +0200
From: Jesper Dangaard Brouer <hawk@...nel.org>
To: Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
netdev@...r.kernel.org, Ratheesh Kannoth <rkannoth@...vell.com>
Cc: hawk@...nel.org, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Geetha sowjanya <gakula@...vell.com>,
Ilias Apalodimas <ilias.apalodimas@...aro.org>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Subbaraya Sundeep <sbhatta@...vell.com>, Sunil Goutham
<sgoutham@...vell.com>, Thomas Gleixner <tglx@...utronix.de>,
hariprasad <hkelam@...vell.com>,
Alexander Lobakin <aleksander.lobakin@...el.com>,
Qingfang DENG <qingfang.deng@...lower.com.cn>
Subject: Re: [BUG] Possible unsafe page_pool usage in octeontx2
On 23/08/2023 21.45, Jesper Dangaard Brouer wrote:
> On 23/08/2023 11.47, Sebastian Andrzej Siewior wrote:
[...]
>>
>> This breaks in octeontx2 where a worker is used to fill the buffer:
>> otx2_pool_refill_task() -> otx2_alloc_rbuf() -> __otx2_alloc_rbuf() ->
>> otx2_alloc_pool_buf() -> page_pool_alloc_frag().
>>
>
> This seems problematic! - this is NOT allowed.
>
> But otx2_pool_refill_task() is a work-queue, and I though it runs in
> process-context. This WQ process is not allowed to use the lockless PP
> cache. This seems to be a bug!
>
> The problematic part is otx2_alloc_rbuf() that disables BH:
>
> int otx2_alloc_rbuf(struct otx2_nic *pfvf, struct otx2_pool *pool,
> dma_addr_t *dma)
> {
> int ret;
>
> local_bh_disable();
> ret = __otx2_alloc_rbuf(pfvf, pool, dma);
> local_bh_enable();
> return ret;
> }
>
> The fix, can be to not do this local_bh_disable() in this driver?
Correcting myself. It is not a fix to remove this local_bh_disable().
(which is obvious now I read the code again).
This WQ process is not allowed to use the page_pool_alloc() API this way
(from a work-queue). The PP alloc-side API must only be used under NAPI
protection. Thanks for spotting this Sebastian!
Will/can any of the Cc'ed Marvell people work on a fix?
--Jesper
Powered by blists - more mailing lists