On Wed, May 08, 2024 at 05:48:15PM GMT, Daniel Kiper via Grub-devel wrote:
> Adding Marta...
> 
> On Mon, May 06, 2024 at 03:18:45PM -0500, Glenn Washburn wrote:
> > From: Rogier <rogier...@gmail.com>
> >
> > When handling a regular LVM volume, Grub can fail with the message:
> > error: disk `lvmid/******-****-****-****-****-****-
> > ****/******-****-****-****-****-****-******' not found.
> >
> > If the condition which triggers this exists, grub-probe will report the
> > error mentioned above. Similarly, the grub boot code will fail to detect
> > LVM volumes, resulting in a failure to boot off of LVM disks/partitions.
> > The condition can be created on any LVM VG by an LVM configuration change,
> > so any system with /boot on LVM can become unbootable at 'any' time (after
> > any LVM configuration change).
> >
> > The problem is caused by an incorrect computation of mda_end in lvm.c, when
> > the metadata area wraps around. Apparently, this can start happening at
> > around 220 metadata changes to the VG.

The number of times to commit a wrap actually depends on the size of the
metadata area, how many LVs and VGs are connected to the PV and
whichever would take part in the size of active raw metadata block
within the area.

I managed to use the attached shell script to prepare a LVM disk where
the metadata area is in wrapped state. It took about 100 cycles for me.
With that, I could see the error occurred, and with the patch, the
problem is gone.

So, Feel free to add my: 

Tested-By: Michael Chang <mch...@suse.com>

Thanks,
Michael

> >
> > Fixes: 879c4a834 (lvm: Fix two more potential data-dependent alloc 
> > overflows)
> > Fixes: https://savannah.gnu.org/bugs/?61620
> >
> > Signed-off-by: Rogier <rogier...@gmail.com>
> > Signed-off-by: Glenn Washburn <developm...@efficientek.com>
> 
> Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>
> 
> Marta, may I ask you to test this patch?
> 
> > ---
> > I have done no testing of this patch. I've only created a suitable patch
> > for review. This seems like a fairly serious issue that might one day bite
> > me, so I think it deserves a review.
> >
> > Glenn
> > ---
> >  grub-core/disk/lvm.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
> > index 794248540cd3..8535d5a5863a 100644
> > --- a/grub-core/disk/lvm.c
> > +++ b/grub-core/disk/lvm.c
> > @@ -290,7 +290,7 @@ grub_lvm_detect (grub_disk_t disk,
> >
> >    p = q = (char *)ptr;
> >
> > -  if (grub_add ((grub_size_t)metadatabuf, (grub_size_t)mda_size, &ptr))
> > +  if (grub_add (ptr, (grub_size_t)grub_le_to_cpu64 (rlocn->size), &ptr))
> >      goto error_parsing_metadata;
> >
> >    mda_end = (char *)ptr;
> 
> Daniel
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

Attachment: lvm-mda-wrap.sh
Description: Bourne shell script

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to