On Tue, Jan 07, 2025 at 09:51:43AM +0800, Ma Ke wrote: > Sean Young<sean@xxxxxxxx> wrote: > > Hi, > > > > On Sun, Jan 05, 2025 at 06:01:01PM +0800, Ma Ke wrote: > > > When cdev_device_add() failed, calling put_device() to explicitly > > > release dev->lirc_dev. Otherwise, it could cause the fault of the > > > reference count. > > > > > > Found by code review. > > > > Interesting find, thanks for finding and reporting. > > > > So I think the idea is right, but there is a problem. lirc_release_device() > > will do a put_device() on the rcdev, but no corresponding get_device() is > > done in this code path. > > > > > > Sean > Thank you for your reply and suggestions. Following your instructions, > I took a close look at the code. Perhaps you meant to suggest removing > the put_device() call from lirc_release_device(), effectively making > lirc_release_device() an empty function? That would introduce a memory leak and presumably the rc device would never be cleaned up, so no I don't think that would work. I'm not sure what the right solution is yet. Sean