diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2013-01-04 14:56:02 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-06 10:44:45 -0200 |
commit | c4fe29a32ffa16c1166edacad1edc2dcf0aaa08c (patch) | |
tree | 0713c642900ffdb73bdc31be3f99828be4f95705 /drivers/media/dvb-core/dvb_ca_en50221.c | |
parent | 9898df6482f71fa0d27b029789ef2f37988c06b3 (diff) | |
download | op-kernel-dev-c4fe29a32ffa16c1166edacad1edc2dcf0aaa08c.zip op-kernel-dev-c4fe29a32ffa16c1166edacad1edc2dcf0aaa08c.tar.gz |
[media] dvb: unlock on error in dvb_ca_en50221_io_do_ioctl()
We recently pushed the locking down into this function, but there was
an error path where the unlock was missed.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb-core/dvb_ca_en50221.c')
-rw-r--r-- | drivers/media/dvb-core/dvb_ca_en50221.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb-core/dvb_ca_en50221.c index 190e5e0..0aac309 100644 --- a/drivers/media/dvb-core/dvb_ca_en50221.c +++ b/drivers/media/dvb-core/dvb_ca_en50221.c @@ -1227,8 +1227,10 @@ static int dvb_ca_en50221_io_do_ioctl(struct file *file, case CA_GET_SLOT_INFO: { struct ca_slot_info *info = parg; - if ((info->num > ca->slot_count) || (info->num < 0)) - return -EINVAL; + if ((info->num > ca->slot_count) || (info->num < 0)) { + err = -EINVAL; + goto out_unlock; + } info->type = CA_CI_LINK; info->flags = 0; @@ -1247,6 +1249,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct file *file, break; } +out_unlock: mutex_unlock(&ca->ioctl_mutex); return err; } |