Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f73d1e6c authored by Eugene Teo's avatar Eugene Teo Committed by Rusty Russell
Browse files

lguest: make sure cpu is initialized before accessing it



If req is LHREQ_INITIALIZE, and the guest has been initialized before
(unlikely), it will attempt to access cpu->tsk even though cpu is not yet
initialized.

Signed-off-by: default avatarEugene Teo <eugeneteo@kernel.sg>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent cdeeeae0
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -241,15 +241,16 @@ static ssize_t write(struct file *file, const char __user *in,
		cpu = &lg->cpus[cpu_id];
		if (!cpu)
			return -EINVAL;
	}

	/* Once the Guest is dead, all you can do is read() why it died. */
	if (lg && lg->dead)
		/* Once the Guest is dead, you can only read() why it died. */
		if (lg->dead)
			return -ENOENT;

	/* If you're not the task which owns the Guest, you can only break */
	if (lg && current != cpu->tsk && req != LHREQ_BREAK)
		/* If you're not the task which owns the Guest, all you can do
		 * is break the Launcher out of running the Guest. */
		if (current != cpu->tsk && req != LHREQ_BREAK)
			return -EPERM;
	}

	switch (req) {
	case LHREQ_INITIALIZE: