]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.19
authorSasha Levin <sashal@kernel.org>
Tue, 10 Sep 2024 00:36:22 +0000 (20:36 -0400)
committerSasha Levin <sashal@kernel.org>
Tue, 10 Sep 2024 00:36:22 +0000 (20:36 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.19/acpi-processor-fix-memory-leaks-in-error-paths-of-pr.patch [new file with mode: 0644]
queue-4.19/acpi-processor-return-an-error-if-acpi_processor_get.patch [new file with mode: 0644]
queue-4.19/drm-i915-fence-mark-debug_fence_free-with-__maybe_un.patch [new file with mode: 0644]
queue-4.19/drm-i915-fence-mark-debug_fence_init_onstack-with-__.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/acpi-processor-fix-memory-leaks-in-error-paths-of-pr.patch b/queue-4.19/acpi-processor-fix-memory-leaks-in-error-paths-of-pr.patch
new file mode 100644 (file)
index 0000000..3f308f0
--- /dev/null
@@ -0,0 +1,83 @@
+From 36b3060a0127e424049e09d9d9c0f24f999521d4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 29 May 2024 14:34:32 +0100
+Subject: ACPI: processor: Fix memory leaks in error paths of processor_add()
+
+From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+
+[ Upstream commit 47ec9b417ed9b6b8ec2a941cd84d9de62adc358a ]
+
+If acpi_processor_get_info() returned an error, pr and the associated
+pr->throttling.shared_cpu_map were leaked.
+
+The unwind code was in the wrong order wrt to setup, relying on
+some unwind actions having no affect (clearing variables that were
+never set etc).  That makes it harder to reason about so reorder
+and add appropriate labels to only undo what was actually set up
+in the first place.
+
+Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Reviewed-by: Gavin Shan <gshan@redhat.com>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Link: https://lore.kernel.org/r/20240529133446.28446-6-Jonathan.Cameron@huawei.com
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/acpi/acpi_processor.c | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
+index 9726516abdd5..925ceb0eddaf 100644
+--- a/drivers/acpi/acpi_processor.c
++++ b/drivers/acpi/acpi_processor.c
+@@ -391,7 +391,7 @@ static int acpi_processor_add(struct acpi_device *device,
+       result = acpi_processor_get_info(device);
+       if (result) /* Processor is not physically present or unavailable */
+-              return result;
++              goto err_clear_driver_data;
+       BUG_ON(pr->id >= nr_cpu_ids);
+@@ -406,7 +406,7 @@ static int acpi_processor_add(struct acpi_device *device,
+                       "BIOS reported wrong ACPI id %d for the processor\n",
+                       pr->id);
+               /* Give up, but do not abort the namespace scan. */
+-              goto err;
++              goto err_clear_driver_data;
+       }
+       /*
+        * processor_device_array is not cleared on errors to allow buggy BIOS
+@@ -418,12 +418,12 @@ static int acpi_processor_add(struct acpi_device *device,
+       dev = get_cpu_device(pr->id);
+       if (!dev) {
+               result = -ENODEV;
+-              goto err;
++              goto err_clear_per_cpu;
+       }
+       result = acpi_bind_one(dev, device);
+       if (result)
+-              goto err;
++              goto err_clear_per_cpu;
+       pr->dev = dev;
+@@ -434,10 +434,11 @@ static int acpi_processor_add(struct acpi_device *device,
+       dev_err(dev, "Processor driver could not be attached\n");
+       acpi_unbind_one(dev);
+- err:
+-      free_cpumask_var(pr->throttling.shared_cpu_map);
+-      device->driver_data = NULL;
++ err_clear_per_cpu:
+       per_cpu(processors, pr->id) = NULL;
++ err_clear_driver_data:
++      device->driver_data = NULL;
++      free_cpumask_var(pr->throttling.shared_cpu_map);
+  err_free_pr:
+       kfree(pr);
+       return result;
+-- 
+2.43.0
+
diff --git a/queue-4.19/acpi-processor-return-an-error-if-acpi_processor_get.patch b/queue-4.19/acpi-processor-return-an-error-if-acpi_processor_get.patch
new file mode 100644 (file)
index 0000000..df663da
--- /dev/null
@@ -0,0 +1,44 @@
+From 333b9957706fd247611abd6cfa8130b418db7d4d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 29 May 2024 14:34:31 +0100
+Subject: ACPI: processor: Return an error if acpi_processor_get_info() fails
+ in processor_add()
+
+From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+
+[ Upstream commit fadf231f0a06a6748a7fc4a2c29ac9ef7bca6bfd ]
+
+Rafael observed [1] that returning 0 from processor_add() will result in
+acpi_default_enumeration() being called which will attempt to create a
+platform device, but that makes little sense when the processor is known
+to be not available.  So just return the error code from acpi_processor_get_info()
+instead.
+
+Link: https://lore.kernel.org/all/CAJZ5v0iKU8ra9jR+EmgxbuNm=Uwx2m1-8vn_RAZ+aCiUVLe3Pw@mail.gmail.com/ [1]
+Suggested-by: Rafael J. Wysocki <rafael@kernel.org>
+Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Reviewed-by: Gavin Shan <gshan@redhat.com>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Link: https://lore.kernel.org/r/20240529133446.28446-5-Jonathan.Cameron@huawei.com
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/acpi/acpi_processor.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
+index a448cdf56718..9726516abdd5 100644
+--- a/drivers/acpi/acpi_processor.c
++++ b/drivers/acpi/acpi_processor.c
+@@ -391,7 +391,7 @@ static int acpi_processor_add(struct acpi_device *device,
+       result = acpi_processor_get_info(device);
+       if (result) /* Processor is not physically present or unavailable */
+-              return 0;
++              return result;
+       BUG_ON(pr->id >= nr_cpu_ids);
+-- 
+2.43.0
+
diff --git a/queue-4.19/drm-i915-fence-mark-debug_fence_free-with-__maybe_un.patch b/queue-4.19/drm-i915-fence-mark-debug_fence_free-with-__maybe_un.patch
new file mode 100644 (file)
index 0000000..d7e539d
--- /dev/null
@@ -0,0 +1,59 @@
+From 30d0746d8a4b4d3386aca5c40c3778670681b230 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 29 Aug 2024 18:58:38 +0300
+Subject: drm/i915/fence: Mark debug_fence_free() with __maybe_unused
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+[ Upstream commit f99999536128b14b5d765a9982763b5134efdd79 ]
+
+When debug_fence_free() is unused
+(CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS=n), it prevents kernel builds
+with clang, `make W=1` and CONFIG_WERROR=y:
+
+.../i915_sw_fence.c:118:20: error: unused function 'debug_fence_free' [-Werror,-Wunused-function]
+  118 | static inline void debug_fence_free(struct i915_sw_fence *fence)
+      |                    ^~~~~~~~~~~~~~~~
+
+Fix this by marking debug_fence_free() with __maybe_unused.
+
+See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static
+inline functions for W=1 build").
+
+Fixes: fc1584059d6c ("drm/i915: Integrate i915_sw_fence with debugobjects")
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Reviewed-by: Jani Nikula <jani.nikula@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240829155950.1141978-3-andriy.shevchenko@linux.intel.com
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+(cherry picked from commit 8be4dce5ea6f2368cc25edc71989c4690fa66964)
+Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/i915/i915_sw_fence.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
+index c61e50659ed1..bcc997d217c2 100644
+--- a/drivers/gpu/drm/i915/i915_sw_fence.c
++++ b/drivers/gpu/drm/i915/i915_sw_fence.c
+@@ -67,7 +67,7 @@ static inline void debug_fence_destroy(struct i915_sw_fence *fence)
+       debug_object_destroy(fence, &i915_sw_fence_debug_descr);
+ }
+-static inline void debug_fence_free(struct i915_sw_fence *fence)
++static inline __maybe_unused void debug_fence_free(struct i915_sw_fence *fence)
+ {
+       debug_object_free(fence, &i915_sw_fence_debug_descr);
+       smp_wmb(); /* flush the change in state before reallocation */
+@@ -105,7 +105,7 @@ static inline void debug_fence_destroy(struct i915_sw_fence *fence)
+ {
+ }
+-static inline void debug_fence_free(struct i915_sw_fence *fence)
++static inline __maybe_unused void debug_fence_free(struct i915_sw_fence *fence)
+ {
+ }
+-- 
+2.43.0
+
diff --git a/queue-4.19/drm-i915-fence-mark-debug_fence_init_onstack-with-__.patch b/queue-4.19/drm-i915-fence-mark-debug_fence_init_onstack-with-__.patch
new file mode 100644 (file)
index 0000000..9083bae
--- /dev/null
@@ -0,0 +1,58 @@
+From 2e14be5efdd8e029057151f4477bce8122089a1b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 29 Aug 2024 18:58:37 +0300
+Subject: drm/i915/fence: Mark debug_fence_init_onstack() with __maybe_unused
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+[ Upstream commit fcd9e8afd546f6ced378d078345a89bf346d065e ]
+
+When debug_fence_init_onstack() is unused (CONFIG_DRM_I915_SELFTEST=n),
+it prevents kernel builds with clang, `make W=1` and CONFIG_WERROR=y:
+
+.../i915_sw_fence.c:97:20: error: unused function 'debug_fence_init_onstack' [-Werror,-Wunused-function]
+   97 | static inline void debug_fence_init_onstack(struct i915_sw_fence *fence)
+      |                    ^~~~~~~~~~~~~~~~~~~~~~~~
+
+Fix this by marking debug_fence_init_onstack() with __maybe_unused.
+
+See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static
+inline functions for W=1 build").
+
+Fixes: 214707fc2ce0 ("drm/i915/selftests: Wrap a timer into a i915_sw_fence")
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Reviewed-by: Jani Nikula <jani.nikula@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240829155950.1141978-2-andriy.shevchenko@linux.intel.com
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+(cherry picked from commit 5bf472058ffb43baf6a4cdfe1d7f58c4c194c688)
+Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/i915/i915_sw_fence.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
+index 1de5173e53a2..c61e50659ed1 100644
+--- a/drivers/gpu/drm/i915/i915_sw_fence.c
++++ b/drivers/gpu/drm/i915/i915_sw_fence.c
+@@ -41,7 +41,7 @@ static inline void debug_fence_init(struct i915_sw_fence *fence)
+       debug_object_init(fence, &i915_sw_fence_debug_descr);
+ }
+-static inline void debug_fence_init_onstack(struct i915_sw_fence *fence)
++static inline __maybe_unused void debug_fence_init_onstack(struct i915_sw_fence *fence)
+ {
+       debug_object_init_on_stack(fence, &i915_sw_fence_debug_descr);
+ }
+@@ -84,7 +84,7 @@ static inline void debug_fence_init(struct i915_sw_fence *fence)
+ {
+ }
+-static inline void debug_fence_init_onstack(struct i915_sw_fence *fence)
++static inline __maybe_unused void debug_fence_init_onstack(struct i915_sw_fence *fence)
+ {
+ }
+-- 
+2.43.0
+
index e5bdf8616acf3e1bbf7c65b7a6b8f50265e148a6..85ac27934fb72cc2756044cb4fb97ccfe854009f 100644 (file)
@@ -85,3 +85,7 @@ nilfs2-replace-snprintf-in-show-functions-with-sysfs.patch
 nilfs2-protect-references-to-superblock-parameters-e.patch
 netns-add-pre_exit-method-to-struct-pernet_operations.patch
 ila-call-nf_unregister_net_hooks-sooner.patch
+acpi-processor-return-an-error-if-acpi_processor_get.patch
+acpi-processor-fix-memory-leaks-in-error-paths-of-pr.patch
+drm-i915-fence-mark-debug_fence_init_onstack-with-__.patch
+drm-i915-fence-mark-debug_fence_free-with-__maybe_un.patch