static int tmc_release(struct inode *inode, struct file *file) { int ret; struct tmc_drvdata *drvdata = container_of(file->private_data, struct tmc_drvdata, miscdev); ret = tmc_read_unprepare(drvdata); if (ret) return ret; dev_dbg(drvdata->dev, "%s: released\n", __func__); return 0; }
static int tmc_release(struct inode *inode, struct file *file) { struct tmc_drvdata *drvdata = container_of(file->private_data, struct tmc_drvdata, miscdev); if (--drvdata->read_count) { if (drvdata->read_count < 0) { dev_err(drvdata->dev, "mismatched close\n"); drvdata->read_count = 0; } goto out; } tmc_read_unprepare(drvdata); out: dev_dbg(drvdata->dev, "%s: released\n", __func__); return 0; }