Commit cbada1048847 for kernel

commit cbada1048847a348797aec63a1d8056621cbe653
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Mar 10 22:59:16 2026 +0100

    neighbour: restore protocol != 0 check in pneigh update

    Prior to commit dc2a27e524ac ("neighbour: Update pneigh_entry in
    pneigh_create()."), a pneigh's protocol was updated only when the
    value of the NDA_PROTOCOL attribute was non-0. While moving the code,
    that check was removed. This is a small change of user-visible
    behavior, and inconsistent with the (non-proxy) neighbour behavior.

    Fixes: dc2a27e524ac ("neighbour: Update pneigh_entry in pneigh_create().")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/38c61de1bb032871a886aff9b9b52fe1cdd4cada.1772894876.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>

diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index a95cfe77f7f0..c56a4e7bf790 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -820,7 +820,8 @@ int pneigh_create(struct neigh_table *tbl, struct net *net,
 update:
 	WRITE_ONCE(n->flags, flags);
 	n->permanent = permanent;
-	WRITE_ONCE(n->protocol, protocol);
+	if (protocol)
+		WRITE_ONCE(n->protocol, protocol);
 out:
 	mutex_unlock(&tbl->phash_lock);
 	return err;