Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37e4c13b authored by Anton Altaparmakov's avatar Anton Altaparmakov
Browse files

NTFS: Fix a nasty runlist merge bug when merging two holes.

parent d8ec785e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -72,9 +72,10 @@ ToDo/Notes:
	  runlist.  This allows us to find runlist elements with the runlist
	  lock already held without having to drop and reacquire it around the
	  call.  Adapt all callers.
	- Change time to u64 time.h::ntfs2utc() as it otherwise generates a
	- Change time to u64 in time.h::ntfs2utc() as it otherwise generates a
	  warning in the do_div() call on sparc32.  Thanks to Meelis Roos for
	  the report and analysis of the warning.
	- Fix a nasty runlist merge bug when merging two holes.

2.1.22 - Many bug and race fixes and error handling improvements.

+4 −1
Original line number Diff line number Diff line
@@ -113,8 +113,11 @@ static inline BOOL ntfs_are_rl_mergeable(runlist_element *dst,
	BUG_ON(!dst);
	BUG_ON(!src);

	if ((dst->lcn < 0) || (src->lcn < 0))     /* Are we merging holes? */
	if ((dst->lcn < 0) || (src->lcn < 0)) {   /* Are we merging holes? */
		if (dst->lcn == LCN_HOLE && src->lcn == LCN_HOLE)
			return TRUE;
		return FALSE;
	}
	if ((dst->lcn + dst->length) != src->lcn) /* Are the runs contiguous? */
		return FALSE;
	if ((dst->vcn + dst->length) != src->vcn) /* Are the runs misaligned? */