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.