static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm)
 {
        struct kobj_uevent_env *env;
-       char *tmp, *pathbuf = NULL;
        unsigned long long created, active;
 
        if (!kvm_dev.this_device || !kvm)
        add_uevent_var(env, "CREATED=%llu", created);
        add_uevent_var(env, "COUNT=%llu", active);
 
-       if (type == KVM_EVENT_CREATE_VM)
+       if (type == KVM_EVENT_CREATE_VM) {
                add_uevent_var(env, "EVENT=create");
-       else if (type == KVM_EVENT_DESTROY_VM)
+               kvm->userspace_pid = task_pid_nr(current);
+       } else if (type == KVM_EVENT_DESTROY_VM) {
                add_uevent_var(env, "EVENT=destroy");
+       }
+       add_uevent_var(env, "PID=%d", kvm->userspace_pid);
 
        if (kvm->debugfs_dentry) {
-               char p[ITOA_MAX_LEN];
-
-               snprintf(p, sizeof(p), "%s", kvm->debugfs_dentry->d_name.name);
-               tmp = strchrnul(p + 1, '-');
-               *tmp = '\0';
-               add_uevent_var(env, "PID=%s", p);
-               pathbuf = kmalloc(PATH_MAX, GFP_KERNEL);
-               if (pathbuf) {
-                       /* sizeof counts the final '\0' */
-                       int len = sizeof("STATS_PATH=") - 1;
-                       const char *pvar = "STATS_PATH=";
-
-                       tmp = dentry_path_raw(kvm->debugfs_dentry,
-                                             pathbuf + len,
-                                             PATH_MAX - len);
-                       if (!IS_ERR(tmp)) {
-                               memcpy(tmp - len, pvar, len);
-                               env->envp[env->envp_idx++] = tmp - len;
-                       }
+               char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL);
+
+               if (p) {
+                       tmp = dentry_path_raw(kvm->debugfs_dentry, p, PATH_MAX);
+                       if (!IS_ERR(tmp))
+                               add_uevent_var(env, "STATS_PATH=%s", tmp);
+                       kfree(p);
                }
        }
        /* no need for checks, since we are adding at most only 5 keys */
        env->envp[env->envp_idx++] = NULL;
        kobject_uevent_env(&kvm_dev.this_device->kobj, KOBJ_CHANGE, env->envp);
        kfree(env);
-       kfree(pathbuf);
 }
 
 static int kvm_init_debug(void)