complete_management_orb(struct sbp2_orb *base_orb, struct sbp2_status *status)
 {
        struct sbp2_management_orb *orb =
-           (struct sbp2_management_orb *)base_orb;
+               container_of(base_orb, struct sbp2_management_orb, base);
 
        if (status)
                memcpy(&orb->status, status, sizeof(*status));
 static void
 complete_command_orb(struct sbp2_orb *base_orb, struct sbp2_status *status)
 {
-       struct sbp2_command_orb *orb = (struct sbp2_command_orb *)base_orb;
+       struct sbp2_command_orb *orb =
+               container_of(base_orb, struct sbp2_command_orb, base);
        struct fw_unit *unit = orb->unit;
        struct fw_device *device = fw_device(unit->device.parent);
        struct scatterlist *sg;