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
