[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#684441: [PATCH v2] [media] rc: ite-cir: Initialise ite_dev::rdev earlier



I upgrade my system yesterday, and this morning, it panic always, even
I boot another system
first and reboot.

Both the kernel in testing and experimental have this problem.

On Wed, Aug 29, 2012 at 4:48 AM, Luis Henriques
<luis.henriques@canonical.com> wrote:
> On Tue, Aug 28, 2012 at 10:09:55AM -0700, Ben Hutchings wrote:
>> On Tue, 2012-08-28 at 12:44 +0100, Luis Henriques wrote:
>> > On Mon, Aug 20, 2012 at 12:32:27AM +0100, Ben Hutchings wrote:
>> > > ite_dev::rdev is currently initialised in ite_probe() after
>> > > rc_register_device() returns.  If a newly registered device is opened
>> > > quickly enough, we may enable interrupts and try to use ite_dev::rdev
>> > > before it has been initialised.  Move it up to the earliest point we
>> > > can, right after calling rc_allocate_device().
>> >
>> > I believe this is the same bug:
>> >
>> > https://bugzilla.kernel.org/show_bug.cgi?id=46391
>> >
>> > And the bug is present in other IR devices as well.
>> >
>> > I've sent a proposed fix:
>> >
>> > http://marc.info/?l=linux-kernel&m=134590803109050&w=2
>>
>> It might be a worthwhile fix.  But it doesn't fix this bug - after that
>> patch, the driver will still enable its IRQ before initialising
>> ite_dev::rdev.
>
> You're absolutely right, sorry for the noise.  I should have taken a
> closer look at your patch.
>
> Cheers,
> --
> Luis
>
>>
>> Ben.
>>
>> > Cheers,
>> > --
>> > Luis
>> >
>> > >
>> > > References: http://bugs.debian.org/684441 Reported-and-tested-by:
>> > > YunQiang Su <wzssyqa@gmail.com> Signed-off-by: Ben Hutchings
>> > > <ben@decadent.org.uk> Cc: stable@vger.kernel.org --- Unlike the
>> > > previous version, this will apply cleanly to the media
>> > > staging/for_v3.6 branch.
>> > >
>> > > Ben.
>> > >
>> > >  drivers/media/rc/ite-cir.c |    2 +-
>> > >  1 file changed, 1 insertion(+), 1 deletion(-)
>> > >
>> > > diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
>> > > index 36fe5a3..24c77a4 100644
>> > > --- a/drivers/media/rc/ite-cir.c
>> > > +++ b/drivers/media/rc/ite-cir.c
>> > > @@ -1473,6 +1473,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
>> > >   rdev = rc_allocate_device();
>> > >   if (!rdev)
>> > >           goto failure;
>> > > + itdev->rdev = rdev;
>> > >
>> > >   ret = -ENODEV;
>> > >
>> > > @@ -1604,7 +1605,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
>> > >   if (ret)
>> > >           goto failure3;
>> > >
>> > > - itdev->rdev = rdev;
>> > >   ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
>> > >
>> > >   return 0;
>> > >
>> >
>>
>> --
>> Ben Hutchings
>> It is a miracle that curiosity survives formal education. - Albert Einstein



-- 
YunQiang Su


Reply to: