From 614843c3975578a9e5ee8451d00e6974c8326f75 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Wed, 8 Aug 2018 00:01:10 +0000 Subject: lib/efi: Add check for ioctl_iflags support The efi tests may use a filesystem which does not support ioctl_iflags. Add a check and skip the ioctl_iflags operations if not supported. Signed-off-by: Geoff Levand Signed-off-by: Samuel Mendoza-Jonas --- lib/efi/efivar.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/efi/efivar.c b/lib/efi/efivar.c index 21c5d34..91b2507 100644 --- a/lib/efi/efivar.c +++ b/lib/efi/efivar.c @@ -83,17 +83,32 @@ int efi_del_variable(const char *guidstr, const char *name) return -1; rc = ioctl(fd, FS_IOC_GETFLAGS, &flag); - if (rc == -1) + if (rc == -1 && errno == ENOTTY) { + pb_debug_fn("'%s' does not support ioctl_iflags.\n", + efivarfs_path); + goto delete; + } else if (rc == -1) { + pb_log_fn("FS_IOC_GETFLAGS failed: (%d) %s\n", errno, + strerror(errno)); goto exit; + } flag &= ~FS_IMMUTABLE_FL; rc = ioctl(fd, FS_IOC_SETFLAGS, &flag); - if (rc == -1) + if (rc == -1) { + pb_log_fn("FS_IOC_SETFLAGS failed: (%d) %s\n", errno, + strerror(errno)); goto exit; + } +delete: close(fd); fd = 0; rc = unlink(path); + if (rc == -1) { + pb_log_fn("unlink failed: (%d) %s\n", errno, strerror(errno)); + goto exit; + } exit: talloc_free(path); close(fd); -- cgit v1.2.1