[PATCH] arm64: idreg-override: Detect trailing "--" in __parse_cmdline()

Thorsten Blum posted 1 patch 1 week, 1 day ago
arch/arm64/kernel/pi/idreg-override.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH] arm64: idreg-override: Detect trailing "--" in __parse_cmdline()
Posted by Thorsten Blum 1 week, 1 day ago
__parse_cmdline() detects "--" only if it is followed by whitespace.
However, at the end of the command line, it converts the dashes to
underscores and tries to match "__" as an option.

Detect trailing "--" directly instead of converting it to "__".

Fixes: dc3f5aae0638 ("arm64: idreg-override: Avoid parameq() and parameqn()")
Signed-off-by: Thorsten Blum <blum@kernel.org>
---
 arch/arm64/kernel/pi/idreg-override.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/kernel/pi/idreg-override.c b/arch/arm64/kernel/pi/idreg-override.c
index acaf56234973..38aa28d19650 100644
--- a/arch/arm64/kernel/pi/idreg-override.c
+++ b/arch/arm64/kernel/pi/idreg-override.c
@@ -352,8 +352,9 @@ static __init void __parse_cmdline(const char *cmdline, bool parse_aliases)
 
 		cmdline = skip_spaces(cmdline);
 
-		/* terminate on "--" appearing on the command line by itself */
-		if (cmdline[0] == '-' && cmdline[1] == '-' && isspace(cmdline[2]))
+		/* Stop at "--" appearing as a separate argument. */
+		if (cmdline[0] == '-' && cmdline[1] == '-' &&
+		    (!cmdline[2] || isspace(cmdline[2])))
 			return;
 
 		for (len = 0; cmdline[len] && !isspace(cmdline[len]); len++) {