]> www.infradead.org Git - nvme.git/commitdiff
net: dst_cache: add two DEBUG_NET warnings
authorEric Dumazet <edumazet@google.com>
Fri, 31 May 2024 13:26:36 +0000 (13:26 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 4 Jun 2024 01:50:09 +0000 (18:50 -0700)
After fixing four different bugs involving dst_cache
users, it might be worth adding a check about BH being
blocked by dst_cache callers.

DEBUG_NET_WARN_ON_ONCE(!in_softirq());

It is not fatal, if we missed valid case where no
BH deadlock is to be feared, we might change this.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Link: https://lore.kernel.org/r/20240531132636.2637995-6-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dst_cache.c

index 6a0482e676d379f1f9bffdda51c7535243b3ec38..70c634b9e7b02300188582a1634d5977838db132 100644 (file)
@@ -27,6 +27,7 @@ struct dst_cache_pcpu {
 static void dst_cache_per_cpu_dst_set(struct dst_cache_pcpu *dst_cache,
                                      struct dst_entry *dst, u32 cookie)
 {
+       DEBUG_NET_WARN_ON_ONCE(!in_softirq());
        dst_release(dst_cache->dst);
        if (dst)
                dst_hold(dst);
@@ -40,6 +41,7 @@ static struct dst_entry *dst_cache_per_cpu_get(struct dst_cache *dst_cache,
 {
        struct dst_entry *dst;
 
+       DEBUG_NET_WARN_ON_ONCE(!in_softirq());
        dst = idst->dst;
        if (!dst)
                goto fail;