diff --git a/kernel/events/core.c b/kernel/events/core.c
index 03ac9c8b02fb81a89662a16c6871755933cf9721..e886b2593e3ad11414e674b52879c1ef7f79eff8 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -9429,7 +9429,25 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
 
 	event->parent		= parent_event;
 
-	event->ns		= get_pid_ns(task_active_pid_ns(current));
+
+	/*
+	 * This is a fix for pb_sched.
+	 * 
+	 * When this method is called within the scheduling process the
+	 * 'current' task is (at least in our case) already in a exit
+	 * state. Trying to use it will cause a NULL-Pointer Exception.
+	 * Thats why we use the task provided by 'task' to prevent this.
+	 */
+	if(task != NULL)
+	{
+		event->ns	= get_pid_ns(task_active_pid_ns(task));
+	}
+	else
+	{
+		event->ns	= get_pid_ns(task_active_pid_ns(current));
+	}
+	// fix end
+
 	event->id		= atomic64_inc_return(&perf_event_id);
 
 	event->state		= PERF_EVENT_STATE_INACTIVE;