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); Thanks, Thomas. -- 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