aboutsummaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorKonstantin Khlebnikov <khlebnikov@yandex-team.ru>2016-11-27 19:32:32 +0300
committerMister Oyster <oysterized@gmail.com>2017-07-04 11:50:58 +0200
commit932ad580d6714044f775f7faf58c00b00e810fec (patch)
tree1b5ffbfd83d51f451fc29d7dbeeea9ed6af940b4 /include/linux
parentce8eb24f7bbf9494ca611c10236ae751ffa23b31 (diff)
md/raid5: limit request size according to implementation limits
commit e8d7c33232e5fdfa761c3416539bc5b4acd12db5 upstream. Current implementation employ 16bit counter of active stripes in lower bits of bio->bi_phys_segments. If request is big enough to overflow this counter bio will be completed and freed too early. Fortunately this not happens in default configuration because several other limits prevent that: stripe_cache_size * nr_disks effectively limits count of active stripes. And small max_sectors_kb at lower disks prevent that during normal read/write operations. Overflow easily happens in discard if it's enabled by module parameter "devices_handle_discard_safely" and stripe_cache_size is set big enough. This patch limits requests size with 256Mb - 8Kb to prevent overflows. Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Cc: Shaohua Li <shli@kernel.org> Cc: Neil Brown <neilb@suse.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Willy Tarreau <w@1wt.eu>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions