Re: [PATCH] media: lirc: Fix error handling in lirc_register()

From: Sean Young
Date: Tue Jan 07 2025 - 05:39:17 EST


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