2021-02-08 09:55:31

by Daniel Thompson

[permalink] [raw]
Subject: Re: [PATCH v3] kdb: Simplify kdb commands registration

On Fri, Jan 29, 2021 at 03:47:07PM +0530, Sumit Garg wrote:
> @@ -1011,25 +1005,17 @@ int kdb_parse(const char *cmdstr)
> ++argv[0];
> }
>
> - for_each_kdbcmd(tp, i) {
> - if (tp->cmd_name) {
> - /*
> - * If this command is allowed to be abbreviated,
> - * check to see if this is it.
> - */
> -
> - if (tp->cmd_minlen
> - && (strlen(argv[0]) <= tp->cmd_minlen)) {
> - if (strncmp(argv[0],
> - tp->cmd_name,
> - tp->cmd_minlen) == 0) {
> - break;
> - }
> - }
> -
> - if (strcmp(argv[0], tp->cmd_name) == 0)
> + list_for_each_entry(tp, &kdb_cmds_head, list_node) {
> + /*
> + * If this command is allowed to be abbreviated,
> + * check to see if this is it.
> + */
> + if (tp->cmd_minlen && (strlen(argv[0]) <= tp->cmd_minlen) &&
> + (strncmp(argv[0], tp->cmd_name, tp->cmd_minlen) == 0))
> break;

Looks like you forgot to unindent this line.

I will fix it up but... checkpatch would have found this.


Daniel.


2021-02-08 10:06:27

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH v3] kdb: Simplify kdb commands registration

On Mon, 8 Feb 2021 at 15:13, Daniel Thompson <[email protected]> wrote:
>
> On Fri, Jan 29, 2021 at 03:47:07PM +0530, Sumit Garg wrote:
> > @@ -1011,25 +1005,17 @@ int kdb_parse(const char *cmdstr)
> > ++argv[0];
> > }
> >
> > - for_each_kdbcmd(tp, i) {
> > - if (tp->cmd_name) {
> > - /*
> > - * If this command is allowed to be abbreviated,
> > - * check to see if this is it.
> > - */
> > -
> > - if (tp->cmd_minlen
> > - && (strlen(argv[0]) <= tp->cmd_minlen)) {
> > - if (strncmp(argv[0],
> > - tp->cmd_name,
> > - tp->cmd_minlen) == 0) {
> > - break;
> > - }
> > - }
> > -
> > - if (strcmp(argv[0], tp->cmd_name) == 0)
> > + list_for_each_entry(tp, &kdb_cmds_head, list_node) {
> > + /*
> > + * If this command is allowed to be abbreviated,
> > + * check to see if this is it.
> > + */
> > + if (tp->cmd_minlen && (strlen(argv[0]) <= tp->cmd_minlen) &&
> > + (strncmp(argv[0], tp->cmd_name, tp->cmd_minlen) == 0))
> > break;
>
> Looks like you forgot to unindent this line.
>
> I will fix it up but... checkpatch would have found this.
>

Ah, I missed to run checkpatch on v3. Thanks for fixing this up.

-Sumit

>
> Daniel.

2021-02-08 13:52:47

by Daniel Thompson

[permalink] [raw]
Subject: Re: [PATCH v3] kdb: Simplify kdb commands registration

On Mon, Feb 08, 2021 at 03:18:19PM +0530, Sumit Garg wrote:
> On Mon, 8 Feb 2021 at 15:13, Daniel Thompson <[email protected]> wrote:
> >
> > On Fri, Jan 29, 2021 at 03:47:07PM +0530, Sumit Garg wrote:
> > > @@ -1011,25 +1005,17 @@ int kdb_parse(const char *cmdstr)
> > > ++argv[0];
> > > }
> > >
> > > - for_each_kdbcmd(tp, i) {
> > > - if (tp->cmd_name) {
> > > - /*
> > > - * If this command is allowed to be abbreviated,
> > > - * check to see if this is it.
> > > - */
> > > -
> > > - if (tp->cmd_minlen
> > > - && (strlen(argv[0]) <= tp->cmd_minlen)) {
> > > - if (strncmp(argv[0],
> > > - tp->cmd_name,
> > > - tp->cmd_minlen) == 0) {
> > > - break;
> > > - }
> > > - }
> > > -
> > > - if (strcmp(argv[0], tp->cmd_name) == 0)
> > > + list_for_each_entry(tp, &kdb_cmds_head, list_node) {
> > > + /*
> > > + * If this command is allowed to be abbreviated,
> > > + * check to see if this is it.
> > > + */
> > > + if (tp->cmd_minlen && (strlen(argv[0]) <= tp->cmd_minlen) &&
> > > + (strncmp(argv[0], tp->cmd_name, tp->cmd_minlen) == 0))
> > > break;
> >
> > Looks like you forgot to unindent this line.
> >
> > I will fix it up but... checkpatch would have found this.
> >
>
> Ah, I missed to run checkpatch on v3. Thanks for fixing this up.

Unfortunately, it's not just checkpatch. This patch also causes a
large number of test suite regressions. In particular it looks like
kgdbwait does not work with this patch applied.

The problem occurs on multiple architectures all with
close-to-defconfig kernels. However to share one specific
failure, x86_64_defconfig plus the following is not bootable:

../scripts/config --enable DEBUG_INFO --enable DEBUG_FS \
--enable KALLSYMS_ALL --enable MAGIC_SYSRQ --enable KGDB \
--enable KGDB_TESTS --enable KGDB_KDB --enable KDB_KEYBOARD \
--enable LKDTM

Try:

qemu-system-x86_64 \
-enable-kvm -m 1G -smp 2 -nographic
-kernel arch/x86/boot/bzImage \
-append "console=ttyS0,115200 kgdboc=ttyS0 kgdbwait"


Daniel.

2021-02-09 11:13:14

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH v3] kdb: Simplify kdb commands registration

On Mon, 8 Feb 2021 at 19:18, Daniel Thompson <[email protected]> wrote:
>
> On Mon, Feb 08, 2021 at 03:18:19PM +0530, Sumit Garg wrote:
> > On Mon, 8 Feb 2021 at 15:13, Daniel Thompson <[email protected]> wrote:
> > >
> > > On Fri, Jan 29, 2021 at 03:47:07PM +0530, Sumit Garg wrote:
> > > > @@ -1011,25 +1005,17 @@ int kdb_parse(const char *cmdstr)
> > > > ++argv[0];
> > > > }
> > > >
> > > > - for_each_kdbcmd(tp, i) {
> > > > - if (tp->cmd_name) {
> > > > - /*
> > > > - * If this command is allowed to be abbreviated,
> > > > - * check to see if this is it.
> > > > - */
> > > > -
> > > > - if (tp->cmd_minlen
> > > > - && (strlen(argv[0]) <= tp->cmd_minlen)) {
> > > > - if (strncmp(argv[0],
> > > > - tp->cmd_name,
> > > > - tp->cmd_minlen) == 0) {
> > > > - break;
> > > > - }
> > > > - }
> > > > -
> > > > - if (strcmp(argv[0], tp->cmd_name) == 0)
> > > > + list_for_each_entry(tp, &kdb_cmds_head, list_node) {
> > > > + /*
> > > > + * If this command is allowed to be abbreviated,
> > > > + * check to see if this is it.
> > > > + */
> > > > + if (tp->cmd_minlen && (strlen(argv[0]) <= tp->cmd_minlen) &&
> > > > + (strncmp(argv[0], tp->cmd_name, tp->cmd_minlen) == 0))
> > > > break;
> > >
> > > Looks like you forgot to unindent this line.
> > >
> > > I will fix it up but... checkpatch would have found this.
> > >
> >
> > Ah, I missed to run checkpatch on v3. Thanks for fixing this up.
>
> Unfortunately, it's not just checkpatch. This patch also causes a
> large number of test suite regressions. In particular it looks like
> kgdbwait does not work with this patch applied.
>
> The problem occurs on multiple architectures all with
> close-to-defconfig kernels. However to share one specific
> failure, x86_64_defconfig plus the following is not bootable:
>
> ../scripts/config --enable DEBUG_INFO --enable DEBUG_FS \
> --enable KALLSYMS_ALL --enable MAGIC_SYSRQ --enable KGDB \
> --enable KGDB_TESTS --enable KGDB_KDB --enable KDB_KEYBOARD \
> --enable LKDTM
>
> Try:
>
> qemu-system-x86_64 \
> -enable-kvm -m 1G -smp 2 -nographic
> -kernel arch/x86/boot/bzImage \
> -append "console=ttyS0,115200 kgdboc=ttyS0 kgdbwait"
>

Thanks Daniel for this report. I am able to reproduce it with
"kgdbwait" and will investigate it.

-Sumit

>
> Daniel.