Fix e2undo endian issues

This commit is contained in:
Eric Sandeen 2016-06-16 18:00:43 -05:00
parent 14038a7ff6
commit acca0241b0
2 changed files with 68 additions and 1 deletions

View File

@ -1,7 +1,7 @@
Summary: Utilities for managing ext2, ext3, and ext4 filesystems Summary: Utilities for managing ext2, ext3, and ext4 filesystems
Name: e2fsprogs Name: e2fsprogs
Version: 1.43.1 Version: 1.43.1
Release: 1%{?dist} Release: 2%{?dist}
# License tags based on COPYING file distinctions for various components # License tags based on COPYING file distinctions for various components
License: GPLv2 License: GPLv2
@ -11,6 +11,7 @@ Source1: ext2_types-wrapper.h
Source2: e2fsck.conf Source2: e2fsck.conf
Patch1: e2fsprogs-1.40.4-sb_feature_check_ignore.patch Patch1: e2fsprogs-1.40.4-sb_feature_check_ignore.patch
Patch2: e2undo-endian.patch
Url: http://e2fsprogs.sourceforge.net/ Url: http://e2fsprogs.sourceforge.net/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -151,6 +152,7 @@ It was originally inspired by the Multics SubSystem library.
# mildly unsafe but 'til I get something better, avoid full fsck # mildly unsafe but 'til I get something better, avoid full fsck
# after an selinux install... # after an selinux install...
%patch1 -p1 -b .featurecheck %patch1 -p1 -b .featurecheck
%patch2 -p1
%build %build
%configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \ %configure CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" \
@ -332,6 +334,9 @@ exit 0
%{_libdir}/pkgconfig/ss.pc %{_libdir}/pkgconfig/ss.pc
%changelog %changelog
* Thu Jun 16 2016 Eric Sandeen <sandeen@redhat.com> 1.43.1-2
- Fix e2undo endian issues (#1344636)
* Wed Jun 08 2016 Eric Sandeen <sandeen@redhat.com> 1.43.1-1 * Wed Jun 08 2016 Eric Sandeen <sandeen@redhat.com> 1.43.1-1
- New upstream release - New upstream release

62
e2undo-endian.patch Normal file
View File

@ -0,0 +1,62 @@
[PATCH] e2undo: fix endian issues
Two new e2undo issues exist in the latest release on big endian
machines.
From sparse check:
undo_io.c:157:26: warning: invalid assignment: |=
undo_io.c:157:26: left side has type restricted __le32
undo_io.c:157:26: right side has type int
undo_io.c:161:26: warning: invalid assignment: &=
undo_io.c:161:26: left side has type restricted __le32
undo_io.c:161:26: right side has type int
e2undo.c:211:16: warning: cast to restricted __le64
e2undo.c:211:16: warning: cast from restricted blk64_t
e2undo.c:212:16: warning: cast to restricted __le64
e2undo.c:212:16: warning: cast from restricted blk64_t
Addresses-RedHat-Bugzilla: 1344636
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---
diff --git a/lib/ext2fs/undo_io.c b/lib/ext2fs/undo_io.c
index f921218..776d5b8 100644
--- a/lib/ext2fs/undo_io.c
+++ b/lib/ext2fs/undo_io.c
@@ -154,11 +154,11 @@ struct undo_private_data {
#define E2UNDO_FEATURE_COMPAT_FS_OFFSET 0x1 /* the filesystem offset */
static inline void e2undo_set_feature_fs_offset(struct undo_header *header) {
- header->f_compat |= E2UNDO_FEATURE_COMPAT_FS_OFFSET;
+ header->f_compat |= ext2fs_le32_to_cpu(E2UNDO_FEATURE_COMPAT_FS_OFFSET);
}
static inline void e2undo_clear_feature_fs_offset(struct undo_header *header) {
- header->f_compat &= ~E2UNDO_FEATURE_COMPAT_FS_OFFSET;
+ header->f_compat &= ~ext2fs_le32_to_cpu(E2UNDO_FEATURE_COMPAT_FS_OFFSET);
}
static io_manager undo_io_backing_manager;
diff --git a/misc/e2undo.c b/misc/e2undo.c
index a8cb000..6fb6e44 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -208,8 +208,7 @@ static int key_compare(const void *a, const void *b)
ka = a;
kb = b;
- return ext2fs_le64_to_cpu(ka->fsblk) -
- ext2fs_le64_to_cpu(kb->fsblk);
+ return ka->fsblk - kb->fsblk;
}
static int e2undo_setup_tdb(const char *name, io_manager *io_ptr)
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html