[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230516122205.6f198c3e@kernel.org>
Date: Tue, 16 May 2023 12:22:05 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Vlad Buslov <vladbu@...dia.com>
Cc: Peilin Ye <yepeilin.cs@...il.com>, Jiri Pirko <jiri@...nulli.us>, Daniel
Borkmann <daniel@...earbox.net>, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, Jamal
Hadi Salim <jhs@...atatu.com>, Cong Wang <xiyou.wangcong@...il.com>, Peilin
Ye <peilin.ye@...edance.com>, John Fastabend <john.fastabend@...il.com>,
Pedro Tammela <pctammela@...atatu.com>, Hillf Danton <hdanton@...a.com>,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org, Cong Wang
<cong.wang@...edance.com>
Subject: Re: [PATCH net 6/6] net/sched: qdisc_destroy() old ingress and
clsact Qdiscs before grafting
On Mon, 15 May 2023 15:45:15 -0700 Peilin Ye wrote:
> On Thu, May 11, 2023 at 05:11:23PM -0700, Peilin Ye wrote:
> > > You're right, it's in qdisc_create(), argh...
> >
> > ->destroy() is called for all error points between ->init() and
> > dev_graft_qdisc(). I'll try handling it in ->destroy().
>
> Sorry for any confusion: there is no point at all undoing "setting dev
> pointer to b1" in ->destroy() because datapath has already been affected.
>
> To summarize, grafting B mustn't fail after setting dev pointer to b1, so
> ->init() is too early, because e.g. if user requested [1] to create a rate
> estimator, gen_new_estimator() could fail after ->init() in
> qdisc_create().
>
> On the other hand, ->attach() is too late because it's later than
> dev_graft_qdisc(), so concurrent filter requests might see uninitialized
> dev pointer in theory.
>
> Please suggest; is adding another callback (or calling ->attach()) right
> before dev_graft_qdisc() for ingress (clsact) Qdiscs too much for this
> fix?
>
> [1] e.g. $ tc qdisc add dev eth0 estimator 1s 8s clsact
Vlad, could you please clarify how you expect the unlocked filter
operations to work when the qdisc has global state?
Powered by blists - more mailing lists