lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 5 Nov 2020 14:22:55 +0800 From: Yunsheng Lin <linyunsheng@...wei.com> To: Cong Wang <xiyou.wangcong@...il.com> CC: Jamal Hadi Salim <jhs@...atatu.com>, Jiri Pirko <jiri@...nulli.us>, "David Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, "Linux Kernel Network Developers" <netdev@...r.kernel.org>, LKML <linux-kernel@...r.kernel.org>, <linuxarm@...wei.com>, John Fastabend <john.fastabend@...il.com>, Eric Dumazet <eric.dumazet@...il.com> Subject: Re: [PATCH v2 net] net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc On 2020/11/5 14:04, Cong Wang wrote: > On Mon, Nov 2, 2020 at 11:24 PM Yunsheng Lin <linyunsheng@...wei.com> wrote: >>>> From my understanding, we can do anything about the old qdisc (including >>>> destorying the old qdisc) after some_qdisc_is_busy() return false. >>> >>> But the current code does the reset _before_ some_qdisc_is_busy(). ;) >> >> If lock is taken when doing reset, it does not matter if the reset is >> before some_qdisc_is_busy(), right? > > Why not? How about the following scenario? > > CPU0: CPU1: > dev_reset_queue() There is no skb in the dqisc now. > net_tx_action() > -> sch_direct_xmit() So when CPU1 calls net_tx_action(), there is no skb to send and no skb to be requeued too. > -> dev_requeue_skb() > some_qdisc_is_busy() > // waiting for TX action on CPU1 > // now some packets are requeued >
Powered by blists - more mailing lists