OSDN Git Service

MIPS: VDSO: Prevent use of smp_processor_id()
[android-x86/kernel.git] / kernel / kcov.c
index 3cbb0c8..b0ec314 100644 (file)
@@ -103,7 +103,8 @@ static void kcov_put(struct kcov *kcov)
 
 void kcov_task_init(struct task_struct *t)
 {
-       t->kcov_mode = KCOV_MODE_DISABLED;
+       WRITE_ONCE(t->kcov_mode, KCOV_MODE_DISABLED);
+       barrier();
        t->kcov_size = 0;
        t->kcov_area = NULL;
        t->kcov = NULL;
@@ -220,9 +221,9 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd,
                if (unused != 0 || kcov->mode == KCOV_MODE_DISABLED ||
                    kcov->area == NULL)
                        return -EINVAL;
-               if (kcov->t != NULL)
-                       return -EBUSY;
                t = current;
+               if (kcov->t != NULL || t->kcov != NULL)
+                       return -EBUSY;
                /* Cache in task struct for performance. */
                t->kcov_size = kcov->size;
                t->kcov_area = kcov->area;