]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
librbd/cache/pwl/ssd: fix use-after-free on C_BlockIORequest 42145/head
authorHualong Feng <hualong.feng@intel.com>
Fri, 2 Jul 2021 01:49:39 +0000 (09:49 +0800)
committerFeng Hualong <hualong.feng@intel.com>
Wed, 14 Jul 2021 07:48:42 +0000 (15:48 +0800)
commit2dc3b8881290f1e12c536a232bea37547a73a45b
tree64dce869f26898f2aaf93bf1f044d2781ebb282a
parent048775813d48c64c2473f103f40bb908fd78f826
librbd/cache/pwl/ssd: fix use-after-free on C_BlockIORequest

In setup_schedule_append() function, its first expression
will cause the req to be deleted, and subsequent use of
the variable req becomes an illegal operation. And due to
delete, rep->m_image_ctx will be empty, so it lead to
segfault in AbstractWriteLog::get_context().
So pass the `req` into `schedule_append()` function.

Fixes: https://tracker.ceph.com/issues/50951
Signed-off-by: Hualong Feng <hualong.feng@intel.com>
src/librbd/cache/pwl/AbstractWriteLog.cc
src/librbd/cache/pwl/AbstractWriteLog.h
src/librbd/cache/pwl/rwl/WriteLog.cc
src/librbd/cache/pwl/rwl/WriteLog.h
src/librbd/cache/pwl/ssd/WriteLog.cc
src/librbd/cache/pwl/ssd/WriteLog.h