diff options
Diffstat (limited to 'drivers/gpu/drm/i810/i810_dma.c')
-rw-r--r-- | drivers/gpu/drm/i810/i810_dma.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i810/i810_dma.c b/drivers/gpu/drm/i810/i810_dma.c index f920fb5e42b6..fa9439159ebd 100644 --- a/drivers/gpu/drm/i810/i810_dma.c +++ b/drivers/gpu/drm/i810/i810_dma.c | |||
@@ -130,11 +130,10 @@ static int i810_map_buffer(struct drm_buf *buf, struct drm_file *file_priv) | |||
130 | return -EINVAL; | 130 | return -EINVAL; |
131 | 131 | ||
132 | /* This is all entirely broken */ | 132 | /* This is all entirely broken */ |
133 | down_write(¤t->mm->mmap_sem); | ||
134 | old_fops = file_priv->filp->f_op; | 133 | old_fops = file_priv->filp->f_op; |
135 | file_priv->filp->f_op = &i810_buffer_fops; | 134 | file_priv->filp->f_op = &i810_buffer_fops; |
136 | dev_priv->mmap_buffer = buf; | 135 | dev_priv->mmap_buffer = buf; |
137 | buf_priv->virtual = (void *)do_mmap(file_priv->filp, 0, buf->total, | 136 | buf_priv->virtual = (void *)vm_mmap(file_priv->filp, 0, buf->total, |
138 | PROT_READ | PROT_WRITE, | 137 | PROT_READ | PROT_WRITE, |
139 | MAP_SHARED, buf->bus_address); | 138 | MAP_SHARED, buf->bus_address); |
140 | dev_priv->mmap_buffer = NULL; | 139 | dev_priv->mmap_buffer = NULL; |
@@ -145,7 +144,6 @@ static int i810_map_buffer(struct drm_buf *buf, struct drm_file *file_priv) | |||
145 | retcode = PTR_ERR(buf_priv->virtual); | 144 | retcode = PTR_ERR(buf_priv->virtual); |
146 | buf_priv->virtual = NULL; | 145 | buf_priv->virtual = NULL; |
147 | } | 146 | } |
148 | up_write(¤t->mm->mmap_sem); | ||
149 | 147 | ||
150 | return retcode; | 148 | return retcode; |
151 | } | 149 | } |