From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0FB5839B96B for ; Tue, 7 Apr 2026 10:27:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775557657; cv=none; b=sdBoWs3BZRqCO7x0xr+XEoRZRzjoH+lLzdNR8UQopuQyrLGtD+4nJlYwPnNffUTxVJoQ2I0SzQJjWhw2qyAF3Marb+iw5n1um2CnF0kcIwJ8LnlQrBYRo2oA0b8+RYK3PsJXYA0mAM6VsxUfOMZ8WRuzj2kR5JS9aVkwM6Ka7K0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775557657; c=relaxed/simple; bh=bjw97Nq69sgYaOVc2cxlNKH6jJlRKnPqoQcsdCrBRKs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=VByL5+k92WMjm/Fe2hyOq37CYKmNGyzhsgrFhRx8waLsxeeJ3az0L/Dc3RKedAAkRyz9Ml1l4IZNBkUoe/Kb6CHAJyNKPSwZ/74B6KBeZuo8recY7caJTq4wVQ9UI6RHNrIOCbMaN2mg4p62qi6olddX5ZpWKNKvTFUJkObo1nA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZkPuZGO5; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=UFAYWNCu; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZkPuZGO5"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="UFAYWNCu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775557655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+n77q3qe2X9uEWYZe5PbZjhiPr23OWjrheRwwkTN7kU=; b=ZkPuZGO5ZN11gZK99Wv1RK9VjCvPtyVVvQIYuOH3gkY8eoCNVX6J7oKQngEScs/psp6WCX Sgba1XaZYxBXuAbdotWjXpfjLgFm3cYRe2IQ3Uozb7og/F3WDrlvLSj2MR/9xTzc9WpLKi zdwnBK75S19GyVt+h4G9F6tPJenpyag= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-670-pA1ChJNtPlu9e2RsO-2TCA-1; Tue, 07 Apr 2026 06:27:33 -0400 X-MC-Unique: pA1ChJNtPlu9e2RsO-2TCA-1 X-Mimecast-MFC-AGG-ID: pA1ChJNtPlu9e2RsO-2TCA_1775557653 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-48895008a3eso23381215e9.3 for ; Tue, 07 Apr 2026 03:27:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1775557652; x=1776162452; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=+n77q3qe2X9uEWYZe5PbZjhiPr23OWjrheRwwkTN7kU=; b=UFAYWNCuPMYYVqVHh0Dr0xVS1xAKduvnGY7YXAS/+RYfccJYEt3PixcaAoTo5a8GtQ VyvwNec28kxYki71gWrFT5sqOr6weYGeeISZ18TipQ0bHD11Rn9s53v4JTYPxGC5d/xz yPIwNm/ix2rmlNyQL8oVpdBfrlNu2xZ2GfGE+FAcLM4i7OEVPjx5KN88Ncpb/CpgIguG E4juNNt3TKQTNtv6sVvyPMB35iVa8opP9zmrN3W4CCdPLaTCzuxk3bCr43s7vTqrQF0s JOowFNh56rPr0T/H11DY3ulrmG0ZCb7BiEWKcYjlrhEmBW4HW8GSHF75owoIF1yW/odO oFrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775557652; x=1776162452; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+n77q3qe2X9uEWYZe5PbZjhiPr23OWjrheRwwkTN7kU=; b=fBX7AacGR6a4VBzv/CiJPw1fOfPss1JLpgp3h2sIFB8Ab+13am6CFWtQtc5r4AVUGZ gTo+ORhxUwS79sIxE+nM/XrXIMyUD/TGpNnj36+Z1JZCb1oPUODfgDP4/CWFweun7sL7 pjqVUTxEogE+eb0EU7JF7K/11g0ETXfn/MCDudzKIaUK61Ju7NlxQeMCMQ4O739sW+38 Va8UkJUzWZX9WdOwbZAddCo1eKYnkcs7sO+gIRF+LC19KKEIkQYsNNx2BWYKgBe9P44U a6lm7wkCH0XRGKko8ZN49vYqhqTqlzKlXlka5VTTaGVYAPUxiHStyyjW9l7ivz+hHMph CaXg== X-Forwarded-Encrypted: i=1; AJvYcCVplqb30+AZz7U85gtO6V4CbWEWFEbsmfnib2PuWHbVRMSlcnMi33WDtwlrLFL6O2D6djZr+YH/kTs9DPI=@vger.kernel.org X-Gm-Message-State: AOJu0YywUmIeifL8HGQItAIwWqlWvBAZqv/9UBbcyTx/G0F07XZUrn71 94yZG5PycpFPmvAR+IZHcZF+1bG69/UUV5V3Hmvt4Sv06d/z9kdtDAHcr9GzsqLtQYpcGY3D7+B 37WHZd0mmReL2M/nlbYRwo4AJepMOAJ8n0SY0jnV0lS2iqUuhhrFIYWQtm4TIQt6TyA== X-Gm-Gg: AeBDieuAuK6DNNXPKbTQJTLAk/sxEABuxrOZ7nJe7FZdFVfmf7AcwUHdhNa79Kr2nz2 u282XLdGf2hL/SXJHasUB1E50EgBNl8mdM1LpIiSBx2dJ7CNaMfn/NKK4AJPSsM9n0ymHvg0xHz py6Sd+AW8DxHPS1TV1+RJ+gtZLKfT33CSNhylndyKhdnrP1W2yNaPzN7hXRarcDxMExETfrfMIV zYCBzcL7IamK9J2QBG03LOx4E8TXGCDw9rsFPR6Z5QADPuD2jQe4LQjUAHWDl48frg5b4xrDYMx rU8o3IjzKbDc4JnqXKRb+eI0ApNvFCkL+NyC+KBDhvRRZ26YZQNkj0stT8iZEMFoWUkvEAmaRMY jM8CUZ0myxYNoU+n/roTCYjcYS11Bg80O5spureM8clvnOnX9P8eSs8PFfw== X-Received: by 2002:a05:600c:8b32:b0:487:1c2:6a56 with SMTP id 5b1f17b1804b1-488996afe1cmr220727815e9.3.1775557652603; Tue, 07 Apr 2026 03:27:32 -0700 (PDT) X-Received: by 2002:a05:600c:8b32:b0:487:1c2:6a56 with SMTP id 5b1f17b1804b1-488996afe1cmr220727625e9.3.1775557652195; Tue, 07 Apr 2026 03:27:32 -0700 (PDT) Received: from [192.168.88.32] ([212.105.153.231]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48899e48da1sm111772465e9.18.2026.04.07.03.27.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Apr 2026 03:27:31 -0700 (PDT) Message-ID: Date: Tue, 7 Apr 2026 12:27:30 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net] ipv6: add READ_ONCE() annotations to fib6_metrics reader paths To: Hangbin Liu , "David S. Miller" , David Ahern , Eric Dumazet , Jakub Kicinski , Simon Horman Cc: David Ahern , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Jiayuan Chen References: <20260403-fib6_metric_read_once-v1-1-45de44912b24@gmail.com> Content-Language: en-US From: Paolo Abeni In-Reply-To: <20260403-fib6_metric_read_once-v1-1-45de44912b24@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 4/3/26 6:16 AM, Hangbin Liu wrote: > diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h > index 9f8b6814a96a..2dfb04fab5da 100644 > --- a/include/net/ip6_fib.h > +++ b/include/net/ip6_fib.h > @@ -594,7 +594,9 @@ void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i); > void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val); > static inline bool fib6_metric_locked(struct fib6_info *f6i, int metric) > { > - return !!(f6i->fib6_metrics->metrics[RTAX_LOCK - 1] & (1 << metric)); > + struct dst_metrics *m = READ_ONCE(f6i->fib6_metrics); > + > + return !!(m->metrics[RTAX_LOCK - 1] & (1 << metric)); Sashiko notes that here you may want to add an additional READ_ONCE() on m->metrics[RTAX_LOCK - 1], which in turn looks like more a follow-up/separate change than a change specific to this patch > } > void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i, > bool offload, bool trap, bool offload_failed); > diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c > index dd26657b6a4a..3c96580c2a03 100644 > --- a/net/ipv6/ip6_fib.c > +++ b/net/ipv6/ip6_fib.c > @@ -1144,9 +1144,11 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct fib6_info *rt, > iter->fib6_flags &= ~RTF_PREFIX_RT; > } > > - if (rt->fib6_pmtu) > + u32 pmtu = READ_ONCE(rt->fib6_pmtu); Here the READ_ONCE() on rt->metrics is still missing. > @@ -1635,11 +1635,12 @@ __rt6_find_exception_rcu(struct rt6_exception_bucket **bucket, > static unsigned int fib6_mtu(const struct fib6_result *res) > { > const struct fib6_nh *nh = res->nh; > + struct dst_metrics *m; > unsigned int mtu; > > - if (res->f6i->fib6_pmtu) { > - mtu = res->f6i->fib6_pmtu; > - } else { > + m = READ_ONCE(res->f6i->fib6_metrics); > + mtu = READ_ONCE(m->metrics[RTAX_MTU - 1]); After this patch there will be a single usage of the `fib6_pmtu` macro. I think it would be better to entirely drop it and replace with an helper: static inline unsigned int fib6_mtu(const struct fib6_info *f6i) { const struct dst_metrics *m = READ_ONCE(f6i->fib6_metrics); return READ_ONCE(m->metrics[RTAX_MTU - 1]); } /P