Bug#604627: linux-image-2.6.32-5-amd64: megasas: Failed to alloc kernel SGL buffer for IOCTL
Ben Hutchings <ben@decadent.org.uk> writes:
> On Tue, 2011-01-25 at 09:24 +0100, Bjørn Mork wrote:
>> Marc-Christian Petersen <m.c.p@gmx.de> writes:
>>
>> > so, what's up with this fix? Any chance to get it into Debians kernel tree?
>> >
>> > It's kind of uncomfortable to rebuild the whole kernel, with this applied,
>> > when Debian releases a new kernel which happens frequently ;->
>>
>> I fully understand. I must admit that I thought it would be a no-brainer
>> to verify this and get it into the upstream and the 2.6.32.x stable tree.
> [...]
>
> Your patch removes the initialisation of kern_sge32[i] when
> ioc->sgl[i].iov_len is zero. I think it should at least set the length
> to zero.
Yes, you are of course right. I just considered it's usage in that
function, where it won't be used as long as kbuff_arr[i] is 0, but
kern_sge32[i] should be set to be absolutely safe with the firmware.
> Perhaps it's safest to pass max(ioc->sgl[i].iov_len, 1) as the length
> parameter to dma_alloc_coherent().
I agree that it would fix things, and that may be appropriate for a
Debian specific workaround where the workaround context always is clear,
but I don't think it's good as a permanent fix. Reading the patched
code would be very confusing. Not allocating 0 is self-explanatory.
Bjørn
Reply to: