From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Felix Fietkau <nbd@nbd.name>
Cc: netdev@vger.kernel.org, Jesper Dangaard Brouer <hawk@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Lorenzo Bianconi <lorenzo@kernel.org>,
linux-kernel@vger.kernel.org,
Alexander Duyck <alexander.duyck@gmail.com>,
Yunsheng Lin <linyunsheng@huawei.com>
Subject: Re: [PATCH] net: page_pool: fix refcounting issues with fragmented allocation
Date: Thu, 26 Jan 2023 12:32:57 +0200 [thread overview]
Message-ID: <Y9JW2Yzia5tafiTw@hera> (raw)
In-Reply-To: <19121deb-368f-9786-8700-f1c45d227a4c@nbd.name>
On Tue, Jan 24, 2023 at 06:22:54PM +0100, Felix Fietkau wrote:
> On 24.01.23 15:11, Ilias Apalodimas wrote:
> > Hi Felix,
> >
> > ++cc Alexander and Yunsheng.
> >
> > Thanks for the report
> >
> > On Tue, 24 Jan 2023 at 14:43, Felix Fietkau <nbd@nbd.name> wrote:
> > >
> > > While testing fragmented page_pool allocation in the mt76 driver, I was able
> > > to reliably trigger page refcount underflow issues, which did not occur with
> > > full-page page_pool allocation.
> > > It appears to me, that handling refcounting in two separate counters
> > > (page->pp_frag_count and page refcount) is racy when page refcount gets
> > > incremented by code dealing with skb fragments directly, and
> > > page_pool_return_skb_page is called multiple times for the same fragment.
> > >
> > > Dropping page->pp_frag_count and relying entirely on the page refcount makes
> > > these underflow issues and crashes go away.
> > >
> >
> > This has been discussed here [1]. TL;DR changing this to page
> > refcount might blow up in other colorful ways. Can we look closer and
> > figure out why the underflow happens?
> I don't see how the approch taken in my patch would blow up. From what I can
> tell, it should be fairly close to how refcount is handled in
> page_frag_alloc. The main improvement it adds is to prevent it from blowing
> up if pool-allocated fragments get shared across multiple skbs with
> corresponding get_page and page_pool_return_skb_page calls.
>
> - Felix
>
Yes sorry for the noise, that patch I referred to was doing a completely
different thing, elevating the page refcnt to BIAS_MAX from the start
Thanks
/Ilias
prev parent reply other threads:[~2023-01-26 10:33 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-24 12:43 [PATCH] net: page_pool: fix refcounting issues with fragmented allocation Felix Fietkau
2023-01-24 14:11 ` Ilias Apalodimas
2023-01-24 15:57 ` Alexander H Duyck
2023-01-24 16:59 ` Felix Fietkau
2023-01-26 10:31 ` Ilias Apalodimas
2023-01-26 15:41 ` Alexander Duyck
2023-01-26 16:05 ` Ilias Apalodimas
2023-01-24 17:22 ` Felix Fietkau
2023-01-24 21:10 ` Alexander H Duyck
2023-01-24 21:30 ` Felix Fietkau
2023-01-25 17:11 ` Alexander H Duyck
2023-01-25 17:32 ` Felix Fietkau
2023-01-25 18:26 ` Alexander H Duyck
2023-01-25 18:42 ` Felix Fietkau
2023-01-25 19:02 ` Alexander H Duyck
2023-01-25 19:10 ` Felix Fietkau
2023-01-25 19:40 ` Felix Fietkau
2023-01-25 20:02 ` Felix Fietkau
2023-01-25 22:14 ` Alexander H Duyck
2023-01-26 6:12 ` Felix Fietkau
2023-01-26 9:14 ` Felix Fietkau
2023-01-26 16:08 ` Alexander Duyck
2023-01-26 16:40 ` Alexander Duyck
2023-01-26 17:44 ` Felix Fietkau
2023-01-26 18:38 ` Alexander H Duyck
2023-01-26 18:43 ` Felix Fietkau
2023-01-26 19:06 ` [net PATCH] skb: Do mix page pool and page referenced frags in GRO Alexander Duyck
2023-01-26 19:14 ` Toke Høiland-Jørgensen
2023-01-26 19:48 ` Alexander Duyck
2023-01-26 21:35 ` Toke Høiland-Jørgensen
2023-01-26 23:13 ` Jakub Kicinski
2023-01-27 7:15 ` Ilias Apalodimas
2023-01-27 7:21 ` Felix Fietkau
2023-01-30 16:49 ` Jesper Dangaard Brouer
2023-01-28 2:37 ` Yunsheng Lin
2023-01-28 5:26 ` Jakub Kicinski
2023-01-28 7:08 ` Eric Dumazet
2023-01-30 8:50 ` Paolo Abeni
2023-01-30 16:17 ` Alexander Duyck
2023-01-28 7:15 ` Eric Dumazet
2023-01-28 17:08 ` Alexander Duyck
2023-01-28 7:50 ` patchwork-bot+netdevbpf
2023-01-26 10:32 ` Ilias Apalodimas [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y9JW2Yzia5tafiTw@hera \
--to=ilias.apalodimas@linaro.org \
--cc=alexander.duyck@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=lorenzo@kernel.org \
--cc=nbd@nbd.name \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.