Re: [PATCH 08/11] MXS: Add imx-otg driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi,

Marek Vasut writes:
> This driver handles claiming of clocks and memory areas. These are later
> properly delegated to it's child devices, the USB Host (ehci-mxs) and
> USB Gadget (ci13xxx-mxs).
> 
[...]

There is a conceptual bug in the following code. Did you ever run it?

> +	INIT_WORK(&priv->work, imx_otg_work);
> +
[...]
> +	if (pdata->gadget_mode) {
> +		data->pdev_gadget = add_platform_device("ci13xxx-mxs", -1,
> +							data, sizeof(*data),
> +							DMA_BIT_MASK(32));
This will blow up due to 'BUG_ON(!list_empty(&work->entry));'
in kernel/workqueue.c when schedule_work() is called in
imx_otg_set_host() or imx_otg_set_peripheral().

platform_add_data() (called from add_platform_device()) will make a
copy of the data structure which contains the initialized work queue.
INIT_WORK() will have initialized a list_head embedded in the work
queue (making 'next' and 'prev' member pointing to the list_head
itself).
The copied list_head will thus have its members pointing to the
original data structure rather than the respective copies and thus
fail the 'list_empty()' check.


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info@xxxxxxxxxxxxxxxxxxx
___________________________________________________________
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


B and H Foto and Electronics Corp.

[Linux Media]     [Video for Linux]     [Linux Input]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Free Online Dating]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]     [More Archives]

Add to Google Powered by Linux