From: Robert Richter <robert.rich...@calxeda.com>

There is already a function anon_inode_getfd() that does already all
the work. Reworking and simplifying code.

Signed-off-by: Robert Richter <robert.rich...@calxeda.com>
---
 kernel/events/persistent.c | 35 +++++++----------------------------
 1 file changed, 7 insertions(+), 28 deletions(-)

diff --git a/kernel/events/persistent.c b/kernel/events/persistent.c
index 7d1aff3..4ecbdab 100644
--- a/kernel/events/persistent.c
+++ b/kernel/events/persistent.c
@@ -87,33 +87,6 @@ static void del_persistent_event(int cpu, struct 
perf_event_attr *attr)
        kfree(desc);
 }
 
-static int __alloc_persistent_event_fd(struct pers_event_desc *desc)
-{
-       struct file *event_file = NULL;
-       int event_fd = -1;
-
-       event_fd = get_unused_fd();
-       if (event_fd < 0)
-               goto out;
-
-       event_file = anon_inode_getfile("[pers_event]", &perf_fops,
-                                       desc->event, O_RDONLY);
-       if (IS_ERR(event_file))
-               goto err_event_file;
-
-       desc->fd = event_fd;
-       fd_install(event_fd, event_file);
-
-       goto out;
-
-
- err_event_file:
-       put_unused_fd(event_fd);
-
- out:
-       return event_fd;
-}
-
 /*
  * Create and enable the persistent version of the perf event described by
  * @attr.
@@ -165,11 +138,17 @@ int perf_add_persistent_event_by_id(int id)
 int perf_get_persistent_event_fd(unsigned cpu, struct perf_event_attr *attr)
 {
        struct pers_event_desc *desc = get_persistent_event(cpu, attr);
+       int event_fd;
 
        if (!desc)
                return -ENODEV;
 
-       return __alloc_persistent_event_fd(desc);
+       event_fd = anon_inode_getfd("[pers_event]", &perf_fops,
+                               desc->event, O_RDONLY);
+       if (event_fd >= 0)
+               desc->fd = event_fd;
+
+       return event_fd;
 }
 
 
-- 
1.8.1.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to