projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lfsr: ensure we don't generate an offset + buflen that exceeds the max size
[fio.git]
/
lib
/
lfsr.c
diff --git
a/lib/lfsr.c
b/lib/lfsr.c
index 8a70029627a34ccbec53a104f879c94ec6498234..975c6a5aaf6b813e5a1d4e6bd7ec63e65e67a5ae 100644
(file)
--- a/
lib/lfsr.c
+++ b/
lib/lfsr.c
@@
-216,14
+216,15
@@
static uint64_t __lfsr_next(uint64_t v, struct lfsr_taps *lt)
return xor_mask | (v >> 1);
}
return xor_mask | (v >> 1);
}
-int lfsr_next(struct fio_lfsr *fl, uint64_t *off)
+int lfsr_next(struct fio_lfsr *fl, uint64_t *off
, uint64_t last
)
{
if (fl->num_vals > fl->max_val)
return 1;
do {
fl->last_val = __lfsr_next(fl->last_val, &fl->taps);
{
if (fl->num_vals > fl->max_val)
return 1;
do {
fl->last_val = __lfsr_next(fl->last_val, &fl->taps);
- if (fl->last_val - 1 <= fl->max_val)
+ if (fl->last_val - 1 <= fl->max_val &&
+ fl->last_val <= last)
break;
} while (1);
break;
} while (1);