FAILED: patch "[PATCH] can: gw: synchronize rcu operations before removing gw job" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From fb8696ab14adadb2e3f6c17c18ed26b3ecd96691 Mon Sep 17 00:00:00 2001
From: Oliver Hartkopp <[email protected]>
Date: Fri, 18 Jun 2021 19:36:45 +0200
Subject: [PATCH] can: gw: synchronize rcu operations before removing gw job
entry
can_can_gw_rcv() is called under RCU protection, so after calling can_rx_unregister(), we have to call synchronize_rcu in order to wait for any RCU read-side critical sections to finish before removing the kmem_cache entry with the referenced gw job entry.
net/can/gw.c +3 -0
@@ -596,6 +596,7 @@ static int cgw_notifier(struct notifier_block *nb,if (gwj->src.dev == dev || gwj->dst.dev == dev) {hlist_del (&gwj->list);cgw_unregister_filter (net, gwj); +synchronize_rcu ();kmem_cache_free (cgw_cache, gwj); } }
@@ -1154,6 +1155,7 @@ static void cgw_remove_all_jobs(struct net *net)hlist_for_each_entry_safe (gwj, nx, &net->can.cgw_list, list) {hlist_del (&gwj->list);cgw_unregister_filter (net, gwj); +synchronize_rcu ();kmem_cache_free (cgw_cache, gwj); } }
@@ -1222,6 +1224,7 @@ static int cgw_remove_job(struct sk_buff *skb, struct nlmsghdr *nlh,hlist_del (&gwj->list);cgw_unregister_filter (net, gwj); +synchronize_rcu ();kmem_cache_free (cgw_cache, gwj); err =0 ;break ;