ANDROID: 16K: Only check basename of linker context am: 564901bd7f

Original change: https://android-review.googlesource.com/c/kernel/common/+/3127479

Change-Id: I7386ac9e9c5eede4830760f31d3ab511ae6cdee3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/mm/pgsize_migration.c b/mm/pgsize_migration.c
index 9efadd1..1c36fcc6 100644
--- a/mm/pgsize_migration.c
+++ b/mm/pgsize_migration.c
@@ -19,6 +19,7 @@
 #include <linux/mm.h>
 #include <linux/sched/task_stack.h>
 #include <linux/slab.h>
+#include <linux/string.h>
 #include <linux/sysfs.h>
 
 typedef void (*show_pad_maps_fn)	(struct seq_file *m, struct vm_area_struct *vma);
@@ -183,7 +184,15 @@
 		memset(buf, 0, bufsize);
 		path = d_path(&file->f_path, buf, bufsize);
 
-		if (!strcmp(path, "/system/bin/linker64"))
+		/*
+		 * Depending on interpreter requested, valid paths could be any of:
+		 *   1. /system/bin/bootstrap/linker64
+		 *   2. /system/bin/linker64
+		 *   3. /apex/com.android.runtime/bin/linker64
+		 *
+		 * Check the base name (linker64).
+		 */
+		if (!strcmp(kbasename(path), "linker64"))
 			return true;
 	}