# Re: libkmod mishandles parameters re-quoted by grub2

- From: Lucas De Marchi \<hidden\>
- Date: 2021-02-12 09:43:08 
- List: linux-modules
- Page: https://ratatoskr.run/linux-modules/2021/02/16302878
- Thread: https://ratatoskr.run/linux-modules/2021/01/16302865/t.md

```text
On Mon, Jan 25, 2021 at 09:49:13AM +0100, Jiri Slaby wrote:
>Hi,
>
>when one passes to the kernel a module parameter from grub2 such as:
>  parport.dyndbg="file drivers/parport/ieee1284_ops.c +mpf"
>the kernel receives:
>  "parport.dyndbg=file drivers/parport/ieee1284_ops.c +mpf"
>as grub2 handles quotes this way. It may be a bug in grub2, it was even tried to be fixed, but there is no all-cases-working fix yet:
>  https://bugzilla.suse.com/show_bug.cgi?id=1181111#c10
>
>The kernel parses the parameter correctly, though:
>  parse_one: doing dyndbg params: parport.dyndbg='file drivers/parport/ieee1284_ops.c +mpf'
>
>But libkmod doesn't. When parport is modprobe-d, this parameter is not passed to it.
>
>kmod_config_parse_kcmdline ignores the parameter as:
>  if (is_quoted) {
>    /* don't consider a module until closing quotes */
>
>I am not sure how to fix this, can someone look into it and make the parser similar to kernel's?

We have to ignore ill-formed kernel cmdline and that makes it harder.

I threw out the current implementation and rewrote it into a state
machine. It passes the tests, but it's unfortunate we have to do this,
particularly because we have to re-quote it the "right way" to pass back
to kernel, unmangling it.

I will share the patch shortly.

Lucas De Marchi
>
>thanks,
>-- 
>js
>suse labs
```
