mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-27 13:05:03 +08:00
drbd: bm_page_async_io: properly initialize page->private
If bm_page_async_io is advised to use a new page for I/O (BM_AIO_COPY_PAGES is set), it will get it from a mempool. Once the mempool has to dip into its reserves the page is not reinitialized, i.e. page->private contains garbage, which will lead to various problems once the I/O completes (dereferences of NULL pointers, the submitting thread getting stuck in D-state, ...). Signed-off-by: Arne Redlich <arne.redlich@googlemail.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
a220d29180
commit
f66ee69746
@ -200,7 +200,7 @@ void drbd_bm_unlock(struct drbd_conf *mdev)
|
||||
static void bm_store_page_idx(struct page *page, unsigned long idx)
|
||||
{
|
||||
BUG_ON(0 != (idx & ~BM_PAGE_IDX_MASK));
|
||||
page_private(page) |= idx;
|
||||
set_page_private(page, idx);
|
||||
}
|
||||
|
||||
static unsigned long bm_page_to_idx(struct page *page)
|
||||
|
Loading…
Reference in New Issue
Block a user