Blame SOURCES/0018-fs-ntfs3-Use-kernel-ALIGN-macros-over-driver-specifi.patch

Kmods SIG 8b815c
From fa3cacf544636b2dc48cfb2f277a2071f14d66a2 Mon Sep 17 00:00:00 2001
Kmods SIG 8b815c
From: Kari Argillander <kari.argillander@gmail.com>
Kmods SIG 8b815c
Date: Thu, 26 Aug 2021 11:56:29 +0300
Kmods SIG 8b815c
Subject: [Backport fa3cacf54463] src: Use kernel ALIGN macros over driver
Kmods SIG 8b815c
 specific
Kmods SIG 8b815c
Kmods SIG 8b815c
The static checkers (Smatch) were complaining because QuadAlign() was
Kmods SIG 8b815c
buggy.  If you try to align something higher than UINT_MAX it got
Kmods SIG 8b815c
truncated to a u32.
Kmods SIG 8b815c
Kmods SIG 8b815c
Smatch warning was:
Kmods SIG 8b815c
	src/attrib.c:383 attr_set_size_res()
Kmods SIG 8b815c
	warn: was expecting a 64 bit value instead of '~7'
Kmods SIG 8b815c
Kmods SIG 8b815c
So that this will not happen again we will change all these macros to
Kmods SIG 8b815c
kernel made ones. This can also help some other static analyzing tools
Kmods SIG 8b815c
to give us better warnings.
Kmods SIG 8b815c
Kmods SIG 8b815c
Patch was generated with Coccinelle script and after that some style
Kmods SIG 8b815c
issue was hand fixed.
Kmods SIG 8b815c
Kmods SIG 8b815c
Coccinelle script:
Kmods SIG 8b815c
Kmods SIG 8b815c
virtual patch
Kmods SIG 8b815c
Kmods SIG 8b815c
@alloc depends on patch@
Kmods SIG 8b815c
expression x;
Kmods SIG 8b815c
@@
Kmods SIG 8b815c
(
Kmods SIG 8b815c
-	#define QuadAlign(n)		(((n) + 7u) & (~7u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	QuadAlign(x)
Kmods SIG 8b815c
+	ALIGN(x, 8)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define IsQuadAligned(n)	(!((size_t)(n)&7u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	IsQuadAligned(x)
Kmods SIG 8b815c
+	IS_ALIGNED(x, 8)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define Quad2Align(n)		(((n) + 15u) & (~15u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	Quad2Align(x)
Kmods SIG 8b815c
+	ALIGN(x, 16)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define IsQuad2Aligned(n)	(!((size_t)(n)&15u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	IsQuad2Aligned(x)
Kmods SIG 8b815c
+	IS_ALIGNED(x, 16)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define Quad4Align(n)		(((n) + 31u) & (~31u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	Quad4Align(x)
Kmods SIG 8b815c
+	ALIGN(x, 32)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define IsSizeTAligned(n)	(!((size_t)(n) & (sizeof(size_t) - 1)))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	IsSizeTAligned(x)
Kmods SIG 8b815c
+	IS_ALIGNED(x, sizeof(size_t))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define DwordAlign(n)		(((n) + 3u) & (~3u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	DwordAlign(x)
Kmods SIG 8b815c
+	ALIGN(x, 4)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define IsDwordAligned(n)	(!((size_t)(n)&3u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	IsDwordAligned(x)
Kmods SIG 8b815c
+	IS_ALIGNED(x, 4)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define WordAlign(n)		(((n) + 1u) & (~1u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	WordAlign(x)
Kmods SIG 8b815c
+	ALIGN(x, 2)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	#define IsWordAligned(n)	(!((size_t)(n)&1u))
Kmods SIG 8b815c
|
Kmods SIG 8b815c
-	IsWordAligned(x)
Kmods SIG 8b815c
+	IS_ALIGNED(x, 2)
Kmods SIG 8b815c
|
Kmods SIG 8b815c
)
Kmods SIG 8b815c
Kmods SIG 8b815c
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Kmods SIG 8b815c
Signed-off-by: Kari Argillander <kari.argillander@gmail.com>
Kmods SIG 8b815c
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Kmods SIG 8b815c
---
Kmods SIG 8b815c
 src/attrib.c  |  2 +-
Kmods SIG 8b815c
 src/debug.h   | 11 -----------
Kmods SIG 8b815c
 src/frecord.c | 14 +++++++-------
Kmods SIG 8b815c
 src/fslog.c   | 32 ++++++++++++++++----------------
Kmods SIG 8b815c
 src/fsntfs.c  |  4 ++--
Kmods SIG 8b815c
 src/index.c   |  4 ++--
Kmods SIG 8b815c
 src/inode.c   |  8 ++++----
Kmods SIG 8b815c
 src/namei.c   |  2 +-
Kmods SIG 8b815c
 src/ntfs.h    | 16 ++++++++--------
Kmods SIG 8b815c
 src/ntfs_fs.h |  2 +-
Kmods SIG 8b815c
 src/record.c  | 10 +++++-----
Kmods SIG 8b815c
 src/super.c   | 10 +++++-----
Kmods SIG 8b815c
 src/xattr.c   |  8 ++++----
Kmods SIG 8b815c
 13 files changed, 56 insertions(+), 67 deletions(-)
Kmods SIG 8b815c
Kmods SIG 8b815c
diff --git a/src/attrib.c b/src/attrib.c
Kmods SIG 8b815c
index 046dc57f75f2169b47e7078c251f26b05ec69b42..c15467ec12ed88ad05390fb57a47f396d4391f3e 100644
Kmods SIG 8b815c
--- a/src/attrib.c
Kmods SIG 8b815c
+++ b/src/attrib.c
Kmods SIG 8b815c
@@ -380,7 +380,7 @@ static int attr_set_size_res(struct ntfs_inode *ni, struct ATTRIB *attr,
Kmods SIG 8b815c
 	u32 rsize = le32_to_cpu(attr->res.data_size);
Kmods SIG 8b815c
 	u32 tail = used - aoff - asize;
Kmods SIG 8b815c
 	char *next = Add2Ptr(attr, asize);
Kmods SIG 8b815c
-	s64 dsize = QuadAlign(new_size) - QuadAlign(rsize);
Kmods SIG 8b815c
+	s64 dsize = ALIGN(new_size, 8) - ALIGN(rsize, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (dsize < 0) {
Kmods SIG 8b815c
 		memmove(next + dsize, next, tail);
Kmods SIG 8b815c
diff --git a/src/debug.h b/src/debug.h
Kmods SIG 8b815c
index 357d9f4dfba78792b443e05318d189c9167db1f8..aff4cead9f58ff3222d68d54d853808f0e17a6dc 100644
Kmods SIG 8b815c
--- a/src/debug.h
Kmods SIG 8b815c
+++ b/src/debug.h
Kmods SIG 8b815c
@@ -15,17 +15,6 @@
Kmods SIG 8b815c
 #define PtrOffset(B, O)		((size_t)((size_t)(O) - (size_t)(B)))
Kmods SIG 8b815c
 #endif
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-#define QuadAlign(n)		(((n) + 7u) & (~7u))
Kmods SIG 8b815c
-#define IsQuadAligned(n)	(!((size_t)(n)&7u))
Kmods SIG 8b815c
-#define Quad2Align(n)		(((n) + 15u) & (~15u))
Kmods SIG 8b815c
-#define IsQuad2Aligned(n)	(!((size_t)(n)&15u))
Kmods SIG 8b815c
-#define Quad4Align(n)		(((n) + 31u) & (~31u))
Kmods SIG 8b815c
-#define IsSizeTAligned(n)	(!((size_t)(n) & (sizeof(size_t) - 1)))
Kmods SIG 8b815c
-#define DwordAlign(n)		(((n) + 3u) & (~3u))
Kmods SIG 8b815c
-#define IsDwordAligned(n)	(!((size_t)(n)&3u))
Kmods SIG 8b815c
-#define WordAlign(n)		(((n) + 1u) & (~1u))
Kmods SIG 8b815c
-#define IsWordAligned(n)	(!((size_t)(n)&1u))
Kmods SIG 8b815c
-
Kmods SIG 8b815c
 #ifdef CONFIG_PRINTK
Kmods SIG 8b815c
 __printf(2, 3)
Kmods SIG 8b815c
 void ntfs_printk(const struct super_block *sb, const char *fmt, ...);
Kmods SIG 8b815c
diff --git a/src/frecord.c b/src/frecord.c
Kmods SIG 8b815c
index e94d830b2f4a12f84bf4870219507b21042b41c0..8e2242147ebfcdc4bea3cf19d79276725f09be9b 100644
Kmods SIG 8b815c
--- a/src/frecord.c
Kmods SIG 8b815c
+++ b/src/frecord.c
Kmods SIG 8b815c
@@ -1249,7 +1249,7 @@ static int ni_expand_mft_list(struct ntfs_inode *ni)
Kmods SIG 8b815c
 	if (err < 0)
Kmods SIG 8b815c
 		goto out;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	run_size = QuadAlign(err);
Kmods SIG 8b815c
+	run_size = ALIGN(err, 8);
Kmods SIG 8b815c
 	err = 0;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (plen < svcn) {
Kmods SIG 8b815c
@@ -1269,7 +1269,7 @@ static int ni_expand_mft_list(struct ntfs_inode *ni)
Kmods SIG 8b815c
 	if (err < 0)
Kmods SIG 8b815c
 		goto out;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	run_size = QuadAlign(err);
Kmods SIG 8b815c
+	run_size = ALIGN(err, 8);
Kmods SIG 8b815c
 	err = 0;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (plen < evcn + 1 - svcn) {
Kmods SIG 8b815c
@@ -1392,7 +1392,7 @@ int ni_insert_nonresident(struct ntfs_inode *ni, enum ATTR_TYPE type,
Kmods SIG 8b815c
 	struct ATTRIB *attr;
Kmods SIG 8b815c
 	bool is_ext =
Kmods SIG 8b815c
 		(flags & (ATTR_FLAG_SPARSED | ATTR_FLAG_COMPRESSED)) && !svcn;
Kmods SIG 8b815c
-	u32 name_size = QuadAlign(name_len * sizeof(short));
Kmods SIG 8b815c
+	u32 name_size = ALIGN(name_len * sizeof(short), 8);
Kmods SIG 8b815c
 	u32 name_off = is_ext ? SIZEOF_NONRESIDENT_EX : SIZEOF_NONRESIDENT;
Kmods SIG 8b815c
 	u32 run_off = name_off + name_size;
Kmods SIG 8b815c
 	u32 run_size, asize;
Kmods SIG 8b815c
@@ -1403,7 +1403,7 @@ int ni_insert_nonresident(struct ntfs_inode *ni, enum ATTR_TYPE type,
Kmods SIG 8b815c
 	if (err < 0)
Kmods SIG 8b815c
 		goto out;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	run_size = QuadAlign(err);
Kmods SIG 8b815c
+	run_size = ALIGN(err, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (plen < len) {
Kmods SIG 8b815c
 		err = -EINVAL;
Kmods SIG 8b815c
@@ -1463,8 +1463,8 @@ int ni_insert_resident(struct ntfs_inode *ni, u32 data_size,
Kmods SIG 8b815c
 		       struct ATTRIB **new_attr, struct mft_inode **mi)
Kmods SIG 8b815c
 {
Kmods SIG 8b815c
 	int err;
Kmods SIG 8b815c
-	u32 name_size = QuadAlign(name_len * sizeof(short));
Kmods SIG 8b815c
-	u32 asize = SIZEOF_RESIDENT + name_size + QuadAlign(data_size);
Kmods SIG 8b815c
+	u32 name_size = ALIGN(name_len * sizeof(short), 8);
Kmods SIG 8b815c
+	u32 asize = SIZEOF_RESIDENT + name_size + ALIGN(data_size, 8);
Kmods SIG 8b815c
 	struct ATTRIB *attr;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	err = ni_insert_attr(ni, type, name, name_len, asize, SIZEOF_RESIDENT,
Kmods SIG 8b815c
@@ -2853,7 +2853,7 @@ static bool ni_update_parent(struct ntfs_inode *ni, struct NTFS_DUP_INFO *dup,
Kmods SIG 8b815c
 		} else if (!attr->non_res) {
Kmods SIG 8b815c
 			u32 data_size = le32_to_cpu(attr->res.data_size);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-			dup->alloc_size = cpu_to_le64(QuadAlign(data_size));
Kmods SIG 8b815c
+			dup->alloc_size = cpu_to_le64(ALIGN(data_size, 8));
Kmods SIG 8b815c
 			dup->data_size = cpu_to_le64(data_size);
Kmods SIG 8b815c
 		} else {
Kmods SIG 8b815c
 			u64 new_valid = ni->i_valid;
Kmods SIG 8b815c
diff --git a/src/fslog.c b/src/fslog.c
Kmods SIG 8b815c
index 397ba6a956e7f0e25661c88c0c91ec089c4d2103..5a118c351441cc2deca390c49cfd87d75f3e587b 100644
Kmods SIG 8b815c
--- a/src/fslog.c
Kmods SIG 8b815c
+++ b/src/fslog.c
Kmods SIG 8b815c
@@ -456,7 +456,7 @@ static inline bool is_rst_page_hdr_valid(u32 file_off,
Kmods SIG 8b815c
 		return false;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	ro = le16_to_cpu(rhdr->ra_off);
Kmods SIG 8b815c
-	if (!IsQuadAligned(ro) || ro > sys_page)
Kmods SIG 8b815c
+	if (!IS_ALIGNED(ro, 8) || ro > sys_page)
Kmods SIG 8b815c
 		return false;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	end_usa = ((sys_page >> SECTOR_SHIFT) + 1) * sizeof(short);
Kmods SIG 8b815c
@@ -488,7 +488,7 @@ static inline bool is_rst_area_valid(const struct RESTART_HDR *rhdr)
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	off = le16_to_cpu(ra->client_off);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	if (!IsQuadAligned(off) || ro + off > SECTOR_SIZE - sizeof(short))
Kmods SIG 8b815c
+	if (!IS_ALIGNED(off, 8) || ro + off > SECTOR_SIZE - sizeof(short))
Kmods SIG 8b815c
 		return false;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	off += cl * sizeof(struct CLIENT_REC);
Kmods SIG 8b815c
@@ -526,8 +526,8 @@ static inline bool is_rst_area_valid(const struct RESTART_HDR *rhdr)
Kmods SIG 8b815c
 	}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	/* The log page data offset and record header length must be quad-aligned */
Kmods SIG 8b815c
-	if (!IsQuadAligned(le16_to_cpu(ra->data_off)) ||
Kmods SIG 8b815c
-	    !IsQuadAligned(le16_to_cpu(ra->rec_hdr_len)))
Kmods SIG 8b815c
+	if (!IS_ALIGNED(le16_to_cpu(ra->data_off), 8) ||
Kmods SIG 8b815c
+	    !IS_ALIGNED(le16_to_cpu(ra->rec_hdr_len), 8))
Kmods SIG 8b815c
 		return false;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	return true;
Kmods SIG 8b815c
@@ -1355,9 +1355,9 @@ static void log_create(struct ntfs_log *log, u32 l_size, const u64 last_lsn,
Kmods SIG 8b815c
 		log->l_flags |= NTFSLOG_MULTIPLE_PAGE_IO;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	/* Compute the log page values */
Kmods SIG 8b815c
-	log->data_off = QuadAlign(
Kmods SIG 8b815c
+	log->data_off = ALIGN(
Kmods SIG 8b815c
 		offsetof(struct RECORD_PAGE_HDR, fixups) +
Kmods SIG 8b815c
-		sizeof(short) * ((log->page_size >> SECTOR_SHIFT) + 1));
Kmods SIG 8b815c
+		sizeof(short) * ((log->page_size >> SECTOR_SHIFT) + 1), 8);
Kmods SIG 8b815c
 	log->data_size = log->page_size - log->data_off;
Kmods SIG 8b815c
 	log->record_header_len = sizeof(struct LFS_RECORD_HDR);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
@@ -1365,9 +1365,9 @@ static void log_create(struct ntfs_log *log, u32 l_size, const u64 last_lsn,
Kmods SIG 8b815c
 	log->reserved = log->data_size - log->record_header_len;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	/* Compute the restart page values. */
Kmods SIG 8b815c
-	log->ra_off = QuadAlign(
Kmods SIG 8b815c
+	log->ra_off = ALIGN(
Kmods SIG 8b815c
 		offsetof(struct RESTART_HDR, fixups) +
Kmods SIG 8b815c
-		sizeof(short) * ((log->sys_page_size >> SECTOR_SHIFT) + 1));
Kmods SIG 8b815c
+		sizeof(short) * ((log->sys_page_size >> SECTOR_SHIFT) + 1), 8);
Kmods SIG 8b815c
 	log->restart_size = log->sys_page_size - log->ra_off;
Kmods SIG 8b815c
 	log->ra_size = struct_size(log->ra, clients, 1);
Kmods SIG 8b815c
 	log->current_openlog_count = open_log_count;
Kmods SIG 8b815c
@@ -1496,7 +1496,7 @@ static int next_log_lsn(struct ntfs_log *log, const struct LFS_RECORD_HDR *rh,
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		vbo = hdr_off + log->data_off;
Kmods SIG 8b815c
 	} else {
Kmods SIG 8b815c
-		vbo = QuadAlign(end);
Kmods SIG 8b815c
+		vbo = ALIGN(end, 8);
Kmods SIG 8b815c
 	}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	/* Compute the lsn based on the file offset and the sequence count */
Kmods SIG 8b815c
@@ -2982,7 +2982,7 @@ static struct ATTRIB *attr_create_nonres_log(struct ntfs_sb_info *sbi,
Kmods SIG 8b815c
 					     __le16 flags)
Kmods SIG 8b815c
 {
Kmods SIG 8b815c
 	struct ATTRIB *attr;
Kmods SIG 8b815c
-	u32 name_size = QuadAlign(name_len * sizeof(short));
Kmods SIG 8b815c
+	u32 name_size = ALIGN(name_len * sizeof(short), 8);
Kmods SIG 8b815c
 	bool is_ext = flags & (ATTR_FLAG_COMPRESSED | ATTR_FLAG_SPARSED);
Kmods SIG 8b815c
 	u32 asize = name_size +
Kmods SIG 8b815c
 		    (is_ext ? SIZEOF_NONRESIDENT_EX : SIZEOF_NONRESIDENT);
Kmods SIG 8b815c
@@ -3220,7 +3220,7 @@ static int do_action(struct ntfs_log *log, struct OPEN_ATTR_ENRTY *oe,
Kmods SIG 8b815c
 			goto dirty_vol;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		memmove(attr, attr2, dlen);
Kmods SIG 8b815c
-		rec->used = cpu_to_le32(QuadAlign(roff + dlen));
Kmods SIG 8b815c
+		rec->used = cpu_to_le32(ALIGN(roff + dlen, 8));
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		mi->dirty = true;
Kmods SIG 8b815c
 		break;
Kmods SIG 8b815c
@@ -3231,7 +3231,7 @@ static int do_action(struct ntfs_log *log, struct OPEN_ATTR_ENRTY *oe,
Kmods SIG 8b815c
 		used = le32_to_cpu(rec->used);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		if (!check_if_attr(rec, lrh) || dlen < SIZEOF_RESIDENT ||
Kmods SIG 8b815c
-		    !IsQuadAligned(asize) ||
Kmods SIG 8b815c
+		    !IS_ALIGNED(asize, 8) ||
Kmods SIG 8b815c
 		    Add2Ptr(attr2, asize) > Add2Ptr(lrh, rec_len) ||
Kmods SIG 8b815c
 		    dlen > record_size - used) {
Kmods SIG 8b815c
 			goto dirty_vol;
Kmods SIG 8b815c
@@ -3296,7 +3296,7 @@ static int do_action(struct ntfs_log *log, struct OPEN_ATTR_ENRTY *oe,
Kmods SIG 8b815c
 		if (nsize > asize && nsize - asize > record_size - used)
Kmods SIG 8b815c
 			goto dirty_vol;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-		nsize = QuadAlign(nsize);
Kmods SIG 8b815c
+		nsize = ALIGN(nsize, 8);
Kmods SIG 8b815c
 		data_off = le16_to_cpu(attr->res.data_off);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		if (nsize < asize) {
Kmods SIG 8b815c
@@ -3341,7 +3341,7 @@ static int do_action(struct ntfs_log *log, struct OPEN_ATTR_ENRTY *oe,
Kmods SIG 8b815c
 			goto dirty_vol;
Kmods SIG 8b815c
 		}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-		nsize = QuadAlign(nsize);
Kmods SIG 8b815c
+		nsize = ALIGN(nsize, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		memmove(Add2Ptr(attr, nsize), Add2Ptr(attr, asize),
Kmods SIG 8b815c
 			used - le16_to_cpu(lrh->record_off) - asize);
Kmods SIG 8b815c
@@ -5103,8 +5103,8 @@ int log_replay(struct ntfs_inode *ni, bool *initialized)
Kmods SIG 8b815c
 	rh->sys_page_size = cpu_to_le32(log->page_size);
Kmods SIG 8b815c
 	rh->page_size = cpu_to_le32(log->page_size);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	t16 = QuadAlign(offsetof(struct RESTART_HDR, fixups) +
Kmods SIG 8b815c
-			sizeof(short) * t16);
Kmods SIG 8b815c
+	t16 = ALIGN(offsetof(struct RESTART_HDR, fixups) +
Kmods SIG 8b815c
+		    sizeof(short) * t16, 8);
Kmods SIG 8b815c
 	rh->ra_off = cpu_to_le16(t16);
Kmods SIG 8b815c
 	rh->minor_ver = cpu_to_le16(1); // 0x1A:
Kmods SIG 8b815c
 	rh->major_ver = cpu_to_le16(1); // 0x1C:
Kmods SIG 8b815c
diff --git a/src/fsntfs.c b/src/fsntfs.c
Kmods SIG 8b815c
index c6599c514acf630183cd5eeef7a1630ea0ec6a75..e887921a117d9124c6d4987397a694f7c99a09ea 100644
Kmods SIG 8b815c
--- a/src/fsntfs.c
Kmods SIG 8b815c
+++ b/src/fsntfs.c
Kmods SIG 8b815c
@@ -1944,7 +1944,7 @@ int ntfs_security_init(struct ntfs_sb_info *sbi)
Kmods SIG 8b815c
 	sbi->security.next_id = SECURITY_ID_FIRST;
Kmods SIG 8b815c
 	/* Always write new security at the end of bucket */
Kmods SIG 8b815c
 	sbi->security.next_off =
Kmods SIG 8b815c
-		Quad2Align(sds_size - SecurityDescriptorsBlockSize);
Kmods SIG 8b815c
+			ALIGN(sds_size - SecurityDescriptorsBlockSize, 16);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	off = 0;
Kmods SIG 8b815c
 	ne = NULL;
Kmods SIG 8b815c
@@ -2096,7 +2096,7 @@ int ntfs_insert_security(struct ntfs_sb_info *sbi,
Kmods SIG 8b815c
 	struct NTFS_DE_SII sii_e;
Kmods SIG 8b815c
 	struct SECURITY_HDR *d_security;
Kmods SIG 8b815c
 	u32 new_sec_size = size_sd + SIZEOF_SECURITY_HDR;
Kmods SIG 8b815c
-	u32 aligned_sec_size = Quad2Align(new_sec_size);
Kmods SIG 8b815c
+	u32 aligned_sec_size = ALIGN(new_sec_size, 16);
Kmods SIG 8b815c
 	struct SECURITY_KEY hash_key;
Kmods SIG 8b815c
 	struct ntfs_fnd *fnd_sdh = NULL;
Kmods SIG 8b815c
 	const struct INDEX_ROOT *root_sdh;
Kmods SIG 8b815c
diff --git a/src/index.c b/src/index.c
Kmods SIG 8b815c
index 189d46e2c38db2696073df47d778e1e190cc0d1f..cc03cb953dd0c6f76aa900a7ee8ae2daf41d55b2 100644
Kmods SIG 8b815c
--- a/src/index.c
Kmods SIG 8b815c
+++ b/src/index.c
Kmods SIG 8b815c
@@ -702,7 +702,7 @@ static struct NTFS_DE *hdr_find_e(const struct ntfs_index *indx,
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (max_idx >= nslots) {
Kmods SIG 8b815c
 		u16 *ptr;
Kmods SIG 8b815c
-		int new_slots = QuadAlign(2 * nslots);
Kmods SIG 8b815c
+		int new_slots = ALIGN(2 * nslots, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		ptr = ntfs_malloc(sizeof(u16) * new_slots);
Kmods SIG 8b815c
 		if (ptr)
Kmods SIG 8b815c
@@ -959,7 +959,7 @@ static struct indx_node *indx_new(struct ntfs_index *indx,
Kmods SIG 8b815c
 	index->rhdr.fix_num = cpu_to_le16(fn);
Kmods SIG 8b815c
 	index->vbn = cpu_to_le64(vbn);
Kmods SIG 8b815c
 	hdr = &index->ihdr;
Kmods SIG 8b815c
-	eo = QuadAlign(sizeof(struct INDEX_BUFFER) + fn * sizeof(short));
Kmods SIG 8b815c
+	eo = ALIGN(sizeof(struct INDEX_BUFFER) + fn * sizeof(short), 8);
Kmods SIG 8b815c
 	hdr->de_off = cpu_to_le32(eo);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	e = Add2Ptr(hdr, eo);
Kmods SIG 8b815c
diff --git a/src/inode.c b/src/inode.c
Kmods SIG 8b815c
index ed64489edf73ddec8fd582851d3ef2ec79625d27..3a857e575ef23d059b5eb761d3b91df52a592037 100644
Kmods SIG 8b815c
--- a/src/inode.c
Kmods SIG 8b815c
+++ b/src/inode.c
Kmods SIG 8b815c
@@ -1335,7 +1335,7 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
Kmods SIG 8b815c
 	fname->dup.ea_size = fname->dup.reparse = 0;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	dsize = le16_to_cpu(new_de->key_size);
Kmods SIG 8b815c
-	asize = QuadAlign(SIZEOF_RESIDENT + dsize);
Kmods SIG 8b815c
+	asize = ALIGN(SIZEOF_RESIDENT + dsize, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	attr->type = ATTR_NAME;
Kmods SIG 8b815c
 	attr->size = cpu_to_le32(asize);
Kmods SIG 8b815c
@@ -1349,7 +1349,7 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (security_id == SECURITY_ID_INVALID) {
Kmods SIG 8b815c
 		/* Insert security attribute */
Kmods SIG 8b815c
-		asize = SIZEOF_RESIDENT + QuadAlign(sd_size);
Kmods SIG 8b815c
+		asize = SIZEOF_RESIDENT + ALIGN(sd_size, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		attr->type = ATTR_SECURE;
Kmods SIG 8b815c
 		attr->size = cpu_to_le32(asize);
Kmods SIG 8b815c
@@ -1472,7 +1472,7 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
Kmods SIG 8b815c
 		attr->id = cpu_to_le16(aid++);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		/* resident or non resident? */
Kmods SIG 8b815c
-		asize = QuadAlign(SIZEOF_RESIDENT + nsize);
Kmods SIG 8b815c
+		asize = ALIGN(SIZEOF_RESIDENT + nsize, 8);
Kmods SIG 8b815c
 		t16 = PtrOffset(rec, attr);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		if (asize + t16 + 8 > sbi->record_size) {
Kmods SIG 8b815c
@@ -1508,7 +1508,7 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
Kmods SIG 8b815c
 				goto out5;
Kmods SIG 8b815c
 			}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-			asize = SIZEOF_NONRESIDENT + QuadAlign(err);
Kmods SIG 8b815c
+			asize = SIZEOF_NONRESIDENT + ALIGN(err, 8);
Kmods SIG 8b815c
 			inode->i_size = nsize;
Kmods SIG 8b815c
 		} else {
Kmods SIG 8b815c
 			attr->res.data_off = SIZEOF_RESIDENT_LE;
Kmods SIG 8b815c
diff --git a/src/namei.c b/src/namei.c
Kmods SIG 8b815c
index b1ccd66172f29d2e3a324ab620483c44602294f7..0626844e6bdc72ccd21d839175205875d4b52f63 100644
Kmods SIG 8b815c
--- a/src/namei.c
Kmods SIG 8b815c
+++ b/src/namei.c
Kmods SIG 8b815c
@@ -57,7 +57,7 @@ int fill_name_de(struct ntfs_sb_info *sbi, void *buf, const struct qstr *name,
Kmods SIG 8b815c
 	fname->type = FILE_NAME_POSIX;
Kmods SIG 8b815c
 	data_size = fname_full_size(fname);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	e->size = cpu_to_le16(QuadAlign(data_size) + sizeof(struct NTFS_DE));
Kmods SIG 8b815c
+	e->size = cpu_to_le16(ALIGN(data_size, 8) + sizeof(struct NTFS_DE));
Kmods SIG 8b815c
 	e->key_size = cpu_to_le16(data_size);
Kmods SIG 8b815c
 	e->flags = 0;
Kmods SIG 8b815c
 	e->res = 0;
Kmods SIG 8b815c
diff --git a/src/ntfs.h b/src/ntfs.h
Kmods SIG 8b815c
index 16da514af124695bf751459672adb009301a9cdc..f6d6f1bd312e75ac5c5a61c9baa3d4cb7c5c9f19 100644
Kmods SIG 8b815c
--- a/src/ntfs.h
Kmods SIG 8b815c
+++ b/src/ntfs.h
Kmods SIG 8b815c
@@ -392,8 +392,8 @@ static inline u64 attr_ondisk_size(const struct ATTRIB *attr)
Kmods SIG 8b815c
 	return attr->non_res ? ((attr->flags &
Kmods SIG 8b815c
 				 (ATTR_FLAG_COMPRESSED | ATTR_FLAG_SPARSED)) ?
Kmods SIG 8b815c
 					le64_to_cpu(attr->nres.total_size) :
Kmods SIG 8b815c
-					le64_to_cpu(attr->nres.alloc_size)) :
Kmods SIG 8b815c
-			       QuadAlign(le32_to_cpu(attr->res.data_size));
Kmods SIG 8b815c
+					le64_to_cpu(attr->nres.alloc_size))
Kmods SIG 8b815c
+			     : ALIGN(le32_to_cpu(attr->res.data_size), 8);
Kmods SIG 8b815c
 }
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 static inline u64 attr_size(const struct ATTRIB *attr)
Kmods SIG 8b815c
@@ -529,8 +529,8 @@ static_assert(sizeof(struct ATTR_LIST_ENTRY) == 0x20);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 static inline u32 le_size(u8 name_len)
Kmods SIG 8b815c
 {
Kmods SIG 8b815c
-	return QuadAlign(offsetof(struct ATTR_LIST_ENTRY, name) +
Kmods SIG 8b815c
-			 name_len * sizeof(short));
Kmods SIG 8b815c
+	return ALIGN(offsetof(struct ATTR_LIST_ENTRY, name) +
Kmods SIG 8b815c
+		     name_len * sizeof(short), 8);
Kmods SIG 8b815c
 }
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 /* returns 0 if 'attr' has the same type and name */
Kmods SIG 8b815c
@@ -691,10 +691,10 @@ static inline bool de_has_vcn_ex(const struct NTFS_DE *e)
Kmods SIG 8b815c
 							sizeof(__le64)));
Kmods SIG 8b815c
 }
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-#define MAX_BYTES_PER_NAME_ENTRY					       \
Kmods SIG 8b815c
-	QuadAlign(sizeof(struct NTFS_DE) +				       \
Kmods SIG 8b815c
-		  offsetof(struct ATTR_FILE_NAME, name) +		       \
Kmods SIG 8b815c
-		  NTFS_NAME_LEN * sizeof(short))
Kmods SIG 8b815c
+#define MAX_BYTES_PER_NAME_ENTRY \
Kmods SIG 8b815c
+	ALIGN(sizeof(struct NTFS_DE) + \
Kmods SIG 8b815c
+	      offsetof(struct ATTR_FILE_NAME, name) + \
Kmods SIG 8b815c
+	      NTFS_NAME_LEN * sizeof(short), 8)
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 struct INDEX_HDR {
Kmods SIG 8b815c
 	__le32 de_off;	// 0x00: The offset from the start of this structure
Kmods SIG 8b815c
diff --git a/src/ntfs_fs.h b/src/ntfs_fs.h
Kmods SIG 8b815c
index b5da2f06f7cbd087a3de12e0767fa2e5755033f9..d4dd19b822bc2678c3e3432a2d73f21ce0f31256 100644
Kmods SIG 8b815c
--- a/src/ntfs_fs.h
Kmods SIG 8b815c
+++ b/src/ntfs_fs.h
Kmods SIG 8b815c
@@ -900,7 +900,7 @@ static inline bool run_is_empty(struct runs_tree *run)
Kmods SIG 8b815c
 /* NTFS uses quad aligned bitmaps */
Kmods SIG 8b815c
 static inline size_t bitmap_size(size_t bits)
Kmods SIG 8b815c
 {
Kmods SIG 8b815c
-	return QuadAlign((bits + 7) >> 3);
Kmods SIG 8b815c
+	return ALIGN((bits + 7) >> 3, 8);
Kmods SIG 8b815c
 }
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 #define _100ns2seconds 10000000
Kmods SIG 8b815c
diff --git a/src/record.c b/src/record.c
Kmods SIG 8b815c
index 0d4a6251bddcbd689db9eab4993ccc9675ab3838..721c14f83e2b37389a2aa23b7bb1aeffab5fd5fb 100644
Kmods SIG 8b815c
--- a/src/record.c
Kmods SIG 8b815c
+++ b/src/record.c
Kmods SIG 8b815c
@@ -206,7 +206,7 @@ struct ATTRIB *mi_enum_attr(struct mft_inode *mi, struct ATTRIB *attr)
Kmods SIG 8b815c
 			return NULL;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 		if (off >= used || off < MFTRECORD_FIXUP_OFFSET_1 ||
Kmods SIG 8b815c
-		    !IsDwordAligned(off)) {
Kmods SIG 8b815c
+		    !IS_ALIGNED(off, 4)) {
Kmods SIG 8b815c
 			return NULL;
Kmods SIG 8b815c
 		}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
@@ -235,7 +235,7 @@ struct ATTRIB *mi_enum_attr(struct mft_inode *mi, struct ATTRIB *attr)
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	/* Can we use the first field (attr->type) */
Kmods SIG 8b815c
 	if (off + 8 > used) {
Kmods SIG 8b815c
-		static_assert(QuadAlign(sizeof(enum ATTR_TYPE)) == 8);
Kmods SIG 8b815c
+		static_assert(ALIGN(sizeof(enum ATTR_TYPE), 8) == 8);
Kmods SIG 8b815c
 		return NULL;
Kmods SIG 8b815c
 	}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
@@ -539,7 +539,7 @@ bool mi_resize_attr(struct mft_inode *mi, struct ATTRIB *attr, int bytes)
Kmods SIG 8b815c
 	next = Add2Ptr(attr, asize);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	if (bytes > 0) {
Kmods SIG 8b815c
-		dsize = QuadAlign(bytes);
Kmods SIG 8b815c
+		dsize = ALIGN(bytes, 8);
Kmods SIG 8b815c
 		if (used + dsize > total)
Kmods SIG 8b815c
 			return false;
Kmods SIG 8b815c
 		nsize = asize + dsize;
Kmods SIG 8b815c
@@ -549,7 +549,7 @@ bool mi_resize_attr(struct mft_inode *mi, struct ATTRIB *attr, int bytes)
Kmods SIG 8b815c
 		used += dsize;
Kmods SIG 8b815c
 		rsize += dsize;
Kmods SIG 8b815c
 	} else {
Kmods SIG 8b815c
-		dsize = QuadAlign(-bytes);
Kmods SIG 8b815c
+		dsize = ALIGN(-bytes, 8);
Kmods SIG 8b815c
 		if (dsize > asize)
Kmods SIG 8b815c
 			return false;
Kmods SIG 8b815c
 		nsize = asize - dsize;
Kmods SIG 8b815c
@@ -596,7 +596,7 @@ int mi_pack_runs(struct mft_inode *mi, struct ATTRIB *attr,
Kmods SIG 8b815c
 		return err;
Kmods SIG 8b815c
 	}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	new_run_size = QuadAlign(err);
Kmods SIG 8b815c
+	new_run_size = ALIGN(err, 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	memmove(next + new_run_size - run_size, next + dsize, tail);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
diff --git a/src/super.c b/src/super.c
Kmods SIG 8b815c
index 903975b7e832f627476fd8da4ec6e5fc9f080818..7a501bca26d7916d23dc64d7919d4ad1384d5765 100644
Kmods SIG 8b815c
--- a/src/super.c
Kmods SIG 8b815c
+++ b/src/super.c
Kmods SIG 8b815c
@@ -809,9 +809,9 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size,
Kmods SIG 8b815c
 	sbi->attr_size_tr = (5 * record_size >> 4); // ~320 bytes
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	sbi->max_bytes_per_attr =
Kmods SIG 8b815c
-		record_size - QuadAlign(MFTRECORD_FIXUP_OFFSET_1) -
Kmods SIG 8b815c
-		QuadAlign(((record_size >> SECTOR_SHIFT) * sizeof(short))) -
Kmods SIG 8b815c
-		QuadAlign(sizeof(enum ATTR_TYPE));
Kmods SIG 8b815c
+		record_size - ALIGN(MFTRECORD_FIXUP_OFFSET_1, 8) -
Kmods SIG 8b815c
+		ALIGN(((record_size >> SECTOR_SHIFT) * sizeof(short)), 8) -
Kmods SIG 8b815c
+		ALIGN(sizeof(enum ATTR_TYPE), 8);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	sbi->index_size = boot->index_size < 0
Kmods SIG 8b815c
 				  ? 1u << (-boot->index_size)
Kmods SIG 8b815c
@@ -859,9 +859,9 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size,
Kmods SIG 8b815c
 	rec->rhdr.fix_off = cpu_to_le16(MFTRECORD_FIXUP_OFFSET_1);
Kmods SIG 8b815c
 	fn = (sbi->record_size >> SECTOR_SHIFT) + 1;
Kmods SIG 8b815c
 	rec->rhdr.fix_num = cpu_to_le16(fn);
Kmods SIG 8b815c
-	ao = QuadAlign(MFTRECORD_FIXUP_OFFSET_1 + sizeof(short) * fn);
Kmods SIG 8b815c
+	ao = ALIGN(MFTRECORD_FIXUP_OFFSET_1 + sizeof(short) * fn, 8);
Kmods SIG 8b815c
 	rec->attr_off = cpu_to_le16(ao);
Kmods SIG 8b815c
-	rec->used = cpu_to_le32(ao + QuadAlign(sizeof(enum ATTR_TYPE)));
Kmods SIG 8b815c
+	rec->used = cpu_to_le32(ao + ALIGN(sizeof(enum ATTR_TYPE), 8));
Kmods SIG 8b815c
 	rec->total = cpu_to_le32(sbi->record_size);
Kmods SIG 8b815c
 	((struct ATTRIB *)Add2Ptr(rec, ao))->type = ATTR_END;
Kmods SIG 8b815c
 
Kmods SIG 8b815c
diff --git a/src/xattr.c b/src/xattr.c
Kmods SIG 8b815c
index 98871c895e77b165bede3fbd1e50b91d5e07b106..6b17d46b9506ccaa6a6a06dfaf4dde00524186e2 100644
Kmods SIG 8b815c
--- a/src/xattr.c
Kmods SIG 8b815c
+++ b/src/xattr.c
Kmods SIG 8b815c
@@ -26,9 +26,9 @@
Kmods SIG 8b815c
 static inline size_t unpacked_ea_size(const struct EA_FULL *ea)
Kmods SIG 8b815c
 {
Kmods SIG 8b815c
 	return ea->size ? le32_to_cpu(ea->size)
Kmods SIG 8b815c
-			: DwordAlign(struct_size(
Kmods SIG 8b815c
-				  ea, name,
Kmods SIG 8b815c
-				  1 + ea->name_len + le16_to_cpu(ea->elength)));
Kmods SIG 8b815c
+			: ALIGN(struct_size(
Kmods SIG 8b815c
+			      ea, name,
Kmods SIG 8b815c
+			      1 + ea->name_len + le16_to_cpu(ea->elength)), 4);
Kmods SIG 8b815c
 }
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 static inline size_t packed_ea_size(const struct EA_FULL *ea)
Kmods SIG 8b815c
@@ -289,7 +289,7 @@ static noinline int ntfs_set_ea(struct inode *inode, const char *name,
Kmods SIG 8b815c
 		goto out;
Kmods SIG 8b815c
 	}
Kmods SIG 8b815c
 
Kmods SIG 8b815c
-	add = DwordAlign(struct_size(ea_all, name, 1 + name_len + val_size));
Kmods SIG 8b815c
+	add = ALIGN(struct_size(ea_all, name, 1 + name_len + val_size), 4);
Kmods SIG 8b815c
 
Kmods SIG 8b815c
 	err = ntfs_read_ea(ni, &ea_all, add, &info;;
Kmods SIG 8b815c
 	if (err)
Kmods SIG 8b815c
-- 
Kmods SIG 8b815c
2.31.1
Kmods SIG 8b815c