diff options
Diffstat (limited to 'drivers/infiniband/hw/hfi1/file_ops.c')
-rw-r--r-- | drivers/infiniband/hw/hfi1/file_ops.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c index 1ecbec192358..7e03ccd2554d 100644 --- a/drivers/infiniband/hw/hfi1/file_ops.c +++ b/drivers/infiniband/hw/hfi1/file_ops.c | |||
@@ -183,6 +183,7 @@ static int hfi1_file_open(struct inode *inode, struct file *fp) | |||
183 | if (fd) { | 183 | if (fd) { |
184 | fd->rec_cpu_num = -1; /* no cpu affinity by default */ | 184 | fd->rec_cpu_num = -1; /* no cpu affinity by default */ |
185 | fd->mm = current->mm; | 185 | fd->mm = current->mm; |
186 | atomic_inc(&fd->mm->mm_count); | ||
186 | } | 187 | } |
187 | 188 | ||
188 | fp->private_data = fd; | 189 | fp->private_data = fd; |
@@ -222,7 +223,7 @@ static long hfi1_file_ioctl(struct file *fp, unsigned int cmd, | |||
222 | ret = assign_ctxt(fp, &uinfo); | 223 | ret = assign_ctxt(fp, &uinfo); |
223 | if (ret < 0) | 224 | if (ret < 0) |
224 | return ret; | 225 | return ret; |
225 | setup_ctxt(fp); | 226 | ret = setup_ctxt(fp); |
226 | if (ret) | 227 | if (ret) |
227 | return ret; | 228 | return ret; |
228 | ret = user_init(fp); | 229 | ret = user_init(fp); |
@@ -779,6 +780,7 @@ static int hfi1_file_close(struct inode *inode, struct file *fp) | |||
779 | mutex_unlock(&hfi1_mutex); | 780 | mutex_unlock(&hfi1_mutex); |
780 | hfi1_free_ctxtdata(dd, uctxt); | 781 | hfi1_free_ctxtdata(dd, uctxt); |
781 | done: | 782 | done: |
783 | mmdrop(fdata->mm); | ||
782 | kobject_put(&dd->kobj); | 784 | kobject_put(&dd->kobj); |
783 | kfree(fdata); | 785 | kfree(fdata); |
784 | return 0; | 786 | return 0; |