From 5cf9746b1d5908c896fb684a0353adaf6e6f4957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Sat, 14 Mar 2015 16:35:56 +0000 Subject: bcm53xx: support NVRAM prefixes with extra / in devpath MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44755 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c b/target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c index 3c5d58ff38..e9bca9fbaf 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; } } -- cgit v1.2.3