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
| ||
|
Message-Id: <20190214074712.17846-10-vladbu@mellanox.com> Date: Thu, 14 Feb 2019 09:47:09 +0200 From: Vlad Buslov <vladbu@...lanox.com> To: netdev@...r.kernel.org Cc: jhs@...atatu.com, xiyou.wangcong@...il.com, jiri@...nulli.us, davem@...emloft.net, Vlad Buslov <vladbu@...lanox.com> Subject: [PATCH net-next 09/12] net: sched: flower: handle concurrent tcf proto deletion Without rtnl lock protection tcf proto can be deleted concurrently. Check tcf proto 'deleting' flag after taking tcf spinlock to verify that no concurrent deletion is in progress. Return EAGAIN error if concurrent deletion detected, which will cause caller to retry and possibly create new instance of tcf proto. Signed-off-by: Vlad Buslov <vladbu@...lanox.com> Acked-by: Jiri Pirko <jiri@...lanox.com> --- net/sched/cls_flower.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 114cb7876133..bfef7d6c597d 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -1497,6 +1497,14 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, if (!tc_in_hw(fnew->flags)) fnew->flags |= TCA_CLS_FLAGS_NOT_IN_HW; + /* tp was deleted concurrently. EAGAIN will cause caller to lookup proto + * again or create new one, if necessary. + */ + if (tp->deleting) { + err = -EAGAIN; + goto errout_hw; + } + refcount_inc(&fnew->refcnt); if (fold) { /* Fold filter was deleted concurrently. Retry lookup. */ -- 2.13.6
Powered by blists - more mailing lists