Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffefb8ea authored by Boaz Harrosh's avatar Boaz Harrosh
Browse files

ore: Fix crash in case of an IO error.



The users of ore_check_io() expect the reported device
(In case of error) to be indexed relative to the passed-in
ore_components table, and not the logical dev index.

This causes a crash inside objlayoutdriver in case of
an IO error.

[Bug in 3.2.0 Kernel]
CC: Stable Tree <stable@kernel.org>
Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
parent 831c2dc5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -445,10 +445,10 @@ int ore_check_io(struct ore_io_state *ios, ore_on_dev_error on_dev_error)
			u64 residual = ios->reading ?
					or->in.residual : or->out.residual;
			u64 offset = (ios->offset + ios->length) - residual;
			struct ore_dev *od = ios->oc->ods[
					per_dev->dev - ios->oc->first_dev];
			unsigned dev = per_dev->dev - ios->oc->first_dev;
			struct ore_dev *od = ios->oc->ods[dev];

			on_dev_error(ios, od, per_dev->dev, osi.osd_err_pri,
			on_dev_error(ios, od, dev, osi.osd_err_pri,
				     offset, residual);
		}
		if (osi.osd_err_pri >= acumulated_osd_err) {