On Sat, 12 Sep 2009, Mark Brown wrote:
On Fri, Sep 11, 2009 at 06:23:04PM +0200, Julia Lawall wrote:
From: Julia Lawall julia@diku.dk
Error handling code following a kzalloc should free the allocated data. Error handling code following an ioremap should iounmap the allocated data.
This doesn't seem to be a complete fix for the issue. There are several other places where the function can fail but which don't do this cleanup
- this may indicate a problem with the automatic analysis if it fails to
spot the problem in the fixed code?
In general for this sort of issue I'd suggest considering adding the error handling using the goto unwind block style since that tends to be a bit more robust against forgotten error handling than adding unwind code at each error site. It's also a bit more managable when the code is doing a series of allocations like this is.
OK, thanks for the suggestions. I see that there is a return near the end:
if (rc) { free_irq(psc_dma->irq, psc_dma); free_irq(psc_dma->capture.irq, &psc_dma->capture); free_irq(psc_dma->playback.irq, &psc_dma->playback); return -ENODEV; }
that I missed. I will send a new patch, using the suggested goto style.
julia