diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-03-14 16:35:56 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2015-03-14 16:35:56 +0000 |
commit | 0a9b7ea932a7d5229fdbfc850b4ab9d7380379ae (patch) | |
tree | e0280f7299a72f9fa318a1a7e3c2fdd34dc32ad9 /target/linux/bcm53xx/files | |
parent | ea5c986aa6a3102926bd6d1195b50fb863be792f (diff) | |
download | upstream-0a9b7ea932a7d5229fdbfc850b4ab9d7380379ae.tar.gz upstream-0a9b7ea932a7d5229fdbfc850b4ab9d7380379ae.tar.bz2 upstream-0a9b7ea932a7d5229fdbfc850b4ab9d7380379ae.zip |
bcm53xx: support NVRAM prefixes with extra / in devpath
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 44755
Diffstat (limited to 'target/linux/bcm53xx/files')
-rw-r--r-- | target/linux/bcm53xx/files/drivers/misc/bcm47xx-sprom.c | 14 |
1 files 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; } } |