On 14 August 2012 03:14, Guenter Roeck <[email protected]> wrote:
> Hi all,
>
> looking through SPI master drivers, I noticed that the following drivers call
> spi_master_get() in their suspend and resume functions. Yet, there is no
> matching call to spi_master_put(), meaning the reference count will increase
> with each suspend/resume cycle.
>         spi-coldfire-qspi.c
>         spi-s3c64xx.c
> Other SPI master drivers also support suspend and resume, but do not call
> spi_master_get() in the suspend/resume functions. The spi-pl022 driver calls
> spi_master_suspend() and spi_master_resume() like the above, but does not
> call spi_master_get() either.
>
> This leads me to believe that the above drivers will hang on unload after a
> suspend/resume cycle due to the extra references.
>
> Can someone please have a look and confirm if my understanding is correct ?
> If so I'll send a set of patches to fix the problems.

For spi-s3c64xx.c, yes it does seem that the spi_master_get() and
spi_master_put() calls are not balanced.  The probable change could be

-  struct spi_master *master = spi_master_get(dev_get_drvdata(dev));
+ struct spi_master *master = dev_get_drvdata(dev);

Thanks,
Thomas.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to