Re: [PATCH 09/13] kdb: Use 'unsigned int' in kdb_md() where appropriate

From: Daniel Thompson
Date: Tue Jun 18 2024 - 11:44:43 EST


On Mon, Jun 17, 2024 at 05:34:43PM -0700, Douglas Anderson wrote:
> Several of the integers in kdb_md() should be marked unsigned. Mark
> them as such. When doing this, we need to add an explicit cast to the
> address masking or it ends up getting truncated down to "int" size.
>
> Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> ---
>
> kernel/debug/kdb/kdb_main.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
> index fcd5292351a7..c064ff093670 100644
> --- a/kernel/debug/kdb/kdb_main.c
> +++ b/kernel/debug/kdb/kdb_main.c
> @@ -1594,8 +1594,8 @@ static void kdb_md_line(const char *fmtstr, unsigned long addr,
> static int kdb_md(int argc, const char **argv)
> {
> static unsigned long last_addr;
> - static int last_radix, last_bytesperword, last_repeat;
> - int radix = 16, mdcount = 8, bytesperword = KDB_WORD_SIZE, repeat = 0;
> + static unsigned int last_radix, last_bytesperword, last_repeat;
> + unsigned int radix = 16, mdcount = 8, bytesperword = KDB_WORD_SIZE, repeat = 0;
> char fmtchar, fmtstr[64];
> unsigned long addr;
> unsigned long word;
> @@ -1722,11 +1722,11 @@ static int kdb_md(int argc, const char **argv)
>
> /* Round address down modulo BYTESPERWORD */
>
> - addr &= ~(bytesperword-1);
> + addr &= ~((unsigned long)bytesperword - 1);

I think the round_down() macro will take care of the cast for you (and
probably render the comment pointless too).

Other than that it looks like a good change.


Daniel.