diff mbox series

[fstools] partname: Correct fstools_partname_fallback_scan comparison

Message ID 20230125062814.2517900-1-computersforpeace@gmail.com
State Superseded
Headers show
Series [fstools] partname: Correct fstools_partname_fallback_scan comparison | expand

Commit Message

Brian Norris Jan. 25, 2023, 6:28 a.m. UTC
We want to return NULL if the param does *not* match 1 -- i.e., a
non-zero strcmp().

Fixes: 1ea5855e980c ("partname: Introduce fstools_partname_fallback_scan option")
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---

 libfstools/partname.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Brian Norris Jan. 25, 2023, 6:40 a.m. UTC | #1
On Tue, Jan 24, 2023 at 10:28:14PM -0800, Brian Norris wrote:
> We want to return NULL if the param does *not* match 1 -- i.e., a
> non-zero strcmp().
> 
> Fixes: 1ea5855e980c ("partname: Introduce fstools_partname_fallback_scan option")

Hmm, sorry for the quick self-reply, but after rereading, I noticed
there's a second reason commit 1ea5855e980c may be incorrect:

This fallback *used* to (pre-1ea5855e980c) be used for any block device
(eMMC, SATA, etc.) where we *didn't* specify root= in the boot args.
This could perhaps happen with initramfs systems? (Sorry, I'm not
extremely familiar with the openwrt ecosystem.)

So do we need to refactor this again, so that we allow the fallback in
either (or both) of these cases:

(1) no root= arg
(2) root=XXXX (where XXX is not a /device/path) +
    fstools_partname_fallback_scan=1

?

Anyway, it's probably at least safe to apply my bugfix, but we might
need more.

Brian

> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> ---
> 
>  libfstools/partname.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libfstools/partname.c b/libfstools/partname.c
> index f42322a49d5b..82c723c02097 100644
> --- a/libfstools/partname.c
> +++ b/libfstools/partname.c
> @@ -143,7 +143,7 @@ static struct volume *partname_volume_find(char *name)
>  		if (!get_var_from_file("/proc/cmdline", "fstools_partname_fallback_scan", rootparam, sizeof(rootparam)))
>  			return NULL;
>  
> -		if (!strcmp("1", rootparam))
> +		if (strcmp("1", rootparam))
>  			return NULL;
>  
>  		/* no useful 'root=' kernel cmdline parameter, find on any block device */
> -- 
> 2.39.0
>
Christian Marangi Jan. 26, 2023, 1:11 a.m. UTC | #2
On Tue, Jan 24, 2023 at 10:40:26PM -0800, Brian Norris wrote:
> On Tue, Jan 24, 2023 at 10:28:14PM -0800, Brian Norris wrote:
> > We want to return NULL if the param does *not* match 1 -- i.e., a
> > non-zero strcmp().
> > 
> > Fixes: 1ea5855e980c ("partname: Introduce fstools_partname_fallback_scan option")
> 
> Hmm, sorry for the quick self-reply, but after rereading, I noticed
> there's a second reason commit 1ea5855e980c may be incorrect:
> 
> This fallback *used* to (pre-1ea5855e980c) be used for any block device
> (eMMC, SATA, etc.) where we *didn't* specify root= in the boot args.
> This could perhaps happen with initramfs systems? (Sorry, I'm not
> extremely familiar with the openwrt ecosystem.)
> 
> So do we need to refactor this again, so that we allow the fallback in
> either (or both) of these cases:
> 
> (1) no root= arg
> (2) root=XXXX (where XXX is not a /device/path) +
>     fstools_partname_fallback_scan=1
> 
> ?
> 
> Anyway, it's probably at least safe to apply my bugfix, but we might
> need more.
>

Hi, you are right but in theory it should not be that hard to rework...
We surely need to handle the case with no root arg.

> > Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> > ---
> > 
> >  libfstools/partname.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/libfstools/partname.c b/libfstools/partname.c
> > index f42322a49d5b..82c723c02097 100644
> > --- a/libfstools/partname.c
> > +++ b/libfstools/partname.c
> > @@ -143,7 +143,7 @@ static struct volume *partname_volume_find(char *name)
> >  		if (!get_var_from_file("/proc/cmdline", "fstools_partname_fallback_scan", rootparam, sizeof(rootparam)))
> >  			return NULL;
> >  
> > -		if (!strcmp("1", rootparam))
> > +		if (strcmp("1", rootparam))
> >  			return NULL;
> >  
> >  		/* no useful 'root=' kernel cmdline parameter, find on any block device */
> > -- 
> > 2.39.0
> >
diff mbox series

Patch

diff --git a/libfstools/partname.c b/libfstools/partname.c
index f42322a49d5b..82c723c02097 100644
--- a/libfstools/partname.c
+++ b/libfstools/partname.c
@@ -143,7 +143,7 @@  static struct volume *partname_volume_find(char *name)
 		if (!get_var_from_file("/proc/cmdline", "fstools_partname_fallback_scan", rootparam, sizeof(rootparam)))
 			return NULL;
 
-		if (!strcmp("1", rootparam))
+		if (strcmp("1", rootparam))
 			return NULL;
 
 		/* no useful 'root=' kernel cmdline parameter, find on any block device */