Hi stephen Heads up that I've just pushed out iio/togreg and that will conflict with staging/staging-linus (and iio/fixes-togreg) I'll rebase to fix this cleanly once rc2 is out. Sorry for the noise in the meantime. Resolution I would suggest looks like: commit 7cf1fe472df0d6dbddb44a7996efa5245884fa55 (HEAD -> check) Merge: ba9c25d94dea 68068fad0e1c Author: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> Date: Tue May 11 14:50:16 2021 +0100 Merge branch 'togreg' into check diff --cc drivers/iio/industrialio-core.c index 59efb36db2c7,efb4cf91c9e4..bfa20a346f71 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@@ -1785,10 -1811,10 +1810,10 @@@ static long iio_ioctl(struct file *filp } if (ret == IIO_IOCTL_UNHANDLED) - ret = -EINVAL; + ret = -ENODEV; out_unlock: - mutex_unlock(&indio_dev->info_exist_lock); + mutex_unlock(&iio_dev_opaque->info_exist_lock); return ret; } @@@ -1925,9 -1951,12 +1950,11 @@@ EXPORT_SYMBOL(__iio_device_register) **/ void iio_device_unregister(struct iio_dev *indio_dev) { - cdev_device_del(&indio_dev->chrdev, &indio_dev->dev); + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); - struct iio_ioctl_handler *h, *t; - mutex_lock(&indio_dev->info_exist_lock); + cdev_device_del(&iio_dev_opaque->chrdev, &indio_dev->dev); + + mutex_lock(&iio_dev_opaque->info_exist_lock); iio_device_unregister_debugfs(indio_dev);