Подробности

[В начало]

Проблема в реализации № L0023

Краткое описание

Выход из функции без разблокировки мютекса в драйвере drivers/media/video/cx231xx/cx231xx-core.c

Подробное описание

1. В строке 282 в функции cx231xx_read_ctrl_reg мютекс был захвачен. 2. Если usb_control_msg вернет ret<0 то мы выйдем из функции cx231xx_read_ctrl_reg без разблокировки захваченного мютекса. В другом случае (ret>=0) мютекс был разблокирован в строке 295 перед выходом.

 282        mutex_lock(&dev->ctrl_urb_lock);
 283        ret = usb_control_msg(dev->udev, pipe, req,
 284                              USB_DIR_IN | USB_TYPE_VENDOR | 
USB_RECIP_DEVICE,
 285                              val, reg, dev->urb_buf, len, HZ);
 286        if (ret < 0) {
 287                cx231xx_isocdbg(" failed!
");
 288                /* mutex_unlock(&dev->ctrl_urb_lock); */
 289                return ret;
 290        }
 291
 292        if (len)
 293                memcpy(buf, dev->urb_buf, len);
 294
 295        mutex_unlock(&dev->ctrl_urb_lock);

Компонент

linux-kernel 2.6.36.2

Принято

https://lkml.org/lkml/2010/12/13/343
commit

Статус

Исправлено в kernel 2.6.37-rc1

[В начало]