[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] xen/gntdev: Fix sleep-inside-spinlock
On Tue, Oct 11, 2011 at 03:16:06PM -0400, Daniel De Graaf wrote: > On 10/11/2011 01:32 PM, Konrad Rzeszutek Wilk wrote: > > On Tue, Oct 11, 2011 at 07:13:38PM +0200, Dario Faggioli wrote: > >> Hello everyone, Dario, does the patch fix the problem for you? .. snip.. > it'll also trigger this message; that's also fixed here. Compile tested only. > > -------------------------------------------------------->8 > > gntdev_put_map tries to acquire a mutex when freeing pages back to the > xenballoon pool, so it cannot be called with a spinlock held. In > gntdev_release, the spinlock is not needed as we are freeing the > structure later; in the ioctl, only the list manipulation needs to be > under the lock. > > Reported-By: Dario Faggioli <raistlin@xxxxxxxx> > Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> > --- > drivers/xen/gntdev.c | 5 ++--- > 1 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c > index f914b26..23b1c83 100644 > --- a/drivers/xen/gntdev.c > +++ b/drivers/xen/gntdev.c > @@ -462,13 +462,11 @@ static int gntdev_release(struct inode *inode, struct > file *flip) > > pr_debug("priv %p\n", priv); > > - spin_lock(&priv->lock); > while (!list_empty(&priv->maps)) { > map = list_entry(priv->maps.next, struct grant_map, next); > list_del(&map->next); > gntdev_put_map(map); > } > - spin_unlock(&priv->lock); > > if (use_ptemod) > mmu_notifier_unregister(&priv->mn, priv->mm); > @@ -532,10 +530,11 @@ static long gntdev_ioctl_unmap_grant_ref(struct > gntdev_priv *priv, > map = gntdev_find_map_index(priv, op.index >> PAGE_SHIFT, op.count); > if (map) { > list_del(&map->next); > - gntdev_put_map(map); > err = 0; > } > spin_unlock(&priv->lock); > + if (map) > + gntdev_put_map(map); > return err; > } > > -- > 1.7.6.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |