]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jun 2024 11:27:01 +0000 (13:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jun 2024 11:27:01 +0000 (13:27 +0200)
added patches:
cachefiles-erofs-fix-null-deref-in-when-cachefiles-is-not-doing-ondemand-mode.patch
selftests-net-lib-avoid-error-removing-empty-netns-name.patch
selftests-net-lib-no-need-to-record-ns-name-if-it-already-exist.patch
selftests-net-lib-support-errexit-with-busywait.patch
selftests-net-lib-update-busywait-timeout-value.patch

queue-6.6/cachefiles-erofs-fix-null-deref-in-when-cachefiles-is-not-doing-ondemand-mode.patch [new file with mode: 0644]
queue-6.6/selftests-net-lib-avoid-error-removing-empty-netns-name.patch [new file with mode: 0644]
queue-6.6/selftests-net-lib-no-need-to-record-ns-name-if-it-already-exist.patch [new file with mode: 0644]
queue-6.6/selftests-net-lib-support-errexit-with-busywait.patch [new file with mode: 0644]
queue-6.6/selftests-net-lib-update-busywait-timeout-value.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/cachefiles-erofs-fix-null-deref-in-when-cachefiles-is-not-doing-ondemand-mode.patch b/queue-6.6/cachefiles-erofs-fix-null-deref-in-when-cachefiles-is-not-doing-ondemand-mode.patch
new file mode 100644 (file)
index 0000000..952a1f2
--- /dev/null
@@ -0,0 +1,57 @@
+From c3d6569a43322f371e7ba0ad386112723757ac8f Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Fri, 19 Jan 2024 20:49:34 +0000
+Subject: cachefiles, erofs: Fix NULL deref in when cachefiles is not doing ondemand-mode
+
+From: David Howells <dhowells@redhat.com>
+
+commit c3d6569a43322f371e7ba0ad386112723757ac8f upstream.
+
+cachefiles_ondemand_init_object() as called from cachefiles_open_file() and
+cachefiles_create_tmpfile() does not check if object->ondemand is set
+before dereferencing it, leading to an oops something like:
+
+       RIP: 0010:cachefiles_ondemand_init_object+0x9/0x41
+       ...
+       Call Trace:
+        <TASK>
+        cachefiles_open_file+0xc9/0x187
+        cachefiles_lookup_cookie+0x122/0x2be
+        fscache_cookie_state_machine+0xbe/0x32b
+        fscache_cookie_worker+0x1f/0x2d
+        process_one_work+0x136/0x208
+        process_scheduled_works+0x3a/0x41
+        worker_thread+0x1a2/0x1f6
+        kthread+0xca/0xd2
+        ret_from_fork+0x21/0x33
+
+Fix this by making cachefiles_ondemand_init_object() return immediately if
+cachefiles->ondemand is NULL.
+
+Fixes: 3c5ecfe16e76 ("cachefiles: extract ondemand info field from cachefiles_object")
+Reported-by: Marc Dionne <marc.dionne@auristor.com>
+Signed-off-by: David Howells <dhowells@redhat.com>
+cc: Gao Xiang <xiang@kernel.org>
+cc: Chao Yu <chao@kernel.org>
+cc: Yue Hu <huyue2@coolpad.com>
+cc: Jeffle Xu <jefflexu@linux.alibaba.com>
+cc: linux-erofs@lists.ozlabs.org
+cc: netfs@lists.linux.dev
+cc: linux-fsdevel@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/cachefiles/ondemand.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/fs/cachefiles/ondemand.c
++++ b/fs/cachefiles/ondemand.c
+@@ -611,6 +611,9 @@ int cachefiles_ondemand_init_object(stru
+       struct fscache_volume *volume = object->volume->vcookie;
+       size_t volume_key_size, cookie_key_size, data_len;
++      if (!object->ondemand)
++              return 0;
++
+       /*
+        * CacheFiles will firstly check the cache file under the root cache
+        * directory. If the coherency check failed, it will fallback to
diff --git a/queue-6.6/selftests-net-lib-avoid-error-removing-empty-netns-name.patch b/queue-6.6/selftests-net-lib-avoid-error-removing-empty-netns-name.patch
new file mode 100644 (file)
index 0000000..2beb7b5
--- /dev/null
@@ -0,0 +1,84 @@
+From 79322174bcc780b99795cb89d237b26006a8b94b Mon Sep 17 00:00:00 2001
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Wed, 5 Jun 2024 11:21:17 +0200
+Subject: selftests: net: lib: avoid error removing empty netns name
+
+From: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+
+commit 79322174bcc780b99795cb89d237b26006a8b94b upstream.
+
+If there is an error to create the first netns with 'setup_ns()',
+'cleanup_ns()' will be called with an empty string as first parameter.
+
+The consequences is that 'cleanup_ns()' will try to delete an invalid
+netns, and wait 20 seconds if the netns list is empty.
+
+Instead of just checking if the name is not empty, convert the string
+separated by spaces to an array. Manipulating the array is cleaner, and
+calling 'cleanup_ns()' with an empty array will be a no-op.
+
+Fixes: 25ae948b4478 ("selftests/net: add lib.sh")
+Cc: stable@vger.kernel.org
+Acked-by: Geliang Tang <geliang@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Reviewed-by: Petr Machata <petrm@nvidia.com>
+Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
+Link: https://lore.kernel.org/r/20240605-upstream-net-20240605-selftests-net-lib-fixes-v1-2-b3afadd368c9@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/lib.sh |   13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+--- a/tools/testing/selftests/net/lib.sh
++++ b/tools/testing/selftests/net/lib.sh
+@@ -10,7 +10,7 @@ BUSYWAIT_TIMEOUT=$((WAIT_TIMEOUT * 1000)
+ # Kselftest framework requirement - SKIP code is 4.
+ ksft_skip=4
+ # namespace list created by setup_ns
+-NS_LIST=""
++NS_LIST=()
+ ##############################################################################
+ # Helpers
+@@ -48,6 +48,7 @@ cleanup_ns()
+       fi
+       for ns in "$@"; do
++              [ -z "${ns}" ] && continue
+               ip netns delete "${ns}" &> /dev/null
+               if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
+                       echo "Warn: Failed to remove namespace $ns"
+@@ -61,7 +62,7 @@ cleanup_ns()
+ cleanup_all_ns()
+ {
+-      cleanup_ns $NS_LIST
++      cleanup_ns "${NS_LIST[@]}"
+ }
+ # setup netns with given names as prefix. e.g
+@@ -70,7 +71,7 @@ setup_ns()
+ {
+       local ns=""
+       local ns_name=""
+-      local ns_list=""
++      local ns_list=()
+       local ns_exist=
+       for ns_name in "$@"; do
+               # Some test may setup/remove same netns multi times
+@@ -86,11 +87,11 @@ setup_ns()
+               if ! ip netns add "$ns"; then
+                       echo "Failed to create namespace $ns_name"
+-                      cleanup_ns "$ns_list"
++                      cleanup_ns "${ns_list[@]}"
+                       return $ksft_skip
+               fi
+               ip -n "$ns" link set lo up
+-              ! $ns_exist && ns_list="$ns_list $ns"
++              ! $ns_exist && ns_list+=("$ns")
+       done
+-      NS_LIST="$NS_LIST $ns_list"
++      NS_LIST+=("${ns_list[@]}")
+ }
diff --git a/queue-6.6/selftests-net-lib-no-need-to-record-ns-name-if-it-already-exist.patch b/queue-6.6/selftests-net-lib-no-need-to-record-ns-name-if-it-already-exist.patch
new file mode 100644 (file)
index 0000000..fd5bc05
--- /dev/null
@@ -0,0 +1,51 @@
+From 83e93942796db58652288f0391ac00072401816f Mon Sep 17 00:00:00 2001
+From: Hangbin Liu <liuhangbin@gmail.com>
+Date: Tue, 14 May 2024 10:33:59 +0800
+Subject: selftests/net/lib: no need to record ns name if it already exist
+
+From: Hangbin Liu <liuhangbin@gmail.com>
+
+commit 83e93942796db58652288f0391ac00072401816f upstream.
+
+There is no need to add the name to ns_list again if the netns already
+recoreded.
+
+Fixes: 25ae948b4478 ("selftests/net: add lib.sh")
+Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/lib.sh |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/tools/testing/selftests/net/lib.sh
++++ b/tools/testing/selftests/net/lib.sh
+@@ -73,15 +73,17 @@ setup_ns()
+       local ns=""
+       local ns_name=""
+       local ns_list=""
++      local ns_exist=
+       for ns_name in "$@"; do
+               # Some test may setup/remove same netns multi times
+               if unset ${ns_name} 2> /dev/null; then
+                       ns="${ns_name,,}-$(mktemp -u XXXXXX)"
+                       eval readonly ${ns_name}="$ns"
++                      ns_exist=false
+               else
+                       eval ns='$'${ns_name}
+                       cleanup_ns "$ns"
+-
++                      ns_exist=true
+               fi
+               if ! ip netns add "$ns"; then
+@@ -90,7 +92,7 @@ setup_ns()
+                       return $ksft_skip
+               fi
+               ip -n "$ns" link set lo up
+-              ns_list="$ns_list $ns"
++              ! $ns_exist && ns_list="$ns_list $ns"
+       done
+       NS_LIST="$NS_LIST $ns_list"
+ }
diff --git a/queue-6.6/selftests-net-lib-support-errexit-with-busywait.patch b/queue-6.6/selftests-net-lib-support-errexit-with-busywait.patch
new file mode 100644 (file)
index 0000000..88e7ae3
--- /dev/null
@@ -0,0 +1,40 @@
+From 41b02ea4c0adfcc6761fbfed42c3ce6b6412d881 Mon Sep 17 00:00:00 2001
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Wed, 5 Jun 2024 11:21:16 +0200
+Subject: selftests: net: lib: support errexit with busywait
+
+From: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+
+commit 41b02ea4c0adfcc6761fbfed42c3ce6b6412d881 upstream.
+
+If errexit is enabled ('set -e'), loopy_wait -- or busywait and others
+using it -- will stop after the first failure.
+
+Note that if the returned status of loopy_wait is checked, and even if
+errexit is enabled, Bash will not stop at the first error.
+
+Fixes: 25ae948b4478 ("selftests/net: add lib.sh")
+Cc: stable@vger.kernel.org
+Acked-by: Geliang Tang <geliang@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
+Link: https://lore.kernel.org/r/20240605-upstream-net-20240605-selftests-net-lib-fixes-v1-1-b3afadd368c9@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/lib.sh |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/tools/testing/selftests/net/lib.sh
++++ b/tools/testing/selftests/net/lib.sh
+@@ -22,9 +22,7 @@ busywait()
+       while true
+       do
+               local out
+-              out=$("$@")
+-              local ret=$?
+-              if ((!ret)); then
++              if out=$("$@"); then
+                       echo -n "$out"
+                       return 0
+               fi
diff --git a/queue-6.6/selftests-net-lib-update-busywait-timeout-value.patch b/queue-6.6/selftests-net-lib-update-busywait-timeout-value.patch
new file mode 100644 (file)
index 0000000..a59b7db
--- /dev/null
@@ -0,0 +1,46 @@
+From fc836129f708407502632107e58d48f54b1caf75 Mon Sep 17 00:00:00 2001
+From: Hangbin Liu <liuhangbin@gmail.com>
+Date: Wed, 24 Jan 2024 14:13:44 +0800
+Subject: selftests/net/lib: update busywait timeout value
+
+From: Hangbin Liu <liuhangbin@gmail.com>
+
+commit fc836129f708407502632107e58d48f54b1caf75 upstream.
+
+The busywait timeout value is a millisecond, not a second. So the
+current setting 2 is too small. On slow/busy host (or VMs) the
+current timeout can expire even on "correct" execution, causing random
+failures. Let's copy the WAIT_TIMEOUT from forwarding/lib.sh and set
+BUSYWAIT_TIMEOUT here.
+
+Fixes: 25ae948b4478 ("selftests/net: add lib.sh")
+Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://lore.kernel.org/r/20240124061344.1864484-1-liuhangbin@gmail.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/lib.sh |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/tools/testing/selftests/net/lib.sh
++++ b/tools/testing/selftests/net/lib.sh
+@@ -4,6 +4,9 @@
+ ##############################################################################
+ # Defines
++WAIT_TIMEOUT=${WAIT_TIMEOUT:=20}
++BUSYWAIT_TIMEOUT=$((WAIT_TIMEOUT * 1000)) # ms
++
+ # Kselftest framework requirement - SKIP code is 4.
+ ksft_skip=4
+ # namespace list created by setup_ns
+@@ -48,7 +51,7 @@ cleanup_ns()
+       for ns in "$@"; do
+               ip netns delete "${ns}" &> /dev/null
+-              if ! busywait 2 ip netns list \| grep -vq "^$ns$" &> /dev/null; then
++              if ! busywait $BUSYWAIT_TIMEOUT ip netns list \| grep -vq "^$ns$" &> /dev/null; then
+                       echo "Warn: Failed to remove namespace $ns"
+                       ret=1
+               fi
index 11985923a203938c637bbf16fa1e4e3c411d50a7..db18c07cefaf2a5270a846dd51fb58eb873727e8 100644 (file)
@@ -247,3 +247,8 @@ selftests-net-add-lib.sh.patch
 selftests-net-add-variable-ns_list-for-lib.sh.patch
 selftests-forwarding-avoid-failures-to-source-net-lib.sh.patch
 remoteproc-k3-r5-jump-to-error-handling-labels-in-start-stop-errors.patch
+cachefiles-erofs-fix-null-deref-in-when-cachefiles-is-not-doing-ondemand-mode.patch
+selftests-net-lib-update-busywait-timeout-value.patch
+selftests-net-lib-no-need-to-record-ns-name-if-it-already-exist.patch
+selftests-net-lib-support-errexit-with-busywait.patch
+selftests-net-lib-avoid-error-removing-empty-netns-name.patch