diff mbox

[5/5] Return correct error number in ubi_get_vol_info1

Message ID 20170322102257.7605-6-david.oberhollenzer@sigma-star.at
State Accepted
Delegated to: David Oberhollenzer
Headers show

Commit Message

David Oberhollenzer March 22, 2017, 10:22 a.m. UTC
If the specified UBI device or volume does not exist, the function
is supposed to set errno to ENODEV.

This patch adds a check to ubi_get_vol_info1 to change the errno
to ENODEV if vol_get_major cannot access the underlying sysfs file,
so the function propperly returns that the device or volume does
not exist, instead of failing with errno set to ENOENT.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
---
 lib/libubi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/lib/libubi.c b/lib/libubi.c
index 99022dd..f1cc37a 100644
--- a/lib/libubi.c
+++ b/lib/libubi.c
@@ -1242,8 +1242,11 @@  int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id,
 	info->dev_num = dev_num;
 	info->vol_id = vol_id;
 
-	if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor))
+	if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor)) {
+		if (errno == ENOENT)
+			errno = ENODEV;
 		return -1;
+	}
 
 	ret = vol_read_data(lib->vol_type, dev_num, vol_id, buf, 50);
 	if (ret < 0)