(Sorry for the delay and probable mail corruption, I'm travelling) [snip] > for (i = 0; i < offset_count; i++) > if ((x = abituguru3_read(data, bank, offset + i, count, > - buf + i * count)) != count) > - return i * count + (i && (x < 0)) ? 0 : x; > + buf + i * count)) != count) { > + if (x < 0) > + return x; > + return i * count + x; > + } > > return i * count; > } > > Objections? I have no objections to this patch. However, if propagating errors up the stack is desirable, I think it would also be prudent to fix abituguru3_update_device() to pass the error back via ERR_PTR() or similar, instead of returning NULL. That way, show_value(), show_alarm() and abituguru3_probe() could return f.e. -EIO, generated by abituguru3_read(). This change is more involved; I can send a follow up for a later time-frame if desired. -- Cheers, Alistair.