Details
-
Bug
-
Resolution: Unresolved
-
Blocker
-
Lustre 2.16.1
-
None
-
3
-
9223372036854775807
Description
u64 lov_stripe_size(struct lov_stripe_md *lsm, int index, u64 ost_size, int stripeno) { u32 ssize = lsm->lsm_entries[index]->lsme_stripe_size; .. if (stripe_size) lov_size = ost_size * swidth + stripeno * ssize + stripe_size; else lov_size = (ost_size - 1) * swidth + (stripeno + 1) * ssize;
(stripeno + 1) * ssize operates on 2 32-bit integers and may overflow. For instance if stripeno == 31 and ssize == 128 * 1048576.
The causes miscalculation of file size.
Attachments
Issue Links
- is related to
-
LU-6174 do_div() silently truncates divisor to uint32_t
-
- Resolved
-
Activity
Link | New: This issue is related to EX-12337 [ EX-12337 ] |
Affects Version/s | New: Lustre 2.16.1 [ 16820 ] |
Fix Version/s | New: Lustre 2.17.0 [ 16192 ] |
Priority | Original: Minor [ 4 ] | New: Blocker [ 1 ] |
Assignee | Original: WC Triage [ wc-triage ] | New: Vladimir Saveliev [ vsaveliev ] |
"Vladimir Saveliev <vladimir.saveliev@hpe.com>" uploaded a new patch: https://review.whamcloud.com/c/fs/lustre-release/+/59436
Subject: LU-19059 lov: fix lov_stripe_set
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: 010f2fde2995d6eb18837ed87929cf91c6f15c4e