On Thu, Aug 16, 2012 at 02:27:49PM +0530, Thomas Abraham wrote: > On 14 August 2012 03:14, Guenter Roeck <linux@xxxxxxxxxxxx> 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); > Yes, that is what I thought. Thanks, Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html