diff options
-rw-r--r-- | ubi-utils/src/libubi.c | 11 | ||||
-rw-r--r-- | ubi-utils/src/ubinfo.c | 7 |
2 files changed, 14 insertions, 4 deletions
diff --git a/ubi-utils/src/libubi.c b/ubi-utils/src/libubi.c index e754747..9aa7847 100644 --- a/ubi-utils/src/libubi.c +++ b/ubi-utils/src/libubi.c @@ -749,8 +749,15 @@ int ubi_get_info(libubi_t desc, struct ubi_info *info) memset(info, '\0', sizeof(struct ubi_info)); - if (read_major(lib->ctrl_dev, &info->ctrl_major, &info->ctrl_minor)) - return -1; + if (read_major(lib->ctrl_dev, &info->ctrl_major, &info->ctrl_minor)) { + /* + * Older UBI versions did not have control device, so we do not + * panic here for compatibility reasons. May be few years later + * we could return -1 here, but for now just set major:minor to + * -1. + */ + info->ctrl_major = info->ctrl_minor = -1; + } /* * We have to scan the UBI sysfs directory to identify how many UBI diff --git a/ubi-utils/src/ubinfo.c b/ubi-utils/src/ubinfo.c index a0bbbec..280c770 100644 --- a/ubi-utils/src/ubinfo.c +++ b/ubi-utils/src/ubinfo.c @@ -335,8 +335,11 @@ static int print_general_info(libubi_t libubi, int all) printf("UBI version: %d\n", ubi_info.version); printf("Count of UBI devices: %d\n", ubi_info.dev_count); - printf("UBI control device major/minor: %d:%d\n", - ubi_info.ctrl_major, ubi_info.ctrl_minor); + if (ubi_info.ctrl_major != -1) + printf("UBI control device major/minor: %d:%d\n", + ubi_info.ctrl_major, ubi_info.ctrl_minor); + else + printf("UBI control device is not supported by this kernel\n"); if (ubi_info.dev_count == 0) return 0; |