]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
serial: port: Always update ->iotype in __uart_read_properties()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 24 Jan 2025 16:10:47 +0000 (18:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Feb 2025 13:44:41 +0000 (14:44 +0100)
The documentation of the __uart_read_properties() states that
->iotype member is always altered after the function call, but
the code doesn't do that in the case when use_defaults == false
and the value of reg-io-width is unsupported. Make sure the code
follows the documentation.

Note, the current users of the uart_read_and_validate_port_properties()
will fail and the change doesn't affect their behaviour, neither
users of uart_read_port_properties() will be affected since the
alteration happens there even in the current code flow.

Fixes: e894b6005dce ("serial: port: Introduce a common helper to read properties")
Cc: stable <stable@kernel.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20250124161530.398361-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_port.c

index f28d0633fe6bd7fbf6dc400ba3ba6091c882564a..85285c56fabff4e2da327d22310b5cc5bd2d97c0 100644 (file)
@@ -228,11 +228,11 @@ static int __uart_read_properties(struct uart_port *port, bool use_defaults)
                        port->iotype = device_is_big_endian(dev) ? UPIO_MEM32BE : UPIO_MEM32;
                        break;
                default:
+                       port->iotype = UPIO_UNKNOWN;
                        if (!use_defaults) {
                                dev_err(dev, "Unsupported reg-io-width (%u)\n", value);
                                return -EINVAL;
                        }
-                       port->iotype = UPIO_UNKNOWN;
                        break;
                }
        }