From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1AA8F127E38 for ; Tue, 16 Apr 2024 10:45:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264326; cv=none; b=lEphrBAdPPq56wmiFJwvSU7DPzYjZsxyzvdBKMSP9jzWc9HVpfYefMrccZhJNdSEXDjq7vXc/5KzRSS1k8QudOlfmcZuARiJzT42yYgG4BalmrrGSE1MQO+jNf83T1iY/e2MU3VYznJqjr7zuotfwK8tdgJ6zb4ALLnjC0zSwXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264326; c=relaxed/simple; bh=7fVDMBM5xVV869P8MZlUPmDuxIwrqax34KtYB5UCsHY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JOt1xFUl7eEaWnpd2Br/4JhbXhxac6t3Md545llEQD2HapkoDIjeuSrV+PIUl/r9MC9y2CjAFemrqzL8cpGhx7fXPvgTH8mTqdiBIoKAeegbnuVFmL/g8Ijkfclybyom5/en/2nG8eASnY8KcziwW9EDd6N/rNUQCEOn9J4JZ2Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=CuhSy5WI; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="CuhSy5WI" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-343e096965bso2806109f8f.3 for ; Tue, 16 Apr 2024 03:45:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264322; x=1713869122; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5kQx7z6+Ldz5XYyh8xXwCAcDyA8gIafLtX7+rdECU0g=; b=CuhSy5WI7u7OfgGCzX+mrnGlxQjYsZ5MvOGSAcmHux8uqlPNuwprjkUfUrVRwdKs1S JsuTr639YdEQaW8SJTEhSkYIewU1hVbgEAoUcejU2qjTM38bMLd9+UHlICxegqOs+1jv Qy0npnuonsvF6DL/kQKnUcC0vKezjAWXN/fo3afBVVcT+XMhNIRiSij3EgfegiuOKhTc glVcXphYU/3pLVRQzWqyGxdeygbxbK6etmTbNmJT18y/HH0kEUUzK6YD+rcxrLQeXARn WeNPpIO7iZO0EOwJpXLDALf/jQDWkIN45P8g+1UsEYj//ETvaPFiBX/A9smH2OPqe+PV rIvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264322; x=1713869122; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5kQx7z6+Ldz5XYyh8xXwCAcDyA8gIafLtX7+rdECU0g=; b=WVHpJnRu4iTV5j/ulN/WXbhVxNyG7vtax5KxSJIntob5dLaCpmGNGA6cyc18Mz2PGd z8bp5IzUEFAjt3yziW9h6VfqCodN90iDAeXDZsg3d/KOjKxIcyYbIWIvBPUIIloM5deE mgwi0LAc2CT6al6+ixaqbOkvDxXh7uTquX4ZjbshWKsAIanC5gKh6PimaEbgQCtkN62d xYFkLIt2H02ePvbcoX9l56C/bqBmyiZr9YuYUiaOzYvJM4PFJZfwlJCsGAvsBcRYpDre LqbBAuZMSHXhEkCO9luA9MU/G592PfFQ8vta/QsLGBxBnxn7PZ/f3Qw+3D6pP0/zpkfl WRbg== X-Forwarded-Encrypted: i=1; AJvYcCWekrZjzO2Z3WIwVGbftPhJuOUO3QsSwLSFomW0HWi3GfXiFvyFpXhnPloci32a3D8r0b5Fkwhb8GiqqmyA52TeNlN3IE2nWqaU9AMI X-Gm-Message-State: AOJu0Yx5IU5aCaIMzpJCSb9JsC9Op8Rya8PBWNcHZSumNSnv03M1xS/C NVabCV/NOSHx0W3Az4dgfu0UBuIbXXb3j4iqKJ8C61QzUFVb1yOc0ibDCzeJ2FY= X-Google-Smtp-Source: AGHT+IHTtRNyS7RiqQutDLkv4RpX5jb9ZLT6VAbYyVqY0HwbgVW+ohpwd874WyS5frEK6yACKIVDlw== X-Received: by 2002:a5d:4d03:0:b0:346:c6e6:b7a3 with SMTP id z3-20020a5d4d03000000b00346c6e6b7a3mr9009266wrt.27.1713264322473; Tue, 16 Apr 2024 03:45:22 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:22 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:18 +0100 Subject: [PATCH 1/7] kdb: Fix buffer overflow during tab-complete Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-1-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org, Justin Stitt , stable@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2001; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=7fVDMBM5xVV869P8MZlUPmDuxIwrqax34KtYB5UCsHY=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlZdkGw9HMU6ZyFyNTx1wTmdr5u+FzJGQKx1C oIc1CdCUlqJAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WXQAKCRB84yVdOfeI oWYFD/kBz8MRqROT8FtLzkp2dOxoxnKkbbpva59PSCF6knfFq/AA68i/AWI6/Mjb+eX8qqX6HQw a0KVrKuWSTVhPxOEoo06JMZfqEwzkyVjOGWI/35UGd4EvCaCuK2YG/gATjyCqtRtttGPVXcy07R Ay4ig0syDAd4DKcvehsyKXCxfws/iRt+rKm3bmHWQ8jKP7eqXj5i6+3fZoRXQbuWB+FfhygjMHo OWmwkrkDkn9QLJXugOxSPStsjjcw2MgI+WgSms2EbvOBzy8Wcub706dkOK0zci4IRYHpMqRu7Qa 2xeDDHbv8yWc9jDoZMjfqbRgHMLGG4ASdlYReKyLmz/C6pZLrQd3ITBy4lA31anDfsqUgj3SszZ aL/XTepchju5K7H/0tSMkaO0zooUkWZhu1N/79JSMvjDNJYFfV/iO+MK2YZKDwO2/m7XMEHwi+S kfzHOF2NIC8eMctYV78EkjPHqMbkmplyD+ELvvfJBUPrIhNN8xIMlw0t/KGkpvRkYwV5TOSN4rD PIMfXV7x4NKLR6f145VA/pleGtVVc1H3KAOPM1lQywUDFDa7FDhHUVW3uTgvre7kOoAVNWHY8k6 CLsvNDvUwvjb8/5IsAvpyp7Glo6mD932aohrcaNX41X6ofAC6MTnVU8ylZ5vTh0RIdI2c3CR0Vw BfwqwWE6PK+i1SQ== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE Currently, when the user attempts symbol completion with the Tab key, kdb will use strncpy() to insert the completed symbol into the command buffer. Unfortunately it passes the size of the source buffer rather than the destination to strncpy() with predictably horrible results. Most obviously if the command buffer is already full but cp, the cursor position, is in the middle of the buffer, then we will write past the end of the supplied buffer. Fix this by replacing the dubious strncpy() calls with memmove()/memcpy() calls plus explicit boundary checks to make sure we have enough space before we start moving characters around. Reported-by: Justin Stitt Cc: stable@vger.kernel.org Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 9443bc63c5a24..06dfbccb10336 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -367,14 +367,19 @@ static char *kdb_read(char *buffer, size_t bufsize) kdb_printf(kdb_prompt_str); kdb_printf("%s", buffer); } else if (tab !=3D 2 && count > 0) { - len_tmp =3D strlen(p_tmp); - strncpy(p_tmp+len_tmp, cp, lastchar-cp+1); - len_tmp =3D strlen(p_tmp); - strncpy(cp, p_tmp+len, len_tmp-len + 1); - len =3D len_tmp - len; - kdb_printf("%s", cp); - cp +=3D len; - lastchar +=3D len; + /* How many new characters do we want from tmpbuffer? */ + len_tmp =3D strlen(p_tmp) - len; + if (lastchar + len_tmp >=3D bufend) + len_tmp =3D bufend - lastchar; + + if (len_tmp) { + /* + 1 ensures the '\0' is memmove'd */ + memmove(cp+len_tmp, cp, (lastchar-cp) + 1); + memcpy(cp, p_tmp+len, len_tmp); + kdb_printf("%s", cp); + cp +=3D len_tmp; + lastchar +=3D len_tmp; + } } kdb_nextline =3D 1; /* reset output line number */ break; --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C02F9128376 for ; Tue, 16 Apr 2024 10:45:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264327; cv=none; b=ToXBYpv9+eT6FNEZ9zFN+R5AmirJrgw9jDwmoskPLKSz3ncNjrowoeLCR6hFuvS4mZP7kdUrzEoqM4h+BuyLPwDv0sgX6Tkepxfa/2MZ5TVFlAVMoaWw3zOQU3JZ1dTK4Y1M7AI+CnXmtd+dR25a3tGjyrLYW9cQ7dy35fg8lQI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264327; c=relaxed/simple; bh=/6p73t1vQBs60bTu8b+1GCgEu36ZH+1LONSsLqShnFQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mqV0h37zWkvuwr+AXuDjpw3fu1IzN4wwv+GaEuIUL23toS67E7hzn75xeccDu1FFZym197soG2h1S9V0C4DcnW04c800fDsUhUXJWEEWuR/a5VG8G8I/zQQcAYbW89FUnDyvNMDJM3w/wpzzER+lKcTk5/MJJOGhPCG4pOso/fg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=MMO1aXNq; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="MMO1aXNq" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-343d7ff2350so3051351f8f.0 for ; Tue, 16 Apr 2024 03:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264324; x=1713869124; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=P0169n4vHsrlup9ubNFunAJmhMk888VjX3f7O4lXGgA=; b=MMO1aXNqlEDvIjLeGtewsFhLXn9NtgvtuLHRoVNKrIatofoTd1+cHmUXIOXq+vCpnB RTF74sYP/Bol0HIu6+EFR0GV0qvDMGKsu/6gZl3OuaXpEkolf5VVk5xT4yMJjPtIpFly Yx9M+HPA/qY3SJmqXzGKO5Uy8X0n/OM89qG55YZeY/qdohDeCK0zZVb8A4zc15JXm9lQ XMpfPzb0d7qeBy31ZS4jt0dlqBWFm9xUOdWM47hrGZso++rEmHg2dwEXAJnjMPL47uFC 7Y9SJgTh0o0B+4iW2DNKMEAj7x2wqLeoMQD/qfwaN4ODWcE3TimQ3/FMppCKIAzESVhy ZHhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264324; x=1713869124; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P0169n4vHsrlup9ubNFunAJmhMk888VjX3f7O4lXGgA=; b=QNY/CXM2cYVmGwB3kxbOo/Uh2w7nyZwXh7b5LxDfp7ppn3OE3eU2M4Kj8i/GI92u5Q Dji3iyeUQIa4iO17woCUAoLTtptOh2TfuhoTuXnW+SYRM6il9mq2Wucq3i/HznzijGOZ WrEOgpQCpmTX+eESnpJfpAoL1WyGhuUXA6YDLaZl/TC4UIB1yrMb86maWXE1qFB+xYEe F8o+VAF9vx/DtO3PI/EbGagZEG3vHnV0fHXrm7LGxw95pBhxL6/8ll6Xv4XGbqIbaGhg lAhQJqCjiQSiCQWnzyZvxh4GO+oRmOHqKy3Vj8Gl/xriMnPjbkiHbJj7ZSPFfpC6Dl8d Udhg== X-Forwarded-Encrypted: i=1; AJvYcCX00LUMGALuK8UIcljCYXUhPVbhAU5qSH0WCrSjGXErguEizjc9lKoXvqlr3Sr9UqqJeo9i5EUczdz6+PuoBrBpvcywudNOtyZBE788 X-Gm-Message-State: AOJu0YxFu6xNuLlx5739HQfCsrS4NBORywj6e9rye/89HWk5GapHFN8g FbluLzLk3mv82m8RoVupI8ktyEuzHVB1vVflSeVD/Kf/GljTRbyxkzVnK4pxwK4= X-Google-Smtp-Source: AGHT+IGuOwdGbie/pxpSPz94XUUg9zfb//N0KACafx0VLdOJav+40VrZnhnexV6h1XjRB6n5HJzmOQ== X-Received: by 2002:a5d:558a:0:b0:348:1fde:180d with SMTP id i10-20020a5d558a000000b003481fde180dmr1439589wrv.15.1713264324163; Tue, 16 Apr 2024 03:45:24 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:22 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:19 +0100 Subject: [PATCH 2/7] kdb: Use format-strings rather than '\0' injection in kdb_read() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-2-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org, stable@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2732; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=/6p73t1vQBs60bTu8b+1GCgEu36ZH+1LONSsLqShnFQ=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlZrYDalepy0FpLWeF0EGeYOYWieNEdAFaX2U vqR3b0WOtOJAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WawAKCRB84yVdOfeI oUdND/0XUCjVwdM1VAk8s8wd/ywUnsHM53bbyB1U303aMdO3jiiQozqSV5yJ8dYsdA1ivsDvraC 0ZGT4+QG15h+MvIfHSrRcQRd0dqi5rFnYZd2Rs0V0gSqZznS4Geqmg290iJRqqVfN906SZvgPyB 7fDi3kg0RSgLM4/+GL6xgWn8GWaEiInEqljjhsZYsGQ3FnaTvyusQGdZPIyh5ZlU/zJ5iJOXIZ2 G0Ckc1zvyy/+VIjuEYRNLSEDQJwqgfR3rI+7O3Veyos/5kQmJxz8ozXtgQ8nUWN0xIjYyFKbISM SctlwDlp0nYyqgVQP9ZO9kC1Vg4AOmYRUdmVye4OEIrjj2gE7bB06y5tWCPe1gj/ioMlE7n6KOU 2mtmVb4KWEjeP4bij98eIoONCzDc3VLpsBC9E29SU+r+hjRdT6A44vSyfG2o5LG5LNn/tEjw/W1 zdjw20kp5v5bbL/HYehx5ef+GTldZlp7FcZ0ySasBrUYHDxDBCJgae3y+YD/RO67DVEMbE1s664 7dE5ToQQOyNlitD6E4/la2UA8BNzWLu5O9v7dpFBhYTQtMbLWPgteLNORNUEyKetqSnncI8jPiB 2cAvuOyyUMSJ7p/gBjHUivzNJPud8/IVX+Pm0eluGhHa29mNrF/ygc2bX6FlRqffn5o9TlgsiKf 462jIxIKGp5gONQ== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE Currently when kdb_read() needs to reposition the cursor it uses copy and paste code that works by injecting an '\0' at the cursor position before delivering a carriage-return and reprinting the line (which stops at the '\0'). Tidy up the code by hoisting the copy and paste code into an appropriately named function. Additionally let's replace the '\0' injection with a proper field width parameter so that the string will be abridged during formatting instead. Cc: stable@vger.kernel.org # Not a bug fix but it is needed for later bug f= ixes Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 06dfbccb10336..a42607e4d1aba 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -184,6 +184,13 @@ char kdb_getchar(void) unreachable(); } =20 +static void kdb_position_cursor(char *prompt, char *buffer, char *cp) +{ + kdb_printf("\r%s", kdb_prompt_str); + if (cp > buffer) + kdb_printf("%.*s", (int)(cp - buffer), buffer); +} + /* * kdb_read * @@ -249,12 +256,8 @@ static char *kdb_read(char *buffer, size_t bufsize) } *(--lastchar) =3D '\0'; --cp; - kdb_printf("\b%s \r", cp); - tmp =3D *cp; - *cp =3D '\0'; - kdb_printf(kdb_prompt_str); - kdb_printf("%s", buffer); - *cp =3D tmp; + kdb_printf("\b%s ", cp); + kdb_position_cursor(kdb_prompt_str, buffer, cp); } break; case 10: /* linefeed */ @@ -272,19 +275,14 @@ static char *kdb_read(char *buffer, size_t bufsize) memcpy(tmpbuffer, cp+1, lastchar - cp - 1); memcpy(cp, tmpbuffer, lastchar - cp - 1); *(--lastchar) =3D '\0'; - kdb_printf("%s \r", cp); - tmp =3D *cp; - *cp =3D '\0'; - kdb_printf(kdb_prompt_str); - kdb_printf("%s", buffer); - *cp =3D tmp; + kdb_printf("%s ", cp); + kdb_position_cursor(kdb_prompt_str, buffer, cp); } break; case 1: /* Home */ if (cp > buffer) { - kdb_printf("\r"); - kdb_printf(kdb_prompt_str); cp =3D buffer; + kdb_position_cursor(kdb_prompt_str, buffer, cp); } break; case 5: /* End */ @@ -390,13 +388,9 @@ static char *kdb_read(char *buffer, size_t bufsize) memcpy(cp+1, tmpbuffer, lastchar - cp); *++lastchar =3D '\0'; *cp =3D key; - kdb_printf("%s\r", cp); + kdb_printf("%s", cp); ++cp; - tmp =3D *cp; - *cp =3D '\0'; - kdb_printf(kdb_prompt_str); - kdb_printf("%s", buffer); - *cp =3D tmp; + kdb_position_cursor(kdb_prompt_str, buffer, cp); } else { *++lastchar =3D '\0'; *cp++ =3D key; --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4692D128809 for ; Tue, 16 Apr 2024 10:45:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264328; cv=none; b=RGeUi7Z0Z7oWNepGwJ5RFwZAKRdDc6uBGeBk+Ru/083ARQyWSn4eKOhXja8hYTFhquAhUQHdF0YXyzeQ9YFUAuMwScW8pEdq/9z59oB1EmokY8AMehds9v1I09Lr+x36sGJPKXYvUcnJKEBhv0rLDVxIKzMdnzKRCZiejZIIMNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264328; c=relaxed/simple; bh=jn1ryZV2lseU9K0OYgA4GJIVFoBB6E4nLhtvlmWlSd4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CnYAE/mCWGl+PbPJyQKikHH9fZqRWhTNVZUFRASMcrWnP4IFR+bAVw1I8Mq2XzIHWcFf9ONez3+YbJ4mtQbLGX5onedUn9ApcZHgclkT8GFmx/vx7OV8FdbGZDwPlEghCV3tyeOX3ex5qAwLvXAOa7DGup6ffCZtYJGTWycW098= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=eg+aTfS7; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="eg+aTfS7" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-345b857d7adso3091303f8f.1 for ; Tue, 16 Apr 2024 03:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264326; x=1713869126; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Qw8fuXLn1BipxTXGJjzIm9TXoIt9ndz+hzAX+iGey14=; b=eg+aTfS7nKZOR6jhieDT1+DVfxHyiFZjefsYxPPa0gUU9Kb3498wu/3uNhQyA1CDxw RNgz7c9LdjiodNqYoV1F5brRqFhvFGeSoPGydv/2xyT9RZoM7BTOpeO0ktvbK6ZsXt1E x2KPn6fVx5UzvKDIiqJW+tdZyLxN78t0xHQNSWTDWpjIZp4wW+470V0oE0Rlfm44Df0K 0PnTmsNblemzUGpMOTFft/zIEblzIFICwDUOFfr+wZXWVrW7DJeZFCNZNNO36FNLfokk CVtZmPHVUDjRQs4JjXheyJcGyUUYebgxDVQhm9Rfgx0W2ThpEuq2n3QGYiTM2XIll9+r nJCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264326; x=1713869126; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Qw8fuXLn1BipxTXGJjzIm9TXoIt9ndz+hzAX+iGey14=; b=bF2b8hd2jbX+oL7+F5QDVop1hrnEK+5f9+LZb7NHmIGILwnMpLGVEMD7/eFQdMO8iK fYF30MqfPqSvVP61pM3Hnneehe3B7GarlBQQqJ20DAaJQ3rcNSwrlywfcKs4yll6vKLX nOBGEtuobEYAPDGY5h8LCnw4emU05vtvwo9vNsVtMDFBIRjizzXIXA4nANMDYwjCDGy5 4W0V7CoI4vqL0+xqS//2A4S+vf3D3vJLiyTb8yJnuzbwEYCgvmwXjYMJpRka+ddyJ5kN NUsEg6ffdq2C74ft+hFWgkldHiVoIHSMQNEDKc4yy9YI3L9DGxa0GUdbze/bK7L7Ss3J MV8A== X-Forwarded-Encrypted: i=1; AJvYcCXJ1/xgN/c0gUaR7q4krHSAnd2xSGePSAATrbg1fTHyxdzw3HQKAu/oQWQjQ5uW+WYl1KpUuzC3DxXvlM2W/26x9LaDTNlkQ8S23YKG X-Gm-Message-State: AOJu0YxUojfbYFLlDkB0fr00m3ORz0kh7UpnRh03vvnfVmpGwrOz/Tk2 iD+F0CTzimSoOxOntww4FuZhQ7PUHBiaujX/cy03RCXEXK00P1SYaZoPmeJ9z7IwbYJTA6sit2i 40+4= X-Google-Smtp-Source: AGHT+IEkKrGI1w3FZWu0NvjNbI56P0aC7fTieG2Y5zpD0wRzVFCxdwIhDQBiZNI+lF1oAhflsZo0ww== X-Received: by 2002:adf:f2c4:0:b0:347:f94b:94df with SMTP id d4-20020adff2c4000000b00347f94b94dfmr3255688wrp.2.1713264325736; Tue, 16 Apr 2024 03:45:25 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:24 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:20 +0100 Subject: [PATCH 3/7] kdb: Fix console handling when editing and tab-completing commands Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-3-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org, stable@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1753; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=jn1ryZV2lseU9K0OYgA4GJIVFoBB6E4nLhtvlmWlSd4=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlZ5c/sK6PaiUl1WqzpDtZN3BjukmuYcg+TaJ oiDr1GCb5eJAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WeQAKCRB84yVdOfeI ofLXD/4xVew6HZYrS28jTX94YhhCHkyLF7uKVGu51j294zh/mIX+9HFyPjgAu7r3BMfPNqUdB3g 4L9SlWdDtGyZYatWEqIgsmy/ngHQiyeAu2CiMD6UEzwLy/z2/Lsyo8JpognhjaTlnaHOTlflrLa PRlOhMg6hTTAIkovLaomVCODDTKPMNiQfKWJhsjnl/D+Cfg3tBrxioPuh9xBoBjTmgjbgOUYRnB 0Dy0neA0kX8KLfsf2NvQIh0HEn+QEl/0GIO/O+YeeQVyD4P2UdapOF1OB+k/E22gq7ySBnUAz// sr1Yb4mOz761ymuPwvB3o8we9r8Mq1lr7OQCWi/F48pqlmARRX30EIjLNiIieP348OMWNYlpifM TgpHy78luYFBHup8CC8JN1wx37FV4pgMEdU2woUw/skDslMjzjpqEmlVgq0LD5N5BvpOkj5C9uN +NyKzsY+bN1x0g2NxtRZeMceSgnkdIB3s5AsFqNE2xsuOL7T6jia3YMfaN2RI4DN4yVUsMI3W2y hSKFRaCshA5yxURhziSS7ECutPW76a5Ib3QVYi7NWtHRv/YoRtQH9jAhr7Cpnwuz+nuFhXzzd6l v060LY7GCrjrLNtGl8OJX7u/8FC6+z7o8XdirHHuOA6LLGQVGCe8WkwJPkmS+rNRYrAgJd2fPMH LErhTOsrlxZ8z0A== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE Currently, if the cursor position is not at the end of the command buffer and the user uses the Tab-complete functions, then the console does not leave the cursor in the correct position. For example consider the following buffer with the cursor positioned at the ^: md kdb_pro 10 ^ Pressing tab should result in: md kdb_prompt_str 10 ^ However this does not happen. Instead the cursor is placed at the end (after then 10) and further cursor movement redraws incorrectly. The same problem exists when we double-Tab but in a different part of the code. Fix this by sending a carriage return and then redisplaying the text to the left of the cursor. Cc: stable@vger.kernel.org Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index a42607e4d1aba..69549fe42e87b 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -364,6 +364,8 @@ static char *kdb_read(char *buffer, size_t bufsize) kdb_printf("\n"); kdb_printf(kdb_prompt_str); kdb_printf("%s", buffer); + if (cp !=3D lastchar) + kdb_position_cursor(kdb_prompt_str, buffer, cp); } else if (tab !=3D 2 && count > 0) { /* How many new characters do we want from tmpbuffer? */ len_tmp =3D strlen(p_tmp) - len; @@ -377,6 +379,9 @@ static char *kdb_read(char *buffer, size_t bufsize) kdb_printf("%s", cp); cp +=3D len_tmp; lastchar +=3D len_tmp; + if (cp !=3D lastchar) + kdb_position_cursor(kdb_prompt_str, + buffer, cp); } } kdb_nextline =3D 1; /* reset output line number */ --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0731129A71 for ; Tue, 16 Apr 2024 10:45:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264331; cv=none; b=a3ckneAl1QOeAVP1lHeTLN08pwIrFrfge+oiuIELhR06p253NU30YHlYWkmokM/CUrXqzmw6I2hAuELlrEqEddPNLxdOQCMr1e5hnP8dDgJpdiskDHFRzqskiGfDULjEZyRJpjwelJGI0c18PxhjEY2p/nQocdcpHt7P/VeN1sU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264331; c=relaxed/simple; bh=S4M9Ru+1w6mbv19P1LIu/epAWq5YDJmDyvRXYCK9Uq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TbYr4DOOCMkyZJTFmTcvpS5aWt0V+7H20s6zeVRrN1I05Ueyfe2GNpw83d50/uO0JqOK//61FupOGK89u++xQ0CxsKbZ8DVhE2dbJ2HJvv8UDnv/xIUGSyba8EtIUcLhgfi/DnyeWX4IS5Fcy/ZJF+l1QX3Y0szzcLdlUG/D8bU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=kYq3Y4u7; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="kYq3Y4u7" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-343e096965bso2806183f8f.3 for ; Tue, 16 Apr 2024 03:45:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264328; x=1713869128; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=x3zSnbElzKQHrnLI0Y5ncXpIrKp1Mj5wQa45HhWSlw8=; b=kYq3Y4u7d2i/zxZdCZoEF/Gl2tpBtMRo+iNI96JjuT2GdTMaHymZ+td4IjOp2ZDDs0 aziEI7rq1xSbNGKK+hnhPAbMXJrEyEhtdhhtuLjdpyKLyfvDd1ojC3ZvpP/+gXDSjoaE 5GqInhZIH5bIx6ETNJegd6dM5S3OCGTwjXUw3nH9ra1zvOUIvXQGb9sUncRS7+EOQYM3 eMdLhgRHbxrjChU5qoc+NaqQ9jq/YwllmD6HBzNYafFbINmoJwmFk3UaKnuctCKBHtAO T5fYFqeYRr6boitD+kCnJ2pGbQshfAfr3l1YwMpsPZcSur+nHF4SUkKKOcb67PNPWG6+ CMlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264328; x=1713869128; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x3zSnbElzKQHrnLI0Y5ncXpIrKp1Mj5wQa45HhWSlw8=; b=Eqn+/ql1328F5iGVjF/gNNel7yX6O+0mwHcAy1e4NvBBKYW9cPtMZpNHmyFchVGlkn UECsmsWpKkpRFV70i3raRef2B9kcS5A5Z7sEByzIvwXVtF70+lpoUP020r9arOiiIp8t k6UpNObwjyM2FctpFqp8yo7kEf55d1+j+mWoRJG99Z1GyT2+rizkoYZt46cO8OqeX8fL Pl/wgjXQ8N5tCJHc+WXmaEY0rE4Il43+8SyLkjm69vn0/jdWiaqUuowQrUVmSOPhqrWA X8l2XyBEwO3OQeC5pmvx2tHB7CFsncfkQsEFr1mf+mKGNbobnKDdcyjmQsUjudDVe3XZ gFwg== X-Forwarded-Encrypted: i=1; AJvYcCXzsT72awpG2Bmy4aPrIC5fRe4cYG76LqUO/STH/N5JaFXsDmjD4m+tp0DVpIhgki+rwRuqx5amd/mH/hPPw/hqHNUYsijUAsDnCOZ+ X-Gm-Message-State: AOJu0Yw97ydn/GG4mkomk758x/xO6RpWcMXFN7YNevHq32mXVcqwLodV M/lyzBwrnY22uWdQR3khBg9RPemzWhUG12v5C8IXKZhtV6ybNhFRLzof4XE/4lU= X-Google-Smtp-Source: AGHT+IEz6WRB5qOtlWnobbrrDvCFGZjBjm3K48IZnQKITkZAtG91am1SaEGBYjuYiccpZNzIgVJAGQ== X-Received: by 2002:adf:fa8b:0:b0:346:c912:3e97 with SMTP id h11-20020adffa8b000000b00346c9123e97mr11039481wrr.44.1713264328219; Tue, 16 Apr 2024 03:45:28 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:26 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:21 +0100 Subject: [PATCH 4/7] kdb: Replace double memcpy() with memmove() in kdb_read() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-4-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2359; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=S4M9Ru+1w6mbv19P1LIu/epAWq5YDJmDyvRXYCK9Uq0=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlaIgp772UyxnY8agt2JGoM8TVxz0LSXOcPKI cGsKObOlh6JAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WiAAKCRB84yVdOfeI oXJgD/wJGBNVaYRnmXaLvz4adNakAOABFGn+Hw9X9UCHv1p8XXE+9aFHB23q/dWWRTUhAGVbuZ4 48eZlLE7wdD2jJwF66IAB9QjH3wzLceNb/uhrYLDa+lYQFpYsYH0TzC23HYvnixnP4Qjo5ICgCd k+PnfUlyb//WTxydsON5gVknc+AFcAMIHaa11Mf9bW5LU+UcxXm6VLb+NEys0wARasqCWj+qlyO rt4Uvi1lhMrIkdCo9itLfc3p/tiHwaTpnVFFTZ7HYKW6syWQ4iVYya/KjavJ8KdqCa/VdgRCbmY QjF9GR8vDmwZroXglAuTp1iF9jgTRsLiuEaYncipHZbsbdp7tlIIkGlBg/x7zBMf4jACGqd7Zva 8iOnR3DY3KRRpTvhm+k2Srd7d6W3gmMSD1THv7NyJ5FSznvjvXxFJyqQ9juTDEQ/1o2ODw8HzvB VGi/56glgFiBYzMacbK73ksF2N38FYT7pNOT6vDZyt5YSlOyQZEAa+ChIVon4t6LNdUjy5QLOeG vx4etwiKu7nTnTSrdstKo2b47Y+hL9BEtH3GtSknjgX3V4qCmp40uoWVTEfezO4UxU23WQVW9ug 84nYz9mn3j90MoquPAl66cQ7tQ9mMFhpFp0DMvEF7NPgE6tq2+HcD8kWTYiTbE0HKrtRkiFfHPs fOGr5ZwF06vsO+Q== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE At several points in kdb_read() there are variants of the following code pattern (with offsets slightly altered): memcpy(tmpbuffer, cp, lastchar - cp); memcpy(cp-1, tmpbuffer, lastchar - cp); *(--lastchar) =3D '\0'; There is no need to use tmpbuffer here, since we can use memmove() instead so refactor in the obvious way. Additionally the strings that are being copied are already properly terminated so let's also change the code so that the library calls also move the terminator. Changing how the terminators are managed has no functional effect for now but might allow us to retire lastchar at a later point. lastchar, although stored as a pointer, is functionally equivalent to caching strlen(buffer). Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 69549fe42e87b..df7b5eb52d74f 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -250,12 +250,9 @@ static char *kdb_read(char *buffer, size_t bufsize) switch (key) { case 8: /* backspace */ if (cp > buffer) { - if (cp < lastchar) { - memcpy(tmpbuffer, cp, lastchar - cp); - memcpy(cp-1, tmpbuffer, lastchar - cp); - } - *(--lastchar) =3D '\0'; - --cp; + memmove(cp-1, cp, lastchar - cp + 1); + lastchar--; + cp--; kdb_printf("\b%s ", cp); kdb_position_cursor(kdb_prompt_str, buffer, cp); } @@ -272,9 +269,8 @@ static char *kdb_read(char *buffer, size_t bufsize) return buffer; case 4: /* Del */ if (cp < lastchar) { - memcpy(tmpbuffer, cp+1, lastchar - cp - 1); - memcpy(cp, tmpbuffer, lastchar - cp - 1); - *(--lastchar) =3D '\0'; + memmove(cp, cp+1, lastchar - cp); + lastchar--; kdb_printf("%s ", cp); kdb_position_cursor(kdb_prompt_str, buffer, cp); } @@ -389,9 +385,8 @@ static char *kdb_read(char *buffer, size_t bufsize) default: if (key >=3D 32 && lastchar < bufend) { if (cp < lastchar) { - memcpy(tmpbuffer, cp, lastchar - cp); - memcpy(cp+1, tmpbuffer, lastchar - cp); - *++lastchar =3D '\0'; + memmove(cp+1, cp, lastchar - cp + 1); + lastchar++; *cp =3D key; kdb_printf("%s", cp); ++cp; --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDF66129E6A for ; Tue, 16 Apr 2024 10:45:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264332; cv=none; b=F9nBNAY5iwmnwOFwoetjaxuKn3EK/3nrIQF3guCHMALK/JYRE2GRymOJYpQIYGUEOpYleHY0EJvqZkMKMF5pCTtKZ+hhK0YFXZCDPPU9OcHPu0bmVSYsupOQYI6Lc1jdDJ3AgJQvHmTjknBs6GcpA0A/lMLBLQlBPfIzKfefG3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264332; c=relaxed/simple; bh=4idmgQRyyCbZHKD0Mmm9fLBykSjWqWqEhno1YDmNYTY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tSn5dUnf1QmKUao+ShTH/PmuXEtsv2RveJAGeUCA308Y6Goj9+l5DpZOW8ozlP+qwe6/FpEl5wU4PI492xSd9HCKb8bavlB/5Rq1MRr5oSOQVR0C+pn3UZ65RKNGy22JxuPjqj5PJzdXF2BhZi/kH8SrOZS3UFW3S39I4p+FgCk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=QHCsMsV9; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="QHCsMsV9" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-343f62d8124so3483702f8f.2 for ; Tue, 16 Apr 2024 03:45:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264329; x=1713869129; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oS0wWNbf8WiBpvrYnZvz7jP/0PigZGSr5b4L4txYIPU=; b=QHCsMsV90Nl0JPXTHTG45SrbbMsFM9o0vPVvyO8jG3A7lDVWQ0ZQGHmMKqTNd1dtkY neeCrS8jeVtBjR8MEnUvxe2hq2JV5c0g/m+M3VbDQsLFhUehaCVi76AbkdPiq4WOyrrP gMLTG+FR82F6Qsfz8ffw05a+kXoCy1Ad0Qg7yY+PqylMO14pSdkrzAW2Xuby7K1mznG/ IiuuwUxoL3mJMK5NwMbkTCi4v7eMMPjKO+PM5yyt7SXyQi+QsR3T10tAsO2fHT6MWO+z QjXZ6nb+QG06Xn2AvMo+icvhtRci27mOUMY+gPSKB9Vq+kXVMu0h0mguIXka8wGET6No VUaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264329; x=1713869129; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oS0wWNbf8WiBpvrYnZvz7jP/0PigZGSr5b4L4txYIPU=; b=IfAB1lrM9QeVosGi0EIHTfg3cuMrQDZKZVUR3nAWnO+DTwKiMSVLKPUHS3EXjUcnhI EYtzuwWJGeANPRQc/3LLtfZkbg8Thz9GVIPbasuMOMJjPP0oaBQD+kAaYGuFUYt7dzH/ eyZbu7L1TzdeuYD6kr6imG9SNua/gMxUPVieREipBs3tXMSLDVbu9kXTUVOUScr5PfOb HqxhrdCM2jWG8AE41HM1sjdm08qxYW3Z3IRh/LaPxS4fUayaayyPV2FJWiokd00iItio 3ZAq+UgJKg1kYUBuiQFUoPJs97StKFIjDdazRYimJ1Ccgej0OB0pTqyXssEpArBE7Pd+ kCRQ== X-Forwarded-Encrypted: i=1; AJvYcCUi5L0zejU8joroaTQA2f9a13b6cqMskSz7UqOA9K73VhdlMCSmipq1QmIc8AtAoRF2NCsrvQpfyHj3hYEfxNgrcBkpN+bbAMfYKUb/ X-Gm-Message-State: AOJu0YwoKAYHC9QJkFRfidUXJaiSfp7QgOjeBJ4J4mq5cFC3yxTMAMsW L/q3CFw0xpdGB5La0OJKYWn7rh/JujDm6ejerN6/leaJJutehIqI+kaGlG0TLb8= X-Google-Smtp-Source: AGHT+IGqn+jcRQRpVFydNv1MCf62MNjuNj8pVlNatJ76HLkHJFok8Y910GSeuntpkpLe2kK4s4cXpg== X-Received: by 2002:a5d:698e:0:b0:349:8ba8:e26d with SMTP id g14-20020a5d698e000000b003498ba8e26dmr522518wru.13.1713264329427; Tue, 16 Apr 2024 03:45:29 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:28 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:22 +0100 Subject: [PATCH 5/7] kdb: Merge identical case statements in kdb_read() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-5-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1188; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=4idmgQRyyCbZHKD0Mmm9fLBykSjWqWqEhno1YDmNYTY=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlaWddLOeypVnkvDnI41vqqFzzDHlgZEm7ZQ+ k/lch9GSvuJAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WlgAKCRB84yVdOfeI oddlD/9Qq2vjLJ9Ne/HilYWm9854QfB2Ft2pTDtk+nSeYNOmndUo4mxsrx07ACsaTHELqkpyzru mYQ8nF91ATm/JqApBrmKWQS/kyEAQH9GSy6BNyB1ClmWeblW5RiJnLyXvgh0KqlzmV8rRAmxqkS NutuxoFzNHELJbNm39+g3UUuUAS6Ozo/HRa4tYJCtiCJJ1Vzy658NPBJFjhZCq++We4V9Ooiqjc sAin15aBhnVrJu07qq5iKx71cmzUfb0SCTbqezv4BxmV9izjoDcCS3yhRuI0+Ojk4g982+oLbYL O94AMF/nNAZougTU9hdYHNflwpKKKMfbjex5NvdIIoQPC858zpPmt6KMAmlPFRKrPJoS5dwbwLL tdWclePn/dsfGz6Db5d06C4I34YIO6m5egQ5CjEARv0OptV8tPLpxvMjL9moE/rXT3nNmI3Wi2Y zfDHGkI3eYL6BEJcP0kO5smagn8RjfAmVkFgjgy93JjJL/e6H8CGJfRG4gk0t6FJOiA5IeaKYa8 y8f9zcfOgtLcgvZNFK3/t+rAtXo+RVx6L/ebJA9gf0p1coBYuqOMGDbejiexeZhQwRuamgM7n3W pg9tyTUxInl4AZFw5jDv8jdis1TFbnq0keD5BjWlALndIRTKGdldk2vEo0H1H9TRcuErS77l2b8 9RyOU3TUD1JxjuA== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE The code that handles case 14 (down) and case 16 (up) has been copy and pasted despite being byte-for-byte identical. Combine them. Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index df7b5eb52d74f..08a86a329eb64 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -294,6 +294,7 @@ static char *kdb_read(char *buffer, size_t bufsize) } break; case 14: /* Down */ + case 16: /* Up */ memset(tmpbuffer, ' ', strlen(kdb_prompt_str) + (lastchar-buffer)); *(tmpbuffer+strlen(kdb_prompt_str) + @@ -308,15 +309,6 @@ static char *kdb_read(char *buffer, size_t bufsize) ++cp; } break; - case 16: /* Up */ - memset(tmpbuffer, ' ', - strlen(kdb_prompt_str) + (lastchar-buffer)); - *(tmpbuffer+strlen(kdb_prompt_str) + - (lastchar-buffer)) =3D '\0'; - kdb_printf("\r%s\r", tmpbuffer); - *lastchar =3D (char)key; - *(lastchar+1) =3D '\0'; - return lastchar; case 9: /* Tab */ if (tab < 2) ++tab; --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BB5712A159 for ; Tue, 16 Apr 2024 10:45:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264334; cv=none; b=KCihS0rTs3uc1CyGL84FBt0Rr7cJejlcCCRT68nizIQ+xjD12WZAYM3JHl4Qm+7ObSLKxRxPDiOCQrnwq/7RZ6nX3YE3h8IIoi0M9KRkqQVygzdgOCVSQHML66lLtlBfgYGSRwCzHZnLgrIS7E6OVd2DYNm0IZepzo0G/TgzhVY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264334; c=relaxed/simple; bh=No+HsEC4lvrte5CQLSZAJe5KYulPb9Qk3KwsfZcxvK4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OB7l3CwbHDJ9actYhdKSeF49ZfR2u6wvhUSIzdYNqYs7otuCMfzP+LdmgFsE2V3yTXKMAslScBKyHAXHKuEwGxp0NUemEKcC4UV5ZXJV3br3gVItkq/4upGqTw8GpHw2ECHK9y8NP/OEMpHrnitG5aD8J/7v7uk9njR/hRdzD8A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ub9uX3dZ; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ub9uX3dZ" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3497f4336d7so205950f8f.1 for ; Tue, 16 Apr 2024 03:45:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264331; x=1713869131; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QDnp4eLfPkrNB753JlPHc4+1zTlQQgu6klcUboN71ak=; b=ub9uX3dZQ+8Mjg639nX2gRruPf+qfjRUVZsT/bCZurXjzd1fujiSIwYPBhTPSjGLjD aONh2pnjSYrZ8i5WuRS32lDf4xHsd2+70F/3WvybJCVzTB17vKQezQu0cLECnrsGCsHI wh4zOdIMcMvDBwXugjXafIe6Gr/Yza6u2CNIZC2/Gib5BLh7xnVYMtInYFZ3T6Kzbfdm SnMLZ+fcv3E+Vs/tzJ18M4JA/gqqHWIaspFYopJoTdJ1PqgZIxixuE3yaHETYZjTmb6g ioZ5ueWRg9pjNnEU//JjDuH/MDx7ndLXva7o0TxxTXTnQRDFf1sr7x8EQCQTYAuYrL1P AT9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264331; x=1713869131; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QDnp4eLfPkrNB753JlPHc4+1zTlQQgu6klcUboN71ak=; b=n7W0VmdUZFqN1GYqOJ1Ma/rW9E0iPIzliV7Cg2SkSmezTwgFMNJH7fRvPN9js/B5EE hqyzxwx8bjDBy2wq6DjcqjKnjROP7R3LRgjLH0lEpKgxYdxn1xvbd4SMffAqIZIj+FSq gDY6W/w/BKleYiASkQkhVeprEqm7cDMT/GxAHlBpSVDpGO5UmyFkHGZ88gEz4tb1fnEi 83clECNA0Onvgu7loMZm9ptrjPterTdd5z0NP31f/Z2/Yx9ty+FhB6tT1XZ37xg7zefU bTeHnBeTDi1nUCcwFOkGaJsBMNz2ati+UaelPJkRTtezWZBFYDywJIrBF9L6xZMsW9rS LjQQ== X-Forwarded-Encrypted: i=1; AJvYcCVynJC6YuBqPeKgAL4kGKkq92BJzU59xiC/OlHdmMyVRLH/pmjqnD3i6MzLaRODmCU2sRcn0ZdkAbCxN1x+ml/l8t8zNn0/+LI7DsLO X-Gm-Message-State: AOJu0Yx3JRFFieO3oNOPULGQ+7VYMSQIRCIOd+V3mp+1Jew7ML3w9eNv 8bNZO8LALQSlKLyU92sDe35mPkzLo2PJgS4bFmarokt5YrP9si3dfFUT5kTMBg4= X-Google-Smtp-Source: AGHT+IH4V0nJ0IbIq7+Gy8ZKpjgJlFIuArenwe3np61zZYLEgAJqgIqvpK3dmZ31ad7F49jjBFBo7A== X-Received: by 2002:a5d:4c88:0:b0:341:b5ca:9e9c with SMTP id z8-20020a5d4c88000000b00341b5ca9e9cmr1166182wrs.25.1713264330911; Tue, 16 Apr 2024 03:45:30 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:29 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:23 +0100 Subject: [PATCH 6/7] kdb: Use format-specifiers rather than memset() for padding in kdb_read() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-6-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1252; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=No+HsEC4lvrte5CQLSZAJe5KYulPb9Qk3KwsfZcxvK4=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlak3MpSVd7zzCBYLcWcUnSJ8K/53hRJu8yhr GMrGpv8lp2JAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WpAAKCRB84yVdOfeI odblD/0TgD4iWnIA0n+xb+oa/t0dw6hBfpt99NOIsG3UDXseZ1OVUO+/YvMrOyml99r6JWRotji p11AIGLxH5UYWkPVQFhAqd49dxe2jFYd2i+kHBHa0KQ+w1bjP3lZgmckLhfJthEot79zQoC2tUn hR6FboiH7BUSCUfBwgPAK8fMb9Gu9K9Ok0zTUXEyoyS9hDOwMxLvwIPmZ4Tv0rgSgwqS22+jx90 BiKK7OxhBNHlIVj7ZF+9fwMWlsDVsI882NNPD2jeDWrXrrBcnCaGSc90dgvzcPBibDIVqniHA86 RC0AnpntSr0tzmo33pkhKvpj/mBArS4oXehvM2p6NUV/ucMJq9+cf5dBfmrCz+7tS6w4Tr17Kaf ejVsIENVZTQ7J/OugTHhw39W72wWnRHBZpNoxXDTsBQ74SOrsh6NbVxBcygktDmpuQr3XZNueYC oCIfSDmw1+IMWnuo5u/juNfVl6NnRKo1r6kvcXHhbQw/27qbFKQNYYc+/frasxs58r/KwazG/sU Ok3F2rXM6gzvItBB8WK+9a6mkl/6a1voV5a5Ql8cvYyA59AIUGYTF4qeyI9bNLI1z/0X3SveK7f ihciB57kdTcSE9pK6VGsjSUZPYYUYGWmvRUg+i94wEC8UDgXiL99EeFw6Qf/cErO0iyas6hKAlY R8sE4B9A600rhEA== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE Currently when the current line should be removed from the display kdb_read() uses memset() to fill a temporary buffer with spaces. This can be trivially implemented using a format string. Make it so! Note that this also simplifies the code by making the tab-completion code the only code that uses tmpbuffer (and therefore makes reviewing to ensure tmpbuffer can never overflow much easier). Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 08a86a329eb64..94a638a9d52fa 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -295,11 +295,9 @@ static char *kdb_read(char *buffer, size_t bufsize) break; case 14: /* Down */ case 16: /* Up */ - memset(tmpbuffer, ' ', - strlen(kdb_prompt_str) + (lastchar-buffer)); - *(tmpbuffer+strlen(kdb_prompt_str) + - (lastchar-buffer)) =3D '\0'; - kdb_printf("\r%s\r", tmpbuffer); + kdb_printf("\r%*c\r", + (int)(strlen(kdb_prompt_str) + (lastchar - buffer)), + ' '); *lastchar =3D (char)key; *(lastchar+1) =3D '\0'; return lastchar; --=20 2.43.0 From nobody Fri Feb 13 11:13:49 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1220112AAC4 for ; Tue, 16 Apr 2024 10:45:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264335; cv=none; b=jwq7r4C8tV0G3ljaTkKoQaQSeSwd98y7YuILGDeHKjI4meLESFWkWWfr6y+GVI9RIY5aLVWj/s91ed7uPyVwIYUSX0TC6k1476UqDuYNXi4qStg1RzqVIN+Btzs/uGjx+13ZKMw1aLOaQjPg9oUo4Z+5dxGly7qOiynz106Hcmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713264335; c=relaxed/simple; bh=d2qYpbUEJ3bo57WTysC1k9+78U0fLX5bGNTDzJBq7DU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AVCIlUle8c6ZguUQVspAZb0V7yDaIW9gpQNOWLZ1yhIZ/m7xQA/nFS2phjTN9o6/vT9sfNK4eJGoH9sd949wbVijB3F3T0GBxHwNawkD+yrRfkEX4jDl2ZIE11wFBjJ1Hc9CrK7wraUnUK45uVKZhmfaXoaxMJVha7do6fMhRTw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Fe6wLfBh; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Fe6wLfBh" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-343f1957ffcso2474300f8f.0 for ; Tue, 16 Apr 2024 03:45:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713264332; x=1713869132; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qax0/HGbPdCX4M7gDaYwDwDlZ1cE1xlWdr0Di9/Hmb0=; b=Fe6wLfBh2yuqAjnFQoeBaITeoH1uyvSpahF3xspclxzdlMTiTvzcs7+qFL/mM8ydUY n+8ZoYY+JoYc9WsFjTTSnyHrnWUUWAEirpeBUYhRyHg7BTzrtAfc1sywp9SOHwA3VP4n GO0CqMccdlVqUfThGj9UnrwCi24xzVqnf1kKpk9XlVoXa5ANGG9HmeO112Uxw65T5iVm 3luweyKBg2GVuwgprU74yXrBqShqnzjwLicVfG1gebeN/aMY8KHTBOaUOQDp7ivlDxXC 4dShLs1rfLR0WGVEtwyNY17qlt9b+ID66gMv5sjyAVzGPsvRdSUmNGiTVUwnhb6etK/L zbvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713264332; x=1713869132; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qax0/HGbPdCX4M7gDaYwDwDlZ1cE1xlWdr0Di9/Hmb0=; b=gFoYPf0ZdnndBqVqoNlwfp0eWD3hcV28mfc0sMIbNW95l5pW/yUreAmFnAtBgU65N6 JoSq7dEthiXJDffHB/1feJzi/0yWTG/4nECn2YhYd0ehhM1lSfrxoCoPNQtQOrAbcSeC rNttY7ZQWX3RI6G+XSPIJmNpiylo3z9s43proQZcCEmPHdjclGTniOAQIrhh9Jn8J0bx 4ltVlPjF8W/FvqaGzNbm2qSLTdcCNW+Ls8MASXB0ByfJGPDnS0erKUg6mIvzyLU3NLAk gsk/EIbRur7HqyHLw6n5Sv27BQ4qefX7QbQgoa15rorMtguJzwqpyIMFDsk070mzR81L MFrw== X-Forwarded-Encrypted: i=1; AJvYcCW4AFMEKZWpdqTRu2fdax/cA7ebtRAZBhKG4MYDrz3OCNpW9hec0iBVg6xbjeELBG8jXSQdUiX0Z5oojXr+DTv0IYmHIUMhaVMeyKu1 X-Gm-Message-State: AOJu0YwXpHhgHsFd6Ju5Xw1zJkK9tR5va30xY/ovJG1+qev3ht9xe9jT gRg9UVZClDQQ6GCG/YxAEBmfjQyzxbJC9n3Mi4KGJQmfP6qAcuDX8rxG8d7Ccxr3Xvh11OcT3eI LXIM= X-Google-Smtp-Source: AGHT+IE6Vo/tbKSEfCm2gz79le7FExVDtRtCuxkP1pWrZlx5DmQCQVvhm0MvVCYaPpwW+OmM5iOP3w== X-Received: by 2002:a5d:6791:0:b0:346:aac5:add8 with SMTP id v17-20020a5d6791000000b00346aac5add8mr2282957wru.6.1713264332537; Tue, 16 Apr 2024 03:45:32 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id o9-20020a5d6709000000b00343956e8852sm14470141wru.42.2024.04.16.03.45.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 03:45:31 -0700 (PDT) From: Daniel Thompson Date: Tue, 16 Apr 2024 11:43:24 +0100 Subject: [PATCH 7/7] kdb: Simplify management of tmpbuffer in kdb_read() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20240416-kgdb_read_refactor-v1-7-b18c2d01076d@linaro.org> References: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> In-Reply-To: <20240416-kgdb_read_refactor-v1-0-b18c2d01076d@linaro.org> To: Jason Wessel , Douglas Anderson Cc: kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3364; i=daniel.thompson@linaro.org; h=from:subject:message-id; bh=d2qYpbUEJ3bo57WTysC1k9+78U0fLX5bGNTDzJBq7DU=; b=owEBbQKS/ZANAwAKAXzjJV0594ihAcsmYgBmHlay6q04sxazUzKyygazLoHSnpWmcuHg4udwO xXfJvb8gt2JAjMEAAEKAB0WIQQvNUFTUPeVarpwrPB84yVdOfeIoQUCZh5WsgAKCRB84yVdOfeI oSyTD/9r+1V/UTe9ST/Zl2Db/l6Ln98PrTz7OiluHWNsXyfaYlgHmjNI7O64hSS+7rFMZDn5dnZ TRwrfbtR3nFvp/Xnb+o0oVUe+K83Zh1hSKkOjVFgX8KoRJ0e2kLRogrHokcCsKByowRwWNXqmEc Ac6RHvWWJPimqlww+6L1WrQdauaOoHY9siRHtwma7dkoPkquERl05mbtp+DKjJ7TXoqqyqShwxm 2HeOIV2U3ZSME9btaKm0UGLVTIG7qbsEVtGShbcTKMaxjzkIK87hMwvAIqyaztOIAaWPCCiL5qo nn4EVAkxRRVz8dQwZsZ5HEiVdhFDquBDjw2D3EdspgOsn7VepOLbLbP9i0ROkmJjyLm4k6QEBBH K8XIHU6HL4zCUDMGqwHQIDv5AJzaV7SvM6nBLClF6TxdMSfxax/gLvw+nI5AS+yGYBvlWo3yNSd aYAceh7ZdtZ9tBbsiuZ6p89XTgFIlgP5Iv2ok5Ga4biX6xlg+urxEykyft456ro5TJKiKDfJhgo W0oG0jNON8RIkjPW66QNgbv2xCwt6VOSVmmEQDRMn5hZcmPkyGRvZQPyHksgGESr5Gvp44eFDee T2l92jNwr56mCfxQ9+OBTn2pEWTS70hD8zQoMTfkd2BzjwuMVLBHMRugNLCM6KQD+eb6McwgwtG D0SmOWQvPxMM4ng== X-Developer-Key: i=daniel.thompson@linaro.org; a=openpgp; fpr=E38BE19861669213F6E2661AA8A4E3BC5B7B28BE The current approach to filling tmpbuffer with completion candidates is confusing, with the buffer management being especially hard to reason about. That's because it doesn't copy the completion canidate into tmpbuffer, instead of copies a whole bunch of other nonsense and then runs the completion stearch from the middle of tmpbuffer! Change this to copy nothing but the completion candidate into tmpbuffer. Pretty much everything else in this patch is renaming to reflect the above change: s/p_tmp/tmpbuffer/ s/buf_size/sizeof(tmpbuffer)/ Signed-off-by: Daniel Thompson --- kernel/debug/kdb/kdb_io.c | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 94a638a9d52fa..640208675c9a8 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -227,8 +227,7 @@ static char *kdb_read(char *buffer, size_t bufsize) int count; int i; int diag, dtab_count; - int key, buf_size, ret; - + int key, ret; =20 diag =3D kdbgetintenv("DTABCOUNT", &dtab_count); if (diag) @@ -310,21 +309,16 @@ static char *kdb_read(char *buffer, size_t bufsize) case 9: /* Tab */ if (tab < 2) ++tab; - p_tmp =3D buffer; - while (*p_tmp =3D=3D ' ') - p_tmp++; - if (p_tmp > cp) - break; - memcpy(tmpbuffer, p_tmp, cp-p_tmp); - *(tmpbuffer + (cp-p_tmp)) =3D '\0'; - p_tmp =3D strrchr(tmpbuffer, ' '); - if (p_tmp) - ++p_tmp; - else - p_tmp =3D tmpbuffer; - len =3D strlen(p_tmp); - buf_size =3D sizeof(tmpbuffer) - (p_tmp - tmpbuffer); - count =3D kallsyms_symbol_complete(p_tmp, buf_size); + + tmp =3D *cp; + *cp =3D '\0'; + p_tmp =3D strrchr(buffer, ' '); + p_tmp =3D (p_tmp ? p_tmp + 1 : buffer); + strscpy(tmpbuffer, p_tmp, sizeof(tmpbuffer)); + *cp =3D tmp; + + len =3D strlen(tmpbuffer); + count =3D kallsyms_symbol_complete(tmpbuffer, sizeof(tmpbuffer)); if (tab =3D=3D 2 && count > 0) { kdb_printf("\n%d symbols are found.", count); if (count > dtab_count) { @@ -336,14 +330,14 @@ static char *kdb_read(char *buffer, size_t bufsize) } kdb_printf("\n"); for (i =3D 0; i < count; i++) { - ret =3D kallsyms_symbol_next(p_tmp, i, buf_size); + ret =3D kallsyms_symbol_next(tmpbuffer, i, sizeof(tmpbuffer)); if (WARN_ON(!ret)) break; if (ret !=3D -E2BIG) - kdb_printf("%s ", p_tmp); + kdb_printf("%s ", tmpbuffer); else - kdb_printf("%s... ", p_tmp); - *(p_tmp + len) =3D '\0'; + kdb_printf("%s... ", tmpbuffer); + tmpbuffer[len] =3D '\0'; } if (i >=3D dtab_count) kdb_printf("..."); @@ -354,14 +348,14 @@ static char *kdb_read(char *buffer, size_t bufsize) kdb_position_cursor(kdb_prompt_str, buffer, cp); } else if (tab !=3D 2 && count > 0) { /* How many new characters do we want from tmpbuffer? */ - len_tmp =3D strlen(p_tmp) - len; + len_tmp =3D strlen(tmpbuffer) - len; if (lastchar + len_tmp >=3D bufend) len_tmp =3D bufend - lastchar; =20 if (len_tmp) { /* + 1 ensures the '\0' is memmove'd */ memmove(cp+len_tmp, cp, (lastchar-cp) + 1); - memcpy(cp, p_tmp+len, len_tmp); + memcpy(cp, tmpbuffer+len, len_tmp); kdb_printf("%s", cp); cp +=3D len_tmp; lastchar +=3D len_tmp; --=20 2.43.0