mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
libceph: fix oops in ceph_msg_data_{pages,pagelist}_advance()
When there is no more data, ceph_msg_data_{pages,pagelist}_advance() should not move on to the next page. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
This commit is contained in:
parent
5f75ce5781
commit
d90deda69c
@ -919,6 +919,9 @@ static bool ceph_msg_data_pages_advance(struct ceph_msg_data_cursor *cursor,
|
||||
if (!bytes || cursor->page_offset)
|
||||
return false; /* more bytes to process in the current page */
|
||||
|
||||
if (!cursor->resid)
|
||||
return false; /* no more data */
|
||||
|
||||
/* Move on to the next page; offset is already at 0 */
|
||||
|
||||
BUG_ON(cursor->page_index >= cursor->page_count);
|
||||
@ -1004,6 +1007,9 @@ static bool ceph_msg_data_pagelist_advance(struct ceph_msg_data_cursor *cursor,
|
||||
if (!bytes || cursor->offset & ~PAGE_MASK)
|
||||
return false; /* more bytes to process in the current page */
|
||||
|
||||
if (!cursor->resid)
|
||||
return false; /* no more data */
|
||||
|
||||
/* Move on to the next page */
|
||||
|
||||
BUG_ON(list_is_last(&cursor->page->lru, &pagelist->head));
|
||||
|
Loading…
Reference in New Issue
Block a user