diff --git a/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c b/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c
index 3c5d58ff3884e5f6bf996fb0a442dfafc758637c..e9bca9fbaf4bd3ce20ecea2bbf6becb07587ae1f 100644
--- a/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c
+++ b/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c
@@ -646,23 +646,27 @@ static struct platform_device *sprom_pdev = NULL;
 
 static char prefix[20];
 
-static void bcm47xx_sprom_apply_prefix_alias(char *prefix, size_t prefix_len)
+static void bcm47xx_sprom_apply_prefix_alias(char *prefix, size_t prefix_size)
 {
-	size_t needle_len = strlen(prefix) - 1;
+	size_t prefix_len = strlen(prefix);
+	size_t short_len = prefix_len - 1;
 	char nvram_var[10];
 	char buf[20];
 	int i;
 
-	if (needle_len <= 0 || prefix[needle_len] != '/')
+	if (prefix_len <= 0 || prefix[prefix_len - 1] != '/') {
+		pr_warn("Invalid prefix: \"%s\"\n", prefix);
 		return;
+	}
 
 	for (i = 0; i < 3; i++) {
 		if (snprintf(nvram_var, sizeof(nvram_var), "devpath%d", i) <= 0)
 			continue;
 		if (bcm47xx_nvram_getenv(nvram_var, buf, sizeof(buf)) < 0)
 			continue;
-		if (strlen(buf) == needle_len && !strncmp(buf, prefix, needle_len)) {
-			snprintf(prefix, prefix_len, "%d:", i);
+		if (!strcmp(buf, prefix) ||
+		    (short_len && strlen(buf) == short_len && !strncmp(buf, prefix, short_len))) {
+			snprintf(prefix, prefix_size, "%d:", i);
 			return;
 		}
 	}