From: Rafał Miłecki Date: Sat, 14 Mar 2015 16:35:56 +0000 (+0000) Subject: bcm53xx: support NVRAM prefixes with extra / in devpath X-Git-Url: https://git.archive.openwrt.org/?a=commitdiff_plain;h=5cf9746b1d5908c896fb684a0353adaf6e6f4957;p=15.05%2Fopenwrt.git bcm53xx: support NVRAM prefixes with extra / in devpath Signed-off-by: Rafał Miłecki git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44755 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- 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; } }