On 07/27/2010 08:42 PM, Kulikov Vasiliy wrote: > Calling schedule() holding spinlock with disables irqs is improper. As > spinlock protects list coredev->buffers, it can be unlocked untill wakeup. > This bug was introduced in a9349315f65cd6a16e8fab1f6cf0fd40f379c4db. > > Signed-off-by: Kulikov Vasiliy <segooon@xxxxxxxxx> > --- > drivers/media/dvb/siano/smscoreapi.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/dvb/siano/smscoreapi.c b/drivers/media/dvb/siano/smscoreapi.c > index 7f2c94a..d93468c 100644 > --- a/drivers/media/dvb/siano/smscoreapi.c > +++ b/drivers/media/dvb/siano/smscoreapi.c > @@ -1113,9 +1113,11 @@ struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev) > */ > > prepare_to_wait(&coredev->buffer_mng_waitq, &wait, TASK_INTERRUPTIBLE); > - > - if (list_empty(&coredev->buffers)) > + if (list_empty(&coredev->buffers)) { > + spin_unlock_irqrestore(&coredev->bufferslock, flags); > schedule(); > + spin_lock_irqsave(&coredev->bufferslock, flags); > + } > > finish_wait(&coredev->buffer_mng_waitq, &wait); There is a better fix (which fixes the potential NULL dereference): http://lkml.org/lkml/2010/6/7/175 Richard, could you address the comments there and resend? regards, -- js -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html