mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 21:26:41 +02:00
s390/vfio-ap: Fix stale do_remove flag across iterations in vfio_ap_mdev_cfg_remove
The do_remove flag in vfio_ap_mdev_cfg_remove() is initialised to zero
before the loop that iterates over the list of matrix mdevs, but is
never reset at the start of each iteration. Since do_remove is
OR-accumulated across iterations, a positive result from one mdev
carries over to subsequent mdevs.
The fix is to set the do_remove flag with the first call to bitmap_and;
for example: do_remove = bitmap_an rather than do_remove |= bitmap_and.
Fixes: eeb386aeb5 ("s390/vfio-ap: handle config changed and scan complete notification")
Cc: stable@vger.kernel.org
Signed-off-by: Anthony Krowiak <akrowiak@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
This commit is contained in:
parent
188a15cc7f
commit
b1f092d94f
|
|
@ -2598,15 +2598,15 @@ static void vfio_ap_mdev_cfg_remove(unsigned long *ap_remove,
|
|||
DECLARE_BITMAP(aprem, AP_DEVICES);
|
||||
DECLARE_BITMAP(aqrem, AP_DOMAINS);
|
||||
DECLARE_BITMAP(cdrem, AP_DOMAINS);
|
||||
int do_remove = 0;
|
||||
int do_remove;
|
||||
|
||||
list_for_each_entry(matrix_mdev, &matrix_dev->mdev_list, node) {
|
||||
mutex_lock(&matrix_mdev->kvm->lock);
|
||||
mutex_lock(&matrix_dev->mdevs_lock);
|
||||
|
||||
do_remove |= bitmap_and(aprem, ap_remove,
|
||||
matrix_mdev->matrix.apm,
|
||||
AP_DEVICES);
|
||||
do_remove = bitmap_and(aprem, ap_remove,
|
||||
matrix_mdev->matrix.apm,
|
||||
AP_DEVICES);
|
||||
do_remove |= bitmap_and(aqrem, aq_remove,
|
||||
matrix_mdev->matrix.aqm,
|
||||
AP_DOMAINS);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user