On Thu, Oct 10, 2024 at 09:32:22AM +0200, Rodolfo Giometti wrote: > On 10/10/24 09:15, Greg KH wrote: > > On Wed, Oct 09, 2024 at 10:48:14AM +0200, Rodolfo Giometti wrote: > > > > > +#ifdef CONFIG_COMPAT > > > > > +static long pps_gen_cdev_compat_ioctl(struct file *file, > > > > > + unsigned int cmd, unsigned long arg) > > > > > +{ > > > > > + cmd = _IOC(_IOC_DIR(cmd), _IOC_TYPE(cmd), _IOC_NR(cmd), sizeof(void *)); > > > > > + return pps_gen_cdev_ioctl(file, cmd, arg); > > > > > +} > > > > > +#else > > > > > +#define pps_gen_cdev_compat_ioctl NULL > > > > > +#endif > > > > > + > > > > > +static struct pps_gen_device *pps_gen_idr_get(unsigned long id) > > > > > +{ > > > > > + struct pps_gen_device *pps_gen; > > > > > + > > > > > + mutex_lock(&pps_gen_idr_lock); > > > > > + pps_gen = idr_find(&pps_gen_idr, id); > > > > > + if (pps_gen) > > > > > + kobject_get(&pps_gen->dev->kobj); > > > > > + > > > > > + mutex_unlock(&pps_gen_idr_lock); > > > > > > > > Doesn't an idr have a lock in it? I can never remember... > > > > > > As far as I know we must use a mutex... > > > > If you do, someone will come along and remove it, please see: > > https://lore.kernel.org/r/b1fcc6707ec2b6309d50060fa52ccc2c892afde2.1728507153.git.christophe.jaillet@xxxxxxxxxx > > as an example (with links that show it is not needed). > > Here is an example about ida API, but I'm using idr API. Why not use ida then? :)