From: Alexander Strakh Date: Fri, 11 Sep 2009 18:13:21 +0000 (-0300) Subject: V4L/DVB: cafe_ccic: Fix lock imbalances X-Git-Tag: v3.12-rc1~11293^2~153 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0faf6f6b892aeb25934c9adc7fe328350d2d25cc;p=kernel%2Fkernel-generic.git V4L/DVB: cafe_ccic: Fix lock imbalances Fix lock imbalances in function device_authorization. Signed-off-by: Alexander Strakh Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/video/cafe_ccic.c b/drivers/media/video/cafe_ccic.c index 7bb9c1e..cbbf7e8 100644 --- a/drivers/media/video/cafe_ccic.c +++ b/drivers/media/video/cafe_ccic.c @@ -1907,7 +1907,6 @@ static int cafe_pci_probe(struct pci_dev *pdev, goto out_free; mutex_init(&cam->s_mutex); - mutex_lock(&cam->s_mutex); spin_lock_init(&cam->dev_lock); cam->state = S_NOTREADY; cafe_set_config_needed(cam, 1); @@ -1947,7 +1946,6 @@ static int cafe_pci_probe(struct pci_dev *pdev, * because the sensor could attach in this call chain, leading to * unsightly deadlocks. */ - mutex_unlock(&cam->s_mutex); /* attach can deadlock */ ret = cafe_smbus_setup(cam); if (ret) goto out_freeirq; @@ -1973,7 +1971,7 @@ static int cafe_pci_probe(struct pci_dev *pdev, cam->vdev.v4l2_dev = &cam->v4l2_dev; ret = video_register_device(&cam->vdev, VFL_TYPE_GRABBER, -1); if (ret) - goto out_smbus; + goto out_unlock; video_set_drvdata(&cam->vdev, cam); /* @@ -1988,6 +1986,8 @@ static int cafe_pci_probe(struct pci_dev *pdev, mutex_unlock(&cam->s_mutex); return 0; +out_unlock: + mutex_unlock(&cam->s_mutex); out_smbus: cafe_smbus_shutdown(cam); out_freeirq: