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: <1579058620-26684-1-git-send-email-zhangshaokun@hisilicon.com> Date: Wed, 15 Jan 2020 11:23:40 +0800 From: Shaokun Zhang <zhangshaokun@...ilicon.com> To: <netdev@...r.kernel.org>, <linux-kernel@...r.kernel.org> CC: Yuqi Jin <jinyuqi@...wei.com>, "David S. Miller" <davem@...emloft.net>, Alexey Kuznetsov <kuznet@....inr.ac.ru>, Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org>, Eric Dumazet <edumazet@...gle.com>, Yang Guo <guoyang2@...wei.com>, Shaokun Zhang <zhangshaokun@...ilicon.com> Subject: [PATCH] net: optimize cmpxchg in ip_idents_reserve From: Yuqi Jin <jinyuqi@...wei.com> atomic_try_cmpxchg is called instead of atomic_cmpxchg that can reduce the access number of the global variable @p_id in the loop. Let's optimize it for performance. Cc: "David S. Miller" <davem@...emloft.net> Cc: Alexey Kuznetsov <kuznet@....inr.ac.ru> Cc: Hideaki YOSHIFUJI <yoshfuji@...ux-ipv6.org> Cc: Eric Dumazet <edumazet@...gle.com> Cc: Yang Guo <guoyang2@...wei.com> Signed-off-by: Yuqi Jin <jinyuqi@...wei.com> Signed-off-by: Shaokun Zhang <zhangshaokun@...ilicon.com> --- net/ipv4/route.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 87e979f2b74a..7e28c7121c20 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -496,10 +496,10 @@ u32 ip_idents_reserve(u32 hash, int segs) delta = prandom_u32_max(now - old); /* Do not use atomic_add_return() as it makes UBSAN unhappy */ + old = (u32)atomic_read(p_id); do { - old = (u32)atomic_read(p_id); new = old + delta + segs; - } while (atomic_cmpxchg(p_id, old, new) != old); + } while (!atomic_try_cmpxchg(p_id, &old, new)); return new - segs; } -- 2.7.4
Powered by blists - more mailing lists