aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/uverbs_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/core/uverbs_main.c')
-rw-r--r--drivers/infiniband/core/uverbs_main.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index ff59a795e840..4fa2e6516441 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -484,11 +484,10 @@ void ib_uverbs_event_handler(struct ib_event_handler *handler,
484} 484}
485 485
486struct file *ib_uverbs_alloc_event_file(struct ib_uverbs_file *uverbs_file, 486struct file *ib_uverbs_alloc_event_file(struct ib_uverbs_file *uverbs_file,
487 int is_async, int *fd) 487 int is_async)
488{ 488{
489 struct ib_uverbs_event_file *ev_file; 489 struct ib_uverbs_event_file *ev_file;
490 struct file *filp; 490 struct file *filp;
491 int ret;
492 491
493 ev_file = kmalloc(sizeof *ev_file, GFP_KERNEL); 492 ev_file = kmalloc(sizeof *ev_file, GFP_KERNEL);
494 if (!ev_file) 493 if (!ev_file)
@@ -503,27 +502,12 @@ struct file *ib_uverbs_alloc_event_file(struct ib_uverbs_file *uverbs_file,
503 ev_file->is_async = is_async; 502 ev_file->is_async = is_async;
504 ev_file->is_closed = 0; 503 ev_file->is_closed = 0;
505 504
506 *fd = get_unused_fd(); 505 filp = anon_inode_getfile("[infinibandevent]", &uverbs_event_fops,
507 if (*fd < 0) {
508 ret = *fd;
509 goto err;
510 }
511
512 filp = anon_inode_getfile("[uverbs-event]", &uverbs_event_fops,
513 ev_file, O_RDONLY); 506 ev_file, O_RDONLY);
514 if (!filp) { 507 if (IS_ERR(filp))
515 ret = -ENFILE; 508 kfree(ev_file);
516 goto err_fd;
517 }
518 509
519 return filp; 510 return filp;
520
521err_fd:
522 put_unused_fd(*fd);
523
524err:
525 kfree(ev_file);
526 return ERR_PTR(ret);
527} 511}
528 512
529/* 513/*