forked from Minki/linux
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: Boaz Harrosh <bharrosh@panasas.com>
This commit is contained in:
parent
831c2dc5f4
commit
ffefb8eaa3
@ -445,10 +445,10 @@ int ore_check_io(struct ore_io_state *ios, ore_on_dev_error on_dev_error)
|
|||||||
u64 residual = ios->reading ?
|
u64 residual = ios->reading ?
|
||||||
or->in.residual : or->out.residual;
|
or->in.residual : or->out.residual;
|
||||||
u64 offset = (ios->offset + ios->length) - residual;
|
u64 offset = (ios->offset + ios->length) - residual;
|
||||||
struct ore_dev *od = ios->oc->ods[
|
unsigned dev = per_dev->dev - ios->oc->first_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);
|
offset, residual);
|
||||||
}
|
}
|
||||||
if (osi.osd_err_pri >= acumulated_osd_err) {
|
if (osi.osd_err_pri >= acumulated_osd_err) {
|
||||||
|
Loading…
Reference in New Issue
Block a user