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

Commit 1b45f907 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "seemp: check validity of task struct pointer"

parents 7527d44b 65bf34fb
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@

#define EL2_SCM_ID 0x02001902
#define KP_EL2_REPORT_REVISION 0x01000101
#define INVALID_PID -1

static struct seemp_logk_dev *slogk_dev;

@@ -65,6 +66,7 @@ static long seemp_logk_reserve_rdblks(
static long seemp_logk_set_mask(unsigned long arg);
static long seemp_logk_set_mapping(unsigned long arg);
static long seemp_logk_check_filter(unsigned long arg);
static pid_t seemp_logk_get_pid(struct task_struct *t);
static int seemp_logk_rtic_thread(void *data);

void* (*seemp_logk_kernel_begin)(char **buf);
@@ -601,6 +603,26 @@ static const struct file_operations seemp_logk_fops = {
	.mmap = seemp_logk_mmap,
};

static pid_t seemp_logk_get_pid(struct task_struct *t)
{
	struct task_struct *task;
	pid_t pid;

	if (t == NULL)
		return INVALID_PID;

	rcu_read_lock();
	for_each_process(task) {
		if (task == t) {
			pid = task->pid;
			rcu_read_unlock();
			return pid;
		}
	}
	rcu_read_unlock();
	return INVALID_PID;
}

static int seemp_logk_rtic_thread(void *data)
{
	struct el2_report_header_t *header;
@@ -632,8 +654,9 @@ static int seemp_logk_rtic_thread(void *data)
					|| report->sequence_number >
						last_sequence_number)) {
				seemp_logk_rtic(report->report_type,
					((struct task_struct *) report->actor)
						->pid,
					seemp_logk_get_pid(
						(struct task_struct *)
						report->actor),
					/* leave this empty until
					 * asset id is provided
					 */