From: Jeff Layton Date: Tue, 13 Jul 2021 13:50:50 +0000 (-0400) Subject: osd: don't assert on zero-length OP_ZERO request X-Git-Tag: v17.1.0~1248^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=234ef4ed341bea8cf91e52a7d14854b2b1c26dba;p=ceph.git osd: don't assert on zero-length OP_ZERO request I was able to crash the OSD by sending it a CEPH_OSD_OP_ZERO request that had an op.extent.length that was 0. Convert that to a no-op instead. Fixes: https://tracker.ceph.com/issues/51644 Signed-off-by: Jeff Layton --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index ac631a7f1f5..64e596b107a 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -6811,8 +6811,7 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector& ops) if (result < 0) break; - ceph_assert(op.extent.length); - if (obs.exists && !oi.is_whiteout()) { + if (op.extent.length && obs.exists && !oi.is_whiteout()) { t->zero(soid, op.extent.offset, op.extent.length); interval_set ch; ch.insert(op.extent.offset, op.extent.length);