Don't start/stop an stdio device that might have been already freed.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulie...@suse.de>
Fixes: 70c2525c0d3c ("IOMUX: Stop dropped consoles")

---
Changes since v1:
 - Add comment stating this should be properly fixed

 common/console.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/common/console.c b/common/console.c
index f3cc45cab5..570f26d149 100644
--- a/common/console.c
+++ b/common/console.c
@@ -252,6 +252,15 @@ static bool console_needs_start_stop(int file, struct 
stdio_dev *sdev)
 {
        int i, j;
 
+       /*
+        * TODO: This is a workaround to avoid accessing freed memory:
+        * console_stop() might be called on an stdio_dev that has already been
+        * de-registered, due to the fact that stdio_deregister_dev()
+        * doesn't update the global console_devices array.
+        */
+       if (!stdio_valid(sdev))
+               return false;
+
        for (i = 0; i < ARRAY_SIZE(cd_count); i++) {
                if (i == file)
                        continue;
-- 
2.30.0

Reply via email to