Project

General

Profile

Actions

Bug #8628

closed

Bad ceph_osd_op.extent union access in ReplicatedPG::do_osd_ops

Added by Adam Crume almost 10 years ago. Updated almost 10 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
OSD
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

ReplicatedPG::do_osd_ops reads and modifies ceph_osd_op.extent regardless of the operation, and therefore regardless of whether that member of the union is valid. This could result in watch.flag, clonerange.src_offset, or copy_from.flags in the ceph_osd_op being spuriously set to 0.

To replicate (in theory, untested):
1. Create a ceph_osd_op, set extent.truncate_size to -1, and extent.truncate_seq to 1
2. Re-initialize the ceph_osd_op for a watch operation, and set watch.flag to 0xff
3. Run the op on ReplicatedPG

Actions

Also available in: Atom PDF