On 2025-10-20 21:29:47, David Matlack wrote: > On 2025-10-17 05:07 PM, Vipin Sharma wrote: > > > @@ -167,6 +173,9 @@ static int vfio_pci_liveupdate_retrieve(struct > > liveupdate_file_handler *handler, > > */ > > filep->f_mapping = device->inode->i_mapping; > > *file = filep; > > + vdev = container_of(device, struct vfio_pci_core_device, vdev); > > + guard(mutex)(&device->dev_set->lock); > > + vdev->liveupdate_restore = ser; > > FYI, this causes a build failure for me: > > drivers/vfio/pci/vfio_pci_liveupdate.c:381:3: error: cannot jump from this > goto statement to its label > 381 | goto err_get_registration; > | ^ > drivers/vfio/pci/vfio_pci_liveupdate.c:394:2: note: jump bypasses > initialization of variable with __attribute__((cleanup)) > 394 | guard(mutex)(&device->dev_set->lock); > | ^ > > It seems you cannot jump past a guard(). Replacing the guard with > lock/unlock fixes it, and so does putting the guard into its own inner > statement.
I didn't get this error in my builds. I used: make -j$(nproc) bzImage After your email, I tried with clang, using: LLVM=1 make -j$(nproc) bzImage This one indeed fails with the error you mentioned. Thanks for catching it. I wonder why gcc not complaining about it? May be I need to pass some options to enable this build error on gcc.

