Message ID | 20170201032616.23350-1-aik@ozlabs.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Feb 01, 2017 at 02:26:16PM +1100, Alexey Kardashevskiy wrote: > d9c728949ddc: "vfio/spapr: Postpone default window creation" added > an additional exit to the VFIO_IOMMU_SPAPR_TCE_CREATE case and made it > possible to return from tce_iommu_ioctl() without unlocking > container->lock; this fixes the issue. > > Fixes: d9c728949ddc > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > drivers/vfio/vfio_iommu_spapr_tce.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c > index 128d10282d16..7690e5bf3cf1 100644 > --- a/drivers/vfio/vfio_iommu_spapr_tce.c > +++ b/drivers/vfio/vfio_iommu_spapr_tce.c > @@ -1123,12 +1123,11 @@ static long tce_iommu_ioctl(void *iommu_data, > mutex_lock(&container->lock); > > ret = tce_iommu_create_default_window(container); > - if (ret) > - return ret; > - > - ret = tce_iommu_create_window(container, create.page_shift, > - create.window_size, create.levels, > - &create.start_addr); > + if (!ret) > + ret = tce_iommu_create_window(container, > + create.page_shift, > + create.window_size, create.levels, > + &create.start_addr); > > mutex_unlock(&container->lock); >
On Wed, 1 Feb 2017 14:26:16 +1100 Alexey Kardashevskiy <aik@ozlabs.ru> wrote: > d9c728949ddc: "vfio/spapr: Postpone default window creation" added > an additional exit to the VFIO_IOMMU_SPAPR_TCE_CREATE case and made it > possible to return from tce_iommu_ioctl() without unlocking > container->lock; this fixes the issue. > > Fixes: d9c728949ddc > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > drivers/vfio/vfio_iommu_spapr_tce.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) Applies to for-linus branch for v4.10-rc7 w/ David's R-b. Thanks, Alex > diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c > index 128d10282d16..7690e5bf3cf1 100644 > --- a/drivers/vfio/vfio_iommu_spapr_tce.c > +++ b/drivers/vfio/vfio_iommu_spapr_tce.c > @@ -1123,12 +1123,11 @@ static long tce_iommu_ioctl(void *iommu_data, > mutex_lock(&container->lock); > > ret = tce_iommu_create_default_window(container); > - if (ret) > - return ret; > - > - ret = tce_iommu_create_window(container, create.page_shift, > - create.window_size, create.levels, > - &create.start_addr); > + if (!ret) > + ret = tce_iommu_create_window(container, > + create.page_shift, > + create.window_size, create.levels, > + &create.start_addr); > > mutex_unlock(&container->lock); >
diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c index 128d10282d16..7690e5bf3cf1 100644 --- a/drivers/vfio/vfio_iommu_spapr_tce.c +++ b/drivers/vfio/vfio_iommu_spapr_tce.c @@ -1123,12 +1123,11 @@ static long tce_iommu_ioctl(void *iommu_data, mutex_lock(&container->lock); ret = tce_iommu_create_default_window(container); - if (ret) - return ret; - - ret = tce_iommu_create_window(container, create.page_shift, - create.window_size, create.levels, - &create.start_addr); + if (!ret) + ret = tce_iommu_create_window(container, + create.page_shift, + create.window_size, create.levels, + &create.start_addr); mutex_unlock(&container->lock);
d9c728949ddc: "vfio/spapr: Postpone default window creation" added an additional exit to the VFIO_IOMMU_SPAPR_TCE_CREATE case and made it possible to return from tce_iommu_ioctl() without unlocking container->lock; this fixes the issue. Fixes: d9c728949ddc Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- drivers/vfio/vfio_iommu_spapr_tce.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)