From patchwork Tue Jul 27 18:42:40 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kulikov Vasiliy X-Patchwork-Id: 3917 Return-path: Envelope-to: mchehab@infradead.org Delivery-date: Tue, 27 Jul 2010 18:43:11 +0000 Received: from bombadil.infradead.org [18.85.46.34] by pedra with IMAP (fetchmail-6.3.17) for (single-drop); Tue, 27 Jul 2010 15:49:31 -0300 (BRT) Received: from vger.kernel.org ([209.132.180.67]) by bombadil.infradead.org with esmtp (Exim 4.72 #1 (Red Hat Linux)) id 1Odp7P-0006Qs-1M; Tue, 27 Jul 2010 18:43:11 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753420Ab0G0Smu (ORCPT + 1 other); Tue, 27 Jul 2010 14:42:50 -0400 Received: from mail-ew0-f46.google.com ([209.85.215.46]:54406 "EHLO mail-ew0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751893Ab0G0Sms (ORCPT ); Tue, 27 Jul 2010 14:42:48 -0400 Received: by ewy23 with SMTP id 23so1426878ewy.19 for ; Tue, 27 Jul 2010 11:42:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer; bh=lTYmXybkevrzL53bwWcgXLfnUmk+nU+jTHwG+GQNbak=; b=Ev0XBj6eWMBkcrnJgqWQq9Le1cO/Lh7gWAZ7RlJHNNPYl01GaEsoUm8R8bWsE9k2we ZV3wVHPPBaEbu1cdsrFXDMAJfirQHw9CSlyyMAxJ2m7BpYraf9+pCBqN5Y6FANYxsOaz GpJgbqXdLiuZBmX0AbtQbC4MER0mkjuCPCAAQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; b=Loj9RUzbJuxQ6qxeV68QishWBdGdOOkPuv7+wyRKtoX4mLwXw7xyryncch7/Vepe70 0sMbFeWW84u5CoNHVXPFQRVIXIVag5AKFYyVRpeemrwTr3C36ASElREcnncC/BN5L+Fb pkSC7agLd5msB8ecPh8X6/RwY/GSGv4RLmnBo= Received: by 10.14.53.7 with SMTP id f7mr1361167eec.30.1280256166200; Tue, 27 Jul 2010 11:42:46 -0700 (PDT) Received: from localhost (ppp85-140-162-106.pppoe.mtu-net.ru [85.140.162.106]) by mx.google.com with ESMTPS id x54sm8021297eeh.11.2010.07.27.11.42.43 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 27 Jul 2010 11:42:44 -0700 (PDT) From: Kulikov Vasiliy To: kernel-janitors@vger.kernel.org Cc: Mauro Carvalho Chehab , Douglas Schilling Landgraf , Jiri Kosina , Roel Kluin , Andrew Morton , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] dvb: siano: free spinlock before schedule() Date: Tue, 27 Jul 2010 22:42:40 +0400 Message-Id: <1280256161-7971-1-git-send-email-segooon@gmail.com> X-Mailer: git-send-email 1.7.0.4 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org 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 --- 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);