From 666dbc6f15a3a38a5caba57c7bbe4fdd34cffbd4 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Fri, 2 Dec 2022 14:11:21 -0600 Subject: kernel-6.0.11-200 * Fri Dec 02 2022 Justin M. Forbes [6.0.11-0] - drm/i915: fix TLB invalidation for Gen12 video and compute engines (Andrzej Hajda) - l2tp: Serialize access to sk_user_data with sk_callback_lock (Jakub Sitnicki) - Adjust path to compressed vmlinux kernel image for s390x (Justin M. Forbes) [2149273] - Linux v6.0.11 Resolves: rhbz#2149273 Signed-off-by: Justin M. Forbes --- Patchlist.changelog | 6 ++ kernel.spec | 14 +++- patch-6.0-redhat.patch | 208 ++++++++++++++++++++----------------------------- sources | 6 +- 4 files changed, 103 insertions(+), 131 deletions(-) diff --git a/Patchlist.changelog b/Patchlist.changelog index 0884d0e84..e488617b1 100644 --- a/Patchlist.changelog +++ b/Patchlist.changelog @@ -1,3 +1,9 @@ +"https://gitlab.com/cki-project/kernel-ark/-/commit"/c4246557e987f942c11afdafc40847b539aaa3ca + c4246557e987f942c11afdafc40847b539aaa3ca drm/i915: fix TLB invalidation for Gen12 video and compute engines + +"https://gitlab.com/cki-project/kernel-ark/-/commit"/912e643eb5e75f90732fb463ee49eb9e87b73e68 + 912e643eb5e75f90732fb463ee49eb9e87b73e68 l2tp: Serialize access to sk_user_data with sk_callback_lock + "https://gitlab.com/cki-project/kernel-ark/-/commit"/22cf453b7de6d2bbee993bb3bc097cade3946a11 22cf453b7de6d2bbee993bb3bc097cade3946a11 net: neigh: decrement the family specific qlen diff --git a/kernel.spec b/kernel.spec index 260a186a2..20770aefb 100755 --- a/kernel.spec +++ b/kernel.spec @@ -122,17 +122,17 @@ Summary: The Linux kernel # the --with-release option overrides this setting.) %define debugbuildsenabled 1 # define buildid .local -%define specversion 6.0.10 +%define specversion 6.0.11 %define patchversion 6.0 %define pkgrelease 200 %define kversion 6 -%define tarfile_release 6.0.10 +%define tarfile_release 6.0.11 # This is needed to do merge window version magic %define patchlevel 0 # This allows pkg_release to have configurable %%{?dist} tag %define specrelease 200%{?buildid}%{?dist} # This defines the kabi tarball version -%define kabiversion 6.0.10 +%define kabiversion 6.0.11 # If this variable is set to 1, a bpf selftests build failure will cause a # fatal kernel package build error @@ -450,7 +450,7 @@ Summary: The Linux kernel %define hdrarch s390 %define all_arch_configs kernel-%{version}-s390x.config %define kernel_image arch/s390/boot/bzImage -%define vmlinux_decompressor arch/s390/boot/compressed/vmlinux +%define vmlinux_decompressor arch/s390/boot/vmlinux %endif %ifarch %{arm} @@ -3180,6 +3180,12 @@ fi # # %changelog +* Fri Dec 02 2022 Justin M. Forbes [6.0.11-0] +- drm/i915: fix TLB invalidation for Gen12 video and compute engines (Andrzej Hajda) +- l2tp: Serialize access to sk_user_data with sk_callback_lock (Jakub Sitnicki) +- Adjust path to compressed vmlinux kernel image for s390x (Justin M. Forbes) [2149273] +- Linux v6.0.11 + * Sat Nov 26 2022 Justin M. Forbes [6.0.10-0] - net: neigh: decrement the family specific qlen (Thomas Zeitlhofer) - Linux v6.0.10 diff --git a/patch-6.0-redhat.patch b/patch-6.0-redhat.patch index 4fb1a6b41..d16fc75bf 100644 --- a/patch-6.0-redhat.patch +++ b/patch-6.0-redhat.patch @@ -35,11 +35,11 @@ include/linux/pci.h | 3 + include/linux/rmi.h | 1 + include/linux/security.h | 5 + - include/net/neighbour.h | 2 +- + include/net/sock.h | 2 +- init/Kconfig | 2 +- kernel/module/signing.c | 9 +- - net/core/neighbour.c | 58 ++-- net/ipv4/fib_semantics.c | 8 +- + net/l2tp/l2tp_core.c | 19 +- scripts/pahole-flags.sh | 3 + scripts/tags.sh | 2 + security/integrity/platform_certs/load_uefi.c | 6 +- @@ -47,10 +47,10 @@ security/lockdown/lockdown.c | 1 + security/security.c | 6 + tools/testing/selftests/net/fib_nexthops.sh | 5 + - 49 files changed, 793 insertions(+), 391 deletions(-) + 49 files changed, 776 insertions(+), 369 deletions(-) diff --git a/Makefile b/Makefile -index 4f7da26fef78..ce8f093a79f1 100644 +index 9fecb094c28a..43753e41fb51 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,10 @@ $(if $(filter __%, $(MAKECMDGOALS)), \ @@ -1090,7 +1090,7 @@ index 3a808146b50f..c1a3f3057921 100644 * Changes the default domain of an iommu group that has *only* one device * diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c -index ed47c256dbd2..2af613f7353f 100644 +index 01c36284e542..2a5fd205863b 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -250,6 +250,9 @@ static void nvme_delete_ctrl_sync(struct nvme_ctrl *ctrl) @@ -1946,21 +1946,21 @@ index 7bd0c490703d..7779eaf1ffa1 100644 #endif /* CONFIG_SECURITY */ #if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE) -diff --git a/include/net/neighbour.h b/include/net/neighbour.h -index 3827a6b395fd..bce6b228cf56 100644 ---- a/include/net/neighbour.h -+++ b/include/net/neighbour.h -@@ -83,7 +83,7 @@ struct neigh_parms { - struct rcu_head rcu_head; - - int reachable_time; -- int qlen; -+ u32 qlen; - int data[NEIGH_VAR_DATA_MAX]; - DECLARE_BITMAP(data_state, NEIGH_VAR_DATA_MAX); - }; +diff --git a/include/net/sock.h b/include/net/sock.h +index f6e6838c82df..03a4ebe3ccc8 100644 +--- a/include/net/sock.h ++++ b/include/net/sock.h +@@ -323,7 +323,7 @@ struct sk_filter; + * @sk_tskey: counter to disambiguate concurrent tstamp requests + * @sk_zckey: counter to order MSG_ZEROCOPY notifications + * @sk_socket: Identd and reporting IO signals +- * @sk_user_data: RPC layer private data ++ * @sk_user_data: RPC layer private data. Write-protected by @sk_callback_lock. + * @sk_frag: cached page frag + * @sk_peek_off: current peek_offset value + * @sk_send_head: front of stuff to transmit diff --git a/init/Kconfig b/init/Kconfig -index 532362fcfe31..30d547537ea0 100644 +index d1d779d6ba43..b3d83b0eb539 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1678,7 +1678,7 @@ config AIO @@ -1995,111 +1995,6 @@ index a2ff4242e623..f0d2be1ee4f1 100644 } int module_sig_check(struct load_info *info, int flags) -diff --git a/net/core/neighbour.c b/net/core/neighbour.c -index 84755db81e9d..35f5a3125808 100644 ---- a/net/core/neighbour.c -+++ b/net/core/neighbour.c -@@ -307,7 +307,31 @@ static int neigh_del_timer(struct neighbour *n) - return 0; - } - --static void pneigh_queue_purge(struct sk_buff_head *list, struct net *net) -+static struct neigh_parms *neigh_get_dev_parms_rcu(struct net_device *dev, -+ int family) -+{ -+ switch (family) { -+ case AF_INET: -+ return __in_dev_arp_parms_get_rcu(dev); -+ case AF_INET6: -+ return __in6_dev_nd_parms_get_rcu(dev); -+ } -+ return NULL; -+} -+ -+static void neigh_parms_qlen_dec(struct net_device *dev, int family) -+{ -+ struct neigh_parms *p; -+ -+ rcu_read_lock(); -+ p = neigh_get_dev_parms_rcu(dev, family); -+ if (p) -+ p->qlen--; -+ rcu_read_unlock(); -+} -+ -+static void pneigh_queue_purge(struct sk_buff_head *list, struct net *net, -+ int family) - { - struct sk_buff_head tmp; - unsigned long flags; -@@ -321,13 +345,7 @@ static void pneigh_queue_purge(struct sk_buff_head *list, struct net *net) - struct net_device *dev = skb->dev; - - if (net == NULL || net_eq(dev_net(dev), net)) { -- struct in_device *in_dev; -- -- rcu_read_lock(); -- in_dev = __in_dev_get_rcu(dev); -- if (in_dev) -- in_dev->arp_parms->qlen--; -- rcu_read_unlock(); -+ neigh_parms_qlen_dec(dev, family); - __skb_unlink(skb, list); - __skb_queue_tail(&tmp, skb); - } -@@ -409,7 +427,8 @@ static int __neigh_ifdown(struct neigh_table *tbl, struct net_device *dev, - write_lock_bh(&tbl->lock); - neigh_flush_dev(tbl, dev, skip_perm); - pneigh_ifdown_and_unlock(tbl, dev); -- pneigh_queue_purge(&tbl->proxy_queue, dev ? dev_net(dev) : NULL); -+ pneigh_queue_purge(&tbl->proxy_queue, dev ? dev_net(dev) : NULL, -+ tbl->family); - if (skb_queue_empty_lockless(&tbl->proxy_queue)) - del_timer_sync(&tbl->proxy_timer); - return 0; -@@ -1621,13 +1640,8 @@ static void neigh_proxy_process(struct timer_list *t) - - if (tdif <= 0) { - struct net_device *dev = skb->dev; -- struct in_device *in_dev; - -- rcu_read_lock(); -- in_dev = __in_dev_get_rcu(dev); -- if (in_dev) -- in_dev->arp_parms->qlen--; -- rcu_read_unlock(); -+ neigh_parms_qlen_dec(dev, tbl->family); - __skb_unlink(skb, &tbl->proxy_queue); - - if (tbl->proxy_redo && netif_running(dev)) { -@@ -1821,7 +1835,7 @@ int neigh_table_clear(int index, struct neigh_table *tbl) - cancel_delayed_work_sync(&tbl->managed_work); - cancel_delayed_work_sync(&tbl->gc_work); - del_timer_sync(&tbl->proxy_timer); -- pneigh_queue_purge(&tbl->proxy_queue, NULL); -+ pneigh_queue_purge(&tbl->proxy_queue, NULL, tbl->family); - neigh_ifdown(tbl, NULL); - if (atomic_read(&tbl->entries)) - pr_crit("neighbour leakage\n"); -@@ -3542,18 +3556,6 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, - return ret; - } - --static struct neigh_parms *neigh_get_dev_parms_rcu(struct net_device *dev, -- int family) --{ -- switch (family) { -- case AF_INET: -- return __in_dev_arp_parms_get_rcu(dev); -- case AF_INET6: -- return __in6_dev_nd_parms_get_rcu(dev); -- } -- return NULL; --} -- - static void neigh_copy_dflt_parms(struct net *net, struct neigh_parms *p, - int index) - { diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index 2dc97583d279..e9a7f70a54df 100644 --- a/net/ipv4/fib_semantics.c @@ -2122,6 +2017,71 @@ index 2dc97583d279..e9a7f70a54df 100644 nh = fib_info_nh(fi, 0); if (cfg->fc_encap) { if (fib_encap_match(net, cfg->fc_encap_type, +diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c +index 7499c51b1850..754fdda8a5f5 100644 +--- a/net/l2tp/l2tp_core.c ++++ b/net/l2tp/l2tp_core.c +@@ -1150,8 +1150,10 @@ static void l2tp_tunnel_destruct(struct sock *sk) + } + + /* Remove hooks into tunnel socket */ ++ write_lock_bh(&sk->sk_callback_lock); + sk->sk_destruct = tunnel->old_sk_destruct; + sk->sk_user_data = NULL; ++ write_unlock_bh(&sk->sk_callback_lock); + + /* Call the original destructor */ + if (sk->sk_destruct) +@@ -1469,16 +1471,18 @@ int l2tp_tunnel_register(struct l2tp_tunnel *tunnel, struct net *net, + sock = sockfd_lookup(tunnel->fd, &ret); + if (!sock) + goto err; +- +- ret = l2tp_validate_socket(sock->sk, net, tunnel->encap); +- if (ret < 0) +- goto err_sock; + } + ++ sk = sock->sk; ++ write_lock(&sk->sk_callback_lock); ++ ++ ret = l2tp_validate_socket(sk, net, tunnel->encap); ++ if (ret < 0) ++ goto err_sock; ++ + tunnel->l2tp_net = net; + pn = l2tp_pernet(net); + +- sk = sock->sk; + sock_hold(sk); + tunnel->sock = sk; + +@@ -1504,7 +1508,7 @@ int l2tp_tunnel_register(struct l2tp_tunnel *tunnel, struct net *net, + + setup_udp_tunnel_sock(net, sock, &udp_cfg); + } else { +- sk->sk_user_data = tunnel; ++ rcu_assign_sk_user_data(sk, tunnel); + } + + tunnel->old_sk_destruct = sk->sk_destruct; +@@ -1518,6 +1522,7 @@ int l2tp_tunnel_register(struct l2tp_tunnel *tunnel, struct net *net, + if (tunnel->fd >= 0) + sockfd_put(sock); + ++ write_unlock(&sk->sk_callback_lock); + return 0; + + err_sock: +@@ -1525,6 +1530,8 @@ int l2tp_tunnel_register(struct l2tp_tunnel *tunnel, struct net *net, + sock_release(sock); + else + sockfd_put(sock); ++ ++ write_unlock(&sk->sk_callback_lock); + err: + return ret; + } diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh index 0d99ef17e4a5..81c8e082ec57 100755 --- a/scripts/pahole-flags.sh diff --git a/sources b/sources index accccb2fd..ac97f0d28 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (linux-6.0.10.tar.xz) = 7101ac0cad3c4e77b0529ed6b2e9ac1a609bf19923931cf71638b9adfa9cb0d305fa24780099da0687cf7f5e6b52698e58f00e52db563612ff1353c7c9786566 -SHA512 (kernel-abi-stablelists-6.0.10.tar.bz2) = 0ba1c1b95add006b2a6f81ef46886f4985d1f382a16b63f9e4a0fc44a9a1d100d72c4cccf10cc0cf4e305818aa572b5b7e856031b3f55fa2857080b325badb5b -SHA512 (kernel-kabi-dw-6.0.10.tar.bz2) = fd18b14565f1c76b8a8b26a585f9d4784ea27ae1d2b145b40bcdddf77afdb2b4b6f95b07f58d56b5d3f5d86ef7819181a4f6733dabc6114f2e62bfe8c6dded32 +SHA512 (linux-6.0.11.tar.xz) = 2adaf3d3fafcd3f2270a1fecfe9e3a94afde4fd769643a6805cedf6314b300b7ea85a0e7662f17de0a00c892f51f5ee86493307bbf511bbf7ec863e22cab2fb0 +SHA512 (kernel-abi-stablelists-6.0.11.tar.bz2) = dfef748753e09acd8db3bb3871ae759a31b75568f9224bad4739fe34a1088151cbc96fcd7ee971b383a575d1f77bc23c62d0df02d310eab29670a300f0af7fc4 +SHA512 (kernel-kabi-dw-6.0.11.tar.bz2) = f1a70345a71f4ae8177a582dc224bcf089dbd9e74dda33d98d2851f4827fc32a11733c3e6def9afacb1ad2d6d893325e35c4015eb917f57003c327855cd8f2f8 -- cgit