seemp: adjust interpretation of rooting report
In the newer versions of EL2 rooting report, a pointer to task_struct
will be supplied as the actor. Extract the pid from the task_struct
and log the pid.
Change-Id: Ic38d0feb8d433f02e614f5e578f21dc12a9d5f38
Signed-off-by: Yida Wang <yidaw@codeaurora.org>
diff --git a/drivers/platform/msm/seemp_core/seemp_logk.c b/drivers/platform/msm/seemp_core/seemp_logk.c
index 204142b..a23f069 100644
--- a/drivers/platform/msm/seemp_core/seemp_logk.c
+++ b/drivers/platform/msm/seemp_core/seemp_logk.c
@@ -30,6 +30,7 @@
#define YEAR_BASE 1900
#define EL2_SCM_ID 0x02001902
+#define KP_EL2_REPORT_REVISION 0x01000101
static struct seemp_logk_dev *slogk_dev;
@@ -610,6 +611,9 @@
/ sizeof(struct el2_report_data_t);
header = (struct el2_report_header_t *) el2_shared_mem;
+ if (header->report_version < KP_EL2_REPORT_REVISION)
+ return -EINVAL;
+
while (!kthread_should_stop()) {
for (i = 1; i < num_entries + 1; i++) {
struct el2_report_data_t *report;
@@ -628,7 +632,8 @@
|| report->sequence_number >
last_sequence_number)) {
seemp_logk_rtic(report->report_type,
- report->actor,
+ ((struct task_struct *) report->actor)
+ ->pid,
/* leave this empty until
* asset id is provided
*/
diff --git a/include/linux/seemp_instrumentation.h b/include/linux/seemp_instrumentation.h
index ff09bd2..1db7a44 100644
--- a/include/linux/seemp_instrumentation.h
+++ b/include/linux/seemp_instrumentation.h
@@ -69,7 +69,7 @@
seemp_logk_kernel_end(blck);
}
-static inline void seemp_logk_rtic(__u8 type, __u64 actor, __u8 asset_id[0x20],
+static inline void seemp_logk_rtic(__u8 type, pid_t pid, __u8 asset_id[0x20],
__u8 asset_category, __u8 response)
{
char *buf = NULL;
@@ -80,8 +80,8 @@
return;
SEEMP_LOGK_RECORD(SEEMP_API_kernel__rtic,
- "app_pid=%llu,rtic_type=%u,asset_id=%s,asset_category=%u,response=%u",
- actor, type, asset_id, asset_category, response);
+ "app_pid=%d,rtic_type=%u,asset_id=%s,asset_category=%u,response=%u",
+ pid, type, asset_id, asset_category, response);
seemp_logk_kernel_end(blck);
}